@atlasauth/cli 0.25.1 → 0.27.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 (46) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +26 -5
  3. package/dist/args.d.ts +30 -0
  4. package/dist/args.js +15 -0
  5. package/dist/args.js.map +1 -1
  6. package/dist/commands/config.d.ts +27 -2
  7. package/dist/commands/config.js +366 -44
  8. package/dist/commands/config.js.map +1 -1
  9. package/dist/commands/doctor-scan.d.ts +29 -0
  10. package/dist/commands/doctor-scan.js +233 -0
  11. package/dist/commands/doctor-scan.js.map +1 -0
  12. package/dist/commands/golive.js +16 -4
  13. package/dist/commands/golive.js.map +1 -1
  14. package/dist/commands/import-jsonl.d.ts +51 -0
  15. package/dist/commands/import-jsonl.js +326 -0
  16. package/dist/commands/import-jsonl.js.map +1 -0
  17. package/dist/commands/import.js +22 -12
  18. package/dist/commands/import.js.map +1 -1
  19. package/dist/commands/init-next.d.ts +4 -0
  20. package/dist/commands/init-next.js +86 -0
  21. package/dist/commands/init-next.js.map +1 -0
  22. package/dist/commands/init.js +119 -25
  23. package/dist/commands/init.js.map +1 -1
  24. package/dist/commands/project-commands.js +74 -4
  25. package/dist/commands/project-commands.js.map +1 -1
  26. package/dist/commands/setup-guide.d.ts +3 -0
  27. package/dist/commands/setup-guide.js +38 -0
  28. package/dist/commands/setup-guide.js.map +1 -0
  29. package/dist/commands/users.js +12 -1
  30. package/dist/commands/users.js.map +1 -1
  31. package/dist/config-http.d.ts +9 -0
  32. package/dist/config-http.js +7 -1
  33. package/dist/config-http.js.map +1 -1
  34. package/dist/context.d.ts +18 -1
  35. package/dist/context.js +6 -1
  36. package/dist/context.js.map +1 -1
  37. package/dist/help.d.ts +1 -1
  38. package/dist/help.js +79 -12
  39. package/dist/help.js.map +1 -1
  40. package/dist/redact.d.ts +41 -0
  41. package/dist/redact.js +115 -0
  42. package/dist/redact.js.map +1 -0
  43. package/dist/run.d.ts +2 -2
  44. package/dist/run.js +16 -4
  45. package/dist/run.js.map +1 -1
  46. package/package.json +4 -4
@@ -12,6 +12,7 @@ const backend_1 = require("@atlasauth/backend");
12
12
  const args_1 = require("../args");
13
13
  const errors_1 = require("../errors");
14
14
  const output_1 = require("../output");
15
+ const redact_1 = require("../redact");
15
16
  const project_1 = require("../project");
16
17
  const project_commands_1 = require("./project-commands");
17
18
  const shared_1 = require("./shared");
@@ -88,6 +89,7 @@ async function declaredCookiesCheck(api) {
88
89
  fix: 'Re-import the storage declaration (GET /v1/instance/storage_declaration) into your consent manager as strictly necessary.',
89
90
  };
90
91
  }
92
+ const keptUntil = (v) => (typeof v === 'number' ? new Date(v * 1000).toISOString() : null);
91
93
  class StepFailed extends Error {
92
94
  step;
93
95
  problem;
@@ -113,7 +115,7 @@ async function golive(ctx, args) {
113
115
  const pass = (id, detail) => {
114
116
  results.push({ id, ok: true, detail });
115
117
  if (!json)
116
- ctx.io.out(`✓ ${id} — ${detail}`);
118
+ ctx.io.out(`✓ ${id} — ${(0, redact_1.scrubText)(detail)}`);
117
119
  };
118
120
  const fail = (problem, fix) => {
119
121
  throw new StepFailed(current, problem, fix);
@@ -133,6 +135,16 @@ async function golive(ctx, args) {
133
135
  pass('domains', `${domain.host}${domain.base_path ?? ''} verified`);
134
136
  }
135
137
  else {
138
+ // Verifying can move the issuer, which breaks every verifier pinned to the old one: say so first.
139
+ const preview = await api.post(`/v1/domains/${domain.id}/verify?dry_run=true`, {});
140
+ if (preview?.issuer_before && preview.issuer_after && preview.issuer_before !== preview.issuer_after) {
141
+ const until = keptUntil(preview.previous_issuers_kept_until);
142
+ const pair = `issuer moves from ${preview.issuer_before} to ${preview.issuer_after}`;
143
+ const copy = `Add this to your token verifiers first: previousIssuers: ["${preview.issuer_before}"]${until ? ` (the old issuer is kept until ${until})` : ''}.`;
144
+ if (!dry && v.yes !== true)
145
+ fail(`verifying ${domain.host}: ${pair}`, `${copy} Then run golive again with --yes.`);
146
+ pass('issuer_move', `${pair}. ${copy}`);
147
+ }
136
148
  const res = await api.post(q(`/v1/domains/${domain.id}/verify`), {});
137
149
  if (dry)
138
150
  pass('domains', would('', `verify ${domain.host}`));
@@ -260,13 +272,13 @@ async function golive(ctx, args) {
260
272
  throw err;
261
273
  results.push({ id: failed.step, ok: false, detail: failed.problem, fix: failed.fix });
262
274
  if (json)
263
- (0, output_1.printJson)(ctx.io, { ok: false, dry_run: dry, origin: origin.origin, steps: results });
275
+ (0, output_1.printJson)(ctx.io, (0, redact_1.redactDeep)({ ok: false, dry_run: dry, origin: origin.origin, steps: results }));
264
276
  else
265
- ctx.io.out(`✗ ${failed.step} — ${failed.problem}\n fix: ${failed.fix}`);
277
+ ctx.io.out((0, redact_1.scrubText)(`✗ ${failed.step} — ${failed.problem}\n fix: ${failed.fix}`));
266
278
  return 1;
267
279
  }
268
280
  if (json)
269
- (0, output_1.printJson)(ctx.io, { ok: true, dry_run: dry, origin: origin.origin, steps: results });
281
+ (0, output_1.printJson)(ctx.io, (0, redact_1.redactDeep)({ ok: true, dry_run: dry, origin: origin.origin, steps: results }));
270
282
  else if (dry)
271
283
  ctx.io.out('Dry run: nothing was written.');
272
284
  return 0;
@@ -1 +1 @@
1
- {"version":3,"file":"golive.js","sourceRoot":"","sources":["../../src/commands/golive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"golive.js","sourceRoot":"","sources":["../../src/commands/golive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import { type ParsedArgs } from '../args';
2
+ import type { ConfigHttp } from '../config-http';
3
+ import type { RunContext } from '../context';
4
+ /**
5
+ * `atlas import users.jsonl`: Atlas's own import shape, one user per line, mapped
6
+ * onto `POST /v1/user_imports`. Idempotent by `external_id`: each row is looked up
7
+ * first, so re-running a file changes nothing and a catch-up run only touches what
8
+ * is new or changed. Output carries counts and external ids, never an email address
9
+ * or a password digest.
10
+ */
11
+ export interface JobResult {
12
+ id: string;
13
+ status: string;
14
+ total: number;
15
+ succeeded: number;
16
+ failed: number;
17
+ results?: Array<{
18
+ outcome: 'created' | 'updated' | 'matched' | 'failed';
19
+ }> | null;
20
+ }
21
+ /** Send one batch and wait for it: a batch over the inline limit is queued. */
22
+ export declare function sendImportBatch(ctx: RunContext, http: ConfigHttp, body: Record<string, unknown>): Promise<JobResult>;
23
+ /** Epoch seconds, epoch milliseconds or an ISO string as epoch ms; undefined when absent or unreadable. */
24
+ export declare function parseTimestamp(value: unknown): number | undefined;
25
+ /** `--since` as epoch ms. */
26
+ export declare function parseSince(raw: string | undefined): number | undefined;
27
+ /** `--password-policy`, checked. */
28
+ export declare function parsePasswordPolicy(raw: string | undefined): string | undefined;
29
+ /** `--on-conflict`, checked. */
30
+ export declare function parseOnConflict(raw: string | undefined, fallback: 'skip' | 'update'): 'skip' | 'update';
31
+ interface InputRow {
32
+ external_id: string;
33
+ email: string;
34
+ email_verified?: boolean;
35
+ password_digest?: string;
36
+ algorithm?: string;
37
+ password_salt?: string;
38
+ password_hash_params?: Record<string, unknown> | null;
39
+ first_name?: string;
40
+ last_name?: string;
41
+ oauth_identities?: Array<{
42
+ provider: string;
43
+ provider_user_id: string;
44
+ }>;
45
+ created_at?: string | number;
46
+ updated_at?: string | number;
47
+ }
48
+ /** Parse the file. Errors name the line and any key, never a value: a line holds an email and maybe a digest. */
49
+ export declare function parseUsersJsonl(text: string): InputRow[];
50
+ export declare function importJsonl(ctx: RunContext, args: ParsedArgs, file: string): Promise<number>;
51
+ export {};
@@ -0,0 +1,326 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sendImportBatch = sendImportBatch;
4
+ exports.parseTimestamp = parseTimestamp;
5
+ exports.parseSince = parseSince;
6
+ exports.parsePasswordPolicy = parsePasswordPolicy;
7
+ exports.parseOnConflict = parseOnConflict;
8
+ exports.parseUsersJsonl = parseUsersJsonl;
9
+ exports.importJsonl = importJsonl;
10
+ const args_1 = require("../args");
11
+ const errors_1 = require("../errors");
12
+ const output_1 = require("../output");
13
+ const project_1 = require("../project");
14
+ const config_1 = require("./config");
15
+ const shared_1 = require("./shared");
16
+ /** Send one batch and wait for it: a batch over the inline limit is queued. */
17
+ async function sendImportBatch(ctx, http, body) {
18
+ let job = await http.post('/v1/user_imports', body);
19
+ while (job.status === 'pending' || job.status === 'processing') {
20
+ await (ctx.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms))))(2000);
21
+ job = await http.get(`/v1/jobs/${job.id}`);
22
+ }
23
+ return job;
24
+ }
25
+ /** Epoch seconds, epoch milliseconds or an ISO string as epoch ms; undefined when absent or unreadable. */
26
+ function parseTimestamp(value) {
27
+ if (typeof value === 'number' && Number.isFinite(value))
28
+ return value < 1e12 ? value * 1000 : value;
29
+ if (typeof value !== 'string' || !value.trim())
30
+ return undefined;
31
+ const n = Number(value);
32
+ if (Number.isFinite(n))
33
+ return parseTimestamp(n);
34
+ const t = Date.parse(value);
35
+ return Number.isNaN(t) ? undefined : t;
36
+ }
37
+ /** `--since` as epoch ms. */
38
+ function parseSince(raw) {
39
+ if (raw === undefined)
40
+ return undefined;
41
+ const t = parseTimestamp(raw);
42
+ if (t === undefined)
43
+ throw new errors_1.CliError(`--since must be an ISO date or epoch time, got '${raw}'.`);
44
+ return t;
45
+ }
46
+ /** `--password-policy`, checked. */
47
+ function parsePasswordPolicy(raw) {
48
+ if (raw !== undefined && raw !== 'active' && raw !== 'until_email_verified') {
49
+ throw new errors_1.CliError(`--password-policy must be active or until_email_verified, got '${raw}'.`);
50
+ }
51
+ return raw;
52
+ }
53
+ /** `--on-conflict`, checked. */
54
+ function parseOnConflict(raw, fallback) {
55
+ if (raw === undefined)
56
+ return fallback;
57
+ if (raw !== 'skip' && raw !== 'update')
58
+ throw new errors_1.CliError(`--on-conflict must be skip or update, got '${raw}'.`);
59
+ return raw;
60
+ }
61
+ /** Every key a row may carry: a misspelled one would import the user without that field. */
62
+ const ROW_KEYS = [
63
+ 'external_id',
64
+ 'email',
65
+ 'email_verified',
66
+ 'password_digest',
67
+ 'algorithm',
68
+ 'password_salt',
69
+ 'password_hash_params',
70
+ 'first_name',
71
+ 'last_name',
72
+ 'oauth_identities',
73
+ 'created_at',
74
+ 'updated_at',
75
+ ];
76
+ /** Node's `scrypt$N$r$p$salt$key`; the API reads this shape as Node when the salt is not all digits. */
77
+ const NODE_SCRYPT = /^scrypt\$\d+\$\d+\$\d+\$([^$]+)\$[^$]+$/;
78
+ const HEX_SALT = /^(?:[0-9a-f]{2}){4,}$/i;
79
+ /** Parse the file. Errors name the line and any key, never a value: a line holds an email and maybe a digest. */
80
+ function parseUsersJsonl(text) {
81
+ const rows = [];
82
+ const seen = new Set();
83
+ text.split(/\r?\n/).forEach((raw, i) => {
84
+ if (!raw.trim())
85
+ return;
86
+ const line = i + 1;
87
+ let row;
88
+ try {
89
+ row = JSON.parse(raw);
90
+ }
91
+ catch {
92
+ throw new errors_1.CliError(`Line ${line} is not valid JSON.`);
93
+ }
94
+ if (row !== null && typeof row === 'object' && !Array.isArray(row)) {
95
+ const unknown = Object.keys(row).filter((k) => !ROW_KEYS.includes(k));
96
+ if (unknown.length) {
97
+ throw new errors_1.CliError(`Line ${line} has unknown key(s): ${unknown.map((k) => `${k}${(0, config_1.didYouMean)(k, ROW_KEYS)}`).join(', ')}. A row may have: ${ROW_KEYS.join(', ')}.`);
98
+ }
99
+ }
100
+ if (row === null || typeof row !== 'object' || typeof row.external_id !== 'string' || !row.external_id.trim()) {
101
+ throw new errors_1.CliError(`Line ${line} has no external_id: re-running is only safe when every row has one.`);
102
+ }
103
+ if (typeof row.email !== 'string' || !row.email.trim())
104
+ throw new errors_1.CliError(`Line ${line} has no email.`);
105
+ if (seen.has(row.external_id))
106
+ throw new errors_1.CliError(`Line ${line} repeats an external_id from an earlier line.`);
107
+ if (row.password_hash_params !== undefined && row.password_hash_params !== null) {
108
+ if (!row.password_digest)
109
+ throw new errors_1.CliError(`Line ${line} has password_hash_params but no password_digest.`);
110
+ const salt = NODE_SCRYPT.exec(row.password_digest)?.[1];
111
+ if (!row.algorithm && (!salt || /^\d+$/.test(salt)))
112
+ throw new errors_1.CliError(`Line ${line} has password_hash_params but no algorithm naming what they belong to.`);
113
+ }
114
+ seen.add(row.external_id);
115
+ rows.push(row);
116
+ });
117
+ return rows;
118
+ }
119
+ function toImportRow(row) {
120
+ const out = { email_address: row.email, external_id: row.external_id, email_verified: row.email_verified === true };
121
+ if (row.password_digest)
122
+ out.password_hash = row.password_digest;
123
+ // The API reads parameters only under a named algorithm, and only a named format settles an all-digit scrypt salt.
124
+ const hasParams = row.password_hash_params !== undefined && row.password_hash_params !== null;
125
+ if (row.password_digest && (hasParams || /^scrypt_(node|django)$/i.test(row.algorithm ?? ''))) {
126
+ out.password_hash_algorithm = row.algorithm || 'scrypt_node';
127
+ if (hasParams)
128
+ out.password_hash_params = row.password_hash_params;
129
+ }
130
+ else if (row.algorithm)
131
+ out.password_hasher = row.algorithm;
132
+ if (row.password_salt)
133
+ out.password_salt = row.password_salt;
134
+ if (row.first_name !== undefined)
135
+ out.first_name = row.first_name;
136
+ if (row.last_name !== undefined)
137
+ out.last_name = row.last_name;
138
+ if (row.created_at !== undefined)
139
+ out.created_at = row.created_at;
140
+ if (row.oauth_identities?.length) {
141
+ out.external_accounts = row.oauth_identities.map((a) => ({ provider: a.provider, provider_user_id: a.provider_user_id }));
142
+ }
143
+ return out;
144
+ }
145
+ /**
146
+ * A scrypt salt that looks like hex is either the text itself (the salt a Node app often
147
+ * makes with `randomBytes().toString('hex')`) or bytes hex-decoded first. The two give
148
+ * different keys and the hash alone cannot tell which, so only the sender can say.
149
+ */
150
+ function saltEncodingUnknown(row) {
151
+ const algorithm = String(row.password_hash_algorithm ?? row.password_hasher ?? '').toLowerCase();
152
+ if (typeof row.password_hash !== 'string' || (algorithm && algorithm !== 'scrypt' && algorithm !== 'scrypt_node'))
153
+ return false;
154
+ if (row.password_hash_params?.salt_encoding !== undefined)
155
+ return false;
156
+ const salt = NODE_SCRYPT.exec(row.password_hash)?.[1] ?? (algorithm ? row.password_salt : undefined);
157
+ return typeof salt === 'string' && HEX_SALT.test(salt);
158
+ }
159
+ /** A small map with bounded concurrency: one lookup per row, without flooding the API. */
160
+ async function mapLimited(items, limit, fn) {
161
+ const out = new Array(items.length);
162
+ let next = 0;
163
+ await Promise.all(Array.from({ length: Math.min(limit, items.length) }, async () => {
164
+ while (next < items.length) {
165
+ const i = next++;
166
+ out[i] = await fn(items[i]);
167
+ }
168
+ }));
169
+ return out;
170
+ }
171
+ const BATCH = 100;
172
+ async function importJsonl(ctx, args, file) {
173
+ const v = args.values;
174
+ const json = (0, shared_1.wantsJson)(v);
175
+ const dry = v['dry-run'] === true;
176
+ const onConflict = parseOnConflict((0, args_1.str)(v, 'on-conflict'), 'skip');
177
+ const policy = parsePasswordPolicy((0, args_1.str)(v, 'password-policy'));
178
+ const since = parseSince((0, args_1.str)(v, 'since'));
179
+ const all = parseUsersJsonl(ctx.readFile(file));
180
+ let skipped = 0;
181
+ const rows = all.filter((r) => {
182
+ const at = parseTimestamp(r.updated_at) ?? parseTimestamp(r.created_at);
183
+ // A row with no date cannot be shown to be old, so it stays.
184
+ const keep = since === undefined || at === undefined || at >= since;
185
+ if (!keep)
186
+ skipped += 1;
187
+ return keep;
188
+ });
189
+ const auth = (0, shared_1.resolveAuth)(ctx, v);
190
+ const http = (0, project_1.httpFor)(ctx, { secretKey: auth.secretKey, apiUrl: auth.apiUrl });
191
+ const live = await mapLimited(rows, 10, async (r) => {
192
+ const res = await http.get(`/v1/users?external_id=${encodeURIComponent(r.external_id)}&limit=1`);
193
+ return res.data?.[0];
194
+ });
195
+ const creates = [];
196
+ const upserts = [];
197
+ const direct = [];
198
+ const emailChanged = [];
199
+ const passwordNotApplied = [];
200
+ rows.forEach((row, i) => {
201
+ const user = live[i];
202
+ if (!user) {
203
+ creates.push(toImportRow(row));
204
+ return;
205
+ }
206
+ if (onConflict === 'skip') {
207
+ skipped += 1;
208
+ return;
209
+ }
210
+ const address = user.email_addresses?.find((e) => e.email_address.toLowerCase() === row.email.trim().toLowerCase());
211
+ // The import matches on a verified email, so a changed address would make a second user.
212
+ if (!address) {
213
+ emailChanged.push(row.external_id);
214
+ skipped += 1;
215
+ return;
216
+ }
217
+ const namesDiffer = (row.first_name !== undefined && row.first_name !== user.first_name) || (row.last_name !== undefined && row.last_name !== user.last_name);
218
+ const verifyNow = row.email_verified === true && address.verified !== true;
219
+ const wantsPassword = Boolean(row.password_digest) && user.password_enabled === false;
220
+ const missingIdentity = Boolean(user.external_accounts && row.oauth_identities?.some((a) => !user.external_accounts.some((b) => b.provider === a.provider && b.provider_user_id === a.provider_user_id)));
221
+ const at = parseTimestamp(row.updated_at);
222
+ const newer = at !== undefined && user.updated_at !== undefined && at > user.updated_at;
223
+ if (!namesDiffer && !verifyNow && !wantsPassword && !missingIdentity && !newer) {
224
+ skipped += 1;
225
+ return;
226
+ }
227
+ if (address.verified === true) {
228
+ upserts.push(toImportRow(row));
229
+ return;
230
+ }
231
+ // The address is unverified, so the import would not find this user: update it by id.
232
+ if (wantsPassword || missingIdentity)
233
+ passwordNotApplied.push(row.external_id);
234
+ direct.push({ row, user, ...(verifyNow ? { verifyId: address.id } : {}) });
235
+ });
236
+ const unverifiedWithPassword = rows.filter((r) => r.password_digest && r.email_verified !== true).length;
237
+ const report = {
238
+ created: creates.length,
239
+ updated: upserts.length + direct.length,
240
+ skipped,
241
+ unverified_with_password: unverifiedWithPassword,
242
+ failed: 0,
243
+ jobs: [],
244
+ };
245
+ const warnings = [];
246
+ const warn = (code, ids, message) => warnings.push({ code, count: ids.length, external_ids: ids, message });
247
+ const unclearSalts = [...creates, ...upserts].filter(saltEncodingUnknown).map((r) => String(r.external_id));
248
+ if (unclearSalts.length) {
249
+ warn('ambiguous_scrypt_salt', unclearSalts, 'have a hex-looking scrypt salt and no salt_encoding, so the salt is used as the text written. If it was hex-decoded before hashing, add "password_hash_params":{"salt_encoding":"hex"} or these passwords will never match.');
250
+ }
251
+ const notes = [
252
+ ...(emailChanged.length ? [`${emailChanged.length} row(s) have a different email from the existing user and were left alone; change the address on the user first. external_id: ${emailChanged.join(', ')}`] : []),
253
+ ...(passwordNotApplied.length ? [`${passwordNotApplied.length} row(s) hold a password or identity that cannot be added while the address is unverified. external_id: ${passwordNotApplied.join(', ')}`] : []),
254
+ ];
255
+ if (!dry) {
256
+ // What was planned as created may still meet a verified email already here.
257
+ report.created = 0;
258
+ report.updated = 0;
259
+ const unsupported = new Map();
260
+ const send = async (batch, upsert) => {
261
+ const job = await sendImportBatch(ctx, http, { users: batch, upsert, ...(policy ? { password_policy: policy } : {}) });
262
+ report.jobs.push(job.id);
263
+ if (job.failed > 0) {
264
+ // Only the reasons depend on this read: the import has happened and the counts below still report it.
265
+ const errors = await http.get(`/v1/jobs/${job.id}/errors`).catch(() => ({ data: [] }));
266
+ for (const e of errors.data ?? []) {
267
+ if (e.code !== 'unsupported_password_hash')
268
+ continue;
269
+ const ids = unsupported.get(e.message) ?? [];
270
+ unsupported.set(e.message, [...ids, String(batch[e.index]?.external_id)]);
271
+ }
272
+ }
273
+ if (!job.results) {
274
+ report.created += job.succeeded;
275
+ report.failed += job.failed;
276
+ return;
277
+ }
278
+ for (const r of job.results) {
279
+ if (r.outcome === 'created')
280
+ report.created += 1;
281
+ else if (r.outcome === 'updated')
282
+ report.updated += 1;
283
+ else if (r.outcome === 'matched')
284
+ report.skipped += 1;
285
+ else
286
+ report.failed += 1;
287
+ }
288
+ };
289
+ for (let i = 0; i < creates.length; i += BATCH)
290
+ await send(creates.slice(i, i + BATCH), onConflict === 'update');
291
+ for (let i = 0; i < upserts.length; i += BATCH)
292
+ await send(upserts.slice(i, i + BATCH), true);
293
+ for (const { row, user, verifyId } of direct) {
294
+ if (row.first_name !== undefined || row.last_name !== undefined) {
295
+ await http.patch(`/v1/users/${encodeURIComponent(user.id)}`, {
296
+ ...(row.first_name !== undefined ? { first_name: row.first_name } : {}),
297
+ ...(row.last_name !== undefined ? { last_name: row.last_name } : {}),
298
+ });
299
+ }
300
+ if (verifyId)
301
+ await http.post(`/v1/users/${encodeURIComponent(user.id)}/email_addresses/${encodeURIComponent(verifyId)}/verify`, {});
302
+ report.updated += 1;
303
+ }
304
+ for (const [message, ids] of unsupported)
305
+ warn('unsupported_password_hash', ids, `were not imported. ${message}`);
306
+ }
307
+ if (json)
308
+ (0, output_1.printJson)(ctx.io, { dry_run: dry, ...report, notes, warnings });
309
+ else {
310
+ ctx.io.out(dry ? `Dry run of ${all.length} row(s). Nothing was sent.` : `Imported ${all.length} row(s).`);
311
+ ctx.io.out(` created: ${report.created}`);
312
+ ctx.io.out(` updated: ${report.updated}`);
313
+ ctx.io.out(` skipped: ${report.skipped}`);
314
+ ctx.io.out(` unverified with password: ${report.unverified_with_password}`);
315
+ if (!dry)
316
+ ctx.io.out(` failed: ${report.failed}`);
317
+ for (const n of notes)
318
+ ctx.io.out(` note: ${n}`);
319
+ for (const w of warnings)
320
+ ctx.io.out(` warning: ${w.code}: ${w.count} row(s) ${w.message} external_id: ${w.external_ids.join(', ')}`);
321
+ if (report.failed)
322
+ ctx.io.out(`Per-row issues: GET /v1/jobs/<job-id>/errors for jobs ${report.jobs.join(', ')}`);
323
+ }
324
+ return report.failed > 0 ? 2 : 0;
325
+ }
326
+ //# sourceMappingURL=import-jsonl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-jsonl.js","sourceRoot":"","sources":["../../src/commands/import-jsonl.ts"],"names":[],"mappings":"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"}
@@ -10,10 +10,13 @@ const project_1 = require("../project");
10
10
  const vendors_1 = require("../import/vendors");
11
11
  const shared_1 = require("./shared");
12
12
  const import_better_auth_1 = require("./import-better-auth");
13
+ const import_jsonl_1 = require("./import-jsonl");
13
14
  async function importUsers(ctx, args) {
14
15
  const vendor = (0, args_1.str)(args.values, 'from');
16
+ if (!vendor && args.positionals[1])
17
+ return (0, import_jsonl_1.importJsonl)(ctx, args, args.positionals[1]);
15
18
  if (!vendor || !vendors_1.VENDORS.includes(vendor)) {
16
- throw new errors_1.CliError(`import needs --from <${vendors_1.VENDORS.join('|')}>.`);
19
+ throw new errors_1.CliError(`import needs a users file (atlas import users.jsonl) or --from <${vendors_1.VENDORS.join('|')}>.`);
17
20
  }
18
21
  // Better Auth: the sealed bundle from `npx atlas-better-auth-export` carries
19
22
  // every model (passwords, two-factor, passkeys, orgs, API keys, sessions…);
@@ -36,7 +39,13 @@ async function importUsers(ctx, args) {
36
39
  catch (err) {
37
40
  throw new errors_1.CliError(err instanceof Error ? err.message : String(err));
38
41
  }
39
- const { rows, warnings } = (0, vendors_1.mapExport)(vendor, doc, hashes);
42
+ const onConflict = (0, import_jsonl_1.parseOnConflict)((0, args_1.str)(args.values, 'on-conflict'), 'update');
43
+ const passwordPolicy = (0, import_jsonl_1.parsePasswordPolicy)((0, args_1.str)(args.values, 'password-policy'));
44
+ const sinceRaw = (0, args_1.str)(args.values, 'since');
45
+ const since = (0, import_jsonl_1.parseSince)(sinceRaw);
46
+ const mapped = (0, vendors_1.mapExport)(vendor, doc, hashes);
47
+ const warnings = mapped.warnings;
48
+ const rows = since === undefined ? mapped.rows : mapped.rows.filter((r) => ((0, import_jsonl_1.parseTimestamp)(r.created_at) ?? since) >= since);
40
49
  const json = (0, shared_1.wantsJson)(args.values);
41
50
  const summary = (0, vendors_1.summarize)(rows);
42
51
  let hashConfig;
@@ -68,7 +77,7 @@ async function importUsers(ctx, args) {
68
77
  throw new errors_1.CliError('The export contains no users with an email address.');
69
78
  const batchSize = Math.min(Math.max(Number((0, args_1.str)(args.values, 'batch-size') ?? 100) || 100, 1), 100);
70
79
  const statePath = (0, args_1.str)(args.values, 'state-file') ?? `${file}.atlas-import.json`;
71
- const sha = (0, node_crypto_1.createHash)('sha256').update(text).digest('hex');
80
+ const sha = (0, node_crypto_1.createHash)('sha256').update(text).update(sinceRaw ?? '').digest('hex');
72
81
  let state = { vendor, input_sha256: sha, next_index: 0, total: rows.length, succeeded: 0, failed: 0, jobs: [] };
73
82
  if ((0, node_fs_1.existsSync)(statePath)) {
74
83
  const saved = JSON.parse((0, node_fs_1.readFileSync)(statePath, 'utf8'));
@@ -88,20 +97,21 @@ async function importUsers(ctx, args) {
88
97
  ctx.io.err(`note: ${w}`);
89
98
  while (state.next_index < rows.length) {
90
99
  const batch = rows.slice(state.next_index, state.next_index + batchSize);
91
- const body = { users: batch, upsert: true };
100
+ const body = { users: batch, upsert: onConflict === 'update' };
101
+ if (passwordPolicy)
102
+ body.password_policy = passwordPolicy;
92
103
  if (args.values['create-orgs'])
93
104
  body.create_organizations = true;
94
105
  if (hashConfig)
95
106
  body.password_hash_config = { firebase: hashConfig };
96
- let job = await http.post('/v1/user_imports', body);
97
- // A batch over the inline limit is queued; poll it to completion.
98
- while (job.status === 'pending' || job.status === 'processing') {
99
- await (ctx.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms))))(2000);
100
- job = await http.get(`/v1/jobs/${job.id}`);
101
- }
107
+ const job = await (0, import_jsonl_1.sendImportBatch)(ctx, http, body);
108
+ // Under --on-conflict skip an existing user is reported as a row issue; it is not one here.
109
+ const matched = (job.results ?? []).filter((r) => r.outcome === 'matched').length;
102
110
  state.next_index += batch.length;
103
111
  state.succeeded += job.succeeded;
104
- state.failed += job.failed;
112
+ state.failed += job.failed - matched;
113
+ if (matched)
114
+ state.skipped = (state.skipped ?? 0) + matched;
105
115
  state.jobs.push(job.id);
106
116
  (0, node_fs_1.writeFileSync)(statePath, JSON.stringify(state, null, 2));
107
117
  if (!json)
@@ -110,7 +120,7 @@ async function importUsers(ctx, args) {
110
120
  if (json)
111
121
  (0, output_1.printJson)(ctx.io, { ...state, summary, warnings });
112
122
  else {
113
- ctx.io.out(`Imported ${rows.length} user(s) from ${vendor}: ${state.succeeded} created or updated, ${state.failed} row issue(s).`);
123
+ ctx.io.out(`Imported ${rows.length} user(s) from ${vendor}: ${state.succeeded} created or updated, ${state.skipped ? `${state.skipped} skipped, ` : ''}${state.failed} row issue(s).`);
114
124
  if (state.failed)
115
125
  ctx.io.out(`Per-row issues: GET /v1/jobs/<job-id>/errors for jobs ${state.jobs.join(', ')}`);
116
126
  }