payload-auth 1.1.2 → 1.2.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/dist/authjs/index.d.ts.map +1 -1
- package/dist/authjs/index.js +2 -2
- package/dist/better-auth/adapter/generate-schema/generate-schema-builder.d.ts +1 -1
- package/dist/better-auth/adapter/generate-schema/generate-schema-builder.d.ts.map +1 -1
- package/dist/better-auth/adapter/generate-schema/generate-schema-builder.js +3 -3
- package/dist/better-auth/adapter/generate-schema/get-payload-schema.d.ts.map +1 -1
- package/dist/better-auth/adapter/generate-schema/get-payload-schema.js +4 -4
- package/dist/better-auth/adapter/generate-schema/index.js +5 -5
- package/dist/better-auth/adapter/generate-schema/utils.js +1 -1
- package/dist/better-auth/adapter/index.d.ts +2 -2
- package/dist/better-auth/adapter/index.d.ts.map +1 -1
- package/dist/better-auth/adapter/index.js +53 -53
- package/dist/better-auth/adapter/transform/index.d.ts +5 -5
- package/dist/better-auth/adapter/transform/index.d.ts.map +1 -1
- package/dist/better-auth/adapter/transform/index.js +69 -69
- package/dist/better-auth/adapter/types.d.ts +3 -3
- package/dist/better-auth/adapter/types.d.ts.map +1 -1
- package/dist/better-auth/adapter/types.js +1 -1
- package/dist/better-auth/index.js +4 -4
- package/dist/better-auth/plugin/{lib/constants.d.ts → constants.d.ts} +12 -6
- package/dist/better-auth/plugin/constants.d.ts.map +1 -0
- package/dist/better-auth/plugin/constants.js +62 -0
- package/dist/better-auth/plugin/helpers/check-passkey-plugin.d.ts +1 -1
- package/dist/better-auth/plugin/helpers/check-passkey-plugin.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/check-passkey-plugin.js +2 -2
- package/dist/better-auth/plugin/helpers/check-username-plugin.d.ts +1 -1
- package/dist/better-auth/plugin/helpers/check-username-plugin.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/check-username-plugin.js +2 -2
- package/dist/better-auth/plugin/helpers/generate-verify-email-url.d.ts +1 -1
- package/dist/better-auth/plugin/helpers/generate-verify-email-url.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/generate-verify-email-url.js +7 -7
- package/dist/better-auth/plugin/helpers/get-admin-access.d.ts +1 -1
- package/dist/better-auth/plugin/helpers/get-admin-access.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/get-admin-access.js +2 -2
- package/dist/better-auth/plugin/helpers/get-all-roles.d.ts +1 -1
- package/dist/better-auth/plugin/helpers/get-all-roles.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/get-all-roles.js +4 -4
- package/dist/better-auth/plugin/helpers/get-ip.d.ts +1 -1
- package/dist/better-auth/plugin/helpers/get-ip.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/get-ip.js +14 -14
- package/dist/better-auth/plugin/helpers/get-requst-collection.d.ts +1 -1
- package/dist/better-auth/plugin/helpers/get-requst-collection.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/get-requst-collection.js +2 -2
- package/dist/better-auth/plugin/helpers/index.d.ts +1 -1
- package/dist/better-auth/plugin/helpers/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/index.js +1 -1
- package/dist/better-auth/plugin/helpers/prepare-session-data.d.ts +3 -3
- package/dist/better-auth/plugin/helpers/prepare-session-data.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/prepare-session-data.js +1 -1
- package/dist/better-auth/plugin/helpers/serialize-cookie.d.ts +2 -2
- package/dist/better-auth/plugin/helpers/serialize-cookie.d.ts.map +1 -1
- package/dist/better-auth/plugin/helpers/serialize-cookie.js +33 -33
- package/dist/better-auth/plugin/index.d.ts +6 -6
- package/dist/better-auth/plugin/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/index.js +19 -53
- package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.js +6 -6
- package/dist/better-auth/plugin/lib/build-collections/accounts/index.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/accounts/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/accounts/index.js +47 -47
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.js +1 -1
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.js +2 -2
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.js +33 -24
- package/dist/better-auth/plugin/lib/build-collections/api-keys.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/api-keys.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/api-keys.js +77 -80
- package/dist/better-auth/plugin/lib/build-collections/index.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/index.js +2 -2
- package/dist/better-auth/plugin/lib/build-collections/invitations.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/invitations.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/invitations.js +30 -30
- package/dist/better-auth/plugin/lib/build-collections/jwks.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/jwks.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/jwks.js +13 -13
- package/dist/better-auth/plugin/lib/build-collections/members.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/members.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/members.js +22 -22
- package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.js +33 -33
- package/dist/better-auth/plugin/lib/build-collections/oauth-applications.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/oauth-applications.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/oauth-applications.js +40 -40
- package/dist/better-auth/plugin/lib/build-collections/oauth-consents.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/oauth-consents.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/oauth-consents.js +20 -20
- package/dist/better-auth/plugin/lib/build-collections/organizations.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/organizations.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/organizations.js +21 -21
- package/dist/better-auth/plugin/lib/build-collections/passkeys.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/passkeys.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/passkeys.js +37 -37
- package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/sessions.js +33 -33
- package/dist/better-auth/plugin/lib/build-collections/sso-providers.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/sso-providers.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/sso-providers.js +29 -29
- package/dist/better-auth/plugin/lib/build-collections/teams.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/teams.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/teams.js +13 -13
- package/dist/better-auth/plugin/lib/build-collections/two-factors.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/two-factors.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/two-factors.js +17 -17
- package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.js +8 -8
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.d.ts +3 -4
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.js +12 -11
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.js +19 -18
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.d.ts +3 -2
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.js +28 -6
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.d.ts +2 -2
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.js +9 -8
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/signup.d.ts +2 -2
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/signup.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/signup.js +34 -30
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.js +7 -6
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.js +11 -11
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.d.ts +2 -2
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.js +2 -2
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.js +3 -3
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.js +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.js +9 -9
- package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/index.js +84 -94
- package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.js +7 -7
- package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.js +9 -9
- package/dist/better-auth/plugin/lib/build-collections/verifications.d.ts +3 -3
- package/dist/better-auth/plugin/lib/build-collections/verifications.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/verifications.js +17 -17
- package/dist/better-auth/plugin/lib/get-payload-auth.d.ts +2 -2
- package/dist/better-auth/plugin/lib/get-payload-auth.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/get-payload-auth.js +1 -1
- package/dist/better-auth/plugin/lib/get-required-collection-slugs.d.ts +2 -2
- package/dist/better-auth/plugin/lib/get-required-collection-slugs.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/get-required-collection-slugs.js +7 -7
- package/dist/better-auth/plugin/lib/init-better-auth.d.ts +4 -4
- package/dist/better-auth/plugin/lib/init-better-auth.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/init-better-auth.js +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.d.ts +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.js +3 -3
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.js +3 -3
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts +4 -4
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.js +12 -12
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.js +10 -11
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.js +15 -16
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.js +3 -3
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.js +3 -3
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.d.ts +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.js +7 -6
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.d.ts +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.js +7 -6
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts +4 -4
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.js +4 -4
- package/dist/better-auth/plugin/payload/components/admin-buttons/index.d.ts +2 -2
- package/dist/better-auth/plugin/payload/components/admin-buttons/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/components/admin-buttons/index.js +18 -18
- package/dist/better-auth/plugin/payload/components/admin-invite-button/index.d.ts +2 -2
- package/dist/better-auth/plugin/payload/components/admin-invite-button/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/components/admin-invite-button/index.js +58 -40
- package/dist/better-auth/plugin/payload/components/admin-invite-button/index.scss +2 -3
- package/dist/better-auth/plugin/payload/components/admin-social-provider-buttons/index.d.ts +3 -3
- package/dist/better-auth/plugin/payload/components/admin-social-provider-buttons/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/components/admin-social-provider-buttons/index.js +7 -9
- package/dist/better-auth/plugin/payload/components/admin-social-provider-buttons/index.scss +4 -1
- package/dist/better-auth/plugin/payload/components/logout-button.d.ts +1 -1
- package/dist/better-auth/plugin/payload/components/logout-button.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/components/logout-button.js +7 -9
- package/dist/better-auth/plugin/payload/components/rsc-redirect.d.ts +1 -1
- package/dist/better-auth/plugin/payload/components/rsc-redirect.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/components/rsc-redirect.js +1 -1
- package/dist/better-auth/plugin/payload/components/token-field.d.ts +2 -2
- package/dist/better-auth/plugin/payload/components/token-field.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/components/token-field.js +3 -3
- package/dist/better-auth/plugin/payload/exports/client.d.ts +5 -6
- package/dist/better-auth/plugin/payload/exports/client.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/exports/client.js +2 -3
- package/dist/better-auth/plugin/payload/exports/rsc.d.ts +6 -9
- package/dist/better-auth/plugin/payload/exports/rsc.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/exports/rsc.js +5 -8
- package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.d.ts +1 -1
- package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.js +6 -5
- package/dist/better-auth/plugin/payload/utils/generate-metadata.d.ts +3 -3
- package/dist/better-auth/plugin/payload/utils/generate-metadata.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/utils/generate-metadata.js +18 -18
- package/dist/better-auth/plugin/payload/utils/get-safe-redirect.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/utils/get-safe-redirect.js +1 -1
- package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts +18 -0
- package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/admin-login/client.js +192 -0
- package/dist/better-auth/plugin/payload/views/admin-login/index.d.ts +11 -0
- package/dist/better-auth/plugin/payload/views/admin-login/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/admin-login/index.js +126 -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.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/admin-signup/client.js +190 -0
- package/dist/better-auth/plugin/payload/views/admin-signup/index.d.ts +12 -0
- package/dist/better-auth/plugin/payload/views/admin-signup/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/views/admin-signup/index.js +114 -0
- package/dist/better-auth/plugin/payload/views/{create-first-admin → admin-signup}/index.scss +1 -1
- package/dist/better-auth/plugin/payload/views/forgot-password/client.d.ts +4 -7
- package/dist/better-auth/plugin/payload/views/forgot-password/client.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/forgot-password/client.js +72 -100
- package/dist/better-auth/plugin/payload/views/forgot-password/index.d.ts +6 -6
- package/dist/better-auth/plugin/payload/views/forgot-password/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/forgot-password/index.js +23 -34
- package/dist/better-auth/plugin/payload/views/reset-password/client.d.ts +4 -2
- package/dist/better-auth/plugin/payload/views/reset-password/client.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/reset-password/client.js +88 -53
- package/dist/better-auth/plugin/payload/views/reset-password/index.d.ts +2 -2
- package/dist/better-auth/plugin/payload/views/reset-password/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/reset-password/index.js +51 -56
- package/dist/better-auth/plugin/types.d.ts +37 -19
- package/dist/better-auth/plugin/types.d.ts.map +1 -1
- package/dist/better-auth/plugin/types.js +1 -1
- package/dist/better-auth/types.js +2 -2
- package/dist/clerk/admin-ui.js +4 -4
- package/dist/clerk/index.js +5 -5
- package/dist/clerk/plugin/auth-strategy.js +4 -4
- package/dist/clerk/plugin/collections/users/access.js +1 -1
- package/dist/clerk/plugin/collections/users/endpoints/sync-from-clerk.d.ts +2 -2
- package/dist/clerk/plugin/collections/users/endpoints/sync-from-clerk.d.ts.map +1 -1
- package/dist/clerk/plugin/collections/users/endpoints/sync-from-clerk.js +9 -9
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/index.js +4 -4
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userCreated.d.ts.map +1 -1
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userCreated.js +2 -2
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userDeleted.d.ts.map +1 -1
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userDeleted.js +2 -2
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userUpdated.d.ts.map +1 -1
- package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userUpdated.js +2 -2
- package/dist/clerk/plugin/collections/users/endpoints/webhook/index.d.ts.map +1 -1
- package/dist/clerk/plugin/collections/users/endpoints/webhook/index.js +5 -4
- package/dist/clerk/plugin/collections/users/fields.js +1 -1
- package/dist/clerk/plugin/collections/users/index.d.ts +1 -1
- package/dist/clerk/plugin/collections/users/index.d.ts.map +1 -1
- package/dist/clerk/plugin/collections/users/index.js +7 -7
- package/dist/clerk/plugin/components/after-login-form.js +4 -4
- package/dist/clerk/plugin/components/logout-button.d.ts.map +1 -1
- package/dist/clerk/plugin/components/logout-button.js +17 -17
- package/dist/clerk/plugin/components/sync-clerk-users-button.d.ts +1 -1
- package/dist/clerk/plugin/components/sync-clerk-users-button.d.ts.map +1 -1
- package/dist/clerk/plugin/components/sync-clerk-users-button.js +8 -8
- package/dist/clerk/plugin.d.ts +4 -4
- package/dist/clerk/plugin.d.ts.map +1 -1
- package/dist/clerk/plugin.js +4 -4
- package/dist/clerk/types.js +1 -1
- package/dist/clerk/utils/clerk-user.d.ts.map +1 -1
- package/dist/clerk/utils/clerk-user.js +1 -1
- package/dist/clerk/utils/index.js +4 -4
- package/dist/clerk/utils/load-clerk-instance.d.ts.map +1 -1
- package/dist/clerk/utils/load-clerk-instance.js +2 -2
- package/dist/clerk/utils/svix.d.ts +1 -1
- package/dist/clerk/utils/svix.d.ts.map +1 -1
- package/dist/clerk/utils/svix.js +2 -2
- package/dist/clerk/utils/user.d.ts.map +1 -1
- package/dist/clerk/utils/user.js +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/kinde/index.d.ts.map +1 -1
- package/dist/kinde/index.js +2 -2
- package/dist/{better-auth/plugin/payload → shared}/components/icons.d.ts +3 -3
- package/dist/shared/components/icons.d.ts.map +1 -0
- package/dist/shared/components/icons.js +437 -0
- package/dist/shared/components/logo.d.ts +4 -0
- package/dist/shared/components/logo.d.ts.map +1 -0
- package/dist/shared/components/logo.js +24 -0
- package/dist/shared/form/components/submit.d.ts +8 -0
- package/dist/shared/form/components/submit.d.ts.map +1 -0
- package/dist/shared/form/components/submit.js +21 -0
- package/dist/shared/form/fields/text-field.d.ts +8 -0
- package/dist/shared/form/fields/text-field.d.ts.map +1 -0
- package/dist/shared/form/fields/text-field.js +41 -0
- package/dist/shared/form/index.d.ts +34 -0
- package/dist/shared/form/index.d.ts.map +1 -0
- package/dist/shared/form/index.js +17 -0
- package/dist/shared/form/ui/header/index.d.ts +9 -0
- package/dist/shared/form/ui/header/index.d.ts.map +1 -0
- package/dist/shared/form/ui/header/index.js +24 -0
- package/dist/shared/form/ui/index.d.ts +31 -0
- package/dist/shared/form/ui/index.d.ts.map +1 -0
- package/dist/shared/form/ui/index.js +60 -0
- package/dist/shared/form/ui/index.scss +12 -0
- package/dist/shared/index.d.ts +3 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +4 -0
- package/dist/shared/payload/fields/field-copy-button/index.css +47 -0
- package/dist/shared/payload/fields/field-copy-button/index.d.ts +4 -0
- package/dist/shared/payload/fields/field-copy-button/index.d.ts.map +1 -0
- package/dist/shared/payload/fields/field-copy-button/index.js +38 -0
- package/dist/shared/payload/fields/generate-uuid-button/index.css +14 -0
- package/dist/shared/payload/fields/generate-uuid-button/index.d.ts +4 -0
- package/dist/shared/payload/fields/generate-uuid-button/index.d.ts.map +1 -0
- package/dist/shared/payload/fields/generate-uuid-button/index.js +26 -0
- package/dist/shared/payload/fields/index.d.ts +3 -0
- package/dist/shared/payload/fields/index.d.ts.map +1 -0
- package/dist/shared/payload/fields/index.js +4 -0
- package/dist/shared/utils/regex.d.ts +3 -0
- package/dist/shared/utils/regex.d.ts.map +1 -0
- package/dist/shared/utils/regex.js +4 -0
- package/dist/shared/utils/try-catch.d.ts +12 -0
- package/dist/shared/utils/try-catch.d.ts.map +1 -0
- package/dist/shared/utils/try-catch.js +17 -0
- package/package.json +7 -5
- package/dist/better-auth/plugin/helpers/get-admin-routes.d.ts +0 -14
- package/dist/better-auth/plugin/helpers/get-admin-routes.d.ts.map +0 -1
- package/dist/better-auth/plugin/helpers/get-admin-routes.js +0 -6
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/forgot-password.d.ts +0 -3
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/forgot-password.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/forgot-password.js +0 -96
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/login.d.ts +0 -4
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/login.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/login.js +0 -115
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/reset-password.d.ts +0 -3
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/reset-password.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/reset-password.js +0 -62
- package/dist/better-auth/plugin/lib/constants.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/constants.js +0 -56
- package/dist/better-auth/plugin/payload/components/form-header/index.d.ts +0 -9
- package/dist/better-auth/plugin/payload/components/form-header/index.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/components/form-header/index.js +0 -23
- package/dist/better-auth/plugin/payload/components/icons.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/components/icons.js +0 -437
- package/dist/better-auth/plugin/payload/components/logo.d.ts +0 -4
- package/dist/better-auth/plugin/payload/components/logo.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/components/logo.js +0 -24
- package/dist/better-auth/plugin/payload/components/styles.css +0 -73
- package/dist/better-auth/plugin/payload/views/admin-invite/client.d.ts +0 -12
- package/dist/better-auth/plugin/payload/views/admin-invite/client.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/admin-invite/client.js +0 -92
- package/dist/better-auth/plugin/payload/views/admin-invite/index.d.ts +0 -11
- package/dist/better-auth/plugin/payload/views/admin-invite/index.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/admin-invite/index.js +0 -84
- package/dist/better-auth/plugin/payload/views/admin-invite/index.scss +0 -25
- package/dist/better-auth/plugin/payload/views/create-first-admin/client.d.ts +0 -14
- package/dist/better-auth/plugin/payload/views/create-first-admin/client.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/create-first-admin/client.js +0 -95
- package/dist/better-auth/plugin/payload/views/create-first-admin/index.d.ts +0 -12
- package/dist/better-auth/plugin/payload/views/create-first-admin/index.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/create-first-admin/index.js +0 -144
- package/dist/better-auth/plugin/payload/views/forgot-password/index.scss +0 -0
- package/dist/better-auth/plugin/payload/views/inactivity/index.d.ts +0 -5
- package/dist/better-auth/plugin/payload/views/inactivity/index.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/inactivity/index.js +0 -12
- package/dist/better-auth/plugin/payload/views/login/form/fields/login-field.d.ts +0 -9
- package/dist/better-auth/plugin/payload/views/login/form/fields/login-field.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/login/form/fields/login-field.js +0 -54
- package/dist/better-auth/plugin/payload/views/login/form/fields/password/index.d.ts +0 -1
- package/dist/better-auth/plugin/payload/views/login/form/fields/password/index.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/login/form/fields/password/index.js +0 -121
- package/dist/better-auth/plugin/payload/views/login/form/fields/password/index.scss +0 -31
- package/dist/better-auth/plugin/payload/views/login/form/fields/password/types.d.ts +0 -56
- package/dist/better-auth/plugin/payload/views/login/form/fields/password/types.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/login/form/fields/password/types.js +0 -3
- package/dist/better-auth/plugin/payload/views/login/form/index.d.ts +0 -17
- package/dist/better-auth/plugin/payload/views/login/form/index.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/login/form/index.js +0 -137
- package/dist/better-auth/plugin/payload/views/login/form/index.scss +0 -23
- package/dist/better-auth/plugin/payload/views/login/index.d.ts +0 -11
- package/dist/better-auth/plugin/payload/views/login/index.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/login/index.js +0 -98
- package/dist/better-auth/plugin/payload/views/login/index.scss +0 -10
- package/dist/better-auth/plugin/payload/views/logout/client.d.ts +0 -8
- package/dist/better-auth/plugin/payload/views/logout/client.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/logout/client.js +0 -76
- package/dist/better-auth/plugin/payload/views/logout/index.d.ts +0 -8
- package/dist/better-auth/plugin/payload/views/logout/index.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/logout/index.js +0 -14
- package/dist/better-auth/plugin/payload/views/logout/index.scss +0 -0
- package/dist/better-auth/plugin/payload/views/reset-password/index.scss +0 -9
- package/dist/better-auth/plugin/payload/views/reset-password/metadata.d.ts +0 -3
- package/dist/better-auth/plugin/payload/views/reset-password/metadata.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/views/reset-password/metadata.js +0 -11
- /package/dist/{better-auth/plugin/payload/components/form-header → shared/form/ui/header}/index.scss +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { BetterAuthError } from "better-auth";
|
|
2
2
|
import { generateSchema } from "./generate-schema";
|
|
3
3
|
import { createTransform } from "./transform";
|
|
4
|
-
export const BETTER_AUTH_CONTEXT_KEY =
|
|
4
|
+
export const BETTER_AUTH_CONTEXT_KEY = 'payload-db-adapter';
|
|
5
5
|
const PAYLOAD_QUERY_DEPTH = 2;
|
|
6
6
|
const payloadAdapter = (payloadClient, config)=>{
|
|
7
7
|
function debugLog(message) {
|
|
8
8
|
if (config.enableDebugLogs) {
|
|
9
|
-
console.log(
|
|
9
|
+
console.log('[payload-db-adapter]', ...message);
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
function errorLog(message) {
|
|
@@ -21,7 +21,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
21
21
|
}
|
|
22
22
|
});
|
|
23
23
|
async function resolvePayloadClient() {
|
|
24
|
-
const payload = typeof payloadClient ===
|
|
24
|
+
const payload = typeof payloadClient === 'function' ? await payloadClient() : await payloadClient;
|
|
25
25
|
if (!payload.config?.custom?.hasBetterAuthPlugin) {
|
|
26
26
|
throw new BetterAuthError(`Payload is not configured with the better-auth plugin. Please add the plugin to your payload config.`);
|
|
27
27
|
}
|
|
@@ -30,7 +30,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
30
30
|
return (options)=>{
|
|
31
31
|
const { transformInput, transformOutput, convertWhereClause, convertSelect, convertSort, getModelName, singleIdQuery, multipleIdsQuery } = createTransform(options, config.enableDebugLogs ?? false);
|
|
32
32
|
return {
|
|
33
|
-
id:
|
|
33
|
+
id: 'payload',
|
|
34
34
|
async create (data) {
|
|
35
35
|
const start = Date.now();
|
|
36
36
|
const { model, data: values, select } = data;
|
|
@@ -38,11 +38,11 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
38
38
|
const transformed = transformInput({
|
|
39
39
|
data: values,
|
|
40
40
|
model,
|
|
41
|
-
action:
|
|
41
|
+
action: 'create',
|
|
42
42
|
idType: config.idType
|
|
43
43
|
});
|
|
44
44
|
debugLog([
|
|
45
|
-
|
|
45
|
+
'create',
|
|
46
46
|
{
|
|
47
47
|
collectionSlug,
|
|
48
48
|
transformed,
|
|
@@ -60,7 +60,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
60
60
|
select: convertSelect(model, select),
|
|
61
61
|
context: createAdapterContext({
|
|
62
62
|
model,
|
|
63
|
-
operation:
|
|
63
|
+
operation: 'create'
|
|
64
64
|
}),
|
|
65
65
|
depth: PAYLOAD_QUERY_DEPTH
|
|
66
66
|
});
|
|
@@ -69,7 +69,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
69
69
|
model
|
|
70
70
|
});
|
|
71
71
|
debugLog([
|
|
72
|
-
|
|
72
|
+
'create result',
|
|
73
73
|
{
|
|
74
74
|
collectionSlug,
|
|
75
75
|
transformedResult,
|
|
@@ -79,7 +79,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
79
79
|
return transformedResult;
|
|
80
80
|
} catch (error) {
|
|
81
81
|
errorLog([
|
|
82
|
-
|
|
82
|
+
'Error in creating:',
|
|
83
83
|
model,
|
|
84
84
|
error
|
|
85
85
|
]);
|
|
@@ -96,7 +96,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
96
96
|
where
|
|
97
97
|
});
|
|
98
98
|
debugLog([
|
|
99
|
-
|
|
99
|
+
'findOne',
|
|
100
100
|
{
|
|
101
101
|
collectionSlug
|
|
102
102
|
}
|
|
@@ -110,7 +110,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
110
110
|
let result = null;
|
|
111
111
|
if (id) {
|
|
112
112
|
debugLog([
|
|
113
|
-
|
|
113
|
+
'findOneByID',
|
|
114
114
|
{
|
|
115
115
|
collectionSlug,
|
|
116
116
|
id
|
|
@@ -122,14 +122,14 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
122
122
|
select: convertSelect(model, select),
|
|
123
123
|
context: createAdapterContext({
|
|
124
124
|
model,
|
|
125
|
-
operation:
|
|
125
|
+
operation: 'findOneByID'
|
|
126
126
|
}),
|
|
127
127
|
depth: PAYLOAD_QUERY_DEPTH
|
|
128
128
|
});
|
|
129
129
|
result = doc;
|
|
130
130
|
} else {
|
|
131
131
|
debugLog([
|
|
132
|
-
|
|
132
|
+
'findOneByWhere',
|
|
133
133
|
{
|
|
134
134
|
collectionSlug,
|
|
135
135
|
payloadWhere
|
|
@@ -141,7 +141,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
141
141
|
select: convertSelect(model, select),
|
|
142
142
|
context: createAdapterContext({
|
|
143
143
|
model,
|
|
144
|
-
operation:
|
|
144
|
+
operation: 'findOneByWhere'
|
|
145
145
|
}),
|
|
146
146
|
depth: PAYLOAD_QUERY_DEPTH,
|
|
147
147
|
limit: 1
|
|
@@ -153,7 +153,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
153
153
|
model
|
|
154
154
|
});
|
|
155
155
|
debugLog([
|
|
156
|
-
|
|
156
|
+
'findOne result',
|
|
157
157
|
{
|
|
158
158
|
collectionSlug,
|
|
159
159
|
transformedResult,
|
|
@@ -163,7 +163,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
163
163
|
return transformedResult;
|
|
164
164
|
} catch (error) {
|
|
165
165
|
errorLog([
|
|
166
|
-
|
|
166
|
+
'Error in findOne: ',
|
|
167
167
|
error
|
|
168
168
|
]);
|
|
169
169
|
return null;
|
|
@@ -179,7 +179,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
179
179
|
where
|
|
180
180
|
});
|
|
181
181
|
debugLog([
|
|
182
|
-
|
|
182
|
+
'findMany',
|
|
183
183
|
{
|
|
184
184
|
collectionSlug,
|
|
185
185
|
sortBy,
|
|
@@ -197,7 +197,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
197
197
|
const singleId = where && singleIdQuery(payloadWhere);
|
|
198
198
|
if (multipleIds && multipleIds.length > 0) {
|
|
199
199
|
debugLog([
|
|
200
|
-
|
|
200
|
+
'findManyByMultipleIDs',
|
|
201
201
|
{
|
|
202
202
|
collectionSlug,
|
|
203
203
|
ids: multipleIds
|
|
@@ -214,7 +214,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
214
214
|
depth: PAYLOAD_QUERY_DEPTH,
|
|
215
215
|
context: createAdapterContext({
|
|
216
216
|
model,
|
|
217
|
-
operation:
|
|
217
|
+
operation: 'findManyByMultipleIDs'
|
|
218
218
|
})
|
|
219
219
|
});
|
|
220
220
|
res.docs.push(doc);
|
|
@@ -226,7 +226,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
226
226
|
};
|
|
227
227
|
} else if (singleId) {
|
|
228
228
|
debugLog([
|
|
229
|
-
|
|
229
|
+
'findManyBySingleID',
|
|
230
230
|
{
|
|
231
231
|
collectionSlug,
|
|
232
232
|
id: singleId
|
|
@@ -238,7 +238,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
238
238
|
depth: PAYLOAD_QUERY_DEPTH,
|
|
239
239
|
context: createAdapterContext({
|
|
240
240
|
model,
|
|
241
|
-
operation:
|
|
241
|
+
operation: 'findManyBySingleID'
|
|
242
242
|
})
|
|
243
243
|
});
|
|
244
244
|
result = {
|
|
@@ -249,7 +249,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
249
249
|
};
|
|
250
250
|
} else {
|
|
251
251
|
debugLog([
|
|
252
|
-
|
|
252
|
+
'findManyByWhere',
|
|
253
253
|
{
|
|
254
254
|
collectionSlug,
|
|
255
255
|
payloadWhere
|
|
@@ -264,7 +264,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
264
264
|
depth: PAYLOAD_QUERY_DEPTH,
|
|
265
265
|
context: createAdapterContext({
|
|
266
266
|
model,
|
|
267
|
-
operation:
|
|
267
|
+
operation: 'findManyByWhere'
|
|
268
268
|
})
|
|
269
269
|
});
|
|
270
270
|
result = {
|
|
@@ -277,7 +277,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
277
277
|
model
|
|
278
278
|
})) ?? null;
|
|
279
279
|
debugLog([
|
|
280
|
-
|
|
280
|
+
'findMany result',
|
|
281
281
|
{
|
|
282
282
|
collectionSlug,
|
|
283
283
|
transformedResult,
|
|
@@ -287,7 +287,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
287
287
|
return transformedResult;
|
|
288
288
|
} catch (error) {
|
|
289
289
|
errorLog([
|
|
290
|
-
|
|
290
|
+
'Error in findMany: ',
|
|
291
291
|
error
|
|
292
292
|
]);
|
|
293
293
|
return [];
|
|
@@ -303,7 +303,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
303
303
|
where
|
|
304
304
|
});
|
|
305
305
|
debugLog([
|
|
306
|
-
|
|
306
|
+
'update',
|
|
307
307
|
{
|
|
308
308
|
collectionSlug,
|
|
309
309
|
update
|
|
@@ -318,7 +318,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
318
318
|
const id = singleIdQuery(payloadWhere);
|
|
319
319
|
if (id) {
|
|
320
320
|
debugLog([
|
|
321
|
-
|
|
321
|
+
'updateByID',
|
|
322
322
|
{
|
|
323
323
|
collectionSlug,
|
|
324
324
|
id
|
|
@@ -331,13 +331,13 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
331
331
|
depth: PAYLOAD_QUERY_DEPTH,
|
|
332
332
|
context: createAdapterContext({
|
|
333
333
|
model,
|
|
334
|
-
operation:
|
|
334
|
+
operation: 'updateByID'
|
|
335
335
|
})
|
|
336
336
|
});
|
|
337
337
|
result = doc;
|
|
338
338
|
} else {
|
|
339
339
|
debugLog([
|
|
340
|
-
|
|
340
|
+
'updateByWhere',
|
|
341
341
|
{
|
|
342
342
|
collectionSlug,
|
|
343
343
|
payloadWhere
|
|
@@ -350,7 +350,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
350
350
|
depth: PAYLOAD_QUERY_DEPTH,
|
|
351
351
|
context: createAdapterContext({
|
|
352
352
|
model,
|
|
353
|
-
operation:
|
|
353
|
+
operation: 'updateByWhere'
|
|
354
354
|
})
|
|
355
355
|
});
|
|
356
356
|
result = doc.docs[0];
|
|
@@ -360,7 +360,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
360
360
|
model
|
|
361
361
|
});
|
|
362
362
|
debugLog([
|
|
363
|
-
|
|
363
|
+
'update result',
|
|
364
364
|
{
|
|
365
365
|
collectionSlug,
|
|
366
366
|
transformedResult,
|
|
@@ -370,7 +370,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
370
370
|
return transformedResult;
|
|
371
371
|
} catch (error) {
|
|
372
372
|
errorLog([
|
|
373
|
-
|
|
373
|
+
'Error in update: ',
|
|
374
374
|
error
|
|
375
375
|
]);
|
|
376
376
|
return null;
|
|
@@ -386,7 +386,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
386
386
|
where
|
|
387
387
|
});
|
|
388
388
|
debugLog([
|
|
389
|
-
|
|
389
|
+
'updateMany',
|
|
390
390
|
{
|
|
391
391
|
collectionSlug,
|
|
392
392
|
payloadWhere,
|
|
@@ -405,11 +405,11 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
405
405
|
depth: PAYLOAD_QUERY_DEPTH,
|
|
406
406
|
context: createAdapterContext({
|
|
407
407
|
model,
|
|
408
|
-
operation:
|
|
408
|
+
operation: 'updateMany'
|
|
409
409
|
})
|
|
410
410
|
});
|
|
411
411
|
debugLog([
|
|
412
|
-
|
|
412
|
+
'updateMany result',
|
|
413
413
|
{
|
|
414
414
|
collectionSlug,
|
|
415
415
|
result: updateResult,
|
|
@@ -419,7 +419,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
419
419
|
return updateResult?.length || 0;
|
|
420
420
|
} catch (error) {
|
|
421
421
|
errorLog([
|
|
422
|
-
|
|
422
|
+
'Error in updateMany: ',
|
|
423
423
|
error
|
|
424
424
|
]);
|
|
425
425
|
return 0;
|
|
@@ -435,7 +435,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
435
435
|
where
|
|
436
436
|
});
|
|
437
437
|
debugLog([
|
|
438
|
-
|
|
438
|
+
'delete',
|
|
439
439
|
{
|
|
440
440
|
collectionSlug
|
|
441
441
|
}
|
|
@@ -449,7 +449,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
449
449
|
const id = singleIdQuery(payloadWhere);
|
|
450
450
|
if (id) {
|
|
451
451
|
debugLog([
|
|
452
|
-
|
|
452
|
+
'deleteByID',
|
|
453
453
|
{
|
|
454
454
|
collectionSlug,
|
|
455
455
|
id
|
|
@@ -461,7 +461,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
461
461
|
depth: PAYLOAD_QUERY_DEPTH,
|
|
462
462
|
context: createAdapterContext({
|
|
463
463
|
model,
|
|
464
|
-
operation:
|
|
464
|
+
operation: 'deleteByID'
|
|
465
465
|
})
|
|
466
466
|
});
|
|
467
467
|
deleteResult = {
|
|
@@ -470,7 +470,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
470
470
|
};
|
|
471
471
|
} else {
|
|
472
472
|
debugLog([
|
|
473
|
-
|
|
473
|
+
'deleteByWhere',
|
|
474
474
|
{
|
|
475
475
|
collectionSlug,
|
|
476
476
|
payloadWhere
|
|
@@ -482,7 +482,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
482
482
|
depth: PAYLOAD_QUERY_DEPTH,
|
|
483
483
|
context: createAdapterContext({
|
|
484
484
|
model,
|
|
485
|
-
operation:
|
|
485
|
+
operation: 'deleteByWhere'
|
|
486
486
|
})
|
|
487
487
|
});
|
|
488
488
|
deleteResult = {
|
|
@@ -491,7 +491,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
491
491
|
};
|
|
492
492
|
}
|
|
493
493
|
debugLog([
|
|
494
|
-
|
|
494
|
+
'delete result',
|
|
495
495
|
{
|
|
496
496
|
collectionSlug,
|
|
497
497
|
result: deleteResult,
|
|
@@ -501,7 +501,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
501
501
|
return;
|
|
502
502
|
} catch (error) {
|
|
503
503
|
errorLog([
|
|
504
|
-
|
|
504
|
+
'Error in delete: ',
|
|
505
505
|
error
|
|
506
506
|
]);
|
|
507
507
|
return;
|
|
@@ -517,7 +517,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
517
517
|
where
|
|
518
518
|
});
|
|
519
519
|
debugLog([
|
|
520
|
-
|
|
520
|
+
'deleteMany',
|
|
521
521
|
{
|
|
522
522
|
collectionSlug,
|
|
523
523
|
payloadWhere
|
|
@@ -534,11 +534,11 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
534
534
|
depth: PAYLOAD_QUERY_DEPTH,
|
|
535
535
|
context: createAdapterContext({
|
|
536
536
|
model,
|
|
537
|
-
operation:
|
|
537
|
+
operation: 'deleteMany'
|
|
538
538
|
})
|
|
539
539
|
});
|
|
540
540
|
debugLog([
|
|
541
|
-
|
|
541
|
+
'deleteMany result',
|
|
542
542
|
{
|
|
543
543
|
collectionSlug,
|
|
544
544
|
result: deleteResult,
|
|
@@ -548,7 +548,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
548
548
|
return deleteResult.docs.length;
|
|
549
549
|
} catch (error) {
|
|
550
550
|
errorLog([
|
|
551
|
-
|
|
551
|
+
'Error in deleteMany: ',
|
|
552
552
|
error
|
|
553
553
|
]);
|
|
554
554
|
return 0;
|
|
@@ -564,7 +564,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
564
564
|
where
|
|
565
565
|
});
|
|
566
566
|
debugLog([
|
|
567
|
-
|
|
567
|
+
'count',
|
|
568
568
|
{
|
|
569
569
|
collectionSlug,
|
|
570
570
|
payloadWhere
|
|
@@ -581,11 +581,11 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
581
581
|
depth: PAYLOAD_QUERY_DEPTH,
|
|
582
582
|
context: createAdapterContext({
|
|
583
583
|
model,
|
|
584
|
-
operation:
|
|
584
|
+
operation: 'count'
|
|
585
585
|
})
|
|
586
586
|
});
|
|
587
587
|
debugLog([
|
|
588
|
-
|
|
588
|
+
'count result',
|
|
589
589
|
{
|
|
590
590
|
collectionSlug,
|
|
591
591
|
result: {
|
|
@@ -597,7 +597,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
597
597
|
return result.totalDocs;
|
|
598
598
|
} catch (error) {
|
|
599
599
|
errorLog([
|
|
600
|
-
|
|
600
|
+
'Error in count: ',
|
|
601
601
|
error
|
|
602
602
|
]);
|
|
603
603
|
return 0;
|
|
@@ -607,7 +607,7 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
607
607
|
const schemaCode = await generateSchema(options);
|
|
608
608
|
return {
|
|
609
609
|
code: schemaCode,
|
|
610
|
-
path: file ||
|
|
610
|
+
path: file || 'schema.ts',
|
|
611
611
|
append: false,
|
|
612
612
|
overwrite: true
|
|
613
613
|
};
|
|
@@ -621,4 +621,4 @@ const payloadAdapter = (payloadClient, config)=>{
|
|
|
621
621
|
};
|
|
622
622
|
export { generateSchema, payloadAdapter };
|
|
623
623
|
|
|
624
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9hZGFwdGVyL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJldHRlckF1dGhFcnJvciB9IGZyb20gXCJiZXR0ZXItYXV0aFwiO1xuaW1wb3J0IHR5cGUgeyBBZGFwdGVyLCBCZXR0ZXJBdXRoT3B0aW9ucywgV2hlcmUgfSBmcm9tIFwiYmV0dGVyLWF1dGhcIjtcbmltcG9ydCB7IGdlbmVyYXRlU2NoZW1hIH0gZnJvbSBcIi4vZ2VuZXJhdGUtc2NoZW1hXCI7XG5pbXBvcnQgeyBjcmVhdGVUcmFuc2Zvcm0gfSBmcm9tIFwiLi90cmFuc2Zvcm1cIjtcbmltcG9ydCB0eXBlIHsgUGF5bG9hZEFkYXB0ZXIgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgY29uc3QgQkVUVEVSX0FVVEhfQ09OVEVYVF9LRVkgPSBcInBheWxvYWQtZGItYWRhcHRlclwiO1xuY29uc3QgUEFZTE9BRF9RVUVSWV9ERVBUSCA9IDI7XG5cbmNvbnN0IHBheWxvYWRBZGFwdGVyOiBQYXlsb2FkQWRhcHRlciA9IChwYXlsb2FkQ2xpZW50LCBjb25maWcpID0+IHtcbiAgZnVuY3Rpb24gZGVidWdMb2cobWVzc2FnZTogYW55W10pIHtcbiAgICBpZiAoY29uZmlnLmVuYWJsZURlYnVnTG9ncykge1xuICAgICAgY29uc29sZS5sb2coXCJbcGF5bG9hZC1kYi1hZGFwdGVyXVwiLCAuLi5tZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBlcnJvckxvZyhtZXNzYWdlOiBhbnlbXSkge1xuICAgIGNvbnNvbGUuZXJyb3IoYFtwYXlsb2FkLWRiLWFkYXB0ZXJdYCwgLi4ubWVzc2FnZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjb2xsZWN0aW9uU2x1Z0Vycm9yKG1vZGVsOiBzdHJpbmcpIHtcbiAgICB0aHJvdyBuZXcgQmV0dGVyQXV0aEVycm9yKFxuICAgICAgYENvbGxlY3Rpb24gJHttb2RlbH0gZG9lcyBub3QgZXhpc3QuIFBsZWFzZSBjaGVjayB5b3VyIHBheWxvYWQgY29sbGVjdGlvbiBzbHVncyBtYXRjaCB0aGUgYmV0dGVyIGF1dGggc2NoZW1hYFxuICAgICk7XG4gIH1cblxuICBjb25zdCBjcmVhdGVBZGFwdGVyQ29udGV4dCA9IChkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiAoe1xuICAgIFtCRVRURVJfQVVUSF9DT05URVhUX0tFWV06IHsgLi4uZGF0YSB9LFxuICB9KTtcblxuICBhc3luYyBmdW5jdGlvbiByZXNvbHZlUGF5bG9hZENsaWVudCgpIHtcbiAgICBjb25zdCBwYXlsb2FkID1cbiAgICAgIHR5cGVvZiBwYXlsb2FkQ2xpZW50ID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgPyBhd2FpdCBwYXlsb2FkQ2xpZW50KClcbiAgICAgICAgOiBhd2FpdCBwYXlsb2FkQ2xpZW50O1xuICAgIGlmICghcGF5bG9hZC5jb25maWc/LmN1c3RvbT8uaGFzQmV0dGVyQXV0aFBsdWdpbikge1xuICAgICAgdGhyb3cgbmV3IEJldHRlckF1dGhFcnJvcihcbiAgICAgICAgYFBheWxvYWQgaXMgbm90IGNvbmZpZ3VyZWQgd2l0aCB0aGUgYmV0dGVyLWF1dGggcGx1Z2luLiBQbGVhc2UgYWRkIHRoZSBwbHVnaW4gdG8geW91ciBwYXlsb2FkIGNvbmZpZy5gXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gcGF5bG9hZDtcbiAgfVxuXG4gIHJldHVybiAob3B0aW9uczogQmV0dGVyQXV0aE9wdGlvbnMpOiBBZGFwdGVyID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB0cmFuc2Zvcm1JbnB1dCxcbiAgICAgIHRyYW5zZm9ybU91dHB1dCxcbiAgICAgIGNvbnZlcnRXaGVyZUNsYXVzZSxcbiAgICAgIGNvbnZlcnRTZWxlY3QsXG4gICAgICBjb252ZXJ0U29ydCxcbiAgICAgIGdldE1vZGVsTmFtZSxcbiAgICAgIHNpbmdsZUlkUXVlcnksXG4gICAgICBtdWx0aXBsZUlkc1F1ZXJ5LFxuICAgIH0gPSBjcmVhdGVUcmFuc2Zvcm0ob3B0aW9ucywgY29uZmlnLmVuYWJsZURlYnVnTG9ncyA/PyBmYWxzZSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IFwicGF5bG9hZFwiLFxuICAgICAgYXN5bmMgY3JlYXRlPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBSID0gVD4oZGF0YToge1xuICAgICAgICBtb2RlbDogc3RyaW5nO1xuICAgICAgICBkYXRhOiBUO1xuICAgICAgICBzZWxlY3Q/OiBzdHJpbmdbXTtcbiAgICAgIH0pOiBQcm9taXNlPFI+IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCB7IG1vZGVsLCBkYXRhOiB2YWx1ZXMsIHNlbGVjdCB9ID0gZGF0YTtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvblNsdWcgPSBnZXRNb2RlbE5hbWUobW9kZWwpO1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZCA9IHRyYW5zZm9ybUlucHV0KHtcbiAgICAgICAgICBkYXRhOiB2YWx1ZXMsXG4gICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgYWN0aW9uOiBcImNyZWF0ZVwiLFxuICAgICAgICAgIGlkVHlwZTogY29uZmlnLmlkVHlwZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGRlYnVnTG9nKFtcImNyZWF0ZVwiLCB7IGNvbGxlY3Rpb25TbHVnLCB0cmFuc2Zvcm1lZCwgc2VsZWN0IH1dKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgcmVzb2x2ZVBheWxvYWRDbGllbnQoKTtcbiAgICAgICAgICBpZiAoIWNvbGxlY3Rpb25TbHVnIHx8ICEoY29sbGVjdGlvblNsdWcgaW4gcGF5bG9hZC5jb2xsZWN0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnRXJyb3IobW9kZWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYXlsb2FkLmNyZWF0ZSh7XG4gICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgIGRhdGE6IHRyYW5zZm9ybWVkLFxuICAgICAgICAgICAgc2VsZWN0OiBjb252ZXJ0U2VsZWN0KG1vZGVsLCBzZWxlY3QpLFxuICAgICAgICAgICAgY29udGV4dDogY3JlYXRlQWRhcHRlckNvbnRleHQoeyBtb2RlbCwgb3BlcmF0aW9uOiBcImNyZWF0ZVwiIH0pLFxuICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEgsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc3QgdHJhbnNmb3JtZWRSZXN1bHQgPSB0cmFuc2Zvcm1PdXRwdXQoe1xuICAgICAgICAgICAgZG9jOiByZXN1bHQsXG4gICAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBkZWJ1Z0xvZyhbXG4gICAgICAgICAgICBcImNyZWF0ZSByZXN1bHRcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgIHRyYW5zZm9ybWVkUmVzdWx0LFxuICAgICAgICAgICAgICBkdXJhdGlvbjogYCR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zYCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSk7XG4gICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybWVkUmVzdWx0IGFzIFI7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgZXJyb3JMb2coW1wiRXJyb3IgaW4gY3JlYXRpbmc6XCIsIG1vZGVsLCBlcnJvcl0pO1xuICAgICAgICAgIHJldHVybiBudWxsIGFzIFI7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBhc3luYyBmaW5kT25lPFQ+KGRhdGE6IHtcbiAgICAgICAgbW9kZWw6IHN0cmluZztcbiAgICAgICAgd2hlcmU6IFdoZXJlW107XG4gICAgICAgIHNlbGVjdD86IHN0cmluZ1tdO1xuICAgICAgfSk6IFByb21pc2U8VCB8IG51bGw+IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCB7IG1vZGVsLCB3aGVyZSwgc2VsZWN0IH0gPSBkYXRhO1xuICAgICAgICBjb25zdCBjb2xsZWN0aW9uU2x1ZyA9IGdldE1vZGVsTmFtZShtb2RlbCk7XG4gICAgICAgIGNvbnN0IHBheWxvYWRXaGVyZSA9IGNvbnZlcnRXaGVyZUNsYXVzZSh7XG4gICAgICAgICAgaWRUeXBlOiBjb25maWcuaWRUeXBlLFxuICAgICAgICAgIG1vZGVsLFxuICAgICAgICAgIHdoZXJlLFxuICAgICAgICB9KTtcbiAgICAgICAgZGVidWdMb2coW1wiZmluZE9uZVwiLCB7IGNvbGxlY3Rpb25TbHVnIH1dKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgcmVzb2x2ZVBheWxvYWRDbGllbnQoKTtcbiAgICAgICAgICBpZiAoIWNvbGxlY3Rpb25TbHVnIHx8ICEoY29sbGVjdGlvblNsdWcgaW4gcGF5bG9hZC5jb2xsZWN0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnRXJyb3IobW9kZWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBpZCA9IHNpbmdsZUlkUXVlcnkocGF5bG9hZFdoZXJlKTtcbiAgICAgICAgICBsZXQgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCA9IG51bGw7XG4gICAgICAgICAgaWYgKGlkKSB7XG4gICAgICAgICAgICBkZWJ1Z0xvZyhbXCJmaW5kT25lQnlJRFwiLCB7IGNvbGxlY3Rpb25TbHVnLCBpZCB9XSk7XG4gICAgICAgICAgICBjb25zdCBkb2MgPSBhd2FpdCBwYXlsb2FkLmZpbmRCeUlEKHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICBzZWxlY3Q6IGNvbnZlcnRTZWxlY3QobW9kZWwsIHNlbGVjdCksXG4gICAgICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUFkYXB0ZXJDb250ZXh0KHtcbiAgICAgICAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb246IFwiZmluZE9uZUJ5SURcIixcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIGRlcHRoOiBQQVlMT0FEX1FVRVJZX0RFUFRILFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXN1bHQgPSBkb2M7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlYnVnTG9nKFtcImZpbmRPbmVCeVdoZXJlXCIsIHsgY29sbGVjdGlvblNsdWcsIHBheWxvYWRXaGVyZSB9XSk7XG4gICAgICAgICAgICBjb25zdCBkb2NzID0gYXdhaXQgcGF5bG9hZC5maW5kKHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgIHdoZXJlOiBwYXlsb2FkV2hlcmUsXG4gICAgICAgICAgICAgIHNlbGVjdDogY29udmVydFNlbGVjdChtb2RlbCwgc2VsZWN0KSxcbiAgICAgICAgICAgICAgY29udGV4dDogY3JlYXRlQWRhcHRlckNvbnRleHQoe1xuICAgICAgICAgICAgICAgIG1vZGVsLFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogXCJmaW5kT25lQnlXaGVyZVwiLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEgsXG4gICAgICAgICAgICAgIGxpbWl0OiAxLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXN1bHQgPSBkb2NzLmRvY3NbMF07XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkUmVzdWx0ID0gdHJhbnNmb3JtT3V0cHV0PHR5cGVvZiByZXN1bHQgfCBudWxsPih7XG4gICAgICAgICAgICBkb2M6IHJlc3VsdCxcbiAgICAgICAgICAgIG1vZGVsLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGRlYnVnTG9nKFtcbiAgICAgICAgICAgIFwiZmluZE9uZSByZXN1bHRcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgIHRyYW5zZm9ybWVkUmVzdWx0LFxuICAgICAgICAgICAgICBkdXJhdGlvbjogYCR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zYCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSk7XG4gICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybWVkUmVzdWx0IGFzIFQ7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgZXJyb3JMb2coW1wiRXJyb3IgaW4gZmluZE9uZTogXCIsIGVycm9yXSk7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBhc3luYyBmaW5kTWFueTxUPihkYXRhOiB7XG4gICAgICAgIG1vZGVsOiBzdHJpbmc7XG4gICAgICAgIHdoZXJlPzogV2hlcmVbXTtcbiAgICAgICAgbGltaXQ/OiBudW1iZXI7XG4gICAgICAgIHNvcnRCeT86IHtcbiAgICAgICAgICBmaWVsZDogc3RyaW5nO1xuICAgICAgICAgIGRpcmVjdGlvbjogXCJhc2NcIiB8IFwiZGVzY1wiO1xuICAgICAgICB9O1xuICAgICAgICBvZmZzZXQ/OiBudW1iZXI7XG4gICAgICB9KTogUHJvbWlzZTxUW10+IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCB7IG1vZGVsLCB3aGVyZSwgc29ydEJ5LCBsaW1pdCwgb2Zmc2V0IH0gPSBkYXRhO1xuICAgICAgICBjb25zdCBjb2xsZWN0aW9uU2x1ZyA9IGdldE1vZGVsTmFtZShtb2RlbCk7XG4gICAgICAgIGNvbnN0IHBheWxvYWRXaGVyZSA9IGNvbnZlcnRXaGVyZUNsYXVzZSh7XG4gICAgICAgICAgaWRUeXBlOiBjb25maWcuaWRUeXBlLFxuICAgICAgICAgIG1vZGVsLFxuICAgICAgICAgIHdoZXJlLFxuICAgICAgICB9KTtcbiAgICAgICAgZGVidWdMb2coW1wiZmluZE1hbnlcIiwgeyBjb2xsZWN0aW9uU2x1Zywgc29ydEJ5LCBsaW1pdCwgb2Zmc2V0IH1dKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgcmVzb2x2ZVBheWxvYWRDbGllbnQoKTtcbiAgICAgICAgICBpZiAoIWNvbGxlY3Rpb25TbHVnIHx8ICEoY29sbGVjdGlvblNsdWcgaW4gcGF5bG9hZC5jb2xsZWN0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnRXJyb3IobW9kZWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgcmVzdWx0OiB7XG4gICAgICAgICAgICBkb2NzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+W107XG4gICAgICAgICAgICB0b3RhbERvY3M6IG51bWJlcjtcbiAgICAgICAgICB9IHwgbnVsbCA9IG51bGw7XG4gICAgICAgICAgY29uc3QgbXVsdGlwbGVJZHMgPSB3aGVyZSAmJiBtdWx0aXBsZUlkc1F1ZXJ5KHBheWxvYWRXaGVyZSk7XG4gICAgICAgICAgY29uc3Qgc2luZ2xlSWQgPSB3aGVyZSAmJiBzaW5nbGVJZFF1ZXJ5KHBheWxvYWRXaGVyZSk7XG4gICAgICAgICAgaWYgKG11bHRpcGxlSWRzICYmIG11bHRpcGxlSWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGRlYnVnTG9nKFtcbiAgICAgICAgICAgICAgXCJmaW5kTWFueUJ5TXVsdGlwbGVJRHNcIixcbiAgICAgICAgICAgICAgeyBjb2xsZWN0aW9uU2x1ZywgaWRzOiBtdWx0aXBsZUlkcyB9LFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICBjb25zdCByZXMgPSB7XG4gICAgICAgICAgICAgIGRvY3M6IFtdIGFzIFJlY29yZDxzdHJpbmcsIGFueT5bXSxcbiAgICAgICAgICAgICAgdG90YWxEb2NzOiAwLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaWQgb2YgbXVsdGlwbGVJZHMpIHtcbiAgICAgICAgICAgICAgY29uc3QgZG9jID0gYXdhaXQgcGF5bG9hZC5maW5kQnlJRCh7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEgsXG4gICAgICAgICAgICAgICAgY29udGV4dDogY3JlYXRlQWRhcHRlckNvbnRleHQoe1xuICAgICAgICAgICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgICAgICAgICBvcGVyYXRpb246IFwiZmluZE1hbnlCeU11bHRpcGxlSURzXCIsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICByZXMuZG9jcy5wdXNoKGRvYyk7XG4gICAgICAgICAgICAgIHJlcy50b3RhbERvY3MrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdCA9IHsgZG9jczogcmVzLmRvY3MsIHRvdGFsRG9jczogcmVzLnRvdGFsRG9jcyB9O1xuICAgICAgICAgIH0gZWxzZSBpZiAoc2luZ2xlSWQpIHtcbiAgICAgICAgICAgIGRlYnVnTG9nKFtcImZpbmRNYW55QnlTaW5nbGVJRFwiLCB7IGNvbGxlY3Rpb25TbHVnLCBpZDogc2luZ2xlSWQgfV0pO1xuICAgICAgICAgICAgY29uc3QgZG9jID0gYXdhaXQgcGF5bG9hZC5maW5kQnlJRCh7XG4gICAgICAgICAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICBpZDogc2luZ2xlSWQsXG4gICAgICAgICAgICAgIGRlcHRoOiBQQVlMT0FEX1FVRVJZX0RFUFRILFxuICAgICAgICAgICAgICBjb250ZXh0OiBjcmVhdGVBZGFwdGVyQ29udGV4dCh7XG4gICAgICAgICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uOiBcImZpbmRNYW55QnlTaW5nbGVJRFwiLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzdWx0ID0geyBkb2NzOiBkb2MgPyBbZG9jXSA6IFtdLCB0b3RhbERvY3M6IGRvYyA/IDEgOiAwIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlYnVnTG9nKFtcImZpbmRNYW55QnlXaGVyZVwiLCB7IGNvbGxlY3Rpb25TbHVnLCBwYXlsb2FkV2hlcmUgfV0pO1xuICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgcGF5bG9hZC5maW5kKHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgIHdoZXJlOiBwYXlsb2FkV2hlcmUsXG4gICAgICAgICAgICAgIGxpbWl0OiBsaW1pdCxcbiAgICAgICAgICAgICAgcGFnZTogb2Zmc2V0ID8gTWF0aC5mbG9vcihvZmZzZXQgLyAobGltaXQgfHwgMTApKSArIDEgOiAxLFxuICAgICAgICAgICAgICBzb3J0OiBjb252ZXJ0U29ydChtb2RlbCwgc29ydEJ5KSxcbiAgICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEgsXG4gICAgICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUFkYXB0ZXJDb250ZXh0KHtcbiAgICAgICAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb246IFwiZmluZE1hbnlCeVdoZXJlXCIsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXN1bHQgPSB7IGRvY3M6IHJlcy5kb2NzLCB0b3RhbERvY3M6IHJlcy50b3RhbERvY3MgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgdHJhbnNmb3JtZWRSZXN1bHQgPVxuICAgICAgICAgICAgcmVzdWx0Py5kb2NzLm1hcCgoZG9jKSA9PlxuICAgICAgICAgICAgICB0cmFuc2Zvcm1PdXRwdXQoe1xuICAgICAgICAgICAgICAgIGRvYyxcbiAgICAgICAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICkgPz8gbnVsbDtcbiAgICAgICAgICBkZWJ1Z0xvZyhbXG4gICAgICAgICAgICBcImZpbmRNYW55IHJlc3VsdFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgdHJhbnNmb3JtZWRSZXN1bHQsXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiBgJHtEYXRlLm5vdygpIC0gc3RhcnR9bXNgLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgICByZXR1cm4gdHJhbnNmb3JtZWRSZXN1bHQgYXMgVFtdO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGVycm9yTG9nKFtcIkVycm9yIGluIGZpbmRNYW55OiBcIiwgZXJyb3JdKTtcbiAgICAgICAgICByZXR1cm4gW10gYXMgVFtdO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgYXN5bmMgdXBkYXRlPFQ+KGRhdGE6IHtcbiAgICAgICAgbW9kZWw6IHN0cmluZztcbiAgICAgICAgd2hlcmU6IFdoZXJlW107XG4gICAgICAgIHVwZGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICB9KTogUHJvbWlzZTxUIHwgbnVsbD4ge1xuICAgICAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgICAgIGNvbnN0IHsgbW9kZWwsIHdoZXJlLCB1cGRhdGUgfSA9IGRhdGE7XG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb25TbHVnID0gZ2V0TW9kZWxOYW1lKG1vZGVsKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZFdoZXJlID0gY29udmVydFdoZXJlQ2xhdXNlKHtcbiAgICAgICAgICBpZFR5cGU6IGNvbmZpZy5pZFR5cGUsXG4gICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgd2hlcmUsXG4gICAgICAgIH0pO1xuICAgICAgICBkZWJ1Z0xvZyhbXCJ1cGRhdGVcIiwgeyBjb2xsZWN0aW9uU2x1ZywgdXBkYXRlIH1dKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgcmVzb2x2ZVBheWxvYWRDbGllbnQoKTtcbiAgICAgICAgICBpZiAoIWNvbGxlY3Rpb25TbHVnIHx8ICEoY29sbGVjdGlvblNsdWcgaW4gcGF5bG9hZC5jb2xsZWN0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnRXJyb3IobW9kZWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCA9IG51bGw7XG4gICAgICAgICAgY29uc3QgaWQgPSBzaW5nbGVJZFF1ZXJ5KHBheWxvYWRXaGVyZSk7XG4gICAgICAgICAgaWYgKGlkKSB7XG4gICAgICAgICAgICBkZWJ1Z0xvZyhbXCJ1cGRhdGVCeUlEXCIsIHsgY29sbGVjdGlvblNsdWcsIGlkIH1dKTtcbiAgICAgICAgICAgIGNvbnN0IGRvYyA9IGF3YWl0IHBheWxvYWQudXBkYXRlKHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICBkYXRhOiB1cGRhdGUsXG4gICAgICAgICAgICAgIGRlcHRoOiBQQVlMT0FEX1FVRVJZX0RFUFRILFxuICAgICAgICAgICAgICBjb250ZXh0OiBjcmVhdGVBZGFwdGVyQ29udGV4dCh7IG1vZGVsLCBvcGVyYXRpb246IFwidXBkYXRlQnlJRFwiIH0pLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXN1bHQgPSBkb2M7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlYnVnTG9nKFtcInVwZGF0ZUJ5V2hlcmVcIiwgeyBjb2xsZWN0aW9uU2x1ZywgcGF5bG9hZFdoZXJlIH1dKTtcbiAgICAgICAgICAgIGNvbnN0IGRvYyA9IGF3YWl0IHBheWxvYWQudXBkYXRlKHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgIHdoZXJlOiBwYXlsb2FkV2hlcmUsXG4gICAgICAgICAgICAgIGRhdGE6IHVwZGF0ZSxcbiAgICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEgsXG4gICAgICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUFkYXB0ZXJDb250ZXh0KHtcbiAgICAgICAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb246IFwidXBkYXRlQnlXaGVyZVwiLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzdWx0ID0gZG9jLmRvY3NbMF07XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkUmVzdWx0ID0gdHJhbnNmb3JtT3V0cHV0PHR5cGVvZiByZXN1bHQgfCBudWxsPih7XG4gICAgICAgICAgICBkb2M6IHJlc3VsdCxcbiAgICAgICAgICAgIG1vZGVsLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGRlYnVnTG9nKFtcbiAgICAgICAgICAgIFwidXBkYXRlIHJlc3VsdFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgdHJhbnNmb3JtZWRSZXN1bHQsXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiBgJHtEYXRlLm5vdygpIC0gc3RhcnR9bXNgLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgICByZXR1cm4gdHJhbnNmb3JtZWRSZXN1bHQgYXMgVDtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBlcnJvckxvZyhbXCJFcnJvciBpbiB1cGRhdGU6IFwiLCBlcnJvcl0pO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgYXN5bmMgdXBkYXRlTWFueShkYXRhOiB7XG4gICAgICAgIG1vZGVsOiBzdHJpbmc7XG4gICAgICAgIHdoZXJlOiBXaGVyZVtdO1xuICAgICAgICB1cGRhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgfSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3QgeyBtb2RlbCwgd2hlcmUsIHVwZGF0ZSB9ID0gZGF0YTtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvblNsdWcgPSBnZXRNb2RlbE5hbWUobW9kZWwpO1xuICAgICAgICBjb25zdCBwYXlsb2FkV2hlcmUgPSBjb252ZXJ0V2hlcmVDbGF1c2Uoe1xuICAgICAgICAgIGlkVHlwZTogY29uZmlnLmlkVHlwZSxcbiAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICB3aGVyZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGRlYnVnTG9nKFtcInVwZGF0ZU1hbnlcIiwgeyBjb2xsZWN0aW9uU2x1ZywgcGF5bG9hZFdoZXJlLCB1cGRhdGUgfV0pO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBhd2FpdCByZXNvbHZlUGF5bG9hZENsaWVudCgpO1xuICAgICAgICAgIGlmICghY29sbGVjdGlvblNsdWcgfHwgIShjb2xsZWN0aW9uU2x1ZyBpbiBwYXlsb2FkLmNvbGxlY3Rpb25zKSkge1xuICAgICAgICAgICAgY29sbGVjdGlvblNsdWdFcnJvcihtb2RlbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHsgZG9jczogdXBkYXRlUmVzdWx0IH0gPSBhd2FpdCBwYXlsb2FkLnVwZGF0ZSh7XG4gICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgIHdoZXJlOiBwYXlsb2FkV2hlcmUsXG4gICAgICAgICAgICBkYXRhOiB1cGRhdGUsXG4gICAgICAgICAgICBkZXB0aDogUEFZTE9BRF9RVUVSWV9ERVBUSCxcbiAgICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUFkYXB0ZXJDb250ZXh0KHsgbW9kZWwsIG9wZXJhdGlvbjogXCJ1cGRhdGVNYW55XCIgfSksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZGVidWdMb2coW1xuICAgICAgICAgICAgXCJ1cGRhdGVNYW55IHJlc3VsdFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgcmVzdWx0OiB1cGRhdGVSZXN1bHQsXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiBgJHtEYXRlLm5vdygpIC0gc3RhcnR9bXNgLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgICByZXR1cm4gdXBkYXRlUmVzdWx0Py5sZW5ndGggfHwgMDtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBlcnJvckxvZyhbXCJFcnJvciBpbiB1cGRhdGVNYW55OiBcIiwgZXJyb3JdKTtcbiAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGFzeW5jIGRlbGV0ZShkYXRhOiB7IG1vZGVsOiBzdHJpbmc7IHdoZXJlOiBXaGVyZVtdIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCB7IG1vZGVsLCB3aGVyZSB9ID0gZGF0YTtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvblNsdWcgPSBnZXRNb2RlbE5hbWUobW9kZWwpO1xuICAgICAgICBjb25zdCBwYXlsb2FkV2hlcmUgPSBjb252ZXJ0V2hlcmVDbGF1c2Uoe1xuICAgICAgICAgIGlkVHlwZTogY29uZmlnLmlkVHlwZSxcbiAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICB3aGVyZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGRlYnVnTG9nKFtcImRlbGV0ZVwiLCB7IGNvbGxlY3Rpb25TbHVnIH1dKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgcmVzb2x2ZVBheWxvYWRDbGllbnQoKTtcbiAgICAgICAgICBpZiAoIWNvbGxlY3Rpb25TbHVnIHx8ICEoY29sbGVjdGlvblNsdWcgaW4gcGF5bG9hZC5jb2xsZWN0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnRXJyb3IobW9kZWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgZGVsZXRlUmVzdWx0OiB7XG4gICAgICAgICAgICBkb2M6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsO1xuICAgICAgICAgICAgZXJyb3JzOiBhbnlbXTtcbiAgICAgICAgICB9IHwgbnVsbCA9IG51bGw7XG4gICAgICAgICAgY29uc3QgaWQgPSBzaW5nbGVJZFF1ZXJ5KHBheWxvYWRXaGVyZSk7XG4gICAgICAgICAgaWYgKGlkKSB7XG4gICAgICAgICAgICBkZWJ1Z0xvZyhbXCJkZWxldGVCeUlEXCIsIHsgY29sbGVjdGlvblNsdWcsIGlkIH1dKTtcbiAgICAgICAgICAgIGNvbnN0IGRvYyA9IGF3YWl0IHBheWxvYWQuZGVsZXRlKHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICBkZXB0aDogUEFZTE9BRF9RVUVSWV9ERVBUSCxcbiAgICAgICAgICAgICAgY29udGV4dDogY3JlYXRlQWRhcHRlckNvbnRleHQoeyBtb2RlbCwgb3BlcmF0aW9uOiBcImRlbGV0ZUJ5SURcIiB9KSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZGVsZXRlUmVzdWx0ID0geyBkb2MsIGVycm9yczogW10gfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVidWdMb2coW1wiZGVsZXRlQnlXaGVyZVwiLCB7IGNvbGxlY3Rpb25TbHVnLCBwYXlsb2FkV2hlcmUgfV0pO1xuICAgICAgICAgICAgY29uc3QgZG9jID0gYXdhaXQgcGF5bG9hZC5kZWxldGUoe1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgd2hlcmU6IHBheWxvYWRXaGVyZSxcbiAgICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEgsXG4gICAgICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUFkYXB0ZXJDb250ZXh0KHtcbiAgICAgICAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb246IFwiZGVsZXRlQnlXaGVyZVwiLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZGVsZXRlUmVzdWx0ID0geyBkb2M6IGRvYy5kb2NzWzBdLCBlcnJvcnM6IFtdIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlYnVnTG9nKFtcbiAgICAgICAgICAgIFwiZGVsZXRlIHJlc3VsdFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgcmVzdWx0OiBkZWxldGVSZXN1bHQsXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiBgJHtEYXRlLm5vdygpIC0gc3RhcnR9bXNgLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgZXJyb3JMb2coW1wiRXJyb3IgaW4gZGVsZXRlOiBcIiwgZXJyb3JdKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBhc3luYyBkZWxldGVNYW55KGRhdGE6IHtcbiAgICAgICAgbW9kZWw6IHN0cmluZztcbiAgICAgICAgd2hlcmU6IFdoZXJlW107XG4gICAgICB9KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCB7IG1vZGVsLCB3aGVyZSB9ID0gZGF0YTtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvblNsdWcgPSBnZXRNb2RlbE5hbWUobW9kZWwpO1xuICAgICAgICBjb25zdCBwYXlsb2FkV2hlcmUgPSBjb252ZXJ0V2hlcmVDbGF1c2Uoe1xuICAgICAgICAgIGlkVHlwZTogY29uZmlnLmlkVHlwZSxcbiAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICB3aGVyZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGRlYnVnTG9nKFtcImRlbGV0ZU1hbnlcIiwgeyBjb2xsZWN0aW9uU2x1ZywgcGF5bG9hZFdoZXJlIH1dKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgcmVzb2x2ZVBheWxvYWRDbGllbnQoKTtcbiAgICAgICAgICBpZiAoIWNvbGxlY3Rpb25TbHVnIHx8ICEoY29sbGVjdGlvblNsdWcgaW4gcGF5bG9hZC5jb2xsZWN0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnRXJyb3IobW9kZWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBkZWxldGVSZXN1bHQgPSBhd2FpdCBwYXlsb2FkLmRlbGV0ZSh7XG4gICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgIHdoZXJlOiBwYXlsb2FkV2hlcmUsXG4gICAgICAgICAgICBkZXB0aDogUEFZTE9BRF9RVUVSWV9ERVBUSCxcbiAgICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUFkYXB0ZXJDb250ZXh0KHsgbW9kZWwsIG9wZXJhdGlvbjogXCJkZWxldGVNYW55XCIgfSksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZGVidWdMb2coW1xuICAgICAgICAgICAgXCJkZWxldGVNYW55IHJlc3VsdFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgcmVzdWx0OiBkZWxldGVSZXN1bHQsXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiBgJHtEYXRlLm5vdygpIC0gc3RhcnR9bXNgLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgICByZXR1cm4gZGVsZXRlUmVzdWx0LmRvY3MubGVuZ3RoO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGVycm9yTG9nKFtcIkVycm9yIGluIGRlbGV0ZU1hbnk6IFwiLCBlcnJvcl0pO1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgYXN5bmMgY291bnQoZGF0YTogeyBtb2RlbDogc3RyaW5nOyB3aGVyZT86IFdoZXJlW10gfSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3QgeyBtb2RlbCwgd2hlcmUgfSA9IGRhdGE7XG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb25TbHVnID0gZ2V0TW9kZWxOYW1lKG1vZGVsKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZFdoZXJlID0gY29udmVydFdoZXJlQ2xhdXNlKHtcbiAgICAgICAgICBpZFR5cGU6IGNvbmZpZy5pZFR5cGUsXG4gICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgd2hlcmUsXG4gICAgICAgIH0pO1xuICAgICAgICBkZWJ1Z0xvZyhbXCJjb3VudFwiLCB7IGNvbGxlY3Rpb25TbHVnLCBwYXlsb2FkV2hlcmUgfV0pO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBhd2FpdCByZXNvbHZlUGF5bG9hZENsaWVudCgpO1xuICAgICAgICAgIGlmICghY29sbGVjdGlvblNsdWcgfHwgIShjb2xsZWN0aW9uU2x1ZyBpbiBwYXlsb2FkLmNvbGxlY3Rpb25zKSkge1xuICAgICAgICAgICAgY29sbGVjdGlvblNsdWdFcnJvcihtb2RlbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBheWxvYWQuY291bnQoe1xuICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICB3aGVyZTogcGF5bG9hZFdoZXJlLFxuICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEgsXG4gICAgICAgICAgICBjb250ZXh0OiBjcmVhdGVBZGFwdGVyQ29udGV4dCh7IG1vZGVsLCBvcGVyYXRpb246IFwiY291bnRcIiB9KSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBkZWJ1Z0xvZyhbXG4gICAgICAgICAgICBcImNvdW50IHJlc3VsdFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgcmVzdWx0OiB7IHRvdGFsRG9jczogcmVzdWx0LnRvdGFsRG9jcyB9LFxuICAgICAgICAgICAgICBkdXJhdGlvbjogYCR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zYCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdC50b3RhbERvY3M7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgZXJyb3JMb2coW1wiRXJyb3IgaW4gY291bnQ6IFwiLCBlcnJvcl0pO1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgY3JlYXRlU2NoZW1hOiBhc3luYyAob3B0aW9ucywgZmlsZSkgPT4ge1xuICAgICAgICBjb25zdCBzY2hlbWFDb2RlID0gYXdhaXQgZ2VuZXJhdGVTY2hlbWEob3B0aW9ucyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29kZTogc2NoZW1hQ29kZSxcbiAgICAgICAgICBwYXRoOiBmaWxlIHx8IFwic2NoZW1hLnRzXCIsXG4gICAgICAgICAgYXBwZW5kOiBmYWxzZSxcbiAgICAgICAgICBvdmVyd3JpdGU6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBlbmFibGVEZWJ1Z0xvZ3M6IGNvbmZpZy5lbmFibGVEZWJ1Z0xvZ3MsXG4gICAgICAgIGlkVHlwZTogY29uZmlnLmlkVHlwZSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfTtcbn07XG5cbmV4cG9ydCB7IGdlbmVyYXRlU2NoZW1hLCBwYXlsb2FkQWRhcHRlciB9O1xuIl0sIm5hbWVzIjpbIkJldHRlckF1dGhFcnJvciIsImdlbmVyYXRlU2NoZW1hIiwiY3JlYXRlVHJhbnNmb3JtIiwiQkVUVEVSX0FVVEhfQ09OVEVYVF9LRVkiLCJQQVlMT0FEX1FVRVJZX0RFUFRIIiwicGF5bG9hZEFkYXB0ZXIiLCJwYXlsb2FkQ2xpZW50IiwiY29uZmlnIiwiZGVidWdMb2ciLCJtZXNzYWdlIiwiZW5hYmxlRGVidWdMb2dzIiwiY29uc29sZSIsImxvZyIsImVycm9yTG9nIiwiZXJyb3IiLCJjb2xsZWN0aW9uU2x1Z0Vycm9yIiwibW9kZWwiLCJjcmVhdGVBZGFwdGVyQ29udGV4dCIsImRhdGEiLCJyZXNvbHZlUGF5bG9hZENsaWVudCIsInBheWxvYWQiLCJjdXN0b20iLCJoYXNCZXR0ZXJBdXRoUGx1Z2luIiwib3B0aW9ucyIsInRyYW5zZm9ybUlucHV0IiwidHJhbnNmb3JtT3V0cHV0IiwiY29udmVydFdoZXJlQ2xhdXNlIiwiY29udmVydFNlbGVjdCIsImNvbnZlcnRTb3J0IiwiZ2V0TW9kZWxOYW1lIiwic2luZ2xlSWRRdWVyeSIsIm11bHRpcGxlSWRzUXVlcnkiLCJpZCIsImNyZWF0ZSIsInN0YXJ0IiwiRGF0ZSIsIm5vdyIsInZhbHVlcyIsInNlbGVjdCIsImNvbGxlY3Rpb25TbHVnIiwidHJhbnNmb3JtZWQiLCJhY3Rpb24iLCJpZFR5cGUiLCJjb2xsZWN0aW9ucyIsInJlc3VsdCIsImNvbGxlY3Rpb24iLCJjb250ZXh0Iiwib3BlcmF0aW9uIiwiZGVwdGgiLCJ0cmFuc2Zvcm1lZFJlc3VsdCIsImRvYyIsImR1cmF0aW9uIiwiZmluZE9uZSIsIndoZXJlIiwicGF5bG9hZFdoZXJlIiwiZmluZEJ5SUQiLCJkb2NzIiwiZmluZCIsImxpbWl0IiwiZmluZE1hbnkiLCJzb3J0QnkiLCJvZmZzZXQiLCJtdWx0aXBsZUlkcyIsInNpbmdsZUlkIiwibGVuZ3RoIiwiaWRzIiwicmVzIiwidG90YWxEb2NzIiwicHVzaCIsInBhZ2UiLCJNYXRoIiwiZmxvb3IiLCJzb3J0IiwibWFwIiwidXBkYXRlIiwidXBkYXRlTWFueSIsInVwZGF0ZVJlc3VsdCIsImRlbGV0ZSIsImRlbGV0ZVJlc3VsdCIsImVycm9ycyIsImRlbGV0ZU1hbnkiLCJjb3VudCIsImNyZWF0ZVNjaGVtYSIsImZpbGUiLCJzY2hlbWFDb2RlIiwiY29kZSIsInBhdGgiLCJhcHBlbmQiLCJvdmVyd3JpdGUiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGVBQWUsUUFBUSxjQUFjO0FBRTlDLFNBQVNDLGNBQWMsUUFBUSxvQkFBb0I7QUFDbkQsU0FBU0MsZUFBZSxRQUFRLGNBQWM7QUFHOUMsT0FBTyxNQUFNQywwQkFBMEIscUJBQXFCO0FBQzVELE1BQU1DLHNCQUFzQjtBQUU1QixNQUFNQyxpQkFBaUMsQ0FBQ0MsZUFBZUM7SUFDckQsU0FBU0MsU0FBU0MsT0FBYztRQUM5QixJQUFJRixPQUFPRyxlQUFlLEVBQUU7WUFDMUJDLFFBQVFDLEdBQUcsQ0FBQywyQkFBMkJIO1FBQ3pDO0lBQ0Y7SUFFQSxTQUFTSSxTQUFTSixPQUFjO1FBQzlCRSxRQUFRRyxLQUFLLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLTDtJQUMzQztJQUVBLFNBQVNNLG9CQUFvQkMsS0FBYTtRQUN4QyxNQUFNLElBQUloQixnQkFDUixDQUFDLFdBQVcsRUFBRWdCLE1BQU0sd0ZBQXdGLENBQUM7SUFFakg7SUFFQSxNQUFNQyx1QkFBdUIsQ0FBQ0MsT0FBK0IsQ0FBQTtZQUMzRCxDQUFDZix3QkFBd0IsRUFBRTtnQkFBRSxHQUFHZSxJQUFJO1lBQUM7UUFDdkMsQ0FBQTtJQUVBLGVBQWVDO1FBQ2IsTUFBTUMsVUFDSixPQUFPZCxrQkFBa0IsYUFDckIsTUFBTUEsa0JBQ04sTUFBTUE7UUFD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
|
|
624
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9hZGFwdGVyL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJldHRlckF1dGhFcnJvciB9IGZyb20gJ2JldHRlci1hdXRoJ1xuaW1wb3J0IHR5cGUgeyBBZGFwdGVyLCBCZXR0ZXJBdXRoT3B0aW9ucywgV2hlcmUgfSBmcm9tICdiZXR0ZXItYXV0aCdcbmltcG9ydCB7IGdlbmVyYXRlU2NoZW1hIH0gZnJvbSAnLi9nZW5lcmF0ZS1zY2hlbWEnXG5pbXBvcnQgeyBjcmVhdGVUcmFuc2Zvcm0gfSBmcm9tICcuL3RyYW5zZm9ybSdcbmltcG9ydCB0eXBlIHsgUGF5bG9hZEFkYXB0ZXIgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgQkVUVEVSX0FVVEhfQ09OVEVYVF9LRVkgPSAncGF5bG9hZC1kYi1hZGFwdGVyJ1xuY29uc3QgUEFZTE9BRF9RVUVSWV9ERVBUSCA9IDJcblxuY29uc3QgcGF5bG9hZEFkYXB0ZXI6IFBheWxvYWRBZGFwdGVyID0gKHBheWxvYWRDbGllbnQsIGNvbmZpZykgPT4ge1xuICBmdW5jdGlvbiBkZWJ1Z0xvZyhtZXNzYWdlOiBhbnlbXSkge1xuICAgIGlmIChjb25maWcuZW5hYmxlRGVidWdMb2dzKSB7XG4gICAgICBjb25zb2xlLmxvZygnW3BheWxvYWQtZGItYWRhcHRlcl0nLCAuLi5tZXNzYWdlKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGVycm9yTG9nKG1lc3NhZ2U6IGFueVtdKSB7XG4gICAgY29uc29sZS5lcnJvcihgW3BheWxvYWQtZGItYWRhcHRlcl1gLCAuLi5tZXNzYWdlKVxuICB9XG5cbiAgZnVuY3Rpb24gY29sbGVjdGlvblNsdWdFcnJvcihtb2RlbDogc3RyaW5nKSB7XG4gICAgdGhyb3cgbmV3IEJldHRlckF1dGhFcnJvcihgQ29sbGVjdGlvbiAke21vZGVsfSBkb2VzIG5vdCBleGlzdC4gUGxlYXNlIGNoZWNrIHlvdXIgcGF5bG9hZCBjb2xsZWN0aW9uIHNsdWdzIG1hdGNoIHRoZSBiZXR0ZXIgYXV0aCBzY2hlbWFgKVxuICB9XG5cbiAgY29uc3QgY3JlYXRlQWRhcHRlckNvbnRleHQgPSAoZGF0YTogUmVjb3JkPHN0cmluZywgYW55PikgPT4gKHtcbiAgICBbQkVUVEVSX0FVVEhfQ09OVEVYVF9LRVldOiB7IC4uLmRhdGEgfVxuICB9KVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVQYXlsb2FkQ2xpZW50KCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB0eXBlb2YgcGF5bG9hZENsaWVudCA9PT0gJ2Z1bmN0aW9uJyA/IGF3YWl0IHBheWxvYWRDbGllbnQoKSA6IGF3YWl0IHBheWxvYWRDbGllbnRcbiAgICBpZiAoIXBheWxvYWQuY29uZmlnPy5jdXN0b20/Lmhhc0JldHRlckF1dGhQbHVnaW4pIHtcbiAgICAgIHRocm93IG5ldyBCZXR0ZXJBdXRoRXJyb3IoYFBheWxvYWQgaXMgbm90IGNvbmZpZ3VyZWQgd2l0aCB0aGUgYmV0dGVyLWF1dGggcGx1Z2luLiBQbGVhc2UgYWRkIHRoZSBwbHVnaW4gdG8geW91ciBwYXlsb2FkIGNvbmZpZy5gKVxuICAgIH1cbiAgICByZXR1cm4gcGF5bG9hZFxuICB9XG5cbiAgcmV0dXJuIChvcHRpb25zOiBCZXR0ZXJBdXRoT3B0aW9ucyk6IEFkYXB0ZXIgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHRyYW5zZm9ybUlucHV0LFxuICAgICAgdHJhbnNmb3JtT3V0cHV0LFxuICAgICAgY29udmVydFdoZXJlQ2xhdXNlLFxuICAgICAgY29udmVydFNlbGVjdCxcbiAgICAgIGNvbnZlcnRTb3J0LFxuICAgICAgZ2V0TW9kZWxOYW1lLFxuICAgICAgc2luZ2xlSWRRdWVyeSxcbiAgICAgIG11bHRpcGxlSWRzUXVlcnlcbiAgICB9ID0gY3JlYXRlVHJhbnNmb3JtKG9wdGlvbnMsIGNvbmZpZy5lbmFibGVEZWJ1Z0xvZ3MgPz8gZmFsc2UpXG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6ICdwYXlsb2FkJyxcbiAgICAgIGFzeW5jIGNyZWF0ZTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiwgUiA9IFQ+KGRhdGE6IHsgbW9kZWw6IHN0cmluZzsgZGF0YTogVDsgc2VsZWN0Pzogc3RyaW5nW10gfSk6IFByb21pc2U8Uj4ge1xuICAgICAgICBjb25zdCBzdGFydCA9IERhdGUubm93KClcbiAgICAgICAgY29uc3QgeyBtb2RlbCwgZGF0YTogdmFsdWVzLCBzZWxlY3QgfSA9IGRhdGFcbiAgICAgICAgY29uc3QgY29sbGVjdGlvblNsdWcgPSBnZXRNb2RlbE5hbWUobW9kZWwpXG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkID0gdHJhbnNmb3JtSW5wdXQoe1xuICAgICAgICAgIGRhdGE6IHZhbHVlcyxcbiAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICBhY3Rpb246ICdjcmVhdGUnLFxuICAgICAgICAgIGlkVHlwZTogY29uZmlnLmlkVHlwZVxuICAgICAgICB9KVxuICAgICAgICBkZWJ1Z0xvZyhbJ2NyZWF0ZScsIHsgY29sbGVjdGlvblNsdWcsIHRyYW5zZm9ybWVkLCBzZWxlY3QgfV0pXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IHJlc29sdmVQYXlsb2FkQ2xpZW50KClcbiAgICAgICAgICBpZiAoIWNvbGxlY3Rpb25TbHVnIHx8ICEoY29sbGVjdGlvblNsdWcgaW4gcGF5bG9hZC5jb2xsZWN0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnRXJyb3IobW9kZWwpXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBheWxvYWQuY3JlYXRlKHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgZGF0YTogdHJhbnNmb3JtZWQsXG4gICAgICAgICAgICBzZWxlY3Q6IGNvbnZlcnRTZWxlY3QobW9kZWwsIHNlbGVjdCksXG4gICAgICAgICAgICBjb250ZXh0OiBjcmVhdGVBZGFwdGVyQ29udGV4dCh7IG1vZGVsLCBvcGVyYXRpb246ICdjcmVhdGUnIH0pLFxuICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEhcbiAgICAgICAgICB9KVxuICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkUmVzdWx0ID0gdHJhbnNmb3JtT3V0cHV0KHtcbiAgICAgICAgICAgIGRvYzogcmVzdWx0LFxuICAgICAgICAgICAgbW9kZWxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGRlYnVnTG9nKFtcbiAgICAgICAgICAgICdjcmVhdGUgcmVzdWx0JyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgIHRyYW5zZm9ybWVkUmVzdWx0LFxuICAgICAgICAgICAgICBkdXJhdGlvbjogYCR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zYFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0pXG4gICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybWVkUmVzdWx0IGFzIFJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBlcnJvckxvZyhbJ0Vycm9yIGluIGNyZWF0aW5nOicsIG1vZGVsLCBlcnJvcl0pXG4gICAgICAgICAgcmV0dXJuIG51bGwgYXMgUlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgYXN5bmMgZmluZE9uZTxUPihkYXRhOiB7IG1vZGVsOiBzdHJpbmc7IHdoZXJlOiBXaGVyZVtdOyBzZWxlY3Q/OiBzdHJpbmdbXSB9KTogUHJvbWlzZTxUIHwgbnVsbD4ge1xuICAgICAgICBjb25zdCBzdGFydCA9IERhdGUubm93KClcbiAgICAgICAgY29uc3QgeyBtb2RlbCwgd2hlcmUsIHNlbGVjdCB9ID0gZGF0YVxuICAgICAgICBjb25zdCBjb2xsZWN0aW9uU2x1ZyA9IGdldE1vZGVsTmFtZShtb2RlbClcbiAgICAgICAgY29uc3QgcGF5bG9hZFdoZXJlID0gY29udmVydFdoZXJlQ2xhdXNlKHtcbiAgICAgICAgICBpZFR5cGU6IGNvbmZpZy5pZFR5cGUsXG4gICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgd2hlcmVcbiAgICAgICAgfSlcbiAgICAgICAgZGVidWdMb2coWydmaW5kT25lJywgeyBjb2xsZWN0aW9uU2x1ZyB9XSlcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgcmVzb2x2ZVBheWxvYWRDbGllbnQoKVxuICAgICAgICAgIGlmICghY29sbGVjdGlvblNsdWcgfHwgIShjb2xsZWN0aW9uU2x1ZyBpbiBwYXlsb2FkLmNvbGxlY3Rpb25zKSkge1xuICAgICAgICAgICAgY29sbGVjdGlvblNsdWdFcnJvcihtb2RlbClcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaWQgPSBzaW5nbGVJZFF1ZXJ5KHBheWxvYWRXaGVyZSlcbiAgICAgICAgICBsZXQgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCA9IG51bGxcbiAgICAgICAgICBpZiAoaWQpIHtcbiAgICAgICAgICAgIGRlYnVnTG9nKFsnZmluZE9uZUJ5SUQnLCB7IGNvbGxlY3Rpb25TbHVnLCBpZCB9XSlcbiAgICAgICAgICAgIGNvbnN0IGRvYyA9IGF3YWl0IHBheWxvYWQuZmluZEJ5SUQoe1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgIHNlbGVjdDogY29udmVydFNlbGVjdChtb2RlbCwgc2VsZWN0KSxcbiAgICAgICAgICAgICAgY29udGV4dDogY3JlYXRlQWRhcHRlckNvbnRleHQoe1xuICAgICAgICAgICAgICAgIG1vZGVsLFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogJ2ZpbmRPbmVCeUlEJ1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEhcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICByZXN1bHQgPSBkb2NcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVidWdMb2coWydmaW5kT25lQnlXaGVyZScsIHsgY29sbGVjdGlvblNsdWcsIHBheWxvYWRXaGVyZSB9XSlcbiAgICAgICAgICAgIGNvbnN0IGRvY3MgPSBhd2FpdCBwYXlsb2FkLmZpbmQoe1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgd2hlcmU6IHBheWxvYWRXaGVyZSxcbiAgICAgICAgICAgICAgc2VsZWN0OiBjb252ZXJ0U2VsZWN0KG1vZGVsLCBzZWxlY3QpLFxuICAgICAgICAgICAgICBjb250ZXh0OiBjcmVhdGVBZGFwdGVyQ29udGV4dCh7XG4gICAgICAgICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uOiAnZmluZE9uZUJ5V2hlcmUnXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBkZXB0aDogUEFZTE9BRF9RVUVSWV9ERVBUSCxcbiAgICAgICAgICAgICAgbGltaXQ6IDFcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICByZXN1bHQgPSBkb2NzLmRvY3NbMF1cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgdHJhbnNmb3JtZWRSZXN1bHQgPSB0cmFuc2Zvcm1PdXRwdXQ8dHlwZW9mIHJlc3VsdCB8IG51bGw+KHtcbiAgICAgICAgICAgIGRvYzogcmVzdWx0LFxuICAgICAgICAgICAgbW9kZWxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGRlYnVnTG9nKFtcbiAgICAgICAgICAgICdmaW5kT25lIHJlc3VsdCcsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICB0cmFuc2Zvcm1lZFJlc3VsdCxcbiAgICAgICAgICAgICAgZHVyYXRpb246IGAke0RhdGUubm93KCkgLSBzdGFydH1tc2BcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdKVxuICAgICAgICAgIHJldHVybiB0cmFuc2Zvcm1lZFJlc3VsdCBhcyBUXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgZXJyb3JMb2coWydFcnJvciBpbiBmaW5kT25lOiAnLCBlcnJvcl0pXG4gICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGFzeW5jIGZpbmRNYW55PFQ+KGRhdGE6IHtcbiAgICAgICAgbW9kZWw6IHN0cmluZ1xuICAgICAgICB3aGVyZT86IFdoZXJlW11cbiAgICAgICAgbGltaXQ/OiBudW1iZXJcbiAgICAgICAgc29ydEJ5Pzoge1xuICAgICAgICAgIGZpZWxkOiBzdHJpbmdcbiAgICAgICAgICBkaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnXG4gICAgICAgIH1cbiAgICAgICAgb2Zmc2V0PzogbnVtYmVyXG4gICAgICB9KTogUHJvbWlzZTxUW10+IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpXG4gICAgICAgIGNvbnN0IHsgbW9kZWwsIHdoZXJlLCBzb3J0QnksIGxpbWl0LCBvZmZzZXQgfSA9IGRhdGFcbiAgICAgICAgY29uc3QgY29sbGVjdGlvblNsdWcgPSBnZXRNb2RlbE5hbWUobW9kZWwpXG4gICAgICAgIGNvbnN0IHBheWxvYWRXaGVyZSA9IGNvbnZlcnRXaGVyZUNsYXVzZSh7XG4gICAgICAgICAgaWRUeXBlOiBjb25maWcuaWRUeXBlLFxuICAgICAgICAgIG1vZGVsLFxuICAgICAgICAgIHdoZXJlXG4gICAgICAgIH0pXG4gICAgICAgIGRlYnVnTG9nKFsnZmluZE1hbnknLCB7IGNvbGxlY3Rpb25TbHVnLCBzb3J0QnksIGxpbWl0LCBvZmZzZXQgfV0pXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IHJlc29sdmVQYXlsb2FkQ2xpZW50KClcbiAgICAgICAgICBpZiAoIWNvbGxlY3Rpb25TbHVnIHx8ICEoY29sbGVjdGlvblNsdWcgaW4gcGF5bG9hZC5jb2xsZWN0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnRXJyb3IobW9kZWwpXG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCByZXN1bHQ6IHtcbiAgICAgICAgICAgIGRvY3M6IFJlY29yZDxzdHJpbmcsIGFueT5bXVxuICAgICAgICAgICAgdG90YWxEb2NzOiBudW1iZXJcbiAgICAgICAgICB9IHwgbnVsbCA9IG51bGxcbiAgICAgICAgICBjb25zdCBtdWx0aXBsZUlkcyA9IHdoZXJlICYmIG11bHRpcGxlSWRzUXVlcnkocGF5bG9hZFdoZXJlKVxuICAgICAgICAgIGNvbnN0IHNpbmdsZUlkID0gd2hlcmUgJiYgc2luZ2xlSWRRdWVyeShwYXlsb2FkV2hlcmUpXG4gICAgICAgICAgaWYgKG11bHRpcGxlSWRzICYmIG11bHRpcGxlSWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGRlYnVnTG9nKFsnZmluZE1hbnlCeU11bHRpcGxlSURzJywgeyBjb2xsZWN0aW9uU2x1ZywgaWRzOiBtdWx0aXBsZUlkcyB9XSlcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IHtcbiAgICAgICAgICAgICAgZG9jczogW10gYXMgUmVjb3JkPHN0cmluZywgYW55PltdLFxuICAgICAgICAgICAgICB0b3RhbERvY3M6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoY29uc3QgaWQgb2YgbXVsdGlwbGVJZHMpIHtcbiAgICAgICAgICAgICAgY29uc3QgZG9jID0gYXdhaXQgcGF5bG9hZC5maW5kQnlJRCh7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEgsXG4gICAgICAgICAgICAgICAgY29udGV4dDogY3JlYXRlQWRhcHRlckNvbnRleHQoe1xuICAgICAgICAgICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgICAgICAgICBvcGVyYXRpb246ICdmaW5kTWFueUJ5TXVsdGlwbGVJRHMnXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgcmVzLmRvY3MucHVzaChkb2MpXG4gICAgICAgICAgICAgIHJlcy50b3RhbERvY3MrK1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0ID0geyBkb2NzOiByZXMuZG9jcywgdG90YWxEb2NzOiByZXMudG90YWxEb2NzIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKHNpbmdsZUlkKSB7XG4gICAgICAgICAgICBkZWJ1Z0xvZyhbJ2ZpbmRNYW55QnlTaW5nbGVJRCcsIHsgY29sbGVjdGlvblNsdWcsIGlkOiBzaW5nbGVJZCB9XSlcbiAgICAgICAgICAgIGNvbnN0IGRvYyA9IGF3YWl0IHBheWxvYWQuZmluZEJ5SUQoe1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgaWQ6IHNpbmdsZUlkLFxuICAgICAgICAgICAgICBkZXB0aDogUEFZTE9BRF9RVUVSWV9ERVBUSCxcbiAgICAgICAgICAgICAgY29udGV4dDogY3JlYXRlQWRhcHRlckNvbnRleHQoe1xuICAgICAgICAgICAgICAgIG1vZGVsLFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogJ2ZpbmRNYW55QnlTaW5nbGVJRCdcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICByZXN1bHQgPSB7IGRvY3M6IGRvYyA/IFtkb2NdIDogW10sIHRvdGFsRG9jczogZG9jID8gMSA6IDAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZWJ1Z0xvZyhbJ2ZpbmRNYW55QnlXaGVyZScsIHsgY29sbGVjdGlvblNsdWcsIHBheWxvYWRXaGVyZSB9XSlcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHBheWxvYWQuZmluZCh7XG4gICAgICAgICAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICB3aGVyZTogcGF5bG9hZFdoZXJlLFxuICAgICAgICAgICAgICBsaW1pdDogbGltaXQsXG4gICAgICAgICAgICAgIHBhZ2U6IG9mZnNldCA/IE1hdGguZmxvb3Iob2Zmc2V0IC8gKGxpbWl0IHx8IDEwKSkgKyAxIDogMSxcbiAgICAgICAgICAgICAgc29ydDogY29udmVydFNvcnQobW9kZWwsIHNvcnRCeSksXG4gICAgICAgICAgICAgIGRlcHRoOiBQQVlMT0FEX1FVRVJZX0RFUFRILFxuICAgICAgICAgICAgICBjb250ZXh0OiBjcmVhdGVBZGFwdGVyQ29udGV4dCh7XG4gICAgICAgICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uOiAnZmluZE1hbnlCeVdoZXJlJ1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHJlc3VsdCA9IHsgZG9jczogcmVzLmRvY3MsIHRvdGFsRG9jczogcmVzLnRvdGFsRG9jcyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkUmVzdWx0ID1cbiAgICAgICAgICAgIHJlc3VsdD8uZG9jcy5tYXAoKGRvYykgPT5cbiAgICAgICAgICAgICAgdHJhbnNmb3JtT3V0cHV0KHtcbiAgICAgICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICAgICAgbW9kZWxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICkgPz8gbnVsbFxuICAgICAgICAgIGRlYnVnTG9nKFtcbiAgICAgICAgICAgICdmaW5kTWFueSByZXN1bHQnLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgdHJhbnNmb3JtZWRSZXN1bHQsXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiBgJHtEYXRlLm5vdygpIC0gc3RhcnR9bXNgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSlcbiAgICAgICAgICByZXR1cm4gdHJhbnNmb3JtZWRSZXN1bHQgYXMgVFtdXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgZXJyb3JMb2coWydFcnJvciBpbiBmaW5kTWFueTogJywgZXJyb3JdKVxuICAgICAgICAgIHJldHVybiBbXSBhcyBUW11cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGFzeW5jIHVwZGF0ZTxUPihkYXRhOiB7IG1vZGVsOiBzdHJpbmc7IHdoZXJlOiBXaGVyZVtdOyB1cGRhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0pOiBQcm9taXNlPFQgfCBudWxsPiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKVxuICAgICAgICBjb25zdCB7IG1vZGVsLCB3aGVyZSwgdXBkYXRlIH0gPSBkYXRhXG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb25TbHVnID0gZ2V0TW9kZWxOYW1lKG1vZGVsKVxuICAgICAgICBjb25zdCBwYXlsb2FkV2hlcmUgPSBjb252ZXJ0V2hlcmVDbGF1c2Uoe1xuICAgICAgICAgIGlkVHlwZTogY29uZmlnLmlkVHlwZSxcbiAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICB3aGVyZVxuICAgICAgICB9KVxuICAgICAgICBkZWJ1Z0xvZyhbJ3VwZGF0ZScsIHsgY29sbGVjdGlvblNsdWcsIHVwZGF0ZSB9XSlcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgcmVzb2x2ZVBheWxvYWRDbGllbnQoKVxuICAgICAgICAgIGlmICghY29sbGVjdGlvblNsdWcgfHwgIShjb2xsZWN0aW9uU2x1ZyBpbiBwYXlsb2FkLmNvbGxlY3Rpb25zKSkge1xuICAgICAgICAgICAgY29sbGVjdGlvblNsdWdFcnJvcihtb2RlbClcbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwgPSBudWxsXG4gICAgICAgICAgY29uc3QgaWQgPSBzaW5nbGVJZFF1ZXJ5KHBheWxvYWRXaGVyZSlcbiAgICAgICAgICBpZiAoaWQpIHtcbiAgICAgICAgICAgIGRlYnVnTG9nKFsndXBkYXRlQnlJRCcsIHsgY29sbGVjdGlvblNsdWcsIGlkIH1dKVxuICAgICAgICAgICAgY29uc3QgZG9jID0gYXdhaXQgcGF5bG9hZC51cGRhdGUoe1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgIGRhdGE6IHVwZGF0ZSxcbiAgICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEgsXG4gICAgICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUFkYXB0ZXJDb250ZXh0KHsgbW9kZWwsIG9wZXJhdGlvbjogJ3VwZGF0ZUJ5SUQnIH0pXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgcmVzdWx0ID0gZG9jXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlYnVnTG9nKFsndXBkYXRlQnlXaGVyZScsIHsgY29sbGVjdGlvblNsdWcsIHBheWxvYWRXaGVyZSB9XSlcbiAgICAgICAgICAgIGNvbnN0IGRvYyA9IGF3YWl0IHBheWxvYWQudXBkYXRlKHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgIHdoZXJlOiBwYXlsb2FkV2hlcmUsXG4gICAgICAgICAgICAgIGRhdGE6IHVwZGF0ZSxcbiAgICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEgsXG4gICAgICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUFkYXB0ZXJDb250ZXh0KHtcbiAgICAgICAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb246ICd1cGRhdGVCeVdoZXJlJ1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHJlc3VsdCA9IGRvYy5kb2NzWzBdXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkUmVzdWx0ID0gdHJhbnNmb3JtT3V0cHV0PHR5cGVvZiByZXN1bHQgfCBudWxsPih7XG4gICAgICAgICAgICBkb2M6IHJlc3VsdCxcbiAgICAgICAgICAgIG1vZGVsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBkZWJ1Z0xvZyhbXG4gICAgICAgICAgICAndXBkYXRlIHJlc3VsdCcsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICB0cmFuc2Zvcm1lZFJlc3VsdCxcbiAgICAgICAgICAgICAgZHVyYXRpb246IGAke0RhdGUubm93KCkgLSBzdGFydH1tc2BcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdKVxuICAgICAgICAgIHJldHVybiB0cmFuc2Zvcm1lZFJlc3VsdCBhcyBUXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgZXJyb3JMb2coWydFcnJvciBpbiB1cGRhdGU6ICcsIGVycm9yXSlcbiAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgYXN5bmMgdXBkYXRlTWFueShkYXRhOiB7IG1vZGVsOiBzdHJpbmc7IHdoZXJlOiBXaGVyZVtdOyB1cGRhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICBjb25zdCBzdGFydCA9IERhdGUubm93KClcbiAgICAgICAgY29uc3QgeyBtb2RlbCwgd2hlcmUsIHVwZGF0ZSB9ID0gZGF0YVxuICAgICAgICBjb25zdCBjb2xsZWN0aW9uU2x1ZyA9IGdldE1vZGVsTmFtZShtb2RlbClcbiAgICAgICAgY29uc3QgcGF5bG9hZFdoZXJlID0gY29udmVydFdoZXJlQ2xhdXNlKHtcbiAgICAgICAgICBpZFR5cGU6IGNvbmZpZy5pZFR5cGUsXG4gICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgd2hlcmVcbiAgICAgICAgfSlcbiAgICAgICAgZGVidWdMb2coWyd1cGRhdGVNYW55JywgeyBjb2xsZWN0aW9uU2x1ZywgcGF5bG9hZFdoZXJlLCB1cGRhdGUgfV0pXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IHJlc29sdmVQYXlsb2FkQ2xpZW50KClcbiAgICAgICAgICBpZiAoIWNvbGxlY3Rpb25TbHVnIHx8ICEoY29sbGVjdGlvblNsdWcgaW4gcGF5bG9hZC5jb2xsZWN0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnRXJyb3IobW9kZWwpXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHsgZG9jczogdXBkYXRlUmVzdWx0IH0gPSBhd2FpdCBwYXlsb2FkLnVwZGF0ZSh7XG4gICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgIHdoZXJlOiBwYXlsb2FkV2hlcmUsXG4gICAgICAgICAgICBkYXRhOiB1cGRhdGUsXG4gICAgICAgICAgICBkZXB0aDogUEFZTE9BRF9RVUVSWV9ERVBUSCxcbiAgICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUFkYXB0ZXJDb250ZXh0KHsgbW9kZWwsIG9wZXJhdGlvbjogJ3VwZGF0ZU1hbnknIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgICBkZWJ1Z0xvZyhbXG4gICAgICAgICAgICAndXBkYXRlTWFueSByZXN1bHQnLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgcmVzdWx0OiB1cGRhdGVSZXN1bHQsXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiBgJHtEYXRlLm5vdygpIC0gc3RhcnR9bXNgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSlcbiAgICAgICAgICByZXR1cm4gdXBkYXRlUmVzdWx0Py5sZW5ndGggfHwgMFxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGVycm9yTG9nKFsnRXJyb3IgaW4gdXBkYXRlTWFueTogJywgZXJyb3JdKVxuICAgICAgICAgIHJldHVybiAwXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBhc3luYyBkZWxldGUoZGF0YTogeyBtb2RlbDogc3RyaW5nOyB3aGVyZTogV2hlcmVbXSB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKVxuICAgICAgICBjb25zdCB7IG1vZGVsLCB3aGVyZSB9ID0gZGF0YVxuICAgICAgICBjb25zdCBjb2xsZWN0aW9uU2x1ZyA9IGdldE1vZGVsTmFtZShtb2RlbClcbiAgICAgICAgY29uc3QgcGF5bG9hZFdoZXJlID0gY29udmVydFdoZXJlQ2xhdXNlKHtcbiAgICAgICAgICBpZFR5cGU6IGNvbmZpZy5pZFR5cGUsXG4gICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgd2hlcmVcbiAgICAgICAgfSlcbiAgICAgICAgZGVidWdMb2coWydkZWxldGUnLCB7IGNvbGxlY3Rpb25TbHVnIH1dKVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBhd2FpdCByZXNvbHZlUGF5bG9hZENsaWVudCgpXG4gICAgICAgICAgaWYgKCFjb2xsZWN0aW9uU2x1ZyB8fCAhKGNvbGxlY3Rpb25TbHVnIGluIHBheWxvYWQuY29sbGVjdGlvbnMpKSB7XG4gICAgICAgICAgICBjb2xsZWN0aW9uU2x1Z0Vycm9yKG1vZGVsKVxuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgZGVsZXRlUmVzdWx0OiB7XG4gICAgICAgICAgICBkb2M6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsXG4gICAgICAgICAgICBlcnJvcnM6IGFueVtdXG4gICAgICAgICAgfSB8IG51bGwgPSBudWxsXG4gICAgICAgICAgY29uc3QgaWQgPSBzaW5nbGVJZFF1ZXJ5KHBheWxvYWRXaGVyZSlcbiAgICAgICAgICBpZiAoaWQpIHtcbiAgICAgICAgICAgIGRlYnVnTG9nKFsnZGVsZXRlQnlJRCcsIHsgY29sbGVjdGlvblNsdWcsIGlkIH1dKVxuICAgICAgICAgICAgY29uc3QgZG9jID0gYXdhaXQgcGF5bG9hZC5kZWxldGUoe1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgIGRlcHRoOiBQQVlMT0FEX1FVRVJZX0RFUFRILFxuICAgICAgICAgICAgICBjb250ZXh0OiBjcmVhdGVBZGFwdGVyQ29udGV4dCh7IG1vZGVsLCBvcGVyYXRpb246ICdkZWxldGVCeUlEJyB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGRlbGV0ZVJlc3VsdCA9IHsgZG9jLCBlcnJvcnM6IFtdIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVidWdMb2coWydkZWxldGVCeVdoZXJlJywgeyBjb2xsZWN0aW9uU2x1ZywgcGF5bG9hZFdoZXJlIH1dKVxuICAgICAgICAgICAgY29uc3QgZG9jID0gYXdhaXQgcGF5bG9hZC5kZWxldGUoe1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgd2hlcmU6IHBheWxvYWRXaGVyZSxcbiAgICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEgsXG4gICAgICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUFkYXB0ZXJDb250ZXh0KHtcbiAgICAgICAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb246ICdkZWxldGVCeVdoZXJlJ1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGRlbGV0ZVJlc3VsdCA9IHsgZG9jOiBkb2MuZG9jc1swXSwgZXJyb3JzOiBbXSB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlYnVnTG9nKFtcbiAgICAgICAgICAgICdkZWxldGUgcmVzdWx0JyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgIHJlc3VsdDogZGVsZXRlUmVzdWx0LFxuICAgICAgICAgICAgICBkdXJhdGlvbjogYCR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zYFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0pXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgZXJyb3JMb2coWydFcnJvciBpbiBkZWxldGU6ICcsIGVycm9yXSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGFzeW5jIGRlbGV0ZU1hbnkoZGF0YTogeyBtb2RlbDogc3RyaW5nOyB3aGVyZTogV2hlcmVbXSB9KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpXG4gICAgICAgIGNvbnN0IHsgbW9kZWwsIHdoZXJlIH0gPSBkYXRhXG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb25TbHVnID0gZ2V0TW9kZWxOYW1lKG1vZGVsKVxuICAgICAgICBjb25zdCBwYXlsb2FkV2hlcmUgPSBjb252ZXJ0V2hlcmVDbGF1c2Uoe1xuICAgICAgICAgIGlkVHlwZTogY29uZmlnLmlkVHlwZSxcbiAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICB3aGVyZVxuICAgICAgICB9KVxuICAgICAgICBkZWJ1Z0xvZyhbJ2RlbGV0ZU1hbnknLCB7IGNvbGxlY3Rpb25TbHVnLCBwYXlsb2FkV2hlcmUgfV0pXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IHJlc29sdmVQYXlsb2FkQ2xpZW50KClcbiAgICAgICAgICBpZiAoIWNvbGxlY3Rpb25TbHVnIHx8ICEoY29sbGVjdGlvblNsdWcgaW4gcGF5bG9hZC5jb2xsZWN0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnRXJyb3IobW9kZWwpXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGRlbGV0ZVJlc3VsdCA9IGF3YWl0IHBheWxvYWQuZGVsZXRlKHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgd2hlcmU6IHBheWxvYWRXaGVyZSxcbiAgICAgICAgICAgIGRlcHRoOiBQQVlMT0FEX1FVRVJZX0RFUFRILFxuICAgICAgICAgICAgY29udGV4dDogY3JlYXRlQWRhcHRlckNvbnRleHQoeyBtb2RlbCwgb3BlcmF0aW9uOiAnZGVsZXRlTWFueScgfSlcbiAgICAgICAgICB9KVxuICAgICAgICAgIGRlYnVnTG9nKFtcbiAgICAgICAgICAgICdkZWxldGVNYW55IHJlc3VsdCcsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICByZXN1bHQ6IGRlbGV0ZVJlc3VsdCxcbiAgICAgICAgICAgICAgZHVyYXRpb246IGAke0RhdGUubm93KCkgLSBzdGFydH1tc2BcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdKVxuICAgICAgICAgIHJldHVybiBkZWxldGVSZXN1bHQuZG9jcy5sZW5ndGhcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBlcnJvckxvZyhbJ0Vycm9yIGluIGRlbGV0ZU1hbnk6ICcsIGVycm9yXSlcbiAgICAgICAgICByZXR1cm4gMFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgYXN5bmMgY291bnQoZGF0YTogeyBtb2RlbDogc3RyaW5nOyB3aGVyZT86IFdoZXJlW10gfSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKVxuICAgICAgICBjb25zdCB7IG1vZGVsLCB3aGVyZSB9ID0gZGF0YVxuICAgICAgICBjb25zdCBjb2xsZWN0aW9uU2x1ZyA9IGdldE1vZGVsTmFtZShtb2RlbClcbiAgICAgICAgY29uc3QgcGF5bG9hZFdoZXJlID0gY29udmVydFdoZXJlQ2xhdXNlKHtcbiAgICAgICAgICBpZFR5cGU6IGNvbmZpZy5pZFR5cGUsXG4gICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgd2hlcmVcbiAgICAgICAgfSlcbiAgICAgICAgZGVidWdMb2coWydjb3VudCcsIHsgY29sbGVjdGlvblNsdWcsIHBheWxvYWRXaGVyZSB9XSlcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgcmVzb2x2ZVBheWxvYWRDbGllbnQoKVxuICAgICAgICAgIGlmICghY29sbGVjdGlvblNsdWcgfHwgIShjb2xsZWN0aW9uU2x1ZyBpbiBwYXlsb2FkLmNvbGxlY3Rpb25zKSkge1xuICAgICAgICAgICAgY29sbGVjdGlvblNsdWdFcnJvcihtb2RlbClcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGF5bG9hZC5jb3VudCh7XG4gICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgIHdoZXJlOiBwYXlsb2FkV2hlcmUsXG4gICAgICAgICAgICBkZXB0aDogUEFZTE9BRF9RVUVSWV9ERVBUSCxcbiAgICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUFkYXB0ZXJDb250ZXh0KHsgbW9kZWwsIG9wZXJhdGlvbjogJ2NvdW50JyB9KVxuICAgICAgICAgIH0pXG4gICAgICAgICAgZGVidWdMb2coW1xuICAgICAgICAgICAgJ2NvdW50IHJlc3VsdCcsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICByZXN1bHQ6IHsgdG90YWxEb2NzOiByZXN1bHQudG90YWxEb2NzIH0sXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiBgJHtEYXRlLm5vdygpIC0gc3RhcnR9bXNgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSlcbiAgICAgICAgICByZXR1cm4gcmVzdWx0LnRvdGFsRG9jc1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGVycm9yTG9nKFsnRXJyb3IgaW4gY291bnQ6ICcsIGVycm9yXSlcbiAgICAgICAgICByZXR1cm4gMFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgY3JlYXRlU2NoZW1hOiBhc3luYyAob3B0aW9ucywgZmlsZSkgPT4ge1xuICAgICAgICBjb25zdCBzY2hlbWFDb2RlID0gYXdhaXQgZ2VuZXJhdGVTY2hlbWEob3B0aW9ucylcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb2RlOiBzY2hlbWFDb2RlLFxuICAgICAgICAgIHBhdGg6IGZpbGUgfHwgJ3NjaGVtYS50cycsXG4gICAgICAgICAgYXBwZW5kOiBmYWxzZSxcbiAgICAgICAgICBvdmVyd3JpdGU6IHRydWVcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgZW5hYmxlRGVidWdMb2dzOiBjb25maWcuZW5hYmxlRGVidWdMb2dzLFxuICAgICAgICBpZFR5cGU6IGNvbmZpZy5pZFR5cGVcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHsgZ2VuZXJhdGVTY2hlbWEsIHBheWxvYWRBZGFwdGVyIH1cbiJdLCJuYW1lcyI6WyJCZXR0ZXJBdXRoRXJyb3IiLCJnZW5lcmF0ZVNjaGVtYSIsImNyZWF0ZVRyYW5zZm9ybSIsIkJFVFRFUl9BVVRIX0NPTlRFWFRfS0VZIiwiUEFZTE9BRF9RVUVSWV9ERVBUSCIsInBheWxvYWRBZGFwdGVyIiwicGF5bG9hZENsaWVudCIsImNvbmZpZyIsImRlYnVnTG9nIiwibWVzc2FnZSIsImVuYWJsZURlYnVnTG9ncyIsImNvbnNvbGUiLCJsb2ciLCJlcnJvckxvZyIsImVycm9yIiwiY29sbGVjdGlvblNsdWdFcnJvciIsIm1vZGVsIiwiY3JlYXRlQWRhcHRlckNvbnRleHQiLCJkYXRhIiwicmVzb2x2ZVBheWxvYWRDbGllbnQiLCJwYXlsb2FkIiwiY3VzdG9tIiwiaGFzQmV0dGVyQXV0aFBsdWdpbiIsIm9wdGlvbnMiLCJ0cmFuc2Zvcm1JbnB1dCIsInRyYW5zZm9ybU91dHB1dCIsImNvbnZlcnRXaGVyZUNsYXVzZSIsImNvbnZlcnRTZWxlY3QiLCJjb252ZXJ0U29ydCIsImdldE1vZGVsTmFtZSIsInNpbmdsZUlkUXVlcnkiLCJtdWx0aXBsZUlkc1F1ZXJ5IiwiaWQiLCJjcmVhdGUiLCJzdGFydCIsIkRhdGUiLCJub3ciLCJ2YWx1ZXMiLCJzZWxlY3QiLCJjb2xsZWN0aW9uU2x1ZyIsInRyYW5zZm9ybWVkIiwiYWN0aW9uIiwiaWRUeXBlIiwiY29sbGVjdGlvbnMiLCJyZXN1bHQiLCJjb2xsZWN0aW9uIiwiY29udGV4dCIsIm9wZXJhdGlvbiIsImRlcHRoIiwidHJhbnNmb3JtZWRSZXN1bHQiLCJkb2MiLCJkdXJhdGlvbiIsImZpbmRPbmUiLCJ3aGVyZSIsInBheWxvYWRXaGVyZSIsImZpbmRCeUlEIiwiZG9jcyIsImZpbmQiLCJsaW1pdCIsImZpbmRNYW55Iiwic29ydEJ5Iiwib2Zmc2V0IiwibXVsdGlwbGVJZHMiLCJzaW5nbGVJZCIsImxlbmd0aCIsImlkcyIsInJlcyIsInRvdGFsRG9jcyIsInB1c2giLCJwYWdlIiwiTWF0aCIsImZsb29yIiwic29ydCIsIm1hcCIsInVwZGF0ZSIsInVwZGF0ZU1hbnkiLCJ1cGRhdGVSZXN1bHQiLCJkZWxldGUiLCJkZWxldGVSZXN1bHQiLCJlcnJvcnMiLCJkZWxldGVNYW55IiwiY291bnQiLCJjcmVhdGVTY2hlbWEiLCJmaWxlIiwic2NoZW1hQ29kZSIsImNvZGUiLCJwYXRoIiwiYXBwZW5kIiwib3ZlcndyaXRlIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxlQUFlLFFBQVEsY0FBYTtBQUU3QyxTQUFTQyxjQUFjLFFBQVEsb0JBQW1CO0FBQ2xELFNBQVNDLGVBQWUsUUFBUSxjQUFhO0FBRzdDLE9BQU8sTUFBTUMsMEJBQTBCLHFCQUFvQjtBQUMzRCxNQUFNQyxzQkFBc0I7QUFFNUIsTUFBTUMsaUJBQWlDLENBQUNDLGVBQWVDO0lBQ3JELFNBQVNDLFNBQVNDLE9BQWM7UUFDOUIsSUFBSUYsT0FBT0csZUFBZSxFQUFFO1lBQzFCQyxRQUFRQyxHQUFHLENBQUMsMkJBQTJCSDtRQUN6QztJQUNGO0lBRUEsU0FBU0ksU0FBU0osT0FBYztRQUM5QkUs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
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import type { BetterAuthOptions, Where } from
|
|
2
|
-
import type { CollectionSlug, Where as PayloadWhere } from
|
|
1
|
+
import type { BetterAuthOptions, Where } from 'better-auth';
|
|
2
|
+
import type { CollectionSlug, Where as PayloadWhere } from 'payload';
|
|
3
3
|
export declare const createTransform: (options: BetterAuthOptions, enableDebugLogs: boolean) => {
|
|
4
4
|
getFieldName: (model: string, field: string) => string;
|
|
5
5
|
getModelName: (model: string) => CollectionSlug;
|
|
6
6
|
singleIdQuery: (where: PayloadWhere) => string | number | null;
|
|
7
7
|
multipleIdsQuery: (where: PayloadWhere) => (string | number)[] | null;
|
|
8
|
-
transformInput: ({ data, model, idType, action
|
|
8
|
+
transformInput: ({ data, model, idType, action }: {
|
|
9
9
|
data: Record<string, any>;
|
|
10
10
|
model: string;
|
|
11
11
|
idType: "number" | "text";
|
|
12
12
|
action: "create" | "update";
|
|
13
13
|
}) => Record<string, any>;
|
|
14
|
-
transformOutput: <T extends Record<string, any> | null>({ doc, model
|
|
14
|
+
transformOutput: <T extends Record<string, any> | null>({ doc, model }: {
|
|
15
15
|
doc: T;
|
|
16
16
|
model: string;
|
|
17
17
|
}) => T;
|
|
18
|
-
convertWhereClause: ({ idType, model, where
|
|
18
|
+
convertWhereClause: ({ idType, model, where }: {
|
|
19
19
|
idType: "number" | "text";
|
|
20
20
|
model: string;
|
|
21
21
|
where?: Where[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/better-auth/adapter/transform/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/better-auth/adapter/transform/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,SAAS,CAAA;AAEpE,eAAO,MAAM,eAAe,GAAI,SAAS,iBAAiB,EAAE,iBAAiB,OAAO;0BAiBrD,MAAM,SAAS,MAAM;0BARrB,MAAM,KAAG,cAAc;2BA8BtB,YAAY;8BAoCT,YAAY;sDA2O1C;QACD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QACzB,KAAK,EAAE,MAAM,CAAA;QACb,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAA;QACzB,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAA;KAC5B;sBA0BwB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,kBAAkB;QAAE,GAAG,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAG,CAAC;mDAyGtD;QAAE,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAA;KAAE,KAAG,YAAY;2BAoDpG,MAAM,WAAW,MAAM,EAAE;yBAK3B,MAAM,WAAW;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE;CAgB1F,CAAA"}
|