@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.
Files changed (546) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +26 -5
  3. package/dist/args.d.ts +631 -0
  4. package/dist/args.js +304 -0
  5. package/dist/args.js.map +1 -0
  6. package/dist/cli.d.ts +2 -0
  7. package/dist/cli.js +19 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/commands/actions-gallery.d.ts +8 -0
  10. package/dist/commands/actions-gallery.js +197 -0
  11. package/dist/commands/actions-gallery.js.map +1 -0
  12. package/dist/commands/actions.d.ts +13 -0
  13. package/dist/commands/actions.js +135 -0
  14. package/dist/commands/actions.js.map +1 -0
  15. package/dist/commands/admin.d.ts +49 -0
  16. package/dist/commands/admin.js +353 -0
  17. package/dist/commands/admin.js.map +1 -0
  18. package/dist/commands/api-keys.d.ts +4 -0
  19. package/dist/commands/api-keys.js +96 -0
  20. package/dist/commands/api-keys.js.map +1 -0
  21. package/dist/commands/auth.d.ts +25 -0
  22. package/dist/commands/auth.js +102 -0
  23. package/dist/commands/auth.js.map +1 -0
  24. package/dist/commands/config.d.ts +128 -0
  25. package/dist/commands/config.js +1822 -0
  26. package/dist/commands/config.js.map +1 -0
  27. package/dist/commands/csp.d.ts +32 -0
  28. package/dist/commands/csp.js +180 -0
  29. package/dist/commands/csp.js.map +1 -0
  30. package/dist/commands/dev.d.ts +8 -0
  31. package/dist/commands/dev.js +84 -0
  32. package/dist/commands/dev.js.map +1 -0
  33. package/dist/commands/doctor-scan.d.ts +27 -0
  34. package/dist/commands/doctor-scan.js +221 -0
  35. package/dist/commands/doctor-scan.js.map +1 -0
  36. package/dist/commands/fga.d.ts +10 -0
  37. package/dist/commands/fga.js +146 -0
  38. package/dist/commands/fga.js.map +1 -0
  39. package/dist/commands/golive.d.ts +40 -0
  40. package/dist/commands/golive.js +297 -0
  41. package/dist/commands/golive.js.map +1 -0
  42. package/dist/commands/id-accounts.d.ts +13 -0
  43. package/dist/commands/id-accounts.js +195 -0
  44. package/dist/commands/id-accounts.js.map +1 -0
  45. package/dist/commands/import-better-auth.d.ts +3 -0
  46. package/dist/commands/import-better-auth.js +164 -0
  47. package/dist/commands/import-better-auth.js.map +1 -0
  48. package/dist/commands/import-jsonl.d.ts +50 -0
  49. package/dist/commands/import-jsonl.js +252 -0
  50. package/dist/commands/import-jsonl.js.map +1 -0
  51. package/dist/commands/import.d.ts +3 -0
  52. package/dist/commands/import.js +133 -0
  53. package/dist/commands/import.js.map +1 -0
  54. package/dist/commands/info.d.ts +75 -0
  55. package/dist/commands/info.js +362 -0
  56. package/dist/commands/info.js.map +1 -0
  57. package/dist/commands/init-next.d.ts +4 -0
  58. package/dist/commands/init-next.js +86 -0
  59. package/dist/commands/init-next.js.map +1 -0
  60. package/dist/commands/init.d.ts +3 -0
  61. package/dist/commands/init.js +525 -0
  62. package/dist/commands/init.js.map +1 -0
  63. package/dist/commands/integrations.d.ts +8 -0
  64. package/dist/commands/integrations.js +112 -0
  65. package/dist/commands/integrations.js.map +1 -0
  66. package/dist/commands/listen.d.ts +17 -0
  67. package/dist/commands/listen.js +223 -0
  68. package/dist/commands/listen.js.map +1 -0
  69. package/dist/commands/mcp.d.ts +38 -0
  70. package/dist/commands/mcp.js +111 -0
  71. package/dist/commands/mcp.js.map +1 -0
  72. package/dist/commands/migrate.d.ts +16 -0
  73. package/dist/commands/migrate.js +114 -0
  74. package/dist/commands/migrate.js.map +1 -0
  75. package/dist/commands/move-origin.d.ts +11 -0
  76. package/dist/commands/move-origin.js +95 -0
  77. package/dist/commands/move-origin.js.map +1 -0
  78. package/dist/commands/operator.d.ts +18 -0
  79. package/dist/commands/operator.js +238 -0
  80. package/dist/commands/operator.js.map +1 -0
  81. package/dist/commands/orgs.d.ts +4 -0
  82. package/dist/commands/orgs.js +72 -0
  83. package/dist/commands/orgs.js.map +1 -0
  84. package/dist/commands/pages.d.ts +14 -0
  85. package/dist/commands/pages.js +113 -0
  86. package/dist/commands/pages.js.map +1 -0
  87. package/dist/commands/partner-platforms.d.ts +10 -0
  88. package/dist/commands/partner-platforms.js +157 -0
  89. package/dist/commands/partner-platforms.js.map +1 -0
  90. package/dist/commands/project-commands.d.ts +38 -0
  91. package/dist/commands/project-commands.js +431 -0
  92. package/dist/commands/project-commands.js.map +1 -0
  93. package/dist/commands/referrals.d.ts +69 -0
  94. package/dist/commands/referrals.js +1056 -0
  95. package/dist/commands/referrals.js.map +1 -0
  96. package/dist/commands/resources.d.ts +44 -0
  97. package/dist/commands/resources.js +234 -0
  98. package/dist/commands/resources.js.map +1 -0
  99. package/dist/commands/sessions.d.ts +4 -0
  100. package/dist/commands/sessions.js +28 -0
  101. package/dist/commands/sessions.js.map +1 -0
  102. package/dist/commands/setup-guide.d.ts +3 -0
  103. package/dist/commands/setup-guide.js +38 -0
  104. package/dist/commands/setup-guide.js.map +1 -0
  105. package/dist/commands/shared.d.ts +38 -0
  106. package/dist/commands/shared.js +69 -0
  107. package/dist/commands/shared.js.map +1 -0
  108. package/dist/commands/status.d.ts +3 -0
  109. package/dist/commands/status.js +77 -0
  110. package/dist/commands/status.js.map +1 -0
  111. package/dist/commands/users.d.ts +4 -0
  112. package/dist/commands/users.js +111 -0
  113. package/dist/commands/users.js.map +1 -0
  114. package/dist/commands/webhooks.d.ts +34 -0
  115. package/dist/commands/webhooks.js +301 -0
  116. package/dist/commands/webhooks.js.map +1 -0
  117. package/dist/config-http.d.ts +38 -0
  118. package/dist/config-http.js +70 -0
  119. package/dist/config-http.js.map +1 -0
  120. package/dist/config.d.ts +64 -0
  121. package/dist/config.js +69 -0
  122. package/dist/config.js.map +1 -0
  123. package/dist/context.d.ts +89 -0
  124. package/dist/context.js +32 -0
  125. package/dist/context.js.map +1 -0
  126. package/dist/define-config.d.ts +9 -0
  127. package/dist/define-config.js +8 -0
  128. package/dist/define-config.js.map +1 -0
  129. package/dist/errors.d.ts +15 -0
  130. package/dist/errors.js +25 -0
  131. package/dist/errors.js.map +1 -0
  132. package/dist/help.d.ts +8 -0
  133. package/dist/help.js +926 -0
  134. package/dist/help.js.map +1 -0
  135. package/dist/import/csv.d.ts +6 -0
  136. package/dist/import/csv.js +63 -0
  137. package/dist/import/csv.js.map +1 -0
  138. package/dist/import/vendors.d.ts +57 -0
  139. package/dist/import/vendors.js +568 -0
  140. package/dist/import/vendors.js.map +1 -0
  141. package/dist/index.d.ts +33 -0
  142. package/dist/index.js +81 -0
  143. package/dist/index.js.map +1 -0
  144. package/dist/io.d.ts +21 -0
  145. package/dist/io.js +28 -0
  146. package/dist/io.js.map +1 -0
  147. package/dist/migrate/appwrite/plugin.d.ts +2 -0
  148. package/dist/migrate/appwrite/plugin.js +103 -0
  149. package/dist/migrate/appwrite/plugin.js.map +1 -0
  150. package/dist/migrate/auth0/plugin.d.ts +2 -0
  151. package/dist/migrate/auth0/plugin.js +126 -0
  152. package/dist/migrate/auth0/plugin.js.map +1 -0
  153. package/dist/migrate/authentik/plugin.d.ts +2 -0
  154. package/dist/migrate/authentik/plugin.js +135 -0
  155. package/dist/migrate/authentik/plugin.js.map +1 -0
  156. package/dist/migrate/azure-ad-b2c/plugin.d.ts +8 -0
  157. package/dist/migrate/azure-ad-b2c/plugin.js +165 -0
  158. package/dist/migrate/azure-ad-b2c/plugin.js.map +1 -0
  159. package/dist/migrate/better-auth/integration.d.ts +59 -0
  160. package/dist/migrate/better-auth/integration.js +81 -0
  161. package/dist/migrate/better-auth/integration.js.map +1 -0
  162. package/dist/migrate/better-auth/orchestrator.d.ts +43 -0
  163. package/dist/migrate/better-auth/orchestrator.js +525 -0
  164. package/dist/migrate/better-auth/orchestrator.js.map +1 -0
  165. package/dist/migrate/better-auth/output.d.ts +20 -0
  166. package/dist/migrate/better-auth/output.js +146 -0
  167. package/dist/migrate/better-auth/output.js.map +1 -0
  168. package/dist/migrate/better-auth/translate.d.ts +77 -0
  169. package/dist/migrate/better-auth/translate.js +1989 -0
  170. package/dist/migrate/better-auth/translate.js.map +1 -0
  171. package/dist/migrate/clerk/plugin.d.ts +2 -0
  172. package/dist/migrate/clerk/plugin.js +76 -0
  173. package/dist/migrate/clerk/plugin.js.map +1 -0
  174. package/dist/migrate/cognito/plugin.d.ts +5 -0
  175. package/dist/migrate/cognito/plugin.js +170 -0
  176. package/dist/migrate/cognito/plugin.js.map +1 -0
  177. package/dist/migrate/corbado/plugin.d.ts +2 -0
  178. package/dist/migrate/corbado/plugin.js +63 -0
  179. package/dist/migrate/corbado/plugin.js.map +1 -0
  180. package/dist/migrate/descope/plugin.d.ts +2 -0
  181. package/dist/migrate/descope/plugin.js +83 -0
  182. package/dist/migrate/descope/plugin.js.map +1 -0
  183. package/dist/migrate/entra-external-id/plugin.d.ts +8 -0
  184. package/dist/migrate/entra-external-id/plugin.js +12 -0
  185. package/dist/migrate/entra-external-id/plugin.js.map +1 -0
  186. package/dist/migrate/export/appwrite-config.d.ts +28 -0
  187. package/dist/migrate/export/appwrite-config.js +170 -0
  188. package/dist/migrate/export/appwrite-config.js.map +1 -0
  189. package/dist/migrate/export/appwrite.d.ts +51 -0
  190. package/dist/migrate/export/appwrite.js +288 -0
  191. package/dist/migrate/export/appwrite.js.map +1 -0
  192. package/dist/migrate/export/auth0-config.d.ts +29 -0
  193. package/dist/migrate/export/auth0-config.js +249 -0
  194. package/dist/migrate/export/auth0-config.js.map +1 -0
  195. package/dist/migrate/export/auth0.d.ts +62 -0
  196. package/dist/migrate/export/auth0.js +575 -0
  197. package/dist/migrate/export/auth0.js.map +1 -0
  198. package/dist/migrate/export/authentik-config.d.ts +45 -0
  199. package/dist/migrate/export/authentik-config.js +357 -0
  200. package/dist/migrate/export/authentik-config.js.map +1 -0
  201. package/dist/migrate/export/authentik.d.ts +110 -0
  202. package/dist/migrate/export/authentik.js +838 -0
  203. package/dist/migrate/export/authentik.js.map +1 -0
  204. package/dist/migrate/export/azure-config.d.ts +58 -0
  205. package/dist/migrate/export/azure-config.js +344 -0
  206. package/dist/migrate/export/azure-config.js.map +1 -0
  207. package/dist/migrate/export/azure.d.ts +85 -0
  208. package/dist/migrate/export/azure.js +373 -0
  209. package/dist/migrate/export/azure.js.map +1 -0
  210. package/dist/migrate/export/clerk-config.d.ts +26 -0
  211. package/dist/migrate/export/clerk-config.js +227 -0
  212. package/dist/migrate/export/clerk-config.js.map +1 -0
  213. package/dist/migrate/export/clerk.d.ts +46 -0
  214. package/dist/migrate/export/clerk.js +486 -0
  215. package/dist/migrate/export/clerk.js.map +1 -0
  216. package/dist/migrate/export/cognito-config.d.ts +25 -0
  217. package/dist/migrate/export/cognito-config.js +273 -0
  218. package/dist/migrate/export/cognito-config.js.map +1 -0
  219. package/dist/migrate/export/cognito.d.ts +103 -0
  220. package/dist/migrate/export/cognito.js +441 -0
  221. package/dist/migrate/export/cognito.js.map +1 -0
  222. package/dist/migrate/export/corbado-config.d.ts +20 -0
  223. package/dist/migrate/export/corbado-config.js +63 -0
  224. package/dist/migrate/export/corbado-config.js.map +1 -0
  225. package/dist/migrate/export/corbado.d.ts +37 -0
  226. package/dist/migrate/export/corbado.js +132 -0
  227. package/dist/migrate/export/corbado.js.map +1 -0
  228. package/dist/migrate/export/descope.d.ts +35 -0
  229. package/dist/migrate/export/descope.js +208 -0
  230. package/dist/migrate/export/descope.js.map +1 -0
  231. package/dist/migrate/export/fake-vendor.test-helper.d.ts +27 -0
  232. package/dist/migrate/export/fake-vendor.test-helper.js +41 -0
  233. package/dist/migrate/export/fake-vendor.test-helper.js.map +1 -0
  234. package/dist/migrate/export/firebase-config.d.ts +24 -0
  235. package/dist/migrate/export/firebase-config.js +215 -0
  236. package/dist/migrate/export/firebase-config.js.map +1 -0
  237. package/dist/migrate/export/firebase.d.ts +102 -0
  238. package/dist/migrate/export/firebase.js +464 -0
  239. package/dist/migrate/export/firebase.js.map +1 -0
  240. package/dist/migrate/export/frameworks/app-users.d.ts +42 -0
  241. package/dist/migrate/export/frameworks/app-users.js +161 -0
  242. package/dist/migrate/export/frameworks/app-users.js.map +1 -0
  243. package/dist/migrate/export/frameworks/authjs.d.ts +41 -0
  244. package/dist/migrate/export/frameworks/authjs.js +146 -0
  245. package/dist/migrate/export/frameworks/authjs.js.map +1 -0
  246. package/dist/migrate/export/frameworks/devise.d.ts +39 -0
  247. package/dist/migrate/export/frameworks/devise.js +218 -0
  248. package/dist/migrate/export/frameworks/devise.js.map +1 -0
  249. package/dist/migrate/export/frameworks/django.d.ts +45 -0
  250. package/dist/migrate/export/frameworks/django.js +315 -0
  251. package/dist/migrate/export/frameworks/django.js.map +1 -0
  252. package/dist/migrate/export/frameworks/lucia.d.ts +42 -0
  253. package/dist/migrate/export/frameworks/lucia.js +263 -0
  254. package/dist/migrate/export/frameworks/lucia.js.map +1 -0
  255. package/dist/migrate/export/frameworks/tables.d.ts +90 -0
  256. package/dist/migrate/export/frameworks/tables.js +325 -0
  257. package/dist/migrate/export/frameworks/tables.js.map +1 -0
  258. package/dist/migrate/export/frameworks/webauthn.d.ts +25 -0
  259. package/dist/migrate/export/frameworks/webauthn.js +130 -0
  260. package/dist/migrate/export/frameworks/webauthn.js.map +1 -0
  261. package/dist/migrate/export/frontegg-config.d.ts +29 -0
  262. package/dist/migrate/export/frontegg-config.js +238 -0
  263. package/dist/migrate/export/frontegg-config.js.map +1 -0
  264. package/dist/migrate/export/frontegg.d.ts +67 -0
  265. package/dist/migrate/export/frontegg.js +410 -0
  266. package/dist/migrate/export/frontegg.js.map +1 -0
  267. package/dist/migrate/export/fusionauth-config.d.ts +26 -0
  268. package/dist/migrate/export/fusionauth-config.js +226 -0
  269. package/dist/migrate/export/fusionauth-config.js.map +1 -0
  270. package/dist/migrate/export/fusionauth.d.ts +99 -0
  271. package/dist/migrate/export/fusionauth.js +642 -0
  272. package/dist/migrate/export/fusionauth.js.map +1 -0
  273. package/dist/migrate/export/hanko-config.d.ts +27 -0
  274. package/dist/migrate/export/hanko-config.js +265 -0
  275. package/dist/migrate/export/hanko-config.js.map +1 -0
  276. package/dist/migrate/export/hanko.d.ts +52 -0
  277. package/dist/migrate/export/hanko.js +605 -0
  278. package/dist/migrate/export/hanko.js.map +1 -0
  279. package/dist/migrate/export/keycloak-config.d.ts +19 -0
  280. package/dist/migrate/export/keycloak-config.js +219 -0
  281. package/dist/migrate/export/keycloak-config.js.map +1 -0
  282. package/dist/migrate/export/keycloak.d.ts +155 -0
  283. package/dist/migrate/export/keycloak.js +878 -0
  284. package/dist/migrate/export/keycloak.js.map +1 -0
  285. package/dist/migrate/export/kinde-descope-config.d.ts +38 -0
  286. package/dist/migrate/export/kinde-descope-config.js +172 -0
  287. package/dist/migrate/export/kinde-descope-config.js.map +1 -0
  288. package/dist/migrate/export/kinde.d.ts +57 -0
  289. package/dist/migrate/export/kinde.js +333 -0
  290. package/dist/migrate/export/kinde.js.map +1 -0
  291. package/dist/migrate/export/ldap.d.ts +53 -0
  292. package/dist/migrate/export/ldap.js +277 -0
  293. package/dist/migrate/export/ldap.js.map +1 -0
  294. package/dist/migrate/export/logto-config.d.ts +27 -0
  295. package/dist/migrate/export/logto-config.js +264 -0
  296. package/dist/migrate/export/logto-config.js.map +1 -0
  297. package/dist/migrate/export/logto.d.ts +150 -0
  298. package/dist/migrate/export/logto.js +809 -0
  299. package/dist/migrate/export/logto.js.map +1 -0
  300. package/dist/migrate/export/magic-config.d.ts +14 -0
  301. package/dist/migrate/export/magic-config.js +28 -0
  302. package/dist/migrate/export/magic-config.js.map +1 -0
  303. package/dist/migrate/export/magic.d.ts +31 -0
  304. package/dist/migrate/export/magic.js +93 -0
  305. package/dist/migrate/export/magic.js.map +1 -0
  306. package/dist/migrate/export/mini-yaml.d.ts +19 -0
  307. package/dist/migrate/export/mini-yaml.js +581 -0
  308. package/dist/migrate/export/mini-yaml.js.map +1 -0
  309. package/dist/migrate/export/nhost-config.d.ts +26 -0
  310. package/dist/migrate/export/nhost-config.js +360 -0
  311. package/dist/migrate/export/nhost-config.js.map +1 -0
  312. package/dist/migrate/export/nhost.d.ts +64 -0
  313. package/dist/migrate/export/nhost.js +304 -0
  314. package/dist/migrate/export/nhost.js.map +1 -0
  315. package/dist/migrate/export/okta-config.d.ts +30 -0
  316. package/dist/migrate/export/okta-config.js +205 -0
  317. package/dist/migrate/export/okta-config.js.map +1 -0
  318. package/dist/migrate/export/okta.d.ts +43 -0
  319. package/dist/migrate/export/okta.js +337 -0
  320. package/dist/migrate/export/okta.js.map +1 -0
  321. package/dist/migrate/export/onelogin.d.ts +22 -0
  322. package/dist/migrate/export/onelogin.js +123 -0
  323. package/dist/migrate/export/onelogin.js.map +1 -0
  324. package/dist/migrate/export/ory-config.d.ts +58 -0
  325. package/dist/migrate/export/ory-config.js +451 -0
  326. package/dist/migrate/export/ory-config.js.map +1 -0
  327. package/dist/migrate/export/ory.d.ts +81 -0
  328. package/dist/migrate/export/ory.js +555 -0
  329. package/dist/migrate/export/ory.js.map +1 -0
  330. package/dist/migrate/export/password-detect.d.ts +29 -0
  331. package/dist/migrate/export/password-detect.js +81 -0
  332. package/dist/migrate/export/password-detect.js.map +1 -0
  333. package/dist/migrate/export/pingone.d.ts +36 -0
  334. package/dist/migrate/export/pingone.js +218 -0
  335. package/dist/migrate/export/pingone.js.map +1 -0
  336. package/dist/migrate/export/plugin-kit.d.ts +25 -0
  337. package/dist/migrate/export/plugin-kit.js +82 -0
  338. package/dist/migrate/export/plugin-kit.js.map +1 -0
  339. package/dist/migrate/export/pocketbase-config.d.ts +28 -0
  340. package/dist/migrate/export/pocketbase-config.js +180 -0
  341. package/dist/migrate/export/pocketbase-config.js.map +1 -0
  342. package/dist/migrate/export/pocketbase.d.ts +52 -0
  343. package/dist/migrate/export/pocketbase.js +243 -0
  344. package/dist/migrate/export/pocketbase.js.map +1 -0
  345. package/dist/migrate/export/project-files.d.ts +15 -0
  346. package/dist/migrate/export/project-files.js +43 -0
  347. package/dist/migrate/export/project-files.js.map +1 -0
  348. package/dist/migrate/export/propelauth-config.d.ts +18 -0
  349. package/dist/migrate/export/propelauth-config.js +58 -0
  350. package/dist/migrate/export/propelauth-config.js.map +1 -0
  351. package/dist/migrate/export/propelauth-harness.test-helper.d.ts +62 -0
  352. package/dist/migrate/export/propelauth-harness.test-helper.js +109 -0
  353. package/dist/migrate/export/propelauth-harness.test-helper.js.map +1 -0
  354. package/dist/migrate/export/propelauth.d.ts +48 -0
  355. package/dist/migrate/export/propelauth.js +255 -0
  356. package/dist/migrate/export/propelauth.js.map +1 -0
  357. package/dist/migrate/export/record-set.d.ts +44 -0
  358. package/dist/migrate/export/record-set.js +98 -0
  359. package/dist/migrate/export/record-set.js.map +1 -0
  360. package/dist/migrate/export/source-lines.d.ts +17 -0
  361. package/dist/migrate/export/source-lines.js +43 -0
  362. package/dist/migrate/export/source-lines.js.map +1 -0
  363. package/dist/migrate/export/sso-metadata.d.ts +47 -0
  364. package/dist/migrate/export/sso-metadata.js +180 -0
  365. package/dist/migrate/export/sso-metadata.js.map +1 -0
  366. package/dist/migrate/export/stytch-config.d.ts +22 -0
  367. package/dist/migrate/export/stytch-config.js +102 -0
  368. package/dist/migrate/export/stytch-config.js.map +1 -0
  369. package/dist/migrate/export/stytch.d.ts +68 -0
  370. package/dist/migrate/export/stytch.js +510 -0
  371. package/dist/migrate/export/stytch.js.map +1 -0
  372. package/dist/migrate/export/supabase-config.d.ts +48 -0
  373. package/dist/migrate/export/supabase-config.js +408 -0
  374. package/dist/migrate/export/supabase-config.js.map +1 -0
  375. package/dist/migrate/export/supabase.d.ts +86 -0
  376. package/dist/migrate/export/supabase.js +524 -0
  377. package/dist/migrate/export/supabase.js.map +1 -0
  378. package/dist/migrate/export/supertokens-config.d.ts +20 -0
  379. package/dist/migrate/export/supertokens-config.js +150 -0
  380. package/dist/migrate/export/supertokens-config.js.map +1 -0
  381. package/dist/migrate/export/supertokens.d.ts +125 -0
  382. package/dist/migrate/export/supertokens.js +464 -0
  383. package/dist/migrate/export/supertokens.js.map +1 -0
  384. package/dist/migrate/export/table.d.ts +35 -0
  385. package/dist/migrate/export/table.js +248 -0
  386. package/dist/migrate/export/table.js.map +1 -0
  387. package/dist/migrate/export/translate-kit.d.ts +46 -0
  388. package/dist/migrate/export/translate-kit.js +148 -0
  389. package/dist/migrate/export/translate-kit.js.map +1 -0
  390. package/dist/migrate/export/userfront-config.d.ts +15 -0
  391. package/dist/migrate/export/userfront-config.js +49 -0
  392. package/dist/migrate/export/userfront-config.js.map +1 -0
  393. package/dist/migrate/export/userfront.d.ts +38 -0
  394. package/dist/migrate/export/userfront.js +189 -0
  395. package/dist/migrate/export/userfront.js.map +1 -0
  396. package/dist/migrate/export/vendor-http.d.ts +46 -0
  397. package/dist/migrate/export/vendor-http.js +138 -0
  398. package/dist/migrate/export/vendor-http.js.map +1 -0
  399. package/dist/migrate/export/workos-config.d.ts +23 -0
  400. package/dist/migrate/export/workos-config.js +125 -0
  401. package/dist/migrate/export/workos-config.js.map +1 -0
  402. package/dist/migrate/export/workos.d.ts +46 -0
  403. package/dist/migrate/export/workos.js +272 -0
  404. package/dist/migrate/export/workos.js.map +1 -0
  405. package/dist/migrate/export/zip.d.ts +8 -0
  406. package/dist/migrate/export/zip.js +66 -0
  407. package/dist/migrate/export/zip.js.map +1 -0
  408. package/dist/migrate/export/zitadel-config.d.ts +37 -0
  409. package/dist/migrate/export/zitadel-config.js +279 -0
  410. package/dist/migrate/export/zitadel-config.js.map +1 -0
  411. package/dist/migrate/export/zitadel.d.ts +82 -0
  412. package/dist/migrate/export/zitadel.js +447 -0
  413. package/dist/migrate/export/zitadel.js.map +1 -0
  414. package/dist/migrate/firebase/plugin.d.ts +2 -0
  415. package/dist/migrate/firebase/plugin.js +152 -0
  416. package/dist/migrate/firebase/plugin.js.map +1 -0
  417. package/dist/migrate/framework/builtins.d.ts +2 -0
  418. package/dist/migrate/framework/builtins.js +52 -0
  419. package/dist/migrate/framework/builtins.js.map +1 -0
  420. package/dist/migrate/framework/commands.d.ts +20 -0
  421. package/dist/migrate/framework/commands.js +58 -0
  422. package/dist/migrate/framework/commands.js.map +1 -0
  423. package/dist/migrate/framework/custom.d.ts +12 -0
  424. package/dist/migrate/framework/custom.js +96 -0
  425. package/dist/migrate/framework/custom.js.map +1 -0
  426. package/dist/migrate/framework/orchestrator.d.ts +113 -0
  427. package/dist/migrate/framework/orchestrator.js +532 -0
  428. package/dist/migrate/framework/orchestrator.js.map +1 -0
  429. package/dist/migrate/framework/plugin.d.ts +167 -0
  430. package/dist/migrate/framework/plugin.js +3 -0
  431. package/dist/migrate/framework/plugin.js.map +1 -0
  432. package/dist/migrate/framework/registry.d.ts +11 -0
  433. package/dist/migrate/framework/registry.js +44 -0
  434. package/dist/migrate/framework/registry.js.map +1 -0
  435. package/dist/migrate/framework/report.d.ts +17 -0
  436. package/dist/migrate/framework/report.js +103 -0
  437. package/dist/migrate/framework/report.js.map +1 -0
  438. package/dist/migrate/frameworks/plugins.d.ts +29 -0
  439. package/dist/migrate/frameworks/plugins.js +402 -0
  440. package/dist/migrate/frameworks/plugins.js.map +1 -0
  441. package/dist/migrate/frameworks/report.d.ts +92 -0
  442. package/dist/migrate/frameworks/report.js +207 -0
  443. package/dist/migrate/frameworks/report.js.map +1 -0
  444. package/dist/migrate/frameworks/translate-js.d.ts +5 -0
  445. package/dist/migrate/frameworks/translate-js.js +503 -0
  446. package/dist/migrate/frameworks/translate-js.js.map +1 -0
  447. package/dist/migrate/frameworks/translate-rails-django.d.ts +3 -0
  448. package/dist/migrate/frameworks/translate-rails-django.js +1391 -0
  449. package/dist/migrate/frameworks/translate-rails-django.js.map +1 -0
  450. package/dist/migrate/frontegg/plugin.d.ts +2 -0
  451. package/dist/migrate/frontegg/plugin.js +78 -0
  452. package/dist/migrate/frontegg/plugin.js.map +1 -0
  453. package/dist/migrate/fusionauth/plugin.d.ts +2 -0
  454. package/dist/migrate/fusionauth/plugin.js +109 -0
  455. package/dist/migrate/fusionauth/plugin.js.map +1 -0
  456. package/dist/migrate/hanko/plugin.d.ts +2 -0
  457. package/dist/migrate/hanko/plugin.js +100 -0
  458. package/dist/migrate/hanko/plugin.js.map +1 -0
  459. package/dist/migrate/keycloak/plugin.d.ts +2 -0
  460. package/dist/migrate/keycloak/plugin.js +148 -0
  461. package/dist/migrate/keycloak/plugin.js.map +1 -0
  462. package/dist/migrate/kinde/plugin.d.ts +2 -0
  463. package/dist/migrate/kinde/plugin.js +105 -0
  464. package/dist/migrate/kinde/plugin.js.map +1 -0
  465. package/dist/migrate/ldap/plugin.d.ts +2 -0
  466. package/dist/migrate/ldap/plugin.js +73 -0
  467. package/dist/migrate/ldap/plugin.js.map +1 -0
  468. package/dist/migrate/logto/plugin.d.ts +2 -0
  469. package/dist/migrate/logto/plugin.js +131 -0
  470. package/dist/migrate/logto/plugin.js.map +1 -0
  471. package/dist/migrate/magic/plugin.d.ts +2 -0
  472. package/dist/migrate/magic/plugin.js +56 -0
  473. package/dist/migrate/magic/plugin.js.map +1 -0
  474. package/dist/migrate/nhost/plugin.d.ts +2 -0
  475. package/dist/migrate/nhost/plugin.js +115 -0
  476. package/dist/migrate/nhost/plugin.js.map +1 -0
  477. package/dist/migrate/oidc/plugin.d.ts +2 -0
  478. package/dist/migrate/oidc/plugin.js +73 -0
  479. package/dist/migrate/oidc/plugin.js.map +1 -0
  480. package/dist/migrate/okta/plugin.d.ts +2 -0
  481. package/dist/migrate/okta/plugin.js +105 -0
  482. package/dist/migrate/okta/plugin.js.map +1 -0
  483. package/dist/migrate/onelogin/plugin.d.ts +2 -0
  484. package/dist/migrate/onelogin/plugin.js +61 -0
  485. package/dist/migrate/onelogin/plugin.js.map +1 -0
  486. package/dist/migrate/ory/plugin.d.ts +2 -0
  487. package/dist/migrate/ory/plugin.js +186 -0
  488. package/dist/migrate/ory/plugin.js.map +1 -0
  489. package/dist/migrate/ping-identity/plugin.d.ts +2 -0
  490. package/dist/migrate/ping-identity/plugin.js +100 -0
  491. package/dist/migrate/ping-identity/plugin.js.map +1 -0
  492. package/dist/migrate/pocketbase/plugin.d.ts +2 -0
  493. package/dist/migrate/pocketbase/plugin.js +99 -0
  494. package/dist/migrate/pocketbase/plugin.js.map +1 -0
  495. package/dist/migrate/propelauth/plugin.d.ts +2 -0
  496. package/dist/migrate/propelauth/plugin.js +65 -0
  497. package/dist/migrate/propelauth/plugin.js.map +1 -0
  498. package/dist/migrate/saml/plugin.d.ts +2 -0
  499. package/dist/migrate/saml/plugin.js +79 -0
  500. package/dist/migrate/saml/plugin.js.map +1 -0
  501. package/dist/migrate/stytch/plugin.d.ts +2 -0
  502. package/dist/migrate/stytch/plugin.js +97 -0
  503. package/dist/migrate/stytch/plugin.js.map +1 -0
  504. package/dist/migrate/supabase/plugin.d.ts +2 -0
  505. package/dist/migrate/supabase/plugin.js +149 -0
  506. package/dist/migrate/supabase/plugin.js.map +1 -0
  507. package/dist/migrate/supertokens/plugin.d.ts +2 -0
  508. package/dist/migrate/supertokens/plugin.js +114 -0
  509. package/dist/migrate/supertokens/plugin.js.map +1 -0
  510. package/dist/migrate/user-table/plugin.d.ts +2 -0
  511. package/dist/migrate/user-table/plugin.js +62 -0
  512. package/dist/migrate/user-table/plugin.js.map +1 -0
  513. package/dist/migrate/userfront/plugin.d.ts +2 -0
  514. package/dist/migrate/userfront/plugin.js +60 -0
  515. package/dist/migrate/userfront/plugin.js.map +1 -0
  516. package/dist/migrate/workos/plugin.d.ts +2 -0
  517. package/dist/migrate/workos/plugin.js +81 -0
  518. package/dist/migrate/workos/plugin.js.map +1 -0
  519. package/dist/migrate/zitadel/plugin.d.ts +2 -0
  520. package/dist/migrate/zitadel/plugin.js +114 -0
  521. package/dist/migrate/zitadel/plugin.js.map +1 -0
  522. package/dist/output.d.ts +41 -0
  523. package/dist/output.js +72 -0
  524. package/dist/output.js.map +1 -0
  525. package/dist/project.d.ts +64 -0
  526. package/dist/project.js +86 -0
  527. package/dist/project.js.map +1 -0
  528. package/dist/prompt.d.ts +15 -0
  529. package/dist/prompt.js +46 -0
  530. package/dist/prompt.js.map +1 -0
  531. package/dist/redact.d.ts +41 -0
  532. package/dist/redact.js +115 -0
  533. package/dist/redact.js.map +1 -0
  534. package/dist/run.d.ts +12 -0
  535. package/dist/run.js +169 -0
  536. package/dist/run.js.map +1 -0
  537. package/dist/secrets.d.ts +41 -0
  538. package/dist/secrets.js +142 -0
  539. package/dist/secrets.js.map +1 -0
  540. package/dist/serialize.d.ts +30 -0
  541. package/dist/serialize.js +131 -0
  542. package/dist/serialize.js.map +1 -0
  543. package/dist/version.d.ts +7 -0
  544. package/dist/version.js +21 -0
  545. package/dist/version.js.map +1 -0
  546. 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 {};