@shware/security 7.1.0 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +108 -30
- package/dist/auth/attributes.cjs +5 -5
- package/dist/auth/attributes.cjs.map +1 -1
- package/dist/auth/attributes.d.cts +3 -5
- package/dist/auth/attributes.d.cts.map +1 -1
- package/dist/auth/attributes.d.mts +3 -5
- package/dist/auth/attributes.d.mts.map +1 -1
- package/dist/auth/attributes.mjs +5 -5
- package/dist/auth/attributes.mjs.map +1 -1
- package/dist/auth/desktop-codes.cjs +57 -0
- package/dist/auth/desktop-codes.cjs.map +1 -0
- package/dist/auth/desktop-codes.d.cts +24 -0
- package/dist/auth/desktop-codes.d.cts.map +1 -0
- package/dist/auth/desktop-codes.d.mts +24 -0
- package/dist/auth/desktop-codes.d.mts.map +1 -0
- package/dist/auth/desktop-codes.mjs +55 -0
- package/dist/auth/desktop-codes.mjs.map +1 -0
- package/dist/auth/email-codes.cjs +77 -0
- package/dist/auth/email-codes.cjs.map +1 -0
- package/dist/auth/email-codes.d.cts +39 -0
- package/dist/auth/email-codes.d.cts.map +1 -0
- package/dist/auth/email-codes.d.mts +39 -0
- package/dist/auth/email-codes.d.mts.map +1 -0
- package/dist/auth/email-codes.mjs +75 -0
- package/dist/auth/email-codes.mjs.map +1 -0
- package/dist/auth/error.cjs +47 -0
- package/dist/auth/error.cjs.map +1 -0
- package/dist/auth/error.d.cts +88 -0
- package/dist/auth/error.d.cts.map +1 -0
- package/dist/auth/error.d.mts +88 -0
- package/dist/auth/error.d.mts.map +1 -0
- package/dist/auth/error.mjs +45 -0
- package/dist/auth/error.mjs.map +1 -0
- package/dist/auth/index.cjs +245 -385
- package/dist/auth/index.cjs.map +1 -1
- package/dist/auth/index.d.cts +66 -57
- package/dist/auth/index.d.cts.map +1 -1
- package/dist/auth/index.d.mts +66 -57
- package/dist/auth/index.d.mts.map +1 -1
- package/dist/auth/index.mjs +248 -388
- package/dist/auth/index.mjs.map +1 -1
- package/dist/auth/respond.cjs +99 -0
- package/dist/auth/respond.cjs.map +1 -0
- package/dist/auth/respond.d.cts +39 -0
- package/dist/auth/respond.d.cts.map +1 -0
- package/dist/auth/respond.d.mts +39 -0
- package/dist/auth/respond.d.mts.map +1 -0
- package/dist/auth/respond.mjs +92 -0
- package/dist/auth/respond.mjs.map +1 -0
- package/dist/auth/types.d.cts +27 -13
- package/dist/auth/types.d.cts.map +1 -1
- package/dist/auth/types.d.mts +27 -13
- package/dist/auth/types.d.mts.map +1 -1
- package/dist/core/index.cjs +1 -2
- package/dist/core/index.d.cts +0 -2
- package/dist/core/index.d.cts.map +1 -1
- package/dist/core/index.d.mts +0 -2
- package/dist/core/index.d.mts.map +1 -1
- package/dist/core/index.mjs +1 -2
- package/dist/email/schema.cjs +1 -2
- package/dist/email/schema.d.cts +0 -2
- package/dist/email/schema.d.cts.map +1 -1
- package/dist/email/schema.d.mts +0 -2
- package/dist/email/schema.d.mts.map +1 -1
- package/dist/email/schema.mjs +1 -2
- package/dist/index.cjs +5 -0
- package/dist/index.d.cts +4 -1
- package/dist/index.d.mts +4 -1
- package/dist/index.mjs +3 -1
- package/dist/oauth2/client.cjs +1 -2
- package/dist/oauth2/client.d.cts +0 -2
- package/dist/oauth2/client.d.cts.map +1 -1
- package/dist/oauth2/client.d.mts +0 -2
- package/dist/oauth2/client.d.mts.map +1 -1
- package/dist/oauth2/client.mjs +1 -2
- package/dist/oauth2/error.cjs +1 -9
- package/dist/oauth2/error.cjs.map +1 -1
- package/dist/oauth2/error.d.cts +0 -5
- package/dist/oauth2/error.d.cts.map +1 -1
- package/dist/oauth2/error.d.mts +0 -5
- package/dist/oauth2/error.d.mts.map +1 -1
- package/dist/oauth2/error.mjs +2 -9
- package/dist/oauth2/error.mjs.map +1 -1
- package/dist/oauth2/name.cjs +1 -2
- package/dist/oauth2/name.d.cts +0 -2
- package/dist/oauth2/name.d.cts.map +1 -1
- package/dist/oauth2/name.d.mts +0 -2
- package/dist/oauth2/name.d.mts.map +1 -1
- package/dist/oauth2/name.mjs +1 -2
- package/dist/oauth2/provider/apple-client-secret.cjs +1 -2
- package/dist/oauth2/provider/apple-client-secret.d.cts +0 -2
- package/dist/oauth2/provider/apple-client-secret.d.cts.map +1 -1
- package/dist/oauth2/provider/apple-client-secret.d.mts +0 -2
- package/dist/oauth2/provider/apple-client-secret.d.mts.map +1 -1
- package/dist/oauth2/provider/apple-client-secret.mjs +1 -2
- package/dist/oauth2/provider/apple.cjs +1 -2
- package/dist/oauth2/provider/apple.d.cts +0 -2
- package/dist/oauth2/provider/apple.d.cts.map +1 -1
- package/dist/oauth2/provider/apple.d.mts +0 -2
- package/dist/oauth2/provider/apple.d.mts.map +1 -1
- package/dist/oauth2/provider/apple.mjs +1 -2
- package/dist/oauth2/provider/common.cjs +2 -3
- package/dist/oauth2/provider/common.cjs.map +1 -1
- package/dist/oauth2/provider/common.d.cts +0 -2
- package/dist/oauth2/provider/common.d.cts.map +1 -1
- package/dist/oauth2/provider/common.d.mts +0 -2
- package/dist/oauth2/provider/common.d.mts.map +1 -1
- package/dist/oauth2/provider/common.mjs +2 -3
- package/dist/oauth2/provider/common.mjs.map +1 -1
- package/dist/oauth2/provider/facebook.cjs +3 -6
- package/dist/oauth2/provider/facebook.cjs.map +1 -1
- package/dist/oauth2/provider/facebook.d.cts +0 -3
- package/dist/oauth2/provider/facebook.d.cts.map +1 -1
- package/dist/oauth2/provider/facebook.d.mts +0 -3
- package/dist/oauth2/provider/facebook.d.mts.map +1 -1
- package/dist/oauth2/provider/facebook.mjs +3 -6
- package/dist/oauth2/provider/facebook.mjs.map +1 -1
- package/dist/oauth2/provider/github.cjs +1 -2
- package/dist/oauth2/provider/github.d.cts +0 -2
- package/dist/oauth2/provider/github.d.cts.map +1 -1
- package/dist/oauth2/provider/github.d.mts +0 -2
- package/dist/oauth2/provider/github.d.mts.map +1 -1
- package/dist/oauth2/provider/github.mjs +1 -2
- package/dist/oauth2/provider/google.cjs +1 -2
- package/dist/oauth2/provider/google.d.cts +0 -2
- package/dist/oauth2/provider/google.d.cts.map +1 -1
- package/dist/oauth2/provider/google.d.mts +0 -2
- package/dist/oauth2/provider/google.d.mts.map +1 -1
- package/dist/oauth2/provider/google.mjs +1 -2
- package/dist/oauth2/provider/wechat.cjs +1 -2
- package/dist/oauth2/provider/wechat.d.cts +0 -2
- package/dist/oauth2/provider/wechat.d.cts.map +1 -1
- package/dist/oauth2/provider/wechat.d.mts +0 -2
- package/dist/oauth2/provider/wechat.d.mts.map +1 -1
- package/dist/oauth2/provider/wechat.mjs +1 -2
- package/dist/oauth2/provider/x.cjs +7 -6
- package/dist/oauth2/provider/x.cjs.map +1 -1
- package/dist/oauth2/provider/x.d.cts +3 -4
- package/dist/oauth2/provider/x.d.cts.map +1 -1
- package/dist/oauth2/provider/x.d.mts +3 -4
- package/dist/oauth2/provider/x.d.mts.map +1 -1
- package/dist/oauth2/provider/x.mjs +7 -6
- package/dist/oauth2/provider/x.mjs.map +1 -1
- package/dist/oauth2/types.cjs +1 -2
- package/dist/oauth2/types.cjs.map +1 -1
- package/dist/oauth2/types.d.cts +5 -2
- package/dist/oauth2/types.d.cts.map +1 -1
- package/dist/oauth2/types.d.mts +5 -2
- package/dist/oauth2/types.d.mts.map +1 -1
- package/dist/oauth2/types.mjs +1 -2
- package/dist/oauth2/types.mjs.map +1 -1
- package/dist/session/common.cjs +11 -15
- package/dist/session/common.cjs.map +1 -1
- package/dist/session/common.d.cts +7 -5
- package/dist/session/common.d.cts.map +1 -1
- package/dist/session/common.d.mts +7 -5
- package/dist/session/common.d.mts.map +1 -1
- package/dist/session/common.mjs +11 -14
- package/dist/session/common.mjs.map +1 -1
- package/dist/session/db.cjs +3 -4
- package/dist/session/db.cjs.map +1 -1
- package/dist/session/db.d.cts +0 -2
- package/dist/session/db.d.cts.map +1 -1
- package/dist/session/db.d.mts +0 -2
- package/dist/session/db.d.mts.map +1 -1
- package/dist/session/db.mjs +4 -5
- package/dist/session/db.mjs.map +1 -1
- package/dist/session/map-session.cjs +1 -2
- package/dist/session/map-session.d.cts +0 -2
- package/dist/session/map-session.d.cts.map +1 -1
- package/dist/session/map-session.d.mts +0 -2
- package/dist/session/map-session.d.mts.map +1 -1
- package/dist/session/map-session.mjs +1 -2
- package/dist/session/redis.cjs +7 -10
- package/dist/session/redis.cjs.map +1 -1
- package/dist/session/redis.d.cts +0 -2
- package/dist/session/redis.d.cts.map +1 -1
- package/dist/session/redis.d.mts +0 -2
- package/dist/session/redis.d.mts.map +1 -1
- package/dist/session/redis.mjs +8 -11
- package/dist/session/redis.mjs.map +1 -1
- package/dist/session/types.d.cts +0 -14
- package/dist/session/types.d.cts.map +1 -1
- package/dist/session/types.d.mts +0 -14
- package/dist/session/types.d.mts.map +1 -1
- package/dist/utils/http.cjs +1 -2
- package/dist/utils/http.d.cts +0 -2
- package/dist/utils/http.d.cts.map +1 -1
- package/dist/utils/http.d.mts +0 -2
- package/dist/utils/http.d.mts.map +1 -1
- package/dist/utils/http.mjs +1 -2
- package/dist/utils/oauth2.cjs +1 -2
- package/dist/utils/oauth2.d.cts +0 -2
- package/dist/utils/oauth2.d.cts.map +1 -1
- package/dist/utils/oauth2.d.mts +0 -2
- package/dist/utils/oauth2.d.mts.map +1 -1
- package/dist/utils/oauth2.mjs +1 -2
- package/dist/utils/timing.cjs +1 -2
- package/dist/utils/timing.d.cts +0 -2
- package/dist/utils/timing.d.cts.map +1 -1
- package/dist/utils/timing.d.mts +0 -2
- package/dist/utils/timing.d.mts.map +1 -1
- package/dist/utils/timing.mjs +1 -2
- package/dist/utils/valid.cjs +35 -54
- package/dist/utils/valid.cjs.map +1 -1
- package/dist/utils/valid.d.cts +8 -25
- package/dist/utils/valid.d.cts.map +1 -1
- package/dist/utils/valid.d.mts +8 -25
- package/dist/utils/valid.d.mts.map +1 -1
- package/dist/utils/valid.mjs +33 -52
- package/dist/utils/valid.mjs.map +1 -1
- package/package.json +4 -4
package/dist/auth/types.d.cts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Principal } from "../core/index.cjs";
|
|
2
2
|
import { KVRepository, Session, SessionRepository } from "../session/types.cjs";
|
|
3
|
+
import { EmailSender } from "./email-codes.cjs";
|
|
3
4
|
import { OAuth2ClientConfig, OAuth2Token, UserInfo } from "../oauth2/types.cjs";
|
|
4
5
|
import { CookieOptions } from "../utils/http.cjs";
|
|
5
|
-
//#region src/auth/types.d.ts
|
|
6
6
|
export type LoggedHandler = (principal: Principal) => Promise<void>;
|
|
7
7
|
/**
|
|
8
8
|
* Who signed in, and how: what every login method hands to `onAuthorized`.
|
|
@@ -25,7 +25,11 @@ export interface Authorization {
|
|
|
25
25
|
token?: OAuth2Token;
|
|
26
26
|
attributes: Record<string, string>;
|
|
27
27
|
}
|
|
28
|
-
/**
|
|
28
|
+
/**
|
|
29
|
+
* Creates or updates the user and returns the principal whose `name` the session stores. Throw an
|
|
30
|
+
* `AuthenticationError` to refuse the sign-in with a reason the client can act on; any other error
|
|
31
|
+
* is treated as a server fault.
|
|
32
|
+
*/
|
|
29
33
|
export type AuthorizedHandler = (request: Request, authorization: Authorization) => Promise<Principal>;
|
|
30
34
|
export interface OAuth2AuthorizationOptions {
|
|
31
35
|
/**
|
|
@@ -57,13 +61,24 @@ export interface AuthConfig {
|
|
|
57
61
|
* 3600 (an hour); `0` writes on every authenticated request.
|
|
58
62
|
*/
|
|
59
63
|
touchInterval?: number;
|
|
64
|
+
/**
|
|
65
|
+
* Also carry the session id in the `X-Auth-Token` header, for clients without a cookie jar
|
|
66
|
+
* (a CLI, a desktop shell), as Spring Session's `HeaderHttpSessionIdResolver` does: every
|
|
67
|
+
* response that sets the session cookie (a login, `logged`) also answers `X-Auth-Token: <id>`,
|
|
68
|
+
* and a request without the cookie is read from the same header. Default `false`. Turning it
|
|
69
|
+
* on exposes the id to same-origin scripts, which the cookie's `HttpOnly` kept it from, and a
|
|
70
|
+
* cross-origin client needs the header in `Access-Control-Expose-Headers`. The header is for
|
|
71
|
+
* the session id only: an API token for programmatic access is a different credential and
|
|
72
|
+
* is not read here.
|
|
73
|
+
*/
|
|
74
|
+
header?: boolean;
|
|
60
75
|
};
|
|
61
76
|
turnstileSecretKey?: string;
|
|
62
77
|
/** Limits of email verification codes (a code itself is valid for 10 minutes). */
|
|
63
78
|
verificationCode?: {
|
|
64
79
|
/**
|
|
65
80
|
* Wrong guesses a code survives: once a login exceeds this many attempts the code is discarded
|
|
66
|
-
* and `loginEmail` answers `VERIFICATION_CODE_ATTEMPTS_EXCEEDED`. Default 5.
|
|
81
|
+
* and `loginEmail` answers `403 VERIFICATION_CODE_ATTEMPTS_EXCEEDED`. Default 5.
|
|
67
82
|
*/
|
|
68
83
|
maxAttempts?: number;
|
|
69
84
|
/**
|
|
@@ -97,16 +112,16 @@ export interface AuthService {
|
|
|
97
112
|
loginOAuth2Code: (request: Request, onAuthorized: AuthorizedHandler) => Promise<Response>;
|
|
98
113
|
loginOAuth2Native: (request: Request, onAuthorized: AuthorizedHandler) => Promise<Response>;
|
|
99
114
|
loginOAuth2Onetap: (request: Request, onAuthorized: AuthorizedHandler, provider?: string) => Promise<Response>;
|
|
100
|
-
sendEmailVerificationCode: (request: Request, sender:
|
|
101
|
-
email: string;
|
|
102
|
-
verificationCode: string;
|
|
103
|
-
}) => Promise<void>) => Promise<Response>;
|
|
104
|
-
sendPhoneVerificationCode: (request: Request, sender: (data: {
|
|
105
|
-
phone: string;
|
|
106
|
-
verificationCode: string;
|
|
107
|
-
}) => Promise<void>) => Promise<Response>;
|
|
115
|
+
sendEmailVerificationCode: (request: Request, sender: EmailSender) => Promise<Response>;
|
|
108
116
|
loginEmail: (request: Request, onAuthorized: AuthorizedHandler) => Promise<Response>;
|
|
109
|
-
|
|
117
|
+
/**
|
|
118
|
+
* Spends a mailed code without signing in, for a host flow that only needs proof of the address
|
|
119
|
+
* (verifying or changing a signed-in user's email). Throws `AuthenticationError`
|
|
120
|
+
* (`INVALID_VERIFICATION_CODE`, `VERIFICATION_CODE_ATTEMPTS_EXCEEDED`) as `loginEmail` answers.
|
|
121
|
+
*/
|
|
122
|
+
verifyEmailCode: (email: string, verificationCode: string) => Promise<void>;
|
|
123
|
+
desktopAuthorize: (request: Request) => Promise<Response>;
|
|
124
|
+
desktopExchange: (request: Request) => Promise<Response>;
|
|
110
125
|
kick: (principal: Principal) => Promise<void>;
|
|
111
126
|
isAuthenticated: (request: Request) => Promise<boolean>;
|
|
112
127
|
getSession: <T extends boolean>(request: Request, create: T) => Promise<T extends true ? Session : Session | null>;
|
|
@@ -115,5 +130,4 @@ export interface AuthService {
|
|
|
115
130
|
listSessions: (principal: Principal) => Promise<Session[]>;
|
|
116
131
|
cleanupExpiredSessions: (cleanupCount?: number) => Promise<Response>;
|
|
117
132
|
}
|
|
118
|
-
//#endregion
|
|
119
133
|
//# sourceMappingURL=types.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.cts","names":[],"sources":["../../src/auth/types.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"types.d.cts","names":[],"sources":["../../src/auth/types.ts"],"mappings":";;;;;YAMY,iBAAiB,WAAW,cAAc;;;;;;;;;;;;;;;iBAerC;EACf;EACA;EACA,UAAU;EACV,QAAQ;EACR,YAAY;;;;;;;YAQF,qBACV,SAAS,SACT,eAAe,kBACZ,QAAQ;iBAEI;;;;;;;;;;;EAWf,aAAa;;iBAGE;EACf;EACA,cAAc;EACd,mBAAmB;EACnB,SAAS;IAAkB;;EAC3B;;;;;;;;;IASE;;;;;;;;;;;IAWA;;EAEF;;EAEA;;;;;IAKE;;;;;IAKA;;EAEF;IACE,SAAS;;IAET;;;;;;;;MAQE;;;;iBAKW;EAEf,OAAO,SAAS,YAAY,QAAQ;EACpC,SAAS,SAAS,YAAY,QAAQ;EACtC,SAAS,SAAS,SAAS,WAAW,kBAAkB,QAAQ;EAGhE,cAAc,SAAS,YAAY,QAAQ;EAC3C,cAAc,SAAS,YAAY,QAAQ;EAC3C,sBACE,SAAS,SACT,UAAU,+BACP,QAAQ;EACb,kBAAkB,SAAS,SAAS,cAAc,sBAAsB,QAAQ;EAChF,oBAAoB,SAAS,SAAS,cAAc,sBAAsB,QAAQ;EAClF,oBACE,SAAS,SACT,cAAc,mBACd,sBACG,QAAQ;EAGb,4BAA4B,SAAS,SAAS,QAAQ,gBAAgB,QAAQ;EAC9E,aAAa,SAAS,SAAS,cAAc,sBAAsB,QAAQ;;;;;;EAM3E,kBAAkB,eAAe,6BAA6B;EAG9D,mBAAmB,SAAS,YAAY,QAAQ;EAChD,kBAAkB,SAAS,YAAY,QAAQ;EAG/C,OAAO,WAAW,cAAc;EAChC,kBAAkB,SAAS,YAAY;EACvC,aAAa,mBACX,SAAS,SACT,QAAQ,MACL,QAAQ,iBAAiB,UAAU;EACxC,gBAAgB,sBAAsB;EACtC,eAAe,SAAS,YAAY,QAAQ;EAC5C,eAAe,WAAW,cAAc,QAAQ;EAChD,yBAAyB,0BAA0B,QAAQ"}
|
package/dist/auth/types.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Principal } from "../core/index.mjs";
|
|
2
2
|
import { KVRepository, Session, SessionRepository } from "../session/types.mjs";
|
|
3
|
+
import { EmailSender } from "./email-codes.mjs";
|
|
3
4
|
import { OAuth2ClientConfig, OAuth2Token, UserInfo } from "../oauth2/types.mjs";
|
|
4
5
|
import { CookieOptions } from "../utils/http.mjs";
|
|
5
|
-
//#region src/auth/types.d.ts
|
|
6
6
|
export type LoggedHandler = (principal: Principal) => Promise<void>;
|
|
7
7
|
/**
|
|
8
8
|
* Who signed in, and how: what every login method hands to `onAuthorized`.
|
|
@@ -25,7 +25,11 @@ export interface Authorization {
|
|
|
25
25
|
token?: OAuth2Token;
|
|
26
26
|
attributes: Record<string, string>;
|
|
27
27
|
}
|
|
28
|
-
/**
|
|
28
|
+
/**
|
|
29
|
+
* Creates or updates the user and returns the principal whose `name` the session stores. Throw an
|
|
30
|
+
* `AuthenticationError` to refuse the sign-in with a reason the client can act on; any other error
|
|
31
|
+
* is treated as a server fault.
|
|
32
|
+
*/
|
|
29
33
|
export type AuthorizedHandler = (request: Request, authorization: Authorization) => Promise<Principal>;
|
|
30
34
|
export interface OAuth2AuthorizationOptions {
|
|
31
35
|
/**
|
|
@@ -57,13 +61,24 @@ export interface AuthConfig {
|
|
|
57
61
|
* 3600 (an hour); `0` writes on every authenticated request.
|
|
58
62
|
*/
|
|
59
63
|
touchInterval?: number;
|
|
64
|
+
/**
|
|
65
|
+
* Also carry the session id in the `X-Auth-Token` header, for clients without a cookie jar
|
|
66
|
+
* (a CLI, a desktop shell), as Spring Session's `HeaderHttpSessionIdResolver` does: every
|
|
67
|
+
* response that sets the session cookie (a login, `logged`) also answers `X-Auth-Token: <id>`,
|
|
68
|
+
* and a request without the cookie is read from the same header. Default `false`. Turning it
|
|
69
|
+
* on exposes the id to same-origin scripts, which the cookie's `HttpOnly` kept it from, and a
|
|
70
|
+
* cross-origin client needs the header in `Access-Control-Expose-Headers`. The header is for
|
|
71
|
+
* the session id only: an API token for programmatic access is a different credential and
|
|
72
|
+
* is not read here.
|
|
73
|
+
*/
|
|
74
|
+
header?: boolean;
|
|
60
75
|
};
|
|
61
76
|
turnstileSecretKey?: string;
|
|
62
77
|
/** Limits of email verification codes (a code itself is valid for 10 minutes). */
|
|
63
78
|
verificationCode?: {
|
|
64
79
|
/**
|
|
65
80
|
* Wrong guesses a code survives: once a login exceeds this many attempts the code is discarded
|
|
66
|
-
* and `loginEmail` answers `VERIFICATION_CODE_ATTEMPTS_EXCEEDED`. Default 5.
|
|
81
|
+
* and `loginEmail` answers `403 VERIFICATION_CODE_ATTEMPTS_EXCEEDED`. Default 5.
|
|
67
82
|
*/
|
|
68
83
|
maxAttempts?: number;
|
|
69
84
|
/**
|
|
@@ -97,16 +112,16 @@ export interface AuthService {
|
|
|
97
112
|
loginOAuth2Code: (request: Request, onAuthorized: AuthorizedHandler) => Promise<Response>;
|
|
98
113
|
loginOAuth2Native: (request: Request, onAuthorized: AuthorizedHandler) => Promise<Response>;
|
|
99
114
|
loginOAuth2Onetap: (request: Request, onAuthorized: AuthorizedHandler, provider?: string) => Promise<Response>;
|
|
100
|
-
sendEmailVerificationCode: (request: Request, sender:
|
|
101
|
-
email: string;
|
|
102
|
-
verificationCode: string;
|
|
103
|
-
}) => Promise<void>) => Promise<Response>;
|
|
104
|
-
sendPhoneVerificationCode: (request: Request, sender: (data: {
|
|
105
|
-
phone: string;
|
|
106
|
-
verificationCode: string;
|
|
107
|
-
}) => Promise<void>) => Promise<Response>;
|
|
115
|
+
sendEmailVerificationCode: (request: Request, sender: EmailSender) => Promise<Response>;
|
|
108
116
|
loginEmail: (request: Request, onAuthorized: AuthorizedHandler) => Promise<Response>;
|
|
109
|
-
|
|
117
|
+
/**
|
|
118
|
+
* Spends a mailed code without signing in, for a host flow that only needs proof of the address
|
|
119
|
+
* (verifying or changing a signed-in user's email). Throws `AuthenticationError`
|
|
120
|
+
* (`INVALID_VERIFICATION_CODE`, `VERIFICATION_CODE_ATTEMPTS_EXCEEDED`) as `loginEmail` answers.
|
|
121
|
+
*/
|
|
122
|
+
verifyEmailCode: (email: string, verificationCode: string) => Promise<void>;
|
|
123
|
+
desktopAuthorize: (request: Request) => Promise<Response>;
|
|
124
|
+
desktopExchange: (request: Request) => Promise<Response>;
|
|
110
125
|
kick: (principal: Principal) => Promise<void>;
|
|
111
126
|
isAuthenticated: (request: Request) => Promise<boolean>;
|
|
112
127
|
getSession: <T extends boolean>(request: Request, create: T) => Promise<T extends true ? Session : Session | null>;
|
|
@@ -115,5 +130,4 @@ export interface AuthService {
|
|
|
115
130
|
listSessions: (principal: Principal) => Promise<Session[]>;
|
|
116
131
|
cleanupExpiredSessions: (cleanupCount?: number) => Promise<Response>;
|
|
117
132
|
}
|
|
118
|
-
//#endregion
|
|
119
133
|
//# sourceMappingURL=types.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.mts","names":[],"sources":["../../src/auth/types.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"types.d.mts","names":[],"sources":["../../src/auth/types.ts"],"mappings":";;;;;YAMY,iBAAiB,WAAW,cAAc;;;;;;;;;;;;;;;iBAerC;EACf;EACA;EACA,UAAU;EACV,QAAQ;EACR,YAAY;;;;;;;YAQF,qBACV,SAAS,SACT,eAAe,kBACZ,QAAQ;iBAEI;;;;;;;;;;;EAWf,aAAa;;iBAGE;EACf;EACA,cAAc;EACd,mBAAmB;EACnB,SAAS;IAAkB;;EAC3B;;;;;;;;;IASE;;;;;;;;;;;IAWA;;EAEF;;EAEA;;;;;IAKE;;;;;IAKA;;EAEF;IACE,SAAS;;IAET;;;;;;;;MAQE;;;;iBAKW;EAEf,OAAO,SAAS,YAAY,QAAQ;EACpC,SAAS,SAAS,YAAY,QAAQ;EACtC,SAAS,SAAS,SAAS,WAAW,kBAAkB,QAAQ;EAGhE,cAAc,SAAS,YAAY,QAAQ;EAC3C,cAAc,SAAS,YAAY,QAAQ;EAC3C,sBACE,SAAS,SACT,UAAU,+BACP,QAAQ;EACb,kBAAkB,SAAS,SAAS,cAAc,sBAAsB,QAAQ;EAChF,oBAAoB,SAAS,SAAS,cAAc,sBAAsB,QAAQ;EAClF,oBACE,SAAS,SACT,cAAc,mBACd,sBACG,QAAQ;EAGb,4BAA4B,SAAS,SAAS,QAAQ,gBAAgB,QAAQ;EAC9E,aAAa,SAAS,SAAS,cAAc,sBAAsB,QAAQ;;;;;;EAM3E,kBAAkB,eAAe,6BAA6B;EAG9D,mBAAmB,SAAS,YAAY,QAAQ;EAChD,kBAAkB,SAAS,YAAY,QAAQ;EAG/C,OAAO,WAAW,cAAc;EAChC,kBAAkB,SAAS,YAAY;EACvC,aAAa,mBACX,SAAS,SACT,QAAQ,MACL,QAAQ,iBAAiB,UAAU;EACxC,gBAAgB,sBAAsB;EACtC,eAAe,SAAS,YAAY,QAAQ;EAC5C,eAAe,WAAW,cAAc,QAAQ;EAChD,yBAAyB,0BAA0B,QAAQ"}
|
package/dist/core/index.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
|
|
2
|
+
// src/core/index.ts
|
|
3
3
|
const PROVIDERS = [
|
|
4
4
|
"APPLE",
|
|
5
5
|
"DISCORD",
|
|
@@ -14,7 +14,6 @@ const PROVIDERS = [
|
|
|
14
14
|
"EMAIL",
|
|
15
15
|
"PHONE"
|
|
16
16
|
];
|
|
17
|
-
//#endregion
|
|
18
17
|
exports.PROVIDERS = PROVIDERS;
|
|
19
18
|
|
|
20
19
|
//# sourceMappingURL=index.cjs.map
|
package/dist/core/index.d.cts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
//#region src/core/index.d.ts
|
|
2
1
|
export type JSONValue = null | string | number | boolean | {
|
|
3
2
|
[value: string]: JSONValue;
|
|
4
3
|
} | Array<JSONValue>;
|
|
@@ -16,5 +15,4 @@ export interface CsrfToken {
|
|
|
16
15
|
}
|
|
17
16
|
export declare const PROVIDERS: readonly ['APPLE', 'DISCORD', 'FACEBOOK', 'GITHUB', 'GOOGLE', 'LINKEDIN', 'MICROSOFT', 'SLACK', 'WECHAT', 'X', 'EMAIL', 'PHONE'];
|
|
18
17
|
export type Provider = (typeof PROVIDERS)[number];
|
|
19
|
-
//#endregion
|
|
20
18
|
//# sourceMappingURL=index.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/core/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/core/index.ts"],"mappings":"A,YAAY;GAKL,gBAAgB;IACnB,MAAM;iBAEO;EACf;;iBAGe,uBAAuB;EACtC;EACA;;iBAGe;EACf;EACA;EACA;;qBAGW;YAiBD,mBAAmB"}
|
package/dist/core/index.d.mts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
//#region src/core/index.d.ts
|
|
2
1
|
export type JSONValue = null | string | number | boolean | {
|
|
3
2
|
[value: string]: JSONValue;
|
|
4
3
|
} | Array<JSONValue>;
|
|
@@ -16,5 +15,4 @@ export interface CsrfToken {
|
|
|
16
15
|
}
|
|
17
16
|
export declare const PROVIDERS: readonly ['APPLE', 'DISCORD', 'FACEBOOK', 'GITHUB', 'GOOGLE', 'LINKEDIN', 'MICROSOFT', 'SLACK', 'WECHAT', 'X', 'EMAIL', 'PHONE'];
|
|
18
17
|
export type Provider = (typeof PROVIDERS)[number];
|
|
19
|
-
//#endregion
|
|
20
18
|
//# sourceMappingURL=index.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/core/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/core/index.ts"],"mappings":"A,YAAY;GAKL,gBAAgB;IACnB,MAAM;iBAEO;EACf;;iBAGe,uBAAuB;EACtC;EACA;;iBAGe;EACf;EACA;EACA;;qBAGW;YAiBD,mBAAmB"}
|
package/dist/core/index.mjs
CHANGED
package/dist/email/schema.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_auth_attributes = require("../auth/attributes.cjs");
|
|
3
3
|
let zod_mini = require("zod/mini");
|
|
4
|
-
|
|
4
|
+
// src/email/schema.ts
|
|
5
5
|
/**
|
|
6
6
|
* An email address as an identity key: trimmed and lowercased before the format check, so
|
|
7
7
|
* `" A@X.com "` is accepted as `"a@x.com"`. The whole address is lowercased, local part included:
|
|
@@ -18,7 +18,6 @@ const loginEmailSchema = (0, zod_mini.object)({
|
|
|
18
18
|
verificationCode: (0, zod_mini.string)().check((0, zod_mini.regex)(/^\d{6}$/)),
|
|
19
19
|
attributes: require_auth_attributes.attributesSchema
|
|
20
20
|
});
|
|
21
|
-
//#endregion
|
|
22
21
|
exports.loginEmailSchema = loginEmailSchema;
|
|
23
22
|
exports.sendEmailVerificationCodeSchema = sendEmailVerificationCodeSchema;
|
|
24
23
|
|
package/dist/email/schema.d.cts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
//#region src/email/schema.d.ts
|
|
2
1
|
export declare const sendEmailVerificationCodeSchema: import("zod/mini").ZodMiniObject<{
|
|
3
2
|
email: import("zod/mini").ZodMiniPipe<import("zod/mini").ZodMiniString<string>, import("zod/mini").ZodMiniEmail>;
|
|
4
3
|
turnstileToken: import("zod/mini").ZodMiniString<string>;
|
|
@@ -8,5 +7,4 @@ export declare const loginEmailSchema: import("zod/mini").ZodMiniObject<{
|
|
|
8
7
|
verificationCode: import("zod/mini").ZodMiniString<string>;
|
|
9
8
|
attributes: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniRecord<import("zod/mini").ZodMiniString<string>, import("zod/mini").ZodMiniString<string>>>;
|
|
10
9
|
}, import("zod/v4/core").$strip>;
|
|
11
|
-
//#endregion
|
|
12
10
|
//# sourceMappingURL=schema.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.cts","names":[],"sources":["../../src/email/schema.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema.d.cts","names":[],"sources":["../../src/email/schema.ts"],"mappings":"A,qBAWa,oDAA+B;;;yBAG1C;qBAEW,qCAAgB;;;;yBAI3B"}
|
package/dist/email/schema.d.mts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
//#region src/email/schema.d.ts
|
|
2
1
|
export declare const sendEmailVerificationCodeSchema: import("zod/mini").ZodMiniObject<{
|
|
3
2
|
email: import("zod/mini").ZodMiniPipe<import("zod/mini").ZodMiniString<string>, import("zod/mini").ZodMiniEmail>;
|
|
4
3
|
turnstileToken: import("zod/mini").ZodMiniString<string>;
|
|
@@ -8,5 +7,4 @@ export declare const loginEmailSchema: import("zod/mini").ZodMiniObject<{
|
|
|
8
7
|
verificationCode: import("zod/mini").ZodMiniString<string>;
|
|
9
8
|
attributes: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniRecord<import("zod/mini").ZodMiniString<string>, import("zod/mini").ZodMiniString<string>>>;
|
|
10
9
|
}, import("zod/v4/core").$strip>;
|
|
11
|
-
//#endregion
|
|
12
10
|
//# sourceMappingURL=schema.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.mts","names":[],"sources":["../../src/email/schema.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema.d.mts","names":[],"sources":["../../src/email/schema.ts"],"mappings":"A,qBAWa,oDAA+B;;;yBAG1C;qBAEW,qCAAgB;;;;yBAI3B"}
|
package/dist/email/schema.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { attributesSchema } from "../auth/attributes.mjs";
|
|
2
2
|
import { email, maxLength, object, pipe, regex, string, toLowerCase, trim } from "zod/mini";
|
|
3
|
-
|
|
3
|
+
// src/email/schema.ts
|
|
4
4
|
/**
|
|
5
5
|
* An email address as an identity key: trimmed and lowercased before the format check, so
|
|
6
6
|
* `" A@X.com "` is accepted as `"a@x.com"`. The whole address is lowercased, local part included:
|
|
@@ -17,7 +17,6 @@ const loginEmailSchema = object({
|
|
|
17
17
|
verificationCode: string().check(regex(/^\d{6}$/)),
|
|
18
18
|
attributes: attributesSchema
|
|
19
19
|
});
|
|
20
|
-
//#endregion
|
|
21
20
|
export { loginEmailSchema, sendEmailVerificationCodeSchema };
|
|
22
21
|
|
|
23
22
|
//# sourceMappingURL=schema.mjs.map
|
package/dist/index.cjs
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_auth_error = require("./auth/error.cjs");
|
|
2
3
|
const require_oauth2_error = require("./oauth2/error.cjs");
|
|
4
|
+
const require_auth_respond = require("./auth/respond.cjs");
|
|
3
5
|
const require_oauth2_client = require("./oauth2/client.cjs");
|
|
4
6
|
const require_session_common = require("./session/common.cjs");
|
|
5
7
|
const require_auth_index = require("./auth/index.cjs");
|
|
@@ -8,7 +10,9 @@ const require_session_db = require("./session/db.cjs");
|
|
|
8
10
|
const require_core_index = require("./core/index.cjs");
|
|
9
11
|
const require_oauth2_types = require("./oauth2/types.cjs");
|
|
10
12
|
const require_oauth2_name = require("./oauth2/name.cjs");
|
|
13
|
+
exports.AUTHENTICATION_REASONS = require_auth_error.AUTHENTICATION_REASONS;
|
|
11
14
|
exports.Auth = require_auth_index.Auth;
|
|
15
|
+
exports.AuthenticationError = require_auth_error.AuthenticationError;
|
|
12
16
|
exports.DBIndexedSessionRepository = require_session_db.DBIndexedSessionRepository;
|
|
13
17
|
exports.MAX_NAME_PART_LENGTH = require_oauth2_name.MAX_NAME_PART_LENGTH;
|
|
14
18
|
exports.OAuth2Client = require_oauth2_client.OAuth2Client;
|
|
@@ -20,4 +24,5 @@ exports.PROVIDERS = require_core_index.PROVIDERS;
|
|
|
20
24
|
exports.RedisIndexedSessionRepository = require_session_redis.RedisIndexedSessionRepository;
|
|
21
25
|
exports.RedisKVRepository = require_session_redis.RedisKVRepository;
|
|
22
26
|
exports.composeName = require_oauth2_name.composeName;
|
|
27
|
+
exports.errorResponse = require_auth_respond.errorResponse;
|
|
23
28
|
exports.oauth2RedirectQuerySchema = require_oauth2_client.oauth2RedirectQuerySchema;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { CsrfToken, PROVIDERS, Principal, Provider } from "./core/index.cjs";
|
|
2
2
|
import { KVRepository, Namespace, Session, SessionRepository } from "./session/types.cjs";
|
|
3
|
+
import { EmailSender } from "./auth/email-codes.cjs";
|
|
4
|
+
import { AUTHENTICATION_REASONS, AuthenticationError, AuthenticationReason, AuthenticationReasons } from "./auth/error.cjs";
|
|
3
5
|
import { AuthorizationResponse, ClientSecret, NativeClient, NativeCredential, OAuth2ClientConfig, OAuth2Token, OIDC_SCOPES, OidcScope, OidcToken, PersonNameComponents, ProviderConfig, StandardClaims, UserInfo, WebClient } from "./oauth2/types.cjs";
|
|
4
6
|
import { AuthConfig, AuthService, Authorization, AuthorizedHandler, OAuth2AuthorizationOptions } from "./auth/types.cjs";
|
|
5
7
|
import { Auth, PATH } from "./auth/index.cjs";
|
|
8
|
+
import { ErrorBody, errorResponse } from "./auth/respond.cjs";
|
|
6
9
|
import { OAuth2Client, oauth2RedirectQuerySchema } from "./oauth2/client.cjs";
|
|
7
10
|
import { OAuth2Error, OAuth2ErrorType } from "./oauth2/error.cjs";
|
|
8
11
|
import { RedisIndexedSessionRepository, RedisKVRepository } from "./session/redis.cjs";
|
|
9
12
|
import { DBAdapter, DBIndexedSessionRepository } from "./session/db.cjs";
|
|
10
13
|
import { PRINCIPAL_NAME_INDEX_NAME } from "./session/common.cjs";
|
|
11
14
|
import { MAX_NAME_PART_LENGTH, composeName } from "./oauth2/name.cjs";
|
|
12
|
-
export { Auth, type AuthConfig, type AuthService, type Authorization, type AuthorizationResponse, type AuthorizedHandler, type ClientSecret, type CsrfToken, type DBAdapter, DBIndexedSessionRepository, type KVRepository, MAX_NAME_PART_LENGTH, type Namespace, type NativeClient, type NativeCredential, type OAuth2AuthorizationOptions, OAuth2Client, type OAuth2ClientConfig, OAuth2Error, type OAuth2ErrorType, type OAuth2Token, OIDC_SCOPES, type OidcScope, type OidcToken, PATH, PRINCIPAL_NAME_INDEX_NAME, PROVIDERS, type PersonNameComponents, type Principal, type Provider, type ProviderConfig, RedisIndexedSessionRepository, RedisKVRepository, type Session, type SessionRepository, type StandardClaims, type UserInfo, type WebClient, composeName, oauth2RedirectQuerySchema };
|
|
15
|
+
export { AUTHENTICATION_REASONS, Auth, type AuthConfig, type AuthService, AuthenticationError, type AuthenticationReason, type AuthenticationReasons, type Authorization, type AuthorizationResponse, type AuthorizedHandler, type ClientSecret, type CsrfToken, type DBAdapter, DBIndexedSessionRepository, type EmailSender, type ErrorBody, type KVRepository, MAX_NAME_PART_LENGTH, type Namespace, type NativeClient, type NativeCredential, type OAuth2AuthorizationOptions, OAuth2Client, type OAuth2ClientConfig, OAuth2Error, type OAuth2ErrorType, type OAuth2Token, OIDC_SCOPES, type OidcScope, type OidcToken, PATH, PRINCIPAL_NAME_INDEX_NAME, PROVIDERS, type PersonNameComponents, type Principal, type Provider, type ProviderConfig, RedisIndexedSessionRepository, RedisKVRepository, type Session, type SessionRepository, type StandardClaims, type UserInfo, type WebClient, composeName, errorResponse, oauth2RedirectQuerySchema };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { CsrfToken, PROVIDERS, Principal, Provider } from "./core/index.mjs";
|
|
2
2
|
import { KVRepository, Namespace, Session, SessionRepository } from "./session/types.mjs";
|
|
3
|
+
import { EmailSender } from "./auth/email-codes.mjs";
|
|
4
|
+
import { AUTHENTICATION_REASONS, AuthenticationError, AuthenticationReason, AuthenticationReasons } from "./auth/error.mjs";
|
|
3
5
|
import { AuthorizationResponse, ClientSecret, NativeClient, NativeCredential, OAuth2ClientConfig, OAuth2Token, OIDC_SCOPES, OidcScope, OidcToken, PersonNameComponents, ProviderConfig, StandardClaims, UserInfo, WebClient } from "./oauth2/types.mjs";
|
|
4
6
|
import { AuthConfig, AuthService, Authorization, AuthorizedHandler, OAuth2AuthorizationOptions } from "./auth/types.mjs";
|
|
5
7
|
import { Auth, PATH } from "./auth/index.mjs";
|
|
8
|
+
import { ErrorBody, errorResponse } from "./auth/respond.mjs";
|
|
6
9
|
import { OAuth2Client, oauth2RedirectQuerySchema } from "./oauth2/client.mjs";
|
|
7
10
|
import { OAuth2Error, OAuth2ErrorType } from "./oauth2/error.mjs";
|
|
8
11
|
import { RedisIndexedSessionRepository, RedisKVRepository } from "./session/redis.mjs";
|
|
9
12
|
import { DBAdapter, DBIndexedSessionRepository } from "./session/db.mjs";
|
|
10
13
|
import { PRINCIPAL_NAME_INDEX_NAME } from "./session/common.mjs";
|
|
11
14
|
import { MAX_NAME_PART_LENGTH, composeName } from "./oauth2/name.mjs";
|
|
12
|
-
export { Auth, type AuthConfig, type AuthService, type Authorization, type AuthorizationResponse, type AuthorizedHandler, type ClientSecret, type CsrfToken, type DBAdapter, DBIndexedSessionRepository, type KVRepository, MAX_NAME_PART_LENGTH, type Namespace, type NativeClient, type NativeCredential, type OAuth2AuthorizationOptions, OAuth2Client, type OAuth2ClientConfig, OAuth2Error, type OAuth2ErrorType, type OAuth2Token, OIDC_SCOPES, type OidcScope, type OidcToken, PATH, PRINCIPAL_NAME_INDEX_NAME, PROVIDERS, type PersonNameComponents, type Principal, type Provider, type ProviderConfig, RedisIndexedSessionRepository, RedisKVRepository, type Session, type SessionRepository, type StandardClaims, type UserInfo, type WebClient, composeName, oauth2RedirectQuerySchema };
|
|
15
|
+
export { AUTHENTICATION_REASONS, Auth, type AuthConfig, type AuthService, AuthenticationError, type AuthenticationReason, type AuthenticationReasons, type Authorization, type AuthorizationResponse, type AuthorizedHandler, type ClientSecret, type CsrfToken, type DBAdapter, DBIndexedSessionRepository, type EmailSender, type ErrorBody, type KVRepository, MAX_NAME_PART_LENGTH, type Namespace, type NativeClient, type NativeCredential, type OAuth2AuthorizationOptions, OAuth2Client, type OAuth2ClientConfig, OAuth2Error, type OAuth2ErrorType, type OAuth2Token, OIDC_SCOPES, type OidcScope, type OidcToken, PATH, PRINCIPAL_NAME_INDEX_NAME, PROVIDERS, type PersonNameComponents, type Principal, type Provider, type ProviderConfig, RedisIndexedSessionRepository, RedisKVRepository, type Session, type SessionRepository, type StandardClaims, type UserInfo, type WebClient, composeName, errorResponse, oauth2RedirectQuerySchema };
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { AUTHENTICATION_REASONS, AuthenticationError } from "./auth/error.mjs";
|
|
1
2
|
import { OAuth2Error } from "./oauth2/error.mjs";
|
|
3
|
+
import { errorResponse } from "./auth/respond.mjs";
|
|
2
4
|
import { OAuth2Client, oauth2RedirectQuerySchema } from "./oauth2/client.mjs";
|
|
3
5
|
import { PRINCIPAL_NAME_INDEX_NAME } from "./session/common.mjs";
|
|
4
6
|
import { Auth, PATH } from "./auth/index.mjs";
|
|
@@ -7,4 +9,4 @@ import { DBIndexedSessionRepository } from "./session/db.mjs";
|
|
|
7
9
|
import { PROVIDERS } from "./core/index.mjs";
|
|
8
10
|
import { OIDC_SCOPES } from "./oauth2/types.mjs";
|
|
9
11
|
import { MAX_NAME_PART_LENGTH, composeName } from "./oauth2/name.mjs";
|
|
10
|
-
export { Auth, DBIndexedSessionRepository, MAX_NAME_PART_LENGTH, OAuth2Client, OAuth2Error, OIDC_SCOPES, PATH, PRINCIPAL_NAME_INDEX_NAME, PROVIDERS, RedisIndexedSessionRepository, RedisKVRepository, composeName, oauth2RedirectQuerySchema };
|
|
12
|
+
export { AUTHENTICATION_REASONS, Auth, AuthenticationError, DBIndexedSessionRepository, MAX_NAME_PART_LENGTH, OAuth2Client, OAuth2Error, OIDC_SCOPES, PATH, PRINCIPAL_NAME_INDEX_NAME, PROVIDERS, RedisIndexedSessionRepository, RedisKVRepository, composeName, errorResponse, oauth2RedirectQuerySchema };
|
package/dist/oauth2/client.cjs
CHANGED
|
@@ -2,7 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
2
2
|
const require_oauth2_error = require("./error.cjs");
|
|
3
3
|
let _shware_utils = require("@shware/utils");
|
|
4
4
|
let zod_v4_mini = require("zod/v4-mini");
|
|
5
|
-
|
|
5
|
+
// src/oauth2/client.ts
|
|
6
6
|
const oauth2RedirectQuerySchema = (0, zod_v4_mini.object)({
|
|
7
7
|
code: (0, zod_v4_mini.optional)((0, zod_v4_mini.string)()),
|
|
8
8
|
state: (0, zod_v4_mini.optional)((0, zod_v4_mini.string)()),
|
|
@@ -174,7 +174,6 @@ var OAuth2Client = class {
|
|
|
174
174
|
function isOneTapProvider(provider) {
|
|
175
175
|
return typeof provider.getTokenInfo === "function";
|
|
176
176
|
}
|
|
177
|
-
//#endregion
|
|
178
177
|
exports.OAuth2Client = OAuth2Client;
|
|
179
178
|
exports.googleOneTapSchema = googleOneTapSchema;
|
|
180
179
|
exports.oauth2RedirectQuerySchema = oauth2RedirectQuerySchema;
|
package/dist/oauth2/client.d.cts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { AuthorizationResponse, NativeCredential, OAuth2ClientConfig, OAuth2Token, OidcToken, PkceParameters, UserInfo } from "./types.cjs";
|
|
2
|
-
//#region src/oauth2/client.d.ts
|
|
3
2
|
export declare const oauth2RedirectQuerySchema: import("zod/mini").ZodMiniObject<{
|
|
4
3
|
code: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
5
4
|
state: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
@@ -97,5 +96,4 @@ export declare class OAuth2Client {
|
|
|
97
96
|
clientId: string;
|
|
98
97
|
}>;
|
|
99
98
|
}
|
|
100
|
-
//#endregion
|
|
101
99
|
//# sourceMappingURL=client.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.cts","names":["_$__types0.UserInfo"],"sources":["../../src/oauth2/client.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.cts","names":["_$__types0.UserInfo"],"sources":["../../src/oauth2/client.ts"],"mappings":";qBAkBa,8CAAyB;;;;;;;yBAQpC;qBAEW,uCAAkB;;;;;;;;;;yBAY7B;qBAEW;mBACM;EACjB,YAAY,QAAQ;MAIhB;MAIA;MAIA;;UAKU;UAUN;;UAKM;;;;;;UAaA;;;;;;UAcA;UAYA;EAIR,yBACJ,UACA,OACA;IAEA;IACA;IACA,OAAO;MACL,QAAQ;;EAYN,4BACJ,UACA,MACA;IAEA;IACA;IACA,OAAO;MACL;IAAU;IAAkB,OAAO;;;EAcjC,cACJ,UACA,UACA,OACA;IAEA;IACA;IACA,OAAO,cAAc;IACrB,WAAW;MACZ,QADYA;;EAOP,eAAe,UAAU;IAAgB;IAAkB;MAAoB;;;;;EAS/E,qBACJ,UACA,UACA;IAEA;IACA;IACA;MACE,QAAQ;EAON,cACJ,UACA,UACA;IAEA;IACA;IACA;MACD;;;;;EAWK,oBACJ,UACA,eAAe,kBAAkB,eACjC;IAEA;IACA,aAAa;IACb,OAAO,KAAK;MACb"}
|
package/dist/oauth2/client.d.mts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { AuthorizationResponse, NativeCredential, OAuth2ClientConfig, OAuth2Token, OidcToken, PkceParameters, UserInfo } from "./types.mjs";
|
|
2
|
-
//#region src/oauth2/client.d.ts
|
|
3
2
|
export declare const oauth2RedirectQuerySchema: import("zod/mini").ZodMiniObject<{
|
|
4
3
|
code: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
5
4
|
state: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
@@ -97,5 +96,4 @@ export declare class OAuth2Client {
|
|
|
97
96
|
clientId: string;
|
|
98
97
|
}>;
|
|
99
98
|
}
|
|
100
|
-
//#endregion
|
|
101
99
|
//# sourceMappingURL=client.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.mts","names":["_$__types0.UserInfo"],"sources":["../../src/oauth2/client.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.mts","names":["_$__types0.UserInfo"],"sources":["../../src/oauth2/client.ts"],"mappings":";qBAkBa,8CAAyB;;;;;;;yBAQpC;qBAEW,uCAAkB;;;;;;;;;;yBAY7B;qBAEW;mBACM;EACjB,YAAY,QAAQ;MAIhB;MAIA;MAIA;;UAKU;UAUN;;UAKM;;;;;;UAaA;;;;;;UAcA;UAYA;EAIR,yBACJ,UACA,OACA;IAEA;IACA;IACA,OAAO;MACL,QAAQ;;EAYN,4BACJ,UACA,MACA;IAEA;IACA;IACA,OAAO;MACL;IAAU;IAAkB,OAAO;;;EAcjC,cACJ,UACA,UACA,OACA;IAEA;IACA;IACA,OAAO,cAAc;IACrB,WAAW;MACZ,QADYA;;EAOP,eAAe,UAAU;IAAgB;IAAkB;MAAoB;;;;;EAS/E,qBACJ,UACA,UACA;IAEA;IACA;IACA;MACE,QAAQ;EAON,cACJ,UACA,UACA;IAEA;IACA;IACA;MACD;;;;;EAWK,oBACJ,UACA,eAAe,kBAAkB,eACjC;IAEA;IACA,aAAa;IACb,OAAO,KAAK;MACb"}
|
package/dist/oauth2/client.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { OAuth2Error } from "./error.mjs";
|
|
2
2
|
import { invariant } from "@shware/utils";
|
|
3
3
|
import { object, optional, string } from "zod/v4-mini";
|
|
4
|
-
|
|
4
|
+
// src/oauth2/client.ts
|
|
5
5
|
const oauth2RedirectQuerySchema = object({
|
|
6
6
|
code: optional(string()),
|
|
7
7
|
state: optional(string()),
|
|
@@ -173,7 +173,6 @@ var OAuth2Client = class {
|
|
|
173
173
|
function isOneTapProvider(provider) {
|
|
174
174
|
return typeof provider.getTokenInfo === "function";
|
|
175
175
|
}
|
|
176
|
-
//#endregion
|
|
177
176
|
export { OAuth2Client, googleOneTapSchema, oauth2RedirectQuerySchema };
|
|
178
177
|
|
|
179
178
|
//# sourceMappingURL=client.mjs.map
|
package/dist/oauth2/error.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
|
|
2
|
+
// src/oauth2/error.ts
|
|
3
3
|
/** The registered error codes of `OAuth2ErrorType`, for checking untrusted input at runtime. */
|
|
4
4
|
const OAUTH2_ERROR_TYPES = /* @__PURE__ */ new Set([
|
|
5
5
|
"invalid_request",
|
|
@@ -29,14 +29,6 @@ var OAuth2Error = class OAuth2Error extends Error {
|
|
|
29
29
|
Object.setPrototypeOf(this, OAuth2Error.prototype);
|
|
30
30
|
}
|
|
31
31
|
};
|
|
32
|
-
var AuthenticationError = class AuthenticationError extends Error {
|
|
33
|
-
constructor(message) {
|
|
34
|
-
super(message);
|
|
35
|
-
Object.setPrototypeOf(this, AuthenticationError.prototype);
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
//#endregion
|
|
39
|
-
exports.AuthenticationError = AuthenticationError;
|
|
40
32
|
exports.OAuth2Error = OAuth2Error;
|
|
41
33
|
exports.isKnownOAuth2ErrorType = isKnownOAuth2ErrorType;
|
|
42
34
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.cjs","names":[],"sources":["../../src/oauth2/error.ts"],"sourcesContent":["// reference: https://datatracker.ietf.org/doc/html/rfc6749#section-4.2.2.1\nexport type OAuth2ErrorType =\n | 'invalid_request' // 400\n | 'invalid_client' // 401\n | 'invalid_grant' // 400\n | 'invalid_token' // 401\n | 'invalid_scope' // 400\n | 'unauthorized_client' // 401\n | 'unsupported_grant_type' // 400\n | 'unsupported_response_type' // 400\n | 'insufficient_scope' // 403\n | 'redirect_uri_mismatch' // 400\n | 'access_denied' // 400\n | 'server_error' // 500\n | 'temporarily_unavailable' // 503\n | (string & {});\n\n/** The registered error codes of `OAuth2ErrorType`, for checking untrusted input at runtime. */\nconst OAUTH2_ERROR_TYPES: ReadonlySet<string> = new Set([\n 'invalid_request',\n 'invalid_client',\n 'invalid_grant',\n 'invalid_token',\n 'invalid_scope',\n 'unauthorized_client',\n 'unsupported_grant_type',\n 'unsupported_response_type',\n 'insufficient_scope',\n 'redirect_uri_mismatch',\n 'access_denied',\n 'server_error',\n 'temporarily_unavailable',\n]);\n\nexport function isKnownOAuth2ErrorType(value: string): boolean {\n return OAUTH2_ERROR_TYPES.has(value);\n}\n\nexport class OAuth2Error extends Error {\n readonly status: number;\n readonly error: OAuth2ErrorType;\n\n constructor(status: number, error: OAuth2ErrorType, message?: string) {\n super(message ?? `OAuth2 error: ${error}`);\n this.status = status;\n this.error = error;\n Object.setPrototypeOf(this, OAuth2Error.prototype);\n }\n}\n
|
|
1
|
+
{"version":3,"file":"error.cjs","names":[],"sources":["../../src/oauth2/error.ts"],"sourcesContent":["// reference: https://datatracker.ietf.org/doc/html/rfc6749#section-4.2.2.1\nexport type OAuth2ErrorType =\n | 'invalid_request' // 400\n | 'invalid_client' // 401\n | 'invalid_grant' // 400\n | 'invalid_token' // 401\n | 'invalid_scope' // 400\n | 'unauthorized_client' // 401\n | 'unsupported_grant_type' // 400\n | 'unsupported_response_type' // 400\n | 'insufficient_scope' // 403\n | 'redirect_uri_mismatch' // 400\n | 'access_denied' // 400\n | 'server_error' // 500\n | 'temporarily_unavailable' // 503\n | (string & {});\n\n/** The registered error codes of `OAuth2ErrorType`, for checking untrusted input at runtime. */\nconst OAUTH2_ERROR_TYPES: ReadonlySet<string> = new Set([\n 'invalid_request',\n 'invalid_client',\n 'invalid_grant',\n 'invalid_token',\n 'invalid_scope',\n 'unauthorized_client',\n 'unsupported_grant_type',\n 'unsupported_response_type',\n 'insufficient_scope',\n 'redirect_uri_mismatch',\n 'access_denied',\n 'server_error',\n 'temporarily_unavailable',\n]);\n\nexport function isKnownOAuth2ErrorType(value: string): boolean {\n return OAUTH2_ERROR_TYPES.has(value);\n}\n\nexport class OAuth2Error extends Error {\n readonly status: number;\n readonly error: OAuth2ErrorType;\n\n constructor(status: number, error: OAuth2ErrorType, message?: string) {\n super(message ?? `OAuth2 error: ${error}`);\n this.status = status;\n this.error = error;\n Object.setPrototypeOf(this, OAuth2Error.prototype);\n }\n}\n"],"mappings":";;;AAkBA,MAAM,qCAA0C,IAAI,IAAI;CACtD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,SAAgB,uBAAuB,OAAwB;CAC7D,OAAO,mBAAmB,IAAI,KAAK;AACrC;AAEA,IAAa,cAAb,MAAa,oBAAoB,MAAM;CACrC;CACA;CAEA,YAAY,QAAgB,OAAwB,SAAkB;EACpE,MAAM,WAAW,iBAAiB,OAAO;EACzC,KAAK,SAAS;EACd,KAAK,QAAQ;EACb,OAAO,eAAe,MAAM,YAAY,SAAS;CACnD;AACF"}
|
package/dist/oauth2/error.d.cts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
//#region src/oauth2/error.d.ts
|
|
2
1
|
export type OAuth2ErrorType = 'invalid_request' | 'invalid_client' | 'invalid_grant' | 'invalid_token' | 'invalid_scope' | 'unauthorized_client' | 'unsupported_grant_type' | 'unsupported_response_type' | 'insufficient_scope' | 'redirect_uri_mismatch' | 'access_denied' | 'server_error' | 'temporarily_unavailable' | (string & {});
|
|
3
2
|
export declare function isKnownOAuth2ErrorType(value: string): boolean;
|
|
4
3
|
export declare class OAuth2Error extends Error {
|
|
@@ -6,8 +5,4 @@ export declare class OAuth2Error extends Error {
|
|
|
6
5
|
readonly error: OAuth2ErrorType;
|
|
7
6
|
constructor(status: number, error: OAuth2ErrorType, message?: string);
|
|
8
7
|
}
|
|
9
|
-
export declare class AuthenticationError extends Error {
|
|
10
|
-
constructor(message: string);
|
|
11
|
-
}
|
|
12
|
-
//#endregion
|
|
13
8
|
//# sourceMappingURL=error.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.d.cts","names":[],"sources":["../../src/oauth2/error.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"error.d.cts","names":[],"sources":["../../src/oauth2/error.ts"],"mappings":"A,YACY;wBAiCI,uBAAuB;qBAI1B,oBAAoB;WACtB;WACA,OAAO;EAEhB,YAAY,gBAAgB,OAAO,iBAAiB"}
|
package/dist/oauth2/error.d.mts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
//#region src/oauth2/error.d.ts
|
|
2
1
|
export type OAuth2ErrorType = 'invalid_request' | 'invalid_client' | 'invalid_grant' | 'invalid_token' | 'invalid_scope' | 'unauthorized_client' | 'unsupported_grant_type' | 'unsupported_response_type' | 'insufficient_scope' | 'redirect_uri_mismatch' | 'access_denied' | 'server_error' | 'temporarily_unavailable' | (string & {});
|
|
3
2
|
export declare function isKnownOAuth2ErrorType(value: string): boolean;
|
|
4
3
|
export declare class OAuth2Error extends Error {
|
|
@@ -6,8 +5,4 @@ export declare class OAuth2Error extends Error {
|
|
|
6
5
|
readonly error: OAuth2ErrorType;
|
|
7
6
|
constructor(status: number, error: OAuth2ErrorType, message?: string);
|
|
8
7
|
}
|
|
9
|
-
export declare class AuthenticationError extends Error {
|
|
10
|
-
constructor(message: string);
|
|
11
|
-
}
|
|
12
|
-
//#endregion
|
|
13
8
|
//# sourceMappingURL=error.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.d.mts","names":[],"sources":["../../src/oauth2/error.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"error.d.mts","names":[],"sources":["../../src/oauth2/error.ts"],"mappings":"A,YACY;wBAiCI,uBAAuB;qBAI1B,oBAAoB;WACtB;WACA,OAAO;EAEhB,YAAY,gBAAgB,OAAO,iBAAiB"}
|
package/dist/oauth2/error.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/oauth2/error.ts
|
|
2
2
|
/** The registered error codes of `OAuth2ErrorType`, for checking untrusted input at runtime. */
|
|
3
3
|
const OAUTH2_ERROR_TYPES = /* @__PURE__ */ new Set([
|
|
4
4
|
"invalid_request",
|
|
@@ -28,13 +28,6 @@ var OAuth2Error = class OAuth2Error extends Error {
|
|
|
28
28
|
Object.setPrototypeOf(this, OAuth2Error.prototype);
|
|
29
29
|
}
|
|
30
30
|
};
|
|
31
|
-
|
|
32
|
-
constructor(message) {
|
|
33
|
-
super(message);
|
|
34
|
-
Object.setPrototypeOf(this, AuthenticationError.prototype);
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
//#endregion
|
|
38
|
-
export { AuthenticationError, OAuth2Error, isKnownOAuth2ErrorType };
|
|
31
|
+
export { OAuth2Error, isKnownOAuth2ErrorType };
|
|
39
32
|
|
|
40
33
|
//# sourceMappingURL=error.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.mjs","names":[],"sources":["../../src/oauth2/error.ts"],"sourcesContent":["// reference: https://datatracker.ietf.org/doc/html/rfc6749#section-4.2.2.1\nexport type OAuth2ErrorType =\n | 'invalid_request' // 400\n | 'invalid_client' // 401\n | 'invalid_grant' // 400\n | 'invalid_token' // 401\n | 'invalid_scope' // 400\n | 'unauthorized_client' // 401\n | 'unsupported_grant_type' // 400\n | 'unsupported_response_type' // 400\n | 'insufficient_scope' // 403\n | 'redirect_uri_mismatch' // 400\n | 'access_denied' // 400\n | 'server_error' // 500\n | 'temporarily_unavailable' // 503\n | (string & {});\n\n/** The registered error codes of `OAuth2ErrorType`, for checking untrusted input at runtime. */\nconst OAUTH2_ERROR_TYPES: ReadonlySet<string> = new Set([\n 'invalid_request',\n 'invalid_client',\n 'invalid_grant',\n 'invalid_token',\n 'invalid_scope',\n 'unauthorized_client',\n 'unsupported_grant_type',\n 'unsupported_response_type',\n 'insufficient_scope',\n 'redirect_uri_mismatch',\n 'access_denied',\n 'server_error',\n 'temporarily_unavailable',\n]);\n\nexport function isKnownOAuth2ErrorType(value: string): boolean {\n return OAUTH2_ERROR_TYPES.has(value);\n}\n\nexport class OAuth2Error extends Error {\n readonly status: number;\n readonly error: OAuth2ErrorType;\n\n constructor(status: number, error: OAuth2ErrorType, message?: string) {\n super(message ?? `OAuth2 error: ${error}`);\n this.status = status;\n this.error = error;\n Object.setPrototypeOf(this, OAuth2Error.prototype);\n }\n}\n
|
|
1
|
+
{"version":3,"file":"error.mjs","names":[],"sources":["../../src/oauth2/error.ts"],"sourcesContent":["// reference: https://datatracker.ietf.org/doc/html/rfc6749#section-4.2.2.1\nexport type OAuth2ErrorType =\n | 'invalid_request' // 400\n | 'invalid_client' // 401\n | 'invalid_grant' // 400\n | 'invalid_token' // 401\n | 'invalid_scope' // 400\n | 'unauthorized_client' // 401\n | 'unsupported_grant_type' // 400\n | 'unsupported_response_type' // 400\n | 'insufficient_scope' // 403\n | 'redirect_uri_mismatch' // 400\n | 'access_denied' // 400\n | 'server_error' // 500\n | 'temporarily_unavailable' // 503\n | (string & {});\n\n/** The registered error codes of `OAuth2ErrorType`, for checking untrusted input at runtime. */\nconst OAUTH2_ERROR_TYPES: ReadonlySet<string> = new Set([\n 'invalid_request',\n 'invalid_client',\n 'invalid_grant',\n 'invalid_token',\n 'invalid_scope',\n 'unauthorized_client',\n 'unsupported_grant_type',\n 'unsupported_response_type',\n 'insufficient_scope',\n 'redirect_uri_mismatch',\n 'access_denied',\n 'server_error',\n 'temporarily_unavailable',\n]);\n\nexport function isKnownOAuth2ErrorType(value: string): boolean {\n return OAUTH2_ERROR_TYPES.has(value);\n}\n\nexport class OAuth2Error extends Error {\n readonly status: number;\n readonly error: OAuth2ErrorType;\n\n constructor(status: number, error: OAuth2ErrorType, message?: string) {\n super(message ?? `OAuth2 error: ${error}`);\n this.status = status;\n this.error = error;\n Object.setPrototypeOf(this, OAuth2Error.prototype);\n }\n}\n"],"mappings":";;AAkBA,MAAM,qCAA0C,IAAI,IAAI;CACtD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,SAAgB,uBAAuB,OAAwB;CAC7D,OAAO,mBAAmB,IAAI,KAAK;AACrC;AAEA,IAAa,cAAb,MAAa,oBAAoB,MAAM;CACrC;CACA;CAEA,YAAY,QAAgB,OAAwB,SAAkB;EACpE,MAAM,WAAW,iBAAiB,OAAO;EACzC,KAAK,SAAS;EACd,KAAK,QAAQ;EACb,OAAO,eAAe,MAAM,YAAY,SAAS;CACnD;AACF"}
|
package/dist/oauth2/name.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
|
|
2
|
+
// src/oauth2/name.ts
|
|
3
3
|
/**
|
|
4
4
|
* Upper bound, in characters, on each name part taken from the client. Names that reach us outside
|
|
5
5
|
* a signed token (Apple's form_post `user`, a native login body) are plain client input, so they
|
|
@@ -96,7 +96,6 @@ function isObject(value) {
|
|
|
96
96
|
function withoutUndefined(value) {
|
|
97
97
|
return Object.fromEntries(Object.entries(value).filter(([, v]) => v !== void 0));
|
|
98
98
|
}
|
|
99
|
-
//#endregion
|
|
100
99
|
exports.MAX_NAME_PART_LENGTH = MAX_NAME_PART_LENGTH;
|
|
101
100
|
exports.cleanNamePart = cleanNamePart;
|
|
102
101
|
exports.cleanPersonName = cleanPersonName;
|
package/dist/oauth2/name.d.cts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { PersonNameComponents, StandardClaims } from "./types.cjs";
|
|
2
|
-
//#region src/oauth2/name.d.ts
|
|
3
2
|
/**
|
|
4
3
|
* Upper bound, in characters, on each name part taken from the client. Names that reach us outside
|
|
5
4
|
* a signed token (Apple's form_post `user`, a native login body) are plain client input, so they
|
|
@@ -44,6 +43,5 @@ type NameClaims = Pick<StandardClaims, 'name' | 'given_name' | 'family_name' | '
|
|
|
44
43
|
* Undefined parts are left out, so spreading the result never overwrites a claim with `undefined`.
|
|
45
44
|
*/
|
|
46
45
|
export declare function nameClaims(parts: Omit<NameClaims, 'name'>): NameClaims;
|
|
47
|
-
//#endregion
|
|
48
46
|
export {};
|
|
49
47
|
//# sourceMappingURL=name.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"name.d.cts","names":[],"sources":["../../src/oauth2/name.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"name.d.cts","names":[],"sources":["../../src/oauth2/name.ts"],"mappings":";;;;;;qBAOa;;;;;;;wBAaG,cACd,YACA,eACC,KAAK;;;;;;wBAcQ,cAAc;;iBAQb;EACf;IAAS;IAAoB;;EAC7B;;;;;;;wBAQc,eAAe,0BAA0B;;;;;wBAkCzC,gBAAgB,iBAAiB;KAU5C,aAAa,KAChB;;;;;wBAQc,WAAW,OAAO,KAAK,sBAAsB"}
|