@atlasauth/cli 0.11.0 → 0.12.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 (127) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/args.d.ts +106 -0
  3. package/dist/args.js +38 -0
  4. package/dist/args.js.map +1 -1
  5. package/dist/commands/init.js +13 -8
  6. package/dist/commands/init.js.map +1 -1
  7. package/dist/commands/migrate.d.ts +6 -2
  8. package/dist/commands/migrate.js +13 -3
  9. package/dist/commands/migrate.js.map +1 -1
  10. package/dist/help.d.ts +1 -1
  11. package/dist/help.js +38 -0
  12. package/dist/help.js.map +1 -1
  13. package/dist/migrate/auth0/plugin.d.ts +2 -0
  14. package/dist/migrate/auth0/plugin.js +126 -0
  15. package/dist/migrate/auth0/plugin.js.map +1 -0
  16. package/dist/migrate/clerk/plugin.d.ts +2 -0
  17. package/dist/migrate/clerk/plugin.js +76 -0
  18. package/dist/migrate/clerk/plugin.js.map +1 -0
  19. package/dist/migrate/descope/plugin.d.ts +2 -0
  20. package/dist/migrate/descope/plugin.js +83 -0
  21. package/dist/migrate/descope/plugin.js.map +1 -0
  22. package/dist/migrate/export/auth0-config.d.ts +29 -0
  23. package/dist/migrate/export/auth0-config.js +249 -0
  24. package/dist/migrate/export/auth0-config.js.map +1 -0
  25. package/dist/migrate/export/auth0.d.ts +62 -0
  26. package/dist/migrate/export/auth0.js +575 -0
  27. package/dist/migrate/export/auth0.js.map +1 -0
  28. package/dist/migrate/export/clerk-config.d.ts +26 -0
  29. package/dist/migrate/export/clerk-config.js +227 -0
  30. package/dist/migrate/export/clerk-config.js.map +1 -0
  31. package/dist/migrate/export/clerk.d.ts +46 -0
  32. package/dist/migrate/export/clerk.js +486 -0
  33. package/dist/migrate/export/clerk.js.map +1 -0
  34. package/dist/migrate/export/descope.d.ts +35 -0
  35. package/dist/migrate/export/descope.js +208 -0
  36. package/dist/migrate/export/descope.js.map +1 -0
  37. package/dist/migrate/export/fake-vendor.test-helper.d.ts +27 -0
  38. package/dist/migrate/export/fake-vendor.test-helper.js +41 -0
  39. package/dist/migrate/export/fake-vendor.test-helper.js.map +1 -0
  40. package/dist/migrate/export/frameworks/app-users.d.ts +42 -0
  41. package/dist/migrate/export/frameworks/app-users.js +161 -0
  42. package/dist/migrate/export/frameworks/app-users.js.map +1 -0
  43. package/dist/migrate/export/frameworks/authjs.d.ts +41 -0
  44. package/dist/migrate/export/frameworks/authjs.js +146 -0
  45. package/dist/migrate/export/frameworks/authjs.js.map +1 -0
  46. package/dist/migrate/export/frameworks/devise.d.ts +39 -0
  47. package/dist/migrate/export/frameworks/devise.js +218 -0
  48. package/dist/migrate/export/frameworks/devise.js.map +1 -0
  49. package/dist/migrate/export/frameworks/django.d.ts +45 -0
  50. package/dist/migrate/export/frameworks/django.js +315 -0
  51. package/dist/migrate/export/frameworks/django.js.map +1 -0
  52. package/dist/migrate/export/frameworks/lucia.d.ts +42 -0
  53. package/dist/migrate/export/frameworks/lucia.js +263 -0
  54. package/dist/migrate/export/frameworks/lucia.js.map +1 -0
  55. package/dist/migrate/export/frameworks/tables.d.ts +90 -0
  56. package/dist/migrate/export/frameworks/tables.js +325 -0
  57. package/dist/migrate/export/frameworks/tables.js.map +1 -0
  58. package/dist/migrate/export/frameworks/webauthn.d.ts +25 -0
  59. package/dist/migrate/export/frameworks/webauthn.js +130 -0
  60. package/dist/migrate/export/frameworks/webauthn.js.map +1 -0
  61. package/dist/migrate/export/kinde-descope-config.d.ts +38 -0
  62. package/dist/migrate/export/kinde-descope-config.js +172 -0
  63. package/dist/migrate/export/kinde-descope-config.js.map +1 -0
  64. package/dist/migrate/export/kinde.d.ts +57 -0
  65. package/dist/migrate/export/kinde.js +333 -0
  66. package/dist/migrate/export/kinde.js.map +1 -0
  67. package/dist/migrate/export/okta-config.d.ts +30 -0
  68. package/dist/migrate/export/okta-config.js +205 -0
  69. package/dist/migrate/export/okta-config.js.map +1 -0
  70. package/dist/migrate/export/okta.d.ts +43 -0
  71. package/dist/migrate/export/okta.js +337 -0
  72. package/dist/migrate/export/okta.js.map +1 -0
  73. package/dist/migrate/export/plugin-kit.d.ts +25 -0
  74. package/dist/migrate/export/plugin-kit.js +82 -0
  75. package/dist/migrate/export/plugin-kit.js.map +1 -0
  76. package/dist/migrate/export/record-set.d.ts +44 -0
  77. package/dist/migrate/export/record-set.js +98 -0
  78. package/dist/migrate/export/record-set.js.map +1 -0
  79. package/dist/migrate/export/translate-kit.d.ts +46 -0
  80. package/dist/migrate/export/translate-kit.js +148 -0
  81. package/dist/migrate/export/translate-kit.js.map +1 -0
  82. package/dist/migrate/export/vendor-http.d.ts +46 -0
  83. package/dist/migrate/export/vendor-http.js +138 -0
  84. package/dist/migrate/export/vendor-http.js.map +1 -0
  85. package/dist/migrate/export/zip.d.ts +8 -0
  86. package/dist/migrate/export/zip.js +66 -0
  87. package/dist/migrate/export/zip.js.map +1 -0
  88. package/dist/migrate/framework/builtins.d.ts +2 -0
  89. package/dist/migrate/framework/builtins.js +23 -0
  90. package/dist/migrate/framework/builtins.js.map +1 -0
  91. package/dist/migrate/framework/commands.d.ts +20 -0
  92. package/dist/migrate/framework/commands.js +58 -0
  93. package/dist/migrate/framework/commands.js.map +1 -0
  94. package/dist/migrate/framework/custom.d.ts +12 -0
  95. package/dist/migrate/framework/custom.js +96 -0
  96. package/dist/migrate/framework/custom.js.map +1 -0
  97. package/dist/migrate/framework/orchestrator.d.ts +113 -0
  98. package/dist/migrate/framework/orchestrator.js +531 -0
  99. package/dist/migrate/framework/orchestrator.js.map +1 -0
  100. package/dist/migrate/framework/plugin.d.ts +165 -0
  101. package/dist/migrate/framework/plugin.js +3 -0
  102. package/dist/migrate/framework/plugin.js.map +1 -0
  103. package/dist/migrate/framework/registry.d.ts +11 -0
  104. package/dist/migrate/framework/registry.js +44 -0
  105. package/dist/migrate/framework/registry.js.map +1 -0
  106. package/dist/migrate/framework/report.d.ts +17 -0
  107. package/dist/migrate/framework/report.js +103 -0
  108. package/dist/migrate/framework/report.js.map +1 -0
  109. package/dist/migrate/frameworks/plugins.d.ts +29 -0
  110. package/dist/migrate/frameworks/plugins.js +402 -0
  111. package/dist/migrate/frameworks/plugins.js.map +1 -0
  112. package/dist/migrate/frameworks/report.d.ts +92 -0
  113. package/dist/migrate/frameworks/report.js +207 -0
  114. package/dist/migrate/frameworks/report.js.map +1 -0
  115. package/dist/migrate/frameworks/translate-js.d.ts +5 -0
  116. package/dist/migrate/frameworks/translate-js.js +503 -0
  117. package/dist/migrate/frameworks/translate-js.js.map +1 -0
  118. package/dist/migrate/frameworks/translate-rails-django.d.ts +3 -0
  119. package/dist/migrate/frameworks/translate-rails-django.js +1391 -0
  120. package/dist/migrate/frameworks/translate-rails-django.js.map +1 -0
  121. package/dist/migrate/kinde/plugin.d.ts +2 -0
  122. package/dist/migrate/kinde/plugin.js +105 -0
  123. package/dist/migrate/kinde/plugin.js.map +1 -0
  124. package/dist/migrate/okta/plugin.d.ts +2 -0
  125. package/dist/migrate/okta/plugin.js +105 -0
  126. package/dist/migrate/okta/plugin.js.map +1 -0
  127. package/package.json +5 -4
@@ -0,0 +1,503 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.translateAuthJs = translateAuthJs;
4
+ exports.translateLucia = translateLucia;
5
+ exports.translatePassport = translatePassport;
6
+ exports.translateIronSession = translateIronSession;
7
+ const upgrade_1 = require("@atlasauth/upgrade");
8
+ const report_1 = require("./report");
9
+ /**
10
+ * Config translators for the JavaScript frameworks — Auth.js / NextAuth,
11
+ * Lucia, Passport (+ express-session) and iron-session — reading the app's
12
+ * source statically (nothing runs, `.env` files are never read; env vars are
13
+ * carried by NAME as `${NAME}` placeholders).
14
+ */
15
+ // ── StaticValue helpers ─────────────────────────────────────────────────────
16
+ const at = (v, fallback) => (v ? v.loc : fallback);
17
+ function cv(v) {
18
+ if (!v)
19
+ return undefined;
20
+ if (v.kind === 'string' || v.kind === 'number' || v.kind === 'boolean')
21
+ return { kind: 'literal', value: v.value, at: v.loc };
22
+ if (v.kind === 'env')
23
+ return { kind: 'env', name: v.name, at: v.loc };
24
+ return { kind: 'opaque', text: describe(v), at: v.loc };
25
+ }
26
+ function describe(v) {
27
+ switch (v.kind) {
28
+ case 'unknown':
29
+ return v.text.length > 60 ? `${v.text.slice(0, 57)}…` : v.text;
30
+ case 'call':
31
+ return `${v.callee}(…)`;
32
+ case 'external':
33
+ return `${v.name} from ${v.module}`;
34
+ case 'function':
35
+ return 'a function';
36
+ case 'param':
37
+ return `parameter ${v.name}`;
38
+ case 'template':
39
+ return 'a template string';
40
+ default:
41
+ return v.kind;
42
+ }
43
+ }
44
+ const str = (v) => (v?.kind === 'string' ? v.value : undefined);
45
+ const num = (v) => (v?.kind === 'number' ? v.value : undefined);
46
+ const bool = (v) => (v?.kind === 'boolean' ? v.value : undefined);
47
+ /** The object a call's options resolve to (following a function that returns one: Auth.js lazy init). */
48
+ function objectOf(v) {
49
+ if (!v)
50
+ return undefined;
51
+ if (v.kind === 'object')
52
+ return v;
53
+ if (v.kind === 'function' && v.returns?.kind === 'object')
54
+ return v.returns;
55
+ return undefined;
56
+ }
57
+ function upperSnake(id) {
58
+ return id.replace(/[^A-Za-z0-9]+/g, '_').replace(/([a-z])([A-Z])/g, '$1_$2').toUpperCase();
59
+ }
60
+ function originOf(calls, what) {
61
+ const first = calls[0];
62
+ return first ? { origin: `${what} at ${first.loc.file}:${first.loc.line}`, where: first.loc } : { origin: `${what} (not found)`, where: { file: '(none)', line: 0 } };
63
+ }
64
+ function notFound(b, analysis, area, what) {
65
+ b.add('manual', area, what, `No ${what} was found under ${analysis.root} (${analysis.filesScanned} files scanned). Point the command at the folder that sets it up.`);
66
+ for (const e of analysis.parseErrors)
67
+ b.add('manual', 'setup', 'parse', `This file could not be parsed (${e.message}); settings in it were not read.`, { file: e.file, line: 1 });
68
+ return b.result();
69
+ }
70
+ // ── Auth.js / NextAuth ──────────────────────────────────────────────────────
71
+ const AUTHJS_ENTRY = [
72
+ { id: 'nextauth', module: /^next-auth$/, names: ['default', 'NextAuth'] },
73
+ { id: 'core', module: /^@auth\/core$/, names: ['Auth'] },
74
+ { id: 'framework', module: /^@auth\/(express|sveltekit|solid-start|qwik|astro|fastify|hono|nuxt)$/, names: '*' },
75
+ ];
76
+ /** Auth.js email-ish providers: magic links through an email service. */
77
+ const EMAIL_PROVIDERS = new Set(['email', 'nodemailer', 'resend', 'sendgrid', 'postmark', 'mailgun', 'forwardemail', 'loops']);
78
+ function translateAuthJs(project) {
79
+ const analysis = (0, upgrade_1.analyzeCalls)(project, AUTHJS_ENTRY, ['next-auth', '@auth/']);
80
+ const calls = analysis.calls.filter((c) => c.matcher !== 'framework' || /Auth\$?$/.test(c.imported.name));
81
+ const { origin, where } = originOf(calls, 'Auth.js config');
82
+ const b = new report_1.TranslationBuilder(origin, where);
83
+ if (!calls.length)
84
+ return notFound(b, analysis, 'setup', 'NextAuth() / Auth.js call');
85
+ const call = calls[0];
86
+ for (const other of calls.slice(1))
87
+ b.add('manual', 'setup', 'NextAuth()', `Another Auth.js call is here; only the one at ${call.loc.file}:${call.loc.line} was translated.`, other.loc);
88
+ const opts = objectOf(call.matcher === 'core' ? call.args[1] : call.args[0]);
89
+ if (!opts) {
90
+ b.add('manual', 'setup', 'config', 'The Auth.js config cannot be read statically; review its settings by hand.', call.loc);
91
+ return b.result();
92
+ }
93
+ const area = 'authjs';
94
+ const version = analysis.dependencies['next-auth'] ?? analysis.dependencies['@auth/core'] ?? '';
95
+ const v4 = /^[~^]?4\./.test(version);
96
+ // Providers.
97
+ const providers = (0, upgrade_1.propOf)(opts, 'providers');
98
+ let hasCredentials = false;
99
+ let hasPasskey = false;
100
+ if (providers?.kind === 'array') {
101
+ for (const p of providers.items) {
102
+ const module = p.kind === 'call' ? p.imported?.module : p.kind === 'external' ? p.module : undefined;
103
+ const id = module?.split('/').pop()?.toLowerCase();
104
+ const cfg = p.kind === 'call' ? p.args[0] : undefined;
105
+ if (!id) {
106
+ b.add('manual', 'providers', 'providers[]', `A provider that cannot be read statically (${describe(p)}).`, p.loc);
107
+ continue;
108
+ }
109
+ if (id === 'credentials') {
110
+ hasCredentials = true;
111
+ b.set('strategies.password', true);
112
+ b.add('differs', 'providers', 'Credentials', 'Atlas owns password sign-in: your authorize() is no longer called. Passwords your app stored with bcrypt, Argon2, scrypt or PBKDF2 carry over in the export; for any other scheme turn on lazy migration (preset authjs_credentials) so Atlas asks your old Credentials endpoint once per user.', p.loc, 'auth_config.strategies.password');
113
+ continue;
114
+ }
115
+ if (EMAIL_PROVIDERS.has(id)) {
116
+ b.set('strategies.emailLink', true);
117
+ b.add('differs', 'providers', id, 'Email sign-in links on. Atlas sends them through your email provider (configure it in Atlas); customise the "magic link" template instead of sendVerificationRequest.', p.loc, 'auth_config.strategies.emailLink');
118
+ continue;
119
+ }
120
+ if (id === 'passkey' || id === 'webauthn') {
121
+ hasPasskey = true;
122
+ b.set('strategies.passkey', true);
123
+ b.add('mapped', 'providers', id, 'Passkey sign-in on. Registered passkeys are imported when you pass the RP id to the export (same domain).', p.loc, 'auth_config.strategies.passkey');
124
+ continue;
125
+ }
126
+ const atlasKey = report_1.FRAMEWORK_PROVIDER_MAP[id];
127
+ if (!atlasKey) {
128
+ b.add('manual', 'providers', id, `"${id}" has no same-named Atlas provider: add it as a custom OAuth / OIDC provider (custom_oauth_providers) with its endpoints.`, p.loc);
129
+ continue;
130
+ }
131
+ const upper = upperSnake(id);
132
+ // v5 reads AUTH_<PROVIDER>_ID / _SECRET when the provider is passed without options.
133
+ const idEnv = v4 ? `${upper}_CLIENT_ID` : `AUTH_${upper}_ID`;
134
+ const secretEnv = v4 ? `${upper}_CLIENT_SECRET` : `AUTH_${upper}_SECRET`;
135
+ const clientId = b.configString(cv((0, upgrade_1.propOf)(cfg, 'clientId')) ?? (cfg ? undefined : { kind: 'env', name: idEnv, at: p.loc }), `${id} client id`, idEnv, { area: 'providers', setting: `${id}.clientId` });
136
+ const clientSecret = atlasKey === 'apple' ? undefined : b.configString(cv((0, upgrade_1.propOf)(cfg, 'clientSecret')) ?? (cfg ? undefined : { kind: 'env', name: secretEnv, at: p.loc }), `${id} client secret`, secretEnv, { area: 'providers', setting: `${id}.clientSecret`, secret: true });
137
+ const scope = str((0, upgrade_1.propOf)((0, upgrade_1.propOf)((0, upgrade_1.propOf)(cfg, 'authorization'), 'params'), 'scope'));
138
+ const values = {};
139
+ if (atlasKey === 'microsoft') {
140
+ const tenant = (0, upgrade_1.propOf)(cfg, 'tenantId') ?? (0, upgrade_1.propOf)(cfg, 'issuer');
141
+ if (tenant)
142
+ values.tenant = b.configString(cv(tenant), 'Microsoft tenant', 'MICROSOFT_TENANT_ID', { area: 'providers', setting: `${id}.tenantId` });
143
+ }
144
+ if (atlasKey === 'apple') {
145
+ for (const [k, env, label] of [['team_id', 'APPLE_TEAM_ID', 'team id'], ['key_id', 'APPLE_KEY_ID', 'key id'], ['private_key', 'APPLE_PRIVATE_KEY', '.p8 key contents']]) {
146
+ values[k] = `\${${env}}`;
147
+ b.env.set(env, `Sign in with Apple ${label}`);
148
+ }
149
+ b.add('differs', 'providers', `${id}.clientSecret`, 'Atlas builds the Apple client secret itself from your team id, key id and .p8 key; keep the same Services ID so Apple user ids stay the same.', p.loc, 'oauth_providers apple');
150
+ }
151
+ b.oauthProvider({ sourceId: id, atlasKey, clientId, clientSecret, scopes: scope?.split(/[\s,]+/).filter(Boolean), values, area: 'providers', setting: id, at: p.loc });
152
+ for (const fn of ['profile', 'userinfo', 'token']) {
153
+ const f = (0, upgrade_1.propOf)(cfg, fn);
154
+ if (f)
155
+ b.add('manual', 'providers', `${id}.${fn}`, fn === 'profile' ? "Atlas maps the provider's profile itself; move extra profile fields into user metadata with a post-login Action." : 'Atlas runs this step itself for built-in providers; remove the override.', f.loc);
156
+ }
157
+ if (bool((0, upgrade_1.propOf)(cfg, 'allowDangerousEmailAccountLinking'))) {
158
+ b.set('accountLinking', 'auto');
159
+ b.add('differs', 'providers', `${id}.allowDangerousEmailAccountLinking`, 'Atlas links a social sign-in to an existing account only when the provider asserts a verified email.', (0, upgrade_1.propOf)(cfg, 'allowDangerousEmailAccountLinking').loc, 'auth_config.accountLinking');
160
+ }
161
+ }
162
+ }
163
+ else if (providers) {
164
+ b.add('manual', 'providers', 'providers', `Cannot read the providers (${describe(providers)}).`, providers.loc);
165
+ }
166
+ // Session.
167
+ const session = (0, upgrade_1.propOf)(opts, 'session');
168
+ const adapter = (0, upgrade_1.propOf)(opts, 'adapter');
169
+ const strategy = str((0, upgrade_1.propOf)(session, 'strategy')) ?? (adapter && !hasCredentials ? 'database' : 'jwt');
170
+ const maxAge = num((0, upgrade_1.propOf)(session, 'maxAge')) ?? 30 * report_1.DAY;
171
+ b.session(maxAge, true, area, 'session.maxAge', at((0, upgrade_1.propOf)(session, 'maxAge') ?? session, call.loc), 'Auth.js');
172
+ if ((0, upgrade_1.propOf)(session, 'updateAge'))
173
+ b.add('mapped', area, 'session.updateAge', 'Atlas extends a used session itself and refreshes its short-lived token every minute; nothing to set.', (0, upgrade_1.propOf)(session, 'updateAge').loc);
174
+ if ((0, upgrade_1.propOf)(opts, 'jwt')) {
175
+ const jwt = (0, upgrade_1.propOf)(opts, 'jwt');
176
+ if ((0, upgrade_1.propOf)(jwt, 'encode') || (0, upgrade_1.propOf)(jwt, 'decode'))
177
+ b.add('manual', area, 'jwt.encode/decode', 'A custom JWT encoding: the bridge extractor reads the default Auth.js JWE only; open your format in a custom extractToken.', jwt.loc);
178
+ else
179
+ b.add('mapped', area, 'jwt', 'Atlas signs its own session tokens (RS256, JWKS published); verify them with the Atlas SDKs instead of next-auth/jwt.', jwt.loc);
180
+ }
181
+ if (adapter) {
182
+ const name = adapter.kind === 'call' ? adapter.callee : describe(adapter);
183
+ b.add('mapped', area, 'adapter', `${name}: your users, accounts, authenticators and sessions are read from this database by the export (dump the tables, then atlas migrate authjs export --set dump=<dir>).`, adapter.loc);
184
+ }
185
+ b.bridge = { preset: strategy === 'database' ? 'authjs' : 'authjs_jwt', vars: {} };
186
+ b.add('mapped', 'bridge', 'session.strategy', strategy === 'database'
187
+ ? 'Database sessions: imported with the export; the bridge matches the session cookie (preset authjs).'
188
+ : 'JWT sessions: the bridge decrypts the cookie on your server with AUTH_SECRET and exchanges a one-time assertion (preset authjs_jwt, a bridge secret in the bridge settings).', at((0, upgrade_1.propOf)(session, 'strategy') ?? session, call.loc), `bridge preset ${b.bridge.preset}`);
189
+ if (hasCredentials)
190
+ b.lazy = { preset: 'authjs_credentials', config: {} };
191
+ // Everything else.
192
+ const secret = (0, upgrade_1.propOf)(opts, 'secret');
193
+ if (secret)
194
+ b.add('mapped', area, 'secret', 'Atlas signs its own sessions; AUTH_SECRET is only needed by the bridge extractor (JWT sessions) during the cutover.', secret.loc);
195
+ const callbacks = (0, upgrade_1.propOf)(opts, 'callbacks');
196
+ if (callbacks?.kind === 'object') {
197
+ for (const [name, fn] of Object.entries(callbacks.props)) {
198
+ const note = {
199
+ signIn: 'Allow/deny logic moves to a pre-sign-in or post-login Action (return deny with a reason).',
200
+ jwt: 'Extra token claims come from a JWT template (custom claims from user metadata) or a post-login Action.',
201
+ session: 'Extra session fields: read them from the Atlas session claims or user metadata (useUser / auth()).',
202
+ redirect: 'Allowed redirect targets are the instance redirect URLs (redirect_urls).',
203
+ authorized: 'Route protection: the Atlas middleware (publicRoutes / protect) replaces it.',
204
+ };
205
+ b.add('manual', 'callbacks', `callbacks.${name}`, note[name] ?? 'Move this logic to an Atlas Action.', fn.loc);
206
+ }
207
+ }
208
+ const events = (0, upgrade_1.propOf)(opts, 'events');
209
+ if (events?.kind === 'object')
210
+ for (const [name, fn] of Object.entries(events.props))
211
+ b.add('manual', 'events', `events.${name}`, 'Subscribe to the matching Atlas webhook (user.created, session.created, session.ended …) instead.', fn.loc);
212
+ const pages = (0, upgrade_1.propOf)(opts, 'pages');
213
+ if (pages?.kind === 'object') {
214
+ for (const [name, v] of Object.entries(pages.props)) {
215
+ b.add('manual', 'pages', `pages.${name}`, `Atlas hosts sign-in, sign-up, verification and error pages (themeable), or embed the components on your own route${str(v) ? ` (${str(v)})` : ''}.`, v.loc, 'auth_config.accountUx');
216
+ }
217
+ }
218
+ const cookies = (0, upgrade_1.propOf)(opts, 'cookies');
219
+ if (cookies) {
220
+ const name = str((0, upgrade_1.propOf)((0, upgrade_1.propOf)(cookies, 'sessionToken'), 'name'));
221
+ if (name)
222
+ b.bridge.vars.cookie_name = name;
223
+ b.add(name ? 'mapped' : 'manual', 'bridge', 'cookies.sessionToken', name ? `The bridge reads the session from "${name}" (pass cookieName to authJsExtractor).` : 'Custom cookie settings: pass the session cookie name to authJsExtractor.', cookies.loc);
224
+ }
225
+ if ((0, upgrade_1.propOf)(opts, 'trustHost') || (0, upgrade_1.propOf)(opts, 'useSecureCookies') || (0, upgrade_1.propOf)(opts, 'basePath')) {
226
+ b.add('mapped', area, 'trustHost / useSecureCookies / basePath', 'Not needed: Atlas serves the auth endpoints on its own domain with secure cookies.', ((0, upgrade_1.propOf)(opts, 'trustHost') ?? (0, upgrade_1.propOf)(opts, 'useSecureCookies') ?? (0, upgrade_1.propOf)(opts, 'basePath')).loc);
227
+ }
228
+ if ((0, upgrade_1.propOf)(opts, 'theme'))
229
+ b.add('differs', area, 'theme', 'Brand the hosted pages in Atlas (colors, logo) instead.', (0, upgrade_1.propOf)(opts, 'theme').loc, 'instance branding');
230
+ if (bool((0, upgrade_1.propOf)((0, upgrade_1.propOf)(opts, 'experimental'), 'enableWebAuthn')) && !hasPasskey)
231
+ b.add('mapped', area, 'experimental.enableWebAuthn', 'Passkeys are a stable Atlas sign-in method.', (0, upgrade_1.propOf)(opts, 'experimental').loc, 'auth_config.strategies.passkey');
232
+ return b.result();
233
+ }
234
+ // ── Lucia ───────────────────────────────────────────────────────────────────
235
+ /** arctic provider class → [Atlas key, index of clientId, index of clientSecret]. */
236
+ const ARCTIC = {
237
+ GitHub: ['github', 0, 1],
238
+ Google: ['google', 0, 1],
239
+ Discord: ['discord', 0, 1],
240
+ Facebook: ['facebook', 0, 1],
241
+ Twitter: ['x', 0, 1],
242
+ Twitch: ['twitch', 0, 1],
243
+ Spotify: ['spotify', 0, 1],
244
+ LinkedIn: ['linkedin', 0, 1],
245
+ Slack: ['slack', 0, 1],
246
+ Reddit: ['reddit', 0, 1],
247
+ Notion: ['notion', 0, 1],
248
+ Zoom: ['zoom', 0, 1],
249
+ Dropbox: ['dropbox', 0, 1],
250
+ Atlassian: ['atlassian', 0, 1],
251
+ Salesforce: ['salesforce', 1, 2],
252
+ Line: ['line', 0, 1],
253
+ Kakao: ['kakao', 0, 1],
254
+ Naver: ['naver', 0, 1],
255
+ VK: ['vk', 0, 1],
256
+ Apple: ['apple', 0, null],
257
+ MicrosoftEntraId: ['microsoft', 1, 2],
258
+ GitLab: ['gitlab', 1, 2],
259
+ Auth0: ['auth0', 1, 2],
260
+ Okta: ['okta', 2, 3],
261
+ Bitbucket: ['bitbucket', 0, 1],
262
+ Amazon: ['amazon', 0, 1],
263
+ Shopify: ['shopify', 1, 2],
264
+ };
265
+ /** `new TimeSpan(30, "d")` (lucia / oslo) or v2 milliseconds → seconds. */
266
+ function timeSpanSeconds(v) {
267
+ if (v?.kind === 'call' && /TimeSpan$/.test(v.callee) && v.args[0]?.kind === 'number' && v.args[1]?.kind === 'string') {
268
+ const unit = { ms: 0.001, s: 1, m: 60, h: 3600, d: report_1.DAY, w: 7 * report_1.DAY }[v.args[1].value];
269
+ return unit !== undefined ? Math.round(v.args[0].value * unit) : undefined;
270
+ }
271
+ return undefined;
272
+ }
273
+ function translateLucia(project) {
274
+ const analysis = (0, upgrade_1.analyzeCalls)(project, [
275
+ { id: 'v3', module: /^lucia$/, names: ['Lucia'], construct: true },
276
+ { id: 'v2', module: /^lucia$/, names: ['lucia'], construct: false },
277
+ { id: 'arctic', module: /^arctic$/, names: '*', construct: true },
278
+ { id: 'oauth_v2', module: /^@lucia-auth\/oauth\/providers$/, names: '*', construct: false },
279
+ ], ['lucia', 'arctic']);
280
+ const core = analysis.calls.filter((c) => c.matcher === 'v3' || c.matcher === 'v2');
281
+ const { origin, where } = originOf(core.length ? core : analysis.calls, 'Lucia');
282
+ const b = new report_1.TranslationBuilder(origin, where);
283
+ if (!analysis.calls.length)
284
+ return notFound(b, analysis, 'setup', 'Lucia setup (new Lucia(...) or arctic providers)');
285
+ const area = 'lucia';
286
+ b.set('strategies.password', true);
287
+ b.bridge = { preset: 'lucia', vars: {} };
288
+ const call = core[0];
289
+ if (call) {
290
+ const opts = objectOf(call.matcher === 'v3' ? call.args[1] : call.args[0]);
291
+ const cookie = (0, upgrade_1.propOf)(opts, 'sessionCookie');
292
+ const name = str((0, upgrade_1.propOf)(cookie, 'name'));
293
+ if (name)
294
+ b.bridge.vars.cookie_name = name;
295
+ b.add('mapped', 'bridge', 'sessionCookie.name', `The bridge reads "${name ?? 'auth_session'}" (preset lucia).`, at((0, upgrade_1.propOf)(cookie, 'name') ?? cookie, call.loc), 'bridge preset lucia');
296
+ if (bool((0, upgrade_1.propOf)(cookie, 'expires')) === false)
297
+ b.add('differs', area, 'sessionCookie.expires', 'Browser-session cookies: Atlas keeps the session until it expires; a "remember me" off at sign-in gives a browser-session cookie per user.', (0, upgrade_1.propOf)(cookie, 'expires').loc);
298
+ const domain = (0, upgrade_1.propOf)((0, upgrade_1.propOf)(cookie, 'attributes'), 'domain');
299
+ if (domain)
300
+ b.add('manual', area, 'sessionCookie.attributes.domain', 'Shared cookies across subdomains: turn on session.crossSubdomainCookies and verify the parent domain in Atlas.', domain.loc, 'auth_config.session.crossSubdomainCookies');
301
+ if (call.matcher === 'v3') {
302
+ const span = (0, upgrade_1.propOf)(opts, 'sessionExpiresIn');
303
+ const seconds = timeSpanSeconds(span) ?? 30 * report_1.DAY;
304
+ b.session(seconds, true, area, 'sessionExpiresIn', at(span, call.loc), 'Lucia');
305
+ }
306
+ else {
307
+ const span = (0, upgrade_1.propOf)(opts, 'sessionExpiresIn');
308
+ const active = num((0, upgrade_1.propOf)(span, 'activePeriod')) ?? report_1.DAY * 1000;
309
+ const idle = num((0, upgrade_1.propOf)(span, 'idlePeriod')) ?? 14 * report_1.DAY * 1000;
310
+ b.session(Math.round((active + idle) / 1000), true, area, 'sessionExpiresIn.activePeriod + idlePeriod', at(span, call.loc), 'Lucia');
311
+ if ((0, upgrade_1.propOf)(opts, 'csrfProtection'))
312
+ b.add('mapped', area, 'csrfProtection', 'Atlas checks the origin of every state-changing request itself.', (0, upgrade_1.propOf)(opts, 'csrfProtection').loc);
313
+ }
314
+ for (const key of ['getUserAttributes', 'getSessionAttributes']) {
315
+ const fn = (0, upgrade_1.propOf)(opts, key);
316
+ if (fn)
317
+ b.add('manual', area, key, key === 'getUserAttributes' ? 'User fields: read them from the Atlas user (currentUser()) or put app fields in user metadata (imported from the export).' : 'Session attributes: use session custom data (set from a post-login Action).', fn.loc);
318
+ }
319
+ const adapter = call.args[0];
320
+ if (call.matcher === 'v3' && adapter)
321
+ b.add('mapped', area, 'adapter', `${describe(adapter)}: users, keys and sessions are read from this database by the export.`, adapter.loc);
322
+ }
323
+ else {
324
+ b.add('manual', area, 'session management', 'No Lucia instance was found (the Lucia guide implements sessions in your code): the export reads your session table (ids hashed with sha256 are detected).', where);
325
+ b.session(30 * report_1.DAY, true, area, 'session lifetime (guide default 30 days)', where, 'Lucia');
326
+ }
327
+ for (const c of analysis.calls.filter((x) => x.matcher === 'arctic' || x.matcher === 'oauth_v2')) {
328
+ const cls = c.imported.name;
329
+ const known = c.matcher === 'arctic' ? ARCTIC[cls] : report_1.FRAMEWORK_PROVIDER_MAP[cls] ? [report_1.FRAMEWORK_PROVIDER_MAP[cls], -1, -1] : undefined;
330
+ if (!known) {
331
+ b.add('manual', 'providers', cls, `No same-named Atlas provider for ${cls}: add it as a custom OAuth provider.`, c.loc);
332
+ continue;
333
+ }
334
+ const [atlasKey, idIdx, secretIdx] = known;
335
+ const upper = upperSnake(atlasKey);
336
+ // @lucia-auth/oauth v2: github(auth, { clientId, clientSecret }).
337
+ const options = idIdx < 0 ? c.args[1] : undefined;
338
+ const clientId = b.configString(cv(idIdx < 0 ? (0, upgrade_1.propOf)(options, 'clientId') : c.args[idIdx]), `${cls} client id`, `${upper}_CLIENT_ID`, { area: 'providers', setting: `${cls}.clientId` });
339
+ const clientSecret = secretIdx === null ? undefined : b.configString(cv(secretIdx < 0 ? (0, upgrade_1.propOf)(options, 'clientSecret') : c.args[secretIdx]), `${cls} client secret`, `${upper}_CLIENT_SECRET`, { area: 'providers', setting: `${cls}.clientSecret`, secret: true });
340
+ const values = {};
341
+ if (atlasKey === 'apple') {
342
+ for (const [k, env] of [['team_id', 'APPLE_TEAM_ID'], ['key_id', 'APPLE_KEY_ID'], ['private_key', 'APPLE_PRIVATE_KEY']]) {
343
+ values[k] = `\${${env}}`;
344
+ b.env.set(env, `Sign in with Apple ${k.replace('_', ' ')}`);
345
+ }
346
+ }
347
+ if (atlasKey === 'microsoft')
348
+ values.tenant = b.configString(cv(c.args[0]), 'Microsoft tenant', 'MICROSOFT_TENANT_ID', { area: 'providers', setting: `${cls}.tenant` });
349
+ b.oauthProvider({ sourceId: cls.toLowerCase(), atlasKey, clientId, clientSecret, values, area: 'providers', setting: `new ${cls}(…)`, at: c.loc });
350
+ }
351
+ return b.result();
352
+ }
353
+ // ── Passport + express-session ──────────────────────────────────────────────
354
+ /** Passport strategy package → Atlas provider (or a special kind). */
355
+ const PASSPORT_STRATEGIES = {
356
+ 'passport-google-oauth20': 'google',
357
+ 'passport-google-oauth2': 'google',
358
+ 'passport-google-oidc': 'google',
359
+ 'passport-github2': 'github',
360
+ 'passport-github': 'github',
361
+ 'passport-facebook': 'facebook',
362
+ 'passport-microsoft': 'microsoft',
363
+ 'passport-apple': 'apple',
364
+ 'passport-discord': 'discord',
365
+ 'passport-gitlab2': 'gitlab',
366
+ 'passport-linkedin-oauth2': 'linkedin',
367
+ 'passport-slack-oauth2': 'slack',
368
+ 'passport-slack': 'slack',
369
+ 'passport-spotify': 'spotify',
370
+ 'passport-twitch-new': 'twitch',
371
+ 'passport-auth0': 'auth0',
372
+ 'passport-okta-oauth20': 'okta',
373
+ 'passport-bitbucket-oauth2': 'bitbucket',
374
+ 'passport-amazon': 'amazon',
375
+ };
376
+ function translatePassport(project) {
377
+ const analysis = (0, upgrade_1.analyzeCalls)(project, [
378
+ { id: 'strategy', module: /^(passport-[a-z0-9-]+|@node-saml\/passport-saml|@passport-js\/[a-z0-9-]+|passport-azure-ad)$/, names: '*', construct: true },
379
+ { id: 'session', module: /^express-session$/, names: ['default'], construct: false },
380
+ { id: 'cookie_session', module: /^cookie-session$/, names: ['default'], construct: false },
381
+ ], ['passport', 'express-session', 'cookie-session']);
382
+ const strategies = analysis.calls.filter((c) => c.matcher === 'strategy');
383
+ const { origin, where } = originOf(strategies.length ? strategies : analysis.calls, 'Passport');
384
+ const b = new report_1.TranslationBuilder(origin, where);
385
+ if (!analysis.calls.length)
386
+ return notFound(b, analysis, 'setup', 'passport.use(new …Strategy()) / express-session');
387
+ b.bridge = { preset: 'passport', vars: {} };
388
+ for (const c of strategies) {
389
+ const module = c.imported.module;
390
+ const opts = objectOf(c.args[0]);
391
+ const atlasKey = PASSPORT_STRATEGIES[module];
392
+ if (atlasKey) {
393
+ const upper = upperSnake(atlasKey);
394
+ const clientId = b.configString(cv((0, upgrade_1.propOf)(opts, 'clientID') ?? (0, upgrade_1.propOf)(opts, 'clientId')), `${atlasKey} client id`, `${upper}_CLIENT_ID`, { area: 'strategies', setting: `${module}.clientID` });
395
+ const clientSecret = atlasKey === 'apple' ? undefined : b.configString(cv((0, upgrade_1.propOf)(opts, 'clientSecret')), `${atlasKey} client secret`, `${upper}_CLIENT_SECRET`, { area: 'strategies', setting: `${module}.clientSecret`, secret: true });
396
+ const scope = (0, upgrade_1.propOf)(opts, 'scope');
397
+ const scopes = scope?.kind === 'array' ? scope.items.map(str).filter((s) => Boolean(s)) : str(scope)?.split(/[\s,]+/);
398
+ const values = {};
399
+ if (atlasKey === 'auth0' || atlasKey === 'okta') {
400
+ const domain = (0, upgrade_1.propOf)(opts, 'domain') ?? (0, upgrade_1.propOf)(opts, 'audience');
401
+ values.domain = b.configString(cv(domain), `${atlasKey} domain`, `${upper}_DOMAIN`, { area: 'strategies', setting: `${module}.domain` });
402
+ }
403
+ if (atlasKey === 'microsoft' && (0, upgrade_1.propOf)(opts, 'tenant'))
404
+ values.tenant = b.configString(cv((0, upgrade_1.propOf)(opts, 'tenant')), 'Microsoft tenant', 'MICROSOFT_TENANT_ID', { area: 'strategies', setting: `${module}.tenant` });
405
+ b.oauthProvider({ sourceId: atlasKey, atlasKey, clientId, clientSecret, scopes, values, area: 'strategies', setting: `new ${c.callee}(…) from ${module}`, at: c.loc });
406
+ if ((0, upgrade_1.propOf)(opts, 'callbackURL'))
407
+ b.add('mapped', 'strategies', `${module}.callbackURL`, "Atlas receives the provider callback on its own domain: add Atlas's redirect_uri to the OAuth app (keep the old one until the cutover ends).", (0, upgrade_1.propOf)(opts, 'callbackURL').loc);
408
+ b.add('manual', 'strategies', `${module} verify callback`, 'Your verify(accessToken, refreshToken, profile, done) logic (find-or-create the user) moves to Atlas: identities link by provider user id; put extra steps in a post-login Action.', c.loc);
409
+ continue;
410
+ }
411
+ if (module === 'passport-local') {
412
+ const field = str((0, upgrade_1.propOf)(opts, 'usernameField')) ?? 'username';
413
+ b.set('strategies.password', true);
414
+ if (field !== 'email')
415
+ b.set('strategies.username', true);
416
+ b.add('differs', 'strategies', 'passport-local', `Password sign-in by ${field === 'email' ? 'email' : `${field} (Atlas usernames)`}; Atlas verifies passwords itself. Hashes your app stored with bcrypt, Argon2, PBKDF2 or passport-local-mongoose carry over in the export.`, c.loc, field === 'email' ? 'auth_config.strategies.password' : 'auth_config.strategies.username');
417
+ continue;
418
+ }
419
+ if (module === 'passport-jwt' || module === 'passport-http-bearer' || module === 'passport-headerapikey') {
420
+ b.add('manual', 'strategies', module, 'Bearer-token APIs: verify Atlas session tokens (or Atlas API keys / M2M tokens) with requireAuth() from the Atlas Express adapter or the Backend SDK instead.', c.loc);
421
+ continue;
422
+ }
423
+ if (module === 'passport-saml' || module === '@node-saml/passport-saml') {
424
+ const entryPoint = (0, upgrade_1.propOf)(opts, 'entryPoint');
425
+ const entry = str(entryPoint) ?? (entryPoint ? describe(entryPoint) : 'from the IdP metadata');
426
+ b.add('manual', 'sso', module, `Create a SAML connection in Atlas (enterprise SSO) with the IdP SSO URL (${entry}), its certificate and issuer, then update the IdP with Atlas's ACS URL and entity id.`, c.loc, 'sso_connections');
427
+ continue;
428
+ }
429
+ if (module === 'passport-openidconnect' || module === 'passport-azure-ad' || module === 'passport-oauth2') {
430
+ b.add('manual', 'strategies', module, `Add this identity provider as a custom ${module === 'passport-oauth2' ? 'OAuth 2.0' : 'OIDC'} provider in Atlas (custom_oauth_providers) or as an enterprise OIDC connection, with the same client id.`, c.loc, 'custom_oauth_providers');
431
+ continue;
432
+ }
433
+ if (module === 'passport-magic-link' || module === 'passport-magic-login') {
434
+ b.set('strategies.emailLink', true);
435
+ b.add('differs', 'strategies', module, 'Email sign-in links on; Atlas sends them through your email provider.', c.loc, 'auth_config.strategies.emailLink');
436
+ continue;
437
+ }
438
+ b.add('manual', 'strategies', module, 'A Passport strategy with no Atlas counterpart to map automatically; review it.', c.loc);
439
+ }
440
+ for (const c of analysis.calls.filter((x) => x.matcher === 'session')) {
441
+ const opts = objectOf(c.args[0]);
442
+ const name = str((0, upgrade_1.propOf)(opts, 'name')) ?? 'connect.sid';
443
+ b.bridge.vars.cookie_name = name;
444
+ b.add('mapped', 'bridge', 'session({ name })', `The bridge reads "${name}" and pulls the session id out with expressSessionExtractor() (preset passport).`, at((0, upgrade_1.propOf)(opts, 'name') ?? opts, c.loc), 'bridge preset passport');
445
+ const cookie = (0, upgrade_1.propOf)(opts, 'cookie');
446
+ const maxAgeMs = num((0, upgrade_1.propOf)(cookie, 'maxAge')) ?? num((0, upgrade_1.propOf)(cookie, 'expires'));
447
+ const rolling = bool((0, upgrade_1.propOf)(opts, 'rolling')) === true;
448
+ if (maxAgeMs !== undefined)
449
+ b.session(Math.round(maxAgeMs / 1000), rolling, 'express-session', 'cookie.maxAge', at((0, upgrade_1.propOf)(cookie, 'maxAge'), c.loc), 'express-session');
450
+ else
451
+ b.add('differs', 'express-session', 'cookie.maxAge', 'Browser-session cookies (no maxAge): Atlas sessions have a lifetime (default 7 days idle); set auth_config.session to taste.', at(cookie, c.loc), 'auth_config.session');
452
+ const store = (0, upgrade_1.propOf)(opts, 'store');
453
+ b.add(store ? 'mapped' : 'manual', 'express-session', 'store', store
454
+ ? `${describe(store)}: dump its sessions (table, collection or keys) and the export imports the live ones for the bridge.`
455
+ : 'MemoryStore: sessions live in process memory and cannot be exported; signed-in users sign in once more after the switch.', at(store, c.loc));
456
+ if ((0, upgrade_1.propOf)(opts, 'secret'))
457
+ b.add('mapped', 'express-session', 'secret', 'Only the bridge extractor uses it (to check the cookie signature) during the cutover.', (0, upgrade_1.propOf)(opts, 'secret').loc);
458
+ }
459
+ for (const c of analysis.calls.filter((x) => x.matcher === 'cookie_session')) {
460
+ b.add('manual', 'bridge', 'cookie-session', 'cookie-session keeps the whole session in a signed cookie (keygrip); the bridge cannot read it. Users sign in once more after the switch, or open the cookie yourself in a custom extractToken.', c.loc);
461
+ }
462
+ return b.result();
463
+ }
464
+ // ── iron-session ────────────────────────────────────────────────────────────
465
+ function translateIronSession(project) {
466
+ const analysis = (0, upgrade_1.analyzeCalls)(project, [{ id: 'iron', module: /^(iron-session(\/.*)?|next-iron-session)$/, names: ['getIronSession', 'withIronSessionApiRoute', 'withIronSessionSsr', 'ironSession', 'withIronSession', 'default', 'sealData', 'unsealData'] }], ['iron-session']);
467
+ const { origin, where } = originOf(analysis.calls, 'iron-session');
468
+ const b = new report_1.TranslationBuilder(origin, where);
469
+ if (!analysis.calls.length)
470
+ return notFound(b, analysis, 'setup', 'getIronSession() / withIronSession…() call');
471
+ b.set('strategies.password', true);
472
+ let seen = false;
473
+ for (const c of analysis.calls) {
474
+ if (c.imported.name === 'sealData' || c.imported.name === 'unsealData') {
475
+ b.add('mapped', 'iron-session', c.imported.name, 'Sealing other data (magic links, invites) is unrelated to sign-in and keeps working.', c.loc);
476
+ continue;
477
+ }
478
+ const opts = [...c.args].reverse().map(objectOf).find((o) => o && ((0, upgrade_1.propOf)(o, 'cookieName') || (0, upgrade_1.propOf)(o, 'password')));
479
+ if (!opts || seen)
480
+ continue;
481
+ seen = true;
482
+ const name = str((0, upgrade_1.propOf)(opts, 'cookieName'));
483
+ b.bridge = { preset: 'iron_session', vars: name ? { cookie_name: name } : {} };
484
+ b.add(name ? 'mapped' : 'manual', 'bridge', 'cookieName', name ? `The bridge reads "${name}": pass ironSessionExtractor({ cookieName, password, bridgeSecret }) to the middleware; the password stays on your server.` : 'Set cookie_name in the bridge settings to your iron-session cookieName.', at((0, upgrade_1.propOf)(opts, 'cookieName'), c.loc), 'bridge preset iron_session');
485
+ const password = (0, upgrade_1.propOf)(opts, 'password');
486
+ if (password?.kind === 'env')
487
+ b.add('mapped', 'bridge', 'password', `Read from ${password.name} by the bridge extractor on your server (never sent to Atlas).`, password.loc);
488
+ else if (password)
489
+ b.add('manual', 'bridge', 'password', 'The session password is not read from an environment variable: pass it to ironSessionExtractor on your server (it never goes to Atlas).', password.loc);
490
+ const ttl = num((0, upgrade_1.propOf)(opts, 'ttl'));
491
+ const ttlSeconds = ttl === undefined ? 14 * report_1.DAY : ttl;
492
+ if (ttlSeconds === 0)
493
+ b.add('differs', 'iron-session', 'ttl: 0', 'Atlas sessions always expire; the longest is 90 days.', at((0, upgrade_1.propOf)(opts, 'ttl'), c.loc), 'auth_config.session');
494
+ else
495
+ b.session(ttlSeconds, false, 'iron-session', 'ttl', at((0, upgrade_1.propOf)(opts, 'ttl'), c.loc), 'iron-session');
496
+ const domain = (0, upgrade_1.propOf)((0, upgrade_1.propOf)(opts, 'cookieOptions'), 'domain');
497
+ if (domain)
498
+ b.add('manual', 'iron-session', 'cookieOptions.domain', 'Shared cookies across subdomains: turn on session.crossSubdomainCookies.', domain.loc, 'auth_config.session.crossSubdomainCookies');
499
+ }
500
+ b.add('manual', 'users', 'user store', 'iron-session has no user store: export your users table (atlas migrate iron-session export --set dump=<dir>, with --set users-table=… and the column settings as needed).', where);
501
+ return b.result();
502
+ }
503
+ //# sourceMappingURL=translate-js.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translate-js.js","sourceRoot":"","sources":["../../../src/migrate/frameworks/translate-js.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { TranslationResult } from '../framework/plugin';
2
+ export declare function translateDevise(project: string): TranslationResult;
3
+ export declare function translateDjango(project: string): TranslationResult;