@badgie/crm-cli 0.2.2 → 0.3.1

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.
@@ -1,7 +1,13 @@
1
1
  import { getAuthedClient } from '../core/supabase.js';
2
2
  import { commonListOptions, output, parseColumns, parseLimit } from '../core/format.js';
3
+ import { maybeResolve } from '../core/resolve.js';
4
+ import { bulkOptions, collectIds, runBulk } from '../core/bulk.js';
5
+ import { swapIfLegacyOrder } from '../core/compat.js';
3
6
  async function listTasks(_a, opts) {
4
7
  const { client } = await getAuthedClient();
8
+ const assignedTo = await maybeResolve(client, 'team_member', opts.assignedTo);
9
+ const clientId = await maybeResolve(client, 'client', opts.clientId);
10
+ const leadId = await maybeResolve(client, 'lead', opts.leadId);
5
11
  let q = client
6
12
  .from('tasks')
7
13
  .select('id, title, status, priority, type, due_date, assigned_to, client_id, lead_id, created_at, is_archived')
@@ -9,14 +15,14 @@ async function listTasks(_a, opts) {
9
15
  .limit(parseLimit(opts));
10
16
  if (typeof opts.status === 'string')
11
17
  q = q.eq('status', opts.status);
12
- if (typeof opts.assignedTo === 'string')
13
- q = q.eq('assigned_to', opts.assignedTo);
18
+ if (assignedTo)
19
+ q = q.eq('assigned_to', assignedTo);
14
20
  if (typeof opts.priority === 'string')
15
21
  q = q.eq('priority', opts.priority);
16
- if (typeof opts.clientId === 'string')
17
- q = q.eq('client_id', opts.clientId);
18
- if (typeof opts.leadId === 'string')
19
- q = q.eq('lead_id', opts.leadId);
22
+ if (clientId)
23
+ q = q.eq('client_id', clientId);
24
+ if (leadId)
25
+ q = q.eq('lead_id', leadId);
20
26
  if (typeof opts.type === 'string')
21
27
  q = q.eq('type', opts.type);
22
28
  if (typeof opts.search === 'string')
@@ -33,7 +39,13 @@ async function listTasks(_a, opts) {
33
39
  output(data ?? [], { pretty: !!opts.pretty, columns: parseColumns(opts) });
34
40
  }
35
41
  async function createTask(_a, opts) {
42
+ if (typeof opts.title !== 'string' || opts.title.trim() === '') {
43
+ throw new Error('--title is required');
44
+ }
36
45
  const { client } = await getAuthedClient();
46
+ const assignedTo = await maybeResolve(client, 'team_member', opts.assignedTo);
47
+ const leadId = await maybeResolve(client, 'lead', opts.leadId);
48
+ const clientId = await maybeResolve(client, 'client', opts.clientId);
37
49
  const { data, error } = await client
38
50
  .from('tasks')
39
51
  .insert({
@@ -42,9 +54,9 @@ async function createTask(_a, opts) {
42
54
  priority: opts.priority ?? 'medium',
43
55
  status: opts.status ?? 'pending',
44
56
  due_date: opts.dueDate ?? null,
45
- assigned_to: opts.assignedTo ?? null,
46
- lead_id: opts.leadId ?? null,
47
- client_id: opts.clientId ?? null,
57
+ assigned_to: assignedTo,
58
+ lead_id: leadId,
59
+ client_id: clientId,
48
60
  })
49
61
  .select('*')
50
62
  .single();
@@ -53,32 +65,83 @@ async function createTask(_a, opts) {
53
65
  output(data, { pretty: !!opts.pretty });
54
66
  }
55
67
  async function setTaskStatus(args, opts) {
68
+ swapIfLegacyOrder(args, 'status', 'id', 'tasks set-status');
56
69
  const { client } = await getAuthedClient();
57
- const { data, error } = await client
58
- .from('tasks')
59
- .update({ status: args.status })
60
- .eq('id', args.id)
61
- .select('id, status')
62
- .single();
63
- if (error)
64
- throw error;
65
- output(data, { pretty: !!opts.pretty });
70
+ if (!args.status)
71
+ throw new Error('status argument is required');
72
+ const ids = await collectIds({
73
+ positional: args.id,
74
+ ids: opts.ids,
75
+ idsFile: opts.idsFile,
76
+ fromStdin: !!opts.stdin,
77
+ });
78
+ if (ids.length === 0)
79
+ throw new Error('No IDs provided. Pass <id>, --ids, --ids-file, or --stdin.');
80
+ if (ids.length === 1 && !opts.dryRun) {
81
+ const { data, error } = await client
82
+ .from('tasks')
83
+ .update({ status: args.status })
84
+ .eq('id', ids[0])
85
+ .select('id, status')
86
+ .single();
87
+ if (error)
88
+ throw error;
89
+ output(data, { pretty: !!opts.pretty });
90
+ return;
91
+ }
92
+ const result = await runBulk(ids, async (id) => {
93
+ const { data, error } = await client
94
+ .from('tasks')
95
+ .update({ status: args.status })
96
+ .eq('id', id)
97
+ .select('id, status')
98
+ .single();
99
+ if (error)
100
+ throw error;
101
+ return data;
102
+ }, { dryRun: !!opts.dryRun, concurrency: Number(opts.concurrency ?? 5), label: 'set-status' });
103
+ output({ updated: result.ok.length, failed: result.failed.length, errors: result.failed.slice(0, 10) }, { pretty: !!opts.pretty });
66
104
  }
67
105
  async function archiveTask(args, opts) {
68
106
  const { client } = await getAuthedClient();
69
- const { data, error } = await client
70
- .from('tasks')
71
- .update({ is_archived: true })
72
- .eq('id', args.id)
73
- .select('id, is_archived')
74
- .single();
75
- if (error)
76
- throw error;
77
- output(data, { pretty: !!opts.pretty });
107
+ const ids = await collectIds({
108
+ positional: args.id,
109
+ ids: opts.ids,
110
+ idsFile: opts.idsFile,
111
+ fromStdin: !!opts.stdin,
112
+ });
113
+ if (ids.length === 0)
114
+ throw new Error('No IDs provided. Pass <id>, --ids, --ids-file, or --stdin.');
115
+ if (ids.length === 1 && !opts.dryRun) {
116
+ const { data, error } = await client
117
+ .from('tasks')
118
+ .update({ is_archived: true })
119
+ .eq('id', ids[0])
120
+ .select('id, is_archived')
121
+ .single();
122
+ if (error)
123
+ throw error;
124
+ output(data, { pretty: !!opts.pretty });
125
+ return;
126
+ }
127
+ const result = await runBulk(ids, async (id) => {
128
+ const { data, error } = await client
129
+ .from('tasks')
130
+ .update({ is_archived: true })
131
+ .eq('id', id)
132
+ .select('id, is_archived')
133
+ .single();
134
+ if (error)
135
+ throw error;
136
+ return data;
137
+ }, { dryRun: !!opts.dryRun, concurrency: Number(opts.concurrency ?? 5), label: 'archive' });
138
+ output({ archived: result.ok.length, failed: result.failed.length, errors: result.failed.slice(0, 10) }, { pretty: !!opts.pretty });
78
139
  }
79
140
  // developer_tasks
80
141
  async function listDevTasks(_a, opts) {
81
142
  const { client } = await getAuthedClient();
143
+ const assignedTo = await maybeResolve(client, 'team_member', opts.assignedTo);
144
+ const reportedBy = await maybeResolve(client, 'team_member', opts.reportedBy);
82
145
  let q = client
83
146
  .from('developer_tasks')
84
147
  .select('id, title, status, type, importance, priority, assigned_to, reported_by, created_at, is_archived')
@@ -92,10 +155,10 @@ async function listDevTasks(_a, opts) {
92
155
  const importanceFilter = (opts.importance ?? opts.priority);
93
156
  if (typeof importanceFilter === 'string')
94
157
  q = q.eq('importance', importanceFilter);
95
- if (typeof opts.assignedTo === 'string')
96
- q = q.eq('assigned_to', opts.assignedTo);
97
- if (typeof opts.reportedBy === 'string')
98
- q = q.eq('reported_by', opts.reportedBy);
158
+ if (assignedTo)
159
+ q = q.eq('assigned_to', assignedTo);
160
+ if (reportedBy)
161
+ q = q.eq('reported_by', reportedBy);
99
162
  if (typeof opts.search === 'string')
100
163
  q = q.ilike('title', `%${opts.search}%`);
101
164
  if (opts.archived === undefined)
@@ -126,6 +189,8 @@ async function createDevTask(_a, opts) {
126
189
  // CLI's --priority|--importance flag maps to the importance column
127
190
  // (low|medium|high). The integer priority column above is sort order.
128
191
  const importance = (opts.importance ?? opts.priority ?? 'medium');
192
+ const assignedTo = await maybeResolve(client, 'team_member', opts.assignedTo);
193
+ const reportedBy = await maybeResolve(client, 'team_member', opts.reportedBy);
129
194
  const { data, error } = await client
130
195
  .from('developer_tasks')
131
196
  .insert({
@@ -135,8 +200,8 @@ async function createDevTask(_a, opts) {
135
200
  importance,
136
201
  priority: nextPriority,
137
202
  description: typeof opts.description === 'string' ? opts.description : null,
138
- assigned_to: opts.assignedTo ?? null,
139
- reported_by: opts.reportedBy ?? null,
203
+ assigned_to: assignedTo,
204
+ reported_by: reportedBy,
140
205
  updated_at: new Date().toISOString(),
141
206
  })
142
207
  .select('*')
@@ -146,16 +211,79 @@ async function createDevTask(_a, opts) {
146
211
  output(data, { pretty: !!opts.pretty });
147
212
  }
148
213
  async function setDevTaskStatus(args, opts) {
214
+ swapIfLegacyOrder(args, 'status', 'id', 'development set-status');
149
215
  const { client } = await getAuthedClient();
150
- const { data, error } = await client
151
- .from('developer_tasks')
152
- .update({ status: args.status })
153
- .eq('id', args.id)
154
- .select('id, status')
155
- .single();
156
- if (error)
157
- throw error;
158
- output(data, { pretty: !!opts.pretty });
216
+ if (!args.status)
217
+ throw new Error('status argument is required');
218
+ const ids = await collectIds({
219
+ positional: args.id,
220
+ ids: opts.ids,
221
+ idsFile: opts.idsFile,
222
+ fromStdin: !!opts.stdin,
223
+ });
224
+ if (ids.length === 0)
225
+ throw new Error('No IDs provided. Pass <id>, --ids, --ids-file, or --stdin.');
226
+ if (ids.length === 1 && !opts.dryRun) {
227
+ const { data, error } = await client
228
+ .from('developer_tasks')
229
+ .update({ status: args.status, updated_at: new Date().toISOString() })
230
+ .eq('id', ids[0])
231
+ .select('id, status')
232
+ .single();
233
+ if (error)
234
+ throw error;
235
+ output(data, { pretty: !!opts.pretty });
236
+ return;
237
+ }
238
+ const now = new Date().toISOString();
239
+ const result = await runBulk(ids, async (id) => {
240
+ const { data, error } = await client
241
+ .from('developer_tasks')
242
+ .update({ status: args.status, updated_at: now })
243
+ .eq('id', id)
244
+ .select('id, status')
245
+ .single();
246
+ if (error)
247
+ throw error;
248
+ return data;
249
+ }, { dryRun: !!opts.dryRun, concurrency: Number(opts.concurrency ?? 5), label: 'set-status' });
250
+ output({ updated: result.ok.length, failed: result.failed.length, errors: result.failed.slice(0, 10) }, { pretty: !!opts.pretty });
251
+ }
252
+ async function archiveDevTask(args, opts) {
253
+ const { client } = await getAuthedClient();
254
+ const ids = await collectIds({
255
+ positional: args.id,
256
+ ids: opts.ids,
257
+ idsFile: opts.idsFile,
258
+ fromStdin: !!opts.stdin,
259
+ });
260
+ if (ids.length === 0)
261
+ throw new Error('No IDs provided. Pass <id>, --ids, --ids-file, or --stdin.');
262
+ const now = new Date().toISOString();
263
+ if (ids.length === 1 && !opts.dryRun) {
264
+ const { data, error } = await client
265
+ .from('developer_tasks')
266
+ .update({ is_archived: true, updated_at: now })
267
+ .eq('id', ids[0])
268
+ .select('id, is_archived')
269
+ .single();
270
+ if (error)
271
+ throw error;
272
+ output(data, { pretty: !!opts.pretty });
273
+ return;
274
+ }
275
+ const result = await runBulk(ids, async (id) => {
276
+ const { data, error } = await client
277
+ .from('developer_tasks')
278
+ .update({ is_archived: true, updated_at: now })
279
+ .eq('id', id)
280
+ .select('id, is_archived')
281
+ .single();
282
+ if (error)
283
+ throw error;
284
+ return data;
285
+ }, { dryRun: !!opts.dryRun, concurrency: Number(opts.concurrency ?? 5), label: 'archive' });
286
+ output({ archived: result.ok.length, failed: result.failed.length, errors: result.failed.slice(0, 10) }, { pretty: !!opts.pretty });
159
287
  }
160
288
  export const tasksModule = {
161
289
  name: 'tasks',
@@ -169,9 +297,9 @@ export const tasksModule = {
169
297
  { flag: '--status <s>', description: 'pending|in_progress|completed…' },
170
298
  { flag: '--priority <p>', description: 'low|medium|high' },
171
299
  { flag: '--type <t>', description: 'task type' },
172
- { flag: '--assigned-to <uuid>', description: 'filter by assignee' },
173
- { flag: '--client-id <uuid>', description: 'filter by client' },
174
- { flag: '--lead-id <uuid>', description: 'filter by lead' },
300
+ { flag: '--assigned-to <uuid|name|email>', description: 'filter by assignee' },
301
+ { flag: '--client-id <uuid|name|email>', description: 'filter by client' },
302
+ { flag: '--lead-id <uuid|title>', description: 'filter by lead' },
175
303
  { flag: '--search <text>', description: 'ilike on title or description' },
176
304
  { flag: '--due-before <date>', description: 'due_date <= YYYY-MM-DD' },
177
305
  { flag: '--due-after <date>', description: 'due_date >= YYYY-MM-DD' },
@@ -190,30 +318,35 @@ export const tasksModule = {
190
318
  { flag: '--priority <p>', description: 'low|medium|high' },
191
319
  { flag: '--status <s>', description: 'default pending' },
192
320
  { flag: '--due-date <date>', description: 'ISO date' },
193
- { flag: '--assigned-to <uuid>', description: 'team_members.id' },
194
- { flag: '--lead-id <uuid>', description: 'link to lead' },
195
- { flag: '--client-id <uuid>', description: 'link to client' },
321
+ { flag: '--assigned-to <uuid|name|email>', description: 'team member (name resolved via ilike)' },
322
+ { flag: '--lead-id <uuid|title>', description: 'link to lead' },
323
+ { flag: '--client-id <uuid|name|email>', description: 'link to client' },
196
324
  { flag: '--pretty', description: 'human output' },
197
325
  ],
198
326
  handler: createTask,
199
327
  },
200
328
  {
201
329
  path: ['tasks', 'set-status'],
202
- summary: 'Change task status',
330
+ summary: 'Change task status (single or bulk)',
203
331
  tags: ['write'],
204
332
  args: [
205
- { name: 'id', required: true, description: 'task uuid' },
206
333
  { name: 'status', required: true, description: 'new status' },
334
+ { name: 'id', required: false, description: 'task uuid (or use --ids / --stdin)' },
335
+ ],
336
+ options: [...bulkOptions, { flag: '--pretty', description: 'human output' }],
337
+ examples: [
338
+ 'badgie-crm tasks set-status completed <uuid>',
339
+ 'badgie-crm tasks set-status completed --ids "uuid1,uuid2,uuid3"',
340
+ 'badgie-crm tasks set-status completed --ids-file ids.txt --dry-run',
207
341
  ],
208
- options: [{ flag: '--pretty', description: 'human output' }],
209
342
  handler: setTaskStatus,
210
343
  },
211
344
  {
212
345
  path: ['tasks', 'archive'],
213
- summary: 'Archive a task',
346
+ summary: 'Archive a task (single or bulk)',
214
347
  tags: ['write'],
215
- args: [{ name: 'id', required: true, description: 'task uuid' }],
216
- options: [{ flag: '--pretty', description: 'human output' }],
348
+ args: [{ name: 'id', required: false, description: 'task uuid (or use --ids / --stdin)' }],
349
+ options: [...bulkOptions, { flag: '--pretty', description: 'human output' }],
217
350
  handler: archiveTask,
218
351
  },
219
352
  {
@@ -225,8 +358,8 @@ export const tasksModule = {
225
358
  { flag: '--type <t>', description: 'bug|feature|idea|…' },
226
359
  { flag: '--importance <i>', description: 'low|medium|high (alias: --priority)' },
227
360
  { flag: '--priority <p>', description: 'alias for --importance' },
228
- { flag: '--assigned-to <uuid>', description: 'filter by assignee' },
229
- { flag: '--reported-by <uuid>', description: 'filter by reporter' },
361
+ { flag: '--assigned-to <uuid|name|email>', description: 'filter by assignee' },
362
+ { flag: '--reported-by <uuid|name|email>', description: 'filter by reporter' },
230
363
  { flag: '--search <text>', description: 'ilike on title' },
231
364
  { flag: '--archived', description: 'include archived' },
232
365
  ...commonListOptions(),
@@ -244,23 +377,31 @@ export const tasksModule = {
244
377
  { flag: '--priority <p>', description: 'alias for --importance' },
245
378
  { flag: '--status <s>', description: 'default pending' },
246
379
  { flag: '--description <text>', description: 'long description' },
247
- { flag: '--assigned-to <uuid>', description: 'assignee (team_members.id)' },
248
- { flag: '--reported-by <uuid>', description: 'reporter (team_members.id)' },
380
+ { flag: '--assigned-to <uuid|name|email>', description: 'assignee (team member)' },
381
+ { flag: '--reported-by <uuid|name|email>', description: 'reporter (team member)' },
249
382
  { flag: '--pretty', description: 'human output' },
250
383
  ],
251
384
  handler: createDevTask,
252
385
  },
253
386
  {
254
387
  path: ['development', 'set-status'],
255
- summary: 'Change developer_task status',
388
+ summary: 'Change developer_task status (single or bulk)',
256
389
  tags: ['write'],
257
390
  args: [
258
- { name: 'id', required: true, description: 'developer_task uuid' },
259
391
  { name: 'status', required: true, description: 'new status' },
392
+ { name: 'id', required: false, description: 'developer_task uuid (or use --ids / --stdin)' },
260
393
  ],
261
- options: [{ flag: '--pretty', description: 'human output' }],
394
+ options: [...bulkOptions, { flag: '--pretty', description: 'human output' }],
262
395
  handler: setDevTaskStatus,
263
396
  },
397
+ {
398
+ path: ['development', 'archive'],
399
+ summary: 'Archive a developer_task (single or bulk)',
400
+ tags: ['write'],
401
+ args: [{ name: 'id', required: false, description: 'developer_task uuid (or use --ids / --stdin)' }],
402
+ options: [...bulkOptions, { flag: '--pretty', description: 'human output' }],
403
+ handler: archiveDevTask,
404
+ },
264
405
  ],
265
406
  };
266
407
  //# sourceMappingURL=tasks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,8 @@
1
1
  import { getAuthedClient } from '../core/supabase.js';
2
2
  import { commonListOptions, output, parseColumns, parseLimit } from '../core/format.js';
3
+ import { maybeResolve } from '../core/resolve.js';
4
+ import { bulkOptions, collectIds, runBulk } from '../core/bulk.js';
5
+ import { swapIfLegacyOrder } from '../core/compat.js';
3
6
  async function listTopClients(_a, opts) {
4
7
  const { client } = await getAuthedClient();
5
8
  const now = new Date();
@@ -15,8 +18,9 @@ async function listTopClients(_a, opts) {
15
18
  .eq('year', year)
16
19
  .order('created_at', { ascending: false })
17
20
  .limit(parseLimit(opts));
18
- if (typeof opts.kam === 'string')
19
- reviewsQ = reviewsQ.eq('reviewed_by', opts.kam);
21
+ const kam = await maybeResolve(client, 'team_member', opts.kam);
22
+ if (kam)
23
+ reviewsQ = reviewsQ.eq('reviewed_by', kam);
20
24
  if (typeof opts.status === 'string')
21
25
  reviewsQ = reviewsQ.eq('status', opts.status);
22
26
  const { data, error } = await reviewsQ;
@@ -33,16 +37,42 @@ async function listTopClients(_a, opts) {
33
37
  output(rows, { pretty: !!opts.pretty, columns: parseColumns(opts) });
34
38
  }
35
39
  async function setReviewStatus(args, opts) {
40
+ swapIfLegacyOrder(args, 'status', 'id', 'top-clients set-status');
36
41
  const { client } = await getAuthedClient();
37
- const { data, error } = await client
38
- .from('client_monthly_reviews')
39
- .update({ status: args.status })
40
- .eq('id', args.id)
41
- .select('id, status')
42
- .single();
43
- if (error)
44
- throw error;
45
- output(data, { pretty: !!opts.pretty });
42
+ if (!args.status)
43
+ throw new Error('status argument is required');
44
+ const ids = await collectIds({
45
+ positional: args.id,
46
+ ids: opts.ids,
47
+ idsFile: opts.idsFile,
48
+ fromStdin: !!opts.stdin,
49
+ });
50
+ if (ids.length === 0)
51
+ throw new Error('No IDs provided. Pass <id>, --ids, --ids-file, or --stdin.');
52
+ if (ids.length === 1 && !opts.dryRun) {
53
+ const { data, error } = await client
54
+ .from('client_monthly_reviews')
55
+ .update({ status: args.status })
56
+ .eq('id', ids[0])
57
+ .select('id, status')
58
+ .single();
59
+ if (error)
60
+ throw error;
61
+ output(data, { pretty: !!opts.pretty });
62
+ return;
63
+ }
64
+ const result = await runBulk(ids, async (id) => {
65
+ const { data, error } = await client
66
+ .from('client_monthly_reviews')
67
+ .update({ status: args.status })
68
+ .eq('id', id)
69
+ .select('id, status')
70
+ .single();
71
+ if (error)
72
+ throw error;
73
+ return data;
74
+ }, { dryRun: !!opts.dryRun, concurrency: Number(opts.concurrency ?? 5), label: 'set-status' });
75
+ output({ updated: result.ok.length, failed: result.failed.length, errors: result.failed.slice(0, 10) }, { pretty: !!opts.pretty });
46
76
  }
47
77
  export const topClientsModule = {
48
78
  name: 'top-clients',
@@ -55,7 +85,7 @@ export const topClientsModule = {
55
85
  options: [
56
86
  { flag: '--month <n>', description: '1-12 (default current month)' },
57
87
  { flag: '--year <n>', description: 'YYYY (default current year)' },
58
- { flag: '--kam <uuid>', description: 'filter by reviewed_by (team_members.id)' },
88
+ { flag: '--kam <uuid|name|email>', description: 'filter by reviewed_by (team member)' },
59
89
  { flag: '--status <s>', description: 'pending|completed|…' },
60
90
  { flag: '--search <text>', description: 'filter by client name (client-side)' },
61
91
  ...commonListOptions(),
@@ -68,13 +98,13 @@ export const topClientsModule = {
68
98
  },
69
99
  {
70
100
  path: ['top-clients', 'set-status'],
71
- summary: 'Change review status',
101
+ summary: 'Change review status (single or bulk)',
72
102
  tags: ['write'],
73
103
  args: [
74
- { name: 'id', required: true, description: 'client_monthly_reviews.id' },
75
104
  { name: 'status', required: true, description: 'new status' },
105
+ { name: 'id', required: false, description: 'client_monthly_reviews.id (or use --ids / --stdin)' },
76
106
  ],
77
- options: [{ flag: '--pretty', description: 'human output' }],
107
+ options: [...bulkOptions, { flag: '--pretty', description: 'human output' }],
78
108
  handler: setReviewStatus,
79
109
  },
80
110
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"top-clients.js","sourceRoot":"","sources":["../../src/commands/top-clients.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"top-clients.js","sourceRoot":"","sources":["../../src/commands/top-clients.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { shortError } from './errors.js';
3
+ export async function collectIds(input) {
4
+ const ids = new Set();
5
+ if (input.positional)
6
+ ids.add(input.positional.trim());
7
+ if (typeof input.ids === 'string') {
8
+ input.ids.split(/[,\s]+/).map((s) => s.trim()).filter(Boolean).forEach((i) => ids.add(i));
9
+ }
10
+ if (typeof input.idsFile === 'string' && input.idsFile) {
11
+ const contents = await readFile(input.idsFile, 'utf8');
12
+ contents.split(/\r?\n/).map((s) => s.trim()).filter(Boolean).forEach((i) => ids.add(i));
13
+ }
14
+ if (input.fromStdin) {
15
+ const stdin = await readStdin();
16
+ stdin.split(/\r?\n/).map((s) => s.trim()).filter(Boolean).forEach((i) => ids.add(i));
17
+ }
18
+ return [...ids].filter((id) => id.length > 0);
19
+ }
20
+ async function readStdin() {
21
+ if (process.stdin.isTTY)
22
+ return '';
23
+ const chunks = [];
24
+ for await (const chunk of process.stdin) {
25
+ chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk);
26
+ }
27
+ return Buffer.concat(chunks).toString('utf8');
28
+ }
29
+ export async function runBulk(ids, fn, opts = {}) {
30
+ const label = opts.label ?? 'process';
31
+ if (opts.dryRun) {
32
+ process.stderr.write(`[dry-run] would ${label} ${ids.length} id${ids.length === 1 ? '' : 's'}:\n`);
33
+ for (const id of ids)
34
+ process.stderr.write(` ${id}\n`);
35
+ return { ok: [], failed: [] };
36
+ }
37
+ const concurrency = Math.max(1, Math.min(20, Number(opts.concurrency ?? 5)));
38
+ const result = { ok: [], failed: [] };
39
+ let index = 0;
40
+ async function worker() {
41
+ while (index < ids.length) {
42
+ const i = index++;
43
+ const id = ids[i];
44
+ try {
45
+ const data = await fn(id);
46
+ result.ok.push({ id, data });
47
+ opts.onProgress?.(id, true);
48
+ process.stderr.write(` ✓ ${id}\n`);
49
+ }
50
+ catch (err) {
51
+ const msg = shortError(err);
52
+ result.failed.push({ id, error: msg });
53
+ opts.onProgress?.(id, false);
54
+ process.stderr.write(` ✗ ${id} — ${msg}\n`);
55
+ }
56
+ }
57
+ }
58
+ await Promise.all(Array.from({ length: concurrency }, worker));
59
+ return result;
60
+ }
61
+ export const bulkOptions = [
62
+ { flag: '--ids <list>', description: 'comma/space-separated list of IDs' },
63
+ { flag: '--ids-file <path>', description: 'newline-separated IDs from file' },
64
+ { flag: '--stdin', description: 'read newline-separated IDs from stdin' },
65
+ { flag: '--dry-run', description: 'show what would happen without writing' },
66
+ { flag: '--concurrency <n>', description: 'parallel ops (default 5, max 20)' },
67
+ ];
68
+ //# sourceMappingURL=bulk.js.map