@will-17173/telegram-cli 0.3.0 → 0.4.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 (145) hide show
  1. package/README.md +185 -61
  2. package/README.zh-CN.md +199 -77
  3. package/dist/account/account-authenticator.js +95 -0
  4. package/dist/account/account-authenticator.js.map +1 -0
  5. package/dist/account/account-context.js +7 -0
  6. package/dist/account/account-context.js.map +1 -1
  7. package/dist/account/account-name.js +17 -0
  8. package/dist/account/account-name.js.map +1 -0
  9. package/dist/account/account-presets.js +20 -3
  10. package/dist/account/account-presets.js.map +1 -1
  11. package/dist/account/account-store.js +277 -37
  12. package/dist/account/account-store.js.map +1 -1
  13. package/dist/cli/app.js +12 -1
  14. package/dist/cli/app.js.map +1 -1
  15. package/dist/cli/output.js +21 -6
  16. package/dist/cli/output.js.map +1 -1
  17. package/dist/cli/secure-input.js +408 -0
  18. package/dist/cli/secure-input.js.map +1 -0
  19. package/dist/commands/account-options.js +37 -7
  20. package/dist/commands/account-options.js.map +1 -1
  21. package/dist/commands/account.js +144 -62
  22. package/dist/commands/account.js.map +1 -1
  23. package/dist/commands/archive.js +151 -0
  24. package/dist/commands/archive.js.map +1 -0
  25. package/dist/commands/config.js +119 -12
  26. package/dist/commands/config.js.map +1 -1
  27. package/dist/commands/contact.js +58 -0
  28. package/dist/commands/contact.js.map +1 -0
  29. package/dist/commands/data.js +14 -7
  30. package/dist/commands/data.js.map +1 -1
  31. package/dist/commands/dialog.js +156 -0
  32. package/dist/commands/dialog.js.map +1 -0
  33. package/dist/commands/folder.js +113 -0
  34. package/dist/commands/folder.js.map +1 -0
  35. package/dist/commands/group-write.js +45 -5
  36. package/dist/commands/group-write.js.map +1 -1
  37. package/dist/commands/group.js +23 -1
  38. package/dist/commands/group.js.map +1 -1
  39. package/dist/commands/notification.js +76 -0
  40. package/dist/commands/notification.js.map +1 -0
  41. package/dist/commands/query.js +22 -15
  42. package/dist/commands/query.js.map +1 -1
  43. package/dist/commands/telegram-runner.js +40 -18
  44. package/dist/commands/telegram-runner.js.map +1 -1
  45. package/dist/commands/telegram.js +82 -38
  46. package/dist/commands/telegram.js.map +1 -1
  47. package/dist/commands/time-range.js +39 -0
  48. package/dist/commands/time-range.js.map +1 -0
  49. package/dist/commands/types.js +3 -2
  50. package/dist/commands/types.js.map +1 -1
  51. package/dist/config/credential-store.js +24 -4
  52. package/dist/config/credential-store.js.map +1 -1
  53. package/dist/config/env.js +4 -1
  54. package/dist/config/env.js.map +1 -1
  55. package/dist/group-commands/catalog.js +10 -0
  56. package/dist/group-commands/catalog.js.map +1 -1
  57. package/dist/group-commands/executor.js +13 -4
  58. package/dist/group-commands/executor.js.map +1 -1
  59. package/dist/presenters/group.js +16 -0
  60. package/dist/presenters/group.js.map +1 -1
  61. package/dist/presenters/human.js +113 -0
  62. package/dist/presenters/human.js.map +1 -1
  63. package/dist/presenters/ink/group-command-result.js +2 -0
  64. package/dist/presenters/ink/group-command-result.js.map +1 -1
  65. package/dist/presenters/ink/listen-scroll.js +4 -3
  66. package/dist/presenters/ink/listen-scroll.js.map +1 -1
  67. package/dist/presenters/ink/listen.js +163 -43
  68. package/dist/presenters/ink/listen.js.map +1 -1
  69. package/dist/presenters/ink/mouse-scroll.js +12 -0
  70. package/dist/presenters/ink/mouse-scroll.js.map +1 -1
  71. package/dist/presenters/ink/secure-input.js +68 -0
  72. package/dist/presenters/ink/secure-input.js.map +1 -0
  73. package/dist/presenters/ink/use-group-command.js +78 -17
  74. package/dist/presenters/ink/use-group-command.js.map +1 -1
  75. package/dist/presenters/markdown.js +54 -0
  76. package/dist/presenters/markdown.js.map +1 -0
  77. package/dist/presenters/structured.js +8 -3
  78. package/dist/presenters/structured.js.map +1 -1
  79. package/dist/services/account-session-service.js +241 -0
  80. package/dist/services/account-session-service.js.map +1 -0
  81. package/dist/services/archive-layout.js +61 -0
  82. package/dist/services/archive-layout.js.map +1 -0
  83. package/dist/services/archive-manifest.js +187 -0
  84. package/dist/services/archive-manifest.js.map +1 -0
  85. package/dist/services/archive-markdown.js +383 -0
  86. package/dist/services/archive-markdown.js.map +1 -0
  87. package/dist/services/archive-service.js +718 -0
  88. package/dist/services/archive-service.js.map +1 -0
  89. package/dist/services/archive-types.js +2 -0
  90. package/dist/services/archive-types.js.map +1 -0
  91. package/dist/services/attachment-download.js +7 -2
  92. package/dist/services/attachment-download.js.map +1 -1
  93. package/dist/services/auto-download-coordinator.js +2 -4
  94. package/dist/services/auto-download-coordinator.js.map +1 -1
  95. package/dist/services/contact-service.js +78 -0
  96. package/dist/services/contact-service.js.map +1 -0
  97. package/dist/services/dialog-service.js +140 -0
  98. package/dist/services/dialog-service.js.map +1 -0
  99. package/dist/services/folder-service.js +200 -0
  100. package/dist/services/folder-service.js.map +1 -0
  101. package/dist/services/group-write-service.js +78 -18
  102. package/dist/services/group-write-service.js.map +1 -1
  103. package/dist/services/message-service.js +17 -1
  104. package/dist/services/message-service.js.map +1 -1
  105. package/dist/services/notification-service.js +142 -0
  106. package/dist/services/notification-service.js.map +1 -0
  107. package/dist/services/write-access-policy.js +19 -0
  108. package/dist/services/write-access-policy.js.map +1 -0
  109. package/dist/telegram/archive-types.js +2 -0
  110. package/dist/telegram/archive-types.js.map +1 -0
  111. package/dist/telegram/client-factory.js +51 -11
  112. package/dist/telegram/client-factory.js.map +1 -1
  113. package/dist/telegram/contact-types.js +10 -0
  114. package/dist/telegram/contact-types.js.map +1 -0
  115. package/dist/telegram/dialog-types.js +2 -0
  116. package/dist/telegram/dialog-types.js.map +1 -0
  117. package/dist/telegram/errors.js +14 -0
  118. package/dist/telegram/errors.js.map +1 -0
  119. package/dist/telegram/fake-group-management.js +5 -0
  120. package/dist/telegram/fake-group-management.js.map +1 -1
  121. package/dist/telegram/folder-types.js +13 -0
  122. package/dist/telegram/folder-types.js.map +1 -0
  123. package/dist/telegram/group-write-types.js +28 -1
  124. package/dist/telegram/group-write-types.js.map +1 -1
  125. package/dist/telegram/mtcute-archive.js +190 -0
  126. package/dist/telegram/mtcute-archive.js.map +1 -0
  127. package/dist/telegram/mtcute-client.js +72 -11
  128. package/dist/telegram/mtcute-client.js.map +1 -1
  129. package/dist/telegram/mtcute-contacts.js +90 -0
  130. package/dist/telegram/mtcute-contacts.js.map +1 -0
  131. package/dist/telegram/mtcute-dialogs.js +186 -0
  132. package/dist/telegram/mtcute-dialogs.js.map +1 -0
  133. package/dist/telegram/mtcute-folders.js +318 -0
  134. package/dist/telegram/mtcute-folders.js.map +1 -0
  135. package/dist/telegram/mtcute-group-members.js +43 -3
  136. package/dist/telegram/mtcute-group-members.js.map +1 -1
  137. package/dist/telegram/mtcute-message-normalizer.js +63 -0
  138. package/dist/telegram/mtcute-message-normalizer.js.map +1 -0
  139. package/dist/telegram/mtcute-notifications.js +101 -0
  140. package/dist/telegram/mtcute-notifications.js.map +1 -0
  141. package/dist/telegram/notification-types.js +11 -0
  142. package/dist/telegram/notification-types.js.map +1 -0
  143. package/dist/telegram/types.js +6 -1
  144. package/dist/telegram/types.js.map +1 -1
  145. package/package.json +1 -1
@@ -0,0 +1,408 @@
1
+ import { StringDecoder } from 'node:string_decoder';
2
+ export class CliInterruptedError extends Error {
3
+ code = 'interrupted';
4
+ exitCode;
5
+ signal;
6
+ constructor(signal = 'SIGINT') {
7
+ super('Operation interrupted.');
8
+ this.name = 'CliInterruptedError';
9
+ this.signal = signal;
10
+ this.exitCode = signal === 'SIGHUP' ? 129 : signal === 'SIGTERM' ? 143 : 130;
11
+ }
12
+ }
13
+ export class InteractionRequiredError extends Error {
14
+ code = 'interaction_required';
15
+ constructor() {
16
+ super('Interactive terminal input is required.');
17
+ this.name = 'InteractionRequiredError';
18
+ }
19
+ }
20
+ export class InvalidInputError extends Error {
21
+ code = 'invalid_input';
22
+ constructor(message) {
23
+ super(message);
24
+ this.name = 'InvalidInputError';
25
+ }
26
+ }
27
+ export class InputBusyError extends Error {
28
+ code = 'input_busy';
29
+ constructor() {
30
+ super('Interactive terminal input is already in use.');
31
+ this.name = 'InputBusyError';
32
+ }
33
+ }
34
+ const activeTerminalInputs = new WeakSet();
35
+ const graphemeSegmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme' });
36
+ // Match the Ink secret field: ignore printable input beyond 4096 complete graphemes.
37
+ export const MAX_SECRET_INPUT_LENGTH = 4096;
38
+ const MAX_SECRET_INPUT_CODE_POINTS = MAX_SECRET_INPUT_LENGTH * 16;
39
+ const SIGNAL_CLEANUP_GRACE_MS = 100;
40
+ const pendingOutputWrites = new WeakMap();
41
+ const inputsAwaitingLineFeed = new WeakSet();
42
+ const ignoreOutputError = () => undefined;
43
+ export function createInterruptScope() {
44
+ const controller = new AbortController();
45
+ const previousExitCode = process.exitCode;
46
+ let fallback;
47
+ let assignedExitCode;
48
+ let disposed = false;
49
+ const keepAlive = setTimeout(() => undefined, 2_147_483_647);
50
+ // SIGKILL cannot be observed; for catchable signals, re-raise after a short cooperative cleanup window.
51
+ // Signal exit-status behavior is Unix-tested; Windows signal delivery is limited by Node and the host console.
52
+ const handlers = Object.fromEntries(['SIGINT', 'SIGHUP', 'SIGTERM'].map(processSignal => [
53
+ processSignal,
54
+ () => {
55
+ if (controller.signal.aborted || disposed)
56
+ return;
57
+ const interruption = new CliInterruptedError(processSignal);
58
+ assignedExitCode = interruption.exitCode;
59
+ process.exitCode = interruption.exitCode;
60
+ clearTimeout(keepAlive);
61
+ controller.abort(interruption);
62
+ if (disposed)
63
+ return;
64
+ fallback = setTimeout(() => {
65
+ removeHandlers();
66
+ process.kill(process.pid, processSignal);
67
+ }, SIGNAL_CLEANUP_GRACE_MS);
68
+ fallback.unref();
69
+ },
70
+ ]));
71
+ const removeHandlers = () => {
72
+ for (const processSignal of Object.keys(handlers)) {
73
+ process.removeListener(processSignal, handlers[processSignal]);
74
+ }
75
+ };
76
+ for (const processSignal of Object.keys(handlers)) {
77
+ process.once(processSignal, handlers[processSignal]);
78
+ }
79
+ return {
80
+ signal: controller.signal,
81
+ dispose: () => {
82
+ disposed = true;
83
+ clearTimeout(keepAlive);
84
+ if (fallback)
85
+ clearTimeout(fallback);
86
+ removeHandlers();
87
+ if (assignedExitCode !== undefined && process.exitCode === assignedExitCode) {
88
+ process.exitCode = previousExitCode;
89
+ }
90
+ },
91
+ };
92
+ }
93
+ export async function readVisibleInput(prompt, streams = {}) {
94
+ return readTerminalInput(prompt, streams, false);
95
+ }
96
+ export async function readSecret(prompt, streams = {}) {
97
+ return readTerminalInput(prompt, streams, true);
98
+ }
99
+ async function readTerminalInput(prompt, streams, hidden) {
100
+ const input = streams.input ?? process.stdin;
101
+ const output = streams.output ?? process.stderr;
102
+ if (input.isTTY !== true || ((hidden || input.isRaw === true) && typeof input.setRawMode !== 'function')) {
103
+ throw new InteractionRequiredError();
104
+ }
105
+ throwIfAborted(streams.signal);
106
+ if (input.readableEnded || input.destroyed)
107
+ throw new CliInterruptedError();
108
+ if (activeTerminalInputs.has(input) || input.listenerCount('data') > 0)
109
+ throw new InputBusyError();
110
+ activeTerminalInputs.add(input);
111
+ try {
112
+ drainBufferedInput(input);
113
+ return await readOwnedTerminalInput(prompt, input, output, streams.signal, hidden);
114
+ }
115
+ finally {
116
+ activeTerminalInputs.delete(input);
117
+ }
118
+ }
119
+ async function readOwnedTerminalInput(prompt, input, output, signal, hidden) {
120
+ const originalRawMode = input.isRaw === true;
121
+ const wasFlowing = input.readableFlowing === true;
122
+ const decoder = new StringDecoder('utf8');
123
+ let value = '';
124
+ let settled = false;
125
+ let rawModeTouched = false;
126
+ let promptStarted = false;
127
+ let promptWrite;
128
+ let operationFailed = false;
129
+ let escapeState = 'none';
130
+ let resolveInput;
131
+ let rejectInput;
132
+ const result = new Promise((resolve, reject) => {
133
+ resolveInput = resolve;
134
+ rejectInput = reject;
135
+ });
136
+ const settleValue = (line) => {
137
+ if (settled)
138
+ return;
139
+ settled = true;
140
+ resolveInput?.(line);
141
+ };
142
+ const settleError = (error) => {
143
+ if (settled)
144
+ return;
145
+ settled = true;
146
+ rejectInput?.(error);
147
+ };
148
+ const onData = (chunk) => {
149
+ if (settled)
150
+ return;
151
+ const text = typeof chunk === 'string' ? chunk : decoder.write(chunk);
152
+ const printable = [];
153
+ let examinedPrintable = 0;
154
+ let printableWasTruncated = false;
155
+ const flushPrintable = () => {
156
+ if (printable.length === 0 && !printableWasTruncated)
157
+ return;
158
+ value = hidden
159
+ ? appendBoundedPrintable(value, printable, printableWasTruncated)
160
+ : value + printable.join('');
161
+ printable.fill('');
162
+ printable.length = 0;
163
+ examinedPrintable = 0;
164
+ printableWasTruncated = false;
165
+ };
166
+ for (const character of text) {
167
+ const code = character.codePointAt(0);
168
+ if (inputsAwaitingLineFeed.has(input)) {
169
+ inputsAwaitingLineFeed.delete(input);
170
+ if (character === '\n')
171
+ continue;
172
+ }
173
+ if (code === 3) {
174
+ flushPrintable();
175
+ settleError(new CliInterruptedError());
176
+ return;
177
+ }
178
+ if (character === '\r' || character === '\n') {
179
+ flushPrintable();
180
+ if (character === '\r')
181
+ inputsAwaitingLineFeed.add(input);
182
+ if (hidden && value.length === 0)
183
+ settleError(new InvalidInputError('Secret input cannot be empty.'));
184
+ else
185
+ settleValue(value);
186
+ return;
187
+ }
188
+ if (code === 27) {
189
+ flushPrintable();
190
+ escapeState = 'start';
191
+ continue;
192
+ }
193
+ if (escapeState === 'start') {
194
+ escapeState = character === ']'
195
+ ? 'osc'
196
+ : character === '[' || character === 'O' ? 'sequence' : 'none';
197
+ continue;
198
+ }
199
+ if (escapeState === 'sequence') {
200
+ if (code != null && code >= 0x40 && code <= 0x7e)
201
+ escapeState = 'none';
202
+ continue;
203
+ }
204
+ if (escapeState === 'osc') {
205
+ if (code === 7)
206
+ escapeState = 'none';
207
+ continue;
208
+ }
209
+ if (code === 8 || code === 127) {
210
+ flushPrintable();
211
+ value = removeFinalGrapheme(value);
212
+ continue;
213
+ }
214
+ if (code != null && code >= 32 && (code < 127 || code > 159)) {
215
+ if (!hidden || examinedPrintable < MAX_SECRET_INPUT_CODE_POINTS) {
216
+ printable.push(character);
217
+ examinedPrintable += 1;
218
+ }
219
+ else {
220
+ printableWasTruncated = true;
221
+ }
222
+ }
223
+ }
224
+ flushPrintable();
225
+ };
226
+ const onInputError = (error) => settleError(error);
227
+ const onOutputError = (error) => settleError(error);
228
+ const onInputUnavailable = () => settleError(new CliInterruptedError());
229
+ const onAbort = () => settleError(abortReason(signal));
230
+ signal?.addEventListener('abort', onAbort, { once: true });
231
+ output.on('error', onOutputError);
232
+ input.once('error', onInputError);
233
+ input.once('end', onInputUnavailable);
234
+ input.once('close', onInputUnavailable);
235
+ try {
236
+ if (signal?.aborted)
237
+ settleError(abortReason(signal));
238
+ if (input.readableEnded || input.destroyed)
239
+ settleError(new CliInterruptedError());
240
+ if (!settled && (hidden || originalRawMode)) {
241
+ rawModeTouched = true;
242
+ input.setRawMode(hidden);
243
+ }
244
+ if (!settled) {
245
+ input.on('data', onData);
246
+ const unexpectedDataListeners = input.listeners('data').filter(listener => listener !== onData);
247
+ if (unexpectedDataListeners.length > 0)
248
+ settleError(new InputBusyError());
249
+ }
250
+ if (!settled)
251
+ input.resume();
252
+ if (!settled) {
253
+ promptStarted = true;
254
+ promptWrite = startOutputWrite(output, prompt, settleError);
255
+ }
256
+ return await result;
257
+ }
258
+ catch (error) {
259
+ operationFailed = true;
260
+ throw error;
261
+ }
262
+ finally {
263
+ let cleanupError;
264
+ const cleanup = (action) => {
265
+ try {
266
+ action();
267
+ }
268
+ catch (error) {
269
+ cleanupError ??= error;
270
+ }
271
+ };
272
+ cleanup(() => input.removeListener('data', onData));
273
+ cleanup(() => input.removeListener('error', onInputError));
274
+ cleanup(() => input.removeListener('end', onInputUnavailable));
275
+ cleanup(() => input.removeListener('close', onInputUnavailable));
276
+ cleanup(() => signal?.removeEventListener('abort', onAbort));
277
+ cleanup(() => {
278
+ // A broken writer may keep the token forever, so detach the operation closure before releasing input.
279
+ promptWrite?.detachErrorHandler();
280
+ promptWrite = undefined;
281
+ });
282
+ cleanup(() => {
283
+ if (rawModeTouched)
284
+ input.setRawMode(originalRawMode);
285
+ });
286
+ cleanup(() => {
287
+ if (!wasFlowing)
288
+ input.pause();
289
+ });
290
+ cleanup(() => output.removeListener('error', onOutputError));
291
+ cleanup(() => {
292
+ if (promptStarted && hidden)
293
+ startOutputWrite(output, '\n');
294
+ });
295
+ value = '';
296
+ if (!operationFailed && cleanupError !== undefined)
297
+ throw cleanupError;
298
+ }
299
+ }
300
+ function startOutputWrite(output, text, onError = ignoreOutputError) {
301
+ const state = getOutputWriteState(output);
302
+ const pendingWrite = { onError };
303
+ const handle = {
304
+ detachErrorHandler: () => {
305
+ pendingWrite.onError = ignoreOutputError;
306
+ },
307
+ };
308
+ state.pending.add(pendingWrite);
309
+ try {
310
+ output.write(text, error => {
311
+ state.pending.delete(pendingWrite);
312
+ if (error) {
313
+ state.failed = true;
314
+ pendingWrite.onError(error);
315
+ if (state.pending.size === 0)
316
+ scheduleOutputStateRelease(output, state);
317
+ }
318
+ else if (state.pending.size === 0 && !state.failed) {
319
+ releaseOutputWriteState(output, state);
320
+ }
321
+ });
322
+ }
323
+ catch (error) {
324
+ state.pending.delete(pendingWrite);
325
+ if (state.pending.size === 0 && !state.failed)
326
+ releaseOutputWriteState(output, state);
327
+ throw error instanceof Error ? error : new Error(String(error));
328
+ }
329
+ return handle;
330
+ }
331
+ function scheduleOutputStateRelease(output, state) {
332
+ const immediate = setImmediate(() => {
333
+ if (state.pending.size === 0)
334
+ releaseOutputWriteState(output, state);
335
+ });
336
+ immediate.unref();
337
+ }
338
+ function getOutputWriteState(output) {
339
+ const existing = pendingOutputWrites.get(output);
340
+ if (existing)
341
+ return existing;
342
+ const state = {};
343
+ state.pending = new Set();
344
+ state.failed = false;
345
+ state.guard = error => {
346
+ for (const pendingWrite of state.pending)
347
+ pendingWrite.onError(error);
348
+ if (state.pending.size === 0)
349
+ releaseOutputWriteState(output, state);
350
+ };
351
+ state.onClose = () => releaseOutputWriteState(output, state);
352
+ pendingOutputWrites.set(output, state);
353
+ output.on('error', state.guard);
354
+ output.once('close', state.onClose);
355
+ return state;
356
+ }
357
+ function releaseOutputWriteState(output, state) {
358
+ if (pendingOutputWrites.get(output) !== state)
359
+ return;
360
+ pendingOutputWrites.delete(output);
361
+ state.pending.clear();
362
+ output.removeListener('error', state.guard);
363
+ output.removeListener('close', state.onClose);
364
+ }
365
+ function removeFinalGrapheme(value) {
366
+ return Array.from(graphemeSegmenter.segment(value), part => part.segment).slice(0, -1).join('');
367
+ }
368
+ function appendBoundedPrintable(value, appended, appendedWasTruncated) {
369
+ const codePoints = [];
370
+ let examinedCodePoints = 0;
371
+ let preprocessingWasTruncated = appendedWasTruncated;
372
+ inputSources: for (const source of [value, appended]) {
373
+ for (const character of source) {
374
+ if (examinedCodePoints === MAX_SECRET_INPUT_CODE_POINTS) {
375
+ preprocessingWasTruncated = true;
376
+ break inputSources;
377
+ }
378
+ codePoints.push(character);
379
+ examinedCodePoints += 1;
380
+ }
381
+ }
382
+ const graphemes = Array.from(graphemeSegmenter.segment(codePoints.join('')), part => part.segment);
383
+ if (preprocessingWasTruncated)
384
+ graphemes.pop();
385
+ return graphemes.slice(0, MAX_SECRET_INPUT_LENGTH).join('');
386
+ }
387
+ function drainBufferedInput(input) {
388
+ while (input.read() !== null) {
389
+ // Discard bytes entered before this prompt, including remainder from a multiline paste.
390
+ }
391
+ }
392
+ export function isCliInterruptedError(error) {
393
+ return error instanceof CliInterruptedError;
394
+ }
395
+ export function isCliInputError(error) {
396
+ return error instanceof CliInterruptedError
397
+ || error instanceof InteractionRequiredError
398
+ || error instanceof InvalidInputError
399
+ || error instanceof InputBusyError;
400
+ }
401
+ function throwIfAborted(signal) {
402
+ if (signal?.aborted)
403
+ throw abortReason(signal);
404
+ }
405
+ function abortReason(signal) {
406
+ return isCliInputError(signal.reason) ? signal.reason : new CliInterruptedError();
407
+ }
408
+ //# sourceMappingURL=secure-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secure-input.js","sourceRoot":"","sources":["../../src/cli/secure-input.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { getDataDir } from '../config/env.js';
2
- import { resolveAccountContext } from '../account/account-context.js';
2
+ import { resolveAccountContext, resolveAuthenticatedAccountContext } from '../account/account-context.js';
3
3
  import { renderResult } from '../cli/output.js';
4
4
  import { outputFormatConflict } from './types.js';
5
- export async function runWithAccountContext(options, handler) {
6
- const conflict = outputFormatConflict(options);
5
+ export async function runWithAccountContext(options, handler, command) {
6
+ const effectiveOptions = command == null ? options : mergeOptionsWithGlobals(command, options);
7
+ const conflict = outputFormatConflict(effectiveOptions);
7
8
  if (conflict) {
8
9
  await renderResult(conflict, { yaml: true });
9
10
  return;
@@ -11,23 +12,52 @@ export async function runWithAccountContext(options, handler) {
11
12
  let context;
12
13
  try {
13
14
  context = resolveAccountContext({
14
- explicitName: options.account,
15
+ explicitName: effectiveOptions.account,
15
16
  dataDir: getDataDir(),
16
17
  });
17
18
  }
18
19
  catch (error) {
19
- await renderResult(accountFailureFromError(error), options);
20
+ await renderResult(accountFailureFromError(error), effectiveOptions);
20
21
  return;
21
22
  }
22
23
  const result = await handler(context);
23
24
  if (result !== undefined) {
24
- await renderResult(result, options);
25
+ await renderResult(result, effectiveOptions);
25
26
  }
26
27
  }
28
+ export async function runWithAuthenticatedAccountContext(options, handler, command) {
29
+ const effectiveOptions = command == null ? options : mergeOptionsWithGlobals(command, options);
30
+ const conflict = outputFormatConflict(effectiveOptions);
31
+ if (conflict) {
32
+ await renderResult(conflict, { yaml: true });
33
+ return;
34
+ }
35
+ let context;
36
+ try {
37
+ context = resolveAuthenticatedAccountContext({
38
+ explicitName: effectiveOptions.account,
39
+ dataDir: getDataDir(),
40
+ });
41
+ }
42
+ catch (error) {
43
+ await renderResult(accountFailureFromError(error), effectiveOptions);
44
+ return;
45
+ }
46
+ const result = await handler(context);
47
+ if (result !== undefined) {
48
+ await renderResult(result, effectiveOptions);
49
+ }
50
+ }
51
+ function mergeOptionsWithGlobals(command, options) {
52
+ return {
53
+ ...command.optsWithGlobals(),
54
+ ...options,
55
+ };
56
+ }
27
57
  export function accountFailureFromError(error) {
28
58
  const message = error instanceof Error ? error.message : String(error);
29
59
  const [code, detail] = splitError(message);
30
- if (code === 'account_required' || code === 'account_not_found' || code === 'account_session_missing') {
60
+ if (code === 'account_required' || code === 'account_not_found' || code === 'account_logged_out' || code === 'account_session_missing') {
31
61
  return {
32
62
  ok: false,
33
63
  error: {
@@ -1 +1 @@
1
- {"version":3,"file":"account-options.js","sourceRoot":"","sources":["../../src/commands/account-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAErE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAwC,MAAM,YAAY,CAAA;AAMvF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAA8B,EAC9B,OAAkG;IAElG,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAA;IAC9C,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,YAAY,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QAC5C,OAAM;IACR,CAAC;IAED,IAAI,OAAuB,CAAA;IAC3B,IAAI,CAAC;QACH,OAAO,GAAG,qBAAqB,CAAC;YAC9B,YAAY,EAAE,OAAO,CAAC,OAAO;YAC7B,OAAO,EAAE,UAAU,EAAE;SACtB,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAA;QAC3D,OAAM;IACR,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IACrC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACtE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;IAE1C,IAAI,IAAI,KAAK,kBAAkB,IAAI,IAAI,KAAK,mBAAmB,IAAI,IAAI,KAAK,yBAAyB,EAAE,CAAC;QACtG,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE;gBACL,IAAI;gBACJ,OAAO,EAAE,MAAM;aAChB;SACF,CAAA;IACH,CAAC;IAED,OAAO;QACL,EAAE,EAAE,KAAK;QACT,KAAK,EAAE;YACL,IAAI,EAAE,qBAAqB;YAC3B,OAAO;SACR;KACF,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,OAAe;IACjC,MAAM,SAAS,GAAG,IAAI,CAAA;IACtB,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACxC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IACtB,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;AAC3E,CAAC"}
1
+ {"version":3,"file":"account-options.js","sourceRoot":"","sources":["../../src/commands/account-options.ts"],"names":[],"mappings":"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"}