@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,119 @@
|
|
|
1
|
+
import { baseSlugs, defaults } from "@/better-auth/plugin/constants";
|
|
2
|
+
import { generateAdminInviteUrl } from "../../../payload/utils/generate-admin-invite-url";
|
|
3
|
+
import { isAdminWithRoles } from "../utils/payload-access";
|
|
4
|
+
import { getAdminInviteUrlAfterReadHook } from "./hooks/get-url-after-read";
|
|
5
|
+
import { getUrlBeforeChangeHook } from "./hooks/get-url-before-change";
|
|
6
|
+
export function buildAdminInvitationsCollection({ incomingCollections, pluginOptions }) {
|
|
7
|
+
const generateAdminInviteUrlFn = pluginOptions.adminInvitations?.generateInviteUrl ?? generateAdminInviteUrl;
|
|
8
|
+
const adminInvitationSlug = pluginOptions.adminInvitations?.slug ?? baseSlugs.adminInvitations;
|
|
9
|
+
const adminRoles = pluginOptions.users?.adminRoles ?? [
|
|
10
|
+
defaults.adminRole
|
|
11
|
+
];
|
|
12
|
+
const roles = pluginOptions.users?.roles ?? [
|
|
13
|
+
defaults.userRole
|
|
14
|
+
];
|
|
15
|
+
const allRoleOptions = [
|
|
16
|
+
...new Set([
|
|
17
|
+
...adminRoles,
|
|
18
|
+
...roles
|
|
19
|
+
])
|
|
20
|
+
].map((role)=>({
|
|
21
|
+
label: role.split(/[-_\s]/).map((word)=>word.charAt(0).toUpperCase() + word.slice(1)).join(' '),
|
|
22
|
+
value: role
|
|
23
|
+
}));
|
|
24
|
+
const existingAdminInvitationCollection = incomingCollections.find((collection)=>collection.slug === adminInvitationSlug);
|
|
25
|
+
let adminInvitationsCollection = {
|
|
26
|
+
...existingAdminInvitationCollection,
|
|
27
|
+
slug: adminInvitationSlug,
|
|
28
|
+
admin: {
|
|
29
|
+
defaultColumns: [
|
|
30
|
+
'role',
|
|
31
|
+
'token',
|
|
32
|
+
'url'
|
|
33
|
+
],
|
|
34
|
+
useAsTitle: 'token',
|
|
35
|
+
group: pluginOptions?.collectionAdminGroup ?? 'Auth',
|
|
36
|
+
...existingAdminInvitationCollection?.admin,
|
|
37
|
+
...pluginOptions.adminInvitations?.hidden !== undefined && {
|
|
38
|
+
hidden: pluginOptions.adminInvitations.hidden
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
access: {
|
|
42
|
+
create: isAdminWithRoles({
|
|
43
|
+
adminRoles
|
|
44
|
+
}),
|
|
45
|
+
read: isAdminWithRoles({
|
|
46
|
+
adminRoles
|
|
47
|
+
}),
|
|
48
|
+
delete: isAdminWithRoles({
|
|
49
|
+
adminRoles
|
|
50
|
+
}),
|
|
51
|
+
update: isAdminWithRoles({
|
|
52
|
+
adminRoles
|
|
53
|
+
}),
|
|
54
|
+
...existingAdminInvitationCollection?.access ?? {}
|
|
55
|
+
},
|
|
56
|
+
timestamps: true,
|
|
57
|
+
fields: [
|
|
58
|
+
{
|
|
59
|
+
label: 'Role',
|
|
60
|
+
name: 'role',
|
|
61
|
+
type: 'select',
|
|
62
|
+
options: allRoleOptions,
|
|
63
|
+
required: true,
|
|
64
|
+
defaultValue: pluginOptions.users?.defaultAdminRole ?? defaults.adminRole
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: 'token',
|
|
68
|
+
label: 'Token',
|
|
69
|
+
index: true,
|
|
70
|
+
type: 'text',
|
|
71
|
+
admin: {
|
|
72
|
+
readOnly: true,
|
|
73
|
+
components: {
|
|
74
|
+
afterInput: [
|
|
75
|
+
{
|
|
76
|
+
path: 'payload-auth/shared/payload/fields#GenerateUuidButton'
|
|
77
|
+
}
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
required: true
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
name: 'url',
|
|
85
|
+
label: 'URL',
|
|
86
|
+
type: 'text',
|
|
87
|
+
hooks: {
|
|
88
|
+
beforeChange: [
|
|
89
|
+
getUrlBeforeChangeHook()
|
|
90
|
+
],
|
|
91
|
+
afterRead: [
|
|
92
|
+
getAdminInviteUrlAfterReadHook({
|
|
93
|
+
generateAdminInviteUrlFn
|
|
94
|
+
})
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
admin: {
|
|
98
|
+
readOnly: true,
|
|
99
|
+
components: {
|
|
100
|
+
afterInput: [
|
|
101
|
+
{
|
|
102
|
+
path: 'payload-auth/shared/payload/fields#FieldCopyButton'
|
|
103
|
+
}
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
virtual: true
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
};
|
|
111
|
+
if (pluginOptions.adminInvitations?.collectionOverrides) {
|
|
112
|
+
adminInvitationsCollection = pluginOptions.adminInvitations.collectionOverrides({
|
|
113
|
+
collection: adminInvitationsCollection
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
return adminInvitationsCollection;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/better-auth/plugin/lib/build-collections/admin-invitations/index.ts"],"sourcesContent":["import { baseSlugs, defaults } from '@/better-auth/plugin/constants';\nimport type { BetterAuthPluginOptions } from '@/better-auth/plugin/types';\nimport type { CollectionConfig } from 'payload';\nimport { generateAdminInviteUrl } from '../../../payload/utils/generate-admin-invite-url';\nimport { isAdminWithRoles } from '../utils/payload-access';\nimport { getAdminInviteUrlAfterReadHook } from './hooks/get-url-after-read';\nimport { getUrlBeforeChangeHook } from './hooks/get-url-before-change';\n\nexport function buildAdminInvitationsCollection({\n incomingCollections,\n pluginOptions,\n}: {\n incomingCollections: CollectionConfig[];\n pluginOptions: BetterAuthPluginOptions;\n}): CollectionConfig {\n const generateAdminInviteUrlFn =\n pluginOptions.adminInvitations?.generateInviteUrl ?? generateAdminInviteUrl;\n const adminInvitationSlug = pluginOptions.adminInvitations?.slug ?? baseSlugs.adminInvitations;\n const adminRoles = pluginOptions.users?.adminRoles ?? [defaults.adminRole];\n const roles = pluginOptions.users?.roles ?? [defaults.userRole];\n const allRoleOptions = [...new Set([...adminRoles, ...roles])].map(role => ({\n label: role\n .split(/[-_\\s]/)\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' '),\n value: role,\n }));\n const existingAdminInvitationCollection = incomingCollections.find(\n collection => collection.slug === adminInvitationSlug\n ) as CollectionConfig | undefined;\n\n let adminInvitationsCollection: CollectionConfig = {\n ...existingAdminInvitationCollection,\n slug: adminInvitationSlug,\n admin: {\n defaultColumns: ['role', 'token', 'url'],\n useAsTitle: 'token',\n group: pluginOptions?.collectionAdminGroup ?? 'Auth',\n ...existingAdminInvitationCollection?.admin,\n ...(pluginOptions.adminInvitations?.hidden !== undefined && {\n hidden: pluginOptions.adminInvitations.hidden,\n }),\n },\n access: {\n create: isAdminWithRoles({ adminRoles }),\n read: isAdminWithRoles({ adminRoles }),\n delete: isAdminWithRoles({ adminRoles }),\n update: isAdminWithRoles({ adminRoles }),\n ...(existingAdminInvitationCollection?.access ?? {}),\n },\n timestamps: true,\n fields: [\n {\n label: 'Role',\n name: 'role',\n type: 'select',\n options: allRoleOptions,\n required: true,\n defaultValue: pluginOptions.users?.defaultAdminRole ?? defaults.adminRole,\n },\n {\n name: 'token',\n label: 'Token',\n index: true,\n type: 'text',\n admin: {\n readOnly: true,\n components: {\n afterInput: [\n {\n path: 'payload-auth/shared/payload/fields#GenerateUuidButton',\n },\n ],\n },\n },\n required: true,\n },\n {\n name: 'url',\n label: 'URL',\n type: 'text',\n hooks: {\n beforeChange: [getUrlBeforeChangeHook()],\n afterRead: [\n getAdminInviteUrlAfterReadHook({\n generateAdminInviteUrlFn,\n }),\n ],\n },\n admin: {\n readOnly: true,\n components: {\n afterInput: [\n {\n path: 'payload-auth/shared/payload/fields#FieldCopyButton',\n },\n ],\n },\n },\n virtual: true,\n },\n ],\n };\n\n if (pluginOptions.adminInvitations?.collectionOverrides) {\n adminInvitationsCollection = pluginOptions.adminInvitations.collectionOverrides({\n collection: adminInvitationsCollection,\n });\n }\n\n return adminInvitationsCollection;\n}\n"],"names":["baseSlugs","defaults","generateAdminInviteUrl","isAdminWithRoles","getAdminInviteUrlAfterReadHook","getUrlBeforeChangeHook","buildAdminInvitationsCollection","incomingCollections","pluginOptions","generateAdminInviteUrlFn","adminInvitations","generateInviteUrl","adminInvitationSlug","slug","adminRoles","users","adminRole","roles","userRole","allRoleOptions","Set","map","role","label","split","word","charAt","toUpperCase","slice","join","value","existingAdminInvitationCollection","find","collection","adminInvitationsCollection","admin","defaultColumns","useAsTitle","group","collectionAdminGroup","hidden","undefined","access","create","read","delete","update","timestamps","fields","name","type","options","required","defaultValue","defaultAdminRole","index","readOnly","components","afterInput","path","hooks","beforeChange","afterRead","virtual","collectionOverrides"],"mappings":"AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,iCAAiC;AAGrE,SAASC,sBAAsB,QAAQ,mDAAmD;AAC1F,SAASC,gBAAgB,QAAQ,0BAA0B;AAC3D,SAASC,8BAA8B,QAAQ,6BAA6B;AAC5E,SAASC,sBAAsB,QAAQ,gCAAgC;AAEvE,OAAO,SAASC,gCAAgC,EAC9CC,mBAAmB,EACnBC,aAAa,EAId;IACC,MAAMC,2BACJD,cAAcE,gBAAgB,EAAEC,qBAAqBT;IACvD,MAAMU,sBAAsBJ,cAAcE,gBAAgB,EAAEG,QAAQb,UAAUU,gBAAgB;IAC9F,MAAMI,aAAaN,cAAcO,KAAK,EAAED,cAAc;QAACb,SAASe,SAAS;KAAC;IAC1E,MAAMC,QAAQT,cAAcO,KAAK,EAAEE,SAAS;QAAChB,SAASiB,QAAQ;KAAC;IAC/D,MAAMC,iBAAiB;WAAI,IAAIC,IAAI;eAAIN;eAAeG;SAAM;KAAE,CAACI,GAAG,CAACC,CAAAA,OAAS,CAAA;YAC1EC,OAAOD,KACJE,KAAK,CAAC,UACNH,GAAG,CAACI,CAAAA,OAAQA,KAAKC,MAAM,CAAC,GAAGC,WAAW,KAAKF,KAAKG,KAAK,CAAC,IACtDC,IAAI,CAAC;YACRC,OAAOR;QACT,CAAA;IACA,MAAMS,oCAAoCxB,oBAAoByB,IAAI,CAChEC,CAAAA,aAAcA,WAAWpB,IAAI,KAAKD;IAGpC,IAAIsB,6BAA+C;QACjD,GAAGH,iCAAiC;QACpClB,MAAMD;QACNuB,OAAO;YACLC,gBAAgB;gBAAC;gBAAQ;gBAAS;aAAM;YACxCC,YAAY;YACZC,OAAO9B,eAAe+B,wBAAwB;YAC9C,GAAGR,mCAAmCI,KAAK;YAC3C,GAAI3B,cAAcE,gBAAgB,EAAE8B,WAAWC,aAAa;gBAC1DD,QAAQhC,cAAcE,gBAAgB,CAAC8B,MAAM;YAC/C,CAAC;QACH;QACAE,QAAQ;YACNC,QAAQxC,iBAAiB;gBAAEW;YAAW;YACtC8B,MAAMzC,iBAAiB;gBAAEW;YAAW;YACpC+B,QAAQ1C,iBAAiB;gBAAEW;YAAW;YACtCgC,QAAQ3C,iBAAiB;gBAAEW;YAAW;YACtC,GAAIiB,mCAAmCW,UAAU,CAAC,CAAC;QACrD;QACAK,YAAY;QACZC,QAAQ;YACN;gBACEzB,OAAO;gBACP0B,MAAM;gBACNC,MAAM;gBACNC,SAAShC;gBACTiC,UAAU;gBACVC,cAAc7C,cAAcO,KAAK,EAAEuC,oBAAoBrD,SAASe,SAAS;YAC3E;YACA;gBACEiC,MAAM;gBACN1B,OAAO;gBACPgC,OAAO;gBACPL,MAAM;gBACNf,OAAO;oBACLqB,UAAU;oBACVC,YAAY;wBACVC,YAAY;4BACV;gCACEC,MAAM;4BACR;yBACD;oBACH;gBACF;gBACAP,UAAU;YACZ;YACA;gBACEH,MAAM;gBACN1B,OAAO;gBACP2B,MAAM;gBACNU,OAAO;oBACLC,cAAc;wBAACxD;qBAAyB;oBACxCyD,WAAW;wBACT1D,+BAA+B;4BAC7BK;wBACF;qBACD;gBACH;gBACA0B,OAAO;oBACLqB,UAAU;oBACVC,YAAY;wBACVC,YAAY;4BACV;gCACEC,MAAM;4BACR;yBACD;oBACH;gBACF;gBACAI,SAAS;YACX;SACD;IACH;IAEA,IAAIvD,cAAcE,gBAAgB,EAAEsD,qBAAqB;QACvD9B,6BAA6B1B,cAAcE,gBAAgB,CAACsD,mBAAmB,CAAC;YAC9E/B,YAAYC;QACd;IACF;IAEA,OAAOA;AACT"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { baModelKey } from "../../constants";
|
|
2
|
+
import { getAdminAccess } from "../../helpers/get-admin-access";
|
|
3
|
+
import { assertAllSchemaFields, getSchemaCollectionSlug } from "./utils/collection-schema";
|
|
4
|
+
import { filterDuplicateFields } from "./utils/filter-duplicate-fields";
|
|
5
|
+
import { getCollectionFields } from "./utils/transform-schema-fields-to-payload";
|
|
6
|
+
export function buildApiKeysCollection({ incomingCollections, pluginOptions, resolvedSchemas }) {
|
|
7
|
+
const apiKeySlug = getSchemaCollectionSlug(resolvedSchemas, baModelKey.apikey);
|
|
8
|
+
const apiKeySchema = resolvedSchemas[baModelKey.apikey];
|
|
9
|
+
const existingApiKeyCollection = incomingCollections.find((collection)=>collection.slug === apiKeySlug);
|
|
10
|
+
const fieldOverrides = {
|
|
11
|
+
name: ()=>({
|
|
12
|
+
admin: {
|
|
13
|
+
readOnly: true,
|
|
14
|
+
description: 'The name of the API key.'
|
|
15
|
+
}
|
|
16
|
+
}),
|
|
17
|
+
start: ()=>({
|
|
18
|
+
admin: {
|
|
19
|
+
readOnly: true,
|
|
20
|
+
description: 'The starting characters of the API key.'
|
|
21
|
+
}
|
|
22
|
+
}),
|
|
23
|
+
prefix: ()=>({
|
|
24
|
+
admin: {
|
|
25
|
+
readOnly: true,
|
|
26
|
+
description: 'The API Key prefix. Stored as plain text.'
|
|
27
|
+
}
|
|
28
|
+
}),
|
|
29
|
+
key: ()=>({
|
|
30
|
+
admin: {
|
|
31
|
+
readOnly: true,
|
|
32
|
+
description: 'The hashed API key itself.'
|
|
33
|
+
}
|
|
34
|
+
}),
|
|
35
|
+
userId: ()=>({
|
|
36
|
+
admin: {
|
|
37
|
+
readOnly: true,
|
|
38
|
+
description: 'The user associated with the API key.'
|
|
39
|
+
}
|
|
40
|
+
}),
|
|
41
|
+
refillInterval: ()=>({
|
|
42
|
+
admin: {
|
|
43
|
+
readOnly: true,
|
|
44
|
+
description: 'The interval to refill the key in milliseconds.'
|
|
45
|
+
}
|
|
46
|
+
}),
|
|
47
|
+
refillAmount: ()=>({
|
|
48
|
+
admin: {
|
|
49
|
+
readOnly: true,
|
|
50
|
+
description: 'The amount to refill the remaining count of the key.'
|
|
51
|
+
}
|
|
52
|
+
}),
|
|
53
|
+
lastRefillAt: ()=>({
|
|
54
|
+
admin: {
|
|
55
|
+
readOnly: true,
|
|
56
|
+
description: 'The date and time when the key was last refilled.'
|
|
57
|
+
}
|
|
58
|
+
}),
|
|
59
|
+
enabled: ()=>({
|
|
60
|
+
defaultValue: true,
|
|
61
|
+
admin: {
|
|
62
|
+
readOnly: true,
|
|
63
|
+
description: 'Whether the API key is enabled.'
|
|
64
|
+
}
|
|
65
|
+
}),
|
|
66
|
+
rateLimitEnabled: ()=>({
|
|
67
|
+
defaultValue: true,
|
|
68
|
+
admin: {
|
|
69
|
+
readOnly: true,
|
|
70
|
+
description: 'Whether the API key has rate limiting enabled.'
|
|
71
|
+
}
|
|
72
|
+
}),
|
|
73
|
+
rateLimitTimeWindow: ()=>({
|
|
74
|
+
admin: {
|
|
75
|
+
readOnly: true,
|
|
76
|
+
description: 'The time window in milliseconds for the rate limit.'
|
|
77
|
+
}
|
|
78
|
+
}),
|
|
79
|
+
rateLimitMax: ()=>({
|
|
80
|
+
admin: {
|
|
81
|
+
readOnly: true,
|
|
82
|
+
description: 'The maximum number of requests allowed within the rate limit time window.'
|
|
83
|
+
}
|
|
84
|
+
}),
|
|
85
|
+
requestCount: ()=>({
|
|
86
|
+
admin: {
|
|
87
|
+
readOnly: true,
|
|
88
|
+
description: 'The number of requests made within the rate limit time window.'
|
|
89
|
+
}
|
|
90
|
+
}),
|
|
91
|
+
remaining: ()=>({
|
|
92
|
+
admin: {
|
|
93
|
+
readOnly: true,
|
|
94
|
+
description: 'The number of requests remaining.'
|
|
95
|
+
}
|
|
96
|
+
}),
|
|
97
|
+
lastRequest: ()=>({
|
|
98
|
+
admin: {
|
|
99
|
+
readOnly: true,
|
|
100
|
+
description: 'The date and time of the last request made to the key.'
|
|
101
|
+
}
|
|
102
|
+
}),
|
|
103
|
+
expiresAt: ()=>({
|
|
104
|
+
admin: {
|
|
105
|
+
readOnly: true,
|
|
106
|
+
description: 'The date and time of when the API key will expire.'
|
|
107
|
+
}
|
|
108
|
+
}),
|
|
109
|
+
permissions: ()=>({
|
|
110
|
+
admin: {
|
|
111
|
+
readOnly: true,
|
|
112
|
+
description: 'The permissions for the API key.'
|
|
113
|
+
}
|
|
114
|
+
}),
|
|
115
|
+
metadata: ()=>({
|
|
116
|
+
type: 'json',
|
|
117
|
+
admin: {
|
|
118
|
+
readOnly: true,
|
|
119
|
+
description: 'Any additional metadata you want to store with the key.'
|
|
120
|
+
}
|
|
121
|
+
})
|
|
122
|
+
};
|
|
123
|
+
const apiKeyFieldRules = [
|
|
124
|
+
{
|
|
125
|
+
condition: (field)=>field.type === 'date',
|
|
126
|
+
transform: (field)=>({
|
|
127
|
+
...field,
|
|
128
|
+
saveToJWT: false,
|
|
129
|
+
admin: {
|
|
130
|
+
disableBulkEdit: true,
|
|
131
|
+
hidden: true
|
|
132
|
+
},
|
|
133
|
+
index: true,
|
|
134
|
+
// Using any because PayloadCMS label function receives translation function with dynamic type
|
|
135
|
+
label: ({ t })=>t('general:updatedAt')
|
|
136
|
+
})
|
|
137
|
+
}
|
|
138
|
+
];
|
|
139
|
+
const collectionFields = getCollectionFields({
|
|
140
|
+
schema: apiKeySchema,
|
|
141
|
+
fieldRules: apiKeyFieldRules,
|
|
142
|
+
additionalProperties: fieldOverrides
|
|
143
|
+
});
|
|
144
|
+
let apiKeyCollection = {
|
|
145
|
+
...existingApiKeyCollection,
|
|
146
|
+
slug: apiKeySlug,
|
|
147
|
+
admin: {
|
|
148
|
+
hidden: pluginOptions.hidePluginCollections ?? false,
|
|
149
|
+
useAsTitle: apiKeySchema?.fields?.name?.fieldName ?? 'id',
|
|
150
|
+
description: 'API keys are used to authenticate requests to the API.',
|
|
151
|
+
group: pluginOptions?.collectionAdminGroup ?? 'Auth',
|
|
152
|
+
...existingApiKeyCollection?.admin
|
|
153
|
+
},
|
|
154
|
+
access: {
|
|
155
|
+
...getAdminAccess(pluginOptions),
|
|
156
|
+
...existingApiKeyCollection?.access ?? {}
|
|
157
|
+
},
|
|
158
|
+
custom: {
|
|
159
|
+
...existingApiKeyCollection?.custom ?? {},
|
|
160
|
+
betterAuthModelKey: baModelKey.apikey
|
|
161
|
+
},
|
|
162
|
+
fields: [
|
|
163
|
+
...existingApiKeyCollection?.fields ?? [],
|
|
164
|
+
// Filter out fields that already exist to prevent duplicates
|
|
165
|
+
...filterDuplicateFields(existingApiKeyCollection?.fields, collectionFields)
|
|
166
|
+
]
|
|
167
|
+
};
|
|
168
|
+
if (typeof pluginOptions.pluginCollectionOverrides?.apiKeys === 'function') {
|
|
169
|
+
apiKeyCollection = pluginOptions.pluginCollectionOverrides.apiKeys({
|
|
170
|
+
collection: apiKeyCollection
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
assertAllSchemaFields(apiKeyCollection, apiKeySchema);
|
|
174
|
+
return apiKeyCollection;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
//# sourceMappingURL=api-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/better-auth/plugin/lib/build-collections/api-keys.ts"],"sourcesContent":["import type { Apikey } from '@/better-auth/generated-types';\nimport type { BuildCollectionProps, FieldOverrides, FieldRule } from '@/better-auth/plugin/types';\nimport type { CollectionConfig } from 'payload';\nimport { baModelKey } from '../../constants';\nimport { getAdminAccess } from '../../helpers/get-admin-access';\nimport { assertAllSchemaFields, getSchemaCollectionSlug } from './utils/collection-schema';\nimport { filterDuplicateFields } from './utils/filter-duplicate-fields';\nimport { getCollectionFields } from './utils/transform-schema-fields-to-payload';\n\nexport function buildApiKeysCollection({\n incomingCollections,\n pluginOptions,\n resolvedSchemas,\n}: BuildCollectionProps): CollectionConfig {\n const apiKeySlug = getSchemaCollectionSlug(resolvedSchemas, baModelKey.apikey);\n const apiKeySchema = resolvedSchemas[baModelKey.apikey];\n\n const existingApiKeyCollection = incomingCollections.find(\n collection => collection.slug === apiKeySlug\n ) as CollectionConfig | undefined;\n\n const fieldOverrides: FieldOverrides<keyof Apikey> = {\n name: () => ({\n admin: { readOnly: true, description: 'The name of the API key.' },\n }),\n start: () => ({\n admin: { readOnly: true, description: 'The starting characters of the API key.' },\n }),\n prefix: () => ({\n admin: { readOnly: true, description: 'The API Key prefix. Stored as plain text.' },\n }),\n key: () => ({\n admin: { readOnly: true, description: 'The hashed API key itself.' },\n }),\n userId: () => ({\n admin: { readOnly: true, description: 'The user associated with the API key.' },\n }),\n refillInterval: () => ({\n admin: { readOnly: true, description: 'The interval to refill the key in milliseconds.' },\n }),\n refillAmount: () => ({\n admin: {\n readOnly: true,\n description: 'The amount to refill the remaining count of the key.',\n },\n }),\n lastRefillAt: () => ({\n admin: { readOnly: true, description: 'The date and time when the key was last refilled.' },\n }),\n enabled: () => ({\n defaultValue: true,\n admin: { readOnly: true, description: 'Whether the API key is enabled.' },\n }),\n rateLimitEnabled: () => ({\n defaultValue: true,\n admin: { readOnly: true, description: 'Whether the API key has rate limiting enabled.' },\n }),\n rateLimitTimeWindow: () => ({\n admin: { readOnly: true, description: 'The time window in milliseconds for the rate limit.' },\n }),\n rateLimitMax: () => ({\n admin: {\n readOnly: true,\n description: 'The maximum number of requests allowed within the rate limit time window.',\n },\n }),\n requestCount: () => ({\n admin: {\n readOnly: true,\n description: 'The number of requests made within the rate limit time window.',\n },\n }),\n remaining: () => ({\n admin: { readOnly: true, description: 'The number of requests remaining.' },\n }),\n lastRequest: () => ({\n admin: {\n readOnly: true,\n description: 'The date and time of the last request made to the key.',\n },\n }),\n expiresAt: () => ({\n admin: { readOnly: true, description: 'The date and time of when the API key will expire.' },\n }),\n permissions: () => ({\n admin: { readOnly: true, description: 'The permissions for the API key.' },\n }),\n metadata: () => ({\n type: 'json',\n admin: {\n readOnly: true,\n description: 'Any additional metadata you want to store with the key.',\n },\n }),\n };\n\n const apiKeyFieldRules: FieldRule[] = [\n {\n condition: field => field.type === 'date',\n transform: field => ({\n ...field,\n saveToJWT: false,\n admin: {\n disableBulkEdit: true,\n hidden: true,\n },\n index: true,\n // Using any because PayloadCMS label function receives translation function with dynamic type\n label: ({ t }: any) => t('general:updatedAt'),\n }),\n },\n ];\n\n const collectionFields = getCollectionFields({\n schema: apiKeySchema,\n fieldRules: apiKeyFieldRules,\n additionalProperties: fieldOverrides,\n });\n\n let apiKeyCollection: CollectionConfig = {\n ...existingApiKeyCollection,\n slug: apiKeySlug,\n admin: {\n hidden: pluginOptions.hidePluginCollections ?? false,\n useAsTitle: apiKeySchema?.fields?.name?.fieldName ?? 'id',\n description: 'API keys are used to authenticate requests to the API.',\n group: pluginOptions?.collectionAdminGroup ?? 'Auth',\n ...existingApiKeyCollection?.admin,\n },\n access: {\n ...getAdminAccess(pluginOptions),\n ...(existingApiKeyCollection?.access ?? {}),\n },\n custom: {\n ...(existingApiKeyCollection?.custom ?? {}),\n betterAuthModelKey: baModelKey.apikey,\n },\n fields: [\n ...(existingApiKeyCollection?.fields ?? []),\n // Filter out fields that already exist to prevent duplicates\n ...filterDuplicateFields(existingApiKeyCollection?.fields, collectionFields),\n ],\n };\n\n if (typeof pluginOptions.pluginCollectionOverrides?.apiKeys === 'function') {\n apiKeyCollection = pluginOptions.pluginCollectionOverrides.apiKeys({\n collection: apiKeyCollection,\n });\n }\n\n assertAllSchemaFields(apiKeyCollection, apiKeySchema);\n\n return apiKeyCollection;\n}\n"],"names":["baModelKey","getAdminAccess","assertAllSchemaFields","getSchemaCollectionSlug","filterDuplicateFields","getCollectionFields","buildApiKeysCollection","incomingCollections","pluginOptions","resolvedSchemas","apiKeySlug","apikey","apiKeySchema","existingApiKeyCollection","find","collection","slug","fieldOverrides","name","admin","readOnly","description","start","prefix","key","userId","refillInterval","refillAmount","lastRefillAt","enabled","defaultValue","rateLimitEnabled","rateLimitTimeWindow","rateLimitMax","requestCount","remaining","lastRequest","expiresAt","permissions","metadata","type","apiKeyFieldRules","condition","field","transform","saveToJWT","disableBulkEdit","hidden","index","label","t","collectionFields","schema","fieldRules","additionalProperties","apiKeyCollection","hidePluginCollections","useAsTitle","fields","fieldName","group","collectionAdminGroup","access","custom","betterAuthModelKey","pluginCollectionOverrides","apiKeys"],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { baModelKey } from "../../constants";
|
|
2
|
+
import { getAdminAccess } from "../../helpers/get-admin-access";
|
|
3
|
+
import { assertAllSchemaFields, getSchemaCollectionSlug, getSchemaFieldName } from "./utils/collection-schema";
|
|
4
|
+
import { filterDuplicateFields } from "./utils/filter-duplicate-fields";
|
|
5
|
+
import { getCollectionFields } from "./utils/transform-schema-fields-to-payload";
|
|
6
|
+
export function buildDeviceCodeCollection({ incomingCollections, pluginOptions, resolvedSchemas }) {
|
|
7
|
+
const deviceCodeSlug = getSchemaCollectionSlug(resolvedSchemas, baModelKey.deviceCode);
|
|
8
|
+
const deviceCodeSchema = resolvedSchemas[baModelKey.deviceCode];
|
|
9
|
+
const existingDeviceCodeCollection = incomingCollections.find((collection)=>collection.slug === deviceCodeSlug);
|
|
10
|
+
const fieldOverrides = {
|
|
11
|
+
userId: ()=>({
|
|
12
|
+
index: true,
|
|
13
|
+
admin: {
|
|
14
|
+
readOnly: true,
|
|
15
|
+
description: 'The user that is a member of the team.'
|
|
16
|
+
}
|
|
17
|
+
})
|
|
18
|
+
};
|
|
19
|
+
const collectionFields = getCollectionFields({
|
|
20
|
+
schema: deviceCodeSchema,
|
|
21
|
+
additionalProperties: fieldOverrides
|
|
22
|
+
});
|
|
23
|
+
const deviceCodeCollection = {
|
|
24
|
+
...existingDeviceCodeCollection,
|
|
25
|
+
slug: deviceCodeSlug,
|
|
26
|
+
admin: {
|
|
27
|
+
hidden: pluginOptions.hidePluginCollections ?? false,
|
|
28
|
+
useAsTitle: getSchemaFieldName(resolvedSchemas, baModelKey.deviceCode, 'deviceCode'),
|
|
29
|
+
description: 'Device codes of an organization team.',
|
|
30
|
+
group: pluginOptions?.collectionAdminGroup ?? 'Auth',
|
|
31
|
+
...existingDeviceCodeCollection?.admin
|
|
32
|
+
},
|
|
33
|
+
access: {
|
|
34
|
+
...getAdminAccess(pluginOptions),
|
|
35
|
+
...existingDeviceCodeCollection?.access ?? {}
|
|
36
|
+
},
|
|
37
|
+
custom: {
|
|
38
|
+
...existingDeviceCodeCollection?.custom ?? {},
|
|
39
|
+
betterAuthModelKey: baModelKey.deviceCode
|
|
40
|
+
},
|
|
41
|
+
fields: [
|
|
42
|
+
...existingDeviceCodeCollection?.fields ?? [],
|
|
43
|
+
...filterDuplicateFields(existingDeviceCodeCollection?.fields, collectionFields)
|
|
44
|
+
]
|
|
45
|
+
};
|
|
46
|
+
assertAllSchemaFields(deviceCodeCollection, deviceCodeSchema);
|
|
47
|
+
return deviceCodeCollection;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
//# sourceMappingURL=device-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/better-auth/plugin/lib/build-collections/device-code.ts"],"sourcesContent":["import { baModelKey } from '../../constants';\nimport { getAdminAccess } from '../../helpers/get-admin-access';\nimport {\n assertAllSchemaFields,\n getSchemaCollectionSlug,\n getSchemaFieldName,\n} from './utils/collection-schema';\nimport { filterDuplicateFields } from './utils/filter-duplicate-fields';\nimport { getCollectionFields } from './utils/transform-schema-fields-to-payload';\n\nimport type { DeviceCode } from '@/better-auth/generated-types';\nimport type { BuildCollectionProps, FieldOverrides } from '@/better-auth/plugin/types';\nimport type { CollectionConfig } from 'payload';\n\nexport function buildDeviceCodeCollection({\n incomingCollections,\n pluginOptions,\n resolvedSchemas,\n}: BuildCollectionProps): CollectionConfig {\n const deviceCodeSlug = getSchemaCollectionSlug(resolvedSchemas, baModelKey.deviceCode);\n const deviceCodeSchema = resolvedSchemas[baModelKey.deviceCode];\n\n const existingDeviceCodeCollection = incomingCollections.find(\n collection => collection.slug === deviceCodeSlug\n ) as CollectionConfig | undefined;\n\n const fieldOverrides: FieldOverrides<keyof DeviceCode> = {\n userId: () => ({\n index: true,\n admin: { readOnly: true, description: 'The user that is a member of the team.' },\n }),\n };\n\n const collectionFields = getCollectionFields({\n schema: deviceCodeSchema,\n additionalProperties: fieldOverrides,\n });\n\n const deviceCodeCollection: CollectionConfig = {\n ...existingDeviceCodeCollection,\n slug: deviceCodeSlug,\n admin: {\n hidden: pluginOptions.hidePluginCollections ?? false,\n useAsTitle: getSchemaFieldName(resolvedSchemas, baModelKey.deviceCode, 'deviceCode'),\n description: 'Device codes of an organization team.',\n group: pluginOptions?.collectionAdminGroup ?? 'Auth',\n ...existingDeviceCodeCollection?.admin,\n },\n access: {\n ...getAdminAccess(pluginOptions),\n ...(existingDeviceCodeCollection?.access ?? {}),\n },\n custom: {\n ...(existingDeviceCodeCollection?.custom ?? {}),\n betterAuthModelKey: baModelKey.deviceCode,\n },\n fields: [\n ...(existingDeviceCodeCollection?.fields ?? []),\n ...filterDuplicateFields(existingDeviceCodeCollection?.fields, collectionFields),\n ],\n };\n\n assertAllSchemaFields(deviceCodeCollection, deviceCodeSchema);\n\n return deviceCodeCollection;\n}\n"],"names":["baModelKey","getAdminAccess","assertAllSchemaFields","getSchemaCollectionSlug","getSchemaFieldName","filterDuplicateFields","getCollectionFields","buildDeviceCodeCollection","incomingCollections","pluginOptions","resolvedSchemas","deviceCodeSlug","deviceCode","deviceCodeSchema","existingDeviceCodeCollection","find","collection","slug","fieldOverrides","userId","index","admin","readOnly","description","collectionFields","schema","additionalProperties","deviceCodeCollection","hidden","hidePluginCollections","useAsTitle","group","collectionAdminGroup","access","custom","betterAuthModelKey","fields"],"mappings":"AAAA,SAASA,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,cAAc,QAAQ,iCAAiC;AAChE,SACEC,qBAAqB,EACrBC,uBAAuB,EACvBC,kBAAkB,QACb,4BAA4B;AACnC,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,mBAAmB,QAAQ,6CAA6C;AAMjF,OAAO,SAASC,0BAA0B,EACxCC,mBAAmB,EACnBC,aAAa,EACbC,eAAe,EACM;IACrB,MAAMC,iBAAiBR,wBAAwBO,iBAAiBV,WAAWY,UAAU;IACrF,MAAMC,mBAAmBH,eAAe,CAACV,WAAWY,UAAU,CAAC;IAE/D,MAAME,+BAA+BN,oBAAoBO,IAAI,CAC3DC,CAAAA,aAAcA,WAAWC,IAAI,KAAKN;IAGpC,MAAMO,iBAAmD;QACvDC,QAAQ,IAAO,CAAA;gBACbC,OAAO;gBACPC,OAAO;oBAAEC,UAAU;oBAAMC,aAAa;gBAAyC;YACjF,CAAA;IACF;IAEA,MAAMC,mBAAmBlB,oBAAoB;QAC3CmB,QAAQZ;QACRa,sBAAsBR;IACxB;IAEA,MAAMS,uBAAyC;QAC7C,GAAGb,4BAA4B;QAC/BG,MAAMN;QACNU,OAAO;YACLO,QAAQnB,cAAcoB,qBAAqB,IAAI;YAC/CC,YAAY1B,mBAAmBM,iBAAiBV,WAAWY,UAAU,EAAE;YACvEW,aAAa;YACbQ,OAAOtB,eAAeuB,wBAAwB;YAC9C,GAAGlB,8BAA8BO,KAAK;QACxC;QACAY,QAAQ;YACN,GAAGhC,eAAeQ,cAAc;YAChC,GAAIK,8BAA8BmB,UAAU,CAAC,CAAC;QAChD;QACAC,QAAQ;YACN,GAAIpB,8BAA8BoB,UAAU,CAAC,CAAC;YAC9CC,oBAAoBnC,WAAWY,UAAU;QAC3C;QACAwB,QAAQ;eACFtB,8BAA8BsB,UAAU,EAAE;eAC3C/B,sBAAsBS,8BAA8BsB,QAAQZ;SAChE;IACH;IAEAtB,sBAAsByB,sBAAsBd;IAE5C,OAAOc;AACT"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CollectionConfig } from 'payload';
|
|
2
|
+
import type { BetterAuthPluginOptions, BetterAuthSchemas } from '../../types';
|
|
3
|
+
/**
|
|
4
|
+
* Builds the required collections based on the BetterAuth options and plugins
|
|
5
|
+
*/
|
|
6
|
+
export declare function buildCollections({ incomingCollections, pluginOptions, resolvedSchemas, }: {
|
|
7
|
+
incomingCollections: CollectionConfig[];
|
|
8
|
+
pluginOptions: BetterAuthPluginOptions;
|
|
9
|
+
resolvedSchemas: BetterAuthSchemas;
|
|
10
|
+
}): Record<string, CollectionConfig>;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { baModelKey, baseSlugs } from "../../constants";
|
|
2
|
+
import { buildAccountsCollection } from "./accounts/index";
|
|
3
|
+
import { buildAdminInvitationsCollection } from "./admin-invitations";
|
|
4
|
+
import { buildApiKeysCollection } from "./api-keys";
|
|
5
|
+
import { buildDeviceCodeCollection } from "./device-code";
|
|
6
|
+
import { buildInvitationsCollection } from "./invitations";
|
|
7
|
+
import { buildJwksCollection } from "./jwks";
|
|
8
|
+
import { buildMembersCollection } from "./members";
|
|
9
|
+
import { buildOauthAccessTokensCollection } from "./oauth-access-tokens";
|
|
10
|
+
import { buildOauthApplicationsCollection } from "./oauth-applications";
|
|
11
|
+
import { buildOauthConsentsCollection } from "./oauth-consents";
|
|
12
|
+
import { buildOrganizationsCollection } from "./organizations";
|
|
13
|
+
import { buildPasskeysCollection } from "./passkeys";
|
|
14
|
+
import { buildSessionsCollection } from "./sessions";
|
|
15
|
+
import { buildSsoProvidersCollection } from "./sso-providers";
|
|
16
|
+
import { buildSubscriptionsCollection } from "./subscriptions";
|
|
17
|
+
import { buildTeamMembersCollection } from "./team-members";
|
|
18
|
+
import { buildTeamsCollection } from "./teams";
|
|
19
|
+
import { buildTwoFactorsCollection } from "./two-factors";
|
|
20
|
+
import { buildUsersCollection } from "./users/index";
|
|
21
|
+
import { getSchemaCollectionSlug } from "./utils/collection-schema";
|
|
22
|
+
import { buildVerificationsCollection } from "./verifications";
|
|
23
|
+
/**
|
|
24
|
+
* Builds the required collections based on the BetterAuth options and plugins
|
|
25
|
+
*/ export function buildCollections({ incomingCollections, pluginOptions, resolvedSchemas }) {
|
|
26
|
+
const collectionBuilders = {
|
|
27
|
+
[baModelKey.user]: (props)=>buildUsersCollection(props),
|
|
28
|
+
[baModelKey.account]: (props)=>buildAccountsCollection(props),
|
|
29
|
+
[baModelKey.session]: (props)=>buildSessionsCollection(props),
|
|
30
|
+
[baModelKey.verification]: (props)=>buildVerificationsCollection(props),
|
|
31
|
+
[baModelKey.organization]: (props)=>buildOrganizationsCollection(props),
|
|
32
|
+
[baModelKey.member]: (props)=>buildMembersCollection(props),
|
|
33
|
+
[baModelKey.invitation]: (props)=>buildInvitationsCollection(props),
|
|
34
|
+
[baModelKey.team]: (props)=>buildTeamsCollection(props),
|
|
35
|
+
[baModelKey.teamMember]: (props)=>buildTeamMembersCollection(props),
|
|
36
|
+
[baModelKey.jwks]: (props)=>buildJwksCollection(props),
|
|
37
|
+
[baModelKey.apikey]: (props)=>buildApiKeysCollection(props),
|
|
38
|
+
[baModelKey.twoFactor]: (props)=>buildTwoFactorsCollection(props),
|
|
39
|
+
[baModelKey.oauthAccessToken]: (props)=>buildOauthAccessTokensCollection(props),
|
|
40
|
+
[baModelKey.oauthApplication]: (props)=>buildOauthApplicationsCollection(props),
|
|
41
|
+
[baModelKey.oauthConsent]: (props)=>buildOauthConsentsCollection(props),
|
|
42
|
+
[baModelKey.passkey]: (props)=>buildPasskeysCollection(props),
|
|
43
|
+
[baModelKey.ssoProvider]: (props)=>buildSsoProvidersCollection(props),
|
|
44
|
+
[baModelKey.subscription]: (props)=>buildSubscriptionsCollection(props),
|
|
45
|
+
[baModelKey.deviceCode]: (props)=>buildDeviceCodeCollection(props)
|
|
46
|
+
};
|
|
47
|
+
const collectionMap = {};
|
|
48
|
+
for (const modelKey of Object.keys(resolvedSchemas)){
|
|
49
|
+
const collectionSlug = getSchemaCollectionSlug(resolvedSchemas, modelKey);
|
|
50
|
+
const builder = collectionBuilders[modelKey];
|
|
51
|
+
if (!builder) continue;
|
|
52
|
+
collectionMap[collectionSlug] = builder({
|
|
53
|
+
incomingCollections,
|
|
54
|
+
pluginOptions,
|
|
55
|
+
resolvedSchemas
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
// Add adminInvitations collection as it's not in the collectionSchemaMap
|
|
59
|
+
const adminInvitationsSlug = pluginOptions.adminInvitations?.slug ?? baseSlugs.adminInvitations;
|
|
60
|
+
collectionMap[adminInvitationsSlug] = buildAdminInvitationsCollection({
|
|
61
|
+
incomingCollections,
|
|
62
|
+
pluginOptions
|
|
63
|
+
});
|
|
64
|
+
// Then add incoming collections that don't conflict with required ones
|
|
65
|
+
incomingCollections.forEach((c)=>{
|
|
66
|
+
if (!collectionMap[c.slug]) {
|
|
67
|
+
collectionMap[c.slug] = c;
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
return collectionMap;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/better-auth/plugin/lib/build-collections/index.ts"],"sourcesContent":["import type { ModelKey } from '@/better-auth/generated-types';\nimport type { CollectionConfig } from 'payload';\nimport { baModelKey, baseSlugs } from '../../constants';\nimport type { BetterAuthPluginOptions, BetterAuthSchemas, BuildCollectionProps } from '../../types';\nimport { buildAccountsCollection } from './accounts/index';\nimport { buildAdminInvitationsCollection } from './admin-invitations';\nimport { buildApiKeysCollection } from './api-keys';\nimport { buildDeviceCodeCollection } from './device-code';\nimport { buildInvitationsCollection } from './invitations';\nimport { buildJwksCollection } from './jwks';\nimport { buildMembersCollection } from './members';\nimport { buildOauthAccessTokensCollection } from './oauth-access-tokens';\nimport { buildOauthApplicationsCollection } from './oauth-applications';\nimport { buildOauthConsentsCollection } from './oauth-consents';\nimport { buildOrganizationsCollection } from './organizations';\nimport { buildPasskeysCollection } from './passkeys';\nimport { buildSessionsCollection } from './sessions';\nimport { buildSsoProvidersCollection } from './sso-providers';\nimport { buildSubscriptionsCollection } from './subscriptions';\nimport { buildTeamMembersCollection } from './team-members';\nimport { buildTeamsCollection } from './teams';\nimport { buildTwoFactorsCollection } from './two-factors';\nimport { buildUsersCollection } from './users/index';\nimport { getSchemaCollectionSlug } from './utils/collection-schema';\nimport { buildVerificationsCollection } from './verifications';\n\n/**\n * Builds the required collections based on the BetterAuth options and plugins\n */\nexport function buildCollections({\n incomingCollections,\n pluginOptions,\n resolvedSchemas,\n}: {\n incomingCollections: CollectionConfig[];\n pluginOptions: BetterAuthPluginOptions;\n resolvedSchemas: BetterAuthSchemas;\n}): Record<string, CollectionConfig> {\n const collectionBuilders: Record<ModelKey, (props: BuildCollectionProps) => CollectionConfig> = {\n [baModelKey.user]: (props: BuildCollectionProps) => buildUsersCollection(props),\n [baModelKey.account]: (props: BuildCollectionProps) => buildAccountsCollection(props),\n [baModelKey.session]: (props: BuildCollectionProps) => buildSessionsCollection(props),\n [baModelKey.verification]: (props: BuildCollectionProps) => buildVerificationsCollection(props),\n [baModelKey.organization]: (props: BuildCollectionProps) => buildOrganizationsCollection(props),\n [baModelKey.member]: (props: BuildCollectionProps) => buildMembersCollection(props),\n [baModelKey.invitation]: (props: BuildCollectionProps) => buildInvitationsCollection(props),\n [baModelKey.team]: (props: BuildCollectionProps) => buildTeamsCollection(props),\n [baModelKey.teamMember]: (props: BuildCollectionProps) => buildTeamMembersCollection(props),\n [baModelKey.jwks]: (props: BuildCollectionProps) => buildJwksCollection(props),\n [baModelKey.apikey]: (props: BuildCollectionProps) => buildApiKeysCollection(props),\n [baModelKey.twoFactor]: (props: BuildCollectionProps) => buildTwoFactorsCollection(props),\n [baModelKey.oauthAccessToken]: (props: BuildCollectionProps) =>\n buildOauthAccessTokensCollection(props),\n [baModelKey.oauthApplication]: (props: BuildCollectionProps) =>\n buildOauthApplicationsCollection(props),\n [baModelKey.oauthConsent]: (props: BuildCollectionProps) => buildOauthConsentsCollection(props),\n [baModelKey.passkey]: (props: BuildCollectionProps) => buildPasskeysCollection(props),\n [baModelKey.ssoProvider]: (props: BuildCollectionProps) => buildSsoProvidersCollection(props),\n [baModelKey.subscription]: (props: BuildCollectionProps) => buildSubscriptionsCollection(props),\n [baModelKey.deviceCode]: (props: BuildCollectionProps) => buildDeviceCodeCollection(props),\n };\n\n const collectionMap: Record<string, CollectionConfig> = {};\n for (const modelKey of Object.keys(resolvedSchemas) as ModelKey[]) {\n const collectionSlug = getSchemaCollectionSlug(resolvedSchemas, modelKey);\n const builder = collectionBuilders[modelKey];\n if (!builder) continue;\n collectionMap[collectionSlug] = builder({\n incomingCollections,\n pluginOptions,\n resolvedSchemas,\n });\n }\n\n // Add adminInvitations collection as it's not in the collectionSchemaMap\n const adminInvitationsSlug = pluginOptions.adminInvitations?.slug ?? baseSlugs.adminInvitations;\n collectionMap[adminInvitationsSlug] = buildAdminInvitationsCollection({\n incomingCollections,\n pluginOptions,\n });\n\n // Then add incoming collections that don't conflict with required ones\n incomingCollections.forEach(c => {\n if (!collectionMap[c.slug]) {\n collectionMap[c.slug] = c;\n }\n });\n\n return collectionMap;\n}\n"],"names":["baModelKey","baseSlugs","buildAccountsCollection","buildAdminInvitationsCollection","buildApiKeysCollection","buildDeviceCodeCollection","buildInvitationsCollection","buildJwksCollection","buildMembersCollection","buildOauthAccessTokensCollection","buildOauthApplicationsCollection","buildOauthConsentsCollection","buildOrganizationsCollection","buildPasskeysCollection","buildSessionsCollection","buildSsoProvidersCollection","buildSubscriptionsCollection","buildTeamMembersCollection","buildTeamsCollection","buildTwoFactorsCollection","buildUsersCollection","getSchemaCollectionSlug","buildVerificationsCollection","buildCollections","incomingCollections","pluginOptions","resolvedSchemas","collectionBuilders","user","props","account","session","verification","organization","member","invitation","team","teamMember","jwks","apikey","twoFactor","oauthAccessToken","oauthApplication","oauthConsent","passkey","ssoProvider","subscription","deviceCode","collectionMap","modelKey","Object","keys","collectionSlug","builder","adminInvitationsSlug","adminInvitations","slug","forEach","c"],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { baModelKey } from "../../constants";
|
|
2
|
+
import { getAdminAccess } from "../../helpers/get-admin-access";
|
|
3
|
+
import { assertAllSchemaFields, getSchemaCollectionSlug, getSchemaFieldName } from "./utils/collection-schema";
|
|
4
|
+
import { filterDuplicateFields } from "./utils/filter-duplicate-fields";
|
|
5
|
+
import { getCollectionFields } from "./utils/transform-schema-fields-to-payload";
|
|
6
|
+
export function buildInvitationsCollection({ incomingCollections, pluginOptions, resolvedSchemas }) {
|
|
7
|
+
const invitationSlug = getSchemaCollectionSlug(resolvedSchemas, baModelKey.invitation);
|
|
8
|
+
const invitationSchema = resolvedSchemas[baModelKey.invitation];
|
|
9
|
+
const existingInvitationCollection = incomingCollections.find((collection)=>collection.slug === invitationSlug);
|
|
10
|
+
const fieldOverrides = {
|
|
11
|
+
email: ()=>({
|
|
12
|
+
index: true,
|
|
13
|
+
admin: {
|
|
14
|
+
readOnly: true,
|
|
15
|
+
description: 'The email of the user being invited.'
|
|
16
|
+
}
|
|
17
|
+
}),
|
|
18
|
+
inviterId: ()=>({
|
|
19
|
+
admin: {
|
|
20
|
+
readOnly: true,
|
|
21
|
+
description: 'The user who invited the user.'
|
|
22
|
+
}
|
|
23
|
+
}),
|
|
24
|
+
teamId: ()=>({
|
|
25
|
+
index: true,
|
|
26
|
+
admin: {
|
|
27
|
+
readOnly: true,
|
|
28
|
+
description: 'The team that the user is being invited to.'
|
|
29
|
+
}
|
|
30
|
+
}),
|
|
31
|
+
organizationId: ()=>({
|
|
32
|
+
index: true,
|
|
33
|
+
admin: {
|
|
34
|
+
readOnly: true,
|
|
35
|
+
description: 'The organization that the user is being invited to.'
|
|
36
|
+
}
|
|
37
|
+
}),
|
|
38
|
+
role: ()=>({
|
|
39
|
+
admin: {
|
|
40
|
+
readOnly: true,
|
|
41
|
+
description: 'The role of the user being invited.'
|
|
42
|
+
}
|
|
43
|
+
}),
|
|
44
|
+
status: ()=>({
|
|
45
|
+
defaultValue: 'pending',
|
|
46
|
+
admin: {
|
|
47
|
+
readOnly: true,
|
|
48
|
+
description: 'The status of the invitation.'
|
|
49
|
+
}
|
|
50
|
+
}),
|
|
51
|
+
expiresAt: ()=>({
|
|
52
|
+
admin: {
|
|
53
|
+
readOnly: true,
|
|
54
|
+
description: 'The date and time when the invitation will expire.'
|
|
55
|
+
}
|
|
56
|
+
})
|
|
57
|
+
};
|
|
58
|
+
const collectionFields = getCollectionFields({
|
|
59
|
+
schema: invitationSchema,
|
|
60
|
+
additionalProperties: fieldOverrides
|
|
61
|
+
});
|
|
62
|
+
let invitationCollection = {
|
|
63
|
+
...existingInvitationCollection,
|
|
64
|
+
slug: invitationSlug,
|
|
65
|
+
admin: {
|
|
66
|
+
hidden: pluginOptions.hidePluginCollections ?? false,
|
|
67
|
+
useAsTitle: getSchemaFieldName(resolvedSchemas, baModelKey.invitation, 'email'),
|
|
68
|
+
description: 'Invitations to join an organization',
|
|
69
|
+
group: pluginOptions?.collectionAdminGroup ?? 'Auth',
|
|
70
|
+
...existingInvitationCollection?.admin
|
|
71
|
+
},
|
|
72
|
+
access: {
|
|
73
|
+
...getAdminAccess(pluginOptions),
|
|
74
|
+
...existingInvitationCollection?.access ?? {}
|
|
75
|
+
},
|
|
76
|
+
custom: {
|
|
77
|
+
...existingInvitationCollection?.custom ?? {},
|
|
78
|
+
betterAuthModelKey: baModelKey.invitation
|
|
79
|
+
},
|
|
80
|
+
fields: [
|
|
81
|
+
...existingInvitationCollection?.fields ?? [],
|
|
82
|
+
...filterDuplicateFields(existingInvitationCollection?.fields, collectionFields)
|
|
83
|
+
]
|
|
84
|
+
};
|
|
85
|
+
if (typeof pluginOptions.pluginCollectionOverrides?.invitations === 'function') {
|
|
86
|
+
invitationCollection = pluginOptions.pluginCollectionOverrides.invitations({
|
|
87
|
+
collection: invitationCollection
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
assertAllSchemaFields(invitationCollection, invitationSchema);
|
|
91
|
+
return invitationCollection;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
//# sourceMappingURL=invitations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/better-auth/plugin/lib/build-collections/invitations.ts"],"sourcesContent":["import { baModelKey } from '../../constants';\nimport { getAdminAccess } from '../../helpers/get-admin-access';\nimport {\n assertAllSchemaFields,\n getSchemaCollectionSlug,\n getSchemaFieldName,\n} from './utils/collection-schema';\nimport { filterDuplicateFields } from './utils/filter-duplicate-fields';\nimport { getCollectionFields } from './utils/transform-schema-fields-to-payload';\n\nimport type { Invitation } from '@/better-auth/generated-types';\nimport type { BuildCollectionProps, FieldOverrides } from '@/better-auth/plugin/types';\nimport type { CollectionConfig } from 'payload';\n\nexport function buildInvitationsCollection({\n incomingCollections,\n pluginOptions,\n resolvedSchemas,\n}: BuildCollectionProps): CollectionConfig {\n const invitationSlug = getSchemaCollectionSlug(resolvedSchemas, baModelKey.invitation);\n const invitationSchema = resolvedSchemas[baModelKey.invitation];\n const existingInvitationCollection = incomingCollections.find(\n collection => collection.slug === invitationSlug\n ) as CollectionConfig | undefined;\n\n const fieldOverrides: FieldOverrides<keyof Invitation> = {\n email: () => ({\n index: true,\n admin: { readOnly: true, description: 'The email of the user being invited.' },\n }),\n inviterId: () => ({\n admin: { readOnly: true, description: 'The user who invited the user.' },\n }),\n teamId: () => ({\n index: true,\n admin: { readOnly: true, description: 'The team that the user is being invited to.' },\n }),\n organizationId: () => ({\n index: true,\n admin: { readOnly: true, description: 'The organization that the user is being invited to.' },\n }),\n role: () => ({\n admin: { readOnly: true, description: 'The role of the user being invited.' },\n }),\n status: () => ({\n defaultValue: 'pending',\n admin: { readOnly: true, description: 'The status of the invitation.' },\n }),\n expiresAt: () => ({\n admin: { readOnly: true, description: 'The date and time when the invitation will expire.' },\n }),\n };\n\n const collectionFields = getCollectionFields({\n schema: invitationSchema,\n additionalProperties: fieldOverrides,\n });\n\n let invitationCollection: CollectionConfig = {\n ...existingInvitationCollection,\n slug: invitationSlug,\n admin: {\n hidden: pluginOptions.hidePluginCollections ?? false,\n useAsTitle: getSchemaFieldName(resolvedSchemas, baModelKey.invitation, 'email'),\n description: 'Invitations to join an organization',\n group: pluginOptions?.collectionAdminGroup ?? 'Auth',\n ...existingInvitationCollection?.admin,\n },\n access: {\n ...getAdminAccess(pluginOptions),\n ...(existingInvitationCollection?.access ?? {}),\n },\n custom: {\n ...(existingInvitationCollection?.custom ?? {}),\n betterAuthModelKey: baModelKey.invitation,\n },\n fields: [\n ...(existingInvitationCollection?.fields ?? []),\n ...filterDuplicateFields(existingInvitationCollection?.fields, collectionFields),\n ],\n };\n\n if (typeof pluginOptions.pluginCollectionOverrides?.invitations === 'function') {\n invitationCollection = pluginOptions.pluginCollectionOverrides.invitations({\n collection: invitationCollection,\n });\n }\n\n assertAllSchemaFields(invitationCollection, invitationSchema);\n\n return invitationCollection;\n}\n"],"names":["baModelKey","getAdminAccess","assertAllSchemaFields","getSchemaCollectionSlug","getSchemaFieldName","filterDuplicateFields","getCollectionFields","buildInvitationsCollection","incomingCollections","pluginOptions","resolvedSchemas","invitationSlug","invitation","invitationSchema","existingInvitationCollection","find","collection","slug","fieldOverrides","email","index","admin","readOnly","description","inviterId","teamId","organizationId","role","status","defaultValue","expiresAt","collectionFields","schema","additionalProperties","invitationCollection","hidden","hidePluginCollections","useAsTitle","group","collectionAdminGroup","access","custom","betterAuthModelKey","fields","pluginCollectionOverrides","invitations"],"mappings":"AAAA,SAASA,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,cAAc,QAAQ,iCAAiC;AAChE,SACEC,qBAAqB,EACrBC,uBAAuB,EACvBC,kBAAkB,QACb,4BAA4B;AACnC,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,mBAAmB,QAAQ,6CAA6C;AAMjF,OAAO,SAASC,2BAA2B,EACzCC,mBAAmB,EACnBC,aAAa,EACbC,eAAe,EACM;IACrB,MAAMC,iBAAiBR,wBAAwBO,iBAAiBV,WAAWY,UAAU;IACrF,MAAMC,mBAAmBH,eAAe,CAACV,WAAWY,UAAU,CAAC;IAC/D,MAAME,+BAA+BN,oBAAoBO,IAAI,CAC3DC,CAAAA,aAAcA,WAAWC,IAAI,KAAKN;IAGpC,MAAMO,iBAAmD;QACvDC,OAAO,IAAO,CAAA;gBACZC,OAAO;gBACPC,OAAO;oBAAEC,UAAU;oBAAMC,aAAa;gBAAuC;YAC/E,CAAA;QACAC,WAAW,IAAO,CAAA;gBAChBH,OAAO;oBAAEC,UAAU;oBAAMC,aAAa;gBAAiC;YACzE,CAAA;QACAE,QAAQ,IAAO,CAAA;gBACbL,OAAO;gBACPC,OAAO;oBAAEC,UAAU;oBAAMC,aAAa;gBAA8C;YACtF,CAAA;QACAG,gBAAgB,IAAO,CAAA;gBACrBN,OAAO;gBACPC,OAAO;oBAAEC,UAAU;oBAAMC,aAAa;gBAAsD;YAC9F,CAAA;QACAI,MAAM,IAAO,CAAA;gBACXN,OAAO;oBAAEC,UAAU;oBAAMC,aAAa;gBAAsC;YAC9E,CAAA;QACAK,QAAQ,IAAO,CAAA;gBACbC,cAAc;gBACdR,OAAO;oBAAEC,UAAU;oBAAMC,aAAa;gBAAgC;YACxE,CAAA;QACAO,WAAW,IAAO,CAAA;gBAChBT,OAAO;oBAAEC,UAAU;oBAAMC,aAAa;gBAAqD;YAC7F,CAAA;IACF;IAEA,MAAMQ,mBAAmBzB,oBAAoB;QAC3C0B,QAAQnB;QACRoB,sBAAsBf;IACxB;IAEA,IAAIgB,uBAAyC;QAC3C,GAAGpB,4BAA4B;QAC/BG,MAAMN;QACNU,OAAO;YACLc,QAAQ1B,cAAc2B,qBAAqB,IAAI;YAC/CC,YAAYjC,mBAAmBM,iBAAiBV,WAAWY,UAAU,EAAE;YACvEW,aAAa;YACbe,OAAO7B,eAAe8B,wBAAwB;YAC9C,GAAGzB,8BAA8BO,KAAK;QACxC;QACAmB,QAAQ;YACN,GAAGvC,eAAeQ,cAAc;YAChC,GAAIK,8BAA8B0B,UAAU,CAAC,CAAC;QAChD;QACAC,QAAQ;YACN,GAAI3B,8BAA8B2B,UAAU,CAAC,CAAC;YAC9CC,oBAAoB1C,WAAWY,UAAU;QAC3C;QACA+B,QAAQ;eACF7B,8BAA8B6B,UAAU,EAAE;eAC3CtC,sBAAsBS,8BAA8B6B,QAAQZ;SAChE;IACH;IAEA,IAAI,OAAOtB,cAAcmC,yBAAyB,EAAEC,gBAAgB,YAAY;QAC9EX,uBAAuBzB,cAAcmC,yBAAyB,CAACC,WAAW,CAAC;YACzE7B,YAAYkB;QACd;IACF;IAEAhC,sBAAsBgC,sBAAsBrB;IAE5C,OAAOqB;AACT"}
|