@revealui/auth 0.0.1-pre.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 +202 -0
- package/dist/better-auth/adapter/__tests__/transform.test.js +213 -0
- package/dist/better-auth/adapter/__tests__/transform.test.js.map +1 -0
- package/dist/better-auth/adapter/generate-schema/biome.d.js +2 -0
- package/dist/better-auth/adapter/generate-schema/biome.d.js.map +1 -0
- package/dist/better-auth/adapter/generate-schema/generate-schema-builder.d.ts +5 -0
- package/dist/better-auth/adapter/generate-schema/generate-schema-builder.js +482 -0
- package/dist/better-auth/adapter/generate-schema/generate-schema-builder.js.map +1 -0
- package/dist/better-auth/adapter/generate-schema/get-payload-schema.d.ts +1 -0
- package/dist/better-auth/adapter/generate-schema/get-payload-schema.js +42 -0
- package/dist/better-auth/adapter/generate-schema/get-payload-schema.js.map +1 -0
- package/dist/better-auth/adapter/generate-schema/index.d.ts +4 -0
- package/dist/better-auth/adapter/generate-schema/index.js +19 -0
- package/dist/better-auth/adapter/generate-schema/index.js.map +1 -0
- package/dist/better-auth/adapter/generate-schema/utils.d.ts +2 -0
- package/dist/better-auth/adapter/generate-schema/utils.js +20 -0
- package/dist/better-auth/adapter/generate-schema/utils.js.map +1 -0
- package/dist/better-auth/adapter/index.d.ts +15 -0
- package/dist/better-auth/adapter/index.js +731 -0
- package/dist/better-auth/adapter/index.js.map +1 -0
- package/dist/better-auth/adapter/tests/adapter.test.js +174 -0
- package/dist/better-auth/adapter/tests/adapter.test.js.map +1 -0
- package/dist/better-auth/adapter/tests/base-collections-tests.js +575 -0
- package/dist/better-auth/adapter/tests/base-collections-tests.js.map +1 -0
- package/dist/better-auth/adapter/tests/dev/index.js +117 -0
- package/dist/better-auth/adapter/tests/dev/index.js.map +1 -0
- package/dist/better-auth/adapter/tests/dev/migrate.js +26 -0
- package/dist/better-auth/adapter/tests/dev/migrate.js.map +1 -0
- package/dist/better-auth/adapter/tests/dev/migrations/20250423_232936_init.js +218 -0
- package/dist/better-auth/adapter/tests/dev/migrations/20250423_232936_init.js.map +1 -0
- package/dist/better-auth/adapter/tests/dev/schema.js +160 -0
- package/dist/better-auth/adapter/tests/dev/schema.js.map +1 -0
- package/dist/better-auth/adapter/tests/plugins-tests.js +2 -0
- package/dist/better-auth/adapter/tests/plugins-tests.js.map +1 -0
- package/dist/better-auth/adapter/transform/index.d.ts +27 -0
- package/dist/better-auth/adapter/transform/index.js +664 -0
- package/dist/better-auth/adapter/transform/index.js.map +1 -0
- package/dist/better-auth/adapter/types.d.ts +10 -0
- package/dist/better-auth/adapter/types.js +3 -0
- package/dist/better-auth/adapter/types.js.map +1 -0
- package/dist/better-auth/generated-types.d.ts +285 -0
- package/dist/better-auth/index.d.ts +3 -0
- package/dist/better-auth/index.js +5 -0
- package/dist/better-auth/index.js.map +1 -0
- package/dist/better-auth/plugin/__tests__/plugin.test.js +162 -0
- package/dist/better-auth/plugin/__tests__/plugin.test.js.map +1 -0
- package/dist/better-auth/plugin/constants.d.ts +220 -0
- package/dist/better-auth/plugin/constants.js +249 -0
- package/dist/better-auth/plugin/constants.js.map +1 -0
- package/dist/better-auth/plugin/helpers/check-plugin-exists.d.ts +12 -0
- package/dist/better-auth/plugin/helpers/check-plugin-exists.js +14 -0
- package/dist/better-auth/plugin/helpers/check-plugin-exists.js.map +1 -0
- package/dist/better-auth/plugin/helpers/generate-verify-email-url.d.ts +29 -0
- package/dist/better-auth/plugin/helpers/generate-verify-email-url.js +46 -0
- package/dist/better-auth/plugin/helpers/generate-verify-email-url.js.map +1 -0
- package/dist/better-auth/plugin/helpers/get-admin-access.d.ts +7 -0
- package/dist/better-auth/plugin/helpers/get-admin-access.js +22 -0
- package/dist/better-auth/plugin/helpers/get-admin-access.js.map +1 -0
- package/dist/better-auth/plugin/helpers/get-all-roles.d.ts +5 -0
- package/dist/better-auth/plugin/helpers/get-all-roles.js +20 -0
- package/dist/better-auth/plugin/helpers/get-all-roles.js.map +1 -0
- package/dist/better-auth/plugin/helpers/get-better-auth-schema.d.ts +18 -0
- package/dist/better-auth/plugin/helpers/get-better-auth-schema.js +70 -0
- package/dist/better-auth/plugin/helpers/get-better-auth-schema.js.map +1 -0
- package/dist/better-auth/plugin/helpers/get-collection-slug.d.ts +5 -0
- package/dist/better-auth/plugin/helpers/get-collection-slug.js +20 -0
- package/dist/better-auth/plugin/helpers/get-collection-slug.js.map +1 -0
- package/dist/better-auth/plugin/helpers/get-collection.d.ts +15 -0
- package/dist/better-auth/plugin/helpers/get-collection.js +29 -0
- package/dist/better-auth/plugin/helpers/get-collection.js.map +1 -0
- package/dist/better-auth/plugin/helpers/get-ip.d.ts +2 -0
- package/dist/better-auth/plugin/helpers/get-ip.js +31 -0
- package/dist/better-auth/plugin/helpers/get-ip.js.map +1 -0
- package/dist/better-auth/plugin/helpers/get-signed-cookie.d.ts +2 -0
- package/dist/better-auth/plugin/helpers/get-signed-cookie.js +65 -0
- package/dist/better-auth/plugin/helpers/get-signed-cookie.js.map +1 -0
- package/dist/better-auth/plugin/helpers/index.d.ts +1 -0
- package/dist/better-auth/plugin/helpers/index.js +3 -0
- package/dist/better-auth/plugin/helpers/index.js.map +1 -0
- package/dist/better-auth/plugin/helpers/prepare-session-data.d.ts +59 -0
- package/dist/better-auth/plugin/helpers/prepare-session-data.js +49 -0
- package/dist/better-auth/plugin/helpers/prepare-session-data.js.map +1 -0
- package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.d.ts +20 -0
- package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.js +67 -0
- package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.js.map +1 -0
- package/dist/better-auth/plugin/index.d.ts +11 -0
- package/dist/better-auth/plugin/index.js +125 -0
- package/dist/better-auth/plugin/index.js.map +1 -0
- package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.d.ts +12 -0
- package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.js +87 -0
- package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.js +60 -0
- package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/accounts/index.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/accounts/index.js +154 -0
- package/dist/better-auth/plugin/lib/build-collections/accounts/index.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.d.ts +5 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.js +11 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.d.ts +2 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.js +8 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.d.ts +6 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.js +119 -0
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/api-keys.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/api-keys.js +177 -0
- package/dist/better-auth/plugin/lib/build-collections/api-keys.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/device-code.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/device-code.js +50 -0
- package/dist/better-auth/plugin/lib/build-collections/device-code.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/index.d.ts +10 -0
- package/dist/better-auth/plugin/lib/build-collections/index.js +73 -0
- package/dist/better-auth/plugin/lib/build-collections/index.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/invitations.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/invitations.js +94 -0
- package/dist/better-auth/plugin/lib/build-collections/invitations.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/jwks.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/jwks.js +59 -0
- package/dist/better-auth/plugin/lib/build-collections/jwks.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/members.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/members.js +73 -0
- package/dist/better-auth/plugin/lib/build-collections/members.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.js +107 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-applications.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-applications.js +118 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-applications.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-consents.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-consents.js +89 -0
- package/dist/better-auth/plugin/lib/build-collections/oauth-consents.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/organizations.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/organizations.js +70 -0
- package/dist/better-auth/plugin/lib/build-collections/organizations.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/passkeys.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/passkeys.js +115 -0
- package/dist/better-auth/plugin/lib/build-collections/passkeys.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/sessions.js +170 -0
- package/dist/better-auth/plugin/lib/build-collections/sessions.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/sso-providers.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/sso-providers.js +81 -0
- package/dist/better-auth/plugin/lib/build-collections/sso-providers.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/subscriptions.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/subscriptions.js +111 -0
- package/dist/better-auth/plugin/lib/build-collections/subscriptions.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/team-members.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/team-members.js +57 -0
- package/dist/better-auth/plugin/lib/build-collections/team-members.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/teams.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/teams.js +76 -0
- package/dist/better-auth/plugin/lib/build-collections/teams.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/two-factors.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/two-factors.js +67 -0
- package/dist/better-auth/plugin/lib/build-collections/two-factors.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.d.ts +7 -0
- package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.js +53 -0
- package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.d.ts +11 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.js +75 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.d.ts +4 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.js +6 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.d.ts +2 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.js +115 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.js +64 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.js +80 -0
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.d.ts +6 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.js +79 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.d.ts +2 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.js +82 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.d.ts +2 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.js +54 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.d.ts +6 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.js +15 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/index.d.ts +6 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/index.js +8 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/index.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.d.ts +2 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.js +17 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.d.ts +2 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.js +91 -0
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/users/index.js +341 -0
- package/dist/better-auth/plugin/lib/build-collections/users/index.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/collection-schema.d.ts +15 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/collection-schema.js +24 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/collection-schema.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/filter-duplicate-fields.d.ts +10 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/filter-duplicate-fields.js +67 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/filter-duplicate-fields.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/filter-properties.d.ts +9 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/filter-properties.js +94 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/filter-properties.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.d.ts +7 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.js +35 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/model-field-transformations.d.ts +12 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/model-field-transformations.js +25 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/model-field-transformations.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.d.ts +14 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.js +67 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.d.ts +20 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.js +98 -0
- package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.js.map +1 -0
- package/dist/better-auth/plugin/lib/build-collections/verifications.d.ts +3 -0
- package/dist/better-auth/plugin/lib/build-collections/verifications.js +87 -0
- package/dist/better-auth/plugin/lib/build-collections/verifications.js.map +1 -0
- package/dist/better-auth/plugin/lib/get-payload-auth.d.ts +5 -0
- package/dist/better-auth/plugin/lib/get-payload-auth.js +9 -0
- package/dist/better-auth/plugin/lib/get-payload-auth.js.map +1 -0
- package/dist/better-auth/plugin/lib/init-better-auth.d.ts +7 -0
- package/dist/better-auth/plugin/lib/init-better-auth.js +46 -0
- package/dist/better-auth/plugin/lib/init-better-auth.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.d.ts +2 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.js +9 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.d.ts +2 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.js +10 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/device-authorization-plugin.d.ts +2 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/device-authorization-plugin.js +8 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/device-authorization-plugin.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts +10 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.js +156 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.d.ts +2 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.js +18 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.d.ts +2 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.js +34 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.d.ts +2 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.js +11 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.d.ts +2 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.js +10 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/two-factor-plugin.d.ts +2 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/two-factor-plugin.js +11 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/two-factor-plugin.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.d.ts +7 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.js +23 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.d.ts +25 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.js +62 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/require-admin-invite-for-sign-up-middleware.d.ts +9 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/require-admin-invite-for-sign-up-middleware.js +47 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/require-admin-invite-for-sign-up-middleware.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts +15 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.js +42 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.js.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.d.ts +9 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.js +63 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.js.map +1 -0
- package/dist/better-auth/plugin/lib/set-login-methods.d.ts +4 -0
- package/dist/better-auth/plugin/lib/set-login-methods.js +14 -0
- package/dist/better-auth/plugin/lib/set-login-methods.js.map +1 -0
- package/dist/better-auth/plugin/payload/components/admin-buttons/index.d.ts +9 -0
- package/dist/better-auth/plugin/payload/components/admin-buttons/index.js +143 -0
- package/dist/better-auth/plugin/payload/components/admin-buttons/index.js.map +1 -0
- package/dist/better-auth/plugin/payload/components/admin-invite-button/index.d.ts +10 -0
- package/dist/better-auth/plugin/payload/components/admin-invite-button/index.js +219 -0
- package/dist/better-auth/plugin/payload/components/admin-invite-button/index.js.map +1 -0
- package/dist/better-auth/plugin/payload/components/logout-button.d.ts +4 -0
- package/dist/better-auth/plugin/payload/components/logout-button.js +24 -0
- package/dist/better-auth/plugin/payload/components/logout-button.js.map +1 -0
- package/dist/better-auth/plugin/payload/components/passkeys/add-button.d.ts +8 -0
- package/dist/better-auth/plugin/payload/components/passkeys/add-button.js +117 -0
- package/dist/better-auth/plugin/payload/components/passkeys/add-button.js.map +1 -0
- package/dist/better-auth/plugin/payload/components/passkeys/client.d.ts +3 -0
- package/dist/better-auth/plugin/payload/components/passkeys/client.js +66 -0
- package/dist/better-auth/plugin/payload/components/passkeys/client.js.map +1 -0
- package/dist/better-auth/plugin/payload/components/passkeys/index.d.ts +4 -0
- package/dist/better-auth/plugin/payload/components/passkeys/index.js +52 -0
- package/dist/better-auth/plugin/payload/components/passkeys/index.js.map +1 -0
- package/dist/better-auth/plugin/payload/components/passkeys/list.d.ts +8 -0
- package/dist/better-auth/plugin/payload/components/passkeys/list.js +57 -0
- package/dist/better-auth/plugin/payload/components/passkeys/list.js.map +1 -0
- package/dist/better-auth/plugin/payload/components/passkeys/types.d.ts +22 -0
- package/dist/better-auth/plugin/payload/components/passkeys/types.js +3 -0
- package/dist/better-auth/plugin/payload/components/passkeys/types.js.map +1 -0
- package/dist/better-auth/plugin/payload/components/rsc-redirect.d.ts +6 -0
- package/dist/better-auth/plugin/payload/components/rsc-redirect.js +7 -0
- package/dist/better-auth/plugin/payload/components/rsc-redirect.js.map +1 -0
- package/dist/better-auth/plugin/payload/components/social-provider-buttons/index.d.ts +15 -0
- package/dist/better-auth/plugin/payload/components/social-provider-buttons/index.js +157 -0
- package/dist/better-auth/plugin/payload/components/social-provider-buttons/index.js.map +1 -0
- package/dist/better-auth/plugin/payload/components/token-field.d.ts +4 -0
- package/dist/better-auth/plugin/payload/components/token-field.js +31 -0
- package/dist/better-auth/plugin/payload/components/token-field.js.map +1 -0
- package/dist/better-auth/plugin/payload/components/two-factor-auth/index.d.ts +8 -0
- package/dist/better-auth/plugin/payload/components/two-factor-auth/index.js +300 -0
- package/dist/better-auth/plugin/payload/components/two-factor-auth/index.js.map +1 -0
- package/dist/better-auth/plugin/payload/exports/client.d.ts +6 -0
- package/dist/better-auth/plugin/payload/exports/client.js +8 -0
- package/dist/better-auth/plugin/payload/exports/client.js.map +1 -0
- package/dist/better-auth/plugin/payload/exports/rsc.d.ts +8 -0
- package/dist/better-auth/plugin/payload/exports/rsc.js +10 -0
- package/dist/better-auth/plugin/payload/exports/rsc.js.map +1 -0
- package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.d.ts +2 -0
- package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.js +9 -0
- package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.js.map +1 -0
- package/dist/better-auth/plugin/payload/utils/get-safe-redirect.d.ts +1 -0
- package/dist/better-auth/plugin/payload/utils/get-safe-redirect.js +22 -0
- package/dist/better-auth/plugin/payload/utils/get-safe-redirect.js.map +1 -0
- package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts +19 -0
- package/dist/better-auth/plugin/payload/views/admin-login/client.js +226 -0
- package/dist/better-auth/plugin/payload/views/admin-login/client.js.map +1 -0
- package/dist/better-auth/plugin/payload/views/admin-login/index.d.ts +10 -0
- package/dist/better-auth/plugin/payload/views/admin-login/index.js +150 -0
- package/dist/better-auth/plugin/payload/views/admin-login/index.js.map +1 -0
- package/dist/better-auth/plugin/payload/views/admin-signup/client.d.ts +16 -0
- package/dist/better-auth/plugin/payload/views/admin-signup/client.js +299 -0
- package/dist/better-auth/plugin/payload/views/admin-signup/client.js.map +1 -0
- package/dist/better-auth/plugin/payload/views/admin-signup/index.d.ts +9 -0
- package/dist/better-auth/plugin/payload/views/admin-signup/index.js +104 -0
- package/dist/better-auth/plugin/payload/views/admin-signup/index.js.map +1 -0
- package/dist/better-auth/plugin/payload/views/forgot-password/client.d.ts +7 -0
- package/dist/better-auth/plugin/payload/views/forgot-password/client.js +119 -0
- package/dist/better-auth/plugin/payload/views/forgot-password/client.js.map +1 -0
- package/dist/better-auth/plugin/payload/views/forgot-password/index.d.ts +8 -0
- package/dist/better-auth/plugin/payload/views/forgot-password/index.js +78 -0
- package/dist/better-auth/plugin/payload/views/forgot-password/index.js.map +1 -0
- package/dist/better-auth/plugin/payload/views/reset-password/client.d.ts +10 -0
- package/dist/better-auth/plugin/payload/views/reset-password/client.js +144 -0
- package/dist/better-auth/plugin/payload/views/reset-password/client.js.map +1 -0
- package/dist/better-auth/plugin/payload/views/reset-password/index.d.ts +8 -0
- package/dist/better-auth/plugin/payload/views/reset-password/index.js +96 -0
- package/dist/better-auth/plugin/payload/views/reset-password/index.js.map +1 -0
- package/dist/better-auth/plugin/payload/views/two-factor-verify/client.d.ts +6 -0
- package/dist/better-auth/plugin/payload/views/two-factor-verify/client.js +96 -0
- package/dist/better-auth/plugin/payload/views/two-factor-verify/client.js.map +1 -0
- package/dist/better-auth/plugin/payload/views/two-factor-verify/index.d.ts +9 -0
- package/dist/better-auth/plugin/payload/views/two-factor-verify/index.js +56 -0
- package/dist/better-auth/plugin/payload/views/two-factor-verify/index.js.map +1 -0
- package/dist/better-auth/plugin/types.d.ts +429 -0
- package/dist/better-auth/plugin/types.js +3 -0
- package/dist/better-auth/plugin/types.js.map +1 -0
- package/dist/better-auth/plugin/utils/set.d.ts +39 -0
- package/dist/better-auth/plugin/utils/set.js +103 -0
- package/dist/better-auth/plugin/utils/set.js.map +1 -0
- package/dist/better-auth/scripts/generate-types.d.ts +1 -0
- package/dist/better-auth/scripts/generate-types.js +234 -0
- package/dist/better-auth/scripts/generate-types.js.map +1 -0
- package/dist/better-auth/types.d.ts +2 -0
- package/dist/better-auth/types.js +4 -0
- package/dist/better-auth/types.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/shared/components/icons.d.ts +7 -0
- package/dist/shared/components/icons.js +442 -0
- package/dist/shared/components/icons.js.map +1 -0
- package/dist/shared/components/logo.d.ts +3 -0
- package/dist/shared/components/logo.js +24 -0
- package/dist/shared/components/logo.js.map +1 -0
- package/dist/shared/form/components/submit.d.ts +7 -0
- package/dist/shared/form/components/submit.js +16 -0
- package/dist/shared/form/components/submit.js.map +1 -0
- package/dist/shared/form/fields/text-field.d.ts +8 -0
- package/dist/shared/form/fields/text-field.js +37 -0
- package/dist/shared/form/fields/text-field.js.map +1 -0
- package/dist/shared/form/index.d.ts +4 -0
- package/dist/shared/form/index.js +8 -0
- package/dist/shared/form/index.js.map +1 -0
- package/dist/shared/form/ui/header/index.d.ts +8 -0
- package/dist/shared/form/ui/header/index.js +24 -0
- package/dist/shared/form/ui/header/index.js.map +1 -0
- package/dist/shared/form/ui/index.d.ts +31 -0
- package/dist/shared/form/ui/index.js +57 -0
- package/dist/shared/form/ui/index.js.map +1 -0
- package/dist/shared/form/validation.d.ts +51 -0
- package/dist/shared/form/validation.js +127 -0
- package/dist/shared/form/validation.js.map +1 -0
- package/dist/shared/index.d.ts +2 -0
- package/dist/shared/index.js +4 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/payload/fields/field-copy-button/index.d.ts +3 -0
- package/dist/shared/payload/fields/field-copy-button/index.js +38 -0
- package/dist/shared/payload/fields/field-copy-button/index.js.map +1 -0
- package/dist/shared/payload/fields/generate-uuid-button/index.d.ts +3 -0
- package/dist/shared/payload/fields/generate-uuid-button/index.js +26 -0
- package/dist/shared/payload/fields/generate-uuid-button/index.js.map +1 -0
- package/dist/shared/payload/fields/index.d.ts +2 -0
- package/dist/shared/payload/fields/index.js +4 -0
- package/dist/shared/payload/fields/index.js.map +1 -0
- package/dist/shared/utils/regex.d.ts +2 -0
- package/dist/shared/utils/regex.js +4 -0
- package/dist/shared/utils/regex.js.map +1 -0
- package/dist/shared/utils/try-catch.d.ts +11 -0
- package/dist/shared/utils/try-catch.js +17 -0
- package/dist/shared/utils/try-catch.js.map +1 -0
- package/dist/shared/utils/value-or-default.d.ts +9 -0
- package/dist/shared/utils/value-or-default.js +12 -0
- package/dist/shared/utils/value-or-default.js.map +1 -0
- package/package.json +122 -0
|
@@ -0,0 +1,731 @@
|
|
|
1
|
+
import { BetterAuthError } from "..";
|
|
2
|
+
import { generateSchema } from "./generate-schema";
|
|
3
|
+
import { createTransform } from "./transform";
|
|
4
|
+
export const BETTER_AUTH_CONTEXT_KEY = 'payload-db-adapter';
|
|
5
|
+
const PAYLOAD_QUERY_DEPTH = 0;
|
|
6
|
+
const DEBUG_LOG_PREFIX = '[payload-db-adapter]';
|
|
7
|
+
/**
|
|
8
|
+
* Payload adapter for Better Auth
|
|
9
|
+
*
|
|
10
|
+
* This adapter connects Better Auth to Payload CMS, allowing authentication
|
|
11
|
+
* operations to be performed against Payload collections.
|
|
12
|
+
*
|
|
13
|
+
* @param payloadClient - The Payload CMS client instance or a function that returns it
|
|
14
|
+
* @param config - Configuration options for the adapter
|
|
15
|
+
* @returns A function that creates a Better Auth adapter
|
|
16
|
+
*/ const payloadAdapter = ({ payloadClient, adapterConfig })=>{
|
|
17
|
+
/**
|
|
18
|
+
* Logs debug messages if debug logging is enabled
|
|
19
|
+
* @param message - The message to log
|
|
20
|
+
*/ function debugLog(message) {
|
|
21
|
+
if (adapterConfig.enableDebugLogs) {
|
|
22
|
+
// Use payload logger if available, otherwise fall back to console for package compatibility
|
|
23
|
+
if (typeof payloadClient !== 'function' && payloadClient && 'logger' in payloadClient) {
|
|
24
|
+
const payload = payloadClient;
|
|
25
|
+
if (payload.logger) {
|
|
26
|
+
payload.logger.debug(DEBUG_LOG_PREFIX, {
|
|
27
|
+
message
|
|
28
|
+
});
|
|
29
|
+
} else {
|
|
30
|
+
console.log(DEBUG_LOG_PREFIX, ...message);
|
|
31
|
+
}
|
|
32
|
+
} else {
|
|
33
|
+
console.log(DEBUG_LOG_PREFIX, ...message);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Logs error messages
|
|
39
|
+
* @param message - The error message to log
|
|
40
|
+
*/ function errorLog(message) {
|
|
41
|
+
// Use payload logger if available, otherwise fall back to console for package compatibility
|
|
42
|
+
if (typeof payloadClient !== 'function' && payloadClient && 'logger' in payloadClient) {
|
|
43
|
+
const payload = payloadClient;
|
|
44
|
+
if (payload.logger) {
|
|
45
|
+
payload.logger.error(DEBUG_LOG_PREFIX, {
|
|
46
|
+
message
|
|
47
|
+
});
|
|
48
|
+
} else {
|
|
49
|
+
console.error(DEBUG_LOG_PREFIX, ...message);
|
|
50
|
+
}
|
|
51
|
+
} else {
|
|
52
|
+
console.error(DEBUG_LOG_PREFIX, ...message);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Throws an error when a collection slug doesn't exist
|
|
57
|
+
* @param model - The model name that couldn't be found
|
|
58
|
+
* @throws {BetterAuthError} When the collection doesn't exist
|
|
59
|
+
* @returns Never - Function always throws
|
|
60
|
+
*/ function collectionSlugError(model) {
|
|
61
|
+
throw new BetterAuthError(`Collection ${model} does not exist. Please check your payload collection slugs match the better auth schema`);
|
|
62
|
+
}
|
|
63
|
+
// Normalizes PayloadCMS delete result which can have multiple return structures
|
|
64
|
+
function normalizePayloadDocumentResult(response) {
|
|
65
|
+
if (!response) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
if (typeof response === 'object' && 'docs' in response) {
|
|
69
|
+
// PayloadCMS delete can return docs array with dynamic document structures
|
|
70
|
+
// Using Record<string, unknown> because document structure varies by collection and cannot be strictly typed
|
|
71
|
+
const docs = response.docs;
|
|
72
|
+
if (Array.isArray(docs) && docs.length > 0) {
|
|
73
|
+
return docs[0] ?? null;
|
|
74
|
+
}
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
// PayloadCMS delete result can be a single document with dynamic structure
|
|
78
|
+
return response;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Validates that a collection exists in Payload
|
|
82
|
+
* @param payload - The Payload client instance
|
|
83
|
+
* @param collectionSlug - The collection slug to validate
|
|
84
|
+
* @param model - The model name for error messages
|
|
85
|
+
* @throws {BetterAuthError} When the collection doesn't exist
|
|
86
|
+
*/ async function validateCollection(payload, collectionSlug, model) {
|
|
87
|
+
if (!collectionSlug || !(collectionSlug in payload.collections)) {
|
|
88
|
+
collectionSlugError(model);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Creates a context object for Payload operations
|
|
93
|
+
* @param data - Data to include in the context
|
|
94
|
+
* @returns The context object with Better Auth metadata
|
|
95
|
+
*/ // PayloadCMS context accepts dynamic metadata structures for adapter tracking
|
|
96
|
+
const createAdapterContext = (// Using Record<string, unknown> because context data structure varies by operation and cannot be strictly typed
|
|
97
|
+
data)=>({
|
|
98
|
+
[BETTER_AUTH_CONTEXT_KEY]: {
|
|
99
|
+
...data
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
/**
|
|
103
|
+
* Resolves the Payload client, handling both function and direct references
|
|
104
|
+
* @returns The resolved Payload client
|
|
105
|
+
* @throws {BetterAuthError} When Better Auth plugin is not configured
|
|
106
|
+
*/ async function resolvePayloadClient() {
|
|
107
|
+
const payload = typeof payloadClient === 'function' ? await payloadClient() : await payloadClient;
|
|
108
|
+
if (!payload.config?.custom?.hasBetterAuthPlugin) {
|
|
109
|
+
throw new BetterAuthError('Payload is not configured with the better-auth plugin. Please add the plugin to your payload config.');
|
|
110
|
+
}
|
|
111
|
+
return payload;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Creates and returns a Better Auth adapter for Payload
|
|
115
|
+
* @param options - Better Auth options
|
|
116
|
+
* @returns A Better Auth adapter implementation
|
|
117
|
+
*/ return (options)=>{
|
|
118
|
+
const { transformInput, transformOutput, convertWhereClause, convertSelect, convertSort, getCollectionSlug, singleIdQuery } = createTransform(options, adapterConfig.enableDebugLogs ?? false);
|
|
119
|
+
return {
|
|
120
|
+
id: 'payload-adapter',
|
|
121
|
+
async transaction (callback) {
|
|
122
|
+
return await callback(this);
|
|
123
|
+
},
|
|
124
|
+
// Better Auth create accepts dynamic data structures that vary by model
|
|
125
|
+
async create ({ model, data: values, select }) {
|
|
126
|
+
const start = Date.now();
|
|
127
|
+
const payload = await resolvePayloadClient();
|
|
128
|
+
const collectionSlug = getCollectionSlug(model);
|
|
129
|
+
// Validate collection exists before proceeding
|
|
130
|
+
await validateCollection(payload, collectionSlug, model);
|
|
131
|
+
const transformedInput = transformInput({
|
|
132
|
+
data: values,
|
|
133
|
+
model: model,
|
|
134
|
+
idType: adapterConfig.idType
|
|
135
|
+
});
|
|
136
|
+
debugLog([
|
|
137
|
+
'create',
|
|
138
|
+
{
|
|
139
|
+
collectionSlug,
|
|
140
|
+
transformedInput,
|
|
141
|
+
select
|
|
142
|
+
}
|
|
143
|
+
]);
|
|
144
|
+
try {
|
|
145
|
+
// PayloadCMS create accepts dynamic options (data, context, depth, select)
|
|
146
|
+
const createOptions = {
|
|
147
|
+
collection: collectionSlug,
|
|
148
|
+
data: transformedInput,
|
|
149
|
+
context: createAdapterContext({
|
|
150
|
+
model,
|
|
151
|
+
operation: 'create'
|
|
152
|
+
}),
|
|
153
|
+
depth: PAYLOAD_QUERY_DEPTH
|
|
154
|
+
};
|
|
155
|
+
const convertedSelect = convertSelect(model, select);
|
|
156
|
+
if (convertedSelect) {
|
|
157
|
+
createOptions.select = convertedSelect;
|
|
158
|
+
}
|
|
159
|
+
const rawResult = await payload.create(createOptions);
|
|
160
|
+
const transformedResult = transformOutput({
|
|
161
|
+
doc: rawResult,
|
|
162
|
+
model: model
|
|
163
|
+
});
|
|
164
|
+
debugLog([
|
|
165
|
+
'create result',
|
|
166
|
+
{
|
|
167
|
+
collectionSlug,
|
|
168
|
+
transformedResult,
|
|
169
|
+
duration: `${Date.now() - start}ms`
|
|
170
|
+
}
|
|
171
|
+
]);
|
|
172
|
+
return transformedResult;
|
|
173
|
+
} catch (error) {
|
|
174
|
+
errorLog([
|
|
175
|
+
'Error in creating:',
|
|
176
|
+
model,
|
|
177
|
+
error
|
|
178
|
+
]);
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
async findOne ({ model, where, select }) {
|
|
183
|
+
const start = Date.now();
|
|
184
|
+
const payload = await resolvePayloadClient();
|
|
185
|
+
const collectionSlug = getCollectionSlug(model);
|
|
186
|
+
// Validate collection exists before proceeding
|
|
187
|
+
await validateCollection(payload, collectionSlug, model);
|
|
188
|
+
const payloadWhere = convertWhereClause({
|
|
189
|
+
idType: adapterConfig.idType,
|
|
190
|
+
model: model,
|
|
191
|
+
where: where ?? []
|
|
192
|
+
});
|
|
193
|
+
debugLog([
|
|
194
|
+
'findOne',
|
|
195
|
+
{
|
|
196
|
+
collectionSlug
|
|
197
|
+
}
|
|
198
|
+
]);
|
|
199
|
+
try {
|
|
200
|
+
const singleId = singleIdQuery(payloadWhere);
|
|
201
|
+
let result = null;
|
|
202
|
+
if (singleId) {
|
|
203
|
+
debugLog([
|
|
204
|
+
'findOneByID',
|
|
205
|
+
{
|
|
206
|
+
collectionSlug,
|
|
207
|
+
id: singleId
|
|
208
|
+
}
|
|
209
|
+
]);
|
|
210
|
+
// PayloadCMS findByID accepts dynamic options (context, depth, select)
|
|
211
|
+
const findByIdOptions = {
|
|
212
|
+
collection: collectionSlug,
|
|
213
|
+
id: singleId,
|
|
214
|
+
context: createAdapterContext({
|
|
215
|
+
model,
|
|
216
|
+
operation: 'findOneByID'
|
|
217
|
+
}),
|
|
218
|
+
depth: PAYLOAD_QUERY_DEPTH
|
|
219
|
+
};
|
|
220
|
+
const convertedSelect = convertSelect(model, select);
|
|
221
|
+
if (convertedSelect) {
|
|
222
|
+
findByIdOptions.select = convertedSelect;
|
|
223
|
+
}
|
|
224
|
+
result = await payload.findByID(findByIdOptions);
|
|
225
|
+
} else {
|
|
226
|
+
debugLog([
|
|
227
|
+
'findOneByWhere',
|
|
228
|
+
{
|
|
229
|
+
collectionSlug,
|
|
230
|
+
payloadWhere
|
|
231
|
+
}
|
|
232
|
+
]);
|
|
233
|
+
// PayloadCMS find accepts dynamic options (where, context, depth, select, limit)
|
|
234
|
+
const findOptions = {
|
|
235
|
+
collection: collectionSlug,
|
|
236
|
+
where: payloadWhere,
|
|
237
|
+
context: createAdapterContext({
|
|
238
|
+
model,
|
|
239
|
+
operation: 'findOneByWhere'
|
|
240
|
+
}),
|
|
241
|
+
depth: PAYLOAD_QUERY_DEPTH,
|
|
242
|
+
limit: 1
|
|
243
|
+
};
|
|
244
|
+
const convertedSelect = convertSelect(model, select);
|
|
245
|
+
if (convertedSelect) {
|
|
246
|
+
findOptions.select = convertedSelect;
|
|
247
|
+
}
|
|
248
|
+
const docs = await payload.find(findOptions);
|
|
249
|
+
result = docs.docs[0] ?? null;
|
|
250
|
+
}
|
|
251
|
+
const transformedResult = transformOutput({
|
|
252
|
+
doc: result,
|
|
253
|
+
model: model
|
|
254
|
+
});
|
|
255
|
+
debugLog([
|
|
256
|
+
'findOne result',
|
|
257
|
+
{
|
|
258
|
+
collectionSlug,
|
|
259
|
+
transformedResult,
|
|
260
|
+
duration: `${Date.now() - start}ms`
|
|
261
|
+
}
|
|
262
|
+
]);
|
|
263
|
+
return transformedResult;
|
|
264
|
+
} catch (error) {
|
|
265
|
+
if (error instanceof Error && 'status' in error && error.status === 404) {
|
|
266
|
+
return null;
|
|
267
|
+
}
|
|
268
|
+
errorLog([
|
|
269
|
+
'Error in findOne: ',
|
|
270
|
+
error
|
|
271
|
+
]);
|
|
272
|
+
return null;
|
|
273
|
+
}
|
|
274
|
+
},
|
|
275
|
+
async findMany ({ model, where, limit = 10, sortBy, offset = 0 }) {
|
|
276
|
+
const start = Date.now();
|
|
277
|
+
const payload = await resolvePayloadClient();
|
|
278
|
+
const collectionSlug = getCollectionSlug(model);
|
|
279
|
+
// Validate collection exists before proceeding
|
|
280
|
+
await validateCollection(payload, collectionSlug, model);
|
|
281
|
+
const payloadWhere = convertWhereClause({
|
|
282
|
+
idType: adapterConfig.idType,
|
|
283
|
+
model: model,
|
|
284
|
+
where: where ?? []
|
|
285
|
+
});
|
|
286
|
+
debugLog([
|
|
287
|
+
'findMany',
|
|
288
|
+
{
|
|
289
|
+
collectionSlug,
|
|
290
|
+
sortBy,
|
|
291
|
+
limit,
|
|
292
|
+
offset
|
|
293
|
+
}
|
|
294
|
+
]);
|
|
295
|
+
try {
|
|
296
|
+
let result = null;
|
|
297
|
+
const singleId = singleIdQuery(payloadWhere);
|
|
298
|
+
if (singleId) {
|
|
299
|
+
debugLog([
|
|
300
|
+
'findManyBySingleID',
|
|
301
|
+
{
|
|
302
|
+
collectionSlug,
|
|
303
|
+
id: singleId
|
|
304
|
+
}
|
|
305
|
+
]);
|
|
306
|
+
const doc = await payload.findByID({
|
|
307
|
+
collection: collectionSlug,
|
|
308
|
+
id: singleId,
|
|
309
|
+
depth: PAYLOAD_QUERY_DEPTH,
|
|
310
|
+
context: createAdapterContext({
|
|
311
|
+
model,
|
|
312
|
+
operation: 'findManyBySingleID'
|
|
313
|
+
})
|
|
314
|
+
});
|
|
315
|
+
result = {
|
|
316
|
+
docs: doc ? [
|
|
317
|
+
doc
|
|
318
|
+
] : [],
|
|
319
|
+
totalDocs: doc ? 1 : 0
|
|
320
|
+
};
|
|
321
|
+
} else {
|
|
322
|
+
debugLog([
|
|
323
|
+
'findManyByWhere',
|
|
324
|
+
{
|
|
325
|
+
collectionSlug,
|
|
326
|
+
payloadWhere
|
|
327
|
+
}
|
|
328
|
+
]);
|
|
329
|
+
const spill = offset % limit;
|
|
330
|
+
const page = Math.floor(offset / limit) + 1;
|
|
331
|
+
const fetchLimit = spill ? limit + spill : limit;
|
|
332
|
+
const convertedSort = convertSort(model, sortBy);
|
|
333
|
+
// PayloadCMS find accepts dynamic arguments (where, sort, limit, page, depth, context)
|
|
334
|
+
const findArgs = {
|
|
335
|
+
collection: collectionSlug,
|
|
336
|
+
where: payloadWhere,
|
|
337
|
+
limit: fetchLimit,
|
|
338
|
+
page,
|
|
339
|
+
depth: PAYLOAD_QUERY_DEPTH,
|
|
340
|
+
context: createAdapterContext({
|
|
341
|
+
model,
|
|
342
|
+
operation: 'findManyByWhere'
|
|
343
|
+
})
|
|
344
|
+
};
|
|
345
|
+
if (convertedSort) {
|
|
346
|
+
findArgs.sort = convertedSort;
|
|
347
|
+
}
|
|
348
|
+
const res = await payload.find(findArgs);
|
|
349
|
+
result = {
|
|
350
|
+
docs: res.docs.slice(spill, spill + limit),
|
|
351
|
+
totalDocs: res.totalDocs
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
const transformedResult = result?.docs.map((doc)=>transformOutput({
|
|
355
|
+
doc,
|
|
356
|
+
model: model
|
|
357
|
+
})) ?? [];
|
|
358
|
+
debugLog([
|
|
359
|
+
'findMany result',
|
|
360
|
+
{
|
|
361
|
+
collectionSlug,
|
|
362
|
+
transformedResult,
|
|
363
|
+
duration: `${Date.now() - start}ms`
|
|
364
|
+
}
|
|
365
|
+
]);
|
|
366
|
+
return transformedResult;
|
|
367
|
+
} catch (error) {
|
|
368
|
+
if (error instanceof Error && 'status' in error && error.status === 404) {
|
|
369
|
+
return [];
|
|
370
|
+
}
|
|
371
|
+
errorLog([
|
|
372
|
+
'Error in findMany: ',
|
|
373
|
+
error
|
|
374
|
+
]);
|
|
375
|
+
return [];
|
|
376
|
+
}
|
|
377
|
+
},
|
|
378
|
+
async update ({ model, where, update }) {
|
|
379
|
+
const start = Date.now();
|
|
380
|
+
const payload = await resolvePayloadClient();
|
|
381
|
+
const collectionSlug = getCollectionSlug(model);
|
|
382
|
+
// Validate collection exists before proceeding
|
|
383
|
+
await validateCollection(payload, collectionSlug, model);
|
|
384
|
+
const payloadWhere = convertWhereClause({
|
|
385
|
+
idType: adapterConfig.idType,
|
|
386
|
+
model: model,
|
|
387
|
+
where: where ?? []
|
|
388
|
+
});
|
|
389
|
+
const transformedInput = transformInput({
|
|
390
|
+
data: update,
|
|
391
|
+
model: model,
|
|
392
|
+
idType: adapterConfig.idType
|
|
393
|
+
});
|
|
394
|
+
debugLog([
|
|
395
|
+
'update',
|
|
396
|
+
{
|
|
397
|
+
collectionSlug,
|
|
398
|
+
update
|
|
399
|
+
}
|
|
400
|
+
]);
|
|
401
|
+
try {
|
|
402
|
+
let result = null;
|
|
403
|
+
const id = singleIdQuery(payloadWhere);
|
|
404
|
+
if (id) {
|
|
405
|
+
debugLog([
|
|
406
|
+
'updateByID',
|
|
407
|
+
{
|
|
408
|
+
collectionSlug,
|
|
409
|
+
id
|
|
410
|
+
}
|
|
411
|
+
]);
|
|
412
|
+
const updateResponse = await payload.update({
|
|
413
|
+
collection: collectionSlug,
|
|
414
|
+
id,
|
|
415
|
+
data: transformedInput,
|
|
416
|
+
depth: PAYLOAD_QUERY_DEPTH,
|
|
417
|
+
context: createAdapterContext({
|
|
418
|
+
model,
|
|
419
|
+
operation: 'updateByID'
|
|
420
|
+
})
|
|
421
|
+
});
|
|
422
|
+
result = normalizePayloadDocumentResult(updateResponse);
|
|
423
|
+
} else {
|
|
424
|
+
debugLog([
|
|
425
|
+
'updateByWhere',
|
|
426
|
+
{
|
|
427
|
+
collectionSlug,
|
|
428
|
+
payloadWhere
|
|
429
|
+
}
|
|
430
|
+
]);
|
|
431
|
+
const updateResponse = await payload.update({
|
|
432
|
+
collection: collectionSlug,
|
|
433
|
+
where: payloadWhere,
|
|
434
|
+
data: transformedInput,
|
|
435
|
+
depth: PAYLOAD_QUERY_DEPTH,
|
|
436
|
+
context: createAdapterContext({
|
|
437
|
+
model,
|
|
438
|
+
operation: 'updateByWhere'
|
|
439
|
+
})
|
|
440
|
+
});
|
|
441
|
+
result = normalizePayloadDocumentResult(updateResponse);
|
|
442
|
+
}
|
|
443
|
+
const transformedResult = transformOutput({
|
|
444
|
+
doc: result,
|
|
445
|
+
model: model
|
|
446
|
+
});
|
|
447
|
+
debugLog([
|
|
448
|
+
'update-result',
|
|
449
|
+
{
|
|
450
|
+
collectionSlug,
|
|
451
|
+
transformedResult,
|
|
452
|
+
duration: `${Date.now() - start}ms`
|
|
453
|
+
}
|
|
454
|
+
]);
|
|
455
|
+
return transformedResult;
|
|
456
|
+
} catch (error) {
|
|
457
|
+
if (error instanceof Error && 'status' in error && error.status === 404) {
|
|
458
|
+
return null;
|
|
459
|
+
}
|
|
460
|
+
errorLog([
|
|
461
|
+
'Error in update: ',
|
|
462
|
+
error
|
|
463
|
+
]);
|
|
464
|
+
return null;
|
|
465
|
+
}
|
|
466
|
+
},
|
|
467
|
+
async updateMany ({ model, where, update }) {
|
|
468
|
+
const start = Date.now();
|
|
469
|
+
const payload = await resolvePayloadClient();
|
|
470
|
+
const collectionSlug = getCollectionSlug(model);
|
|
471
|
+
// Validate collection exists before proceeding
|
|
472
|
+
await validateCollection(payload, collectionSlug, model);
|
|
473
|
+
const payloadWhere = convertWhereClause({
|
|
474
|
+
idType: adapterConfig.idType,
|
|
475
|
+
model: model,
|
|
476
|
+
where: where ?? []
|
|
477
|
+
});
|
|
478
|
+
const transformedInput = transformInput({
|
|
479
|
+
data: update,
|
|
480
|
+
model: model,
|
|
481
|
+
idType: adapterConfig.idType
|
|
482
|
+
});
|
|
483
|
+
debugLog([
|
|
484
|
+
'updateMany',
|
|
485
|
+
{
|
|
486
|
+
collectionSlug,
|
|
487
|
+
payloadWhere,
|
|
488
|
+
update
|
|
489
|
+
}
|
|
490
|
+
]);
|
|
491
|
+
try {
|
|
492
|
+
const updateResponse = await payload.update({
|
|
493
|
+
collection: collectionSlug,
|
|
494
|
+
where: payloadWhere,
|
|
495
|
+
data: transformedInput,
|
|
496
|
+
depth: PAYLOAD_QUERY_DEPTH,
|
|
497
|
+
context: createAdapterContext({
|
|
498
|
+
model,
|
|
499
|
+
operation: 'updateMany'
|
|
500
|
+
})
|
|
501
|
+
});
|
|
502
|
+
// PayloadCMS updateMany can return docs array with dynamic document structures
|
|
503
|
+
// Using Record<string, unknown> because document structure varies by collection and cannot be strictly typed
|
|
504
|
+
const updateDocs = updateResponse && typeof updateResponse === 'object' && 'docs' in updateResponse && Array.isArray(updateResponse.docs) ? updateResponse.docs ?? [] : [];
|
|
505
|
+
debugLog([
|
|
506
|
+
'updateMany result',
|
|
507
|
+
{
|
|
508
|
+
collectionSlug,
|
|
509
|
+
result: updateDocs,
|
|
510
|
+
duration: `${Date.now() - start}ms`
|
|
511
|
+
}
|
|
512
|
+
]);
|
|
513
|
+
return updateDocs.length;
|
|
514
|
+
} catch (error) {
|
|
515
|
+
if (error instanceof Error && 'status' in error && error.status === 404) {
|
|
516
|
+
return 0;
|
|
517
|
+
}
|
|
518
|
+
errorLog([
|
|
519
|
+
'Error in updateMany: ',
|
|
520
|
+
error
|
|
521
|
+
]);
|
|
522
|
+
return 0;
|
|
523
|
+
}
|
|
524
|
+
},
|
|
525
|
+
async delete ({ model, where }) {
|
|
526
|
+
const start = Date.now();
|
|
527
|
+
const payload = await resolvePayloadClient();
|
|
528
|
+
const collectionSlug = getCollectionSlug(model);
|
|
529
|
+
// Validate collection exists before proceeding
|
|
530
|
+
await validateCollection(payload, collectionSlug, model);
|
|
531
|
+
const payloadWhere = convertWhereClause({
|
|
532
|
+
idType: adapterConfig.idType,
|
|
533
|
+
model: model,
|
|
534
|
+
where: where ?? []
|
|
535
|
+
});
|
|
536
|
+
debugLog([
|
|
537
|
+
'delete',
|
|
538
|
+
{
|
|
539
|
+
collectionSlug
|
|
540
|
+
}
|
|
541
|
+
]);
|
|
542
|
+
try {
|
|
543
|
+
let deleteResult = null;
|
|
544
|
+
const singleId = singleIdQuery(payloadWhere);
|
|
545
|
+
if (singleId) {
|
|
546
|
+
debugLog([
|
|
547
|
+
'deleteByID',
|
|
548
|
+
{
|
|
549
|
+
collectionSlug,
|
|
550
|
+
id: singleId
|
|
551
|
+
}
|
|
552
|
+
]);
|
|
553
|
+
const deleteResponse = await payload.delete({
|
|
554
|
+
collection: collectionSlug,
|
|
555
|
+
id: singleId,
|
|
556
|
+
depth: PAYLOAD_QUERY_DEPTH,
|
|
557
|
+
context: createAdapterContext({
|
|
558
|
+
model,
|
|
559
|
+
operation: 'deleteByID'
|
|
560
|
+
})
|
|
561
|
+
});
|
|
562
|
+
const deletedDoc = normalizePayloadDocumentResult(deleteResponse);
|
|
563
|
+
deleteResult = {
|
|
564
|
+
doc: deletedDoc,
|
|
565
|
+
errors: []
|
|
566
|
+
};
|
|
567
|
+
} else {
|
|
568
|
+
debugLog([
|
|
569
|
+
'deleteByWhere',
|
|
570
|
+
{
|
|
571
|
+
collectionSlug,
|
|
572
|
+
payloadWhere
|
|
573
|
+
}
|
|
574
|
+
]);
|
|
575
|
+
const deleteResponse = await payload.delete({
|
|
576
|
+
collection: collectionSlug,
|
|
577
|
+
where: payloadWhere,
|
|
578
|
+
depth: PAYLOAD_QUERY_DEPTH,
|
|
579
|
+
context: createAdapterContext({
|
|
580
|
+
model,
|
|
581
|
+
operation: 'deleteByWhere'
|
|
582
|
+
})
|
|
583
|
+
});
|
|
584
|
+
const deletedDoc = normalizePayloadDocumentResult(deleteResponse);
|
|
585
|
+
deleteResult = {
|
|
586
|
+
doc: deletedDoc,
|
|
587
|
+
errors: []
|
|
588
|
+
};
|
|
589
|
+
}
|
|
590
|
+
debugLog([
|
|
591
|
+
'delete result',
|
|
592
|
+
{
|
|
593
|
+
collectionSlug,
|
|
594
|
+
result: deleteResult,
|
|
595
|
+
duration: `${Date.now() - start}ms`
|
|
596
|
+
}
|
|
597
|
+
]);
|
|
598
|
+
} catch (error) {
|
|
599
|
+
if (error instanceof Error && 'status' in error && error.status === 404) {
|
|
600
|
+
return;
|
|
601
|
+
}
|
|
602
|
+
errorLog([
|
|
603
|
+
'Error in delete: ',
|
|
604
|
+
error
|
|
605
|
+
]);
|
|
606
|
+
}
|
|
607
|
+
},
|
|
608
|
+
async deleteMany ({ model, where }) {
|
|
609
|
+
const start = Date.now();
|
|
610
|
+
const payload = await resolvePayloadClient();
|
|
611
|
+
const collectionSlug = getCollectionSlug(model);
|
|
612
|
+
// Validate collection exists before proceeding
|
|
613
|
+
await validateCollection(payload, collectionSlug, model);
|
|
614
|
+
const payloadWhere = convertWhereClause({
|
|
615
|
+
idType: adapterConfig.idType,
|
|
616
|
+
model: model,
|
|
617
|
+
where: where ?? []
|
|
618
|
+
});
|
|
619
|
+
debugLog([
|
|
620
|
+
'deleteMany',
|
|
621
|
+
{
|
|
622
|
+
collectionSlug,
|
|
623
|
+
payloadWhere
|
|
624
|
+
}
|
|
625
|
+
]);
|
|
626
|
+
try {
|
|
627
|
+
const deleteResponse = await payload.delete({
|
|
628
|
+
collection: collectionSlug,
|
|
629
|
+
where: payloadWhere,
|
|
630
|
+
depth: PAYLOAD_QUERY_DEPTH,
|
|
631
|
+
context: createAdapterContext({
|
|
632
|
+
model,
|
|
633
|
+
operation: 'deleteMany'
|
|
634
|
+
})
|
|
635
|
+
});
|
|
636
|
+
const deleteDocsLength = (()=>{
|
|
637
|
+
if (!deleteResponse) {
|
|
638
|
+
return 0;
|
|
639
|
+
}
|
|
640
|
+
// PayloadCMS deleteMany can return docs array with dynamic document structures
|
|
641
|
+
// Using Record<string, unknown> because document structure varies by collection and cannot be strictly typed
|
|
642
|
+
if (typeof deleteResponse === 'object' && 'docs' in deleteResponse && Array.isArray(deleteResponse.docs)) {
|
|
643
|
+
return (deleteResponse.docs ?? []).length;
|
|
644
|
+
}
|
|
645
|
+
return 1;
|
|
646
|
+
})();
|
|
647
|
+
debugLog([
|
|
648
|
+
'deleteMany result',
|
|
649
|
+
{
|
|
650
|
+
collectionSlug,
|
|
651
|
+
result: deleteResponse,
|
|
652
|
+
duration: `${Date.now() - start}ms`
|
|
653
|
+
}
|
|
654
|
+
]);
|
|
655
|
+
return deleteDocsLength;
|
|
656
|
+
} catch (error) {
|
|
657
|
+
if (error instanceof Error && 'status' in error && error.status === 404) {
|
|
658
|
+
return 0;
|
|
659
|
+
}
|
|
660
|
+
errorLog([
|
|
661
|
+
'Error in deleteMany: ',
|
|
662
|
+
error
|
|
663
|
+
]);
|
|
664
|
+
return 0;
|
|
665
|
+
}
|
|
666
|
+
},
|
|
667
|
+
async count ({ model, where }) {
|
|
668
|
+
const start = Date.now();
|
|
669
|
+
const payload = await resolvePayloadClient();
|
|
670
|
+
const collectionSlug = getCollectionSlug(model);
|
|
671
|
+
// Validate collection exists before proceeding
|
|
672
|
+
await validateCollection(payload, collectionSlug, model);
|
|
673
|
+
const payloadWhere = convertWhereClause({
|
|
674
|
+
idType: adapterConfig.idType,
|
|
675
|
+
model: model,
|
|
676
|
+
where: where ?? []
|
|
677
|
+
});
|
|
678
|
+
debugLog([
|
|
679
|
+
'count',
|
|
680
|
+
{
|
|
681
|
+
collectionSlug,
|
|
682
|
+
payloadWhere
|
|
683
|
+
}
|
|
684
|
+
]);
|
|
685
|
+
try {
|
|
686
|
+
const result = await payload.count({
|
|
687
|
+
collection: collectionSlug,
|
|
688
|
+
where: payloadWhere,
|
|
689
|
+
depth: PAYLOAD_QUERY_DEPTH,
|
|
690
|
+
context: createAdapterContext({
|
|
691
|
+
model,
|
|
692
|
+
operation: 'count'
|
|
693
|
+
})
|
|
694
|
+
});
|
|
695
|
+
debugLog([
|
|
696
|
+
'count result',
|
|
697
|
+
{
|
|
698
|
+
collectionSlug,
|
|
699
|
+
result: {
|
|
700
|
+
totalDocs: result.totalDocs
|
|
701
|
+
},
|
|
702
|
+
duration: `${Date.now() - start}ms`
|
|
703
|
+
}
|
|
704
|
+
]);
|
|
705
|
+
return result.totalDocs;
|
|
706
|
+
} catch (error) {
|
|
707
|
+
if (error instanceof Error && 'status' in error && error.status === 404) {
|
|
708
|
+
return 0;
|
|
709
|
+
}
|
|
710
|
+
errorLog([
|
|
711
|
+
'Error in count: ',
|
|
712
|
+
error
|
|
713
|
+
]);
|
|
714
|
+
return 0;
|
|
715
|
+
}
|
|
716
|
+
},
|
|
717
|
+
createSchema: async (options, file)=>{
|
|
718
|
+
const schemaCode = await generateSchema(options);
|
|
719
|
+
return {
|
|
720
|
+
code: schemaCode,
|
|
721
|
+
path: file || 'schema.ts',
|
|
722
|
+
append: false,
|
|
723
|
+
overwrite: true
|
|
724
|
+
};
|
|
725
|
+
}
|
|
726
|
+
};
|
|
727
|
+
};
|
|
728
|
+
};
|
|
729
|
+
export { generateSchema, payloadAdapter };
|
|
730
|
+
|
|
731
|
+
//# sourceMappingURL=index.js.map
|