Socket
Socket
Sign inDemoInstall

@auth/core

Package Overview
Dependencies
Maintainers
2
Versions
92
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@auth/core - npm Package Compare versions

Comparing version 0.2.3 to 0.2.4

2

index.d.ts

@@ -29,3 +29,3 @@ /**

*
* - [Gettint started](https://authjs.dev/getting-started/introduction)
* - [Getting started](https://authjs.dev/getting-started/introduction)
* - [Most common use case guides](https://authjs.dev/guides/overview)

@@ -32,0 +32,0 @@ *

@@ -29,3 +29,3 @@ /**

*
* - [Gettint started](https://authjs.dev/getting-started/introduction)
* - [Getting started](https://authjs.dev/getting-started/introduction)
* - [Most common use case guides](https://authjs.dev/guides/overview)

@@ -32,0 +32,0 @@ *

@@ -72,3 +72,3 @@ /**

/**
* Takes a Auth.js request (`req`) and returns either the Auth.js issued JWT's payload,
* Takes an Auth.js request (`req`) and returns either the Auth.js issued JWT's payload,
* or the raw JWT string. We look for the JWT in the either the cookies, or the `Authorization` header.

@@ -75,0 +75,0 @@ * [Documentation](https://authjs.dev/guides/basics/securing-pages-and-api-routes#using-gettoken)

@@ -41,2 +41,3 @@ /**

import { SessionStore } from "./lib/cookie.js";
import { MissingSecret } from "./errors.js";
const DEFAULT_MAX_AGE = 30 * 24 * 60 * 60; // 30 days

@@ -66,7 +67,2 @@ const now = () => (Date.now() / 1000) | 0;

}
/**
* Takes a Auth.js request (`req`) and returns either the Auth.js issued JWT's payload,
* or the raw JWT string. We look for the JWT in the either the cookies, or the `Authorization` header.
* [Documentation](https://authjs.dev/guides/basics/securing-pages-and-api-routes#using-gettoken)
*/
export async function getToken(params) {

@@ -79,2 +75,4 @@ const { req, secureCookie = process.env.NEXTAUTH_URL?.startsWith("https://") ??

throw new Error("Must pass `req` to JWT getToken()");
if (!secret)
throw new MissingSecret("Must pass `secret` if not set to JWT getToken()");
const sessionStore = new SessionStore({ name: cookieName, options: { secure: secureCookie } },

@@ -91,14 +89,10 @@ // @ts-expect-error

}
// @ts-expect-error
if (!token)
return null;
// @ts-expect-error
if (raw)
return token;
try {
// @ts-expect-error
return await _decode({ token, secret });
}
catch {
// @ts-expect-error
return null;

@@ -105,0 +99,0 @@ }

@@ -117,3 +117,3 @@ import * as o from "oauth4webapi";

}
catch (error) {
catch (e) {
// If we didn't get a response either there was a problem with the provider

@@ -127,4 +127,4 @@ // response *or* the user cancelled the action with the provider.

logger.debug("getProfile error details", OAuthProfile);
logger.error(new OAuthProfileParseError(error));
logger.error(new OAuthProfileParseError(e));
}
}

@@ -14,5 +14,5 @@ import type { ErrorPageParam, Theme } from "../../types.js";

export default function ErrorPage(props: ErrorProps): {
status: any;
status: number;
html: import("preact").JSX.Element;
};
//# sourceMappingURL=error.d.ts.map

@@ -20,3 +20,5 @@ import { jsx as _jsx, jsxs as _jsxs } from "preact/jsx-runtime";

}
const error = errorType && (signinErrors[errorType.toLowerCase()] ?? signinErrors.default);
const error = errorType &&
(signinErrors[errorType.toLowerCase()] ??
signinErrors.default);
// TODO: move logos

@@ -23,0 +25,0 @@ const logos = "https://raw.githubusercontent.com/nextauthjs/next-auth/main/packages/next-auth/provider-logos";

@@ -1,3 +0,3 @@

declare const _default: ":root{--border-width:1px;--border-radius:0.5rem;--color-error:#c94b4b;--color-info:#157efb;--color-info-text:#fff}.__next-auth-theme-auto,.__next-auth-theme-light{--color-background:#fff;--color-text:#000;--color-primary:#444;--color-control-border:#bbb;--color-button-active-background:#f9f9f9;--color-button-active-border:#aaa;--color-seperator:#ccc}.__next-auth-theme-dark{--color-background:#000;--color-text:#fff;--color-primary:#ccc;--color-control-border:#555;--color-button-active-background:#060606;--color-button-active-border:#666;--color-seperator:#444}@media (prefers-color-scheme:dark){.__next-auth-theme-auto{--color-background:#000;--color-text:#fff;--color-primary:#ccc;--color-control-border:#555;--color-button-active-background:#060606;--color-button-active-border:#666;--color-seperator:#444}}body{background-color:var(--color-background);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;margin:0;padding:0}h1{font-weight:400;margin-bottom:1.5rem;padding:0 1rem}h1,p{color:var(--color-text)}form{margin:0;padding:0}label{font-weight:500;margin-bottom:.25rem;text-align:left}input[type],label{color:var(--color-text);display:block}input[type]{background:var(--color-background);border:var(--border-width) solid var(--color-control-border);border-radius:var(--border-radius);box-shadow:inset 0 .1rem .2rem rgba(0,0,0,.2);box-sizing:border-box;font-size:1rem;padding:.5rem 1rem;width:100%}input[type]:focus{box-shadow:none}p{font-size:1.1rem;line-height:2rem;margin:0 0 1.5rem;padding:0 1rem}a.button{line-height:1rem;text-decoration:none}a.button:link,a.button:visited{background-color:var(--color-background);color:var(--color-primary)}a.button,button{align-items:center;background-color:var(--provider-bg,var(--color-background));border-color:rgba(0,0,0,.1);border-radius:var(--border-radius);box-shadow:0 0 0 0 #000,0 0 0 0 #000,0 10px 15px -3px rgba(0,0,0,.2),0 4px 6px -4px rgba(0,0,0,.1);color:var(--provider-color,var(--color-primary));display:flex;font-size:1.1rem;font-weight:500;justify-content:center;margin:0 0 .75rem;min-height:62px;padding:.75rem 1rem;position:relative;transition:all .1s ease-in-out}a.button:has(img),button:has(img){justify-content:unset}a.button:has(img) span,button:has(img) span{flex-grow:1}a.button:hover,button:hover{cursor:pointer}a.button:active,button:active{box-shadow:0 .15rem .3rem rgba(0,0,0,.15),inset 0 .1rem .2rem var(--color-background),inset 0 -.1rem .1rem rgba(0,0,0,.1);cursor:pointer}a.button #provider-logo,button #provider-logo{display:block}a.button #provider-logo-dark,button #provider-logo-dark{display:none}@media (prefers-color-scheme:dark){a.button,button{background-color:var(--provider-dark-bg,var(--color-background));border:1px solid #0d0d0d;box-shadow:0 0 0 0 #000,0 0 0 0 #ccc,0 5px 5px -3px hsla(0,0%,100%,.01),0 4px 6px -4px hsla(0,0%,100%,.05);color:var(--provider-dark-color,var(--color-primary))}#provider-logo{display:none!important}#provider-logo-dark{display:block!important}}a.site{color:var(--color-primary);font-size:1rem;line-height:2rem;text-decoration:none}a.site:hover{text-decoration:underline}.page{display:grid;height:100%;margin:0;padding:0;place-items:center;position:absolute;width:100%}.page>div{padding:.5rem;text-align:center}.error a.button{display:inline-block;margin-top:.5rem;padding-left:2rem;padding-right:2rem}.error .message{margin-bottom:1.5rem}.signin input[type=text]{display:block;margin-left:auto;margin-right:auto}.signin hr{border:0;border-top:1px solid var(--color-seperator);display:block;margin:1.5em auto 0;overflow:visible}.signin hr:before{background:var(--color-background);color:#888;content:\"or\";padding:0 .4rem;position:relative;top:-.6rem}.signin .error{background:#f5f5f5;background:var(--color-info);border-radius:.3rem;font-weight:500}.signin .error p{color:var(--color-info-text);font-size:.9rem;line-height:1.2rem;padding:.5rem 1rem;text-align:left}.signin form,.signin>div{display:block}.signin form input[type],.signin>div input[type]{margin-bottom:.5rem}.signin form button,.signin>div button{width:100%}.signin form,.signin>div{max-width:300px}.signout .message{margin-bottom:1.5rem}.logo{display:inline-block;margin-top:100px;max-height:150px;max-width:300px}.card{border:1px solid var(--color-control-border);border-radius:5px;margin:50px auto;max-width:-moz-max-content;max-width:max-content;padding:20px 50px}.card .header{color:var(--color-primary)}.section-header{color:var(--brand-color,var(--color-text))}";
declare const _default: ":root {\n --border-width: 1px;\n --border-radius: 0.5rem;\n --color-error: #c94b4b;\n --color-info: #157efb;\n --color-info-text: #fff;\n}\n\n.__next-auth-theme-auto,\n.__next-auth-theme-light {\n --color-background: #fff;\n --color-text: #000;\n --color-primary: #444;\n --color-control-border: #bbb;\n --color-button-active-background: #f9f9f9;\n --color-button-active-border: #aaa;\n --color-seperator: #ccc;\n}\n\n.__next-auth-theme-dark {\n --color-background: #000;\n --color-text: #fff;\n --color-primary: #ccc;\n --color-control-border: #555;\n --color-button-active-background: #060606;\n --color-button-active-border: #666;\n --color-seperator: #444;\n}\n\n@media (prefers-color-scheme: dark) {\n .__next-auth-theme-auto {\n --color-background: #000;\n --color-text: #fff;\n --color-primary: #ccc;\n --color-control-border: #555;\n --color-button-active-background: #060606;\n --color-button-active-border: #666;\n --color-seperator: #444;\n }\n}\n\nbody {\n background-color: var(--color-background);\n margin: 0;\n padding: 0;\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,\n \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif,\n \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n}\n\nh1 {\n font-weight: 400;\n margin-bottom: 1.5rem;\n padding: 0 1rem;\n color: var(--color-text);\n}\n\np {\n color: var(--color-text);\n}\n\nform {\n margin: 0;\n padding: 0;\n}\n\nlabel {\n font-weight: 500;\n text-align: left;\n margin-bottom: 0.25rem;\n display: block;\n color: var(--color-text);\n}\n\ninput[type] {\n box-sizing: border-box;\n display: block;\n width: 100%;\n padding: 0.5rem 1rem;\n border: var(--border-width) solid var(--color-control-border);\n background: var(--color-background);\n font-size: 1rem;\n border-radius: var(--border-radius);\n box-shadow: inset 0 0.1rem 0.2rem rgba(0, 0, 0, 0.2);\n color: var(--color-text);\n}\n\ninput[type]:focus {\n box-shadow: none;\n }\n\np {\n margin: 0 0 1.5rem 0;\n padding: 0 1rem;\n font-size: 1.1rem;\n line-height: 2rem;\n}\n\na.button {\n text-decoration: none;\n line-height: 1rem;\n}\n\na.button:link,\n a.button:visited {\n background-color: var(--color-background);\n color: var(--color-primary);\n }\n\nbutton,\na.button {\n margin: 0 0 0.75rem 0;\n padding: 0.75rem 1rem;\n color: var(--provider-color, var(--color-primary));\n background-color: var(--provider-bg, var(--color-background));\n font-size: 1.1rem;\n min-height: 62px;\n border-color: rgba(0, 0, 0, 0.1);\n border-radius: var(--border-radius);\n transition: all 0.1s ease-in-out;\n box-shadow: #000 0px 0px 0px 0px, #000 0px 0px 0px 0px,\n rgba(0, 0, 0, 0.2) 0px 10px 15px -3px, rgba(0, 0, 0, 0.1) 0px 4px 6px -4px;\n font-weight: 500;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\nbutton:has(img), a.button:has(img) {\n justify-content: unset;\n }\n\nbutton:has(img) span, a.button:has(img) span {\n flex-grow: 1;\n }\n\nbutton:hover, a.button:hover {\n cursor: pointer;\n }\n\nbutton:active, a.button:active {\n box-shadow: 0 0.15rem 0.3rem rgba(0, 0, 0, 0.15),\n inset 0 0.1rem 0.2rem var(--color-background),\n inset 0 -0.1rem 0.1rem rgba(0, 0, 0, 0.1);\n cursor: pointer;\n }\n\nbutton #provider-logo, a.button #provider-logo {\n display: block;\n }\n\nbutton #provider-logo-dark, a.button #provider-logo-dark {\n display: none;\n }\n\n@media (prefers-color-scheme: dark) {\n button,\n a.button {\n color: var(--provider-dark-color, var(--color-primary));\n background-color: var(--provider-dark-bg, var(--color-background));\n border: 1px solid #0d0d0d;\n box-shadow: #000 0px 0px 0px 0px, #ccc 0px 0px 0px 0px,\n rgba(255, 255, 255, 0.01) 0px 5px 5px -3px,\n rgba(255, 255, 255, 0.05) 0px 4px 6px -4px;\n }\n #provider-logo {\n display: none !important;\n }\n #provider-logo-dark {\n display: block !important;\n }\n}\n\na.site {\n color: var(--color-primary);\n text-decoration: none;\n font-size: 1rem;\n line-height: 2rem;\n}\n\na.site:hover {\n text-decoration: underline;\n }\n\n.page {\n position: absolute;\n width: 100%;\n height: 100%;\n display: grid;\n place-items: center;\n margin: 0;\n padding: 0;\n}\n\n.page > div {\n text-align: center;\n padding: 0.5rem;\n }\n\n.error a.button {\n display: inline-block;\n padding-left: 2rem;\n padding-right: 2rem;\n margin-top: 0.5rem;\n }\n\n.error .message {\n margin-bottom: 1.5rem;\n }\n\n.signin input[type=\"text\"] {\n margin-left: auto;\n margin-right: auto;\n display: block;\n }\n\n.signin hr {\n display: block;\n border: 0;\n border-top: 1px solid var(--color-seperator);\n margin: 1.5em auto 0 auto;\n overflow: visible;\n }\n\n.signin hr::before {\n content: \"or\";\n background: var(--color-background);\n color: #888;\n padding: 0 0.4rem;\n position: relative;\n top: -0.6rem;\n }\n\n.signin .error {\n background: #f5f5f5;\n font-weight: 500;\n border-radius: 0.3rem;\n background: var(--color-info);\n }\n\n.signin .error p {\n text-align: left;\n padding: 0.5rem 1rem;\n font-size: 0.9rem;\n line-height: 1.2rem;\n color: var(--color-info-text);\n }\n\n.signin > div,\n .signin form {\n display: block;\n }\n\n.signin > div input[type], .signin form input[type] {\n margin-bottom: 0.5rem;\n }\n\n.signin > div button, .signin form button {\n width: 100%;\n }\n\n.signin > div,\n .signin form {\n\n max-width: 300px;\n}\n.signout .message {\n margin-bottom: 1.5rem;\n }\n\n.logo {\n display: inline-block;\n margin-top: 100px;\n max-width: 300px;\n max-height: 150px;\n}\n\n.card {\n max-width: -moz-max-content;\n max-width: max-content;\n border: 1px solid var(--color-control-border);\n border-radius: 5px;\n padding: 20px 50px;\n margin: 50px auto;\n}\n\n.card .header {\n color: var(--color-primary);\n }\n\n.section-header {\n color: var(--brand-color, var(--color-text));\n}\n";
export default _default;
//# sourceMappingURL=styles.d.ts.map

@@ -1,2 +0,296 @@

export default `:root{--border-width:1px;--border-radius:0.5rem;--color-error:#c94b4b;--color-info:#157efb;--color-info-text:#fff}.__next-auth-theme-auto,.__next-auth-theme-light{--color-background:#fff;--color-text:#000;--color-primary:#444;--color-control-border:#bbb;--color-button-active-background:#f9f9f9;--color-button-active-border:#aaa;--color-seperator:#ccc}.__next-auth-theme-dark{--color-background:#000;--color-text:#fff;--color-primary:#ccc;--color-control-border:#555;--color-button-active-background:#060606;--color-button-active-border:#666;--color-seperator:#444}@media (prefers-color-scheme:dark){.__next-auth-theme-auto{--color-background:#000;--color-text:#fff;--color-primary:#ccc;--color-control-border:#555;--color-button-active-background:#060606;--color-button-active-border:#666;--color-seperator:#444}}body{background-color:var(--color-background);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;margin:0;padding:0}h1{font-weight:400;margin-bottom:1.5rem;padding:0 1rem}h1,p{color:var(--color-text)}form{margin:0;padding:0}label{font-weight:500;margin-bottom:.25rem;text-align:left}input[type],label{color:var(--color-text);display:block}input[type]{background:var(--color-background);border:var(--border-width) solid var(--color-control-border);border-radius:var(--border-radius);box-shadow:inset 0 .1rem .2rem rgba(0,0,0,.2);box-sizing:border-box;font-size:1rem;padding:.5rem 1rem;width:100%}input[type]:focus{box-shadow:none}p{font-size:1.1rem;line-height:2rem;margin:0 0 1.5rem;padding:0 1rem}a.button{line-height:1rem;text-decoration:none}a.button:link,a.button:visited{background-color:var(--color-background);color:var(--color-primary)}a.button,button{align-items:center;background-color:var(--provider-bg,var(--color-background));border-color:rgba(0,0,0,.1);border-radius:var(--border-radius);box-shadow:0 0 0 0 #000,0 0 0 0 #000,0 10px 15px -3px rgba(0,0,0,.2),0 4px 6px -4px rgba(0,0,0,.1);color:var(--provider-color,var(--color-primary));display:flex;font-size:1.1rem;font-weight:500;justify-content:center;margin:0 0 .75rem;min-height:62px;padding:.75rem 1rem;position:relative;transition:all .1s ease-in-out}a.button:has(img),button:has(img){justify-content:unset}a.button:has(img) span,button:has(img) span{flex-grow:1}a.button:hover,button:hover{cursor:pointer}a.button:active,button:active{box-shadow:0 .15rem .3rem rgba(0,0,0,.15),inset 0 .1rem .2rem var(--color-background),inset 0 -.1rem .1rem rgba(0,0,0,.1);cursor:pointer}a.button #provider-logo,button #provider-logo{display:block}a.button #provider-logo-dark,button #provider-logo-dark{display:none}@media (prefers-color-scheme:dark){a.button,button{background-color:var(--provider-dark-bg,var(--color-background));border:1px solid #0d0d0d;box-shadow:0 0 0 0 #000,0 0 0 0 #ccc,0 5px 5px -3px hsla(0,0%,100%,.01),0 4px 6px -4px hsla(0,0%,100%,.05);color:var(--provider-dark-color,var(--color-primary))}#provider-logo{display:none!important}#provider-logo-dark{display:block!important}}a.site{color:var(--color-primary);font-size:1rem;line-height:2rem;text-decoration:none}a.site:hover{text-decoration:underline}.page{display:grid;height:100%;margin:0;padding:0;place-items:center;position:absolute;width:100%}.page>div{padding:.5rem;text-align:center}.error a.button{display:inline-block;margin-top:.5rem;padding-left:2rem;padding-right:2rem}.error .message{margin-bottom:1.5rem}.signin input[type=text]{display:block;margin-left:auto;margin-right:auto}.signin hr{border:0;border-top:1px solid var(--color-seperator);display:block;margin:1.5em auto 0;overflow:visible}.signin hr:before{background:var(--color-background);color:#888;content:"or";padding:0 .4rem;position:relative;top:-.6rem}.signin .error{background:#f5f5f5;background:var(--color-info);border-radius:.3rem;font-weight:500}.signin .error p{color:var(--color-info-text);font-size:.9rem;line-height:1.2rem;padding:.5rem 1rem;text-align:left}.signin form,.signin>div{display:block}.signin form input[type],.signin>div input[type]{margin-bottom:.5rem}.signin form button,.signin>div button{width:100%}.signin form,.signin>div{max-width:300px}.signout .message{margin-bottom:1.5rem}.logo{display:inline-block;margin-top:100px;max-height:150px;max-width:300px}.card{border:1px solid var(--color-control-border);border-radius:5px;margin:50px auto;max-width:-moz-max-content;max-width:max-content;padding:20px 50px}.card .header{color:var(--color-primary)}.section-header{color:var(--brand-color,var(--color-text))}`;
export default `:root {
--border-width: 1px;
--border-radius: 0.5rem;
--color-error: #c94b4b;
--color-info: #157efb;
--color-info-text: #fff;
}
.__next-auth-theme-auto,
.__next-auth-theme-light {
--color-background: #fff;
--color-text: #000;
--color-primary: #444;
--color-control-border: #bbb;
--color-button-active-background: #f9f9f9;
--color-button-active-border: #aaa;
--color-seperator: #ccc;
}
.__next-auth-theme-dark {
--color-background: #000;
--color-text: #fff;
--color-primary: #ccc;
--color-control-border: #555;
--color-button-active-background: #060606;
--color-button-active-border: #666;
--color-seperator: #444;
}
@media (prefers-color-scheme: dark) {
.__next-auth-theme-auto {
--color-background: #000;
--color-text: #fff;
--color-primary: #ccc;
--color-control-border: #555;
--color-button-active-background: #060606;
--color-button-active-border: #666;
--color-seperator: #444;
}
}
body {
background-color: var(--color-background);
margin: 0;
padding: 0;
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
"Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif,
"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
}
h1 {
font-weight: 400;
margin-bottom: 1.5rem;
padding: 0 1rem;
color: var(--color-text);
}
p {
color: var(--color-text);
}
form {
margin: 0;
padding: 0;
}
label {
font-weight: 500;
text-align: left;
margin-bottom: 0.25rem;
display: block;
color: var(--color-text);
}
input[type] {
box-sizing: border-box;
display: block;
width: 100%;
padding: 0.5rem 1rem;
border: var(--border-width) solid var(--color-control-border);
background: var(--color-background);
font-size: 1rem;
border-radius: var(--border-radius);
box-shadow: inset 0 0.1rem 0.2rem rgba(0, 0, 0, 0.2);
color: var(--color-text);
}
input[type]:focus {
box-shadow: none;
}
p {
margin: 0 0 1.5rem 0;
padding: 0 1rem;
font-size: 1.1rem;
line-height: 2rem;
}
a.button {
text-decoration: none;
line-height: 1rem;
}
a.button:link,
a.button:visited {
background-color: var(--color-background);
color: var(--color-primary);
}
button,
a.button {
margin: 0 0 0.75rem 0;
padding: 0.75rem 1rem;
color: var(--provider-color, var(--color-primary));
background-color: var(--provider-bg, var(--color-background));
font-size: 1.1rem;
min-height: 62px;
border-color: rgba(0, 0, 0, 0.1);
border-radius: var(--border-radius);
transition: all 0.1s ease-in-out;
box-shadow: #000 0px 0px 0px 0px, #000 0px 0px 0px 0px,
rgba(0, 0, 0, 0.2) 0px 10px 15px -3px, rgba(0, 0, 0, 0.1) 0px 4px 6px -4px;
font-weight: 500;
position: relative;
display: flex;
align-items: center;
justify-content: center;
}
button:has(img), a.button:has(img) {
justify-content: unset;
}
button:has(img) span, a.button:has(img) span {
flex-grow: 1;
}
button:hover, a.button:hover {
cursor: pointer;
}
button:active, a.button:active {
box-shadow: 0 0.15rem 0.3rem rgba(0, 0, 0, 0.15),
inset 0 0.1rem 0.2rem var(--color-background),
inset 0 -0.1rem 0.1rem rgba(0, 0, 0, 0.1);
cursor: pointer;
}
button #provider-logo, a.button #provider-logo {
display: block;
}
button #provider-logo-dark, a.button #provider-logo-dark {
display: none;
}
@media (prefers-color-scheme: dark) {
button,
a.button {
color: var(--provider-dark-color, var(--color-primary));
background-color: var(--provider-dark-bg, var(--color-background));
border: 1px solid #0d0d0d;
box-shadow: #000 0px 0px 0px 0px, #ccc 0px 0px 0px 0px,
rgba(255, 255, 255, 0.01) 0px 5px 5px -3px,
rgba(255, 255, 255, 0.05) 0px 4px 6px -4px;
}
#provider-logo {
display: none !important;
}
#provider-logo-dark {
display: block !important;
}
}
a.site {
color: var(--color-primary);
text-decoration: none;
font-size: 1rem;
line-height: 2rem;
}
a.site:hover {
text-decoration: underline;
}
.page {
position: absolute;
width: 100%;
height: 100%;
display: grid;
place-items: center;
margin: 0;
padding: 0;
}
.page > div {
text-align: center;
padding: 0.5rem;
}
.error a.button {
display: inline-block;
padding-left: 2rem;
padding-right: 2rem;
margin-top: 0.5rem;
}
.error .message {
margin-bottom: 1.5rem;
}
.signin input[type="text"] {
margin-left: auto;
margin-right: auto;
display: block;
}
.signin hr {
display: block;
border: 0;
border-top: 1px solid var(--color-seperator);
margin: 1.5em auto 0 auto;
overflow: visible;
}
.signin hr::before {
content: "or";
background: var(--color-background);
color: #888;
padding: 0 0.4rem;
position: relative;
top: -0.6rem;
}
.signin .error {
background: #f5f5f5;
font-weight: 500;
border-radius: 0.3rem;
background: var(--color-info);
}
.signin .error p {
text-align: left;
padding: 0.5rem 1rem;
font-size: 0.9rem;
line-height: 1.2rem;
color: var(--color-info-text);
}
.signin > div,
.signin form {
display: block;
}
.signin > div input[type], .signin form input[type] {
margin-bottom: 0.5rem;
}
.signin > div button, .signin form button {
width: 100%;
}
.signin > div,
.signin form {
max-width: 300px;
}
.signout .message {
margin-bottom: 1.5rem;
}
.logo {
display: inline-block;
margin-top: 100px;
max-width: 300px;
max-height: 150px;
}
.card {
max-width: -moz-max-content;
max-width: max-content;
border: 1px solid var(--color-control-border);
border-radius: 5px;
padding: 20px 50px;
margin: 50px auto;
}
.card .header {
color: var(--color-primary);
}
.section-header {
color: var(--brand-color, var(--color-text));
}
`;
// Generated by `pnpm css`

@@ -193,6 +193,6 @@ import { handleLogin } from "../callback-handler.js";

}
catch (error) {
catch (e) {
return {
status: 401,
redirect: `${url}/error?error=${encodeURIComponent(error.message)}`,
redirect: `${url}/error?error=${encodeURIComponent(e.message)}`,
cookies,

@@ -199,0 +199,0 @@ };

@@ -47,4 +47,4 @@ import { JWTSessionError, SessionTokenError } from "../../errors.js";

}
catch (error) {
logger.error(new JWTSessionError(error));
catch (e) {
logger.error(new JWTSessionError(e));
// If the JWT is not verifiable remove the broken session cookie(s).

@@ -118,6 +118,6 @@ response.cookies?.push(...sessionStore.clean());

}
catch (error) {
logger.error(new SessionTokenError(error));
catch (e) {
logger.error(new SessionTokenError(e));
}
return response;
}

@@ -24,6 +24,6 @@ import { SignOutError } from "../../errors.js";

}
catch (error) {
logger.error(new SignOutError(error));
catch (e) {
logger.error(new SignOutError(e));
}
return { redirect, cookies: sessionStore.clean() };
}

@@ -6,5 +6,5 @@ import { AuthError } from "../errors.js";

/** Web compatible method to create a hash, using SHA256 */
export declare function createHash(message: any): Promise<string>;
export declare function createHash(message: string): Promise<string>;
/** Web compatible method to create a random string of a given length */
export declare function randomString(size: number): string;
//# sourceMappingURL=web.d.ts.map

@@ -57,4 +57,4 @@ import { parse as parseCookie, serialize } from "cookie";

}
catch (error) {
return error;
catch (e) {
return e;
}

@@ -61,0 +61,0 @@ }

{
"name": "@auth/core",
"version": "0.2.3",
"version": "0.2.4",
"description": "Authentication for the Web.",

@@ -64,6 +64,6 @@ "keywords": [

"dependencies": {
"@panva/hkdf": "1.0.2",
"@panva/hkdf": "^1.0.2",
"cookie": "0.5.0",
"jose": "4.11.1",
"oauth4webapi": "2.0.5",
"jose": "^4.11.1",
"oauth4webapi": "^2.0.6",
"preact": "10.11.3",

@@ -81,2 +81,3 @@ "preact-render-to-string": "5.2.3"

"devDependencies": {
"@types/cookie": "0.5.1",
"@types/node": "18.11.10",

@@ -86,3 +87,2 @@ "@types/nodemailer": "6.4.6",

"autoprefixer": "10.4.13",
"cssnano": "5.1.14",
"postcss": "8.4.19",

@@ -93,7 +93,7 @@ "postcss-nested": "6.0.0",

"scripts": {
"build": "pnpm clean && pnpm css && tsc",
"clean": "rm -rf *.js *.d.ts lib providers",
"css": "node ./scripts/generate-css.js",
"build": "pnpm css && tsc",
"clean": "rm -rf *.js *.d.ts* lib providers",
"css": "node scripts/generate-css",
"dev": "pnpm css && tsc -w"
}
}
import type { OAuthConfig, OAuthUserConfig } from "./index.js";
export type DateTime = string;
export type Gender = "female" | "male";
export type Birthday = "SOLAR" | "LUNAR";
export type AgeRange = "1-9" | "10-14" | "15-19" | "20-29" | "30-39" | "40-49" | "50-59" | "60-69" | "70-79" | "80-89" | "90-";

@@ -45,3 +46,3 @@ /**

birthday?: string;
birthday_type?: string;
birthday_type?: Birthday;
gender_needs_agreement?: boolean;

@@ -48,0 +49,0 @@ gender?: Gender;

@@ -10,3 +10,2 @@ import type { Client } from "oauth4webapi";

export type { OAuthProviderType } from "./oauth-types.js";
type ChecksType = "pkce" | "state" | "none" | "nonce";
export type OAuthChecks = OpenIDCallbackChecks | OAuthCallbackChecks;

@@ -111,3 +110,3 @@ type PartialIssuer = Partial<Pick<IssuerMetadata, "jwks_endpoint" | "issuer">>;

* The CSRF protection performed on the callback endpoint.
* Defaults to `["pkce"]` if undefined.
* @default ["pkce"]
*

@@ -118,3 +117,3 @@ * [RFC 7636 - Proof Key for Code Exchange by OAuth Public Clients (PKCE)](https://www.rfc-editor.org/rfc/rfc7636.html#section-4) |

*/
checks?: ChecksType[];
checks?: Array<"pkce" | "state" | "none" | "nonce">;
clientId?: string;

@@ -139,4 +138,3 @@ clientSecret?: string;

*/
export type OAuthConfigInternal<P> = Omit<OAuthConfig<P>, OAuthEndpointType | "clientId" | "checks" | "profile"> & {
clientId: string;
export type OAuthConfigInternal<P> = Omit<OAuthConfig<P>, OAuthEndpointType> & {
authorization?: {

@@ -153,6 +151,4 @@ url: URL;

};
checks: ChecksType[];
profile: ProfileCallback<P>;
};
} & Pick<Required<OAuthConfig<P>>, "clientId" | "checks" | "profile">;
export type OAuthUserConfig<P> = Omit<Partial<OAuthConfig<P>>, "options" | "type"> & Required<Pick<OAuthConfig<P>, "clientId" | "clientSecret">>;
//# sourceMappingURL=oauth.d.ts.map

@@ -29,3 +29,3 @@ /**

*
* - [Gettint started](https://authjs.dev/getting-started/introduction)
* - [Getting started](https://authjs.dev/getting-started/introduction)
* - [Most common use case guides](https://authjs.dev/guides/overview)

@@ -32,0 +32,0 @@ *

@@ -44,2 +44,3 @@ /**

import type { LoggerInstance } from "./lib/utils/logger.js"
import { MissingSecret } from "./errors.js"

@@ -101,3 +102,3 @@ const DEFAULT_MAX_AGE = 30 * 24 * 60 * 60 // 30 days

/**
* Takes a Auth.js request (`req`) and returns either the Auth.js issued JWT's payload,
* Takes an Auth.js request (`req`) and returns either the Auth.js issued JWT's payload,
* or the raw JWT string. We look for the JWT in the either the cookies, or the `Authorization` header.

@@ -108,3 +109,6 @@ * [Documentation](https://authjs.dev/guides/basics/securing-pages-and-api-routes#using-gettoken)

params: GetTokenParams<R>
): Promise<R extends true ? string : JWT | null> {
): Promise<R extends true ? string : JWT | null>
export async function getToken(
params: GetTokenParams
): Promise<string | JWT | null> {
const {

@@ -124,2 +128,4 @@ req,

if (!req) throw new Error("Must pass `req` to JWT getToken()")
if (!secret)
throw new MissingSecret("Must pass `secret` if not set to JWT getToken()")

@@ -145,13 +151,9 @@ const sessionStore = new SessionStore(

// @ts-expect-error
if (!token) return null
// @ts-expect-error
if (raw) return token
try {
// @ts-expect-error
return await _decode({ token, secret })
} catch {
// @ts-expect-error
return null

@@ -158,0 +160,0 @@ }

@@ -132,7 +132,9 @@ import { defaultCookies } from "./cookie.js"

const missingMethods = [
"createVerificationToken",
"useVerificationToken",
"getUserByEmail",
].filter((method) => !adapter[method])
const missingMethods = (
[
"createVerificationToken",
"useVerificationToken",
"getUserByEmail",
] as const
).filter((method) => !adapter[method])

@@ -139,0 +141,0 @@ if (missingMethods.length) {

@@ -172,3 +172,3 @@ import * as jwt from "../jwt.js"

} catch (e) {
logger.error(new EventError(e))
logger.error(new EventError(e as Error))
}

@@ -194,3 +194,3 @@ }

} catch (e) {
const error = new AdapterError(e)
const error = new AdapterError(e as Error)
logger.error(error)

@@ -197,0 +197,0 @@ throw error

@@ -190,3 +190,3 @@ import * as o from "oauth4webapi"

}
} catch (error) {
} catch (e) {
// If we didn't get a response either there was a problem with the provider

@@ -200,4 +200,4 @@ // response *or* the user cancelled the action with the provider.

logger.debug("getProfile error details", OAuthProfile)
logger.error(new OAuthProfileParseError(error))
logger.error(new OAuthProfileParseError(e as Error))
}
}

@@ -1,2 +0,296 @@

export default `:root{--border-width:1px;--border-radius:0.5rem;--color-error:#c94b4b;--color-info:#157efb;--color-info-text:#fff}.__next-auth-theme-auto,.__next-auth-theme-light{--color-background:#fff;--color-text:#000;--color-primary:#444;--color-control-border:#bbb;--color-button-active-background:#f9f9f9;--color-button-active-border:#aaa;--color-seperator:#ccc}.__next-auth-theme-dark{--color-background:#000;--color-text:#fff;--color-primary:#ccc;--color-control-border:#555;--color-button-active-background:#060606;--color-button-active-border:#666;--color-seperator:#444}@media (prefers-color-scheme:dark){.__next-auth-theme-auto{--color-background:#000;--color-text:#fff;--color-primary:#ccc;--color-control-border:#555;--color-button-active-background:#060606;--color-button-active-border:#666;--color-seperator:#444}}body{background-color:var(--color-background);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;margin:0;padding:0}h1{font-weight:400;margin-bottom:1.5rem;padding:0 1rem}h1,p{color:var(--color-text)}form{margin:0;padding:0}label{font-weight:500;margin-bottom:.25rem;text-align:left}input[type],label{color:var(--color-text);display:block}input[type]{background:var(--color-background);border:var(--border-width) solid var(--color-control-border);border-radius:var(--border-radius);box-shadow:inset 0 .1rem .2rem rgba(0,0,0,.2);box-sizing:border-box;font-size:1rem;padding:.5rem 1rem;width:100%}input[type]:focus{box-shadow:none}p{font-size:1.1rem;line-height:2rem;margin:0 0 1.5rem;padding:0 1rem}a.button{line-height:1rem;text-decoration:none}a.button:link,a.button:visited{background-color:var(--color-background);color:var(--color-primary)}a.button,button{align-items:center;background-color:var(--provider-bg,var(--color-background));border-color:rgba(0,0,0,.1);border-radius:var(--border-radius);box-shadow:0 0 0 0 #000,0 0 0 0 #000,0 10px 15px -3px rgba(0,0,0,.2),0 4px 6px -4px rgba(0,0,0,.1);color:var(--provider-color,var(--color-primary));display:flex;font-size:1.1rem;font-weight:500;justify-content:center;margin:0 0 .75rem;min-height:62px;padding:.75rem 1rem;position:relative;transition:all .1s ease-in-out}a.button:has(img),button:has(img){justify-content:unset}a.button:has(img) span,button:has(img) span{flex-grow:1}a.button:hover,button:hover{cursor:pointer}a.button:active,button:active{box-shadow:0 .15rem .3rem rgba(0,0,0,.15),inset 0 .1rem .2rem var(--color-background),inset 0 -.1rem .1rem rgba(0,0,0,.1);cursor:pointer}a.button #provider-logo,button #provider-logo{display:block}a.button #provider-logo-dark,button #provider-logo-dark{display:none}@media (prefers-color-scheme:dark){a.button,button{background-color:var(--provider-dark-bg,var(--color-background));border:1px solid #0d0d0d;box-shadow:0 0 0 0 #000,0 0 0 0 #ccc,0 5px 5px -3px hsla(0,0%,100%,.01),0 4px 6px -4px hsla(0,0%,100%,.05);color:var(--provider-dark-color,var(--color-primary))}#provider-logo{display:none!important}#provider-logo-dark{display:block!important}}a.site{color:var(--color-primary);font-size:1rem;line-height:2rem;text-decoration:none}a.site:hover{text-decoration:underline}.page{display:grid;height:100%;margin:0;padding:0;place-items:center;position:absolute;width:100%}.page>div{padding:.5rem;text-align:center}.error a.button{display:inline-block;margin-top:.5rem;padding-left:2rem;padding-right:2rem}.error .message{margin-bottom:1.5rem}.signin input[type=text]{display:block;margin-left:auto;margin-right:auto}.signin hr{border:0;border-top:1px solid var(--color-seperator);display:block;margin:1.5em auto 0;overflow:visible}.signin hr:before{background:var(--color-background);color:#888;content:"or";padding:0 .4rem;position:relative;top:-.6rem}.signin .error{background:#f5f5f5;background:var(--color-info);border-radius:.3rem;font-weight:500}.signin .error p{color:var(--color-info-text);font-size:.9rem;line-height:1.2rem;padding:.5rem 1rem;text-align:left}.signin form,.signin>div{display:block}.signin form input[type],.signin>div input[type]{margin-bottom:.5rem}.signin form button,.signin>div button{width:100%}.signin form,.signin>div{max-width:300px}.signout .message{margin-bottom:1.5rem}.logo{display:inline-block;margin-top:100px;max-height:150px;max-width:300px}.card{border:1px solid var(--color-control-border);border-radius:5px;margin:50px auto;max-width:-moz-max-content;max-width:max-content;padding:20px 50px}.card .header{color:var(--color-primary)}.section-header{color:var(--brand-color,var(--color-text))}`
export default `:root {
--border-width: 1px;
--border-radius: 0.5rem;
--color-error: #c94b4b;
--color-info: #157efb;
--color-info-text: #fff;
}
.__next-auth-theme-auto,
.__next-auth-theme-light {
--color-background: #fff;
--color-text: #000;
--color-primary: #444;
--color-control-border: #bbb;
--color-button-active-background: #f9f9f9;
--color-button-active-border: #aaa;
--color-seperator: #ccc;
}
.__next-auth-theme-dark {
--color-background: #000;
--color-text: #fff;
--color-primary: #ccc;
--color-control-border: #555;
--color-button-active-background: #060606;
--color-button-active-border: #666;
--color-seperator: #444;
}
@media (prefers-color-scheme: dark) {
.__next-auth-theme-auto {
--color-background: #000;
--color-text: #fff;
--color-primary: #ccc;
--color-control-border: #555;
--color-button-active-background: #060606;
--color-button-active-border: #666;
--color-seperator: #444;
}
}
body {
background-color: var(--color-background);
margin: 0;
padding: 0;
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
"Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif,
"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
}
h1 {
font-weight: 400;
margin-bottom: 1.5rem;
padding: 0 1rem;
color: var(--color-text);
}
p {
color: var(--color-text);
}
form {
margin: 0;
padding: 0;
}
label {
font-weight: 500;
text-align: left;
margin-bottom: 0.25rem;
display: block;
color: var(--color-text);
}
input[type] {
box-sizing: border-box;
display: block;
width: 100%;
padding: 0.5rem 1rem;
border: var(--border-width) solid var(--color-control-border);
background: var(--color-background);
font-size: 1rem;
border-radius: var(--border-radius);
box-shadow: inset 0 0.1rem 0.2rem rgba(0, 0, 0, 0.2);
color: var(--color-text);
}
input[type]:focus {
box-shadow: none;
}
p {
margin: 0 0 1.5rem 0;
padding: 0 1rem;
font-size: 1.1rem;
line-height: 2rem;
}
a.button {
text-decoration: none;
line-height: 1rem;
}
a.button:link,
a.button:visited {
background-color: var(--color-background);
color: var(--color-primary);
}
button,
a.button {
margin: 0 0 0.75rem 0;
padding: 0.75rem 1rem;
color: var(--provider-color, var(--color-primary));
background-color: var(--provider-bg, var(--color-background));
font-size: 1.1rem;
min-height: 62px;
border-color: rgba(0, 0, 0, 0.1);
border-radius: var(--border-radius);
transition: all 0.1s ease-in-out;
box-shadow: #000 0px 0px 0px 0px, #000 0px 0px 0px 0px,
rgba(0, 0, 0, 0.2) 0px 10px 15px -3px, rgba(0, 0, 0, 0.1) 0px 4px 6px -4px;
font-weight: 500;
position: relative;
display: flex;
align-items: center;
justify-content: center;
}
button:has(img), a.button:has(img) {
justify-content: unset;
}
button:has(img) span, a.button:has(img) span {
flex-grow: 1;
}
button:hover, a.button:hover {
cursor: pointer;
}
button:active, a.button:active {
box-shadow: 0 0.15rem 0.3rem rgba(0, 0, 0, 0.15),
inset 0 0.1rem 0.2rem var(--color-background),
inset 0 -0.1rem 0.1rem rgba(0, 0, 0, 0.1);
cursor: pointer;
}
button #provider-logo, a.button #provider-logo {
display: block;
}
button #provider-logo-dark, a.button #provider-logo-dark {
display: none;
}
@media (prefers-color-scheme: dark) {
button,
a.button {
color: var(--provider-dark-color, var(--color-primary));
background-color: var(--provider-dark-bg, var(--color-background));
border: 1px solid #0d0d0d;
box-shadow: #000 0px 0px 0px 0px, #ccc 0px 0px 0px 0px,
rgba(255, 255, 255, 0.01) 0px 5px 5px -3px,
rgba(255, 255, 255, 0.05) 0px 4px 6px -4px;
}
#provider-logo {
display: none !important;
}
#provider-logo-dark {
display: block !important;
}
}
a.site {
color: var(--color-primary);
text-decoration: none;
font-size: 1rem;
line-height: 2rem;
}
a.site:hover {
text-decoration: underline;
}
.page {
position: absolute;
width: 100%;
height: 100%;
display: grid;
place-items: center;
margin: 0;
padding: 0;
}
.page > div {
text-align: center;
padding: 0.5rem;
}
.error a.button {
display: inline-block;
padding-left: 2rem;
padding-right: 2rem;
margin-top: 0.5rem;
}
.error .message {
margin-bottom: 1.5rem;
}
.signin input[type="text"] {
margin-left: auto;
margin-right: auto;
display: block;
}
.signin hr {
display: block;
border: 0;
border-top: 1px solid var(--color-seperator);
margin: 1.5em auto 0 auto;
overflow: visible;
}
.signin hr::before {
content: "or";
background: var(--color-background);
color: #888;
padding: 0 0.4rem;
position: relative;
top: -0.6rem;
}
.signin .error {
background: #f5f5f5;
font-weight: 500;
border-radius: 0.3rem;
background: var(--color-info);
}
.signin .error p {
text-align: left;
padding: 0.5rem 1rem;
font-size: 0.9rem;
line-height: 1.2rem;
color: var(--color-info-text);
}
.signin > div,
.signin form {
display: block;
}
.signin > div input[type], .signin form input[type] {
margin-bottom: 0.5rem;
}
.signin > div button, .signin form button {
width: 100%;
}
.signin > div,
.signin form {
max-width: 300px;
}
.signout .message {
margin-bottom: 1.5rem;
}
.logo {
display: inline-block;
margin-top: 100px;
max-width: 300px;
max-height: 150px;
}
.card {
max-width: -moz-max-content;
max-width: max-content;
border: 1px solid var(--color-control-border);
border-radius: 5px;
padding: 20px 50px;
margin: 50px auto;
}
.card .header {
color: var(--color-primary);
}
.section-header {
color: var(--brand-color, var(--color-text));
}
`
// Generated by `pnpm css`

@@ -276,7 +276,7 @@ import { handleLogin } from "../callback-handler.js"

}
} catch (error) {
} catch (e) {
return {
status: 401,
redirect: `${url}/error?error=${encodeURIComponent(
(error as Error).message
(e as Error).message
)}`,

@@ -341,3 +341,3 @@ cookies,

} catch (e) {
const error = new CallbackRouteError(e, { provider: provider.id })
const error = new CallbackRouteError(e as Error, { provider: provider.id })

@@ -344,0 +344,0 @@ logger.error(error)

@@ -72,4 +72,4 @@ import { JWTSessionError, SessionTokenError } from "../../errors.js"

await events.session?.({ session: newSession, token })
} catch (error) {
logger.error(new JWTSessionError(error))
} catch (e) {
logger.error(new JWTSessionError(e as Error))
// If the JWT is not verifiable remove the broken session cookie(s).

@@ -155,4 +155,4 @@ response.cookies?.push(...sessionStore.clean())

}
} catch (error) {
logger.error(new SessionTokenError(error))
} catch (e) {
logger.error(new SessionTokenError(e as Error))
}

@@ -159,0 +159,0 @@

@@ -19,3 +19,3 @@ import { AuthorizedCallbackError } from "../../errors.js"

} catch (e) {
const error = new AuthorizedCallbackError(e)
const error = new AuthorizedCallbackError(e as Error)
logger.error(error)

@@ -22,0 +22,0 @@ url.searchParams.set("error", "Configuration")

@@ -53,3 +53,3 @@ import emailSignin from "../email/signin.js"

} catch (e) {
const error = new SignInError(e, { provider: provider.id })
const error = new SignInError(e as Error, { provider: provider.id })
logger.error(error)

@@ -56,0 +56,0 @@ url.searchParams.set("error", error.name)

@@ -30,4 +30,4 @@ import { SignOutError } from "../../errors.js"

}
} catch (error) {
logger.error(new SignOutError(error))
} catch (e) {
logger.error(new SignOutError(e as Error))
}

@@ -34,0 +34,0 @@

@@ -68,4 +68,4 @@ import { parse as parseCookie, serialize } from "cookie"

}
} catch (error) {
return error
} catch (e) {
return e as Error
}

@@ -106,3 +106,3 @@ }

/** Web compatible method to create a hash, using SHA256 */
export async function createHash(message) {
export async function createHash(message: string) {
const data = new TextEncoder().encode(message)

@@ -109,0 +109,0 @@ const hash = await crypto.subtle.digest("SHA-256", data)

@@ -5,2 +5,3 @@ import type { OAuthConfig, OAuthUserConfig } from "./index.js"

export type Gender = "female" | "male"
export type Birthday = "SOLAR" | "LUNAR"
export type AgeRange =

@@ -59,3 +60,3 @@ | "1-9"

birthday?: string
birthday_type?: string
birthday_type?: Birthday
gender_needs_agreement?: boolean

@@ -62,0 +63,0 @@ gender?: Gender

@@ -14,4 +14,2 @@ import type { Client } from "oauth4webapi"

type ChecksType = "pkce" | "state" | "none" | "nonce"
export type OAuthChecks = OpenIDCallbackChecks | OAuthCallbackChecks

@@ -143,3 +141,3 @@

* The CSRF protection performed on the callback endpoint.
* Defaults to `["pkce"]` if undefined.
* @default ["pkce"]
*

@@ -150,3 +148,3 @@ * [RFC 7636 - Proof Key for Code Exchange by OAuth Public Clients (PKCE)](https://www.rfc-editor.org/rfc/rfc7636.html#section-4) |

*/
checks?: ChecksType[]
checks?: Array<"pkce" | "state" | "none" | "nonce">
clientId?: string

@@ -183,13 +181,7 @@ clientSecret?: string

*/
export type OAuthConfigInternal<P> = Omit<
OAuthConfig<P>,
OAuthEndpointType | "clientId" | "checks" | "profile"
> & {
clientId: string
export type OAuthConfigInternal<P> = Omit<OAuthConfig<P>, OAuthEndpointType> & {
authorization?: { url: URL }
token?: { url: URL; request?: TokenEndpointHandler["request"] }
userinfo?: { url: URL; request?: UserinfoEndpointHandler["request"] }
checks: ChecksType[]
profile: ProfileCallback<P>
}
} & Pick<Required<OAuthConfig<P>>, "clientId" | "checks" | "profile">

@@ -196,0 +188,0 @@ export type OAuthUserConfig<P> = Omit<

@@ -205,5 +205,5 @@ /**

* where you can control what should be returned to the client.
* Anything else will be kept from your front-end.
* Anything else will be kept inaccessible from the client.
*
* ⚠ By default the JWT is signed, but not encrypted.
* By default the JWT is encrypted.
*

@@ -210,0 +210,0 @@ * [Documentation](https://authjs.dev/guides/basics/callbacks#jwt-callback) |

@@ -186,5 +186,5 @@ /**

* where you can control what should be returned to the client.
* Anything else will be kept from your front-end.
* Anything else will be kept inaccessible from the client.
*
* ⚠ By default the JWT is signed, but not encrypted.
* By default the JWT is encrypted.
*

@@ -191,0 +191,0 @@ * [Documentation](https://authjs.dev/guides/basics/callbacks#jwt-callback) |

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc