@atlasauth/cli 0.25.0 → 0.26.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/CHANGELOG.md +37 -0
- package/README.md +26 -5
- package/dist/args.d.ts +631 -0
- package/dist/args.js +304 -0
- package/dist/args.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +19 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/actions-gallery.d.ts +8 -0
- package/dist/commands/actions-gallery.js +197 -0
- package/dist/commands/actions-gallery.js.map +1 -0
- package/dist/commands/actions.d.ts +13 -0
- package/dist/commands/actions.js +135 -0
- package/dist/commands/actions.js.map +1 -0
- package/dist/commands/admin.d.ts +49 -0
- package/dist/commands/admin.js +353 -0
- package/dist/commands/admin.js.map +1 -0
- package/dist/commands/api-keys.d.ts +4 -0
- package/dist/commands/api-keys.js +96 -0
- package/dist/commands/api-keys.js.map +1 -0
- package/dist/commands/auth.d.ts +25 -0
- package/dist/commands/auth.js +102 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/config.d.ts +128 -0
- package/dist/commands/config.js +1822 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/csp.d.ts +32 -0
- package/dist/commands/csp.js +180 -0
- package/dist/commands/csp.js.map +1 -0
- package/dist/commands/dev.d.ts +8 -0
- package/dist/commands/dev.js +84 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/doctor-scan.d.ts +27 -0
- package/dist/commands/doctor-scan.js +221 -0
- package/dist/commands/doctor-scan.js.map +1 -0
- package/dist/commands/fga.d.ts +10 -0
- package/dist/commands/fga.js +146 -0
- package/dist/commands/fga.js.map +1 -0
- package/dist/commands/golive.d.ts +40 -0
- package/dist/commands/golive.js +297 -0
- package/dist/commands/golive.js.map +1 -0
- package/dist/commands/id-accounts.d.ts +13 -0
- package/dist/commands/id-accounts.js +195 -0
- package/dist/commands/id-accounts.js.map +1 -0
- package/dist/commands/import-better-auth.d.ts +3 -0
- package/dist/commands/import-better-auth.js +164 -0
- package/dist/commands/import-better-auth.js.map +1 -0
- package/dist/commands/import-jsonl.d.ts +50 -0
- package/dist/commands/import-jsonl.js +252 -0
- package/dist/commands/import-jsonl.js.map +1 -0
- package/dist/commands/import.d.ts +3 -0
- package/dist/commands/import.js +133 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/info.d.ts +75 -0
- package/dist/commands/info.js +362 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/init-next.d.ts +4 -0
- package/dist/commands/init-next.js +86 -0
- package/dist/commands/init-next.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.js +525 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/integrations.d.ts +8 -0
- package/dist/commands/integrations.js +112 -0
- package/dist/commands/integrations.js.map +1 -0
- package/dist/commands/listen.d.ts +17 -0
- package/dist/commands/listen.js +223 -0
- package/dist/commands/listen.js.map +1 -0
- package/dist/commands/mcp.d.ts +38 -0
- package/dist/commands/mcp.js +111 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/migrate.d.ts +16 -0
- package/dist/commands/migrate.js +114 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/move-origin.d.ts +11 -0
- package/dist/commands/move-origin.js +95 -0
- package/dist/commands/move-origin.js.map +1 -0
- package/dist/commands/operator.d.ts +18 -0
- package/dist/commands/operator.js +238 -0
- package/dist/commands/operator.js.map +1 -0
- package/dist/commands/orgs.d.ts +4 -0
- package/dist/commands/orgs.js +72 -0
- package/dist/commands/orgs.js.map +1 -0
- package/dist/commands/pages.d.ts +14 -0
- package/dist/commands/pages.js +113 -0
- package/dist/commands/pages.js.map +1 -0
- package/dist/commands/partner-platforms.d.ts +10 -0
- package/dist/commands/partner-platforms.js +157 -0
- package/dist/commands/partner-platforms.js.map +1 -0
- package/dist/commands/project-commands.d.ts +38 -0
- package/dist/commands/project-commands.js +431 -0
- package/dist/commands/project-commands.js.map +1 -0
- package/dist/commands/referrals.d.ts +69 -0
- package/dist/commands/referrals.js +1056 -0
- package/dist/commands/referrals.js.map +1 -0
- package/dist/commands/resources.d.ts +44 -0
- package/dist/commands/resources.js +234 -0
- package/dist/commands/resources.js.map +1 -0
- package/dist/commands/sessions.d.ts +4 -0
- package/dist/commands/sessions.js +28 -0
- package/dist/commands/sessions.js.map +1 -0
- package/dist/commands/setup-guide.d.ts +3 -0
- package/dist/commands/setup-guide.js +38 -0
- package/dist/commands/setup-guide.js.map +1 -0
- package/dist/commands/shared.d.ts +38 -0
- package/dist/commands/shared.js +69 -0
- package/dist/commands/shared.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.js +77 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/users.d.ts +4 -0
- package/dist/commands/users.js +111 -0
- package/dist/commands/users.js.map +1 -0
- package/dist/commands/webhooks.d.ts +34 -0
- package/dist/commands/webhooks.js +301 -0
- package/dist/commands/webhooks.js.map +1 -0
- package/dist/config-http.d.ts +38 -0
- package/dist/config-http.js +70 -0
- package/dist/config-http.js.map +1 -0
- package/dist/config.d.ts +64 -0
- package/dist/config.js +69 -0
- package/dist/config.js.map +1 -0
- package/dist/context.d.ts +89 -0
- package/dist/context.js +32 -0
- package/dist/context.js.map +1 -0
- package/dist/define-config.d.ts +9 -0
- package/dist/define-config.js +8 -0
- package/dist/define-config.js.map +1 -0
- package/dist/errors.d.ts +15 -0
- package/dist/errors.js +25 -0
- package/dist/errors.js.map +1 -0
- package/dist/help.d.ts +8 -0
- package/dist/help.js +926 -0
- package/dist/help.js.map +1 -0
- package/dist/import/csv.d.ts +6 -0
- package/dist/import/csv.js +63 -0
- package/dist/import/csv.js.map +1 -0
- package/dist/import/vendors.d.ts +57 -0
- package/dist/import/vendors.js +568 -0
- package/dist/import/vendors.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.js +81 -0
- package/dist/index.js.map +1 -0
- package/dist/io.d.ts +21 -0
- package/dist/io.js +28 -0
- package/dist/io.js.map +1 -0
- package/dist/migrate/appwrite/plugin.d.ts +2 -0
- package/dist/migrate/appwrite/plugin.js +103 -0
- package/dist/migrate/appwrite/plugin.js.map +1 -0
- package/dist/migrate/auth0/plugin.d.ts +2 -0
- package/dist/migrate/auth0/plugin.js +126 -0
- package/dist/migrate/auth0/plugin.js.map +1 -0
- package/dist/migrate/authentik/plugin.d.ts +2 -0
- package/dist/migrate/authentik/plugin.js +135 -0
- package/dist/migrate/authentik/plugin.js.map +1 -0
- package/dist/migrate/azure-ad-b2c/plugin.d.ts +8 -0
- package/dist/migrate/azure-ad-b2c/plugin.js +165 -0
- package/dist/migrate/azure-ad-b2c/plugin.js.map +1 -0
- package/dist/migrate/better-auth/integration.d.ts +59 -0
- package/dist/migrate/better-auth/integration.js +81 -0
- package/dist/migrate/better-auth/integration.js.map +1 -0
- package/dist/migrate/better-auth/orchestrator.d.ts +43 -0
- package/dist/migrate/better-auth/orchestrator.js +525 -0
- package/dist/migrate/better-auth/orchestrator.js.map +1 -0
- package/dist/migrate/better-auth/output.d.ts +20 -0
- package/dist/migrate/better-auth/output.js +146 -0
- package/dist/migrate/better-auth/output.js.map +1 -0
- package/dist/migrate/better-auth/translate.d.ts +77 -0
- package/dist/migrate/better-auth/translate.js +1989 -0
- package/dist/migrate/better-auth/translate.js.map +1 -0
- package/dist/migrate/clerk/plugin.d.ts +2 -0
- package/dist/migrate/clerk/plugin.js +76 -0
- package/dist/migrate/clerk/plugin.js.map +1 -0
- package/dist/migrate/cognito/plugin.d.ts +5 -0
- package/dist/migrate/cognito/plugin.js +170 -0
- package/dist/migrate/cognito/plugin.js.map +1 -0
- package/dist/migrate/corbado/plugin.d.ts +2 -0
- package/dist/migrate/corbado/plugin.js +63 -0
- package/dist/migrate/corbado/plugin.js.map +1 -0
- package/dist/migrate/descope/plugin.d.ts +2 -0
- package/dist/migrate/descope/plugin.js +83 -0
- package/dist/migrate/descope/plugin.js.map +1 -0
- package/dist/migrate/entra-external-id/plugin.d.ts +8 -0
- package/dist/migrate/entra-external-id/plugin.js +12 -0
- package/dist/migrate/entra-external-id/plugin.js.map +1 -0
- package/dist/migrate/export/appwrite-config.d.ts +28 -0
- package/dist/migrate/export/appwrite-config.js +170 -0
- package/dist/migrate/export/appwrite-config.js.map +1 -0
- package/dist/migrate/export/appwrite.d.ts +51 -0
- package/dist/migrate/export/appwrite.js +288 -0
- package/dist/migrate/export/appwrite.js.map +1 -0
- package/dist/migrate/export/auth0-config.d.ts +29 -0
- package/dist/migrate/export/auth0-config.js +249 -0
- package/dist/migrate/export/auth0-config.js.map +1 -0
- package/dist/migrate/export/auth0.d.ts +62 -0
- package/dist/migrate/export/auth0.js +575 -0
- package/dist/migrate/export/auth0.js.map +1 -0
- package/dist/migrate/export/authentik-config.d.ts +45 -0
- package/dist/migrate/export/authentik-config.js +357 -0
- package/dist/migrate/export/authentik-config.js.map +1 -0
- package/dist/migrate/export/authentik.d.ts +110 -0
- package/dist/migrate/export/authentik.js +838 -0
- package/dist/migrate/export/authentik.js.map +1 -0
- package/dist/migrate/export/azure-config.d.ts +58 -0
- package/dist/migrate/export/azure-config.js +344 -0
- package/dist/migrate/export/azure-config.js.map +1 -0
- package/dist/migrate/export/azure.d.ts +85 -0
- package/dist/migrate/export/azure.js +373 -0
- package/dist/migrate/export/azure.js.map +1 -0
- package/dist/migrate/export/clerk-config.d.ts +26 -0
- package/dist/migrate/export/clerk-config.js +227 -0
- package/dist/migrate/export/clerk-config.js.map +1 -0
- package/dist/migrate/export/clerk.d.ts +46 -0
- package/dist/migrate/export/clerk.js +486 -0
- package/dist/migrate/export/clerk.js.map +1 -0
- package/dist/migrate/export/cognito-config.d.ts +25 -0
- package/dist/migrate/export/cognito-config.js +273 -0
- package/dist/migrate/export/cognito-config.js.map +1 -0
- package/dist/migrate/export/cognito.d.ts +103 -0
- package/dist/migrate/export/cognito.js +441 -0
- package/dist/migrate/export/cognito.js.map +1 -0
- package/dist/migrate/export/corbado-config.d.ts +20 -0
- package/dist/migrate/export/corbado-config.js +63 -0
- package/dist/migrate/export/corbado-config.js.map +1 -0
- package/dist/migrate/export/corbado.d.ts +37 -0
- package/dist/migrate/export/corbado.js +132 -0
- package/dist/migrate/export/corbado.js.map +1 -0
- package/dist/migrate/export/descope.d.ts +35 -0
- package/dist/migrate/export/descope.js +208 -0
- package/dist/migrate/export/descope.js.map +1 -0
- package/dist/migrate/export/fake-vendor.test-helper.d.ts +27 -0
- package/dist/migrate/export/fake-vendor.test-helper.js +41 -0
- package/dist/migrate/export/fake-vendor.test-helper.js.map +1 -0
- package/dist/migrate/export/firebase-config.d.ts +24 -0
- package/dist/migrate/export/firebase-config.js +215 -0
- package/dist/migrate/export/firebase-config.js.map +1 -0
- package/dist/migrate/export/firebase.d.ts +102 -0
- package/dist/migrate/export/firebase.js +464 -0
- package/dist/migrate/export/firebase.js.map +1 -0
- package/dist/migrate/export/frameworks/app-users.d.ts +42 -0
- package/dist/migrate/export/frameworks/app-users.js +161 -0
- package/dist/migrate/export/frameworks/app-users.js.map +1 -0
- package/dist/migrate/export/frameworks/authjs.d.ts +41 -0
- package/dist/migrate/export/frameworks/authjs.js +146 -0
- package/dist/migrate/export/frameworks/authjs.js.map +1 -0
- package/dist/migrate/export/frameworks/devise.d.ts +39 -0
- package/dist/migrate/export/frameworks/devise.js +218 -0
- package/dist/migrate/export/frameworks/devise.js.map +1 -0
- package/dist/migrate/export/frameworks/django.d.ts +45 -0
- package/dist/migrate/export/frameworks/django.js +315 -0
- package/dist/migrate/export/frameworks/django.js.map +1 -0
- package/dist/migrate/export/frameworks/lucia.d.ts +42 -0
- package/dist/migrate/export/frameworks/lucia.js +263 -0
- package/dist/migrate/export/frameworks/lucia.js.map +1 -0
- package/dist/migrate/export/frameworks/tables.d.ts +90 -0
- package/dist/migrate/export/frameworks/tables.js +325 -0
- package/dist/migrate/export/frameworks/tables.js.map +1 -0
- package/dist/migrate/export/frameworks/webauthn.d.ts +25 -0
- package/dist/migrate/export/frameworks/webauthn.js +130 -0
- package/dist/migrate/export/frameworks/webauthn.js.map +1 -0
- package/dist/migrate/export/frontegg-config.d.ts +29 -0
- package/dist/migrate/export/frontegg-config.js +238 -0
- package/dist/migrate/export/frontegg-config.js.map +1 -0
- package/dist/migrate/export/frontegg.d.ts +67 -0
- package/dist/migrate/export/frontegg.js +410 -0
- package/dist/migrate/export/frontegg.js.map +1 -0
- package/dist/migrate/export/fusionauth-config.d.ts +26 -0
- package/dist/migrate/export/fusionauth-config.js +226 -0
- package/dist/migrate/export/fusionauth-config.js.map +1 -0
- package/dist/migrate/export/fusionauth.d.ts +99 -0
- package/dist/migrate/export/fusionauth.js +642 -0
- package/dist/migrate/export/fusionauth.js.map +1 -0
- package/dist/migrate/export/hanko-config.d.ts +27 -0
- package/dist/migrate/export/hanko-config.js +265 -0
- package/dist/migrate/export/hanko-config.js.map +1 -0
- package/dist/migrate/export/hanko.d.ts +52 -0
- package/dist/migrate/export/hanko.js +605 -0
- package/dist/migrate/export/hanko.js.map +1 -0
- package/dist/migrate/export/keycloak-config.d.ts +19 -0
- package/dist/migrate/export/keycloak-config.js +219 -0
- package/dist/migrate/export/keycloak-config.js.map +1 -0
- package/dist/migrate/export/keycloak.d.ts +155 -0
- package/dist/migrate/export/keycloak.js +878 -0
- package/dist/migrate/export/keycloak.js.map +1 -0
- package/dist/migrate/export/kinde-descope-config.d.ts +38 -0
- package/dist/migrate/export/kinde-descope-config.js +172 -0
- package/dist/migrate/export/kinde-descope-config.js.map +1 -0
- package/dist/migrate/export/kinde.d.ts +57 -0
- package/dist/migrate/export/kinde.js +333 -0
- package/dist/migrate/export/kinde.js.map +1 -0
- package/dist/migrate/export/ldap.d.ts +53 -0
- package/dist/migrate/export/ldap.js +277 -0
- package/dist/migrate/export/ldap.js.map +1 -0
- package/dist/migrate/export/logto-config.d.ts +27 -0
- package/dist/migrate/export/logto-config.js +264 -0
- package/dist/migrate/export/logto-config.js.map +1 -0
- package/dist/migrate/export/logto.d.ts +150 -0
- package/dist/migrate/export/logto.js +809 -0
- package/dist/migrate/export/logto.js.map +1 -0
- package/dist/migrate/export/magic-config.d.ts +14 -0
- package/dist/migrate/export/magic-config.js +28 -0
- package/dist/migrate/export/magic-config.js.map +1 -0
- package/dist/migrate/export/magic.d.ts +31 -0
- package/dist/migrate/export/magic.js +93 -0
- package/dist/migrate/export/magic.js.map +1 -0
- package/dist/migrate/export/mini-yaml.d.ts +19 -0
- package/dist/migrate/export/mini-yaml.js +581 -0
- package/dist/migrate/export/mini-yaml.js.map +1 -0
- package/dist/migrate/export/nhost-config.d.ts +26 -0
- package/dist/migrate/export/nhost-config.js +360 -0
- package/dist/migrate/export/nhost-config.js.map +1 -0
- package/dist/migrate/export/nhost.d.ts +64 -0
- package/dist/migrate/export/nhost.js +304 -0
- package/dist/migrate/export/nhost.js.map +1 -0
- package/dist/migrate/export/okta-config.d.ts +30 -0
- package/dist/migrate/export/okta-config.js +205 -0
- package/dist/migrate/export/okta-config.js.map +1 -0
- package/dist/migrate/export/okta.d.ts +43 -0
- package/dist/migrate/export/okta.js +337 -0
- package/dist/migrate/export/okta.js.map +1 -0
- package/dist/migrate/export/onelogin.d.ts +22 -0
- package/dist/migrate/export/onelogin.js +123 -0
- package/dist/migrate/export/onelogin.js.map +1 -0
- package/dist/migrate/export/ory-config.d.ts +58 -0
- package/dist/migrate/export/ory-config.js +451 -0
- package/dist/migrate/export/ory-config.js.map +1 -0
- package/dist/migrate/export/ory.d.ts +81 -0
- package/dist/migrate/export/ory.js +555 -0
- package/dist/migrate/export/ory.js.map +1 -0
- package/dist/migrate/export/password-detect.d.ts +29 -0
- package/dist/migrate/export/password-detect.js +81 -0
- package/dist/migrate/export/password-detect.js.map +1 -0
- package/dist/migrate/export/pingone.d.ts +36 -0
- package/dist/migrate/export/pingone.js +218 -0
- package/dist/migrate/export/pingone.js.map +1 -0
- package/dist/migrate/export/plugin-kit.d.ts +25 -0
- package/dist/migrate/export/plugin-kit.js +82 -0
- package/dist/migrate/export/plugin-kit.js.map +1 -0
- package/dist/migrate/export/pocketbase-config.d.ts +28 -0
- package/dist/migrate/export/pocketbase-config.js +180 -0
- package/dist/migrate/export/pocketbase-config.js.map +1 -0
- package/dist/migrate/export/pocketbase.d.ts +52 -0
- package/dist/migrate/export/pocketbase.js +243 -0
- package/dist/migrate/export/pocketbase.js.map +1 -0
- package/dist/migrate/export/project-files.d.ts +15 -0
- package/dist/migrate/export/project-files.js +43 -0
- package/dist/migrate/export/project-files.js.map +1 -0
- package/dist/migrate/export/propelauth-config.d.ts +18 -0
- package/dist/migrate/export/propelauth-config.js +58 -0
- package/dist/migrate/export/propelauth-config.js.map +1 -0
- package/dist/migrate/export/propelauth-harness.test-helper.d.ts +62 -0
- package/dist/migrate/export/propelauth-harness.test-helper.js +109 -0
- package/dist/migrate/export/propelauth-harness.test-helper.js.map +1 -0
- package/dist/migrate/export/propelauth.d.ts +48 -0
- package/dist/migrate/export/propelauth.js +255 -0
- package/dist/migrate/export/propelauth.js.map +1 -0
- package/dist/migrate/export/record-set.d.ts +44 -0
- package/dist/migrate/export/record-set.js +98 -0
- package/dist/migrate/export/record-set.js.map +1 -0
- package/dist/migrate/export/source-lines.d.ts +17 -0
- package/dist/migrate/export/source-lines.js +43 -0
- package/dist/migrate/export/source-lines.js.map +1 -0
- package/dist/migrate/export/sso-metadata.d.ts +47 -0
- package/dist/migrate/export/sso-metadata.js +180 -0
- package/dist/migrate/export/sso-metadata.js.map +1 -0
- package/dist/migrate/export/stytch-config.d.ts +22 -0
- package/dist/migrate/export/stytch-config.js +102 -0
- package/dist/migrate/export/stytch-config.js.map +1 -0
- package/dist/migrate/export/stytch.d.ts +68 -0
- package/dist/migrate/export/stytch.js +510 -0
- package/dist/migrate/export/stytch.js.map +1 -0
- package/dist/migrate/export/supabase-config.d.ts +48 -0
- package/dist/migrate/export/supabase-config.js +408 -0
- package/dist/migrate/export/supabase-config.js.map +1 -0
- package/dist/migrate/export/supabase.d.ts +86 -0
- package/dist/migrate/export/supabase.js +524 -0
- package/dist/migrate/export/supabase.js.map +1 -0
- package/dist/migrate/export/supertokens-config.d.ts +20 -0
- package/dist/migrate/export/supertokens-config.js +150 -0
- package/dist/migrate/export/supertokens-config.js.map +1 -0
- package/dist/migrate/export/supertokens.d.ts +125 -0
- package/dist/migrate/export/supertokens.js +464 -0
- package/dist/migrate/export/supertokens.js.map +1 -0
- package/dist/migrate/export/table.d.ts +35 -0
- package/dist/migrate/export/table.js +248 -0
- package/dist/migrate/export/table.js.map +1 -0
- package/dist/migrate/export/translate-kit.d.ts +46 -0
- package/dist/migrate/export/translate-kit.js +148 -0
- package/dist/migrate/export/translate-kit.js.map +1 -0
- package/dist/migrate/export/userfront-config.d.ts +15 -0
- package/dist/migrate/export/userfront-config.js +49 -0
- package/dist/migrate/export/userfront-config.js.map +1 -0
- package/dist/migrate/export/userfront.d.ts +38 -0
- package/dist/migrate/export/userfront.js +189 -0
- package/dist/migrate/export/userfront.js.map +1 -0
- package/dist/migrate/export/vendor-http.d.ts +46 -0
- package/dist/migrate/export/vendor-http.js +138 -0
- package/dist/migrate/export/vendor-http.js.map +1 -0
- package/dist/migrate/export/workos-config.d.ts +23 -0
- package/dist/migrate/export/workos-config.js +125 -0
- package/dist/migrate/export/workos-config.js.map +1 -0
- package/dist/migrate/export/workos.d.ts +46 -0
- package/dist/migrate/export/workos.js +272 -0
- package/dist/migrate/export/workos.js.map +1 -0
- package/dist/migrate/export/zip.d.ts +8 -0
- package/dist/migrate/export/zip.js +66 -0
- package/dist/migrate/export/zip.js.map +1 -0
- package/dist/migrate/export/zitadel-config.d.ts +37 -0
- package/dist/migrate/export/zitadel-config.js +279 -0
- package/dist/migrate/export/zitadel-config.js.map +1 -0
- package/dist/migrate/export/zitadel.d.ts +82 -0
- package/dist/migrate/export/zitadel.js +447 -0
- package/dist/migrate/export/zitadel.js.map +1 -0
- package/dist/migrate/firebase/plugin.d.ts +2 -0
- package/dist/migrate/firebase/plugin.js +152 -0
- package/dist/migrate/firebase/plugin.js.map +1 -0
- package/dist/migrate/framework/builtins.d.ts +2 -0
- package/dist/migrate/framework/builtins.js +52 -0
- package/dist/migrate/framework/builtins.js.map +1 -0
- package/dist/migrate/framework/commands.d.ts +20 -0
- package/dist/migrate/framework/commands.js +58 -0
- package/dist/migrate/framework/commands.js.map +1 -0
- package/dist/migrate/framework/custom.d.ts +12 -0
- package/dist/migrate/framework/custom.js +96 -0
- package/dist/migrate/framework/custom.js.map +1 -0
- package/dist/migrate/framework/orchestrator.d.ts +113 -0
- package/dist/migrate/framework/orchestrator.js +532 -0
- package/dist/migrate/framework/orchestrator.js.map +1 -0
- package/dist/migrate/framework/plugin.d.ts +167 -0
- package/dist/migrate/framework/plugin.js +3 -0
- package/dist/migrate/framework/plugin.js.map +1 -0
- package/dist/migrate/framework/registry.d.ts +11 -0
- package/dist/migrate/framework/registry.js +44 -0
- package/dist/migrate/framework/registry.js.map +1 -0
- package/dist/migrate/framework/report.d.ts +17 -0
- package/dist/migrate/framework/report.js +103 -0
- package/dist/migrate/framework/report.js.map +1 -0
- package/dist/migrate/frameworks/plugins.d.ts +29 -0
- package/dist/migrate/frameworks/plugins.js +402 -0
- package/dist/migrate/frameworks/plugins.js.map +1 -0
- package/dist/migrate/frameworks/report.d.ts +92 -0
- package/dist/migrate/frameworks/report.js +207 -0
- package/dist/migrate/frameworks/report.js.map +1 -0
- package/dist/migrate/frameworks/translate-js.d.ts +5 -0
- package/dist/migrate/frameworks/translate-js.js +503 -0
- package/dist/migrate/frameworks/translate-js.js.map +1 -0
- package/dist/migrate/frameworks/translate-rails-django.d.ts +3 -0
- package/dist/migrate/frameworks/translate-rails-django.js +1391 -0
- package/dist/migrate/frameworks/translate-rails-django.js.map +1 -0
- package/dist/migrate/frontegg/plugin.d.ts +2 -0
- package/dist/migrate/frontegg/plugin.js +78 -0
- package/dist/migrate/frontegg/plugin.js.map +1 -0
- package/dist/migrate/fusionauth/plugin.d.ts +2 -0
- package/dist/migrate/fusionauth/plugin.js +109 -0
- package/dist/migrate/fusionauth/plugin.js.map +1 -0
- package/dist/migrate/hanko/plugin.d.ts +2 -0
- package/dist/migrate/hanko/plugin.js +100 -0
- package/dist/migrate/hanko/plugin.js.map +1 -0
- package/dist/migrate/keycloak/plugin.d.ts +2 -0
- package/dist/migrate/keycloak/plugin.js +148 -0
- package/dist/migrate/keycloak/plugin.js.map +1 -0
- package/dist/migrate/kinde/plugin.d.ts +2 -0
- package/dist/migrate/kinde/plugin.js +105 -0
- package/dist/migrate/kinde/plugin.js.map +1 -0
- package/dist/migrate/ldap/plugin.d.ts +2 -0
- package/dist/migrate/ldap/plugin.js +73 -0
- package/dist/migrate/ldap/plugin.js.map +1 -0
- package/dist/migrate/logto/plugin.d.ts +2 -0
- package/dist/migrate/logto/plugin.js +131 -0
- package/dist/migrate/logto/plugin.js.map +1 -0
- package/dist/migrate/magic/plugin.d.ts +2 -0
- package/dist/migrate/magic/plugin.js +56 -0
- package/dist/migrate/magic/plugin.js.map +1 -0
- package/dist/migrate/nhost/plugin.d.ts +2 -0
- package/dist/migrate/nhost/plugin.js +115 -0
- package/dist/migrate/nhost/plugin.js.map +1 -0
- package/dist/migrate/oidc/plugin.d.ts +2 -0
- package/dist/migrate/oidc/plugin.js +73 -0
- package/dist/migrate/oidc/plugin.js.map +1 -0
- package/dist/migrate/okta/plugin.d.ts +2 -0
- package/dist/migrate/okta/plugin.js +105 -0
- package/dist/migrate/okta/plugin.js.map +1 -0
- package/dist/migrate/onelogin/plugin.d.ts +2 -0
- package/dist/migrate/onelogin/plugin.js +61 -0
- package/dist/migrate/onelogin/plugin.js.map +1 -0
- package/dist/migrate/ory/plugin.d.ts +2 -0
- package/dist/migrate/ory/plugin.js +186 -0
- package/dist/migrate/ory/plugin.js.map +1 -0
- package/dist/migrate/ping-identity/plugin.d.ts +2 -0
- package/dist/migrate/ping-identity/plugin.js +100 -0
- package/dist/migrate/ping-identity/plugin.js.map +1 -0
- package/dist/migrate/pocketbase/plugin.d.ts +2 -0
- package/dist/migrate/pocketbase/plugin.js +99 -0
- package/dist/migrate/pocketbase/plugin.js.map +1 -0
- package/dist/migrate/propelauth/plugin.d.ts +2 -0
- package/dist/migrate/propelauth/plugin.js +65 -0
- package/dist/migrate/propelauth/plugin.js.map +1 -0
- package/dist/migrate/saml/plugin.d.ts +2 -0
- package/dist/migrate/saml/plugin.js +79 -0
- package/dist/migrate/saml/plugin.js.map +1 -0
- package/dist/migrate/stytch/plugin.d.ts +2 -0
- package/dist/migrate/stytch/plugin.js +97 -0
- package/dist/migrate/stytch/plugin.js.map +1 -0
- package/dist/migrate/supabase/plugin.d.ts +2 -0
- package/dist/migrate/supabase/plugin.js +149 -0
- package/dist/migrate/supabase/plugin.js.map +1 -0
- package/dist/migrate/supertokens/plugin.d.ts +2 -0
- package/dist/migrate/supertokens/plugin.js +114 -0
- package/dist/migrate/supertokens/plugin.js.map +1 -0
- package/dist/migrate/user-table/plugin.d.ts +2 -0
- package/dist/migrate/user-table/plugin.js +62 -0
- package/dist/migrate/user-table/plugin.js.map +1 -0
- package/dist/migrate/userfront/plugin.d.ts +2 -0
- package/dist/migrate/userfront/plugin.js +60 -0
- package/dist/migrate/userfront/plugin.js.map +1 -0
- package/dist/migrate/workos/plugin.d.ts +2 -0
- package/dist/migrate/workos/plugin.js +81 -0
- package/dist/migrate/workos/plugin.js.map +1 -0
- package/dist/migrate/zitadel/plugin.d.ts +2 -0
- package/dist/migrate/zitadel/plugin.js +114 -0
- package/dist/migrate/zitadel/plugin.js.map +1 -0
- package/dist/output.d.ts +41 -0
- package/dist/output.js +72 -0
- package/dist/output.js.map +1 -0
- package/dist/project.d.ts +64 -0
- package/dist/project.js +86 -0
- package/dist/project.js.map +1 -0
- package/dist/prompt.d.ts +15 -0
- package/dist/prompt.js +46 -0
- package/dist/prompt.js.map +1 -0
- package/dist/redact.d.ts +41 -0
- package/dist/redact.js +115 -0
- package/dist/redact.js.map +1 -0
- package/dist/run.d.ts +12 -0
- package/dist/run.js +169 -0
- package/dist/run.js.map +1 -0
- package/dist/secrets.d.ts +41 -0
- package/dist/secrets.js +142 -0
- package/dist/secrets.js.map +1 -0
- package/dist/serialize.d.ts +30 -0
- package/dist/serialize.js +131 -0
- package/dist/serialize.js.map +1 -0
- package/dist/version.d.ts +7 -0
- package/dist/version.js +21 -0
- package/dist/version.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,464 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stdBase64 = void 0;
|
|
4
|
+
exports.parseServiceAccount = parseServiceAccount;
|
|
5
|
+
exports.serviceAccountAssertion = serviceAccountAssertion;
|
|
6
|
+
exports.serviceAccountToken = serviceAccountToken;
|
|
7
|
+
exports.firebaseHttp = firebaseHttp;
|
|
8
|
+
exports.fetchHashConfig = fetchHashConfig;
|
|
9
|
+
exports.hashParamsOf = hashParamsOf;
|
|
10
|
+
exports.exportFirebase = exportFirebase;
|
|
11
|
+
exports.mapFirebaseUser = mapFirebaseUser;
|
|
12
|
+
exports.parseFirebaseExport = parseFirebaseExport;
|
|
13
|
+
const node_crypto_1 = require("node:crypto");
|
|
14
|
+
const csv_1 = require("../../import/csv");
|
|
15
|
+
const record_set_1 = require("./record-set");
|
|
16
|
+
const vendor_http_1 = require("./vendor-http");
|
|
17
|
+
const API = 'https://identitytoolkit.googleapis.com';
|
|
18
|
+
const TOKEN_URL = 'https://oauth2.googleapis.com/token';
|
|
19
|
+
const SCOPE = 'https://www.googleapis.com/auth/cloud-platform https://www.googleapis.com/auth/identitytoolkit';
|
|
20
|
+
/** `base64("REDACTED")`: what the API returns for a hash the caller may not read. */
|
|
21
|
+
const REDACTED = 'UkVEQUNURUQ=';
|
|
22
|
+
const PAGE = 1000;
|
|
23
|
+
/** Firebase provider ids → the provider name identity records carry (Atlas's key where one exists). */
|
|
24
|
+
const SOCIAL = {
|
|
25
|
+
'google.com': 'google',
|
|
26
|
+
'facebook.com': 'facebook',
|
|
27
|
+
'twitter.com': 'x',
|
|
28
|
+
'github.com': 'github',
|
|
29
|
+
'apple.com': 'apple',
|
|
30
|
+
'microsoft.com': 'microsoft',
|
|
31
|
+
'linkedin.com': 'linkedin',
|
|
32
|
+
'yahoo.com': 'yahoo',
|
|
33
|
+
};
|
|
34
|
+
/** Providers that are sign-in methods, not linked accounts. */
|
|
35
|
+
const NOT_IDENTITIES = new Set(['password', 'phone', 'emailLink', 'anonymous', 'custom']);
|
|
36
|
+
/** Firebase's `-_` alphabet → standard base64 (the CLI does the same; the Admin SDK does not). */
|
|
37
|
+
const stdBase64 = (v) => v.trim().replace(/-/g, '+').replace(/_/g, '/');
|
|
38
|
+
exports.stdBase64 = stdBase64;
|
|
39
|
+
const ms = (v) => {
|
|
40
|
+
const s = (0, record_set_1.str)(v);
|
|
41
|
+
if (!s)
|
|
42
|
+
return undefined;
|
|
43
|
+
const n = Number(s);
|
|
44
|
+
if (Number.isFinite(n) && n > 0)
|
|
45
|
+
return n;
|
|
46
|
+
const t = Date.parse(s);
|
|
47
|
+
return Number.isFinite(t) ? t : undefined;
|
|
48
|
+
};
|
|
49
|
+
// ── access ─────────────────────────────────────────────────────────────────
|
|
50
|
+
function parseServiceAccount(text) {
|
|
51
|
+
let doc;
|
|
52
|
+
try {
|
|
53
|
+
doc = JSON.parse(text);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
throw new Error('The service-account key file is not JSON.');
|
|
57
|
+
}
|
|
58
|
+
if (!(0, record_set_1.isObj)(doc) || doc.type !== 'service_account' || !(0, record_set_1.str)(doc.client_email) || !(0, record_set_1.str)(doc.private_key)) {
|
|
59
|
+
throw new Error('That is not a service-account key file (it needs type "service_account", client_email and private_key).');
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
client_email: (0, record_set_1.str)(doc.client_email),
|
|
63
|
+
private_key: String(doc.private_key),
|
|
64
|
+
private_key_id: (0, record_set_1.str)(doc.private_key_id),
|
|
65
|
+
project_id: (0, record_set_1.str)(doc.project_id),
|
|
66
|
+
token_uri: (0, record_set_1.str)(doc.token_uri),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/** The RS256 JWT assertion of the OAuth 2.0 JWT-bearer grant, signed locally with the service account's key. */
|
|
70
|
+
function serviceAccountAssertion(sa, nowSeconds) {
|
|
71
|
+
const enc = (o) => Buffer.from(JSON.stringify(o)).toString('base64url');
|
|
72
|
+
const header = { alg: 'RS256', typ: 'JWT', ...(sa.private_key_id ? { kid: sa.private_key_id } : {}) };
|
|
73
|
+
const claims = { iss: sa.client_email, sub: sa.client_email, scope: SCOPE, aud: sa.token_uri ?? TOKEN_URL, iat: nowSeconds, exp: nowSeconds + 3600 };
|
|
74
|
+
const input = `${enc(header)}.${enc(claims)}`;
|
|
75
|
+
const sig = (0, node_crypto_1.createSign)('RSA-SHA256').update(input).sign(sa.private_key).toString('base64url');
|
|
76
|
+
return `${input}.${sig}`;
|
|
77
|
+
}
|
|
78
|
+
/** Exchange the assertion for an access token — at Google, the only place the key's signature goes. */
|
|
79
|
+
async function serviceAccountToken(sa, fetchImpl = fetch, now = Date.now) {
|
|
80
|
+
const url = sa.token_uri ?? TOKEN_URL;
|
|
81
|
+
if (!/^https:\/\/[a-z0-9.-]+\.googleapis\.com\//.test(url))
|
|
82
|
+
throw new Error(`Refusing the service account's token_uri ${url}: not a googleapis.com address.`);
|
|
83
|
+
const res = await fetchImpl(url, {
|
|
84
|
+
method: 'POST',
|
|
85
|
+
headers: { 'content-type': 'application/x-www-form-urlencoded', accept: 'application/json' },
|
|
86
|
+
body: new URLSearchParams({ grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer', assertion: serviceAccountAssertion(sa, Math.floor(now() / 1000)) }).toString(),
|
|
87
|
+
});
|
|
88
|
+
const body = (await res.json().catch(() => ({})));
|
|
89
|
+
if (!res.ok || !(0, record_set_1.str)(body.access_token)) {
|
|
90
|
+
throw new vendor_http_1.VendorApiError('Google OAuth', res.status, '/token', (0, record_set_1.str)(body.error_description) ?? (0, record_set_1.str)(body.error) ?? '');
|
|
91
|
+
}
|
|
92
|
+
return (0, record_set_1.str)(body.access_token);
|
|
93
|
+
}
|
|
94
|
+
function firebaseHttp(o) {
|
|
95
|
+
if (!o.accessToken && !o.serviceAccount)
|
|
96
|
+
throw new Error('Firebase: pass a service-account key file or an access token.');
|
|
97
|
+
let bearer = o.accessToken;
|
|
98
|
+
return new vendor_http_1.VendorHttp({
|
|
99
|
+
vendor: 'Firebase',
|
|
100
|
+
baseUrl: API,
|
|
101
|
+
headers: async () => ({
|
|
102
|
+
authorization: `Bearer ${(bearer ??= await serviceAccountToken(o.serviceAccount, o.fetchImpl, o.now))}`,
|
|
103
|
+
// Bills quota to the project being exported (needed with user credentials from gcloud).
|
|
104
|
+
'x-goog-user-project': o.projectId,
|
|
105
|
+
}),
|
|
106
|
+
fetchImpl: o.fetchImpl,
|
|
107
|
+
sleep: o.sleep,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
/** The scope of a call: the project, or one tenant of it. */
|
|
111
|
+
const scopePath = (projectId, tenant) => `projects/${encodeURIComponent(projectId)}${tenant ? `/tenants/${encodeURIComponent(tenant)}` : ''}`;
|
|
112
|
+
/** A project's (or tenant's) password hash parameters, from the admin v2 config. Null when the caller cannot read them. */
|
|
113
|
+
async function fetchHashConfig(http, projectId, tenant) {
|
|
114
|
+
try {
|
|
115
|
+
const { body } = await http.get(tenant ? `/v2/${scopePath(projectId, tenant)}` : `/v2/${scopePath(projectId)}/config`);
|
|
116
|
+
// The project config nests it under signIn; a Tenant carries it at the top level.
|
|
117
|
+
const hc = (0, record_set_1.isObj)(body.hashConfig) ? body.hashConfig : (0, record_set_1.isObj)(body.signIn) && (0, record_set_1.isObj)(body.signIn.hashConfig) ? body.signIn.hashConfig : null;
|
|
118
|
+
if (!hc)
|
|
119
|
+
return null;
|
|
120
|
+
return { params: hashParamsOf(hc), algorithm: (0, record_set_1.str)(hc.algorithm) };
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
if (err instanceof vendor_http_1.VendorApiError && [403, 404].includes(err.status))
|
|
124
|
+
return null;
|
|
125
|
+
throw err;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/** `signIn.hashConfig` (or the console's names) → the registry's scrypt_firebase params. */
|
|
129
|
+
function hashParamsOf(hc) {
|
|
130
|
+
const n = (v) => (typeof v === 'number' ? v : (0, record_set_1.str)(v) ? Number((0, record_set_1.str)(v)) : undefined);
|
|
131
|
+
return (0, record_set_1.compact)({
|
|
132
|
+
signer_key: (0, record_set_1.str)(hc.signerKey ?? hc.signer_key ?? hc.base64_signer_key) && (0, exports.stdBase64)((0, record_set_1.str)(hc.signerKey ?? hc.signer_key ?? hc.base64_signer_key)),
|
|
133
|
+
salt_separator: (0, record_set_1.str)(hc.saltSeparator ?? hc.salt_separator ?? hc.base64_salt_separator) !== undefined ? (0, exports.stdBase64)((0, record_set_1.str)(hc.saltSeparator ?? hc.salt_separator ?? hc.base64_salt_separator)) : undefined,
|
|
134
|
+
rounds: n(hc.rounds),
|
|
135
|
+
mem_cost: n(hc.memoryCost ?? hc.memCost ?? hc.mem_cost),
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
function completeParams(p) {
|
|
139
|
+
if (!p.signer_key || !p.rounds || !p.mem_cost)
|
|
140
|
+
return null;
|
|
141
|
+
return { signer_key: p.signer_key, salt_separator: p.salt_separator ?? '', rounds: p.rounds, mem_cost: p.mem_cost };
|
|
142
|
+
}
|
|
143
|
+
async function pages(http, path, key, size) {
|
|
144
|
+
const out = [];
|
|
145
|
+
let token;
|
|
146
|
+
const sep = path.includes('?') ? '&' : '?';
|
|
147
|
+
for (let guard = 0; guard < 100_000; guard++) {
|
|
148
|
+
const q = `${sep}${key === 'users' ? 'maxResults' : 'pageSize'}=${size}${token ? `&nextPageToken=${encodeURIComponent(token)}` : ''}`;
|
|
149
|
+
const { body } = await http.get(`${path}${q}`);
|
|
150
|
+
out.push(...(0, record_set_1.objs)(body?.[key]));
|
|
151
|
+
token = (0, record_set_1.str)(body?.nextPageToken);
|
|
152
|
+
if (!token)
|
|
153
|
+
break;
|
|
154
|
+
}
|
|
155
|
+
return out;
|
|
156
|
+
}
|
|
157
|
+
// ── export ─────────────────────────────────────────────────────────────────
|
|
158
|
+
async function exportFirebase(opts) {
|
|
159
|
+
const set = new record_set_1.RecordSet();
|
|
160
|
+
const progress = opts.onProgress ?? (() => undefined);
|
|
161
|
+
const projectId = opts.projectId.trim();
|
|
162
|
+
if (!/^[a-z0-9][a-z0-9-]{3,62}$/.test(projectId))
|
|
163
|
+
throw new Error(`Not a Firebase project id: ${opts.projectId}`);
|
|
164
|
+
set.manifest.origin = `firebase project ${projectId}`;
|
|
165
|
+
const flagParams = opts.hashParams ?? {};
|
|
166
|
+
if (opts.usersText !== undefined) {
|
|
167
|
+
if (opts.tenant)
|
|
168
|
+
throw new Error('Firebase: an auth:export file holds project-level users only (the CLI cannot export a tenant); use the API for tenants.');
|
|
169
|
+
progress('users file');
|
|
170
|
+
const users = parseFirebaseExport(opts.usersText, opts.usersFileName);
|
|
171
|
+
const params = completeParams(flagParams);
|
|
172
|
+
if (!params)
|
|
173
|
+
warnNoParams(set);
|
|
174
|
+
addUsers(set, users, { params, includeAnonymous: opts.includeAnonymous === true });
|
|
175
|
+
if (/\.csv$/i.test(opts.usersFileName ?? '') || !opts.usersText.trim().startsWith('{')) {
|
|
176
|
+
set.warn('The auth:export CSV has no second factors and keeps ten social providers only: export through the API (a service account) to move SMS second factors and OIDC / SAML links.');
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
set.warn('auth:export keeps ten social providers only and drops OIDC, SAML and phone links: export through the API (a service account) for those.');
|
|
180
|
+
}
|
|
181
|
+
settle(set, params);
|
|
182
|
+
return set;
|
|
183
|
+
}
|
|
184
|
+
const http = firebaseHttp({
|
|
185
|
+
accessToken: opts.accessToken,
|
|
186
|
+
serviceAccount: opts.serviceAccountJson ? parseServiceAccount(opts.serviceAccountJson) : undefined,
|
|
187
|
+
projectId,
|
|
188
|
+
fetchImpl: opts.fetchImpl,
|
|
189
|
+
sleep: opts.sleep,
|
|
190
|
+
now: opts.now,
|
|
191
|
+
});
|
|
192
|
+
const scopes = [];
|
|
193
|
+
if (opts.tenant === 'all') {
|
|
194
|
+
progress('tenants');
|
|
195
|
+
const tenants = await pages(http, `/v2/${scopePath(projectId)}/tenants`, 'tenants', 1000);
|
|
196
|
+
for (const t of tenants) {
|
|
197
|
+
const id = (0, record_set_1.str)(t.name)?.split('/').pop();
|
|
198
|
+
if (id)
|
|
199
|
+
scopes.push({ tenant: id, name: (0, record_set_1.str)(t.displayName) ?? id });
|
|
200
|
+
}
|
|
201
|
+
if (!scopes.length)
|
|
202
|
+
set.warn('The project has no Identity Platform tenants; nothing was exported. Run without the tenant option for project-level users.');
|
|
203
|
+
else
|
|
204
|
+
set.add('role', { key: 'member', name: 'Member', scope: 'organization' });
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
scopes.push({ tenant: opts.tenant || undefined });
|
|
208
|
+
}
|
|
209
|
+
let anyParams = null;
|
|
210
|
+
for (const scope of scopes) {
|
|
211
|
+
const label = scope.tenant ? `tenant ${scope.tenant}` : 'project';
|
|
212
|
+
progress(`${label} hash parameters`);
|
|
213
|
+
const fetched = await fetchHashConfig(http, projectId, scope.tenant);
|
|
214
|
+
if (fetched?.algorithm && fetched.algorithm !== 'SCRYPT')
|
|
215
|
+
set.warn(`The ${label} reports hash algorithm ${fetched.algorithm}; Firebase stores its own passwords with SCRYPT, so the hashes are read as Firebase scrypt.`);
|
|
216
|
+
const params = completeParams({ ...fetched?.params, ...flagParams });
|
|
217
|
+
if (!params)
|
|
218
|
+
warnNoParams(set, label);
|
|
219
|
+
anyParams ??= params;
|
|
220
|
+
progress(`${label} SAML and OIDC providers`);
|
|
221
|
+
const connections = await enterpriseConnections(http, projectId, scope.tenant);
|
|
222
|
+
for (const c of connections)
|
|
223
|
+
set.add('sso_connection', c, c.id);
|
|
224
|
+
if (opts.tenant === 'all' && scope.tenant) {
|
|
225
|
+
set.add('organization', { id: scope.tenant, name: scope.name ?? scope.tenant, public_metadata: { firebase_tenant_id: scope.tenant } });
|
|
226
|
+
}
|
|
227
|
+
progress(`${label} users`);
|
|
228
|
+
const users = await pages(http, `/v1/${scopePath(projectId, scope.tenant)}/accounts:batchGet`, 'users', PAGE);
|
|
229
|
+
const added = addUsers(set, users, { params, includeAnonymous: opts.includeAnonymous === true, tenant: scope.tenant, connections: new Set(connections.map((c) => c.id)) });
|
|
230
|
+
if (opts.tenant === 'all' && scope.tenant) {
|
|
231
|
+
for (const uid of added)
|
|
232
|
+
set.add('membership', { organization_id: scope.tenant, user_id: uid, role: 'member' }, `${scope.tenant}:${uid}`);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
if (opts.tenant === 'all' && scopes.length) {
|
|
236
|
+
set.warn('Each Identity Platform tenant is a separate user pool: it becomes an organization here, and an email address used in two tenants is reported as a conflict at import. To keep tenants apart, export each one (tenant=<id>) into its own Atlas instance instead.');
|
|
237
|
+
}
|
|
238
|
+
settle(set, anyParams);
|
|
239
|
+
return set;
|
|
240
|
+
}
|
|
241
|
+
function warnNoParams(set, label = 'project') {
|
|
242
|
+
set.warn(`The ${label}'s password hash parameters were not available, so password hashes were left out. Pass them (--set firebase-signer-key=… firebase-salt-separator=… firebase-rounds=… firebase-mem-cost=…, from Console → Authentication → Users → ⋮ → Password hash parameters), or let the firebase lazy-migration preset check passwords on first sign-in.`);
|
|
243
|
+
}
|
|
244
|
+
function settle(set, params) {
|
|
245
|
+
set.manifest.providers = [...new Set(set.list('identity').map((i) => i.provider))].sort();
|
|
246
|
+
// Never the signer key: the manifest is shown in the dashboard. Each password carries its own parameters, sealed.
|
|
247
|
+
if (params)
|
|
248
|
+
set.manifest.settings = { password_hash: { algorithm: 'scrypt_firebase', rounds: params.rounds, mem_cost: params.mem_cost, salt_separator: params.salt_separator } };
|
|
249
|
+
}
|
|
250
|
+
/** SAML providers (and OIDC ones, for the record) the identities can point at. */
|
|
251
|
+
async function enterpriseConnections(http, projectId, tenant) {
|
|
252
|
+
const out = [];
|
|
253
|
+
const list = async (kind) => {
|
|
254
|
+
try {
|
|
255
|
+
return await pages(http, `/v2/${scopePath(projectId, tenant)}/${kind}`, kind, 100);
|
|
256
|
+
}
|
|
257
|
+
catch (err) {
|
|
258
|
+
if (err instanceof vendor_http_1.VendorApiError && [400, 403, 404].includes(err.status))
|
|
259
|
+
return [];
|
|
260
|
+
throw err;
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
for (const c of await list('inboundSamlConfigs')) {
|
|
264
|
+
const id = (0, record_set_1.str)(c.name)?.split('/').pop();
|
|
265
|
+
if (!id)
|
|
266
|
+
continue;
|
|
267
|
+
const idp = (0, record_set_1.isObj)(c.idpConfig) ? c.idpConfig : {};
|
|
268
|
+
const sp = (0, record_set_1.isObj)(c.spConfig) ? c.spConfig : {};
|
|
269
|
+
const cert = (0, record_set_1.objs)(idp.idpCertificates).map((x) => (0, record_set_1.str)(x.x509Certificate)).find(Boolean);
|
|
270
|
+
out.push((0, record_set_1.compact)({
|
|
271
|
+
id,
|
|
272
|
+
name: (0, record_set_1.str)(c.displayName) ?? id,
|
|
273
|
+
protocol: 'saml',
|
|
274
|
+
enabled: c.enabled === true,
|
|
275
|
+
saml: (0, record_set_1.compact)({ idp_entity_id: (0, record_set_1.str)(idp.idpEntityId), idp_sso_url: (0, record_set_1.str)(idp.ssoUrl), idp_certificate: cert, sp_entity_id: (0, record_set_1.str)(sp.spEntityId), sp_acs_url: (0, record_set_1.str)(sp.callbackUri) }),
|
|
276
|
+
}));
|
|
277
|
+
}
|
|
278
|
+
return out;
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Add users (REST UserInfo or auth:export JSON — the same keys — or rows from
|
|
282
|
+
* the CSV mapped onto them) with their identities and second factors. Returns
|
|
283
|
+
* the uids added.
|
|
284
|
+
*/
|
|
285
|
+
function addUsers(set, users, ctx) {
|
|
286
|
+
const added = [];
|
|
287
|
+
let redacted = 0;
|
|
288
|
+
let otherVersion = 0;
|
|
289
|
+
for (const u of users) {
|
|
290
|
+
const uid = (0, record_set_1.str)(u.localId ?? u.uid);
|
|
291
|
+
if (!uid) {
|
|
292
|
+
set.omit('user', 'no uid');
|
|
293
|
+
continue;
|
|
294
|
+
}
|
|
295
|
+
const mapped = mapFirebaseUser(u, ctx);
|
|
296
|
+
if (mapped.redacted)
|
|
297
|
+
redacted++;
|
|
298
|
+
if (mapped.otherVersion)
|
|
299
|
+
otherVersion++;
|
|
300
|
+
if (!mapped.user) {
|
|
301
|
+
set.omit('user', mapped.anonymous ? 'anonymous user (left out unless firebase-anonymous=include)' : 'no email, phone number or linked account');
|
|
302
|
+
continue;
|
|
303
|
+
}
|
|
304
|
+
set.add('user', mapped.user, uid);
|
|
305
|
+
added.push(uid);
|
|
306
|
+
for (const i of mapped.identities) {
|
|
307
|
+
if (i.kind === 'saml' && i.sso_connection_id && ctx.connections && !ctx.connections.has(i.sso_connection_id))
|
|
308
|
+
delete i.sso_connection_id;
|
|
309
|
+
set.add('identity', i, `${i.provider}:${i.provider_user_id}`);
|
|
310
|
+
}
|
|
311
|
+
for (const f of mapped.factors)
|
|
312
|
+
set.add('mfa_factor', f);
|
|
313
|
+
if (mapped.totp)
|
|
314
|
+
set.omit('mfa_factor', 'TOTP enrollment: Firebase never exports the secret (the user enrols again)', mapped.totp);
|
|
315
|
+
}
|
|
316
|
+
if (redacted)
|
|
317
|
+
set.warn(`${redacted} password hash(es) came back as REDACTED: the credentials lack permission to read hashes (firebaseauth.configs.getHashConfig / firebaseauth.users.get with an owner or Firebase Authentication Admin role). Those users move by lazy migration.`);
|
|
318
|
+
if (otherVersion)
|
|
319
|
+
set.warn(`${otherVersion} password hash(es) are not Firebase scrypt (users imported into Firebase with another algorithm who never signed in since); they were left out and move by lazy migration.`);
|
|
320
|
+
return added;
|
|
321
|
+
}
|
|
322
|
+
function mapFirebaseUser(u, ctx) {
|
|
323
|
+
const uid = (0, record_set_1.str)(u.localId ?? u.uid);
|
|
324
|
+
const out = { user: null, identities: [], factors: [], totp: 0, anonymous: false, redacted: false, otherVersion: false };
|
|
325
|
+
const email = (0, record_set_1.str)(u.email)?.toLowerCase();
|
|
326
|
+
const phone = (0, record_set_1.e164)(u.phoneNumber);
|
|
327
|
+
const providers = (0, record_set_1.objs)(u.providerUserInfo ?? u.providerData);
|
|
328
|
+
for (const p of providers) {
|
|
329
|
+
const pid = (0, record_set_1.str)(p.providerId);
|
|
330
|
+
if (!pid || NOT_IDENTITIES.has(pid))
|
|
331
|
+
continue;
|
|
332
|
+
const subject = (0, record_set_1.str)(p.rawId ?? p.federatedId ?? p.uid);
|
|
333
|
+
if (!subject)
|
|
334
|
+
continue;
|
|
335
|
+
const kind = pid.startsWith('saml.') ? 'saml' : pid.startsWith('oidc.') ? 'oidc' : 'oauth';
|
|
336
|
+
out.identities.push((0, record_set_1.compact)({
|
|
337
|
+
user_id: uid,
|
|
338
|
+
provider: SOCIAL[pid] ?? pid,
|
|
339
|
+
provider_user_id: subject,
|
|
340
|
+
kind,
|
|
341
|
+
sso_connection_id: kind === 'saml' ? pid : undefined,
|
|
342
|
+
email: (0, record_set_1.str)(p.email)?.toLowerCase(),
|
|
343
|
+
profile: (0, record_set_1.bag)((0, record_set_1.compact)({ display_name: (0, record_set_1.str)(p.displayName), photo_url: (0, record_set_1.str)(p.photoUrl ?? p.photoURL), screen_name: (0, record_set_1.str)(p.screenName), firebase_provider_id: pid })),
|
|
344
|
+
}));
|
|
345
|
+
}
|
|
346
|
+
for (const m of (0, record_set_1.objs)(u.mfaInfo ?? ((0, record_set_1.isObj)(u.multiFactor) ? u.multiFactor.enrolledFactors : undefined))) {
|
|
347
|
+
const created = ms(m.enrolledAt ?? m.enrollmentTime);
|
|
348
|
+
const id = (0, record_set_1.str)(m.mfaEnrollmentId ?? m.uid);
|
|
349
|
+
const factorPhone = (0, record_set_1.e164)(m.unobfuscatedPhoneInfo ?? m.phoneInfo ?? m.phoneNumber);
|
|
350
|
+
if (factorPhone)
|
|
351
|
+
out.factors.push((0, record_set_1.compact)({ id, user_id: uid, type: 'phone', phone: factorPhone, verified: true, created_at: created }));
|
|
352
|
+
else if ((0, record_set_1.isObj)(m.emailInfo) && (0, record_set_1.str)(m.emailInfo.emailAddress))
|
|
353
|
+
out.factors.push((0, record_set_1.compact)({ id, user_id: uid, type: 'email', verified: true, created_at: created }));
|
|
354
|
+
else if ('totpInfo' in m || m.factorId === 'totp')
|
|
355
|
+
out.totp++;
|
|
356
|
+
}
|
|
357
|
+
if (!email && !phone && !out.identities.length) {
|
|
358
|
+
out.anonymous = true;
|
|
359
|
+
if (!ctx.includeAnonymous)
|
|
360
|
+
return out;
|
|
361
|
+
}
|
|
362
|
+
let password;
|
|
363
|
+
const rawHash = (0, record_set_1.str)(u.passwordHash);
|
|
364
|
+
const version = typeof u.version === 'number' ? u.version : undefined;
|
|
365
|
+
if (rawHash === REDACTED)
|
|
366
|
+
out.redacted = true;
|
|
367
|
+
else if (rawHash && version !== undefined && version !== 0)
|
|
368
|
+
out.otherVersion = true;
|
|
369
|
+
else if (rawHash && ctx.params) {
|
|
370
|
+
password = {
|
|
371
|
+
algorithm: 'scrypt_firebase',
|
|
372
|
+
hash: (0, exports.stdBase64)(rawHash),
|
|
373
|
+
salt: (0, exports.stdBase64)((0, record_set_1.str)(u.salt ?? u.passwordSalt) ?? ''),
|
|
374
|
+
params: { ...ctx.params },
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
const custom = parseClaims(u.customAttributes ?? u.customClaims);
|
|
378
|
+
const name = (0, record_set_1.str)(u.displayName);
|
|
379
|
+
out.user = (0, record_set_1.compact)({
|
|
380
|
+
id: uid,
|
|
381
|
+
emails: email ? [{ email, verified: truthy(u.emailVerified), primary: true }] : undefined,
|
|
382
|
+
// Firebase verifies a phone number by SMS before it is set.
|
|
383
|
+
phones: phone ? [{ phone, verified: true, primary: true }] : undefined,
|
|
384
|
+
name,
|
|
385
|
+
image_url: (0, record_set_1.str)(u.photoUrl ?? u.photoURL),
|
|
386
|
+
password,
|
|
387
|
+
banned: truthy(u.disabled) || undefined,
|
|
388
|
+
anonymous: out.anonymous || undefined,
|
|
389
|
+
public_metadata: (0, record_set_1.bag)(custom),
|
|
390
|
+
private_metadata: (0, record_set_1.bag)((0, record_set_1.compact)({
|
|
391
|
+
firebase_tenant_id: ctx.tenant ?? (0, record_set_1.str)(u.tenantId),
|
|
392
|
+
valid_since: (0, record_set_1.str)(u.validSince),
|
|
393
|
+
password_updated_at: ms(u.passwordUpdatedAt),
|
|
394
|
+
last_refresh_at: (0, record_set_1.str)(u.lastRefreshAt),
|
|
395
|
+
email_link_signin: u.emailLinkSignin === true ? true : undefined,
|
|
396
|
+
initial_email: (0, record_set_1.str)(u.initialEmail),
|
|
397
|
+
})),
|
|
398
|
+
created_at: ms(u.createdAt ?? ((0, record_set_1.isObj)(u.metadata) ? u.metadata.creationTime : undefined)),
|
|
399
|
+
last_sign_in_at: ms(u.lastSignedInAt ?? u.lastLoginAt ?? ((0, record_set_1.isObj)(u.metadata) ? u.metadata.lastSignInTime : undefined)),
|
|
400
|
+
});
|
|
401
|
+
return out;
|
|
402
|
+
}
|
|
403
|
+
const truthy = (v) => v === true || v === 1 || (typeof v === 'string' && ['true', '1'].includes(v.trim().toLowerCase()));
|
|
404
|
+
/** Custom claims: a JSON string in the export and REST, an object from the Admin SDK. */
|
|
405
|
+
function parseClaims(v) {
|
|
406
|
+
if ((0, record_set_1.isObj)(v))
|
|
407
|
+
return v;
|
|
408
|
+
const s = (0, record_set_1.str)(v);
|
|
409
|
+
if (!s)
|
|
410
|
+
return undefined;
|
|
411
|
+
try {
|
|
412
|
+
const parsed = JSON.parse(s);
|
|
413
|
+
return (0, record_set_1.isObj)(parsed) ? parsed : undefined;
|
|
414
|
+
}
|
|
415
|
+
catch {
|
|
416
|
+
return undefined;
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
// ── auth:export files ──────────────────────────────────────────────────────
|
|
420
|
+
/** The positional providers of the auth:export CSV (columns 7-22, four per provider; created-at starts at column 23). */
|
|
421
|
+
const CSV_PROVIDERS = ['google.com', 'facebook.com', 'twitter.com', 'github.com'];
|
|
422
|
+
/** `firebase auth:export` JSON (`{"users": [...]}`) or its header-less 52-column CSV → UserInfo-shaped objects. */
|
|
423
|
+
function parseFirebaseExport(text, fileName = '') {
|
|
424
|
+
const trimmed = text.trim();
|
|
425
|
+
if (!trimmed)
|
|
426
|
+
return [];
|
|
427
|
+
if (trimmed.startsWith('{') || trimmed.startsWith('[')) {
|
|
428
|
+
const doc = JSON.parse(trimmed);
|
|
429
|
+
if (Array.isArray(doc))
|
|
430
|
+
return (0, record_set_1.objs)(doc);
|
|
431
|
+
if ((0, record_set_1.isObj)(doc) && Array.isArray(doc.users))
|
|
432
|
+
return (0, record_set_1.objs)(doc.users);
|
|
433
|
+
throw new Error('The Firebase export file is JSON but has no "users" array.');
|
|
434
|
+
}
|
|
435
|
+
if (fileName && !/\.csv$/i.test(fileName))
|
|
436
|
+
throw new Error('The Firebase export file must be the JSON or CSV auth:export writes.');
|
|
437
|
+
// The CSV has no header row: give parseCsv one.
|
|
438
|
+
const header = Array.from({ length: 53 }, (_, i) => `c${i}`).join(',');
|
|
439
|
+
return (0, csv_1.parseCsv)(`${header}\n${trimmed}\n`).map((r) => {
|
|
440
|
+
const c = (i) => r[`c${i}`] ?? '';
|
|
441
|
+
const providerUserInfo = [];
|
|
442
|
+
CSV_PROVIDERS.forEach((providerId, k) => {
|
|
443
|
+
const base = 7 + k * 4;
|
|
444
|
+
if (c(base))
|
|
445
|
+
providerUserInfo.push({ providerId, rawId: c(base), email: c(base + 1), displayName: c(base + 2), photoUrl: c(base + 3) });
|
|
446
|
+
});
|
|
447
|
+
return {
|
|
448
|
+
localId: c(0),
|
|
449
|
+
email: c(1),
|
|
450
|
+
emailVerified: c(2),
|
|
451
|
+
passwordHash: c(3),
|
|
452
|
+
salt: c(4),
|
|
453
|
+
displayName: c(5),
|
|
454
|
+
photoUrl: c(6),
|
|
455
|
+
createdAt: c(23),
|
|
456
|
+
lastSignedInAt: c(24),
|
|
457
|
+
phoneNumber: c(25),
|
|
458
|
+
disabled: c(26),
|
|
459
|
+
customAttributes: c(27),
|
|
460
|
+
providerUserInfo,
|
|
461
|
+
};
|
|
462
|
+
});
|
|
463
|
+
}
|
|
464
|
+
//# sourceMappingURL=firebase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firebase.js","sourceRoot":"","sources":["../../../src/migrate/export/firebase.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { FrameworkExport, type Tables } from './tables';
|
|
2
|
+
/**
|
|
3
|
+
* Passport.js and iron-session leave the user store to the app: there is no
|
|
4
|
+
* schema to recognise, only conventions. This mapper reads the app's users
|
|
5
|
+
* table with column names you can override, and recognises the common shapes:
|
|
6
|
+
*
|
|
7
|
+
* - a password column holding a self-describing hash (bcrypt / bcryptjs,
|
|
8
|
+
* argon2 / @node-rs/argon2, Django-style PBKDF2, oslo scrypt);
|
|
9
|
+
* - passport-local-mongoose's `salt` + `hash` fields (PBKDF2-SHA256, 25000
|
|
10
|
+
* iterations, 512-byte key — `sha1` for apps on its pre-v5 default);
|
|
11
|
+
* - provider id columns the Passport strategies' `verify` callbacks fill
|
|
12
|
+
* (`googleId`, `github_id`, `facebookId` …), or a separate identities table;
|
|
13
|
+
*
|
|
14
|
+
* and, for Passport, the express-session store the app used (connect-pg-simple,
|
|
15
|
+
* connect-mongo, connect-redis via a JSON dump, connect-session-sequelize,
|
|
16
|
+
* knex/typeorm stores): each live session's `passport.user` becomes a session
|
|
17
|
+
* record keyed by sha256 of the session id, which the bridge reads out of the
|
|
18
|
+
* `connect.sid` cookie.
|
|
19
|
+
*/
|
|
20
|
+
export interface AppUsersExportOptions {
|
|
21
|
+
usersTable?: string;
|
|
22
|
+
idColumn?: string;
|
|
23
|
+
emailColumn?: string;
|
|
24
|
+
emailVerifiedColumn?: string;
|
|
25
|
+
usernameColumn?: string;
|
|
26
|
+
nameColumn?: string;
|
|
27
|
+
passwordColumn?: string;
|
|
28
|
+
/** passport-local-mongoose's digest (`sha256`, or `sha1` before v5). */
|
|
29
|
+
plmDigest?: 'sha1' | 'sha256' | 'sha512';
|
|
30
|
+
plmIterations?: number;
|
|
31
|
+
/** `provider=column` pairs for provider id columns on the users row. */
|
|
32
|
+
identityColumns?: Record<string, string>;
|
|
33
|
+
/** A separate identities table (`user_id`, `provider`, `provider_user_id` / `provider_id` / `uid`). */
|
|
34
|
+
identitiesTable?: string;
|
|
35
|
+
/** The session store table / collection (default: detected). */
|
|
36
|
+
sessionsTable?: string;
|
|
37
|
+
/** Where the user id sits in the session JSON (default `passport.user`, then `passport.user.id`). */
|
|
38
|
+
sessionUserPath?: string;
|
|
39
|
+
sessions?: boolean;
|
|
40
|
+
now?: Date;
|
|
41
|
+
}
|
|
42
|
+
export declare function exportAppUsers(tables: Tables, options?: AppUsersExportOptions): FrameworkExport;
|