ts-repo-utils 6.2.0 → 7.0.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.
Files changed (34) hide show
  1. package/README.md +148 -32
  2. package/dist/cmd/assert-repo-is-clean.mjs +1 -1
  3. package/dist/cmd/check-should-run-type-checks.mjs +1 -1
  4. package/dist/cmd/format-diff-from.mjs +1 -1
  5. package/dist/cmd/format-uncommitted.mjs +1 -1
  6. package/dist/cmd/gen-index-ts.mjs +1 -1
  7. package/dist/functions/assert-repo-is-clean.d.mts.map +1 -1
  8. package/dist/functions/assert-repo-is-clean.mjs +30 -30
  9. package/dist/functions/assert-repo-is-clean.mjs.map +1 -1
  10. package/dist/functions/diff.d.mts +2 -2
  11. package/dist/functions/diff.mjs +4 -4
  12. package/dist/functions/diff.mjs.map +1 -1
  13. package/dist/functions/exec-async.d.mts +7 -8
  14. package/dist/functions/exec-async.d.mts.map +1 -1
  15. package/dist/functions/exec-async.mjs +5 -5
  16. package/dist/functions/exec-async.mjs.map +1 -1
  17. package/dist/functions/format.d.mts.map +1 -1
  18. package/dist/functions/format.mjs +12 -25
  19. package/dist/functions/format.mjs.map +1 -1
  20. package/dist/functions/gen-index.d.mts +2 -1
  21. package/dist/functions/gen-index.d.mts.map +1 -1
  22. package/dist/functions/gen-index.mjs +10 -8
  23. package/dist/functions/gen-index.mjs.map +1 -1
  24. package/package.json +1 -1
  25. package/src/cmd/assert-repo-is-clean.mts +1 -1
  26. package/src/cmd/check-should-run-type-checks.mts +1 -1
  27. package/src/cmd/format-diff-from.mts +1 -1
  28. package/src/cmd/format-uncommitted.mts +1 -1
  29. package/src/cmd/gen-index-ts.mts +1 -1
  30. package/src/functions/assert-repo-is-clean.mts +43 -34
  31. package/src/functions/diff.mts +4 -4
  32. package/src/functions/exec-async.mts +25 -35
  33. package/src/functions/format.mts +14 -25
  34. package/src/functions/gen-index.mts +16 -10
package/README.md CHANGED
@@ -86,9 +86,9 @@ npm exec -- format-uncommitted --silent
86
86
 
87
87
  **Options:**
88
88
 
89
- - `--exclude-untracked` - Exclude untracked files in addition to diff files (default: false)
90
- - `--exclude-modified` - Exclude modified files in addition to diff files (default: false)
91
- - `--exclude-staged` - Exclude staged files in addition to diff files (default: false)
89
+ - `--exclude-untracked` - Exclude untracked files (default: false)
90
+ - `--exclude-modified` - Exclude modified files (default: false)
91
+ - `--exclude-staged` - Exclude staged files (default: false)
92
92
  - `--silent` - Suppress output messages (default: false)
93
93
 
94
94
  ### `format-diff-from`
@@ -115,9 +115,9 @@ npm exec -- format-diff-from main --silent
115
115
  **Options:**
116
116
 
117
117
  - `<base>` - Base branch name or commit hash to compare against (required)
118
- - `--exclude-untracked` - Exclude untracked files in addition to diff files (default: false)
119
- - `--exclude-modified` - Exclude modified files in addition to diff files (default: false)
120
- - `--exclude-staged` - Exclude staged files in addition to diff files (default: false)
118
+ - `--exclude-untracked` - Exclude untracked files (default: false)
119
+ - `--exclude-modified` - Exclude modified files (default: false)
120
+ - `--exclude-staged` - Exclude staged files (default: false)
121
121
  - `--silent` - Suppress output messages (default: false)
122
122
 
123
123
  ### `check-should-run-type-checks`
@@ -283,9 +283,49 @@ import { assertRepoIsClean } from 'ts-repo-utils';
283
283
  await assertRepoIsClean();
284
284
  ```
285
285
 
286
+ **Options:**
287
+
288
+ - `silent?` - Suppress output messages (default: false)
289
+
290
+ #### Getting Git diff files
291
+
292
+ ##### `getUntrackedFiles(options?)`
293
+
294
+ Get untracked files from the working tree (files not added to git).
295
+ Runs `git ls-files --others --exclude-standard [--deleted]`
296
+
297
+ ##### `getModifiedFiles(options?)`
298
+
299
+ Get modified files from the working tree (files that have been changed but not staged).
300
+ Runs `git diff --name-only [--diff-filter=d]`
301
+
302
+ ##### `getStagedFiles(options?)`
303
+
304
+ Get files that are staged for commit (files added with git add).
305
+ Runs `git diff --staged --name-only [--diff-filter=d]`
306
+
307
+ ##### `getDiffFrom(base: string, options?)`
308
+
309
+ Get files that differ from the specified base branch or commit.
310
+ Runs `git diff --name-only <base> [--diff-filter=d]`
311
+
312
+ **Common options:**
313
+
314
+ - `excludeDeleted?: boolean` - Exclude deleted files (for formatters etc.) (default: true)
315
+ - `silent?: boolean` - Don't log command/output (default: false)
316
+
317
+ **Common Return Type:**
318
+
319
+ ```typescript
320
+ type Ret = Result<
321
+ readonly string[],
322
+ ExecException | Readonly<{ message: string }>
323
+ >;
324
+ ```
325
+
286
326
  ### Command Execution
287
327
 
288
- #### `$(command: string, options?: { silent?: boolean; timeout?: number }): Promise<ExecResult>`
328
+ #### `$(command: string, options?: ExecOptions): Promise<ExecResult>`
289
329
 
290
330
  Executes a shell command asynchronously with timeout support and type-safe results.
291
331
 
@@ -304,45 +344,69 @@ if (result.type === 'ok') {
304
344
  **Options:**
305
345
 
306
346
  - `silent?: boolean` - Don't log command/output (default: false)
307
- - `timeout?: number` - Timeout in milliseconds (default: 30000)
347
+ - `'node:child_process'` `exec` function options
308
348
 
309
349
  **Return Type:**
310
350
 
311
351
  ```typescript
312
- type ExecResult = Readonly<
313
- | { type: 'ok'; stdout: string; stderr: string }
314
- | { type: 'error'; exception: ExecException }
352
+ type Ret = Promise<
353
+ Result<
354
+ Readonly<{ stdout: string | Buffer; stderr: string | Buffer }>,
355
+ import('node:child_process').ExecException
356
+ >
315
357
  >;
316
358
  ```
317
359
 
318
360
  ### Code Formatting Utilities
319
361
 
320
- #### `formatFiles(pathGlob: string): Promise<'ok' | 'err'>`
362
+ #### `formatFilesGlob(pathGlob: string): Promise<Result<undefined, unknown>>`
321
363
 
322
364
  Format files matching a glob pattern using Prettier.
323
365
 
324
366
  ```typescript
325
- import { formatFiles } from 'ts-repo-utils';
367
+ import { formatFilesGlob } from 'ts-repo-utils';
326
368
 
327
369
  // Format all TypeScript files in src
328
- await formatFiles('src/**/*.ts');
370
+ await formatFilesGlob('src/**/*.ts');
329
371
 
330
372
  // Format specific files
331
- await formatFiles('src/{index,utils}.ts');
373
+ await formatFilesGlob('src/{index,utils}.ts');
332
374
  ```
333
375
 
334
- #### `formatUntracked(): Promise<'ok' | 'err'>`
376
+ **Options:**
377
+
378
+ - `silent?` - Suppress output messages (default: false)
379
+
380
+ #### `formatUncommittedFiles(): Promise<Result>`
335
381
 
336
382
  Format only files that have been changed according to git status.
337
383
 
338
384
  ```typescript
339
- import { formatUntracked } from 'ts-repo-utils';
385
+ import { formatUncommittedFiles } from 'ts-repo-utils';
340
386
 
341
387
  // Format only modified files
342
- await formatUntracked();
388
+ await formatUncommittedFiles();
343
389
  ```
344
390
 
345
- #### `formatDiffFrom(base: string): Promise<'ok' | 'err'>`
391
+ **Options:**
392
+
393
+ - `untracked?` - Format untracked files (default: true)
394
+ - `modified?` - Format modified files (default: true)
395
+ - `staged?` - Format staged files (default: true)
396
+ - `silent?` - Suppress output messages (default: false)
397
+
398
+ **Return Type:**
399
+
400
+ ```typescript
401
+ type Ret = Promise<
402
+ Result<
403
+ undefined,
404
+ ExecException | Readonly<{ message: string }> | readonly unknown[]
405
+ >
406
+ >;
407
+ ```
408
+
409
+ #### `formatDiffFrom(base: string): Promise<Result>`
346
410
 
347
411
  Format only files that differ from the specified base branch or commit.
348
412
 
@@ -356,9 +420,27 @@ await formatDiffFrom('main');
356
420
  await formatDiffFrom('abc123');
357
421
  ```
358
422
 
423
+ **Options:**
424
+
425
+ - `includeUntracked?` - Include untracked files in addition to diff files (default: true)
426
+ - `includeModified?` - Include modified files in addition to diff files (default: true)
427
+ - `includeStaged?` - Include staged files in addition to diff files (default: true)
428
+ - `silent?` - Suppress output messages (default: false)
429
+
430
+ **Return Type:**
431
+
432
+ ```typescript
433
+ type Ret = Promise<
434
+ Result<
435
+ undefined,
436
+ ExecException | Readonly<{ message: string }> | readonly unknown[]
437
+ >
438
+ >;
439
+ ```
440
+
359
441
  ### Index File Generation
360
442
 
361
- #### `genIndex(config: GenIndexConfig): Promise<void>`
443
+ #### `genIndex(config: GenIndexConfig): Promise<Result<undefined, unknown>>`
362
444
 
363
445
  Generates index files recursively in target directories with automatic barrel exports.
364
446
 
@@ -367,9 +449,7 @@ import { genIndex } from 'ts-repo-utils';
367
449
 
368
450
  await genIndex({
369
451
  targetDirectory: './src',
370
- sourceExtension: '.ts',
371
- exportExtension: '.js',
372
- excludePatterns: ['*.test.ts', '*.spec.ts'],
452
+ exclude: ['*.test.ts', '*.spec.ts'],
373
453
  });
374
454
  ```
375
455
 
@@ -377,10 +457,41 @@ await genIndex({
377
457
 
378
458
  ```typescript
379
459
  type GenIndexConfig = DeepReadonly<{
380
- targetDirectory: string | string[]; // Target directories to generate index files for
381
- sourceExtension?: `.${string}`; // File extension of source files (default: '.mts')
382
- exportExtension?: `.${string}`; // Extension to use in exports (default: '.mjs')
383
- excludePatterns?: string[]; // Glob patterns to exclude (default: excludes .d.* and .test.*)
460
+ /**
461
+ * Target directories to generate index files for (string or array of
462
+ * strings)
463
+ */
464
+ targetDirectory: string | readonly string[];
465
+
466
+ /**
467
+ * Glob patterns of files or predicate function to exclude from exports
468
+ * (default: excludes `'**\/*.{test,spec}.?(c|m)[jt]s?(x)'` and
469
+ * `'**\/*.d.?(c|m)ts'`)
470
+ */
471
+ exclude?:
472
+ | readonly string[]
473
+ | ((
474
+ args: Readonly<{
475
+ absolutePath: string;
476
+ relativePath: string;
477
+ fileName: string;
478
+ }>,
479
+ ) => boolean);
480
+
481
+ /** File extensions of source files to export (default: ['.ts', '.tsx']) */
482
+ targetExtensions?: readonly `.${string}`[];
483
+
484
+ /** File extension of index files to generate (default: '.ts') */
485
+ indexFileExtension?: `.${string}`;
486
+
487
+ /** File extension to use in export statements (default: '.js') */
488
+ exportStatementExtension?: `.${string}` | 'none';
489
+
490
+ /** Command to run for formatting generated files (optional) */
491
+ formatCommand?: string;
492
+
493
+ /** Whether to suppress output during execution (default: false) */
494
+ silent?: boolean;
384
495
  }>;
385
496
  ```
386
497
 
@@ -392,6 +503,11 @@ type GenIndexConfig = DeepReadonly<{
392
503
  - Works with both single directories and directory arrays
393
504
  - Respects source and export extension configuration
394
505
 
506
+ **Benefits:**
507
+
508
+ - Prevents forgetting to export libraries
509
+ - tsc can detect duplicate variables, type names, etc.
510
+
395
511
  ## Key Features
396
512
 
397
513
  - **Type Safety**: All functions use strict TypeScript types with readonly parameters
@@ -410,14 +526,14 @@ type GenIndexConfig = DeepReadonly<{
410
526
  ```typescript
411
527
  import { formatUntracked, assertExt, assertRepoIsClean } from 'ts-repo-utils';
412
528
 
413
- // Format changed files
414
- await formatUntracked();
415
-
416
529
  // Validate file extensions
417
530
  await assertExt({
418
531
  directories: [{ path: './src', extension: '.ts' }],
419
532
  });
420
533
 
534
+ // Format changed files
535
+ await formatUncommittedFiles();
536
+
421
537
  // Ensure repository is clean (exits if dirty)
422
538
  await assertRepoIsClean();
423
539
  ```
@@ -425,7 +541,7 @@ await assertRepoIsClean();
425
541
  ### Build Pipeline
426
542
 
427
543
  ```typescript
428
- import { assertExt, genIndex, $, formatFiles } from 'ts-repo-utils';
544
+ import { assertExt, genIndex, $, formatFilesGlob } from 'ts-repo-utils';
429
545
 
430
546
  // Validate extensions
431
547
  await assertExt({
@@ -445,7 +561,7 @@ await $('tsc --noEmit');
445
561
  await $('rollup -c');
446
562
 
447
563
  // Format output
448
- await formatFiles('dist/**/*.js');
564
+ await formatFilesGlob('dist/**/*.js');
449
565
  ```
450
566
 
451
567
  ### Project Validation
@@ -10,7 +10,7 @@ import 'child_process';
10
10
 
11
11
  const cmdDef = cmd.command({
12
12
  name: 'assert-repo-is-clean-cli',
13
- version: '6.2.0',
13
+ version: '7.0.1',
14
14
  args: {
15
15
  silent: cmd.flag({
16
16
  long: 'silent',
@@ -10,7 +10,7 @@ import 'child_process';
10
10
 
11
11
  const cmdDef = cmd.command({
12
12
  name: 'check-should-run-type-checks-cli',
13
- version: '6.2.0',
13
+ version: '7.0.1',
14
14
  args: {
15
15
  pathsIgnore: cmd.multioption({
16
16
  long: 'paths-ignore',
@@ -9,7 +9,7 @@ import 'child_process';
9
9
 
10
10
  const cmdDef = cmd.command({
11
11
  name: 'format-diff-from-cli',
12
- version: '6.2.0',
12
+ version: '7.0.1',
13
13
  args: {
14
14
  base: cmd.positional({
15
15
  type: cmd.string,
@@ -9,7 +9,7 @@ import 'child_process';
9
9
 
10
10
  const cmdDef = cmd.command({
11
11
  name: 'format-uncommitted-cli',
12
- version: '6.2.0',
12
+ version: '7.0.1',
13
13
  args: {
14
14
  excludeUntracked: cmd.flag({
15
15
  long: 'exclude-untracked',
@@ -28,7 +28,7 @@ const nonEmptyArray = (t, commandName) => cmd.extendType(cmd.array(t), {
28
28
  });
29
29
  const cmdDef = cmd.command({
30
30
  name: 'gen-index-ts-cli',
31
- version: '6.2.0',
31
+ version: '7.0.1',
32
32
  args: {
33
33
  // required args
34
34
  targetDirectory: cmd.positional({
@@ -1 +1 @@
1
- {"version":3,"file":"assert-repo-is-clean.d.mts","sourceRoot":"","sources":["../../src/functions/assert-repo-is-clean.mts"],"names":[],"mappings":"AACA,OAAO,oBAAoB,CAAC;AAE5B;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GACtB,UAAU,QAAQ,CAAC;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,KACvC,OAAO,CAAC,OAAO,CAGjB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,QAAQ,CAAC;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,KACvC,OAAO,CAAC,IAAI,CAiCd,CAAC"}
1
+ {"version":3,"file":"assert-repo-is-clean.d.mts","sourceRoot":"","sources":["../../src/functions/assert-repo-is-clean.mts"],"names":[],"mappings":"AACA,OAAO,oBAAoB,CAAC;AAE5B;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GACtB,UAAU,QAAQ,CAAC;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,KACvC,OAAO,CAAC,OAAO,CAMjB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,QAAQ,CAAC;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,KACvC,OAAO,CAAC,IAAI,CAkCd,CAAC"}
@@ -9,41 +9,41 @@ import '../node-global.mjs';
9
9
  */
10
10
  const repoIsDirty = async (options) => {
11
11
  const status = await getGitStatus({ silent: options?.silent ?? false });
12
- return status.isDirty;
12
+ if (Result.isErr(status)) {
13
+ throw new Error(`Failed to get git status: ${status.value}`);
14
+ }
15
+ return status.value.isDirty;
13
16
  };
14
17
  /**
15
18
  * Checks if the repository is clean and exits with code 1 if it is dirty. Shows
16
19
  * git status and diff output before exiting.
17
20
  */
18
21
  const assertRepoIsClean = async (options) => {
19
- try {
20
- const status = await getGitStatus({ silent: options?.silent ?? false });
21
- if (!status.isDirty) {
22
- echo('Repo is clean\n');
23
- return;
24
- }
25
- echo('Repo is dirty\n');
26
- echo('Changed files:\n');
27
- echo(status.stdout);
28
- // Show files not tracked by git and unstaged changes
29
- const addResult = await $('git add -N .', {
30
- silent: options?.silent ?? false,
31
- });
32
- if (Result.isErr(addResult)) {
33
- echo('Warning: Failed to add untracked files for diff\n');
34
- }
35
- const diffResult = await $('git diff', {
36
- silent: options?.silent ?? false,
37
- });
38
- if (Result.isErr(diffResult)) {
39
- echo('Warning: Failed to show diff\n');
40
- }
41
- process.exit(1);
22
+ const silent = options?.silent ?? false;
23
+ const conditionalEcho = silent ? () => { } : echo;
24
+ const gitStatusResult = await getGitStatus({ silent });
25
+ if (Result.isErr(gitStatusResult)) {
26
+ conditionalEcho(gitStatusResult.value);
27
+ return;
28
+ }
29
+ const gitStatus = gitStatusResult.value;
30
+ if (!gitStatus.isDirty) {
31
+ conditionalEcho('Repo is clean\n');
32
+ return;
42
33
  }
43
- catch (error) {
44
- echo(`Error checking repository status: ${String(error)}\n`);
45
- process.exit(1);
34
+ conditionalEcho('Repo is dirty\n');
35
+ conditionalEcho('Changed files:\n');
36
+ conditionalEcho(gitStatus.stdout);
37
+ // Show files not tracked by git and unstaged changes
38
+ const addResult = await $('git add -N .', { silent });
39
+ if (Result.isErr(addResult)) {
40
+ conditionalEcho('Warning: Failed to add untracked files for diff\n');
46
41
  }
42
+ const diffResult = await $('git diff', { silent });
43
+ if (Result.isErr(diffResult)) {
44
+ conditionalEcho('Warning: Failed to show diff\n');
45
+ }
46
+ process.exit(1);
47
47
  };
48
48
  /**
49
49
  * Gets the git status of the repository.
@@ -55,13 +55,13 @@ const getGitStatus = async (options) => {
55
55
  silent: options?.silent ?? false,
56
56
  });
57
57
  if (Result.isErr(res)) {
58
- throw new Error(`Failed to get git status: ${res.value.message}`);
58
+ return Result.err(`Failed to get git status: ${res.value.message}`);
59
59
  }
60
60
  const { stdout } = res.value;
61
- return {
61
+ return Result.ok({
62
62
  isDirty: stdout.trim() !== '',
63
63
  stdout,
64
- };
64
+ });
65
65
  };
66
66
 
67
67
  export { assertRepoIsClean, repoIsDirty };
@@ -1 +1 @@
1
- {"version":3,"file":"assert-repo-is-clean.mjs","sources":["../../src/functions/assert-repo-is-clean.mts"],"sourcesContent":[null],"names":[],"mappings":";;;AAGA;;;;;AAKG;MACU,WAAW,GAAG,OACzB,OAAwC,KACpB;AACpB,IAAA,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,EAAE,CAAC;IACvE,OAAO,MAAM,CAAC,OAAO;AACvB;AAEA;;;AAGG;MACU,iBAAiB,GAAG,OAC/B,OAAwC,KACvB;AACjB,IAAA,IAAI;AACF,QAAA,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,EAAE,CAAC;AAEvE,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACnB,IAAI,CAAC,iBAAiB,CAAC;YACvB;QACF;QAEA,IAAI,CAAC,iBAAiB,CAAC;QACvB,IAAI,CAAC,kBAAkB,CAAC;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;;AAGnB,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,cAAc,EAAE;AACxC,YAAA,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK;AACjC,SAAA,CAAC;AACF,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YAC3B,IAAI,CAAC,mDAAmD,CAAC;QAC3D;AAEA,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,UAAU,EAAE;AACrC,YAAA,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK;AACjC,SAAA,CAAC;AACF,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;YAC5B,IAAI,CAAC,gCAAgC,CAAC;QACxC;AAEA,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACjB;IAAE,OAAO,KAAK,EAAE;QACd,IAAI,CAAC,qCAAqC,MAAM,CAAC,KAAK,CAAC,CAAA,EAAA,CAAI,CAAC;AAC5D,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACjB;AACF;AAEA;;;;AAIG;AACH,MAAM,YAAY,GAAG,OACnB,OAAwC,KAIrC;AACH,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,wBAAwB,EAAE;AAC5C,QAAA,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK;AACjC,KAAA,CAAC;AAEF,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACrB,MAAM,IAAI,KAAK,CAAC,CAAA,0BAAA,EAA6B,GAAG,CAAC,KAAK,CAAC,OAAO,CAAA,CAAE,CAAC;IACnE;AAEA,IAAA,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK;IAE5B,OAAO;AACL,QAAA,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;QAC7B,MAAM;KACP;AACH,CAAC;;;;"}
1
+ {"version":3,"file":"assert-repo-is-clean.mjs","sources":["../../src/functions/assert-repo-is-clean.mts"],"sourcesContent":[null],"names":[],"mappings":";;;AAGA;;;;;AAKG;MACU,WAAW,GAAG,OACzB,OAAwC,KACpB;AACpB,IAAA,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,EAAE,CAAC;AACvE,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,CAAA,0BAAA,EAA6B,MAAM,CAAC,KAAK,CAAA,CAAE,CAAC;IAC9D;AACA,IAAA,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO;AAC7B;AAEA;;;AAGG;MACU,iBAAiB,GAAG,OAC/B,OAAwC,KACvB;AACjB,IAAA,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,KAAK;AACvC,IAAA,MAAM,eAAe,GAAG,MAAM,GAAG,MAAK,EAAE,CAAC,GAAG,IAAI;IAEhD,MAAM,eAAe,GAAG,MAAM,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;AAEtD,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE;AACjC,QAAA,eAAe,CAAC,eAAe,CAAC,KAAK,CAAC;QACtC;IACF;AAEA,IAAA,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK;AAEvC,IAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;QACtB,eAAe,CAAC,iBAAiB,CAAC;QAClC;IACF;IAEA,eAAe,CAAC,iBAAiB,CAAC;IAClC,eAAe,CAAC,kBAAkB,CAAC;AACnC,IAAA,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC;;IAGjC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,CAAC;AACrD,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;QAC3B,eAAe,CAAC,mDAAmD,CAAC;IACtE;IAEA,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC;AAClD,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;QAC5B,eAAe,CAAC,gCAAgC,CAAC;IACnD;AAEA,IAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB;AAEA;;;;AAIG;AACH,MAAM,YAAY,GAAG,OACnB,OAAwC,KAStC;AACF,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,wBAAwB,EAAE;AAC5C,QAAA,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK;AACjC,KAAA,CAAC;AAEF,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AACrB,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA,0BAAA,EAA6B,GAAG,CAAC,KAAK,CAAC,OAAO,CAAA,CAAE,CAAC;IACrE;AAEA,IAAA,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK;IAE5B,OAAO,MAAM,CAAC,EAAE,CAAC;AACf,QAAA,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;QAC7B,MAAM;AACP,KAAA,CAAC;AACJ,CAAC;;;;"}
@@ -14,8 +14,8 @@ export declare const getUntrackedFiles: (options?: Readonly<{
14
14
  message: string;
15
15
  }>>>;
16
16
  /**
17
- * Get untracked files from the working tree (files not added to git). Runs `git
18
- * git diff --staged --name-only [--diff-filter=d]`
17
+ * Get modified files from the working tree (files that have been changed but
18
+ * not staged). Runs `git diff --name-only [--diff-filter=d]`
19
19
  */
20
20
  export declare const getModifiedFiles: (options?: Readonly<{
21
21
  /** @default true */
@@ -12,12 +12,12 @@ const getUntrackedFiles = async (options) => cmdResultToFiles({
12
12
  options,
13
13
  });
14
14
  /**
15
- * Get untracked files from the working tree (files not added to git). Runs `git
16
- * git diff --staged --name-only [--diff-filter=d]`
15
+ * Get modified files from the working tree (files that have been changed but
16
+ * not staged). Runs `git diff --name-only [--diff-filter=d]`
17
17
  */
18
18
  const getModifiedFiles = async (options) => cmdResultToFiles({
19
19
  cmd: `git diff --name-only`,
20
- cmdOptionToExcludeDeleted: '--diff-filter=d',
20
+ cmdOptionToExcludeDeleted: '--diff-filter=d', // lower case 'd' means exclude deleted files
21
21
  cmdOptionToIncludeDeleted: '',
22
22
  options,
23
23
  });
@@ -27,7 +27,7 @@ const getModifiedFiles = async (options) => cmdResultToFiles({
27
27
  */
28
28
  const getStagedFiles = async (options) => cmdResultToFiles({
29
29
  cmd: `git diff --staged --name-only`,
30
- cmdOptionToExcludeDeleted: '--diff-filter=d',
30
+ cmdOptionToExcludeDeleted: '--diff-filter=d', // lower case 'd' means exclude deleted files
31
31
  cmdOptionToIncludeDeleted: '',
32
32
  options,
33
33
  });
@@ -1 +1 @@
1
- {"version":3,"file":"diff.mjs","sources":["../../src/functions/diff.mts"],"sourcesContent":[null],"names":[],"mappings":";;;AAIA;;;AAGG;AACI,MAAM,iBAAiB,GAAG,OAC/B,OAKE,KAIF,gBAAgB,CAAC;AACf,IAAA,GAAG,EAAE,CAAA,wCAAA,CAA0C;AAC/C,IAAA,yBAAyB,EAAE,EAAE;AAC7B,IAAA,yBAAyB,EAAE,WAAW;IACtC,OAAO;AACR,CAAA;AAEH;;;AAGG;AACI,MAAM,gBAAgB,GAAG,OAC9B,OAKE,KAIF,gBAAgB,CAAC;AACf,IAAA,GAAG,EAAE,CAAA,oBAAA,CAAsB;AAC3B,IAAA,yBAAyB,EAAE,iBAAiB;AAC5C,IAAA,yBAAyB,EAAE,EAAE;IAC7B,OAAO;AACR,CAAA;AAEH;;;AAGG;AACI,MAAM,cAAc,GAAG,OAC5B,OAKE,KAIF,gBAAgB,CAAC;AACf,IAAA,GAAG,EAAE,CAAA,6BAAA,CAA+B;AACpC,IAAA,yBAAyB,EAAE,iBAAiB;AAC5C,IAAA,yBAAyB,EAAE,EAAE;IAC7B,OAAO;AACR,CAAA;AAEH;;;AAGG;AACI,MAAM,WAAW,GAAG,OACzB,IAAY,EACZ,OAKE,KAIF,gBAAgB,CAAC;IACf,GAAG,EAAE,CAAA,qBAAA,EAAwB,IAAI,CAAA,CAAE;AACnC,IAAA,yBAAyB,EAAE,iBAAiB;AAC5C,IAAA,yBAAyB,EAAE,EAAE;IAC7B,OAAO;AACR,CAAA;AAEH,MAAM,gBAAgB,GAAG,OAAO,EAC9B,GAAG,EACH,yBAAyB,EACzB,yBAAyB,EACzB,OAAO,GAWP,KAEE;AACF,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,CACpB;QACE,GAAG;AACH,QAAA,CAAC,OAAO,EAAE,cAAc,IAAI,IAAI;AAC9B,cAAE;AACF,cAAE,yBAAyB;AAC9B;SACE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE;AACtB,SAAA,IAAI,CAAC,GAAG,CAAC,EACZ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,EAAE,CACrC;AAED,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxB,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK;;IAG/B,MAAM,KAAK,GAAG;SACX,KAAK,CAAC,IAAI;SACV,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;SACzB,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;AAEhC,IAAA,OAAO,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC;AACzB,CAAC;;;;"}
1
+ {"version":3,"file":"diff.mjs","sources":["../../src/functions/diff.mts"],"sourcesContent":[null],"names":[],"mappings":";;;AAIA;;;AAGG;AACI,MAAM,iBAAiB,GAAG,OAC/B,OAKE,KAIF,gBAAgB,CAAC;AACf,IAAA,GAAG,EAAE,CAAA,wCAAA,CAA0C;AAC/C,IAAA,yBAAyB,EAAE,EAAE;AAC7B,IAAA,yBAAyB,EAAE,WAAW;IACtC,OAAO;AACR,CAAA;AAEH;;;AAGG;AACI,MAAM,gBAAgB,GAAG,OAC9B,OAKE,KAIF,gBAAgB,CAAC;AACf,IAAA,GAAG,EAAE,CAAA,oBAAA,CAAsB;IAC3B,yBAAyB,EAAE,iBAAiB;AAC5C,IAAA,yBAAyB,EAAE,EAAE;IAC7B,OAAO;AACR,CAAA;AAEH;;;AAGG;AACI,MAAM,cAAc,GAAG,OAC5B,OAKE,KAIF,gBAAgB,CAAC;AACf,IAAA,GAAG,EAAE,CAAA,6BAAA,CAA+B;IACpC,yBAAyB,EAAE,iBAAiB;AAC5C,IAAA,yBAAyB,EAAE,EAAE;IAC7B,OAAO;AACR,CAAA;AAEH;;;AAGG;AACI,MAAM,WAAW,GAAG,OACzB,IAAY,EACZ,OAKE,KAIF,gBAAgB,CAAC;IACf,GAAG,EAAE,CAAA,qBAAA,EAAwB,IAAI,CAAA,CAAE;AACnC,IAAA,yBAAyB,EAAE,iBAAiB;AAC5C,IAAA,yBAAyB,EAAE,EAAE;IAC7B,OAAO;AACR,CAAA;AAEH,MAAM,gBAAgB,GAAG,OAAO,EAC9B,GAAG,EACH,yBAAyB,EACzB,yBAAyB,EACzB,OAAO,GAWP,KAEE;AACF,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,CACpB;QACE,GAAG;AACH,QAAA,CAAC,OAAO,EAAE,cAAc,IAAI,IAAI;AAC9B,cAAE;AACF,cAAE,yBAAyB;AAC9B;SACE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE;AACtB,SAAA,IAAI,CAAC,GAAG,CAAC,EACZ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,EAAE,CACrC;AAED,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxB,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK;;IAG/B,MAAM,KAAK,GAAG;SACX,KAAK,CAAC,IAAI;SACV,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;SACzB,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;AAEhC,IAAA,OAAO,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC;AACzB,CAAC;;;;"}
@@ -1,13 +1,13 @@
1
- import { type ExecException, type ExecOptions as ExecOptions_ } from 'node:child_process';
1
+ import * as childProcess from 'node:child_process';
2
2
  import { Result } from 'ts-data-forge';
3
3
  type ExecOptionsCustom = Readonly<{
4
4
  silent?: boolean;
5
5
  }>;
6
- export type ExecOptions = DeepReadonly<ExecOptions_ & ExecOptionsCustom>;
6
+ export type ExecOptions = childProcess.ExecOptions & ExecOptionsCustom;
7
7
  export type ExecResult<T extends string | Buffer> = Result<Readonly<{
8
8
  stdout: T;
9
9
  stderr: T;
10
- }>, ExecException>;
10
+ }>, childProcess.ExecException>;
11
11
  /**
12
12
  * Executes a shell command asynchronously.
13
13
  *
@@ -15,12 +15,11 @@ export type ExecResult<T extends string | Buffer> = Result<Readonly<{
15
15
  * @param options - Optional configuration for command execution.
16
16
  * @returns A promise that resolves with the command result.
17
17
  */
18
- export declare function $(command: string, options?: ExecOptionsCustom): Promise<ExecResult<string>>;
19
- export declare function $(command: string, options: Readonly<{
20
- encoding: 'buffer' | null;
21
- } & ExecOptions>): Promise<ExecResult<Buffer>>;
22
- export declare function $(command: string, options: Readonly<{
18
+ export declare function $(command: string, options?: ExecOptionsCustom | Readonly<{
23
19
  encoding: BufferEncoding;
24
20
  } & ExecOptions>): Promise<ExecResult<string>>;
21
+ export declare function $(command: string, options?: Readonly<{
22
+ encoding: 'buffer' | null;
23
+ } & ExecOptions>): Promise<ExecResult<Buffer>>;
25
24
  export {};
26
25
  //# sourceMappingURL=exec-async.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exec-async.d.mts","sourceRoot":"","sources":["../../src/functions/exec-async.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,WAAW,IAAI,YAAY,EACjC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,KAAK,iBAAiB,GAAG,QAAQ,CAAC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,YAAY,GAAG,iBAAiB,CAAC,CAAC;AAEzE,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,MAAM,CACxD,QAAQ,CAAC;IAAE,MAAM,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,CAAC,CAAA;CAAE,CAAC,EAClC,aAAa,CACd,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,CAAC,CACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAE/B,wBAAgB,CAAC,CACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,QAAQ,CAAC;IAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;CAAE,GAAG,WAAW,CAAC,GAC7D,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAE/B,wBAAgB,CAAC,CACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,QAAQ,CAAC;IAAE,QAAQ,EAAE,cAAc,CAAA;CAAE,GAAG,WAAW,CAAC,GAC5D,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"exec-async.d.mts","sourceRoot":"","sources":["../../src/functions/exec-async.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,KAAK,iBAAiB,GAAG,QAAQ,CAAC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,GAAG,iBAAiB,CAAC;AAEvE,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,MAAM,CACxD,QAAQ,CAAC;IAAE,MAAM,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,CAAC,CAAA;CAAE,CAAC,EAClC,YAAY,CAAC,aAAa,CAC3B,CAAC;AAEF;;;;;;GAMG;AAEH,wBAAgB,CAAC,CACf,OAAO,EAAE,MAAM,EAEf,OAAO,CAAC,EACJ,iBAAiB,GACjB,QAAQ,CAAC;IAAE,QAAQ,EAAE,cAAc,CAAA;CAAE,GAAG,WAAW,CAAC,GACvD,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAE/B,wBAAgB,CAAC,CACf,OAAO,EAAE,MAAM,EAEf,OAAO,CAAC,EAAE,QAAQ,CAAC;IAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;CAAE,GAAG,WAAW,CAAC,GAC9D,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC"}
@@ -1,16 +1,16 @@
1
- import { exec } from 'node:child_process';
1
+ import * as childProcess from 'node:child_process';
2
2
  import { Result } from 'ts-data-forge';
3
3
 
4
- function $(command, options) {
4
+ function $(command,
5
+ // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
6
+ options) {
5
7
  const { silent = false, ...restOptions } = options ?? {};
6
8
  if (!silent) {
7
9
  echo(`$ ${command}`);
8
10
  }
9
11
  return new Promise((resolve) => {
10
12
  // eslint-disable-next-line security/detect-child-process
11
- exec(command,
12
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
13
- restOptions, (error, stdout, stderr) => {
13
+ childProcess.exec(command, restOptions, (error, stdout, stderr) => {
14
14
  if (!silent) {
15
15
  if (stdout !== '') {
16
16
  echo(stdout);
@@ -1 +1 @@
1
- {"version":3,"file":"exec-async.mjs","sources":["../../src/functions/exec-async.mts"],"sourcesContent":[null],"names":[],"mappings":";;;AAwCM,SAAU,CAAC,CACf,OAAe,EACf,OAEC,EAAA;AAED,IAAA,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,IAAI,EAAE;IAExD,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,IAAI,CAAC,CAAA,EAAA,EAAK,OAAO,CAAA,CAAE,CAAC;IACtB;AAEA,IAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;;AAE7B,QAAA,IAAI,CACF,OAAO;;QAEP,WAEgB,EAChB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,KAAI;YACxB,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,IAAI,MAAM,KAAK,EAAE,EAAE;oBACjB,IAAI,CAAC,MAAM,CAAC;gBACd;AACA,gBAAA,IAAI,MAAM,KAAK,EAAE,EAAE;AACjB,oBAAA,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;gBACvB;YACF;AAEA,YAAA,IAAI,KAAK,KAAK,IAAI,EAAE;gBAClB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC5B;iBAAO;AACL,gBAAA,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YACxC;AACF,QAAA,CAAC,CACF;AACH,IAAA,CAAC,CAAC;AACJ;;;;"}
1
+ {"version":3,"file":"exec-async.mjs","sources":["../../src/functions/exec-async.mts"],"sourcesContent":[null],"names":[],"mappings":";;;AAoCM,SAAU,CAAC,CACf,OAAe;AACf;AACA,OAEC,EAAA;AAED,IAAA,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,IAAI,EAAE;IAExD,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,IAAI,CAAC,CAAA,EAAA,EAAK,OAAO,CAAA,CAAE,CAAC;IACtB;AAEA,IAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;;AAE7B,QAAA,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,KAAI;YAChE,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,IAAI,MAAM,KAAK,EAAE,EAAE;oBACjB,IAAI,CAAC,MAAM,CAAC;gBACd;AACA,gBAAA,IAAI,MAAM,KAAK,EAAE,EAAE;AACjB,oBAAA,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;gBACvB;YACF;AAEA,YAAA,IAAI,KAAK,KAAK,IAAI,EAAE;gBAClB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC5B;iBAAO;AACL,gBAAA,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YACxC;AACF,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"format.d.mts","sourceRoot":"","sources":["../../src/functions/format.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAuB,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,oBAAoB,CAAC;AAQ5B;;;;GAIG;AACH,eAAO,MAAM,WAAW,GACtB,OAAO,SAAS,MAAM,EAAE,EACxB,UAAU,QAAQ,CAAC;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,KACvC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,OAAO,EAAE,CAAC,CA+F/C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAC1B,UAAU,MAAM,EAChB,UAAU,QAAQ,CAAC;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,KACvC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAyBpC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GACjC,UAAU,QAAQ,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC,KACD,OAAO,CACR,MAAM,CACJ,SAAS,EACT,aAAa,GAAG,QAAQ,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,OAAO,EAAE,CACnE,CAsDF,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM,MAAM,EACZ,UAAU,QAAQ,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC,KACD,OAAO,CACR,MAAM,CACJ,SAAS,EACP,aAAa,GACb,QAAQ,CAAC;IACP,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,GACF,SAAS,OAAO,EAAE,CACrB,CA8EF,CAAC"}
1
+ {"version":3,"file":"format.d.mts","sourceRoot":"","sources":["../../src/functions/format.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAuB,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,oBAAoB,CAAC;AAQ5B;;;;GAIG;AACH,eAAO,MAAM,WAAW,GACtB,OAAO,SAAS,MAAM,EAAE,EACxB,UAAU,QAAQ,CAAC;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,KACvC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,OAAO,EAAE,CAAC,CAqF/C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAC1B,UAAU,MAAM,EAChB,UAAU,QAAQ,CAAC;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,KACvC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAwBpC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GACjC,UAAU,QAAQ,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC,KACD,OAAO,CACR,MAAM,CACJ,SAAS,EACT,aAAa,GAAG,QAAQ,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,OAAO,EAAE,CACnE,CAsDF,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,GACzB,MAAM,MAAM,EACZ,UAAU,QAAQ,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC,KACD,OAAO,CACR,MAAM,CACJ,SAAS,EACP,aAAa,GACb,QAAQ,CAAC;IACP,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,GACF,SAAS,OAAO,EAAE,CACrB,CA8EF,CAAC"}