@atlasauth/cli 0.23.0 → 0.25.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 +13 -0
- package/package.json +3 -3
- package/dist/args.d.ts +0 -601
- package/dist/args.js +0 -289
- package/dist/args.js.map +0 -1
- package/dist/cli.d.ts +0 -2
- package/dist/cli.js +0 -19
- package/dist/cli.js.map +0 -1
- package/dist/commands/actions-gallery.d.ts +0 -8
- package/dist/commands/actions-gallery.js +0 -197
- package/dist/commands/actions-gallery.js.map +0 -1
- package/dist/commands/actions.d.ts +0 -13
- package/dist/commands/actions.js +0 -135
- package/dist/commands/actions.js.map +0 -1
- package/dist/commands/admin.d.ts +0 -49
- package/dist/commands/admin.js +0 -353
- package/dist/commands/admin.js.map +0 -1
- package/dist/commands/api-keys.d.ts +0 -4
- package/dist/commands/api-keys.js +0 -96
- package/dist/commands/api-keys.js.map +0 -1
- package/dist/commands/auth.d.ts +0 -25
- package/dist/commands/auth.js +0 -102
- package/dist/commands/auth.js.map +0 -1
- package/dist/commands/config.d.ts +0 -90
- package/dist/commands/config.js +0 -1430
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/csp.d.ts +0 -32
- package/dist/commands/csp.js +0 -180
- package/dist/commands/csp.js.map +0 -1
- package/dist/commands/dev.d.ts +0 -8
- package/dist/commands/dev.js +0 -84
- package/dist/commands/dev.js.map +0 -1
- package/dist/commands/fga.d.ts +0 -10
- package/dist/commands/fga.js +0 -146
- package/dist/commands/fga.js.map +0 -1
- package/dist/commands/golive.d.ts +0 -40
- package/dist/commands/golive.js +0 -285
- package/dist/commands/golive.js.map +0 -1
- package/dist/commands/id-accounts.d.ts +0 -13
- package/dist/commands/id-accounts.js +0 -195
- package/dist/commands/id-accounts.js.map +0 -1
- package/dist/commands/import-better-auth.d.ts +0 -3
- package/dist/commands/import-better-auth.js +0 -164
- package/dist/commands/import-better-auth.js.map +0 -1
- package/dist/commands/import.d.ts +0 -3
- package/dist/commands/import.js +0 -123
- package/dist/commands/import.js.map +0 -1
- package/dist/commands/info.d.ts +0 -75
- package/dist/commands/info.js +0 -362
- package/dist/commands/info.js.map +0 -1
- package/dist/commands/init.d.ts +0 -3
- package/dist/commands/init.js +0 -438
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/integrations.d.ts +0 -8
- package/dist/commands/integrations.js +0 -112
- package/dist/commands/integrations.js.map +0 -1
- package/dist/commands/listen.d.ts +0 -17
- package/dist/commands/listen.js +0 -223
- package/dist/commands/listen.js.map +0 -1
- package/dist/commands/mcp.d.ts +0 -38
- package/dist/commands/mcp.js +0 -111
- package/dist/commands/mcp.js.map +0 -1
- package/dist/commands/migrate.d.ts +0 -16
- package/dist/commands/migrate.js +0 -114
- package/dist/commands/migrate.js.map +0 -1
- package/dist/commands/move-origin.d.ts +0 -11
- package/dist/commands/move-origin.js +0 -95
- package/dist/commands/move-origin.js.map +0 -1
- package/dist/commands/operator.d.ts +0 -18
- package/dist/commands/operator.js +0 -238
- package/dist/commands/operator.js.map +0 -1
- package/dist/commands/orgs.d.ts +0 -4
- package/dist/commands/orgs.js +0 -72
- package/dist/commands/orgs.js.map +0 -1
- package/dist/commands/pages.d.ts +0 -14
- package/dist/commands/pages.js +0 -113
- package/dist/commands/pages.js.map +0 -1
- package/dist/commands/partner-platforms.d.ts +0 -10
- package/dist/commands/partner-platforms.js +0 -157
- package/dist/commands/partner-platforms.js.map +0 -1
- package/dist/commands/project-commands.d.ts +0 -38
- package/dist/commands/project-commands.js +0 -361
- package/dist/commands/project-commands.js.map +0 -1
- package/dist/commands/referrals.d.ts +0 -69
- package/dist/commands/referrals.js +0 -1056
- package/dist/commands/referrals.js.map +0 -1
- package/dist/commands/resources.d.ts +0 -44
- package/dist/commands/resources.js +0 -234
- package/dist/commands/resources.js.map +0 -1
- package/dist/commands/sessions.d.ts +0 -4
- package/dist/commands/sessions.js +0 -28
- package/dist/commands/sessions.js.map +0 -1
- package/dist/commands/shared.d.ts +0 -38
- package/dist/commands/shared.js +0 -69
- package/dist/commands/shared.js.map +0 -1
- package/dist/commands/status.d.ts +0 -3
- package/dist/commands/status.js +0 -77
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/users.d.ts +0 -4
- package/dist/commands/users.js +0 -100
- package/dist/commands/users.js.map +0 -1
- package/dist/commands/webhooks.d.ts +0 -34
- package/dist/commands/webhooks.js +0 -301
- package/dist/commands/webhooks.js.map +0 -1
- package/dist/config-http.d.ts +0 -29
- package/dist/config-http.js +0 -64
- package/dist/config-http.js.map +0 -1
- package/dist/config.d.ts +0 -64
- package/dist/config.js +0 -69
- package/dist/config.js.map +0 -1
- package/dist/context.d.ts +0 -72
- package/dist/context.js +0 -27
- package/dist/context.js.map +0 -1
- package/dist/errors.d.ts +0 -15
- package/dist/errors.js +0 -25
- package/dist/errors.js.map +0 -1
- package/dist/help.d.ts +0 -8
- package/dist/help.js +0 -868
- package/dist/help.js.map +0 -1
- package/dist/import/csv.d.ts +0 -6
- package/dist/import/csv.js +0 -63
- package/dist/import/csv.js.map +0 -1
- package/dist/import/vendors.d.ts +0 -57
- package/dist/import/vendors.js +0 -568
- package/dist/import/vendors.js.map +0 -1
- package/dist/index.d.ts +0 -32
- package/dist/index.js +0 -79
- package/dist/index.js.map +0 -1
- package/dist/io.d.ts +0 -21
- package/dist/io.js +0 -28
- package/dist/io.js.map +0 -1
- package/dist/migrate/appwrite/plugin.d.ts +0 -2
- package/dist/migrate/appwrite/plugin.js +0 -103
- package/dist/migrate/appwrite/plugin.js.map +0 -1
- package/dist/migrate/auth0/plugin.d.ts +0 -2
- package/dist/migrate/auth0/plugin.js +0 -126
- package/dist/migrate/auth0/plugin.js.map +0 -1
- package/dist/migrate/authentik/plugin.d.ts +0 -2
- package/dist/migrate/authentik/plugin.js +0 -135
- package/dist/migrate/authentik/plugin.js.map +0 -1
- package/dist/migrate/azure-ad-b2c/plugin.d.ts +0 -8
- package/dist/migrate/azure-ad-b2c/plugin.js +0 -165
- package/dist/migrate/azure-ad-b2c/plugin.js.map +0 -1
- package/dist/migrate/better-auth/integration.d.ts +0 -59
- package/dist/migrate/better-auth/integration.js +0 -81
- package/dist/migrate/better-auth/integration.js.map +0 -1
- package/dist/migrate/better-auth/orchestrator.d.ts +0 -43
- package/dist/migrate/better-auth/orchestrator.js +0 -525
- package/dist/migrate/better-auth/orchestrator.js.map +0 -1
- package/dist/migrate/better-auth/output.d.ts +0 -20
- package/dist/migrate/better-auth/output.js +0 -146
- package/dist/migrate/better-auth/output.js.map +0 -1
- package/dist/migrate/better-auth/translate.d.ts +0 -77
- package/dist/migrate/better-auth/translate.js +0 -1989
- package/dist/migrate/better-auth/translate.js.map +0 -1
- package/dist/migrate/clerk/plugin.d.ts +0 -2
- package/dist/migrate/clerk/plugin.js +0 -76
- package/dist/migrate/clerk/plugin.js.map +0 -1
- package/dist/migrate/cognito/plugin.d.ts +0 -5
- package/dist/migrate/cognito/plugin.js +0 -170
- package/dist/migrate/cognito/plugin.js.map +0 -1
- package/dist/migrate/corbado/plugin.d.ts +0 -2
- package/dist/migrate/corbado/plugin.js +0 -63
- package/dist/migrate/corbado/plugin.js.map +0 -1
- package/dist/migrate/descope/plugin.d.ts +0 -2
- package/dist/migrate/descope/plugin.js +0 -83
- package/dist/migrate/descope/plugin.js.map +0 -1
- package/dist/migrate/entra-external-id/plugin.d.ts +0 -8
- package/dist/migrate/entra-external-id/plugin.js +0 -12
- package/dist/migrate/entra-external-id/plugin.js.map +0 -1
- package/dist/migrate/export/appwrite-config.d.ts +0 -28
- package/dist/migrate/export/appwrite-config.js +0 -170
- package/dist/migrate/export/appwrite-config.js.map +0 -1
- package/dist/migrate/export/appwrite.d.ts +0 -51
- package/dist/migrate/export/appwrite.js +0 -288
- package/dist/migrate/export/appwrite.js.map +0 -1
- package/dist/migrate/export/auth0-config.d.ts +0 -29
- package/dist/migrate/export/auth0-config.js +0 -249
- package/dist/migrate/export/auth0-config.js.map +0 -1
- package/dist/migrate/export/auth0.d.ts +0 -62
- package/dist/migrate/export/auth0.js +0 -575
- package/dist/migrate/export/auth0.js.map +0 -1
- package/dist/migrate/export/authentik-config.d.ts +0 -45
- package/dist/migrate/export/authentik-config.js +0 -357
- package/dist/migrate/export/authentik-config.js.map +0 -1
- package/dist/migrate/export/authentik.d.ts +0 -110
- package/dist/migrate/export/authentik.js +0 -838
- package/dist/migrate/export/authentik.js.map +0 -1
- package/dist/migrate/export/azure-config.d.ts +0 -58
- package/dist/migrate/export/azure-config.js +0 -344
- package/dist/migrate/export/azure-config.js.map +0 -1
- package/dist/migrate/export/azure.d.ts +0 -85
- package/dist/migrate/export/azure.js +0 -373
- package/dist/migrate/export/azure.js.map +0 -1
- package/dist/migrate/export/clerk-config.d.ts +0 -26
- package/dist/migrate/export/clerk-config.js +0 -227
- package/dist/migrate/export/clerk-config.js.map +0 -1
- package/dist/migrate/export/clerk.d.ts +0 -46
- package/dist/migrate/export/clerk.js +0 -486
- package/dist/migrate/export/clerk.js.map +0 -1
- package/dist/migrate/export/cognito-config.d.ts +0 -25
- package/dist/migrate/export/cognito-config.js +0 -273
- package/dist/migrate/export/cognito-config.js.map +0 -1
- package/dist/migrate/export/cognito.d.ts +0 -103
- package/dist/migrate/export/cognito.js +0 -441
- package/dist/migrate/export/cognito.js.map +0 -1
- package/dist/migrate/export/corbado-config.d.ts +0 -20
- package/dist/migrate/export/corbado-config.js +0 -63
- package/dist/migrate/export/corbado-config.js.map +0 -1
- package/dist/migrate/export/corbado.d.ts +0 -37
- package/dist/migrate/export/corbado.js +0 -132
- package/dist/migrate/export/corbado.js.map +0 -1
- package/dist/migrate/export/descope.d.ts +0 -35
- package/dist/migrate/export/descope.js +0 -208
- package/dist/migrate/export/descope.js.map +0 -1
- package/dist/migrate/export/fake-vendor.test-helper.d.ts +0 -27
- package/dist/migrate/export/fake-vendor.test-helper.js +0 -41
- package/dist/migrate/export/fake-vendor.test-helper.js.map +0 -1
- package/dist/migrate/export/firebase-config.d.ts +0 -24
- package/dist/migrate/export/firebase-config.js +0 -215
- package/dist/migrate/export/firebase-config.js.map +0 -1
- package/dist/migrate/export/firebase.d.ts +0 -102
- package/dist/migrate/export/firebase.js +0 -464
- package/dist/migrate/export/firebase.js.map +0 -1
- package/dist/migrate/export/frameworks/app-users.d.ts +0 -42
- package/dist/migrate/export/frameworks/app-users.js +0 -161
- package/dist/migrate/export/frameworks/app-users.js.map +0 -1
- package/dist/migrate/export/frameworks/authjs.d.ts +0 -41
- package/dist/migrate/export/frameworks/authjs.js +0 -146
- package/dist/migrate/export/frameworks/authjs.js.map +0 -1
- package/dist/migrate/export/frameworks/devise.d.ts +0 -39
- package/dist/migrate/export/frameworks/devise.js +0 -218
- package/dist/migrate/export/frameworks/devise.js.map +0 -1
- package/dist/migrate/export/frameworks/django.d.ts +0 -45
- package/dist/migrate/export/frameworks/django.js +0 -315
- package/dist/migrate/export/frameworks/django.js.map +0 -1
- package/dist/migrate/export/frameworks/lucia.d.ts +0 -42
- package/dist/migrate/export/frameworks/lucia.js +0 -263
- package/dist/migrate/export/frameworks/lucia.js.map +0 -1
- package/dist/migrate/export/frameworks/tables.d.ts +0 -90
- package/dist/migrate/export/frameworks/tables.js +0 -325
- package/dist/migrate/export/frameworks/tables.js.map +0 -1
- package/dist/migrate/export/frameworks/webauthn.d.ts +0 -25
- package/dist/migrate/export/frameworks/webauthn.js +0 -130
- package/dist/migrate/export/frameworks/webauthn.js.map +0 -1
- package/dist/migrate/export/frontegg-config.d.ts +0 -29
- package/dist/migrate/export/frontegg-config.js +0 -238
- package/dist/migrate/export/frontegg-config.js.map +0 -1
- package/dist/migrate/export/frontegg.d.ts +0 -67
- package/dist/migrate/export/frontegg.js +0 -410
- package/dist/migrate/export/frontegg.js.map +0 -1
- package/dist/migrate/export/fusionauth-config.d.ts +0 -26
- package/dist/migrate/export/fusionauth-config.js +0 -226
- package/dist/migrate/export/fusionauth-config.js.map +0 -1
- package/dist/migrate/export/fusionauth.d.ts +0 -99
- package/dist/migrate/export/fusionauth.js +0 -642
- package/dist/migrate/export/fusionauth.js.map +0 -1
- package/dist/migrate/export/hanko-config.d.ts +0 -27
- package/dist/migrate/export/hanko-config.js +0 -265
- package/dist/migrate/export/hanko-config.js.map +0 -1
- package/dist/migrate/export/hanko.d.ts +0 -52
- package/dist/migrate/export/hanko.js +0 -605
- package/dist/migrate/export/hanko.js.map +0 -1
- package/dist/migrate/export/keycloak-config.d.ts +0 -19
- package/dist/migrate/export/keycloak-config.js +0 -219
- package/dist/migrate/export/keycloak-config.js.map +0 -1
- package/dist/migrate/export/keycloak.d.ts +0 -155
- package/dist/migrate/export/keycloak.js +0 -878
- package/dist/migrate/export/keycloak.js.map +0 -1
- package/dist/migrate/export/kinde-descope-config.d.ts +0 -38
- package/dist/migrate/export/kinde-descope-config.js +0 -172
- package/dist/migrate/export/kinde-descope-config.js.map +0 -1
- package/dist/migrate/export/kinde.d.ts +0 -57
- package/dist/migrate/export/kinde.js +0 -333
- package/dist/migrate/export/kinde.js.map +0 -1
- package/dist/migrate/export/ldap.d.ts +0 -53
- package/dist/migrate/export/ldap.js +0 -277
- package/dist/migrate/export/ldap.js.map +0 -1
- package/dist/migrate/export/logto-config.d.ts +0 -27
- package/dist/migrate/export/logto-config.js +0 -264
- package/dist/migrate/export/logto-config.js.map +0 -1
- package/dist/migrate/export/logto.d.ts +0 -150
- package/dist/migrate/export/logto.js +0 -809
- package/dist/migrate/export/logto.js.map +0 -1
- package/dist/migrate/export/magic-config.d.ts +0 -14
- package/dist/migrate/export/magic-config.js +0 -28
- package/dist/migrate/export/magic-config.js.map +0 -1
- package/dist/migrate/export/magic.d.ts +0 -31
- package/dist/migrate/export/magic.js +0 -93
- package/dist/migrate/export/magic.js.map +0 -1
- package/dist/migrate/export/mini-yaml.d.ts +0 -19
- package/dist/migrate/export/mini-yaml.js +0 -581
- package/dist/migrate/export/mini-yaml.js.map +0 -1
- package/dist/migrate/export/nhost-config.d.ts +0 -26
- package/dist/migrate/export/nhost-config.js +0 -360
- package/dist/migrate/export/nhost-config.js.map +0 -1
- package/dist/migrate/export/nhost.d.ts +0 -64
- package/dist/migrate/export/nhost.js +0 -304
- package/dist/migrate/export/nhost.js.map +0 -1
- package/dist/migrate/export/okta-config.d.ts +0 -30
- package/dist/migrate/export/okta-config.js +0 -205
- package/dist/migrate/export/okta-config.js.map +0 -1
- package/dist/migrate/export/okta.d.ts +0 -43
- package/dist/migrate/export/okta.js +0 -337
- package/dist/migrate/export/okta.js.map +0 -1
- package/dist/migrate/export/onelogin.d.ts +0 -22
- package/dist/migrate/export/onelogin.js +0 -123
- package/dist/migrate/export/onelogin.js.map +0 -1
- package/dist/migrate/export/ory-config.d.ts +0 -58
- package/dist/migrate/export/ory-config.js +0 -451
- package/dist/migrate/export/ory-config.js.map +0 -1
- package/dist/migrate/export/ory.d.ts +0 -81
- package/dist/migrate/export/ory.js +0 -555
- package/dist/migrate/export/ory.js.map +0 -1
- package/dist/migrate/export/password-detect.d.ts +0 -29
- package/dist/migrate/export/password-detect.js +0 -81
- package/dist/migrate/export/password-detect.js.map +0 -1
- package/dist/migrate/export/pingone.d.ts +0 -36
- package/dist/migrate/export/pingone.js +0 -218
- package/dist/migrate/export/pingone.js.map +0 -1
- package/dist/migrate/export/plugin-kit.d.ts +0 -25
- package/dist/migrate/export/plugin-kit.js +0 -82
- package/dist/migrate/export/plugin-kit.js.map +0 -1
- package/dist/migrate/export/pocketbase-config.d.ts +0 -28
- package/dist/migrate/export/pocketbase-config.js +0 -180
- package/dist/migrate/export/pocketbase-config.js.map +0 -1
- package/dist/migrate/export/pocketbase.d.ts +0 -52
- package/dist/migrate/export/pocketbase.js +0 -243
- package/dist/migrate/export/pocketbase.js.map +0 -1
- package/dist/migrate/export/project-files.d.ts +0 -15
- package/dist/migrate/export/project-files.js +0 -43
- package/dist/migrate/export/project-files.js.map +0 -1
- package/dist/migrate/export/propelauth-config.d.ts +0 -18
- package/dist/migrate/export/propelauth-config.js +0 -58
- package/dist/migrate/export/propelauth-config.js.map +0 -1
- package/dist/migrate/export/propelauth-harness.test-helper.d.ts +0 -62
- package/dist/migrate/export/propelauth-harness.test-helper.js +0 -109
- package/dist/migrate/export/propelauth-harness.test-helper.js.map +0 -1
- package/dist/migrate/export/propelauth.d.ts +0 -48
- package/dist/migrate/export/propelauth.js +0 -255
- package/dist/migrate/export/propelauth.js.map +0 -1
- package/dist/migrate/export/record-set.d.ts +0 -44
- package/dist/migrate/export/record-set.js +0 -98
- package/dist/migrate/export/record-set.js.map +0 -1
- package/dist/migrate/export/source-lines.d.ts +0 -17
- package/dist/migrate/export/source-lines.js +0 -43
- package/dist/migrate/export/source-lines.js.map +0 -1
- package/dist/migrate/export/sso-metadata.d.ts +0 -47
- package/dist/migrate/export/sso-metadata.js +0 -180
- package/dist/migrate/export/sso-metadata.js.map +0 -1
- package/dist/migrate/export/stytch-config.d.ts +0 -22
- package/dist/migrate/export/stytch-config.js +0 -102
- package/dist/migrate/export/stytch-config.js.map +0 -1
- package/dist/migrate/export/stytch.d.ts +0 -68
- package/dist/migrate/export/stytch.js +0 -510
- package/dist/migrate/export/stytch.js.map +0 -1
- package/dist/migrate/export/supabase-config.d.ts +0 -48
- package/dist/migrate/export/supabase-config.js +0 -408
- package/dist/migrate/export/supabase-config.js.map +0 -1
- package/dist/migrate/export/supabase.d.ts +0 -86
- package/dist/migrate/export/supabase.js +0 -524
- package/dist/migrate/export/supabase.js.map +0 -1
- package/dist/migrate/export/supertokens-config.d.ts +0 -20
- package/dist/migrate/export/supertokens-config.js +0 -150
- package/dist/migrate/export/supertokens-config.js.map +0 -1
- package/dist/migrate/export/supertokens.d.ts +0 -125
- package/dist/migrate/export/supertokens.js +0 -464
- package/dist/migrate/export/supertokens.js.map +0 -1
- package/dist/migrate/export/table.d.ts +0 -35
- package/dist/migrate/export/table.js +0 -248
- package/dist/migrate/export/table.js.map +0 -1
- package/dist/migrate/export/translate-kit.d.ts +0 -46
- package/dist/migrate/export/translate-kit.js +0 -148
- package/dist/migrate/export/translate-kit.js.map +0 -1
- package/dist/migrate/export/userfront-config.d.ts +0 -15
- package/dist/migrate/export/userfront-config.js +0 -49
- package/dist/migrate/export/userfront-config.js.map +0 -1
- package/dist/migrate/export/userfront.d.ts +0 -38
- package/dist/migrate/export/userfront.js +0 -189
- package/dist/migrate/export/userfront.js.map +0 -1
- package/dist/migrate/export/vendor-http.d.ts +0 -46
- package/dist/migrate/export/vendor-http.js +0 -138
- package/dist/migrate/export/vendor-http.js.map +0 -1
- package/dist/migrate/export/workos-config.d.ts +0 -23
- package/dist/migrate/export/workos-config.js +0 -125
- package/dist/migrate/export/workos-config.js.map +0 -1
- package/dist/migrate/export/workos.d.ts +0 -46
- package/dist/migrate/export/workos.js +0 -272
- package/dist/migrate/export/workos.js.map +0 -1
- package/dist/migrate/export/zip.d.ts +0 -8
- package/dist/migrate/export/zip.js +0 -66
- package/dist/migrate/export/zip.js.map +0 -1
- package/dist/migrate/export/zitadel-config.d.ts +0 -37
- package/dist/migrate/export/zitadel-config.js +0 -279
- package/dist/migrate/export/zitadel-config.js.map +0 -1
- package/dist/migrate/export/zitadel.d.ts +0 -82
- package/dist/migrate/export/zitadel.js +0 -447
- package/dist/migrate/export/zitadel.js.map +0 -1
- package/dist/migrate/firebase/plugin.d.ts +0 -2
- package/dist/migrate/firebase/plugin.js +0 -152
- package/dist/migrate/firebase/plugin.js.map +0 -1
- package/dist/migrate/framework/builtins.d.ts +0 -2
- package/dist/migrate/framework/builtins.js +0 -52
- package/dist/migrate/framework/builtins.js.map +0 -1
- package/dist/migrate/framework/commands.d.ts +0 -20
- package/dist/migrate/framework/commands.js +0 -58
- package/dist/migrate/framework/commands.js.map +0 -1
- package/dist/migrate/framework/custom.d.ts +0 -12
- package/dist/migrate/framework/custom.js +0 -96
- package/dist/migrate/framework/custom.js.map +0 -1
- package/dist/migrate/framework/orchestrator.d.ts +0 -113
- package/dist/migrate/framework/orchestrator.js +0 -532
- package/dist/migrate/framework/orchestrator.js.map +0 -1
- package/dist/migrate/framework/plugin.d.ts +0 -167
- package/dist/migrate/framework/plugin.js +0 -3
- package/dist/migrate/framework/plugin.js.map +0 -1
- package/dist/migrate/framework/registry.d.ts +0 -11
- package/dist/migrate/framework/registry.js +0 -44
- package/dist/migrate/framework/registry.js.map +0 -1
- package/dist/migrate/framework/report.d.ts +0 -17
- package/dist/migrate/framework/report.js +0 -103
- package/dist/migrate/framework/report.js.map +0 -1
- package/dist/migrate/frameworks/plugins.d.ts +0 -29
- package/dist/migrate/frameworks/plugins.js +0 -402
- package/dist/migrate/frameworks/plugins.js.map +0 -1
- package/dist/migrate/frameworks/report.d.ts +0 -92
- package/dist/migrate/frameworks/report.js +0 -207
- package/dist/migrate/frameworks/report.js.map +0 -1
- package/dist/migrate/frameworks/translate-js.d.ts +0 -5
- package/dist/migrate/frameworks/translate-js.js +0 -503
- package/dist/migrate/frameworks/translate-js.js.map +0 -1
- package/dist/migrate/frameworks/translate-rails-django.d.ts +0 -3
- package/dist/migrate/frameworks/translate-rails-django.js +0 -1391
- package/dist/migrate/frameworks/translate-rails-django.js.map +0 -1
- package/dist/migrate/frontegg/plugin.d.ts +0 -2
- package/dist/migrate/frontegg/plugin.js +0 -78
- package/dist/migrate/frontegg/plugin.js.map +0 -1
- package/dist/migrate/fusionauth/plugin.d.ts +0 -2
- package/dist/migrate/fusionauth/plugin.js +0 -109
- package/dist/migrate/fusionauth/plugin.js.map +0 -1
- package/dist/migrate/hanko/plugin.d.ts +0 -2
- package/dist/migrate/hanko/plugin.js +0 -100
- package/dist/migrate/hanko/plugin.js.map +0 -1
- package/dist/migrate/keycloak/plugin.d.ts +0 -2
- package/dist/migrate/keycloak/plugin.js +0 -148
- package/dist/migrate/keycloak/plugin.js.map +0 -1
- package/dist/migrate/kinde/plugin.d.ts +0 -2
- package/dist/migrate/kinde/plugin.js +0 -105
- package/dist/migrate/kinde/plugin.js.map +0 -1
- package/dist/migrate/ldap/plugin.d.ts +0 -2
- package/dist/migrate/ldap/plugin.js +0 -73
- package/dist/migrate/ldap/plugin.js.map +0 -1
- package/dist/migrate/logto/plugin.d.ts +0 -2
- package/dist/migrate/logto/plugin.js +0 -131
- package/dist/migrate/logto/plugin.js.map +0 -1
- package/dist/migrate/magic/plugin.d.ts +0 -2
- package/dist/migrate/magic/plugin.js +0 -56
- package/dist/migrate/magic/plugin.js.map +0 -1
- package/dist/migrate/nhost/plugin.d.ts +0 -2
- package/dist/migrate/nhost/plugin.js +0 -115
- package/dist/migrate/nhost/plugin.js.map +0 -1
- package/dist/migrate/oidc/plugin.d.ts +0 -2
- package/dist/migrate/oidc/plugin.js +0 -73
- package/dist/migrate/oidc/plugin.js.map +0 -1
- package/dist/migrate/okta/plugin.d.ts +0 -2
- package/dist/migrate/okta/plugin.js +0 -105
- package/dist/migrate/okta/plugin.js.map +0 -1
- package/dist/migrate/onelogin/plugin.d.ts +0 -2
- package/dist/migrate/onelogin/plugin.js +0 -61
- package/dist/migrate/onelogin/plugin.js.map +0 -1
- package/dist/migrate/ory/plugin.d.ts +0 -2
- package/dist/migrate/ory/plugin.js +0 -186
- package/dist/migrate/ory/plugin.js.map +0 -1
- package/dist/migrate/ping-identity/plugin.d.ts +0 -2
- package/dist/migrate/ping-identity/plugin.js +0 -100
- package/dist/migrate/ping-identity/plugin.js.map +0 -1
- package/dist/migrate/pocketbase/plugin.d.ts +0 -2
- package/dist/migrate/pocketbase/plugin.js +0 -99
- package/dist/migrate/pocketbase/plugin.js.map +0 -1
- package/dist/migrate/propelauth/plugin.d.ts +0 -2
- package/dist/migrate/propelauth/plugin.js +0 -65
- package/dist/migrate/propelauth/plugin.js.map +0 -1
- package/dist/migrate/saml/plugin.d.ts +0 -2
- package/dist/migrate/saml/plugin.js +0 -79
- package/dist/migrate/saml/plugin.js.map +0 -1
- package/dist/migrate/stytch/plugin.d.ts +0 -2
- package/dist/migrate/stytch/plugin.js +0 -97
- package/dist/migrate/stytch/plugin.js.map +0 -1
- package/dist/migrate/supabase/plugin.d.ts +0 -2
- package/dist/migrate/supabase/plugin.js +0 -149
- package/dist/migrate/supabase/plugin.js.map +0 -1
- package/dist/migrate/supertokens/plugin.d.ts +0 -2
- package/dist/migrate/supertokens/plugin.js +0 -114
- package/dist/migrate/supertokens/plugin.js.map +0 -1
- package/dist/migrate/user-table/plugin.d.ts +0 -2
- package/dist/migrate/user-table/plugin.js +0 -62
- package/dist/migrate/user-table/plugin.js.map +0 -1
- package/dist/migrate/userfront/plugin.d.ts +0 -2
- package/dist/migrate/userfront/plugin.js +0 -60
- package/dist/migrate/userfront/plugin.js.map +0 -1
- package/dist/migrate/workos/plugin.d.ts +0 -2
- package/dist/migrate/workos/plugin.js +0 -81
- package/dist/migrate/workos/plugin.js.map +0 -1
- package/dist/migrate/zitadel/plugin.d.ts +0 -2
- package/dist/migrate/zitadel/plugin.js +0 -114
- package/dist/migrate/zitadel/plugin.js.map +0 -1
- package/dist/output.d.ts +0 -41
- package/dist/output.js +0 -72
- package/dist/output.js.map +0 -1
- package/dist/project.d.ts +0 -64
- package/dist/project.js +0 -86
- package/dist/project.js.map +0 -1
- package/dist/prompt.d.ts +0 -15
- package/dist/prompt.js +0 -46
- package/dist/prompt.js.map +0 -1
- package/dist/run.d.ts +0 -12
- package/dist/run.js +0 -157
- package/dist/run.js.map +0 -1
- package/dist/secrets.d.ts +0 -41
- package/dist/secrets.js +0 -142
- package/dist/secrets.js.map +0 -1
- package/dist/serialize.d.ts +0 -30
- package/dist/serialize.js +0 -131
- package/dist/serialize.js.map +0 -1
- package/dist/version.d.ts +0 -7
- package/dist/version.js +0 -21
- package/dist/version.js.map +0 -1
|
@@ -1,503 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.translateAuthJs = translateAuthJs;
|
|
4
|
-
exports.translateLucia = translateLucia;
|
|
5
|
-
exports.translatePassport = translatePassport;
|
|
6
|
-
exports.translateIronSession = translateIronSession;
|
|
7
|
-
const upgrade_1 = require("@atlasauth/upgrade");
|
|
8
|
-
const report_1 = require("./report");
|
|
9
|
-
/**
|
|
10
|
-
* Config translators for the JavaScript frameworks — Auth.js / NextAuth,
|
|
11
|
-
* Lucia, Passport (+ express-session) and iron-session — reading the app's
|
|
12
|
-
* source statically (nothing runs, `.env` files are never read; env vars are
|
|
13
|
-
* carried by NAME as `${NAME}` placeholders).
|
|
14
|
-
*/
|
|
15
|
-
// ── StaticValue helpers ─────────────────────────────────────────────────────
|
|
16
|
-
const at = (v, fallback) => (v ? v.loc : fallback);
|
|
17
|
-
function cv(v) {
|
|
18
|
-
if (!v)
|
|
19
|
-
return undefined;
|
|
20
|
-
if (v.kind === 'string' || v.kind === 'number' || v.kind === 'boolean')
|
|
21
|
-
return { kind: 'literal', value: v.value, at: v.loc };
|
|
22
|
-
if (v.kind === 'env')
|
|
23
|
-
return { kind: 'env', name: v.name, at: v.loc };
|
|
24
|
-
return { kind: 'opaque', text: describe(v), at: v.loc };
|
|
25
|
-
}
|
|
26
|
-
function describe(v) {
|
|
27
|
-
switch (v.kind) {
|
|
28
|
-
case 'unknown':
|
|
29
|
-
return v.text.length > 60 ? `${v.text.slice(0, 57)}…` : v.text;
|
|
30
|
-
case 'call':
|
|
31
|
-
return `${v.callee}(…)`;
|
|
32
|
-
case 'external':
|
|
33
|
-
return `${v.name} from ${v.module}`;
|
|
34
|
-
case 'function':
|
|
35
|
-
return 'a function';
|
|
36
|
-
case 'param':
|
|
37
|
-
return `parameter ${v.name}`;
|
|
38
|
-
case 'template':
|
|
39
|
-
return 'a template string';
|
|
40
|
-
default:
|
|
41
|
-
return v.kind;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
const str = (v) => (v?.kind === 'string' ? v.value : undefined);
|
|
45
|
-
const num = (v) => (v?.kind === 'number' ? v.value : undefined);
|
|
46
|
-
const bool = (v) => (v?.kind === 'boolean' ? v.value : undefined);
|
|
47
|
-
/** The object a call's options resolve to (following a function that returns one: Auth.js lazy init). */
|
|
48
|
-
function objectOf(v) {
|
|
49
|
-
if (!v)
|
|
50
|
-
return undefined;
|
|
51
|
-
if (v.kind === 'object')
|
|
52
|
-
return v;
|
|
53
|
-
if (v.kind === 'function' && v.returns?.kind === 'object')
|
|
54
|
-
return v.returns;
|
|
55
|
-
return undefined;
|
|
56
|
-
}
|
|
57
|
-
function upperSnake(id) {
|
|
58
|
-
return id.replace(/[^A-Za-z0-9]+/g, '_').replace(/([a-z])([A-Z])/g, '$1_$2').toUpperCase();
|
|
59
|
-
}
|
|
60
|
-
function originOf(calls, what) {
|
|
61
|
-
const first = calls[0];
|
|
62
|
-
return first ? { origin: `${what} at ${first.loc.file}:${first.loc.line}`, where: first.loc } : { origin: `${what} (not found)`, where: { file: '(none)', line: 0 } };
|
|
63
|
-
}
|
|
64
|
-
function notFound(b, analysis, area, what) {
|
|
65
|
-
b.add('manual', area, what, `No ${what} was found under ${analysis.root} (${analysis.filesScanned} files scanned). Point the command at the folder that sets it up.`);
|
|
66
|
-
for (const e of analysis.parseErrors)
|
|
67
|
-
b.add('manual', 'setup', 'parse', `This file could not be parsed (${e.message}); settings in it were not read.`, { file: e.file, line: 1 });
|
|
68
|
-
return b.result();
|
|
69
|
-
}
|
|
70
|
-
// ── Auth.js / NextAuth ──────────────────────────────────────────────────────
|
|
71
|
-
const AUTHJS_ENTRY = [
|
|
72
|
-
{ id: 'nextauth', module: /^next-auth$/, names: ['default', 'NextAuth'] },
|
|
73
|
-
{ id: 'core', module: /^@auth\/core$/, names: ['Auth'] },
|
|
74
|
-
{ id: 'framework', module: /^@auth\/(express|sveltekit|solid-start|qwik|astro|fastify|hono|nuxt)$/, names: '*' },
|
|
75
|
-
];
|
|
76
|
-
/** Auth.js email-ish providers: magic links through an email service. */
|
|
77
|
-
const EMAIL_PROVIDERS = new Set(['email', 'nodemailer', 'resend', 'sendgrid', 'postmark', 'mailgun', 'forwardemail', 'loops']);
|
|
78
|
-
function translateAuthJs(project) {
|
|
79
|
-
const analysis = (0, upgrade_1.analyzeCalls)(project, AUTHJS_ENTRY, ['next-auth', '@auth/']);
|
|
80
|
-
const calls = analysis.calls.filter((c) => c.matcher !== 'framework' || /Auth\$?$/.test(c.imported.name));
|
|
81
|
-
const { origin, where } = originOf(calls, 'Auth.js config');
|
|
82
|
-
const b = new report_1.TranslationBuilder(origin, where);
|
|
83
|
-
if (!calls.length)
|
|
84
|
-
return notFound(b, analysis, 'setup', 'NextAuth() / Auth.js call');
|
|
85
|
-
const call = calls[0];
|
|
86
|
-
for (const other of calls.slice(1))
|
|
87
|
-
b.add('manual', 'setup', 'NextAuth()', `Another Auth.js call is here; only the one at ${call.loc.file}:${call.loc.line} was translated.`, other.loc);
|
|
88
|
-
const opts = objectOf(call.matcher === 'core' ? call.args[1] : call.args[0]);
|
|
89
|
-
if (!opts) {
|
|
90
|
-
b.add('manual', 'setup', 'config', 'The Auth.js config cannot be read statically; review its settings by hand.', call.loc);
|
|
91
|
-
return b.result();
|
|
92
|
-
}
|
|
93
|
-
const area = 'authjs';
|
|
94
|
-
const version = analysis.dependencies['next-auth'] ?? analysis.dependencies['@auth/core'] ?? '';
|
|
95
|
-
const v4 = /^[~^]?4\./.test(version);
|
|
96
|
-
// Providers.
|
|
97
|
-
const providers = (0, upgrade_1.propOf)(opts, 'providers');
|
|
98
|
-
let hasCredentials = false;
|
|
99
|
-
let hasPasskey = false;
|
|
100
|
-
if (providers?.kind === 'array') {
|
|
101
|
-
for (const p of providers.items) {
|
|
102
|
-
const module = p.kind === 'call' ? p.imported?.module : p.kind === 'external' ? p.module : undefined;
|
|
103
|
-
const id = module?.split('/').pop()?.toLowerCase();
|
|
104
|
-
const cfg = p.kind === 'call' ? p.args[0] : undefined;
|
|
105
|
-
if (!id) {
|
|
106
|
-
b.add('manual', 'providers', 'providers[]', `A provider that cannot be read statically (${describe(p)}).`, p.loc);
|
|
107
|
-
continue;
|
|
108
|
-
}
|
|
109
|
-
if (id === 'credentials') {
|
|
110
|
-
hasCredentials = true;
|
|
111
|
-
b.set('strategies.password', true);
|
|
112
|
-
b.add('differs', 'providers', 'Credentials', 'Atlas owns password sign-in: your authorize() is no longer called. Passwords your app stored with bcrypt, Argon2, scrypt or PBKDF2 carry over in the export; for any other scheme turn on lazy migration (preset authjs_credentials) so Atlas asks your old Credentials endpoint once per user.', p.loc, 'auth_config.strategies.password');
|
|
113
|
-
continue;
|
|
114
|
-
}
|
|
115
|
-
if (EMAIL_PROVIDERS.has(id)) {
|
|
116
|
-
b.set('strategies.emailLink', true);
|
|
117
|
-
b.add('differs', 'providers', id, 'Email sign-in links on. Atlas sends them through your email provider (configure it in Atlas); customise the "magic link" template instead of sendVerificationRequest.', p.loc, 'auth_config.strategies.emailLink');
|
|
118
|
-
continue;
|
|
119
|
-
}
|
|
120
|
-
if (id === 'passkey' || id === 'webauthn') {
|
|
121
|
-
hasPasskey = true;
|
|
122
|
-
b.set('strategies.passkey', true);
|
|
123
|
-
b.add('mapped', 'providers', id, 'Passkey sign-in on. Registered passkeys are imported when you pass the RP id to the export (same domain).', p.loc, 'auth_config.strategies.passkey');
|
|
124
|
-
continue;
|
|
125
|
-
}
|
|
126
|
-
const atlasKey = report_1.FRAMEWORK_PROVIDER_MAP[id];
|
|
127
|
-
if (!atlasKey) {
|
|
128
|
-
b.add('manual', 'providers', id, `"${id}" has no same-named Atlas provider: add it as a custom OAuth / OIDC provider (custom_oauth_providers) with its endpoints.`, p.loc);
|
|
129
|
-
continue;
|
|
130
|
-
}
|
|
131
|
-
const upper = upperSnake(id);
|
|
132
|
-
// v5 reads AUTH_<PROVIDER>_ID / _SECRET when the provider is passed without options.
|
|
133
|
-
const idEnv = v4 ? `${upper}_CLIENT_ID` : `AUTH_${upper}_ID`;
|
|
134
|
-
const secretEnv = v4 ? `${upper}_CLIENT_SECRET` : `AUTH_${upper}_SECRET`;
|
|
135
|
-
const clientId = b.configString(cv((0, upgrade_1.propOf)(cfg, 'clientId')) ?? (cfg ? undefined : { kind: 'env', name: idEnv, at: p.loc }), `${id} client id`, idEnv, { area: 'providers', setting: `${id}.clientId` });
|
|
136
|
-
const clientSecret = atlasKey === 'apple' ? undefined : b.configString(cv((0, upgrade_1.propOf)(cfg, 'clientSecret')) ?? (cfg ? undefined : { kind: 'env', name: secretEnv, at: p.loc }), `${id} client secret`, secretEnv, { area: 'providers', setting: `${id}.clientSecret`, secret: true });
|
|
137
|
-
const scope = str((0, upgrade_1.propOf)((0, upgrade_1.propOf)((0, upgrade_1.propOf)(cfg, 'authorization'), 'params'), 'scope'));
|
|
138
|
-
const values = {};
|
|
139
|
-
if (atlasKey === 'microsoft') {
|
|
140
|
-
const tenant = (0, upgrade_1.propOf)(cfg, 'tenantId') ?? (0, upgrade_1.propOf)(cfg, 'issuer');
|
|
141
|
-
if (tenant)
|
|
142
|
-
values.tenant = b.configString(cv(tenant), 'Microsoft tenant', 'MICROSOFT_TENANT_ID', { area: 'providers', setting: `${id}.tenantId` });
|
|
143
|
-
}
|
|
144
|
-
if (atlasKey === 'apple') {
|
|
145
|
-
for (const [k, env, label] of [['team_id', 'APPLE_TEAM_ID', 'team id'], ['key_id', 'APPLE_KEY_ID', 'key id'], ['private_key', 'APPLE_PRIVATE_KEY', '.p8 key contents']]) {
|
|
146
|
-
values[k] = `\${${env}}`;
|
|
147
|
-
b.env.set(env, `Sign in with Apple ${label}`);
|
|
148
|
-
}
|
|
149
|
-
b.add('differs', 'providers', `${id}.clientSecret`, 'Atlas builds the Apple client secret itself from your team id, key id and .p8 key; keep the same Services ID so Apple user ids stay the same.', p.loc, 'oauth_providers apple');
|
|
150
|
-
}
|
|
151
|
-
b.oauthProvider({ sourceId: id, atlasKey, clientId, clientSecret, scopes: scope?.split(/[\s,]+/).filter(Boolean), values, area: 'providers', setting: id, at: p.loc });
|
|
152
|
-
for (const fn of ['profile', 'userinfo', 'token']) {
|
|
153
|
-
const f = (0, upgrade_1.propOf)(cfg, fn);
|
|
154
|
-
if (f)
|
|
155
|
-
b.add('manual', 'providers', `${id}.${fn}`, fn === 'profile' ? "Atlas maps the provider's profile itself; move extra profile fields into user metadata with a post-login Action." : 'Atlas runs this step itself for built-in providers; remove the override.', f.loc);
|
|
156
|
-
}
|
|
157
|
-
if (bool((0, upgrade_1.propOf)(cfg, 'allowDangerousEmailAccountLinking'))) {
|
|
158
|
-
b.set('accountLinking', 'auto');
|
|
159
|
-
b.add('differs', 'providers', `${id}.allowDangerousEmailAccountLinking`, 'Atlas links a social sign-in to an existing account only when the provider asserts a verified email.', (0, upgrade_1.propOf)(cfg, 'allowDangerousEmailAccountLinking').loc, 'auth_config.accountLinking');
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
else if (providers) {
|
|
164
|
-
b.add('manual', 'providers', 'providers', `Cannot read the providers (${describe(providers)}).`, providers.loc);
|
|
165
|
-
}
|
|
166
|
-
// Session.
|
|
167
|
-
const session = (0, upgrade_1.propOf)(opts, 'session');
|
|
168
|
-
const adapter = (0, upgrade_1.propOf)(opts, 'adapter');
|
|
169
|
-
const strategy = str((0, upgrade_1.propOf)(session, 'strategy')) ?? (adapter && !hasCredentials ? 'database' : 'jwt');
|
|
170
|
-
const maxAge = num((0, upgrade_1.propOf)(session, 'maxAge')) ?? 30 * report_1.DAY;
|
|
171
|
-
b.session(maxAge, true, area, 'session.maxAge', at((0, upgrade_1.propOf)(session, 'maxAge') ?? session, call.loc), 'Auth.js');
|
|
172
|
-
if ((0, upgrade_1.propOf)(session, 'updateAge'))
|
|
173
|
-
b.add('mapped', area, 'session.updateAge', 'Atlas extends a used session itself and refreshes its short-lived token every minute; nothing to set.', (0, upgrade_1.propOf)(session, 'updateAge').loc);
|
|
174
|
-
if ((0, upgrade_1.propOf)(opts, 'jwt')) {
|
|
175
|
-
const jwt = (0, upgrade_1.propOf)(opts, 'jwt');
|
|
176
|
-
if ((0, upgrade_1.propOf)(jwt, 'encode') || (0, upgrade_1.propOf)(jwt, 'decode'))
|
|
177
|
-
b.add('manual', area, 'jwt.encode/decode', 'A custom JWT encoding: the bridge extractor reads the default Auth.js JWE only; open your format in a custom extractToken.', jwt.loc);
|
|
178
|
-
else
|
|
179
|
-
b.add('mapped', area, 'jwt', 'Atlas signs its own session tokens (RS256, JWKS published); verify them with the Atlas SDKs instead of next-auth/jwt.', jwt.loc);
|
|
180
|
-
}
|
|
181
|
-
if (adapter) {
|
|
182
|
-
const name = adapter.kind === 'call' ? adapter.callee : describe(adapter);
|
|
183
|
-
b.add('mapped', area, 'adapter', `${name}: your users, accounts, authenticators and sessions are read from this database by the export (dump the tables, then atlas migrate authjs export --set dump=<dir>).`, adapter.loc);
|
|
184
|
-
}
|
|
185
|
-
b.bridge = { preset: strategy === 'database' ? 'authjs' : 'authjs_jwt', vars: {} };
|
|
186
|
-
b.add('mapped', 'bridge', 'session.strategy', strategy === 'database'
|
|
187
|
-
? 'Database sessions: imported with the export; the bridge matches the session cookie (preset authjs).'
|
|
188
|
-
: 'JWT sessions: the bridge decrypts the cookie on your server with AUTH_SECRET and exchanges a one-time assertion (preset authjs_jwt, a bridge secret in the bridge settings).', at((0, upgrade_1.propOf)(session, 'strategy') ?? session, call.loc), `bridge preset ${b.bridge.preset}`);
|
|
189
|
-
if (hasCredentials)
|
|
190
|
-
b.lazy = { preset: 'authjs_credentials', config: {} };
|
|
191
|
-
// Everything else.
|
|
192
|
-
const secret = (0, upgrade_1.propOf)(opts, 'secret');
|
|
193
|
-
if (secret)
|
|
194
|
-
b.add('mapped', area, 'secret', 'Atlas signs its own sessions; AUTH_SECRET is only needed by the bridge extractor (JWT sessions) during the cutover.', secret.loc);
|
|
195
|
-
const callbacks = (0, upgrade_1.propOf)(opts, 'callbacks');
|
|
196
|
-
if (callbacks?.kind === 'object') {
|
|
197
|
-
for (const [name, fn] of Object.entries(callbacks.props)) {
|
|
198
|
-
const note = {
|
|
199
|
-
signIn: 'Allow/deny logic moves to a pre-sign-in or post-login Action (return deny with a reason).',
|
|
200
|
-
jwt: 'Extra token claims come from a JWT template (custom claims from user metadata) or a post-login Action.',
|
|
201
|
-
session: 'Extra session fields: read them from the Atlas session claims or user metadata (useUser / auth()).',
|
|
202
|
-
redirect: 'Allowed redirect targets are the instance redirect URLs (redirect_urls).',
|
|
203
|
-
authorized: 'Route protection: the Atlas middleware (publicRoutes / protect) replaces it.',
|
|
204
|
-
};
|
|
205
|
-
b.add('manual', 'callbacks', `callbacks.${name}`, note[name] ?? 'Move this logic to an Atlas Action.', fn.loc);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
const events = (0, upgrade_1.propOf)(opts, 'events');
|
|
209
|
-
if (events?.kind === 'object')
|
|
210
|
-
for (const [name, fn] of Object.entries(events.props))
|
|
211
|
-
b.add('manual', 'events', `events.${name}`, 'Subscribe to the matching Atlas webhook (user.created, session.created, session.ended …) instead.', fn.loc);
|
|
212
|
-
const pages = (0, upgrade_1.propOf)(opts, 'pages');
|
|
213
|
-
if (pages?.kind === 'object') {
|
|
214
|
-
for (const [name, v] of Object.entries(pages.props)) {
|
|
215
|
-
b.add('manual', 'pages', `pages.${name}`, `Atlas hosts sign-in, sign-up, verification and error pages (themeable), or embed the components on your own route${str(v) ? ` (${str(v)})` : ''}.`, v.loc, 'auth_config.accountUx');
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
const cookies = (0, upgrade_1.propOf)(opts, 'cookies');
|
|
219
|
-
if (cookies) {
|
|
220
|
-
const name = str((0, upgrade_1.propOf)((0, upgrade_1.propOf)(cookies, 'sessionToken'), 'name'));
|
|
221
|
-
if (name)
|
|
222
|
-
b.bridge.vars.cookie_name = name;
|
|
223
|
-
b.add(name ? 'mapped' : 'manual', 'bridge', 'cookies.sessionToken', name ? `The bridge reads the session from "${name}" (pass cookieName to authJsExtractor).` : 'Custom cookie settings: pass the session cookie name to authJsExtractor.', cookies.loc);
|
|
224
|
-
}
|
|
225
|
-
if ((0, upgrade_1.propOf)(opts, 'trustHost') || (0, upgrade_1.propOf)(opts, 'useSecureCookies') || (0, upgrade_1.propOf)(opts, 'basePath')) {
|
|
226
|
-
b.add('mapped', area, 'trustHost / useSecureCookies / basePath', 'Not needed: Atlas serves the auth endpoints on its own domain with secure cookies.', ((0, upgrade_1.propOf)(opts, 'trustHost') ?? (0, upgrade_1.propOf)(opts, 'useSecureCookies') ?? (0, upgrade_1.propOf)(opts, 'basePath')).loc);
|
|
227
|
-
}
|
|
228
|
-
if ((0, upgrade_1.propOf)(opts, 'theme'))
|
|
229
|
-
b.add('differs', area, 'theme', 'Brand the hosted pages in Atlas (colors, logo) instead.', (0, upgrade_1.propOf)(opts, 'theme').loc, 'instance branding');
|
|
230
|
-
if (bool((0, upgrade_1.propOf)((0, upgrade_1.propOf)(opts, 'experimental'), 'enableWebAuthn')) && !hasPasskey)
|
|
231
|
-
b.add('mapped', area, 'experimental.enableWebAuthn', 'Passkeys are a stable Atlas sign-in method.', (0, upgrade_1.propOf)(opts, 'experimental').loc, 'auth_config.strategies.passkey');
|
|
232
|
-
return b.result();
|
|
233
|
-
}
|
|
234
|
-
// ── Lucia ───────────────────────────────────────────────────────────────────
|
|
235
|
-
/** arctic provider class → [Atlas key, index of clientId, index of clientSecret]. */
|
|
236
|
-
const ARCTIC = {
|
|
237
|
-
GitHub: ['github', 0, 1],
|
|
238
|
-
Google: ['google', 0, 1],
|
|
239
|
-
Discord: ['discord', 0, 1],
|
|
240
|
-
Facebook: ['facebook', 0, 1],
|
|
241
|
-
Twitter: ['x', 0, 1],
|
|
242
|
-
Twitch: ['twitch', 0, 1],
|
|
243
|
-
Spotify: ['spotify', 0, 1],
|
|
244
|
-
LinkedIn: ['linkedin', 0, 1],
|
|
245
|
-
Slack: ['slack', 0, 1],
|
|
246
|
-
Reddit: ['reddit', 0, 1],
|
|
247
|
-
Notion: ['notion', 0, 1],
|
|
248
|
-
Zoom: ['zoom', 0, 1],
|
|
249
|
-
Dropbox: ['dropbox', 0, 1],
|
|
250
|
-
Atlassian: ['atlassian', 0, 1],
|
|
251
|
-
Salesforce: ['salesforce', 1, 2],
|
|
252
|
-
Line: ['line', 0, 1],
|
|
253
|
-
Kakao: ['kakao', 0, 1],
|
|
254
|
-
Naver: ['naver', 0, 1],
|
|
255
|
-
VK: ['vk', 0, 1],
|
|
256
|
-
Apple: ['apple', 0, null],
|
|
257
|
-
MicrosoftEntraId: ['microsoft', 1, 2],
|
|
258
|
-
GitLab: ['gitlab', 1, 2],
|
|
259
|
-
Auth0: ['auth0', 1, 2],
|
|
260
|
-
Okta: ['okta', 2, 3],
|
|
261
|
-
Bitbucket: ['bitbucket', 0, 1],
|
|
262
|
-
Amazon: ['amazon', 0, 1],
|
|
263
|
-
Shopify: ['shopify', 1, 2],
|
|
264
|
-
};
|
|
265
|
-
/** `new TimeSpan(30, "d")` (lucia / oslo) or v2 milliseconds → seconds. */
|
|
266
|
-
function timeSpanSeconds(v) {
|
|
267
|
-
if (v?.kind === 'call' && /TimeSpan$/.test(v.callee) && v.args[0]?.kind === 'number' && v.args[1]?.kind === 'string') {
|
|
268
|
-
const unit = { ms: 0.001, s: 1, m: 60, h: 3600, d: report_1.DAY, w: 7 * report_1.DAY }[v.args[1].value];
|
|
269
|
-
return unit !== undefined ? Math.round(v.args[0].value * unit) : undefined;
|
|
270
|
-
}
|
|
271
|
-
return undefined;
|
|
272
|
-
}
|
|
273
|
-
function translateLucia(project) {
|
|
274
|
-
const analysis = (0, upgrade_1.analyzeCalls)(project, [
|
|
275
|
-
{ id: 'v3', module: /^lucia$/, names: ['Lucia'], construct: true },
|
|
276
|
-
{ id: 'v2', module: /^lucia$/, names: ['lucia'], construct: false },
|
|
277
|
-
{ id: 'arctic', module: /^arctic$/, names: '*', construct: true },
|
|
278
|
-
{ id: 'oauth_v2', module: /^@lucia-auth\/oauth\/providers$/, names: '*', construct: false },
|
|
279
|
-
], ['lucia', 'arctic']);
|
|
280
|
-
const core = analysis.calls.filter((c) => c.matcher === 'v3' || c.matcher === 'v2');
|
|
281
|
-
const { origin, where } = originOf(core.length ? core : analysis.calls, 'Lucia');
|
|
282
|
-
const b = new report_1.TranslationBuilder(origin, where);
|
|
283
|
-
if (!analysis.calls.length)
|
|
284
|
-
return notFound(b, analysis, 'setup', 'Lucia setup (new Lucia(...) or arctic providers)');
|
|
285
|
-
const area = 'lucia';
|
|
286
|
-
b.set('strategies.password', true);
|
|
287
|
-
b.bridge = { preset: 'lucia', vars: {} };
|
|
288
|
-
const call = core[0];
|
|
289
|
-
if (call) {
|
|
290
|
-
const opts = objectOf(call.matcher === 'v3' ? call.args[1] : call.args[0]);
|
|
291
|
-
const cookie = (0, upgrade_1.propOf)(opts, 'sessionCookie');
|
|
292
|
-
const name = str((0, upgrade_1.propOf)(cookie, 'name'));
|
|
293
|
-
if (name)
|
|
294
|
-
b.bridge.vars.cookie_name = name;
|
|
295
|
-
b.add('mapped', 'bridge', 'sessionCookie.name', `The bridge reads "${name ?? 'auth_session'}" (preset lucia).`, at((0, upgrade_1.propOf)(cookie, 'name') ?? cookie, call.loc), 'bridge preset lucia');
|
|
296
|
-
if (bool((0, upgrade_1.propOf)(cookie, 'expires')) === false)
|
|
297
|
-
b.add('differs', area, 'sessionCookie.expires', 'Browser-session cookies: Atlas keeps the session until it expires; a "remember me" off at sign-in gives a browser-session cookie per user.', (0, upgrade_1.propOf)(cookie, 'expires').loc);
|
|
298
|
-
const domain = (0, upgrade_1.propOf)((0, upgrade_1.propOf)(cookie, 'attributes'), 'domain');
|
|
299
|
-
if (domain)
|
|
300
|
-
b.add('manual', area, 'sessionCookie.attributes.domain', 'Shared cookies across subdomains: turn on session.crossSubdomainCookies and verify the parent domain in Atlas.', domain.loc, 'auth_config.session.crossSubdomainCookies');
|
|
301
|
-
if (call.matcher === 'v3') {
|
|
302
|
-
const span = (0, upgrade_1.propOf)(opts, 'sessionExpiresIn');
|
|
303
|
-
const seconds = timeSpanSeconds(span) ?? 30 * report_1.DAY;
|
|
304
|
-
b.session(seconds, true, area, 'sessionExpiresIn', at(span, call.loc), 'Lucia');
|
|
305
|
-
}
|
|
306
|
-
else {
|
|
307
|
-
const span = (0, upgrade_1.propOf)(opts, 'sessionExpiresIn');
|
|
308
|
-
const active = num((0, upgrade_1.propOf)(span, 'activePeriod')) ?? report_1.DAY * 1000;
|
|
309
|
-
const idle = num((0, upgrade_1.propOf)(span, 'idlePeriod')) ?? 14 * report_1.DAY * 1000;
|
|
310
|
-
b.session(Math.round((active + idle) / 1000), true, area, 'sessionExpiresIn.activePeriod + idlePeriod', at(span, call.loc), 'Lucia');
|
|
311
|
-
if ((0, upgrade_1.propOf)(opts, 'csrfProtection'))
|
|
312
|
-
b.add('mapped', area, 'csrfProtection', 'Atlas checks the origin of every state-changing request itself.', (0, upgrade_1.propOf)(opts, 'csrfProtection').loc);
|
|
313
|
-
}
|
|
314
|
-
for (const key of ['getUserAttributes', 'getSessionAttributes']) {
|
|
315
|
-
const fn = (0, upgrade_1.propOf)(opts, key);
|
|
316
|
-
if (fn)
|
|
317
|
-
b.add('manual', area, key, key === 'getUserAttributes' ? 'User fields: read them from the Atlas user (currentUser()) or put app fields in user metadata (imported from the export).' : 'Session attributes: use session custom data (set from a post-login Action).', fn.loc);
|
|
318
|
-
}
|
|
319
|
-
const adapter = call.args[0];
|
|
320
|
-
if (call.matcher === 'v3' && adapter)
|
|
321
|
-
b.add('mapped', area, 'adapter', `${describe(adapter)}: users, keys and sessions are read from this database by the export.`, adapter.loc);
|
|
322
|
-
}
|
|
323
|
-
else {
|
|
324
|
-
b.add('manual', area, 'session management', 'No Lucia instance was found (the Lucia guide implements sessions in your code): the export reads your session table (ids hashed with sha256 are detected).', where);
|
|
325
|
-
b.session(30 * report_1.DAY, true, area, 'session lifetime (guide default 30 days)', where, 'Lucia');
|
|
326
|
-
}
|
|
327
|
-
for (const c of analysis.calls.filter((x) => x.matcher === 'arctic' || x.matcher === 'oauth_v2')) {
|
|
328
|
-
const cls = c.imported.name;
|
|
329
|
-
const known = c.matcher === 'arctic' ? ARCTIC[cls] : report_1.FRAMEWORK_PROVIDER_MAP[cls] ? [report_1.FRAMEWORK_PROVIDER_MAP[cls], -1, -1] : undefined;
|
|
330
|
-
if (!known) {
|
|
331
|
-
b.add('manual', 'providers', cls, `No same-named Atlas provider for ${cls}: add it as a custom OAuth provider.`, c.loc);
|
|
332
|
-
continue;
|
|
333
|
-
}
|
|
334
|
-
const [atlasKey, idIdx, secretIdx] = known;
|
|
335
|
-
const upper = upperSnake(atlasKey);
|
|
336
|
-
// @lucia-auth/oauth v2: github(auth, { clientId, clientSecret }).
|
|
337
|
-
const options = idIdx < 0 ? c.args[1] : undefined;
|
|
338
|
-
const clientId = b.configString(cv(idIdx < 0 ? (0, upgrade_1.propOf)(options, 'clientId') : c.args[idIdx]), `${cls} client id`, `${upper}_CLIENT_ID`, { area: 'providers', setting: `${cls}.clientId` });
|
|
339
|
-
const clientSecret = secretIdx === null ? undefined : b.configString(cv(secretIdx < 0 ? (0, upgrade_1.propOf)(options, 'clientSecret') : c.args[secretIdx]), `${cls} client secret`, `${upper}_CLIENT_SECRET`, { area: 'providers', setting: `${cls}.clientSecret`, secret: true });
|
|
340
|
-
const values = {};
|
|
341
|
-
if (atlasKey === 'apple') {
|
|
342
|
-
for (const [k, env] of [['team_id', 'APPLE_TEAM_ID'], ['key_id', 'APPLE_KEY_ID'], ['private_key', 'APPLE_PRIVATE_KEY']]) {
|
|
343
|
-
values[k] = `\${${env}}`;
|
|
344
|
-
b.env.set(env, `Sign in with Apple ${k.replace('_', ' ')}`);
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
if (atlasKey === 'microsoft')
|
|
348
|
-
values.tenant = b.configString(cv(c.args[0]), 'Microsoft tenant', 'MICROSOFT_TENANT_ID', { area: 'providers', setting: `${cls}.tenant` });
|
|
349
|
-
b.oauthProvider({ sourceId: cls.toLowerCase(), atlasKey, clientId, clientSecret, values, area: 'providers', setting: `new ${cls}(…)`, at: c.loc });
|
|
350
|
-
}
|
|
351
|
-
return b.result();
|
|
352
|
-
}
|
|
353
|
-
// ── Passport + express-session ──────────────────────────────────────────────
|
|
354
|
-
/** Passport strategy package → Atlas provider (or a special kind). */
|
|
355
|
-
const PASSPORT_STRATEGIES = {
|
|
356
|
-
'passport-google-oauth20': 'google',
|
|
357
|
-
'passport-google-oauth2': 'google',
|
|
358
|
-
'passport-google-oidc': 'google',
|
|
359
|
-
'passport-github2': 'github',
|
|
360
|
-
'passport-github': 'github',
|
|
361
|
-
'passport-facebook': 'facebook',
|
|
362
|
-
'passport-microsoft': 'microsoft',
|
|
363
|
-
'passport-apple': 'apple',
|
|
364
|
-
'passport-discord': 'discord',
|
|
365
|
-
'passport-gitlab2': 'gitlab',
|
|
366
|
-
'passport-linkedin-oauth2': 'linkedin',
|
|
367
|
-
'passport-slack-oauth2': 'slack',
|
|
368
|
-
'passport-slack': 'slack',
|
|
369
|
-
'passport-spotify': 'spotify',
|
|
370
|
-
'passport-twitch-new': 'twitch',
|
|
371
|
-
'passport-auth0': 'auth0',
|
|
372
|
-
'passport-okta-oauth20': 'okta',
|
|
373
|
-
'passport-bitbucket-oauth2': 'bitbucket',
|
|
374
|
-
'passport-amazon': 'amazon',
|
|
375
|
-
};
|
|
376
|
-
function translatePassport(project) {
|
|
377
|
-
const analysis = (0, upgrade_1.analyzeCalls)(project, [
|
|
378
|
-
{ id: 'strategy', module: /^(passport-[a-z0-9-]+|@node-saml\/passport-saml|@passport-js\/[a-z0-9-]+|passport-azure-ad)$/, names: '*', construct: true },
|
|
379
|
-
{ id: 'session', module: /^express-session$/, names: ['default'], construct: false },
|
|
380
|
-
{ id: 'cookie_session', module: /^cookie-session$/, names: ['default'], construct: false },
|
|
381
|
-
], ['passport', 'express-session', 'cookie-session']);
|
|
382
|
-
const strategies = analysis.calls.filter((c) => c.matcher === 'strategy');
|
|
383
|
-
const { origin, where } = originOf(strategies.length ? strategies : analysis.calls, 'Passport');
|
|
384
|
-
const b = new report_1.TranslationBuilder(origin, where);
|
|
385
|
-
if (!analysis.calls.length)
|
|
386
|
-
return notFound(b, analysis, 'setup', 'passport.use(new …Strategy()) / express-session');
|
|
387
|
-
b.bridge = { preset: 'passport', vars: {} };
|
|
388
|
-
for (const c of strategies) {
|
|
389
|
-
const module = c.imported.module;
|
|
390
|
-
const opts = objectOf(c.args[0]);
|
|
391
|
-
const atlasKey = PASSPORT_STRATEGIES[module];
|
|
392
|
-
if (atlasKey) {
|
|
393
|
-
const upper = upperSnake(atlasKey);
|
|
394
|
-
const clientId = b.configString(cv((0, upgrade_1.propOf)(opts, 'clientID') ?? (0, upgrade_1.propOf)(opts, 'clientId')), `${atlasKey} client id`, `${upper}_CLIENT_ID`, { area: 'strategies', setting: `${module}.clientID` });
|
|
395
|
-
const clientSecret = atlasKey === 'apple' ? undefined : b.configString(cv((0, upgrade_1.propOf)(opts, 'clientSecret')), `${atlasKey} client secret`, `${upper}_CLIENT_SECRET`, { area: 'strategies', setting: `${module}.clientSecret`, secret: true });
|
|
396
|
-
const scope = (0, upgrade_1.propOf)(opts, 'scope');
|
|
397
|
-
const scopes = scope?.kind === 'array' ? scope.items.map(str).filter((s) => Boolean(s)) : str(scope)?.split(/[\s,]+/);
|
|
398
|
-
const values = {};
|
|
399
|
-
if (atlasKey === 'auth0' || atlasKey === 'okta') {
|
|
400
|
-
const domain = (0, upgrade_1.propOf)(opts, 'domain') ?? (0, upgrade_1.propOf)(opts, 'audience');
|
|
401
|
-
values.domain = b.configString(cv(domain), `${atlasKey} domain`, `${upper}_DOMAIN`, { area: 'strategies', setting: `${module}.domain` });
|
|
402
|
-
}
|
|
403
|
-
if (atlasKey === 'microsoft' && (0, upgrade_1.propOf)(opts, 'tenant'))
|
|
404
|
-
values.tenant = b.configString(cv((0, upgrade_1.propOf)(opts, 'tenant')), 'Microsoft tenant', 'MICROSOFT_TENANT_ID', { area: 'strategies', setting: `${module}.tenant` });
|
|
405
|
-
b.oauthProvider({ sourceId: atlasKey, atlasKey, clientId, clientSecret, scopes, values, area: 'strategies', setting: `new ${c.callee}(…) from ${module}`, at: c.loc });
|
|
406
|
-
if ((0, upgrade_1.propOf)(opts, 'callbackURL'))
|
|
407
|
-
b.add('mapped', 'strategies', `${module}.callbackURL`, "Atlas receives the provider callback on its own domain: add Atlas's redirect_uri to the OAuth app (keep the old one until the cutover ends).", (0, upgrade_1.propOf)(opts, 'callbackURL').loc);
|
|
408
|
-
b.add('manual', 'strategies', `${module} verify callback`, 'Your verify(accessToken, refreshToken, profile, done) logic (find-or-create the user) moves to Atlas: identities link by provider user id; put extra steps in a post-login Action.', c.loc);
|
|
409
|
-
continue;
|
|
410
|
-
}
|
|
411
|
-
if (module === 'passport-local') {
|
|
412
|
-
const field = str((0, upgrade_1.propOf)(opts, 'usernameField')) ?? 'username';
|
|
413
|
-
b.set('strategies.password', true);
|
|
414
|
-
if (field !== 'email')
|
|
415
|
-
b.set('strategies.username', true);
|
|
416
|
-
b.add('differs', 'strategies', 'passport-local', `Password sign-in by ${field === 'email' ? 'email' : `${field} (Atlas usernames)`}; Atlas verifies passwords itself. Hashes your app stored with bcrypt, Argon2, PBKDF2 or passport-local-mongoose carry over in the export.`, c.loc, field === 'email' ? 'auth_config.strategies.password' : 'auth_config.strategies.username');
|
|
417
|
-
continue;
|
|
418
|
-
}
|
|
419
|
-
if (module === 'passport-jwt' || module === 'passport-http-bearer' || module === 'passport-headerapikey') {
|
|
420
|
-
b.add('manual', 'strategies', module, 'Bearer-token APIs: verify Atlas session tokens (or Atlas API keys / M2M tokens) with requireAuth() from the Atlas Express adapter or the Backend SDK instead.', c.loc);
|
|
421
|
-
continue;
|
|
422
|
-
}
|
|
423
|
-
if (module === 'passport-saml' || module === '@node-saml/passport-saml') {
|
|
424
|
-
const entryPoint = (0, upgrade_1.propOf)(opts, 'entryPoint');
|
|
425
|
-
const entry = str(entryPoint) ?? (entryPoint ? describe(entryPoint) : 'from the IdP metadata');
|
|
426
|
-
b.add('manual', 'sso', module, `Create a SAML connection in Atlas (enterprise SSO) with the IdP SSO URL (${entry}), its certificate and issuer, then update the IdP with Atlas's ACS URL and entity id.`, c.loc, 'sso_connections');
|
|
427
|
-
continue;
|
|
428
|
-
}
|
|
429
|
-
if (module === 'passport-openidconnect' || module === 'passport-azure-ad' || module === 'passport-oauth2') {
|
|
430
|
-
b.add('manual', 'strategies', module, `Add this identity provider as a custom ${module === 'passport-oauth2' ? 'OAuth 2.0' : 'OIDC'} provider in Atlas (custom_oauth_providers) or as an enterprise OIDC connection, with the same client id.`, c.loc, 'custom_oauth_providers');
|
|
431
|
-
continue;
|
|
432
|
-
}
|
|
433
|
-
if (module === 'passport-magic-link' || module === 'passport-magic-login') {
|
|
434
|
-
b.set('strategies.emailLink', true);
|
|
435
|
-
b.add('differs', 'strategies', module, 'Email sign-in links on; Atlas sends them through your email provider.', c.loc, 'auth_config.strategies.emailLink');
|
|
436
|
-
continue;
|
|
437
|
-
}
|
|
438
|
-
b.add('manual', 'strategies', module, 'A Passport strategy with no Atlas counterpart to map automatically; review it.', c.loc);
|
|
439
|
-
}
|
|
440
|
-
for (const c of analysis.calls.filter((x) => x.matcher === 'session')) {
|
|
441
|
-
const opts = objectOf(c.args[0]);
|
|
442
|
-
const name = str((0, upgrade_1.propOf)(opts, 'name')) ?? 'connect.sid';
|
|
443
|
-
b.bridge.vars.cookie_name = name;
|
|
444
|
-
b.add('mapped', 'bridge', 'session({ name })', `The bridge reads "${name}" and pulls the session id out with expressSessionExtractor() (preset passport).`, at((0, upgrade_1.propOf)(opts, 'name') ?? opts, c.loc), 'bridge preset passport');
|
|
445
|
-
const cookie = (0, upgrade_1.propOf)(opts, 'cookie');
|
|
446
|
-
const maxAgeMs = num((0, upgrade_1.propOf)(cookie, 'maxAge')) ?? num((0, upgrade_1.propOf)(cookie, 'expires'));
|
|
447
|
-
const rolling = bool((0, upgrade_1.propOf)(opts, 'rolling')) === true;
|
|
448
|
-
if (maxAgeMs !== undefined)
|
|
449
|
-
b.session(Math.round(maxAgeMs / 1000), rolling, 'express-session', 'cookie.maxAge', at((0, upgrade_1.propOf)(cookie, 'maxAge'), c.loc), 'express-session');
|
|
450
|
-
else
|
|
451
|
-
b.add('differs', 'express-session', 'cookie.maxAge', 'Browser-session cookies (no maxAge): Atlas sessions have a lifetime (default 7 days idle); set auth_config.session to taste.', at(cookie, c.loc), 'auth_config.session');
|
|
452
|
-
const store = (0, upgrade_1.propOf)(opts, 'store');
|
|
453
|
-
b.add(store ? 'mapped' : 'manual', 'express-session', 'store', store
|
|
454
|
-
? `${describe(store)}: dump its sessions (table, collection or keys) and the export imports the live ones for the bridge.`
|
|
455
|
-
: 'MemoryStore: sessions live in process memory and cannot be exported; signed-in users sign in once more after the switch.', at(store, c.loc));
|
|
456
|
-
if ((0, upgrade_1.propOf)(opts, 'secret'))
|
|
457
|
-
b.add('mapped', 'express-session', 'secret', 'Only the bridge extractor uses it (to check the cookie signature) during the cutover.', (0, upgrade_1.propOf)(opts, 'secret').loc);
|
|
458
|
-
}
|
|
459
|
-
for (const c of analysis.calls.filter((x) => x.matcher === 'cookie_session')) {
|
|
460
|
-
b.add('manual', 'bridge', 'cookie-session', 'cookie-session keeps the whole session in a signed cookie (keygrip); the bridge cannot read it. Users sign in once more after the switch, or open the cookie yourself in a custom extractToken.', c.loc);
|
|
461
|
-
}
|
|
462
|
-
return b.result();
|
|
463
|
-
}
|
|
464
|
-
// ── iron-session ────────────────────────────────────────────────────────────
|
|
465
|
-
function translateIronSession(project) {
|
|
466
|
-
const analysis = (0, upgrade_1.analyzeCalls)(project, [{ id: 'iron', module: /^(iron-session(\/.*)?|next-iron-session)$/, names: ['getIronSession', 'withIronSessionApiRoute', 'withIronSessionSsr', 'ironSession', 'withIronSession', 'default', 'sealData', 'unsealData'] }], ['iron-session']);
|
|
467
|
-
const { origin, where } = originOf(analysis.calls, 'iron-session');
|
|
468
|
-
const b = new report_1.TranslationBuilder(origin, where);
|
|
469
|
-
if (!analysis.calls.length)
|
|
470
|
-
return notFound(b, analysis, 'setup', 'getIronSession() / withIronSession…() call');
|
|
471
|
-
b.set('strategies.password', true);
|
|
472
|
-
let seen = false;
|
|
473
|
-
for (const c of analysis.calls) {
|
|
474
|
-
if (c.imported.name === 'sealData' || c.imported.name === 'unsealData') {
|
|
475
|
-
b.add('mapped', 'iron-session', c.imported.name, 'Sealing other data (magic links, invites) is unrelated to sign-in and keeps working.', c.loc);
|
|
476
|
-
continue;
|
|
477
|
-
}
|
|
478
|
-
const opts = [...c.args].reverse().map(objectOf).find((o) => o && ((0, upgrade_1.propOf)(o, 'cookieName') || (0, upgrade_1.propOf)(o, 'password')));
|
|
479
|
-
if (!opts || seen)
|
|
480
|
-
continue;
|
|
481
|
-
seen = true;
|
|
482
|
-
const name = str((0, upgrade_1.propOf)(opts, 'cookieName'));
|
|
483
|
-
b.bridge = { preset: 'iron_session', vars: name ? { cookie_name: name } : {} };
|
|
484
|
-
b.add(name ? 'mapped' : 'manual', 'bridge', 'cookieName', name ? `The bridge reads "${name}": pass ironSessionExtractor({ cookieName, password, bridgeSecret }) to the middleware; the password stays on your server.` : 'Set cookie_name in the bridge settings to your iron-session cookieName.', at((0, upgrade_1.propOf)(opts, 'cookieName'), c.loc), 'bridge preset iron_session');
|
|
485
|
-
const password = (0, upgrade_1.propOf)(opts, 'password');
|
|
486
|
-
if (password?.kind === 'env')
|
|
487
|
-
b.add('mapped', 'bridge', 'password', `Read from ${password.name} by the bridge extractor on your server (never sent to Atlas).`, password.loc);
|
|
488
|
-
else if (password)
|
|
489
|
-
b.add('manual', 'bridge', 'password', 'The session password is not read from an environment variable: pass it to ironSessionExtractor on your server (it never goes to Atlas).', password.loc);
|
|
490
|
-
const ttl = num((0, upgrade_1.propOf)(opts, 'ttl'));
|
|
491
|
-
const ttlSeconds = ttl === undefined ? 14 * report_1.DAY : ttl;
|
|
492
|
-
if (ttlSeconds === 0)
|
|
493
|
-
b.add('differs', 'iron-session', 'ttl: 0', 'Atlas sessions always expire; the longest is 90 days.', at((0, upgrade_1.propOf)(opts, 'ttl'), c.loc), 'auth_config.session');
|
|
494
|
-
else
|
|
495
|
-
b.session(ttlSeconds, false, 'iron-session', 'ttl', at((0, upgrade_1.propOf)(opts, 'ttl'), c.loc), 'iron-session');
|
|
496
|
-
const domain = (0, upgrade_1.propOf)((0, upgrade_1.propOf)(opts, 'cookieOptions'), 'domain');
|
|
497
|
-
if (domain)
|
|
498
|
-
b.add('manual', 'iron-session', 'cookieOptions.domain', 'Shared cookies across subdomains: turn on session.crossSubdomainCookies.', domain.loc, 'auth_config.session.crossSubdomainCookies');
|
|
499
|
-
}
|
|
500
|
-
b.add('manual', 'users', 'user store', 'iron-session has no user store: export your users table (atlas migrate iron-session export --set dump=<dir>, with --set users-table=… and the column settings as needed).', where);
|
|
501
|
-
return b.result();
|
|
502
|
-
}
|
|
503
|
-
//# sourceMappingURL=translate-js.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"translate-js.js","sourceRoot":"","sources":["../../../src/migrate/frameworks/translate-js.ts"],"names":[],"mappings":"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"}
|