@mikeyt23/node-cli-utils 2.0.35 → 2.1.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 (45) hide show
  1. package/dist/cjs/DependencyChecker.js +21 -11
  2. package/dist/cjs/DotnetSdkUtility.d.ts.map +1 -1
  3. package/dist/cjs/NugetUtility.d.ts +4 -5
  4. package/dist/cjs/NugetUtility.d.ts.map +1 -1
  5. package/dist/cjs/NugetUtility.js +73 -53
  6. package/dist/cjs/TarballUtility.d.ts +0 -1
  7. package/dist/cjs/TarballUtility.d.ts.map +1 -1
  8. package/dist/cjs/certUtils.js +7 -8
  9. package/dist/cjs/colors.d.ts.map +1 -1
  10. package/dist/cjs/dockerUtils.js +14 -15
  11. package/dist/cjs/dotnetUtils.d.ts +2 -2
  12. package/dist/cjs/dotnetUtils.d.ts.map +1 -1
  13. package/dist/cjs/dotnetUtils.js +36 -15
  14. package/dist/cjs/esmSpecific.mjs +4 -7
  15. package/dist/cjs/generalUtils.d.ts +0 -2
  16. package/dist/cjs/generalUtils.d.ts.map +1 -1
  17. package/dist/cjs/generalUtils.js +86 -77
  18. package/dist/cjs/generalUtilsInternal.js +28 -19
  19. package/dist/cjs/hostFileUtils.js +10 -11
  20. package/dist/cjs/parallel.d.ts +2 -4
  21. package/dist/cjs/parallel.d.ts.map +1 -1
  22. package/dist/cjs/parallel.js +3 -5
  23. package/dist/cjs/runWhileParentAlive.js +3 -4
  24. package/dist/cjs/testUtils.d.ts.map +1 -1
  25. package/dist/cjs/testUtils.js +7 -7
  26. package/dist/esm/DotnetSdkUtility.d.ts.map +1 -1
  27. package/dist/esm/NugetUtility.d.ts +4 -5
  28. package/dist/esm/NugetUtility.d.ts.map +1 -1
  29. package/dist/esm/NugetUtility.js +73 -53
  30. package/dist/esm/TarballUtility.d.ts +0 -1
  31. package/dist/esm/TarballUtility.d.ts.map +1 -1
  32. package/dist/esm/colors.d.ts.map +1 -1
  33. package/dist/esm/dockerUtils.js +2 -2
  34. package/dist/esm/dotnetUtils.d.ts +2 -2
  35. package/dist/esm/dotnetUtils.d.ts.map +1 -1
  36. package/dist/esm/dotnetUtils.js +24 -3
  37. package/dist/esm/generalUtils.d.ts +0 -2
  38. package/dist/esm/generalUtils.d.ts.map +1 -1
  39. package/dist/esm/generalUtils.js +3 -4
  40. package/dist/esm/parallel.d.ts +2 -4
  41. package/dist/esm/parallel.d.ts.map +1 -1
  42. package/dist/esm/parallel.js +1 -3
  43. package/dist/esm/runWhileParentAlive.js +2 -2
  44. package/dist/esm/testUtils.d.ts.map +1 -1
  45. package/package.json +32 -21
@@ -15,19 +15,92 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
37
  };
28
38
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.getNormalizedError = exports.getRequiredEnvVar = exports.isPortAvailable = exports.getPlatformCode = exports.isDirectorySync = exports.isDirectory = exports.getHostname = exports.ExtendedError = exports.humanizeTime = exports.getPowershellHackArgs = exports.powershellHackPrefix = exports.logTable = exports.escapeStringForRegex = exports.findFilesRecursively = exports.deleteEnvIfExists = exports.sortDictionaryByKeyAsc = exports.filterDictionary = exports.copyModifiedEnv = exports.overwriteEnvFile = exports.copyNewEnvValues = exports.getConfirmationExample = exports.getConfirmation = exports.askQuestion = exports.whichSync = exports.whichWsl = exports.which = exports.isPlatformLinux = exports.isPlatformMac = exports.isPlatformWindows = exports.simpleSpawnAsync = exports.simpleSpawnSync = exports.simpleCmdAsync = exports.simpleCmdSync = exports.stringToLines = exports.stringToNonEmptyLines = exports.requireValidPath = exports.requireString = exports.copyDirectoryContents = exports.emptyDirectory = exports.mkdirpSync = exports.mkdirp = exports.ensureDirectory = exports.spawnAsyncLongRunning = exports.spawnAsync = exports.sleep = exports.SimpleSpawnError = exports.SpawnError = exports.trace = exports.logIf = exports.log = void 0;
30
- exports.splitByWhitespace = exports.findAllIndexes = exports.hasOnlyDigits = exports.isChildPath = exports.getRandomIntInclusive = exports.getTimestampUnformatted = exports.isErrorEnoent = exports.isErrnoException = exports.conditionallyAsync = exports.getRequiredCliParam = exports.classToJson = exports.wslPathExists = exports.toWslPath = exports.Emoji = exports.stripShellMetaCharacters = exports.hasWhitespace = exports.isValidDirName = exports.collapseWhitespace = exports.withRetryAsync = void 0;
39
+ exports.Emoji = exports.ExtendedError = exports.powershellHackPrefix = exports.SimpleSpawnError = exports.SpawnError = void 0;
40
+ exports.log = log;
41
+ exports.logIf = logIf;
42
+ exports.trace = trace;
43
+ exports.sleep = sleep;
44
+ exports.spawnAsync = spawnAsync;
45
+ exports.spawnAsyncLongRunning = spawnAsyncLongRunning;
46
+ exports.ensureDirectory = ensureDirectory;
47
+ exports.mkdirp = mkdirp;
48
+ exports.mkdirpSync = mkdirpSync;
49
+ exports.emptyDirectory = emptyDirectory;
50
+ exports.copyDirectoryContents = copyDirectoryContents;
51
+ exports.requireString = requireString;
52
+ exports.requireValidPath = requireValidPath;
53
+ exports.stringToNonEmptyLines = stringToNonEmptyLines;
54
+ exports.stringToLines = stringToLines;
55
+ exports.simpleCmdSync = simpleCmdSync;
56
+ exports.simpleCmdAsync = simpleCmdAsync;
57
+ exports.simpleSpawnSync = simpleSpawnSync;
58
+ exports.simpleSpawnAsync = simpleSpawnAsync;
59
+ exports.isPlatformWindows = isPlatformWindows;
60
+ exports.isPlatformMac = isPlatformMac;
61
+ exports.isPlatformLinux = isPlatformLinux;
62
+ exports.which = which;
63
+ exports.whichWsl = whichWsl;
64
+ exports.whichSync = whichSync;
65
+ exports.askQuestion = askQuestion;
66
+ exports.getConfirmation = getConfirmation;
67
+ exports.getConfirmationExample = getConfirmationExample;
68
+ exports.copyNewEnvValues = copyNewEnvValues;
69
+ exports.overwriteEnvFile = overwriteEnvFile;
70
+ exports.copyModifiedEnv = copyModifiedEnv;
71
+ exports.filterDictionary = filterDictionary;
72
+ exports.sortDictionaryByKeyAsc = sortDictionaryByKeyAsc;
73
+ exports.deleteEnvIfExists = deleteEnvIfExists;
74
+ exports.findFilesRecursively = findFilesRecursively;
75
+ exports.escapeStringForRegex = escapeStringForRegex;
76
+ exports.logTable = logTable;
77
+ exports.getPowershellHackArgs = getPowershellHackArgs;
78
+ exports.humanizeTime = humanizeTime;
79
+ exports.getHostname = getHostname;
80
+ exports.isDirectory = isDirectory;
81
+ exports.isDirectorySync = isDirectorySync;
82
+ exports.getPlatformCode = getPlatformCode;
83
+ exports.isPortAvailable = isPortAvailable;
84
+ exports.getRequiredEnvVar = getRequiredEnvVar;
85
+ exports.getNormalizedError = getNormalizedError;
86
+ exports.withRetryAsync = withRetryAsync;
87
+ exports.collapseWhitespace = collapseWhitespace;
88
+ exports.isValidDirName = isValidDirName;
89
+ exports.hasWhitespace = hasWhitespace;
90
+ exports.stripShellMetaCharacters = stripShellMetaCharacters;
91
+ exports.toWslPath = toWslPath;
92
+ exports.wslPathExists = wslPathExists;
93
+ exports.classToJson = classToJson;
94
+ exports.getRequiredCliParam = getRequiredCliParam;
95
+ exports.conditionallyAsync = conditionallyAsync;
96
+ exports.isErrnoException = isErrnoException;
97
+ exports.isErrorEnoent = isErrorEnoent;
98
+ exports.getTimestampUnformatted = getTimestampUnformatted;
99
+ exports.getRandomIntInclusive = getRandomIntInclusive;
100
+ exports.isChildPath = isChildPath;
101
+ exports.hasOnlyDigits = hasOnlyDigits;
102
+ exports.findAllIndexes = findAllIndexes;
103
+ exports.splitByWhitespace = splitByWhitespace;
31
104
  const crypto_1 = require("crypto");
32
105
  const net = __importStar(require("net"));
33
106
  const node_fs_1 = __importDefault(require("node:fs"));
@@ -45,7 +118,6 @@ const generalUtilsInternal_js_1 = require("./generalUtilsInternal.js");
45
118
  function log(data, ...moreData) {
46
119
  console.log(data, ...moreData);
47
120
  }
48
- exports.log = log;
49
121
  /**
50
122
  * Log conditionally. Useful for methods that have an option to either suppress output or to show it when it normally isn't.
51
123
  * @param data The data to log
@@ -56,7 +128,6 @@ function logIf(shouldLog, data, ...moreData) {
56
128
  console.log(data, ...moreData);
57
129
  }
58
130
  }
59
- exports.logIf = logIf;
60
131
  /**
61
132
  * Wrapper for console.log() that is suppressed if NodeCliUtilsConfig.logEnabled is false.
62
133
  * @param data The data to log
@@ -68,7 +139,6 @@ function trace(data, ...moreData) {
68
139
  console.log(prefix, data, ...moreData);
69
140
  }
70
141
  }
71
- exports.trace = trace;
72
142
  /**
73
143
  * Error thrown by {@link spawnAsync} when the spawned process exits with a non-zero exit code and options.throwOnNonZero is true.
74
144
  *
@@ -103,7 +173,6 @@ async function sleep(ms) {
103
173
  setTimeout(resolve, ms);
104
174
  });
105
175
  }
106
- exports.sleep = sleep;
107
176
  /**
108
177
  * This is a wrapper function for NodeJS spawn. Defaults stdio to inherit so that output is visible in the console,
109
178
  * but note that this means stdout and stderr will not be available in the returned SpawnResult. To hide the output
@@ -123,7 +192,6 @@ exports.sleep = sleep;
123
192
  async function spawnAsync(command, args, options) {
124
193
  return (0, generalUtilsInternal_js_1.spawnAsyncInternal)(command, args !== null && args !== void 0 ? args : [], options);
125
194
  }
126
- exports.spawnAsync = spawnAsync;
127
195
  /**
128
196
  * Use this alternate spawn wrapper instead of {@link spawnAsync} when spawning long-running processes to
129
197
  * avoid orphaned child process trees on Windows.
@@ -139,7 +207,6 @@ exports.spawnAsync = spawnAsync;
139
207
  async function spawnAsyncLongRunning(command, args, cwd) {
140
208
  return (0, generalUtilsInternal_js_1.spawnAsyncInternal)(command, args !== null && args !== void 0 ? args : [], { cwd: cwd, isLongRunning: true });
141
209
  }
142
- exports.spawnAsyncLongRunning = spawnAsyncLongRunning;
143
210
  /**
144
211
  * Ensure the directory exists. Similar to `mkdir -p` (creates parent directories if they don't exist).
145
212
  * @param dir The directory to ensure exists. If it does not exist, it will be created.
@@ -147,7 +214,6 @@ exports.spawnAsyncLongRunning = spawnAsyncLongRunning;
147
214
  async function ensureDirectory(dir) {
148
215
  return await mkdirp(dir);
149
216
  }
150
- exports.ensureDirectory = ensureDirectory;
151
217
  /**
152
218
  * Create a directory. Will create parent directory structure if it don't exist. Similar to `mkdir -p`.
153
219
  * @param dir The directory to create.
@@ -162,7 +228,6 @@ async function mkdirp(dir) {
162
228
  throw new ExtendedError('Error creating directory', getNormalizedError(err));
163
229
  }
164
230
  }
165
- exports.mkdirp = mkdirp;
166
231
  /**
167
232
  * Create a directory. Will create parent directory structure if it don't exist. Similar to `mkdir -p`.
168
233
  * @param dir The directory to create.
@@ -171,7 +236,6 @@ async function mkdirpSync(dir) {
171
236
  requireString('dir', dir);
172
237
  node_fs_1.default.mkdirSync(dir, { recursive: true });
173
238
  }
174
- exports.mkdirpSync = mkdirpSync;
175
239
  /**
176
240
  * Empties a directory of all files and subdirectories. Optionally skips files and directories at the top level. For other
177
241
  * options, see {@link EmptyDirectoryOptions}.
@@ -224,7 +288,6 @@ async function emptyDirectory(directoryToEmpty, options) {
224
288
  }
225
289
  await dir.close();
226
290
  }
227
- exports.emptyDirectory = emptyDirectory;
228
291
  /**
229
292
  * Copies the contents of a directory to another directory (not including the top-level directory itself). Optionally
230
293
  * pass a list of file or directory names to skip using `CopyDirectoryOptions` -> `exclusions`.
@@ -266,7 +329,6 @@ async function copyDirectoryContents(sourceDirectory, destinationDirectory, opti
266
329
  dirEntry = await dir.read();
267
330
  }
268
331
  }
269
- exports.copyDirectoryContents = copyDirectoryContents;
270
332
  /**
271
333
  * Helper method to validate that a non-falsy and non-empty value is provided for a parameter that should be a string.
272
334
  * @param paramName The name of the parameter to be used in the error message
@@ -277,7 +339,6 @@ function requireString(paramName, paramValue) {
277
339
  throw new Error(`Required param '${paramName}' is missing`);
278
340
  }
279
341
  }
280
- exports.requireString = requireString;
281
342
  /**
282
343
  * Helper method to validate that the path actually exists for the provided value.
283
344
  * @param paramName The name of the parameter, for logging purposes
@@ -289,7 +350,6 @@ function requireValidPath(paramName, paramValue) {
289
350
  throw new Error(`Invalid or nonexistent path provided for param '${paramName}': ${paramValue}`);
290
351
  }
291
352
  }
292
- exports.requireValidPath = requireValidPath;
293
353
  /**
294
354
  * Splits a string into lines, removing `\n` and `\r` characters. Does not return empty lines. Also see {@link stringToLines}.
295
355
  * @param str String to split into lines
@@ -301,7 +361,6 @@ function stringToNonEmptyLines(str) {
301
361
  }
302
362
  return str.split('\n').filter(line => line === null || line === void 0 ? void 0 : line.trim()).map(line => line.replace('\r', ''));
303
363
  }
304
- exports.stringToNonEmptyLines = stringToNonEmptyLines;
305
364
  /**
306
365
  * Splits a string into lines, removing `\n` and `\r` characters. Returns empty lines. Also see {@link stringToNonEmptyLines}.
307
366
  * @param str String to split into lines
@@ -313,7 +372,6 @@ function stringToLines(str) {
313
372
  }
314
373
  return str.split('\n').map(line => line.replace('\r', ''));
315
374
  }
316
- exports.stringToLines = stringToLines;
317
375
  /**
318
376
  * Runs the requested command using NodeJS spawnSync wrapped in an outer Windows CMD.exe command and returns the result with stdout split into lines.
319
377
  *
@@ -339,7 +397,6 @@ function simpleCmdSync(command, args, options) {
339
397
  // Was previously spawning 'cmd' directly with params '/D', '/S', '/C' - but we may as well let NodeJS do the work of escaping args to work correctly with cmd
340
398
  return (0, generalUtilsInternal_js_1.simpleSpawnSyncInternal)(command, args, throwOnNonZero, cwd, true);
341
399
  }
342
- exports.simpleCmdSync = simpleCmdSync;
343
400
  /**
344
401
  * Runs the requested command using {@link spawnAsync} wrapped in an outer Windows CMD.exe command and returns the result with stdout split into lines.
345
402
  *
@@ -365,7 +422,6 @@ async function simpleCmdAsync(command, args, options) {
365
422
  // Was previously spawning 'cmd' directly with params '/D', '/S', '/C' - but we may as well let NodeJS do the work of escaping args to work correctly with cmd
366
423
  return await (0, generalUtilsInternal_js_1.simpleSpawnAsyncInternal)(command, args, throwOnNonZero, cwd, true);
367
424
  }
368
- exports.simpleCmdAsync = simpleCmdAsync;
369
425
  /**
370
426
  * Runs the requested command using NodeJS spawnSync and returns the result with stdout split into lines.
371
427
  *
@@ -387,7 +443,6 @@ function simpleSpawnSync(command, args, options) {
387
443
  const cwd = (options === null || options === void 0 ? void 0 : options.cwd) ? options.cwd : process.cwd();
388
444
  return (0, generalUtilsInternal_js_1.simpleSpawnSyncInternal)(command, args, throwOnNonZero, cwd);
389
445
  }
390
- exports.simpleSpawnSync = simpleSpawnSync;
391
446
  /**
392
447
  * Runs the requested command using {@link spawnAsync} and returns the result with stdout split into non-empty lines.
393
448
  *
@@ -409,14 +464,12 @@ async function simpleSpawnAsync(command, args, options) {
409
464
  const cwd = (options === null || options === void 0 ? void 0 : options.cwd) ? options.cwd : process.cwd();
410
465
  return await (0, generalUtilsInternal_js_1.simpleSpawnAsyncInternal)(command, args, throwOnNonZero, cwd);
411
466
  }
412
- exports.simpleSpawnAsync = simpleSpawnAsync;
413
467
  /**
414
468
  * @returns `true` if platform() is 'win32', `false` otherwise
415
469
  */
416
470
  function isPlatformWindows() {
417
471
  return (0, node_os_1.platform)() === 'win32';
418
472
  }
419
- exports.isPlatformWindows = isPlatformWindows;
420
473
  /**
421
474
  *
422
475
  * @returns `true` if platform() is 'darwin', `false` otherwise
@@ -424,7 +477,6 @@ exports.isPlatformWindows = isPlatformWindows;
424
477
  function isPlatformMac() {
425
478
  return (0, node_os_1.platform)() === 'darwin';
426
479
  }
427
- exports.isPlatformMac = isPlatformMac;
428
480
  /**
429
481
  *
430
482
  * @returns `true` if {@link isPlatformWindows} and {@link isPlatformMac} are both `false, otherwise returns `true`
@@ -432,7 +484,6 @@ exports.isPlatformMac = isPlatformMac;
432
484
  function isPlatformLinux() {
433
485
  return !isPlatformWindows() && !isPlatformMac();
434
486
  }
435
- exports.isPlatformLinux = isPlatformLinux;
436
487
  /**
437
488
  * This is a cross-platform method to get the location of a system command. Useful for checking if software
438
489
  * is installed, where it's installed and whether there are multiple locations.
@@ -442,7 +493,6 @@ exports.isPlatformLinux = isPlatformLinux;
442
493
  async function which(commandName) {
443
494
  return (0, generalUtilsInternal_js_1.whichInternal)(commandName, simpleCmdAsync, simpleSpawnAsync);
444
495
  }
445
- exports.which = which;
446
496
  /**
447
497
  * Get the location of a system command within WSL. Call from non-WSL context like Powershell or CMD to see if a command
448
498
  * exists within your default wsl installation. See also: {@link which}.
@@ -453,7 +503,6 @@ exports.which = which;
453
503
  async function whichWsl(commandName) {
454
504
  return (0, generalUtilsInternal_js_1.whichInternal)(commandName, simpleCmdAsync, simpleSpawnAsync, true);
455
505
  }
456
- exports.whichWsl = whichWsl;
457
506
  /**
458
507
  * This is a cross-platform method to get the location of a system command. Useful for checking if software
459
508
  * is installed, where it's installed and whether there are multiple locations.
@@ -463,7 +512,6 @@ exports.whichWsl = whichWsl;
463
512
  function whichSync(commandName) {
464
513
  return (0, generalUtilsInternal_js_1.whichInternal)(commandName, simpleCmdSync, simpleSpawnSync);
465
514
  }
466
- exports.whichSync = whichSync;
467
515
  /**
468
516
  * Uses built-in NodeJS readline to ask a question and return the user's answer.
469
517
  * @param query The question to ask
@@ -479,7 +527,6 @@ function askQuestion(query) {
479
527
  resolve(ans);
480
528
  }));
481
529
  }
482
- exports.askQuestion = askQuestion;
483
530
  /**
484
531
  * A simple CLI prompt using the built-in NodeJS readline functionality to ask for confirmation.
485
532
  * @param question The question to ask
@@ -499,7 +546,6 @@ function getConfirmation(question) {
499
546
  });
500
547
  });
501
548
  }
502
- exports.getConfirmation = getConfirmation;
503
549
  /**
504
550
  * Example of using {@link getConfirmation}.
505
551
  */
@@ -511,7 +557,6 @@ async function getConfirmationExample() {
511
557
  log('you do not even');
512
558
  }
513
559
  }
514
- exports.getConfirmationExample = getConfirmationExample;
515
560
  /**
516
561
  * Copy entries from a source .env file to a destination .env file for which the destination .env file does not already have entries.
517
562
  *
@@ -530,7 +575,6 @@ exports.getConfirmationExample = getConfirmationExample;
530
575
  async function copyNewEnvValues(sourcePath, destinationPath, options) {
531
576
  await (0, generalUtilsInternal_js_1.copyEnv)(sourcePath, destinationPath, false, options === null || options === void 0 ? void 0 : options.suppressAddKeysMessages, options === null || options === void 0 ? void 0 : options.throwIfDestinationDirectoryMissing);
532
577
  }
533
- exports.copyNewEnvValues = copyNewEnvValues;
534
578
  /**
535
579
  * Copy entries from a source .env file to a destination .env file, overwriting any existing entries in the destination .env file.
536
580
  *
@@ -553,7 +597,6 @@ exports.copyNewEnvValues = copyNewEnvValues;
553
597
  async function overwriteEnvFile(sourcePath, destinationPath, options) {
554
598
  await (0, generalUtilsInternal_js_1.copyEnv)(sourcePath, destinationPath, true, options === null || options === void 0 ? void 0 : options.suppressAddKeysMessages, options === null || options === void 0 ? void 0 : options.throwIfDestinationDirectoryMissing);
555
599
  }
556
- exports.overwriteEnvFile = overwriteEnvFile;
557
600
  /**
558
601
  * Copy entries from a source .env file to a destination .env file, but only for the keys specified in keepKeys.
559
602
  * Will also modify entries in the destination .env file as specified in modifyEntries.
@@ -579,7 +622,6 @@ async function copyModifiedEnv(sourcePath, destinationPath, keepKeys, modifyEntr
579
622
  const newEnvFileContent = (0, generalUtilsInternal_js_1.dictionaryToEnvFileString)(newSortedDict);
580
623
  await promises_1.default.writeFile(destinationPath, newEnvFileContent);
581
624
  }
582
- exports.copyModifiedEnv = copyModifiedEnv;
583
625
  /**
584
626
  * Filters a dictionary by key.
585
627
  * @param dict The dictionary to filter
@@ -598,7 +640,6 @@ function filterDictionary(dict, predicate) {
598
640
  return accumulator;
599
641
  }, {});
600
642
  }
601
- exports.filterDictionary = filterDictionary;
602
643
  /**
603
644
  * Sorts a dictionary by key in ascending order.
604
645
  * @param dict The dictionary to sort
@@ -616,7 +657,6 @@ function sortDictionaryByKeyAsc(dict) {
616
657
  });
617
658
  return Object.fromEntries(newSortedDict);
618
659
  }
619
- exports.sortDictionaryByKeyAsc = sortDictionaryByKeyAsc;
620
660
  /**
621
661
  * Helper method to delete a .env file if it exists.
622
662
  * @param envPath The path to the .env file to delete
@@ -631,7 +671,6 @@ async function deleteEnvIfExists(envPath) {
631
671
  await promises_1.default.unlink(envPath);
632
672
  }
633
673
  }
634
- exports.deleteEnvIfExists = deleteEnvIfExists;
635
674
  /**
636
675
  * Searches a directory recursively for files that match the specified pattern.
637
676
  * The filenamePattern is a simple text string with asterisks (*) for wildcards.
@@ -674,12 +713,10 @@ async function findFilesRecursively(dir, filenamePattern, options) {
674
713
  await searchDirectory(dir, 1); // Start search from the first depth
675
714
  return matches;
676
715
  }
677
- exports.findFilesRecursively = findFilesRecursively;
678
716
  /** Utility function to escape a string for use within regex */
679
717
  function escapeStringForRegex(str) {
680
718
  return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
681
719
  }
682
- exports.escapeStringForRegex = escapeStringForRegex;
683
720
  /**
684
721
  * Logs the provided 2-dimensional string array as a formatted table.
685
722
  *
@@ -708,7 +745,6 @@ function logTable(data) {
708
745
  log(lineSeparator);
709
746
  }
710
747
  }
711
- exports.logTable = logTable;
712
748
  /**
713
749
  * See {@link getPowershellHackArgs}.
714
750
  */
@@ -726,7 +762,6 @@ exports.powershellHackPrefix = `$env:PSModulePath = [Environment]::GetEnvironmen
726
762
  function getPowershellHackArgs(command) {
727
763
  return ['-NoProfile', '-ExecutionPolicy', 'Bypass', '-Command', `${exports.powershellHackPrefix}${command}`];
728
764
  }
729
- exports.getPowershellHackArgs = getPowershellHackArgs;
730
765
  /**
731
766
  * Returns a humanized string representation of the number of milliseconds using ms, seconds, minutes, or hours.
732
767
  * @param milliseconds The number of milliseconds to humanize
@@ -762,7 +797,6 @@ function humanizeTime(milliseconds) {
762
797
  }
763
798
  return `${stringValue} ${unit}`;
764
799
  }
765
- exports.humanizeTime = humanizeTime;
766
800
  class ExtendedError extends Error {
767
801
  constructor(message, innerError) {
768
802
  super(message);
@@ -784,7 +818,6 @@ function getHostname(url) {
784
818
  throw new ExtendedError("Invalid URL", e);
785
819
  }
786
820
  }
787
- exports.getHostname = getHostname;
788
821
  async function isDirectory(path) {
789
822
  if (!node_fs_1.default.existsSync(path)) {
790
823
  trace(`isDirectory returning false because path does not exist`);
@@ -799,7 +832,6 @@ async function isDirectory(path) {
799
832
  return false;
800
833
  }
801
834
  }
802
- exports.isDirectory = isDirectory;
803
835
  function isDirectorySync(path) {
804
836
  try {
805
837
  const stats = node_fs_1.default.statSync(path);
@@ -810,7 +842,6 @@ function isDirectorySync(path) {
810
842
  return false;
811
843
  }
812
844
  }
813
- exports.isDirectorySync = isDirectorySync;
814
845
  /**
815
846
  * This is a somewhat naive method but is useful if you rarely or never deal with unusual operating systems.
816
847
  * @returns `win`, `mac` or `linux`
@@ -827,7 +858,6 @@ function getPlatformCode() {
827
858
  }
828
859
  throw new Error('unrecognized platform: ' + (0, node_os_1.platform)());
829
860
  }
830
- exports.getPlatformCode = getPlatformCode;
831
861
  /**
832
862
  * Tries connecting to a port to see if it's being listened on or not. It's likely that this won't work in a lot of scenarios, so use it at your own risk.
833
863
  * @param port The port to check
@@ -851,7 +881,6 @@ async function isPortAvailable(port) {
851
881
  });
852
882
  });
853
883
  }
854
- exports.isPortAvailable = isPortAvailable;
855
884
  /**
856
885
  * Returns the value for an environment variable or throws if it's undefined or null. Pass optional `throwOnEmpty` param to throw when the key exists but has an empty value.
857
886
  * @param varName The name of the environment variable to get.
@@ -869,7 +898,6 @@ function getRequiredEnvVar(varName, throwOnEmpty = true) {
869
898
  }
870
899
  return val;
871
900
  }
872
- exports.getRequiredEnvVar = getRequiredEnvVar;
873
901
  function getNormalizedError(err) {
874
902
  if (err instanceof Error) {
875
903
  return err;
@@ -891,7 +919,7 @@ function getNormalizedError(err) {
891
919
  try {
892
920
  normalizedError = new Error(JSON.stringify(err));
893
921
  }
894
- catch (jsonError) {
922
+ catch (_a) {
895
923
  normalizedError = new Error('Object could not be serialized - could not normalize');
896
924
  }
897
925
  }
@@ -900,7 +928,6 @@ function getNormalizedError(err) {
900
928
  }
901
929
  return normalizedError;
902
930
  }
903
- exports.getNormalizedError = getNormalizedError;
904
931
  /**
905
932
  * Call a function until it succeeds. Will stop after the number of calls specified by `maxCalls` param, or forever if -1 is passed.
906
933
  * @param func The function to call
@@ -922,7 +949,6 @@ async function withRetryAsync(func, maxCalls, delayMilliseconds, options) {
922
949
  retryLog(`initialDelayMilliseconds set to ${mergedOptions.initialDelayMilliseconds} - waiting before first try`);
923
950
  await sleep(mergedOptions.initialDelayMilliseconds);
924
951
  }
925
- // eslint-disable-next-line no-constant-condition
926
952
  while (true) {
927
953
  attemptNumber++;
928
954
  retryLog(`calling ${funcName} - attempt number ${attemptNumber}`);
@@ -944,14 +970,12 @@ async function withRetryAsync(func, maxCalls, delayMilliseconds, options) {
944
970
  await sleep(delayMilliseconds);
945
971
  }
946
972
  }
947
- exports.withRetryAsync = withRetryAsync;
948
973
  /**
949
974
  * Collapses each instance of consecutive whitespace characters into a single space.
950
975
  */
951
976
  function collapseWhitespace(str) {
952
977
  return str.replace(/\s+/g, ' ');
953
978
  }
954
- exports.collapseWhitespace = collapseWhitespace;
955
979
  /**
956
980
  * Check if a string is a valid directory name. This is a very simple check that just makes sure the string doesn't contain any invalid characters.
957
981
  * @param dirName The directory name to check
@@ -967,11 +991,9 @@ function isValidDirName(dirName) {
967
991
  }
968
992
  return true;
969
993
  }
970
- exports.isValidDirName = isValidDirName;
971
994
  function hasWhitespace(str) {
972
995
  return /\s/.test(str);
973
996
  }
974
- exports.hasWhitespace = hasWhitespace;
975
997
  function stripShellMetaCharacters(input) {
976
998
  const metaCharacters = [
977
999
  '\\', '`', '$', '"', "'", '<', '>', '|', ';', ' ',
@@ -981,7 +1003,6 @@ function stripShellMetaCharacters(input) {
981
1003
  const regex = new RegExp(`[${metaCharacters.map(escapeRegex).join('')}]`, 'g');
982
1004
  return input.replace(regex, '');
983
1005
  }
984
- exports.stripShellMetaCharacters = stripShellMetaCharacters;
985
1006
  var Emoji;
986
1007
  (function (Emoji) {
987
1008
  Emoji["RightArrow"] = "\u27A1\uFE0F";
@@ -1060,7 +1081,6 @@ function toWslPath(winPath, wrapInQuotesIfSpaces = true) {
1060
1081
  }
1061
1082
  return wslPath;
1062
1083
  }
1063
- exports.toWslPath = toWslPath;
1064
1084
  /**
1065
1085
  * Spawns a process that runs `wsl test -e <wslPath>` to determine if a wsl path exists.
1066
1086
  * @param wslPath WSL path to check
@@ -1081,7 +1101,6 @@ function wslPathExists(wslPath) {
1081
1101
  const pathWithoutDoubleQuotes = wslPath.replaceAll('"', '');
1082
1102
  return simpleSpawnSync('wsl', ['test', '-e', pathWithoutDoubleQuotes], { throwOnNonZero: false }).code === 0;
1083
1103
  }
1084
- exports.wslPathExists = wslPathExists;
1085
1104
  /**
1086
1105
  * Serialize a class instance. Ignore properties with underscore prefix and include getters. Useful for overriding the `toJSON` function of
1087
1106
  * a class so that calls to `JSON.stringify()` will generate more appropriate JSON.
@@ -1116,7 +1135,6 @@ function classToJson(instance) {
1116
1135
  }
1117
1136
  return jsonObj;
1118
1137
  }
1119
- exports.classToJson = classToJson;
1120
1138
  /**
1121
1139
  * Get's the value for the CLI param at process.argv[`argvIndex`] and throws the specified optional `errorMessage`
1122
1140
  * or a default error message if the CLI arg is missing.
@@ -1141,7 +1159,6 @@ function getRequiredCliParam(argvIndex, errorMessage) {
1141
1159
  }
1142
1160
  return paramValue;
1143
1161
  }
1144
- exports.getRequiredCliParam = getRequiredCliParam;
1145
1162
  // JSDoc is covered by function overloads above
1146
1163
  async function conditionallyAsync(conditionOrConditionAsyncFunc, asyncFunc, logEnabled = false) {
1147
1164
  let resolvedCondition;
@@ -1159,7 +1176,6 @@ async function conditionallyAsync(conditionOrConditionAsyncFunc, asyncFunc, logE
1159
1176
  logIf(logEnabled, 'conditional check is false - skipping');
1160
1177
  }
1161
1178
  }
1162
- exports.conditionallyAsync = conditionallyAsync;
1163
1179
  /**
1164
1180
  * Type guard function to check if an Error is a `NodeJS.ErrnoException`.
1165
1181
  * @param err The Error object to check.
@@ -1172,14 +1188,12 @@ function isErrnoException(err) {
1172
1188
  && 'path' in err
1173
1189
  && 'syscall' in err;
1174
1190
  }
1175
- exports.isErrnoException = isErrnoException;
1176
1191
  /**
1177
1192
  * Return `true` if `err` is a `NodeJS.ErrnoException` and has a `code` property equal to `ENOENT`.
1178
1193
  */
1179
1194
  function isErrorEnoent(err) {
1180
1195
  return isErrnoException(err) && err.code === 'ENOENT';
1181
1196
  }
1182
- exports.isErrorEnoent = isErrorEnoent;
1183
1197
  /**
1184
1198
  * Get a timestamp string with no punctuation in the format `YYYYMMDDHHmmss`.
1185
1199
  * @param date An optional Date object to generate the timestamp string from, instead of using "now".
@@ -1195,14 +1209,12 @@ function getTimestampUnformatted(date) {
1195
1209
  const seconds = String(d.getSeconds()).padStart(2, '0');
1196
1210
  return `${year}${month}${day}${hours}${minutes}${seconds}`;
1197
1211
  }
1198
- exports.getTimestampUnformatted = getTimestampUnformatted;
1199
1212
  /**
1200
1213
  * Wrapper function for built-in crypto lib `randomInt`, but `min` and `max` are both inclusive.
1201
1214
  */
1202
1215
  function getRandomIntInclusive(min, max) {
1203
1216
  return (0, crypto_1.randomInt)(min, max + 1);
1204
1217
  }
1205
- exports.getRandomIntInclusive = getRandomIntInclusive;
1206
1218
  /**
1207
1219
  * Check if `child` path is a file or subdirectory underneath the `parentDir` directory. The `parentDir` param must be
1208
1220
  * a valid path and a directory. The `child` path does not need to exist, but note that if the child path is relative,
@@ -1228,7 +1240,6 @@ function isChildPath(parentDir, child, requireChildExists = false) {
1228
1240
  return (childPath !== parentPath &&
1229
1241
  childPath.startsWith(parentPath + node_path_1.default.sep));
1230
1242
  }
1231
- exports.isChildPath = isChildPath;
1232
1243
  /**
1233
1244
  * Returns `true` if `value` is a string that contains only digits (regex used: `/^\d+$/`).
1234
1245
  */
@@ -1238,7 +1249,6 @@ function hasOnlyDigits(value) {
1238
1249
  }
1239
1250
  return /^\d+$/.test(value);
1240
1251
  }
1241
- exports.hasOnlyDigits = hasOnlyDigits;
1242
1252
  /**
1243
1253
  * @param input A string to search.
1244
1254
  * @param substring The substring to find indexes for.
@@ -1253,16 +1263,15 @@ function findAllIndexes(input, substring) {
1253
1263
  }
1254
1264
  return indexes;
1255
1265
  }
1256
- exports.findAllIndexes = findAllIndexes;
1257
1266
  /**
1258
1267
  * @param input A string to split.
1259
1268
  * @returns An array of each of the input string's sets of consecutive non-whitespace characters.
1260
1269
  */
1261
1270
  function splitByWhitespace(input) {
1271
+ var _a;
1262
1272
  if (!input) {
1263
1273
  return [];
1264
1274
  }
1265
- return input.match(/\S+/g) || [];
1275
+ return (_a = input.match(/\S+/g)) !== null && _a !== void 0 ? _a : [];
1266
1276
  }
1267
- exports.splitByWhitespace = splitByWhitespace;
1268
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhbFV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dlbmVyYWxVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBa0M7QUFDbEMseUNBQTBCO0FBRTFCLHNEQUF3QjtBQUN4QixnRUFBa0M7QUFDbEMscUNBQWtDO0FBQ2xDLHVEQUF5QztBQUN6QyxtREFBb0M7QUFDcEMsbUVBQWdEO0FBQ2hELHVFQUE0TjtBQVc1Tjs7OztHQUlHO0FBQ0gsU0FBZ0IsR0FBRyxDQUFDLElBQWEsRUFBRSxHQUFHLFFBQW1CO0lBQ3ZELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUE7QUFDaEMsQ0FBQztBQUZELGtCQUVDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLEtBQUssQ0FBQyxTQUFrQixFQUFFLElBQWEsRUFBRSxHQUFHLFFBQW1CO0lBQzdFLElBQUksU0FBUyxFQUFFLENBQUM7UUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFBO0lBQ2hDLENBQUM7QUFDSCxDQUFDO0FBSkQsc0JBSUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsS0FBSyxDQUFDLElBQWMsRUFBRSxHQUFHLFFBQW1CO0lBQzFELElBQUksOEJBQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUE7UUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUE7SUFDeEMsQ0FBQztBQUNILENBQUM7QUFMRCxzQkFLQztBQWlDRDs7OztHQUlHO0FBQ0gsTUFBYSxVQUFXLFNBQVEsS0FBSztJQUduQyxZQUFZLE9BQWUsRUFBRSxNQUFtQjtRQUM5QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDZCxJ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
1277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhbFV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dlbmVyYWxVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5QkEsa0JBRUM7QUFPRCxzQkFJQztBQU9ELHNCQUtDO0FBb0ZELHNCQUlDO0FBcUNELGdDQUVDO0FBY0Qsc0RBRUM7QUFNRCwwQ0FFQztBQU1ELHdCQVNDO0FBTUQsZ0NBR0M7QUFlRCx3Q0F3REM7QUFjRCxzREF5Q0M7QUFPRCxzQ0FJQztBQU9ELDRDQU1DO0FBT0Qsc0RBR0M7QUFPRCxzQ0FHQztBQWtCRCxzQ0FVQztBQWtCRCx3Q0FVQztBQWtCRCwwQ0FJQztBQWtCRCw0Q0FJQztBQUtELDhDQUVDO0FBTUQsc0NBRUM7QUFNRCwwQ0FFQztBQVFELHNCQUVDO0FBU0QsNEJBRUM7QUFRRCw4QkFFQztBQU9ELGtDQVlDO0FBT0QsMENBY0M7QUFLRCx3REFNQztBQXdCRCw0Q0FFQztBQXFCRCw0Q0FFQztBQVVELDBDQW1CQztBQVFELDRDQVdDO0FBT0Qsd0RBWUM7QUFNRCw4Q0FTQztBQWlCRCxvREFzQ0M7QUFHRCxvREFFQztBQWNELDRCQWdCQztBQWlCRCxzREFFQztBQU9ELG9DQWdDQztBQVlELGtDQVdDO0FBRUQsa0NBWUM7QUFFRCwwQ0FRQztBQVFELDBDQVdDO0FBT0QsMENBa0JDO0FBUUQsOENBVUM7QUFFRCxnREF3QkM7QUE4QkQsd0NBc0NDO0FBS0QsZ0RBRUM7QUFPRCx3Q0FXQztBQUVELHNDQUVDO0FBRUQsNERBUUM7QUE4REQsOEJBcUJDO0FBU0Qsc0NBZ0JDO0FBaUJELGtDQW1CQztBQWNELGtEQVdDO0FBMkJELGdEQWVDO0FBT0QsNENBTUM7QUFLRCxzQ0FFQztBQU9ELDBEQVNDO0FBS0Qsc0RBRUM7QUFZRCxrQ0FtQkM7QUFLRCxzQ0FLQztBQU9ELHdDQVVDO0FBTUQsOENBS0M7QUFwNkNELG1DQUFr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