@atproto/oauth-provider 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- package/.postcssrc.yml +3 -0
- package/CHANGELOG.md +19 -0
- package/LICENSE.txt +7 -0
- package/dist/access-token/access-token-type.d.ts +6 -0
- package/dist/access-token/access-token-type.d.ts.map +1 -0
- package/dist/access-token/access-token-type.js +10 -0
- package/dist/access-token/access-token-type.js.map +1 -0
- package/dist/account/account-manager.d.ts +14 -0
- package/dist/account/account-manager.d.ts.map +1 -0
- package/dist/account/account-manager.js +39 -0
- package/dist/account/account-manager.js.map +1 -0
- package/dist/account/account-store.d.ts +39 -0
- package/dist/account/account-store.d.ts.map +1 -0
- package/dist/account/account-store.js +19 -0
- package/dist/account/account-store.js.map +1 -0
- package/dist/account/account.d.ts +8 -0
- package/dist/account/account.d.ts.map +1 -0
- package/dist/account/account.js +3 -0
- package/dist/account/account.js.map +1 -0
- package/dist/assets/app/bundle-manifest.json +22 -0
- package/dist/assets/app/main.css +3 -0
- package/dist/assets/app/main.js +20 -0
- package/dist/assets/app/main.js.map +1 -0
- package/dist/assets/asset.d.ts +9 -0
- package/dist/assets/asset.d.ts.map +1 -0
- package/dist/assets/asset.js +3 -0
- package/dist/assets/asset.js.map +1 -0
- package/dist/assets/assets-middleware.d.ts +2 -0
- package/dist/assets/assets-middleware.d.ts.map +1 -0
- package/dist/assets/assets-middleware.js +30 -0
- package/dist/assets/assets-middleware.js.map +1 -0
- package/dist/assets/index.d.ts +4 -0
- package/dist/assets/index.d.ts.map +1 -0
- package/dist/assets/index.js +65 -0
- package/dist/assets/index.js.map +1 -0
- package/dist/client/client-auth.d.ts +13 -0
- package/dist/client/client-auth.d.ts.map +1 -0
- package/dist/client/client-auth.js +35 -0
- package/dist/client/client-auth.js.map +1 -0
- package/dist/client/client-data.d.ts +8 -0
- package/dist/client/client-data.d.ts.map +1 -0
- package/dist/client/client-data.js +3 -0
- package/dist/client/client-data.js.map +1 -0
- package/dist/client/client-id.d.ts +4 -0
- package/dist/client/client-id.d.ts.map +1 -0
- package/dist/client/client-id.js +6 -0
- package/dist/client/client-id.js.map +1 -0
- package/dist/client/client-info.d.ts +13 -0
- package/dist/client/client-info.d.ts.map +1 -0
- package/dist/client/client-info.js +3 -0
- package/dist/client/client-info.js.map +1 -0
- package/dist/client/client-manager.d.ts +38 -0
- package/dist/client/client-manager.d.ts.map +1 -0
- package/dist/client/client-manager.js +534 -0
- package/dist/client/client-manager.js.map +1 -0
- package/dist/client/client-store.d.ts +13 -0
- package/dist/client/client-store.d.ts.map +1 -0
- package/dist/client/client-store.js +39 -0
- package/dist/client/client-store.js.map +1 -0
- package/dist/client/client-utils.d.ts +6 -0
- package/dist/client/client-utils.d.ts.map +1 -0
- package/dist/client/client-utils.js +40 -0
- package/dist/client/client-utils.js.map +1 -0
- package/dist/client/client.d.ts +41 -0
- package/dist/client/client.d.ts.map +1 -0
- package/dist/client/client.js +163 -0
- package/dist/client/client.js.map +1 -0
- package/dist/constants.d.ts +42 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +53 -0
- package/dist/constants.js.map +1 -0
- package/dist/device/device-data.d.ts +20 -0
- package/dist/device/device-data.d.ts.map +1 -0
- package/dist/device/device-data.js +11 -0
- package/dist/device/device-data.js.map +1 -0
- package/dist/device/device-details.d.ts +17 -0
- package/dist/device/device-details.d.ts.map +1 -0
- package/dist/device/device-details.js +34 -0
- package/dist/device/device-details.js.map +1 -0
- package/dist/device/device-id.d.ts +6 -0
- package/dist/device/device-id.d.ts.map +1 -0
- package/dist/device/device-id.js +18 -0
- package/dist/device/device-id.js.map +1 -0
- package/dist/device/device-manager.d.ts +88 -0
- package/dist/device/device-manager.d.ts.map +1 -0
- package/dist/device/device-manager.js +206 -0
- package/dist/device/device-manager.js.map +1 -0
- package/dist/device/device-store.d.ts +15 -0
- package/dist/device/device-store.d.ts.map +1 -0
- package/dist/device/device-store.js +36 -0
- package/dist/device/device-store.js.map +1 -0
- package/dist/device/session-id.d.ts +6 -0
- package/dist/device/session-id.d.ts.map +1 -0
- package/dist/device/session-id.js +18 -0
- package/dist/device/session-id.js.map +1 -0
- package/dist/dpop/dpop-manager.d.ts +33 -0
- package/dist/dpop/dpop-manager.d.ts.map +1 -0
- package/dist/dpop/dpop-manager.js +115 -0
- package/dist/dpop/dpop-manager.js.map +1 -0
- package/dist/dpop/dpop-nonce.d.ts +13 -0
- package/dist/dpop/dpop-nonce.d.ts.map +1 -0
- package/dist/dpop/dpop-nonce.js +94 -0
- package/dist/dpop/dpop-nonce.js.map +1 -0
- package/dist/errors/access-denied-error.d.ts +8 -0
- package/dist/errors/access-denied-error.d.ts.map +1 -0
- package/dist/errors/access-denied-error.js +21 -0
- package/dist/errors/access-denied-error.js.map +1 -0
- package/dist/errors/account-selection-required-error.d.ts +6 -0
- package/dist/errors/account-selection-required-error.d.ts.map +1 -0
- package/dist/errors/account-selection-required-error.js +11 -0
- package/dist/errors/account-selection-required-error.js.map +1 -0
- package/dist/errors/consent-required-error.d.ts +6 -0
- package/dist/errors/consent-required-error.d.ts.map +1 -0
- package/dist/errors/consent-required-error.js +11 -0
- package/dist/errors/consent-required-error.js.map +1 -0
- package/dist/errors/invalid-authorization-details-error.d.ts +20 -0
- package/dist/errors/invalid-authorization-details-error.d.ts.map +1 -0
- package/dist/errors/invalid-authorization-details-error.js +26 -0
- package/dist/errors/invalid-authorization-details-error.js.map +1 -0
- package/dist/errors/invalid-client-error.d.ts +18 -0
- package/dist/errors/invalid-client-error.d.ts.map +1 -0
- package/dist/errors/invalid-client-error.js +24 -0
- package/dist/errors/invalid-client-error.js.map +1 -0
- package/dist/errors/invalid-client-id-error.d.ts +13 -0
- package/dist/errors/invalid-client-id-error.d.ts.map +1 -0
- package/dist/errors/invalid-client-id-error.js +25 -0
- package/dist/errors/invalid-client-id-error.js.map +1 -0
- package/dist/errors/invalid-client-metadata-error.d.ts +13 -0
- package/dist/errors/invalid-client-metadata-error.d.ts.map +1 -0
- package/dist/errors/invalid-client-metadata-error.js +23 -0
- package/dist/errors/invalid-client-metadata-error.js.map +1 -0
- package/dist/errors/invalid-dpop-key-binding-error.d.ts +12 -0
- package/dist/errors/invalid-dpop-key-binding-error.d.ts.map +1 -0
- package/dist/errors/invalid-dpop-key-binding-error.js +20 -0
- package/dist/errors/invalid-dpop-key-binding-error.js.map +1 -0
- package/dist/errors/invalid-dpop-proof-error.d.ts +5 -0
- package/dist/errors/invalid-dpop-proof-error.d.ts.map +1 -0
- package/dist/errors/invalid-dpop-proof-error.js +12 -0
- package/dist/errors/invalid-dpop-proof-error.js.map +1 -0
- package/dist/errors/invalid-grant-error.d.ts +14 -0
- package/dist/errors/invalid-grant-error.d.ts.map +1 -0
- package/dist/errors/invalid-grant-error.js +20 -0
- package/dist/errors/invalid-grant-error.js.map +1 -0
- package/dist/errors/invalid-parameters-error.d.ts +6 -0
- package/dist/errors/invalid-parameters-error.d.ts.map +1 -0
- package/dist/errors/invalid-parameters-error.js +11 -0
- package/dist/errors/invalid-parameters-error.js.map +1 -0
- package/dist/errors/invalid-redirect-uri-error.d.ts +11 -0
- package/dist/errors/invalid-redirect-uri-error.d.ts.map +1 -0
- package/dist/errors/invalid-redirect-uri-error.js +21 -0
- package/dist/errors/invalid-redirect-uri-error.js.map +1 -0
- package/dist/errors/invalid-request-error.d.ts +28 -0
- package/dist/errors/invalid-request-error.d.ts.map +1 -0
- package/dist/errors/invalid-request-error.js +34 -0
- package/dist/errors/invalid-request-error.js.map +1 -0
- package/dist/errors/invalid-token-error.d.ts +16 -0
- package/dist/errors/invalid-token-error.d.ts.map +1 -0
- package/dist/errors/invalid-token-error.js +45 -0
- package/dist/errors/invalid-token-error.js.map +1 -0
- package/dist/errors/login-required-error.d.ts +6 -0
- package/dist/errors/login-required-error.d.ts.map +1 -0
- package/dist/errors/login-required-error.js +11 -0
- package/dist/errors/login-required-error.js.map +1 -0
- package/dist/errors/oauth-error.d.ts +13 -0
- package/dist/errors/oauth-error.d.ts.map +1 -0
- package/dist/errors/oauth-error.js +29 -0
- package/dist/errors/oauth-error.js.map +1 -0
- package/dist/errors/unauthorized-client-error.d.ts +18 -0
- package/dist/errors/unauthorized-client-error.d.ts.map +1 -0
- package/dist/errors/unauthorized-client-error.js +24 -0
- package/dist/errors/unauthorized-client-error.js.map +1 -0
- package/dist/errors/use-dpop-nonce-error.d.ts +18 -0
- package/dist/errors/use-dpop-nonce-error.d.ts.map +1 -0
- package/dist/errors/use-dpop-nonce-error.js +27 -0
- package/dist/errors/use-dpop-nonce-error.js.map +1 -0
- package/dist/errors/www-authenticate-error.d.ts +9 -0
- package/dist/errors/www-authenticate-error.d.ts.map +1 -0
- package/dist/errors/www-authenticate-error.js +46 -0
- package/dist/errors/www-authenticate-error.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/html/build-document.d.ts +32 -0
- package/dist/lib/html/build-document.d.ts.map +1 -0
- package/dist/lib/html/build-document.js +61 -0
- package/dist/lib/html/build-document.js.map +1 -0
- package/dist/lib/html/escapers.d.ts +9 -0
- package/dist/lib/html/escapers.d.ts.map +1 -0
- package/dist/lib/html/escapers.js +66 -0
- package/dist/lib/html/escapers.js.map +1 -0
- package/dist/lib/html/html.d.ts +13 -0
- package/dist/lib/html/html.d.ts.map +1 -0
- package/dist/lib/html/html.js +53 -0
- package/dist/lib/html/html.js.map +1 -0
- package/dist/lib/html/index.d.ts +4 -0
- package/dist/lib/html/index.d.ts.map +1 -0
- package/dist/lib/html/index.js +21 -0
- package/dist/lib/html/index.js.map +1 -0
- package/dist/lib/html/tags.d.ts +34 -0
- package/dist/lib/html/tags.d.ts.map +1 -0
- package/dist/lib/html/tags.js +47 -0
- package/dist/lib/html/tags.js.map +1 -0
- package/dist/lib/html/util.d.ts +4 -0
- package/dist/lib/html/util.d.ts.map +1 -0
- package/dist/lib/html/util.js +20 -0
- package/dist/lib/html/util.js.map +1 -0
- package/dist/lib/http/accept.d.ts +29 -0
- package/dist/lib/http/accept.d.ts.map +1 -0
- package/dist/lib/http/accept.js +67 -0
- package/dist/lib/http/accept.js.map +1 -0
- package/dist/lib/http/context.d.ts +5 -0
- package/dist/lib/http/context.d.ts.map +1 -0
- package/dist/lib/http/context.js +10 -0
- package/dist/lib/http/context.js.map +1 -0
- package/dist/lib/http/index.d.ts +10 -0
- package/dist/lib/http/index.d.ts.map +1 -0
- package/dist/lib/http/index.js +26 -0
- package/dist/lib/http/index.js.map +1 -0
- package/dist/lib/http/method.d.ts +6 -0
- package/dist/lib/http/method.d.ts.map +1 -0
- package/dist/lib/http/method.js +19 -0
- package/dist/lib/http/method.js.map +1 -0
- package/dist/lib/http/middleware.d.ts +18 -0
- package/dist/lib/http/middleware.d.ts.map +1 -0
- package/dist/lib/http/middleware.js +118 -0
- package/dist/lib/http/middleware.js.map +1 -0
- package/dist/lib/http/parser.d.ts +33 -0
- package/dist/lib/http/parser.d.ts.map +1 -0
- package/dist/lib/http/parser.js +48 -0
- package/dist/lib/http/parser.js.map +1 -0
- package/dist/lib/http/path.d.ts +9 -0
- package/dist/lib/http/path.d.ts.map +1 -0
- package/dist/lib/http/path.js +54 -0
- package/dist/lib/http/path.js.map +1 -0
- package/dist/lib/http/request.d.ts +33 -0
- package/dist/lib/http/request.d.ts.map +1 -0
- package/dist/lib/http/request.js +86 -0
- package/dist/lib/http/request.js.map +1 -0
- package/dist/lib/http/response.d.ts +13 -0
- package/dist/lib/http/response.d.ts.map +1 -0
- package/dist/lib/http/response.js +98 -0
- package/dist/lib/http/response.js.map +1 -0
- package/dist/lib/http/route.d.ts +25 -0
- package/dist/lib/http/route.d.ts.map +1 -0
- package/dist/lib/http/route.js +39 -0
- package/dist/lib/http/route.js.map +1 -0
- package/dist/lib/http/router.d.ts +32 -0
- package/dist/lib/http/router.d.ts.map +1 -0
- package/dist/lib/http/router.js +74 -0
- package/dist/lib/http/router.js.map +1 -0
- package/dist/lib/http/stream.d.ts +13 -0
- package/dist/lib/http/stream.d.ts.map +1 -0
- package/dist/lib/http/stream.js +46 -0
- package/dist/lib/http/stream.js.map +1 -0
- package/dist/lib/http/types.d.ts +7 -0
- package/dist/lib/http/types.d.ts.map +1 -0
- package/dist/lib/http/types.js +3 -0
- package/dist/lib/http/types.js.map +1 -0
- package/dist/lib/http/url.d.ts +8 -0
- package/dist/lib/http/url.d.ts.map +1 -0
- package/dist/lib/http/url.js +22 -0
- package/dist/lib/http/url.js.map +1 -0
- package/dist/lib/redis.d.ts +5 -0
- package/dist/lib/redis.d.ts.map +1 -0
- package/dist/lib/redis.js +22 -0
- package/dist/lib/redis.js.map +1 -0
- package/dist/lib/util/authorization-header.d.ts +4 -0
- package/dist/lib/util/authorization-header.d.ts.map +1 -0
- package/dist/lib/util/authorization-header.js +23 -0
- package/dist/lib/util/authorization-header.js.map +1 -0
- package/dist/lib/util/cast.d.ts +2 -0
- package/dist/lib/util/cast.d.ts.map +1 -0
- package/dist/lib/util/cast.js +10 -0
- package/dist/lib/util/cast.js.map +1 -0
- package/dist/lib/util/crypto.d.ts +3 -0
- package/dist/lib/util/crypto.d.ts.map +1 -0
- package/dist/lib/util/crypto.js +29 -0
- package/dist/lib/util/crypto.js.map +1 -0
- package/dist/lib/util/date.d.ts +3 -0
- package/dist/lib/util/date.d.ts.map +1 -0
- package/dist/lib/util/date.js +12 -0
- package/dist/lib/util/date.js.map +1 -0
- package/dist/lib/util/hostname.d.ts +6 -0
- package/dist/lib/util/hostname.d.ts.map +1 -0
- package/dist/lib/util/hostname.js +24 -0
- package/dist/lib/util/hostname.js.map +1 -0
- package/dist/lib/util/redirect-uri.d.ts +7 -0
- package/dist/lib/util/redirect-uri.d.ts.map +1 -0
- package/dist/lib/util/redirect-uri.js +44 -0
- package/dist/lib/util/redirect-uri.js.map +1 -0
- package/dist/lib/util/time.d.ts +6 -0
- package/dist/lib/util/time.d.ts.map +1 -0
- package/dist/lib/util/time.js +28 -0
- package/dist/lib/util/time.js.map +1 -0
- package/dist/lib/util/type.d.ts +6 -0
- package/dist/lib/util/type.d.ts.map +1 -0
- package/dist/lib/util/type.js +3 -0
- package/dist/lib/util/type.js.map +1 -0
- package/dist/lib/util/well-known.d.ts +3 -0
- package/dist/lib/util/well-known.d.ts.map +1 -0
- package/dist/lib/util/well-known.js +11 -0
- package/dist/lib/util/well-known.js.map +1 -0
- package/dist/metadata/build-metadata.d.ts +14 -0
- package/dist/metadata/build-metadata.d.ts.map +1 -0
- package/dist/metadata/build-metadata.js +132 -0
- package/dist/metadata/build-metadata.js.map +1 -0
- package/dist/oauth-client.d.ts +4 -0
- package/dist/oauth-client.d.ts.map +1 -0
- package/dist/oauth-client.js +19 -0
- package/dist/oauth-client.js.map +1 -0
- package/dist/oauth-dpop.d.ts +3 -0
- package/dist/oauth-dpop.d.ts.map +1 -0
- package/dist/oauth-dpop.js +19 -0
- package/dist/oauth-dpop.js.map +1 -0
- package/dist/oauth-errors.d.ts +20 -0
- package/dist/oauth-errors.d.ts.map +1 -0
- package/dist/oauth-errors.js +43 -0
- package/dist/oauth-errors.js.map +1 -0
- package/dist/oauth-hooks.d.ts +42 -0
- package/dist/oauth-hooks.d.ts.map +1 -0
- package/dist/oauth-hooks.js +3 -0
- package/dist/oauth-hooks.js.map +1 -0
- package/dist/oauth-provider.d.ts +179 -0
- package/dist/oauth-provider.d.ts.map +1 -0
- package/dist/oauth-provider.js +748 -0
- package/dist/oauth-provider.js.map +1 -0
- package/dist/oauth-store.d.ts +11 -0
- package/dist/oauth-store.d.ts.map +1 -0
- package/dist/oauth-store.js +27 -0
- package/dist/oauth-store.js.map +1 -0
- package/dist/oauth-verifier.d.ts +66 -0
- package/dist/oauth-verifier.d.ts.map +1 -0
- package/dist/oauth-verifier.js +94 -0
- package/dist/oauth-verifier.js.map +1 -0
- package/dist/oidc/claims.d.ts +16 -0
- package/dist/oidc/claims.d.ts.map +1 -0
- package/dist/oidc/claims.js +29 -0
- package/dist/oidc/claims.js.map +1 -0
- package/dist/oidc/sub.d.ts +4 -0
- package/dist/oidc/sub.d.ts.map +1 -0
- package/dist/oidc/sub.js +6 -0
- package/dist/oidc/sub.js.map +1 -0
- package/dist/oidc/userinfo.d.ts +7 -0
- package/dist/oidc/userinfo.d.ts.map +1 -0
- package/dist/oidc/userinfo.js +3 -0
- package/dist/oidc/userinfo.js.map +1 -0
- package/dist/output/build-error-payload.d.ts +6 -0
- package/dist/output/build-error-payload.d.ts.map +1 -0
- package/dist/output/build-error-payload.js +108 -0
- package/dist/output/build-error-payload.js.map +1 -0
- package/dist/output/customization.d.ts +37 -0
- package/dist/output/customization.d.ts.map +1 -0
- package/dist/output/customization.js +62 -0
- package/dist/output/customization.js.map +1 -0
- package/dist/output/send-authorize-page.d.ts +43 -0
- package/dist/output/send-authorize-page.d.ts.map +1 -0
- package/dist/output/send-authorize-page.js +49 -0
- package/dist/output/send-authorize-page.js.map +1 -0
- package/dist/output/send-authorize-redirect.d.ts +25 -0
- package/dist/output/send-authorize-redirect.d.ts.map +1 -0
- package/dist/output/send-authorize-redirect.js +72 -0
- package/dist/output/send-authorize-redirect.js.map +1 -0
- package/dist/output/send-error-page.d.ts +5 -0
- package/dist/output/send-error-page.d.ts.map +1 -0
- package/dist/output/send-error-page.js +31 -0
- package/dist/output/send-error-page.js.map +1 -0
- package/dist/output/send-web-page.d.ts +8 -0
- package/dist/output/send-web-page.d.ts.map +1 -0
- package/dist/output/send-web-page.js +48 -0
- package/dist/output/send-web-page.js.map +1 -0
- package/dist/parameters/claims-requested.d.ts +3 -0
- package/dist/parameters/claims-requested.d.ts.map +1 -0
- package/dist/parameters/claims-requested.js +77 -0
- package/dist/parameters/claims-requested.js.map +1 -0
- package/dist/parameters/oidc-payload.d.ts +31 -0
- package/dist/parameters/oidc-payload.d.ts.map +1 -0
- package/dist/parameters/oidc-payload.js +25 -0
- package/dist/parameters/oidc-payload.js.map +1 -0
- package/dist/replay/replay-manager.d.ts +10 -0
- package/dist/replay/replay-manager.d.ts.map +1 -0
- package/dist/replay/replay-manager.js +23 -0
- package/dist/replay/replay-manager.js.map +1 -0
- package/dist/replay/replay-store-memory.d.ts +11 -0
- package/dist/replay/replay-store-memory.d.ts.map +1 -0
- package/dist/replay/replay-store-memory.js +30 -0
- package/dist/replay/replay-store-memory.js.map +1 -0
- package/dist/replay/replay-store-redis.d.ts +16 -0
- package/dist/replay/replay-store-redis.d.ts.map +1 -0
- package/dist/replay/replay-store-redis.js +20 -0
- package/dist/replay/replay-store-redis.js.map +1 -0
- package/dist/replay/replay-store.d.ts +16 -0
- package/dist/replay/replay-store.d.ts.map +1 -0
- package/dist/replay/replay-store.js +22 -0
- package/dist/replay/replay-store.js.map +1 -0
- package/dist/request/code.d.ts +7 -0
- package/dist/request/code.d.ts.map +1 -0
- package/dist/request/code.js +20 -0
- package/dist/request/code.js.map +1 -0
- package/dist/request/request-data.d.ts +21 -0
- package/dist/request/request-data.d.ts.map +1 -0
- package/dist/request/request-data.js +6 -0
- package/dist/request/request-data.js.map +1 -0
- package/dist/request/request-id.d.ts +6 -0
- package/dist/request/request-id.d.ts.map +1 -0
- package/dist/request/request-id.js +18 -0
- package/dist/request/request-id.js.map +1 -0
- package/dist/request/request-info.d.ts +12 -0
- package/dist/request/request-info.d.ts.map +1 -0
- package/dist/request/request-info.js +3 -0
- package/dist/request/request-info.js.map +1 -0
- package/dist/request/request-manager.d.ts +40 -0
- package/dist/request/request-manager.d.ts.map +1 -0
- package/dist/request/request-manager.js +310 -0
- package/dist/request/request-manager.js.map +1 -0
- package/dist/request/request-store-memory.d.ts +16 -0
- package/dist/request/request-store-memory.d.ts.map +1 -0
- package/dist/request/request-store-memory.js +31 -0
- package/dist/request/request-store-memory.js.map +1 -0
- package/dist/request/request-store-redis.d.ts +24 -0
- package/dist/request/request-store-redis.d.ts.map +1 -0
- package/dist/request/request-store-redis.js +58 -0
- package/dist/request/request-store-redis.js.map +1 -0
- package/dist/request/request-store.d.ts +27 -0
- package/dist/request/request-store.d.ts.map +1 -0
- package/dist/request/request-store.js +37 -0
- package/dist/request/request-store.js.map +1 -0
- package/dist/request/request-uri.d.ts +8 -0
- package/dist/request/request-uri.d.ts.map +1 -0
- package/dist/request/request-uri.js +24 -0
- package/dist/request/request-uri.js.map +1 -0
- package/dist/request/types.d.ts +328 -0
- package/dist/request/types.d.ts.map +1 -0
- package/dist/request/types.js +27 -0
- package/dist/request/types.js.map +1 -0
- package/dist/signer/signed-token-payload.d.ts +1694 -0
- package/dist/signer/signed-token-payload.d.ts.map +1 -0
- package/dist/signer/signed-token-payload.js +32 -0
- package/dist/signer/signed-token-payload.js.map +1 -0
- package/dist/signer/signer.d.ts +193 -0
- package/dist/signer/signer.d.ts.map +1 -0
- package/dist/signer/signer.js +101 -0
- package/dist/signer/signer.js.map +1 -0
- package/dist/token/refresh-token.d.ts +7 -0
- package/dist/token/refresh-token.d.ts.map +1 -0
- package/dist/token/refresh-token.js +20 -0
- package/dist/token/refresh-token.js.map +1 -0
- package/dist/token/token-claims.d.ts +1687 -0
- package/dist/token/token-claims.d.ts.map +1 -0
- package/dist/token/token-claims.js +30 -0
- package/dist/token/token-claims.js.map +1 -0
- package/dist/token/token-data.d.ts +20 -0
- package/dist/token/token-data.d.ts.map +1 -0
- package/dist/token/token-data.js +3 -0
- package/dist/token/token-data.js.map +1 -0
- package/dist/token/token-id.d.ts +7 -0
- package/dist/token/token-id.d.ts.map +1 -0
- package/dist/token/token-id.js +20 -0
- package/dist/token/token-id.js.map +1 -0
- package/dist/token/token-manager.d.ts +48 -0
- package/dist/token/token-manager.d.ts.map +1 -0
- package/dist/token/token-manager.js +421 -0
- package/dist/token/token-manager.js.map +1 -0
- package/dist/token/token-store.d.ts +35 -0
- package/dist/token/token-store.d.ts.map +1 -0
- package/dist/token/token-store.js +38 -0
- package/dist/token/token-store.js.map +1 -0
- package/dist/token/types.d.ts +250 -0
- package/dist/token/types.d.ts.map +1 -0
- package/dist/token/types.js +36 -0
- package/dist/token/types.js.map +1 -0
- package/dist/token/verify-token-claims.d.ts +17 -0
- package/dist/token/verify-token-claims.d.ts.map +1 -0
- package/dist/token/verify-token-claims.js +39 -0
- package/dist/token/verify-token-claims.js.map +1 -0
- package/package.json +83 -0
- package/rollup.config.js +55 -0
- package/src/access-token/access-token-type.ts +5 -0
- package/src/account/account-manager.ts +55 -0
- package/src/account/account-store.ts +74 -0
- package/src/account/account.ts +10 -0
- package/src/assets/app/app.tsx +28 -0
- package/src/assets/app/backend-data.ts +65 -0
- package/src/assets/app/components/accept-form.tsx +112 -0
- package/src/assets/app/components/account-identifier.tsx +18 -0
- package/src/assets/app/components/account-picker.tsx +108 -0
- package/src/assets/app/components/client-identifier.tsx +32 -0
- package/src/assets/app/components/client-name.tsx +30 -0
- package/src/assets/app/components/error-card.tsx +41 -0
- package/src/assets/app/components/help-card.tsx +42 -0
- package/src/assets/app/components/layout-title-page.tsx +43 -0
- package/src/assets/app/components/layout-welcome.tsx +58 -0
- package/src/assets/app/components/sign-in-form.tsx +290 -0
- package/src/assets/app/components/sign-up-account-form.tsx +210 -0
- package/src/assets/app/components/sign-up-disclaimer.tsx +44 -0
- package/src/assets/app/components/url-viewer.tsx +70 -0
- package/src/assets/app/cookies.ts +11 -0
- package/src/assets/app/hooks/use-api.ts +104 -0
- package/src/assets/app/hooks/use-bound-dispatch.ts +5 -0
- package/src/assets/app/hooks/use-csrf-token.ts +5 -0
- package/src/assets/app/lib/api.ts +64 -0
- package/src/assets/app/lib/clsx.ts +4 -0
- package/src/assets/app/lib/util.ts +10 -0
- package/src/assets/app/main.css +11 -0
- package/src/assets/app/main.tsx +28 -0
- package/src/assets/app/views/accept-view.tsx +51 -0
- package/src/assets/app/views/authorize-view.tsx +101 -0
- package/src/assets/app/views/error-view.tsx +27 -0
- package/src/assets/app/views/sign-in-view.tsx +121 -0
- package/src/assets/app/views/sign-up-view.tsx +93 -0
- package/src/assets/app/views/welcome-view.tsx +61 -0
- package/src/assets/asset.ts +8 -0
- package/src/assets/assets-middleware.ts +32 -0
- package/src/assets/index.ts +74 -0
- package/src/client/client-auth.ts +45 -0
- package/src/client/client-data.ts +9 -0
- package/src/client/client-id.ts +4 -0
- package/src/client/client-info.ts +13 -0
- package/src/client/client-manager.ts +818 -0
- package/src/client/client-store.ts +38 -0
- package/src/client/client-utils.ts +43 -0
- package/src/client/client.ts +231 -0
- package/src/constants.ts +69 -0
- package/src/device/device-data.ts +11 -0
- package/src/device/device-details.ts +43 -0
- package/src/device/device-id.ts +23 -0
- package/src/device/device-manager.ts +287 -0
- package/src/device/device-store.ts +35 -0
- package/src/device/session-id.ts +22 -0
- package/src/dpop/dpop-manager.ts +147 -0
- package/src/dpop/dpop-nonce.ts +104 -0
- package/src/errors/access-denied-error.ts +26 -0
- package/src/errors/account-selection-required-error.ts +12 -0
- package/src/errors/consent-required-error.ts +12 -0
- package/src/errors/invalid-authorization-details-error.ts +22 -0
- package/src/errors/invalid-client-error.ts +20 -0
- package/src/errors/invalid-client-id-error.ts +20 -0
- package/src/errors/invalid-client-metadata-error.ts +19 -0
- package/src/errors/invalid-dpop-key-binding-error.ts +21 -0
- package/src/errors/invalid-dpop-proof-error.ts +13 -0
- package/src/errors/invalid-grant-error.ts +16 -0
- package/src/errors/invalid-parameters-error.ts +12 -0
- package/src/errors/invalid-redirect-uri-error.ts +17 -0
- package/src/errors/invalid-request-error.ts +30 -0
- package/src/errors/invalid-token-error.ts +59 -0
- package/src/errors/login-required-error.ts +12 -0
- package/src/errors/oauth-error.ts +28 -0
- package/src/errors/unauthorized-client-error.ts +20 -0
- package/src/errors/use-dpop-nonce-error.ts +32 -0
- package/src/errors/www-authenticate-error.ts +65 -0
- package/src/index.ts +15 -0
- package/src/lib/html/README.md +9 -0
- package/src/lib/html/build-document.ts +98 -0
- package/src/lib/html/escapers.ts +66 -0
- package/src/lib/html/html.ts +61 -0
- package/src/lib/html/index.ts +5 -0
- package/src/lib/html/tags.ts +58 -0
- package/src/lib/html/util.ts +21 -0
- package/src/lib/http/README.md +11 -0
- package/src/lib/http/accept.ts +91 -0
- package/src/lib/http/context.ts +11 -0
- package/src/lib/http/index.ts +9 -0
- package/src/lib/http/method.ts +18 -0
- package/src/lib/http/middleware.ts +183 -0
- package/src/lib/http/parser.ts +64 -0
- package/src/lib/http/path.ts +82 -0
- package/src/lib/http/request.ts +141 -0
- package/src/lib/http/response.ts +133 -0
- package/src/lib/http/route.ts +56 -0
- package/src/lib/http/router.ts +118 -0
- package/src/lib/http/stream.ts +78 -0
- package/src/lib/http/types.ts +22 -0
- package/src/lib/http/url.ts +23 -0
- package/src/lib/redis.ts +23 -0
- package/src/lib/util/authorization-header.ts +26 -0
- package/src/lib/util/cast.ts +4 -0
- package/src/lib/util/crypto.ts +27 -0
- package/src/lib/util/date.ts +7 -0
- package/src/lib/util/hostname.ts +19 -0
- package/src/lib/util/redirect-uri.ts +46 -0
- package/src/lib/util/time.ts +33 -0
- package/src/lib/util/type.ts +4 -0
- package/src/lib/util/well-known.ts +8 -0
- package/src/metadata/build-metadata.ts +165 -0
- package/src/oauth-client.ts +3 -0
- package/src/oauth-dpop.ts +2 -0
- package/src/oauth-errors.ts +21 -0
- package/src/oauth-hooks.ts +66 -0
- package/src/oauth-provider.ts +1409 -0
- package/src/oauth-store.ts +11 -0
- package/src/oauth-verifier.ts +219 -0
- package/src/oidc/claims.ts +35 -0
- package/src/oidc/sub.ts +4 -0
- package/src/oidc/userinfo.ts +11 -0
- package/src/output/build-error-payload.ts +143 -0
- package/src/output/customization.ts +96 -0
- package/src/output/send-authorize-page.ts +111 -0
- package/src/output/send-authorize-redirect.ts +130 -0
- package/src/output/send-error-page.ts +41 -0
- package/src/output/send-web-page.ts +66 -0
- package/src/parameters/claims-requested.ts +106 -0
- package/src/parameters/oidc-payload.ts +28 -0
- package/src/replay/replay-manager.ts +38 -0
- package/src/replay/replay-store-memory.ts +36 -0
- package/src/replay/replay-store-redis.ts +31 -0
- package/src/replay/replay-store.ts +44 -0
- package/src/request/code.ts +24 -0
- package/src/request/request-data.ts +26 -0
- package/src/request/request-id.ts +23 -0
- package/src/request/request-info.ts +12 -0
- package/src/request/request-manager.ts +479 -0
- package/src/request/request-store-memory.ts +39 -0
- package/src/request/request-store-redis.ts +71 -0
- package/src/request/request-store.ts +54 -0
- package/src/request/request-uri.ts +29 -0
- package/src/request/types.ts +48 -0
- package/src/signer/signed-token-payload.ts +35 -0
- package/src/signer/signer.ts +165 -0
- package/src/token/refresh-token.ts +31 -0
- package/src/token/token-claims.ts +31 -0
- package/src/token/token-data.ts +33 -0
- package/src/token/token-id.ts +26 -0
- package/src/token/token-manager.ts +591 -0
- package/src/token/token-store.ts +78 -0
- package/src/token/types.ts +86 -0
- package/src/token/verify-token-claims.ts +65 -0
- package/tailwind.config.js +13 -0
- package/tsconfig.backend.json +9 -0
- package/tsconfig.frontend.json +11 -0
- package/tsconfig.json +8 -0
- package/tsconfig.tools.json +8 -0
@@ -0,0 +1,47 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.cssCode = exports.jsonCode = exports.js = exports.javascriptCode = exports.html = void 0;
|
4
|
+
const escapers_js_1 = require("./escapers.js");
|
5
|
+
const html_js_1 = require("./html.js");
|
6
|
+
const html = (tpl, ...val) => tpl.length === 1 && val.length === 0
|
7
|
+
? // Optimization for static HTML, avoid creating an iterable
|
8
|
+
html_js_1.Html.dangerouslyCreate(tpl)
|
9
|
+
: html_js_1.Html.dangerouslyCreate((0, escapers_js_1.htmlEscaper)(tpl, val));
|
10
|
+
exports.html = html;
|
11
|
+
/**
|
12
|
+
* Escapes code to use as a JavaScript string inside a `<script>` tag.
|
13
|
+
*/
|
14
|
+
const javascriptCode = (code) => html_js_1.Html.dangerouslyCreate((0, escapers_js_1.javascriptEscaper)(code));
|
15
|
+
exports.javascriptCode = javascriptCode;
|
16
|
+
/**
|
17
|
+
* Creates an HTML safe JavaScript code block, with JSON serialization of the
|
18
|
+
* injected variables.
|
19
|
+
*
|
20
|
+
* @example
|
21
|
+
* ```js
|
22
|
+
* const dataOnTheServer = { foo: 'bar' };
|
23
|
+
* const clientScript = js`
|
24
|
+
* const data = ${dataOnTheServer};
|
25
|
+
* console.log(data);
|
26
|
+
* `
|
27
|
+
* console.log(clientScript.toString()); // Output: 'const data = {"foo":"bar"};console.log(data);'
|
28
|
+
* ```
|
29
|
+
*/
|
30
|
+
const js = (tpl, ...val) => tpl.length === 1 && val.length === 0
|
31
|
+
? // Optimization for static JavaScript, avoid un-necessary serialization
|
32
|
+
(0, exports.javascriptCode)(tpl[0])
|
33
|
+
: (0, exports.javascriptCode)(String.raw({ raw: tpl }, ...val.map(exports.jsonCode)));
|
34
|
+
exports.js = js;
|
35
|
+
/**
|
36
|
+
* Escapes a value to be used as a JSON string inside a `<script>` tag.
|
37
|
+
*
|
38
|
+
* @see {@link https://redux.js.org/usage/server-rendering#security-considerations}
|
39
|
+
*/
|
40
|
+
const jsonCode = (value) => html_js_1.Html.dangerouslyCreate((0, escapers_js_1.jsonEscaper)(value));
|
41
|
+
exports.jsonCode = jsonCode;
|
42
|
+
/**
|
43
|
+
* Escapes a value to be uses as CSS styles inside a `<style>` tag.
|
44
|
+
*/
|
45
|
+
const cssCode = (code) => html_js_1.Html.dangerouslyCreate((0, escapers_js_1.cssEscaper)(code));
|
46
|
+
exports.cssCode = cssCode;
|
47
|
+
//# sourceMappingURL=tags.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../../src/lib/html/tags.ts"],"names":[],"mappings":";;;AAAA,+CAMsB;AACtB,uCAAgC;AAGzB,MAAM,IAAI,GAAG,CAClB,GAAyB,EACzB,GAAG,GAAyB,EAC5B,EAAE,CACF,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;IAClC,CAAC,CAAC,2DAA2D;QAC3D,cAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;IAC7B,CAAC,CAAC,cAAI,CAAC,iBAAiB,CAAC,IAAA,yBAAW,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AAPtC,QAAA,IAAI,QAOkC;AAEnD;;GAEG;AACI,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,EAAE,CAC7C,cAAI,CAAC,iBAAiB,CAAC,IAAA,+BAAiB,EAAC,IAAI,CAAC,CAAC,CAAA;AADpC,QAAA,cAAc,kBACsB;AAEjD;;;;;;;;;;;;;GAaG;AACI,MAAM,EAAE,GAAG,CAAC,GAAyB,EAAE,GAAG,GAAuB,EAAE,EAAE,CAC1E,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;IAClC,CAAC,CAAC,uEAAuE;QACvE,IAAA,sBAAc,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC,IAAA,sBAAc,EAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,gBAAQ,CAAC,CAAC,CAAC,CAAA;AAJvD,QAAA,EAAE,MAIqD;AAEpE;;;;GAIG;AACI,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAE,EAAE,CACzC,cAAI,CAAC,iBAAiB,CAAC,IAAA,yBAAW,EAAC,KAAK,CAAC,CAAC,CAAA;AAD/B,QAAA,QAAQ,YACuB;AAE5C;;GAEG;AACI,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE,CACtC,cAAI,CAAC,iBAAiB,CAAC,IAAA,wBAAU,EAAC,IAAI,CAAC,CAAC,CAAA;AAD7B,QAAA,OAAO,WACsB"}
|
@@ -0,0 +1,4 @@
|
|
1
|
+
export type NestedIterable<V> = V | Iterable<NestedIterable<V>>;
|
2
|
+
export declare function stringReplacer(source: string, searchValue: string, replaceValue: string): Generator<string, void, undefined>;
|
3
|
+
export declare function isString(value: unknown): value is string;
|
4
|
+
//# sourceMappingURL=util.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/lib/html/util.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;AAE/D,wBAAiB,cAAc,CAC7B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAUpC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD"}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.isString = exports.stringReplacer = void 0;
|
4
|
+
function* stringReplacer(source, searchValue, replaceValue) {
|
5
|
+
let previousIndex = 0;
|
6
|
+
let index = source.indexOf(searchValue);
|
7
|
+
while (index !== -1) {
|
8
|
+
yield source.slice(previousIndex, index);
|
9
|
+
yield replaceValue;
|
10
|
+
previousIndex = index + searchValue.length;
|
11
|
+
index = source.indexOf(searchValue, previousIndex);
|
12
|
+
}
|
13
|
+
yield source.slice(previousIndex);
|
14
|
+
}
|
15
|
+
exports.stringReplacer = stringReplacer;
|
16
|
+
function isString(value) {
|
17
|
+
return typeof value === 'string';
|
18
|
+
}
|
19
|
+
exports.isString = isString;
|
20
|
+
//# sourceMappingURL=util.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/lib/html/util.ts"],"names":[],"mappings":";;;AAEA,QAAe,CAAC,CAAC,cAAc,CAC7B,MAAc,EACd,WAAmB,EACnB,YAAoB;IAEpB,IAAI,aAAa,GAAG,CAAC,CAAA;IACrB,IAAI,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IACvC,OAAO,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,MAAM,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;QACxC,MAAM,YAAY,CAAA;QAClB,aAAa,GAAG,KAAK,GAAG,WAAW,CAAC,MAAM,CAAA;QAC1C,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAA;IACpD,CAAC;IACD,MAAM,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;AACnC,CAAC;AAdD,wCAcC;AAED,SAAgB,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAA;AAClC,CAAC;AAFD,4BAEC"}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
/// <reference types="node" />
|
2
|
+
import { SubCtx } from './context.js';
|
3
|
+
import { IncomingMessage, Middleware, NextFunction, ServerResponse } from './types.js';
|
4
|
+
type View<T, D, Req extends IncomingMessage = IncomingMessage, Res extends ServerResponse = ServerResponse> = (this: SubCtx<T, {
|
5
|
+
data: D;
|
6
|
+
}>, req: Req, res: Res, next: NextFunction) => void | PromiseLike<void>;
|
7
|
+
/**
|
8
|
+
* @example
|
9
|
+
* ```ts
|
10
|
+
* app.use(
|
11
|
+
* acceptMiddleware(
|
12
|
+
* async function (req, res) {
|
13
|
+
* return { hello: 'world' }
|
14
|
+
* },
|
15
|
+
* {
|
16
|
+
* '': 'application/json', // Fallback to JSON
|
17
|
+
* 'text/plain': function (req, res) {
|
18
|
+
* res.writeHead(200).end(this.data.hello)
|
19
|
+
* },
|
20
|
+
* 'application/json': function (req, res) {
|
21
|
+
* res.writeHead(200).end(JSON.stringify(this.data))
|
22
|
+
* }
|
23
|
+
* }
|
24
|
+
* )
|
25
|
+
* )
|
26
|
+
*/
|
27
|
+
export declare function acceptMiddleware<D, T = void, Req extends IncomingMessage = IncomingMessage, Res extends ServerResponse = ServerResponse>(controller: (this: T, req: Req, res: Res) => D | PromiseLike<D>, views: Record<string, string | View<T, D, Req, Res>>, fallback?: Middleware<T>): (this: T, req: Req, res: Res, next: NextFunction) => Promise<void>;
|
28
|
+
export {};
|
29
|
+
//# sourceMappingURL=accept.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"accept.d.ts","sourceRoot":"","sources":["../../../src/lib/http/accept.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAU,MAAM,cAAc,CAAA;AAC7C,OAAO,EACL,eAAe,EACf,UAAU,EACV,YAAY,EACZ,cAAc,EACf,MAAM,YAAY,CAAA;AAEnB,KAAK,IAAI,CACP,CAAC,EACD,CAAC,EACD,GAAG,SAAS,eAAe,GAAG,eAAe,EAC7C,GAAG,SAAS,cAAc,GAAG,cAAc,IACzC,CACF,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,EAC5B,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,YAAY,KACf,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;AAE7B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,EACD,CAAC,GAAG,IAAI,EACR,GAAG,SAAS,eAAe,GAAG,eAAe,EAC7C,GAAG,SAAS,cAAc,GAAG,cAAc,EAE3C,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAC/D,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EACpD,QAAQ,GAAE,UAAU,CAAC,CAAC,CAAsD,GAC3E,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAuCpE"}
|
@@ -0,0 +1,67 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.acceptMiddleware = void 0;
|
4
|
+
const accept_1 = require("@hapi/accept");
|
5
|
+
const context_js_1 = require("./context.js");
|
6
|
+
/**
|
7
|
+
* @example
|
8
|
+
* ```ts
|
9
|
+
* app.use(
|
10
|
+
* acceptMiddleware(
|
11
|
+
* async function (req, res) {
|
12
|
+
* return { hello: 'world' }
|
13
|
+
* },
|
14
|
+
* {
|
15
|
+
* '': 'application/json', // Fallback to JSON
|
16
|
+
* 'text/plain': function (req, res) {
|
17
|
+
* res.writeHead(200).end(this.data.hello)
|
18
|
+
* },
|
19
|
+
* 'application/json': function (req, res) {
|
20
|
+
* res.writeHead(200).end(JSON.stringify(this.data))
|
21
|
+
* }
|
22
|
+
* }
|
23
|
+
* )
|
24
|
+
* )
|
25
|
+
*/
|
26
|
+
function acceptMiddleware(controller, views, fallback = (req, res, _next) => void res.writeHead(406).end()) {
|
27
|
+
const viewsMap = new Map(Object.entries(views));
|
28
|
+
const preferences = Array.from(viewsMap.keys()).filter(Boolean);
|
29
|
+
// Make sure that every view is either a function or a string that points to a
|
30
|
+
// function.
|
31
|
+
for (const type of viewsMap.keys()) {
|
32
|
+
const view = viewsMap.get(type);
|
33
|
+
if (typeof view === 'string' && typeof viewsMap.get(view) !== 'function') {
|
34
|
+
throw new Error(`Invalid view "${view}" for media type "${type}"`);
|
35
|
+
}
|
36
|
+
}
|
37
|
+
return async function (req, res, next) {
|
38
|
+
try {
|
39
|
+
const type = req.headers['accept']
|
40
|
+
? (0, accept_1.mediaType)(req.headers['accept'], preferences) || undefined
|
41
|
+
: ''; // indicate that the client accepts anything
|
42
|
+
let view = type != null ? viewsMap.get(type) : undefined;
|
43
|
+
if (typeof view === 'string')
|
44
|
+
view = viewsMap.get(view);
|
45
|
+
if (typeof view === 'string')
|
46
|
+
throw new Error('Invalid view'); // should not happen
|
47
|
+
if (view) {
|
48
|
+
const data = await controller.call(this, req, res);
|
49
|
+
const ctx = (0, context_js_1.subCtx)(this, 'data', data);
|
50
|
+
if (type)
|
51
|
+
res.setHeader('Content-Type', type);
|
52
|
+
await view.call(ctx, req, res, next);
|
53
|
+
}
|
54
|
+
else {
|
55
|
+
// media negotiation failed
|
56
|
+
await fallback.call(this, req, res, next);
|
57
|
+
}
|
58
|
+
}
|
59
|
+
catch (err) {
|
60
|
+
if (!res.headersSent)
|
61
|
+
res.removeHeader('Content-Type');
|
62
|
+
next(err);
|
63
|
+
}
|
64
|
+
};
|
65
|
+
}
|
66
|
+
exports.acceptMiddleware = acceptMiddleware;
|
67
|
+
//# sourceMappingURL=accept.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"accept.js","sourceRoot":"","sources":["../../../src/lib/http/accept.ts"],"names":[],"mappings":";;;AAAA,yCAAwC;AAExC,6CAA6C;AAoB7C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,gBAAgB,CAM9B,UAA+D,EAC/D,KAAoD,EACpD,WAA0B,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;IAE5E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;IAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAE/D,8EAA8E;IAC9E,YAAY;IACZ,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC/B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,qBAAqB,IAAI,GAAG,CAAC,CAAA;QACpE,CAAC;IACH,CAAC;IAED,OAAO,KAAK,WAAW,GAAG,EAAE,GAAG,EAAE,IAAI;QACnC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAChC,CAAC,CAAC,IAAA,kBAAS,EAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,IAAI,SAAS;gBAC5D,CAAC,CAAC,EAAE,CAAA,CAAC,4CAA4C;YAEnD,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YAExD,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACvD,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA,CAAC,oBAAoB;YAElF,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;gBAClD,MAAM,GAAG,GAAG,IAAA,mBAAM,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;gBACtC,IAAI,IAAI;oBAAE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;gBAE7C,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;YACtC,CAAC;iBAAM,CAAC;gBACN,2BAA2B;gBAC3B,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;YAC3C,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,WAAW;gBAAE,GAAG,CAAC,YAAY,CAAC,cAAc,CAAC,CAAA;YACtD,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,CAAC;IACH,CAAC,CAAA;AACH,CAAC;AAhDD,4CAgDC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/lib/http/context.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,CAAA;AAErE,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,EAC3C,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,CAAC,GACP,MAAM,CAAC,CAAC,EAAE;KAAG,CAAC,IAAI,CAAC,GAAG,CAAC;CAAE,CAAC,CAI5B"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.subCtx = void 0;
|
4
|
+
function subCtx(ctx, key, value) {
|
5
|
+
return Object.create(typeof ctx === 'object' ? ctx : null, {
|
6
|
+
[key]: { value, enumerable: true, writable: false },
|
7
|
+
});
|
8
|
+
}
|
9
|
+
exports.subCtx = subCtx;
|
10
|
+
//# sourceMappingURL=context.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/lib/http/context.ts"],"names":[],"mappings":";;;AAEA,SAAgB,MAAM,CACpB,GAAM,EACN,GAAM,EACN,KAAQ;IAER,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;QACzD,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;KACpD,CAAC,CAAA;AACJ,CAAC;AARD,wBAQC"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
export * from './accept.js';
|
2
|
+
export * from './context.js';
|
3
|
+
export * from './middleware.js';
|
4
|
+
export * from './parser.js';
|
5
|
+
export * from './request.js';
|
6
|
+
export * from './response.js';
|
7
|
+
export * from './router.js';
|
8
|
+
export * from './stream.js';
|
9
|
+
export * from './types.js';
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/http/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
|
@@ -0,0 +1,26 @@
|
|
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
|
+
__exportStar(require("./accept.js"), exports);
|
18
|
+
__exportStar(require("./context.js"), exports);
|
19
|
+
__exportStar(require("./middleware.js"), exports);
|
20
|
+
__exportStar(require("./parser.js"), exports);
|
21
|
+
__exportStar(require("./request.js"), exports);
|
22
|
+
__exportStar(require("./response.js"), exports);
|
23
|
+
__exportStar(require("./router.js"), exports);
|
24
|
+
__exportStar(require("./stream.js"), exports);
|
25
|
+
__exportStar(require("./types.js"), exports);
|
26
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/http/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,+CAA4B;AAC5B,kDAA+B;AAC/B,8CAA2B;AAC3B,+CAA4B;AAC5B,gDAA6B;AAC7B,8CAA2B;AAC3B,8CAA2B;AAC3B,6CAA0B"}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
/// <reference types="node" />
|
2
|
+
import { IncomingMessage } from './types.js';
|
3
|
+
export type MethodMatcherInput = string | Iterable<string> | MethodMatcher;
|
4
|
+
export type MethodMatcher = (req: IncomingMessage) => boolean;
|
5
|
+
export declare function createMethodMatcher(method: MethodMatcherInput): MethodMatcher;
|
6
|
+
//# sourceMappingURL=method.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"method.d.ts","sourceRoot":"","sources":["../../../src/lib/http/method.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,aAAa,CAAA;AAC1E,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAA;AAE7D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,GAAG,aAAa,CAY7E"}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.createMethodMatcher = void 0;
|
4
|
+
function createMethodMatcher(method) {
|
5
|
+
if (method === '*')
|
6
|
+
return () => true;
|
7
|
+
if (typeof method === 'function')
|
8
|
+
return method;
|
9
|
+
if (typeof method === 'string') {
|
10
|
+
method = method.toUpperCase();
|
11
|
+
return (req) => req.method === method;
|
12
|
+
}
|
13
|
+
const set = new Set(Array.from(method, (m) => m.toUpperCase()));
|
14
|
+
if (set.size === 0)
|
15
|
+
return () => false;
|
16
|
+
return (req) => req.method != null && set.has(req.method);
|
17
|
+
}
|
18
|
+
exports.createMethodMatcher = createMethodMatcher;
|
19
|
+
//# sourceMappingURL=method.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"method.js","sourceRoot":"","sources":["../../../src/lib/http/method.ts"],"names":[],"mappings":";;;AAKA,SAAgB,mBAAmB,CAAC,MAA0B;IAC5D,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,GAAG,EAAE,CAAC,IAAI,CAAA;IACrC,IAAI,OAAO,MAAM,KAAK,UAAU;QAAE,OAAO,MAAM,CAAA;IAE/C,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;QAC7B,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAA;IACvC,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;IAC/D,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,GAAG,EAAE,CAAC,KAAK,CAAA;IACtC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AAC3D,CAAC;AAZD,kDAYC"}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
/// <reference types="node" />
|
2
|
+
import type { IncomingMessage, ServerResponse } from 'node:http';
|
3
|
+
import { Middleware, Handler, NextFunction } from './types.js';
|
4
|
+
export declare function combineMiddlewares<M extends Middleware<any, any, any>>(middlewares: Iterable<null | undefined | M>, options?: {
|
5
|
+
skipKeyword?: string;
|
6
|
+
}): M;
|
7
|
+
export type AsHandler<M extends Middleware<any, any, any>> = M extends Middleware<infer T, infer Req, infer Res> ? Handler<T, Req, Res> : never;
|
8
|
+
/**
|
9
|
+
* Convert a middleware in a function that can be used as both a middleware and
|
10
|
+
* and handler.
|
11
|
+
*/
|
12
|
+
export declare function asHandler<M extends Middleware<any, any, any>>(middleware: M, options?: FinalHandlerOptions): AsHandler<M>;
|
13
|
+
export type FinalHandlerOptions = {
|
14
|
+
debug?: boolean;
|
15
|
+
};
|
16
|
+
export declare function createFinalHandler(req: IncomingMessage, res: ServerResponse, options?: FinalHandlerOptions): NextFunction;
|
17
|
+
export declare function once<T extends NextFunction>(next: T): T;
|
18
|
+
//# sourceMappingURL=middleware.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/lib/http/middleware.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAEhE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9D,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACpE,WAAW,EAAE,QAAQ,CAAC,IAAI,GAAG,SAAS,GAAG,CAAC,CAAC,EAC3C,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACjC,CAAC,CAAA;AAwCJ,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IACvD,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,CAAC,GAC/C,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GACpB,KAAK,CAAA;AAEX;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC3D,UAAU,EAAE,CAAC,EACb,OAAO,CAAC,EAAE,mBAAmB,gBAU9B;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,YAAY,CAqBd;AA4CD,wBAAgB,IAAI,CAAC,CAAC,SAAS,YAAY,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAQvD"}
|
@@ -0,0 +1,118 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.once = exports.createFinalHandler = exports.asHandler = exports.combineMiddlewares = void 0;
|
4
|
+
const response_js_1 = require("./response.js");
|
5
|
+
/**
|
6
|
+
* Combine express/connect like middlewares (that can be async) into a single
|
7
|
+
* middleware.
|
8
|
+
*/
|
9
|
+
function combineMiddlewares(middlewares, { skipKeyword } = {}) {
|
10
|
+
const middlewaresArray = Array.from(middlewares).filter((x) => x != null);
|
11
|
+
// Optimization: if there are no middlewares, return a noop middleware.
|
12
|
+
if (middlewaresArray.length === 0)
|
13
|
+
return (req, res, next) => void next();
|
14
|
+
return function (req, res, next) {
|
15
|
+
let i = 0;
|
16
|
+
const nextMiddleware = (err) => {
|
17
|
+
if (err) {
|
18
|
+
if (skipKeyword && err === skipKeyword)
|
19
|
+
next();
|
20
|
+
else
|
21
|
+
next(err);
|
22
|
+
}
|
23
|
+
else if (i >= middlewaresArray.length) {
|
24
|
+
next();
|
25
|
+
}
|
26
|
+
else {
|
27
|
+
const currentMiddleware = middlewaresArray[i++];
|
28
|
+
const currentNext = once(nextMiddleware);
|
29
|
+
try {
|
30
|
+
const result = currentMiddleware.call(this, req, res, currentNext);
|
31
|
+
Promise.resolve(result).catch(currentNext);
|
32
|
+
}
|
33
|
+
catch (err) {
|
34
|
+
currentNext(err);
|
35
|
+
}
|
36
|
+
}
|
37
|
+
};
|
38
|
+
nextMiddleware();
|
39
|
+
};
|
40
|
+
}
|
41
|
+
exports.combineMiddlewares = combineMiddlewares;
|
42
|
+
/**
|
43
|
+
* Convert a middleware in a function that can be used as both a middleware and
|
44
|
+
* and handler.
|
45
|
+
*/
|
46
|
+
function asHandler(middleware, options) {
|
47
|
+
return function (req, res, next = once(createFinalHandler(req, res, options))) {
|
48
|
+
return middleware.call(this, req, res, next);
|
49
|
+
};
|
50
|
+
}
|
51
|
+
exports.asHandler = asHandler;
|
52
|
+
function createFinalHandler(req, res, options) {
|
53
|
+
return (err) => {
|
54
|
+
if (err && (options?.debug ?? process.env['NODE_ENV'] === 'development')) {
|
55
|
+
console.error(err);
|
56
|
+
}
|
57
|
+
if (res.headersSent) {
|
58
|
+
// If an error occurred, and headers were sent, we can't know that the
|
59
|
+
// whole response body was sent. So we can't safely reuse the socket.
|
60
|
+
if (err)
|
61
|
+
req.socket.destroy();
|
62
|
+
return;
|
63
|
+
}
|
64
|
+
const { status, ...payload } = buildFallbackPayload(req, err);
|
65
|
+
res.setHeader('Content-Security-Policy', "default-src 'none'");
|
66
|
+
res.setHeader('X-Content-Type-Options', 'nosniff');
|
67
|
+
(0, response_js_1.writeJson)(res, payload, status);
|
68
|
+
};
|
69
|
+
}
|
70
|
+
exports.createFinalHandler = createFinalHandler;
|
71
|
+
function buildFallbackPayload(req, err) {
|
72
|
+
const status = err ? getErrorStatusCode(err) : 404;
|
73
|
+
const expose = getProp(err, 'expose', 'boolean') ?? status < 500;
|
74
|
+
return {
|
75
|
+
status,
|
76
|
+
error: err
|
77
|
+
? expose
|
78
|
+
? getProp(err, 'code', 'string') ??
|
79
|
+
getProp(err, 'error', 'string') ??
|
80
|
+
'unknown_error'
|
81
|
+
: 'system_error'
|
82
|
+
: 'not_found',
|
83
|
+
error_description: err instanceof Error
|
84
|
+
? expose
|
85
|
+
? getProp(err, 'error_description', 'string') ||
|
86
|
+
String(err.message) ||
|
87
|
+
'Unknown error'
|
88
|
+
: 'System error'
|
89
|
+
: `Cannot ${req.method} ${req.url}`,
|
90
|
+
stack: err instanceof Error && process.env['NODE_ENV'] === 'development'
|
91
|
+
? err.stack
|
92
|
+
: undefined,
|
93
|
+
};
|
94
|
+
}
|
95
|
+
function getErrorStatusCode(err) {
|
96
|
+
const status = getProp(err, 'status', 'number') ?? getProp(err, 'statusCode', 'number');
|
97
|
+
return status != null && status >= 400 && status < 600 ? status : 500;
|
98
|
+
}
|
99
|
+
function once(next) {
|
100
|
+
let nextNullable = next;
|
101
|
+
return function (err) {
|
102
|
+
if (!nextNullable)
|
103
|
+
throw new Error('next() called multiple times');
|
104
|
+
const next = nextNullable;
|
105
|
+
nextNullable = null;
|
106
|
+
return next(err);
|
107
|
+
};
|
108
|
+
}
|
109
|
+
exports.once = once;
|
110
|
+
function getProp(obj, key, type) {
|
111
|
+
if (obj != null && typeof obj === 'object' && key in obj) {
|
112
|
+
const value = obj[key];
|
113
|
+
if (typeof value === type)
|
114
|
+
return value;
|
115
|
+
}
|
116
|
+
return undefined;
|
117
|
+
}
|
118
|
+
//# sourceMappingURL=middleware.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/lib/http/middleware.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
/// <reference types="node" />
|
2
|
+
export type JsonScalar = string | number | boolean | null;
|
3
|
+
export type Json = JsonScalar | Json[] | {
|
4
|
+
[_ in string]?: Json;
|
5
|
+
};
|
6
|
+
export type Parser<T extends string = string, R = unknown> = {
|
7
|
+
readonly name: string;
|
8
|
+
readonly test: (type: string) => type is T;
|
9
|
+
readonly parse: (buffer: Buffer) => R;
|
10
|
+
};
|
11
|
+
export type ParserName<P extends Parser> = P extends {
|
12
|
+
readonly name: infer N;
|
13
|
+
} ? N : never;
|
14
|
+
export type ParserType<P extends Parser> = P extends Parser<infer T> ? T : never;
|
15
|
+
export type ParserResult<P extends Parser> = ReturnType<P['parse']>;
|
16
|
+
export type ParserForType<P extends Parser, T> = P extends Parser<infer U> ? (U extends T ? P : never) : never;
|
17
|
+
export declare const parsers: [{
|
18
|
+
readonly name: "json";
|
19
|
+
readonly test: (type: string) => type is "application/json" | `application/${string}+json`;
|
20
|
+
readonly parse: (buffer: Buffer) => Json;
|
21
|
+
}, {
|
22
|
+
readonly name: "urlencoded";
|
23
|
+
readonly test: (type: string) => type is "application/x-www-form-urlencoded";
|
24
|
+
readonly parse: (buffer: Buffer) => Partial<Record<string, string>>;
|
25
|
+
}, {
|
26
|
+
readonly name: "bytes";
|
27
|
+
readonly test: (type: string) => type is "application/octet-stream";
|
28
|
+
readonly parse: (buffer: Buffer) => Buffer;
|
29
|
+
}];
|
30
|
+
export type KnownParser = (typeof parsers)[number];
|
31
|
+
export type KnownNames = KnownParser['name'];
|
32
|
+
export type KnownTypes = ParserType<KnownParser>;
|
33
|
+
//# sourceMappingURL=parser.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/lib/http/parser.ts"],"names":[],"mappings":";AAGA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;AACzD,MAAM,MAAM,IAAI,GAAG,UAAU,GAAG,IAAI,EAAE,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI;CAAE,CAAA;AAEjE,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,OAAO,IAAI;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,CAAA;IAC1C,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,CAAA;CACtC,CAAA;AAED,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;CAAE,GAC3E,CAAC,GACD,KAAK,CAAA;AACT,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAChF,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;AAEnE,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAC3C,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAA;AAE/D,eAAO,MAAM,OAAO;;0BAIR,MAAM;6BAIE,MAAM,KAAG,IAAI;;;0BAUhB,MAAM;6BAGH,MAAM,KAAG,QAAQ,OAAO,MAAM,EAAE,MAAM,CAAC,CAAC;;;0BAW3C,MAAM;6BAGH,MAAM,KAAG,MAAM;EAEN,CAAA;AAE7B,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;AAElD,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;AAC5C,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,CAAA"}
|
@@ -0,0 +1,48 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.parsers = void 0;
|
7
|
+
const bourne_1 = require("@hapi/bourne");
|
8
|
+
const http_errors_1 = __importDefault(require("http-errors"));
|
9
|
+
exports.parsers = [
|
10
|
+
{
|
11
|
+
name: 'json',
|
12
|
+
test: (type) => {
|
13
|
+
return /^application\/(?:.+\+)?json$/.test(type);
|
14
|
+
},
|
15
|
+
parse: (buffer) => {
|
16
|
+
try {
|
17
|
+
return (0, bourne_1.parse)(buffer.toString());
|
18
|
+
}
|
19
|
+
catch (err) {
|
20
|
+
throw (0, http_errors_1.default)(400, 'Invalid JSON', { cause: err });
|
21
|
+
}
|
22
|
+
},
|
23
|
+
},
|
24
|
+
{
|
25
|
+
name: 'urlencoded',
|
26
|
+
test: (type) => {
|
27
|
+
return type === 'application/x-www-form-urlencoded';
|
28
|
+
},
|
29
|
+
parse: (buffer) => {
|
30
|
+
try {
|
31
|
+
if (!buffer.length)
|
32
|
+
return {};
|
33
|
+
return Object.fromEntries(new URLSearchParams(buffer.toString()));
|
34
|
+
}
|
35
|
+
catch (err) {
|
36
|
+
throw (0, http_errors_1.default)(400, 'Invalid URL-encoded data', { cause: err });
|
37
|
+
}
|
38
|
+
},
|
39
|
+
},
|
40
|
+
{
|
41
|
+
name: 'bytes',
|
42
|
+
test: (type) => {
|
43
|
+
return type === 'application/octet-stream';
|
44
|
+
},
|
45
|
+
parse: (buffer) => buffer,
|
46
|
+
},
|
47
|
+
];
|
48
|
+
//# sourceMappingURL=parser.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/lib/http/parser.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAiD;AACjD,8DAAyC;AAoB5B,QAAA,OAAO,GAAG;IACrB;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,CACJ,IAAY,EAC+C,EAAE;YAC7D,OAAO,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClD,CAAC;QACD,KAAK,EAAE,CAAC,MAAc,EAAQ,EAAE;YAC9B,IAAI,CAAC;gBACH,OAAO,IAAA,cAAS,EAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;YACrC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAA,qBAAe,EAAC,GAAG,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;YAC5D,CAAC;QACH,CAAC;KACF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,CAAC,IAAY,EAA+C,EAAE;YAClE,OAAO,IAAI,KAAK,mCAAmC,CAAA;QACrD,CAAC;QACD,KAAK,EAAE,CAAC,MAAc,EAAmC,EAAE;YACzD,IAAI,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,MAAM;oBAAE,OAAO,EAAE,CAAA;gBAC7B,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;YACnE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAA,qBAAe,EAAC,GAAG,EAAE,0BAA0B,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;YACxE,CAAC;QACH,CAAC;KACF;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,CAAC,IAAY,EAAsC,EAAE;YACzD,OAAO,IAAI,KAAK,0BAA0B,CAAA;QAC5C,CAAC;QACD,KAAK,EAAE,CAAC,MAAc,EAAU,EAAE,CAAC,MAAM;KAC1C;CAC0B,CAAA"}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
export type PathMatcher<P extends Params> = (pathname: string) => P | undefined;
|
2
|
+
type StringPath<P extends Params> = string extends keyof P ? `/${string}` : keyof P extends never ? `/${string}` | `` : {
|
3
|
+
[K in keyof P]: K extends string ? `${`/:${K}` | `/${string}/:${K}`}${StringPath<Omit<P, K>>}` | `${StringPath<Omit<P, K>>}${`/:${K}` | `/:${K}/${string}`}` : never;
|
4
|
+
}[keyof P];
|
5
|
+
export type Path<P extends Params> = string | StringPath<P> | RegExp | PathMatcher<P>;
|
6
|
+
export type Params = Record<string, undefined | string>;
|
7
|
+
export declare function createPathMatcher<P extends Params = Params>(refPath: Path<P>): PathMatcher<P>;
|
8
|
+
export {};
|
9
|
+
//# sourceMappingURL=path.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../../src/lib/http/path.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,QAAQ,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,CAAA;AAE/E,KAAK,UAAU,CAAC,CAAC,SAAS,MAAM,IAAI,MAAM,SAAS,MAAM,CAAC,GACtD,IAAI,MAAM,EAAE,GACZ,MAAM,CAAC,SAAS,KAAK,GACnB,IAAI,MAAM,EAAE,GAAG,EAAE,GACjB;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,MAAM,GAExB,GAAG,KAAK,CAAC,EAAE,GAAG,IAAI,MAAM,KAAK,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAC3D,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,MAAM,EAAE,EAAE,GAC/D,KAAK;CACV,CAAC,MAAM,CAAC,CAAC,CAAA;AAEhB,MAAM,MAAM,IAAI,CAAC,CAAC,SAAS,MAAM,IAC7B,MAAM,GACN,UAAU,CAAC,CAAC,CAAC,GACb,MAAM,GACN,WAAW,CAAC,CAAC,CAAC,CAAA;AAClB,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC,CAAA;AAEvD,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EACzD,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,GACf,WAAW,CAAC,CAAC,CAAC,CA0DhB"}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.createPathMatcher = void 0;
|
4
|
+
function createPathMatcher(refPath) {
|
5
|
+
if (typeof refPath === 'string') {
|
6
|
+
// Create a path matcher for a path with parameters (like /foo/:fooId/bar/:barId).
|
7
|
+
if (refPath.includes('/:')) {
|
8
|
+
const refParts = refPath
|
9
|
+
.slice(1)
|
10
|
+
.split('/')
|
11
|
+
.map((part, i) => [part, i]);
|
12
|
+
const refPartsLength = refParts.length;
|
13
|
+
const staticParts = refParts.filter(([p]) => !p.startsWith(':'));
|
14
|
+
const paramParts = refParts
|
15
|
+
// Extract parameters, ignoring those with no name (like /foo/:/bar).
|
16
|
+
.filter(([p]) => p.startsWith(':') && p.length > 1)
|
17
|
+
.map(([p, i]) => [p.slice(1), i]);
|
18
|
+
return (reqPath) => {
|
19
|
+
const reqParts = reqPath.slice(1).split('/');
|
20
|
+
if (reqParts.length !== refPartsLength)
|
21
|
+
return undefined;
|
22
|
+
// Make sure all static parts match.
|
23
|
+
for (let i = 0; i < staticParts.length; i++) {
|
24
|
+
const value = staticParts[i][0];
|
25
|
+
const idx = staticParts[i][1];
|
26
|
+
if (value !== reqParts[idx])
|
27
|
+
return undefined;
|
28
|
+
}
|
29
|
+
// Then extract the parameters.
|
30
|
+
const params = {};
|
31
|
+
for (let i = 0; i < paramParts.length; i++) {
|
32
|
+
const name = paramParts[i][0];
|
33
|
+
const idx = paramParts[i][1];
|
34
|
+
const value = reqParts[idx];
|
35
|
+
// Empty parameter values are not allowed.
|
36
|
+
if (!value)
|
37
|
+
return undefined;
|
38
|
+
params[name] = value;
|
39
|
+
}
|
40
|
+
return params;
|
41
|
+
};
|
42
|
+
}
|
43
|
+
return (reqPath) => (reqPath === refPath ? {} : undefined);
|
44
|
+
}
|
45
|
+
if (refPath instanceof RegExp) {
|
46
|
+
return (reqPath) => {
|
47
|
+
const match = reqPath.match(refPath);
|
48
|
+
return match ? (match.groups || {}) : undefined;
|
49
|
+
};
|
50
|
+
}
|
51
|
+
return refPath;
|
52
|
+
}
|
53
|
+
exports.createPathMatcher = createPathMatcher;
|
54
|
+
//# sourceMappingURL=path.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../../src/lib/http/path.ts"],"names":[],"mappings":"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"}
|