@atproto/oauth-provider 0.16.3 → 0.17.0-next.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/CHANGELOG.md +42 -0
- package/dist/access-token/access-token-mode.js +2 -5
- package/dist/access-token/access-token-mode.js.map +1 -1
- package/dist/account/account-manager.js +25 -33
- package/dist/account/account-manager.js.map +1 -1
- package/dist/account/account-store.js +11 -32
- package/dist/account/account-store.js.map +1 -1
- package/dist/account/sign-in-data.js +9 -12
- package/dist/account/sign-in-data.js.map +1 -1
- package/dist/account/sign-up-input.js +14 -17
- package/dist/account/sign-up-input.js.map +1 -1
- package/dist/client/client-auth.js +1 -2
- package/dist/client/client-data.js +1 -2
- package/dist/client/client-id.js +2 -5
- package/dist/client/client-id.js.map +1 -1
- package/dist/client/client-info.js +1 -2
- package/dist/client/client-manager.js +86 -97
- package/dist/client/client-manager.js.map +1 -1
- package/dist/client/client-store.js +7 -26
- package/dist/client/client-store.js.map +1 -1
- package/dist/client/client-utils.js +10 -14
- package/dist/client/client-utils.js.map +1 -1
- package/dist/client/client.js +43 -53
- package/dist/client/client.js.map +1 -1
- package/dist/constants.js +28 -31
- package/dist/constants.js.map +1 -1
- package/dist/customization/branding.js +8 -11
- package/dist/customization/branding.js.map +1 -1
- package/dist/customization/build-customization-css.js +8 -11
- package/dist/customization/build-customization-css.js.map +1 -1
- package/dist/customization/build-customization-data.js +1 -4
- package/dist/customization/build-customization-data.js.map +1 -1
- package/dist/customization/colors.js +11 -14
- package/dist/customization/colors.js.map +1 -1
- package/dist/customization/customization.js +8 -11
- package/dist/customization/customization.js.map +1 -1
- package/dist/customization/links.js +7 -10
- package/dist/customization/links.js.map +1 -1
- package/dist/device/device-data.js +7 -10
- package/dist/device/device-data.js.map +1 -1
- package/dist/device/device-id.js +11 -16
- package/dist/device/device-id.js.map +1 -1
- package/dist/device/device-manager.js +32 -38
- package/dist/device/device-manager.js.map +1 -1
- package/dist/device/device-store.js +7 -25
- package/dist/device/device-store.js.map +1 -1
- package/dist/device/session-id.js +9 -13
- package/dist/device/session-id.js.map +1 -1
- package/dist/dpop/dpop-manager.d.ts +3 -3
- package/dist/dpop/dpop-manager.js +38 -43
- package/dist/dpop/dpop-manager.js.map +1 -1
- package/dist/dpop/dpop-nonce.d.ts +2 -2
- package/dist/dpop/dpop-nonce.d.ts.map +1 -1
- package/dist/dpop/dpop-nonce.js +14 -18
- package/dist/dpop/dpop-nonce.js.map +1 -1
- package/dist/dpop/dpop-proof.js +1 -2
- package/dist/errors/access-denied-error.js +2 -6
- package/dist/errors/access-denied-error.js.map +1 -1
- package/dist/errors/account-selection-required-error.js +2 -6
- package/dist/errors/account-selection-required-error.js.map +1 -1
- package/dist/errors/authorization-error.js +7 -12
- package/dist/errors/authorization-error.js.map +1 -1
- package/dist/errors/consent-required-error.js +2 -6
- package/dist/errors/consent-required-error.js.map +1 -1
- package/dist/errors/error-parser.js +14 -18
- package/dist/errors/error-parser.js.map +1 -1
- package/dist/errors/handle-unavailable-error.js +2 -7
- package/dist/errors/handle-unavailable-error.js.map +1 -1
- package/dist/errors/invalid-authorization-details-error.js +2 -6
- package/dist/errors/invalid-authorization-details-error.js.map +1 -1
- package/dist/errors/invalid-client-error.js +2 -6
- package/dist/errors/invalid-client-error.js.map +1 -1
- package/dist/errors/invalid-client-id-error.js +2 -6
- package/dist/errors/invalid-client-id-error.js.map +1 -1
- package/dist/errors/invalid-client-metadata-error.js +7 -11
- package/dist/errors/invalid-client-metadata-error.js.map +1 -1
- package/dist/errors/invalid-credentials-error.js +2 -7
- package/dist/errors/invalid-credentials-error.js.map +1 -1
- package/dist/errors/invalid-dpop-key-binding-error.js +2 -6
- package/dist/errors/invalid-dpop-key-binding-error.js.map +1 -1
- package/dist/errors/invalid-dpop-proof-error.js +2 -6
- package/dist/errors/invalid-dpop-proof-error.js.map +1 -1
- package/dist/errors/invalid-grant-error.js +2 -6
- package/dist/errors/invalid-grant-error.js.map +1 -1
- package/dist/errors/invalid-invite-code-error.d.ts +1 -1
- package/dist/errors/invalid-invite-code-error.d.ts.map +1 -1
- package/dist/errors/invalid-invite-code-error.js +2 -6
- package/dist/errors/invalid-invite-code-error.js.map +1 -1
- package/dist/errors/invalid-redirect-uri-error.js +2 -6
- package/dist/errors/invalid-redirect-uri-error.js.map +1 -1
- package/dist/errors/invalid-request-error.js +3 -7
- package/dist/errors/invalid-request-error.js.map +1 -1
- package/dist/errors/invalid-scope-error.js +2 -6
- package/dist/errors/invalid-scope-error.js.map +1 -1
- package/dist/errors/invalid-token-error.js +10 -15
- package/dist/errors/invalid-token-error.js.map +1 -1
- package/dist/errors/login-required-error.js +2 -6
- package/dist/errors/login-required-error.js.map +1 -1
- package/dist/errors/oauth-error.js +1 -9
- package/dist/errors/oauth-error.js.map +1 -1
- package/dist/errors/second-authentication-factor-required-error.js +2 -8
- package/dist/errors/second-authentication-factor-required-error.js.map +1 -1
- package/dist/errors/unauthorized-client-error.js +2 -6
- package/dist/errors/unauthorized-client-error.js.map +1 -1
- package/dist/errors/use-dpop-nonce-error.js +4 -8
- package/dist/errors/use-dpop-nonce-error.js.map +1 -1
- package/dist/errors/www-authenticate-error.js +4 -9
- package/dist/errors/www-authenticate-error.js.map +1 -1
- package/dist/index.js +14 -30
- package/dist/index.js.map +1 -1
- package/dist/lexicon/lexicon-data.js +1 -2
- package/dist/lexicon/lexicon-getter.js +6 -10
- package/dist/lexicon/lexicon-getter.js.map +1 -1
- package/dist/lexicon/lexicon-manager.js +10 -30
- package/dist/lexicon/lexicon-manager.js.map +1 -1
- package/dist/lexicon/lexicon-store.js +5 -10
- package/dist/lexicon/lexicon-store.js.map +1 -1
- package/dist/lib/csp/index.js +3 -8
- package/dist/lib/csp/index.js.map +1 -1
- package/dist/lib/hcaptcha.js +33 -43
- package/dist/lib/hcaptcha.js.map +1 -1
- package/dist/lib/html/build-document.js +19 -24
- package/dist/lib/html/build-document.js.map +1 -1
- package/dist/lib/html/escapers.js +10 -16
- package/dist/lib/html/escapers.js.map +1 -1
- package/dist/lib/html/html.js +1 -5
- package/dist/lib/html/html.js.map +1 -1
- package/dist/lib/html/hydration-data.js +6 -10
- package/dist/lib/html/hydration-data.js.map +1 -1
- package/dist/lib/html/index.js +3 -19
- package/dist/lib/html/index.js.map +1 -1
- package/dist/lib/html/tags.js +14 -23
- package/dist/lib/html/tags.js.map +1 -1
- package/dist/lib/html/util.js +1 -4
- package/dist/lib/html/util.js.map +1 -1
- package/dist/lib/http/accept.d.ts.map +1 -1
- package/dist/lib/http/accept.js +8 -8
- package/dist/lib/http/accept.js.map +1 -1
- package/dist/lib/http/context.js +1 -4
- package/dist/lib/http/context.js.map +1 -1
- package/dist/lib/http/headers.js +1 -4
- package/dist/lib/http/headers.js.map +1 -1
- package/dist/lib/http/index.js +10 -26
- package/dist/lib/http/index.js.map +1 -1
- package/dist/lib/http/method.js +1 -4
- package/dist/lib/http/method.js.map +1 -1
- package/dist/lib/http/middleware.js +11 -17
- package/dist/lib/http/middleware.js.map +1 -1
- package/dist/lib/http/parser.js +13 -20
- package/dist/lib/http/parser.js.map +1 -1
- package/dist/lib/http/path.js +1 -4
- package/dist/lib/http/path.js.map +1 -1
- package/dist/lib/http/request.d.ts.map +1 -1
- package/dist/lib/http/request.js +32 -47
- package/dist/lib/http/request.js.map +1 -1
- package/dist/lib/http/response.js +14 -27
- package/dist/lib/http/response.js.map +1 -1
- package/dist/lib/http/route.js +9 -12
- package/dist/lib/http/route.js.map +1 -1
- package/dist/lib/http/router.js +8 -13
- package/dist/lib/http/router.js.map +1 -1
- package/dist/lib/http/security-headers.js +10 -15
- package/dist/lib/http/security-headers.js.map +1 -1
- package/dist/lib/http/stream.js +12 -20
- package/dist/lib/http/stream.js.map +1 -1
- package/dist/lib/http/types.js +1 -2
- package/dist/lib/http/url.js +1 -4
- package/dist/lib/http/url.js.map +1 -1
- package/dist/lib/nsid.js +4 -8
- package/dist/lib/nsid.js.map +1 -1
- package/dist/lib/redis.js +4 -7
- package/dist/lib/redis.js.map +1 -1
- package/dist/lib/util/authorization-header.js +11 -15
- package/dist/lib/util/authorization-header.js.map +1 -1
- package/dist/lib/util/cast.js +3 -8
- package/dist/lib/util/cast.js.map +1 -1
- package/dist/lib/util/color.js +23 -32
- package/dist/lib/util/color.js.map +1 -1
- package/dist/lib/util/crypto.js +5 -10
- package/dist/lib/util/crypto.js.map +1 -1
- package/dist/lib/util/date.js +2 -6
- package/dist/lib/util/date.js.map +1 -1
- package/dist/lib/util/error.js +5 -8
- package/dist/lib/util/error.js.map +1 -1
- package/dist/lib/util/function.js +3 -8
- package/dist/lib/util/function.js.map +1 -1
- package/dist/lib/util/locale.js +3 -6
- package/dist/lib/util/locale.js.map +1 -1
- package/dist/lib/util/object.js +1 -4
- package/dist/lib/util/object.js.map +1 -1
- package/dist/lib/util/redirect-uri.js +3 -6
- package/dist/lib/util/redirect-uri.js.map +1 -1
- package/dist/lib/util/time.js +5 -9
- package/dist/lib/util/time.js.map +1 -1
- package/dist/lib/util/type.d.ts.map +1 -1
- package/dist/lib/util/type.js +1 -5
- package/dist/lib/util/type.js.map +1 -1
- package/dist/lib/util/ui8.js +3 -8
- package/dist/lib/util/ui8.js.map +1 -1
- package/dist/lib/util/well-known.js +1 -4
- package/dist/lib/util/well-known.js.map +1 -1
- package/dist/lib/util/zod-error.js +4 -8
- package/dist/lib/util/zod-error.js.map +1 -1
- package/dist/lib/write-form-redirect.js +9 -12
- package/dist/lib/write-form-redirect.js.map +1 -1
- package/dist/lib/write-html.js +12 -15
- package/dist/lib/write-html.js.map +1 -1
- package/dist/metadata/build-metadata.js +9 -12
- package/dist/metadata/build-metadata.js.map +1 -1
- package/dist/oauth-client.js +2 -18
- package/dist/oauth-client.js.map +1 -1
- package/dist/oauth-dpop.js +2 -18
- package/dist/oauth-dpop.js.map +1 -1
- package/dist/oauth-errors.js +24 -42
- package/dist/oauth-errors.js.map +1 -1
- package/dist/oauth-hooks.js +8 -15
- package/dist/oauth-hooks.js.map +1 -1
- package/dist/oauth-middleware.js +13 -16
- package/dist/oauth-middleware.js.map +1 -1
- package/dist/oauth-provider.js +108 -125
- package/dist/oauth-provider.js.map +1 -1
- package/dist/oauth-store.js +7 -23
- package/dist/oauth-store.js.map +1 -1
- package/dist/oauth-verifier.js +41 -53
- package/dist/oauth-verifier.js.map +1 -1
- package/dist/oidc/sub.js +2 -5
- package/dist/oidc/sub.js.map +1 -1
- package/dist/replay/replay-manager.js +6 -11
- package/dist/replay/replay-manager.js.map +1 -1
- package/dist/replay/replay-store-memory.js +5 -7
- package/dist/replay/replay-store-memory.js.map +1 -1
- package/dist/replay/replay-store-redis.js +3 -8
- package/dist/replay/replay-store-redis.js.map +1 -1
- package/dist/replay/replay-store.js +3 -8
- package/dist/replay/replay-store.js.map +1 -1
- package/dist/request/code.js +10 -15
- package/dist/request/code.js.map +1 -1
- package/dist/request/request-data.js +1 -5
- package/dist/request/request-data.js.map +1 -1
- package/dist/request/request-id.js +9 -13
- package/dist/request/request-id.js.map +1 -1
- package/dist/request/request-manager.js +61 -71
- package/dist/request/request-manager.js.map +1 -1
- package/dist/request/request-store.js +9 -27
- package/dist/request/request-store.js.map +1 -1
- package/dist/request/request-uri.js +17 -23
- package/dist/request/request-uri.js.map +1 -1
- package/dist/result/authorization-redirect-parameters.js +1 -2
- package/dist/result/authorization-result-authorize-page.js +1 -2
- package/dist/result/authorization-result-redirect.js +1 -2
- package/dist/router/assets/assets-manifest.d.ts.map +1 -1
- package/dist/router/assets/assets-manifest.js +14 -15
- package/dist/router/assets/assets-manifest.js.map +1 -1
- package/dist/router/assets/assets.d.ts.map +1 -1
- package/dist/router/assets/assets.js +25 -27
- package/dist/router/assets/assets.js.map +1 -1
- package/dist/router/assets/csrf.js +16 -25
- package/dist/router/assets/csrf.js.map +1 -1
- package/dist/router/assets/send-account-page.js +3 -6
- package/dist/router/assets/send-account-page.js.map +1 -1
- package/dist/router/assets/send-authorization-page.js +3 -6
- package/dist/router/assets/send-authorization-page.js.map +1 -1
- package/dist/router/assets/send-cookie-error-page.js +3 -6
- package/dist/router/assets/send-cookie-error-page.js.map +1 -1
- package/dist/router/assets/send-error-page.js +6 -9
- package/dist/router/assets/send-error-page.js.map +1 -1
- package/dist/router/assets/send-redirect.js +12 -20
- package/dist/router/assets/send-redirect.js.map +1 -1
- package/dist/router/create-account-page-middleware.js +11 -14
- package/dist/router/create-account-page-middleware.js.map +1 -1
- package/dist/router/create-api-middleware.js +83 -90
- package/dist/router/create-api-middleware.js.map +1 -1
- package/dist/router/create-authorization-page-middleware.js +43 -46
- package/dist/router/create-authorization-page-middleware.js.map +1 -1
- package/dist/router/create-oauth-middleware.js +31 -34
- package/dist/router/create-oauth-middleware.js.map +1 -1
- package/dist/router/error-handler.js +1 -2
- package/dist/router/middleware-options.js +1 -2
- package/dist/signer/access-token-payload.js +12 -15
- package/dist/signer/access-token-payload.js.map +1 -1
- package/dist/signer/api-token-payload.js +8 -11
- package/dist/signer/api-token-payload.js.map +1 -1
- package/dist/signer/signer.js +11 -17
- package/dist/signer/signer.js.map +1 -1
- package/dist/token/refresh-token.js +10 -15
- package/dist/token/refresh-token.js.map +1 -1
- package/dist/token/token-claims.js +1 -2
- package/dist/token/token-data.js +1 -2
- package/dist/token/token-id.js +10 -15
- package/dist/token/token-id.js.map +1 -1
- package/dist/token/token-manager.js +40 -51
- package/dist/token/token-manager.js.map +1 -1
- package/dist/token/token-store.js +7 -25
- package/dist/token/token-store.js.map +1 -1
- package/dist/types/authorization-response-error.js +8 -12
- package/dist/types/authorization-response-error.js.map +1 -1
- package/dist/types/color-hue.js +2 -5
- package/dist/types/color-hue.js.map +1 -1
- package/dist/types/email-otp.js +2 -5
- package/dist/types/email-otp.js.map +1 -1
- package/dist/types/email.js +6 -9
- package/dist/types/email.js.map +1 -1
- package/dist/types/handle.js +6 -9
- package/dist/types/handle.js.map +1 -1
- package/dist/types/invite-code.js +2 -5
- package/dist/types/invite-code.js.map +1 -1
- package/dist/types/par-response-error.js +5 -9
- package/dist/types/par-response-error.js.map +1 -1
- package/dist/types/password.js +3 -6
- package/dist/types/password.js.map +1 -1
- package/dist/types/rgb-color.js +7 -10
- package/dist/types/rgb-color.js.map +1 -1
- package/package.json +20 -22
- package/src/dpop/dpop-nonce.ts +1 -1
- package/src/errors/invalid-invite-code-error.ts +1 -1
- package/src/lib/http/accept.ts +4 -1
- package/src/lib/http/request.ts +4 -1
- package/src/lib/util/type.ts +0 -1
- package/src/router/assets/assets-manifest.ts +3 -1
- package/src/router/assets/assets.ts +2 -0
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invalid-dpop-proof-error.js","sourceRoot":"","sources":["../../src/errors/invalid-dpop-proof-error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"invalid-dpop-proof-error.js","sourceRoot":"","sources":["../../src/errors/invalid-dpop-proof-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAElE,MAAM,OAAO,qBAAsB,SAAQ,oBAAoB;IAC7D,YAAY,iBAAyB,EAAE,KAAe;QACpD,MAAM,KAAK,GAAG,oBAAoB,CAAA;QAClC,KAAK,CACH,KAAK,EACL,iBAAiB,EACjB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,EACtC,KAAK,CACN,CAAA;IACH,CAAC;CACF","sourcesContent":["import { WWWAuthenticateError } from './www-authenticate-error.js'\n\nexport class InvalidDpopProofError extends WWWAuthenticateError {\n constructor(error_description: string, cause?: unknown) {\n const error = 'invalid_dpop_proof'\n super(\n error,\n error_description,\n { DPoP: { error, error_description } },\n cause,\n )\n }\n}\n"]}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InvalidGrantError = void 0;
|
|
4
|
-
const oauth_error_js_1 = require("./oauth-error.js");
|
|
1
|
+
import { OAuthError } from './oauth-error.js';
|
|
5
2
|
/**
|
|
6
3
|
* @see
|
|
7
4
|
* {@link https://datatracker.ietf.org/doc/html/rfc6749#section-5.2 | RFC6749 - Issuing an Access Token }
|
|
@@ -11,7 +8,7 @@ const oauth_error_js_1 = require("./oauth-error.js");
|
|
|
11
8
|
* the redirection URI used in the authorization request, or was issued to
|
|
12
9
|
* another client.
|
|
13
10
|
*/
|
|
14
|
-
class InvalidGrantError extends
|
|
11
|
+
export class InvalidGrantError extends OAuthError {
|
|
15
12
|
constructor(error_description, cause) {
|
|
16
13
|
super('invalid_grant', error_description, 400, cause);
|
|
17
14
|
}
|
|
@@ -21,5 +18,4 @@ class InvalidGrantError extends oauth_error_js_1.OAuthError {
|
|
|
21
18
|
return new InvalidGrantError(error_description, err);
|
|
22
19
|
}
|
|
23
20
|
}
|
|
24
|
-
exports.InvalidGrantError = InvalidGrantError;
|
|
25
21
|
//# sourceMappingURL=invalid-grant-error.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invalid-grant-error.js","sourceRoot":"","sources":["../../src/errors/invalid-grant-error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"invalid-grant-error.js","sourceRoot":"","sources":["../../src/errors/invalid-grant-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C;;;;;;;;GAQG;AACH,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IAC/C,YAAY,iBAAyB,EAAE,KAAe;QACpD,KAAK,CAAC,eAAe,EAAE,iBAAiB,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;IACvD,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,GAAY,EAAE,iBAAyB;QACjD,IAAI,GAAG,YAAY,iBAAiB;YAAE,OAAO,GAAG,CAAA;QAChD,OAAO,IAAI,iBAAiB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAA;IACtD,CAAC;CACF","sourcesContent":["import { OAuthError } from './oauth-error.js'\n\n/**\n * @see\n * {@link https://datatracker.ietf.org/doc/html/rfc6749#section-5.2 | RFC6749 - Issuing an Access Token }\n *\n * The provided authorization grant (e.g., authorization code, resource owner\n * credentials) or refresh token is invalid, expired, revoked, does not match\n * the redirection URI used in the authorization request, or was issued to\n * another client.\n */\nexport class InvalidGrantError extends OAuthError {\n constructor(error_description: string, cause?: unknown) {\n super('invalid_grant', error_description, 400, cause)\n }\n\n static from(err: unknown, error_description: string): InvalidGrantError {\n if (err instanceof InvalidGrantError) return err\n return new InvalidGrantError(error_description, err)\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invalid-invite-code-error.d.ts","sourceRoot":"","sources":["../../src/errors/invalid-invite-code-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"invalid-invite-code-error.d.ts","sourceRoot":"","sources":["../../src/errors/invalid-invite-code-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAEhE,qBAAa,sBAAuB,SAAQ,mBAAmB;gBACjD,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAM9C"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.InvalidInviteCodeError = void 0;
|
|
4
|
-
const invalid_request_error_1 = require("./invalid-request-error");
|
|
5
|
-
class InvalidInviteCodeError extends invalid_request_error_1.InvalidRequestError {
|
|
1
|
+
import { InvalidRequestError } from './invalid-request-error.js';
|
|
2
|
+
export class InvalidInviteCodeError extends InvalidRequestError {
|
|
6
3
|
constructor(details, cause) {
|
|
7
4
|
super('This invite code is invalid.' + (details ? ` ${details}` : ''), cause);
|
|
8
5
|
}
|
|
9
6
|
}
|
|
10
|
-
exports.InvalidInviteCodeError = InvalidInviteCodeError;
|
|
11
7
|
//# sourceMappingURL=invalid-invite-code-error.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invalid-invite-code-error.js","sourceRoot":"","sources":["../../src/errors/invalid-invite-code-error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"invalid-invite-code-error.js","sourceRoot":"","sources":["../../src/errors/invalid-invite-code-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAEhE,MAAM,OAAO,sBAAuB,SAAQ,mBAAmB;IAC7D,YAAY,OAAgB,EAAE,KAAe;QAC3C,KAAK,CACH,8BAA8B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC/D,KAAK,CACN,CAAA;IACH,CAAC;CACF","sourcesContent":["import { InvalidRequestError } from './invalid-request-error.js'\n\nexport class InvalidInviteCodeError extends InvalidRequestError {\n constructor(details?: string, cause?: unknown) {\n super(\n 'This invite code is invalid.' + (details ? ` ${details}` : ''),\n cause,\n )\n }\n}\n"]}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InvalidRedirectUriError = void 0;
|
|
4
|
-
const oauth_error_js_1 = require("./oauth-error.js");
|
|
1
|
+
import { OAuthError } from './oauth-error.js';
|
|
5
2
|
/**
|
|
6
3
|
* @see {@link https://datatracker.ietf.org/doc/html/rfc7591#section-3.2.2 | RFC7591}
|
|
7
4
|
*
|
|
8
5
|
* The value of one or more redirection URIs is invalid.
|
|
9
6
|
*/
|
|
10
|
-
class InvalidRedirectUriError extends
|
|
7
|
+
export class InvalidRedirectUriError extends OAuthError {
|
|
11
8
|
constructor(error_description, cause) {
|
|
12
9
|
super('invalid_redirect_uri', error_description, 400, cause);
|
|
13
10
|
}
|
|
@@ -17,5 +14,4 @@ class InvalidRedirectUriError extends oauth_error_js_1.OAuthError {
|
|
|
17
14
|
return new InvalidRedirectUriError('Invalid redirect URI', cause);
|
|
18
15
|
}
|
|
19
16
|
}
|
|
20
|
-
exports.InvalidRedirectUriError = InvalidRedirectUriError;
|
|
21
17
|
//# sourceMappingURL=invalid-redirect-uri-error.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invalid-redirect-uri-error.js","sourceRoot":"","sources":["../../src/errors/invalid-redirect-uri-error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"invalid-redirect-uri-error.js","sourceRoot":"","sources":["../../src/errors/invalid-redirect-uri-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C;;;;GAIG;AACH,MAAM,OAAO,uBAAwB,SAAQ,UAAU;IACrD,YAAY,iBAAyB,EAAE,KAAe;QACpD,KAAK,CAAC,sBAAsB,EAAE,iBAAiB,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;IAC9D,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,KAAe;QACzB,IAAI,KAAK,YAAY,uBAAuB;YAAE,OAAO,KAAK,CAAA;QAC1D,OAAO,IAAI,uBAAuB,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAA;IACnE,CAAC;CACF","sourcesContent":["import { OAuthError } from './oauth-error.js'\n\n/**\n * @see {@link https://datatracker.ietf.org/doc/html/rfc7591#section-3.2.2 | RFC7591}\n *\n * The value of one or more redirection URIs is invalid.\n */\nexport class InvalidRedirectUriError extends OAuthError {\n constructor(error_description: string, cause?: unknown) {\n super('invalid_redirect_uri', error_description, 400, cause)\n }\n\n static from(cause?: unknown): InvalidRedirectUriError {\n if (cause instanceof InvalidRedirectUriError) return cause\n return new InvalidRedirectUriError('Invalid redirect URI', cause)\n }\n}\n"]}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InvalidRequestError = void 0;
|
|
4
|
-
const oauth_error_js_1 = require("./oauth-error.js");
|
|
1
|
+
import { OAuthError } from './oauth-error.js';
|
|
5
2
|
/**
|
|
6
3
|
* @see
|
|
7
4
|
* {@link https://datatracker.ietf.org/doc/html/rfc6749#section-5.2 | RFC6749 - Issuing an Access Token}
|
|
@@ -22,15 +19,14 @@ const oauth_error_js_1 = require("./oauth-error.js");
|
|
|
22
19
|
* method for including an access token, or is otherwise malformed. The resource
|
|
23
20
|
* server SHOULD respond with the HTTP 400 (Bad Request) status code.
|
|
24
21
|
*/
|
|
25
|
-
class InvalidRequestError extends
|
|
22
|
+
export class InvalidRequestError extends OAuthError {
|
|
26
23
|
constructor(error_description, cause) {
|
|
27
24
|
super('invalid_request', error_description, 400, cause);
|
|
28
25
|
}
|
|
29
26
|
static from(err, message = 'Invalid request data') {
|
|
30
|
-
if (err instanceof
|
|
27
|
+
if (err instanceof OAuthError)
|
|
31
28
|
return err;
|
|
32
29
|
return new InvalidRequestError(message, err);
|
|
33
30
|
}
|
|
34
31
|
}
|
|
35
|
-
exports.InvalidRequestError = InvalidRequestError;
|
|
36
32
|
//# sourceMappingURL=invalid-request-error.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invalid-request-error.js","sourceRoot":"","sources":["../../src/errors/invalid-request-error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"invalid-request-error.js","sourceRoot":"","sources":["../../src/errors/invalid-request-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,mBAAoB,SAAQ,UAAU;IACjD,YAAY,iBAAyB,EAAE,KAAe;QACpD,KAAK,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;IACzD,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,GAAY,EAAE,OAAO,GAAG,sBAAsB;QACxD,IAAI,GAAG,YAAY,UAAU;YAAE,OAAO,GAAG,CAAA;QACzC,OAAO,IAAI,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAC9C,CAAC;CACF","sourcesContent":["import { OAuthError } from './oauth-error.js'\n\n/**\n * @see\n * {@link https://datatracker.ietf.org/doc/html/rfc6749#section-5.2 | RFC6749 - Issuing an Access Token}\n * : The request is missing a required parameter, includes an unsupported\n * parameter value (other than grant type), repeats a parameter, includes\n * multiple credentials, utilizes more than one mechanism for authenticating the\n * client, or is otherwise malformed.\n *\n * @see\n * {@link https://datatracker.ietf.org/doc/html/rfc6749#section-4.1.2.1 | RFC6749 - Authorization Code Grant, Authorization Request}\n * : The request is missing a required parameter, includes an invalid parameter\n * value, includes a parameter more than once, or is otherwise malformed.\n *\n * @see\n * {@link https://datatracker.ietf.org/doc/html/rfc6750#section-3.1 | RFC6750 - The WWW-Authenticate Response Header Field}\n * : The request is missing a required parameter, includes an unsupported\n * parameter or parameter value, repeats the same parameter, uses more than one\n * method for including an access token, or is otherwise malformed. The resource\n * server SHOULD respond with the HTTP 400 (Bad Request) status code.\n */\nexport class InvalidRequestError extends OAuthError {\n constructor(error_description: string, cause?: unknown) {\n super('invalid_request', error_description, 400, cause)\n }\n\n static from(err: unknown, message = 'Invalid request data'): OAuthError {\n if (err instanceof OAuthError) return err\n return new InvalidRequestError(message, err)\n }\n}\n"]}
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InvalidScopeError = void 0;
|
|
4
|
-
const authorization_error_js_1 = require("./authorization-error.js");
|
|
1
|
+
import { AuthorizationError } from './authorization-error.js';
|
|
5
2
|
/**
|
|
6
3
|
* @see {@link https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-11#section-4.1.2.1}
|
|
7
4
|
*/
|
|
8
|
-
class InvalidScopeError extends
|
|
5
|
+
export class InvalidScopeError extends AuthorizationError {
|
|
9
6
|
constructor(parameters, error_description, cause) {
|
|
10
7
|
super(parameters, error_description, 'invalid_scope', cause);
|
|
11
8
|
}
|
|
12
9
|
}
|
|
13
|
-
exports.InvalidScopeError = InvalidScopeError;
|
|
14
10
|
//# sourceMappingURL=invalid-scope-error.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invalid-scope-error.js","sourceRoot":"","sources":["../../src/errors/invalid-scope-error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"invalid-scope-error.js","sourceRoot":"","sources":["../../src/errors/invalid-scope-error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAE7D;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,kBAAkB;IACvD,YACE,UAA+C,EAC/C,iBAAyB,EACzB,KAAe;QAEf,KAAK,CAAC,UAAU,EAAE,iBAAiB,EAAE,eAAe,EAAE,KAAK,CAAC,CAAA;IAC9D,CAAC;CACF","sourcesContent":["import { OAuthAuthorizationRequestParameters } from '@atproto/oauth-types'\nimport { AuthorizationError } from './authorization-error.js'\n\n/**\n * @see {@link https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-11#section-4.1.2.1}\n */\nexport class InvalidScopeError extends AuthorizationError {\n constructor(\n parameters: OAuthAuthorizationRequestParameters,\n error_description: string,\n cause?: unknown,\n ) {\n super(parameters, error_description, 'invalid_scope', cause)\n }\n}\n"]}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const oauth_error_js_1 = require("./oauth-error.js");
|
|
8
|
-
const www_authenticate_error_js_1 = require("./www-authenticate-error.js");
|
|
9
|
-
const { JOSEError } = jose_1.errors;
|
|
1
|
+
import { errors } from 'jose';
|
|
2
|
+
import { ZodError } from 'zod';
|
|
3
|
+
import { JwtVerifyError } from '@atproto/jwk';
|
|
4
|
+
import { OAuthError } from './oauth-error.js';
|
|
5
|
+
import { WWWAuthenticateError } from './www-authenticate-error.js';
|
|
6
|
+
const { JOSEError } = errors;
|
|
10
7
|
/**
|
|
11
8
|
* @see
|
|
12
9
|
* {@link https://datatracker.ietf.org/doc/html/rfc6750#section-3.1 | RFC6750 - The WWW-Authenticate Response Header Field }
|
|
@@ -16,22 +13,21 @@ const { JOSEError } = jose_1.errors;
|
|
|
16
13
|
* status code. The client MAY request a new access token and retry the
|
|
17
14
|
* protected resource request.
|
|
18
15
|
*/
|
|
19
|
-
class InvalidTokenError extends
|
|
20
|
-
tokenType;
|
|
16
|
+
export class InvalidTokenError extends WWWAuthenticateError {
|
|
21
17
|
static from(err, tokenType, fallbackMessage = 'Invalid token') {
|
|
22
18
|
if (err instanceof InvalidTokenError) {
|
|
23
19
|
return err;
|
|
24
20
|
}
|
|
25
|
-
if (err instanceof
|
|
21
|
+
if (err instanceof OAuthError) {
|
|
26
22
|
return new InvalidTokenError(tokenType, err.error_description, err);
|
|
27
23
|
}
|
|
28
24
|
if (err instanceof JOSEError) {
|
|
29
25
|
return new InvalidTokenError(tokenType, err.message, err);
|
|
30
26
|
}
|
|
31
|
-
if (err instanceof
|
|
27
|
+
if (err instanceof JwtVerifyError) {
|
|
32
28
|
return new InvalidTokenError(tokenType, err.message, err);
|
|
33
29
|
}
|
|
34
|
-
if (err instanceof
|
|
30
|
+
if (err instanceof ZodError) {
|
|
35
31
|
return new InvalidTokenError(tokenType, err.message, err);
|
|
36
32
|
}
|
|
37
33
|
return new InvalidTokenError(tokenType, fallbackMessage, err);
|
|
@@ -42,5 +38,4 @@ class InvalidTokenError extends www_authenticate_error_js_1.WWWAuthenticateError
|
|
|
42
38
|
this.tokenType = tokenType;
|
|
43
39
|
}
|
|
44
40
|
}
|
|
45
|
-
exports.InvalidTokenError = InvalidTokenError;
|
|
46
41
|
//# sourceMappingURL=invalid-token-error.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invalid-token-error.js","sourceRoot":"","sources":["../../src/errors/invalid-token-error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"invalid-token-error.js","sourceRoot":"","sources":["../../src/errors/invalid-token-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAA;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAElE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAA;AAE5B;;;;;;;;GAQG;AACH,MAAM,OAAO,iBAAkB,SAAQ,oBAAoB;IACzD,MAAM,CAAC,IAAI,CACT,GAAY,EACZ,SAAiB,EACjB,eAAe,GAAG,eAAe;QAEjC,IAAI,GAAG,YAAY,iBAAiB,EAAE,CAAC;YACrC,OAAO,GAAG,CAAA;QACZ,CAAC;QAED,IAAI,GAAG,YAAY,UAAU,EAAE,CAAC;YAC9B,OAAO,IAAI,iBAAiB,CAAC,SAAS,EAAE,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAA;QACrE,CAAC;QAED,IAAI,GAAG,YAAY,SAAS,EAAE,CAAC;YAC7B,OAAO,IAAI,iBAAiB,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QAC3D,CAAC;QAED,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;YAClC,OAAO,IAAI,iBAAiB,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QAC3D,CAAC;QAED,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YAC5B,OAAO,IAAI,iBAAiB,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QAC3D,CAAC;QAED,OAAO,IAAI,iBAAiB,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,CAAC,CAAA;IAC/D,CAAC;IAED,YACW,SAAiB,EAC1B,iBAAyB,EACzB,KAAe;QAEf,MAAM,KAAK,GAAG,eAAe,CAAA;QAC7B,KAAK,CACH,KAAK,EACL,iBAAiB,EACjB,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,EAC7C,KAAK,CACN,CAAA;QAVQ,cAAS,GAAT,SAAS,CAAQ;IAW5B,CAAC;CACF","sourcesContent":["import { errors } from 'jose'\nimport { ZodError } from 'zod'\nimport { JwtVerifyError } from '@atproto/jwk'\nimport { OAuthError } from './oauth-error.js'\nimport { WWWAuthenticateError } from './www-authenticate-error.js'\n\nconst { JOSEError } = errors\n\n/**\n * @see\n * {@link https://datatracker.ietf.org/doc/html/rfc6750#section-3.1 | RFC6750 - The WWW-Authenticate Response Header Field }\n *\n * The access token provided is expired, revoked, malformed, or invalid for\n * other reasons. The resource SHOULD respond with the HTTP 401 (Unauthorized)\n * status code. The client MAY request a new access token and retry the\n * protected resource request.\n */\nexport class InvalidTokenError extends WWWAuthenticateError {\n static from(\n err: unknown,\n tokenType: string,\n fallbackMessage = 'Invalid token',\n ): InvalidTokenError {\n if (err instanceof InvalidTokenError) {\n return err\n }\n\n if (err instanceof OAuthError) {\n return new InvalidTokenError(tokenType, err.error_description, err)\n }\n\n if (err instanceof JOSEError) {\n return new InvalidTokenError(tokenType, err.message, err)\n }\n\n if (err instanceof JwtVerifyError) {\n return new InvalidTokenError(tokenType, err.message, err)\n }\n\n if (err instanceof ZodError) {\n return new InvalidTokenError(tokenType, err.message, err)\n }\n\n return new InvalidTokenError(tokenType, fallbackMessage, err)\n }\n\n constructor(\n readonly tokenType: string,\n error_description: string,\n cause?: unknown,\n ) {\n const error = 'invalid_token'\n super(\n error,\n error_description,\n { [tokenType]: { error, error_description } },\n cause,\n )\n }\n}\n"]}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.LoginRequiredError = void 0;
|
|
4
|
-
const authorization_error_js_1 = require("./authorization-error.js");
|
|
5
|
-
class LoginRequiredError extends authorization_error_js_1.AuthorizationError {
|
|
1
|
+
import { AuthorizationError } from './authorization-error.js';
|
|
2
|
+
export class LoginRequiredError extends AuthorizationError {
|
|
6
3
|
constructor(parameters, error_description = 'Login is required', cause) {
|
|
7
4
|
super(parameters, error_description, 'login_required', cause);
|
|
8
5
|
}
|
|
9
6
|
}
|
|
10
|
-
exports.LoginRequiredError = LoginRequiredError;
|
|
11
7
|
//# sourceMappingURL=login-required-error.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login-required-error.js","sourceRoot":"","sources":["../../src/errors/login-required-error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"login-required-error.js","sourceRoot":"","sources":["../../src/errors/login-required-error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAE7D,MAAM,OAAO,kBAAmB,SAAQ,kBAAkB;IACxD,YACE,UAA+C,EAC/C,iBAAiB,GAAG,mBAAmB,EACvC,KAAe;QAEf,KAAK,CAAC,UAAU,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAA;IAC/D,CAAC;CACF","sourcesContent":["import { OAuthAuthorizationRequestParameters } from '@atproto/oauth-types'\nimport { AuthorizationError } from './authorization-error.js'\n\nexport class LoginRequiredError extends AuthorizationError {\n constructor(\n parameters: OAuthAuthorizationRequestParameters,\n error_description = 'Login is required',\n cause?: unknown,\n ) {\n super(parameters, error_description, 'login_required', cause)\n }\n}\n"]}
|
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OAuthError = void 0;
|
|
4
|
-
class OAuthError extends Error {
|
|
5
|
-
error;
|
|
6
|
-
error_description;
|
|
7
|
-
status;
|
|
8
|
-
expose;
|
|
1
|
+
export class OAuthError extends Error {
|
|
9
2
|
constructor(error, error_description, status = 400, cause) {
|
|
10
3
|
super(error_description, { cause });
|
|
11
4
|
this.error = error;
|
|
@@ -25,5 +18,4 @@ class OAuthError extends Error {
|
|
|
25
18
|
};
|
|
26
19
|
}
|
|
27
20
|
}
|
|
28
|
-
exports.OAuthError = OAuthError;
|
|
29
21
|
//# sourceMappingURL=oauth-error.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-error.js","sourceRoot":"","sources":["../../src/errors/oauth-error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oauth-error.js","sourceRoot":"","sources":["../../src/errors/oauth-error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAW,SAAQ,KAAK;IAGnC,YACkB,KAAa,EACb,iBAAyB,EACzB,SAAS,GAAG,EAC5B,KAAe;QAEf,KAAK,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QALnB,UAAK,GAAL,KAAK,CAAQ;QACb,sBAAiB,GAAjB,iBAAiB,CAAQ;QACzB,WAAM,GAAN,MAAM,CAAM;QAK5B,KAAK,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;QAEjD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,GAAG,CAAA;IAC5B,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,MAAM;QACJ,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C,CAAA;IACH,CAAC;CACF","sourcesContent":["export class OAuthError extends Error {\n public expose: boolean\n\n constructor(\n public readonly error: string,\n public readonly error_description: string,\n public readonly status = 400,\n cause?: unknown,\n ) {\n super(error_description, { cause })\n\n Error.captureStackTrace?.(this, this.constructor)\n\n this.name = this.constructor.name\n this.expose = status < 500\n }\n\n get statusCode() {\n return this.status\n }\n\n toJSON() {\n return {\n error: this.error,\n error_description: this.error_description,\n }\n }\n}\n"]}
|
|
@@ -1,10 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.SecondAuthenticationFactorRequiredError = void 0;
|
|
4
|
-
const oauth_error_js_1 = require("./oauth-error.js");
|
|
5
|
-
class SecondAuthenticationFactorRequiredError extends oauth_error_js_1.OAuthError {
|
|
6
|
-
type;
|
|
7
|
-
hint;
|
|
1
|
+
import { OAuthError } from './oauth-error.js';
|
|
2
|
+
export class SecondAuthenticationFactorRequiredError extends OAuthError {
|
|
8
3
|
constructor(type, hint, cause) {
|
|
9
4
|
const error = 'second_authentication_factor_required';
|
|
10
5
|
super(error, `${type} authentication factor required (hint: ${hint})`, 401, cause);
|
|
@@ -19,5 +14,4 @@ class SecondAuthenticationFactorRequiredError extends oauth_error_js_1.OAuthErro
|
|
|
19
14
|
};
|
|
20
15
|
}
|
|
21
16
|
}
|
|
22
|
-
exports.SecondAuthenticationFactorRequiredError = SecondAuthenticationFactorRequiredError;
|
|
23
17
|
//# sourceMappingURL=second-authentication-factor-required-error.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"second-authentication-factor-required-error.js","sourceRoot":"","sources":["../../src/errors/second-authentication-factor-required-error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"second-authentication-factor-required-error.js","sourceRoot":"","sources":["../../src/errors/second-authentication-factor-required-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,MAAM,OAAO,uCAAwC,SAAQ,UAAU;IACrE,YACS,IAAgB,EAChB,IAAY,EACnB,KAAe;QAEf,MAAM,KAAK,GAAG,uCAAuC,CAAA;QACrD,KAAK,CACH,KAAK,EACL,GAAG,IAAI,0CAA0C,IAAI,GAAG,EACxD,GAAG,EACH,KAAK,CACN,CAAA;QAVM,SAAI,GAAJ,IAAI,CAAY;QAChB,SAAI,GAAJ,IAAI,CAAQ;IAUrB,CAAC;IAED,MAAM;QACJ,OAAO;YACL,GAAG,KAAK,CAAC,MAAM,EAAE;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;SACP,CAAA;IACZ,CAAC;CACF","sourcesContent":["import { OAuthError } from './oauth-error.js'\n\nexport class SecondAuthenticationFactorRequiredError extends OAuthError {\n constructor(\n public type: 'emailOtp',\n public hint: string,\n cause?: unknown,\n ) {\n const error = 'second_authentication_factor_required'\n super(\n error,\n `${type} authentication factor required (hint: ${hint})`,\n 401,\n cause,\n )\n }\n\n toJSON() {\n return {\n ...super.toJSON(),\n type: this.type,\n hint: this.hint,\n } as const\n }\n}\n"]}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UnauthorizedClientError = void 0;
|
|
4
|
-
const oauth_error_js_1 = require("./oauth-error.js");
|
|
1
|
+
import { OAuthError } from './oauth-error.js';
|
|
5
2
|
/**
|
|
6
3
|
* @see
|
|
7
4
|
* {@link https://datatracker.ietf.org/doc/html/rfc6749#section-5.2 | RFC6749 - Issuing an Access Token }
|
|
@@ -15,10 +12,9 @@ const oauth_error_js_1 = require("./oauth-error.js");
|
|
|
15
12
|
* The client is not authorized to request an authorization code using this
|
|
16
13
|
* method.
|
|
17
14
|
*/
|
|
18
|
-
class UnauthorizedClientError extends
|
|
15
|
+
export class UnauthorizedClientError extends OAuthError {
|
|
19
16
|
constructor(error_description, cause) {
|
|
20
17
|
super('unauthorized_client', error_description, 400, cause);
|
|
21
18
|
}
|
|
22
19
|
}
|
|
23
|
-
exports.UnauthorizedClientError = UnauthorizedClientError;
|
|
24
20
|
//# sourceMappingURL=unauthorized-client-error.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unauthorized-client-error.js","sourceRoot":"","sources":["../../src/errors/unauthorized-client-error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"unauthorized-client-error.js","sourceRoot":"","sources":["../../src/errors/unauthorized-client-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,uBAAwB,SAAQ,UAAU;IACrD,YAAY,iBAAyB,EAAE,KAAe;QACpD,KAAK,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;IAC7D,CAAC;CACF","sourcesContent":["import { OAuthError } from './oauth-error.js'\n\n/**\n * @see\n * {@link https://datatracker.ietf.org/doc/html/rfc6749#section-5.2 | RFC6749 - Issuing an Access Token }\n *\n * The authenticated client is not authorized to use this authorization grant\n * type.\n *\n * @see\n * {@link https://datatracker.ietf.org/doc/html/rfc6749#section-4.1.2.1 | RFC6749 - Authorization Code Grant, Authorization Request}\n *\n * The client is not authorized to request an authorization code using this\n * method.\n */\nexport class UnauthorizedClientError extends OAuthError {\n constructor(error_description: string, cause?: unknown) {\n super('unauthorized_client', error_description, 400, cause)\n }\n}\n"]}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.UseDpopNonceError = void 0;
|
|
4
|
-
const oauth_error_js_1 = require("./oauth-error.js");
|
|
5
|
-
const www_authenticate_error_js_1 = require("./www-authenticate-error.js");
|
|
1
|
+
import { OAuthError } from './oauth-error.js';
|
|
2
|
+
import { WWWAuthenticateError } from './www-authenticate-error.js';
|
|
6
3
|
/**
|
|
7
4
|
* @see
|
|
8
5
|
* {@link https://datatracker.ietf.org/doc/html/rfc9449#section-8 | RFC9449 - Section 8. Authorization Server-Provided Nonce}
|
|
9
6
|
*/
|
|
10
|
-
class UseDpopNonceError extends
|
|
7
|
+
export class UseDpopNonceError extends OAuthError {
|
|
11
8
|
constructor(error_description = 'Authorization server requires nonce in DPoP proof', cause) {
|
|
12
9
|
super('use_dpop_nonce', error_description, 400, cause);
|
|
13
10
|
}
|
|
@@ -20,8 +17,7 @@ class UseDpopNonceError extends oauth_error_js_1.OAuthError {
|
|
|
20
17
|
*/
|
|
21
18
|
toWwwAuthenticateError() {
|
|
22
19
|
const { error, error_description } = this;
|
|
23
|
-
return new
|
|
20
|
+
return new WWWAuthenticateError(error, error_description, { DPoP: { error, error_description } }, this);
|
|
24
21
|
}
|
|
25
22
|
}
|
|
26
|
-
exports.UseDpopNonceError = UseDpopNonceError;
|
|
27
23
|
//# sourceMappingURL=use-dpop-nonce-error.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-dpop-nonce-error.js","sourceRoot":"","sources":["../../src/errors/use-dpop-nonce-error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-dpop-nonce-error.js","sourceRoot":"","sources":["../../src/errors/use-dpop-nonce-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAElE;;;GAGG;AACH,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IAC/C,YACE,iBAAiB,GAAG,mDAAmD,EACvE,KAAe;QAEf,KAAK,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;IACxD,CAAC;IAED;;;;;;OAMG;IACH,sBAAsB;QACpB,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAA;QACzC,OAAO,IAAI,oBAAoB,CAC7B,KAAK,EACL,iBAAiB,EACjB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,EACtC,IAAI,CACL,CAAA;IACH,CAAC;CACF","sourcesContent":["import { OAuthError } from './oauth-error.js'\nimport { WWWAuthenticateError } from './www-authenticate-error.js'\n\n/**\n * @see\n * {@link https://datatracker.ietf.org/doc/html/rfc9449#section-8 | RFC9449 - Section 8. Authorization Server-Provided Nonce}\n */\nexport class UseDpopNonceError extends OAuthError {\n constructor(\n error_description = 'Authorization server requires nonce in DPoP proof',\n cause?: unknown,\n ) {\n super('use_dpop_nonce', error_description, 400, cause)\n }\n\n /**\n * Convert this error into an error meant to be used as \"Resource\n * Server-Provided Nonce\" error.\n *\n * @see\n * {@link https://datatracker.ietf.org/doc/html/rfc9449#section-9 | RFC9449 - Section 9. Resource Server-Provided Nonce}\n */\n toWwwAuthenticateError(): WWWAuthenticateError {\n const { error, error_description } = this\n return new WWWAuthenticateError(\n error,\n error_description,\n { DPoP: { error, error_description } },\n this,\n )\n }\n}\n"]}
|
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const crypto_js_1 = require("../lib/util/crypto.js");
|
|
5
|
-
const oauth_error_js_1 = require("./oauth-error.js");
|
|
6
|
-
class WWWAuthenticateError extends oauth_error_js_1.OAuthError {
|
|
7
|
-
wwwAuthenticate;
|
|
1
|
+
import { VERIFY_ALGOS } from '../lib/util/crypto.js';
|
|
2
|
+
import { OAuthError } from './oauth-error.js';
|
|
3
|
+
export class WWWAuthenticateError extends OAuthError {
|
|
8
4
|
constructor(error, error_description, wwwAuthenticate, cause) {
|
|
9
5
|
super(error, error_description, 401, cause);
|
|
10
6
|
this.wwwAuthenticate =
|
|
11
7
|
wwwAuthenticate['DPoP'] != null
|
|
12
8
|
? {
|
|
13
9
|
...wwwAuthenticate,
|
|
14
|
-
DPoP: { algs:
|
|
10
|
+
DPoP: { algs: VERIFY_ALGOS.join(' '), ...wwwAuthenticate['DPoP'] },
|
|
15
11
|
}
|
|
16
12
|
: wwwAuthenticate;
|
|
17
13
|
}
|
|
@@ -19,7 +15,6 @@ class WWWAuthenticateError extends oauth_error_js_1.OAuthError {
|
|
|
19
15
|
return formatWWWAuthenticateHeader(this.wwwAuthenticate);
|
|
20
16
|
}
|
|
21
17
|
}
|
|
22
|
-
exports.WWWAuthenticateError = WWWAuthenticateError;
|
|
23
18
|
function formatWWWAuthenticateHeader(wwwAuthenticate) {
|
|
24
19
|
return Object.entries(wwwAuthenticate)
|
|
25
20
|
.filter(isWWWAuthenticateEntry)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"www-authenticate-error.js","sourceRoot":"","sources":["../../src/errors/www-authenticate-error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"www-authenticate-error.js","sourceRoot":"","sources":["../../src/errors/www-authenticate-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAK7C,MAAM,OAAO,oBAAqB,SAAQ,UAAU;IAGlD,YACE,KAAa,EACb,iBAAyB,EACzB,eAAgC,EAChC,KAAe;QAEf,KAAK,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;QAE3C,IAAI,CAAC,eAAe;YAClB,eAAe,CAAC,MAAM,CAAC,IAAI,IAAI;gBAC7B,CAAC,CAAC;oBACE,GAAG,eAAe;oBAClB,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,EAAE;iBACnE;gBACH,CAAC,CAAC,eAAe,CAAA;IACvB,CAAC;IAED,IAAI,qBAAqB;QACvB,OAAO,2BAA2B,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IAC1D,CAAC;CACF;AAED,SAAS,2BAA2B,CAAC,eAAgC;IACnE,OAAO,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;SACnC,MAAM,CAAC,sBAAsB,CAAC;SAC9B,GAAG,CAAC,4BAA4B,CAAC;SACjC,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC;AAGD,SAAS,sBAAsB,CAC7B,KAAwB;IAExB,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,CAAA;IACvB,OAAO,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAA;AACnD,CAAC;AAED,SAAS,4BAA4B,CAAC,CAAC,IAAI,EAAE,MAAM,CAAuB;IACxE,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SACrC,MAAM,CAAC,YAAY,CAAC;SACpB,GAAG,CAAC,kBAAkB,CAAC,CAAA;IAE1B,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AACpE,CAAC;AAID,SAAS,YAAY,CAAC,KAAwB;IAC5C,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,CAAA;IACvB,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAC1E,CAAC;AAED,SAAS,kBAAkB,CAAC,CAAC,IAAI,EAAE,KAAK,CAAa;IACnD,OAAO,GAAG,IAAI,KAAK,KAAK,GAAG,CAAA;AAC7B,CAAC","sourcesContent":["import { VERIFY_ALGOS } from '../lib/util/crypto.js'\nimport { OAuthError } from './oauth-error.js'\n\nexport type WWWAuthenticateParams = Record<string, string | undefined>\nexport type WWWAuthenticate = Record<string, undefined | WWWAuthenticateParams>\n\nexport class WWWAuthenticateError extends OAuthError {\n public readonly wwwAuthenticate: WWWAuthenticate\n\n constructor(\n error: string,\n error_description: string,\n wwwAuthenticate: WWWAuthenticate,\n cause?: unknown,\n ) {\n super(error, error_description, 401, cause)\n\n this.wwwAuthenticate =\n wwwAuthenticate['DPoP'] != null\n ? {\n ...wwwAuthenticate,\n DPoP: { algs: VERIFY_ALGOS.join(' '), ...wwwAuthenticate['DPoP'] },\n }\n : wwwAuthenticate\n }\n\n get wwwAuthenticateHeader() {\n return formatWWWAuthenticateHeader(this.wwwAuthenticate)\n }\n}\n\nfunction formatWWWAuthenticateHeader(wwwAuthenticate: WWWAuthenticate): string {\n return Object.entries(wwwAuthenticate)\n .filter(isWWWAuthenticateEntry)\n .map(wwwAuthenticateEntryToString)\n .join(', ')\n}\n\ntype WWWAuthenticateEntry = [type: string, params: WWWAuthenticateParams]\nfunction isWWWAuthenticateEntry(\n entry: [string, unknown],\n): entry is WWWAuthenticateEntry {\n const [, value] = entry\n return value != null && typeof value === 'object'\n}\n\nfunction wwwAuthenticateEntryToString([type, params]: WWWAuthenticateEntry) {\n const paramsEnc = Object.entries(params)\n .filter(isParamEntry)\n .map(paramEntryToString)\n\n return paramsEnc.length ? `${type} ${paramsEnc.join(', ')}` : type\n}\n\ntype ParamEntry = [name: string, value: string]\n\nfunction isParamEntry(entry: [string, unknown]): entry is ParamEntry {\n const [, value] = entry\n return typeof value === 'string' && value !== '' && !value.includes('\"')\n}\n\nfunction paramEntryToString([name, value]: ParamEntry): string {\n return `${name}=\"${value}\"`\n}\n"]}
|
package/dist/index.js
CHANGED
|
@@ -1,32 +1,16 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
1
|
// Avoid having to explicitly depend sub dependencies
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
2
|
+
export * from '@atproto-labs/fetch';
|
|
3
|
+
export * from '@atproto-labs/fetch-node';
|
|
4
|
+
export * from '@atproto/jwk';
|
|
5
|
+
export * from '@atproto/jwk-jose';
|
|
6
|
+
export * from '@atproto/oauth-types';
|
|
7
|
+
export * from './constants.js';
|
|
8
|
+
export * from './oauth-client.js';
|
|
9
|
+
export * from './oauth-dpop.js';
|
|
10
|
+
export * from './oauth-errors.js';
|
|
11
|
+
export * from './oauth-hooks.js';
|
|
12
|
+
export * from './oauth-middleware.js';
|
|
13
|
+
export * from './oauth-provider.js';
|
|
14
|
+
export * from './oauth-store.js';
|
|
15
|
+
export * from './oauth-verifier.js';
|
|
32
16
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,cAAc,qBAAqB,CAAA;AACnC,cAAc,0BAA0B,CAAA;AACxC,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AAEpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA","sourcesContent":["// Avoid having to explicitly depend sub dependencies\nexport * from '@atproto-labs/fetch'\nexport * from '@atproto-labs/fetch-node'\nexport * from '@atproto/jwk'\nexport * from '@atproto/jwk-jose'\nexport * from '@atproto/oauth-types'\n\nexport * from './constants.js'\nexport * from './oauth-client.js'\nexport * from './oauth-dpop.js'\nexport * from './oauth-errors.js'\nexport * from './oauth-hooks.js'\nexport * from './oauth-middleware.js'\nexport * from './oauth-provider.js'\nexport * from './oauth-store.js'\nexport * from './oauth-verifier.js'\n"]}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const lex_resolver_1 = require("@atproto/lex-resolver");
|
|
5
|
-
const simple_store_1 = require("@atproto-labs/simple-store");
|
|
6
|
-
const constants_js_1 = require("../constants.js");
|
|
1
|
+
import { LexResolverError } from '@atproto/lex-resolver';
|
|
2
|
+
import { CachedGetter } from '@atproto-labs/simple-store';
|
|
3
|
+
import { LEXICON_REFRESH_FREQUENCY } from '../constants.js';
|
|
7
4
|
/**
|
|
8
5
|
* This utility class handles the retrieval and caching of lexicon
|
|
9
6
|
* data. In particular, it handles failed retrieval attempts by returning cached
|
|
@@ -11,7 +8,7 @@ const constants_js_1 = require("../constants.js");
|
|
|
11
8
|
*
|
|
12
9
|
* @private
|
|
13
10
|
*/
|
|
14
|
-
class LexiconGetter extends
|
|
11
|
+
export class LexiconGetter extends CachedGetter {
|
|
15
12
|
constructor(store, lexResolver) {
|
|
16
13
|
super(async (input, options, storedData) => {
|
|
17
14
|
const now = new Date();
|
|
@@ -20,7 +17,7 @@ class LexiconGetter extends simple_store_1.CachedGetter {
|
|
|
20
17
|
// "null" values here to avoid hammering the resolver with requests
|
|
21
18
|
// for the same lexicon that is known to be unavailable. The getter
|
|
22
19
|
// should be called again based on the isStale() function below.
|
|
23
|
-
if (err instanceof
|
|
20
|
+
if (err instanceof LexResolverError)
|
|
24
21
|
return undefined;
|
|
25
22
|
// Unexpected error are propagated
|
|
26
23
|
throw err;
|
|
@@ -43,10 +40,9 @@ class LexiconGetter extends simple_store_1.CachedGetter {
|
|
|
43
40
|
}, {
|
|
44
41
|
isStale: (nsid, data) => {
|
|
45
42
|
const timeSinceLastUpdate = Date.now() - data.updatedAt.getTime();
|
|
46
|
-
return timeSinceLastUpdate >=
|
|
43
|
+
return timeSinceLastUpdate >= LEXICON_REFRESH_FREQUENCY;
|
|
47
44
|
},
|
|
48
45
|
});
|
|
49
46
|
}
|
|
50
47
|
}
|
|
51
|
-
exports.LexiconGetter = LexiconGetter;
|
|
52
48
|
//# sourceMappingURL=lexicon-getter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lexicon-getter.js","sourceRoot":"","sources":["../../src/lexicon/lexicon-getter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lexicon-getter.js","sourceRoot":"","sources":["../../src/lexicon/lexicon-getter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAErE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAG3D;;;;;;GAMG;AACH,MAAM,OAAO,aAAc,SAAQ,YAA+B;IAChE,YAAY,KAAmB,EAAE,WAAwB;QACvD,KAAK,CACH,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE;YACnC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;YACtB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACjE,kEAAkE;gBAClE,mEAAmE;gBACnE,mEAAmE;gBACnE,gEAAgE;gBAChE,IAAI,GAAG,YAAY,gBAAgB;oBAAE,OAAO,SAAS,CAAA;gBAErD,kCAAkC;gBAClC,MAAM,GAAG,CAAA;YACX,CAAC,CAAC,CAAA;YAEF,OAAO;gBACL,wCAAwC;gBACxC,SAAS,EAAE,UAAU,EAAE,SAAS,IAAI,GAAG;gBACvC,0BAA0B;gBAC1B,SAAS,EAAE,GAAG;gBACd,gEAAgE;gBAChE,6BAA6B;gBAC7B,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,eAAe,IAAI,IAAI;gBACnE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,IAAI,IAAI;gBAC7D,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,IAAI,IAAI;aAC/D,CAAA;QACH,CAAC,EACD;YACE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC;YACzD,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,SAAS;YACjE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC;SAC/C,EACD;YACE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;gBACtB,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA;gBACjE,OAAO,mBAAmB,IAAI,yBAAyB,CAAA;YACzD,CAAC;SACF,CACF,CAAA;IACH,CAAC;CACF","sourcesContent":["import { LexResolver, LexResolverError } from '@atproto/lex-resolver'\nimport { Nsid } from '@atproto/oauth-scopes'\nimport { CachedGetter } from '@atproto-labs/simple-store'\nimport { LEXICON_REFRESH_FREQUENCY } from '../constants.js'\nimport { LexiconData, LexiconStore } from './lexicon-store.js'\n\n/**\n * This utility class handles the retrieval and caching of lexicon\n * data. In particular, it handles failed retrieval attempts by returning cached\n * data.\n *\n * @private\n */\nexport class LexiconGetter extends CachedGetter<Nsid, LexiconData> {\n constructor(store: LexiconStore, lexResolver: LexResolver) {\n super(\n async (input, options, storedData) => {\n const now = new Date()\n const result = await lexResolver.get(input, options).catch((err) => {\n // We swallow LexiconResolutionError errors, returning potentially\n // \"null\" values here to avoid hammering the resolver with requests\n // for the same lexicon that is known to be unavailable. The getter\n // should be called again based on the isStale() function below.\n if (err instanceof LexResolverError) return undefined\n\n // Unexpected error are propagated\n throw err\n })\n\n return {\n // Keep original createdAt, if available\n createdAt: storedData?.createdAt ?? now,\n // Always update updatedAt\n updatedAt: now,\n // Update the data with fresh data, if available, or keep cached\n // values (if any) otherwise.\n lastSucceededAt: result ? now : storedData?.lastSucceededAt ?? null,\n uri: result ? result.uri.toString() : storedData?.uri ?? null,\n lexicon: result ? result.lexicon : storedData?.lexicon ?? null,\n }\n },\n {\n set: async (nsid, data) => store.storeLexicon(nsid, data),\n get: async (nsid) => (await store.findLexicon(nsid)) ?? undefined,\n del: async (nsid) => store.deleteLexicon(nsid),\n },\n {\n isStale: (nsid, data) => {\n const timeSinceLastUpdate = Date.now() - data.updatedAt.getTime()\n return timeSinceLastUpdate >= LEXICON_REFRESH_FREQUENCY\n },\n },\n )\n }\n}\n"]}
|