@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,451 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseOryConfig = parseOryConfig;
|
|
4
|
-
exports.splitOryProject = splitOryProject;
|
|
5
|
-
exports.resolveOrySchemas = resolveOrySchemas;
|
|
6
|
-
exports.fetchOrySchemas = fetchOrySchemas;
|
|
7
|
-
exports.fetchOryClients = fetchOryClients;
|
|
8
|
-
exports.goDurationMs = goDurationMs;
|
|
9
|
-
exports.translateOryConfig = translateOryConfig;
|
|
10
|
-
const mini_yaml_1 = require("./mini-yaml");
|
|
11
|
-
const record_set_1 = require("./record-set");
|
|
12
|
-
const translate_kit_1 = require("./translate-kit");
|
|
13
|
-
const vendor_http_1 = require("./vendor-http");
|
|
14
|
-
// ── reading ─────────────────────────────────────────────────────────────────
|
|
15
|
-
/** A config file's text: JSON when it starts with `{`, otherwise YAML. */
|
|
16
|
-
function parseOryConfig(text, file) {
|
|
17
|
-
const trimmed = text.trim();
|
|
18
|
-
if (trimmed.startsWith('{')) {
|
|
19
|
-
const value = JSON.parse(trimmed);
|
|
20
|
-
if (!(0, record_set_1.isObj)(value))
|
|
21
|
-
throw new Error(`${file} is not a configuration object.`);
|
|
22
|
-
return { value, file, line: () => undefined };
|
|
23
|
-
}
|
|
24
|
-
const doc = (0, mini_yaml_1.parseYaml)(text);
|
|
25
|
-
if (!(0, record_set_1.isObj)(doc.value))
|
|
26
|
-
throw new Error(`${file} is not a configuration (a YAML mapping was expected).`);
|
|
27
|
-
return { value: doc.value, file, line: (path) => doc.line(path) };
|
|
28
|
-
}
|
|
29
|
-
/** An `ory get project --format json` document split into its Kratos and Hydra configs; null when it is not one. */
|
|
30
|
-
function splitOryProject(file) {
|
|
31
|
-
const services = file.value.services;
|
|
32
|
-
if (!(0, record_set_1.isObj)(services) || !(0, record_set_1.isObj)(services.identity) || !(0, record_set_1.isObj)(services.identity.config))
|
|
33
|
-
return null;
|
|
34
|
-
const wrap = (value, name) => ({ value, file: `${file.file} (${name})`, line: () => undefined });
|
|
35
|
-
return {
|
|
36
|
-
kratos: wrap(services.identity.config, 'services.identity.config'),
|
|
37
|
-
hydra: (0, record_set_1.isObj)(services.oauth2) && (0, record_set_1.isObj)(services.oauth2.config) ? wrap(services.oauth2.config, 'services.oauth2.config') : undefined,
|
|
38
|
-
slug: (0, record_set_1.str)(file.value.slug),
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
/** Identity schemas a Kratos config names that can be read without the network: `base64://` and `file://` (through `readFile`). */
|
|
42
|
-
function resolveOrySchemas(kratos, readFile, warn = () => undefined) {
|
|
43
|
-
const identity = kratos?.value.identity;
|
|
44
|
-
const out = [];
|
|
45
|
-
for (const s of (0, record_set_1.isObj)(identity) ? (0, record_set_1.objs)(identity.schemas) : []) {
|
|
46
|
-
const id = (0, record_set_1.str)(s.id);
|
|
47
|
-
const url = (0, record_set_1.str)(s.url);
|
|
48
|
-
if (!id || !url)
|
|
49
|
-
continue;
|
|
50
|
-
try {
|
|
51
|
-
let text;
|
|
52
|
-
if (url.startsWith('base64://'))
|
|
53
|
-
text = Buffer.from(url.slice('base64://'.length), 'base64').toString('utf8');
|
|
54
|
-
else if (url.startsWith('file://'))
|
|
55
|
-
text = readFile(decodeURIComponent(url.slice('file://'.length)));
|
|
56
|
-
if (text === undefined) {
|
|
57
|
-
warn(`Identity schema "${id}" is at ${url}: pass its file, or give Kratos' public URL so it is read from /schemas.`);
|
|
58
|
-
continue;
|
|
59
|
-
}
|
|
60
|
-
const schema = JSON.parse(text);
|
|
61
|
-
if ((0, record_set_1.isObj)(schema))
|
|
62
|
-
out.push({ id, schema });
|
|
63
|
-
}
|
|
64
|
-
catch (err) {
|
|
65
|
-
warn(`Identity schema "${id}" could not be read (${err.message}).`);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return out;
|
|
69
|
-
}
|
|
70
|
-
/** Kratos' public `GET /schemas`: `[{ id, schema }]`. */
|
|
71
|
-
async function fetchOrySchemas(http) {
|
|
72
|
-
const { body } = await http.get('/schemas');
|
|
73
|
-
return (Array.isArray(body) ? body : []).flatMap((s) => ((0, record_set_1.isObj)(s) && (0, record_set_1.str)(s.id) && (0, record_set_1.isObj)(s.schema) ? [{ id: (0, record_set_1.str)(s.id), schema: s.schema }] : []));
|
|
74
|
-
}
|
|
75
|
-
/** Hydra's `GET /admin/clients`, following the Link header's page_token. */
|
|
76
|
-
async function fetchOryClients(http, pageSize = 250) {
|
|
77
|
-
const out = [];
|
|
78
|
-
const seen = new Set();
|
|
79
|
-
let path = `/admin/clients?page_size=${pageSize}`;
|
|
80
|
-
for (;;) {
|
|
81
|
-
const res = await http.get(path);
|
|
82
|
-
out.push(...(0, record_set_1.objs)(res.body));
|
|
83
|
-
const next = (0, vendor_http_1.nextLink)(res.headers.get('link'));
|
|
84
|
-
const token = next ? new URL(next, 'https://hydra.invalid').searchParams.get('page_token') : null;
|
|
85
|
-
if (!token || seen.has(token))
|
|
86
|
-
break;
|
|
87
|
-
seen.add(token);
|
|
88
|
-
path = `/admin/clients?page_size=${pageSize}&page_token=${encodeURIComponent(token)}`;
|
|
89
|
-
}
|
|
90
|
-
return out;
|
|
91
|
-
}
|
|
92
|
-
// ── translation ─────────────────────────────────────────────────────────────
|
|
93
|
-
/** Go durations (`24h`, `720h`, `1h30m`) → ms. */
|
|
94
|
-
function goDurationMs(v) {
|
|
95
|
-
if (typeof v !== 'string' || !v.trim())
|
|
96
|
-
return undefined;
|
|
97
|
-
const text = v.trim();
|
|
98
|
-
let total = 0;
|
|
99
|
-
let matched = '';
|
|
100
|
-
for (const m of text.matchAll(/(\d+(?:\.\d+)?)(h|m|s|ms)/g)) {
|
|
101
|
-
matched += m[0];
|
|
102
|
-
total += Number(m[1]) * { h: 3_600_000, m: 60_000, s: 1000, ms: 1 }[m[2]];
|
|
103
|
-
}
|
|
104
|
-
return matched === text && total > 0 ? total : undefined;
|
|
105
|
-
}
|
|
106
|
-
/** Traits Atlas has a column for. */
|
|
107
|
-
const KNOWN_TRAITS = [
|
|
108
|
-
{ keys: ['email', 'email_address', 'mail'], atlas: 'user email address' },
|
|
109
|
-
{ keys: ['username', 'user_name', 'login', 'handle'], atlas: 'user username' },
|
|
110
|
-
{ keys: ['phone', 'phone_number', 'mobile', 'tel'], atlas: 'user phone number' },
|
|
111
|
-
{ keys: ['name', 'full_name', 'first_name', 'last_name', 'given_name', 'family_name'], atlas: 'user first / last name' },
|
|
112
|
-
{ keys: ['picture', 'avatar', 'avatar_url', 'image'], atlas: 'user image' },
|
|
113
|
-
];
|
|
114
|
-
function translateOryConfig(snap) {
|
|
115
|
-
const b = new translate_kit_1.ConfigBuilder();
|
|
116
|
-
const k = snap.kratos;
|
|
117
|
-
const h = snap.hydra;
|
|
118
|
-
const at = (cfg, path) => path.split('.').reduce((v, key) => ((0, record_set_1.isObj)(v) ? v[key] : undefined), cfg?.value);
|
|
119
|
-
const kv = (path) => at(k, path);
|
|
120
|
-
const hv = (path) => at(h, path);
|
|
121
|
-
const note = (cfg, status, area, path, text, atlas) => {
|
|
122
|
-
const line = cfg?.line(path);
|
|
123
|
-
b.report.push({ status, area, setting: path, note: text, ...(atlas ? { atlas } : {}), ...(cfg && line ? { file: cfg.file, line } : {}) });
|
|
124
|
-
};
|
|
125
|
-
const add = (status, area, path, text, atlas) => note(k, status, area, path, text, atlas);
|
|
126
|
-
const bool = (path, fallback) => (typeof kv(path) === 'boolean' ? kv(path) : fallback);
|
|
127
|
-
const has = (path) => kv(path) !== undefined;
|
|
128
|
-
// ── flows ──
|
|
129
|
-
if (k) {
|
|
130
|
-
const signUp = bool('selfservice.flows.registration.enabled', true);
|
|
131
|
-
b.set('signUpMode', signUp ? 'public' : 'restricted');
|
|
132
|
-
add('mapped', 'flows', 'selfservice.flows.registration.enabled', signUp ? 'Public sign-up.' : 'Sign-up closed (invitations and the allowlist still work).', 'auth_config.signUpMode');
|
|
133
|
-
if (bool('selfservice.flows.verification.enabled', false)) {
|
|
134
|
-
const use = (0, record_set_1.str)(kv('selfservice.flows.verification.use')) ?? 'code';
|
|
135
|
-
add('mapped', 'flows', 'selfservice.flows.verification.enabled', `Email verification (${use === 'link' ? 'by link' : 'by code'}): Atlas verifies addresses with a code or link.`, 'auth_config.strategies.emailCode');
|
|
136
|
-
}
|
|
137
|
-
if (bool('selfservice.flows.recovery.enabled', false))
|
|
138
|
-
add('mapped', 'flows', 'selfservice.flows.recovery.enabled', 'Account recovery becomes Atlas password reset (a code or link by email).', 'auth_config.strategies.password');
|
|
139
|
-
if (has('selfservice.flows.settings.privileged_session_max_age')) {
|
|
140
|
-
add('differs', 'flows', 'selfservice.flows.settings.privileged_session_max_age', `Kratos asks for a fresh sign-in after ${String(kv('selfservice.flows.settings.privileged_session_max_age'))} before settings changes; Atlas re-verifies sensitive changes with its own window (auth_config.stepUp).`, 'auth_config.stepUp');
|
|
141
|
-
}
|
|
142
|
-
for (const flow of ['login', 'registration', 'settings', 'recovery', 'verification', 'error']) {
|
|
143
|
-
const ui = (0, record_set_1.str)(kv(`selfservice.flows.${flow}.ui_url`));
|
|
144
|
-
if (ui)
|
|
145
|
-
add('manual', 'flows', `selfservice.flows.${flow}.ui_url`, `Your ${flow} page (${ui}) is replaced by Atlas's hosted page or its components; update links to /sign-in and /sign-up.`);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
// ── hooks ──
|
|
149
|
-
if (k) {
|
|
150
|
-
const flows = (0, record_set_1.isObj)(kv('selfservice.flows')) ? kv('selfservice.flows') : {};
|
|
151
|
-
for (const [flow, def] of Object.entries(flows)) {
|
|
152
|
-
if (!(0, record_set_1.isObj)(def))
|
|
153
|
-
continue;
|
|
154
|
-
for (const when of ['before', 'after']) {
|
|
155
|
-
const section = def[when];
|
|
156
|
-
if (!(0, record_set_1.isObj)(section))
|
|
157
|
-
continue;
|
|
158
|
-
// `after.hooks` (every method) and `after.<method>.hooks` (one of them).
|
|
159
|
-
const groups = [[`${when}.hooks`, section.hooks]];
|
|
160
|
-
for (const [method, v] of Object.entries(section))
|
|
161
|
-
if ((0, record_set_1.isObj)(v))
|
|
162
|
-
groups.push([`${when}.${method}.hooks`, v.hooks]);
|
|
163
|
-
for (const [where, hooks] of groups) {
|
|
164
|
-
for (const [n, hook] of (0, record_set_1.objs)(hooks).entries()) {
|
|
165
|
-
const name = (0, record_set_1.str)(hook.hook);
|
|
166
|
-
const path = `selfservice.flows.${flow}.${where}.${n}`;
|
|
167
|
-
if (name === 'web_hook')
|
|
168
|
-
add('manual', 'hooks', path, `A web hook (${(0, record_set_1.str)((0, record_set_1.isObj)(hook.config) ? hook.config.url : undefined) ?? 'url'}) moves to an Atlas webhook endpoint or a before-sign-up action; its Jsonnet body is rebuilt as the event payload.`);
|
|
169
|
-
else if (name === 'require_verified_address') {
|
|
170
|
-
b.set('requireEmailVerification', true);
|
|
171
|
-
add('mapped', 'hooks', path, 'Unverified addresses cannot sign in.', 'auth_config.requireEmailVerification');
|
|
172
|
-
}
|
|
173
|
-
else if (name === 'session')
|
|
174
|
-
add('mapped', 'hooks', path, 'Atlas signs the user in after registration.');
|
|
175
|
-
else if (name === 'revoke_active_sessions')
|
|
176
|
-
add('differs', 'hooks', path, 'Atlas revokes sessions on password change and on the user\'s request; a blanket revoke after sign-in has no switch.');
|
|
177
|
-
else if (name === 'verify' || name === 'show_verification_ui')
|
|
178
|
-
add('mapped', 'hooks', path, 'Atlas starts address verification after sign-up when verification is required.');
|
|
179
|
-
else if (name)
|
|
180
|
-
add('manual', 'hooks', path, `The "${name}" hook has no Atlas counterpart.`);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
// ── methods ──
|
|
187
|
-
if (k) {
|
|
188
|
-
const password = bool('selfservice.methods.password.enabled', true);
|
|
189
|
-
b.set('strategies.password', password);
|
|
190
|
-
add('mapped', 'methods', 'selfservice.methods.password.enabled', password ? 'Password sign-in on.' : 'Password sign-in off.', 'auth_config.strategies.password');
|
|
191
|
-
if (password) {
|
|
192
|
-
const min = typeof kv('selfservice.methods.password.config.min_password_length') === 'number' ? kv('selfservice.methods.password.config.min_password_length') : 8;
|
|
193
|
-
b.set('passwordPolicy.minLength', Math.max(min, 6));
|
|
194
|
-
add('mapped', 'methods', 'selfservice.methods.password.config.min_password_length', `Minimum ${min} characters.`, 'auth_config.passwordPolicy.minLength');
|
|
195
|
-
const pwned = bool('selfservice.methods.password.config.haveibeenpwned_enabled', true);
|
|
196
|
-
b.set('passwordPolicy.checkBreaches', pwned);
|
|
197
|
-
add('mapped', 'methods', 'selfservice.methods.password.config.haveibeenpwned_enabled', pwned ? 'Breached passwords are refused.' : 'Breached-password check off.', 'auth_config.passwordPolicy.checkBreaches');
|
|
198
|
-
if (has('selfservice.methods.password.config.max_breaches'))
|
|
199
|
-
add('differs', 'methods', 'selfservice.methods.password.config.max_breaches', 'Atlas refuses any breached password; there is no breach-count threshold.');
|
|
200
|
-
if (bool('selfservice.methods.password.config.identifier_similarity_check_enabled', true))
|
|
201
|
-
add('differs', 'methods', 'selfservice.methods.password.config.identifier_similarity_check_enabled', 'Atlas does not compare the password with the identifier.');
|
|
202
|
-
}
|
|
203
|
-
if (bool('selfservice.methods.code.enabled', false) || bool('selfservice.methods.code.passwordless_enabled', false) || bool('selfservice.methods.code.config.passwordless_enabled', false)) {
|
|
204
|
-
b.set('strategies.emailCode', true);
|
|
205
|
-
add('mapped', 'methods', 'selfservice.methods.code.enabled', 'One-time code sign-in (and the code second factor).', 'auth_config.strategies.emailCode');
|
|
206
|
-
}
|
|
207
|
-
if (bool('selfservice.methods.link.enabled', false)) {
|
|
208
|
-
b.set('strategies.emailLink', true);
|
|
209
|
-
add('mapped', 'methods', 'selfservice.methods.link.enabled', 'Magic-link sign-in.', 'auth_config.strategies.emailLink');
|
|
210
|
-
}
|
|
211
|
-
if (bool('selfservice.methods.totp.enabled', false)) {
|
|
212
|
-
b.set('mfa.factors.totp', true);
|
|
213
|
-
add('mapped', 'methods', 'selfservice.methods.totp.enabled', 'Authenticator apps as a second factor. Seeds move with a database export; an Admin API export has none, so users enrol again.', 'auth_config.mfa.factors.totp');
|
|
214
|
-
}
|
|
215
|
-
if (bool('selfservice.methods.lookup_secret.enabled', false))
|
|
216
|
-
add('mapped', 'methods', 'selfservice.methods.lookup_secret.enabled', 'Backup codes accompany an authenticator in Atlas (unused codes move with a database export).', 'auth_config.mfa.backupCodes');
|
|
217
|
-
const webauthn = bool('selfservice.methods.webauthn.enabled', false);
|
|
218
|
-
const passkey = bool('selfservice.methods.passkey.enabled', false);
|
|
219
|
-
if (webauthn) {
|
|
220
|
-
const passwordless = bool('selfservice.methods.webauthn.config.passwordless', false);
|
|
221
|
-
b.set(passwordless ? 'strategies.passkey' : 'mfa.factors.passkey', true);
|
|
222
|
-
add('mapped', 'methods', 'selfservice.methods.webauthn.enabled', passwordless ? 'Passwordless WebAuthn becomes passkey sign-in.' : 'Security keys as a second factor.', passwordless ? 'auth_config.strategies.passkey' : 'auth_config.mfa.factors.passkey');
|
|
223
|
-
}
|
|
224
|
-
if (passkey) {
|
|
225
|
-
b.set('strategies.passkey', true);
|
|
226
|
-
add('mapped', 'methods', 'selfservice.methods.passkey.enabled', 'Passkey sign-in on.', 'auth_config.strategies.passkey');
|
|
227
|
-
}
|
|
228
|
-
if (webauthn || passkey) {
|
|
229
|
-
const rp = webauthn && has('selfservice.methods.webauthn.config.rp.id') ? 'selfservice.methods.webauthn.config.rp.id' : 'selfservice.methods.passkey.config.rp.id';
|
|
230
|
-
const rpId = (0, record_set_1.str)(kv(rp));
|
|
231
|
-
if (rpId)
|
|
232
|
-
add('differs', 'methods', rp, `Passkeys were registered for "${rpId}": they keep working only when Atlas serves sign-in on that domain (export with --set ory-rp-id=${rpId}).`);
|
|
233
|
-
}
|
|
234
|
-
// ── social and enterprise sign-in ──
|
|
235
|
-
const providers = (0, record_set_1.objs)(kv('selfservice.methods.oidc.config.providers'));
|
|
236
|
-
if (bool('selfservice.methods.oidc.enabled', false) || providers.length) {
|
|
237
|
-
for (const [n, p] of providers.entries()) {
|
|
238
|
-
const path = `selfservice.methods.oidc.config.providers.${n}`;
|
|
239
|
-
const id = (0, record_set_1.str)(p.id);
|
|
240
|
-
const kind = ((0, record_set_1.str)(p.provider) ?? 'generic').toLowerCase();
|
|
241
|
-
if (!id)
|
|
242
|
-
continue;
|
|
243
|
-
const atlasKey = kind === 'github-app' ? 'github' : (0, translate_kit_1.socialKey)(kind);
|
|
244
|
-
const clientId = (0, record_set_1.str)(p.client_id);
|
|
245
|
-
if (atlasKey) {
|
|
246
|
-
b.socialProvider({ atlasKey, vendorName: id, area: 'sign-in with', setting: path, clientId, scopes: (0, record_set_1.strs)(p.scope).length ? (0, record_set_1.strs)(p.scope) : undefined });
|
|
247
|
-
const last = b.report[b.report.length - 1];
|
|
248
|
-
const line = k.line(path);
|
|
249
|
-
if (line)
|
|
250
|
-
Object.assign(last, { file: k.file, line });
|
|
251
|
-
if (id !== atlasKey)
|
|
252
|
-
last.note += ` Imported identities keep the Kratos provider id "${id}": map it with provider_map ${id}=${atlasKey}.`;
|
|
253
|
-
}
|
|
254
|
-
else {
|
|
255
|
-
const providerKey = (0, translate_kit_1.keyOf)(id).replace(/:/g, '_').slice(0, 48) || 'oidc';
|
|
256
|
-
const upper = providerKey.toUpperCase();
|
|
257
|
-
const issuer = (0, record_set_1.str)(p.issuer_url);
|
|
258
|
-
const doc = {
|
|
259
|
-
provider_key: providerKey,
|
|
260
|
-
display_name: (0, record_set_1.str)(p.label) ?? id,
|
|
261
|
-
protocol: 'oidc',
|
|
262
|
-
client_id: clientId ?? b.placeholder(`${upper}_CLIENT_ID`, `${id} client id`),
|
|
263
|
-
client_secret: b.placeholder(`${upper}_CLIENT_SECRET`, `${id} client secret`),
|
|
264
|
-
enabled: true,
|
|
265
|
-
allow_sign_in: true,
|
|
266
|
-
allow_sign_up: true,
|
|
267
|
-
};
|
|
268
|
-
if (issuer) {
|
|
269
|
-
doc.issuer = issuer;
|
|
270
|
-
doc.discovery_url = `${issuer.replace(/\/+$/, '')}/.well-known/openid-configuration`;
|
|
271
|
-
}
|
|
272
|
-
if ((0, record_set_1.strs)(p.scope).length)
|
|
273
|
-
doc.scopes = (0, record_set_1.strs)(p.scope);
|
|
274
|
-
b.push('custom_oauth_providers', doc);
|
|
275
|
-
b.providers[id] = providerKey;
|
|
276
|
-
note(k, 'differs', 'sign-in with', path, `"${id}" (${kind}) becomes the custom OIDC provider "${providerKey}"${issuer ? ` (issuer ${issuer})` : ''}. Add Atlas's redirect URI at the provider and set ${upper}_CLIENT_SECRET. Imported identities keep provider "${id}": map it with provider_map ${id}=${providerKey}.`, `custom_oauth_providers ${providerKey}`);
|
|
277
|
-
}
|
|
278
|
-
if ((0, record_set_1.str)(p.mapper_url))
|
|
279
|
-
note(k, 'manual', 'sign-in with', `${path}.mapper_url`, `The Jsonnet claims mapper (${(0, record_set_1.str)(p.mapper_url)}) has no direct counterpart: Atlas copies name, email and picture from the provider; rebuild any trait mapping as a claim mapping or user metadata.`);
|
|
280
|
-
if ((0, record_set_1.str)(p.requested_claims) || (0, record_set_1.isObj)(p.requested_claims))
|
|
281
|
-
note(k, 'manual', 'sign-in with', `${path}.requested_claims`, 'Requested OIDC claims are not translated: set the scopes on the Atlas provider.');
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
// ── sessions ──
|
|
286
|
-
if (k) {
|
|
287
|
-
const lifespan = goDurationMs(kv('session.lifespan')) ?? 24 * 3_600_000;
|
|
288
|
-
b.set('session.absoluteMs', (0, translate_kit_1.clampSessionMs)(lifespan));
|
|
289
|
-
add((0, translate_kit_1.clampSessionMs)(lifespan) === lifespan ? 'mapped' : 'differs', 'sessions', 'session.lifespan', `Session lifespan ${String(kv('session.lifespan') ?? '24h')} becomes the absolute session lifetime.`, 'auth_config.session.absoluteMs');
|
|
290
|
-
if (has('session.earliest_possible_extend'))
|
|
291
|
-
add('differs', 'sessions', 'session.earliest_possible_extend', 'Atlas sessions refresh on use; there is no extension window.');
|
|
292
|
-
if (kv('session.cookie.persistent') === false)
|
|
293
|
-
add('differs', 'sessions', 'session.cookie.persistent', 'Kratos used a browser-session cookie; Atlas sessions are persistent up to their lifetime.');
|
|
294
|
-
for (const p of ['session.cookie.domain', 'session.cookie.name', 'session.cookie.same_site', 'session.cookie.path']) {
|
|
295
|
-
if (has(p))
|
|
296
|
-
add('differs', 'sessions', p, 'Atlas names and scopes its own session cookie (cross-subdomain on custom domains); the old cookie is cleared by the session bridge.');
|
|
297
|
-
}
|
|
298
|
-
const aal = (0, record_set_1.str)(kv('session.whoami.required_aal'));
|
|
299
|
-
if (aal === 'aal2') {
|
|
300
|
-
b.set('mfaPolicy', 'required');
|
|
301
|
-
add('mapped', 'sessions', 'session.whoami.required_aal', 'Every session needs a second factor.', 'auth_config.mfaPolicy');
|
|
302
|
-
}
|
|
303
|
-
else if (aal === 'highest_available' || aal === undefined) {
|
|
304
|
-
if (aal)
|
|
305
|
-
add('mapped', 'sessions', 'session.whoami.required_aal', 'A second factor is required exactly when the user has enrolled one: the Atlas default.', 'auth_config.mfaPolicy');
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
// ── URLs and origins ──
|
|
309
|
-
if (k) {
|
|
310
|
-
const urls = [(0, record_set_1.str)(kv('selfservice.default_browser_return_url')), ...(0, record_set_1.strs)(kv('selfservice.allowed_return_urls'))].filter((u) => !!u);
|
|
311
|
-
let exact = 0;
|
|
312
|
-
for (const url of new Set(urls)) {
|
|
313
|
-
if (url.includes('*')) {
|
|
314
|
-
add('differs', 'URLs', 'selfservice.allowed_return_urls', `${url}: Atlas redirect URLs are exact (no wildcards); list each URL.`, 'redirect_urls');
|
|
315
|
-
continue;
|
|
316
|
-
}
|
|
317
|
-
b.push('redirect_urls', { url });
|
|
318
|
-
exact++;
|
|
319
|
-
}
|
|
320
|
-
if (exact)
|
|
321
|
-
add('mapped', 'URLs', has('selfservice.allowed_return_urls') ? 'selfservice.allowed_return_urls' : 'selfservice.default_browser_return_url', `${exact} return URL(s) become redirect URLs.`, 'redirect_urls');
|
|
322
|
-
const origins = (0, record_set_1.strs)(kv('serve.public.cors.allowed_origins')).filter((o) => !o.includes('*'));
|
|
323
|
-
if (origins.length) {
|
|
324
|
-
b.instance.allowed_origins = origins;
|
|
325
|
-
add('mapped', 'URLs', 'serve.public.cors.allowed_origins', 'Allowed origins for the browser SDK.', 'instance.allowed_origins');
|
|
326
|
-
}
|
|
327
|
-
if ((0, record_set_1.strs)(kv('serve.public.cors.allowed_origins')).some((o) => o.includes('*')))
|
|
328
|
-
add('differs', 'URLs', 'serve.public.cors.allowed_origins', 'Wildcard origins are not allowed in Atlas: list each origin.');
|
|
329
|
-
}
|
|
330
|
-
// ── email, SMS, hashing, schemas ──
|
|
331
|
-
if (k) {
|
|
332
|
-
if (has('courier.smtp.connection_uri'))
|
|
333
|
-
add('manual', 'email', 'courier.smtp.connection_uri', 'Configure your SMTP server (or email provider) in Atlas; the connection URI carries credentials and is not copied.');
|
|
334
|
-
for (const p of ['courier.smtp.from_address', 'courier.smtp.from_name'])
|
|
335
|
-
if (has(p))
|
|
336
|
-
add('manual', 'email', p, `Set the sender (${String(kv(p))}) on the Atlas email provider.`);
|
|
337
|
-
if (has('courier.templates'))
|
|
338
|
-
add('manual', 'email', 'courier.templates', 'Recreate your courier templates in Atlas (Kratos uses Go templates; Atlas has its own template variables).');
|
|
339
|
-
if ((0, record_set_1.objs)(kv('courier.channels')).some((c) => (0, record_set_1.str)(c.id) === 'sms'))
|
|
340
|
-
add('manual', 'phone', 'courier.channels', 'The SMS channel (HTTP request config) is replaced by an Atlas SMS provider: connect Twilio or another one (credentials are not copied).');
|
|
341
|
-
if ((0, record_set_1.str)(kv('hashers.algorithm')))
|
|
342
|
-
add('mapped', 'passwords', 'hashers.algorithm', `Passwords hashed with ${String(kv('hashers.algorithm'))} import in that algorithm and are re-hashed to Argon2id on each user's first sign-in.`);
|
|
343
|
-
if ((0, record_set_1.str)(kv('oauth2_provider.url')))
|
|
344
|
-
add('differs', 'OAuth', 'oauth2_provider.url', 'Kratos delegated login to Hydra. Atlas is its own OAuth 2.0 / OIDC provider: your login and consent apps are no longer needed.');
|
|
345
|
-
if (bool('security.account_enumeration.mitigate', false))
|
|
346
|
-
add('differs', 'security', 'security.account_enumeration.mitigate', 'Atlas gives uniform responses on sign-in and reset by default.');
|
|
347
|
-
const schemaPaths = Array.isArray(kv('identity.schemas')) ? kv('identity.schemas') : [];
|
|
348
|
-
if (schemaPaths.length && !snap.schemas.length)
|
|
349
|
-
add('manual', 'identity schema', 'identity.schemas', 'The identity schemas could not be read: pass them with --set ory-schema=<file>, or give the public URL of Kratos.');
|
|
350
|
-
}
|
|
351
|
-
for (const { id, schema } of snap.schemas)
|
|
352
|
-
schemaReport(b, id, schema);
|
|
353
|
-
// ── Hydra ──
|
|
354
|
-
if (h) {
|
|
355
|
-
const hnote = (status, path, text, atlas) => note(h, status, 'OAuth 2.0 server', path, text, atlas);
|
|
356
|
-
if ((0, record_set_1.str)(hv('urls.self.issuer')))
|
|
357
|
-
hnote('differs', 'urls.self.issuer', `Tokens were issued by ${String(hv('urls.self.issuer'))}. Atlas issues under its own issuer: add Hydra's issuer as a legacy issuer so existing tokens stay valid during the move, and point resource servers at Atlas's JWKS.`, 'auth_config.legacyIssuers');
|
|
358
|
-
for (const p of ['urls.login', 'urls.consent', 'urls.logout'])
|
|
359
|
-
if (hv(p) !== undefined)
|
|
360
|
-
hnote('manual', p, 'Atlas hosts login, consent and logout itself: this app is no longer needed.');
|
|
361
|
-
for (const [p, what] of [['ttl.access_token', 'access token'], ['ttl.refresh_token', 'refresh token'], ['ttl.id_token', 'ID token'], ['ttl.auth_code', 'authorization code']]) {
|
|
362
|
-
if (hv(p) !== undefined)
|
|
363
|
-
hnote('differs', p, `${what} lifetime ${String(hv(p))}: set the lifetimes on each Atlas OAuth client or resource server.`);
|
|
364
|
-
}
|
|
365
|
-
if ((0, record_set_1.str)(hv('strategies.access_token')) === 'jwt')
|
|
366
|
-
hnote('mapped', 'strategies.access_token', 'JWT access tokens: Atlas access tokens are JWTs verified with the instance JWKS.');
|
|
367
|
-
else if (hv('strategies.access_token') !== undefined)
|
|
368
|
-
hnote('differs', 'strategies.access_token', 'Opaque access tokens: Atlas access tokens are JWTs; resource servers verify them with the instance JWKS instead of introspecting.');
|
|
369
|
-
if ((0, record_set_1.strs)(hv('oidc.subject_identifiers.supported_types')).includes('pairwise'))
|
|
370
|
-
hnote('manual', 'oidc.subject_identifiers.supported_types', 'Pairwise subject identifiers are not supported: Atlas issues public subjects (the user id), so clients that stored pairwise subjects must re-link.');
|
|
371
|
-
if (hv('oidc.dynamic_client_registration.enabled') === true)
|
|
372
|
-
hnote('manual', 'oidc.dynamic_client_registration.enabled', 'Open dynamic client registration is not enabled in Atlas: register clients through the dashboard or API.');
|
|
373
|
-
if (hv('oauth2.pkce.enforced') === true)
|
|
374
|
-
hnote('mapped', 'oauth2.pkce.enforced', 'Atlas requires PKCE for public clients.');
|
|
375
|
-
}
|
|
376
|
-
// ── Hydra clients ──
|
|
377
|
-
let secrets = 0;
|
|
378
|
-
for (const c of snap.clients) {
|
|
379
|
-
const id = (0, record_set_1.str)(c.client_id);
|
|
380
|
-
if (!id)
|
|
381
|
-
continue;
|
|
382
|
-
const name = (0, record_set_1.str)(c.client_name) ?? id;
|
|
383
|
-
const grants = (0, record_set_1.strs)(c.grant_types);
|
|
384
|
-
const redirects = (0, record_set_1.strs)(c.redirect_uris);
|
|
385
|
-
const method = (0, record_set_1.str)(c.token_endpoint_auth_method) ?? 'client_secret_basic';
|
|
386
|
-
const doc = { name };
|
|
387
|
-
if (redirects.length)
|
|
388
|
-
doc.redirect_uris = redirects;
|
|
389
|
-
const scopes = typeof c.scope === 'string' ? c.scope.split(/\s+/).filter(Boolean) : (0, record_set_1.strs)(c.scope);
|
|
390
|
-
if (scopes.length)
|
|
391
|
-
doc.allowed_scopes = scopes;
|
|
392
|
-
if (grants.length)
|
|
393
|
-
doc.grant_types = grants;
|
|
394
|
-
doc.token_endpoint_auth_method = method;
|
|
395
|
-
if ((0, record_set_1.str)(c.logo_uri))
|
|
396
|
-
doc.logo_url = (0, record_set_1.str)(c.logo_uri);
|
|
397
|
-
if (c.skip_consent === true)
|
|
398
|
-
doc.first_party = true;
|
|
399
|
-
b.push('oauth_clients', doc);
|
|
400
|
-
const where = `clients ${id}`;
|
|
401
|
-
b.add('mapped', 'OAuth clients', where, `"${name}" becomes an Atlas OAuth client (${grants.join(', ') || 'no grant types'}; ${redirects.length} redirect URI(s)${c.skip_consent === true ? '; consent skipped = first party' : ''}).`, 'oauth_clients');
|
|
402
|
-
if (method !== 'none')
|
|
403
|
-
secrets++;
|
|
404
|
-
if (method === 'private_key_jwt')
|
|
405
|
-
b.add('manual', 'OAuth clients', `${where} token_endpoint_auth_method`, 'private_key_jwt: register the client\'s public key (jwks / jwks_uri) on the Atlas client again.');
|
|
406
|
-
if ((0, record_set_1.str)(c.subject_type) === 'pairwise')
|
|
407
|
-
b.add('manual', 'OAuth clients', `${where} subject_type`, 'Pairwise subjects are not supported: this client receives the user id as sub.');
|
|
408
|
-
if ((0, record_set_1.strs)(c.audience).length)
|
|
409
|
-
b.add('manual', 'OAuth clients', `${where} audience`, `Audience ${(0, record_set_1.strs)(c.audience).join(', ')}: register each as an API (resource server) in Atlas and grant this client access.`, 'resource_servers');
|
|
410
|
-
if ((0, record_set_1.str)(c.backchannel_logout_uri) || (0, record_set_1.str)(c.frontchannel_logout_uri))
|
|
411
|
-
b.add('manual', 'OAuth clients', `${where} logout uris`, 'Front- and back-channel logout URIs are set on the Atlas client after import.');
|
|
412
|
-
}
|
|
413
|
-
if (secrets)
|
|
414
|
-
b.add('manual', 'OAuth clients', 'client_secret', `${secrets} client(s) authenticate with a secret. Hydra keeps only hashes, so Atlas issues new secrets: give each client its new secret.`);
|
|
415
|
-
const publicUrl = snap.publicUrl ?? (0, record_set_1.str)(kv('serve.public.base_url'));
|
|
416
|
-
const slug = publicUrl ? /^https:\/\/([a-z0-9-]+)\.projects\.oryapis\.com/i.exec(publicUrl)?.[1] : undefined;
|
|
417
|
-
const cookie = (0, record_set_1.str)(kv('session.cookie.name')) ?? (slug ? `ory_session_${slug}` : 'ory_kratos_session');
|
|
418
|
-
const vars = { cookie_name: cookie };
|
|
419
|
-
if (publicUrl)
|
|
420
|
-
vars.base_url = publicUrl.replace(/\/+$/, '');
|
|
421
|
-
return b.result(snap.origin, {
|
|
422
|
-
bridge: { preset: 'ory_whoami', vars },
|
|
423
|
-
...(publicUrl ? { lazy: { preset: 'ory', config: { base_url: publicUrl.replace(/\/+$/, '') } } } : {}),
|
|
424
|
-
});
|
|
425
|
-
}
|
|
426
|
-
/** One identity schema's traits → report lines (what Atlas stores where, what stays in metadata). */
|
|
427
|
-
function schemaReport(b, id, schema) {
|
|
428
|
-
const traits = (0, record_set_1.isObj)(schema.properties) && (0, record_set_1.isObj)(schema.properties.traits) ? schema.properties.traits : undefined;
|
|
429
|
-
const props = traits && (0, record_set_1.isObj)(traits.properties) ? traits.properties : {};
|
|
430
|
-
const required = new Set(traits ? (0, record_set_1.strs)(traits.required) : []);
|
|
431
|
-
for (const [name, def] of Object.entries(props)) {
|
|
432
|
-
if (!(0, record_set_1.isObj)(def))
|
|
433
|
-
continue;
|
|
434
|
-
const ory = (0, record_set_1.isObj)(def['ory.sh/kratos']) ? def['ory.sh/kratos'] : {};
|
|
435
|
-
const creds = (0, record_set_1.isObj)(ory.credentials) ? ory.credentials : {};
|
|
436
|
-
const identifierFor = Object.entries(creds).filter(([, v]) => (0, record_set_1.isObj)(v) && v.identifier === true).map(([c]) => c);
|
|
437
|
-
const known = KNOWN_TRAITS.find((t) => t.keys.includes(name.toLowerCase()));
|
|
438
|
-
const where = `identity schema ${id} traits.${name}`;
|
|
439
|
-
const via = (0, record_set_1.isObj)(ory.verification) ? (0, record_set_1.str)(ory.verification.via) : undefined;
|
|
440
|
-
if (known) {
|
|
441
|
-
b.add('mapped', 'identity schema', where, `Becomes the ${known.atlas}${identifierFor.length ? ` and signs in via ${identifierFor.join(', ')}` : ''}${via ? `; verified by ${via}` : ''}.`);
|
|
442
|
-
}
|
|
443
|
-
else if ((0, record_set_1.isObj)(def.properties) && ['first', 'last'].some((n) => n in def.properties)) {
|
|
444
|
-
b.add('mapped', 'identity schema', where, 'Its first / last fields become the user\'s first and last name.');
|
|
445
|
-
}
|
|
446
|
-
else {
|
|
447
|
-
b.add('differs', 'identity schema', where, `A custom trait${required.has(name) ? ' (required at sign-up)' : ''}: it is kept on the user as unsafe_metadata.ory_traits.${name}; add it as an Atlas sign-up field to keep collecting it.`);
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
//# sourceMappingURL=ory-config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ory-config.js","sourceRoot":"","sources":["../../../src/migrate/export/ory-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import type { PasswordHash } from '@atlasauth/migrate';
|
|
2
|
-
import { type Tables } from './frameworks/tables';
|
|
3
|
-
import { RecordSet, type Obj } from './record-set';
|
|
4
|
-
/**
|
|
5
|
-
* `atlas migrate export ory` — Ory Kratos (self-hosted, or Ory Network) onto
|
|
6
|
-
* the canonical bundle models. Two ways in, both on the owner's machine:
|
|
7
|
-
*
|
|
8
|
-
* - a DATABASE DUMP of Kratos (`<table>.json|ndjson|csv` per table, see
|
|
9
|
-
* frameworks/tables.ts): `identities`, `identity_credentials` (+ `_types`,
|
|
10
|
-
* `_identifiers`), `identity_verifiable_addresses` and `sessions`. The
|
|
11
|
-
* complete path: password hashes (every format Kratos verifies), TOTP
|
|
12
|
-
* seeds, unused recovery codes, WebAuthn / passkey credentials, social
|
|
13
|
-
* links and live session tokens. Ory Network projects cannot be dumped.
|
|
14
|
-
* - the ADMIN API (`GET /admin/identities`, paged with the `Link` header's
|
|
15
|
-
* page_token) with the admin URL of a self-hosted Kratos or an Ory Network
|
|
16
|
-
* project's API key. It never returns password hashes, TOTP seeds, recovery
|
|
17
|
-
* codes, WebAuthn credentials or session tokens: those users sign in once
|
|
18
|
-
* against Kratos through the `ory` lazy preset (passwords) and re-enrol
|
|
19
|
-
* their second factor; the session bridge asks Kratos to vouch for the
|
|
20
|
-
* session (remote mode).
|
|
21
|
-
*
|
|
22
|
-
* The Kratos identity id is the user id: it is the `identity.id` of every
|
|
23
|
-
* session (`/sessions/whoami`) and the `sub` Hydra issues by default.
|
|
24
|
-
*
|
|
25
|
-
* Schemas: github.com/ory/kratos `persistence/sql/migrations` (tables),
|
|
26
|
-
* `identity/credentials_*.go` (credential configs), `hash/hash_comparator.go`
|
|
27
|
-
* (password formats); Admin API: `identity.Identity` JSON.
|
|
28
|
-
*/
|
|
29
|
-
export interface OryTablesOptions {
|
|
30
|
-
/** The WebAuthn relying-party id (`selfservice.methods.passkey.config.rp.id` / `webauthn…rp.id`); passkeys need it. */
|
|
31
|
-
rpId?: string;
|
|
32
|
-
/** A multi-project database (Ory Network style): the `nid` to export. */
|
|
33
|
-
networkId?: string;
|
|
34
|
-
/** Export sessions that are active and unexpired at this time (default now). */
|
|
35
|
-
now?: number;
|
|
36
|
-
}
|
|
37
|
-
export interface OryApiOptions {
|
|
38
|
-
/** Kratos admin URL (`http://kratos:4434`) or `https://<slug>.projects.oryapis.com`. */
|
|
39
|
-
adminUrl: string;
|
|
40
|
-
/** Ory Network project API key (`ory_pat_…`), sent as `Authorization: Bearer`. */
|
|
41
|
-
apiKey?: string;
|
|
42
|
-
rpId?: string;
|
|
43
|
-
pageSize?: number;
|
|
44
|
-
fetchImpl?: typeof fetch;
|
|
45
|
-
sleep?: (ms: number) => Promise<void>;
|
|
46
|
-
onProgress?: (message: string) => void;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* A Kratos `hashed_password` as a bundle password; null when Atlas cannot
|
|
50
|
-
* verify the format (`$hmac-md4$`, unknown schemes), whose users then move by
|
|
51
|
-
* lazy migration. Formats: hash/hash_comparator.go.
|
|
52
|
-
*/
|
|
53
|
-
export declare function oryPasswordHash(raw: unknown): PasswordHash | null;
|
|
54
|
-
interface OryCredential {
|
|
55
|
-
identifiers: string[];
|
|
56
|
-
config?: Obj;
|
|
57
|
-
}
|
|
58
|
-
/** An identity as both readers present it (the Admin API's JSON, assembled from the tables). */
|
|
59
|
-
interface OryIdentity {
|
|
60
|
-
id: string;
|
|
61
|
-
schemaId?: string;
|
|
62
|
-
state?: string;
|
|
63
|
-
traits: Obj;
|
|
64
|
-
addresses: Array<{
|
|
65
|
-
value: string;
|
|
66
|
-
via: string;
|
|
67
|
-
verified: boolean;
|
|
68
|
-
}>;
|
|
69
|
-
publicMetadata?: Obj;
|
|
70
|
-
adminMetadata?: Obj;
|
|
71
|
-
createdAt?: unknown;
|
|
72
|
-
organizationId?: string;
|
|
73
|
-
credentials: Map<string, OryCredential>;
|
|
74
|
-
}
|
|
75
|
-
export declare function exportOryTables(tables: Tables, opts?: OryTablesOptions): RecordSet;
|
|
76
|
-
/** The Admin API's identity JSON as an {@link OryIdentity}. */
|
|
77
|
-
export declare function oryIdentityFromApi(raw: Obj): OryIdentity | null;
|
|
78
|
-
/** The `page_token` of a Link header's `rel="next"` URL (Kratos pages with tokens). */
|
|
79
|
-
export declare function nextPageToken(link: string | null): string | null;
|
|
80
|
-
export declare function exportOryApi(o: OryApiOptions): Promise<RecordSet>;
|
|
81
|
-
export {};
|