ts-repo-utils 7.1.0 → 7.2.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.
package/README.md CHANGED
@@ -90,6 +90,7 @@ npm exec -- format-uncommitted --silent
90
90
  - `--exclude-modified` - Exclude modified files (default: false)
91
91
  - `--exclude-staged` - Exclude staged files (default: false)
92
92
  - `--silent` - Suppress output messages (default: false)
93
+ - `--ignore-unknown` - Skip files without a Prettier parser instead of erroring (default: true)
93
94
 
94
95
  ### `format-diff-from`
95
96
 
@@ -119,6 +120,7 @@ npm exec -- format-diff-from main --silent
119
120
  - `--exclude-modified` - Exclude modified files (default: false)
120
121
  - `--exclude-staged` - Exclude staged files (default: false)
121
122
  - `--silent` - Suppress output messages (default: false)
123
+ - `--ignore-unknown` - Skip files without a Prettier parser instead of erroring (default: true)
122
124
 
123
125
  ### `check-should-run-type-checks`
124
126
 
@@ -323,6 +325,52 @@ type Ret = Result<
323
325
  >;
324
326
  ```
325
327
 
328
+ ### Build Optimization Utilities
329
+
330
+ #### `checkShouldRunTypeChecks(options?): Promise<boolean>`
331
+
332
+ Checks if TypeScript type checks should run based on the diff from a base branch. Optimizes CI/CD pipelines by skipping type checks when only non-TypeScript files are changed.
333
+
334
+ ```typescript
335
+ import { checkShouldRunTypeChecks } from 'ts-repo-utils';
336
+
337
+ // Use default settings (compare against origin/main)
338
+ const shouldRun = await checkShouldRunTypeChecks();
339
+
340
+ if (shouldRun) {
341
+ await $('npm run type-check');
342
+ }
343
+
344
+ // Custom ignore patterns and base branch
345
+ const shouldRun = await checkShouldRunTypeChecks({
346
+ pathsIgnore: ['.eslintrc.json', 'docs/', '**.md', 'scripts/'],
347
+ baseBranch: 'origin/develop',
348
+ });
349
+ ```
350
+
351
+ **Options:**
352
+
353
+ - `pathsIgnore?` - Patterns to ignore when checking if type checks should run:
354
+ - Exact file matches: `.cspell.json`
355
+ - Directory prefixes: `docs/` (matches any file in docs directory)
356
+ - File extensions: `**.md` (matches any markdown file)
357
+ - Default: `['LICENSE', '.editorconfig', '.gitignore', '.cspell.json', '.markdownlint-cli2.mjs', '.npmignore', '.prettierignore', '.prettierrc', 'docs/', '**.md', '**.txt']`
358
+ - `baseBranch?` - Base branch to compare against (default: `origin/main`)
359
+
360
+ **GitHub Actions Integration:**
361
+
362
+ When running in GitHub Actions, sets `GITHUB_OUTPUT` with `should_run=true/false`:
363
+
364
+ ```yaml
365
+ - name: Check if type checks should run
366
+ id: check_diff
367
+ run: npx check-should-run-type-checks
368
+
369
+ - name: Run type checks
370
+ if: steps.check_diff.outputs.should_run == 'true'
371
+ run: npm run type-check
372
+ ```
373
+
326
374
  ### Command Execution
327
375
 
328
376
  #### `$(command: string, options?: ExecOptions): Promise<ExecResult>`
@@ -359,7 +407,7 @@ type Ret = Promise<
359
407
 
360
408
  ### Code Formatting Utilities
361
409
 
362
- #### `formatFilesGlob(pathGlob: string): Promise<Result<undefined, unknown>>`
410
+ #### `formatFilesGlob(pathGlob: string, options?): Promise<Result<undefined, unknown>>`
363
411
 
364
412
  Format files matching a glob pattern using Prettier.
365
413
 
@@ -371,13 +419,21 @@ await formatFilesGlob('src/**/*.ts');
371
419
 
372
420
  // Format specific files
373
421
  await formatFilesGlob('src/{index,utils}.ts');
422
+
423
+ // With custom ignore function
424
+ await formatFilesGlob('src/**/*.ts', {
425
+ ignore: (filePath) => filePath.includes('generated'),
426
+ ignoreUnknown: false, // Error on files without parser
427
+ });
374
428
  ```
375
429
 
376
430
  **Options:**
377
431
 
378
432
  - `silent?` - Suppress output messages (default: false)
433
+ - `ignoreUnknown?` - Skip files without a Prettier parser instead of erroring (default: true)
434
+ - `ignore?` - Custom function to ignore files (default: built-in ignore list)
379
435
 
380
- #### `formatUncommittedFiles(): Promise<Result>`
436
+ #### `formatUncommittedFiles(options?): Promise<Result>`
381
437
 
382
438
  Format only files that have been changed according to git status.
383
439
 
@@ -386,6 +442,12 @@ import { formatUncommittedFiles } from 'ts-repo-utils';
386
442
 
387
443
  // Format only modified files
388
444
  await formatUncommittedFiles();
445
+
446
+ // With custom options
447
+ await formatUncommittedFiles({
448
+ untracked: false, // Skip untracked files
449
+ ignore: (filePath) => filePath.includes('test'),
450
+ });
389
451
  ```
390
452
 
391
453
  **Options:**
@@ -394,6 +456,8 @@ await formatUncommittedFiles();
394
456
  - `modified?` - Format modified files (default: true)
395
457
  - `staged?` - Format staged files (default: true)
396
458
  - `silent?` - Suppress output messages (default: false)
459
+ - `ignoreUnknown?` - Skip files without a Prettier parser instead of erroring (default: true)
460
+ - `ignore?` - Custom function to ignore files (default: built-in ignore list)
397
461
 
398
462
  **Return Type:**
399
463
 
@@ -406,7 +470,7 @@ type Ret = Promise<
406
470
  >;
407
471
  ```
408
472
 
409
- #### `formatDiffFrom(base: string): Promise<Result>`
473
+ #### `formatDiffFrom(base: string, options?): Promise<Result>`
410
474
 
411
475
  Format only files that differ from the specified base branch or commit.
412
476
 
@@ -418,6 +482,13 @@ await formatDiffFrom('main');
418
482
 
419
483
  // Format files different from specific commit
420
484
  await formatDiffFrom('abc123');
485
+
486
+ // With custom options
487
+ await formatDiffFrom('main', {
488
+ includeUntracked: false,
489
+ ignore: (filePath) => filePath.includes('vendor'),
490
+ ignoreUnknown: false, // Error on files without parser
491
+ });
421
492
  ```
422
493
 
423
494
  **Options:**
@@ -426,6 +497,8 @@ await formatDiffFrom('abc123');
426
497
  - `includeModified?` - Include modified files in addition to diff files (default: true)
427
498
  - `includeStaged?` - Include staged files in addition to diff files (default: true)
428
499
  - `silent?` - Suppress output messages (default: false)
500
+ - `ignoreUnknown?` - Skip files without a Prettier parser instead of erroring (default: true)
501
+ - `ignore?` - Custom function to ignore files (default: built-in ignore list)
429
502
 
430
503
  **Return Type:**
431
504
 
@@ -438,6 +511,106 @@ type Ret = Promise<
438
511
  >;
439
512
  ```
440
513
 
514
+ ### Workspace Management Utilities
515
+
516
+ #### `runCmdInStagesAcrossWorkspaces(options): Promise<void>`
517
+
518
+ Executes a npm script command across all workspace packages in dependency order stages. Packages are grouped into stages where each stage contains packages whose dependencies have been completed in previous stages. Uses fail-fast behavior.
519
+
520
+ ```typescript
521
+ import { runCmdInStagesAcrossWorkspaces } from 'ts-repo-utils';
522
+
523
+ // Run build in dependency order
524
+ await runCmdInStagesAcrossWorkspaces({
525
+ rootPackageJsonDir: '.',
526
+ cmd: 'build',
527
+ concurrency: 3,
528
+ filterWorkspacePattern: (name) => !name.includes('deprecated'),
529
+ });
530
+ ```
531
+
532
+ **Options:**
533
+
534
+ - `rootPackageJsonDir` - Directory containing the root package.json file
535
+ - `cmd` - The npm script command to execute in each package
536
+ - `concurrency?` - Maximum packages to process simultaneously within each stage (default: 3)
537
+ - `filterWorkspacePattern?` - Optional function to filter packages by name
538
+
539
+ #### `runCmdInParallelAcrossWorkspaces(options): Promise<void>`
540
+
541
+ Executes a npm script command across all workspace packages in parallel. Uses fail-fast behavior - stops execution immediately when any package fails.
542
+
543
+ ```typescript
544
+ import { runCmdInParallelAcrossWorkspaces } from 'ts-repo-utils';
545
+
546
+ // Run tests in parallel across all packages
547
+ await runCmdInParallelAcrossWorkspaces({
548
+ rootPackageJsonDir: '.',
549
+ cmd: 'test',
550
+ concurrency: 5,
551
+ });
552
+ ```
553
+
554
+ **Options:**
555
+
556
+ - `rootPackageJsonDir` - Directory containing the root package.json file
557
+ - `cmd` - The npm script command to execute in each package
558
+ - `concurrency?` - Maximum packages to process simultaneously (default: 3)
559
+ - `filterWorkspacePattern?` - Optional function to filter packages by name
560
+
561
+ #### `getWorkspacePackages(rootPackageJsonDir): Promise<readonly Package[]>`
562
+
563
+ Retrieves all workspace packages from a monorepo based on the workspace patterns defined in the root package.json file.
564
+
565
+ ```typescript
566
+ import { getWorkspacePackages } from 'ts-repo-utils';
567
+
568
+ const packages = await getWorkspacePackages('.');
569
+ console.log(packages.map((pkg) => pkg.name));
570
+ // ['@myorg/package-a', '@myorg/package-b', ...]
571
+ ```
572
+
573
+ **Return Type:**
574
+
575
+ ```typescript
576
+ type Package = {
577
+ name: string;
578
+ path: string;
579
+ packageJson: JsonValue;
580
+ dependencies: Record<string, string>;
581
+ };
582
+ ```
583
+
584
+ #### `executeParallel(packages, scriptName, concurrency?): Promise<readonly Result[]>`
585
+
586
+ Executes a npm script across multiple packages in parallel with a concurrency limit. Lower-level function used by `runCmdInParallelAcrossWorkspaces`.
587
+
588
+ ```typescript
589
+ import { executeParallel, getWorkspacePackages } from 'ts-repo-utils';
590
+
591
+ const packages = await getWorkspacePackages('.');
592
+ await executeParallel(packages, 'lint', 4);
593
+ ```
594
+
595
+ #### `executeStages(packages, scriptName, concurrency?): Promise<void>`
596
+
597
+ Executes a npm script across packages in dependency order stages. Lower-level function used by `runCmdInStagesAcrossWorkspaces`.
598
+
599
+ ```typescript
600
+ import { executeStages, getWorkspacePackages } from 'ts-repo-utils';
601
+
602
+ const packages = await getWorkspacePackages('.');
603
+ await executeStages(packages, 'build', 3);
604
+ ```
605
+
606
+ **Features:**
607
+
608
+ - Automatic dependency graph construction
609
+ - Topological sorting for correct build order
610
+ - Parallel execution within each stage
611
+ - Fail-fast behavior on errors
612
+ - Circular dependency detection
613
+
441
614
  ### Index File Generation
442
615
 
443
616
  #### `genIndex(config: GenIndexConfig): Promise<Result<undefined, unknown>>`
@@ -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: '7.1.0',
13
+ version: '7.2.0',
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: '7.1.0',
13
+ version: '7.2.0',
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: '7.1.0',
12
+ version: '7.2.0',
13
13
  args: {
14
14
  base: cmd.positional({
15
15
  type: cmd.string,
@@ -31,6 +31,11 @@ const cmdDef = cmd.command({
31
31
  type: cmd.optional(cmd.boolean),
32
32
  description: 'Exclude staged files in addition to diff files (default: false)',
33
33
  }),
34
+ ignoreUnknown: cmd.flag({
35
+ long: 'ignore-unknown',
36
+ type: cmd.optional(cmd.boolean),
37
+ description: 'Ignore unknown files (default: true)',
38
+ }),
34
39
  silent: cmd.flag({
35
40
  long: 'silent',
36
41
  type: cmd.optional(cmd.boolean),
@@ -43,6 +48,7 @@ const cmdDef = cmd.command({
43
48
  excludeUntracked: args.excludeUntracked ?? false,
44
49
  excludeModified: args.excludeModified ?? false,
45
50
  excludeStaged: args.excludeStaged ?? false,
51
+ ignoreUnknown: args.ignoreUnknown ?? true,
46
52
  silent: args.silent ?? false,
47
53
  }).catch((error) => {
48
54
  console.error('An error occurred:', error);
@@ -55,6 +61,7 @@ const main = async (args) => {
55
61
  includeUntracked: !args.excludeUntracked,
56
62
  includeModified: !args.excludeModified,
57
63
  includeStaged: !args.excludeStaged,
64
+ ignoreUnknown: args.ignoreUnknown,
58
65
  silent: args.silent,
59
66
  });
60
67
  if (Result.isErr(result)) {
@@ -1 +1 @@
1
- {"version":3,"file":"format-diff-from.mjs","sources":["../../src/cmd/format-diff-from.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;AAMA,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;AACzB,IAAA,IAAI,EAAE,sBAAsB;AAC5B,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,IAAI,EAAE;AACJ,QAAA,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC;YACnB,IAAI,EAAE,GAAG,CAAC,MAAM;AAChB,YAAA,WAAW,EAAE,MAAM;AACnB,YAAA,WAAW,EAAE,oDAAoD;SAClE,CAAC;AACF,QAAA,gBAAgB,EAAE,GAAG,CAAC,IAAI,CAAC;AACzB,YAAA,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EACT,oEAAoE;SACvE,CAAC;AACF,QAAA,eAAe,EAAE,GAAG,CAAC,IAAI,CAAC;AACxB,YAAA,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EACT,mEAAmE;SACtE,CAAC;AACF,QAAA,aAAa,EAAE,GAAG,CAAC,IAAI,CAAC;AACtB,YAAA,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EACT,iEAAiE;SACpE,CAAC;AACF,QAAA,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC;AACf,YAAA,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EAAE,sDAAsD;SACpE,CAAC;AACH,KAAA;AACD,IAAA,OAAO,EAAE,CAAC,IAAI,KAAI;AAChB,QAAA,IAAI,CAAC;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,KAAK;AAChD,YAAA,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,KAAK;AAC9C,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,KAAK;AAC1C,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AAC7B,SAAA,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAI;AACjB,YAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC;AAC1C,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,QAAA,CAAC,CAAC;IACJ,CAAC;AACF,CAAA,CAAC;AAEF,MAAM,IAAI,GAAG,OACX,IAME,KACe;IACjB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE;AAC7C,QAAA,gBAAgB,EAAE,CAAC,IAAI,CAAC,gBAAgB;AACxC,QAAA,eAAe,EAAE,CAAC,IAAI,CAAC,eAAe;AACtC,QAAA,aAAa,EAAE,CAAC,IAAI,CAAC,aAAa;QAClC,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,KAAA,CAAC;AAEF,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxB,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACjB;AACF,CAAC;AAED,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"format-diff-from.mjs","sources":["../../src/cmd/format-diff-from.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ import 'child_process';
9
9
 
10
10
  const cmdDef = cmd.command({
11
11
  name: 'format-uncommitted-cli',
12
- version: '7.1.0',
12
+ version: '7.2.0',
13
13
  args: {
14
14
  excludeUntracked: cmd.flag({
15
15
  long: 'exclude-untracked',
@@ -26,6 +26,11 @@ const cmdDef = cmd.command({
26
26
  type: cmd.optional(cmd.boolean),
27
27
  description: 'Exclude staged files in addition to diff files (default: false)',
28
28
  }),
29
+ ignoreUnknown: cmd.flag({
30
+ long: 'ignore-unknown',
31
+ type: cmd.optional(cmd.boolean),
32
+ description: 'Ignore unknown files (default: true)',
33
+ }),
29
34
  silent: cmd.flag({
30
35
  long: 'silent',
31
36
  type: cmd.optional(cmd.boolean),
@@ -37,6 +42,7 @@ const cmdDef = cmd.command({
37
42
  excludeUntracked: args.excludeUntracked ?? false,
38
43
  excludeModified: args.excludeModified ?? false,
39
44
  excludeStaged: args.excludeStaged ?? false,
45
+ ignoreUnknown: args.ignoreUnknown ?? true,
40
46
  silent: args.silent ?? false,
41
47
  }).catch((error) => {
42
48
  console.error('An error occurred:', error);
@@ -49,6 +55,7 @@ const main = async (args) => {
49
55
  untracked: !args.excludeUntracked,
50
56
  modified: !args.excludeModified,
51
57
  staged: !args.excludeStaged,
58
+ ignoreUnknown: args.ignoreUnknown,
52
59
  silent: args.silent,
53
60
  });
54
61
  if (Result.isErr(result)) {
@@ -1 +1 @@
1
- {"version":3,"file":"format-uncommitted.mjs","sources":["../../src/cmd/format-uncommitted.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;AAMA,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;AACzB,IAAA,IAAI,EAAE,wBAAwB;AAC9B,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,IAAI,EAAE;AACJ,QAAA,gBAAgB,EAAE,GAAG,CAAC,IAAI,CAAC;AACzB,YAAA,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EACT,oEAAoE;SACvE,CAAC;AACF,QAAA,eAAe,EAAE,GAAG,CAAC,IAAI,CAAC;AACxB,YAAA,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EACT,mEAAmE;SACtE,CAAC;AACF,QAAA,aAAa,EAAE,GAAG,CAAC,IAAI,CAAC;AACtB,YAAA,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EACT,iEAAiE;SACpE,CAAC;AACF,QAAA,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC;AACf,YAAA,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EAAE,sDAAsD;SACpE,CAAC;AACH,KAAA;AACD,IAAA,OAAO,EAAE,CAAC,IAAI,KAAI;AAChB,QAAA,IAAI,CAAC;AACH,YAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,KAAK;AAChD,YAAA,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,KAAK;AAC9C,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,KAAK;AAC1C,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AAC7B,SAAA,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAI;AACjB,YAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC;AAC1C,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,QAAA,CAAC,CAAC;IACJ,CAAC;AACF,CAAA,CAAC;AAEF,MAAM,IAAI,GAAG,OACX,IAKE,KACe;AACjB,IAAA,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC;AAC1C,QAAA,SAAS,EAAE,CAAC,IAAI,CAAC,gBAAgB;AACjC,QAAA,QAAQ,EAAE,CAAC,IAAI,CAAC,eAAe;AAC/B,QAAA,MAAM,EAAE,CAAC,IAAI,CAAC,aAAa;QAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,KAAA,CAAC;AACF,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxB,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACjB;AACF,CAAC;AAED,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"format-uncommitted.mjs","sources":["../../src/cmd/format-uncommitted.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;AAMA,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;AACzB,IAAA,IAAI,EAAE,wBAAwB;AAC9B,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,IAAI,EAAE;AACJ,QAAA,gBAAgB,EAAE,GAAG,CAAC,IAAI,CAAC;AACzB,YAAA,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EACT,oEAAoE;SACvE,CAAC;AACF,QAAA,eAAe,EAAE,GAAG,CAAC,IAAI,CAAC;AACxB,YAAA,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EACT,mEAAmE;SACtE,CAAC;AACF,QAAA,aAAa,EAAE,GAAG,CAAC,IAAI,CAAC;AACtB,YAAA,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EACT,iEAAiE;SACpE,CAAC;AACF,QAAA,aAAa,EAAE,GAAG,CAAC,IAAI,CAAC;AACtB,YAAA,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EAAE,sCAAsC;SACpD,CAAC;AACF,QAAA,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC;AACf,YAAA,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EAAE,sDAAsD;SACpE,CAAC;AACH,KAAA;AACD,IAAA,OAAO,EAAE,CAAC,IAAI,KAAI;AAChB,QAAA,IAAI,CAAC;AACH,YAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,KAAK;AAChD,YAAA,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,KAAK;AAC9C,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,KAAK;AAC1C,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI;AACzC,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AAC7B,SAAA,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAI;AACjB,YAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC;AAC1C,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,QAAA,CAAC,CAAC;IACJ,CAAC;AACF,CAAA,CAAC;AAEF,MAAM,IAAI,GAAG,OACX,IAME,KACe;AACjB,IAAA,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC;AAC1C,QAAA,SAAS,EAAE,CAAC,IAAI,CAAC,gBAAgB;AACjC,QAAA,QAAQ,EAAE,CAAC,IAAI,CAAC,eAAe;AAC/B,QAAA,MAAM,EAAE,CAAC,IAAI,CAAC,aAAa;QAC3B,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,KAAA,CAAC;AACF,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxB,QAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACjB;AACF,CAAC;AAED,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC"}
@@ -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: '7.1.0',
31
+ version: '7.2.0',
32
32
  args: {
33
33
  // required args
34
34
  targetDirectory: cmd.positional({
@@ -9,6 +9,7 @@ import '../node-global.mjs';
9
9
  export declare const formatFiles: (files: readonly string[], options?: Readonly<{
10
10
  silent?: boolean;
11
11
  ignore?: (filePath: string) => boolean;
12
+ ignoreUnknown?: boolean;
12
13
  }>) => Promise<Result<undefined, readonly unknown[]>>;
13
14
  /**
14
15
  * Format files matching the given glob pattern using Prettier
@@ -17,6 +18,8 @@ export declare const formatFiles: (files: readonly string[], options?: Readonly<
17
18
  */
18
19
  export declare const formatFilesGlob: (pathGlob: string, options?: Readonly<{
19
20
  silent?: boolean;
21
+ ignoreUnknown?: boolean;
22
+ ignore?: (filePath: string) => boolean;
20
23
  }>) => Promise<Result<undefined, unknown>>;
21
24
  /**
22
25
  * Format only files that have been changed (git status)
@@ -28,6 +31,8 @@ export declare const formatUncommittedFiles: (options?: Readonly<{
28
31
  modified?: boolean;
29
32
  staged?: boolean;
30
33
  silent?: boolean;
34
+ ignoreUnknown?: boolean;
35
+ ignore?: (filePath: string) => boolean;
31
36
  }>) => Promise<Result<undefined, ExecException | Readonly<{
32
37
  message: string;
33
38
  }> | readonly unknown[]>>;
@@ -49,6 +54,8 @@ export declare const formatDiffFrom: (base: string, options?: Readonly<{
49
54
  includeModified?: boolean;
50
55
  includeStaged?: boolean;
51
56
  silent?: boolean;
57
+ ignoreUnknown?: boolean;
58
+ ignore?: (filePath: string) => boolean;
52
59
  }>) => Promise<Result<undefined, ExecException | Readonly<{
53
60
  message: string;
54
61
  }> | readonly unknown[]>>;
@@ -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;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;CACxC,CAAC,KACD,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,OAAO,EAAE,CAAC,CAwF/C,CAAC;AAsDF;;;;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"}
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;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC,KACD,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,OAAO,EAAE,CAAC,CAiG/C,CAAC;AAuDF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAC1B,UAAU,MAAM,EAChB,UAAU,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;CACxC,CAAC,KACD,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CA0BpC,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;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;CACxC,CAAC,KACD,OAAO,CACR,MAAM,CACJ,SAAS,EACT,aAAa,GAAG,QAAQ,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,OAAO,EAAE,CACnE,CA4DF,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;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;CACxC,CAAC,KACD,OAAO,CACR,MAAM,CACJ,SAAS,EACP,aAAa,GACb,QAAQ,CAAC;IACP,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,GACF,SAAS,OAAO,EAAE,CACrB,CAoFF,CAAC"}
@@ -43,6 +43,12 @@ const formatFiles = async (files, options) => {
43
43
  conditionalEcho(`Skipping ignored file: ${filePath}`);
44
44
  return Result.ok(undefined);
45
45
  }
46
+ if ((options?.ignoreUnknown ?? true) &&
47
+ fileInfo.inferredParser === null) {
48
+ // Silently skip files with no parser
49
+ conditionalEcho(`Skipping file (no parser): ${filePath}`);
50
+ return Result.ok(undefined);
51
+ }
46
52
  // Format the content
47
53
  const formatted = await prettier.format(content, {
48
54
  ...prettierOptions,
@@ -98,6 +104,7 @@ const ignoreFiles = new Set([
98
104
  '.prettierignore',
99
105
  '.editorconfig',
100
106
  '.gitignore',
107
+ '.npmignore',
101
108
  ]);
102
109
  const ignoreExtensions = [
103
110
  '.svg',
@@ -136,6 +143,8 @@ const ignoreDirs = [
136
143
  */
137
144
  const formatFilesGlob = async (pathGlob, options) => {
138
145
  const silent = options?.silent ?? false;
146
+ const ignoreUnknown = options?.ignoreUnknown ?? true;
147
+ const ignore = options?.ignore;
139
148
  const conditionalEcho = silent ? () => { } : echo;
140
149
  try {
141
150
  // Find all files matching the glob
@@ -148,7 +157,7 @@ const formatFilesGlob = async (pathGlob, options) => {
148
157
  conditionalEcho('No files found matching pattern:', pathGlob);
149
158
  return Result.ok(undefined);
150
159
  }
151
- return await formatFiles(files, { silent });
160
+ return await formatFiles(files, { silent, ignoreUnknown, ignore });
152
161
  }
153
162
  catch (error) {
154
163
  if (!silent) {
@@ -163,7 +172,7 @@ const formatFilesGlob = async (pathGlob, options) => {
163
172
  * @param options - Options for formatting
164
173
  */
165
174
  const formatUncommittedFiles = async (options) => {
166
- const { untracked = true, modified = true, staged = true, silent = false, } = options ?? {};
175
+ const { untracked = true, modified = true, staged = true, silent = false, ignoreUnknown = true, ignore, } = options ?? {};
167
176
  const mut_files = [];
168
177
  if (untracked) {
169
178
  const untrackedFilesResult = await getUntrackedFiles({ silent });
@@ -195,7 +204,11 @@ const formatUncommittedFiles = async (options) => {
195
204
  }
196
205
  mut_files.push(...stagedFilesResult.value);
197
206
  }
198
- return formatFiles(Arr.uniq(mut_files), { silent });
207
+ return formatFiles(Arr.uniq(mut_files), {
208
+ silent,
209
+ ignoreUnknown,
210
+ ignore,
211
+ });
199
212
  };
200
213
  /**
201
214
  * Format only files that differ from the specified base branch or commit
@@ -212,7 +225,7 @@ const formatUncommittedFiles = async (options) => {
212
225
  */
213
226
  const formatDiffFrom = async (base, options) => {
214
227
  // const silent = options?.silent ?? false;
215
- const { silent = false, includeUntracked = true, includeModified = true, includeStaged = true, } = options ?? {};
228
+ const { silent = false, includeUntracked = true, includeModified = true, includeStaged = true, ignoreUnknown = true, ignore, } = options ?? {};
216
229
  const conditionalEcho = silent ? () => { } : echo;
217
230
  // Get files that differ from base branch/commit (excluding deleted files)
218
231
  const diffFromBaseResult = await getDiffFrom(base, {
@@ -265,7 +278,11 @@ const formatDiffFrom = async (base, options) => {
265
278
  conditionalEcho('No files to format');
266
279
  return Result.ok(undefined);
267
280
  }
268
- return formatFiles(allFiles, { silent });
281
+ return formatFiles(allFiles, {
282
+ silent,
283
+ ignoreUnknown,
284
+ ignore,
285
+ });
269
286
  };
270
287
 
271
288
  export { formatDiffFrom, formatFiles, formatFilesGlob, formatUncommittedFiles };
@@ -1 +1 @@
1
- {"version":3,"file":"format.mjs","sources":["../../src/functions/format.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAWA;;;;AAIG;AACI,MAAM,WAAW,GAAG,OACzB,KAAwB,EACxB,OAGE,KACgD;AAClD,IAAA,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,KAAK;AAEvC,IAAA,MAAM,eAAe,GAAG,MAAM,GAAG,MAAK,EAAE,CAAC,GAAG,IAAI;AAEhD,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,eAAe,CAAC,oBAAoB,CAAC;AACrC,QAAA,OAAO,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC;IAC7B;AAEA,IAAA,eAAe,CAAC,CAAA,WAAA,EAAc,KAAK,CAAC,MAAM,CAAA,SAAA,CAAW,CAAC;;AAGtD,IAAA,MAAM,OAAO;;AAEX,IAAA,MAAM,OAAO,CAAC,UAAU,CACtB,KAAK,CAAC,GAAG,CAAC,OAAO,QAAQ,KAAI;AAC3B,QAAA,IAAI;;AAEF,YAAA,IAAI;AACF,gBAAA,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC3B;AAAE,YAAA,MAAM;;AAEN,gBAAA,eAAe,CAAC,CAAA,4BAAA,EAA+B,QAAQ,CAAA,CAAE,CAAC;AAC1D,gBAAA,OAAO,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC;YAC7B;;YAGA,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;;YAGnD,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;;YAG9D,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE;AACpD,gBAAA,UAAU,EAAE,iBAAiB;AAC9B,aAAA,CAAC;YAEF,IACE,QAAQ,CAAC,OAAO;gBAChB,CAAC,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,QAAQ,CAAC,EAC9C;AACA,gBAAA,eAAe,CAAC,CAAA,uBAAA,EAA0B,QAAQ,CAAA,CAAE,CAAC;AACrD,gBAAA,OAAO,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC;YAC7B;;YAGA,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE;AAC/C,gBAAA,GAAG,eAAe;AAClB,gBAAA,QAAQ,EAAE,QAAQ;AACnB,aAAA,CAAC;;AAGF,YAAA,IAAI,SAAS,KAAK,OAAO,EAAE;AACzB,gBAAA,eAAe,CAAC,CAAA,WAAA,EAAc,QAAQ,CAAA,CAAE,CAAC;YAC3C;iBAAO;gBACL,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC;AAC/C,gBAAA,eAAe,CAAC,CAAA,WAAA,EAAc,QAAQ,CAAA,CAAE,CAAC;YAC3C;AAEA,YAAA,OAAO,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC;QAC7B;QAAE,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO,CAAC,KAAK,CAAC,CAAA,iBAAA,EAAoB,QAAQ,CAAA,CAAA,CAAG,EAAE,KAAK,CAAC;YACvD;AACA,YAAA,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1B;IACF,CAAC,CAAC,CACH;AAEH,IAAA,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,EAAE;AAClD,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;QAC7C,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAChC,YAAA,OAAO,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC;QAC7B;aAAO;YACL,MAAM,MAAM,GAAuB;AAChC,iBAAA,MAAM,CAAC,MAAM,CAAC,KAAK;iBACnB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AAEtB,YAAA,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QAC3B;IACF;SAAO;QACL,MAAM,MAAM,GAAuB;aAChC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,UAAU;aACrC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAiB,CAAC;AAElC,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;IAC3B;AACF;AAEA,MAAM,eAAe,GAAG,CAAC,QAAgB,KAAa;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAExC,IAAA,QACE,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;AACzB,QAAA,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;AAC3B,QAAA,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACtD,QAAA,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAEtD,CAAC;AAED,MAAM,WAAW,GAAwB,IAAI,GAAG,CAAC;IAC/C,WAAW;IACX,mBAAmB;IACnB,SAAS;IACT,iBAAiB;IACjB,eAAe;IACf,YAAY;AACb,CAAA,CAAC;AAEF,MAAM,gBAAgB,GAAsB;IAC1C,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,cAAc;CACN;AAEV,MAAM,UAAU,GAAsB;IACpC,cAAc;IACd,MAAM;IACN,MAAM;IACN,OAAO;IACP,KAAK;IACL,QAAQ;IACR,SAAS;IACT,OAAO;CACC;AAEV;;;;AAIG;AACI,MAAM,eAAe,GAAG,OAC7B,QAAgB,EAChB,OAAwC,KACD;AACvC,IAAA,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,KAAK;AACvC,IAAA,MAAM,eAAe,GAAG,MAAM,GAAG,MAAK,EAAE,CAAC,GAAG,IAAI;AAEhD,IAAA,IAAI;;AAEF,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE;AACjC,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,MAAM,EAAE,CAAC,oBAAoB,EAAE,YAAY,CAAC;AAC5C,YAAA,GAAG,EAAE,IAAI;AACV,SAAA,CAAC;AAEF,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,YAAA,eAAe,CAAC,kCAAkC,EAAE,QAAQ,CAAC;AAC7D,YAAA,OAAO,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC;QAC7B;QAEA,OAAO,MAAM,WAAW,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC;IAC7C;IAAE,OAAO,KAAK,EAAE;QACd,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC;QAC/C;AACA,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1B;AACF;AAEA;;;;AAIG;MACU,sBAAsB,GAAG,OACpC,OAKE,KAMA;IACF,MAAM,EACJ,SAAS,GAAG,IAAI,EAChB,QAAQ,GAAG,IAAI,EACf,MAAM,GAAG,IAAI,EACb,MAAM,GAAG,KAAK,GACf,GAAG,OAAO,IAAI,EAAE;IAEjB,MAAM,SAAS,GAAa,EAAE;IAE9B,IAAI,SAAS,EAAE;QACb,MAAM,oBAAoB,GAAG,MAAM,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;AAEhE,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE;YACtC,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO,CAAC,KAAK,CACX,8BAA8B,EAC9B,oBAAoB,CAAC,KAAK,CAC3B;YACH;AACA,YAAA,OAAO,oBAAoB;QAC7B;QAEA,SAAS,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC;IAC/C;IAEA,IAAI,QAAQ,EAAE;QACZ,MAAM,eAAe,GAAG,MAAM,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;AAE1D,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE;YACjC,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,eAAe,CAAC,KAAK,CAAC;YACtE;AACA,YAAA,OAAO,eAAe;QACxB;QAEA,SAAS,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC;IAC1C;IAEA,IAAI,MAAM,EAAE;QACV,MAAM,iBAAiB,GAAG,MAAM,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;AAE1D,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE;YACnC,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,iBAAiB,CAAC,KAAK,CAAC;YACxE;AACA,YAAA,OAAO,iBAAiB;QAC1B;QAEA,SAAS,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC;IAC5C;AAEA,IAAA,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC;AACrD;AAEA;;;;;;;;;;;;AAYG;AACI,MAAM,cAAc,GAAG,OAC5B,IAAY,EACZ,OAKE,KAUA;;IAEF,MAAM,EACJ,MAAM,GAAG,KAAK,EACd,gBAAgB,GAAG,IAAI,EACvB,eAAe,GAAG,IAAI,EACtB,aAAa,GAAG,IAAI,GACrB,GAAG,OAAO,IAAI,EAAE;AAEjB,IAAA,MAAM,eAAe,GAAG,MAAM,GAAG,MAAK,EAAE,CAAC,GAAG,IAAI;;AAGhD,IAAA,MAAM,kBAAkB,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE;QACjD,MAAM;AACP,KAAA,CAAC;AAEF,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE;QACpC,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,kBAAkB,CAAC,KAAK,CAAC;QACzE;AACA,QAAA,OAAO,kBAAkB;IAC3B;AAEA,IAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK;AAC1C,IAAA,MAAM,YAAY,GAAa,SAAS,CAAC,KAAK,EAAE;;IAGhD,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI;QAC/B,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,iBAAiB,EAAE;QACpE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,gBAAgB,EAAE;QACjE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,cAAc,EAAE;AAC5D,KAAA,EAAE;QACD,IAAI,IAAI,EAAE;;YAER,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AAExC,YAAA,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;gBAC7B,IAAI,CAAC,MAAM,EAAE;oBACX,OAAO,CAAC,KAAK,CAAC,CAAA,cAAA,EAAiB,IAAI,CAAA,OAAA,CAAS,EAAE,WAAW,CAAC,KAAK,CAAC;gBAClE;AACA,gBAAA,OAAO,WAAW;YACpB;AAEA,YAAA,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK;;AAG/B,YAAA,YAAY,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QAC7B;IACF;IAEA,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;IAEvC,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,MAAM,iBAAiB,GAAG;AACxB,YAAA,gBAAgB,GAAG,iBAAiB,GAAG,SAAS;AAChD,YAAA,eAAe,GAAG,gBAAgB,GAAG,SAAS;AAC9C,YAAA,aAAa,GAAG,cAAc,GAAG,SAAS;AAC3C,SAAA,CAAC,MAAM,CAAC,cAAc,CAAC;AAExB,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,CAAA,kCAAA,EAAqC,IAAI,CAAA,CAAE;YAC3C;iBACG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KACR,CAAC,KAAK,iBAAiB,CAAC,MAAM,GAAG,CAAC,GAAG,CAAA,EAAA,EAAK,CAAC,CAAA,CAAE,GAAG,CAAA,KAAA,EAAQ,CAAC,CAAA,CAAE;iBAE5D,IAAI,CAAC,EAAE,CAAC;AACZ,SAAA,CAAC,IAAI,CAAC,EAAE,CAAC;AAEV,QAAA,eAAe,CAAC,CAAA,EAAG,OAAO,GAAG,EAAE,QAAQ,CAAC;IAC1C;AAEA,IAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;QACzB,eAAe,CAAC,oBAAoB,CAAC;AACrC,QAAA,OAAO,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC;IAC7B;IAEA,OAAO,WAAW,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC;AAC1C;;;;"}
1
+ {"version":3,"file":"format.mjs","sources":["../../src/functions/format.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-repo-utils",
3
- "version": "7.1.0",
3
+ "version": "7.2.0",
4
4
  "private": false,
5
5
  "keywords": [
6
6
  "typescript"
@@ -5,7 +5,7 @@ import { assertRepoIsClean } from '../functions/index.mjs';
5
5
 
6
6
  const cmdDef = cmd.command({
7
7
  name: 'assert-repo-is-clean-cli',
8
- version: '7.1.0',
8
+ version: '7.2.0',
9
9
  args: {
10
10
  silent: cmd.flag({
11
11
  long: 'silent',
@@ -5,7 +5,7 @@ import { checkShouldRunTypeChecks } from '../functions/index.mjs';
5
5
 
6
6
  const cmdDef = cmd.command({
7
7
  name: 'check-should-run-type-checks-cli',
8
- version: '7.1.0',
8
+ version: '7.2.0',
9
9
  args: {
10
10
  pathsIgnore: cmd.multioption({
11
11
  long: 'paths-ignore',
@@ -6,7 +6,7 @@ import { formatDiffFrom } from '../functions/index.mjs';
6
6
 
7
7
  const cmdDef = cmd.command({
8
8
  name: 'format-diff-from-cli',
9
- version: '7.1.0',
9
+ version: '7.2.0',
10
10
  args: {
11
11
  base: cmd.positional({
12
12
  type: cmd.string,
@@ -31,6 +31,11 @@ const cmdDef = cmd.command({
31
31
  description:
32
32
  'Exclude staged files in addition to diff files (default: false)',
33
33
  }),
34
+ ignoreUnknown: cmd.flag({
35
+ long: 'ignore-unknown',
36
+ type: cmd.optional(cmd.boolean),
37
+ description: 'Ignore unknown files (default: true)',
38
+ }),
34
39
  silent: cmd.flag({
35
40
  long: 'silent',
36
41
  type: cmd.optional(cmd.boolean),
@@ -43,6 +48,7 @@ const cmdDef = cmd.command({
43
48
  excludeUntracked: args.excludeUntracked ?? false,
44
49
  excludeModified: args.excludeModified ?? false,
45
50
  excludeStaged: args.excludeStaged ?? false,
51
+ ignoreUnknown: args.ignoreUnknown ?? true,
46
52
  silent: args.silent ?? false,
47
53
  }).catch((error) => {
48
54
  console.error('An error occurred:', error);
@@ -57,6 +63,7 @@ const main = async (
57
63
  excludeUntracked: boolean;
58
64
  excludeModified: boolean;
59
65
  excludeStaged: boolean;
66
+ ignoreUnknown: boolean;
60
67
  silent: boolean;
61
68
  }>,
62
69
  ): Promise<void> => {
@@ -64,6 +71,7 @@ const main = async (
64
71
  includeUntracked: !args.excludeUntracked,
65
72
  includeModified: !args.excludeModified,
66
73
  includeStaged: !args.excludeStaged,
74
+ ignoreUnknown: args.ignoreUnknown,
67
75
  silent: args.silent,
68
76
  });
69
77
 
@@ -6,7 +6,7 @@ import { formatUncommittedFiles } from '../functions/index.mjs';
6
6
 
7
7
  const cmdDef = cmd.command({
8
8
  name: 'format-uncommitted-cli',
9
- version: '7.1.0',
9
+ version: '7.2.0',
10
10
  args: {
11
11
  excludeUntracked: cmd.flag({
12
12
  long: 'exclude-untracked',
@@ -26,6 +26,11 @@ const cmdDef = cmd.command({
26
26
  description:
27
27
  'Exclude staged files in addition to diff files (default: false)',
28
28
  }),
29
+ ignoreUnknown: cmd.flag({
30
+ long: 'ignore-unknown',
31
+ type: cmd.optional(cmd.boolean),
32
+ description: 'Ignore unknown files (default: true)',
33
+ }),
29
34
  silent: cmd.flag({
30
35
  long: 'silent',
31
36
  type: cmd.optional(cmd.boolean),
@@ -37,6 +42,7 @@ const cmdDef = cmd.command({
37
42
  excludeUntracked: args.excludeUntracked ?? false,
38
43
  excludeModified: args.excludeModified ?? false,
39
44
  excludeStaged: args.excludeStaged ?? false,
45
+ ignoreUnknown: args.ignoreUnknown ?? true,
40
46
  silent: args.silent ?? false,
41
47
  }).catch((error) => {
42
48
  console.error('An error occurred:', error);
@@ -50,6 +56,7 @@ const main = async (
50
56
  excludeUntracked: boolean;
51
57
  excludeModified: boolean;
52
58
  excludeStaged: boolean;
59
+ ignoreUnknown: boolean;
53
60
  silent: boolean;
54
61
  }>,
55
62
  ): Promise<void> => {
@@ -57,6 +64,7 @@ const main = async (
57
64
  untracked: !args.excludeUntracked,
58
65
  modified: !args.excludeModified,
59
66
  staged: !args.excludeStaged,
67
+ ignoreUnknown: args.ignoreUnknown,
60
68
  silent: args.silent,
61
69
  });
62
70
  if (Result.isErr(result)) {
@@ -38,7 +38,7 @@ const nonEmptyArray = <T extends cmd.Type<any, any>>(
38
38
 
39
39
  const cmdDef = cmd.command({
40
40
  name: 'gen-index-ts-cli',
41
- version: '7.1.0',
41
+ version: '7.2.0',
42
42
  args: {
43
43
  // required args
44
44
  targetDirectory: cmd.positional({
@@ -19,6 +19,7 @@ export const formatFiles = async (
19
19
  options?: Readonly<{
20
20
  silent?: boolean;
21
21
  ignore?: (filePath: string) => boolean;
22
+ ignoreUnknown?: boolean;
22
23
  }>,
23
24
  ): Promise<Result<undefined, readonly unknown[]>> => {
24
25
  const silent = options?.silent ?? false;
@@ -66,6 +67,15 @@ export const formatFiles = async (
66
67
  return Result.ok(undefined);
67
68
  }
68
69
 
70
+ if (
71
+ (options?.ignoreUnknown ?? true) &&
72
+ fileInfo.inferredParser === null
73
+ ) {
74
+ // Silently skip files with no parser
75
+ conditionalEcho(`Skipping file (no parser): ${filePath}`);
76
+ return Result.ok(undefined);
77
+ }
78
+
69
79
  // Format the content
70
80
  const formatted = await prettier.format(content, {
71
81
  ...prettierOptions,
@@ -128,6 +138,7 @@ const ignoreFiles: ReadonlySet<string> = new Set([
128
138
  '.prettierignore',
129
139
  '.editorconfig',
130
140
  '.gitignore',
141
+ '.npmignore',
131
142
  ]);
132
143
 
133
144
  const ignoreExtensions: readonly string[] = [
@@ -169,9 +180,15 @@ const ignoreDirs: readonly string[] = [
169
180
  */
170
181
  export const formatFilesGlob = async (
171
182
  pathGlob: string,
172
- options?: Readonly<{ silent?: boolean }>,
183
+ options?: Readonly<{
184
+ silent?: boolean;
185
+ ignoreUnknown?: boolean;
186
+ ignore?: (filePath: string) => boolean;
187
+ }>,
173
188
  ): Promise<Result<undefined, unknown>> => {
174
189
  const silent = options?.silent ?? false;
190
+ const ignoreUnknown = options?.ignoreUnknown ?? true;
191
+ const ignore = options?.ignore;
175
192
  const conditionalEcho = silent ? () => {} : echo;
176
193
 
177
194
  try {
@@ -187,7 +204,7 @@ export const formatFilesGlob = async (
187
204
  return Result.ok(undefined);
188
205
  }
189
206
 
190
- return await formatFiles(files, { silent });
207
+ return await formatFiles(files, { silent, ignoreUnknown, ignore });
191
208
  } catch (error) {
192
209
  if (!silent) {
193
210
  console.error('Error in formatFiles:', error);
@@ -207,6 +224,8 @@ export const formatUncommittedFiles = async (
207
224
  modified?: boolean;
208
225
  staged?: boolean;
209
226
  silent?: boolean;
227
+ ignoreUnknown?: boolean;
228
+ ignore?: (filePath: string) => boolean;
210
229
  }>,
211
230
  ): Promise<
212
231
  Result<
@@ -219,6 +238,8 @@ export const formatUncommittedFiles = async (
219
238
  modified = true,
220
239
  staged = true,
221
240
  silent = false,
241
+ ignoreUnknown = true,
242
+ ignore,
222
243
  } = options ?? {};
223
244
 
224
245
  const mut_files: string[] = [];
@@ -265,7 +286,11 @@ export const formatUncommittedFiles = async (
265
286
  mut_files.push(...stagedFilesResult.value);
266
287
  }
267
288
 
268
- return formatFiles(Arr.uniq(mut_files), { silent });
289
+ return formatFiles(Arr.uniq(mut_files), {
290
+ silent,
291
+ ignoreUnknown,
292
+ ignore,
293
+ });
269
294
  };
270
295
 
271
296
  /**
@@ -288,6 +313,8 @@ export const formatDiffFrom = async (
288
313
  includeModified?: boolean;
289
314
  includeStaged?: boolean;
290
315
  silent?: boolean;
316
+ ignoreUnknown?: boolean;
317
+ ignore?: (filePath: string) => boolean;
291
318
  }>,
292
319
  ): Promise<
293
320
  Result<
@@ -305,6 +332,8 @@ export const formatDiffFrom = async (
305
332
  includeUntracked = true,
306
333
  includeModified = true,
307
334
  includeStaged = true,
335
+ ignoreUnknown = true,
336
+ ignore,
308
337
  } = options ?? {};
309
338
 
310
339
  const conditionalEcho = silent ? () => {} : echo;
@@ -374,5 +403,9 @@ export const formatDiffFrom = async (
374
403
  return Result.ok(undefined);
375
404
  }
376
405
 
377
- return formatFiles(allFiles, { silent });
406
+ return formatFiles(allFiles, {
407
+ silent,
408
+ ignoreUnknown,
409
+ ignore,
410
+ });
378
411
  };