@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,304 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GraphqlError = void 0;
4
+ exports.exportNhost = exportNhost;
5
+ exports.refreshTokenHash = refreshTokenHash;
6
+ exports.decryptTotp = decryptTotp;
7
+ exports.byteaToBase64url = byteaToBase64url;
8
+ exports.nhostGraphqlUrl = nhostGraphqlUrl;
9
+ exports.fetchNhostRows = fetchNhostRows;
10
+ exports.readNhostDump = readNhostDump;
11
+ const node_crypto_1 = require("node:crypto");
12
+ const node_fs_1 = require("node:fs");
13
+ const node_path_1 = require("node:path");
14
+ const pocketbase_1 = require("./pocketbase");
15
+ const record_set_1 = require("./record-set");
16
+ const translate_kit_1 = require("./translate-kit");
17
+ const vendor_http_1 = require("./vendor-http");
18
+ /** Roles every Nhost user has implicitly: not carried as Atlas roles. */
19
+ const IMPLICIT_ROLES = new Set(['user', 'me', 'anonymous', 'public']);
20
+ function exportNhost(rows, opts = {}) {
21
+ const set = new record_set_1.RecordSet();
22
+ const now = (opts.now ?? Date.now)();
23
+ const key = opts.encryptionKey ? parseKey(opts.encryptionKey) : undefined;
24
+ const rolesOf = new Map();
25
+ for (const r of rows.userRoles) {
26
+ const userId = (0, record_set_1.str)(r.userId);
27
+ const role = (0, record_set_1.str)(r.role);
28
+ if (!userId || !role || IMPLICIT_ROLES.has(role))
29
+ continue;
30
+ (rolesOf.get(userId) ?? rolesOf.set(userId, new Set()).get(userId)).add((0, translate_kit_1.keyOf)(role));
31
+ }
32
+ const ids = new Set();
33
+ const allRoles = new Set();
34
+ let totpLocked = 0;
35
+ let totpBroken = 0;
36
+ for (const u of rows.users) {
37
+ const id = (0, record_set_1.str)(u.id);
38
+ if (!id)
39
+ continue;
40
+ const user = mapUser(u, rolesOf.get(id));
41
+ if (!user) {
42
+ set.omit('user', 'user without an email or phone number who is not anonymous');
43
+ continue;
44
+ }
45
+ ids.add(id);
46
+ for (const r of user.roles ?? [])
47
+ allRoles.add(r);
48
+ set.add('user', (0, record_set_1.compact)(user));
49
+ const mfa = (0, record_set_1.str)(u.activeMfaType);
50
+ const secret = (0, record_set_1.str)(u.totpSecret);
51
+ if (mfa === 'totp' && secret) {
52
+ const plain = secret.length < 64 ? secret : key ? decryptTotp(secret, key) : undefined;
53
+ if (plain && /^[A-Z2-7]+=*$/i.test(plain))
54
+ set.add('mfa_factor', { user_id: id, type: 'totp', secret_base32: plain.toUpperCase().replace(/=+$/, ''), digits: 6, period: 30, algorithm: 'SHA1', verified: true });
55
+ else if (secret.length >= 64 && !key)
56
+ totpLocked++;
57
+ else
58
+ totpBroken++;
59
+ }
60
+ else if (mfa === 'sms') {
61
+ const phone = (0, record_set_1.e164)(u.phoneNumber);
62
+ if (phone)
63
+ set.add('mfa_factor', { user_id: id, type: 'phone', phone, verified: truthy(u.phoneNumberVerified) });
64
+ }
65
+ }
66
+ for (const r of [...allRoles].sort())
67
+ set.add('role', { key: r, name: r, scope: 'app' }, r);
68
+ if (totpLocked)
69
+ set.omit('mfa_factor', 'TOTP secret encrypted with AUTH_ENCRYPTION_KEY: pass --set nhost-encryption-key=<hex> to carry it, else those users enrol again', totpLocked);
70
+ if (totpBroken)
71
+ set.omit('mfa_factor', 'TOTP secret that does not decrypt with the given AUTH_ENCRYPTION_KEY', totpBroken);
72
+ for (const p of rows.providers) {
73
+ const userId = (0, record_set_1.str)(p.userId);
74
+ const provider = (0, record_set_1.str)(p.providerId);
75
+ const providerUserId = (0, record_set_1.str)(p.providerUserId);
76
+ if (!userId || !provider || !providerUserId || !ids.has(userId))
77
+ continue;
78
+ set.add('identity', (0, record_set_1.compact)({ id: (0, record_set_1.str)(p.id), user_id: userId, provider, provider_user_id: providerUserId, kind: 'oauth' }), `${provider}:${providerUserId}`);
79
+ }
80
+ const keys = rows.securityKeys.filter((k) => ids.has((0, record_set_1.str)(k.userId) ?? ''));
81
+ if (keys.length && !opts.rpId) {
82
+ set.omit('passkey', 'security key without a relying-party id: pass --set rp-id=<your WebAuthn rp id> (nhost.toml auth.method.webauthn.relyingParty.id)', keys.length);
83
+ }
84
+ else {
85
+ for (const k of keys) {
86
+ const credentialId = (0, record_set_1.str)(k.credentialId);
87
+ const publicKey = byteaToBase64url(k.credentialPublicKey);
88
+ if (!credentialId || !publicKey) {
89
+ set.omit('passkey', 'security key without its credential id or public key');
90
+ continue;
91
+ }
92
+ const transports = ((0, record_set_1.str)(k.transports) ?? '').split(',').map((t) => t.trim()).filter(Boolean);
93
+ set.add('passkey', (0, record_set_1.compact)({ id: (0, record_set_1.str)(k.id), user_id: (0, record_set_1.str)(k.userId), credential_id: credentialId, public_key: publicKey, sign_count: num(k.counter), rp_id: opts.rpId, transports, name: (0, record_set_1.str)(k.nickname) }));
94
+ }
95
+ }
96
+ let pats = 0;
97
+ let expired = 0;
98
+ for (const t of rows.refreshTokens) {
99
+ const userId = (0, record_set_1.str)(t.userId);
100
+ if (!userId || !ids.has(userId))
101
+ continue;
102
+ if (((0, record_set_1.str)(t.type) ?? 'regular') !== 'regular') {
103
+ pats++;
104
+ continue;
105
+ }
106
+ const expires = Date.parse((0, record_set_1.str)(t.expiresAt) ?? '');
107
+ if (!Number.isFinite(expires) || expires <= now) {
108
+ expired++;
109
+ continue;
110
+ }
111
+ const hash = refreshTokenHash(t);
112
+ if (!hash) {
113
+ set.omit('session', 'refresh token row without a readable hash');
114
+ continue;
115
+ }
116
+ set.add('session', (0, record_set_1.compact)({ id: (0, record_set_1.str)(t.id) ?? hash.slice(0, 32), user_id: userId, token_hash: hash, expires_at: (0, record_set_1.str)(t.expiresAt), created_at: (0, record_set_1.str)(t.createdAt) }));
117
+ }
118
+ if (pats)
119
+ set.omit('session', 'personal access token (reissue it as an Atlas API key)', pats);
120
+ if (expired)
121
+ set.omit('session', 'expired refresh token', expired);
122
+ const providers = new Set(set.list('identity').map((i) => i.provider));
123
+ set.manifest = { ...set.manifest, origin: opts.origin ?? 'nhost', providers: [...providers].sort(), ...(opts.rpId ? { rpId: opts.rpId } : {}) };
124
+ return set;
125
+ }
126
+ function mapUser(u, roles) {
127
+ const email = (0, record_set_1.str)(u.email)?.toLowerCase();
128
+ const phone = (0, record_set_1.e164)(u.phoneNumber);
129
+ const anonymous = truthy(u.isAnonymous);
130
+ if (!email && !phone && !anonymous)
131
+ return null;
132
+ const all = new Set(roles ?? []);
133
+ const def = (0, record_set_1.str)(u.defaultRole);
134
+ if (def && !IMPLICIT_ROLES.has(def))
135
+ all.add((0, translate_kit_1.keyOf)(def));
136
+ const hash = (0, record_set_1.str)(u.passwordHash);
137
+ const meta = (0, record_set_1.isObj)(u.metadata) ? u.metadata : typeof u.metadata === 'string' ? safeJson(u.metadata) : undefined;
138
+ const locale = (0, record_set_1.str)(u.locale);
139
+ const user = {
140
+ id: (0, record_set_1.str)(u.id),
141
+ emails: email ? [{ email, verified: truthy(u.emailVerified), primary: true }] : undefined,
142
+ phones: phone ? [{ phone, verified: truthy(u.phoneNumberVerified), primary: !email }] : undefined,
143
+ name: (0, record_set_1.str)(u.displayName),
144
+ image_url: (0, record_set_1.str)(u.avatarUrl),
145
+ password: hash && /^\$2[aby]\$\d{2}\$/.test(hash) ? { algorithm: 'auto', hash } : undefined,
146
+ roles: all.size ? [...all].sort() : undefined,
147
+ banned: truthy(u.disabled) ? true : undefined,
148
+ anonymous: anonymous && !email && !phone ? true : undefined,
149
+ public_metadata: (0, record_set_1.bag)({ ...((0, record_set_1.isObj)(meta) ? meta : {}), ...(locale ? { locale } : {}) }),
150
+ created_at: (0, record_set_1.str)(u.createdAt),
151
+ last_sign_in_at: (0, record_set_1.str)(u.lastSeen),
152
+ };
153
+ return user;
154
+ }
155
+ /** `\x` + hex(sha256(token)) as Nhost stores it → the bundle's lowercase hex. */
156
+ function refreshTokenHash(t) {
157
+ const raw = (0, record_set_1.str)(t.refreshTokenHash);
158
+ if (!raw) {
159
+ // Legacy hasura-auth kept the token itself (a UUID) in refresh_token.
160
+ const plain = (0, record_set_1.str)(t.refreshToken);
161
+ return plain ? (0, node_crypto_1.createHash)('sha256').update(plain, 'utf8').digest('hex') : undefined;
162
+ }
163
+ const hex = raw.replace(/^\\x/i, '').toLowerCase();
164
+ return /^[0-9a-f]{64}$/.test(hex) ? hex : undefined;
165
+ }
166
+ /**
167
+ * Current Nhost encrypts TOTP secrets: AES-256-GCM, stored as
168
+ * hex(nonce(12) || ciphertext || tag(16)), key = AUTH_ENCRYPTION_KEY (hex).
169
+ */
170
+ function decryptTotp(stored, key) {
171
+ try {
172
+ const raw = Buffer.from(stored, 'hex');
173
+ if (raw.length < 12 + 16 + 1)
174
+ return undefined;
175
+ const decipher = (0, node_crypto_1.createDecipheriv)('aes-256-gcm', key, raw.subarray(0, 12));
176
+ decipher.setAuthTag(raw.subarray(raw.length - 16));
177
+ return Buffer.concat([decipher.update(raw.subarray(12, raw.length - 16)), decipher.final()]).toString('utf8');
178
+ }
179
+ catch {
180
+ return undefined;
181
+ }
182
+ }
183
+ function parseKey(hex) {
184
+ const k = Buffer.from(hex.trim(), 'hex');
185
+ if (k.length !== 32)
186
+ throw new Error('The Nhost encryption key (AUTH_ENCRYPTION_KEY) must be 32 bytes as 64 hex characters.');
187
+ return k;
188
+ }
189
+ /** Postgres bytea as Hasura / psql print it (`\x…` hex), or base64 → base64url. */
190
+ function byteaToBase64url(v) {
191
+ const s = (0, record_set_1.str)(v);
192
+ if (!s)
193
+ return undefined;
194
+ if (/^\\x[0-9a-f]*$/i.test(s))
195
+ return Buffer.from(s.slice(2), 'hex').toString('base64url');
196
+ return Buffer.from(s, 'base64').toString('base64url');
197
+ }
198
+ const truthy = (v) => v === true || v === 1 || v === '1' || v === 't' || v === 'true';
199
+ const num = (v) => (typeof v === 'number' ? v : typeof v === 'string' && /^\d+$/.test(v) ? Number(v) : undefined);
200
+ function safeJson(s) {
201
+ try {
202
+ return JSON.parse(s);
203
+ }
204
+ catch {
205
+ return undefined;
206
+ }
207
+ }
208
+ // ── readers ─────────────────────────────────────────────────────────────────
209
+ /** Nhost Cloud's GraphQL endpoint for a subdomain and region. */
210
+ function nhostGraphqlUrl(o) {
211
+ return `https://${o.subdomain}.graphql.${o.region}.nhost.run/v1`;
212
+ }
213
+ const PAGE = 1000;
214
+ const QUERIES = {
215
+ users: 'id createdAt lastSeen disabled displayName avatarUrl locale email phoneNumber passwordHash emailVerified phoneNumberVerified defaultRole isAnonymous totpSecret activeMfaType metadata',
216
+ authUserProviders: 'id userId providerId providerUserId',
217
+ authUserSecurityKeys: 'id userId credentialId credentialPublicKey counter transports nickname',
218
+ authUserRoles: 'userId role',
219
+ authRefreshTokens: 'id userId createdAt expiresAt refreshTokenHash type',
220
+ };
221
+ /** The auth tables through Hasura with the admin secret (sent only to the project). */
222
+ async function fetchNhostRows(opts) {
223
+ const http = new vendor_http_1.VendorHttp({ vendor: 'Nhost', baseUrl: opts.graphqlUrl, headers: { 'x-hasura-admin-secret': opts.adminSecret }, fetchImpl: opts.fetchImpl, sleep: opts.sleep });
224
+ const progress = opts.onProgress ?? (() => undefined);
225
+ const list = async (root, fields, order) => {
226
+ const out = [];
227
+ for (let offset = 0;; offset += PAGE) {
228
+ const query = `query { ${root}(limit: ${PAGE}, offset: ${offset}, order_by: { ${order}: asc }) { ${fields} } }`;
229
+ const { body } = await http.post(opts.graphqlUrl, { query });
230
+ const errors = (0, record_set_1.isObj)(body) ? (0, record_set_1.objs)(body.errors) : [];
231
+ if (errors.length)
232
+ throw new GraphqlError((0, record_set_1.str)(errors[0].message) ?? 'GraphQL error');
233
+ const rows = (0, record_set_1.isObj)(body) && (0, record_set_1.isObj)(body.data) ? (0, record_set_1.objs)(body.data[root]) : [];
234
+ out.push(...rows);
235
+ if (rows.length < PAGE)
236
+ return out;
237
+ }
238
+ };
239
+ progress('users');
240
+ const users = await list('users', QUERIES.users, 'createdAt');
241
+ progress('social links');
242
+ const providers = await list('authUserProviders', QUERIES.authUserProviders, 'id');
243
+ progress('security keys');
244
+ const securityKeys = await list('authUserSecurityKeys', QUERIES.authUserSecurityKeys, 'id');
245
+ progress('roles');
246
+ const userRoles = await list('authUserRoles', QUERIES.authUserRoles, 'userId');
247
+ progress('refresh tokens');
248
+ let refreshTokens;
249
+ try {
250
+ refreshTokens = await list('authRefreshTokens', QUERIES.authRefreshTokens, 'createdAt');
251
+ }
252
+ catch (err) {
253
+ // Projects older than personal access tokens have no `type` column.
254
+ if (!(err instanceof GraphqlError) || !/type/.test(err.message))
255
+ throw err;
256
+ refreshTokens = await list('authRefreshTokens', 'id userId createdAt expiresAt refreshTokenHash', 'createdAt');
257
+ }
258
+ return { users, providers, securityKeys, userRoles, refreshTokens };
259
+ }
260
+ class GraphqlError extends Error {
261
+ }
262
+ exports.GraphqlError = GraphqlError;
263
+ /** Table names a dump may use for each auth table (`auth.users.csv`, `users.json`, `auth_users.ndjson` …). */
264
+ const DUMP_TABLES = {
265
+ users: ['auth.users', 'auth_users', 'users'],
266
+ providers: ['auth.user_providers', 'auth_user_providers', 'user_providers'],
267
+ securityKeys: ['auth.user_security_keys', 'auth_user_security_keys', 'user_security_keys', 'auth.user_authenticators', 'user_authenticators'],
268
+ userRoles: ['auth.user_roles', 'auth_user_roles', 'user_roles'],
269
+ refreshTokens: ['auth.refresh_tokens', 'auth_refresh_tokens', 'refresh_tokens'],
270
+ };
271
+ /** A folder of `auth.*` table dumps (JSON, NDJSON or CSV with a header; snake_case columns). */
272
+ function readNhostDump(dir) {
273
+ const byName = new Map();
274
+ for (const file of (0, node_fs_1.readdirSync)(dir).sort()) {
275
+ const path = (0, node_path_1.join)(dir, file);
276
+ const ext = (0, node_path_1.extname)(file).toLowerCase();
277
+ if (!(0, node_fs_1.statSync)(path).isFile() || !['.json', '.ndjson', '.jsonl', '.csv'].includes(ext))
278
+ continue;
279
+ byName.set((0, node_path_1.basename)(file, (0, node_path_1.extname)(file)).toLowerCase(), (0, pocketbase_1.parseTable)((0, node_fs_1.readFileSync)(path, 'utf8'), ext).map(camelRow));
280
+ }
281
+ const pick = (k) => {
282
+ for (const n of DUMP_TABLES[k]) {
283
+ const rows = byName.get(n);
284
+ if (rows)
285
+ return rows;
286
+ }
287
+ return [];
288
+ };
289
+ const rows = { users: pick('users'), providers: pick('providers'), securityKeys: pick('securityKeys'), userRoles: pick('userRoles'), refreshTokens: pick('refreshTokens') };
290
+ if (!rows.users.length)
291
+ throw new Error(`No auth.users table in ${dir} (expected users.json, auth.users.csv, …).`);
292
+ return rows;
293
+ }
294
+ /** `phone_number_verified` → `phoneNumberVerified`; empty CSV cells drop out. */
295
+ function camelRow(r) {
296
+ const out = {};
297
+ for (const [k, v] of Object.entries(r)) {
298
+ if (v === '' || v === null)
299
+ continue;
300
+ out[k.replace(/_([a-z])/g, (_, c) => c.toUpperCase())] = v;
301
+ }
302
+ return out;
303
+ }
304
+ //# sourceMappingURL=nhost.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nhost.js","sourceRoot":"","sources":["../../../src/migrate/export/nhost.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { TranslationResult } from '../framework/plugin';
2
+ import { type Obj } from './record-set';
3
+ import { VendorHttp } from './vendor-http';
4
+ /**
5
+ * `atlas migrate okta config` — an Okta org's policies and integrations →
6
+ * Atlas config, read with an API token on this machine: password policies,
7
+ * global session policy (lifetimes), authenticator enrollment (which second
8
+ * factors), social identity providers, custom authorization servers (APIs and
9
+ * scopes), OIDC apps (redirect URIs) and groups (roles). Sign-on rules beyond
10
+ * MFA, network zones, hooks and the sign-in widget are reported as manual.
11
+ */
12
+ export interface OktaConfigSnapshot {
13
+ domain: string;
14
+ passwordPolicies: Obj[];
15
+ signOnPolicies: Array<Obj & {
16
+ rules?: Obj[];
17
+ }>;
18
+ authenticators: Obj[];
19
+ idps: Obj[];
20
+ authorizationServers: Array<Obj & {
21
+ scopes?: Obj[];
22
+ }>;
23
+ apps: Obj[];
24
+ groups: Obj[];
25
+ inlineHooks: Obj[];
26
+ }
27
+ export declare function fetchOktaConfig(http: VendorHttp, domain: string): Promise<OktaConfigSnapshot>;
28
+ export declare function translateOktaConfig(snap: OktaConfigSnapshot, opts?: {
29
+ groupsAs?: 'roles' | 'organizations' | 'skip';
30
+ }): TranslationResult;
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchOktaConfig = fetchOktaConfig;
4
+ exports.translateOktaConfig = translateOktaConfig;
5
+ const record_set_1 = require("./record-set");
6
+ const translate_kit_1 = require("./translate-kit");
7
+ const vendor_http_1 = require("./vendor-http");
8
+ async function fetchOktaConfig(http, domain) {
9
+ const all = async (path) => {
10
+ const out = [];
11
+ let next = path;
12
+ try {
13
+ while (next) {
14
+ const res = await http.get(next);
15
+ out.push(...(0, record_set_1.objs)(res.body));
16
+ next = (0, vendor_http_1.nextLink)(res.headers.get('link'));
17
+ }
18
+ }
19
+ catch (err) {
20
+ if (err instanceof vendor_http_1.VendorApiError && [403, 404].includes(err.status))
21
+ return out;
22
+ throw err;
23
+ }
24
+ return out;
25
+ };
26
+ const signOn = (await all('/policies?type=OKTA_SIGN_ON'));
27
+ for (const p of signOn)
28
+ p.rules = await all(`/policies/${(0, record_set_1.str)(p.id)}/rules`);
29
+ const servers = (await all('/authorizationServers'));
30
+ for (const s of servers)
31
+ s.scopes = await all(`/authorizationServers/${(0, record_set_1.str)(s.id)}/scopes`);
32
+ return {
33
+ domain,
34
+ passwordPolicies: await all('/policies?type=PASSWORD'),
35
+ signOnPolicies: signOn,
36
+ authenticators: await all('/authenticators'),
37
+ idps: await all('/idps'),
38
+ authorizationServers: servers,
39
+ apps: await all('/apps?limit=200&filter=status%20eq%20%22ACTIVE%22'),
40
+ groups: (await all('/groups?limit=200')).filter((g) => (0, record_set_1.str)(g.type) !== 'BUILT_IN'),
41
+ inlineHooks: await all('/inlineHooks'),
42
+ };
43
+ }
44
+ function translateOktaConfig(snap, opts = {}) {
45
+ const b = new translate_kit_1.ConfigBuilder();
46
+ b.set('strategies.password', true);
47
+ b.add('differs', 'authentication', 'password', 'Password sign-in. Okta never exports password hashes: the okta lazy-migration preset checks each password against Okta on first sign-in.', 'auth_config.strategies.password');
48
+ // ── password policy: the default (lowest priority) policy is the org baseline ──
49
+ const pwPolicy = [...snap.passwordPolicies].sort((a, c) => Number(c.priority ?? 0) - Number(a.priority ?? 0))[0];
50
+ if (pwPolicy) {
51
+ const name = (0, record_set_1.str)(pwPolicy.name) ?? 'password policy';
52
+ const settings = (0, record_set_1.isObj)(pwPolicy.settings) && (0, record_set_1.isObj)(pwPolicy.settings.password) ? pwPolicy.settings.password : {};
53
+ const complexity = (0, record_set_1.isObj)(settings.complexity) ? settings.complexity : {};
54
+ const min = typeof complexity.minLength === 'number' ? complexity.minLength : 8;
55
+ b.set('passwordPolicy.minLength', Math.max(8, min));
56
+ b.add(min < 8 ? 'differs' : 'mapped', `policies ${name}`, 'settings.password.complexity.minLength', `${min}${min < 8 ? ' (Atlas requires at least 8; existing passwords still sign in)' : ''}.`, 'auth_config.passwordPolicy.minLength');
57
+ if (['minLowerCase', 'minUpperCase', 'minNumber', 'minSymbol'].some((k) => Number(complexity[k] ?? 0) > 0)) {
58
+ b.add('differs', `policies ${name}`, 'settings.password.complexity (character classes)', 'Atlas follows NIST 800-63B: length and breached-password checks, no character-class rules.', 'auth_config.passwordPolicy');
59
+ }
60
+ if ((0, record_set_1.isObj)(complexity.dictionary) && (0, record_set_1.isObj)(complexity.dictionary.common) && complexity.dictionary.common.exclude === true) {
61
+ b.set('passwordPolicy.checkBreaches', true);
62
+ b.add('mapped', `policies ${name}`, 'settings.password.complexity.dictionary.common.exclude', 'Common / breached passwords are refused.', 'auth_config.passwordPolicy.checkBreaches');
63
+ }
64
+ const age = (0, record_set_1.isObj)(settings.age) ? settings.age : {};
65
+ if (Number(age.maxAgeDays ?? 0) > 0)
66
+ b.add('manual', `policies ${name}`, 'settings.password.age.maxAgeDays', 'Atlas does not expire passwords (NIST 800-63B).');
67
+ if (Number(age.historyCount ?? 0) > 0)
68
+ b.add('manual', `policies ${name}`, 'settings.password.age.historyCount', 'Atlas does not keep a password history.');
69
+ const lockout = (0, record_set_1.isObj)(settings.lockout) ? settings.lockout : {};
70
+ if (Number(lockout.maxAttempts ?? 0) > 0)
71
+ b.add('mapped', `policies ${name}`, 'settings.password.lockout.maxAttempts', `Okta locks after ${lockout.maxAttempts} attempts; Atlas throttles failed sign-ins per account and IP.`, 'auth_config.rateLimit');
72
+ }
73
+ if (snap.passwordPolicies.length > 1)
74
+ b.add('differs', 'policies', 'password policies', `${snap.passwordPolicies.length} password policies by group: Atlas has one instance-wide policy (the default one was used).`, 'auth_config.passwordPolicy');
75
+ // ── global session policy ──
76
+ const defaultSignOn = snap.signOnPolicies.find((p) => p.system === true) ?? snap.signOnPolicies[snap.signOnPolicies.length - 1];
77
+ const rule = (defaultSignOn?.rules ?? []).find((r) => r.system !== true && (0, record_set_1.str)(r.status) === 'ACTIVE') ?? defaultSignOn?.rules?.[0];
78
+ const session = rule && (0, record_set_1.isObj)(rule.actions) && (0, record_set_1.isObj)(rule.actions.signon) && (0, record_set_1.isObj)(rule.actions.signon.session) ? rule.actions.signon.session : undefined;
79
+ if (session) {
80
+ const area = `policies ${(0, record_set_1.str)(defaultSignOn?.name) ?? 'global session'}`;
81
+ const life = Number(session.maxSessionLifetimeMinutes ?? 0);
82
+ const idle = Number(session.maxSessionIdleMinutes ?? 0);
83
+ if (life > 0) {
84
+ b.set('session.absoluteMs', (0, translate_kit_1.clampSessionMs)(life * 60_000));
85
+ b.add('mapped', area, 'actions.signon.session.maxSessionLifetimeMinutes', `${life} minutes.`, 'auth_config.session.absoluteMs');
86
+ }
87
+ if (idle > 0) {
88
+ b.set('session.idleMs', (0, translate_kit_1.clampSessionMs)(idle * 60_000));
89
+ b.add('mapped', area, 'actions.signon.session.maxSessionIdleMinutes', `${idle} minutes idle.`, 'auth_config.session.idleMs');
90
+ }
91
+ if (rule && (0, record_set_1.isObj)(rule.actions) && (0, record_set_1.isObj)(rule.actions.signon) && rule.actions.signon.requireFactor === true) {
92
+ b.set('mfaPolicy', 'required');
93
+ b.add('mapped', area, 'actions.signon.requireFactor', 'A second factor on every sign-in.', 'auth_config.mfaPolicy');
94
+ }
95
+ }
96
+ if (snap.signOnPolicies.length > 1)
97
+ b.add('manual', 'policies', 'sign-on policies by group / network zone', 'Okta applies different sign-on rules per group and network zone; Atlas has instance-wide session settings plus step-up. Review the per-group rules by hand.', 'auth_config.stepUp');
98
+ // ── authenticators ──
99
+ for (const a of snap.authenticators) {
100
+ if ((0, record_set_1.str)(a.status) !== 'ACTIVE')
101
+ continue;
102
+ const key = (0, record_set_1.str)(a.key);
103
+ const name = (0, record_set_1.str)(a.name) ?? key ?? '?';
104
+ if (key === 'google_otp' || key === 'okta_verify') {
105
+ b.set('mfa.factors.totp', true);
106
+ b.add(key === 'okta_verify' ? 'differs' : 'mapped', 'authenticators', `${name} (${key})`, key === 'okta_verify' ? 'Okta Verify push / number challenge has no Atlas counterpart; its TOTP mode maps to authenticator apps (seeds do not move: users re-enrol).' : 'Authenticator apps (users re-enrol: Okta does not export seeds).', 'auth_config.mfa.factors.totp');
107
+ }
108
+ else if (key === 'webauthn') {
109
+ b.set('mfa.factors.passkey', true);
110
+ b.set('strategies.passkey', true);
111
+ b.add('differs', 'authenticators', `${name} (webauthn)`, 'Security keys and biometrics. Okta does not export WebAuthn credentials: users register again.', 'auth_config.mfa.factors.passkey');
112
+ }
113
+ else if (key === 'okta_email') {
114
+ b.set('mfa.factors.emailCode', true);
115
+ b.add('mapped', 'authenticators', `${name} (okta_email)`, 'Email code.', 'auth_config.mfa.factors.emailCode');
116
+ }
117
+ else if (key === 'phone_number') {
118
+ b.add('differs', 'authenticators', `${name} (phone_number)`, 'SMS / voice: phone factors move with --factors; Atlas recommends TOTP or passkeys as the second factor.', 'auth_config.mfa');
119
+ }
120
+ else if (key && key !== 'okta_password') {
121
+ b.add('manual', 'authenticators', `${name} (${key})`, 'No Atlas counterpart (security question, Duo, RSA, YubiKey OTP, smart card…): those users enrol an Atlas factor.');
122
+ }
123
+ }
124
+ // ── social identity providers ──
125
+ for (const idp of snap.idps) {
126
+ if ((0, record_set_1.str)(idp.status) === 'INACTIVE')
127
+ continue;
128
+ const type = (0, record_set_1.str)(idp.type) ?? '';
129
+ const name = (0, record_set_1.str)(idp.name) ?? type;
130
+ if (type === 'SAML2' || type === 'OIDC') {
131
+ b.add('mapped', 'identity providers', `${name} (${type})`, 'Enterprise IdP: moves with the data export as an Atlas SSO connection; update the IdP with Atlas\'s ACS URL / redirect URI, and replace Okta routing rules with the connection\'s domains.', 'sso_connections');
132
+ continue;
133
+ }
134
+ const key = (0, translate_kit_1.socialKey)(type);
135
+ if (!key) {
136
+ b.add('manual', 'identity providers', `${name} (${type})`, 'No built-in Atlas provider: add it as a custom OAuth provider.', 'custom_oauth_providers');
137
+ continue;
138
+ }
139
+ const protocol = (0, record_set_1.isObj)(idp.protocol) ? idp.protocol : {};
140
+ const client = (0, record_set_1.isObj)(protocol.credentials) && (0, record_set_1.isObj)(protocol.credentials.client) ? protocol.credentials.client : {};
141
+ b.socialProvider({ atlasKey: key, vendorName: name, area: 'identity providers', setting: `${name} (${type})`, clientId: (0, record_set_1.str)(client.client_id), scopes: (0, record_set_1.strs)(protocol.scopes) });
142
+ }
143
+ // ── authorization servers → APIs ──
144
+ for (const s of snap.authorizationServers) {
145
+ if ((0, record_set_1.str)(s.status) === 'INACTIVE')
146
+ continue;
147
+ const audiences = (0, record_set_1.strs)(s.audiences);
148
+ const scopes = (s.scopes ?? []).filter((sc) => sc.system !== true).map((sc) => (0, record_set_1.str)(sc.name)).filter((sc) => !!sc);
149
+ for (const aud of audiences) {
150
+ b.push('resource_servers', { identifier: aud, name: (0, record_set_1.str)(s.name) ?? aud, scopes });
151
+ b.add('mapped', `authorization servers ${(0, record_set_1.str)(s.name) ?? (0, record_set_1.str)(s.id)}`, `audiences ${aud}`, `An API with ${scopes.length} custom scope(s); Atlas access tokens for it keep "aud": "${aud}".`, `resource_servers ${aud}`);
152
+ }
153
+ if ((0, record_set_1.objs)(s.claims).length)
154
+ b.add('manual', `authorization servers ${(0, record_set_1.str)(s.name) ?? (0, record_set_1.str)(s.id)}`, 'claims', 'Custom token claims: recreate them as an Atlas JWT template / session claims.', 'jwt_templates');
155
+ }
156
+ // ── OIDC apps → redirect URLs ──
157
+ const redirects = new Set();
158
+ for (const app of snap.apps) {
159
+ const oauth = (0, record_set_1.isObj)(app.settings) && (0, record_set_1.isObj)(app.settings.oauthClient) ? app.settings.oauthClient : undefined;
160
+ if (!oauth)
161
+ continue;
162
+ for (const u of (0, record_set_1.strs)(oauth.redirect_uris))
163
+ redirects.add(u);
164
+ const grants = (0, record_set_1.strs)(oauth.grant_types);
165
+ if (grants.includes('client_credentials'))
166
+ b.add('manual', `apps ${(0, record_set_1.str)(app.label) ?? (0, record_set_1.str)(app.name)}`, 'grant_types client_credentials', 'A service app: create an Atlas M2M client for it.', 'oauth_clients');
167
+ }
168
+ let exact = 0;
169
+ for (const url of redirects) {
170
+ if (url.includes('*')) {
171
+ b.add('differs', 'apps', `redirect_uris ${url}`, 'Atlas redirect URLs are exact (no wildcards).', 'redirect_urls');
172
+ continue;
173
+ }
174
+ b.push('redirect_urls', { url });
175
+ exact++;
176
+ }
177
+ if (exact)
178
+ b.add('mapped', 'apps', 'redirect_uris', `${exact} redirect URI(s).`, 'redirect_urls');
179
+ // ── groups ──
180
+ const groupsAs = opts.groupsAs ?? 'roles';
181
+ if (groupsAs === 'roles') {
182
+ for (const g of snap.groups) {
183
+ const name = (0, record_set_1.str)((0, record_set_1.isObj)(g.profile) ? g.profile.name : undefined);
184
+ if (!name)
185
+ continue;
186
+ const key = (0, translate_kit_1.keyOf)(name);
187
+ b.roles[name] = key;
188
+ b.push('roles', { key, name, description: (0, record_set_1.str)((0, record_set_1.isObj)(g.profile) ? g.profile.description : undefined) ?? '', permissions: [] });
189
+ }
190
+ if (snap.groups.length)
191
+ b.add('differs', 'groups', 'groups', `${snap.groups.length} group(s) become Atlas app roles (memberships move with the data export). Group rules and app assignments are not translated.`, 'roles');
192
+ }
193
+ else if (groupsAs === 'organizations' && snap.groups.length) {
194
+ b.add('differs', 'groups', 'groups', 'Groups become organizations with the data export (--groups-as organizations).', 'organizations');
195
+ }
196
+ for (const h of snap.inlineHooks) {
197
+ if ((0, record_set_1.str)(h.status) === 'ACTIVE')
198
+ b.add('manual', 'inline hooks', `${(0, record_set_1.str)(h.name) ?? '?'} (${(0, record_set_1.str)(h.type) ?? '?'})`, 'Okta inline hook: port it to an Atlas action or webhook.', 'actions');
199
+ }
200
+ return b.result(`Okta org ${snap.domain}`, {
201
+ bridge: { preset: 'okta', vars: { domain: snap.domain } },
202
+ lazy: { preset: 'okta', config: { domain: snap.domain } },
203
+ });
204
+ }
205
+ //# sourceMappingURL=okta-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"okta-config.js","sourceRoot":"","sources":["../../../src/migrate/export/okta-config.ts"],"names":[],"mappings":"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"}