@plumix/core 0.1.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/LICENSE +21 -0
- package/README.md +12 -0
- package/dist/admin/index.d.ts +2 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +2 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/runtime.d.ts +23 -0
- package/dist/admin/runtime.d.ts.map +1 -0
- package/dist/admin/runtime.js +46 -0
- package/dist/admin/runtime.js.map +1 -0
- package/dist/admin-bar/build-tree.d.ts +3 -0
- package/dist/admin-bar/build-tree.d.ts.map +1 -0
- package/dist/admin-bar/build-tree.js +35 -0
- package/dist/admin-bar/build-tree.js.map +1 -0
- package/dist/admin-bar/collect.d.ts +4 -0
- package/dist/admin-bar/collect.d.ts.map +1 -0
- package/dist/admin-bar/collect.js +29 -0
- package/dist/admin-bar/collect.js.map +1 -0
- package/dist/admin-bar/component.d.ts +15 -0
- package/dist/admin-bar/component.d.ts.map +1 -0
- package/dist/admin-bar/component.js +65 -0
- package/dist/admin-bar/component.js.map +1 -0
- package/dist/admin-bar/core-contributors.d.ts +12 -0
- package/dist/admin-bar/core-contributors.d.ts.map +1 -0
- package/dist/admin-bar/core-contributors.js +147 -0
- package/dist/admin-bar/core-contributors.js.map +1 -0
- package/dist/admin-bar/i18n.d.ts +34 -0
- package/dist/admin-bar/i18n.d.ts.map +1 -0
- package/dist/admin-bar/i18n.js +85 -0
- package/dist/admin-bar/i18n.js.map +1 -0
- package/dist/admin-bar/styles.d.ts +5 -0
- package/dist/admin-bar/styles.d.ts.map +1 -0
- package/dist/admin-bar/styles.js +252 -0
- package/dist/admin-bar/styles.js.map +1 -0
- package/dist/admin-bar/types.d.ts +64 -0
- package/dist/admin-bar/types.d.ts.map +1 -0
- package/dist/admin-bar/types.js +8 -0
- package/dist/admin-bar/types.js.map +1 -0
- package/dist/auth/api-tokens.d.ts +84 -0
- package/dist/auth/api-tokens.d.ts.map +1 -0
- package/dist/auth/api-tokens.js +121 -0
- package/dist/auth/api-tokens.js.map +1 -0
- package/dist/auth/authenticator.d.ts +109 -0
- package/dist/auth/authenticator.d.ts.map +1 -0
- package/dist/auth/authenticator.js +98 -0
- package/dist/auth/authenticator.js.map +1 -0
- package/dist/auth/bearer.d.ts +9 -0
- package/dist/auth/bearer.d.ts.map +1 -0
- package/dist/auth/bearer.js +28 -0
- package/dist/auth/bearer.js.map +1 -0
- package/dist/auth/bootstrap.d.ts +14 -0
- package/dist/auth/bootstrap.d.ts.map +1 -0
- package/dist/auth/bootstrap.js +27 -0
- package/dist/auth/bootstrap.js.map +1 -0
- package/dist/auth/config.d.ts +96 -0
- package/dist/auth/config.d.ts.map +1 -0
- package/dist/auth/config.js +98 -0
- package/dist/auth/config.js.map +1 -0
- package/dist/auth/cookies.d.ts +29 -0
- package/dist/auth/cookies.d.ts.map +1 -0
- package/dist/auth/cookies.js +70 -0
- package/dist/auth/cookies.js.map +1 -0
- package/dist/auth/csrf.d.ts +42 -0
- package/dist/auth/csrf.d.ts.map +1 -0
- package/dist/auth/csrf.js +80 -0
- package/dist/auth/csrf.js.map +1 -0
- package/dist/auth/device-flow-routes.d.ts +28 -0
- package/dist/auth/device-flow-routes.d.ts.map +1 -0
- package/dist/auth/device-flow-routes.js +90 -0
- package/dist/auth/device-flow-routes.js.map +1 -0
- package/dist/auth/device-flow.d.ts +111 -0
- package/dist/auth/device-flow.d.ts.map +1 -0
- package/dist/auth/device-flow.js +221 -0
- package/dist/auth/device-flow.js.map +1 -0
- package/dist/auth/email/messages.d.ts +21 -0
- package/dist/auth/email/messages.d.ts.map +1 -0
- package/dist/auth/email/messages.js +91 -0
- package/dist/auth/email/messages.js.map +1 -0
- package/dist/auth/email-change/cancel.d.ts +15 -0
- package/dist/auth/email-change/cancel.d.ts.map +1 -0
- package/dist/auth/email-change/cancel.js +18 -0
- package/dist/auth/email-change/cancel.js.map +1 -0
- package/dist/auth/email-change/errors.d.ts +13 -0
- package/dist/auth/email-change/errors.d.ts.map +1 -0
- package/dist/auth/email-change/errors.js +45 -0
- package/dist/auth/email-change/errors.js.map +1 -0
- package/dist/auth/email-change/index.d.ts +5 -0
- package/dist/auth/email-change/index.d.ts.map +1 -0
- package/dist/auth/email-change/index.js +5 -0
- package/dist/auth/email-change/index.js.map +1 -0
- package/dist/auth/email-change/request.d.ts +55 -0
- package/dist/auth/email-change/request.d.ts.map +1 -0
- package/dist/auth/email-change/request.js +93 -0
- package/dist/auth/email-change/request.js.map +1 -0
- package/dist/auth/email-change/routes.d.ts +17 -0
- package/dist/auth/email-change/routes.d.ts.map +1 -0
- package/dist/auth/email-change/routes.js +63 -0
- package/dist/auth/email-change/routes.js.map +1 -0
- package/dist/auth/email-change/verify.d.ts +30 -0
- package/dist/auth/email-change/verify.d.ts.map +1 -0
- package/dist/auth/email-change/verify.js +81 -0
- package/dist/auth/email-change/verify.js.map +1 -0
- package/dist/auth/flow-routes.d.ts +15 -0
- package/dist/auth/flow-routes.d.ts.map +1 -0
- package/dist/auth/flow-routes.js +15 -0
- package/dist/auth/flow-routes.js.map +1 -0
- package/dist/auth/identity.d.ts +96 -0
- package/dist/auth/identity.d.ts.map +1 -0
- package/dist/auth/identity.js +145 -0
- package/dist/auth/identity.js.map +1 -0
- package/dist/auth/index.d.ts +16 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +16 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/invite.d.ts +25 -0
- package/dist/auth/invite.d.ts.map +1 -0
- package/dist/auth/invite.js +53 -0
- package/dist/auth/invite.js.map +1 -0
- package/dist/auth/magic-link/errors.d.ts +13 -0
- package/dist/auth/magic-link/errors.d.ts.map +1 -0
- package/dist/auth/magic-link/errors.js +40 -0
- package/dist/auth/magic-link/errors.js.map +1 -0
- package/dist/auth/magic-link/index.d.ts +4 -0
- package/dist/auth/magic-link/index.d.ts.map +1 -0
- package/dist/auth/magic-link/index.js +6 -0
- package/dist/auth/magic-link/index.js.map +1 -0
- package/dist/auth/magic-link/request.d.ts +57 -0
- package/dist/auth/magic-link/request.d.ts.map +1 -0
- package/dist/auth/magic-link/request.js +119 -0
- package/dist/auth/magic-link/request.js.map +1 -0
- package/dist/auth/magic-link/routes.d.ts +20 -0
- package/dist/auth/magic-link/routes.d.ts.map +1 -0
- package/dist/auth/magic-link/routes.js +121 -0
- package/dist/auth/magic-link/routes.js.map +1 -0
- package/dist/auth/magic-link/verify.d.ts +43 -0
- package/dist/auth/magic-link/verify.d.ts.map +1 -0
- package/dist/auth/magic-link/verify.js +80 -0
- package/dist/auth/magic-link/verify.js.map +1 -0
- package/dist/auth/mailer/console.d.ts +22 -0
- package/dist/auth/mailer/console.d.ts.map +1 -0
- package/dist/auth/mailer/console.js +24 -0
- package/dist/auth/mailer/console.js.map +1 -0
- package/dist/auth/mailer/index.d.ts +4 -0
- package/dist/auth/mailer/index.d.ts.map +1 -0
- package/dist/auth/mailer/index.js +2 -0
- package/dist/auth/mailer/index.js.map +1 -0
- package/dist/auth/mailer/resolve.d.ts +12 -0
- package/dist/auth/mailer/resolve.d.ts.map +1 -0
- package/dist/auth/mailer/resolve.js +5 -0
- package/dist/auth/mailer/resolve.js.map +1 -0
- package/dist/auth/mailer/types.d.ts +25 -0
- package/dist/auth/mailer/types.d.ts.map +1 -0
- package/dist/auth/mailer/types.js +1 -0
- package/dist/auth/mailer/types.js.map +1 -0
- package/dist/auth/oauth/consumer.d.ts +37 -0
- package/dist/auth/oauth/consumer.d.ts.map +1 -0
- package/dist/auth/oauth/consumer.js +136 -0
- package/dist/auth/oauth/consumer.js.map +1 -0
- package/dist/auth/oauth/errors.d.ts +22 -0
- package/dist/auth/oauth/errors.d.ts.map +1 -0
- package/dist/auth/oauth/errors.js +57 -0
- package/dist/auth/oauth/errors.js.map +1 -0
- package/dist/auth/oauth/index.d.ts +7 -0
- package/dist/auth/oauth/index.d.ts.map +1 -0
- package/dist/auth/oauth/index.js +22 -0
- package/dist/auth/oauth/index.js.map +1 -0
- package/dist/auth/oauth/match.d.ts +19 -0
- package/dist/auth/oauth/match.d.ts.map +1 -0
- package/dist/auth/oauth/match.js +28 -0
- package/dist/auth/oauth/match.js.map +1 -0
- package/dist/auth/oauth/pkce.d.ts +3 -0
- package/dist/auth/oauth/pkce.d.ts.map +1 -0
- package/dist/auth/oauth/pkce.js +13 -0
- package/dist/auth/oauth/pkce.js.map +1 -0
- package/dist/auth/oauth/providers/github.d.ts +3 -0
- package/dist/auth/oauth/providers/github.d.ts.map +1 -0
- package/dist/auth/oauth/providers/github.js +39 -0
- package/dist/auth/oauth/providers/github.js.map +1 -0
- package/dist/auth/oauth/providers/google.d.ts +3 -0
- package/dist/auth/oauth/providers/google.d.ts.map +1 -0
- package/dist/auth/oauth/providers/google.js +26 -0
- package/dist/auth/oauth/providers/google.js.map +1 -0
- package/dist/auth/oauth/providers/index.d.ts +3 -0
- package/dist/auth/oauth/providers/index.d.ts.map +1 -0
- package/dist/auth/oauth/providers/index.js +3 -0
- package/dist/auth/oauth/providers/index.js.map +1 -0
- package/dist/auth/oauth/routes.d.ts +5 -0
- package/dist/auth/oauth/routes.d.ts.map +1 -0
- package/dist/auth/oauth/routes.js +134 -0
- package/dist/auth/oauth/routes.js.map +1 -0
- package/dist/auth/oauth/signup.d.ts +40 -0
- package/dist/auth/oauth/signup.d.ts.map +1 -0
- package/dist/auth/oauth/signup.js +92 -0
- package/dist/auth/oauth/signup.js.map +1 -0
- package/dist/auth/oauth/state.d.ts +19 -0
- package/dist/auth/oauth/state.d.ts.map +1 -0
- package/dist/auth/oauth/state.js +48 -0
- package/dist/auth/oauth/state.js.map +1 -0
- package/dist/auth/oauth/types.d.ts +81 -0
- package/dist/auth/oauth/types.d.ts.map +1 -0
- package/dist/auth/oauth/types.js +6 -0
- package/dist/auth/oauth/types.js.map +1 -0
- package/dist/auth/passkey/authenticate.d.ts +26 -0
- package/dist/auth/passkey/authenticate.d.ts.map +1 -0
- package/dist/auth/passkey/authenticate.js +124 -0
- package/dist/auth/passkey/authenticate.js.map +1 -0
- package/dist/auth/passkey/challenges.d.ts +31 -0
- package/dist/auth/passkey/challenges.d.ts.map +1 -0
- package/dist/auth/passkey/challenges.js +57 -0
- package/dist/auth/passkey/challenges.js.map +1 -0
- package/dist/auth/passkey/config.d.ts +18 -0
- package/dist/auth/passkey/config.d.ts.map +1 -0
- package/dist/auth/passkey/config.js +14 -0
- package/dist/auth/passkey/config.js.map +1 -0
- package/dist/auth/passkey/errors.d.ts +41 -0
- package/dist/auth/passkey/errors.d.ts.map +1 -0
- package/dist/auth/passkey/errors.js +85 -0
- package/dist/auth/passkey/errors.js.map +1 -0
- package/dist/auth/passkey/index.d.ts +7 -0
- package/dist/auth/passkey/index.d.ts.map +1 -0
- package/dist/auth/passkey/index.js +7 -0
- package/dist/auth/passkey/index.js.map +1 -0
- package/dist/auth/passkey/register.d.ts +39 -0
- package/dist/auth/passkey/register.d.ts.map +1 -0
- package/dist/auth/passkey/register.js +175 -0
- package/dist/auth/passkey/register.js.map +1 -0
- package/dist/auth/passkey/routes.d.ts +10 -0
- package/dist/auth/passkey/routes.d.ts.map +1 -0
- package/dist/auth/passkey/routes.js +450 -0
- package/dist/auth/passkey/routes.js.map +1 -0
- package/dist/auth/passkey/types.d.ts +59 -0
- package/dist/auth/passkey/types.d.ts.map +1 -0
- package/dist/auth/passkey/types.js +1 -0
- package/dist/auth/passkey/types.js.map +1 -0
- package/dist/auth/preview-token.d.ts +21 -0
- package/dist/auth/preview-token.d.ts.map +1 -0
- package/dist/auth/preview-token.js +43 -0
- package/dist/auth/preview-token.js.map +1 -0
- package/dist/auth/rbac.d.ts +81 -0
- package/dist/auth/rbac.d.ts.map +1 -0
- package/dist/auth/rbac.js +166 -0
- package/dist/auth/rbac.js.map +1 -0
- package/dist/auth/sessions.d.ts +69 -0
- package/dist/auth/sessions.d.ts.map +1 -0
- package/dist/auth/sessions.js +147 -0
- package/dist/auth/sessions.js.map +1 -0
- package/dist/auth/sign-in.d.ts +21 -0
- package/dist/auth/sign-in.d.ts.map +1 -0
- package/dist/auth/sign-in.js +26 -0
- package/dist/auth/sign-in.js.map +1 -0
- package/dist/auth/tokens.d.ts +9 -0
- package/dist/auth/tokens.d.ts.map +1 -0
- package/dist/auth/tokens.js +23 -0
- package/dist/auth/tokens.js.map +1 -0
- package/dist/base-path.d.ts +36 -0
- package/dist/base-path.d.ts.map +1 -0
- package/dist/base-path.js +57 -0
- package/dist/base-path.js.map +1 -0
- package/dist/cache/decision.d.ts +34 -0
- package/dist/cache/decision.d.ts.map +1 -0
- package/dist/cache/decision.js +47 -0
- package/dist/cache/decision.js.map +1 -0
- package/dist/cache/purge.d.ts +17 -0
- package/dist/cache/purge.d.ts.map +1 -0
- package/dist/cache/purge.js +82 -0
- package/dist/cache/purge.js.map +1 -0
- package/dist/cache/read-through.d.ts +30 -0
- package/dist/cache/read-through.d.ts.map +1 -0
- package/dist/cache/read-through.js +28 -0
- package/dist/cache/read-through.js.map +1 -0
- package/dist/cache/tags.d.ts +30 -0
- package/dist/cache/tags.d.ts.map +1 -0
- package/dist/cache/tags.js +46 -0
- package/dist/cache/tags.js.map +1 -0
- package/dist/cli/errors.d.ts +75 -0
- package/dist/cli/errors.d.ts.map +1 -0
- package/dist/cli/errors.js +85 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +5 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/schema-codegen.d.ts +8 -0
- package/dist/cli/schema-codegen.d.ts.map +1 -0
- package/dist/cli/schema-codegen.js +21 -0
- package/dist/cli/schema-codegen.js.map +1 -0
- package/dist/cli/spawn.d.ts +7 -0
- package/dist/cli/spawn.d.ts.map +1 -0
- package/dist/cli/spawn.js +22 -0
- package/dist/cli/spawn.js.map +1 -0
- package/dist/cli/worker-codegen.d.ts +5 -0
- package/dist/cli/worker-codegen.d.ts.map +1 -0
- package/dist/cli/worker-codegen.js +41 -0
- package/dist/cli/worker-codegen.js.map +1 -0
- package/dist/config.d.ts +141 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.errors.d.ts +13 -0
- package/dist/config.errors.d.ts.map +1 -0
- package/dist/config.errors.js +20 -0
- package/dist/config.errors.js.map +1 -0
- package/dist/config.js +36 -0
- package/dist/config.js.map +1 -0
- package/dist/context/app.d.ts +260 -0
- package/dist/context/app.d.ts.map +1 -0
- package/dist/context/app.js +149 -0
- package/dist/context/app.js.map +1 -0
- package/dist/context/errors.d.ts +16 -0
- package/dist/context/errors.d.ts.map +1 -0
- package/dist/context/errors.js +27 -0
- package/dist/context/errors.js.map +1 -0
- package/dist/context/index.d.ts +3 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +3 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/stores.d.ts +19 -0
- package/dist/context/stores.d.ts.map +1 -0
- package/dist/context/stores.js +19 -0
- package/dist/context/stores.js.map +1 -0
- package/dist/db/errors.d.ts +2 -0
- package/dist/db/errors.d.ts.map +1 -0
- package/dist/db/errors.js +69 -0
- package/dist/db/errors.js.map +1 -0
- package/dist/db/index.d.ts +4 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +3 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/libsql.d.ts +30 -0
- package/dist/db/libsql.d.ts.map +1 -0
- package/dist/db/libsql.js +33 -0
- package/dist/db/libsql.js.map +1 -0
- package/dist/db/schema/allowed_domains.d.ts +230 -0
- package/dist/db/schema/allowed_domains.d.ts.map +1 -0
- package/dist/db/schema/allowed_domains.js +16 -0
- package/dist/db/schema/allowed_domains.js.map +1 -0
- package/dist/db/schema/api_tokens.d.ts +497 -0
- package/dist/db/schema/api_tokens.d.ts.map +1 -0
- package/dist/db/schema/api_tokens.js +72 -0
- package/dist/db/schema/api_tokens.js.map +1 -0
- package/dist/db/schema/auth_tokens.d.ts +505 -0
- package/dist/db/schema/auth_tokens.d.ts.map +1 -0
- package/dist/db/schema/auth_tokens.js +36 -0
- package/dist/db/schema/auth_tokens.js.map +1 -0
- package/dist/db/schema/credentials.d.ts +551 -0
- package/dist/db/schema/credentials.d.ts.map +1 -0
- package/dist/db/schema/credentials.js +32 -0
- package/dist/db/schema/credentials.js.map +1 -0
- package/dist/db/schema/device_codes.d.ts +454 -0
- package/dist/db/schema/device_codes.d.ts.map +1 -0
- package/dist/db/schema/device_codes.js +96 -0
- package/dist/db/schema/device_codes.js.map +1 -0
- package/dist/db/schema/entries.d.ts +779 -0
- package/dist/db/schema/entries.d.ts.map +1 -0
- package/dist/db/schema/entries.js +53 -0
- package/dist/db/schema/entries.js.map +1 -0
- package/dist/db/schema/entry_term.d.ts +167 -0
- package/dist/db/schema/entry_term.d.ts.map +1 -0
- package/dist/db/schema/entry_term.js +21 -0
- package/dist/db/schema/entry_term.js.map +1 -0
- package/dist/db/schema/index.d.ts +13 -0
- package/dist/db/schema/index.d.ts.map +1 -0
- package/dist/db/schema/index.js +13 -0
- package/dist/db/schema/index.js.map +1 -0
- package/dist/db/schema/oauth_accounts.d.ts +230 -0
- package/dist/db/schema/oauth_accounts.d.ts.map +1 -0
- package/dist/db/schema/oauth_accounts.js +22 -0
- package/dist/db/schema/oauth_accounts.js.map +1 -0
- package/dist/db/schema/sessions.d.ts +338 -0
- package/dist/db/schema/sessions.d.ts.map +1 -0
- package/dist/db/schema/sessions.js +24 -0
- package/dist/db/schema/sessions.js.map +1 -0
- package/dist/db/schema/settings.d.ts +185 -0
- package/dist/db/schema/settings.d.ts.map +1 -0
- package/dist/db/schema/settings.js +16 -0
- package/dist/db/schema/settings.js.map +1 -0
- package/dist/db/schema/terms.d.ts +452 -0
- package/dist/db/schema/terms.d.ts.map +1 -0
- package/dist/db/schema/terms.js +28 -0
- package/dist/db/schema/terms.js.map +1 -0
- package/dist/db/schema/users.d.ts +556 -0
- package/dist/db/schema/users.d.ts.map +1 -0
- package/dist/db/schema/users.js +36 -0
- package/dist/db/schema/users.js.map +1 -0
- package/dist/document-merge.d.ts +21 -0
- package/dist/document-merge.d.ts.map +1 -0
- package/dist/document-merge.js +51 -0
- package/dist/document-merge.js.map +1 -0
- package/dist/entries/errors.d.ts +22 -0
- package/dist/entries/errors.d.ts.map +1 -0
- package/dist/entries/errors.js +26 -0
- package/dist/entries/errors.js.map +1 -0
- package/dist/entries/read-service.d.ts +25 -0
- package/dist/entries/read-service.d.ts.map +1 -0
- package/dist/entries/read-service.js +159 -0
- package/dist/entries/read-service.js.map +1 -0
- package/dist/hooks/block-render.d.ts +30 -0
- package/dist/hooks/block-render.d.ts.map +1 -0
- package/dist/hooks/block-render.js +11 -0
- package/dist/hooks/block-render.js.map +1 -0
- package/dist/hooks/errors.d.ts +9 -0
- package/dist/hooks/errors.d.ts.map +1 -0
- package/dist/hooks/errors.js +19 -0
- package/dist/hooks/errors.js.map +1 -0
- package/dist/hooks/index.d.ts +5 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +4 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/registry.d.ts +51 -0
- package/dist/hooks/registry.d.ts.map +1 -0
- package/dist/hooks/registry.js +104 -0
- package/dist/hooks/registry.js.map +1 -0
- package/dist/hooks/types.d.ts +17 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/types.js +8 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/i18n/accept-language.d.ts +3 -0
- package/dist/i18n/accept-language.d.ts.map +1 -0
- package/dist/i18n/accept-language.js +61 -0
- package/dist/i18n/accept-language.js.map +1 -0
- package/dist/i18n/context.d.ts +10 -0
- package/dist/i18n/context.d.ts.map +1 -0
- package/dist/i18n/context.js +9 -0
- package/dist/i18n/context.js.map +1 -0
- package/dist/i18n/cookie.d.ts +8 -0
- package/dist/i18n/cookie.d.ts.map +1 -0
- package/dist/i18n/cookie.js +27 -0
- package/dist/i18n/cookie.js.map +1 -0
- package/dist/i18n/errors.d.ts +16 -0
- package/dist/i18n/errors.d.ts.map +1 -0
- package/dist/i18n/errors.js +28 -0
- package/dist/i18n/errors.js.map +1 -0
- package/dist/i18n/format.d.ts +13 -0
- package/dist/i18n/format.d.ts.map +1 -0
- package/dist/i18n/format.js +37 -0
- package/dist/i18n/format.js.map +1 -0
- package/dist/i18n/generic-type-labels.d.ts +209 -0
- package/dist/i18n/generic-type-labels.d.ts.map +1 -0
- package/dist/i18n/generic-type-labels.js +125 -0
- package/dist/i18n/generic-type-labels.js.map +1 -0
- package/dist/i18n/index.d.ts +10 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +19 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/label.d.ts +15 -0
- package/dist/i18n/label.d.ts.map +1 -0
- package/dist/i18n/label.js +25 -0
- package/dist/i18n/label.js.map +1 -0
- package/dist/i18n/load-catalog.d.ts +26 -0
- package/dist/i18n/load-catalog.d.ts.map +1 -0
- package/dist/i18n/load-catalog.js +54 -0
- package/dist/i18n/load-catalog.js.map +1 -0
- package/dist/i18n/locale-registry.d.ts +33 -0
- package/dist/i18n/locale-registry.d.ts.map +1 -0
- package/dist/i18n/locale-registry.js +72 -0
- package/dist/i18n/locale-registry.js.map +1 -0
- package/dist/i18n/resolve-locale.d.ts +10 -0
- package/dist/i18n/resolve-locale.d.ts.map +1 -0
- package/dist/i18n/resolve-locale.js +29 -0
- package/dist/i18n/resolve-locale.js.map +1 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/content-tools.d.ts +182 -0
- package/dist/mcp/content-tools.d.ts.map +1 -0
- package/dist/mcp/content-tools.js +67 -0
- package/dist/mcp/content-tools.js.map +1 -0
- package/dist/mcp/dispatch.d.ts +12 -0
- package/dist/mcp/dispatch.d.ts.map +1 -0
- package/dist/mcp/dispatch.js +30 -0
- package/dist/mcp/dispatch.js.map +1 -0
- package/dist/mcp/errors.d.ts +29 -0
- package/dist/mcp/errors.d.ts.map +1 -0
- package/dist/mcp/errors.js +36 -0
- package/dist/mcp/errors.js.map +1 -0
- package/dist/mcp/index.d.ts +3 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +2 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/registry.d.ts +13 -0
- package/dist/mcp/registry.d.ts.map +1 -0
- package/dist/mcp/registry.js +28 -0
- package/dist/mcp/registry.js.map +1 -0
- package/dist/mcp/schema-describe.d.ts +13 -0
- package/dist/mcp/schema-describe.d.ts.map +1 -0
- package/dist/mcp/schema-describe.js +49 -0
- package/dist/mcp/schema-describe.js.map +1 -0
- package/dist/mcp/schema-projection.d.ts +5 -0
- package/dist/mcp/schema-projection.d.ts.map +1 -0
- package/dist/mcp/schema-projection.js +11 -0
- package/dist/mcp/schema-projection.js.map +1 -0
- package/dist/mcp/server.d.ts +7 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +40 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/term-tools.d.ts +59 -0
- package/dist/mcp/term-tools.d.ts.map +1 -0
- package/dist/mcp/term-tools.js +77 -0
- package/dist/mcp/term-tools.js.map +1 -0
- package/dist/mcp/tool.d.ts +20 -0
- package/dist/mcp/tool.d.ts.map +1 -0
- package/dist/mcp/tool.js +1 -0
- package/dist/mcp/tool.js.map +1 -0
- package/dist/plugin/define.d.ts +77 -0
- package/dist/plugin/define.d.ts.map +1 -0
- package/dist/plugin/define.js +74 -0
- package/dist/plugin/define.js.map +1 -0
- package/dist/plugin/errors.d.ts +265 -0
- package/dist/plugin/errors.d.ts.map +1 -0
- package/dist/plugin/errors.js +330 -0
- package/dist/plugin/errors.js.map +1 -0
- package/dist/plugin/fields/checkbox.d.ts +19 -0
- package/dist/plugin/fields/checkbox.d.ts.map +1 -0
- package/dist/plugin/fields/checkbox.js +20 -0
- package/dist/plugin/fields/checkbox.js.map +1 -0
- package/dist/plugin/fields/color.d.ts +28 -0
- package/dist/plugin/fields/color.d.ts.map +1 -0
- package/dist/plugin/fields/color.js +30 -0
- package/dist/plugin/fields/color.js.map +1 -0
- package/dist/plugin/fields/date.d.ts +24 -0
- package/dist/plugin/fields/date.d.ts.map +1 -0
- package/dist/plugin/fields/date.js +23 -0
- package/dist/plugin/fields/date.js.map +1 -0
- package/dist/plugin/fields/datetime.d.ts +26 -0
- package/dist/plugin/fields/datetime.d.ts.map +1 -0
- package/dist/plugin/fields/datetime.js +25 -0
- package/dist/plugin/fields/datetime.js.map +1 -0
- package/dist/plugin/fields/email.d.ts +17 -0
- package/dist/plugin/fields/email.d.ts.map +1 -0
- package/dist/plugin/fields/email.js +18 -0
- package/dist/plugin/fields/email.js.map +1 -0
- package/dist/plugin/fields/entry-list.d.ts +28 -0
- package/dist/plugin/fields/entry-list.d.ts.map +1 -0
- package/dist/plugin/fields/entry-list.js +31 -0
- package/dist/plugin/fields/entry-list.js.map +1 -0
- package/dist/plugin/fields/entry.d.ts +40 -0
- package/dist/plugin/fields/entry.d.ts.map +1 -0
- package/dist/plugin/fields/entry.js +25 -0
- package/dist/plugin/fields/entry.js.map +1 -0
- package/dist/plugin/fields/errors.d.ts +35 -0
- package/dist/plugin/fields/errors.d.ts.map +1 -0
- package/dist/plugin/fields/errors.js +41 -0
- package/dist/plugin/fields/errors.js.map +1 -0
- package/dist/plugin/fields/index.d.ts +50 -0
- package/dist/plugin/fields/index.d.ts.map +1 -0
- package/dist/plugin/fields/index.js +37 -0
- package/dist/plugin/fields/index.js.map +1 -0
- package/dist/plugin/fields/json.d.ts +19 -0
- package/dist/plugin/fields/json.d.ts.map +1 -0
- package/dist/plugin/fields/json.js +20 -0
- package/dist/plugin/fields/json.js.map +1 -0
- package/dist/plugin/fields/multiselect.d.ts +21 -0
- package/dist/plugin/fields/multiselect.d.ts.map +1 -0
- package/dist/plugin/fields/multiselect.js +43 -0
- package/dist/plugin/fields/multiselect.js.map +1 -0
- package/dist/plugin/fields/number.d.ts +23 -0
- package/dist/plugin/fields/number.d.ts.map +1 -0
- package/dist/plugin/fields/number.js +24 -0
- package/dist/plugin/fields/number.js.map +1 -0
- package/dist/plugin/fields/parse-date.d.ts +7 -0
- package/dist/plugin/fields/parse-date.d.ts.map +1 -0
- package/dist/plugin/fields/parse-date.js +42 -0
- package/dist/plugin/fields/parse-date.js.map +1 -0
- package/dist/plugin/fields/password.d.ts +24 -0
- package/dist/plugin/fields/password.d.ts.map +1 -0
- package/dist/plugin/fields/password.js +25 -0
- package/dist/plugin/fields/password.js.map +1 -0
- package/dist/plugin/fields/radio.d.ts +16 -0
- package/dist/plugin/fields/radio.d.ts.map +1 -0
- package/dist/plugin/fields/radio.js +17 -0
- package/dist/plugin/fields/radio.js.map +1 -0
- package/dist/plugin/fields/range.d.ts +28 -0
- package/dist/plugin/fields/range.d.ts.map +1 -0
- package/dist/plugin/fields/range.js +46 -0
- package/dist/plugin/fields/range.js.map +1 -0
- package/dist/plugin/fields/repeater-validate.d.ts +34 -0
- package/dist/plugin/fields/repeater-validate.d.ts.map +1 -0
- package/dist/plugin/fields/repeater-validate.js +104 -0
- package/dist/plugin/fields/repeater-validate.js.map +1 -0
- package/dist/plugin/fields/repeater.d.ts +16 -0
- package/dist/plugin/fields/repeater.d.ts.map +1 -0
- package/dist/plugin/fields/repeater.js +68 -0
- package/dist/plugin/fields/repeater.js.map +1 -0
- package/dist/plugin/fields/richtext-validate.d.ts +61 -0
- package/dist/plugin/fields/richtext-validate.d.ts.map +1 -0
- package/dist/plugin/fields/richtext-validate.js +190 -0
- package/dist/plugin/fields/richtext-validate.js.map +1 -0
- package/dist/plugin/fields/richtext.d.ts +25 -0
- package/dist/plugin/fields/richtext.d.ts.map +1 -0
- package/dist/plugin/fields/richtext.js +31 -0
- package/dist/plugin/fields/richtext.js.map +1 -0
- package/dist/plugin/fields/select.d.ts +20 -0
- package/dist/plugin/fields/select.d.ts.map +1 -0
- package/dist/plugin/fields/select.js +21 -0
- package/dist/plugin/fields/select.js.map +1 -0
- package/dist/plugin/fields/term-list.d.ts +27 -0
- package/dist/plugin/fields/term-list.d.ts.map +1 -0
- package/dist/plugin/fields/term-list.js +30 -0
- package/dist/plugin/fields/term-list.js.map +1 -0
- package/dist/plugin/fields/term.d.ts +34 -0
- package/dist/plugin/fields/term.d.ts.map +1 -0
- package/dist/plugin/fields/term.js +24 -0
- package/dist/plugin/fields/term.js.map +1 -0
- package/dist/plugin/fields/text.d.ts +37 -0
- package/dist/plugin/fields/text.d.ts.map +1 -0
- package/dist/plugin/fields/text.js +31 -0
- package/dist/plugin/fields/text.js.map +1 -0
- package/dist/plugin/fields/textarea.d.ts +20 -0
- package/dist/plugin/fields/textarea.d.ts.map +1 -0
- package/dist/plugin/fields/textarea.js +21 -0
- package/dist/plugin/fields/textarea.js.map +1 -0
- package/dist/plugin/fields/time.d.ts +24 -0
- package/dist/plugin/fields/time.d.ts.map +1 -0
- package/dist/plugin/fields/time.js +23 -0
- package/dist/plugin/fields/time.js.map +1 -0
- package/dist/plugin/fields/url.d.ts +17 -0
- package/dist/plugin/fields/url.d.ts.map +1 -0
- package/dist/plugin/fields/url.js +18 -0
- package/dist/plugin/fields/url.js.map +1 -0
- package/dist/plugin/fields/user-list.d.ts +29 -0
- package/dist/plugin/fields/user-list.d.ts.map +1 -0
- package/dist/plugin/fields/user-list.js +31 -0
- package/dist/plugin/fields/user-list.js.map +1 -0
- package/dist/plugin/fields/user.d.ts +43 -0
- package/dist/plugin/fields/user.d.ts.map +1 -0
- package/dist/plugin/fields/user.js +30 -0
- package/dist/plugin/fields/user.js.map +1 -0
- package/dist/plugin/index.d.ts +7 -0
- package/dist/plugin/index.d.ts.map +1 -0
- package/dist/plugin/index.js +7 -0
- package/dist/plugin/index.js.map +1 -0
- package/dist/plugin/lookup.d.ts +92 -0
- package/dist/plugin/lookup.d.ts.map +1 -0
- package/dist/plugin/lookup.js +1 -0
- package/dist/plugin/lookup.js.map +1 -0
- package/dist/plugin/manifest.d.ts +1539 -0
- package/dist/plugin/manifest.d.ts.map +1 -0
- package/dist/plugin/manifest.js +913 -0
- package/dist/plugin/manifest.js.map +1 -0
- package/dist/plugin/provides-context.d.ts +26 -0
- package/dist/plugin/provides-context.d.ts.map +1 -0
- package/dist/plugin/provides-context.js +77 -0
- package/dist/plugin/provides-context.js.map +1 -0
- package/dist/plugin/register.d.ts +24 -0
- package/dist/plugin/register.d.ts.map +1 -0
- package/dist/plugin/register.js +45 -0
- package/dist/plugin/register.js.map +1 -0
- package/dist/plugin/setup-context.d.ts +224 -0
- package/dist/plugin/setup-context.d.ts.map +1 -0
- package/dist/plugin/setup-context.js +386 -0
- package/dist/plugin/setup-context.js.map +1 -0
- package/dist/plugin/validation/component-ref.d.ts +2 -0
- package/dist/plugin/validation/component-ref.d.ts.map +1 -0
- package/dist/plugin/validation/component-ref.js +7 -0
- package/dist/plugin/validation/component-ref.js.map +1 -0
- package/dist/plugin/validation/identifiers.d.ts +7 -0
- package/dist/plugin/validation/identifiers.d.ts.map +1 -0
- package/dist/plugin/validation/identifiers.js +92 -0
- package/dist/plugin/validation/identifiers.js.map +1 -0
- package/dist/plugin/validation/index.d.ts +7 -0
- package/dist/plugin/validation/index.d.ts.map +1 -0
- package/dist/plugin/validation/index.js +7 -0
- package/dist/plugin/validation/index.js.map +1 -0
- package/dist/plugin/validation/login-link.d.ts +3 -0
- package/dist/plugin/validation/login-link.d.ts.map +1 -0
- package/dist/plugin/validation/login-link.js +43 -0
- package/dist/plugin/validation/login-link.js.map +1 -0
- package/dist/plugin/validation/meta-box-fields.d.ts +6 -0
- package/dist/plugin/validation/meta-box-fields.d.ts.map +1 -0
- package/dist/plugin/validation/meta-box-fields.js +52 -0
- package/dist/plugin/validation/meta-box-fields.js.map +1 -0
- package/dist/plugin/validation/paths.d.ts +4 -0
- package/dist/plugin/validation/paths.d.ts.map +1 -0
- package/dist/plugin/validation/paths.js +44 -0
- package/dist/plugin/validation/paths.js.map +1 -0
- package/dist/plugin/validation/scheduled-task.d.ts +3 -0
- package/dist/plugin/validation/scheduled-task.d.ts.map +1 -0
- package/dist/plugin/validation/scheduled-task.js +14 -0
- package/dist/plugin/validation/scheduled-task.js.map +1 -0
- package/dist/rest/base.d.ts +27 -0
- package/dist/rest/base.d.ts.map +1 -0
- package/dist/rest/base.js +4 -0
- package/dist/rest/base.js.map +1 -0
- package/dist/rest/build-handler.d.ts +11 -0
- package/dist/rest/build-handler.d.ts.map +1 -0
- package/dist/rest/build-handler.js +53 -0
- package/dist/rest/build-handler.js.map +1 -0
- package/dist/rest/cors.d.ts +11 -0
- package/dist/rest/cors.d.ts.map +1 -0
- package/dist/rest/cors.js +58 -0
- package/dist/rest/cors.js.map +1 -0
- package/dist/rest/entries-resource.d.ts +44 -0
- package/dist/rest/entries-resource.d.ts.map +1 -0
- package/dist/rest/entries-resource.js +79 -0
- package/dist/rest/entries-resource.js.map +1 -0
- package/dist/rest/envelope.d.ts +18 -0
- package/dist/rest/envelope.d.ts.map +1 -0
- package/dist/rest/envelope.js +20 -0
- package/dist/rest/envelope.js.map +1 -0
- package/dist/rest/errors.d.ts +21 -0
- package/dist/rest/errors.d.ts.map +1 -0
- package/dist/rest/errors.js +16 -0
- package/dist/rest/errors.js.map +1 -0
- package/dist/rest/openapi.d.ts +4 -0
- package/dist/rest/openapi.d.ts.map +1 -0
- package/dist/rest/openapi.js +13 -0
- package/dist/rest/openapi.js.map +1 -0
- package/dist/rest/plugin-resources.d.ts +3 -0
- package/dist/rest/plugin-resources.d.ts.map +1 -0
- package/dist/rest/plugin-resources.js +37 -0
- package/dist/rest/plugin-resources.js.map +1 -0
- package/dist/rest/principal.d.ts +19 -0
- package/dist/rest/principal.d.ts.map +1 -0
- package/dist/rest/principal.js +27 -0
- package/dist/rest/principal.js.map +1 -0
- package/dist/rest/projection.d.ts +22 -0
- package/dist/rest/projection.d.ts.map +1 -0
- package/dist/rest/projection.js +99 -0
- package/dist/rest/projection.js.map +1 -0
- package/dist/rest/rest-base.d.ts +14 -0
- package/dist/rest/rest-base.d.ts.map +1 -0
- package/dist/rest/rest-base.js +36 -0
- package/dist/rest/rest-base.js.map +1 -0
- package/dist/rest/rest-routes.d.ts +14 -0
- package/dist/rest/rest-routes.d.ts.map +1 -0
- package/dist/rest/rest-routes.js +32 -0
- package/dist/rest/rest-routes.js.map +1 -0
- package/dist/rest/router.d.ts +117 -0
- package/dist/rest/router.d.ts.map +1 -0
- package/dist/rest/router.js +47 -0
- package/dist/rest/router.js.map +1 -0
- package/dist/rest/schemas.d.ts +102 -0
- package/dist/rest/schemas.d.ts.map +1 -0
- package/dist/rest/schemas.js +72 -0
- package/dist/rest/schemas.js.map +1 -0
- package/dist/rest/terms-resource.d.ts +22 -0
- package/dist/rest/terms-resource.d.ts.map +1 -0
- package/dist/rest/terms-resource.js +44 -0
- package/dist/rest/terms-resource.js.map +1 -0
- package/dist/revisions/errors.d.ts +6 -0
- package/dist/revisions/errors.d.ts.map +1 -0
- package/dist/revisions/errors.js +14 -0
- package/dist/revisions/errors.js.map +1 -0
- package/dist/revisions/repository.d.ts +55 -0
- package/dist/revisions/repository.d.ts.map +1 -0
- package/dist/revisions/repository.js +212 -0
- package/dist/revisions/repository.js.map +1 -0
- package/dist/revisions/slug-codec.d.ts +19 -0
- package/dist/revisions/slug-codec.d.ts.map +1 -0
- package/dist/revisions/slug-codec.js +61 -0
- package/dist/revisions/slug-codec.js.map +1 -0
- package/dist/revisions/snapshot-envelope.d.ts +20 -0
- package/dist/revisions/snapshot-envelope.d.ts.map +1 -0
- package/dist/revisions/snapshot-envelope.js +44 -0
- package/dist/revisions/snapshot-envelope.js.map +1 -0
- package/dist/route/compile.d.ts +15 -0
- package/dist/route/compile.d.ts.map +1 -0
- package/dist/route/compile.js +205 -0
- package/dist/route/compile.js.map +1 -0
- package/dist/route/current.d.ts +56 -0
- package/dist/route/current.d.ts.map +1 -0
- package/dist/route/current.js +50 -0
- package/dist/route/current.js.map +1 -0
- package/dist/route/edit-mode.d.ts +20 -0
- package/dist/route/edit-mode.d.ts.map +1 -0
- package/dist/route/edit-mode.js +22 -0
- package/dist/route/edit-mode.js.map +1 -0
- package/dist/route/errors.d.ts +19 -0
- package/dist/route/errors.d.ts.map +1 -0
- package/dist/route/errors.js +32 -0
- package/dist/route/errors.js.map +1 -0
- package/dist/route/intent.d.ts +35 -0
- package/dist/route/intent.d.ts.map +1 -0
- package/dist/route/intent.js +1 -0
- package/dist/route/intent.js.map +1 -0
- package/dist/route/match.d.ts +7 -0
- package/dist/route/match.d.ts.map +1 -0
- package/dist/route/match.js +18 -0
- package/dist/route/match.js.map +1 -0
- package/dist/route/paginate.d.ts +25 -0
- package/dist/route/paginate.d.ts.map +1 -0
- package/dist/route/paginate.js +24 -0
- package/dist/route/paginate.js.map +1 -0
- package/dist/route/path-chain.d.ts +22 -0
- package/dist/route/path-chain.d.ts.map +1 -0
- package/dist/route/path-chain.js +77 -0
- package/dist/route/path-chain.js.map +1 -0
- package/dist/route/permalink.d.ts +70 -0
- package/dist/route/permalink.d.ts.map +1 -0
- package/dist/route/permalink.js +163 -0
- package/dist/route/permalink.js.map +1 -0
- package/dist/route/preview.d.ts +12 -0
- package/dist/route/preview.d.ts.map +1 -0
- package/dist/route/preview.js +20 -0
- package/dist/route/preview.js.map +1 -0
- package/dist/route/render/archive-props.d.ts +39 -0
- package/dist/route/render/archive-props.d.ts.map +1 -0
- package/dist/route/render/archive-props.js +32 -0
- package/dist/route/render/archive-props.js.map +1 -0
- package/dist/route/render/asset-manifest.d.ts +23 -0
- package/dist/route/render/asset-manifest.d.ts.map +1 -0
- package/dist/route/render/asset-manifest.js +62 -0
- package/dist/route/render/asset-manifest.js.map +1 -0
- package/dist/route/render/build-resolved-entries.d.ts +11 -0
- package/dist/route/render/build-resolved-entries.d.ts.map +1 -0
- package/dist/route/render/build-resolved-entries.js +66 -0
- package/dist/route/render/build-resolved-entries.js.map +1 -0
- package/dist/route/render/inject-editor-bootstrap.d.ts +3 -0
- package/dist/route/render/inject-editor-bootstrap.d.ts.map +1 -0
- package/dist/route/render/inject-editor-bootstrap.js +13 -0
- package/dist/route/render/inject-editor-bootstrap.js.map +1 -0
- package/dist/route/render/inject-islands-bootstrap.d.ts +3 -0
- package/dist/route/render/inject-islands-bootstrap.d.ts.map +1 -0
- package/dist/route/render/inject-islands-bootstrap.js +34 -0
- package/dist/route/render/inject-islands-bootstrap.js.map +1 -0
- package/dist/route/render/render-template.d.ts +47 -0
- package/dist/route/render/render-template.d.ts.map +1 -0
- package/dist/route/render/render-template.js +370 -0
- package/dist/route/render/render-template.js.map +1 -0
- package/dist/route/render/resolved-entry.d.ts +58 -0
- package/dist/route/render/resolved-entry.d.ts.map +1 -0
- package/dist/route/render/resolved-entry.js +1 -0
- package/dist/route/render/resolved-entry.js.map +1 -0
- package/dist/route/render/template-hierarchy.d.ts +68 -0
- package/dist/route/render/template-hierarchy.d.ts.map +1 -0
- package/dist/route/render/template-hierarchy.js +88 -0
- package/dist/route/render/template-hierarchy.js.map +1 -0
- package/dist/route/render/tiptap.d.ts +8 -0
- package/dist/route/render/tiptap.d.ts.map +1 -0
- package/dist/route/render/tiptap.js +134 -0
- package/dist/route/render/tiptap.js.map +1 -0
- package/dist/route/resolve.d.ts +17 -0
- package/dist/route/resolve.d.ts.map +1 -0
- package/dist/route/resolve.js +408 -0
- package/dist/route/resolve.js.map +1 -0
- package/dist/rpc/authenticated.d.ts +2 -0
- package/dist/rpc/authenticated.d.ts.map +1 -0
- package/dist/rpc/authenticated.js +18 -0
- package/dist/rpc/authenticated.js.map +1 -0
- package/dist/rpc/base.d.ts +60 -0
- package/dist/rpc/base.d.ts.map +1 -0
- package/dist/rpc/base.js +4 -0
- package/dist/rpc/base.js.map +1 -0
- package/dist/rpc/build-handler.d.ts +12 -0
- package/dist/rpc/build-handler.d.ts.map +1 -0
- package/dist/rpc/build-handler.js +20 -0
- package/dist/rpc/build-handler.js.map +1 -0
- package/dist/rpc/errors.d.ts +59 -0
- package/dist/rpc/errors.d.ts.map +1 -0
- package/dist/rpc/errors.js +62 -0
- package/dist/rpc/errors.js.map +1 -0
- package/dist/rpc/hooks.d.ts +422 -0
- package/dist/rpc/hooks.d.ts.map +1 -0
- package/dist/rpc/hooks.js +2 -0
- package/dist/rpc/hooks.js.map +1 -0
- package/dist/rpc/index.d.ts +32 -0
- package/dist/rpc/index.d.ts.map +1 -0
- package/dist/rpc/index.js +20 -0
- package/dist/rpc/index.js.map +1 -0
- package/dist/rpc/meta/core.d.ts +132 -0
- package/dist/rpc/meta/core.d.ts.map +1 -0
- package/dist/rpc/meta/core.js +795 -0
- package/dist/rpc/meta/core.js.map +1 -0
- package/dist/rpc/meta/errors.d.ts +16 -0
- package/dist/rpc/meta/errors.d.ts.map +1 -0
- package/dist/rpc/meta/errors.js +26 -0
- package/dist/rpc/meta/errors.js.map +1 -0
- package/dist/rpc/namespaces.d.ts +2 -0
- package/dist/rpc/namespaces.d.ts.map +1 -0
- package/dist/rpc/namespaces.js +16 -0
- package/dist/rpc/namespaces.js.map +1 -0
- package/dist/rpc/procedures/auth/allowed-domains/create.d.ts +72 -0
- package/dist/rpc/procedures/auth/allowed-domains/create.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/allowed-domains/create.js +35 -0
- package/dist/rpc/procedures/auth/allowed-domains/create.js.map +1 -0
- package/dist/rpc/procedures/auth/allowed-domains/delete.d.ts +70 -0
- package/dist/rpc/procedures/auth/allowed-domains/delete.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/allowed-domains/delete.js +25 -0
- package/dist/rpc/procedures/auth/allowed-domains/delete.js.map +1 -0
- package/dist/rpc/procedures/auth/allowed-domains/index.d.ts +281 -0
- package/dist/rpc/procedures/auth/allowed-domains/index.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/allowed-domains/index.js +11 -0
- package/dist/rpc/procedures/auth/allowed-domains/index.js.map +1 -0
- package/dist/rpc/procedures/auth/allowed-domains/list.d.ts +68 -0
- package/dist/rpc/procedures/auth/allowed-domains/list.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/allowed-domains/list.js +19 -0
- package/dist/rpc/procedures/auth/allowed-domains/list.js.map +1 -0
- package/dist/rpc/procedures/auth/allowed-domains/schemas.d.ts +16 -0
- package/dist/rpc/procedures/auth/allowed-domains/schemas.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/allowed-domains/schemas.js +23 -0
- package/dist/rpc/procedures/auth/allowed-domains/schemas.js.map +1 -0
- package/dist/rpc/procedures/auth/allowed-domains/update.d.ts +72 -0
- package/dist/rpc/procedures/auth/allowed-domains/update.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/allowed-domains/update.js +34 -0
- package/dist/rpc/procedures/auth/allowed-domains/update.js.map +1 -0
- package/dist/rpc/procedures/auth/api-tokens/admin-list.d.ts +101 -0
- package/dist/rpc/procedures/auth/api-tokens/admin-list.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/api-tokens/admin-list.js +69 -0
- package/dist/rpc/procedures/auth/api-tokens/admin-list.js.map +1 -0
- package/dist/rpc/procedures/auth/api-tokens/admin-revoke.d.ts +64 -0
- package/dist/rpc/procedures/auth/api-tokens/admin-revoke.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/api-tokens/admin-revoke.js +35 -0
- package/dist/rpc/procedures/auth/api-tokens/admin-revoke.js.map +1 -0
- package/dist/rpc/procedures/auth/api-tokens/create.d.ts +84 -0
- package/dist/rpc/procedures/auth/api-tokens/create.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/api-tokens/create.js +50 -0
- package/dist/rpc/procedures/auth/api-tokens/create.js.map +1 -0
- package/dist/rpc/procedures/auth/api-tokens/index.d.ts +385 -0
- package/dist/rpc/procedures/auth/api-tokens/index.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/api-tokens/index.js +13 -0
- package/dist/rpc/procedures/auth/api-tokens/index.js.map +1 -0
- package/dist/rpc/procedures/auth/api-tokens/list.d.ts +74 -0
- package/dist/rpc/procedures/auth/api-tokens/list.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/api-tokens/list.js +32 -0
- package/dist/rpc/procedures/auth/api-tokens/list.js.map +1 -0
- package/dist/rpc/procedures/auth/api-tokens/revoke.d.ts +64 -0
- package/dist/rpc/procedures/auth/api-tokens/revoke.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/api-tokens/revoke.js +27 -0
- package/dist/rpc/procedures/auth/api-tokens/revoke.js.map +1 -0
- package/dist/rpc/procedures/auth/api-tokens/schemas.d.ts +27 -0
- package/dist/rpc/procedures/auth/api-tokens/schemas.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/api-tokens/schemas.js +68 -0
- package/dist/rpc/procedures/auth/api-tokens/schemas.js.map +1 -0
- package/dist/rpc/procedures/auth/credentials/delete.d.ts +64 -0
- package/dist/rpc/procedures/auth/credentials/delete.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/credentials/delete.js +44 -0
- package/dist/rpc/procedures/auth/credentials/delete.js.map +1 -0
- package/dist/rpc/procedures/auth/credentials/index.d.ts +203 -0
- package/dist/rpc/procedures/auth/credentials/index.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/credentials/index.js +9 -0
- package/dist/rpc/procedures/auth/credentials/index.js.map +1 -0
- package/dist/rpc/procedures/auth/credentials/list.d.ts +72 -0
- package/dist/rpc/procedures/auth/credentials/list.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/credentials/list.js +27 -0
- package/dist/rpc/procedures/auth/credentials/list.js.map +1 -0
- package/dist/rpc/procedures/auth/credentials/rename.d.ts +67 -0
- package/dist/rpc/procedures/auth/credentials/rename.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/credentials/rename.js +27 -0
- package/dist/rpc/procedures/auth/credentials/rename.js.map +1 -0
- package/dist/rpc/procedures/auth/credentials/schemas.d.ts +10 -0
- package/dist/rpc/procedures/auth/credentials/schemas.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/credentials/schemas.js +20 -0
- package/dist/rpc/procedures/auth/credentials/schemas.js.map +1 -0
- package/dist/rpc/procedures/auth/device-flow/approve.d.ts +66 -0
- package/dist/rpc/procedures/auth/device-flow/approve.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/device-flow/approve.js +42 -0
- package/dist/rpc/procedures/auth/device-flow/approve.js.map +1 -0
- package/dist/rpc/procedures/auth/device-flow/deny.d.ts +64 -0
- package/dist/rpc/procedures/auth/device-flow/deny.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/device-flow/deny.js +27 -0
- package/dist/rpc/procedures/auth/device-flow/deny.js.map +1 -0
- package/dist/rpc/procedures/auth/device-flow/index.d.ts +194 -0
- package/dist/rpc/procedures/auth/device-flow/index.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/device-flow/index.js +9 -0
- package/dist/rpc/procedures/auth/device-flow/index.js.map +1 -0
- package/dist/rpc/procedures/auth/device-flow/lookup-helpers.d.ts +19 -0
- package/dist/rpc/procedures/auth/device-flow/lookup-helpers.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/device-flow/lookup-helpers.js +17 -0
- package/dist/rpc/procedures/auth/device-flow/lookup-helpers.js.map +1 -0
- package/dist/rpc/procedures/auth/device-flow/lookup.d.ts +64 -0
- package/dist/rpc/procedures/auth/device-flow/lookup.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/device-flow/lookup.js +23 -0
- package/dist/rpc/procedures/auth/device-flow/lookup.js.map +1 -0
- package/dist/rpc/procedures/auth/device-flow/schemas.d.ts +13 -0
- package/dist/rpc/procedures/auth/device-flow/schemas.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/device-flow/schemas.js +45 -0
- package/dist/rpc/procedures/auth/device-flow/schemas.js.map +1 -0
- package/dist/rpc/procedures/auth/index.d.ts +1524 -0
- package/dist/rpc/procedures/auth/index.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/index.js +21 -0
- package/dist/rpc/procedures/auth/index.js.map +1 -0
- package/dist/rpc/procedures/auth/login-links.d.ts +66 -0
- package/dist/rpc/procedures/auth/login-links.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/login-links.js +14 -0
- package/dist/rpc/procedures/auth/login-links.js.map +1 -0
- package/dist/rpc/procedures/auth/mailer/index.d.ts +66 -0
- package/dist/rpc/procedures/auth/mailer/index.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/mailer/index.js +5 -0
- package/dist/rpc/procedures/auth/mailer/index.js.map +1 -0
- package/dist/rpc/procedures/auth/mailer/schemas.d.ts +5 -0
- package/dist/rpc/procedures/auth/mailer/schemas.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/mailer/schemas.js +5 -0
- package/dist/rpc/procedures/auth/mailer/schemas.js.map +1 -0
- package/dist/rpc/procedures/auth/mailer/test-send.d.ts +64 -0
- package/dist/rpc/procedures/auth/mailer/test-send.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/mailer/test-send.js +44 -0
- package/dist/rpc/procedures/auth/mailer/test-send.js.map +1 -0
- package/dist/rpc/procedures/auth/oauth-providers.d.ts +59 -0
- package/dist/rpc/procedures/auth/oauth-providers.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/oauth-providers.js +8 -0
- package/dist/rpc/procedures/auth/oauth-providers.js.map +1 -0
- package/dist/rpc/procedures/auth/schemas.d.ts +27 -0
- package/dist/rpc/procedures/auth/schemas.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/schemas.js +28 -0
- package/dist/rpc/procedures/auth/schemas.js.map +1 -0
- package/dist/rpc/procedures/auth/session.d.ts +78 -0
- package/dist/rpc/procedures/auth/session.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/session.js +32 -0
- package/dist/rpc/procedures/auth/session.js.map +1 -0
- package/dist/rpc/procedures/auth/sessions/index.d.ts +198 -0
- package/dist/rpc/procedures/auth/sessions/index.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/sessions/index.js +9 -0
- package/dist/rpc/procedures/auth/sessions/index.js.map +1 -0
- package/dist/rpc/procedures/auth/sessions/list.d.ts +72 -0
- package/dist/rpc/procedures/auth/sessions/list.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/sessions/list.js +47 -0
- package/dist/rpc/procedures/auth/sessions/list.js.map +1 -0
- package/dist/rpc/procedures/auth/sessions/revoke-others.d.ts +62 -0
- package/dist/rpc/procedures/auth/sessions/revoke-others.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/sessions/revoke-others.js +47 -0
- package/dist/rpc/procedures/auth/sessions/revoke-others.js.map +1 -0
- package/dist/rpc/procedures/auth/sessions/revoke.d.ts +64 -0
- package/dist/rpc/procedures/auth/sessions/revoke.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/sessions/revoke.js +39 -0
- package/dist/rpc/procedures/auth/sessions/revoke.js.map +1 -0
- package/dist/rpc/procedures/auth/sessions/schemas.d.ts +7 -0
- package/dist/rpc/procedures/auth/sessions/schemas.d.ts.map +1 -0
- package/dist/rpc/procedures/auth/sessions/schemas.js +11 -0
- package/dist/rpc/procedures/auth/sessions/schemas.js.map +1 -0
- package/dist/rpc/procedures/entry/activity.d.ts +75 -0
- package/dist/rpc/procedures/entry/activity.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/activity.js +76 -0
- package/dist/rpc/procedures/entry/activity.js.map +1 -0
- package/dist/rpc/procedures/entry/bulk.d.ts +190 -0
- package/dist/rpc/procedures/entry/bulk.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/bulk.js +72 -0
- package/dist/rpc/procedures/entry/bulk.js.map +1 -0
- package/dist/rpc/procedures/entry/concurrency.d.ts +4 -0
- package/dist/rpc/procedures/entry/concurrency.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/concurrency.js +13 -0
- package/dist/rpc/procedures/entry/concurrency.js.map +1 -0
- package/dist/rpc/procedures/entry/content.d.ts +20 -0
- package/dist/rpc/procedures/entry/content.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/content.js +27 -0
- package/dist/rpc/procedures/entry/content.js.map +1 -0
- package/dist/rpc/procedures/entry/create-preview-link.d.ts +66 -0
- package/dist/rpc/procedures/entry/create-preview-link.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/create-preview-link.js +38 -0
- package/dist/rpc/procedures/entry/create-preview-link.js.map +1 -0
- package/dist/rpc/procedures/entry/create.d.ts +107 -0
- package/dist/rpc/procedures/entry/create.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/create.js +115 -0
- package/dist/rpc/procedures/entry/create.js.map +1 -0
- package/dist/rpc/procedures/entry/dashboard.d.ts +140 -0
- package/dist/rpc/procedures/entry/dashboard.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/dashboard.js +82 -0
- package/dist/rpc/procedures/entry/dashboard.js.map +1 -0
- package/dist/rpc/procedures/entry/delete-permanent.d.ts +90 -0
- package/dist/rpc/procedures/entry/delete-permanent.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/delete-permanent.js +28 -0
- package/dist/rpc/procedures/entry/delete-permanent.js.map +1 -0
- package/dist/rpc/procedures/entry/discard-draft.d.ts +65 -0
- package/dist/rpc/procedures/entry/discard-draft.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/discard-draft.js +43 -0
- package/dist/rpc/procedures/entry/discard-draft.js.map +1 -0
- package/dist/rpc/procedures/entry/duplicate.d.ts +90 -0
- package/dist/rpc/procedures/entry/duplicate.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/duplicate.js +86 -0
- package/dist/rpc/procedures/entry/duplicate.js.map +1 -0
- package/dist/rpc/procedures/entry/get.d.ts +105 -0
- package/dist/rpc/procedures/entry/get.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/get.js +56 -0
- package/dist/rpc/procedures/entry/get.js.map +1 -0
- package/dist/rpc/procedures/entry/helpers.d.ts +2 -0
- package/dist/rpc/procedures/entry/helpers.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/helpers.js +10 -0
- package/dist/rpc/procedures/entry/helpers.js.map +1 -0
- package/dist/rpc/procedures/entry/index.d.ts +1811 -0
- package/dist/rpc/procedures/entry/index.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/index.js +38 -0
- package/dist/rpc/procedures/entry/index.js.map +1 -0
- package/dist/rpc/procedures/entry/lifecycle.d.ts +77 -0
- package/dist/rpc/procedures/entry/lifecycle.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/lifecycle.js +223 -0
- package/dist/rpc/procedures/entry/lifecycle.js.map +1 -0
- package/dist/rpc/procedures/entry/list.d.ts +114 -0
- package/dist/rpc/procedures/entry/list.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/list.js +19 -0
- package/dist/rpc/procedures/entry/list.js.map +1 -0
- package/dist/rpc/procedures/entry/lookup.d.ts +4 -0
- package/dist/rpc/procedures/entry/lookup.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/lookup.js +120 -0
- package/dist/rpc/procedures/entry/lookup.js.map +1 -0
- package/dist/rpc/procedures/entry/meta.d.ts +64 -0
- package/dist/rpc/procedures/entry/meta.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/meta.js +65 -0
- package/dist/rpc/procedures/entry/meta.js.map +1 -0
- package/dist/rpc/procedures/entry/publish-scheduled.d.ts +21 -0
- package/dist/rpc/procedures/entry/publish-scheduled.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/publish-scheduled.js +50 -0
- package/dist/rpc/procedures/entry/publish-scheduled.js.map +1 -0
- package/dist/rpc/procedures/entry/publish.d.ts +92 -0
- package/dist/rpc/procedures/entry/publish.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/publish.js +111 -0
- package/dist/rpc/procedures/entry/publish.js.map +1 -0
- package/dist/rpc/procedures/entry/read-errors.d.ts +29 -0
- package/dist/rpc/procedures/entry/read-errors.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/read-errors.js +23 -0
- package/dist/rpc/procedures/entry/read-errors.js.map +1 -0
- package/dist/rpc/procedures/entry/refresh-block-loader.d.ts +65 -0
- package/dist/rpc/procedures/entry/refresh-block-loader.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/refresh-block-loader.js +42 -0
- package/dist/rpc/procedures/entry/refresh-block-loader.js.map +1 -0
- package/dist/rpc/procedures/entry/restore.d.ts +90 -0
- package/dist/rpc/procedures/entry/restore.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/restore.js +27 -0
- package/dist/rpc/procedures/entry/restore.js.map +1 -0
- package/dist/rpc/procedures/entry/revisions.d.ts +672 -0
- package/dist/rpc/procedures/entry/revisions.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/revisions.js +305 -0
- package/dist/rpc/procedures/entry/revisions.js.map +1 -0
- package/dist/rpc/procedures/entry/schemas.d.ts +172 -0
- package/dist/rpc/procedures/entry/schemas.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/schemas.js +171 -0
- package/dist/rpc/procedures/entry/schemas.js.map +1 -0
- package/dist/rpc/procedures/entry/search-terms.d.ts +45 -0
- package/dist/rpc/procedures/entry/search-terms.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/search-terms.js +79 -0
- package/dist/rpc/procedures/entry/search-terms.js.map +1 -0
- package/dist/rpc/procedures/entry/terms.d.ts +61 -0
- package/dist/rpc/procedures/entry/terms.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/terms.js +128 -0
- package/dist/rpc/procedures/entry/terms.js.map +1 -0
- package/dist/rpc/procedures/entry/trash.d.ts +90 -0
- package/dist/rpc/procedures/entry/trash.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/trash.js +27 -0
- package/dist/rpc/procedures/entry/trash.js.map +1 -0
- package/dist/rpc/procedures/entry/update.d.ts +110 -0
- package/dist/rpc/procedures/entry/update.d.ts.map +1 -0
- package/dist/rpc/procedures/entry/update.js +268 -0
- package/dist/rpc/procedures/entry/update.js.map +1 -0
- package/dist/rpc/procedures/lookup/index.d.ts +135 -0
- package/dist/rpc/procedures/lookup/index.d.ts.map +1 -0
- package/dist/rpc/procedures/lookup/index.js +7 -0
- package/dist/rpc/procedures/lookup/index.js.map +1 -0
- package/dist/rpc/procedures/lookup/list.d.ts +68 -0
- package/dist/rpc/procedures/lookup/list.d.ts.map +1 -0
- package/dist/rpc/procedures/lookup/list.js +23 -0
- package/dist/rpc/procedures/lookup/list.js.map +1 -0
- package/dist/rpc/procedures/lookup/resolve.d.ts +66 -0
- package/dist/rpc/procedures/lookup/resolve.d.ts.map +1 -0
- package/dist/rpc/procedures/lookup/resolve.js +18 -0
- package/dist/rpc/procedures/lookup/resolve.js.map +1 -0
- package/dist/rpc/procedures/lookup/schemas.d.ts +31 -0
- package/dist/rpc/procedures/lookup/schemas.d.ts.map +1 -0
- package/dist/rpc/procedures/lookup/schemas.js +55 -0
- package/dist/rpc/procedures/lookup/schemas.js.map +1 -0
- package/dist/rpc/procedures/lookup-adapters.d.ts +3 -0
- package/dist/rpc/procedures/lookup-adapters.d.ts.map +1 -0
- package/dist/rpc/procedures/lookup-adapters.js +36 -0
- package/dist/rpc/procedures/lookup-adapters.js.map +1 -0
- package/dist/rpc/procedures/lookup.errors.d.ts +15 -0
- package/dist/rpc/procedures/lookup.errors.d.ts.map +1 -0
- package/dist/rpc/procedures/lookup.errors.js +23 -0
- package/dist/rpc/procedures/lookup.errors.js.map +1 -0
- package/dist/rpc/procedures/search/index.d.ts +64 -0
- package/dist/rpc/procedures/search/index.d.ts.map +1 -0
- package/dist/rpc/procedures/search/index.js +25 -0
- package/dist/rpc/procedures/search/index.js.map +1 -0
- package/dist/rpc/procedures/settings/get.d.ts +60 -0
- package/dist/rpc/procedures/settings/get.d.ts.map +1 -0
- package/dist/rpc/procedures/settings/get.js +35 -0
- package/dist/rpc/procedures/settings/get.js.map +1 -0
- package/dist/rpc/procedures/settings/index.d.ts +125 -0
- package/dist/rpc/procedures/settings/index.d.ts.map +1 -0
- package/dist/rpc/procedures/settings/index.js +7 -0
- package/dist/rpc/procedures/settings/index.js.map +1 -0
- package/dist/rpc/procedures/settings/schemas.d.ts +15 -0
- package/dist/rpc/procedures/settings/schemas.d.ts.map +1 -0
- package/dist/rpc/procedures/settings/schemas.js +33 -0
- package/dist/rpc/procedures/settings/schemas.js.map +1 -0
- package/dist/rpc/procedures/settings/upsert.d.ts +63 -0
- package/dist/rpc/procedures/settings/upsert.d.ts.map +1 -0
- package/dist/rpc/procedures/settings/upsert.js +84 -0
- package/dist/rpc/procedures/settings/upsert.js.map +1 -0
- package/dist/rpc/procedures/term/create.d.ts +85 -0
- package/dist/rpc/procedures/term/create.d.ts.map +1 -0
- package/dist/rpc/procedures/term/create.js +73 -0
- package/dist/rpc/procedures/term/create.js.map +1 -0
- package/dist/rpc/procedures/term/delete.d.ts +78 -0
- package/dist/rpc/procedures/term/delete.d.ts.map +1 -0
- package/dist/rpc/procedures/term/delete.js +33 -0
- package/dist/rpc/procedures/term/delete.js.map +1 -0
- package/dist/rpc/procedures/term/get.d.ts +78 -0
- package/dist/rpc/procedures/term/get.d.ts.map +1 -0
- package/dist/rpc/procedures/term/get.js +18 -0
- package/dist/rpc/procedures/term/get.js.map +1 -0
- package/dist/rpc/procedures/term/helpers.d.ts +13 -0
- package/dist/rpc/procedures/term/helpers.d.ts.map +1 -0
- package/dist/rpc/procedures/term/helpers.js +33 -0
- package/dist/rpc/procedures/term/helpers.js.map +1 -0
- package/dist/rpc/procedures/term/index.d.ts +407 -0
- package/dist/rpc/procedures/term/index.d.ts.map +1 -0
- package/dist/rpc/procedures/term/index.js +13 -0
- package/dist/rpc/procedures/term/index.js.map +1 -0
- package/dist/rpc/procedures/term/list.d.ts +82 -0
- package/dist/rpc/procedures/term/list.d.ts.map +1 -0
- package/dist/rpc/procedures/term/list.js +19 -0
- package/dist/rpc/procedures/term/list.js.map +1 -0
- package/dist/rpc/procedures/term/lookup.d.ts +4 -0
- package/dist/rpc/procedures/term/lookup.d.ts.map +1 -0
- package/dist/rpc/procedures/term/lookup.js +111 -0
- package/dist/rpc/procedures/term/lookup.js.map +1 -0
- package/dist/rpc/procedures/term/meta.d.ts +33 -0
- package/dist/rpc/procedures/term/meta.d.ts.map +1 -0
- package/dist/rpc/procedures/term/meta.js +37 -0
- package/dist/rpc/procedures/term/meta.js.map +1 -0
- package/dist/rpc/procedures/term/read-errors.d.ts +23 -0
- package/dist/rpc/procedures/term/read-errors.d.ts.map +1 -0
- package/dist/rpc/procedures/term/read-errors.js +24 -0
- package/dist/rpc/procedures/term/read-errors.js.map +1 -0
- package/dist/rpc/procedures/term/schemas.d.ts +40 -0
- package/dist/rpc/procedures/term/schemas.d.ts.map +1 -0
- package/dist/rpc/procedures/term/schemas.js +32 -0
- package/dist/rpc/procedures/term/schemas.js.map +1 -0
- package/dist/rpc/procedures/term/update.d.ts +85 -0
- package/dist/rpc/procedures/term/update.d.ts.map +1 -0
- package/dist/rpc/procedures/term/update.js +95 -0
- package/dist/rpc/procedures/term/update.js.map +1 -0
- package/dist/rpc/procedures/user/cancel-email-change.d.ts +64 -0
- package/dist/rpc/procedures/user/cancel-email-change.d.ts.map +1 -0
- package/dist/rpc/procedures/user/cancel-email-change.js +35 -0
- package/dist/rpc/procedures/user/cancel-email-change.js.map +1 -0
- package/dist/rpc/procedures/user/delete.d.ts +83 -0
- package/dist/rpc/procedures/user/delete.d.ts.map +1 -0
- package/dist/rpc/procedures/user/delete.js +70 -0
- package/dist/rpc/procedures/user/delete.js.map +1 -0
- package/dist/rpc/procedures/user/disable.d.ts +82 -0
- package/dist/rpc/procedures/user/disable.d.ts.map +1 -0
- package/dist/rpc/procedures/user/disable.js +51 -0
- package/dist/rpc/procedures/user/disable.js.map +1 -0
- package/dist/rpc/procedures/user/enable.d.ts +82 -0
- package/dist/rpc/procedures/user/enable.d.ts.map +1 -0
- package/dist/rpc/procedures/user/enable.js +44 -0
- package/dist/rpc/procedures/user/enable.js.map +1 -0
- package/dist/rpc/procedures/user/get.d.ts +82 -0
- package/dist/rpc/procedures/user/get.d.ts.map +1 -0
- package/dist/rpc/procedures/user/get.js +27 -0
- package/dist/rpc/procedures/user/get.js.map +1 -0
- package/dist/rpc/procedures/user/helpers.d.ts +10 -0
- package/dist/rpc/procedures/user/helpers.d.ts.map +1 -0
- package/dist/rpc/procedures/user/helpers.js +16 -0
- package/dist/rpc/procedures/user/helpers.js.map +1 -0
- package/dist/rpc/procedures/user/index.d.ts +834 -0
- package/dist/rpc/procedures/user/index.d.ts.map +1 -0
- package/dist/rpc/procedures/user/index.js +25 -0
- package/dist/rpc/procedures/user/index.js.map +1 -0
- package/dist/rpc/procedures/user/invite.d.ts +68 -0
- package/dist/rpc/procedures/user/invite.d.ts.map +1 -0
- package/dist/rpc/procedures/user/invite.js +62 -0
- package/dist/rpc/procedures/user/invite.js.map +1 -0
- package/dist/rpc/procedures/user/list.d.ts +89 -0
- package/dist/rpc/procedures/user/list.d.ts.map +1 -0
- package/dist/rpc/procedures/user/list.js +75 -0
- package/dist/rpc/procedures/user/list.js.map +1 -0
- package/dist/rpc/procedures/user/lookup.d.ts +4 -0
- package/dist/rpc/procedures/user/lookup.d.ts.map +1 -0
- package/dist/rpc/procedures/user/lookup.js +95 -0
- package/dist/rpc/procedures/user/lookup.js.map +1 -0
- package/dist/rpc/procedures/user/meta.d.ts +32 -0
- package/dist/rpc/procedures/user/meta.d.ts.map +1 -0
- package/dist/rpc/procedures/user/meta.js +38 -0
- package/dist/rpc/procedures/user/meta.js.map +1 -0
- package/dist/rpc/procedures/user/pending-email-change.d.ts +76 -0
- package/dist/rpc/procedures/user/pending-email-change.d.ts.map +1 -0
- package/dist/rpc/procedures/user/pending-email-change.js +62 -0
- package/dist/rpc/procedures/user/pending-email-change.js.map +1 -0
- package/dist/rpc/procedures/user/request-email-change.d.ts +67 -0
- package/dist/rpc/procedures/user/request-email-change.d.ts.map +1 -0
- package/dist/rpc/procedures/user/request-email-change.js +86 -0
- package/dist/rpc/procedures/user/request-email-change.js.map +1 -0
- package/dist/rpc/procedures/user/schemas.d.ts +52 -0
- package/dist/rpc/procedures/user/schemas.d.ts.map +1 -0
- package/dist/rpc/procedures/user/schemas.js +44 -0
- package/dist/rpc/procedures/user/schemas.js.map +1 -0
- package/dist/rpc/procedures/user/set-locale.d.ts +61 -0
- package/dist/rpc/procedures/user/set-locale.d.ts.map +1 -0
- package/dist/rpc/procedures/user/set-locale.js +31 -0
- package/dist/rpc/procedures/user/set-locale.js.map +1 -0
- package/dist/rpc/procedures/user/update.d.ts +89 -0
- package/dist/rpc/procedures/user/update.d.ts.map +1 -0
- package/dist/rpc/procedures/user/update.js +137 -0
- package/dist/rpc/procedures/user/update.js.map +1 -0
- package/dist/rpc/router.d.ts +4893 -0
- package/dist/rpc/router.d.ts.map +1 -0
- package/dist/rpc/router.js +17 -0
- package/dist/rpc/router.js.map +1 -0
- package/dist/rpc/schemas.d.ts +3 -0
- package/dist/rpc/schemas.d.ts.map +1 -0
- package/dist/rpc/schemas.js +9 -0
- package/dist/rpc/schemas.js.map +1 -0
- package/dist/rpc/validation.d.ts +58 -0
- package/dist/rpc/validation.d.ts.map +1 -0
- package/dist/rpc/validation.js +72 -0
- package/dist/rpc/validation.js.map +1 -0
- package/dist/rpc/vmessage.d.ts +21 -0
- package/dist/rpc/vmessage.d.ts.map +1 -0
- package/dist/rpc/vmessage.js +20 -0
- package/dist/rpc/vmessage.js.map +1 -0
- package/dist/runtime/adapter.d.ts +38 -0
- package/dist/runtime/adapter.d.ts.map +1 -0
- package/dist/runtime/adapter.js +1 -0
- package/dist/runtime/adapter.js.map +1 -0
- package/dist/runtime/admin-shell.d.ts +11 -0
- package/dist/runtime/admin-shell.d.ts.map +1 -0
- package/dist/runtime/admin-shell.js +14 -0
- package/dist/runtime/admin-shell.js.map +1 -0
- package/dist/runtime/app.d.ts +165 -0
- package/dist/runtime/app.d.ts.map +1 -0
- package/dist/runtime/app.js +232 -0
- package/dist/runtime/app.js.map +1 -0
- package/dist/runtime/bindings.d.ts +6 -0
- package/dist/runtime/bindings.d.ts.map +1 -0
- package/dist/runtime/bindings.js +1 -0
- package/dist/runtime/bindings.js.map +1 -0
- package/dist/runtime/dispatcher.d.ts +11 -0
- package/dist/runtime/dispatcher.d.ts.map +1 -0
- package/dist/runtime/dispatcher.js +560 -0
- package/dist/runtime/dispatcher.js.map +1 -0
- package/dist/runtime/env-input.d.ts +19 -0
- package/dist/runtime/env-input.d.ts.map +1 -0
- package/dist/runtime/env-input.js +13 -0
- package/dist/runtime/env-input.js.map +1 -0
- package/dist/runtime/errors.d.ts +29 -0
- package/dist/runtime/errors.d.ts.map +1 -0
- package/dist/runtime/errors.js +32 -0
- package/dist/runtime/errors.js.map +1 -0
- package/dist/runtime/http.d.ts +10 -0
- package/dist/runtime/http.d.ts.map +1 -0
- package/dist/runtime/http.js +51 -0
- package/dist/runtime/http.js.map +1 -0
- package/dist/runtime/load-user-for-public-request.d.ts +3 -0
- package/dist/runtime/load-user-for-public-request.d.ts.map +1 -0
- package/dist/runtime/load-user-for-public-request.js +13 -0
- package/dist/runtime/load-user-for-public-request.js.map +1 -0
- package/dist/runtime/memory-storage.d.ts +8 -0
- package/dist/runtime/memory-storage.d.ts.map +1 -0
- package/dist/runtime/memory-storage.js +166 -0
- package/dist/runtime/memory-storage.js.map +1 -0
- package/dist/runtime/register-core-scheduled-tasks.d.ts +7 -0
- package/dist/runtime/register-core-scheduled-tasks.d.ts.map +1 -0
- package/dist/runtime/register-core-scheduled-tasks.js +38 -0
- package/dist/runtime/register-core-scheduled-tasks.js.map +1 -0
- package/dist/runtime/scheduled.d.ts +17 -0
- package/dist/runtime/scheduled.d.ts.map +1 -0
- package/dist/runtime/scheduled.js +33 -0
- package/dist/runtime/scheduled.js.map +1 -0
- package/dist/runtime/shortcode-registry.d.ts +10 -0
- package/dist/runtime/shortcode-registry.d.ts.map +1 -0
- package/dist/runtime/shortcode-registry.js +15 -0
- package/dist/runtime/shortcode-registry.js.map +1 -0
- package/dist/runtime/slots.d.ts +203 -0
- package/dist/runtime/slots.d.ts.map +1 -0
- package/dist/runtime/slots.js +1 -0
- package/dist/runtime/slots.js.map +1 -0
- package/dist/search/admin-search.d.ts +37 -0
- package/dist/search/admin-search.d.ts.map +1 -0
- package/dist/search/admin-search.js +24 -0
- package/dist/search/admin-search.js.map +1 -0
- package/dist/search/entries-handler.d.ts +10 -0
- package/dist/search/entries-handler.d.ts.map +1 -0
- package/dist/search/entries-handler.js +77 -0
- package/dist/search/entries-handler.js.map +1 -0
- package/dist/search/register-core-handlers.d.ts +8 -0
- package/dist/search/register-core-handlers.d.ts.map +1 -0
- package/dist/search/register-core-handlers.js +20 -0
- package/dist/search/register-core-handlers.js.map +1 -0
- package/dist/search/terms-handler.d.ts +9 -0
- package/dist/search/terms-handler.d.ts.map +1 -0
- package/dist/search/terms-handler.js +61 -0
- package/dist/search/terms-handler.js.map +1 -0
- package/dist/search/users-handler.d.ts +9 -0
- package/dist/search/users-handler.d.ts.map +1 -0
- package/dist/search/users-handler.js +49 -0
- package/dist/search/users-handler.js.map +1 -0
- package/dist/seo/canonical.d.ts +31 -0
- package/dist/seo/canonical.d.ts.map +1 -0
- package/dist/seo/canonical.js +81 -0
- package/dist/seo/canonical.js.map +1 -0
- package/dist/seo/feed.d.ts +73 -0
- package/dist/seo/feed.d.ts.map +1 -0
- package/dist/seo/feed.js +254 -0
- package/dist/seo/feed.js.map +1 -0
- package/dist/seo/head-defaults.d.ts +27 -0
- package/dist/seo/head-defaults.d.ts.map +1 -0
- package/dist/seo/head-defaults.js +82 -0
- package/dist/seo/head-defaults.js.map +1 -0
- package/dist/seo/register-sitemap-invalidator.d.ts +7 -0
- package/dist/seo/register-sitemap-invalidator.d.ts.map +1 -0
- package/dist/seo/register-sitemap-invalidator.js +43 -0
- package/dist/seo/register-sitemap-invalidator.js.map +1 -0
- package/dist/seo/robots.d.ts +20 -0
- package/dist/seo/robots.d.ts.map +1 -0
- package/dist/seo/robots.js +18 -0
- package/dist/seo/robots.js.map +1 -0
- package/dist/seo/site-settings.d.ts +6 -0
- package/dist/seo/site-settings.d.ts.map +1 -0
- package/dist/seo/site-settings.js +11 -0
- package/dist/seo/site-settings.js.map +1 -0
- package/dist/seo/sitemap-cache.d.ts +20 -0
- package/dist/seo/sitemap-cache.d.ts.map +1 -0
- package/dist/seo/sitemap-cache.js +96 -0
- package/dist/seo/sitemap-cache.js.map +1 -0
- package/dist/seo/sitemap.d.ts +26 -0
- package/dist/seo/sitemap.d.ts.map +1 -0
- package/dist/seo/sitemap.js +151 -0
- package/dist/seo/sitemap.js.map +1 -0
- package/dist/seo/xml.d.ts +3 -0
- package/dist/seo/xml.d.ts.map +1 -0
- package/dist/seo/xml.js +12 -0
- package/dist/seo/xml.js.map +1 -0
- package/dist/settings-core.d.ts +49 -0
- package/dist/settings-core.d.ts.map +1 -0
- package/dist/settings-core.js +113 -0
- package/dist/settings-core.js.map +1 -0
- package/dist/slugify.d.ts +14 -0
- package/dist/slugify.d.ts.map +1 -0
- package/dist/slugify.js +17 -0
- package/dist/slugify.js.map +1 -0
- package/dist/template-deps-core.d.ts +19 -0
- package/dist/template-deps-core.d.ts.map +1 -0
- package/dist/template-deps-core.js +35 -0
- package/dist/template-deps-core.js.map +1 -0
- package/dist/template-deps.d.ts +41 -0
- package/dist/template-deps.d.ts.map +1 -0
- package/dist/template-deps.js +90 -0
- package/dist/template-deps.js.map +1 -0
- package/dist/template.d.ts +84 -0
- package/dist/template.d.ts.map +1 -0
- package/dist/template.js +54 -0
- package/dist/template.js.map +1 -0
- package/dist/terms/errors.d.ts +22 -0
- package/dist/terms/errors.d.ts.map +1 -0
- package/dist/terms/errors.js +25 -0
- package/dist/terms/errors.js.map +1 -0
- package/dist/terms/read-service.d.ts +20 -0
- package/dist/terms/read-service.d.ts.map +1 -0
- package/dist/terms/read-service.js +53 -0
- package/dist/terms/read-service.js.map +1 -0
- package/dist/test/default-theme.d.ts +2 -0
- package/dist/test/default-theme.d.ts.map +1 -0
- package/dist/test/default-theme.js +28 -0
- package/dist/test/default-theme.js.map +1 -0
- package/dist/test/defer.d.ts +19 -0
- package/dist/test/defer.d.ts.map +1 -0
- package/dist/test/defer.js +22 -0
- package/dist/test/defer.js.map +1 -0
- package/dist/test/dispatcher.d.ts +139 -0
- package/dist/test/dispatcher.d.ts.map +1 -0
- package/dist/test/dispatcher.js +125 -0
- package/dist/test/dispatcher.js.map +1 -0
- package/dist/test/factories.d.ts +707 -0
- package/dist/test/factories.d.ts.map +1 -0
- package/dist/test/factories.js +336 -0
- package/dist/test/factories.js.map +1 -0
- package/dist/test/fixtures/webauthn.d.ts +40 -0
- package/dist/test/fixtures/webauthn.d.ts.map +1 -0
- package/dist/test/fixtures/webauthn.js +209 -0
- package/dist/test/fixtures/webauthn.js.map +1 -0
- package/dist/test/harness.d.ts +10 -0
- package/dist/test/harness.d.ts.map +1 -0
- package/dist/test/harness.js +34 -0
- package/dist/test/harness.js.map +1 -0
- package/dist/test/index.d.ts +17 -0
- package/dist/test/index.d.ts.map +1 -0
- package/dist/test/index.js +16 -0
- package/dist/test/index.js.map +1 -0
- package/dist/test/mailer.d.ts +26 -0
- package/dist/test/mailer.d.ts.map +1 -0
- package/dist/test/mailer.js +14 -0
- package/dist/test/mailer.js.map +1 -0
- package/dist/test/match.d.ts +14 -0
- package/dist/test/match.d.ts.map +1 -0
- package/dist/test/match.js +83 -0
- package/dist/test/match.js.map +1 -0
- package/dist/test/playwright/acting-as.d.ts +45 -0
- package/dist/test/playwright/acting-as.d.ts.map +1 -0
- package/dist/test/playwright/acting-as.js +50 -0
- package/dist/test/playwright/acting-as.js.map +1 -0
- package/dist/test/playwright/build-admin-chunk.d.ts +24 -0
- package/dist/test/playwright/build-admin-chunk.d.ts.map +1 -0
- package/dist/test/playwright/build-admin-chunk.js +61 -0
- package/dist/test/playwright/build-admin-chunk.js.map +1 -0
- package/dist/test/playwright/index.d.ts +78 -0
- package/dist/test/playwright/index.d.ts.map +1 -0
- package/dist/test/playwright/index.js +155 -0
- package/dist/test/playwright/index.js.map +1 -0
- package/dist/test/playwright/open-playground-db.d.ts +32 -0
- package/dist/test/playwright/open-playground-db.d.ts.map +1 -0
- package/dist/test/playwright/open-playground-db.js +49 -0
- package/dist/test/playwright/open-playground-db.js.map +1 -0
- package/dist/test/playwright/playwright-config.d.ts +84 -0
- package/dist/test/playwright/playwright-config.d.ts.map +1 -0
- package/dist/test/playwright/playwright-config.js +91 -0
- package/dist/test/playwright/playwright-config.js.map +1 -0
- package/dist/test/request.d.ts +66 -0
- package/dist/test/request.d.ts.map +1 -0
- package/dist/test/request.js +110 -0
- package/dist/test/request.js.map +1 -0
- package/dist/test/rpc.d.ts +86 -0
- package/dist/test/rpc.d.ts.map +1 -0
- package/dist/test/rpc.js +91 -0
- package/dist/test/rpc.js.map +1 -0
- package/dist/test/spies.d.ts +68 -0
- package/dist/test/spies.d.ts.map +1 -0
- package/dist/test/spies.js +144 -0
- package/dist/test/spies.js.map +1 -0
- package/dist/theme-errors.d.ts +37 -0
- package/dist/theme-errors.d.ts.map +1 -0
- package/dist/theme-errors.js +87 -0
- package/dist/theme-errors.js.map +1 -0
- package/dist/theme.d.ts +91 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +74 -0
- package/dist/theme.js.map +1 -0
- package/dist/welcome/i18n.d.ts +9 -0
- package/dist/welcome/i18n.d.ts.map +1 -0
- package/dist/welcome/i18n.js +51 -0
- package/dist/welcome/i18n.js.map +1 -0
- package/dist/welcome-theme.d.ts +10 -0
- package/dist/welcome-theme.d.ts.map +1 -0
- package/dist/welcome-theme.js +165 -0
- package/dist/welcome-theme.js.map +1 -0
- package/locales/admin-bar-ar.d.mts +1 -0
- package/locales/admin-bar-ar.mjs +1 -0
- package/locales/admin-bar-ar.po +49 -0
- package/locales/admin-bar-de.d.mts +1 -0
- package/locales/admin-bar-de.mjs +1 -0
- package/locales/admin-bar-de.po +49 -0
- package/locales/admin-bar-en.d.mts +1 -0
- package/locales/admin-bar-en.mjs +1 -0
- package/locales/admin-bar-en.po +49 -0
- package/locales/admin-bar-uk.d.mts +1 -0
- package/locales/admin-bar-uk.mjs +1 -0
- package/locales/admin-bar-uk.po +49 -0
- package/locales/admin-bar-zh-CN.d.mts +1 -0
- package/locales/admin-bar-zh-CN.mjs +1 -0
- package/locales/admin-bar-zh-CN.po +49 -0
- package/locales/welcome-ar.d.mts +1 -0
- package/locales/welcome-ar.mjs +1 -0
- package/locales/welcome-ar.po +33 -0
- package/locales/welcome-de.d.mts +1 -0
- package/locales/welcome-de.mjs +1 -0
- package/locales/welcome-de.po +33 -0
- package/locales/welcome-en.d.mts +1 -0
- package/locales/welcome-en.mjs +1 -0
- package/locales/welcome-en.po +33 -0
- package/locales/welcome-uk.d.mts +1 -0
- package/locales/welcome-uk.mjs +1 -0
- package/locales/welcome-uk.po +33 -0
- package/locales/welcome-zh-CN.d.mts +1 -0
- package/locales/welcome-zh-CN.mjs +1 -0
- package/locales/welcome-zh-CN.po +33 -0
- package/package.json +150 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { Db } from "../../context/app.js";
|
|
2
|
+
import type { User } from "../../db/schema/users.js";
|
|
3
|
+
import type { OAuthProfile } from "./types.js";
|
|
4
|
+
interface ResolveOAuthUserInput {
|
|
5
|
+
readonly provider: string;
|
|
6
|
+
readonly profile: OAuthProfile;
|
|
7
|
+
/**
|
|
8
|
+
* When true, allow this OAuth callback to mint the very first admin
|
|
9
|
+
* (forwarded to `resolveExternalIdentity`). The route handler reads
|
|
10
|
+
* this from `ctx.bootstrapAllowed`, which is derived from
|
|
11
|
+
* `auth.bootstrapVia`. Default false keeps the bootstrap rail
|
|
12
|
+
* passkey-only.
|
|
13
|
+
*/
|
|
14
|
+
readonly bootstrapAllowed?: boolean;
|
|
15
|
+
}
|
|
16
|
+
interface ResolvedOAuthUser {
|
|
17
|
+
readonly user: User;
|
|
18
|
+
/** True when this call provisioned a new user row. */
|
|
19
|
+
readonly created: boolean;
|
|
20
|
+
/** True when this call linked an existing user to the OAuth account. */
|
|
21
|
+
readonly linked: boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Decide who an OAuth callback maps to:
|
|
25
|
+
*
|
|
26
|
+
* 1. If `oauth_accounts(provider, providerAccountId)` already points
|
|
27
|
+
* at a user, that's the answer (modulo disabled / dangling-link).
|
|
28
|
+
* 2. Else delegate to `resolveExternalIdentity` for the lookup-or-
|
|
29
|
+
* provision dance shared with magic-link signup. On success, write
|
|
30
|
+
* the `oauth_accounts` link row.
|
|
31
|
+
*
|
|
32
|
+
* OAuth-specific concerns (link table, dangling-link detection) stay
|
|
33
|
+
* here. The generic identity-resolution logic (verified-email gate,
|
|
34
|
+
* disabled-account gate, allowed-domains gate, bootstrap rail, race-on-
|
|
35
|
+
* insert retry) lives in `auth/identity.ts` and is shared with every
|
|
36
|
+
* external flow.
|
|
37
|
+
*/
|
|
38
|
+
export declare function resolveOAuthUser(db: Db, input: ResolveOAuthUserInput): Promise<ResolvedOAuthUser>;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=signup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signup.d.ts","sourceRoot":"","sources":["../../../src/auth/oauth/signup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAO/C,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,UAAU,iBAAiB;IACzB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,sDAAsD;IACtD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,wEAAwE;IACxE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CAwE5B"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { and, eq, isUniqueConstraintError } from "../../db/index.js";
|
|
2
|
+
import { oauthAccounts } from "../../db/schema/oauth_accounts.js";
|
|
3
|
+
import { users } from "../../db/schema/users.js";
|
|
4
|
+
import { ExternalIdentityError, resolveExternalIdentity } from "../identity.js";
|
|
5
|
+
import { OAuthError } from "./errors.js";
|
|
6
|
+
/**
|
|
7
|
+
* Decide who an OAuth callback maps to:
|
|
8
|
+
*
|
|
9
|
+
* 1. If `oauth_accounts(provider, providerAccountId)` already points
|
|
10
|
+
* at a user, that's the answer (modulo disabled / dangling-link).
|
|
11
|
+
* 2. Else delegate to `resolveExternalIdentity` for the lookup-or-
|
|
12
|
+
* provision dance shared with magic-link signup. On success, write
|
|
13
|
+
* the `oauth_accounts` link row.
|
|
14
|
+
*
|
|
15
|
+
* OAuth-specific concerns (link table, dangling-link detection) stay
|
|
16
|
+
* here. The generic identity-resolution logic (verified-email gate,
|
|
17
|
+
* disabled-account gate, allowed-domains gate, bootstrap rail, race-on-
|
|
18
|
+
* insert retry) lives in `auth/identity.ts` and is shared with every
|
|
19
|
+
* external flow.
|
|
20
|
+
*/
|
|
21
|
+
export async function resolveOAuthUser(db, input) {
|
|
22
|
+
const { provider, profile } = input;
|
|
23
|
+
const existingLink = await db.query.oauthAccounts.findFirst({
|
|
24
|
+
where: and(eq(oauthAccounts.provider, provider), eq(oauthAccounts.providerAccountId, profile.providerAccountId)),
|
|
25
|
+
});
|
|
26
|
+
if (existingLink) {
|
|
27
|
+
const linked = await db.query.users.findFirst({
|
|
28
|
+
where: eq(users.id, existingLink.userId),
|
|
29
|
+
});
|
|
30
|
+
// A dangling oauth_accounts row means the cascade-on-delete didn't
|
|
31
|
+
// fire (FK enforcement off, or hand-rolled SQL). Surface a distinct
|
|
32
|
+
// code so the friendly-message map can say "support" rather than
|
|
33
|
+
// "your account is disabled" — the row is gone, not paused.
|
|
34
|
+
if (!linked)
|
|
35
|
+
throw OAuthError.linkBroken();
|
|
36
|
+
if (linked.disabledAt)
|
|
37
|
+
throw OAuthError.accountDisabled();
|
|
38
|
+
return { user: linked, created: false, linked: false };
|
|
39
|
+
}
|
|
40
|
+
let resolved;
|
|
41
|
+
try {
|
|
42
|
+
resolved = await resolveExternalIdentity(db, {
|
|
43
|
+
email: profile.email,
|
|
44
|
+
emailVerified: profile.emailVerified,
|
|
45
|
+
name: profile.name,
|
|
46
|
+
avatarUrl: profile.avatarUrl,
|
|
47
|
+
bootstrapAllowed: input.bootstrapAllowed,
|
|
48
|
+
// allowed_domains still gates signup; the `oauth_accounts` link
|
|
49
|
+
// row is OAuth-specific and written below regardless of whether
|
|
50
|
+
// the user existed or was just provisioned.
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
if (error instanceof ExternalIdentityError) {
|
|
55
|
+
switch (error.code) {
|
|
56
|
+
case "email_unverified":
|
|
57
|
+
throw OAuthError.emailUnverified();
|
|
58
|
+
case "account_disabled":
|
|
59
|
+
throw OAuthError.accountDisabled();
|
|
60
|
+
case "domain_not_allowed":
|
|
61
|
+
throw OAuthError.domainNotAllowed();
|
|
62
|
+
case "registration_closed":
|
|
63
|
+
throw OAuthError.registrationClosed();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
// Write the OAuth link row. Race retry is its own concern: a
|
|
69
|
+
// concurrent OAuth callback for the same `(provider, providerAccountId)`
|
|
70
|
+
// could fire between our `existingLink` check and this insert.
|
|
71
|
+
try {
|
|
72
|
+
await db.insert(oauthAccounts).values({
|
|
73
|
+
provider,
|
|
74
|
+
providerAccountId: profile.providerAccountId,
|
|
75
|
+
userId: resolved.user.id,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
if (!isUniqueConstraintError(error))
|
|
80
|
+
throw error;
|
|
81
|
+
// Another callback won the race; the link already exists pointing
|
|
82
|
+
// at the same userId (provider + providerAccountId is the PK and
|
|
83
|
+
// resolveExternalIdentity returned the same email-keyed user).
|
|
84
|
+
// Fall through — sign-in succeeds.
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
user: resolved.user,
|
|
88
|
+
created: resolved.created,
|
|
89
|
+
linked: !resolved.created,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=signup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signup.js","sourceRoot":"","sources":["../../../src/auth/oauth/signup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Db } from "../../context/app.js";
|
|
2
|
+
interface OAuthStatePayload {
|
|
3
|
+
readonly provider: string;
|
|
4
|
+
readonly codeVerifier: string;
|
|
5
|
+
}
|
|
6
|
+
interface IssuedOAuthState {
|
|
7
|
+
/** Raw state token to send to the provider via the URL. Never persisted. */
|
|
8
|
+
readonly state: string;
|
|
9
|
+
readonly expiresAt: Date;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Store oauth_state in `auth_tokens` keyed by SHA-256(state). The raw token
|
|
13
|
+
* lives only in the URL round-trip; a DB snapshot leak yields hashes, not
|
|
14
|
+
* forgeable states. Single-use semantics enforced by `consumeOAuthState`.
|
|
15
|
+
*/
|
|
16
|
+
export declare function issueOAuthState(db: Db, payload: OAuthStatePayload, ttlSeconds?: number): Promise<IssuedOAuthState>;
|
|
17
|
+
export declare function consumeOAuthState(db: Db, state: string): Promise<OAuthStatePayload | null>;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/auth/oauth/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAO/C,UAAU,iBAAiB;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,UAAU,gBAAgB;IACxB,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,iBAAiB,EAC1B,UAAU,GAAE,MAAgC,GAC3C,OAAO,CAAC,gBAAgB,CAAC,CAW3B;AAED,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA4BnC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { and, eq } from "../../db/index.js";
|
|
2
|
+
import { authTokens } from "../../db/schema/auth_tokens.js";
|
|
3
|
+
import { generateToken, hashToken } from "../tokens.js";
|
|
4
|
+
const OAUTH_STATE_TTL_SECONDS = 10 * 60;
|
|
5
|
+
/**
|
|
6
|
+
* Store oauth_state in `auth_tokens` keyed by SHA-256(state). The raw token
|
|
7
|
+
* lives only in the URL round-trip; a DB snapshot leak yields hashes, not
|
|
8
|
+
* forgeable states. Single-use semantics enforced by `consumeOAuthState`.
|
|
9
|
+
*/
|
|
10
|
+
export async function issueOAuthState(db, payload, ttlSeconds = OAUTH_STATE_TTL_SECONDS) {
|
|
11
|
+
const state = generateToken();
|
|
12
|
+
const hash = await hashToken(state);
|
|
13
|
+
const expiresAt = new Date(Date.now() + ttlSeconds * 1000);
|
|
14
|
+
await db.insert(authTokens).values({
|
|
15
|
+
hash,
|
|
16
|
+
type: "oauth_state",
|
|
17
|
+
payload: { ...payload },
|
|
18
|
+
expiresAt,
|
|
19
|
+
});
|
|
20
|
+
return { state, expiresAt };
|
|
21
|
+
}
|
|
22
|
+
export async function consumeOAuthState(db, state) {
|
|
23
|
+
const hash = await hashToken(state);
|
|
24
|
+
// Atomic compare-and-delete: `DELETE … RETURNING` returns at most one
|
|
25
|
+
// row to whichever caller wins the SQLite write. A concurrent second
|
|
26
|
+
// consume sees an empty result, never the same payload twice. Scope the
|
|
27
|
+
// DELETE by `type = 'oauth_state'` so a hash collision with another
|
|
28
|
+
// token type (invite, magic_link, …) doesn't accidentally consume that
|
|
29
|
+
// row when the oauth row was never present.
|
|
30
|
+
const [row] = await db
|
|
31
|
+
.delete(authTokens)
|
|
32
|
+
.where(and(eq(authTokens.hash, hash), eq(authTokens.type, "oauth_state")))
|
|
33
|
+
.returning();
|
|
34
|
+
if (!row)
|
|
35
|
+
return null;
|
|
36
|
+
if (row.expiresAt.getTime() < Date.now())
|
|
37
|
+
return null;
|
|
38
|
+
const payload = row.payload;
|
|
39
|
+
if (typeof payload?.provider !== "string" ||
|
|
40
|
+
typeof payload.codeVerifier !== "string") {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
provider: payload.provider,
|
|
45
|
+
codeVerifier: payload.codeVerifier,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/auth/oauth/state.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAExD,MAAM,uBAAuB,GAAG,EAAE,GAAG,EAAE,CAAC;AAaxC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAAM,EACN,OAA0B,EAC1B,aAAqB,uBAAuB;IAE5C,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,GAAG,IAAI,CAAC,CAAC;IAC3D,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;QACjC,IAAI;QACJ,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE;QACvB,SAAS;KACV,CAAC,CAAC;IACH,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,EAAM,EACN,KAAa;IAEb,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;IAEpC,sEAAsE;IACtE,qEAAqE;IACrE,wEAAwE;IACxE,oEAAoE;IACpE,uEAAuE;IACvE,4CAA4C;IAC5C,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE;SACnB,MAAM,CAAC,UAAU,CAAC;SAClB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;SACzE,SAAS,EAAE,CAAC;IAEf,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IAEtD,MAAM,OAAO,GAAG,GAAG,CAAC,OAA4C,CAAC;IACjE,IACE,OAAO,OAAO,EAAE,QAAQ,KAAK,QAAQ;QACrC,OAAO,OAAO,CAAC,YAAY,KAAK,QAAQ,EACxC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type { EnvInput } from "../../runtime/env-input.js";
|
|
2
|
+
export interface OAuthClientConfig {
|
|
3
|
+
readonly clientId: string;
|
|
4
|
+
readonly clientSecret: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Either literal credentials, or an `(env) => OAuthClientConfig` resolver — the
|
|
8
|
+
* client secret is used at token exchange (request time), so on Workers it must
|
|
9
|
+
* come from the per-request `env`, not config-time. See {@link EnvInput}.
|
|
10
|
+
* Module-local: callers reach it through the `github`/`google` factory signature
|
|
11
|
+
* (`OAuthProviderFactory`), never by name.
|
|
12
|
+
*/
|
|
13
|
+
type OAuthClientInput = EnvInput<OAuthClientConfig>;
|
|
14
|
+
export interface OAuthProfile {
|
|
15
|
+
/** Provider-side stable user id. */
|
|
16
|
+
readonly providerAccountId: string;
|
|
17
|
+
readonly email: string;
|
|
18
|
+
/**
|
|
19
|
+
* Whether the provider asserts the email is verified. We refuse to
|
|
20
|
+
* auto-link an OAuth identity to an existing local user unless the
|
|
21
|
+
* provider has confirmed the address — without this any attacker who
|
|
22
|
+
* controls the provider account could claim someone else's email.
|
|
23
|
+
*/
|
|
24
|
+
readonly emailVerified: boolean;
|
|
25
|
+
readonly name: string | null;
|
|
26
|
+
readonly avatarUrl: string | null;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Concrete, configured provider — what `auth({ oauth: { providers } })`
|
|
30
|
+
* accepts. Built-ins (`github`, `google`) ship as factories that return
|
|
31
|
+
* this shape; user-defined providers implement the same interface in
|
|
32
|
+
* their own code and hand an instance to the same config slot. There's
|
|
33
|
+
* no privileged registry — provider keys come from the user's config
|
|
34
|
+
* map, and routes / admin UI / signup all read keys at runtime.
|
|
35
|
+
*/
|
|
36
|
+
export interface OAuthProviderClient {
|
|
37
|
+
/**
|
|
38
|
+
* Human-readable name shown on the login screen ("GitHub", "Google",
|
|
39
|
+
* "Acme SSO"). Travels with the provider definition so adding a new
|
|
40
|
+
* provider is one file, not "edit core + edit admin".
|
|
41
|
+
*/
|
|
42
|
+
readonly label: string;
|
|
43
|
+
readonly authorizeUrl: string;
|
|
44
|
+
readonly tokenUrl: string;
|
|
45
|
+
readonly userInfoUrl: string;
|
|
46
|
+
readonly scopes: readonly string[];
|
|
47
|
+
readonly client: OAuthClientInput;
|
|
48
|
+
/**
|
|
49
|
+
* Translate the provider's userinfo JSON into a partial OAuthProfile.
|
|
50
|
+
* Returning `email: null` is fine — the consumer will call
|
|
51
|
+
* `fetchVerifiedEmail` (if defined) to resolve the missing address.
|
|
52
|
+
*/
|
|
53
|
+
parseProfile(raw: unknown): Omit<OAuthProfile, "email" | "emailVerified"> & {
|
|
54
|
+
email: string | null;
|
|
55
|
+
emailVerified: boolean;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Provider-specific authorize-URL params (Google's `access_type=offline`,
|
|
59
|
+
* etc.). Called after the standard OAuth params are set; the provider
|
|
60
|
+
* may add or override searchParams freely.
|
|
61
|
+
*/
|
|
62
|
+
decorateAuthorizeUrl?(url: URL): void;
|
|
63
|
+
/**
|
|
64
|
+
* Resolve a verified primary email when `parseProfile` returned
|
|
65
|
+
* `email: null`. GitHub needs this — its `/user` endpoint omits
|
|
66
|
+
* email unless made public, but `/user/emails` always carries it.
|
|
67
|
+
* Returning null here surfaces as `email_missing` to the user.
|
|
68
|
+
*/
|
|
69
|
+
fetchVerifiedEmail?(accessToken: string): Promise<{
|
|
70
|
+
email: string;
|
|
71
|
+
verified: boolean;
|
|
72
|
+
} | null>;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Convenience alias for provider factories. Built-ins follow this shape;
|
|
76
|
+
* users can write their own factories the same way.
|
|
77
|
+
*/
|
|
78
|
+
export type OAuthProviderFactory = (client: OAuthClientInput) => OAuthProviderClient;
|
|
79
|
+
export declare const OAUTH_PROVIDER_KEY_PATTERN: RegExp;
|
|
80
|
+
export {};
|
|
81
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/auth/oauth/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,KAAK,gBAAgB,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAEpD,MAAM,WAAW,YAAY;IAC3B,oCAAoC;IACpC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAElC;;;;OAIG;IACH,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,GAAG,eAAe,CAAC,GAAG;QAC1E,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC;IAEF;;;;OAIG;IACH,oBAAoB,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;IAEtC;;;;;OAKG;IACH,kBAAkB,CAAC,CACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;CACzD;AAED;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,CACjC,MAAM,EAAE,gBAAgB,KACrB,mBAAmB,CAAC;AAMzB,eAAO,MAAM,0BAA0B,QAA4B,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Provider keys (the map keys in `auth.oauth.providers`) flow through the
|
|
2
|
+
// URL path and into the `oauth_accounts.provider` column. Constrain the
|
|
3
|
+
// shape to URL-path-safe identifiers so a typo can't smuggle special
|
|
4
|
+
// characters into routing or storage.
|
|
5
|
+
export const OAUTH_PROVIDER_KEY_PATTERN = /^[a-z][a-z0-9_-]{0,31}$/;
|
|
6
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/auth/oauth/types.ts"],"names":[],"mappings":"AAwFA,0EAA0E;AAC1E,wEAAwE;AACxE,qEAAqE;AACrE,sCAAsC;AACtC,MAAM,CAAC,MAAM,0BAA0B,GAAG,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Db } from "../../context/app.js";
|
|
2
|
+
import type { Credential } from "../../db/schema/credentials.js";
|
|
3
|
+
import type { ResolvedPasskeyConfig } from "./config.js";
|
|
4
|
+
import type { AuthenticationOptions, AuthenticationResponse } from "./types.js";
|
|
5
|
+
interface BeginAuthenticationInput {
|
|
6
|
+
readonly allowCredentials?: readonly Credential[];
|
|
7
|
+
}
|
|
8
|
+
export declare function beginAuthentication(db: Db, config: ResolvedPasskeyConfig, input?: BeginAuthenticationInput): Promise<AuthenticationOptions>;
|
|
9
|
+
interface VerifiedAuthentication {
|
|
10
|
+
readonly credential: Credential;
|
|
11
|
+
readonly newSignatureCounter: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Verify an assertion. Order of checks (Copenhagen Book):
|
|
15
|
+
* 1. challenge consumed atomically (no double-spend)
|
|
16
|
+
* 2. clientData type === webauthn.get
|
|
17
|
+
* 3. origin === expected
|
|
18
|
+
* 4. RP-ID hash matches
|
|
19
|
+
* 5. user-present flag set
|
|
20
|
+
* 6. counter strictly greater than stored (replay defence; counter == 0 means
|
|
21
|
+
* the authenticator does not implement counters — accept once)
|
|
22
|
+
* 7. ECDSA signature verifies over `authenticatorData || sha256(clientDataJSON)`
|
|
23
|
+
*/
|
|
24
|
+
export declare function finishAuthentication(db: Db, config: ResolvedPasskeyConfig, response: AuthenticationResponse): Promise<VerifiedAuthentication>;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=authenticate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticate.d.ts","sourceRoot":"","sources":["../../../src/auth/passkey/authenticate.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAKhF,UAAU,wBAAwB;IAChC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;CACnD;AAED,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,qBAAqB,EAC7B,KAAK,GAAE,wBAA6B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAahC;AAED,UAAU,sBAAsB;IAC9B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,EAAE,sBAAsB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CAoFjC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { decodePKIXECDSASignature, decodeSEC1PublicKey, p256, verifyECDSASignature, } from "@oslojs/crypto/ecdsa";
|
|
2
|
+
import { sha256 } from "@oslojs/crypto/sha2";
|
|
3
|
+
import { decodeBase64urlIgnorePadding, encodeBase64urlNoPadding, } from "@oslojs/encoding";
|
|
4
|
+
import { ClientDataType, createAssertionSignatureMessage, parseAuthenticatorData, parseClientDataJSON, } from "@oslojs/webauthn";
|
|
5
|
+
import { eq } from "drizzle-orm";
|
|
6
|
+
import { credentials } from "../../db/schema/credentials.js";
|
|
7
|
+
import { consumeChallenge, issueChallenge } from "./challenges.js";
|
|
8
|
+
import { PasskeyError } from "./errors.js";
|
|
9
|
+
export async function beginAuthentication(db, config, input = {}) {
|
|
10
|
+
const { challenge } = await issueChallenge(db, config.challengeTtlMs);
|
|
11
|
+
return {
|
|
12
|
+
challenge,
|
|
13
|
+
rpId: config.rpId,
|
|
14
|
+
timeout: 60_000,
|
|
15
|
+
userVerification: "preferred",
|
|
16
|
+
allowCredentials: input.allowCredentials?.map((c) => ({
|
|
17
|
+
type: "public-key",
|
|
18
|
+
id: c.id,
|
|
19
|
+
transports: c.transports ?? undefined,
|
|
20
|
+
})),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Verify an assertion. Order of checks (Copenhagen Book):
|
|
25
|
+
* 1. challenge consumed atomically (no double-spend)
|
|
26
|
+
* 2. clientData type === webauthn.get
|
|
27
|
+
* 3. origin === expected
|
|
28
|
+
* 4. RP-ID hash matches
|
|
29
|
+
* 5. user-present flag set
|
|
30
|
+
* 6. counter strictly greater than stored (replay defence; counter == 0 means
|
|
31
|
+
* the authenticator does not implement counters — accept once)
|
|
32
|
+
* 7. ECDSA signature verifies over `authenticatorData || sha256(clientDataJSON)`
|
|
33
|
+
*/
|
|
34
|
+
export async function finishAuthentication(db, config, response) {
|
|
35
|
+
let clientDataBytes;
|
|
36
|
+
let authenticatorDataBytes;
|
|
37
|
+
let signatureBytes;
|
|
38
|
+
try {
|
|
39
|
+
clientDataBytes = decodeBase64urlIgnorePadding(response.response.clientDataJSON);
|
|
40
|
+
authenticatorDataBytes = decodeBase64urlIgnorePadding(response.response.authenticatorData);
|
|
41
|
+
signatureBytes = decodeBase64urlIgnorePadding(response.response.signature);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
throw PasskeyError.invalidResponse({
|
|
45
|
+
reason: "Malformed base64url in authentication response",
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
const clientData = parseClientDataJSON(clientDataBytes);
|
|
49
|
+
if (clientData.type !== ClientDataType.Get) {
|
|
50
|
+
throw PasskeyError.invalidClientData({ expectedType: "get" });
|
|
51
|
+
}
|
|
52
|
+
if (clientData.origin !== config.origin) {
|
|
53
|
+
throw PasskeyError.invalidOrigin({
|
|
54
|
+
expected: config.origin,
|
|
55
|
+
actual: clientData.origin,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
const authenticatorData = parseAuthenticatorData(authenticatorDataBytes);
|
|
59
|
+
if (!authenticatorData.verifyRelyingPartyIdHash(config.rpId)) {
|
|
60
|
+
throw PasskeyError.invalidRpId();
|
|
61
|
+
}
|
|
62
|
+
const challengeString = encodeBase64urlNoPadding(clientData.challenge);
|
|
63
|
+
const challenge = await consumeChallenge(db, challengeString);
|
|
64
|
+
if (!challenge)
|
|
65
|
+
throw PasskeyError.challengeNotFound();
|
|
66
|
+
void challenge;
|
|
67
|
+
const credential = await db
|
|
68
|
+
.select()
|
|
69
|
+
.from(credentials)
|
|
70
|
+
.where(eq(credentials.id, response.id))
|
|
71
|
+
.get();
|
|
72
|
+
if (!credential)
|
|
73
|
+
throw PasskeyError.credentialNotFound();
|
|
74
|
+
if (!authenticatorData.userPresent)
|
|
75
|
+
throw PasskeyError.userPresenceMissing();
|
|
76
|
+
// Counter == 0 is "authenticator doesn't track" — accept; otherwise it must
|
|
77
|
+
// strictly increase. A non-increasing counter signals a cloned authenticator.
|
|
78
|
+
if (authenticatorData.signatureCounter !== 0 &&
|
|
79
|
+
authenticatorData.signatureCounter <= credential.counter) {
|
|
80
|
+
throw PasskeyError.counterReplay();
|
|
81
|
+
}
|
|
82
|
+
const signedMessage = createAssertionSignatureMessage(authenticatorDataBytes, clientDataBytes);
|
|
83
|
+
const messageHash = sha256(signedMessage);
|
|
84
|
+
const publicKey = decodeSEC1PublicKey(p256, ensureUint8Array(credential.publicKey));
|
|
85
|
+
const signature = decodePKIXECDSASignature(signatureBytes);
|
|
86
|
+
if (!verifyECDSASignature(publicKey, messageHash, signature)) {
|
|
87
|
+
throw PasskeyError.invalidSignature();
|
|
88
|
+
}
|
|
89
|
+
await db
|
|
90
|
+
.update(credentials)
|
|
91
|
+
.set({
|
|
92
|
+
counter: authenticatorData.signatureCounter,
|
|
93
|
+
lastUsedAt: new Date(),
|
|
94
|
+
})
|
|
95
|
+
.where(eq(credentials.id, credential.id));
|
|
96
|
+
return {
|
|
97
|
+
credential,
|
|
98
|
+
newSignatureCounter: authenticatorData.signatureCounter,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* @internal
|
|
103
|
+
*
|
|
104
|
+
* Normalise a driver-returned BLOB value into a plain `Uint8Array`.
|
|
105
|
+
*
|
|
106
|
+
* Drivers disagree on the shape: better-sqlite3 returns `Buffer` (a
|
|
107
|
+
* `Uint8Array` subclass — handled by the first branch), libsql/D1 may
|
|
108
|
+
* return `ArrayBuffer`. Anything else is a `credential_storage_corrupt`
|
|
109
|
+
* signal: the response on the wire is fine, but the stored key is
|
|
110
|
+
* unreadable and the caller needs to know that specifically.
|
|
111
|
+
*
|
|
112
|
+
* Exported for direct testing only. NOT part of the `@plumix/core`
|
|
113
|
+
* public surface — import path is the barrel-less relative one.
|
|
114
|
+
*/
|
|
115
|
+
export function ensureUint8Array(value) {
|
|
116
|
+
if (value instanceof Uint8Array)
|
|
117
|
+
return value;
|
|
118
|
+
if (value instanceof ArrayBuffer)
|
|
119
|
+
return new Uint8Array(value);
|
|
120
|
+
throw PasskeyError.credentialStorageCorrupt({
|
|
121
|
+
reason: "Stored public key has unexpected type",
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=authenticate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticate.js","sourceRoot":"","sources":["../../../src/auth/passkey/authenticate.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,IAAI,EACJ,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,cAAc,EACd,+BAA+B,EAC/B,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAMjC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,EAAM,EACN,MAA6B,EAC7B,QAAkC,EAAE;IAEpC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IACtE,OAAO;QACL,SAAS;QACT,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM;QACf,gBAAgB,EAAE,WAAW;QAC7B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpD,IAAI,EAAE,YAAqB;YAC3B,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,SAAS;SACtC,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAOD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,EAAM,EACN,MAA6B,EAC7B,QAAgC;IAEhC,IAAI,eAA2B,CAAC;IAChC,IAAI,sBAAkC,CAAC;IACvC,IAAI,cAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,eAAe,GAAG,4BAA4B,CAC5C,QAAQ,CAAC,QAAQ,CAAC,cAAc,CACjC,CAAC;QACF,sBAAsB,GAAG,4BAA4B,CACnD,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CACpC,CAAC;QACF,cAAc,GAAG,4BAA4B,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC7E,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,YAAY,CAAC,eAAe,CAAC;YACjC,MAAM,EAAE,gDAAgD;SACzD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,UAAU,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACxD,IAAI,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,GAAG,EAAE,CAAC;QAC3C,MAAM,YAAY,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,YAAY,CAAC,aAAa,CAAC;YAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM;YACvB,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,sBAAsB,CAAC,CAAC;IACzE,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7D,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,eAAe,GAAG,wBAAwB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;IAC9D,IAAI,CAAC,SAAS;QAAE,MAAM,YAAY,CAAC,iBAAiB,EAAE,CAAC;IACvD,KAAK,SAAS,CAAC;IAEf,MAAM,UAAU,GAAG,MAAM,EAAE;SACxB,MAAM,EAAE;SACR,IAAI,CAAC,WAAW,CAAC;SACjB,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;SACtC,GAAG,EAAE,CAAC;IACT,IAAI,CAAC,UAAU;QAAE,MAAM,YAAY,CAAC,kBAAkB,EAAE,CAAC;IACzD,IAAI,CAAC,iBAAiB,CAAC,WAAW;QAAE,MAAM,YAAY,CAAC,mBAAmB,EAAE,CAAC;IAE7E,4EAA4E;IAC5E,8EAA8E;IAC9E,IACE,iBAAiB,CAAC,gBAAgB,KAAK,CAAC;QACxC,iBAAiB,CAAC,gBAAgB,IAAI,UAAU,CAAC,OAAO,EACxD,CAAC;QACD,MAAM,YAAY,CAAC,aAAa,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,aAAa,GAAG,+BAA+B,CACnD,sBAAsB,EACtB,eAAe,CAChB,CAAC;IACF,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,mBAAmB,CACnC,IAAI,EACJ,gBAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,CACvC,CAAC;IACF,MAAM,SAAS,GAAG,wBAAwB,CAAC,cAAc,CAAC,CAAC;IAE3D,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC;QAC7D,MAAM,YAAY,CAAC,gBAAgB,EAAE,CAAC;IACxC,CAAC;IAED,MAAM,EAAE;SACL,MAAM,CAAC,WAAW,CAAC;SACnB,GAAG,CAAC;QACH,OAAO,EAAE,iBAAiB,CAAC,gBAAgB;QAC3C,UAAU,EAAE,IAAI,IAAI,EAAE;KACvB,CAAC;SACD,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5C,OAAO;QACL,UAAU;QACV,mBAAmB,EAAE,iBAAiB,CAAC,gBAAgB;KACxD,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,KAAK,YAAY,UAAU;QAAE,OAAO,KAAK,CAAC;IAC9C,IAAI,KAAK,YAAY,WAAW;QAAE,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/D,MAAM,YAAY,CAAC,wBAAwB,CAAC;QAC1C,MAAM,EAAE,uCAAuC;KAChD,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Db } from "../../context/app.js";
|
|
2
|
+
interface IssuedChallenge {
|
|
3
|
+
/** Raw challenge (sent to the browser, base64url). */
|
|
4
|
+
readonly challenge: string;
|
|
5
|
+
readonly expiresAt: Date;
|
|
6
|
+
}
|
|
7
|
+
interface ChallengeRecord {
|
|
8
|
+
readonly userId: number | null;
|
|
9
|
+
readonly expiresAt: Date;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Persist a single-use WebAuthn challenge. We hash the raw challenge and
|
|
13
|
+
* store the hash so a DB read does not yield a usable challenge to an
|
|
14
|
+
* attacker (defence in depth — the challenge is also short-lived).
|
|
15
|
+
*/
|
|
16
|
+
export declare function issueChallenge(db: Db, ttlMs: number, userId?: number | null): Promise<IssuedChallenge>;
|
|
17
|
+
/**
|
|
18
|
+
* Delete every auth_tokens row whose expiresAt is in the past. Safe to call
|
|
19
|
+
* at any time — consumed rows are deleted by consumeChallenge, so expired
|
|
20
|
+
* rows are the only thing this ever removes. Called opportunistically from
|
|
21
|
+
* issueChallenge until a scheduled-task plugin can run it on a cron.
|
|
22
|
+
*/
|
|
23
|
+
export declare function pruneExpiredAuthTokens(db: Db): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Atomic single-use consume: SQLite `RETURNING` deletes and reads the row in
|
|
26
|
+
* one round-trip — no race window between read and delete (Copenhagen Book:
|
|
27
|
+
* "atomic deletion to prevent race conditions").
|
|
28
|
+
*/
|
|
29
|
+
export declare function consumeChallenge(db: Db, rawChallenge: string): Promise<ChallengeRecord | null>;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=challenges.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"challenges.d.ts","sourceRoot":"","sources":["../../../src/auth/passkey/challenges.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAW/C,UAAU,eAAe;IACvB,sDAAsD;IACtD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;CAC1B;AAED,UAAU,eAAe;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,MAAM,GAAG,IAAW,GAC3B,OAAO,CAAC,eAAe,CAAC,CAc1B;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,EAAE,EACN,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAUjC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { and, eq, lt } from "drizzle-orm";
|
|
2
|
+
import { authTokens } from "../../db/schema/auth_tokens.js";
|
|
3
|
+
import { generateToken, hashToken } from "../tokens.js";
|
|
4
|
+
const CHALLENGE_TYPE = "webauthn_challenge";
|
|
5
|
+
// Run the opportunistic sweep on a fraction of issueChallenge calls so the
|
|
6
|
+
// amortised cost is ~O(1) per request while still bounding table growth.
|
|
7
|
+
// At 10% we expect the sweep to fire ~1 in 10 registrations/logins.
|
|
8
|
+
const OPPORTUNISTIC_PRUNE_PROBABILITY = 0.1;
|
|
9
|
+
/**
|
|
10
|
+
* Persist a single-use WebAuthn challenge. We hash the raw challenge and
|
|
11
|
+
* store the hash so a DB read does not yield a usable challenge to an
|
|
12
|
+
* attacker (defence in depth — the challenge is also short-lived).
|
|
13
|
+
*/
|
|
14
|
+
export async function issueChallenge(db, ttlMs, userId = null) {
|
|
15
|
+
const challenge = generateToken();
|
|
16
|
+
const hash = await hashToken(challenge);
|
|
17
|
+
const expiresAt = new Date(Date.now() + ttlMs);
|
|
18
|
+
await db.insert(authTokens).values({
|
|
19
|
+
hash,
|
|
20
|
+
type: CHALLENGE_TYPE,
|
|
21
|
+
userId,
|
|
22
|
+
expiresAt,
|
|
23
|
+
});
|
|
24
|
+
if (Math.random() < OPPORTUNISTIC_PRUNE_PROBABILITY) {
|
|
25
|
+
await pruneExpiredAuthTokens(db);
|
|
26
|
+
}
|
|
27
|
+
return { challenge, expiresAt };
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Delete every auth_tokens row whose expiresAt is in the past. Safe to call
|
|
31
|
+
* at any time — consumed rows are deleted by consumeChallenge, so expired
|
|
32
|
+
* rows are the only thing this ever removes. Called opportunistically from
|
|
33
|
+
* issueChallenge until a scheduled-task plugin can run it on a cron.
|
|
34
|
+
*/
|
|
35
|
+
export async function pruneExpiredAuthTokens(db) {
|
|
36
|
+
await db.delete(authTokens).where(lt(authTokens.expiresAt, new Date()));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Atomic single-use consume: SQLite `RETURNING` deletes and reads the row in
|
|
40
|
+
* one round-trip — no race window between read and delete (Copenhagen Book:
|
|
41
|
+
* "atomic deletion to prevent race conditions").
|
|
42
|
+
*/
|
|
43
|
+
export async function consumeChallenge(db, rawChallenge) {
|
|
44
|
+
if (!rawChallenge)
|
|
45
|
+
return null;
|
|
46
|
+
const hash = await hashToken(rawChallenge);
|
|
47
|
+
const [row] = await db
|
|
48
|
+
.delete(authTokens)
|
|
49
|
+
.where(and(eq(authTokens.hash, hash), eq(authTokens.type, CHALLENGE_TYPE)))
|
|
50
|
+
.returning();
|
|
51
|
+
if (!row)
|
|
52
|
+
return null;
|
|
53
|
+
if (row.expiresAt.getTime() < Date.now())
|
|
54
|
+
return null;
|
|
55
|
+
return { userId: row.userId, expiresAt: row.expiresAt };
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=challenges.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"challenges.js","sourceRoot":"","sources":["../../../src/auth/passkey/challenges.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAExD,MAAM,cAAc,GAAG,oBAA6B,CAAC;AAErD,2EAA2E;AAC3E,yEAAyE;AACzE,oEAAoE;AACpE,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAa5C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,EAAM,EACN,KAAa,EACb,SAAwB,IAAI;IAE5B,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;IAC/C,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;QACjC,IAAI;QACJ,IAAI,EAAE,cAAc;QACpB,MAAM;QACN,SAAS;KACV,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,+BAA+B,EAAE,CAAC;QACpD,MAAM,sBAAsB,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAAM;IACjD,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAM,EACN,YAAoB;IAEpB,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC;IAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE;SACnB,MAAM,CAAC,UAAU,CAAC;SAClB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;SAC1E,SAAS,EAAE,CAAC;IACf,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IACtD,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;AAC1D,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface PasskeyConfig {
|
|
2
|
+
/** Display name shown in the OS passkey prompt. */
|
|
3
|
+
readonly rpName: string;
|
|
4
|
+
/** RP-ID — usually the bare hostname, no protocol. */
|
|
5
|
+
readonly rpId: string;
|
|
6
|
+
/** Expected origin string the browser puts in clientDataJSON. */
|
|
7
|
+
readonly origin: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ResolvedPasskeyConfig extends PasskeyConfig {
|
|
10
|
+
readonly challengeTtlMs: number;
|
|
11
|
+
readonly maxCredentialsPerUser: number;
|
|
12
|
+
}
|
|
13
|
+
export declare const PASSKEY_DEFAULTS: {
|
|
14
|
+
readonly challengeTtlMs: number;
|
|
15
|
+
readonly maxCredentialsPerUser: 10;
|
|
16
|
+
};
|
|
17
|
+
export declare function resolvePasskeyConfig(config: PasskeyConfig, overrides?: Partial<typeof PASSKEY_DEFAULTS>): ResolvedPasskeyConfig;
|
|
18
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/auth/passkey/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iEAAiE;IACjE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;CACxC;AAED,eAAO,MAAM,gBAAgB;;;CAGnB,CAAC;AAEX,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,SAAS,GAAE,OAAO,CAAC,OAAO,gBAAgB,CAAM,GAC/C,qBAAqB,CASvB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export const PASSKEY_DEFAULTS = {
|
|
2
|
+
challengeTtlMs: 5 * 60 * 1000,
|
|
3
|
+
maxCredentialsPerUser: 10,
|
|
4
|
+
};
|
|
5
|
+
export function resolvePasskeyConfig(config, overrides = {}) {
|
|
6
|
+
return {
|
|
7
|
+
rpName: config.rpName,
|
|
8
|
+
rpId: config.rpId,
|
|
9
|
+
origin: config.origin,
|
|
10
|
+
challengeTtlMs: overrides.challengeTtlMs ?? PASSKEY_DEFAULTS.challengeTtlMs,
|
|
11
|
+
maxCredentialsPerUser: overrides.maxCredentialsPerUser ?? PASSKEY_DEFAULTS.maxCredentialsPerUser,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/auth/passkey/config.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;IAC7B,qBAAqB,EAAE,EAAE;CACjB,CAAC;AAEX,MAAM,UAAU,oBAAoB,CAClC,MAAqB,EACrB,YAA8C,EAAE;IAEhD,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,cAAc,EAAE,SAAS,CAAC,cAAc,IAAI,gBAAgB,CAAC,cAAc;QAC3E,qBAAqB,EACnB,SAAS,CAAC,qBAAqB,IAAI,gBAAgB,CAAC,qBAAqB;KAC5E,CAAC;AACJ,CAAC"}
|