@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,360 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readToml = readToml;
4
+ exports.translateNhostConfig = translateNhostConfig;
5
+ const source_lines_1 = require("./source-lines");
6
+ const translate_kit_1 = require("./translate-kit");
7
+ /**
8
+ * Flatten a TOML document to dotted keys → value with its line:
9
+ * `auth.method.emailPassword.passwordMinLength` → { value: 9, line: 42 }.
10
+ * Array-of-tables entries are indexed (`auth.session.accessToken.customClaims.0.key`).
11
+ * Enough TOML for nhost.toml; not a general parser (no dates, no dotted keys
12
+ * with quotes inside headers).
13
+ */
14
+ function readToml(text) {
15
+ const out = new Map();
16
+ const counters = new Map();
17
+ const lines = text.split(/\r?\n/);
18
+ let prefix = '';
19
+ for (let i = 0; i < lines.length; i++) {
20
+ const lineNo = i + 1;
21
+ let raw = stripComment(lines[i]).trim();
22
+ if (!raw)
23
+ continue;
24
+ const aot = /^\[\[\s*([^\]]+?)\s*\]\]$/.exec(raw);
25
+ if (aot) {
26
+ const base = aot[1].trim();
27
+ const n = counters.get(base) ?? 0;
28
+ counters.set(base, n + 1);
29
+ prefix = `${base}.${n}`;
30
+ out.set(prefix, { value: {}, line: lineNo });
31
+ continue;
32
+ }
33
+ const table = /^\[\s*([^\]]+?)\s*\]$/.exec(raw);
34
+ if (table) {
35
+ prefix = table[1].trim();
36
+ out.set(prefix, { value: {}, line: lineNo });
37
+ continue;
38
+ }
39
+ const eq = raw.indexOf('=');
40
+ if (eq < 0)
41
+ continue;
42
+ const key = unquoteKey(raw.slice(0, eq).trim());
43
+ let rhs = raw.slice(eq + 1).trim();
44
+ // Multi-line arrays / inline tables: read on until the brackets balance.
45
+ while (!balanced(rhs) && i + 1 < lines.length) {
46
+ i++;
47
+ rhs += ` ${stripComment(lines[i]).trim()}`;
48
+ }
49
+ raw = rhs;
50
+ let value;
51
+ try {
52
+ value = new ValueParser(raw).parse();
53
+ }
54
+ catch {
55
+ value = raw;
56
+ }
57
+ const path = prefix ? `${prefix}.${key}` : key;
58
+ out.set(path, { value, line: lineNo });
59
+ flattenInto(out, path, value, lineNo);
60
+ }
61
+ return out;
62
+ }
63
+ function flattenInto(out, path, value, line) {
64
+ if (value && typeof value === 'object' && !Array.isArray(value)) {
65
+ for (const [k, v] of Object.entries(value)) {
66
+ out.set(`${path}.${k}`, { value: v, line });
67
+ flattenInto(out, `${path}.${k}`, v, line);
68
+ }
69
+ }
70
+ }
71
+ function unquoteKey(k) {
72
+ return k.replace(/^["'](.*)["']$/, '$1');
73
+ }
74
+ function stripComment(line) {
75
+ let quote = null;
76
+ for (let i = 0; i < line.length; i++) {
77
+ const c = line[i];
78
+ if (quote) {
79
+ if (c === '\\' && quote === '"')
80
+ i++;
81
+ else if (c === quote)
82
+ quote = null;
83
+ }
84
+ else if (c === '"' || c === "'")
85
+ quote = c;
86
+ else if (c === '#')
87
+ return line.slice(0, i);
88
+ }
89
+ return line;
90
+ }
91
+ function balanced(s) {
92
+ let depth = 0;
93
+ let quote = null;
94
+ for (let i = 0; i < s.length; i++) {
95
+ const c = s[i];
96
+ if (quote) {
97
+ if (c === '\\' && quote === '"')
98
+ i++;
99
+ else if (c === quote)
100
+ quote = null;
101
+ }
102
+ else if (c === '"' || c === "'")
103
+ quote = c;
104
+ else if (c === '[' || c === '{')
105
+ depth++;
106
+ else if (c === ']' || c === '}')
107
+ depth--;
108
+ }
109
+ return depth <= 0;
110
+ }
111
+ class ValueParser {
112
+ s;
113
+ i = 0;
114
+ constructor(s) {
115
+ this.s = s;
116
+ }
117
+ parse() {
118
+ const v = this.value();
119
+ this.ws();
120
+ if (this.i < this.s.length)
121
+ throw new Error('trailing');
122
+ return v;
123
+ }
124
+ ws() {
125
+ while (this.i < this.s.length && /[\s,]/.test(this.s[this.i]))
126
+ this.i++;
127
+ }
128
+ value() {
129
+ this.ws();
130
+ const c = this.s[this.i];
131
+ if (c === '"' || c === "'")
132
+ return this.string(c);
133
+ if (c === '[') {
134
+ this.i++;
135
+ const arr = [];
136
+ for (;;) {
137
+ this.ws();
138
+ if (this.s[this.i] === ']') {
139
+ this.i++;
140
+ return arr;
141
+ }
142
+ if (this.i >= this.s.length)
143
+ throw new Error('unterminated array');
144
+ arr.push(this.value());
145
+ }
146
+ }
147
+ if (c === '{') {
148
+ this.i++;
149
+ const obj = {};
150
+ for (;;) {
151
+ this.ws();
152
+ if (this.s[this.i] === '}') {
153
+ this.i++;
154
+ return obj;
155
+ }
156
+ const m = /^("[^"]*"|'[^']*'|[A-Za-z0-9_-]+)\s*=/.exec(this.s.slice(this.i));
157
+ if (!m)
158
+ throw new Error('bad inline table');
159
+ this.i += m[0].length;
160
+ obj[unquoteKey(m[1])] = this.value();
161
+ }
162
+ }
163
+ const m = /^(true|false|[+-]?[0-9][0-9_]*(?:\.[0-9_]+)?(?:[eE][+-]?\d+)?)/.exec(this.s.slice(this.i));
164
+ if (!m)
165
+ throw new Error('bad value');
166
+ this.i += m[0].length;
167
+ if (m[1] === 'true')
168
+ return true;
169
+ if (m[1] === 'false')
170
+ return false;
171
+ return Number(m[1].replace(/_/g, ''));
172
+ }
173
+ string(q) {
174
+ this.i++;
175
+ let out = '';
176
+ while (this.i < this.s.length) {
177
+ const c = this.s[this.i++];
178
+ if (c === q)
179
+ return out;
180
+ if (c === '\\' && q === '"') {
181
+ const e = this.s[this.i++];
182
+ out += e === 'n' ? '\n' : e === 't' ? '\t' : e === 'r' ? '\r' : e;
183
+ }
184
+ else
185
+ out += c;
186
+ }
187
+ throw new Error('unterminated string');
188
+ }
189
+ }
190
+ // ── the translator ──────────────────────────────────────────────────────────
191
+ const SECRET_REF = /^\{\{\s*secrets\.([A-Za-z0-9_]+)\s*\}\}$/;
192
+ function translateNhostConfig(file, opts = {}) {
193
+ const b = new translate_kit_1.ConfigBuilder();
194
+ const toml = readToml(file.text);
195
+ const get = (k) => toml.get(`auth.${k}`);
196
+ const val = (k) => get(k)?.value;
197
+ const put = (status, k, note, atlas) => {
198
+ const at = get(k);
199
+ (0, source_lines_1.addAt)(b, at ? file.path : undefined, at?.line, status, 'auth', `auth.${k}`, note, atlas);
200
+ };
201
+ if (![...toml.keys()].some((k) => k === 'auth' || k.startsWith('auth.'))) {
202
+ b.add('manual', 'auth', '[auth]', `${file.path} has no [auth] section: nothing to translate.`);
203
+ }
204
+ // ── sign-up ──
205
+ if (val('signUp.enabled') === false || val('signUp.disableNewUsers') === true) {
206
+ b.set('signUpMode', 'restricted');
207
+ put('mapped', val('signUp.enabled') === false ? 'signUp.enabled' : 'signUp.disableNewUsers', 'Self sign-up is closed (invitations and the allowlist still work).', 'auth_config.signUpMode');
208
+ }
209
+ if (val('signUp.disableAutoSignup') === true)
210
+ put('differs', 'signUp.disableAutoSignup', 'Nhost does not create accounts on passwordless sign-in; Atlas signs up unknown users from the same flow unless sign-up is restricted.', 'auth_config.signUpMode');
211
+ if (typeof val('signUp.turnstile.secretKey') === 'string')
212
+ put('differs', 'signUp.turnstile.secretKey', 'Turnstile on sign-up: Atlas has its own bot protection (captcha); the Turnstile secret is not copied.', 'auth_config.captcha');
213
+ // ── methods ──
214
+ const emailPassword = get('method.emailPassword');
215
+ if (emailPassword) {
216
+ b.set('strategies.password', true);
217
+ put('mapped', 'method.emailPassword', 'Email + password sign-in. Imported bcrypt hashes verify as they are and are upgraded to Argon2id.', 'auth_config.strategies.password');
218
+ }
219
+ const min = val('method.emailPassword.passwordMinLength');
220
+ if (typeof min === 'number') {
221
+ b.set('passwordPolicy.minLength', Math.max(8, min));
222
+ put(min < 8 ? 'differs' : 'mapped', 'method.emailPassword.passwordMinLength', min < 8 ? `Nhost allows ${min}; Atlas requires at least 8 (existing passwords still sign in).` : `${min} characters minimum.`, 'auth_config.passwordPolicy.minLength');
223
+ }
224
+ if (val('method.emailPassword.hibpEnabled') === true) {
225
+ b.set('passwordPolicy.checkBreaches', true);
226
+ put('mapped', 'method.emailPassword.hibpEnabled', 'Breached passwords (Have I Been Pwned) are rejected.', 'auth_config.passwordPolicy.checkBreaches');
227
+ }
228
+ const verify = val('method.emailPassword.emailVerificationRequired');
229
+ if (typeof verify === 'boolean') {
230
+ b.set('requireEmailVerification', verify);
231
+ put('mapped', 'method.emailPassword.emailVerificationRequired', verify ? 'Email addresses must be verified before sign-in.' : 'Unverified email addresses may sign in.', 'auth_config.requireEmailVerification');
232
+ }
233
+ const flags = [
234
+ ['method.anonymous.enabled', 'strategies.anonymous', 'Anonymous users.'],
235
+ ['method.emailPasswordless.enabled', 'strategies.emailLink', 'Magic links.'],
236
+ ['method.otp.email.enabled', 'strategies.emailCode', 'One-time email codes.'],
237
+ ['method.smsPasswordless.enabled', 'strategies.phoneCode', 'SMS codes (sent through your Atlas SMS settings).'],
238
+ ['method.webauthn.enabled', 'strategies.passkey', 'Security keys / passkeys. Existing keys move with the export when the relying-party id stays the same.'],
239
+ ];
240
+ for (const [k, atlas, note] of flags) {
241
+ if (val(k) === true) {
242
+ b.set(atlas, true);
243
+ put('mapped', k, note, `auth_config.${atlas}`);
244
+ }
245
+ }
246
+ const rpId = val('method.webauthn.relyingParty.id');
247
+ if (typeof rpId === 'string' && rpId)
248
+ put('mapped', 'method.webauthn.relyingParty.id', `Relying party "${rpId}": keep sign-in on this domain (or a parent) so imported passkeys keep working.`, 'auth_config.passkeyPolicy');
249
+ // ── OAuth ──
250
+ for (const [k, entry] of toml) {
251
+ const m = /^auth\.method\.oauth\.([A-Za-z0-9]+)\.enabled$/.exec(k);
252
+ if (!m || entry.value !== true)
253
+ continue;
254
+ const name = m[1];
255
+ const atlas = (0, translate_kit_1.socialKey)(name) ?? (name === 'azuread' || name === 'entraid' ? 'microsoft' : null);
256
+ const clientId = val(`method.oauth.${name}.clientId`);
257
+ const cid = typeof clientId === 'string' && clientId && !SECRET_REF.test(clientId) ? clientId : undefined;
258
+ if (atlas) {
259
+ b.socialProvider({ atlasKey: atlas, vendorName: name, area: 'auth oauth', setting: `auth.method.oauth.${name}`, clientId: cid });
260
+ const last = b.report[b.report.length - 1];
261
+ last.file = file.path;
262
+ last.line = entry.line;
263
+ if (name === 'azuread' || name === 'entraid') {
264
+ const tenant = val(`method.oauth.${name}.tenant`);
265
+ put('differs', `method.oauth.${name}.tenant`, `Microsoft sign-in${typeof tenant === 'string' && tenant ? ` for tenant ${tenant}` : ''}: set the tenant on Atlas's microsoft provider (or add the tenant as an enterprise OIDC connection).`, 'oauth_providers microsoft');
266
+ }
267
+ }
268
+ else {
269
+ put('manual', `method.oauth.${name}.enabled`, `"${name}" is not an Atlas built-in provider: add it as a custom OAuth/OIDC provider (or an enterprise connection for WorkOS) with the same client id.`, 'custom_oauth_providers');
270
+ }
271
+ }
272
+ // ── sessions and tokens ──
273
+ const refresh = val('session.refreshToken.expiresIn');
274
+ if (typeof refresh === 'number' && refresh > 0) {
275
+ const ms = (0, translate_kit_1.clampSessionMs)(refresh * 1000);
276
+ b.set('session.absoluteMs', ms);
277
+ put(ms === refresh * 1000 ? 'mapped' : 'differs', 'session.refreshToken.expiresIn', `Sessions last ${refresh} s${ms !== refresh * 1000 ? ' (clamped to Atlas\'s 5-minute to 90-day range)' : ''}.`, 'auth_config.session.absoluteMs');
278
+ }
279
+ const access = val('session.accessToken.expiresIn');
280
+ if (typeof access === 'number' && access > 0) {
281
+ b.set('session.jwtTtlSeconds', access);
282
+ put('mapped', 'session.accessToken.expiresIn', `Access tokens live ${access} s.`, 'auth_config.session.jwtTtlSeconds');
283
+ }
284
+ const claims = {};
285
+ for (const [k, entry] of toml) {
286
+ const m = /^auth\.session\.accessToken\.customClaims\.(\d+)\.key$/.exec(k);
287
+ if (!m || typeof entry.value !== 'string')
288
+ continue;
289
+ const v = toml.get(`auth.session.accessToken.customClaims.${m[1]}.value`)?.value;
290
+ if (typeof v === 'string')
291
+ claims[entry.value] = v;
292
+ }
293
+ if (Object.keys(claims).length) {
294
+ const at = [...toml.entries()].find(([k]) => k.startsWith('auth.session.accessToken.customClaims'))?.[1];
295
+ (0, source_lines_1.addAt)(b, at ? file.path : undefined, at?.line, 'manual', 'auth', 'auth.session.accessToken.customClaims', `Custom Hasura claims (${Object.entries(claims).map(([c, p]) => `${c} ← ${p}`).join(', ')}) read from the database: recreate them as an Atlas JWT template, Hasura shape (https://hasura.io/jwt/claims), with values from user metadata.`, 'jwt_templates');
296
+ }
297
+ b.add('differs', 'hasura', 'hasura.jwtSecrets', 'Hasura must trust Atlas tokens: add Atlas\'s JWKS URL as a Hasura JWT secret (jwk_url) next to the Nhost one during the cutover, with the "hasura" JWT template.', 'jwt_templates hasura');
298
+ // ── roles ──
299
+ const allowed = val('user.roles.allowed');
300
+ if (Array.isArray(allowed)) {
301
+ const custom = allowed.filter((r) => typeof r === 'string' && !['user', 'me', 'anonymous', 'public'].includes(r));
302
+ for (const r of custom) {
303
+ const key = (0, translate_kit_1.keyOf)(r);
304
+ b.roles[r] = key;
305
+ b.push('roles', { key, name: r, description: 'Hasura role from Nhost', permissions: [] });
306
+ }
307
+ if (custom.length)
308
+ put('mapped', 'user.roles.allowed', `${custom.length} Hasura role(s) become Atlas app roles; assignments move with the data export.`, 'roles');
309
+ }
310
+ const def = val('user.roles.default');
311
+ if (typeof def === 'string' && def !== 'user')
312
+ put('manual', 'user.roles.default', `New users get the Hasura role "${def}": assign the matching Atlas app role in a sign-up action.`, 'actions');
313
+ // ── user rules ──
314
+ for (const k of ['user.email.allowed', 'user.emailDomains.allowed']) {
315
+ const v = val(k);
316
+ if (Array.isArray(v) && v.length)
317
+ put('manual', k, `Sign-up limited to ${v.join(', ')}: add them to the Atlas allowlist (restrictions.allowlistOnly).`, 'auth_config.restrictions');
318
+ }
319
+ for (const k of ['user.email.blocked', 'user.emailDomains.blocked']) {
320
+ const v = val(k);
321
+ if (Array.isArray(v) && v.length)
322
+ put('manual', k, `Blocked: ${v.join(', ')}. Add them to the Atlas blocklist.`, 'blocklist');
323
+ }
324
+ if (val('user.gravatar.enabled') === true)
325
+ put('differs', 'user.gravatar.enabled', 'Nhost fills avatarUrl from Gravatar; Atlas shows initials or the social profile picture. Imported avatar URLs are kept.', 'user image');
326
+ const locales = val('user.locale.allowed');
327
+ if (Array.isArray(locales) && locales.length > 1)
328
+ put('differs', 'user.locale.allowed', 'Per-user locale is kept in public metadata; set the Atlas localization languages to match.', 'auth_config.localization');
329
+ // ── MFA ──
330
+ if (val('totp.enabled') === true) {
331
+ b.set('mfa.factors.totp', true);
332
+ put('mapped', 'totp.enabled', 'Authenticator apps. Secrets move with the export (decrypted on your machine with AUTH_ENCRYPTION_KEY on current Nhost).', 'auth_config.mfa.factors.totp');
333
+ }
334
+ if (val('elevatedPrivileges.mode') === 'required' || val('elevatedPrivileges.mode') === 'recommended') {
335
+ put('differs', 'elevatedPrivileges.mode', 'Nhost elevates with a security key before sensitive changes; Atlas uses step-up (reverification) for the same actions.', 'auth_config.stepUp');
336
+ }
337
+ // ── redirects ──
338
+ const clientUrl = val('redirections.clientUrl');
339
+ if (typeof clientUrl === 'string' && clientUrl)
340
+ put('mapped', 'redirections.clientUrl', `${clientUrl} becomes an Atlas redirect URL.`, 'redirect_urls');
341
+ const urls = val('redirections.allowedUrls');
342
+ if (Array.isArray(urls))
343
+ for (const u of urls)
344
+ if (typeof u === 'string' && /^https?:\/\//.test(u))
345
+ b.push('redirect_urls', { url: u });
346
+ if (Array.isArray(urls) && urls.length)
347
+ put('mapped', 'redirections.allowedUrls', `${urls.length} allowed redirect URL(s).`, 'redirect_urls');
348
+ if (typeof clientUrl === 'string' && /^https?:\/\//.test(clientUrl))
349
+ b.push('redirect_urls', { url: clientUrl });
350
+ // ── what the bridge and lazy presets need ──
351
+ const issuer = toml.get('hasura.jwtSecrets.0.issuer');
352
+ if (typeof issuer?.value === 'string' && issuer.value) {
353
+ (0, source_lines_1.addAt)(b, file.path, issuer.line, 'mapped', 'hasura', 'hasura.jwtSecrets.issuer', `Access tokens carry iss "${issuer.value}": the nhost_jwt bridge preset accepts them with its issuer variable set to that value.`, 'migrations bridge nhost_jwt');
354
+ }
355
+ return b.result(file.path, {
356
+ bridge: { preset: 'nhost', vars: {} },
357
+ lazy: { preset: 'nhost', config: opts.authUrl ? { auth_url: opts.authUrl.replace(/\/+$/, '') } : {} },
358
+ });
359
+ }
360
+ //# sourceMappingURL=nhost-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nhost-config.js","sourceRoot":"","sources":["../../../src/migrate/export/nhost-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import { RecordSet, type Obj } from './record-set';
2
+ /**
3
+ * `atlas migrate export nhost` — an Nhost project's `auth` schema.
4
+ *
5
+ * Nhost tracks its auth tables in Hasura, so the export reads them through the
6
+ * project's GraphQL endpoint with the admin secret (on this machine only):
7
+ * `users` (bcrypt `passwordHash`, TOTP secret), `authUserProviders`,
8
+ * `authUserSecurityKeys`, `authUserRoles` and `authRefreshTokens`. A
9
+ * self-hosted project can instead hand over a dump of the `auth.*` tables
10
+ * (`psql \copy … to 'users.csv' csv header`, or JSON), snake_case columns.
11
+ *
12
+ * What moves: users with verified email / phone, display name, avatar,
13
+ * locale and metadata, disabled → banned, anonymous users; bcrypt hashes as
14
+ * they are; social links; WebAuthn security keys (as passkeys, for the
15
+ * relying-party id the project used); allowed roles as app roles; TOTP
16
+ * secrets (plaintext on legacy hasura-auth, AES-256-GCM under
17
+ * AUTH_ENCRYPTION_KEY on current versions — decrypted here when the key is
18
+ * given, else those users enrol again); SMS second factors by phone; and live
19
+ * refresh tokens. Nhost stores `\x` + hex(sha256(refresh token)), exactly the
20
+ * `token_hash` the `nhost` bridge preset looks up, so signed-in users move
21
+ * without a new sign-in. Personal access tokens are left out (reissue them).
22
+ */
23
+ export interface NhostRows {
24
+ users: Obj[];
25
+ providers: Obj[];
26
+ securityKeys: Obj[];
27
+ userRoles: Obj[];
28
+ refreshTokens: Obj[];
29
+ }
30
+ export interface NhostExportOptions {
31
+ /** AUTH_ENCRYPTION_KEY (64 hex chars) to decrypt TOTP secrets. */
32
+ encryptionKey?: string;
33
+ /** The WebAuthn relying-party id security keys were registered for (nhost.toml auth.method.webauthn.relyingParty.id). */
34
+ rpId?: string;
35
+ origin?: string;
36
+ now?: () => number;
37
+ }
38
+ export declare function exportNhost(rows: NhostRows, opts?: NhostExportOptions): RecordSet;
39
+ /** `\x` + hex(sha256(token)) as Nhost stores it → the bundle's lowercase hex. */
40
+ export declare function refreshTokenHash(t: Obj): string | undefined;
41
+ /**
42
+ * Current Nhost encrypts TOTP secrets: AES-256-GCM, stored as
43
+ * hex(nonce(12) || ciphertext || tag(16)), key = AUTH_ENCRYPTION_KEY (hex).
44
+ */
45
+ export declare function decryptTotp(stored: string, key: Buffer): string | undefined;
46
+ /** Postgres bytea as Hasura / psql print it (`\x…` hex), or base64 → base64url. */
47
+ export declare function byteaToBase64url(v: unknown): string | undefined;
48
+ /** Nhost Cloud's GraphQL endpoint for a subdomain and region. */
49
+ export declare function nhostGraphqlUrl(o: {
50
+ subdomain: string;
51
+ region: string;
52
+ }): string;
53
+ /** The auth tables through Hasura with the admin secret (sent only to the project). */
54
+ export declare function fetchNhostRows(opts: {
55
+ graphqlUrl: string;
56
+ adminSecret: string;
57
+ fetchImpl?: typeof fetch;
58
+ sleep?: (ms: number) => Promise<void>;
59
+ onProgress?: (m: string) => void;
60
+ }): Promise<NhostRows>;
61
+ export declare class GraphqlError extends Error {
62
+ }
63
+ /** A folder of `auth.*` table dumps (JSON, NDJSON or CSV with a header; snake_case columns). */
64
+ export declare function readNhostDump(dir: string): NhostRows;