@atlasauth/cli 0.23.0 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (527) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/package.json +3 -3
  3. package/dist/args.d.ts +0 -601
  4. package/dist/args.js +0 -289
  5. package/dist/args.js.map +0 -1
  6. package/dist/cli.d.ts +0 -2
  7. package/dist/cli.js +0 -19
  8. package/dist/cli.js.map +0 -1
  9. package/dist/commands/actions-gallery.d.ts +0 -8
  10. package/dist/commands/actions-gallery.js +0 -197
  11. package/dist/commands/actions-gallery.js.map +0 -1
  12. package/dist/commands/actions.d.ts +0 -13
  13. package/dist/commands/actions.js +0 -135
  14. package/dist/commands/actions.js.map +0 -1
  15. package/dist/commands/admin.d.ts +0 -49
  16. package/dist/commands/admin.js +0 -353
  17. package/dist/commands/admin.js.map +0 -1
  18. package/dist/commands/api-keys.d.ts +0 -4
  19. package/dist/commands/api-keys.js +0 -96
  20. package/dist/commands/api-keys.js.map +0 -1
  21. package/dist/commands/auth.d.ts +0 -25
  22. package/dist/commands/auth.js +0 -102
  23. package/dist/commands/auth.js.map +0 -1
  24. package/dist/commands/config.d.ts +0 -90
  25. package/dist/commands/config.js +0 -1430
  26. package/dist/commands/config.js.map +0 -1
  27. package/dist/commands/csp.d.ts +0 -32
  28. package/dist/commands/csp.js +0 -180
  29. package/dist/commands/csp.js.map +0 -1
  30. package/dist/commands/dev.d.ts +0 -8
  31. package/dist/commands/dev.js +0 -84
  32. package/dist/commands/dev.js.map +0 -1
  33. package/dist/commands/fga.d.ts +0 -10
  34. package/dist/commands/fga.js +0 -146
  35. package/dist/commands/fga.js.map +0 -1
  36. package/dist/commands/golive.d.ts +0 -40
  37. package/dist/commands/golive.js +0 -285
  38. package/dist/commands/golive.js.map +0 -1
  39. package/dist/commands/id-accounts.d.ts +0 -13
  40. package/dist/commands/id-accounts.js +0 -195
  41. package/dist/commands/id-accounts.js.map +0 -1
  42. package/dist/commands/import-better-auth.d.ts +0 -3
  43. package/dist/commands/import-better-auth.js +0 -164
  44. package/dist/commands/import-better-auth.js.map +0 -1
  45. package/dist/commands/import.d.ts +0 -3
  46. package/dist/commands/import.js +0 -123
  47. package/dist/commands/import.js.map +0 -1
  48. package/dist/commands/info.d.ts +0 -75
  49. package/dist/commands/info.js +0 -362
  50. package/dist/commands/info.js.map +0 -1
  51. package/dist/commands/init.d.ts +0 -3
  52. package/dist/commands/init.js +0 -438
  53. package/dist/commands/init.js.map +0 -1
  54. package/dist/commands/integrations.d.ts +0 -8
  55. package/dist/commands/integrations.js +0 -112
  56. package/dist/commands/integrations.js.map +0 -1
  57. package/dist/commands/listen.d.ts +0 -17
  58. package/dist/commands/listen.js +0 -223
  59. package/dist/commands/listen.js.map +0 -1
  60. package/dist/commands/mcp.d.ts +0 -38
  61. package/dist/commands/mcp.js +0 -111
  62. package/dist/commands/mcp.js.map +0 -1
  63. package/dist/commands/migrate.d.ts +0 -16
  64. package/dist/commands/migrate.js +0 -114
  65. package/dist/commands/migrate.js.map +0 -1
  66. package/dist/commands/move-origin.d.ts +0 -11
  67. package/dist/commands/move-origin.js +0 -95
  68. package/dist/commands/move-origin.js.map +0 -1
  69. package/dist/commands/operator.d.ts +0 -18
  70. package/dist/commands/operator.js +0 -238
  71. package/dist/commands/operator.js.map +0 -1
  72. package/dist/commands/orgs.d.ts +0 -4
  73. package/dist/commands/orgs.js +0 -72
  74. package/dist/commands/orgs.js.map +0 -1
  75. package/dist/commands/pages.d.ts +0 -14
  76. package/dist/commands/pages.js +0 -113
  77. package/dist/commands/pages.js.map +0 -1
  78. package/dist/commands/partner-platforms.d.ts +0 -10
  79. package/dist/commands/partner-platforms.js +0 -157
  80. package/dist/commands/partner-platforms.js.map +0 -1
  81. package/dist/commands/project-commands.d.ts +0 -38
  82. package/dist/commands/project-commands.js +0 -361
  83. package/dist/commands/project-commands.js.map +0 -1
  84. package/dist/commands/referrals.d.ts +0 -69
  85. package/dist/commands/referrals.js +0 -1056
  86. package/dist/commands/referrals.js.map +0 -1
  87. package/dist/commands/resources.d.ts +0 -44
  88. package/dist/commands/resources.js +0 -234
  89. package/dist/commands/resources.js.map +0 -1
  90. package/dist/commands/sessions.d.ts +0 -4
  91. package/dist/commands/sessions.js +0 -28
  92. package/dist/commands/sessions.js.map +0 -1
  93. package/dist/commands/shared.d.ts +0 -38
  94. package/dist/commands/shared.js +0 -69
  95. package/dist/commands/shared.js.map +0 -1
  96. package/dist/commands/status.d.ts +0 -3
  97. package/dist/commands/status.js +0 -77
  98. package/dist/commands/status.js.map +0 -1
  99. package/dist/commands/users.d.ts +0 -4
  100. package/dist/commands/users.js +0 -100
  101. package/dist/commands/users.js.map +0 -1
  102. package/dist/commands/webhooks.d.ts +0 -34
  103. package/dist/commands/webhooks.js +0 -301
  104. package/dist/commands/webhooks.js.map +0 -1
  105. package/dist/config-http.d.ts +0 -29
  106. package/dist/config-http.js +0 -64
  107. package/dist/config-http.js.map +0 -1
  108. package/dist/config.d.ts +0 -64
  109. package/dist/config.js +0 -69
  110. package/dist/config.js.map +0 -1
  111. package/dist/context.d.ts +0 -72
  112. package/dist/context.js +0 -27
  113. package/dist/context.js.map +0 -1
  114. package/dist/errors.d.ts +0 -15
  115. package/dist/errors.js +0 -25
  116. package/dist/errors.js.map +0 -1
  117. package/dist/help.d.ts +0 -8
  118. package/dist/help.js +0 -868
  119. package/dist/help.js.map +0 -1
  120. package/dist/import/csv.d.ts +0 -6
  121. package/dist/import/csv.js +0 -63
  122. package/dist/import/csv.js.map +0 -1
  123. package/dist/import/vendors.d.ts +0 -57
  124. package/dist/import/vendors.js +0 -568
  125. package/dist/import/vendors.js.map +0 -1
  126. package/dist/index.d.ts +0 -32
  127. package/dist/index.js +0 -79
  128. package/dist/index.js.map +0 -1
  129. package/dist/io.d.ts +0 -21
  130. package/dist/io.js +0 -28
  131. package/dist/io.js.map +0 -1
  132. package/dist/migrate/appwrite/plugin.d.ts +0 -2
  133. package/dist/migrate/appwrite/plugin.js +0 -103
  134. package/dist/migrate/appwrite/plugin.js.map +0 -1
  135. package/dist/migrate/auth0/plugin.d.ts +0 -2
  136. package/dist/migrate/auth0/plugin.js +0 -126
  137. package/dist/migrate/auth0/plugin.js.map +0 -1
  138. package/dist/migrate/authentik/plugin.d.ts +0 -2
  139. package/dist/migrate/authentik/plugin.js +0 -135
  140. package/dist/migrate/authentik/plugin.js.map +0 -1
  141. package/dist/migrate/azure-ad-b2c/plugin.d.ts +0 -8
  142. package/dist/migrate/azure-ad-b2c/plugin.js +0 -165
  143. package/dist/migrate/azure-ad-b2c/plugin.js.map +0 -1
  144. package/dist/migrate/better-auth/integration.d.ts +0 -59
  145. package/dist/migrate/better-auth/integration.js +0 -81
  146. package/dist/migrate/better-auth/integration.js.map +0 -1
  147. package/dist/migrate/better-auth/orchestrator.d.ts +0 -43
  148. package/dist/migrate/better-auth/orchestrator.js +0 -525
  149. package/dist/migrate/better-auth/orchestrator.js.map +0 -1
  150. package/dist/migrate/better-auth/output.d.ts +0 -20
  151. package/dist/migrate/better-auth/output.js +0 -146
  152. package/dist/migrate/better-auth/output.js.map +0 -1
  153. package/dist/migrate/better-auth/translate.d.ts +0 -77
  154. package/dist/migrate/better-auth/translate.js +0 -1989
  155. package/dist/migrate/better-auth/translate.js.map +0 -1
  156. package/dist/migrate/clerk/plugin.d.ts +0 -2
  157. package/dist/migrate/clerk/plugin.js +0 -76
  158. package/dist/migrate/clerk/plugin.js.map +0 -1
  159. package/dist/migrate/cognito/plugin.d.ts +0 -5
  160. package/dist/migrate/cognito/plugin.js +0 -170
  161. package/dist/migrate/cognito/plugin.js.map +0 -1
  162. package/dist/migrate/corbado/plugin.d.ts +0 -2
  163. package/dist/migrate/corbado/plugin.js +0 -63
  164. package/dist/migrate/corbado/plugin.js.map +0 -1
  165. package/dist/migrate/descope/plugin.d.ts +0 -2
  166. package/dist/migrate/descope/plugin.js +0 -83
  167. package/dist/migrate/descope/plugin.js.map +0 -1
  168. package/dist/migrate/entra-external-id/plugin.d.ts +0 -8
  169. package/dist/migrate/entra-external-id/plugin.js +0 -12
  170. package/dist/migrate/entra-external-id/plugin.js.map +0 -1
  171. package/dist/migrate/export/appwrite-config.d.ts +0 -28
  172. package/dist/migrate/export/appwrite-config.js +0 -170
  173. package/dist/migrate/export/appwrite-config.js.map +0 -1
  174. package/dist/migrate/export/appwrite.d.ts +0 -51
  175. package/dist/migrate/export/appwrite.js +0 -288
  176. package/dist/migrate/export/appwrite.js.map +0 -1
  177. package/dist/migrate/export/auth0-config.d.ts +0 -29
  178. package/dist/migrate/export/auth0-config.js +0 -249
  179. package/dist/migrate/export/auth0-config.js.map +0 -1
  180. package/dist/migrate/export/auth0.d.ts +0 -62
  181. package/dist/migrate/export/auth0.js +0 -575
  182. package/dist/migrate/export/auth0.js.map +0 -1
  183. package/dist/migrate/export/authentik-config.d.ts +0 -45
  184. package/dist/migrate/export/authentik-config.js +0 -357
  185. package/dist/migrate/export/authentik-config.js.map +0 -1
  186. package/dist/migrate/export/authentik.d.ts +0 -110
  187. package/dist/migrate/export/authentik.js +0 -838
  188. package/dist/migrate/export/authentik.js.map +0 -1
  189. package/dist/migrate/export/azure-config.d.ts +0 -58
  190. package/dist/migrate/export/azure-config.js +0 -344
  191. package/dist/migrate/export/azure-config.js.map +0 -1
  192. package/dist/migrate/export/azure.d.ts +0 -85
  193. package/dist/migrate/export/azure.js +0 -373
  194. package/dist/migrate/export/azure.js.map +0 -1
  195. package/dist/migrate/export/clerk-config.d.ts +0 -26
  196. package/dist/migrate/export/clerk-config.js +0 -227
  197. package/dist/migrate/export/clerk-config.js.map +0 -1
  198. package/dist/migrate/export/clerk.d.ts +0 -46
  199. package/dist/migrate/export/clerk.js +0 -486
  200. package/dist/migrate/export/clerk.js.map +0 -1
  201. package/dist/migrate/export/cognito-config.d.ts +0 -25
  202. package/dist/migrate/export/cognito-config.js +0 -273
  203. package/dist/migrate/export/cognito-config.js.map +0 -1
  204. package/dist/migrate/export/cognito.d.ts +0 -103
  205. package/dist/migrate/export/cognito.js +0 -441
  206. package/dist/migrate/export/cognito.js.map +0 -1
  207. package/dist/migrate/export/corbado-config.d.ts +0 -20
  208. package/dist/migrate/export/corbado-config.js +0 -63
  209. package/dist/migrate/export/corbado-config.js.map +0 -1
  210. package/dist/migrate/export/corbado.d.ts +0 -37
  211. package/dist/migrate/export/corbado.js +0 -132
  212. package/dist/migrate/export/corbado.js.map +0 -1
  213. package/dist/migrate/export/descope.d.ts +0 -35
  214. package/dist/migrate/export/descope.js +0 -208
  215. package/dist/migrate/export/descope.js.map +0 -1
  216. package/dist/migrate/export/fake-vendor.test-helper.d.ts +0 -27
  217. package/dist/migrate/export/fake-vendor.test-helper.js +0 -41
  218. package/dist/migrate/export/fake-vendor.test-helper.js.map +0 -1
  219. package/dist/migrate/export/firebase-config.d.ts +0 -24
  220. package/dist/migrate/export/firebase-config.js +0 -215
  221. package/dist/migrate/export/firebase-config.js.map +0 -1
  222. package/dist/migrate/export/firebase.d.ts +0 -102
  223. package/dist/migrate/export/firebase.js +0 -464
  224. package/dist/migrate/export/firebase.js.map +0 -1
  225. package/dist/migrate/export/frameworks/app-users.d.ts +0 -42
  226. package/dist/migrate/export/frameworks/app-users.js +0 -161
  227. package/dist/migrate/export/frameworks/app-users.js.map +0 -1
  228. package/dist/migrate/export/frameworks/authjs.d.ts +0 -41
  229. package/dist/migrate/export/frameworks/authjs.js +0 -146
  230. package/dist/migrate/export/frameworks/authjs.js.map +0 -1
  231. package/dist/migrate/export/frameworks/devise.d.ts +0 -39
  232. package/dist/migrate/export/frameworks/devise.js +0 -218
  233. package/dist/migrate/export/frameworks/devise.js.map +0 -1
  234. package/dist/migrate/export/frameworks/django.d.ts +0 -45
  235. package/dist/migrate/export/frameworks/django.js +0 -315
  236. package/dist/migrate/export/frameworks/django.js.map +0 -1
  237. package/dist/migrate/export/frameworks/lucia.d.ts +0 -42
  238. package/dist/migrate/export/frameworks/lucia.js +0 -263
  239. package/dist/migrate/export/frameworks/lucia.js.map +0 -1
  240. package/dist/migrate/export/frameworks/tables.d.ts +0 -90
  241. package/dist/migrate/export/frameworks/tables.js +0 -325
  242. package/dist/migrate/export/frameworks/tables.js.map +0 -1
  243. package/dist/migrate/export/frameworks/webauthn.d.ts +0 -25
  244. package/dist/migrate/export/frameworks/webauthn.js +0 -130
  245. package/dist/migrate/export/frameworks/webauthn.js.map +0 -1
  246. package/dist/migrate/export/frontegg-config.d.ts +0 -29
  247. package/dist/migrate/export/frontegg-config.js +0 -238
  248. package/dist/migrate/export/frontegg-config.js.map +0 -1
  249. package/dist/migrate/export/frontegg.d.ts +0 -67
  250. package/dist/migrate/export/frontegg.js +0 -410
  251. package/dist/migrate/export/frontegg.js.map +0 -1
  252. package/dist/migrate/export/fusionauth-config.d.ts +0 -26
  253. package/dist/migrate/export/fusionauth-config.js +0 -226
  254. package/dist/migrate/export/fusionauth-config.js.map +0 -1
  255. package/dist/migrate/export/fusionauth.d.ts +0 -99
  256. package/dist/migrate/export/fusionauth.js +0 -642
  257. package/dist/migrate/export/fusionauth.js.map +0 -1
  258. package/dist/migrate/export/hanko-config.d.ts +0 -27
  259. package/dist/migrate/export/hanko-config.js +0 -265
  260. package/dist/migrate/export/hanko-config.js.map +0 -1
  261. package/dist/migrate/export/hanko.d.ts +0 -52
  262. package/dist/migrate/export/hanko.js +0 -605
  263. package/dist/migrate/export/hanko.js.map +0 -1
  264. package/dist/migrate/export/keycloak-config.d.ts +0 -19
  265. package/dist/migrate/export/keycloak-config.js +0 -219
  266. package/dist/migrate/export/keycloak-config.js.map +0 -1
  267. package/dist/migrate/export/keycloak.d.ts +0 -155
  268. package/dist/migrate/export/keycloak.js +0 -878
  269. package/dist/migrate/export/keycloak.js.map +0 -1
  270. package/dist/migrate/export/kinde-descope-config.d.ts +0 -38
  271. package/dist/migrate/export/kinde-descope-config.js +0 -172
  272. package/dist/migrate/export/kinde-descope-config.js.map +0 -1
  273. package/dist/migrate/export/kinde.d.ts +0 -57
  274. package/dist/migrate/export/kinde.js +0 -333
  275. package/dist/migrate/export/kinde.js.map +0 -1
  276. package/dist/migrate/export/ldap.d.ts +0 -53
  277. package/dist/migrate/export/ldap.js +0 -277
  278. package/dist/migrate/export/ldap.js.map +0 -1
  279. package/dist/migrate/export/logto-config.d.ts +0 -27
  280. package/dist/migrate/export/logto-config.js +0 -264
  281. package/dist/migrate/export/logto-config.js.map +0 -1
  282. package/dist/migrate/export/logto.d.ts +0 -150
  283. package/dist/migrate/export/logto.js +0 -809
  284. package/dist/migrate/export/logto.js.map +0 -1
  285. package/dist/migrate/export/magic-config.d.ts +0 -14
  286. package/dist/migrate/export/magic-config.js +0 -28
  287. package/dist/migrate/export/magic-config.js.map +0 -1
  288. package/dist/migrate/export/magic.d.ts +0 -31
  289. package/dist/migrate/export/magic.js +0 -93
  290. package/dist/migrate/export/magic.js.map +0 -1
  291. package/dist/migrate/export/mini-yaml.d.ts +0 -19
  292. package/dist/migrate/export/mini-yaml.js +0 -581
  293. package/dist/migrate/export/mini-yaml.js.map +0 -1
  294. package/dist/migrate/export/nhost-config.d.ts +0 -26
  295. package/dist/migrate/export/nhost-config.js +0 -360
  296. package/dist/migrate/export/nhost-config.js.map +0 -1
  297. package/dist/migrate/export/nhost.d.ts +0 -64
  298. package/dist/migrate/export/nhost.js +0 -304
  299. package/dist/migrate/export/nhost.js.map +0 -1
  300. package/dist/migrate/export/okta-config.d.ts +0 -30
  301. package/dist/migrate/export/okta-config.js +0 -205
  302. package/dist/migrate/export/okta-config.js.map +0 -1
  303. package/dist/migrate/export/okta.d.ts +0 -43
  304. package/dist/migrate/export/okta.js +0 -337
  305. package/dist/migrate/export/okta.js.map +0 -1
  306. package/dist/migrate/export/onelogin.d.ts +0 -22
  307. package/dist/migrate/export/onelogin.js +0 -123
  308. package/dist/migrate/export/onelogin.js.map +0 -1
  309. package/dist/migrate/export/ory-config.d.ts +0 -58
  310. package/dist/migrate/export/ory-config.js +0 -451
  311. package/dist/migrate/export/ory-config.js.map +0 -1
  312. package/dist/migrate/export/ory.d.ts +0 -81
  313. package/dist/migrate/export/ory.js +0 -555
  314. package/dist/migrate/export/ory.js.map +0 -1
  315. package/dist/migrate/export/password-detect.d.ts +0 -29
  316. package/dist/migrate/export/password-detect.js +0 -81
  317. package/dist/migrate/export/password-detect.js.map +0 -1
  318. package/dist/migrate/export/pingone.d.ts +0 -36
  319. package/dist/migrate/export/pingone.js +0 -218
  320. package/dist/migrate/export/pingone.js.map +0 -1
  321. package/dist/migrate/export/plugin-kit.d.ts +0 -25
  322. package/dist/migrate/export/plugin-kit.js +0 -82
  323. package/dist/migrate/export/plugin-kit.js.map +0 -1
  324. package/dist/migrate/export/pocketbase-config.d.ts +0 -28
  325. package/dist/migrate/export/pocketbase-config.js +0 -180
  326. package/dist/migrate/export/pocketbase-config.js.map +0 -1
  327. package/dist/migrate/export/pocketbase.d.ts +0 -52
  328. package/dist/migrate/export/pocketbase.js +0 -243
  329. package/dist/migrate/export/pocketbase.js.map +0 -1
  330. package/dist/migrate/export/project-files.d.ts +0 -15
  331. package/dist/migrate/export/project-files.js +0 -43
  332. package/dist/migrate/export/project-files.js.map +0 -1
  333. package/dist/migrate/export/propelauth-config.d.ts +0 -18
  334. package/dist/migrate/export/propelauth-config.js +0 -58
  335. package/dist/migrate/export/propelauth-config.js.map +0 -1
  336. package/dist/migrate/export/propelauth-harness.test-helper.d.ts +0 -62
  337. package/dist/migrate/export/propelauth-harness.test-helper.js +0 -109
  338. package/dist/migrate/export/propelauth-harness.test-helper.js.map +0 -1
  339. package/dist/migrate/export/propelauth.d.ts +0 -48
  340. package/dist/migrate/export/propelauth.js +0 -255
  341. package/dist/migrate/export/propelauth.js.map +0 -1
  342. package/dist/migrate/export/record-set.d.ts +0 -44
  343. package/dist/migrate/export/record-set.js +0 -98
  344. package/dist/migrate/export/record-set.js.map +0 -1
  345. package/dist/migrate/export/source-lines.d.ts +0 -17
  346. package/dist/migrate/export/source-lines.js +0 -43
  347. package/dist/migrate/export/source-lines.js.map +0 -1
  348. package/dist/migrate/export/sso-metadata.d.ts +0 -47
  349. package/dist/migrate/export/sso-metadata.js +0 -180
  350. package/dist/migrate/export/sso-metadata.js.map +0 -1
  351. package/dist/migrate/export/stytch-config.d.ts +0 -22
  352. package/dist/migrate/export/stytch-config.js +0 -102
  353. package/dist/migrate/export/stytch-config.js.map +0 -1
  354. package/dist/migrate/export/stytch.d.ts +0 -68
  355. package/dist/migrate/export/stytch.js +0 -510
  356. package/dist/migrate/export/stytch.js.map +0 -1
  357. package/dist/migrate/export/supabase-config.d.ts +0 -48
  358. package/dist/migrate/export/supabase-config.js +0 -408
  359. package/dist/migrate/export/supabase-config.js.map +0 -1
  360. package/dist/migrate/export/supabase.d.ts +0 -86
  361. package/dist/migrate/export/supabase.js +0 -524
  362. package/dist/migrate/export/supabase.js.map +0 -1
  363. package/dist/migrate/export/supertokens-config.d.ts +0 -20
  364. package/dist/migrate/export/supertokens-config.js +0 -150
  365. package/dist/migrate/export/supertokens-config.js.map +0 -1
  366. package/dist/migrate/export/supertokens.d.ts +0 -125
  367. package/dist/migrate/export/supertokens.js +0 -464
  368. package/dist/migrate/export/supertokens.js.map +0 -1
  369. package/dist/migrate/export/table.d.ts +0 -35
  370. package/dist/migrate/export/table.js +0 -248
  371. package/dist/migrate/export/table.js.map +0 -1
  372. package/dist/migrate/export/translate-kit.d.ts +0 -46
  373. package/dist/migrate/export/translate-kit.js +0 -148
  374. package/dist/migrate/export/translate-kit.js.map +0 -1
  375. package/dist/migrate/export/userfront-config.d.ts +0 -15
  376. package/dist/migrate/export/userfront-config.js +0 -49
  377. package/dist/migrate/export/userfront-config.js.map +0 -1
  378. package/dist/migrate/export/userfront.d.ts +0 -38
  379. package/dist/migrate/export/userfront.js +0 -189
  380. package/dist/migrate/export/userfront.js.map +0 -1
  381. package/dist/migrate/export/vendor-http.d.ts +0 -46
  382. package/dist/migrate/export/vendor-http.js +0 -138
  383. package/dist/migrate/export/vendor-http.js.map +0 -1
  384. package/dist/migrate/export/workos-config.d.ts +0 -23
  385. package/dist/migrate/export/workos-config.js +0 -125
  386. package/dist/migrate/export/workos-config.js.map +0 -1
  387. package/dist/migrate/export/workos.d.ts +0 -46
  388. package/dist/migrate/export/workos.js +0 -272
  389. package/dist/migrate/export/workos.js.map +0 -1
  390. package/dist/migrate/export/zip.d.ts +0 -8
  391. package/dist/migrate/export/zip.js +0 -66
  392. package/dist/migrate/export/zip.js.map +0 -1
  393. package/dist/migrate/export/zitadel-config.d.ts +0 -37
  394. package/dist/migrate/export/zitadel-config.js +0 -279
  395. package/dist/migrate/export/zitadel-config.js.map +0 -1
  396. package/dist/migrate/export/zitadel.d.ts +0 -82
  397. package/dist/migrate/export/zitadel.js +0 -447
  398. package/dist/migrate/export/zitadel.js.map +0 -1
  399. package/dist/migrate/firebase/plugin.d.ts +0 -2
  400. package/dist/migrate/firebase/plugin.js +0 -152
  401. package/dist/migrate/firebase/plugin.js.map +0 -1
  402. package/dist/migrate/framework/builtins.d.ts +0 -2
  403. package/dist/migrate/framework/builtins.js +0 -52
  404. package/dist/migrate/framework/builtins.js.map +0 -1
  405. package/dist/migrate/framework/commands.d.ts +0 -20
  406. package/dist/migrate/framework/commands.js +0 -58
  407. package/dist/migrate/framework/commands.js.map +0 -1
  408. package/dist/migrate/framework/custom.d.ts +0 -12
  409. package/dist/migrate/framework/custom.js +0 -96
  410. package/dist/migrate/framework/custom.js.map +0 -1
  411. package/dist/migrate/framework/orchestrator.d.ts +0 -113
  412. package/dist/migrate/framework/orchestrator.js +0 -532
  413. package/dist/migrate/framework/orchestrator.js.map +0 -1
  414. package/dist/migrate/framework/plugin.d.ts +0 -167
  415. package/dist/migrate/framework/plugin.js +0 -3
  416. package/dist/migrate/framework/plugin.js.map +0 -1
  417. package/dist/migrate/framework/registry.d.ts +0 -11
  418. package/dist/migrate/framework/registry.js +0 -44
  419. package/dist/migrate/framework/registry.js.map +0 -1
  420. package/dist/migrate/framework/report.d.ts +0 -17
  421. package/dist/migrate/framework/report.js +0 -103
  422. package/dist/migrate/framework/report.js.map +0 -1
  423. package/dist/migrate/frameworks/plugins.d.ts +0 -29
  424. package/dist/migrate/frameworks/plugins.js +0 -402
  425. package/dist/migrate/frameworks/plugins.js.map +0 -1
  426. package/dist/migrate/frameworks/report.d.ts +0 -92
  427. package/dist/migrate/frameworks/report.js +0 -207
  428. package/dist/migrate/frameworks/report.js.map +0 -1
  429. package/dist/migrate/frameworks/translate-js.d.ts +0 -5
  430. package/dist/migrate/frameworks/translate-js.js +0 -503
  431. package/dist/migrate/frameworks/translate-js.js.map +0 -1
  432. package/dist/migrate/frameworks/translate-rails-django.d.ts +0 -3
  433. package/dist/migrate/frameworks/translate-rails-django.js +0 -1391
  434. package/dist/migrate/frameworks/translate-rails-django.js.map +0 -1
  435. package/dist/migrate/frontegg/plugin.d.ts +0 -2
  436. package/dist/migrate/frontegg/plugin.js +0 -78
  437. package/dist/migrate/frontegg/plugin.js.map +0 -1
  438. package/dist/migrate/fusionauth/plugin.d.ts +0 -2
  439. package/dist/migrate/fusionauth/plugin.js +0 -109
  440. package/dist/migrate/fusionauth/plugin.js.map +0 -1
  441. package/dist/migrate/hanko/plugin.d.ts +0 -2
  442. package/dist/migrate/hanko/plugin.js +0 -100
  443. package/dist/migrate/hanko/plugin.js.map +0 -1
  444. package/dist/migrate/keycloak/plugin.d.ts +0 -2
  445. package/dist/migrate/keycloak/plugin.js +0 -148
  446. package/dist/migrate/keycloak/plugin.js.map +0 -1
  447. package/dist/migrate/kinde/plugin.d.ts +0 -2
  448. package/dist/migrate/kinde/plugin.js +0 -105
  449. package/dist/migrate/kinde/plugin.js.map +0 -1
  450. package/dist/migrate/ldap/plugin.d.ts +0 -2
  451. package/dist/migrate/ldap/plugin.js +0 -73
  452. package/dist/migrate/ldap/plugin.js.map +0 -1
  453. package/dist/migrate/logto/plugin.d.ts +0 -2
  454. package/dist/migrate/logto/plugin.js +0 -131
  455. package/dist/migrate/logto/plugin.js.map +0 -1
  456. package/dist/migrate/magic/plugin.d.ts +0 -2
  457. package/dist/migrate/magic/plugin.js +0 -56
  458. package/dist/migrate/magic/plugin.js.map +0 -1
  459. package/dist/migrate/nhost/plugin.d.ts +0 -2
  460. package/dist/migrate/nhost/plugin.js +0 -115
  461. package/dist/migrate/nhost/plugin.js.map +0 -1
  462. package/dist/migrate/oidc/plugin.d.ts +0 -2
  463. package/dist/migrate/oidc/plugin.js +0 -73
  464. package/dist/migrate/oidc/plugin.js.map +0 -1
  465. package/dist/migrate/okta/plugin.d.ts +0 -2
  466. package/dist/migrate/okta/plugin.js +0 -105
  467. package/dist/migrate/okta/plugin.js.map +0 -1
  468. package/dist/migrate/onelogin/plugin.d.ts +0 -2
  469. package/dist/migrate/onelogin/plugin.js +0 -61
  470. package/dist/migrate/onelogin/plugin.js.map +0 -1
  471. package/dist/migrate/ory/plugin.d.ts +0 -2
  472. package/dist/migrate/ory/plugin.js +0 -186
  473. package/dist/migrate/ory/plugin.js.map +0 -1
  474. package/dist/migrate/ping-identity/plugin.d.ts +0 -2
  475. package/dist/migrate/ping-identity/plugin.js +0 -100
  476. package/dist/migrate/ping-identity/plugin.js.map +0 -1
  477. package/dist/migrate/pocketbase/plugin.d.ts +0 -2
  478. package/dist/migrate/pocketbase/plugin.js +0 -99
  479. package/dist/migrate/pocketbase/plugin.js.map +0 -1
  480. package/dist/migrate/propelauth/plugin.d.ts +0 -2
  481. package/dist/migrate/propelauth/plugin.js +0 -65
  482. package/dist/migrate/propelauth/plugin.js.map +0 -1
  483. package/dist/migrate/saml/plugin.d.ts +0 -2
  484. package/dist/migrate/saml/plugin.js +0 -79
  485. package/dist/migrate/saml/plugin.js.map +0 -1
  486. package/dist/migrate/stytch/plugin.d.ts +0 -2
  487. package/dist/migrate/stytch/plugin.js +0 -97
  488. package/dist/migrate/stytch/plugin.js.map +0 -1
  489. package/dist/migrate/supabase/plugin.d.ts +0 -2
  490. package/dist/migrate/supabase/plugin.js +0 -149
  491. package/dist/migrate/supabase/plugin.js.map +0 -1
  492. package/dist/migrate/supertokens/plugin.d.ts +0 -2
  493. package/dist/migrate/supertokens/plugin.js +0 -114
  494. package/dist/migrate/supertokens/plugin.js.map +0 -1
  495. package/dist/migrate/user-table/plugin.d.ts +0 -2
  496. package/dist/migrate/user-table/plugin.js +0 -62
  497. package/dist/migrate/user-table/plugin.js.map +0 -1
  498. package/dist/migrate/userfront/plugin.d.ts +0 -2
  499. package/dist/migrate/userfront/plugin.js +0 -60
  500. package/dist/migrate/userfront/plugin.js.map +0 -1
  501. package/dist/migrate/workos/plugin.d.ts +0 -2
  502. package/dist/migrate/workos/plugin.js +0 -81
  503. package/dist/migrate/workos/plugin.js.map +0 -1
  504. package/dist/migrate/zitadel/plugin.d.ts +0 -2
  505. package/dist/migrate/zitadel/plugin.js +0 -114
  506. package/dist/migrate/zitadel/plugin.js.map +0 -1
  507. package/dist/output.d.ts +0 -41
  508. package/dist/output.js +0 -72
  509. package/dist/output.js.map +0 -1
  510. package/dist/project.d.ts +0 -64
  511. package/dist/project.js +0 -86
  512. package/dist/project.js.map +0 -1
  513. package/dist/prompt.d.ts +0 -15
  514. package/dist/prompt.js +0 -46
  515. package/dist/prompt.js.map +0 -1
  516. package/dist/run.d.ts +0 -12
  517. package/dist/run.js +0 -157
  518. package/dist/run.js.map +0 -1
  519. package/dist/secrets.d.ts +0 -41
  520. package/dist/secrets.js +0 -142
  521. package/dist/secrets.js.map +0 -1
  522. package/dist/serialize.d.ts +0 -30
  523. package/dist/serialize.js +0 -131
  524. package/dist/serialize.js.map +0 -1
  525. package/dist/version.d.ts +0 -7
  526. package/dist/version.js +0 -21
  527. package/dist/version.js.map +0 -1
@@ -1,218 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEVISE_EXPORT_SCRIPT = void 0;
4
- exports.exportDevise = exportDevise;
5
- const tables_1 = require("./tables");
6
- function exportDevise(tables, options = {}) {
7
- const out = new tables_1.FrameworkExport();
8
- const now = (options.now ?? new Date()).getTime();
9
- const config = tables.rows('devise_config')[0] ?? {};
10
- const pepper = (0, tables_1.text)(config.pepper);
11
- const modules = new Set(String(config.modules ?? '').split(/[\s,]+/).filter(Boolean));
12
- const confirmable = modules.size ? modules.has('confirmable') : undefined;
13
- out.manifest.sourceVersion = (0, tables_1.text)(config.devise_version) ? `devise ${(0, tables_1.text)(config.devise_version)}` : 'devise';
14
- if (pepper)
15
- out.manifest.settings = { pepper_set: true };
16
- const users = tables.find(...(options.usersTable ? [options.usersTable] : ['users', 'user', 'accounts', 'admins']));
17
- if (!users) {
18
- out.warn('No users rows found (run the Rails export script with your Devise model).');
19
- return out;
20
- }
21
- const ids = new Set();
22
- const providers = new Set();
23
- let encryptable = 0;
24
- let mfa = 0;
25
- for (const row of users.rows) {
26
- const id = (0, tables_1.text)((0, tables_1.col)(row, 'id'));
27
- const email = (0, tables_1.text)((0, tables_1.col)(row, 'email'))?.toLowerCase();
28
- if (!id || !email) {
29
- out.omit('user', 'row without an id or email');
30
- continue;
31
- }
32
- const encrypted = (0, tables_1.text)((0, tables_1.col)(row, 'encrypted_password'));
33
- let password;
34
- if (encrypted && /^\$2[aby]\$\d{2}\$[./A-Za-z0-9]{53}$/.test(encrypted)) {
35
- password = pepper ? { algorithm: 'bcrypt_pepper', hash: encrypted, params: { pepper } } : { algorithm: 'bcrypt', hash: encrypted };
36
- }
37
- else if (encrypted)
38
- encryptable++;
39
- const confirmedAt = (0, tables_1.col)(row, 'confirmed_at');
40
- const verified = confirmable === false || (confirmable === undefined && !('confirmed_at' in row))
41
- ? options.trustUnconfirmable === true
42
- : Boolean(confirmedAt);
43
- const name = (0, tables_1.text)((0, tables_1.col)(row, 'name', 'full_name'));
44
- const roles = new Set();
45
- if ((0, tables_1.bool)((0, tables_1.col)(row, 'admin', 'is_admin')))
46
- roles.add('admin');
47
- const role = (0, tables_1.text)((0, tables_1.col)(row, 'role'));
48
- if (role)
49
- roles.add(role);
50
- ids.add(id);
51
- out.add('user', {
52
- id,
53
- emails: [{ email, verified, primary: true }],
54
- username: (0, tables_1.text)((0, tables_1.col)(row, 'username')),
55
- name,
56
- first_name: (0, tables_1.text)((0, tables_1.col)(row, 'first_name')) ?? (0, tables_1.splitName)(name).first_name,
57
- last_name: (0, tables_1.text)((0, tables_1.col)(row, 'last_name')) ?? (0, tables_1.splitName)(name).last_name,
58
- password,
59
- locked: Boolean((0, tables_1.col)(row, 'locked_at')) || undefined,
60
- roles: roles.size ? [...roles] : undefined,
61
- created_at: (0, tables_1.time)((0, tables_1.col)(row, 'created_at')),
62
- last_sign_in_at: (0, tables_1.time)((0, tables_1.col)(row, 'current_sign_in_at', 'last_sign_in_at')),
63
- private_metadata: (0, tables_1.text)((0, tables_1.col)(row, 'unconfirmed_email')) ? { unconfirmed_email: (0, tables_1.text)((0, tables_1.col)(row, 'unconfirmed_email')) } : undefined,
64
- });
65
- // omniauth's single-provider convention: provider + uid columns on the user.
66
- const provider = (0, tables_1.text)((0, tables_1.col)(row, 'provider'));
67
- const uid = (0, tables_1.text)((0, tables_1.col)(row, 'uid'));
68
- if (provider && uid && provider !== 'email') {
69
- providers.add(provider);
70
- out.add('identity', { user_id: id, provider, provider_user_id: uid, kind: 'oauth' });
71
- }
72
- // devise-two-factor.
73
- const secret = (0, tables_1.text)((0, tables_1.col)(row, 'otp_secret'));
74
- if (secret && ((0, tables_1.bool)((0, tables_1.col)(row, 'otp_required_for_login')) || !('otp_required_for_login' in row))) {
75
- mfa++;
76
- out.add('mfa_factor', { user_id: id, type: 'totp', secret_base32: secret.toUpperCase(), digits: 6, period: 30, algorithm: 'SHA1', verified: true });
77
- const codes = backupCodes((0, tables_1.col)(row, 'otp_backup_codes'));
78
- if (codes.length) {
79
- out.add('mfa_factor', {
80
- user_id: id,
81
- type: 'backup_codes',
82
- backup_code_hashes: codes.map((hash) => pepper ? { algorithm: 'bcrypt_pepper', hash, params: { pepper } } : { algorithm: 'bcrypt', hash }),
83
- });
84
- }
85
- }
86
- }
87
- if (encryptable)
88
- out.warn(`${encryptable} encrypted_password value(s) are not bcrypt (devise-encryptable): those users reset their password or migrate lazily.`);
89
- if (mfa)
90
- out.warn(`${mfa} devise-two-factor TOTP secret(s) carried over; authenticator apps keep working.`);
91
- for (const row of tables.rows('identities', 'authentications', 'user_identities', 'omniauth_identities')) {
92
- const userId = (0, tables_1.text)((0, tables_1.col)(row, 'user_id'));
93
- const provider = (0, tables_1.text)((0, tables_1.col)(row, 'provider'));
94
- const uid = (0, tables_1.text)((0, tables_1.col)(row, 'uid', 'provider_uid'));
95
- if (!userId || !provider || !uid || !ids.has(userId)) {
96
- out.omit('identity', 'identity row without a known user, provider or uid');
97
- continue;
98
- }
99
- providers.add(provider);
100
- out.add('identity', { user_id: userId, provider, provider_user_id: uid, kind: 'oauth', email: (0, tables_1.text)((0, tables_1.col)(row, 'email')) });
101
- }
102
- out.manifest.providers = [...providers].sort();
103
- // rolify: roles(id, name, resource_type, resource_id) + users_roles(user_id, role_id). Global roles only.
104
- const roleNames = new Map();
105
- for (const r of tables.rows('roles')) {
106
- const rid = (0, tables_1.text)((0, tables_1.col)(r, 'id'));
107
- const name = (0, tables_1.text)((0, tables_1.col)(r, 'name'));
108
- if (rid && name && !(0, tables_1.text)((0, tables_1.col)(r, 'resource_type')))
109
- roleNames.set(rid, name);
110
- }
111
- if (roleNames.size) {
112
- for (const name of new Set(roleNames.values()))
113
- out.add('role', { key: name, name, scope: 'app' });
114
- const extra = new Map();
115
- for (const ur of tables.rows('users_roles')) {
116
- const uid = (0, tables_1.text)((0, tables_1.col)(ur, 'user_id'));
117
- const name = roleNames.get((0, tables_1.text)((0, tables_1.col)(ur, 'role_id')) ?? '');
118
- if (!uid || !name || !ids.has(uid))
119
- continue;
120
- const set = extra.get(uid) ?? new Set();
121
- set.add(name);
122
- extra.set(uid, set);
123
- }
124
- for (const user of out.list('user')) {
125
- const more = extra.get(user.id);
126
- if (more)
127
- user.roles = [...new Set([...(user.roles ?? []), ...more])];
128
- }
129
- const scoped = tables.rows('roles').length - roleNames.size;
130
- if (scoped > 0)
131
- out.warn(`${scoped} rolify role(s) scoped to a resource were not carried: model them as Atlas organization roles or permissions.`);
132
- }
133
- // activerecord-session_store rows, as the export script decoded them.
134
- if (options.sessions !== false) {
135
- for (const row of tables.rows('sessions')) {
136
- const raw = (0, tables_1.text)((0, tables_1.col)(row, 'session_id'));
137
- const userId = (0, tables_1.text)((0, tables_1.col)(row, 'user_id'));
138
- const updated = (0, tables_1.timeMs)((0, tables_1.col)(row, 'expires_at')) ?? ((0, tables_1.timeMs)((0, tables_1.col)(row, 'updated_at')) !== undefined ? (0, tables_1.timeMs)((0, tables_1.col)(row, 'updated_at')) + Number(config.session_ttl_seconds ?? 1209600) * 1000 : undefined);
139
- if (!raw || !userId || !ids.has(userId) || updated === undefined) {
140
- out.omit('session', 'session row without an id, a known user or an expiry');
141
- continue;
142
- }
143
- if (updated <= now) {
144
- out.omit('session', 'expired');
145
- continue;
146
- }
147
- // Rack stores the PRIVATE id `2::<sha256 hex of the cookie's public id>`.
148
- const tokenHash = /^2::[0-9a-f]{64}$/.test(raw) ? raw.slice(3) : (0, tables_1.sha256Hex)(raw);
149
- out.add('session', { id: tokenHash.slice(0, 32), user_id: userId, token_hash: tokenHash, expires_at: new Date(updated).toISOString() });
150
- }
151
- }
152
- out.manifest.settings = {
153
- ...(out.manifest.settings ?? {}),
154
- session_store: (0, tables_1.text)(config.session_store) ?? 'cookie_store',
155
- session_cookie: (0, tables_1.text)(config.session_key) ?? null,
156
- };
157
- return out;
158
- }
159
- function backupCodes(v) {
160
- const list = Array.isArray(v) ? v : typeof v === 'string' ? (v.trim().startsWith('[') ? JSON.parse(v) : v.replace(/^\{|\}$/g, '').split(',')) : [];
161
- return list
162
- .map((c) => String(c).replace(/^"|"$/g, '').trim())
163
- .filter((c) => /^\$2[aby]\$\d{2}\$[./A-Za-z0-9]{53}$/.test(c));
164
- }
165
- /**
166
- * The Rails runner script that streams a Devise app's rows as NDJSON
167
- * (`{"table": …, "row": {…}}`), straight into `atlas migrate export devise
168
- * --file -`, so decrypted secrets only ever travel through the pipe:
169
- *
170
- * bin/rails runner atlas_export.rb | npx atlas migrate devise export --file -
171
- */
172
- exports.DEVISE_EXPORT_SCRIPT = `# Atlas export for a Devise app. Run: bin/rails runner atlas_export.rb [ModelName]
173
- require "json"
174
-
175
- model = (ARGV[0] || "User").constantize
176
- emit = ->(table, row) { $stdout.puts({ table: table, row: row }.to_json) }
177
-
178
- session_key = Rails.application.config.session_options[:key] rescue nil
179
- emit.call("devise_config", {
180
- devise_version: Devise::VERSION,
181
- pepper: Devise.pepper,
182
- stretches: Devise.stretches,
183
- modules: model.devise_modules.join(","),
184
- session_store: Rails.application.config.session_store.to_s.demodulize.underscore,
185
- session_key: session_key,
186
- session_ttl_seconds: (Rails.application.config.session_options[:expire_after] || 1209600).to_i,
187
- })
188
-
189
- attrs = model.column_names - %w[encrypted_otp_secret encrypted_otp_secret_iv encrypted_otp_secret_salt]
190
- model.find_each(batch_size: 1000) do |u|
191
- row = attrs.index_with { |c| u.read_attribute(c) }
192
- # devise-two-factor: read the secret through the model so Rails decrypts it.
193
- row["otp_secret"] = u.otp_secret if u.respond_to?(:otp_secret)
194
- emit.call(model.table_name, row)
195
- end
196
-
197
- %w[Identity Authentication].each do |name|
198
- next unless Object.const_defined?(name)
199
- klass = name.constantize
200
- next unless klass < ActiveRecord::Base
201
- klass.find_each { |i| emit.call(klass.table_name, i.attributes.slice("user_id", "provider", "uid", "email")) }
202
- end
203
-
204
- if Object.const_defined?(:Role) && ActiveRecord::Base.connection.table_exists?("users_roles")
205
- Role.find_each { |r| emit.call("roles", r.attributes.slice("id", "name", "resource_type", "resource_id")) }
206
- ActiveRecord::Base.connection.select_all("SELECT user_id, role_id FROM users_roles").each { |r| emit.call("users_roles", r) }
207
- end
208
-
209
- if defined?(ActiveRecord::SessionStore::Session)
210
- scope = "warden.user.#{Devise::Mapping.find_scope!(model)}.key"
211
- ActiveRecord::SessionStore::Session.find_each do |s|
212
- entry = s.data[scope] rescue nil
213
- next unless entry
214
- emit.call("sessions", { session_id: s.session_id, user_id: Array(entry[0]).first, updated_at: s.updated_at })
215
- end
216
- end
217
- `;
218
- //# sourceMappingURL=devise.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"devise.js","sourceRoot":"","sources":["../../../../src/migrate/export/frameworks/devise.ts"],"names":[],"mappings":"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"}
@@ -1,45 +0,0 @@
1
- import { FrameworkExport, type Row, type Tables } from './tables';
2
- /**
3
- * Django (django.contrib.auth, django-allauth) → canonical records, from
4
- * `manage.py dumpdata` JSON (`[{ "model", "pk", "fields" }]`) — or the export
5
- * script ({@link DJANGO_EXPORT_SCRIPT}), which runs the same dump inside the
6
- * app and adds what only the app's own code can produce: allauth TOTP secrets
7
- * through the MFA adapter's `decrypt`, and the unused recovery codes.
8
- *
9
- * auth.user (or your AUTH_USER_MODEL) → user: the `password` column verbatim
10
- * (pbkdf2_sha256 / argon2 / bcrypt_sha256 / scrypt / legacy md5+sha1 —
11
- * every Django hasher Atlas verifies); `!`-prefixed unusable passwords are
12
- * dropped; is_active=false → banned; is_staff / is_superuser and groups →
13
- * app roles
14
- * account.emailaddress → every address with its verified / primary flags
15
- * socialaccount.socialaccount (+ socialtoken) → identity
16
- * mfa.authenticator → totp, recovery codes (script), WebAuthn passkeys
17
- * sessions.session (database backend) → session (sha256 of the session key)
18
- */
19
- export interface DjangoExportOptions {
20
- /** `app_label.model` of AUTH_USER_MODEL (detected: a model with a `password` field and `username` or `email`). */
21
- userModel?: string;
22
- /** The WebAuthn RP id allauth registered passkeys against. */
23
- rpId?: string;
24
- oauthTokens?: boolean;
25
- sessions?: boolean;
26
- /** Treat users.email as verified when allauth is absent. Default false. */
27
- trustEmails?: boolean;
28
- now?: Date;
29
- }
30
- export declare function exportDjango(tables: Tables, options?: DjangoExportOptions): FrameworkExport;
31
- /**
32
- * Decode `django_session.session_data` without the SECRET_KEY (the rows come
33
- * from the app's own database): Django ≥ 3.1 `signing.dumps` (`payload:ts:sig`,
34
- * payload zlib-compressed when it starts with `.`), and the pre-3.1 form,
35
- * base64(`<hash>:<json>`).
36
- */
37
- export declare function decodeSessionData(raw: string): Row | null;
38
- /**
39
- * The export script, run inside the Django app so allauth's own code decrypts
40
- * TOTP secrets and lists the unused recovery codes; it streams NDJSON straight
41
- * into the CLI:
42
- *
43
- * python manage.py shell < atlas_export.py | npx atlas migrate django export --file -
44
- */
45
- export declare const DJANGO_EXPORT_SCRIPT = "# Atlas export for a Django app (django.contrib.auth + django-allauth).\nimport io, json, sys\nfrom django.apps import apps\nfrom django.conf import settings\nfrom django.core.management import call_command\n\ndef emit(table, row):\n sys.stdout.write(json.dumps({\"table\": table, \"row\": row}, default=str) + \"\\n\")\n\nlabels = [settings.AUTH_USER_MODEL, \"auth.group\", \"auth.permission\"]\nfor label in [\"account.emailaddress\", \"socialaccount.socialaccount\", \"socialaccount.socialtoken\", \"mfa.authenticator\", \"sessions.session\"]:\n try:\n apps.get_model(label)\n labels.append(label)\n except (LookupError, ValueError):\n pass\n\nbuf = io.StringIO()\ncall_command(\"dumpdata\", *labels, format=\"json\", stdout=buf)\nfor obj in json.loads(buf.getvalue()):\n emit(\"dumpdata\", obj)\n\ntry:\n from allauth.mfa.models import Authenticator\n from allauth.mfa.adapter import get_adapter\nexcept ImportError:\n Authenticator = None\n\nif Authenticator is not None:\n try:\n from allauth.mfa.recovery_codes.internal.auth import RecoveryCodes\n except ImportError:\n try:\n from allauth.mfa.recovery_codes import RecoveryCodes\n except ImportError:\n RecoveryCodes = None\n adapter = get_adapter()\n for a in Authenticator.objects.all():\n if a.type == \"totp\":\n emit(\"mfa_secrets\", {\"authenticator_id\": a.pk, \"secret\": adapter.decrypt(a.data[\"secret\"])})\n elif a.type == \"recovery_codes\" and RecoveryCodes is not None:\n emit(\"mfa_secrets\", {\"authenticator_id\": a.pk, \"codes\": RecoveryCodes(a).get_unused_codes()})\n";
@@ -1,315 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DJANGO_EXPORT_SCRIPT = void 0;
4
- exports.exportDjango = exportDjango;
5
- exports.decodeSessionData = decodeSessionData;
6
- const node_zlib_1 = require("node:zlib");
7
- const tables_1 = require("./tables");
8
- const webauthn_1 = require("./webauthn");
9
- function fixtures(tables) {
10
- const byModel = new Map();
11
- for (const name of tables.names()) {
12
- for (const row of tables.rows(name)) {
13
- const model = (0, tables_1.text)(row.model)?.toLowerCase();
14
- const fields = (0, tables_1.json)(row.fields);
15
- if (!model || !fields)
16
- continue;
17
- const list = byModel.get(model) ?? [];
18
- list.push({ model, pk: row.pk, fields });
19
- byModel.set(model, list);
20
- }
21
- }
22
- return byModel;
23
- }
24
- function exportDjango(tables, options = {}) {
25
- const out = new tables_1.FrameworkExport();
26
- const now = (options.now ?? new Date()).getTime();
27
- const fx = fixtures(tables);
28
- const userModel = options.userModel?.toLowerCase() ??
29
- (fx.has('auth.user')
30
- ? 'auth.user'
31
- : [...fx.keys()].find((m) => {
32
- const f = fx.get(m)[0].fields;
33
- return 'password' in f && ('username' in f || 'email' in f) && 'last_login' in f;
34
- }));
35
- if (!userModel || !fx.has(userModel)) {
36
- out.warn('No user model rows found: dump auth.user (or your AUTH_USER_MODEL) with manage.py dumpdata.');
37
- return out;
38
- }
39
- // Groups → app roles (permission codenames when auth.permission was dumped).
40
- const permissions = new Map();
41
- for (const p of fx.get('auth.permission') ?? []) {
42
- const codename = (0, tables_1.text)(p.fields.codename);
43
- if (codename)
44
- permissions.set(String(p.pk), codename);
45
- }
46
- const groups = new Map();
47
- for (const g of fx.get('auth.group') ?? []) {
48
- const name = (0, tables_1.text)(g.fields.name);
49
- if (!name)
50
- continue;
51
- groups.set(String(g.pk), name);
52
- const perms = (Array.isArray(g.fields.permissions) ? g.fields.permissions : [])
53
- .map((pk) => (Array.isArray(pk) ? (0, tables_1.text)(pk[0]) : permissions.get(String(pk))))
54
- .filter((p) => Boolean(p));
55
- out.add('role', { key: name, name, scope: 'app', permissions: perms.length ? perms : undefined });
56
- }
57
- const emails = new Map();
58
- for (const e of fx.get('account.emailaddress') ?? []) {
59
- const uid = (0, tables_1.text)(e.fields.user);
60
- const email = (0, tables_1.text)(e.fields.email)?.toLowerCase();
61
- if (!uid || !email)
62
- continue;
63
- const list = emails.get(uid) ?? [];
64
- list.push({ email, verified: (0, tables_1.bool)(e.fields.verified), primary: (0, tables_1.bool)(e.fields.primary) });
65
- emails.set(uid, list);
66
- }
67
- const allauth = fx.has('account.emailaddress');
68
- const ids = new Set();
69
- let unusable = 0;
70
- for (const u of fx.get(userModel)) {
71
- const id = (0, tables_1.text)(u.pk);
72
- if (!id)
73
- continue;
74
- const f = u.fields;
75
- const email = (0, tables_1.text)(f.email)?.toLowerCase();
76
- const list = emails.get(id) ?? (email ? [{ email, verified: options.trustEmails === true, primary: true }] : []);
77
- const username = (0, tables_1.text)(f.username);
78
- if (!list.length && !username) {
79
- out.omit('user', 'no email or username');
80
- continue;
81
- }
82
- const digest = (0, tables_1.text)(f.password);
83
- const usable = Boolean(digest) && !digest.startsWith('!');
84
- if (!usable && digest)
85
- unusable++;
86
- const roles = (Array.isArray(f.groups) ? f.groups : [])
87
- .map((g) => (Array.isArray(g) ? (0, tables_1.text)(g[0]) : groups.get(String(g))))
88
- .filter((g) => Boolean(g));
89
- if ((0, tables_1.bool)(f.is_superuser))
90
- roles.push('superuser');
91
- if ((0, tables_1.bool)(f.is_staff))
92
- roles.push('staff');
93
- const active = f.is_active === undefined ? true : (0, tables_1.bool)(f.is_active);
94
- ids.add(id);
95
- out.add('user', {
96
- id,
97
- emails: list,
98
- username,
99
- first_name: (0, tables_1.text)(f.first_name),
100
- last_name: (0, tables_1.text)(f.last_name),
101
- password: usable ? { algorithm: 'auto', hash: digest } : undefined,
102
- roles: roles.length ? [...new Set(roles)] : undefined,
103
- banned: active ? undefined : true,
104
- ban_reason: active ? undefined : 'is_active was false in Django',
105
- created_at: (0, tables_1.time)(f.date_joined),
106
- last_sign_in_at: (0, tables_1.time)(f.last_login),
107
- });
108
- }
109
- if (unusable)
110
- out.warn(`${unusable} user(s) had an unusable password (social-only or set_unusable_password): they sign in through their identities.`);
111
- if (!allauth)
112
- out.warn('django-allauth email addresses were not in the dump: email verification state comes from --trust-emails.');
113
- for (const key of ['superuser', 'staff']) {
114
- const used = out.list('user').some((u) => u.roles?.includes(key));
115
- if (used && !out.list('role').some((r) => r.key === key))
116
- out.add('role', { key, name: key, scope: 'app' });
117
- }
118
- // Social accounts (+ tokens).
119
- const tokens = new Map();
120
- for (const t of fx.get('socialaccount.socialtoken') ?? []) {
121
- const account = (0, tables_1.text)(t.fields.account);
122
- if (account)
123
- tokens.set(account, t.fields);
124
- }
125
- const providers = new Set();
126
- for (const s of fx.get('socialaccount.socialaccount') ?? []) {
127
- const uid = (0, tables_1.text)(s.fields.user);
128
- const provider = (0, tables_1.text)(s.fields.provider);
129
- const subject = (0, tables_1.text)(s.fields.uid);
130
- if (!uid || !provider || !subject || !ids.has(uid)) {
131
- out.omit('identity', 'social account without a known user, provider or uid');
132
- continue;
133
- }
134
- providers.add(provider);
135
- const token = tokens.get(String(s.pk));
136
- const extra = (0, tables_1.json)(s.fields.extra_data);
137
- out.add('identity', {
138
- user_id: uid,
139
- provider,
140
- provider_user_id: subject,
141
- kind: provider === 'openid_connect' || provider === 'saml' ? (provider === 'saml' ? 'saml' : 'oidc') : 'oauth',
142
- email: (0, tables_1.text)(extra?.email),
143
- profile: extra,
144
- ...(options.oauthTokens && token
145
- ? { access_token: (0, tables_1.text)(token.token), refresh_token: (0, tables_1.text)(token.token_secret), expires_at: (0, tables_1.time)(token.expires_at) }
146
- : {}),
147
- });
148
- }
149
- out.manifest.providers = [...providers].sort();
150
- // allauth MFA. The script's decrypted extras win over the dump's raw data.
151
- const extras = tables.rows('mfa_secrets');
152
- const extraBy = new Map(extras.map((r) => [`${(0, tables_1.text)(r.authenticator_id)}`, r]));
153
- const rawPasskeys = [];
154
- for (const a of fx.get('mfa.authenticator') ?? []) {
155
- const uid = (0, tables_1.text)(a.fields.user);
156
- const type = (0, tables_1.text)(a.fields.type);
157
- const data = (0, tables_1.json)(a.fields.data) ?? {};
158
- if (!uid || !ids.has(uid))
159
- continue;
160
- const extra = extraBy.get(String(a.pk));
161
- if (type === 'totp') {
162
- const secret = (0, tables_1.text)(extra?.secret) ?? (0, tables_1.text)(data.secret);
163
- if (!secret || !/^[A-Z2-7]+=*$/i.test(secret)) {
164
- out.omit('mfa_factor', 'TOTP secret encrypted by a custom MFA adapter: run the export script so the adapter decrypts it');
165
- continue;
166
- }
167
- out.add('mfa_factor', { user_id: uid, type: 'totp', secret_base32: secret.toUpperCase(), digits: 6, period: 30, algorithm: 'SHA1', verified: true, created_at: (0, tables_1.time)(a.fields.created_at) });
168
- }
169
- else if (type === 'recovery_codes') {
170
- const codes = Array.isArray(extra?.codes) ? extra.codes.map(String) : [];
171
- if (!codes.length) {
172
- out.omit('mfa_factor', 'recovery codes are derived from an encrypted seed: run the export script to carry the unused ones');
173
- continue;
174
- }
175
- out.add('mfa_factor', { user_id: uid, type: 'backup_codes', backup_codes: codes });
176
- }
177
- else if (type === 'webauthn') {
178
- rawPasskeys.push(a);
179
- }
180
- }
181
- if (rawPasskeys.length && !options.rpId) {
182
- out.omit('passkey', 'no RP id given (--rp-id): a passkey only works on the domain it was registered for', rawPasskeys.length);
183
- }
184
- for (const a of options.rpId ? rawPasskeys : []) {
185
- const data = (0, tables_1.json)(a.fields.data) ?? {};
186
- const credential = (0, tables_1.json)(data.credential);
187
- const response = (0, tables_1.json)(credential?.response);
188
- const parsed = typeof response?.attestationObject === 'string' ? (0, webauthn_1.parseAttestationObject)(response.attestationObject) : null;
189
- if (!parsed) {
190
- out.omit('passkey', 'WebAuthn authenticator whose registration response could not be read');
191
- continue;
192
- }
193
- out.add('passkey', {
194
- user_id: (0, tables_1.text)(a.fields.user),
195
- credential_id: parsed.credentialId.toString('base64url'),
196
- public_key: parsed.publicKey.toString('base64url'),
197
- sign_count: parsed.signCount,
198
- aaguid: parsed.aaguid,
199
- backed_up: parsed.backedUp,
200
- transports: Array.isArray(response?.transports) ? response.transports.map(String) : undefined,
201
- rp_id: options.rpId,
202
- name: (0, tables_1.text)(data.name),
203
- created_at: (0, tables_1.time)(a.fields.created_at),
204
- });
205
- }
206
- if (options.rpId)
207
- out.manifest.rpId = options.rpId;
208
- // Database-backed sessions.
209
- if (options.sessions !== false) {
210
- for (const s of fx.get('sessions.session') ?? []) {
211
- const key = (0, tables_1.text)(s.pk);
212
- const expires = (0, tables_1.timeMs)(s.fields.expire_date);
213
- const data = decodeSessionData(String(s.fields.session_data ?? ''));
214
- const uid = (0, tables_1.text)(data?._auth_user_id);
215
- if (!key || expires === undefined || !data) {
216
- out.omit('session', 'session row that could not be decoded');
217
- continue;
218
- }
219
- if (!uid) {
220
- out.omit('session', 'anonymous session');
221
- continue;
222
- }
223
- if (!ids.has(uid)) {
224
- out.omit('session', 'session of a user not in the export');
225
- continue;
226
- }
227
- if (expires <= now) {
228
- out.omit('session', 'expired');
229
- continue;
230
- }
231
- out.add('session', { id: (0, tables_1.sha256Hex)(key).slice(0, 32), user_id: uid, token_hash: (0, tables_1.sha256Hex)(key), expires_at: new Date(expires).toISOString() });
232
- }
233
- }
234
- out.manifest.settings = { session_cookie: 'sessionid' };
235
- return out;
236
- }
237
- /**
238
- * Decode `django_session.session_data` without the SECRET_KEY (the rows come
239
- * from the app's own database): Django ≥ 3.1 `signing.dumps` (`payload:ts:sig`,
240
- * payload zlib-compressed when it starts with `.`), and the pre-3.1 form,
241
- * base64(`<hash>:<json>`).
242
- */
243
- function decodeSessionData(raw) {
244
- const value = raw.trim();
245
- if (!value)
246
- return null;
247
- try {
248
- if (value.split(':').length === 3) {
249
- const payload = value.split(':')[0];
250
- const compressed = payload.startsWith('.');
251
- const bytes = Buffer.from(compressed ? payload.slice(1) : payload, 'base64url');
252
- const parsed = JSON.parse((compressed ? (0, node_zlib_1.inflateSync)(bytes) : bytes).toString('utf8'));
253
- return (0, tables_1.json)(parsed) ?? null;
254
- }
255
- const legacy = Buffer.from(value, 'base64').toString('utf8');
256
- const colon = legacy.indexOf(':');
257
- if (colon < 0)
258
- return null;
259
- return (0, tables_1.json)(legacy.slice(colon + 1)) ?? null;
260
- }
261
- catch {
262
- return null;
263
- }
264
- }
265
- /**
266
- * The export script, run inside the Django app so allauth's own code decrypts
267
- * TOTP secrets and lists the unused recovery codes; it streams NDJSON straight
268
- * into the CLI:
269
- *
270
- * python manage.py shell < atlas_export.py | npx atlas migrate django export --file -
271
- */
272
- exports.DJANGO_EXPORT_SCRIPT = `# Atlas export for a Django app (django.contrib.auth + django-allauth).
273
- import io, json, sys
274
- from django.apps import apps
275
- from django.conf import settings
276
- from django.core.management import call_command
277
-
278
- def emit(table, row):
279
- sys.stdout.write(json.dumps({"table": table, "row": row}, default=str) + "\\n")
280
-
281
- labels = [settings.AUTH_USER_MODEL, "auth.group", "auth.permission"]
282
- for label in ["account.emailaddress", "socialaccount.socialaccount", "socialaccount.socialtoken", "mfa.authenticator", "sessions.session"]:
283
- try:
284
- apps.get_model(label)
285
- labels.append(label)
286
- except (LookupError, ValueError):
287
- pass
288
-
289
- buf = io.StringIO()
290
- call_command("dumpdata", *labels, format="json", stdout=buf)
291
- for obj in json.loads(buf.getvalue()):
292
- emit("dumpdata", obj)
293
-
294
- try:
295
- from allauth.mfa.models import Authenticator
296
- from allauth.mfa.adapter import get_adapter
297
- except ImportError:
298
- Authenticator = None
299
-
300
- if Authenticator is not None:
301
- try:
302
- from allauth.mfa.recovery_codes.internal.auth import RecoveryCodes
303
- except ImportError:
304
- try:
305
- from allauth.mfa.recovery_codes import RecoveryCodes
306
- except ImportError:
307
- RecoveryCodes = None
308
- adapter = get_adapter()
309
- for a in Authenticator.objects.all():
310
- if a.type == "totp":
311
- emit("mfa_secrets", {"authenticator_id": a.pk, "secret": adapter.decrypt(a.data["secret"])})
312
- elif a.type == "recovery_codes" and RecoveryCodes is not None:
313
- emit("mfa_secrets", {"authenticator_id": a.pk, "codes": RecoveryCodes(a).get_unused_codes()})
314
- `;
315
- //# sourceMappingURL=django.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"django.js","sourceRoot":"","sources":["../../../../src/migrate/export/frameworks/django.ts"],"names":[],"mappings":"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"}