@atlasauth/cli 0.11.0 → 0.13.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 +15 -0
- package/dist/args.d.ts +121 -0
- package/dist/args.js +45 -0
- package/dist/args.js.map +1 -1
- package/dist/commands/config.js +71 -6
- package/dist/commands/config.js.map +1 -1
- 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/init.js +13 -8
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate.d.ts +6 -2
- package/dist/commands/migrate.js +13 -3
- package/dist/commands/migrate.js.map +1 -1
- 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/context.d.ts +1 -1
- package/dist/help.d.ts +1 -1
- package/dist/help.js +96 -2
- package/dist/help.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- 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/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/run.js +4 -0
- package/dist/run.js.map +1 -1
- package/package.json +7 -5
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pingIdentityPlugin = void 0;
|
|
4
|
+
const pingone_1 = require("../export/pingone");
|
|
5
|
+
const plugin_kit_1 = require("../export/plugin-kit");
|
|
6
|
+
const translate_kit_1 = require("../export/translate-kit");
|
|
7
|
+
const record_set_1 = require("../export/record-set");
|
|
8
|
+
const pingone_2 = require("../export/pingone");
|
|
9
|
+
/**
|
|
10
|
+
* `atlas migrate ping-identity` — a PingOne environment: password policy,
|
|
11
|
+
* social providers and SAML / OIDC connections as Atlas config; users, groups
|
|
12
|
+
* (roles) and enterprise connections through the management API with a worker
|
|
13
|
+
* application on this machine; the `ping_identity` bridge preset (PingOne
|
|
14
|
+
* access / ID tokens verified against the environment's keys) and lazy
|
|
15
|
+
* migration through PingOne's password check. PingFederate keeps users in your
|
|
16
|
+
* directory: export that as LDIF (`atlas migrate ldap`) and its SAML
|
|
17
|
+
* connections as metadata (`atlas migrate saml`).
|
|
18
|
+
*/
|
|
19
|
+
const ENVIRONMENT = { flag: 'pingone-environment-id', env: 'PINGONE_ENVIRONMENT_ID', label: 'your PingOne environment id', required: true };
|
|
20
|
+
const CLIENT_ID = { flag: 'pingone-client-id', env: 'PINGONE_CLIENT_ID', label: 'a PingOne worker application client id', required: true };
|
|
21
|
+
const CLIENT_SECRET = { flag: 'pingone-client-secret', env: 'PINGONE_CLIENT_SECRET', label: 'the worker application client secret', required: true, secret: true };
|
|
22
|
+
const REGION = { flag: 'pingone-region', env: 'PINGONE_REGION', label: 'the PingOne region (com, eu, asia, ca, com.au)', required: false };
|
|
23
|
+
const GROUPS = { flag: 'pingone-groups', env: 'PINGONE_GROUPS', label: 'read each user\'s group memberships (true by default; false for very large environments)', required: false };
|
|
24
|
+
const region = (p) => (0, pingone_1.pingRegion)(p.credential(REGION));
|
|
25
|
+
const creds = (p) => ({ environmentId: (0, plugin_kit_1.need)(p, ENVIRONMENT), clientId: (0, plugin_kit_1.need)(p, CLIENT_ID), clientSecret: (0, plugin_kit_1.need)(p, CLIENT_SECRET), region: region(p), fetchImpl: p.fetch });
|
|
26
|
+
exports.pingIdentityPlugin = {
|
|
27
|
+
vendor: 'ping-identity',
|
|
28
|
+
source: 'ping_identity',
|
|
29
|
+
label: 'Ping Identity (PingOne, PingFederate)',
|
|
30
|
+
help: 'Move a PingOne environment: password policy and social providers as Atlas config, SAML / OIDC identity providers as SSO connections, users with their login, verified email, phones, state and population, groups as roles, a zero-logout bridge for PingOne tokens, and lazy migration for passwords (PingOne never exports hashes). Your worker application credentials stay on this machine. PingFederate: export your directory as LDIF (atlas migrate ldap) and its connection metadata (atlas migrate saml).',
|
|
31
|
+
config: {
|
|
32
|
+
reads: 'your PingOne environment (password policies, identity providers)',
|
|
33
|
+
credentials: [ENVIRONMENT, CLIENT_ID, CLIENT_SECRET, REGION],
|
|
34
|
+
async translate(p) {
|
|
35
|
+
const c = creds(p);
|
|
36
|
+
const { policies, idps } = await (0, plugin_kit_1.vendorStep)('PingOne', async () => {
|
|
37
|
+
const http = (0, pingone_1.pingOneHttp)(c, await (0, pingone_1.pingOneToken)(c));
|
|
38
|
+
const safe = async (path, key) => {
|
|
39
|
+
try {
|
|
40
|
+
return await (0, pingone_1.pingOneList)(http, path, key);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return [];
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
return { policies: await safe('/passwordPolicies', 'passwordPolicies'), idps: await safe('/identityProviders', 'identityProviders') };
|
|
47
|
+
});
|
|
48
|
+
const b = new translate_kit_1.ConfigBuilder();
|
|
49
|
+
b.set('strategies.password', true);
|
|
50
|
+
b.add('differs', 'authentication', 'password', 'PingOne never exports password hashes: the ping_identity lazy-migration preset checks each password against PingOne on first sign-in.', 'auth_config.strategies.password');
|
|
51
|
+
const policy = policies.find((x) => x.default === true) ?? policies[0];
|
|
52
|
+
if (policy) {
|
|
53
|
+
const min = Number((0, record_set_1.isObj)(policy.length) ? policy.length.min : 8);
|
|
54
|
+
b.set('passwordPolicy.minLength', Math.max(8, Number.isFinite(min) ? min : 8));
|
|
55
|
+
b.add(min < 8 ? 'differs' : 'mapped', `passwordPolicies ${(0, record_set_1.str)(policy.name) ?? ''}`.trim(), 'length.min', `${min}${min < 8 ? ' (Atlas requires at least 8; existing passwords still sign in)' : ''}.`, 'auth_config.passwordPolicy.minLength');
|
|
56
|
+
b.add('differs', `passwordPolicies ${(0, record_set_1.str)(policy.name) ?? ''}`.trim(), 'minCharacters / excludesCommonlyUsed', 'Atlas follows NIST 800-63B: length and breached-password checks, no character-class rules.', 'auth_config.passwordPolicy');
|
|
57
|
+
}
|
|
58
|
+
for (const idp of idps) {
|
|
59
|
+
const type = (0, record_set_1.str)(idp.type) ?? '';
|
|
60
|
+
const name = (0, record_set_1.str)(idp.name) ?? type;
|
|
61
|
+
if ((0, pingone_2.ssoConnectionOf)(idp)) {
|
|
62
|
+
b.add('mapped', 'identityProviders', `${name} (${type})`, 'Enterprise IdP: moves with the data export as an Atlas SSO connection; update the IdP with Atlas\'s ACS URL / redirect URI, and replace PingOne routing with the connection\'s domains.', 'sso_connections');
|
|
63
|
+
}
|
|
64
|
+
else if ((0, translate_kit_1.socialKey)(type)) {
|
|
65
|
+
b.socialProvider({ atlasKey: (0, translate_kit_1.socialKey)(type), vendorName: name, area: 'identityProviders', setting: `${name} (${type})`, clientId: (0, record_set_1.str)(idp.clientId) });
|
|
66
|
+
}
|
|
67
|
+
else
|
|
68
|
+
b.add('manual', 'identityProviders', `${name} (${type})`, 'No Atlas counterpart for this provider type: add it as a custom OAuth provider.');
|
|
69
|
+
}
|
|
70
|
+
b.add('manual', 'authentication', 'sign-on policies / MFA policies / DaVinci flows', 'PingOne sign-on policies, MFA policies and DaVinci flows are not translated: set Atlas\'s MFA policy and sign-in methods in auth_config.');
|
|
71
|
+
return b.result(`PingOne environment ${c.environmentId}`, {
|
|
72
|
+
bridge: { preset: 'ping_identity', vars: { environment_id: c.environmentId, region: c.region } },
|
|
73
|
+
lazy: { preset: 'ping_identity', config: { environment_id: c.environmentId, region: c.region, client_id: c.clientId } },
|
|
74
|
+
});
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
export: {
|
|
78
|
+
reads: 'your PingOne environment through the management API (users, groups, identity providers)',
|
|
79
|
+
credentials: [ENVIRONMENT, CLIENT_ID, CLIENT_SECRET, REGION, GROUPS],
|
|
80
|
+
limits: [
|
|
81
|
+
'Password hashes are never exported by PingOne: passwords move by lazy migration (preset ping_identity).',
|
|
82
|
+
'TOTP secrets, FIDO2 credentials and mobile-app pairings cannot be exported: users enrol their second factor again.',
|
|
83
|
+
'PingFederate has no user store of its own: export your directory (LDIF) and the SAML connection metadata with atlas migrate ldap / saml.',
|
|
84
|
+
],
|
|
85
|
+
async run(p, writer, resume) {
|
|
86
|
+
const set = await (0, plugin_kit_1.vendorStep)('PingOne', () => (0, pingone_1.exportPingOne)({ ...creds(p), groups: p.credential(GROUPS) !== 'false', onProgress: (m) => p.say(` reading ${m}`) }));
|
|
87
|
+
await (0, plugin_kit_1.writeRecordSet)(set, writer, resume, p.say);
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
bridge: {
|
|
91
|
+
preset: 'ping_identity',
|
|
92
|
+
vars: (p, t) => ({ environment_id: (0, plugin_kit_1.need)(p, ENVIRONMENT), region: region(p), ...t?.bridge?.vars }),
|
|
93
|
+
},
|
|
94
|
+
lazy: {
|
|
95
|
+
preset: 'ping_identity',
|
|
96
|
+
config: (p, t) => ({ environment_id: (0, plugin_kit_1.need)(p, ENVIRONMENT), region: region(p), client_id: (0, plugin_kit_1.need)(p, CLIENT_ID), ...t?.lazy?.config }),
|
|
97
|
+
secret: CLIENT_SECRET,
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/migrate/ping-identity/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pocketbasePlugin = void 0;
|
|
4
|
+
const node_fs_1 = require("node:fs");
|
|
5
|
+
const node_path_1 = require("node:path");
|
|
6
|
+
const pocketbase_1 = require("../export/pocketbase");
|
|
7
|
+
const pocketbase_config_1 = require("../export/pocketbase-config");
|
|
8
|
+
const errors_1 = require("../../errors");
|
|
9
|
+
const plugin_kit_1 = require("../export/plugin-kit");
|
|
10
|
+
const project_files_1 = require("../export/project-files");
|
|
11
|
+
/**
|
|
12
|
+
* `atlas migrate pocketbase` — a PocketBase app (v0.23+ and ≤0.22). The REST
|
|
13
|
+
* API never returns password hashes, so everything is read from the SQLite
|
|
14
|
+
* database on this machine: `pb_data/data.db` through Node's built-in SQLite
|
|
15
|
+
* (read-only), or a `sqlite3 -json` dump folder. Auth collection options
|
|
16
|
+
* become Atlas config; the `pocketbase` remote bridge asks PocketBase about a
|
|
17
|
+
* live token once (auth-refresh); lazy migration signs in against PocketBase
|
|
18
|
+
* for anyone left; and the `pocketbase` codemod rewrites the JS SDK calls.
|
|
19
|
+
*/
|
|
20
|
+
const DB = { flag: '--pocketbase-db', env: 'POCKETBASE_DB', label: 'pb_data/data.db (copy it with its -wal/-shm files, or stop the server)', required: false };
|
|
21
|
+
const DUMP = { flag: '--pocketbase-dump', env: 'POCKETBASE_DUMP', label: 'a folder of sqlite3 -json table dumps (_collections, your auth collections, _externalAuths)', required: false };
|
|
22
|
+
const SCHEMA = { flag: '--pocketbase-schema', env: 'POCKETBASE_SCHEMA', label: 'a collections export (Settings → Export collections, pb_schema.json)', required: false };
|
|
23
|
+
const URL_SPEC = { flag: '--pocketbase-url', env: 'POCKETBASE_URL', label: 'the public PocketBase URL (https://pb.example.com)', required: false };
|
|
24
|
+
const COLLECTIONS = { flag: '--pocketbase-collections', env: 'POCKETBASE_COLLECTIONS', label: 'auth collections to export, comma-separated (default: all but _superusers)', required: false };
|
|
25
|
+
const SUPERUSERS = { flag: '--pocketbase-superusers', env: 'POCKETBASE_SUPERUSERS', label: 'true to export _superusers too', required: false };
|
|
26
|
+
async function readTables(p) {
|
|
27
|
+
const dump = (0, project_files_1.projectDir)(p, DUMP);
|
|
28
|
+
if (dump)
|
|
29
|
+
return { tables: (0, pocketbase_1.readPocketBaseDump)(dump), origin: 'sqlite3 dump' };
|
|
30
|
+
const named = p.credential(DB);
|
|
31
|
+
const db = named ? (0, node_path_1.resolve)(named) : [(0, node_path_1.join)((0, node_path_1.resolve)(p.project), 'pb_data', 'data.db')].find((f) => (0, node_fs_1.existsSync)(f));
|
|
32
|
+
if (!db)
|
|
33
|
+
return undefined;
|
|
34
|
+
return { tables: await (0, pocketbase_1.readPocketBaseDb)(db), origin: 'pb_data/data.db' };
|
|
35
|
+
}
|
|
36
|
+
function url(p) {
|
|
37
|
+
return p.credential(URL_SPEC)?.trim().replace(/\/+$/, '');
|
|
38
|
+
}
|
|
39
|
+
exports.pocketbasePlugin = {
|
|
40
|
+
vendor: 'pocketbase',
|
|
41
|
+
source: 'pocketbase',
|
|
42
|
+
label: 'PocketBase',
|
|
43
|
+
help: 'Move a PocketBase app: auth collection options (password, OAuth2, OTP, MFA, token duration, rules) as Atlas config; every auth record with its bcrypt hash, verified email, username, custom fields and OAuth2 links, read from pb_data/data.db or a sqlite3 dump on this machine; a zero-logout bridge that asks PocketBase about each live token once; lazy migration for anyone left; and the code.',
|
|
44
|
+
config: {
|
|
45
|
+
reads: 'a collections export (pb_schema.json) or _collections in pb_data/data.db',
|
|
46
|
+
credentials: [SCHEMA, DB, DUMP, URL_SPEC],
|
|
47
|
+
async translate(p) {
|
|
48
|
+
const file = (0, project_files_1.projectFile)(p, SCHEMA, ['pb_schema.json']);
|
|
49
|
+
if (file)
|
|
50
|
+
return (0, plugin_kit_1.vendorStep)('PocketBase', async () => (0, pocketbase_config_1.translatePocketBaseConfig)({ collections: (0, pocketbase_config_1.parsePocketBaseSchema)(file.text), file, url: url(p) }));
|
|
51
|
+
const read = await (0, plugin_kit_1.vendorStep)('PocketBase', () => readTables(p));
|
|
52
|
+
if (!read)
|
|
53
|
+
throw new errors_1.CliError('PocketBase: pass a collections export (--set pocketbase-schema=pb_schema.json), the database (--set pocketbase-db=pb_data/data.db) or a dump folder (--set pocketbase-dump=<dir>).');
|
|
54
|
+
return (0, pocketbase_config_1.translatePocketBaseConfig)({ collections: read.tables.collections, url: url(p) });
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
export: {
|
|
58
|
+
reads: 'pb_data/data.db (read-only, built-in SQLite) or a sqlite3 -json dump folder',
|
|
59
|
+
credentials: [DB, DUMP, URL_SPEC, COLLECTIONS, SUPERUSERS],
|
|
60
|
+
limits: [
|
|
61
|
+
'The PocketBase API never returns password hashes or token keys: the export reads the SQLite database (or your dump of it) on this machine.',
|
|
62
|
+
'Auth tokens are signed per record and are not imported: the pocketbase bridge preset asks PocketBase (auth-refresh) about each live token once instead.',
|
|
63
|
+
'PocketBase MFA and OTP are one-time sign-in state, not enrolled factors: users enrol an Atlas second factor after the move.',
|
|
64
|
+
'≤0.22 admins (_admins) are not exported.',
|
|
65
|
+
],
|
|
66
|
+
async run(p, writer, resume) {
|
|
67
|
+
const read = await (0, plugin_kit_1.vendorStep)('PocketBase', () => readTables(p));
|
|
68
|
+
if (!read)
|
|
69
|
+
throw new errors_1.CliError('PocketBase: no pb_data/data.db in this folder. Pass --set pocketbase-db=<path to data.db> or --set pocketbase-dump=<folder of sqlite3 -json dumps>.');
|
|
70
|
+
const collections = p.credential(COLLECTIONS)?.split(',').map((c) => c.trim()).filter(Boolean);
|
|
71
|
+
const set = (0, pocketbase_1.exportPocketBase)(read.tables, { collections, includeSuperusers: (0, project_files_1.truthyCredential)(p, SUPERUSERS), url: url(p), origin: read.origin });
|
|
72
|
+
await (0, plugin_kit_1.writeRecordSet)(set, writer, resume, p.say);
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
bridge: {
|
|
76
|
+
preset: 'pocketbase',
|
|
77
|
+
vars(p, t) {
|
|
78
|
+
const vars = { ...t?.bridge?.vars };
|
|
79
|
+
const u = url(p);
|
|
80
|
+
if (u)
|
|
81
|
+
vars.url = u;
|
|
82
|
+
vars.collection ??= 'users';
|
|
83
|
+
return vars;
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
lazy: {
|
|
87
|
+
preset: 'pocketbase',
|
|
88
|
+
config(p, t) {
|
|
89
|
+
const config = { ...t?.lazy?.config };
|
|
90
|
+
const u = url(p);
|
|
91
|
+
if (u)
|
|
92
|
+
config.url = u;
|
|
93
|
+
config.collection ??= 'users';
|
|
94
|
+
return config;
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
codemod: 'pocketbase',
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/migrate/pocketbase/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.propelauthPlugin = void 0;
|
|
4
|
+
const propelauth_1 = require("../export/propelauth");
|
|
5
|
+
const propelauth_config_1 = require("../export/propelauth-config");
|
|
6
|
+
const plugin_kit_1 = require("../export/plugin-kit");
|
|
7
|
+
/**
|
|
8
|
+
* `atlas migrate propelauth` — users, organizations, roles and pending
|
|
9
|
+
* invitations through PropelAuth's backend API (auth URL + API key, on this
|
|
10
|
+
* machine), password hashes from the export PropelAuth support provides when
|
|
11
|
+
* the owner has it, and the `propelauth` bridge preset (RS256 access tokens
|
|
12
|
+
* verified with the project's verifier key). PropelAuth has no password-verify
|
|
13
|
+
* API, so there is no lazy-migration preset.
|
|
14
|
+
*/
|
|
15
|
+
const AUTH_URL = { flag: '--propelauth-auth-url', env: 'PROPELAUTH_AUTH_URL', label: 'your PropelAuth auth URL (https://123456.propelauthtest.com)', required: true };
|
|
16
|
+
const API_KEY = { flag: '--propelauth-api-key', env: 'PROPELAUTH_API_KEY', label: 'a PropelAuth backend API key', required: true, secret: true };
|
|
17
|
+
const HASHES_FILE = { flag: '--propelauth-hashes-file', env: 'PROPELAUTH_HASHES_FILE', label: 'the password-hash export from PropelAuth support', required: false };
|
|
18
|
+
/** The auth URL from the flag or env, else the one the app already uses (`NEXT_PUBLIC_AUTH_URL`). */
|
|
19
|
+
function authUrl(p) {
|
|
20
|
+
const raw = p.credential({ ...AUTH_URL, required: false }) ?? (p.ctx.env.NEXT_PUBLIC_AUTH_URL?.trim() || (0, plugin_kit_1.need)(p, AUTH_URL));
|
|
21
|
+
return (0, propelauth_1.normalizeAuthUrl)(raw);
|
|
22
|
+
}
|
|
23
|
+
exports.propelauthPlugin = {
|
|
24
|
+
vendor: 'propelauth',
|
|
25
|
+
source: 'propelauth',
|
|
26
|
+
label: 'PropelAuth',
|
|
27
|
+
help: 'Move a PropelAuth project: users with their verified emails, usernames and metadata, organizations with members, roles and permissions, pending invitations, password hashes from the export PropelAuth support provides, a zero-logout bridge for PropelAuth access tokens, and the code. Your API key stays on this machine.',
|
|
28
|
+
config: {
|
|
29
|
+
reads: 'your PropelAuth project via the backend API (role mappings, organizations with SAML)',
|
|
30
|
+
credentials: [AUTH_URL, API_KEY],
|
|
31
|
+
async translate(p) {
|
|
32
|
+
const url = authUrl(p);
|
|
33
|
+
const http = (0, propelauth_1.propelauthHttp)({ authUrl: url, apiKey: (0, plugin_kit_1.need)(p, API_KEY), fetchImpl: p.fetch });
|
|
34
|
+
return (0, propelauth_config_1.translatePropelauthConfig)(await (0, plugin_kit_1.vendorStep)('PropelAuth', () => (0, propelauth_config_1.fetchPropelauthConfig)(http, url)));
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
export: {
|
|
38
|
+
reads: 'the PropelAuth backend API (users, organizations, invitations) and the support hash export (--propelauth-hashes-file)',
|
|
39
|
+
credentials: [AUTH_URL, API_KEY, HASHES_FILE],
|
|
40
|
+
limits: [
|
|
41
|
+
'PropelAuth has no password-verify API and does not return hashes: PropelAuth support can export them on request. Pass that file with --propelauth-hashes-file; without it members set a password again on first sign-in.',
|
|
42
|
+
'TOTP secrets, social-account ids and end-user API key secrets cannot be exported: members enrol their second factor again, relink social accounts by verified email and reissue API keys.',
|
|
43
|
+
'SAML connections cannot be read back (the IdP settings are write-only): set each one up again in Atlas.',
|
|
44
|
+
'Sessions are not exported: PropelAuth access tokens are exchanged by the propelauth bridge preset, which needs your project\'s verifier key.',
|
|
45
|
+
],
|
|
46
|
+
async run(p, writer, resume) {
|
|
47
|
+
const set = await (0, plugin_kit_1.vendorStep)('PropelAuth', () => (0, propelauth_1.exportPropelauth)({
|
|
48
|
+
authUrl: authUrl(p),
|
|
49
|
+
apiKey: (0, plugin_kit_1.need)(p, API_KEY),
|
|
50
|
+
hashesText: (0, plugin_kit_1.localFile)(p, HASHES_FILE, 'text'),
|
|
51
|
+
fetchImpl: p.fetch,
|
|
52
|
+
onProgress: (m) => p.say(` reading ${m}`),
|
|
53
|
+
}));
|
|
54
|
+
await (0, plugin_kit_1.writeRecordSet)(set, writer, resume, p.say);
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
bridge: {
|
|
58
|
+
preset: 'propelauth',
|
|
59
|
+
vars(p, t) {
|
|
60
|
+
return { ...t?.bridge?.vars, auth_url: t?.bridge?.vars.auth_url ?? authUrl(p) };
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
codemod: 'propelauth',
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/migrate/propelauth/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.samlPlugin = void 0;
|
|
4
|
+
const node_path_1 = require("node:path");
|
|
5
|
+
const errors_1 = require("../../errors");
|
|
6
|
+
const plugin_kit_1 = require("../export/plugin-kit");
|
|
7
|
+
const sso_metadata_1 = require("../export/sso-metadata");
|
|
8
|
+
const translate_kit_1 = require("../export/translate-kit");
|
|
9
|
+
/**
|
|
10
|
+
* `atlas migrate saml export --set saml-metadata=<file or https URL>` — any
|
|
11
|
+
* SAML 2.0 identity provider (Ping, OneLogin, Okta, ADFS, Entra, Shibboleth,
|
|
12
|
+
* Keycloak …) from its metadata: an Atlas SSO connection with the IdP's
|
|
13
|
+
* entity id, sign-on URL and signing certificate. The users stay in the IdP:
|
|
14
|
+
* they sign in through it, now via Atlas, and relink on their verified email.
|
|
15
|
+
*/
|
|
16
|
+
const METADATA = { flag: 'saml-metadata', env: 'SAML_METADATA', label: 'the IdP metadata: a file, or an https:// URL', required: true };
|
|
17
|
+
const DOMAINS = { flag: 'saml-domains', env: 'SAML_DOMAINS', label: 'email domains that sign in through this IdP (comma separated)', required: false };
|
|
18
|
+
const NAME = { flag: 'saml-name', env: 'SAML_CONNECTION_NAME', label: 'a name for the connection', required: false };
|
|
19
|
+
const ORG = { flag: 'saml-organization', env: 'SAML_ORGANIZATION', label: 'create the connection inside an organization with this name', required: false };
|
|
20
|
+
async function metadata(p) {
|
|
21
|
+
const src = p.credential({ ...METADATA, required: true });
|
|
22
|
+
if (/^https:\/\//i.test(src)) {
|
|
23
|
+
const res = await p.fetch(src, { headers: { accept: 'application/samlmetadata+xml, application/xml, text/xml' }, redirect: 'error' });
|
|
24
|
+
if (res.status !== 200)
|
|
25
|
+
throw new errors_1.CliError(`${src} answered ${res.status}.`);
|
|
26
|
+
return { xml: await res.text(), url: src };
|
|
27
|
+
}
|
|
28
|
+
if (/^http:\/\//i.test(src))
|
|
29
|
+
throw new errors_1.CliError('The metadata URL must be https://.');
|
|
30
|
+
return { xml: p.ctx.readFile((0, node_path_1.resolve)(src)) };
|
|
31
|
+
}
|
|
32
|
+
function build(p, xml, url) {
|
|
33
|
+
const domains = (p.credential(DOMAINS) ?? '').split(',').map((d) => d.trim().toLowerCase()).filter(Boolean);
|
|
34
|
+
try {
|
|
35
|
+
return (0, sso_metadata_1.samlConnections)(xml, { name: p.credential(NAME), domains: domains.length ? domains : undefined, metadataUrl: url });
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
throw new errors_1.CliError(err.message);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.samlPlugin = {
|
|
42
|
+
vendor: 'saml',
|
|
43
|
+
source: 'saml',
|
|
44
|
+
label: 'Any SAML identity provider',
|
|
45
|
+
help: 'Move a SAML single sign-on connection: read the IdP metadata (--set saml-metadata=<file or URL>) and create the Atlas SSO connection from it (entity id, sign-on URL, signing certificate, email domains). Afterwards give the IdP Atlas\'s entity id and ACS URL and switch the application to Atlas. The IdP\'s users are not exportable over SAML: they relink on their verified email at first sign-in.',
|
|
46
|
+
config: {
|
|
47
|
+
reads: 'the IdP metadata document',
|
|
48
|
+
credentials: [METADATA, DOMAINS, NAME],
|
|
49
|
+
async translate(p) {
|
|
50
|
+
const { xml, url } = await metadata(p);
|
|
51
|
+
const { connections, warnings } = build(p, xml, url);
|
|
52
|
+
const b = new translate_kit_1.ConfigBuilder();
|
|
53
|
+
for (const c of connections) {
|
|
54
|
+
b.add('mapped', 'saml', `${c.saml?.idp_entity_id}`, 'Becomes an Atlas SSO connection (atlas migrate saml export + import). Give the IdP Atlas\'s entity id and ACS URL, shown after the import.', 'sso_connections');
|
|
55
|
+
if (!c.domains?.length)
|
|
56
|
+
b.add('manual', 'saml', `${c.saml?.idp_entity_id} domains`, 'Name the email domains that sign in through this IdP (--set saml-domains=…) so Atlas routes them to it.', 'sso_connections');
|
|
57
|
+
}
|
|
58
|
+
for (const w of warnings)
|
|
59
|
+
b.add('differs', 'saml', 'metadata', w);
|
|
60
|
+
return b.result(`SAML metadata ${url ?? ''}`.trim());
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
export: {
|
|
64
|
+
reads: 'the IdP metadata document (--set saml-metadata=<file or https URL>)',
|
|
65
|
+
credentials: [METADATA, DOMAINS, NAME, ORG],
|
|
66
|
+
limits: ['A SAML identity provider exposes no user list: users sign in through it and link to Atlas accounts on their verified email.'],
|
|
67
|
+
async run(p, writer, resume) {
|
|
68
|
+
const { xml, url } = await metadata(p);
|
|
69
|
+
const { connections, warnings } = build(p, xml, url);
|
|
70
|
+
const org = p.credential(ORG);
|
|
71
|
+
const set = (0, sso_metadata_1.connectionSet)(connections, `SAML metadata ${url ?? ''}`.trim(), org ? { id: org.toLowerCase().replace(/[^a-z0-9]+/g, '-'), name: org } : undefined);
|
|
72
|
+
for (const w of warnings)
|
|
73
|
+
set.warn(w);
|
|
74
|
+
p.say(` ${connections.length} identity provider(s) in the metadata`);
|
|
75
|
+
await (0, plugin_kit_1.writeRecordSet)(set, writer, resume, p.say);
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/migrate/saml/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stytchPlugin = void 0;
|
|
4
|
+
const stytch_1 = require("../export/stytch");
|
|
5
|
+
const stytch_config_1 = require("../export/stytch-config");
|
|
6
|
+
const plugin_kit_1 = require("../export/plugin-kit");
|
|
7
|
+
/**
|
|
8
|
+
* `atlas migrate stytch` — a Stytch project (consumer or B2B) through the
|
|
9
|
+
* Stytch API with the project id and secret (on this machine): users with
|
|
10
|
+
* verified emails and phones, OAuth identities, organizations, members, roles
|
|
11
|
+
* and SSO connections as data, RBAC as Atlas config; password hashes from the
|
|
12
|
+
* export Stytch support provides; the `stytch` bridge preset (session JWTs
|
|
13
|
+
* verified against the project's JWKS) and lazy migration through Stytch's
|
|
14
|
+
* password authentication.
|
|
15
|
+
*/
|
|
16
|
+
const PROJECT_ID = { flag: '--stytch-project-id', env: 'STYTCH_PROJECT_ID', label: 'your Stytch project id (project-live-…)', required: true };
|
|
17
|
+
const SECRET = { flag: '--stytch-secret', env: 'STYTCH_SECRET', label: 'your Stytch project secret', required: true, secret: true };
|
|
18
|
+
const HASHES = { flag: '--stytch-hashes', env: 'STYTCH_HASHES_FILE', label: 'the password-hash export from Stytch support', required: false };
|
|
19
|
+
const PRODUCT = { flag: '--stytch-product', env: 'STYTCH_PRODUCT', label: 'consumer or b2b (detected when omitted)', required: false };
|
|
20
|
+
const BASE_URL = { flag: '--stytch-base-url', env: 'STYTCH_BASE_URL', label: 'the Stytch API base URL (custom domain)', required: false };
|
|
21
|
+
function baseUrl(p) {
|
|
22
|
+
return p.credential(BASE_URL)?.replace(/\/+$/, '');
|
|
23
|
+
}
|
|
24
|
+
function productOpt(p) {
|
|
25
|
+
const v = p.credential(PRODUCT)?.trim().toLowerCase();
|
|
26
|
+
if (v === undefined || v === '')
|
|
27
|
+
return undefined;
|
|
28
|
+
if (v !== 'consumer' && v !== 'b2b')
|
|
29
|
+
throw new Error(`${PRODUCT.flag} must be "consumer" or "b2b"`);
|
|
30
|
+
return v;
|
|
31
|
+
}
|
|
32
|
+
function http(p) {
|
|
33
|
+
return (0, stytch_1.stytchHttp)({ projectId: (0, plugin_kit_1.need)(p, PROJECT_ID), secret: (0, plugin_kit_1.need)(p, SECRET), baseUrl: baseUrl(p), fetchImpl: p.fetch });
|
|
34
|
+
}
|
|
35
|
+
exports.stytchPlugin = {
|
|
36
|
+
vendor: 'stytch',
|
|
37
|
+
source: 'stytch',
|
|
38
|
+
label: 'Stytch',
|
|
39
|
+
help: 'Move a Stytch project (consumer or B2B): users with verified emails and phones and OAuth identities, organizations with members, roles and SSO connections, RBAC as Atlas config, password hashes from the export Stytch support provides, a zero-logout bridge for Stytch session JWTs, lazy migration through Stytch password authentication, and the code. Your project secret stays on this machine.',
|
|
40
|
+
config: {
|
|
41
|
+
reads: 'your Stytch project via the API (RBAC policy, organizations, SSO connections)',
|
|
42
|
+
credentials: [PROJECT_ID, SECRET, PRODUCT, BASE_URL],
|
|
43
|
+
async translate(p) {
|
|
44
|
+
const projectId = (0, plugin_kit_1.need)(p, PROJECT_ID);
|
|
45
|
+
const client = http(p);
|
|
46
|
+
const snap = await (0, plugin_kit_1.vendorStep)('Stytch', async () => (0, stytch_config_1.fetchStytchConfig)(client, projectId, productOpt(p) ?? (await (0, stytch_1.detectStytchProduct)(client))));
|
|
47
|
+
return (0, stytch_config_1.translateStytchConfig)(snap);
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
export: {
|
|
51
|
+
reads: 'the Stytch API (users, or organizations, members and SSO connections, plus the RBAC policy) and, if you have one, the support hash export (--stytch-hashes)',
|
|
52
|
+
credentials: [PROJECT_ID, SECRET, HASHES, PRODUCT, BASE_URL],
|
|
53
|
+
limits: [
|
|
54
|
+
'Stytch only provides password hashes through support (support@stytch.com): pass that file with --stytch-hashes; otherwise passwords move by lazy migration (checked against Stytch on each user\'s first sign-in).',
|
|
55
|
+
'TOTP secrets, passkeys (WebAuthn) and crypto wallets are not exportable: users enrol again.',
|
|
56
|
+
'SCIM bearer tokens and OIDC client secrets are not returned: recreate those connections in Atlas.',
|
|
57
|
+
'Sessions are not exported: Stytch session JWTs are exchanged by the stytch bridge preset.',
|
|
58
|
+
],
|
|
59
|
+
async run(p, writer, resume) {
|
|
60
|
+
const set = await (0, plugin_kit_1.vendorStep)('Stytch', () => (0, stytch_1.exportStytch)({
|
|
61
|
+
projectId: (0, plugin_kit_1.need)(p, PROJECT_ID),
|
|
62
|
+
secret: (0, plugin_kit_1.need)(p, SECRET),
|
|
63
|
+
product: productOpt(p),
|
|
64
|
+
baseUrl: baseUrl(p),
|
|
65
|
+
hashesText: (0, plugin_kit_1.localFile)(p, HASHES, 'text'),
|
|
66
|
+
fetchImpl: p.fetch,
|
|
67
|
+
onProgress: (m) => p.say(` reading ${m}`),
|
|
68
|
+
}));
|
|
69
|
+
await (0, plugin_kit_1.writeRecordSet)(set, writer, resume, p.say);
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
bridge: {
|
|
73
|
+
preset: 'stytch',
|
|
74
|
+
vars(p, t) {
|
|
75
|
+
if (t?.bridge)
|
|
76
|
+
return t.bridge.vars;
|
|
77
|
+
const projectId = (0, plugin_kit_1.need)(p, PROJECT_ID);
|
|
78
|
+
return {
|
|
79
|
+
project_id: projectId,
|
|
80
|
+
...(projectId.startsWith('project-test-') ? { api_host: 'test.stytch.com' } : {}),
|
|
81
|
+
...(productOpt(p) === 'b2b' ? { jwks_path: 'b2b/sessions' } : {}),
|
|
82
|
+
};
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
lazy: {
|
|
86
|
+
preset: 'stytch',
|
|
87
|
+
config(p, t) {
|
|
88
|
+
if (t?.lazy)
|
|
89
|
+
return t.lazy.config;
|
|
90
|
+
const product = productOpt(p);
|
|
91
|
+
return { project_id: (0, plugin_kit_1.need)(p, PROJECT_ID), ...(product ? { product } : {}) };
|
|
92
|
+
},
|
|
93
|
+
secret: SECRET,
|
|
94
|
+
},
|
|
95
|
+
codemod: 'stytch',
|
|
96
|
+
};
|
|
97
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/migrate/stytch/plugin.ts"],"names":[],"mappings":"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"}
|