@cloud-copilot/cli 0.1.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.
@@ -0,0 +1,541 @@
1
+ import { exit } from './utils.js';
2
+ function isBooleanOption(option) {
3
+ return option.values === 'none';
4
+ }
5
+ function isEnumOption(option) {
6
+ return option.type === 'enum';
7
+ }
8
+ /**
9
+ * Create a type safe configuration for CLI arguments.
10
+ *
11
+ * @param config the configuration for the CLI arguments.
12
+ * @returns the configuration object.
13
+ */
14
+ export function createConfig(config) {
15
+ return config;
16
+ }
17
+ /**
18
+ * Parse CLI Arguments and return the parsed typesafe results.
19
+ *
20
+ * @param command the name of the command arguments are being parsed for.
21
+ * @param subcommands the list of subcommands that can be used, if any.
22
+ * @param cliOptions the configuration options for the CLI command.
23
+ * @param additionalArgs additional arguments to be used for parsing and displaying help.
24
+ * @returns the parsed arguments, operands, and subcommand if applicable.
25
+ */
26
+ export function parseCliArguments(command, subcommands, cliOptions, additionalArgs) {
27
+ const args = additionalArgs?.args ?? process.argv.slice(2);
28
+ const env = additionalArgs?.env ?? process.env;
29
+ const parsedArgs = {};
30
+ const operands = [];
31
+ const booleanOptions = {};
32
+ const subcommandKeys = Object.keys(subcommands);
33
+ const numberOfSubcommands = subcommandKeys.length;
34
+ const combinedOptions = { ...cliOptions };
35
+ let subcommand;
36
+ if (args.length === 0 && additionalArgs?.showHelpIfNoArgs) {
37
+ printHelpContents(command, subcommands, cliOptions, additionalArgs);
38
+ exit(0, undefined);
39
+ return {};
40
+ }
41
+ // Step 1: Initialize defaults
42
+ initializeOptionDefaults(parsedArgs, booleanOptions, cliOptions);
43
+ // Step 2: Handle environment variables
44
+ parseEnvironmentVariables(cliOptions, parsedArgs, env, additionalArgs?.envPrefix);
45
+ if (additionalArgs?.envPrefix) {
46
+ const prefix = additionalArgs.envPrefix + '_';
47
+ const envToKeys = Object.keys(cliOptions).reduce((acc, key) => {
48
+ acc[camelToCapitalSnakeCase(key)] = key;
49
+ return acc;
50
+ }, {});
51
+ for (const [key, value] of Object.entries(env)) {
52
+ if (key.startsWith(prefix)) {
53
+ const optionKey = key.slice(prefix.length);
54
+ const option = envToKeys[optionKey];
55
+ if (option) {
56
+ const config = combinedOptions[option];
57
+ if (isEnumOption(config)) {
58
+ if (config.values === 'single') {
59
+ const matchingValue = config.validValues.find((v) => v.toLowerCase() === value.toLowerCase());
60
+ if (!matchingValue) {
61
+ exit(2, `Environment ${key} allows only the following values: ${config.validValues.join(', ')}`);
62
+ }
63
+ parsedArgs[option] = matchingValue;
64
+ }
65
+ else if (config.values === 'multiple') {
66
+ const invalidValues = [];
67
+ const validValues = [];
68
+ const values = value.split(' ');
69
+ for (const v of values) {
70
+ const matchingValue = config.validValues.find((valid) => valid.toLowerCase() === v.toLowerCase());
71
+ if (matchingValue) {
72
+ validValues.push(matchingValue);
73
+ }
74
+ else {
75
+ invalidValues.push(value);
76
+ }
77
+ }
78
+ if (invalidValues.length > 0) {
79
+ exit(2, `Environment ${key} allows only the following values: ${config.validValues.join(', ')}`);
80
+ }
81
+ parsedArgs[option] = validValues;
82
+ }
83
+ }
84
+ else if (config.values === 'none') {
85
+ parsedArgs[option] = true;
86
+ }
87
+ else if (config.values === 'single') {
88
+ const { parsed, invalid } = validateTypes(config.type, value);
89
+ if (invalid.length > 0) {
90
+ exit(2, `Environment ${key} expects a valid ${config.type}, but received: ${invalid.join(', ')}`);
91
+ }
92
+ parsedArgs[option] = parsed;
93
+ }
94
+ else if (config.values === 'multiple') {
95
+ const values = value.split(' ');
96
+ const { parsed, invalid } = validateTypes(config.type, values);
97
+ if (invalid.length > 0) {
98
+ exit(2, `Environment ${key} expects a valid ${config.type}, but received: ${invalid.join(', ')}`);
99
+ }
100
+ parsedArgs[option] = parsed;
101
+ }
102
+ }
103
+ }
104
+ }
105
+ }
106
+ // Step 3: Group arguments into objects
107
+ const commandChunks = groupArguments(args);
108
+ // Step 4: Validation and parsing arguments
109
+ for (const { first, rest, isLast, isFirst } of commandChunks) {
110
+ // Handle --help and --version
111
+ if (first === '--help') {
112
+ printHelpContents(command, subcommands, cliOptions, additionalArgs, subcommand);
113
+ exit(0, undefined);
114
+ }
115
+ if (first === '--version') {
116
+ if (additionalArgs?.version) {
117
+ exit(0, additionalArgs?.version);
118
+ }
119
+ }
120
+ // Handle commands if applicable
121
+ if (isFirst && !first.startsWith('-')) {
122
+ if (numberOfSubcommands === 0) {
123
+ if (isLast) {
124
+ operands.push(first, ...rest);
125
+ }
126
+ else {
127
+ exit(2, `Invalid: ${first}, all options must specified using a --argument`);
128
+ }
129
+ }
130
+ else {
131
+ if (!isLast && rest.length > 0) {
132
+ exit(2, `Options must be specified using a --argument, ${rest.join(' ')} is ambiguous`);
133
+ }
134
+ const matchingCommands = subcommandKeys.filter((cmd) => cmd.toLowerCase().startsWith(first.toLowerCase()));
135
+ if (matchingCommands.length === 0) {
136
+ exit(2, `Unknown command: ${first}`);
137
+ return {};
138
+ }
139
+ else if (matchingCommands.length > 1) {
140
+ exit(2, `Ambiguous command: ${first}`);
141
+ return {};
142
+ }
143
+ subcommand = matchingCommands.at(0);
144
+ const subcommandOptions = subcommands[subcommand].options;
145
+ initializeOptionDefaults(parsedArgs, booleanOptions, subcommandOptions);
146
+ parseEnvironmentVariables(subcommandOptions, parsedArgs, env, additionalArgs?.envPrefix);
147
+ for (const [key, option] of Object.entries(subcommandOptions)) {
148
+ combinedOptions[key] = option;
149
+ }
150
+ operands.push(...rest);
151
+ }
152
+ }
153
+ // Validate options
154
+ if (first == '--') {
155
+ operands.push(...rest);
156
+ }
157
+ else if (first.startsWith('--')) {
158
+ const key = first.slice(2).replaceAll('-', '').toLowerCase();
159
+ const matchingOptions = Object.keys(combinedOptions).filter((k) => k.toLowerCase().startsWith(key));
160
+ let matchingOption = undefined;
161
+ if (matchingOptions.length === 1) {
162
+ matchingOption = matchingOptions[0];
163
+ }
164
+ else if (matchingOptions.length > 1) {
165
+ exit(2, `Ambiguous argument: ${first}`);
166
+ }
167
+ else {
168
+ exit(2, `Unknown argument: ${first}`);
169
+ }
170
+ if (!matchingOption) {
171
+ exit(2, `Unknown option: ${first}`);
172
+ return {};
173
+ }
174
+ const optionConfig = combinedOptions[matchingOption];
175
+ if (isEnumOption(optionConfig)) {
176
+ if (rest.length === 0) {
177
+ if (optionConfig.values === 'single') {
178
+ exit(2, `Option ${first} expects a value, but received none`);
179
+ }
180
+ else {
181
+ exit(2, `Option ${first} expects at least one value, but received none`);
182
+ }
183
+ return {};
184
+ }
185
+ if (optionConfig.values === 'single') {
186
+ if (rest.length > 1 && !isLast) {
187
+ exit(2, `Option ${first} expects a single value, but received multiple: ${rest.join(', ')}`);
188
+ }
189
+ const value = rest[0];
190
+ const matchingValue = optionConfig.validValues.find((v) => v.toLowerCase() === value.toLowerCase());
191
+ if (!matchingValue) {
192
+ exit(2, `Option ${first} allows only the following values: ${optionConfig.validValues.join(', ')}`);
193
+ }
194
+ parsedArgs[matchingOption] = matchingValue;
195
+ operands.push(...rest.slice(1));
196
+ }
197
+ else if (optionConfig.values === 'multiple') {
198
+ const invalidValues = [];
199
+ const validValues = [];
200
+ for (const value of rest) {
201
+ const matchingValue = optionConfig.validValues.find((v) => v.toLowerCase() === value.toLowerCase());
202
+ if (matchingValue) {
203
+ validValues.push(matchingValue);
204
+ }
205
+ else {
206
+ invalidValues.push(value);
207
+ }
208
+ }
209
+ if (invalidValues.length > 0) {
210
+ exit(2, `Option ${first} allows only the following values: ${optionConfig.validValues.join(', ')}`);
211
+ }
212
+ parsedArgs[matchingOption] = validValues;
213
+ }
214
+ }
215
+ else if (optionConfig.values === 'none') {
216
+ //set boolean value
217
+ parsedArgs[matchingOption] = true;
218
+ //Handle extra values
219
+ if (rest.length > 0) {
220
+ if (!isLast) {
221
+ exit(2, `Boolean option ${first} does not accept values`);
222
+ }
223
+ else {
224
+ operands.push(...rest);
225
+ }
226
+ }
227
+ }
228
+ else if (optionConfig.values === 'single') {
229
+ if (rest.length === 0) {
230
+ exit(2, `Option ${first} expects a value, but received none`);
231
+ }
232
+ //Validate the value
233
+ const { parsed, invalid } = validateTypes(optionConfig.type, rest[0]);
234
+ if (invalid.length > 0) {
235
+ exit(2, `Option ${first} expects a valid ${optionConfig.type}, but received: ${invalid.join(', ')}`);
236
+ }
237
+ //Set the value
238
+ parsedArgs[matchingOption] = parsed;
239
+ if (rest.length > 1) {
240
+ if (!isLast) {
241
+ exit(2, `Option ${first} expects a single value, but received multiple: ${rest.join(', ')}`);
242
+ }
243
+ else {
244
+ operands.push(...rest.slice(1));
245
+ }
246
+ }
247
+ }
248
+ else if (optionConfig.values === 'multiple') {
249
+ if (rest.length === 0) {
250
+ exit(2, `Option ${first} expects at least one value, but received none`);
251
+ }
252
+ //Set the Value
253
+ //Validate the value
254
+ const { parsed, invalid } = validateTypes(optionConfig.type, rest);
255
+ if (invalid.length > 0) {
256
+ exit(2, `Option ${first} expects a valid ${optionConfig.type}, but received: ${invalid.join(', ')}`);
257
+ }
258
+ parsedArgs[matchingOption] = parsed;
259
+ }
260
+ else {
261
+ throw new Error(`Unrecognized option values ${optionConfig.values}`);
262
+ }
263
+ }
264
+ else if (first.startsWith('-')) {
265
+ if (rest.length > 0 && !isLast) {
266
+ exit(2, `Boolean option(s) ${first} should not have values`);
267
+ return {};
268
+ }
269
+ else if (isLast) {
270
+ operands.push(...rest);
271
+ }
272
+ // Short options (-s, -spq)
273
+ for (const char of first.slice(1)) {
274
+ if (!(char in booleanOptions)) {
275
+ exit(2, `Unknown flag: -${char}`);
276
+ }
277
+ const key = booleanOptions[char];
278
+ parsedArgs[key] = true;
279
+ }
280
+ }
281
+ }
282
+ if (numberOfSubcommands > 0 && additionalArgs?.requireSubcommand && !subcommand) {
283
+ exit(2, `A subcommand is required`);
284
+ }
285
+ // Step 4: Return results
286
+ return { args: parsedArgs, operands, command: subcommand, anyValues: args.length > 0 };
287
+ }
288
+ /**
289
+ * Initialize the default values for arguments
290
+ *
291
+ * @param parsedArgs the parsed arguments to default the values in
292
+ * @param cliOptions the configuration options for the CLI commands
293
+ */
294
+ function initializeOptionDefaults(parsedArgs, booleanOptions, cliOptions) {
295
+ for (const [key, option] of Object.entries(cliOptions)) {
296
+ if (option.values === 'none') {
297
+ parsedArgs[key] = false; //(option as BooleanOption).default
298
+ if (option.character) {
299
+ booleanOptions[option.character.toLowerCase()] = key;
300
+ }
301
+ }
302
+ else if (option.values === 'single') {
303
+ parsedArgs[key] = undefined;
304
+ }
305
+ else if (option.values === 'multiple') {
306
+ parsedArgs[key] = [];
307
+ }
308
+ }
309
+ }
310
+ /**
311
+ * Parse environment variables and set the values in the parsed arguments.
312
+ *
313
+ * @param options the configuration options for the CLI commands
314
+ * @param parsedArgs the parsed arguments to set the values in
315
+ * @param env the environment variables to get values from
316
+ * @param envPrefix the prefix to use for environment variables, if any
317
+ */
318
+ function parseEnvironmentVariables(options, parsedArgs, env, envPrefix) {
319
+ if (!envPrefix) {
320
+ return;
321
+ }
322
+ const prefix = envPrefix + '_';
323
+ const envToKeys = Object.keys(options).reduce((acc, key) => {
324
+ acc[camelToCapitalSnakeCase(key)] = key;
325
+ return acc;
326
+ }, {});
327
+ for (const [key, value] of Object.entries(env)) {
328
+ if (key.startsWith(prefix)) {
329
+ const optionKey = key.slice(prefix.length);
330
+ const option = envToKeys[optionKey];
331
+ if (option) {
332
+ const config = options[option];
333
+ if (isEnumOption(config)) {
334
+ if (config.values === 'single') {
335
+ const matchingValue = config.validValues.find((v) => v.toLowerCase() === value.toLowerCase());
336
+ if (!matchingValue) {
337
+ exit(2, `Environment ${key} allows only the following values: ${config.validValues.join(', ')}`);
338
+ }
339
+ parsedArgs[option] = matchingValue;
340
+ }
341
+ else if (config.values === 'multiple') {
342
+ const invalidValues = [];
343
+ const validValues = [];
344
+ const values = value.split(' ');
345
+ for (const v of values) {
346
+ const matchingValue = config.validValues.find((valid) => valid.toLowerCase() === v.toLowerCase());
347
+ if (matchingValue) {
348
+ validValues.push(matchingValue);
349
+ }
350
+ else {
351
+ invalidValues.push(value);
352
+ }
353
+ }
354
+ if (invalidValues.length > 0) {
355
+ exit(2, `Environment ${key} allows only the following values: ${config.validValues.join(', ')}`);
356
+ }
357
+ parsedArgs[option] = validValues;
358
+ }
359
+ }
360
+ else if (config.values === 'none') {
361
+ parsedArgs[option] = true;
362
+ }
363
+ else if (config.values === 'single') {
364
+ const { parsed, invalid } = validateTypes(config.type, value);
365
+ if (invalid.length > 0) {
366
+ exit(2, `Environment ${key} expects a valid ${config.type}, but received: ${invalid.join(', ')}`);
367
+ }
368
+ parsedArgs[option] = parsed;
369
+ }
370
+ else if (config.values === 'multiple') {
371
+ const values = value.split(' ');
372
+ const { parsed, invalid } = validateTypes(config.type, values);
373
+ if (invalid.length > 0) {
374
+ exit(2, `Environment ${key} expects a valid ${config.type}, but received: ${invalid.join(', ')}`);
375
+ }
376
+ parsedArgs[option] = parsed;
377
+ }
378
+ }
379
+ }
380
+ }
381
+ }
382
+ /**
383
+ * Groups arguments into chunks based on the -- separator.
384
+ *
385
+ * @param args
386
+ * @returns
387
+ */
388
+ function groupArguments(args) {
389
+ const grouped = [];
390
+ let currentChunk = [];
391
+ for (let i = 0; i < args.length; i++) {
392
+ const arg = args[i];
393
+ if (arg === '--') {
394
+ grouped.push({
395
+ first: arg,
396
+ rest: args.slice(i + 1),
397
+ isFirst: grouped.length === 0,
398
+ isLast: true
399
+ });
400
+ break;
401
+ }
402
+ if (arg.startsWith('-') && currentChunk.length > 0) {
403
+ grouped.push({
404
+ first: currentChunk.at(0),
405
+ rest: currentChunk.slice(1),
406
+ isFirst: grouped.length === 0,
407
+ isLast: false
408
+ });
409
+ currentChunk = [];
410
+ }
411
+ currentChunk.push(arg);
412
+ }
413
+ if (currentChunk.length > 0) {
414
+ grouped.push({
415
+ first: currentChunk.at(0),
416
+ rest: currentChunk.slice(1),
417
+ isFirst: grouped.length === 0,
418
+ isLast: true
419
+ });
420
+ }
421
+ return grouped;
422
+ }
423
+ /**
424
+ * Validate the types of a standard argument
425
+ *
426
+ * @param type the type the argument accepts
427
+ * @param values the values to validate
428
+ * @returns an object with the invalid values and the parsed values
429
+ */
430
+ function validateTypes(type, values) {
431
+ if (type === 'string') {
432
+ return { invalid: [], parsed: values };
433
+ }
434
+ if (!Array.isArray(values)) {
435
+ const isValid = !isNaN(Number(values));
436
+ if (isValid) {
437
+ return { invalid: [], parsed: Number(values) };
438
+ }
439
+ return { invalid: [values], parsed: 0 };
440
+ }
441
+ const invalid = values.filter((v) => isNaN(Number(v)));
442
+ if (invalid.length > 0) {
443
+ return { invalid, parsed: [] };
444
+ }
445
+ return { invalid: [], parsed: values.map(Number) };
446
+ }
447
+ function camelToCapitalSnakeCase(input) {
448
+ return input
449
+ .replace(/([a-z])([A-Z])/g, '$1_$2') // Insert underscore before capital letters
450
+ .toUpperCase(); // Convert to uppercase
451
+ }
452
+ function camelToKebabCase(input) {
453
+ return input
454
+ .replace(/([a-z])([A-Z])/g, '$1-$2') // Insert underscore before capital letters
455
+ .toLowerCase(); // Convert to uppercase
456
+ }
457
+ export function printHelpContents(command, subcommands, cliOptions, additionalArgs, selectedSubcommand) {
458
+ const operandsName = additionalArgs?.operandsName ?? 'operands';
459
+ if (selectedSubcommand) {
460
+ let usageString = `Usage: ${command} ${selectedSubcommand} [options] [flags] [--] [${operandsName}1] [${operandsName}2]`;
461
+ console.log(usageString);
462
+ console.log(`\n${subcommands[selectedSubcommand].description}`);
463
+ console.log(`${selectedSubcommand} Options:`);
464
+ printOptions(subcommands[selectedSubcommand].options);
465
+ console.log('');
466
+ }
467
+ else {
468
+ let usageString = `Usage: ${command}`;
469
+ const subcommandKeys = Object.keys(subcommands);
470
+ if (subcommandKeys.length > 0 && additionalArgs?.requireSubcommand) {
471
+ usageString += ' <subcommand>';
472
+ }
473
+ else if (subcommandKeys.length > 0) {
474
+ usageString += ' [subcommand]';
475
+ }
476
+ usageString += ` [options] [flags] [--] [${operandsName}1] [${operandsName}2]`;
477
+ console.log(usageString);
478
+ const longestCommand = subcommandKeys.reduce((acc, cmd) => Math.max(acc, cmd.length), 0);
479
+ if (subcommandKeys.length > 0) {
480
+ console.log('Commands:');
481
+ for (const cmd of subcommandKeys) {
482
+ const description = subcommands[cmd].description;
483
+ console.log(` ${(cmd + ':').padEnd(longestCommand + 1)} ${description}`);
484
+ }
485
+ console.log(`\n Use ${command} <subcommand> --help for more information about a subcommand`);
486
+ }
487
+ }
488
+ console.log('Global Options:');
489
+ const globalOptions = {
490
+ ...cliOptions,
491
+ ...{
492
+ help: {
493
+ description: 'Print the help contents and exit'
494
+ }
495
+ }
496
+ };
497
+ if (additionalArgs?.version) {
498
+ globalOptions['version'] = {
499
+ description: 'Print the version and exit'
500
+ };
501
+ }
502
+ printOptions(globalOptions);
503
+ }
504
+ function printOptions(cliOptions) {
505
+ const longestOption = Object.keys(cliOptions).reduce((acc, key) => Math.max(acc, camelToKebabCase(key).length + 2), 0) + 1;
506
+ const terminalWidth = process.stdout.columns ?? 80;
507
+ const nonBooleanBuffer = ' ';
508
+ for (const [key, option] of Object.entries(cliOptions)) {
509
+ let optionString = ` --${camelToKebabCase(key)}:`.padEnd(longestOption + 3);
510
+ if (isBooleanOption(option)) {
511
+ optionString += `(-${option.character}) `;
512
+ }
513
+ else {
514
+ optionString += nonBooleanBuffer;
515
+ }
516
+ const leftBar = optionString.length;
517
+ optionString += option.description + '. ';
518
+ if (isEnumOption(option)) {
519
+ if (option.values === 'single') {
520
+ optionString += `Must be one of: ${option.validValues.join(', ')}.`;
521
+ }
522
+ else {
523
+ optionString += `Valid values: ${option.validValues.join(', ')}.`;
524
+ }
525
+ }
526
+ else if (option.values === 'single') {
527
+ optionString += `One ${option.type} required`;
528
+ }
529
+ else if (option.values === 'multiple') {
530
+ optionString += `Multiple ${option.type}s allowed`;
531
+ }
532
+ console.log(optionString.slice(0, terminalWidth));
533
+ let stringToPrint = optionString.slice(terminalWidth);
534
+ const secondLineLength = terminalWidth - leftBar;
535
+ while (stringToPrint.length > 0) {
536
+ console.log(' '.repeat(leftBar) + stringToPrint.slice(0, secondLineLength));
537
+ stringToPrint = stringToPrint.slice(secondLineLength);
538
+ }
539
+ }
540
+ }
541
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { createConfig, parseCliArguments, printHelpContents, type AdditionalCliArguments, type Config } from './cli.js';
2
+ export { readStdin } from './stdin.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,MAAM,EACZ,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { createConfig, parseCliArguments, printHelpContents } from './cli.js';
2
+ export { readStdin } from './stdin.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EAGlB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Read from stdin until the stream ends, timeout, or an error occurs
3
+ *
4
+ * @returns the string input from stdin
5
+ */
6
+ export declare function readStdin(readWait: number | undefined): Promise<string>;
7
+ //# sourceMappingURL=stdin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdin.d.ts","sourceRoot":"","sources":["../../src/stdin.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CA6B7E"}
@@ -0,0 +1,33 @@
1
+ import { stdin } from 'process';
2
+ /**
3
+ * Read from stdin until the stream ends, timeout, or an error occurs
4
+ *
5
+ * @returns the string input from stdin
6
+ */
7
+ export async function readStdin(readWait) {
8
+ return new Promise((resolve, reject) => {
9
+ // If the input is not a TTY, we are most likely receiving data from a pipe.
10
+ const definitelyReceivingData = !process.stdin.isTTY;
11
+ if (!readWait || readWait <= 0) {
12
+ readWait = definitelyReceivingData ? 10000 : 20;
13
+ }
14
+ let data = '';
15
+ const timeout = setTimeout(() => {
16
+ if (data.length === 0) {
17
+ resolve(data);
18
+ }
19
+ }, readWait);
20
+ stdin.on('data', (chunk) => {
21
+ data += chunk;
22
+ });
23
+ stdin.on('end', () => {
24
+ resolve(data);
25
+ clearTimeout(timeout);
26
+ });
27
+ stdin.on('error', (err) => {
28
+ reject(err);
29
+ clearTimeout(timeout);
30
+ });
31
+ });
32
+ }
33
+ //# sourceMappingURL=stdin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdin.js","sourceRoot":"","sources":["../../src/stdin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAA4B;IAC1D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,4EAA4E;QAC5E,MAAM,uBAAuB,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAA;QACpD,IAAI,CAAC,QAAQ,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YAC/B,QAAQ,GAAG,uBAAuB,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC,CAAC,EAAE,CAAA;QAClD,CAAC;QAED,IAAI,IAAI,GAAG,EAAE,CAAA;QACb,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,CAAA;YACf,CAAC;QACH,CAAC,EAAE,QAAQ,CAAC,CAAA;QAEZ,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAA;QACf,CAAC,CAAC,CAAA;QAEF,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACnB,OAAO,CAAC,IAAI,CAAC,CAAA;YACb,YAAY,CAAC,OAAO,CAAC,CAAA;QACvB,CAAC,CAAC,CAAA;QAEF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,MAAM,CAAC,GAAG,CAAC,CAAA;YACX,YAAY,CAAC,OAAO,CAAC,CAAA;QACvB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Optionally print a message and exit the process with the given exit code.
3
+ *
4
+ * @param exitCode the exit code to use
5
+ * @param message the message to print
6
+ */
7
+ export declare function exit(exitCode: number, message: string | undefined): void;
8
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,QASjE"}