@atlasauth/cli 0.11.0 → 0.13.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 (390) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/args.d.ts +121 -0
  3. package/dist/args.js +45 -0
  4. package/dist/args.js.map +1 -1
  5. package/dist/commands/config.js +71 -6
  6. package/dist/commands/config.js.map +1 -1
  7. package/dist/commands/dev.d.ts +8 -0
  8. package/dist/commands/dev.js +84 -0
  9. package/dist/commands/dev.js.map +1 -0
  10. package/dist/commands/init.js +13 -8
  11. package/dist/commands/init.js.map +1 -1
  12. package/dist/commands/migrate.d.ts +6 -2
  13. package/dist/commands/migrate.js +13 -3
  14. package/dist/commands/migrate.js.map +1 -1
  15. package/dist/commands/pages.d.ts +14 -0
  16. package/dist/commands/pages.js +113 -0
  17. package/dist/commands/pages.js.map +1 -0
  18. package/dist/context.d.ts +1 -1
  19. package/dist/help.d.ts +1 -1
  20. package/dist/help.js +96 -2
  21. package/dist/help.js.map +1 -1
  22. package/dist/index.d.ts +1 -0
  23. package/dist/index.js +3 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/migrate/appwrite/plugin.d.ts +2 -0
  26. package/dist/migrate/appwrite/plugin.js +103 -0
  27. package/dist/migrate/appwrite/plugin.js.map +1 -0
  28. package/dist/migrate/auth0/plugin.d.ts +2 -0
  29. package/dist/migrate/auth0/plugin.js +126 -0
  30. package/dist/migrate/auth0/plugin.js.map +1 -0
  31. package/dist/migrate/authentik/plugin.d.ts +2 -0
  32. package/dist/migrate/authentik/plugin.js +135 -0
  33. package/dist/migrate/authentik/plugin.js.map +1 -0
  34. package/dist/migrate/azure-ad-b2c/plugin.d.ts +8 -0
  35. package/dist/migrate/azure-ad-b2c/plugin.js +165 -0
  36. package/dist/migrate/azure-ad-b2c/plugin.js.map +1 -0
  37. package/dist/migrate/clerk/plugin.d.ts +2 -0
  38. package/dist/migrate/clerk/plugin.js +76 -0
  39. package/dist/migrate/clerk/plugin.js.map +1 -0
  40. package/dist/migrate/cognito/plugin.d.ts +5 -0
  41. package/dist/migrate/cognito/plugin.js +170 -0
  42. package/dist/migrate/cognito/plugin.js.map +1 -0
  43. package/dist/migrate/corbado/plugin.d.ts +2 -0
  44. package/dist/migrate/corbado/plugin.js +63 -0
  45. package/dist/migrate/corbado/plugin.js.map +1 -0
  46. package/dist/migrate/descope/plugin.d.ts +2 -0
  47. package/dist/migrate/descope/plugin.js +83 -0
  48. package/dist/migrate/descope/plugin.js.map +1 -0
  49. package/dist/migrate/entra-external-id/plugin.d.ts +8 -0
  50. package/dist/migrate/entra-external-id/plugin.js +12 -0
  51. package/dist/migrate/entra-external-id/plugin.js.map +1 -0
  52. package/dist/migrate/export/appwrite-config.d.ts +28 -0
  53. package/dist/migrate/export/appwrite-config.js +170 -0
  54. package/dist/migrate/export/appwrite-config.js.map +1 -0
  55. package/dist/migrate/export/appwrite.d.ts +51 -0
  56. package/dist/migrate/export/appwrite.js +288 -0
  57. package/dist/migrate/export/appwrite.js.map +1 -0
  58. package/dist/migrate/export/auth0-config.d.ts +29 -0
  59. package/dist/migrate/export/auth0-config.js +249 -0
  60. package/dist/migrate/export/auth0-config.js.map +1 -0
  61. package/dist/migrate/export/auth0.d.ts +62 -0
  62. package/dist/migrate/export/auth0.js +575 -0
  63. package/dist/migrate/export/auth0.js.map +1 -0
  64. package/dist/migrate/export/authentik-config.d.ts +45 -0
  65. package/dist/migrate/export/authentik-config.js +357 -0
  66. package/dist/migrate/export/authentik-config.js.map +1 -0
  67. package/dist/migrate/export/authentik.d.ts +110 -0
  68. package/dist/migrate/export/authentik.js +838 -0
  69. package/dist/migrate/export/authentik.js.map +1 -0
  70. package/dist/migrate/export/azure-config.d.ts +58 -0
  71. package/dist/migrate/export/azure-config.js +344 -0
  72. package/dist/migrate/export/azure-config.js.map +1 -0
  73. package/dist/migrate/export/azure.d.ts +85 -0
  74. package/dist/migrate/export/azure.js +373 -0
  75. package/dist/migrate/export/azure.js.map +1 -0
  76. package/dist/migrate/export/clerk-config.d.ts +26 -0
  77. package/dist/migrate/export/clerk-config.js +227 -0
  78. package/dist/migrate/export/clerk-config.js.map +1 -0
  79. package/dist/migrate/export/clerk.d.ts +46 -0
  80. package/dist/migrate/export/clerk.js +486 -0
  81. package/dist/migrate/export/clerk.js.map +1 -0
  82. package/dist/migrate/export/cognito-config.d.ts +25 -0
  83. package/dist/migrate/export/cognito-config.js +273 -0
  84. package/dist/migrate/export/cognito-config.js.map +1 -0
  85. package/dist/migrate/export/cognito.d.ts +103 -0
  86. package/dist/migrate/export/cognito.js +441 -0
  87. package/dist/migrate/export/cognito.js.map +1 -0
  88. package/dist/migrate/export/corbado-config.d.ts +20 -0
  89. package/dist/migrate/export/corbado-config.js +63 -0
  90. package/dist/migrate/export/corbado-config.js.map +1 -0
  91. package/dist/migrate/export/corbado.d.ts +37 -0
  92. package/dist/migrate/export/corbado.js +132 -0
  93. package/dist/migrate/export/corbado.js.map +1 -0
  94. package/dist/migrate/export/descope.d.ts +35 -0
  95. package/dist/migrate/export/descope.js +208 -0
  96. package/dist/migrate/export/descope.js.map +1 -0
  97. package/dist/migrate/export/fake-vendor.test-helper.d.ts +27 -0
  98. package/dist/migrate/export/fake-vendor.test-helper.js +41 -0
  99. package/dist/migrate/export/fake-vendor.test-helper.js.map +1 -0
  100. package/dist/migrate/export/firebase-config.d.ts +24 -0
  101. package/dist/migrate/export/firebase-config.js +215 -0
  102. package/dist/migrate/export/firebase-config.js.map +1 -0
  103. package/dist/migrate/export/firebase.d.ts +102 -0
  104. package/dist/migrate/export/firebase.js +464 -0
  105. package/dist/migrate/export/firebase.js.map +1 -0
  106. package/dist/migrate/export/frameworks/app-users.d.ts +42 -0
  107. package/dist/migrate/export/frameworks/app-users.js +161 -0
  108. package/dist/migrate/export/frameworks/app-users.js.map +1 -0
  109. package/dist/migrate/export/frameworks/authjs.d.ts +41 -0
  110. package/dist/migrate/export/frameworks/authjs.js +146 -0
  111. package/dist/migrate/export/frameworks/authjs.js.map +1 -0
  112. package/dist/migrate/export/frameworks/devise.d.ts +39 -0
  113. package/dist/migrate/export/frameworks/devise.js +218 -0
  114. package/dist/migrate/export/frameworks/devise.js.map +1 -0
  115. package/dist/migrate/export/frameworks/django.d.ts +45 -0
  116. package/dist/migrate/export/frameworks/django.js +315 -0
  117. package/dist/migrate/export/frameworks/django.js.map +1 -0
  118. package/dist/migrate/export/frameworks/lucia.d.ts +42 -0
  119. package/dist/migrate/export/frameworks/lucia.js +263 -0
  120. package/dist/migrate/export/frameworks/lucia.js.map +1 -0
  121. package/dist/migrate/export/frameworks/tables.d.ts +90 -0
  122. package/dist/migrate/export/frameworks/tables.js +325 -0
  123. package/dist/migrate/export/frameworks/tables.js.map +1 -0
  124. package/dist/migrate/export/frameworks/webauthn.d.ts +25 -0
  125. package/dist/migrate/export/frameworks/webauthn.js +130 -0
  126. package/dist/migrate/export/frameworks/webauthn.js.map +1 -0
  127. package/dist/migrate/export/frontegg-config.d.ts +29 -0
  128. package/dist/migrate/export/frontegg-config.js +238 -0
  129. package/dist/migrate/export/frontegg-config.js.map +1 -0
  130. package/dist/migrate/export/frontegg.d.ts +67 -0
  131. package/dist/migrate/export/frontegg.js +410 -0
  132. package/dist/migrate/export/frontegg.js.map +1 -0
  133. package/dist/migrate/export/fusionauth-config.d.ts +26 -0
  134. package/dist/migrate/export/fusionauth-config.js +226 -0
  135. package/dist/migrate/export/fusionauth-config.js.map +1 -0
  136. package/dist/migrate/export/fusionauth.d.ts +99 -0
  137. package/dist/migrate/export/fusionauth.js +642 -0
  138. package/dist/migrate/export/fusionauth.js.map +1 -0
  139. package/dist/migrate/export/hanko-config.d.ts +27 -0
  140. package/dist/migrate/export/hanko-config.js +265 -0
  141. package/dist/migrate/export/hanko-config.js.map +1 -0
  142. package/dist/migrate/export/hanko.d.ts +52 -0
  143. package/dist/migrate/export/hanko.js +605 -0
  144. package/dist/migrate/export/hanko.js.map +1 -0
  145. package/dist/migrate/export/keycloak-config.d.ts +19 -0
  146. package/dist/migrate/export/keycloak-config.js +219 -0
  147. package/dist/migrate/export/keycloak-config.js.map +1 -0
  148. package/dist/migrate/export/keycloak.d.ts +155 -0
  149. package/dist/migrate/export/keycloak.js +878 -0
  150. package/dist/migrate/export/keycloak.js.map +1 -0
  151. package/dist/migrate/export/kinde-descope-config.d.ts +38 -0
  152. package/dist/migrate/export/kinde-descope-config.js +172 -0
  153. package/dist/migrate/export/kinde-descope-config.js.map +1 -0
  154. package/dist/migrate/export/kinde.d.ts +57 -0
  155. package/dist/migrate/export/kinde.js +333 -0
  156. package/dist/migrate/export/kinde.js.map +1 -0
  157. package/dist/migrate/export/ldap.d.ts +53 -0
  158. package/dist/migrate/export/ldap.js +277 -0
  159. package/dist/migrate/export/ldap.js.map +1 -0
  160. package/dist/migrate/export/logto-config.d.ts +27 -0
  161. package/dist/migrate/export/logto-config.js +264 -0
  162. package/dist/migrate/export/logto-config.js.map +1 -0
  163. package/dist/migrate/export/logto.d.ts +150 -0
  164. package/dist/migrate/export/logto.js +809 -0
  165. package/dist/migrate/export/logto.js.map +1 -0
  166. package/dist/migrate/export/magic-config.d.ts +14 -0
  167. package/dist/migrate/export/magic-config.js +28 -0
  168. package/dist/migrate/export/magic-config.js.map +1 -0
  169. package/dist/migrate/export/magic.d.ts +31 -0
  170. package/dist/migrate/export/magic.js +93 -0
  171. package/dist/migrate/export/magic.js.map +1 -0
  172. package/dist/migrate/export/mini-yaml.d.ts +19 -0
  173. package/dist/migrate/export/mini-yaml.js +581 -0
  174. package/dist/migrate/export/mini-yaml.js.map +1 -0
  175. package/dist/migrate/export/nhost-config.d.ts +26 -0
  176. package/dist/migrate/export/nhost-config.js +360 -0
  177. package/dist/migrate/export/nhost-config.js.map +1 -0
  178. package/dist/migrate/export/nhost.d.ts +64 -0
  179. package/dist/migrate/export/nhost.js +304 -0
  180. package/dist/migrate/export/nhost.js.map +1 -0
  181. package/dist/migrate/export/okta-config.d.ts +30 -0
  182. package/dist/migrate/export/okta-config.js +205 -0
  183. package/dist/migrate/export/okta-config.js.map +1 -0
  184. package/dist/migrate/export/okta.d.ts +43 -0
  185. package/dist/migrate/export/okta.js +337 -0
  186. package/dist/migrate/export/okta.js.map +1 -0
  187. package/dist/migrate/export/onelogin.d.ts +22 -0
  188. package/dist/migrate/export/onelogin.js +123 -0
  189. package/dist/migrate/export/onelogin.js.map +1 -0
  190. package/dist/migrate/export/ory-config.d.ts +58 -0
  191. package/dist/migrate/export/ory-config.js +451 -0
  192. package/dist/migrate/export/ory-config.js.map +1 -0
  193. package/dist/migrate/export/ory.d.ts +81 -0
  194. package/dist/migrate/export/ory.js +555 -0
  195. package/dist/migrate/export/ory.js.map +1 -0
  196. package/dist/migrate/export/password-detect.d.ts +29 -0
  197. package/dist/migrate/export/password-detect.js +81 -0
  198. package/dist/migrate/export/password-detect.js.map +1 -0
  199. package/dist/migrate/export/pingone.d.ts +36 -0
  200. package/dist/migrate/export/pingone.js +218 -0
  201. package/dist/migrate/export/pingone.js.map +1 -0
  202. package/dist/migrate/export/plugin-kit.d.ts +25 -0
  203. package/dist/migrate/export/plugin-kit.js +82 -0
  204. package/dist/migrate/export/plugin-kit.js.map +1 -0
  205. package/dist/migrate/export/pocketbase-config.d.ts +28 -0
  206. package/dist/migrate/export/pocketbase-config.js +180 -0
  207. package/dist/migrate/export/pocketbase-config.js.map +1 -0
  208. package/dist/migrate/export/pocketbase.d.ts +52 -0
  209. package/dist/migrate/export/pocketbase.js +243 -0
  210. package/dist/migrate/export/pocketbase.js.map +1 -0
  211. package/dist/migrate/export/project-files.d.ts +15 -0
  212. package/dist/migrate/export/project-files.js +43 -0
  213. package/dist/migrate/export/project-files.js.map +1 -0
  214. package/dist/migrate/export/propelauth-config.d.ts +18 -0
  215. package/dist/migrate/export/propelauth-config.js +58 -0
  216. package/dist/migrate/export/propelauth-config.js.map +1 -0
  217. package/dist/migrate/export/propelauth-harness.test-helper.d.ts +62 -0
  218. package/dist/migrate/export/propelauth-harness.test-helper.js +109 -0
  219. package/dist/migrate/export/propelauth-harness.test-helper.js.map +1 -0
  220. package/dist/migrate/export/propelauth.d.ts +48 -0
  221. package/dist/migrate/export/propelauth.js +255 -0
  222. package/dist/migrate/export/propelauth.js.map +1 -0
  223. package/dist/migrate/export/record-set.d.ts +44 -0
  224. package/dist/migrate/export/record-set.js +98 -0
  225. package/dist/migrate/export/record-set.js.map +1 -0
  226. package/dist/migrate/export/source-lines.d.ts +17 -0
  227. package/dist/migrate/export/source-lines.js +43 -0
  228. package/dist/migrate/export/source-lines.js.map +1 -0
  229. package/dist/migrate/export/sso-metadata.d.ts +47 -0
  230. package/dist/migrate/export/sso-metadata.js +180 -0
  231. package/dist/migrate/export/sso-metadata.js.map +1 -0
  232. package/dist/migrate/export/stytch-config.d.ts +22 -0
  233. package/dist/migrate/export/stytch-config.js +102 -0
  234. package/dist/migrate/export/stytch-config.js.map +1 -0
  235. package/dist/migrate/export/stytch.d.ts +68 -0
  236. package/dist/migrate/export/stytch.js +510 -0
  237. package/dist/migrate/export/stytch.js.map +1 -0
  238. package/dist/migrate/export/supabase-config.d.ts +48 -0
  239. package/dist/migrate/export/supabase-config.js +408 -0
  240. package/dist/migrate/export/supabase-config.js.map +1 -0
  241. package/dist/migrate/export/supabase.d.ts +86 -0
  242. package/dist/migrate/export/supabase.js +524 -0
  243. package/dist/migrate/export/supabase.js.map +1 -0
  244. package/dist/migrate/export/supertokens-config.d.ts +20 -0
  245. package/dist/migrate/export/supertokens-config.js +150 -0
  246. package/dist/migrate/export/supertokens-config.js.map +1 -0
  247. package/dist/migrate/export/supertokens.d.ts +125 -0
  248. package/dist/migrate/export/supertokens.js +464 -0
  249. package/dist/migrate/export/supertokens.js.map +1 -0
  250. package/dist/migrate/export/table.d.ts +35 -0
  251. package/dist/migrate/export/table.js +248 -0
  252. package/dist/migrate/export/table.js.map +1 -0
  253. package/dist/migrate/export/translate-kit.d.ts +46 -0
  254. package/dist/migrate/export/translate-kit.js +148 -0
  255. package/dist/migrate/export/translate-kit.js.map +1 -0
  256. package/dist/migrate/export/userfront-config.d.ts +15 -0
  257. package/dist/migrate/export/userfront-config.js +49 -0
  258. package/dist/migrate/export/userfront-config.js.map +1 -0
  259. package/dist/migrate/export/userfront.d.ts +38 -0
  260. package/dist/migrate/export/userfront.js +189 -0
  261. package/dist/migrate/export/userfront.js.map +1 -0
  262. package/dist/migrate/export/vendor-http.d.ts +46 -0
  263. package/dist/migrate/export/vendor-http.js +138 -0
  264. package/dist/migrate/export/vendor-http.js.map +1 -0
  265. package/dist/migrate/export/workos-config.d.ts +23 -0
  266. package/dist/migrate/export/workos-config.js +125 -0
  267. package/dist/migrate/export/workos-config.js.map +1 -0
  268. package/dist/migrate/export/workos.d.ts +46 -0
  269. package/dist/migrate/export/workos.js +272 -0
  270. package/dist/migrate/export/workos.js.map +1 -0
  271. package/dist/migrate/export/zip.d.ts +8 -0
  272. package/dist/migrate/export/zip.js +66 -0
  273. package/dist/migrate/export/zip.js.map +1 -0
  274. package/dist/migrate/export/zitadel-config.d.ts +37 -0
  275. package/dist/migrate/export/zitadel-config.js +279 -0
  276. package/dist/migrate/export/zitadel-config.js.map +1 -0
  277. package/dist/migrate/export/zitadel.d.ts +82 -0
  278. package/dist/migrate/export/zitadel.js +447 -0
  279. package/dist/migrate/export/zitadel.js.map +1 -0
  280. package/dist/migrate/firebase/plugin.d.ts +2 -0
  281. package/dist/migrate/firebase/plugin.js +152 -0
  282. package/dist/migrate/firebase/plugin.js.map +1 -0
  283. package/dist/migrate/framework/builtins.d.ts +2 -0
  284. package/dist/migrate/framework/builtins.js +52 -0
  285. package/dist/migrate/framework/builtins.js.map +1 -0
  286. package/dist/migrate/framework/commands.d.ts +20 -0
  287. package/dist/migrate/framework/commands.js +58 -0
  288. package/dist/migrate/framework/commands.js.map +1 -0
  289. package/dist/migrate/framework/custom.d.ts +12 -0
  290. package/dist/migrate/framework/custom.js +96 -0
  291. package/dist/migrate/framework/custom.js.map +1 -0
  292. package/dist/migrate/framework/orchestrator.d.ts +113 -0
  293. package/dist/migrate/framework/orchestrator.js +532 -0
  294. package/dist/migrate/framework/orchestrator.js.map +1 -0
  295. package/dist/migrate/framework/plugin.d.ts +167 -0
  296. package/dist/migrate/framework/plugin.js +3 -0
  297. package/dist/migrate/framework/plugin.js.map +1 -0
  298. package/dist/migrate/framework/registry.d.ts +11 -0
  299. package/dist/migrate/framework/registry.js +44 -0
  300. package/dist/migrate/framework/registry.js.map +1 -0
  301. package/dist/migrate/framework/report.d.ts +17 -0
  302. package/dist/migrate/framework/report.js +103 -0
  303. package/dist/migrate/framework/report.js.map +1 -0
  304. package/dist/migrate/frameworks/plugins.d.ts +29 -0
  305. package/dist/migrate/frameworks/plugins.js +402 -0
  306. package/dist/migrate/frameworks/plugins.js.map +1 -0
  307. package/dist/migrate/frameworks/report.d.ts +92 -0
  308. package/dist/migrate/frameworks/report.js +207 -0
  309. package/dist/migrate/frameworks/report.js.map +1 -0
  310. package/dist/migrate/frameworks/translate-js.d.ts +5 -0
  311. package/dist/migrate/frameworks/translate-js.js +503 -0
  312. package/dist/migrate/frameworks/translate-js.js.map +1 -0
  313. package/dist/migrate/frameworks/translate-rails-django.d.ts +3 -0
  314. package/dist/migrate/frameworks/translate-rails-django.js +1391 -0
  315. package/dist/migrate/frameworks/translate-rails-django.js.map +1 -0
  316. package/dist/migrate/frontegg/plugin.d.ts +2 -0
  317. package/dist/migrate/frontegg/plugin.js +78 -0
  318. package/dist/migrate/frontegg/plugin.js.map +1 -0
  319. package/dist/migrate/fusionauth/plugin.d.ts +2 -0
  320. package/dist/migrate/fusionauth/plugin.js +109 -0
  321. package/dist/migrate/fusionauth/plugin.js.map +1 -0
  322. package/dist/migrate/hanko/plugin.d.ts +2 -0
  323. package/dist/migrate/hanko/plugin.js +100 -0
  324. package/dist/migrate/hanko/plugin.js.map +1 -0
  325. package/dist/migrate/keycloak/plugin.d.ts +2 -0
  326. package/dist/migrate/keycloak/plugin.js +148 -0
  327. package/dist/migrate/keycloak/plugin.js.map +1 -0
  328. package/dist/migrate/kinde/plugin.d.ts +2 -0
  329. package/dist/migrate/kinde/plugin.js +105 -0
  330. package/dist/migrate/kinde/plugin.js.map +1 -0
  331. package/dist/migrate/ldap/plugin.d.ts +2 -0
  332. package/dist/migrate/ldap/plugin.js +73 -0
  333. package/dist/migrate/ldap/plugin.js.map +1 -0
  334. package/dist/migrate/logto/plugin.d.ts +2 -0
  335. package/dist/migrate/logto/plugin.js +131 -0
  336. package/dist/migrate/logto/plugin.js.map +1 -0
  337. package/dist/migrate/magic/plugin.d.ts +2 -0
  338. package/dist/migrate/magic/plugin.js +56 -0
  339. package/dist/migrate/magic/plugin.js.map +1 -0
  340. package/dist/migrate/nhost/plugin.d.ts +2 -0
  341. package/dist/migrate/nhost/plugin.js +115 -0
  342. package/dist/migrate/nhost/plugin.js.map +1 -0
  343. package/dist/migrate/oidc/plugin.d.ts +2 -0
  344. package/dist/migrate/oidc/plugin.js +73 -0
  345. package/dist/migrate/oidc/plugin.js.map +1 -0
  346. package/dist/migrate/okta/plugin.d.ts +2 -0
  347. package/dist/migrate/okta/plugin.js +105 -0
  348. package/dist/migrate/okta/plugin.js.map +1 -0
  349. package/dist/migrate/onelogin/plugin.d.ts +2 -0
  350. package/dist/migrate/onelogin/plugin.js +61 -0
  351. package/dist/migrate/onelogin/plugin.js.map +1 -0
  352. package/dist/migrate/ory/plugin.d.ts +2 -0
  353. package/dist/migrate/ory/plugin.js +186 -0
  354. package/dist/migrate/ory/plugin.js.map +1 -0
  355. package/dist/migrate/ping-identity/plugin.d.ts +2 -0
  356. package/dist/migrate/ping-identity/plugin.js +100 -0
  357. package/dist/migrate/ping-identity/plugin.js.map +1 -0
  358. package/dist/migrate/pocketbase/plugin.d.ts +2 -0
  359. package/dist/migrate/pocketbase/plugin.js +99 -0
  360. package/dist/migrate/pocketbase/plugin.js.map +1 -0
  361. package/dist/migrate/propelauth/plugin.d.ts +2 -0
  362. package/dist/migrate/propelauth/plugin.js +65 -0
  363. package/dist/migrate/propelauth/plugin.js.map +1 -0
  364. package/dist/migrate/saml/plugin.d.ts +2 -0
  365. package/dist/migrate/saml/plugin.js +79 -0
  366. package/dist/migrate/saml/plugin.js.map +1 -0
  367. package/dist/migrate/stytch/plugin.d.ts +2 -0
  368. package/dist/migrate/stytch/plugin.js +97 -0
  369. package/dist/migrate/stytch/plugin.js.map +1 -0
  370. package/dist/migrate/supabase/plugin.d.ts +2 -0
  371. package/dist/migrate/supabase/plugin.js +149 -0
  372. package/dist/migrate/supabase/plugin.js.map +1 -0
  373. package/dist/migrate/supertokens/plugin.d.ts +2 -0
  374. package/dist/migrate/supertokens/plugin.js +114 -0
  375. package/dist/migrate/supertokens/plugin.js.map +1 -0
  376. package/dist/migrate/user-table/plugin.d.ts +2 -0
  377. package/dist/migrate/user-table/plugin.js +62 -0
  378. package/dist/migrate/user-table/plugin.js.map +1 -0
  379. package/dist/migrate/userfront/plugin.d.ts +2 -0
  380. package/dist/migrate/userfront/plugin.js +60 -0
  381. package/dist/migrate/userfront/plugin.js.map +1 -0
  382. package/dist/migrate/workos/plugin.d.ts +2 -0
  383. package/dist/migrate/workos/plugin.js +81 -0
  384. package/dist/migrate/workos/plugin.js.map +1 -0
  385. package/dist/migrate/zitadel/plugin.d.ts +2 -0
  386. package/dist/migrate/zitadel/plugin.js +114 -0
  387. package/dist/migrate/zitadel/plugin.js.map +1 -0
  388. package/dist/run.js +4 -0
  389. package/dist/run.js.map +1 -1
  390. package/package.json +7 -5
@@ -0,0 +1,486 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.exportClerk = exportClerk;
4
+ exports.clerkPasswordHash = clerkPasswordHash;
5
+ exports.roleKey = roleKey;
6
+ exports.permissionKey = permissionKey;
7
+ const node_crypto_1 = require("node:crypto");
8
+ const csv_1 = require("../../import/csv");
9
+ const record_set_1 = require("./record-set");
10
+ const vendor_http_1 = require("./vendor-http");
11
+ const PAGE = 500;
12
+ async function exportClerk(opts) {
13
+ const set = new record_set_1.RecordSet();
14
+ if (!opts.secretKey && !opts.csv)
15
+ throw new Error('Clerk export needs the secret key (CLERK_SECRET_KEY) or the dashboard CSV export.');
16
+ const csvRows = opts.csv ? (0, csv_1.parseCsv)(opts.csv) : [];
17
+ const csvById = new Map(csvRows.filter((r) => (0, record_set_1.str)(r.id)).map((r) => [r.id, r]));
18
+ if (!opts.secretKey) {
19
+ // CSV only: users, passwords and TOTP — no orgs, social accounts or metadata.
20
+ set.warn('Exported from the dashboard CSV only: organizations, social accounts and metadata need the Backend API (pass the secret key).');
21
+ for (const row of csvRows)
22
+ addCsvUser(set, row);
23
+ finishManifest(set, null);
24
+ return set;
25
+ }
26
+ const http = new vendor_http_1.VendorHttp({
27
+ vendor: 'Clerk',
28
+ baseUrl: opts.apiUrl ?? 'https://api.clerk.com',
29
+ headers: { authorization: `Bearer ${opts.secretKey}` },
30
+ fetchImpl: opts.fetchImpl,
31
+ sleep: opts.sleep,
32
+ });
33
+ const progress = opts.onProgress ?? (() => undefined);
34
+ // Organizations first: memberships and invitations point at them.
35
+ progress('organizations');
36
+ const orgs = await listAll(http, '/v1/organizations?include_members_count=false');
37
+ for (const o of orgs) {
38
+ const id = (0, record_set_1.str)(o.id);
39
+ const name = (0, record_set_1.str)(o.name);
40
+ if (!id || !name)
41
+ continue;
42
+ const domains = await optionalList(http, `/v1/organizations/${id}/domains`);
43
+ set.add('organization', (0, record_set_1.compact)({
44
+ id,
45
+ name,
46
+ slug: (0, record_set_1.str)(o.slug),
47
+ image_url: (0, record_set_1.str)(o.image_url),
48
+ domains: domains.filter((d) => (0, record_set_1.isObj)(d.verification) && d.verification.status === 'verified').map((d) => (0, record_set_1.str)(d.name)).filter((d) => !!d),
49
+ max_members: typeof o.max_allowed_memberships === 'number' && o.max_allowed_memberships > 0 ? o.max_allowed_memberships : undefined,
50
+ public_metadata: (0, record_set_1.bag)(o.public_metadata),
51
+ private_metadata: (0, record_set_1.bag)(o.private_metadata),
52
+ created_at: typeof o.created_at === 'number' ? o.created_at : undefined,
53
+ }));
54
+ }
55
+ progress('roles');
56
+ for (const r of await optionalList(http, '/v1/organization_roles')) {
57
+ const key = (0, record_set_1.str)(r.key);
58
+ if (!key)
59
+ continue;
60
+ set.add('role', (0, record_set_1.compact)({
61
+ key: roleKey(key),
62
+ name: (0, record_set_1.str)(r.name),
63
+ description: (0, record_set_1.str)(r.description),
64
+ scope: 'organization',
65
+ permissions: (0, record_set_1.objs)(r.permissions).map((p) => (0, record_set_1.str)(p.key)).filter((p) => !!p).map(permissionKey),
66
+ }), key);
67
+ }
68
+ progress('users');
69
+ const users = await listAll(http, '/v1/users?order_by=%2Bcreated_at');
70
+ const apiIds = new Set();
71
+ for (const u of users) {
72
+ const id = (0, record_set_1.str)(u.id);
73
+ if (!id)
74
+ continue;
75
+ apiIds.add(id);
76
+ addApiUser(set, u, csvById.get(id));
77
+ }
78
+ // A CSV row the API no longer lists (deleted since the export) is skipped.
79
+ const stale = csvRows.filter((r) => (0, record_set_1.str)(r.id) && !apiIds.has(r.id)).length;
80
+ if (stale)
81
+ set.omit('user', 'in the CSV export but no longer in Clerk (deleted since)', stale);
82
+ if (!opts.csv && users.some((u) => u.password_enabled === true)) {
83
+ set.warn('No password digests: Clerk only exports them in the dashboard CSV (Users → Export). Pass it with --clerk-csv, or enable lazy migration so passwords move on first sign-in.');
84
+ }
85
+ progress('memberships');
86
+ for (const o of orgs) {
87
+ const orgId = (0, record_set_1.str)(o.id);
88
+ if (!orgId)
89
+ continue;
90
+ for (const m of await listAll(http, `/v1/organizations/${orgId}/memberships`)) {
91
+ const userId = (0, record_set_1.str)((0, record_set_1.isObj)(m.public_user_data) ? m.public_user_data.user_id : undefined);
92
+ const role = (0, record_set_1.str)(m.role);
93
+ if (!userId || !role || !apiIds.has(userId))
94
+ continue;
95
+ set.add('membership', (0, record_set_1.compact)({ id: (0, record_set_1.str)(m.id), organization_id: orgId, user_id: userId, role: roleKey(role), created_at: num(m.created_at) }), `${orgId}:${userId}`);
96
+ }
97
+ }
98
+ progress('invitations');
99
+ for (const o of orgs) {
100
+ const orgId = (0, record_set_1.str)(o.id);
101
+ if (!orgId)
102
+ continue;
103
+ for (const inv of await listAll(http, `/v1/organizations/${orgId}/invitations?status=pending`)) {
104
+ const id = (0, record_set_1.str)(inv.id);
105
+ const email = (0, record_set_1.str)(inv.email_address);
106
+ if (!id || !email)
107
+ continue;
108
+ set.add('invitation', (0, record_set_1.compact)({ id, organization_id: orgId, email, role: (0, record_set_1.str)(inv.role) ? roleKey((0, record_set_1.str)(inv.role)) : undefined, status: 'pending', expires_at: num(inv.expires_at), created_at: num(inv.created_at) }));
109
+ }
110
+ }
111
+ for (const inv of await optionalList(http, '/v1/invitations?status=pending')) {
112
+ const id = (0, record_set_1.str)(inv.id);
113
+ const email = (0, record_set_1.str)(inv.email_address);
114
+ if (id && email)
115
+ set.add('invitation', (0, record_set_1.compact)({ id, email, status: 'pending', expires_at: num(inv.expires_at), created_at: num(inv.created_at) }));
116
+ }
117
+ if (!opts.skipApiKeys) {
118
+ progress('api keys');
119
+ await addApiKeys(set, http, apiIds, new Set(orgs.map((o) => (0, record_set_1.str)(o.id)).filter((x) => !!x)));
120
+ }
121
+ progress('enterprise connections');
122
+ await addSsoConnections(set, http);
123
+ progress('signing keys');
124
+ const jwks = await optionalGet(http, '/v1/jwks');
125
+ for (const k of (0, record_set_1.objs)(jwks?.keys)) {
126
+ const kid = (0, record_set_1.str)(k.kid);
127
+ if (kid)
128
+ set.add('jwks', { kid, jwk: k });
129
+ }
130
+ finishManifest(set, opts.apiUrl ?? 'https://api.clerk.com');
131
+ return set;
132
+ }
133
+ function finishManifest(set, origin) {
134
+ const providers = new Set(set.list('identity').map((i) => i.provider));
135
+ set.manifest = { ...set.manifest, origin, providers: [...providers].sort() };
136
+ set.warn('Clerk does not export passkeys or backup codes: those users register a passkey / new codes after the move.');
137
+ }
138
+ // ── users ───────────────────────────────────────────────────────────────────
139
+ function addApiUser(set, u, csv) {
140
+ const id = (0, record_set_1.str)(u.id);
141
+ const emails = (0, record_set_1.objs)(u.email_addresses)
142
+ .filter((e) => (0, record_set_1.str)(e.email_address))
143
+ .map((e) => ({
144
+ email: (0, record_set_1.str)(e.email_address).toLowerCase(),
145
+ verified: (0, record_set_1.isObj)(e.verification) && e.verification.status === 'verified',
146
+ primary: e.id === u.primary_email_address_id,
147
+ }));
148
+ const phones = (0, record_set_1.objs)(u.phone_numbers)
149
+ .map((p) => ({ phone: (0, record_set_1.e164)(p.phone_number), verified: (0, record_set_1.isObj)(p.verification) && p.verification.status === 'verified', primary: p.id === u.primary_phone_number_id }))
150
+ .filter((p) => !!p.phone);
151
+ const user = (0, record_set_1.compact)({
152
+ id,
153
+ emails,
154
+ phones,
155
+ username: (0, record_set_1.str)(u.username),
156
+ first_name: (0, record_set_1.str)(u.first_name),
157
+ last_name: (0, record_set_1.str)(u.last_name),
158
+ image_url: u.has_image === false ? undefined : (0, record_set_1.str)(u.image_url),
159
+ banned: u.banned === true ? true : undefined,
160
+ locked: u.locked === true ? true : undefined,
161
+ public_metadata: (0, record_set_1.bag)(u.public_metadata),
162
+ private_metadata: (0, record_set_1.bag)(u.private_metadata),
163
+ unsafe_metadata: (0, record_set_1.bag)(u.unsafe_metadata),
164
+ created_at: num(u.created_at),
165
+ last_sign_in_at: num(u.last_sign_in_at),
166
+ });
167
+ if (csv)
168
+ attachCsvPassword(set, user, csv);
169
+ else if (u.password_enabled === true)
170
+ set.omit('password', 'password digests are only in the dashboard CSV export');
171
+ if (!user.emails?.length && !user.phones?.length && !user.username) {
172
+ // A web3-wallet-only user: Clerk's wallet sign-in has no Atlas identifier to carry.
173
+ set.omit('user', 'no email, phone or username (wallet-only users)');
174
+ return;
175
+ }
176
+ set.add('user', user);
177
+ for (const ext of (0, record_set_1.objs)(u.external_accounts)) {
178
+ const provider = (0, record_set_1.str)(ext.provider);
179
+ const sub = (0, record_set_1.str)(ext.provider_user_id) ?? (0, record_set_1.str)(ext.external_id);
180
+ if (!provider || !sub)
181
+ continue;
182
+ set.add('identity', (0, record_set_1.compact)({
183
+ id: (0, record_set_1.str)(ext.id),
184
+ user_id: id,
185
+ provider,
186
+ provider_user_id: sub,
187
+ kind: 'oauth',
188
+ email: (0, record_set_1.str)(ext.email_address),
189
+ email_verified: (0, record_set_1.isObj)(ext.verification) ? ext.verification.status === 'verified' : undefined,
190
+ scopes: (0, record_set_1.str)(ext.approved_scopes)?.split(/\s+/),
191
+ profile: (0, record_set_1.bag)((0, record_set_1.compact)({ first_name: (0, record_set_1.str)(ext.first_name), last_name: (0, record_set_1.str)(ext.last_name), image_url: (0, record_set_1.str)(ext.image_url), username: (0, record_set_1.str)(ext.username) })),
192
+ }));
193
+ }
194
+ for (const ent of [...(0, record_set_1.objs)(u.enterprise_accounts), ...(0, record_set_1.objs)(u.saml_accounts)]) {
195
+ const conn = (0, record_set_1.isObj)(ent.enterprise_connection) ? ent.enterprise_connection : (0, record_set_1.isObj)(ent.saml_connection) ? ent.saml_connection : undefined;
196
+ const sub = (0, record_set_1.str)(ent.provider_user_id);
197
+ if (!sub || ent.active === false)
198
+ continue;
199
+ set.add('identity', (0, record_set_1.compact)({
200
+ id: (0, record_set_1.str)(ent.id),
201
+ user_id: id,
202
+ provider: (0, record_set_1.str)(ent.provider) ?? 'saml',
203
+ provider_user_id: sub,
204
+ kind: (0, record_set_1.str)(ent.protocol) === 'oauth' || (0, record_set_1.str)(ent.provider)?.startsWith('oidc') ? 'oidc' : 'saml',
205
+ sso_connection_id: (0, record_set_1.str)(conn?.id),
206
+ email: (0, record_set_1.str)(ent.email_address),
207
+ }), `ent:${(0, record_set_1.str)(ent.id) ?? sub}`);
208
+ }
209
+ const totp = csv ? (0, record_set_1.str)(csv.totp_secret) : undefined;
210
+ if (totp)
211
+ set.add('mfa_factor', { user_id: id, type: 'totp', secret_base32: totp.replace(/\s+/g, '').toUpperCase(), digits: 6, period: 30, algorithm: 'SHA1', verified: true });
212
+ else if (u.totp_enabled === true)
213
+ set.omit('mfa_factor', 'TOTP secrets are only in the dashboard CSV export');
214
+ if (u.backup_code_enabled === true)
215
+ set.omit('mfa_factor', 'Clerk does not export backup codes');
216
+ if ((0, record_set_1.objs)(u.passkeys).length)
217
+ set.omit('passkey', 'Clerk does not export passkey public keys', (0, record_set_1.objs)(u.passkeys).length);
218
+ }
219
+ /** A user from the CSV alone (no API access). */
220
+ function addCsvUser(set, r) {
221
+ const id = (0, record_set_1.str)(r.id);
222
+ if (!id)
223
+ return;
224
+ const verified = split(r.verified_email_addresses);
225
+ const unverified = split(r.unverified_email_addresses);
226
+ const primary = (0, record_set_1.str)(r.primary_email_address)?.toLowerCase();
227
+ const emails = [...new Set([...(primary ? [primary] : []), ...verified, ...unverified].map((e) => e.toLowerCase()))].map((email) => ({
228
+ email,
229
+ verified: verified.map((e) => e.toLowerCase()).includes(email),
230
+ primary: email === primary,
231
+ }));
232
+ const vPhones = split(r.verified_phone_numbers);
233
+ const phones = [...new Set([(0, record_set_1.str)(r.primary_phone_number), ...vPhones, ...split(r.unverified_phone_numbers)].filter((p) => !!p))]
234
+ .map((p) => ({ phone: (0, record_set_1.e164)(p), verified: vPhones.includes(p), primary: p === (0, record_set_1.str)(r.primary_phone_number) }))
235
+ .filter((p) => !!p.phone);
236
+ const user = (0, record_set_1.compact)({ id, emails, phones, username: (0, record_set_1.str)(r.username), first_name: (0, record_set_1.str)(r.first_name), last_name: (0, record_set_1.str)(r.last_name) });
237
+ attachCsvPassword(set, user, r);
238
+ if (!user.emails?.length && !user.phones?.length && !user.username) {
239
+ set.omit('user', 'no email, phone or username');
240
+ return;
241
+ }
242
+ set.add('user', user);
243
+ const totp = (0, record_set_1.str)(r.totp_secret);
244
+ if (totp)
245
+ set.add('mfa_factor', { user_id: id, type: 'totp', secret_base32: totp.replace(/\s+/g, '').toUpperCase(), digits: 6, period: 30, algorithm: 'SHA1', verified: true });
246
+ }
247
+ function attachCsvPassword(set, user, r) {
248
+ const digest = (0, record_set_1.str)(r.password_digest);
249
+ if (!digest)
250
+ return;
251
+ const mapped = clerkPasswordHash((0, record_set_1.str)(r.password_hasher) ?? 'bcrypt', digest);
252
+ if ('reason' in mapped) {
253
+ set.omit('password', mapped.reason);
254
+ return;
255
+ }
256
+ user.password = mapped;
257
+ }
258
+ const split = (v) => (v ?? '').split(/[|,;]/).map((s) => s.trim()).filter(Boolean);
259
+ /**
260
+ * A Clerk `password_digest` + `password_hasher` → the bundle's password hash
261
+ * (an Atlas hash-registry algorithm with its parameters). Formats per Clerk's
262
+ * `createUser` reference. Returns a reason when the digest cannot move: those
263
+ * users sign in through lazy migration (Clerk's verify_password) instead.
264
+ */
265
+ function clerkPasswordHash(hasher, digest) {
266
+ const h = hasher.trim().toLowerCase();
267
+ const parts = digest.split('$');
268
+ const int = (v) => (v && /^\d+$/.test(v) ? Number(v) : NaN);
269
+ const isHex = (v) => v.length % 2 === 0 && /^[0-9a-f]+$/i.test(v);
270
+ switch (h) {
271
+ case 'bcrypt':
272
+ return { algorithm: 'bcrypt', hash: digest };
273
+ case 'bcrypt_sha256_django':
274
+ return { algorithm: 'bcrypt_sha256_django', hash: digest };
275
+ case 'argon2i':
276
+ case 'argon2id':
277
+ return { algorithm: 'argon2', hash: digest };
278
+ case 'phpass':
279
+ case 'md5_phpass':
280
+ return { algorithm: 'phpass', hash: digest };
281
+ case 'ldap_ssha':
282
+ return { algorithm: 'ldap_ssha', hash: digest };
283
+ case 'md5':
284
+ case 'sha256':
285
+ return /^[0-9a-f]+$/i.test(digest) ? { algorithm: h, hash: digest.toLowerCase(), params: { encoding: 'hex' } } : { reason: `${h} digest is not hex` };
286
+ case 'md5_salted':
287
+ case 'sha256_salted':
288
+ // Clerk does not document whether the salt is prepended or appended; a
289
+ // guess that is wrong would lock the user out, so these verify lazily.
290
+ return { reason: `${h}: Clerk does not document the salt position; these users move through lazy migration` };
291
+ case 'pbkdf2_sha256_django':
292
+ return { algorithm: 'pbkdf2_django', hash: digest };
293
+ case 'pbkdf2_sha256': {
294
+ // pbkdf2_sha256$<iterations>$<base64 salt>$<base64 hash>
295
+ const [, it, salt, hash] = parts;
296
+ if (parts.length !== 4 || !Number.isFinite(int(it)) || !salt || !hash)
297
+ return { reason: 'malformed pbkdf2_sha256 digest' };
298
+ return { algorithm: 'pbkdf2', hash, salt, params: { digest: 'sha256', iterations: int(it), encoding: 'base64', salt_encoding: 'base64' } };
299
+ }
300
+ case 'pbkdf2_sha1': {
301
+ // pbkdf2_sha1$<iterations>$<salt>$<hex hash>[$<key length>]; the salt is
302
+ // hex when it parses as hex, raw bytes otherwise.
303
+ const [, it, salt, hash, keylen] = parts;
304
+ if ((parts.length !== 4 && parts.length !== 5) || !Number.isFinite(int(it)) || !salt || !hash || !isHex(hash))
305
+ return { reason: 'malformed pbkdf2_sha1 digest' };
306
+ const params = { digest: 'sha1', iterations: int(it), encoding: 'hex', salt_encoding: isHex(salt) ? 'hex' : 'utf8' };
307
+ if (keylen && Number.isFinite(int(keylen)))
308
+ params.key_length = int(keylen);
309
+ return { algorithm: 'pbkdf2', hash, salt, params };
310
+ }
311
+ case 'pbkdf2_sha512':
312
+ case 'pbkdf2_sha512_hex': {
313
+ const [, it, salt, hash] = parts;
314
+ if (parts.length !== 4 || !Number.isFinite(int(it)) || !salt || !hash || !isHex(hash))
315
+ return { reason: `malformed ${h} digest` };
316
+ return { algorithm: 'pbkdf2', hash, salt, params: { digest: 'sha512', iterations: int(it), encoding: 'hex', salt_encoding: h === 'pbkdf2_sha512_hex' ? 'hex' : 'utf8' } };
317
+ }
318
+ case 'scrypt_firebase': {
319
+ // <hash>$<salt>$<signer key>$<salt separator>$<rounds>$<memory cost>
320
+ const [hash, salt, signerKey, saltSeparator, rounds, mem] = parts;
321
+ if (parts.length !== 6 || !hash || !signerKey)
322
+ return { reason: 'malformed scrypt_firebase digest' };
323
+ return {
324
+ algorithm: 'scrypt_firebase',
325
+ hash,
326
+ salt: salt ?? '',
327
+ params: { signer_key: signerKey, salt_separator: saltSeparator ?? '', rounds: int(rounds), mem_cost: int(mem) },
328
+ };
329
+ }
330
+ case 'scrypt_werkzeug': {
331
+ // Werkzeug writes `scrypt:N:r:p$salt$<hex>`; Clerk documents the layout with
332
+ // a leading `$` and a base64 hash. Normalise to Werkzeug's own form.
333
+ const m = /^\$?(scrypt:\d+:\d+:\d+)\$([^$]+)\$([^$]+)$/.exec(digest);
334
+ if (!m)
335
+ return { reason: 'malformed scrypt_werkzeug digest' };
336
+ const hex = isHex(m[3]) ? m[3].toLowerCase() : Buffer.from(m[3], 'base64').toString('hex');
337
+ return hex ? { algorithm: 'scrypt_werkzeug', hash: `${m[1]}$${m[2]}$${hex}` } : { reason: 'malformed scrypt_werkzeug digest' };
338
+ }
339
+ case 'sha512_symfony': {
340
+ // sha512_symfony$<iterations>$<salt>$<base64 hash>
341
+ const [, it, salt, hash] = parts;
342
+ if (parts.length !== 4 || !Number.isFinite(int(it)) || salt === undefined || !hash)
343
+ return { reason: 'malformed sha512_symfony digest' };
344
+ return { algorithm: 'sha512_symfony', hash, salt, params: { iterations: int(it), encoding: 'base64' } };
345
+ }
346
+ case 'bcrypt_peppered':
347
+ return { reason: 'bcrypt_peppered: the pepper never leaves Clerk; these users move through lazy migration' };
348
+ case 'awscognito':
349
+ return { reason: 'awscognito: the password still lives in Amazon Cognito; these users move through lazy migration' };
350
+ default:
351
+ return { reason: `password hasher "${hasher}" is not supported; these users move through lazy migration` };
352
+ }
353
+ }
354
+ // ── organizations, keys, connections ────────────────────────────────────────
355
+ /** Clerk role keys carry an `org:` prefix; the bundle uses the bare key. */
356
+ function roleKey(key) {
357
+ return key.replace(/^org:/, '');
358
+ }
359
+ /** `org:invoices:read` → `invoices:read`; system permissions keep their `sys_` key. */
360
+ function permissionKey(key) {
361
+ return key.replace(/^org:/, '');
362
+ }
363
+ async function addApiKeys(set, http, users, orgs) {
364
+ let keys;
365
+ try {
366
+ keys = await listAll(http, '/v1/api_keys', 100);
367
+ }
368
+ catch (err) {
369
+ if (err instanceof vendor_http_1.VendorApiError && (err.status === 404 || err.status === 403))
370
+ return;
371
+ throw err;
372
+ }
373
+ for (const k of keys) {
374
+ const id = (0, record_set_1.str)(k.id);
375
+ const subject = (0, record_set_1.str)(k.subject);
376
+ if (!id || !subject || k.revoked === true)
377
+ continue;
378
+ // Clerk returns the secret on request: Atlas stores only its sha256, so
379
+ // the key keeps working after the move.
380
+ const secret = await optionalGet(http, `/v1/api_keys/${id}/secret`);
381
+ const value = (0, record_set_1.str)(secret?.secret);
382
+ if (!value) {
383
+ set.omit('api_key', 'secret not retrievable; reissue');
384
+ continue;
385
+ }
386
+ set.add('api_key', (0, record_set_1.compact)({
387
+ id,
388
+ user_id: users.has(subject) ? subject : undefined,
389
+ organization_id: orgs.has(subject) ? subject : undefined,
390
+ name: (0, record_set_1.str)(k.name),
391
+ hash: (0, node_crypto_1.createHash)('sha256').update(value, 'utf8').digest('hex'),
392
+ hash_algorithm: 'sha256',
393
+ start: value.slice(0, 8),
394
+ scopes: (0, record_set_1.strs)(k.scopes),
395
+ expires_at: num(k.expiration),
396
+ last_used_at: num(k.last_used_at),
397
+ created_at: num(k.created_at),
398
+ }));
399
+ }
400
+ }
401
+ async function addSsoConnections(set, http) {
402
+ let conns = await optionalList(http, '/v1/enterprise_connections');
403
+ if (!conns.length)
404
+ conns = await optionalList(http, '/v1/saml_connections');
405
+ for (const c of conns) {
406
+ const id = (0, record_set_1.str)(c.id);
407
+ if (!id)
408
+ continue;
409
+ const saml = (0, record_set_1.isObj)(c.saml_connection) ? c.saml_connection : c;
410
+ const oidc = (0, record_set_1.isObj)(c.oauth_config) ? c.oauth_config : (0, record_set_1.isObj)(c.oidc_connection) ? c.oidc_connection : undefined;
411
+ const protocol = oidc && !(0, record_set_1.str)(saml.idp_sso_url) ? 'oidc' : 'saml';
412
+ const domains = [...(0, record_set_1.strs)(c.domains), ...((0, record_set_1.str)(c.domain) ? [(0, record_set_1.str)(c.domain)] : [])];
413
+ const mapping = (0, record_set_1.isObj)(saml.attribute_mapping) ? saml.attribute_mapping : undefined;
414
+ set.add('sso_connection', (0, record_set_1.compact)({
415
+ id,
416
+ name: (0, record_set_1.str)(c.name),
417
+ organization_id: (0, record_set_1.str)(c.organization_id),
418
+ protocol: protocol,
419
+ domains: [...new Set(domains)],
420
+ enabled: c.active !== false,
421
+ saml: protocol === 'saml'
422
+ ? (0, record_set_1.compact)({
423
+ idp_entity_id: (0, record_set_1.str)(saml.idp_entity_id),
424
+ idp_sso_url: (0, record_set_1.str)(saml.idp_sso_url),
425
+ idp_certificate: (0, record_set_1.str)(saml.idp_certificate),
426
+ idp_metadata_url: (0, record_set_1.str)(saml.idp_metadata_url),
427
+ idp_metadata_xml: (0, record_set_1.str)(saml.idp_metadata),
428
+ sp_entity_id: (0, record_set_1.str)(saml.sp_entity_id),
429
+ sp_acs_url: (0, record_set_1.str)(saml.acs_url),
430
+ attribute_mapping: mapping
431
+ ? Object.fromEntries(Object.entries(mapping).filter(([, v]) => typeof v === 'string' && v))
432
+ : undefined,
433
+ })
434
+ : undefined,
435
+ oidc: protocol === 'oidc' && oidc
436
+ ? (0, record_set_1.compact)({ discovery_url: (0, record_set_1.str)(oidc.discovery_url), issuer: (0, record_set_1.str)(oidc.issuer), client_id: (0, record_set_1.str)(oidc.client_id), scopes: (0, record_set_1.str)(oidc.scopes)?.split(/\s+/) })
437
+ : undefined,
438
+ }));
439
+ if (protocol === 'oidc')
440
+ set.warn(`Enterprise OIDC connection ${(0, record_set_1.str)(c.name) ?? id}: Clerk does not return its client secret; enter it in Atlas after the import.`);
441
+ }
442
+ }
443
+ // ── paging ──────────────────────────────────────────────────────────────────
444
+ const num = (v) => (typeof v === 'number' && Number.isFinite(v) && v > 0 ? v : undefined);
445
+ /** Clerk lists answer either a bare array or `{ data, total_count }`. */
446
+ function rowsOf(body) {
447
+ if (Array.isArray(body))
448
+ return body.filter(record_set_1.isObj);
449
+ if ((0, record_set_1.isObj)(body) && Array.isArray(body.data))
450
+ return body.data.filter(record_set_1.isObj);
451
+ return [];
452
+ }
453
+ async function listAll(http, path, limit = PAGE) {
454
+ const out = [];
455
+ const sep = path.includes('?') ? '&' : '?';
456
+ for (let offset = 0;; offset += limit) {
457
+ const { body } = await http.get(`${path}${sep}limit=${limit}&offset=${offset}`);
458
+ const rows = rowsOf(body);
459
+ out.push(...rows);
460
+ const total = (0, record_set_1.isObj)(body) && typeof body.total_count === 'number' ? body.total_count : undefined;
461
+ if (rows.length < limit || (total !== undefined && out.length >= total))
462
+ return out;
463
+ }
464
+ }
465
+ /** A list that may not exist on this instance's plan or API version: empty instead of an error. */
466
+ async function optionalList(http, path) {
467
+ try {
468
+ return await listAll(http, path);
469
+ }
470
+ catch (err) {
471
+ if (err instanceof vendor_http_1.VendorApiError && [400, 402, 403, 404, 410, 422].includes(err.status))
472
+ return [];
473
+ throw err;
474
+ }
475
+ }
476
+ async function optionalGet(http, path) {
477
+ try {
478
+ return (await http.get(path)).body;
479
+ }
480
+ catch (err) {
481
+ if (err instanceof vendor_http_1.VendorApiError && [400, 402, 403, 404, 410, 422].includes(err.status))
482
+ return null;
483
+ throw err;
484
+ }
485
+ }
486
+ //# sourceMappingURL=clerk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clerk.js","sourceRoot":"","sources":["../../../src/migrate/export/clerk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { TranslationResult } from '../framework/plugin';
2
+ import type { CognitoApi } from './cognito';
3
+ import { type Obj } from './record-set';
4
+ /**
5
+ * `atlas migrate cognito config` — a user pool's settings → Atlas config,
6
+ * read with the owner's AWS credentials on this machine: DescribeUserPool
7
+ * (password policy, MFA, sign-in identifiers, verification, self sign-up,
8
+ * Lambda triggers), every app client (callback URLs, OAuth scopes, token
9
+ * lifetimes, auth flows), identity providers (social → Atlas providers,
10
+ * SAML / OIDC → SSO connections), resource servers (APIs and scopes) and
11
+ * groups (roles).
12
+ */
13
+ export interface CognitoConfigSnapshot {
14
+ poolId: string;
15
+ region: string;
16
+ pool: Obj;
17
+ clients: Obj[];
18
+ idps: Obj[];
19
+ resourceServers: Obj[];
20
+ groups: Obj[];
21
+ }
22
+ export declare function fetchCognitoConfig(api: CognitoApi, poolId: string, region: string): Promise<CognitoConfigSnapshot>;
23
+ /** A client's token validity in ms (`RefreshTokenValidity` with `TokenValidityUnits.RefreshToken`). */
24
+ export declare function validityMs(client: Obj, field: 'AccessToken' | 'IdToken' | 'RefreshToken'): number | undefined;
25
+ export declare function translateCognitoConfig(snap: CognitoConfigSnapshot): TranslationResult;