@atlasauth/cli 0.25.0 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -0
- package/README.md +26 -5
- package/dist/args.d.ts +631 -0
- package/dist/args.js +304 -0
- package/dist/args.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +19 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/actions-gallery.d.ts +8 -0
- package/dist/commands/actions-gallery.js +197 -0
- package/dist/commands/actions-gallery.js.map +1 -0
- package/dist/commands/actions.d.ts +13 -0
- package/dist/commands/actions.js +135 -0
- package/dist/commands/actions.js.map +1 -0
- package/dist/commands/admin.d.ts +49 -0
- package/dist/commands/admin.js +353 -0
- package/dist/commands/admin.js.map +1 -0
- package/dist/commands/api-keys.d.ts +4 -0
- package/dist/commands/api-keys.js +96 -0
- package/dist/commands/api-keys.js.map +1 -0
- package/dist/commands/auth.d.ts +25 -0
- package/dist/commands/auth.js +102 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/config.d.ts +128 -0
- package/dist/commands/config.js +1822 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/csp.d.ts +32 -0
- package/dist/commands/csp.js +180 -0
- package/dist/commands/csp.js.map +1 -0
- package/dist/commands/dev.d.ts +8 -0
- package/dist/commands/dev.js +84 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/doctor-scan.d.ts +27 -0
- package/dist/commands/doctor-scan.js +221 -0
- package/dist/commands/doctor-scan.js.map +1 -0
- package/dist/commands/fga.d.ts +10 -0
- package/dist/commands/fga.js +146 -0
- package/dist/commands/fga.js.map +1 -0
- package/dist/commands/golive.d.ts +40 -0
- package/dist/commands/golive.js +297 -0
- package/dist/commands/golive.js.map +1 -0
- package/dist/commands/id-accounts.d.ts +13 -0
- package/dist/commands/id-accounts.js +195 -0
- package/dist/commands/id-accounts.js.map +1 -0
- package/dist/commands/import-better-auth.d.ts +3 -0
- package/dist/commands/import-better-auth.js +164 -0
- package/dist/commands/import-better-auth.js.map +1 -0
- package/dist/commands/import-jsonl.d.ts +50 -0
- package/dist/commands/import-jsonl.js +252 -0
- package/dist/commands/import-jsonl.js.map +1 -0
- package/dist/commands/import.d.ts +3 -0
- package/dist/commands/import.js +133 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/info.d.ts +75 -0
- package/dist/commands/info.js +362 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/init-next.d.ts +4 -0
- package/dist/commands/init-next.js +86 -0
- package/dist/commands/init-next.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.js +525 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/integrations.d.ts +8 -0
- package/dist/commands/integrations.js +112 -0
- package/dist/commands/integrations.js.map +1 -0
- package/dist/commands/listen.d.ts +17 -0
- package/dist/commands/listen.js +223 -0
- package/dist/commands/listen.js.map +1 -0
- package/dist/commands/mcp.d.ts +38 -0
- package/dist/commands/mcp.js +111 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/migrate.d.ts +16 -0
- package/dist/commands/migrate.js +114 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/move-origin.d.ts +11 -0
- package/dist/commands/move-origin.js +95 -0
- package/dist/commands/move-origin.js.map +1 -0
- package/dist/commands/operator.d.ts +18 -0
- package/dist/commands/operator.js +238 -0
- package/dist/commands/operator.js.map +1 -0
- package/dist/commands/orgs.d.ts +4 -0
- package/dist/commands/orgs.js +72 -0
- package/dist/commands/orgs.js.map +1 -0
- package/dist/commands/pages.d.ts +14 -0
- package/dist/commands/pages.js +113 -0
- package/dist/commands/pages.js.map +1 -0
- package/dist/commands/partner-platforms.d.ts +10 -0
- package/dist/commands/partner-platforms.js +157 -0
- package/dist/commands/partner-platforms.js.map +1 -0
- package/dist/commands/project-commands.d.ts +38 -0
- package/dist/commands/project-commands.js +431 -0
- package/dist/commands/project-commands.js.map +1 -0
- package/dist/commands/referrals.d.ts +69 -0
- package/dist/commands/referrals.js +1056 -0
- package/dist/commands/referrals.js.map +1 -0
- package/dist/commands/resources.d.ts +44 -0
- package/dist/commands/resources.js +234 -0
- package/dist/commands/resources.js.map +1 -0
- package/dist/commands/sessions.d.ts +4 -0
- package/dist/commands/sessions.js +28 -0
- package/dist/commands/sessions.js.map +1 -0
- package/dist/commands/setup-guide.d.ts +3 -0
- package/dist/commands/setup-guide.js +38 -0
- package/dist/commands/setup-guide.js.map +1 -0
- package/dist/commands/shared.d.ts +38 -0
- package/dist/commands/shared.js +69 -0
- package/dist/commands/shared.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.js +77 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/users.d.ts +4 -0
- package/dist/commands/users.js +111 -0
- package/dist/commands/users.js.map +1 -0
- package/dist/commands/webhooks.d.ts +34 -0
- package/dist/commands/webhooks.js +301 -0
- package/dist/commands/webhooks.js.map +1 -0
- package/dist/config-http.d.ts +38 -0
- package/dist/config-http.js +70 -0
- package/dist/config-http.js.map +1 -0
- package/dist/config.d.ts +64 -0
- package/dist/config.js +69 -0
- package/dist/config.js.map +1 -0
- package/dist/context.d.ts +89 -0
- package/dist/context.js +32 -0
- package/dist/context.js.map +1 -0
- package/dist/define-config.d.ts +9 -0
- package/dist/define-config.js +8 -0
- package/dist/define-config.js.map +1 -0
- package/dist/errors.d.ts +15 -0
- package/dist/errors.js +25 -0
- package/dist/errors.js.map +1 -0
- package/dist/help.d.ts +8 -0
- package/dist/help.js +926 -0
- package/dist/help.js.map +1 -0
- package/dist/import/csv.d.ts +6 -0
- package/dist/import/csv.js +63 -0
- package/dist/import/csv.js.map +1 -0
- package/dist/import/vendors.d.ts +57 -0
- package/dist/import/vendors.js +568 -0
- package/dist/import/vendors.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.js +81 -0
- package/dist/index.js.map +1 -0
- package/dist/io.d.ts +21 -0
- package/dist/io.js +28 -0
- package/dist/io.js.map +1 -0
- package/dist/migrate/appwrite/plugin.d.ts +2 -0
- package/dist/migrate/appwrite/plugin.js +103 -0
- package/dist/migrate/appwrite/plugin.js.map +1 -0
- package/dist/migrate/auth0/plugin.d.ts +2 -0
- package/dist/migrate/auth0/plugin.js +126 -0
- package/dist/migrate/auth0/plugin.js.map +1 -0
- package/dist/migrate/authentik/plugin.d.ts +2 -0
- package/dist/migrate/authentik/plugin.js +135 -0
- package/dist/migrate/authentik/plugin.js.map +1 -0
- package/dist/migrate/azure-ad-b2c/plugin.d.ts +8 -0
- package/dist/migrate/azure-ad-b2c/plugin.js +165 -0
- package/dist/migrate/azure-ad-b2c/plugin.js.map +1 -0
- package/dist/migrate/better-auth/integration.d.ts +59 -0
- package/dist/migrate/better-auth/integration.js +81 -0
- package/dist/migrate/better-auth/integration.js.map +1 -0
- package/dist/migrate/better-auth/orchestrator.d.ts +43 -0
- package/dist/migrate/better-auth/orchestrator.js +525 -0
- package/dist/migrate/better-auth/orchestrator.js.map +1 -0
- package/dist/migrate/better-auth/output.d.ts +20 -0
- package/dist/migrate/better-auth/output.js +146 -0
- package/dist/migrate/better-auth/output.js.map +1 -0
- package/dist/migrate/better-auth/translate.d.ts +77 -0
- package/dist/migrate/better-auth/translate.js +1989 -0
- package/dist/migrate/better-auth/translate.js.map +1 -0
- package/dist/migrate/clerk/plugin.d.ts +2 -0
- package/dist/migrate/clerk/plugin.js +76 -0
- package/dist/migrate/clerk/plugin.js.map +1 -0
- package/dist/migrate/cognito/plugin.d.ts +5 -0
- package/dist/migrate/cognito/plugin.js +170 -0
- package/dist/migrate/cognito/plugin.js.map +1 -0
- package/dist/migrate/corbado/plugin.d.ts +2 -0
- package/dist/migrate/corbado/plugin.js +63 -0
- package/dist/migrate/corbado/plugin.js.map +1 -0
- package/dist/migrate/descope/plugin.d.ts +2 -0
- package/dist/migrate/descope/plugin.js +83 -0
- package/dist/migrate/descope/plugin.js.map +1 -0
- package/dist/migrate/entra-external-id/plugin.d.ts +8 -0
- package/dist/migrate/entra-external-id/plugin.js +12 -0
- package/dist/migrate/entra-external-id/plugin.js.map +1 -0
- package/dist/migrate/export/appwrite-config.d.ts +28 -0
- package/dist/migrate/export/appwrite-config.js +170 -0
- package/dist/migrate/export/appwrite-config.js.map +1 -0
- package/dist/migrate/export/appwrite.d.ts +51 -0
- package/dist/migrate/export/appwrite.js +288 -0
- package/dist/migrate/export/appwrite.js.map +1 -0
- package/dist/migrate/export/auth0-config.d.ts +29 -0
- package/dist/migrate/export/auth0-config.js +249 -0
- package/dist/migrate/export/auth0-config.js.map +1 -0
- package/dist/migrate/export/auth0.d.ts +62 -0
- package/dist/migrate/export/auth0.js +575 -0
- package/dist/migrate/export/auth0.js.map +1 -0
- package/dist/migrate/export/authentik-config.d.ts +45 -0
- package/dist/migrate/export/authentik-config.js +357 -0
- package/dist/migrate/export/authentik-config.js.map +1 -0
- package/dist/migrate/export/authentik.d.ts +110 -0
- package/dist/migrate/export/authentik.js +838 -0
- package/dist/migrate/export/authentik.js.map +1 -0
- package/dist/migrate/export/azure-config.d.ts +58 -0
- package/dist/migrate/export/azure-config.js +344 -0
- package/dist/migrate/export/azure-config.js.map +1 -0
- package/dist/migrate/export/azure.d.ts +85 -0
- package/dist/migrate/export/azure.js +373 -0
- package/dist/migrate/export/azure.js.map +1 -0
- package/dist/migrate/export/clerk-config.d.ts +26 -0
- package/dist/migrate/export/clerk-config.js +227 -0
- package/dist/migrate/export/clerk-config.js.map +1 -0
- package/dist/migrate/export/clerk.d.ts +46 -0
- package/dist/migrate/export/clerk.js +486 -0
- package/dist/migrate/export/clerk.js.map +1 -0
- package/dist/migrate/export/cognito-config.d.ts +25 -0
- package/dist/migrate/export/cognito-config.js +273 -0
- package/dist/migrate/export/cognito-config.js.map +1 -0
- package/dist/migrate/export/cognito.d.ts +103 -0
- package/dist/migrate/export/cognito.js +441 -0
- package/dist/migrate/export/cognito.js.map +1 -0
- package/dist/migrate/export/corbado-config.d.ts +20 -0
- package/dist/migrate/export/corbado-config.js +63 -0
- package/dist/migrate/export/corbado-config.js.map +1 -0
- package/dist/migrate/export/corbado.d.ts +37 -0
- package/dist/migrate/export/corbado.js +132 -0
- package/dist/migrate/export/corbado.js.map +1 -0
- package/dist/migrate/export/descope.d.ts +35 -0
- package/dist/migrate/export/descope.js +208 -0
- package/dist/migrate/export/descope.js.map +1 -0
- package/dist/migrate/export/fake-vendor.test-helper.d.ts +27 -0
- package/dist/migrate/export/fake-vendor.test-helper.js +41 -0
- package/dist/migrate/export/fake-vendor.test-helper.js.map +1 -0
- package/dist/migrate/export/firebase-config.d.ts +24 -0
- package/dist/migrate/export/firebase-config.js +215 -0
- package/dist/migrate/export/firebase-config.js.map +1 -0
- package/dist/migrate/export/firebase.d.ts +102 -0
- package/dist/migrate/export/firebase.js +464 -0
- package/dist/migrate/export/firebase.js.map +1 -0
- package/dist/migrate/export/frameworks/app-users.d.ts +42 -0
- package/dist/migrate/export/frameworks/app-users.js +161 -0
- package/dist/migrate/export/frameworks/app-users.js.map +1 -0
- package/dist/migrate/export/frameworks/authjs.d.ts +41 -0
- package/dist/migrate/export/frameworks/authjs.js +146 -0
- package/dist/migrate/export/frameworks/authjs.js.map +1 -0
- package/dist/migrate/export/frameworks/devise.d.ts +39 -0
- package/dist/migrate/export/frameworks/devise.js +218 -0
- package/dist/migrate/export/frameworks/devise.js.map +1 -0
- package/dist/migrate/export/frameworks/django.d.ts +45 -0
- package/dist/migrate/export/frameworks/django.js +315 -0
- package/dist/migrate/export/frameworks/django.js.map +1 -0
- package/dist/migrate/export/frameworks/lucia.d.ts +42 -0
- package/dist/migrate/export/frameworks/lucia.js +263 -0
- package/dist/migrate/export/frameworks/lucia.js.map +1 -0
- package/dist/migrate/export/frameworks/tables.d.ts +90 -0
- package/dist/migrate/export/frameworks/tables.js +325 -0
- package/dist/migrate/export/frameworks/tables.js.map +1 -0
- package/dist/migrate/export/frameworks/webauthn.d.ts +25 -0
- package/dist/migrate/export/frameworks/webauthn.js +130 -0
- package/dist/migrate/export/frameworks/webauthn.js.map +1 -0
- package/dist/migrate/export/frontegg-config.d.ts +29 -0
- package/dist/migrate/export/frontegg-config.js +238 -0
- package/dist/migrate/export/frontegg-config.js.map +1 -0
- package/dist/migrate/export/frontegg.d.ts +67 -0
- package/dist/migrate/export/frontegg.js +410 -0
- package/dist/migrate/export/frontegg.js.map +1 -0
- package/dist/migrate/export/fusionauth-config.d.ts +26 -0
- package/dist/migrate/export/fusionauth-config.js +226 -0
- package/dist/migrate/export/fusionauth-config.js.map +1 -0
- package/dist/migrate/export/fusionauth.d.ts +99 -0
- package/dist/migrate/export/fusionauth.js +642 -0
- package/dist/migrate/export/fusionauth.js.map +1 -0
- package/dist/migrate/export/hanko-config.d.ts +27 -0
- package/dist/migrate/export/hanko-config.js +265 -0
- package/dist/migrate/export/hanko-config.js.map +1 -0
- package/dist/migrate/export/hanko.d.ts +52 -0
- package/dist/migrate/export/hanko.js +605 -0
- package/dist/migrate/export/hanko.js.map +1 -0
- package/dist/migrate/export/keycloak-config.d.ts +19 -0
- package/dist/migrate/export/keycloak-config.js +219 -0
- package/dist/migrate/export/keycloak-config.js.map +1 -0
- package/dist/migrate/export/keycloak.d.ts +155 -0
- package/dist/migrate/export/keycloak.js +878 -0
- package/dist/migrate/export/keycloak.js.map +1 -0
- package/dist/migrate/export/kinde-descope-config.d.ts +38 -0
- package/dist/migrate/export/kinde-descope-config.js +172 -0
- package/dist/migrate/export/kinde-descope-config.js.map +1 -0
- package/dist/migrate/export/kinde.d.ts +57 -0
- package/dist/migrate/export/kinde.js +333 -0
- package/dist/migrate/export/kinde.js.map +1 -0
- package/dist/migrate/export/ldap.d.ts +53 -0
- package/dist/migrate/export/ldap.js +277 -0
- package/dist/migrate/export/ldap.js.map +1 -0
- package/dist/migrate/export/logto-config.d.ts +27 -0
- package/dist/migrate/export/logto-config.js +264 -0
- package/dist/migrate/export/logto-config.js.map +1 -0
- package/dist/migrate/export/logto.d.ts +150 -0
- package/dist/migrate/export/logto.js +809 -0
- package/dist/migrate/export/logto.js.map +1 -0
- package/dist/migrate/export/magic-config.d.ts +14 -0
- package/dist/migrate/export/magic-config.js +28 -0
- package/dist/migrate/export/magic-config.js.map +1 -0
- package/dist/migrate/export/magic.d.ts +31 -0
- package/dist/migrate/export/magic.js +93 -0
- package/dist/migrate/export/magic.js.map +1 -0
- package/dist/migrate/export/mini-yaml.d.ts +19 -0
- package/dist/migrate/export/mini-yaml.js +581 -0
- package/dist/migrate/export/mini-yaml.js.map +1 -0
- package/dist/migrate/export/nhost-config.d.ts +26 -0
- package/dist/migrate/export/nhost-config.js +360 -0
- package/dist/migrate/export/nhost-config.js.map +1 -0
- package/dist/migrate/export/nhost.d.ts +64 -0
- package/dist/migrate/export/nhost.js +304 -0
- package/dist/migrate/export/nhost.js.map +1 -0
- package/dist/migrate/export/okta-config.d.ts +30 -0
- package/dist/migrate/export/okta-config.js +205 -0
- package/dist/migrate/export/okta-config.js.map +1 -0
- package/dist/migrate/export/okta.d.ts +43 -0
- package/dist/migrate/export/okta.js +337 -0
- package/dist/migrate/export/okta.js.map +1 -0
- package/dist/migrate/export/onelogin.d.ts +22 -0
- package/dist/migrate/export/onelogin.js +123 -0
- package/dist/migrate/export/onelogin.js.map +1 -0
- package/dist/migrate/export/ory-config.d.ts +58 -0
- package/dist/migrate/export/ory-config.js +451 -0
- package/dist/migrate/export/ory-config.js.map +1 -0
- package/dist/migrate/export/ory.d.ts +81 -0
- package/dist/migrate/export/ory.js +555 -0
- package/dist/migrate/export/ory.js.map +1 -0
- package/dist/migrate/export/password-detect.d.ts +29 -0
- package/dist/migrate/export/password-detect.js +81 -0
- package/dist/migrate/export/password-detect.js.map +1 -0
- package/dist/migrate/export/pingone.d.ts +36 -0
- package/dist/migrate/export/pingone.js +218 -0
- package/dist/migrate/export/pingone.js.map +1 -0
- package/dist/migrate/export/plugin-kit.d.ts +25 -0
- package/dist/migrate/export/plugin-kit.js +82 -0
- package/dist/migrate/export/plugin-kit.js.map +1 -0
- package/dist/migrate/export/pocketbase-config.d.ts +28 -0
- package/dist/migrate/export/pocketbase-config.js +180 -0
- package/dist/migrate/export/pocketbase-config.js.map +1 -0
- package/dist/migrate/export/pocketbase.d.ts +52 -0
- package/dist/migrate/export/pocketbase.js +243 -0
- package/dist/migrate/export/pocketbase.js.map +1 -0
- package/dist/migrate/export/project-files.d.ts +15 -0
- package/dist/migrate/export/project-files.js +43 -0
- package/dist/migrate/export/project-files.js.map +1 -0
- package/dist/migrate/export/propelauth-config.d.ts +18 -0
- package/dist/migrate/export/propelauth-config.js +58 -0
- package/dist/migrate/export/propelauth-config.js.map +1 -0
- package/dist/migrate/export/propelauth-harness.test-helper.d.ts +62 -0
- package/dist/migrate/export/propelauth-harness.test-helper.js +109 -0
- package/dist/migrate/export/propelauth-harness.test-helper.js.map +1 -0
- package/dist/migrate/export/propelauth.d.ts +48 -0
- package/dist/migrate/export/propelauth.js +255 -0
- package/dist/migrate/export/propelauth.js.map +1 -0
- package/dist/migrate/export/record-set.d.ts +44 -0
- package/dist/migrate/export/record-set.js +98 -0
- package/dist/migrate/export/record-set.js.map +1 -0
- package/dist/migrate/export/source-lines.d.ts +17 -0
- package/dist/migrate/export/source-lines.js +43 -0
- package/dist/migrate/export/source-lines.js.map +1 -0
- package/dist/migrate/export/sso-metadata.d.ts +47 -0
- package/dist/migrate/export/sso-metadata.js +180 -0
- package/dist/migrate/export/sso-metadata.js.map +1 -0
- package/dist/migrate/export/stytch-config.d.ts +22 -0
- package/dist/migrate/export/stytch-config.js +102 -0
- package/dist/migrate/export/stytch-config.js.map +1 -0
- package/dist/migrate/export/stytch.d.ts +68 -0
- package/dist/migrate/export/stytch.js +510 -0
- package/dist/migrate/export/stytch.js.map +1 -0
- package/dist/migrate/export/supabase-config.d.ts +48 -0
- package/dist/migrate/export/supabase-config.js +408 -0
- package/dist/migrate/export/supabase-config.js.map +1 -0
- package/dist/migrate/export/supabase.d.ts +86 -0
- package/dist/migrate/export/supabase.js +524 -0
- package/dist/migrate/export/supabase.js.map +1 -0
- package/dist/migrate/export/supertokens-config.d.ts +20 -0
- package/dist/migrate/export/supertokens-config.js +150 -0
- package/dist/migrate/export/supertokens-config.js.map +1 -0
- package/dist/migrate/export/supertokens.d.ts +125 -0
- package/dist/migrate/export/supertokens.js +464 -0
- package/dist/migrate/export/supertokens.js.map +1 -0
- package/dist/migrate/export/table.d.ts +35 -0
- package/dist/migrate/export/table.js +248 -0
- package/dist/migrate/export/table.js.map +1 -0
- package/dist/migrate/export/translate-kit.d.ts +46 -0
- package/dist/migrate/export/translate-kit.js +148 -0
- package/dist/migrate/export/translate-kit.js.map +1 -0
- package/dist/migrate/export/userfront-config.d.ts +15 -0
- package/dist/migrate/export/userfront-config.js +49 -0
- package/dist/migrate/export/userfront-config.js.map +1 -0
- package/dist/migrate/export/userfront.d.ts +38 -0
- package/dist/migrate/export/userfront.js +189 -0
- package/dist/migrate/export/userfront.js.map +1 -0
- package/dist/migrate/export/vendor-http.d.ts +46 -0
- package/dist/migrate/export/vendor-http.js +138 -0
- package/dist/migrate/export/vendor-http.js.map +1 -0
- package/dist/migrate/export/workos-config.d.ts +23 -0
- package/dist/migrate/export/workos-config.js +125 -0
- package/dist/migrate/export/workos-config.js.map +1 -0
- package/dist/migrate/export/workos.d.ts +46 -0
- package/dist/migrate/export/workos.js +272 -0
- package/dist/migrate/export/workos.js.map +1 -0
- package/dist/migrate/export/zip.d.ts +8 -0
- package/dist/migrate/export/zip.js +66 -0
- package/dist/migrate/export/zip.js.map +1 -0
- package/dist/migrate/export/zitadel-config.d.ts +37 -0
- package/dist/migrate/export/zitadel-config.js +279 -0
- package/dist/migrate/export/zitadel-config.js.map +1 -0
- package/dist/migrate/export/zitadel.d.ts +82 -0
- package/dist/migrate/export/zitadel.js +447 -0
- package/dist/migrate/export/zitadel.js.map +1 -0
- package/dist/migrate/firebase/plugin.d.ts +2 -0
- package/dist/migrate/firebase/plugin.js +152 -0
- package/dist/migrate/firebase/plugin.js.map +1 -0
- package/dist/migrate/framework/builtins.d.ts +2 -0
- package/dist/migrate/framework/builtins.js +52 -0
- package/dist/migrate/framework/builtins.js.map +1 -0
- package/dist/migrate/framework/commands.d.ts +20 -0
- package/dist/migrate/framework/commands.js +58 -0
- package/dist/migrate/framework/commands.js.map +1 -0
- package/dist/migrate/framework/custom.d.ts +12 -0
- package/dist/migrate/framework/custom.js +96 -0
- package/dist/migrate/framework/custom.js.map +1 -0
- package/dist/migrate/framework/orchestrator.d.ts +113 -0
- package/dist/migrate/framework/orchestrator.js +532 -0
- package/dist/migrate/framework/orchestrator.js.map +1 -0
- package/dist/migrate/framework/plugin.d.ts +167 -0
- package/dist/migrate/framework/plugin.js +3 -0
- package/dist/migrate/framework/plugin.js.map +1 -0
- package/dist/migrate/framework/registry.d.ts +11 -0
- package/dist/migrate/framework/registry.js +44 -0
- package/dist/migrate/framework/registry.js.map +1 -0
- package/dist/migrate/framework/report.d.ts +17 -0
- package/dist/migrate/framework/report.js +103 -0
- package/dist/migrate/framework/report.js.map +1 -0
- package/dist/migrate/frameworks/plugins.d.ts +29 -0
- package/dist/migrate/frameworks/plugins.js +402 -0
- package/dist/migrate/frameworks/plugins.js.map +1 -0
- package/dist/migrate/frameworks/report.d.ts +92 -0
- package/dist/migrate/frameworks/report.js +207 -0
- package/dist/migrate/frameworks/report.js.map +1 -0
- package/dist/migrate/frameworks/translate-js.d.ts +5 -0
- package/dist/migrate/frameworks/translate-js.js +503 -0
- package/dist/migrate/frameworks/translate-js.js.map +1 -0
- package/dist/migrate/frameworks/translate-rails-django.d.ts +3 -0
- package/dist/migrate/frameworks/translate-rails-django.js +1391 -0
- package/dist/migrate/frameworks/translate-rails-django.js.map +1 -0
- package/dist/migrate/frontegg/plugin.d.ts +2 -0
- package/dist/migrate/frontegg/plugin.js +78 -0
- package/dist/migrate/frontegg/plugin.js.map +1 -0
- package/dist/migrate/fusionauth/plugin.d.ts +2 -0
- package/dist/migrate/fusionauth/plugin.js +109 -0
- package/dist/migrate/fusionauth/plugin.js.map +1 -0
- package/dist/migrate/hanko/plugin.d.ts +2 -0
- package/dist/migrate/hanko/plugin.js +100 -0
- package/dist/migrate/hanko/plugin.js.map +1 -0
- package/dist/migrate/keycloak/plugin.d.ts +2 -0
- package/dist/migrate/keycloak/plugin.js +148 -0
- package/dist/migrate/keycloak/plugin.js.map +1 -0
- package/dist/migrate/kinde/plugin.d.ts +2 -0
- package/dist/migrate/kinde/plugin.js +105 -0
- package/dist/migrate/kinde/plugin.js.map +1 -0
- package/dist/migrate/ldap/plugin.d.ts +2 -0
- package/dist/migrate/ldap/plugin.js +73 -0
- package/dist/migrate/ldap/plugin.js.map +1 -0
- package/dist/migrate/logto/plugin.d.ts +2 -0
- package/dist/migrate/logto/plugin.js +131 -0
- package/dist/migrate/logto/plugin.js.map +1 -0
- package/dist/migrate/magic/plugin.d.ts +2 -0
- package/dist/migrate/magic/plugin.js +56 -0
- package/dist/migrate/magic/plugin.js.map +1 -0
- package/dist/migrate/nhost/plugin.d.ts +2 -0
- package/dist/migrate/nhost/plugin.js +115 -0
- package/dist/migrate/nhost/plugin.js.map +1 -0
- package/dist/migrate/oidc/plugin.d.ts +2 -0
- package/dist/migrate/oidc/plugin.js +73 -0
- package/dist/migrate/oidc/plugin.js.map +1 -0
- package/dist/migrate/okta/plugin.d.ts +2 -0
- package/dist/migrate/okta/plugin.js +105 -0
- package/dist/migrate/okta/plugin.js.map +1 -0
- package/dist/migrate/onelogin/plugin.d.ts +2 -0
- package/dist/migrate/onelogin/plugin.js +61 -0
- package/dist/migrate/onelogin/plugin.js.map +1 -0
- package/dist/migrate/ory/plugin.d.ts +2 -0
- package/dist/migrate/ory/plugin.js +186 -0
- package/dist/migrate/ory/plugin.js.map +1 -0
- package/dist/migrate/ping-identity/plugin.d.ts +2 -0
- package/dist/migrate/ping-identity/plugin.js +100 -0
- package/dist/migrate/ping-identity/plugin.js.map +1 -0
- package/dist/migrate/pocketbase/plugin.d.ts +2 -0
- package/dist/migrate/pocketbase/plugin.js +99 -0
- package/dist/migrate/pocketbase/plugin.js.map +1 -0
- package/dist/migrate/propelauth/plugin.d.ts +2 -0
- package/dist/migrate/propelauth/plugin.js +65 -0
- package/dist/migrate/propelauth/plugin.js.map +1 -0
- package/dist/migrate/saml/plugin.d.ts +2 -0
- package/dist/migrate/saml/plugin.js +79 -0
- package/dist/migrate/saml/plugin.js.map +1 -0
- package/dist/migrate/stytch/plugin.d.ts +2 -0
- package/dist/migrate/stytch/plugin.js +97 -0
- package/dist/migrate/stytch/plugin.js.map +1 -0
- package/dist/migrate/supabase/plugin.d.ts +2 -0
- package/dist/migrate/supabase/plugin.js +149 -0
- package/dist/migrate/supabase/plugin.js.map +1 -0
- package/dist/migrate/supertokens/plugin.d.ts +2 -0
- package/dist/migrate/supertokens/plugin.js +114 -0
- package/dist/migrate/supertokens/plugin.js.map +1 -0
- package/dist/migrate/user-table/plugin.d.ts +2 -0
- package/dist/migrate/user-table/plugin.js +62 -0
- package/dist/migrate/user-table/plugin.js.map +1 -0
- package/dist/migrate/userfront/plugin.d.ts +2 -0
- package/dist/migrate/userfront/plugin.js +60 -0
- package/dist/migrate/userfront/plugin.js.map +1 -0
- package/dist/migrate/workos/plugin.d.ts +2 -0
- package/dist/migrate/workos/plugin.js +81 -0
- package/dist/migrate/workos/plugin.js.map +1 -0
- package/dist/migrate/zitadel/plugin.d.ts +2 -0
- package/dist/migrate/zitadel/plugin.js +114 -0
- package/dist/migrate/zitadel/plugin.js.map +1 -0
- package/dist/output.d.ts +41 -0
- package/dist/output.js +72 -0
- package/dist/output.js.map +1 -0
- package/dist/project.d.ts +64 -0
- package/dist/project.js +86 -0
- package/dist/project.js.map +1 -0
- package/dist/prompt.d.ts +15 -0
- package/dist/prompt.js +46 -0
- package/dist/prompt.js.map +1 -0
- package/dist/redact.d.ts +41 -0
- package/dist/redact.js +115 -0
- package/dist/redact.js.map +1 -0
- package/dist/run.d.ts +12 -0
- package/dist/run.js +169 -0
- package/dist/run.js.map +1 -0
- package/dist/secrets.d.ts +41 -0
- package/dist/secrets.js +142 -0
- package/dist/secrets.js.map +1 -0
- package/dist/serialize.d.ts +30 -0
- package/dist/serialize.js +131 -0
- package/dist/serialize.js.map +1 -0
- package/dist/version.d.ts +7 -0
- package/dist/version.js +21 -0
- package/dist/version.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.scanDockerfile = scanDockerfile;
|
|
4
|
+
exports.scanCompose = scanCompose;
|
|
5
|
+
exports.scanEnvFolders = scanEnvFolders;
|
|
6
|
+
exports.scanForSecrets = scanForSecrets;
|
|
7
|
+
const node_child_process_1 = require("node:child_process");
|
|
8
|
+
const node_fs_1 = require("node:fs");
|
|
9
|
+
const node_path_1 = require("node:path");
|
|
10
|
+
const yaml_1 = require("yaml");
|
|
11
|
+
const errors_1 = require("../errors");
|
|
12
|
+
const output_1 = require("../output");
|
|
13
|
+
const redact_1 = require("../redact");
|
|
14
|
+
const SECRET_VALUE = new RegExp(redact_1.SECRET_VALUE_SOURCE);
|
|
15
|
+
/** The variables that hold a secret whatever their value looks like (a `${VAR}` build arg passes it too). */
|
|
16
|
+
const SECRET_NAME = /(^|_)ATLAS_[A-Z0-9_]*SECRET|WEBHOOK_SECRET|HOOK_SECRET/;
|
|
17
|
+
const TEST_KEY = /\b(?:atlas_test_sk_|sk_test_)[A-Za-z0-9_-]+/;
|
|
18
|
+
const LIVE_KEY = /\b(?:atlas_live_sk_|sk_live_)[A-Za-z0-9_-]+/;
|
|
19
|
+
const SKIP_DIRS = new Set(['node_modules', '.git']);
|
|
20
|
+
const MAX_FILE_BYTES = 1024 * 1024;
|
|
21
|
+
const VALUE_MESSAGE = 'A secret-key-shaped value is stored in the build. Rotate it and pass it at runtime; only the publishable key is a build arg.';
|
|
22
|
+
const nameMessage = (name) => `${name} is a secret passed to the build, where it stays in the image metadata. Set it at runtime; only the publishable key is a build arg.`;
|
|
23
|
+
const isDockerfile = (name) => /^Dockerfile(\..+)?$|\.dockerfile$/i.test(name);
|
|
24
|
+
const isCompose = (name) => /^(docker-)?compose[\w.-]*\.ya?ml$/i.test(name);
|
|
25
|
+
const isEnvFile = (name) => /\.env$|^\.env(\..+)?$/.test(name);
|
|
26
|
+
/** The files worth reading under `root`: no symlinks, dependency trees, big or binary files. */
|
|
27
|
+
function walk(root, out = []) {
|
|
28
|
+
for (const entry of (0, node_fs_1.readdirSync)(root, { withFileTypes: true })) {
|
|
29
|
+
const path = (0, node_path_1.join)(root, entry.name);
|
|
30
|
+
if (entry.isDirectory()) {
|
|
31
|
+
if (!SKIP_DIRS.has(entry.name))
|
|
32
|
+
walk(path, out);
|
|
33
|
+
}
|
|
34
|
+
else if (entry.isFile() && (isDockerfile(entry.name) || isCompose(entry.name) || isEnvFile(entry.name)) && (0, node_fs_1.lstatSync)(path).size <= MAX_FILE_BYTES) {
|
|
35
|
+
const bytes = (0, node_fs_1.readFileSync)(path);
|
|
36
|
+
if (!bytes.subarray(0, 8192).includes(0))
|
|
37
|
+
out.push({ path, text: bytes.toString('utf8') });
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return out;
|
|
41
|
+
}
|
|
42
|
+
/** `ARG` defaults and `ENV` values, through line continuations. */
|
|
43
|
+
function scanDockerfile(file, text) {
|
|
44
|
+
const out = [];
|
|
45
|
+
let instruction = null;
|
|
46
|
+
text.split(/\r?\n/).forEach((raw, i) => {
|
|
47
|
+
const line = raw.trim();
|
|
48
|
+
if (line.startsWith('#'))
|
|
49
|
+
return;
|
|
50
|
+
const head = /^(ARG|ENV)\s+(.*)$/i.exec(line);
|
|
51
|
+
if (head)
|
|
52
|
+
instruction = head[1].toUpperCase();
|
|
53
|
+
if (instruction) {
|
|
54
|
+
const body = head ? head[2] : line;
|
|
55
|
+
if (SECRET_VALUE.test(body))
|
|
56
|
+
out.push({ file, line: i + 1, code: 'secret_value_in_build', message: VALUE_MESSAGE });
|
|
57
|
+
else {
|
|
58
|
+
for (const m of body.matchAll(/([A-Za-z_][A-Za-z0-9_]*)(?:=(\S*)|\s+(\S+))?/g)) {
|
|
59
|
+
const value = m[2] ?? m[3];
|
|
60
|
+
if (!SECRET_NAME.test(m[1]))
|
|
61
|
+
continue;
|
|
62
|
+
// `ENV X=$X` only re-exports; the ARG it comes from is the finding.
|
|
63
|
+
if (instruction === 'ENV' && (!value || value.startsWith('$')))
|
|
64
|
+
continue;
|
|
65
|
+
out.push({ file, line: i + 1, code: 'secret_name_in_build', message: nameMessage(m[1]) });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (!line.endsWith('\\'))
|
|
70
|
+
instruction = null;
|
|
71
|
+
});
|
|
72
|
+
return out;
|
|
73
|
+
}
|
|
74
|
+
/** `services.*.build.args`, in either the map or the list form. */
|
|
75
|
+
function scanCompose(file, text) {
|
|
76
|
+
const counter = new yaml_1.LineCounter();
|
|
77
|
+
const doc = (0, yaml_1.parseDocument)(text, { lineCounter: counter });
|
|
78
|
+
if (doc.errors.length)
|
|
79
|
+
return [];
|
|
80
|
+
const out = [];
|
|
81
|
+
const at = (n) => {
|
|
82
|
+
const start = n?.range?.[0];
|
|
83
|
+
return start === undefined ? null : counter.linePos(start).line;
|
|
84
|
+
};
|
|
85
|
+
const check = (name, value, node) => {
|
|
86
|
+
if (SECRET_VALUE.test(value))
|
|
87
|
+
out.push({ file, line: at(node), code: 'secret_value_in_build', message: VALUE_MESSAGE });
|
|
88
|
+
else if (SECRET_NAME.test(name))
|
|
89
|
+
out.push({ file, line: at(node), code: 'secret_name_in_build', message: nameMessage(name) });
|
|
90
|
+
};
|
|
91
|
+
const services = doc.get('services');
|
|
92
|
+
if (!(0, yaml_1.isMap)(services))
|
|
93
|
+
return out;
|
|
94
|
+
for (const service of services.items) {
|
|
95
|
+
const build = (0, yaml_1.isPair)(service) && (0, yaml_1.isMap)(service.value) ? service.value.get('build') : null;
|
|
96
|
+
const args = (0, yaml_1.isMap)(build) ? build.get('args') : null;
|
|
97
|
+
if ((0, yaml_1.isMap)(args)) {
|
|
98
|
+
for (const pair of args.items) {
|
|
99
|
+
const name = (0, yaml_1.isScalar)(pair.key) ? String(pair.key.value) : '';
|
|
100
|
+
check(name, (0, yaml_1.isScalar)(pair.value) ? String(pair.value.value ?? '') : '', pair.key);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else if ((0, yaml_1.isSeq)(args)) {
|
|
104
|
+
for (const item of args.items) {
|
|
105
|
+
if (!(0, yaml_1.isScalar)(item))
|
|
106
|
+
continue;
|
|
107
|
+
const [name = '', ...rest] = String(item.value).split('=');
|
|
108
|
+
check(name, rest.join('='), item);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return out;
|
|
113
|
+
}
|
|
114
|
+
/** One folder's `*.env` files holding both a test and a live secret key. */
|
|
115
|
+
function scanEnvFolders(files) {
|
|
116
|
+
const out = [];
|
|
117
|
+
const byDir = new Map();
|
|
118
|
+
for (const f of files.filter((x) => isEnvFile((0, node_path_1.basename)(x.path))))
|
|
119
|
+
byDir.set((0, node_path_1.dirname)(f.path), [...(byDir.get((0, node_path_1.dirname)(f.path)) ?? []), f]);
|
|
120
|
+
for (const group of byDir.values()) {
|
|
121
|
+
const hits = [];
|
|
122
|
+
for (const f of group) {
|
|
123
|
+
f.text.split(/\r?\n/).forEach((raw, i) => {
|
|
124
|
+
if (raw.trim().startsWith('#'))
|
|
125
|
+
return;
|
|
126
|
+
if (TEST_KEY.test(raw))
|
|
127
|
+
hits.push({ file: f.path, line: i + 1, kind: 'test' });
|
|
128
|
+
if (LIVE_KEY.test(raw))
|
|
129
|
+
hits.push({ file: f.path, line: i + 1, kind: 'live' });
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
if (hits.some((h) => h.kind === 'test') && hits.some((h) => h.kind === 'live')) {
|
|
133
|
+
for (const h of hits) {
|
|
134
|
+
out.push({
|
|
135
|
+
file: h.file,
|
|
136
|
+
line: h.line,
|
|
137
|
+
code: 'dev_and_prod_keys_together',
|
|
138
|
+
message: `A ${h.kind === 'live' ? 'production' : 'development'} secret key, in a folder that holds both. A deploy script reading this folder can ship the wrong one; keep one environment per folder and delete stale files.`,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return out;
|
|
144
|
+
}
|
|
145
|
+
const captureDefault = (cmd, args) => new Promise((resolve, reject) => {
|
|
146
|
+
(0, node_child_process_1.execFile)(cmd, args, { maxBuffer: 16 * 1024 * 1024 }, (err, stdout) => (err ? reject(err) : resolve(stdout)));
|
|
147
|
+
});
|
|
148
|
+
/** Metadata of one image: every history line and the configured environment. */
|
|
149
|
+
async function scanImage(ctx, ref) {
|
|
150
|
+
if (ref.startsWith('-'))
|
|
151
|
+
throw new errors_1.CliError(`--scan-image takes an image reference, got '${ref}'.`);
|
|
152
|
+
const capture = ctx.execFile ?? captureDefault;
|
|
153
|
+
const read = async (args) => {
|
|
154
|
+
try {
|
|
155
|
+
return await capture('docker', args);
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
if (err.code === 'ENOENT')
|
|
159
|
+
throw new errors_1.CliError('docker was not found on PATH. Install Docker to use --scan-image, or use --scan-dir.');
|
|
160
|
+
throw new errors_1.CliError(`docker could not read image ${ref}. Pull or build it first.`);
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
const history = await read(['history', '--no-trunc', '--format', '{{.CreatedBy}}', ref]);
|
|
164
|
+
const inspected = await read(['inspect', '--format', '{{json .Config.Env}}', ref]);
|
|
165
|
+
let env = [];
|
|
166
|
+
try {
|
|
167
|
+
const parsed = JSON.parse(inspected);
|
|
168
|
+
if (Array.isArray(parsed))
|
|
169
|
+
env = parsed.map(String);
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
// shortcut: an unreadable Env is treated as empty, the history scan still runs; docker always prints JSON for this format.
|
|
173
|
+
}
|
|
174
|
+
const out = [];
|
|
175
|
+
const check = (place, line, text) => {
|
|
176
|
+
if (SECRET_VALUE.test(text)) {
|
|
177
|
+
out.push({ file: place, line, code: 'secret_value_in_build', message: VALUE_MESSAGE });
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
for (const m of text.matchAll(/([A-Za-z_][A-Za-z0-9_]*)=(\S+)/g)) {
|
|
181
|
+
if (SECRET_NAME.test(m[1]) && !m[2].startsWith('$'))
|
|
182
|
+
out.push({ file: place, line, code: 'secret_name_in_build', message: nameMessage(m[1]) });
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
history.split(/\r?\n/).forEach((text, i) => check(`image ${ref} history`, i + 1, text));
|
|
186
|
+
env.forEach((text, i) => check(`image ${ref} env`, i + 1, text));
|
|
187
|
+
return out;
|
|
188
|
+
}
|
|
189
|
+
async function scanForSecrets(ctx, opts) {
|
|
190
|
+
const findings = [];
|
|
191
|
+
if (opts.dir !== undefined) {
|
|
192
|
+
let files;
|
|
193
|
+
try {
|
|
194
|
+
files = walk(opts.dir);
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
throw new errors_1.CliError(`--scan-dir: cannot read ${opts.dir}.`);
|
|
198
|
+
}
|
|
199
|
+
for (const f of files) {
|
|
200
|
+
if (isDockerfile((0, node_path_1.basename)(f.path)))
|
|
201
|
+
findings.push(...scanDockerfile(f.path, f.text));
|
|
202
|
+
if (isCompose((0, node_path_1.basename)(f.path)))
|
|
203
|
+
findings.push(...scanCompose(f.path, f.text));
|
|
204
|
+
}
|
|
205
|
+
findings.push(...scanEnvFolders(files));
|
|
206
|
+
}
|
|
207
|
+
if (opts.image !== undefined)
|
|
208
|
+
findings.push(...(await scanImage(ctx, opts.image)));
|
|
209
|
+
if (opts.json)
|
|
210
|
+
(0, output_1.printJson)(ctx.io, { ok: findings.length === 0, findings });
|
|
211
|
+
else if (!findings.length)
|
|
212
|
+
ctx.io.out('No secrets found in build metadata.');
|
|
213
|
+
else {
|
|
214
|
+
for (const f of findings)
|
|
215
|
+
ctx.io.out(`${f.file}${f.line === null ? '' : `:${f.line}`} ${f.code} ${f.message}`);
|
|
216
|
+
ctx.io.out('');
|
|
217
|
+
ctx.io.out(`${findings.length} finding(s).`);
|
|
218
|
+
}
|
|
219
|
+
return findings.length ? 1 : 0;
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=doctor-scan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-scan.js","sourceRoot":"","sources":["../../src/commands/doctor-scan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type ParsedArgs } from '../args';
|
|
2
|
+
import type { RunContext } from '../context';
|
|
3
|
+
/** Resolve a suite file (`model_file`, `tuple_file` are relative to the suite) into a request body. */
|
|
4
|
+
export declare function loadSuite(ctx: RunContext, path: string): {
|
|
5
|
+
dsl?: string;
|
|
6
|
+
model?: unknown;
|
|
7
|
+
tuples: unknown[];
|
|
8
|
+
tests: unknown[];
|
|
9
|
+
};
|
|
10
|
+
export declare function fga(ctx: RunContext, args: ParsedArgs): Promise<number>;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadSuite = loadSuite;
|
|
4
|
+
exports.fga = fga;
|
|
5
|
+
const node_path_1 = require("node:path");
|
|
6
|
+
const yaml_1 = require("yaml");
|
|
7
|
+
const args_1 = require("../args");
|
|
8
|
+
const errors_1 = require("../errors");
|
|
9
|
+
const output_1 = require("../output");
|
|
10
|
+
const project_1 = require("../project");
|
|
11
|
+
const resources_1 = require("./resources");
|
|
12
|
+
const shared_1 = require("./shared");
|
|
13
|
+
const parseDoc = (path, text) => {
|
|
14
|
+
try {
|
|
15
|
+
return /\.json$/i.test(path) ? JSON.parse(text) : (0, yaml_1.parse)(text);
|
|
16
|
+
}
|
|
17
|
+
catch (e) {
|
|
18
|
+
throw new errors_1.CliError(`${path} could not be parsed: ${e.message}`);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
function http(ctx, args) {
|
|
22
|
+
const auth = (0, shared_1.resolveAuth)(ctx, args.values);
|
|
23
|
+
return (0, project_1.httpFor)(ctx, { secretKey: auth.secretKey, apiUrl: (0, shared_1.envApiUrl)(ctx.env) ?? auth.apiUrl });
|
|
24
|
+
}
|
|
25
|
+
/** Resolve a suite file (`model_file`, `tuple_file` are relative to the suite) into a request body. */
|
|
26
|
+
function loadSuite(ctx, path) {
|
|
27
|
+
const doc = parseDoc(path, ctx.readFile(path));
|
|
28
|
+
if (!doc || typeof doc !== 'object')
|
|
29
|
+
throw new errors_1.CliError(`${path} is not a test file.`);
|
|
30
|
+
const rel = (p) => (0, node_path_1.resolve)((0, node_path_1.dirname)(path), p);
|
|
31
|
+
let dsl;
|
|
32
|
+
let model;
|
|
33
|
+
if (typeof doc.model === 'string')
|
|
34
|
+
dsl = doc.model;
|
|
35
|
+
else if (doc.model && typeof doc.model === 'object')
|
|
36
|
+
model = doc.model;
|
|
37
|
+
else if (typeof doc.model_file === 'string') {
|
|
38
|
+
const mf = rel(doc.model_file);
|
|
39
|
+
const text = ctx.readFile(mf);
|
|
40
|
+
if (/\.json$/i.test(mf))
|
|
41
|
+
model = JSON.parse(text);
|
|
42
|
+
else
|
|
43
|
+
dsl = text;
|
|
44
|
+
}
|
|
45
|
+
else
|
|
46
|
+
throw new errors_1.CliError(`${path} needs a model or model_file.`);
|
|
47
|
+
let tuples = Array.isArray(doc.tuples) ? doc.tuples : [];
|
|
48
|
+
if (typeof doc.tuple_file === 'string') {
|
|
49
|
+
const more = parseDoc(doc.tuple_file, ctx.readFile(rel(doc.tuple_file)));
|
|
50
|
+
if (!Array.isArray(more))
|
|
51
|
+
throw new errors_1.CliError(`${doc.tuple_file} must hold a list of tuples.`);
|
|
52
|
+
tuples = [...tuples, ...more];
|
|
53
|
+
}
|
|
54
|
+
const tests = Array.isArray(doc.tests) ? doc.tests : [];
|
|
55
|
+
if (tests.length === 0)
|
|
56
|
+
throw new errors_1.CliError(`${path} has no tests.`);
|
|
57
|
+
return { ...(dsl !== undefined ? { dsl } : {}), ...(model !== undefined ? { model } : {}), tuples, tests };
|
|
58
|
+
}
|
|
59
|
+
async function fga(ctx, args) {
|
|
60
|
+
const [, sub, file] = args.positionals;
|
|
61
|
+
const v = args.values;
|
|
62
|
+
if (sub && sub in resources_1.FGA_STORE)
|
|
63
|
+
return (0, resources_1.resourceCommand)('fga', resources_1.FGA_STORE)(ctx, args);
|
|
64
|
+
if (sub === 'watch')
|
|
65
|
+
return watch(ctx, args);
|
|
66
|
+
if (!sub || !['test', 'validate', 'transform'].includes(sub))
|
|
67
|
+
throw new errors_1.CliError("Usage: atlas fga test|validate|transform <file> | export|import|watch|materializations|materialize|rebuild|unmaterialize <store> (see 'atlas fga --help').");
|
|
68
|
+
if (!file)
|
|
69
|
+
throw new errors_1.CliError(`atlas fga ${sub} needs a file.`);
|
|
70
|
+
if (sub === 'test') {
|
|
71
|
+
const suite = loadSuite(ctx, file);
|
|
72
|
+
// A model given as JSON goes through the transform endpoint so the test route only ever receives DSL.
|
|
73
|
+
const h = http(ctx, args);
|
|
74
|
+
let dsl = suite.dsl;
|
|
75
|
+
if (!dsl)
|
|
76
|
+
dsl = (await h.post('/v1/fga/models/transform', { model: suite.model })).dsl;
|
|
77
|
+
const store = (0, args_1.str)(v, 'store');
|
|
78
|
+
const body = { dsl, tuples: suite.tuples, tests: suite.tests };
|
|
79
|
+
const report = await h.post(store ? `/v1/fga/stores/${encodeURIComponent(store)}/tests` : '/v1/fga/tests', body);
|
|
80
|
+
if ((0, shared_1.wantsJson)(v)) {
|
|
81
|
+
(0, output_1.printJson)(ctx.io, report);
|
|
82
|
+
return report.passed ? 0 : 1;
|
|
83
|
+
}
|
|
84
|
+
for (const r of report.results) {
|
|
85
|
+
ctx.io.out(`${r.passed ? 'PASS' : 'FAIL'} ${r.name} (${r.checks} assertion${r.checks === 1 ? '' : 's'})`);
|
|
86
|
+
for (const f of r.failures)
|
|
87
|
+
ctx.io.out(` ${f.kind} ${f.query}: expected ${JSON.stringify(f.expected)}, got ${f.error ? `error: ${f.error}` : JSON.stringify(f.actual)}`);
|
|
88
|
+
}
|
|
89
|
+
ctx.io.out(`\n${report.total - report.failed}/${report.total} tests passed. Relations covered: ${report.coverage.covered}/${report.coverage.relations}.`);
|
|
90
|
+
if (report.coverage.uncovered.length)
|
|
91
|
+
ctx.io.out(`Not covered: ${report.coverage.uncovered.join(', ')}`);
|
|
92
|
+
return report.passed ? 0 : 1;
|
|
93
|
+
}
|
|
94
|
+
const text = ctx.readFile(file);
|
|
95
|
+
const isJson = /\.json$/i.test(file);
|
|
96
|
+
const out = await http(ctx, args).post('/v1/fga/models/transform', isJson ? { model: JSON.parse(text) } : { dsl: text });
|
|
97
|
+
if (sub === 'validate') {
|
|
98
|
+
if ((0, shared_1.wantsJson)(v))
|
|
99
|
+
(0, output_1.printJson)(ctx.io, { valid: true });
|
|
100
|
+
else
|
|
101
|
+
ctx.io.out(`${file}: valid`);
|
|
102
|
+
return 0;
|
|
103
|
+
}
|
|
104
|
+
const to = (0, args_1.str)(v, 'to') ?? (isJson ? 'dsl' : 'json');
|
|
105
|
+
if (to !== 'dsl' && to !== 'json')
|
|
106
|
+
throw new errors_1.CliError("--to must be 'dsl' or 'json'.");
|
|
107
|
+
ctx.io.out(to === 'dsl' ? out.dsl : JSON.stringify(out.model, null, 2));
|
|
108
|
+
return 0;
|
|
109
|
+
}
|
|
110
|
+
/** `atlas fga watch <store> [--since <revision>]`: stream tuple changes (server-sent events) until interrupted. */
|
|
111
|
+
async function watch(ctx, args) {
|
|
112
|
+
const store = args.positionals[2];
|
|
113
|
+
if (!store)
|
|
114
|
+
throw new errors_1.CliError('atlas fga watch needs a store id.');
|
|
115
|
+
const auth = (0, shared_1.resolveAuth)(ctx, args.values);
|
|
116
|
+
const since = (0, args_1.str)(args.values, 'since');
|
|
117
|
+
if (since !== undefined && !/^\d+$/.test(since))
|
|
118
|
+
throw new errors_1.CliError('--since must be a store revision (a non-negative integer).');
|
|
119
|
+
const base = ((0, shared_1.envApiUrl)(ctx.env) ?? auth.apiUrl).replace(/\/+$/, '');
|
|
120
|
+
const res = await (ctx.fetch ?? fetch)(`${base}/v1/fga/stores/${encodeURIComponent(store)}/watch${since ? `?since=${since}` : ''}`, {
|
|
121
|
+
headers: { authorization: `Bearer ${auth.secretKey}`, accept: 'text/event-stream' },
|
|
122
|
+
signal: ctx.signal,
|
|
123
|
+
});
|
|
124
|
+
if (!res.ok || !res.body)
|
|
125
|
+
throw new errors_1.CliError(`Could not open the watch stream (HTTP ${res.status}).`);
|
|
126
|
+
const decoder = new TextDecoder();
|
|
127
|
+
let buf = '';
|
|
128
|
+
try {
|
|
129
|
+
for await (const chunk of res.body) {
|
|
130
|
+
buf += decoder.decode(chunk, { stream: true });
|
|
131
|
+
let i;
|
|
132
|
+
while ((i = buf.indexOf('\n\n')) >= 0) {
|
|
133
|
+
const data = buf.slice(0, i).split('\n').filter((l) => l.startsWith('data:')).map((l) => l.slice(5).trim()).join('\n');
|
|
134
|
+
buf = buf.slice(i + 2);
|
|
135
|
+
if (data)
|
|
136
|
+
ctx.io.out(data);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
catch (e) {
|
|
141
|
+
if (e.name !== 'AbortError')
|
|
142
|
+
throw e;
|
|
143
|
+
}
|
|
144
|
+
return 0;
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=fga.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fga.js","sourceRoot":"","sources":["../../src/commands/fga.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type ParsedArgs } from '../args';
|
|
2
|
+
import type { ConfigHttp } from '../config-http';
|
|
3
|
+
import type { RunContext } from '../context';
|
|
4
|
+
/**
|
|
5
|
+
* `atlas golive --origin <url>`: take an instance from "configured" to "live"
|
|
6
|
+
* for one app origin. Runs the steps in order and stops at the first failure,
|
|
7
|
+
* printing the fix. `--dry-run` sends every write with `?dry_run=true`, so the
|
|
8
|
+
* server validates it and nothing changes.
|
|
9
|
+
*/
|
|
10
|
+
/** One result line. `ok: false` carries the fix. */
|
|
11
|
+
export interface CheckResult {
|
|
12
|
+
id: string;
|
|
13
|
+
ok: boolean;
|
|
14
|
+
detail: string;
|
|
15
|
+
fix?: string;
|
|
16
|
+
}
|
|
17
|
+
interface Domain {
|
|
18
|
+
id: string;
|
|
19
|
+
role: string;
|
|
20
|
+
host: string;
|
|
21
|
+
status: string;
|
|
22
|
+
method?: 'cname' | 'path';
|
|
23
|
+
base_path?: string | null;
|
|
24
|
+
action?: string | null;
|
|
25
|
+
failure_reason?: string | null;
|
|
26
|
+
verified?: boolean;
|
|
27
|
+
}
|
|
28
|
+
/** The cookies the SDKs read: a consent manager that does not declare them may block sign-in. */
|
|
29
|
+
export declare const SDK_COOKIES: readonly ["__session", "__atlas_uat", "__atlas_rt", "__client"];
|
|
30
|
+
/** Parse `--origin` to a bare origin (scheme + host + port). */
|
|
31
|
+
export declare function parseOrigin(raw: string | undefined, command: string): URL;
|
|
32
|
+
/** The custom domain serving this origin's host: an exact host match, else the Frontend API domain. */
|
|
33
|
+
export declare function domainFor(domains: Domain[], host: string): Domain | undefined;
|
|
34
|
+
export declare function preflightCheck(api: ConfigHttp): Promise<CheckResult>;
|
|
35
|
+
export declare function loginReadinessCheck(api: ConfigHttp, origin: string): Promise<CheckResult>;
|
|
36
|
+
/** A path mount on the origin's host: verified (active) or the step still to do. */
|
|
37
|
+
export declare function pathMountCheck(api: ConfigHttp, host: string): Promise<CheckResult>;
|
|
38
|
+
export declare function declaredCookiesCheck(api: ConfigHttp): Promise<CheckResult>;
|
|
39
|
+
export declare function golive(ctx: RunContext, args: ParsedArgs): Promise<number>;
|
|
40
|
+
export {};
|