ts-codemod-lib 2.1.7 → 2.2.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 (43) hide show
  1. package/README.md +7 -5
  2. package/dist/cmd/append-as-const.mjs +7 -1
  3. package/dist/cmd/append-as-const.mjs.map +1 -1
  4. package/dist/cmd/convert-interface-to-type.mjs +7 -1
  5. package/dist/cmd/convert-interface-to-type.mjs.map +1 -1
  6. package/dist/cmd/convert-to-readonly.mjs +7 -1
  7. package/dist/cmd/convert-to-readonly.mjs.map +1 -1
  8. package/dist/cmd/replace-any-with-unknown.mjs +7 -1
  9. package/dist/cmd/replace-any-with-unknown.mjs.map +1 -1
  10. package/dist/cmd/replace-record-with-unknown-record.mjs +7 -1
  11. package/dist/cmd/replace-record-with-unknown-record.mjs.map +1 -1
  12. package/dist/cmd/run-transformer-cli.d.mts +1 -0
  13. package/dist/cmd/run-transformer-cli.d.mts.map +1 -1
  14. package/dist/cmd/run-transformer-cli.mjs +26 -9
  15. package/dist/cmd/run-transformer-cli.mjs.map +1 -1
  16. package/dist/entry-point.mjs +1 -0
  17. package/dist/entry-point.mjs.map +1 -1
  18. package/dist/functions/ast-transformers/convert-to-readonly.d.mts.map +1 -1
  19. package/dist/functions/ast-transformers/convert-to-readonly.mjs +9 -2
  20. package/dist/functions/ast-transformers/convert-to-readonly.mjs.map +1 -1
  21. package/dist/functions/functions/index.d.mts +1 -0
  22. package/dist/functions/functions/index.d.mts.map +1 -1
  23. package/dist/functions/functions/index.mjs +1 -0
  24. package/dist/functions/functions/index.mjs.map +1 -1
  25. package/dist/functions/functions/is-conditional-type-distribution-guard.d.mts +23 -0
  26. package/dist/functions/functions/is-conditional-type-distribution-guard.d.mts.map +1 -0
  27. package/dist/functions/functions/is-conditional-type-distribution-guard.mjs +40 -0
  28. package/dist/functions/functions/is-conditional-type-distribution-guard.mjs.map +1 -0
  29. package/dist/functions/index.mjs +1 -0
  30. package/dist/functions/index.mjs.map +1 -1
  31. package/dist/index.mjs +1 -0
  32. package/dist/index.mjs.map +1 -1
  33. package/package.json +21 -15
  34. package/src/cmd/append-as-const.mts +8 -1
  35. package/src/cmd/convert-interface-to-type.mts +8 -1
  36. package/src/cmd/convert-to-readonly.mts +8 -1
  37. package/src/cmd/replace-any-with-unknown.mts +8 -1
  38. package/src/cmd/replace-record-with-unknown-record.mts +8 -1
  39. package/src/cmd/run-transformer-cli.mts +32 -10
  40. package/src/functions/ast-transformers/convert-to-readonly.mts +13 -2
  41. package/src/functions/ast-transformers/convert-to-readonly.test.mts +50 -0
  42. package/src/functions/functions/index.mts +1 -0
  43. package/src/functions/functions/is-conditional-type-distribution-guard.mts +45 -0
package/README.md CHANGED
@@ -218,7 +218,7 @@ This package provides command-line tools for common TypeScript transformations:
218
218
  Appends `as const` to array literals and object literals to make them readonly constants.
219
219
 
220
220
  ```bash
221
- npx append-as-const <baseDir> [--exclude <pattern>] [--silent]
221
+ npx append-as-const <baseDir> [--exclude <pattern>] [--uncommitted] [--diff-from <base>] [--silent]
222
222
  ```
223
223
 
224
224
  ### convert-interface-to-type
@@ -226,7 +226,7 @@ npx append-as-const <baseDir> [--exclude <pattern>] [--silent]
226
226
  Converts TypeScript interface declarations to type aliases.
227
227
 
228
228
  ```bash
229
- npx convert-interface-to-type <baseDir> [--exclude <pattern>] [--silent]
229
+ npx convert-interface-to-type <baseDir> [--exclude <pattern>] [--uncommitted] [--diff-from <base>] [--silent]
230
230
  ```
231
231
 
232
232
  ### convert-to-readonly
@@ -234,7 +234,7 @@ npx convert-interface-to-type <baseDir> [--exclude <pattern>] [--silent]
234
234
  Adds `readonly` modifiers to type definitions throughout your codebase.
235
235
 
236
236
  ```bash
237
- npx convert-to-readonly <baseDir> [--exclude <pattern>] [--silent]
237
+ npx convert-to-readonly <baseDir> [--exclude <pattern>] [--uncommitted] [--diff-from <base>] [--silent]
238
238
  ```
239
239
 
240
240
  ### replace-any-with-unknown
@@ -242,7 +242,7 @@ npx convert-to-readonly <baseDir> [--exclude <pattern>] [--silent]
242
242
  Replaces `any` type annotations with `unknown` for improved type safety.
243
243
 
244
244
  ```bash
245
- npx replace-any-with-unknown <baseDir> [--exclude <pattern>] [--silent]
245
+ npx replace-any-with-unknown <baseDir> [--exclude <pattern>] [--uncommitted] [--diff-from <base>] [--silent]
246
246
  ```
247
247
 
248
248
  ### replace-record-with-unknown-record
@@ -250,13 +250,15 @@ npx replace-any-with-unknown <baseDir> [--exclude <pattern>] [--silent]
250
250
  Replaces `Record<string, unknown>` with `UnknownRecord` for better type safety.
251
251
 
252
252
  ```bash
253
- npx replace-record-with-unknown-record <baseDir> [--exclude <pattern>] [--silent]
253
+ npx replace-record-with-unknown-record <baseDir> [--exclude <pattern>] [--uncommitted] [--diff-from <base>] [--silent]
254
254
  ```
255
255
 
256
256
  **Common Options:**
257
257
 
258
258
  - `baseDir`: Base directory to scan for TypeScript files
259
259
  - `--exclude`: Glob patterns to exclude (e.g., `"src/generated/**/*.mts"`)
260
+ - `--uncommitted`: Transform only uncommitted files (untracked, modified, and staged), intersected with `baseDir`
261
+ - `--diff-from <base>`: Transform only files that differ from the given base branch or commit hash (e.g., `origin/main`), intersected with `baseDir`
260
262
  - `--silent`: Suppress output messages
261
263
 
262
264
  ## Programmatic Usage
@@ -10,7 +10,7 @@ import { runTransformerCLI } from './run-transformer-cli.mjs';
10
10
  const transformer = appendAsConstTransformer();
11
11
  const cmdDef = cmd.command({
12
12
  name: transformer.name,
13
- version: '2.1.7',
13
+ version: '2.2.1',
14
14
  args: {
15
15
  baseDir: cmd.positional({
16
16
  type: cmd.string,
@@ -27,6 +27,11 @@ const cmdDef = cmd.command({
27
27
  type: cmd.optional(cmd.boolean),
28
28
  description: 'If true, transforms only uncommitted files (untracked, modified, and staged files)',
29
29
  }),
30
+ diffFrom: cmd.option({
31
+ long: 'diff-from',
32
+ type: cmd.optional(cmd.string),
33
+ description: 'If provided, transforms only files that differ from the given base branch or commit hash',
34
+ }),
30
35
  silent: cmd.flag({
31
36
  long: 'silent',
32
37
  type: cmd.optional(cmd.boolean),
@@ -39,6 +44,7 @@ const cmdDef = cmd.command({
39
44
  baseDir: args.baseDir,
40
45
  exclude: args.exclude ?? [],
41
46
  uncommitted: args.uncommitted ?? false,
47
+ diffFrom: args.diffFrom,
42
48
  silent: args.silent ?? false,
43
49
  }, [transformer]);
44
50
  if (Result.isErr(result)) {
@@ -1 +1 @@
1
- {"version":3,"file":"append-as-const.mjs","sources":["../../src/cmd/append-as-const.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;AAOA,MAAM,WAAW,GAAG,wBAAwB,EAAE;AAE9C,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACzB,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,IAAI,EAAE;AACJ,QAAA,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;YACtB,IAAI,EAAE,GAAG,CAAC,MAAM;AAChB,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,WAAW,EAAE,uDAAuD;SACrE,CAAC;AACF,QAAA,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC;AACvB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzC,YAAA,WAAW,EACT,4FAA4F;SAC/F,CAAC;AACF,QAAA,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EACT,oFAAoF;SACvF,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;QAChB,CAAC,YAA0B;AACzB,YAAA,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC;gBACE,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;AAC3B,gBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK;AACtC,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AAC7B,aAAA,EACD,CAAC,WAAW,CAAC,CACd;AAED,YAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxB,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACjB;QACF,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAc,KAAI;AAC5B,YAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC;AAE1C,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,QAAA,CAAC,CAAC;IACJ,CAAC;AACF,CAAA,CAAC;AAEF,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"append-as-const.mjs","sources":["../../src/cmd/append-as-const.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;AAOA,MAAM,WAAW,GAAG,wBAAwB,EAAE;AAE9C,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACzB,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,IAAI,EAAE;AACJ,QAAA,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;YACtB,IAAI,EAAE,GAAG,CAAC,MAAM;AAChB,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,WAAW,EAAE,uDAAuD;SACrE,CAAC;AACF,QAAA,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC;AACvB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzC,YAAA,WAAW,EACT,4FAA4F;SAC/F,CAAC;AACF,QAAA,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EACT,oFAAoF;SACvF,CAAC;AACF,QAAA,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC;AACnB,YAAA,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;AAC9B,YAAA,WAAW,EACT,0FAA0F;SAC7F,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;QAChB,CAAC,YAA0B;AACzB,YAAA,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC;gBACE,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;AAC3B,gBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK;gBACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AAC7B,aAAA,EACD,CAAC,WAAW,CAAC,CACd;AAED,YAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxB,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACjB;QACF,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAc,KAAI;AAC5B,YAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC;AAE1C,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,QAAA,CAAC,CAAC;IACJ,CAAC;AACF,CAAA,CAAC;AAEF,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC"}
@@ -10,7 +10,7 @@ import { runTransformerCLI } from './run-transformer-cli.mjs';
10
10
  const transformer = convertInterfaceToTypeTransformer();
11
11
  const cmdDef = cmd.command({
12
12
  name: transformer.name,
13
- version: '2.1.7',
13
+ version: '2.2.1',
14
14
  args: {
15
15
  baseDir: cmd.positional({
16
16
  type: cmd.string,
@@ -27,6 +27,11 @@ const cmdDef = cmd.command({
27
27
  type: cmd.optional(cmd.boolean),
28
28
  description: 'If true, transforms only uncommitted files (untracked, modified, and staged files)',
29
29
  }),
30
+ diffFrom: cmd.option({
31
+ long: 'diff-from',
32
+ type: cmd.optional(cmd.string),
33
+ description: 'If provided, transforms only files that differ from the given base branch or commit hash',
34
+ }),
30
35
  silent: cmd.flag({
31
36
  long: 'silent',
32
37
  type: cmd.optional(cmd.boolean),
@@ -39,6 +44,7 @@ const cmdDef = cmd.command({
39
44
  baseDir: args.baseDir,
40
45
  exclude: args.exclude ?? [],
41
46
  uncommitted: args.uncommitted ?? false,
47
+ diffFrom: args.diffFrom,
42
48
  silent: args.silent ?? false,
43
49
  }, [transformer]);
44
50
  if (Result.isErr(result)) {
@@ -1 +1 @@
1
- {"version":3,"file":"convert-interface-to-type.mjs","sources":["../../src/cmd/convert-interface-to-type.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;AAOA,MAAM,WAAW,GAAG,iCAAiC,EAAE;AAEvD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACzB,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,IAAI,EAAE;AACJ,QAAA,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;YACtB,IAAI,EAAE,GAAG,CAAC,MAAM;AAChB,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,WAAW,EAAE,uDAAuD;SACrE,CAAC;AACF,QAAA,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC;AACvB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzC,YAAA,WAAW,EACT,4FAA4F;SAC/F,CAAC;AACF,QAAA,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EACT,oFAAoF;SACvF,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;QAChB,CAAC,YAA0B;AACzB,YAAA,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC;gBACE,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;AAC3B,gBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK;AACtC,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AAC7B,aAAA,EACD,CAAC,WAAW,CAAC,CACd;AAED,YAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxB,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACjB;QACF,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAc,KAAI;AAC5B,YAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC;AAE1C,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,QAAA,CAAC,CAAC;IACJ,CAAC;AACF,CAAA,CAAC;AAEF,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"convert-interface-to-type.mjs","sources":["../../src/cmd/convert-interface-to-type.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;AAOA,MAAM,WAAW,GAAG,iCAAiC,EAAE;AAEvD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACzB,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,IAAI,EAAE;AACJ,QAAA,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;YACtB,IAAI,EAAE,GAAG,CAAC,MAAM;AAChB,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,WAAW,EAAE,uDAAuD;SACrE,CAAC;AACF,QAAA,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC;AACvB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzC,YAAA,WAAW,EACT,4FAA4F;SAC/F,CAAC;AACF,QAAA,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EACT,oFAAoF;SACvF,CAAC;AACF,QAAA,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC;AACnB,YAAA,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;AAC9B,YAAA,WAAW,EACT,0FAA0F;SAC7F,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;QAChB,CAAC,YAA0B;AACzB,YAAA,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC;gBACE,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;AAC3B,gBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK;gBACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AAC7B,aAAA,EACD,CAAC,WAAW,CAAC,CACd;AAED,YAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxB,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACjB;QACF,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAc,KAAI;AAC5B,YAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC;AAE1C,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,QAAA,CAAC,CAAC;IACJ,CAAC;AACF,CAAA,CAAC;AAEF,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC"}
@@ -10,7 +10,7 @@ import { runTransformerCLI } from './run-transformer-cli.mjs';
10
10
  const transformer = convertToReadonlyTransformer();
11
11
  const cmdDef = cmd.command({
12
12
  name: transformer.name,
13
- version: '2.1.7',
13
+ version: '2.2.1',
14
14
  args: {
15
15
  baseDir: cmd.positional({
16
16
  type: cmd.string,
@@ -27,6 +27,11 @@ const cmdDef = cmd.command({
27
27
  type: cmd.optional(cmd.boolean),
28
28
  description: 'If true, transforms only uncommitted files (untracked, modified, and staged files)',
29
29
  }),
30
+ diffFrom: cmd.option({
31
+ long: 'diff-from',
32
+ type: cmd.optional(cmd.string),
33
+ description: 'If provided, transforms only files that differ from the given base branch or commit hash',
34
+ }),
30
35
  silent: cmd.flag({
31
36
  long: 'silent',
32
37
  type: cmd.optional(cmd.boolean),
@@ -39,6 +44,7 @@ const cmdDef = cmd.command({
39
44
  baseDir: args.baseDir,
40
45
  exclude: args.exclude ?? [],
41
46
  uncommitted: args.uncommitted ?? false,
47
+ diffFrom: args.diffFrom,
42
48
  silent: args.silent ?? false,
43
49
  }, [transformer]);
44
50
  if (Result.isErr(result)) {
@@ -1 +1 @@
1
- {"version":3,"file":"convert-to-readonly.mjs","sources":["../../src/cmd/convert-to-readonly.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;AAOA,MAAM,WAAW,GAAG,4BAA4B,EAAE;AAElD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACzB,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,IAAI,EAAE;AACJ,QAAA,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;YACtB,IAAI,EAAE,GAAG,CAAC,MAAM;AAChB,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,WAAW,EAAE,uDAAuD;SACrE,CAAC;AACF,QAAA,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC;AACvB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzC,YAAA,WAAW,EACT,4FAA4F;SAC/F,CAAC;AACF,QAAA,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EACT,oFAAoF;SACvF,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;QAChB,CAAC,YAA0B;AACzB,YAAA,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC;gBACE,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;AAC3B,gBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK;AACtC,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AAC7B,aAAA,EACD,CAAC,WAAW,CAAC,CACd;AAED,YAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxB,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACjB;QACF,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAc,KAAI;AAC5B,YAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC;AAE1C,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,QAAA,CAAC,CAAC;IACJ,CAAC;AACF,CAAA,CAAC;AAEF,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"convert-to-readonly.mjs","sources":["../../src/cmd/convert-to-readonly.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;AAOA,MAAM,WAAW,GAAG,4BAA4B,EAAE;AAElD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACzB,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,IAAI,EAAE;AACJ,QAAA,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;YACtB,IAAI,EAAE,GAAG,CAAC,MAAM;AAChB,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,WAAW,EAAE,uDAAuD;SACrE,CAAC;AACF,QAAA,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC;AACvB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzC,YAAA,WAAW,EACT,4FAA4F;SAC/F,CAAC;AACF,QAAA,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EACT,oFAAoF;SACvF,CAAC;AACF,QAAA,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC;AACnB,YAAA,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;AAC9B,YAAA,WAAW,EACT,0FAA0F;SAC7F,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;QAChB,CAAC,YAA0B;AACzB,YAAA,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC;gBACE,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;AAC3B,gBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK;gBACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AAC7B,aAAA,EACD,CAAC,WAAW,CAAC,CACd;AAED,YAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxB,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACjB;QACF,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAc,KAAI;AAC5B,YAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC;AAE1C,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,QAAA,CAAC,CAAC;IACJ,CAAC;AACF,CAAA,CAAC;AAEF,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC"}
@@ -10,7 +10,7 @@ import { runTransformerCLI } from './run-transformer-cli.mjs';
10
10
  const transformer = replaceAnyWithUnknownTransformer();
11
11
  const cmdDef = cmd.command({
12
12
  name: transformer.name,
13
- version: '2.1.7',
13
+ version: '2.2.1',
14
14
  args: {
15
15
  baseDir: cmd.positional({
16
16
  type: cmd.string,
@@ -27,6 +27,11 @@ const cmdDef = cmd.command({
27
27
  type: cmd.optional(cmd.boolean),
28
28
  description: 'If true, transforms only uncommitted files (untracked, modified, and staged files)',
29
29
  }),
30
+ diffFrom: cmd.option({
31
+ long: 'diff-from',
32
+ type: cmd.optional(cmd.string),
33
+ description: 'If provided, transforms only files that differ from the given base branch or commit hash',
34
+ }),
30
35
  silent: cmd.flag({
31
36
  long: 'silent',
32
37
  type: cmd.optional(cmd.boolean),
@@ -39,6 +44,7 @@ const cmdDef = cmd.command({
39
44
  baseDir: args.baseDir,
40
45
  exclude: args.exclude ?? [],
41
46
  uncommitted: args.uncommitted ?? false,
47
+ diffFrom: args.diffFrom,
42
48
  silent: args.silent ?? false,
43
49
  }, [transformer]);
44
50
  if (Result.isErr(result)) {
@@ -1 +1 @@
1
- {"version":3,"file":"replace-any-with-unknown.mjs","sources":["../../src/cmd/replace-any-with-unknown.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;AAOA,MAAM,WAAW,GAAG,gCAAgC,EAAE;AAEtD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACzB,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,IAAI,EAAE;AACJ,QAAA,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;YACtB,IAAI,EAAE,GAAG,CAAC,MAAM;AAChB,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,WAAW,EAAE,uDAAuD;SACrE,CAAC;AACF,QAAA,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC;AACvB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzC,YAAA,WAAW,EACT,4FAA4F;SAC/F,CAAC;AACF,QAAA,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EACT,oFAAoF;SACvF,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;QAChB,CAAC,YAA0B;AACzB,YAAA,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC;gBACE,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;AAC3B,gBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK;AACtC,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AAC7B,aAAA,EACD,CAAC,WAAW,CAAC,CACd;AAED,YAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxB,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACjB;QACF,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAc,KAAI;AAC5B,YAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC;AAE1C,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,QAAA,CAAC,CAAC;IACJ,CAAC;AACF,CAAA,CAAC;AAEF,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"replace-any-with-unknown.mjs","sources":["../../src/cmd/replace-any-with-unknown.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;AAOA,MAAM,WAAW,GAAG,gCAAgC,EAAE;AAEtD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACzB,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,IAAI,EAAE;AACJ,QAAA,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;YACtB,IAAI,EAAE,GAAG,CAAC,MAAM;AAChB,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,WAAW,EAAE,uDAAuD;SACrE,CAAC;AACF,QAAA,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC;AACvB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzC,YAAA,WAAW,EACT,4FAA4F;SAC/F,CAAC;AACF,QAAA,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EACT,oFAAoF;SACvF,CAAC;AACF,QAAA,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC;AACnB,YAAA,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;AAC9B,YAAA,WAAW,EACT,0FAA0F;SAC7F,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;QAChB,CAAC,YAA0B;AACzB,YAAA,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC;gBACE,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;AAC3B,gBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK;gBACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AAC7B,aAAA,EACD,CAAC,WAAW,CAAC,CACd;AAED,YAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxB,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACjB;QACF,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAc,KAAI;AAC5B,YAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC;AAE1C,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,QAAA,CAAC,CAAC;IACJ,CAAC;AACF,CAAA,CAAC;AAEF,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC"}
@@ -10,7 +10,7 @@ import { runTransformerCLI } from './run-transformer-cli.mjs';
10
10
  const transformer = replaceRecordWithUnknownRecordTransformer();
11
11
  const cmdDef = cmd.command({
12
12
  name: transformer.name,
13
- version: '2.1.7',
13
+ version: '2.2.1',
14
14
  args: {
15
15
  baseDir: cmd.positional({
16
16
  type: cmd.string,
@@ -27,6 +27,11 @@ const cmdDef = cmd.command({
27
27
  type: cmd.optional(cmd.boolean),
28
28
  description: 'If true, transforms only uncommitted files (untracked, modified, and staged files)',
29
29
  }),
30
+ diffFrom: cmd.option({
31
+ long: 'diff-from',
32
+ type: cmd.optional(cmd.string),
33
+ description: 'If provided, transforms only files that differ from the given base branch or commit hash',
34
+ }),
30
35
  silent: cmd.flag({
31
36
  long: 'silent',
32
37
  type: cmd.optional(cmd.boolean),
@@ -39,6 +44,7 @@ const cmdDef = cmd.command({
39
44
  baseDir: args.baseDir,
40
45
  exclude: args.exclude ?? [],
41
46
  uncommitted: args.uncommitted ?? false,
47
+ diffFrom: args.diffFrom,
42
48
  silent: args.silent ?? false,
43
49
  }, [transformer]);
44
50
  if (Result.isErr(result)) {
@@ -1 +1 @@
1
- {"version":3,"file":"replace-record-with-unknown-record.mjs","sources":["../../src/cmd/replace-record-with-unknown-record.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;AAOA,MAAM,WAAW,GAAG,yCAAyC,EAAE;AAE/D,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACzB,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,IAAI,EAAE;AACJ,QAAA,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;YACtB,IAAI,EAAE,GAAG,CAAC,MAAM;AAChB,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,WAAW,EAAE,uDAAuD;SACrE,CAAC;AACF,QAAA,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC;AACvB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzC,YAAA,WAAW,EACT,4FAA4F;SAC/F,CAAC;AACF,QAAA,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EACT,oFAAoF;SACvF,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;QAChB,CAAC,YAA0B;AACzB,YAAA,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC;gBACE,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;AAC3B,gBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK;AACtC,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AAC7B,aAAA,EACD,CAAC,WAAW,CAAC,CACd;AAED,YAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxB,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACjB;QACF,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAc,KAAI;AAC5B,YAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC;AAE1C,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,QAAA,CAAC,CAAC;IACJ,CAAC;AACF,CAAA,CAAC;AAEF,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"replace-record-with-unknown-record.mjs","sources":["../../src/cmd/replace-record-with-unknown-record.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;AAOA,MAAM,WAAW,GAAG,yCAAyC,EAAE;AAE/D,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACzB,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,IAAI,EAAE;AACJ,QAAA,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;YACtB,IAAI,EAAE,GAAG,CAAC,MAAM;AAChB,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,WAAW,EAAE,uDAAuD;SACrE,CAAC;AACF,QAAA,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC;AACvB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzC,YAAA,WAAW,EACT,4FAA4F;SAC/F,CAAC;AACF,QAAA,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EACT,oFAAoF;SACvF,CAAC;AACF,QAAA,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC;AACnB,YAAA,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;AAC9B,YAAA,WAAW,EACT,0FAA0F;SAC7F,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;QAChB,CAAC,YAA0B;AACzB,YAAA,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC;gBACE,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;AAC3B,gBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK;gBACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AAC7B,aAAA,EACD,CAAC,WAAW,CAAC,CACd;AAED,YAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxB,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACjB;QACF,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAc,KAAI;AAC5B,YAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC;AAE1C,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,QAAA,CAAC,CAAC;IACJ,CAAC;AACF,CAAA,CAAC;AAEF,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC"}
@@ -4,6 +4,7 @@ type GetFilesOptions = Readonly<{
4
4
  baseDir: string;
5
5
  exclude: readonly string[];
6
6
  uncommitted: boolean;
7
+ diffFrom: string | undefined;
7
8
  silent: boolean;
8
9
  }>;
9
10
  type TransformerCLIOptions = GetFilesOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"run-transformer-cli.d.mts","sourceRoot":"","sources":["../../src/cmd/run-transformer-cli.mts"],"names":[],"mappings":"AAKA,OAAO,EAAO,MAAM,EAAmB,MAAM,eAAe,CAAC;AAO7D,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,wBAAwB,CAAC;AAEhC,KAAK,eAAe,GAAG,QAAQ,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC,CAAC;AAEH,KAAK,qBAAqB,GAAG,eAAe,CAAC;AAE7C,eAAO,MAAM,iBAAiB,GAC5B,SAAS,qBAAqB,EAC9B,cAAc,SAAS,kBAAkB,EAAE,KAC1C,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CA8DtC,CAAC"}
1
+ {"version":3,"file":"run-transformer-cli.d.mts","sourceRoot":"","sources":["../../src/cmd/run-transformer-cli.mts"],"names":[],"mappings":"AAKA,OAAO,EAAO,MAAM,EAAmB,MAAM,eAAe,CAAC;AAQ7D,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,wBAAwB,CAAC;AAEhC,KAAK,eAAe,GAAG,QAAQ,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC,CAAC;AAEH,KAAK,qBAAqB,GAAG,eAAe,CAAC;AAE7C,eAAO,MAAM,iBAAiB,GAC5B,SAAS,qBAAqB,EAC9B,cAAc,SAAS,kBAAkB,EAAE,KAC1C,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAkEtC,CAAC"}
@@ -2,7 +2,7 @@ import dedent from 'dedent';
2
2
  import * as fs from 'node:fs/promises';
3
3
  import * as path from 'node:path';
4
4
  import { Result, Arr, unknownToString } from 'ts-data-forge';
5
- import { glob, getUntrackedFiles, getModifiedFiles, getStagedFiles } from 'ts-repo-utils';
5
+ import { getDiffFrom, glob, getUntrackedFiles, getModifiedFiles, getStagedFiles } from 'ts-repo-utils';
6
6
  import 'ts-morph';
7
7
  import '../functions/functions/is-atomic-type-node.mjs';
8
8
  import '../functions/ast-transformers/readonly-transformer-helpers/constants.mjs';
@@ -14,16 +14,20 @@ const runTransformerCLI = async (options, transformers) => {
14
14
  const errorIfNotSilent = options.silent ? () => { } : console.error;
15
15
  const filesResult = await getFilesForTransformation(options);
16
16
  if (Result.isErr(filesResult)) {
17
- errorIfNotSilent(options.uncommitted
18
- ? 'Error getting uncommitted files:'
19
- : 'Error finding files matching pattern:', filesResult.value);
17
+ errorIfNotSilent(options.diffFrom !== undefined
18
+ ? `Error getting diff files from "${options.diffFrom}":`
19
+ : options.uncommitted
20
+ ? 'Error getting uncommitted files:'
21
+ : 'Error finding files matching pattern:', filesResult.value);
20
22
  return Result.err(undefined);
21
23
  }
22
24
  const files = filesResult.value;
23
25
  if (Arr.isArrayOfLength(files, 0)) {
24
- echoIfNotSilent(options.uncommitted
25
- ? 'No uncommitted files found'
26
- : `No files found matching pattern: ${options.baseDir}`);
26
+ echoIfNotSilent(options.diffFrom !== undefined
27
+ ? `No files found in diff from "${options.diffFrom}" matching pattern: ${options.baseDir}`
28
+ : options.uncommitted
29
+ ? 'No uncommitted files found'
30
+ : `No files found matching pattern: ${options.baseDir}`);
27
31
  return Result.ok(undefined);
28
32
  }
29
33
  const { errorFiles, transformedCount, unchangedCount } = await transformFiles(files, transformers, options.silent);
@@ -50,14 +54,27 @@ const runTransformerCLI = async (options, transformers) => {
50
54
  };
51
55
  const getFilesForTransformation = async (options) => {
52
56
  const filesFromGlob = await getFilesFromGlob(options.baseDir, options.exclude, options.silent);
57
+ if (Result.isErr(filesFromGlob)) {
58
+ return filesFromGlob;
59
+ }
60
+ let mut_files = filesFromGlob.value;
53
61
  if (options.uncommitted) {
54
62
  const uncommittedFiles = await getUncommittedFiles(options.silent);
55
63
  if (Result.isErr(uncommittedFiles)) {
56
64
  return uncommittedFiles;
57
65
  }
58
- return Result.map(filesFromGlob, (files) => Arr.setIntersection(files, uncommittedFiles.value));
66
+ mut_files = Arr.setIntersection(mut_files, uncommittedFiles.value);
67
+ }
68
+ if (options.diffFrom !== undefined) {
69
+ const diffFiles = await getDiffFrom(options.diffFrom, {
70
+ silent: options.silent,
71
+ });
72
+ if (Result.isErr(diffFiles)) {
73
+ return diffFiles;
74
+ }
75
+ mut_files = Arr.setIntersection(mut_files, diffFiles.value);
59
76
  }
60
- return filesFromGlob;
77
+ return Result.ok(mut_files);
61
78
  };
62
79
  const getUncommittedFiles = async (silent) => {
63
80
  const mut_files = [];
@@ -1 +1 @@
1
- {"version":3,"file":"run-transformer-cli.mjs","sources":["../../src/cmd/run-transformer-cli.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-transformer-cli.mjs","sources":["../../src/cmd/run-transformer-cli.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export { IGNORE_FILE_COMMENT_PREFIXES, IGNORE_LINE_COMMENT_PREFIXES } from './fu
12
12
  export { hasDisableNextLineComment } from './functions/functions/has-disable-next-line-comment.mjs';
13
13
  export { isAsConstNode } from './functions/functions/is-as-const-node.mjs';
14
14
  export { isAtomicTypeNode } from './functions/functions/is-atomic-type-node.mjs';
15
+ export { isConditionalTypeDistributionGuard } from './functions/functions/is-conditional-type-distribution-guard.mjs';
15
16
  export { isReadonlyArrayTypeNode, isReadonlyTupleOrArrayTypeNode, isReadonlyTupleTypeNode, isReadonlyTypeReferenceNode, isShallowReadonlyTypeNode } from './functions/functions/is-readonly-node.mjs';
16
17
  export { isSpreadNamedTupleMemberNode, isSpreadParameterNode } from './functions/functions/is-spread-parameter-node.mjs';
17
18
  export { removeParentheses } from './functions/functions/remove-parentheses.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"entry-point.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"entry-point.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"convert-to-readonly.d.mts","sourceRoot":"","sources":["../../../src/functions/ast-transformers/convert-to-readonly.mts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,YAAY,EAA6B,MAAM,eAAe,CAAC;AAqB7E,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAItD,eAAO,MAAM,4BAA4B,GACvC,UAAU,0BAA0B,KACnC,kBAuCF,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,YAAY,CAAC;IACpD;;OAEG;IACH,YAAY,CAAC,EAAE;QACb;;;;WAIG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;KA2BnB,CAAC;IAEF;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC,CAAC"}
1
+ {"version":3,"file":"convert-to-readonly.d.mts","sourceRoot":"","sources":["../../../src/functions/ast-transformers/convert-to-readonly.mts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,YAAY,EAA6B,MAAM,eAAe,CAAC;AAsB7E,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAItD,eAAO,MAAM,4BAA4B,GACvC,UAAU,0BAA0B,KACnC,kBAuCF,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,YAAY,CAAC;IACpD;;OAEG;IACH,YAAY,CAAC,EAAE;QACb;;;;WAIG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;KA2BnB,CAAC;IAEF;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC,CAAC"}
@@ -2,6 +2,7 @@ import { ISet, Arr, pipe, match, mapNullable, isString } from 'ts-data-forge';
2
2
  import * as tsm from 'ts-morph';
3
3
  import { hasDisableNextLineComment } from '../functions/has-disable-next-line-comment.mjs';
4
4
  import { isAtomicTypeNode } from '../functions/is-atomic-type-node.mjs';
5
+ import { isConditionalTypeDistributionGuard } from '../functions/is-conditional-type-distribution-guard.mjs';
5
6
  import { isReadonlyTypeReferenceNode, isReadonlyTupleOrArrayTypeNode, isReadonlyArrayTypeNode, isReadonlyTupleTypeNode } from '../functions/is-readonly-node.mjs';
6
7
  import { removeParentheses } from '../functions/remove-parentheses.mjs';
7
8
  import { shouldAvoidParenthesesForReadonly } from '../functions/should-avoid-parentheses-for-readonly.mjs';
@@ -397,7 +398,10 @@ node, readonlyContext, options) => {
397
398
  // Unnecessary `Readonly` wrapper will be remove in transformTypeReferenceNode
398
399
  case 'Readonly':
399
400
  case 'none':
400
- if (readonlyContext.indexedAccessDepth === 0) {
401
+ // Skip the `A[] extends B[] ? ...` union-distribution-guard idiom: adding
402
+ // `readonly` there does not improve immutability and breaks the idiom.
403
+ if (readonlyContext.indexedAccessDepth === 0 &&
404
+ !isConditionalTypeDistributionGuard(node)) {
401
405
  const readonlyText = `readonly ${node.getFullText()}`;
402
406
  options.replaceNode(node, shouldAvoidParenthesesForReadonly(node)
403
407
  ? readonlyText
@@ -434,7 +438,10 @@ node, readonlyContext, options) => {
434
438
  // Unnecessary `Readonly` wrapper will be remove in transformTypeReferenceNode
435
439
  case 'Readonly':
436
440
  case 'none':
437
- if (readonlyContext.indexedAccessDepth === 0) {
441
+ // Skip the `[A] extends [B] ? ...` union-distribution-guard idiom: adding
442
+ // `readonly` there does not improve immutability and breaks the idiom.
443
+ if (readonlyContext.indexedAccessDepth === 0 &&
444
+ !isConditionalTypeDistributionGuard(node)) {
438
445
  const readonlyText = `readonly ${node.getFullText()}`;
439
446
  options.replaceNode(node, shouldAvoidParenthesesForReadonly(node)
440
447
  ? readonlyText
@@ -1 +1 @@
1
- {"version":3,"file":"convert-to-readonly.mjs","sources":["../../../src/functions/ast-transformers/convert-to-readonly.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;;AAiCA,MAAM,gBAAgB,GAAG,qBAAqB;AAEvC,MAAM,4BAA4B,GAAG,CAC1C,OAAoC,KACd;AACtB,IAAA,IACE,OAAO,EAAE,YAAY,EAAE,QAAQ,KAAK,SAAS;QAC7C,2BAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,EAC9D;QACA,MAAM,IAAI,KAAK,CACb,CAAA,+BAAA,EAAkC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAA,iCAAA,CAAmC,CACnG;;IAGH,MAAM,oBAAoB,GACxB,OAAO,EAAE,YAAY,EAAE,QAAQ,IAAI,cAAc;IAEnD,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAChC,OAAO,EAAE,cAAc,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAC/D;AAED,IAAA,MAAM,eAAe,GAAuC;AAC1D,QAAA,YAAY,EAAE;AACZ,YAAA,QAAQ,EAAE,oBAAoB;AAC9B,YAAA,UAAU,EAAE,MAAM;AACnB,SAAA;AACD,QAAA,sBAAsB,EAAE,OAAO,EAAE,sBAAsB,IAAI,IAAI;AAC/D,QAAA,eAAe,EAAE,cAAc;AAC/B,QAAA,UAAU,EAAE,OAAO,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,SAAQ;AAC9D,QAAA,WAAW,EACT,OAAO,EAAE,KAAK,KAAK;AACjB,cAAE;AACF,cAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;KACtD;IAEV,OAAO;AACL,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,SAAS,EAAE,CAAC,SAAS,KAAI;YACvB,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,WAAW,EAAE,EAAE;AAC1C,gBAAA,aAAa,CAAC,IAAI,EAAE,sBAAsB,EAAE,eAAe,CAAC;;SAE/D;KACF;AACH;AA4EA,MAAM,sBAAsB,GAAoB;AAC9C,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,kBAAkB,EAAE,CAAC;CACb;AAEV,MAAM,aAAa,GAAG,CACpB,IAAc,EACd,eAAgC,EAChC,OAA2C,KACnC;AACR,IAAA,IACE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,oBAAoB,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAC5C;QACA,OAAO,CAAC,UAAU,EAAE;QAEpB,OAAO,CAAC,UAAU,CAAC,CAAA,eAAA,EAAkB,IAAI,CAAC,WAAW,EAAE,CAAA,EAAA,CAAI,CAAC;QAE5D,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAEtC,QAAA,OAAO,CAAC,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;QAEvC,OAAO,CAAC,UAAU,EAAE;;AAGtB,IAAA,IAAI,yBAAyB,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE;AACrD,QAAA,OAAO,CAAC,UAAU,CAAC,sCAAsC,CAAC;QAE1D;;;IAIF,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE;AACnD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE;AAE/B,QAAA,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;;;AAG/D,YAAA,OAAO,CAAC,UAAU,CAAC,gDAAgD,CAAC;YAEpE;;;;;;;;;;;;;IAgBJ,IACE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC;QAChD,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EAC3E;QACA;;IAGF,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AACzC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE;AAE/B,QAAA,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;;;YAG/D;;;;;;;;;;;IAcJ,IACE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,oBAAoB,CAAC;QAChD,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EACjE;QACA;;IAGF,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;AAC7C,QAAA,IAAI,eAAe,CAAC,IAAI,KAAK,UAAU,EAAE;AACvC,YAAA,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE;;AAGH,QAAA,0BAA0B,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC;QAE1D;;IAGF,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AACzC,QAAA,sBAAsB,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC;QAEtD;;IAGF,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AACzC,QAAA,sBAAsB,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC;QAEtD;;IAGF,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACxC,QAAA,qBAAqB,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC;QAErD;;IAGF,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;AAC5C,QAAA,IAAI,eAAe,CAAC,IAAI,KAAK,UAAU,EAAE;AACvC,YAAA,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE;;AAGH,QAAA,yBAAyB,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC;QAEzD;;IAGF,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;AAC3C,QAAA,IAAI,eAAe,CAAC,IAAI,KAAK,UAAU,EAAE;AACvC,YAAA,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D;;AAGH,QAAA,wBAAwB,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC;QAExD;;IAGF,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE;AACjD,QAAA,8BAA8B,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC;QAE9D;;IAGF,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;AAC1C,QAAA,IAAI,eAAe,CAAC,IAAI,KAAK,UAAU,EAAE;AACvC,YAAA,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D;;AAGH,QAAA,uBAAuB,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC;QAEvD;;IAGF,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE;;;QAGpD,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;YACrE;;AAGF,QAAA,iCAAiC,CAAC,IAAI,EAAE,OAAO,CAAC;QAEhD;;IAGF,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;;;QAGhD,IACE,OAAO,CAAC,eAAe,CAAC,IAAI,CAC1B,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAC9C,EACD;YACA;;AAGF,QAAA,6BAA6B,CAAC,IAAI,EAAE,OAAO,CAAC;QAE5C;;IAGF,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;AAChD,QAAA,IAAI,eAAe,CAAC,IAAI,KAAK,UAAU,EAAE;AACvC,YAAA,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE;;AAGH,QAAA,6BAA6B,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC;QAE7D;;IAGF,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AACzC,QAAA,IAAI,eAAe,CAAC,IAAI,KAAK,UAAU,EAAE;AACvC,YAAA,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D;;AAGH,QAAA,sBAAsB,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC;QAEtD;;IAGF,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE;;AAEjD,QAAA,8BAA8B,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC;QAE9D;;IAGF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtC,QAAA,aAAa,CAAC,KAAK,EAAE,sBAAsB,EAAE,OAAO,CAAC;;AAEzD,CAAC;AAED;AACA;AACA;AAEA;;;;;;;;;;AAUG;AACH,MAAM,0BAA0B,GAAG;AACjC;AACA,IAA2B,EAC3B,eAGC,EACD,OAA2C,KACnC;IACR,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE;AAEhD,IAAA,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE;;IAG7C,IAAI,WAAW,KAAK,OAAO,IAAI,WAAW,KAAK,eAAe,EAAE;QAC9D,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE;YAC1C,MAAM,IAAI,KAAK,CACb,CAAA,qCAAA,EAAwC,aAAa,CAAC,MAAM,CAAA,MAAA,EAAS,WAAW,CAAA,CAAA,CAAG,CACpF;;;AAIH,QAAA,aAAa,CACX,aAAa,CAAC,CAAC,CAAC,EAChB;AACE,YAAA,IAAI,EAAE,MAAM;YACZ,kBAAkB,EAAE,eAAe,CAAC,kBAAkB;SACvD,EACD,OAAO,CACR;;QAGD,MAAM,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAE;QAErC,OAAO,CAAC,WAAW,CACjB,IAAI,EACJ,eAAe,CAAC,IAAI,KAAK;AACvB,cAAE,mBAAmB,CAAC,CAAA,EAAG,mBAAmB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA,EAAA,CAAI;AACjE,cAAE,mBAAmB,CACjB,CAAA,SAAA,EAAY,mBAAmB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA,EAAA,CAAI,CACrD,CACN;QAED;;;AAIF,IAAA,IAAI,WAAW,KAAK,KAAK,EAAE;QACzB,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE;YAC1C,MAAM,IAAI,KAAK,CACb,CAAA,qCAAA,EAAwC,aAAa,CAAC,MAAM,CAAA,UAAA,CAAY,CACzE;;;AAIH,QAAA,aAAa,CACX,aAAa,CAAC,CAAC,CAAC,EAChB;AACE,YAAA,IAAI,EAAE,MAAM;YACZ,kBAAkB,EAAE,eAAe,CAAC,kBAAkB;SACvD,EACD,OAAO,CACR;;QAGD,MAAM,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAE;AAErC,QAAA,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA,YAAA,EAAe,CAAC,CAAC,WAAW,EAAE,CAAA,CAAA,CAAG,CAAC;QAE5D;;;AAIF,IAAA,IAAI,WAAW,KAAK,KAAK,EAAE;QACzB,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE;YAC1C,MAAM,IAAI,KAAK,CACb,CAAA,qCAAA,EAAwC,aAAa,CAAC,MAAM,CAAA,UAAA,CAAY,CACzE;;QAGH,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;AACnD,YAAA,sBAAsB,EAAE,eAAe;AACvC,YAAA,uBAAuB,EAAE,MAAM;AAC/B,YAAA,wBAAwB,EAAE,MAAM;AACjC,SAAA,CAAC;;AAGF,QAAA,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE;AAC7B,YAAA,aAAa,CAAC,CAAC,EAAE,wBAAwB,EAAE,OAAO,CAAC;;QAGrD,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE;QAEtC,OAAO,CAAC,WAAW,CACjB,IAAI;;QAEJ,CAAA,YAAA,EAAe,CAAE,CAAC,WAAW,EAAE,CAAA,EAAA,EAAK,CAAE,CAAC,WAAW,EAAE,CAAA,CAAA,CAAG,CACxD;QAED;;;AAIF,IAAA,IAAI,WAAW,KAAK,UAAU,EAAE;QAC9B,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE;YAC1C,MAAM,IAAI,KAAK,CACb,CAAA,qCAAA,EAAwC,aAAa,CAAC,MAAM,CAAA,eAAA,CAAiB,CAC9E;;;AAIH,QAAA,aAAa,CACX,aAAa,CAAC,CAAC,CAAC,EAChB,mBAAmB,CAAC;AAClB,YAAA,sBAAsB,EAAE,eAAe;AACvC,YAAA,uBAAuB,EAAE,UAAU;AACnC,YAAA,wBAAwB,EAAE,MAAM;SACjC,CAAC,EACF,OAAO,CACR;;AAGD,QAAA,MAAM,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAE,CAAC;;AAGxD,QAAA,IAAI,eAAe,CAAC,IAAI,KAAK,cAAc,EAAE;YAC3C,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAE1C;;;AAIF,QAAA,IAAI,eAAe,CAAC,kBAAkB,GAAG,CAAC,EAAE;YAC1C,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAE1C;;;AAIF,QAAA,IAAI,2BAA2B,CAAC,CAAC,CAAC,EAAE;YAClC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAE1C;;;AAIF,QAAA,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE;YACvB,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAE1C;;;;;;;QAQF,IACE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;YAClC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAClC;YACA,MAAM,YAAY,GAAG,CAAA,SAAA,EAAY,CAAC,CAAC,WAAW,EAAE,EAAW;YAE3D,OAAO,CAAC,WAAW,CACjB,IAAI,EACJ,iCAAiC,CAAC,IAAI;AACpC,kBAAE;AACF,kBAAE,mBAAmB,CAAC,YAAY,CAAC,CACtC;YAED;;;;;AAMF,QAAA,IAAI,8BAA8B,CAAC,CAAC,CAAC,EAAE;YACrC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAE1C;;;;QAKF,IACE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;YAClC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,EACzC;YACA,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAE1C;;QAGF;;;IAIF,IAAI,WAAW,KAAK,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE;QACjD,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE;YAC1C,MAAM,IAAI,KAAK,CACb,CAAA,qCAAA,EAAwC,aAAa,CAAC,MAAM,CAAA,eAAA,CAAiB,CAC9E;;;AAIH,QAAA,aAAa,CACX,aAAa,CAAC,CAAC,CAAC,EAChB,mBAAmB,CAAC;AAClB,YAAA,sBAAsB,EAAE,eAAe;AACvC,YAAA,uBAAuB,EAAE,cAAc;SACxC,CAAC,EACF,OAAO,CACR;;QAGD,MAAM,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAE;;AAGrC,QAAA,IAAI,eAAe,CAAC,IAAI,KAAK,cAAc,EAAE;YAC3C,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAE1C;;;AAIF,QAAA,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE;YACvB,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAE1C;;;;;;QAOF,IACE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;AAClC,YAAA,gBAAgB,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,EACxC;YACA,MAAM,YAAY,GAAG,CAAA,SAAA,EAAY,CAAC,CAAC,WAAW,EAAE,EAAW;YAE3D,OAAO,CAAC,WAAW,CACjB,IAAI,EACJ,iCAAiC,CAAC,IAAI;AACpC,kBAAE;AACF,kBAAE,mBAAmB,CAAC,YAAY,CAAC,CACtC;YAED;;;;QAKF,IACE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;YAClC,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,EACvC;YACA,MAAM,YAAY,GAAG,CAAA,SAAA,EAAY,CAAC,CAAC,WAAW,EAAE,EAAW;YAE3D,OAAO,CAAC,WAAW,CACjB,IAAI,EACJ,iCAAiC,CAAC,IAAI;AACpC,kBAAE;AACF,kBAAE,mBAAmB,CAAC,YAAY,CAAC,CACtC;YAED;;QAGF;;IAGF;QACE,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;AACnD,YAAA,sBAAsB,EAAE,eAAe;AACvC,YAAA,uBAAuB,EAAE,MAAM;AAC/B,YAAA,wBAAwB,EAAE,MAAM;AACjC,SAAA,CAAC;;QAGF,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;AACvC,YAAA,aAAa,CAAC,CAAC,EAAE,wBAAwB,EAAE,OAAO,CAAC;;;AAGzD,CAAC;AAED;AACA,MAAM,sBAAsB,GAAG;AAC7B;AACA,IAAuB,EACvB,eAAgC,EAChC,OAA2C,KACnC;;AAER,IAAA,aAAa,CACX,IAAI,CAAC,kBAAkB,EAAE,EACzB,mBAAmB,CAAC;AAClB,QAAA,sBAAsB,EAAE,eAAe;AACvC,QAAA,uBAAuB,EAAE,MAAM;AAC/B,QAAA,wBAAwB,EAAE,MAAM;KACjC,CAAC,EACF,OAAO,CACR;AAED,IAAA,QAAQ,eAAe,CAAC,IAAI;AAC1B,QAAA,KAAK,cAAc;AACnB,QAAA,KAAK,UAAU;AACb,YAAA,OAAO;;AAGT,QAAA,KAAK,UAAU;AACf,QAAA,KAAK,MAAM;AACT,YAAA,IAAI,eAAe,CAAC,kBAAkB,KAAK,CAAC,EAAE;gBAC5C,MAAM,YAAY,GAAG,CAAA,SAAA,EAAY,IAAI,CAAC,WAAW,EAAE,EAAW;gBAE9D,OAAO,CAAC,WAAW,CACjB,IAAI,EACJ,iCAAiC,CAAC,IAAI;AACpC,sBAAE;AACF,sBAAE,mBAAmB,CAAC,YAAY,CAAC,CACtC;;;AAGT,CAAC;AAED;AACA,MAAM,sBAAsB,GAAG;AAC7B;AACA,IAAuB,EACvB,eAAgC,EAChC,OAA2C,KACnC;;IAER;QACE,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;AACnD,YAAA,sBAAsB,EAAE,eAAe;AACvC,YAAA,uBAAuB,EAAE,MAAM;AAC/B,YAAA,wBAAwB,EAAE,MAAM;AACjC,SAAA,CAAC;QAEF,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACnC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;gBAC9C,IAAI,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;oBACrE,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,wBAAwB,EAAE,OAAO,CAAC;;;iBAE/D;AACL,gBAAA,aAAa,CAAC,EAAE,EAAE,wBAAwB,EAAE,OAAO,CAAC;;;;AAK1D,IAAA,QAAQ,eAAe,CAAC,IAAI;AAC1B,QAAA,KAAK,cAAc;AACnB,QAAA,KAAK,UAAU;AACb,YAAA,OAAO;;AAGT,QAAA,KAAK,UAAU;AACf,QAAA,KAAK,MAAM;AACT,YAAA,IAAI,eAAe,CAAC,kBAAkB,KAAK,CAAC,EAAE;gBAC5C,MAAM,YAAY,GAAG,CAAA,SAAA,EAAY,IAAI,CAAC,WAAW,EAAE,EAAW;gBAE9D,OAAO,CAAC,WAAW,CACjB,IAAI,EACJ,iCAAiC,CAAC,IAAI;AACpC,sBAAE;AACF,sBAAE,mBAAmB,CAAC,YAAY,CAAC,CACtC;;;AAGT,CAAC;AAED;AACA,MAAM,qBAAqB,GAAG;AAC5B;AACA,IAAsB,EACtB,eAAgC,EAChC,OAA2C,KACnC;;IAER,aAAa,CACX,IAAI,CAAC,WAAW,EAAE,YAClB,mBAAmB,CAAC;AAClB,QAAA,sBAAsB,EAAE,eAAe;AACvC,QAAA,uBAAuB,EAAE,MAAM;AAC/B,QAAA,wBAAwB,EAAE,MAAM;KACjC,CAAC,EACF,OAAO,CACR;IAED,MAAM,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;;;IAI/C,IAAI,uBAAuB,CAAC,CAAC,CAAC,IAAI,uBAAuB,CAAC,CAAC,CAAC,EAAE;AAC5D,QAAA,OAAO,CAAC,WAAW,CACjB,IAAI,EACJ,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE,qCACtC;;AAEL,CAAC;AAED;;;AAGG;AACH,MAAM,yBAAyB,GAAG;AAChC;AACA,IAA8B,EAC9B,eAGC,EACD,OAA2C,KACnC;;AAER,IAAA,aAAa,CACX,IAAI,CAAC,WAAW,EAAE,EAClB,mBAAmB,CAAC;AAClB,QAAA,sBAAsB,EAAE,eAAe;QACvC,uBAAuB,EACrB,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,UAAU,CAAC;AACpC,cAAE;AACF,cAAE,MAAM;AACZ,QAAA,wBAAwB,EAAE,MAAM;KACjC,CAAC,EACF,OAAO,CACR;AAED,IAAA,QAAQ,eAAe,CAAC,IAAI;;AAE1B,QAAA,KAAK,cAAc;AACjB,YAAA,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,CAAC;YAE3D;AAEF,QAAA,KAAK,UAAU;AACf,QAAA,KAAK,MAAM;AACT,YAAA,IAAI,eAAe,CAAC,kBAAkB,GAAG,CAAC,EAAE;AAC1C,gBAAA,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,CAAC;;;AAGnE,CAAC;AAED;AACA,MAAM,wBAAwB,GAAG;AAC/B;AACA,IAAyB,EACzB,eAGC,EACD,OAA2C,KACnC;IACR,IACE,OAAO,CAAC,sBAAsB;QAC9B,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,EACzC;QACA;;;IAIF,gBAAgB,CACd,IAAI,CAAC,UAAU,EAAE,EACjB,QAAQ,EACR,mBAAmB,CAAC;AAClB,QAAA,sBAAsB,EAAE,eAAe;AACvC,QAAA,uBAAuB,EAAE,MAAM;AAC/B,QAAA,wBAAwB,EAAE,MAAM;KACjC,CAAC,EACF,OAAO,CACR;AAED,IAAA,QAAQ,eAAe,CAAC,IAAI;AAC1B,QAAA,KAAK,cAAc;AACnB,QAAA,KAAK,UAAU;;YAEb;QAEF,KAAK,MAAM,EAAE;AACX,YAAA,IAAI,eAAe,CAAC,kBAAkB,KAAK,CAAC,EAAE;;AAE5C,gBAAA,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA,SAAA,EAAY,IAAI,CAAC,WAAW,EAAE,CAAA,CAAA,CAAG,CAAC;;;;AAIpE,CAAC;AAED;AACA,MAAM,8BAA8B,GAAG;AACrC;AACA,IAA+B,EAC/B,eAAgC,EAChC,OAA2C,KACnC;;AAER,IAAA,aAAa,CACX,IAAI,CAAC,iBAAiB,EAAE,EACxB,mBAAmB,CAAC;AAClB,QAAA,sBAAsB,EAAE,eAAe;AACvC,QAAA,uBAAuB,EAAE,MAAM;AAC/B,QAAA,wBAAwB,EAAE,MAAM;KACjC,CAAC,EACF,OAAO,CACR;IAED,aAAa,CACX,IAAI,CAAC,gBAAgB,EAAE,YACvB,mBAAmB,CAAC;AAClB,QAAA,sBAAsB,EAAE,eAAe;AACvC,QAAA,uBAAuB,EAAE,UAAU;AACnC,QAAA,wBAAwB,EAAE,MAAM;KACjC,CAAC,EACF,OAAO,CACR;AACH,CAAC;AAED;;;;;AAKG;AACH,MAAM,uBAAuB,GAAG;AAC9B;AACA,IAAwB,EACxB,eAGC,EACD,OAA2C,KACnC;AACR,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;AAEnC,IAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC1B,QAAA,aAAa,CACX,QAAQ,EACR,mBAAmB,CAAC;AAClB,YAAA,sBAAsB,EAAE,eAAe;AACvC,YAAA,uBAAuB,EAAE,MAAM;AAC/B,YAAA,wBAAwB,EAAE,MAAM;SACjC,CAAC,EACF,OAAO,CACR;;IAGH,MAAM,iBAAiB,GACrB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KACrD,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,GAAG,GAAG,IAAI,GAAG,SAAS,CAClE,CAAC,KAAK,IAAI,EAAE;IAEf,MAAM,MAAM,GAAW,IAAI;;AAEzB,IAAA,CAAA,GAAA,EAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,EAAE,CAAA,CAAA,EAAI,iBAAiB,CAAA,EAAA,EAAK,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,CAAA,EAAA,CAAI,CAC3G,CAAC,GAAG,CAAC,CAAC,GAAG,KACR,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE;;AAE1B,QAAA,YAAY,EAAE,GAAG;AACjB,QAAA,QAAQ,EAAE,GAAG;AACb,QAAA,IAAI,EAAE,eAAe,CAAC,kBAAkB,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA,SAAA,EAAY,GAAG,CAAA,CAAA,CAAG;KACxE,CAAC,CACH,CAAC,KAAK;AAEP,IAAA,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC;AACnC,CAAC;AAED;AACA,MAAM,iCAAiC,GAAG;AACxC;AACA,IAA8B,EAC9B,OAA2C,KACnC;IACR,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC5C,QAAA,aAAa,CAAC,KAAK,EAAE,sBAAsB,EAAE,OAAO,CAAC;;IAGvD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;AACzC,QAAA,aAAa,CAAC,CAAC,EAAE,sBAAsB,EAAE,OAAO,CAAC;;AAGnD,IAAA,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,OAAO,CAAC;AAC7E,CAAC;AAED,MAAM,6BAA6B,GAAG;AACpC;AACA,IAA0B,EAC1B,OAA2C,KACnC;IACR,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AACxC,QAAA,aAAa,CAAC,CAAC,EAAE,sBAAsB,EAAE,OAAO,CAAC;;IAGnD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;AACzC,QAAA,aAAa,CAAC,CAAC,EAAE,sBAAsB,EAAE,OAAO,CAAC;;IAGnD,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AAClC,QAAA,IAAI,yBAAyB,CAAC,EAAE,CAAC,EAAE;AACjC,YAAA,OAAO,CAAC,UAAU,CAAC,6CAA6C,CAAC;YAEjE;;QAGF,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE;YACjD,IAAI,CAAC,kCAAkC,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE;AAClE,gBAAA,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;AAEtB,gBAAA,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,EAAE;AAE7B,gBAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,oBAAA,aAAa,CAAC,IAAI,EAAE,sBAAsB,EAAE,OAAO,CAAC;;AAGtD,gBAAA,MAAM,WAAW,GAAG,EAAE,CAAC,cAAc,EAAE;AAEvC,gBAAA,IAAI,WAAW,KAAK,SAAS,EAAE;AAC7B,oBAAA,aAAa,CAAC,WAAW,EAAE,sBAAsB,EAAE,OAAO,CAAC;;;YAI/D;;;;QAKF,IACE,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC;YAC1C,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC;YACrC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC;YACvC,kCAAkC,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,EAC7D;AACA,YAAA,OAAO,CAAC,UAAU,CAAC,kCAAkC,CAAC;YAEtD;;AAGF,QAAA,aAAa,CAAC,EAAE,EAAE,sBAAsB,EAAE,OAAO,CAAC;;AAGpD,IAAA,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;QACtE,kCAAkC,CAChC,EAAE,EACF,KAAK,EACL,sBAAsB,EACtB,OAAO,CACR;;IAGH,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;QACzC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxC,YAAA,IAAI,yBAAyB,CAAC,KAAK,CAAC,EAAE;AACpC,gBAAA,OAAO,CAAC,UAAU,CAChB,kEAAkE,CACnE;gBAED;;YAGF;AACE,gBAAA,MAAM,IAAI,GAAI,KAAyC,CAAC,OAAO,EAAE;AAEjE,gBAAA,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;oBAC3D;;;;AAKJ,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE;;;;AAK9B,YAAA,IACE,KAAK,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM;AAC1B,gBAAA,KAAK,KAAK,GAAG,CAAC,KAAK,CAAC,SAAS;AAC7B,gBAAA,KAAK,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,EAC3B;AACA,gBAAA,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC;;AAG3B,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE;AAEhC,YAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,gBAAA,aAAa,CAAC,IAAI,EAAE,sBAAsB,EAAE,OAAO,CAAC;;;AAIxD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAE3B,QAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,YAAA,aAAa,CAAC,IAAI,EAAE,sBAAsB,EAAE,OAAO,CAAC;;QAGtD;;AAEJ,CAAC;AAED;;;AAGG;AACH,MAAM,6BAA6B,GAAG;AACpC;AACA,IAA8B,EAC9B,eAGC,EACD,OAA2C,KACnC;IACR,wCAAwC,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,CAAC;AAC/E,CAAC;AAED;;;AAGG;AACH,MAAM,sBAAsB,GAAG;AAC7B;AACA,IAAuB,EACvB,eAGC,EACD,OAA2C,KACnC;IACR,wCAAwC,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,CAAC;AAC/E,CAAC;AAED,MAAM,wCAAwC,GAAG;AAC/C;AACA,IAAkD,EAClD,eAGC,EACD,OAA2C,EAC3C,QAAmB,KACX;IACR,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;AACnD,QAAA,sBAAsB,EAAE,eAAe;AACvC,QAAA,uBAAuB,EAAE,MAAM;AAC/B,QAAA,wBAAwB,EAAE,MAAM;AACjC,KAAA,CAAC;;IAGF,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,iBAAiB;AAClD,QAAA,aAAa,CAAC,CAAC,EAAE,wBAAwB,EAAE,OAAO,CAAC;;AAGrD,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE;AAEpC,IAAA,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,EAAE,GACzD,2BAA2B,CAAC,QAAQ,CAAC;AAEvC,IAAA,OAAO,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;;AAGzE,IAAA,MAAM,kBAAkB,GAAG;;AAEzB,IAAA,CAAkD,KAElD,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC;QACpC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAExC,IAAA,MAAM,oBAAoB,GACxB,YAAY,KAAK;AACf,UAAE;UACA,OAAO,CAAC;AACR,cAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACzD,cAAE,YAAY,CAAC,KAAK;IAE1B,MAAM,iBAAiB,GACrB,YAAY,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC;AACrC,UAAE;AACF,UAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAE7D,IAAA,MAAM,+BAA+B,GACnC,oBAAoB,KAAK,SAAS;AAClC,QAAA,GAAG,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;AACzC,UAAG;AACH,UAAG;AACC,YAAA,aAAa,CAAC;AACZ,gBAAA,KAAK,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,KAChC,2BAA2B,CAAC,CAAC;AAC3B;wBACE,yBAAyB,CAAC,CAAC;AAC7B,sBAAG,CAAgC,CAAC,WAAW,EAAE,CACpD;AACD,gBAAA,EAAE,EAAE,QAAQ;AACZ,gBAAA,gBAAgB,EACd,wBAAwB,CAAC,IAAI,KAAK,cAAc;oBAChD,wBAAwB,CAAC,kBAAkB,KAAK,CAAC;aACpD,CAAC;SACO;;AAGjB,IAAA,MAAM,MAAM,GAAsB;AAChC,QAAA,WAAW,CACT,UAAU,EACV,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,aAAa,CAAU,CACvE;AACD,QAAA,WAAW,CACT,eAAe,EACf,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,aAAa,CAAU,CACvE;QACD,oBAAoB,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,CAAC,oBAAoB;AACvE,cAAE,WAAW,CACT,YAAY,EACZ,CAAC,CAAC,KAAK,CAAC,+BAA+B,EAAE,CAAC,CAAC,aAAa,CAAU;AAEtE,cAAE,SAAS;QACb,iBAAiB,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,CAAC,iBAAiB;cAC/D,WAAW,CACT,YAAY,EACZ,CAAC,CAAC,KACA;AACE,gBAAA,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;;AAE7C,gBAAA,CAAC,CAAC,aAAa;qBACZ,oBAAoB,KAAK,SAAS;AACnC,wBAAA,GAAG,CAAC,UAAU,CAAC,oBAAoB;AACjC,0BAAE;0BACA,CAAC,CAAC;aACA;AAEhB,cAAE,SAAS;AACb,QAAA,WAAW,CACT,MAAM,EACN,CAAC,CAAC,KACA;AACE,YAAA,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,mBAAmB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACxD,YAAA,CAAC,CAAC,aAAa;SACP,CACb;AACF;SACE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS;AAC7B,SAAA,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAC9B,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;IAOvB,OAAO,CAAC,WAAW,CACjB,IAAI,EACJ,aAAa,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CACxE;AACH,CAAC;AAED,MAAM,aAAa,GAAG,CAAC,EACrB,KAAK,EACL,EAAE,EACF,gBAAgB,GAKhB,KACA,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;AAC1B,MAAE;MACA,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;UAC1B,gBAAgB,KAAK;AACrB,cAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9B,cAAG,CAAA,EAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,GAAG,UAAU,CAAA,CAAA,EAAI,KAAK,CAAC,CAAC,CAAC,CAAA,CAAA;UAC5E,gBAAgB,KAAK;cACnB,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,CAAG,CAAC;cACxC,CAAA,EAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,GAAG,UAAU,CAAA,CAAA,EAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA,CAAA,CAAG,CAAC,CAAA,CAAA,CAAa;AAE9G;AACA,MAAM,8BAA8B,GAAG;AACrC;AACA,IAA+B,EAC/B,eAAgC,EAChC,OAA2C,KACnC;AACR,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;IAEnC,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE;;AAErD,QAAA,8BAA8B,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,CAAC;;IAGpE,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,eAAe,EAAE,OAAO,CAAC;AAE3D,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE;AAE5B,IAAA;;;IAGE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC;;;QAGtC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;;;QAGlC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;;;QAGlC,gBAAgB,CAAC,CAAC,CAAC;;;QAGnB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EACpC;QACA,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;;AAE9C,CAAC;AAED;;;;AAIG;AACH,MAAM,gBAAgB,GAAG;AACvB;AACA,OAAwC,EACxC,gBAAkC,EAClC,eAMC,EACD,OAA2C,KACnC;AACR,IAAA,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE;AACxB,QAAA,IAAI,yBAAyB,CAAC,EAAE,CAAC,EAAE;AACjC,YAAA,OAAO,CAAC,UAAU,CAAC,6CAA6C,CAAC;YAEjE;;QAGF,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE;YAC/C,IAAI,CAAC,kCAAkC,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE;gBAClE,0BAA0B,CACxB,EAAE,EACF,gBAAgB,EAChB,eAAe,EACf,OAAO,CACR;;YAGH;;QAGF,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;YAC5C,kCAAkC,CAChC,EAAE,EACF,gBAAgB,EAChB,eAAe,EACf,OAAO,CACR;YAED;;AAGF,QAAA,aAAa,CAAC,EAAE,EAAE,eAAe,EAAE,OAAO,CAAC;QAE3C;;AAEJ,CAAC;AAED,MAAM,0BAA0B,GAAG;AACjC;AACA,IAA2B,EAC3B,gBAAkC,EAClC,eAMC,EACD,OAA2C,KACnC;AACR,IAAA,IACE,eAAe,CAAC,IAAI,KAAK,cAAc;QACvC,gBAAgB,KAAK,QAAQ,EAC7B;AACA,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;;SACpB;AACL,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;;IAG1B;AACE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAE/B,QAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,YAAA,aAAa,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC;;;AAGnD,CAAC;AAED,MAAM,kCAAkC,GAAG;AACzC;AACA,IAAmC,EACnC,gBAAkC,EAClC,eAMC,EACD,OAA2C,KACnC;AACR,IAAA,IAAI,yBAAyB,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE;AACrD,QAAA,OAAO,CAAC,UAAU,CAAC,sDAAsD,CAAC;QAE1E;;AAGF,IAAA,IACE,eAAe,CAAC,IAAI,KAAK,cAAc;QACvC,gBAAgB,KAAK,QAAQ,EAC7B;;AAEA,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC;;SACjC;AACL,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC;;;IAIvC;AACE,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE;AAEjC,QAAA,aAAa,CAAC,GAAG,EAAE,eAAe,EAAE,OAAO,CAAC;;IAG9C;AACE,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAEpC,QAAA,IAAI,GAAG,KAAK,SAAS,EAAE;AACrB,YAAA,aAAa,CAAC,GAAG,EAAE,eAAe,EAAE,OAAO,CAAC;;;AAGlD,CAAC;AAED,MAAM,kCAAkC,GAAG;AACzC;AACA,QAA0B,EAC1B,OAA2C,KAChC;IAcX;;IAEE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;AACzC,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAC9B,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CACtD,CAAC,KAAK;;SAER,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC;AAC5C,YAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KACtC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CACtD,CAAC,KAAK,CAAC;;SAET,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC;AAChD,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAC9B,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE,CAAC,CAAC,CAC5D,CAAC,KAAK,CAAC;;SAET,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,oBAAoB,CAAC;AACnD,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;gBACzC,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;AAC5C,oBAAA,MAAM,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE;AAEhC,oBAAA,OAAO,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;;AAG9D,gBAAA,OAAO,KAAK;AACd,YAAA,CAAC,CAAC,CAAC,KAAK,CAAC;AAEf,CAAC;;;;"}
1
+ {"version":3,"file":"convert-to-readonly.mjs","sources":["../../../src/functions/ast-transformers/convert-to-readonly.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  export * from './has-disable-next-line-comment.mjs';
2
2
  export * from './is-as-const-node.mjs';
3
3
  export * from './is-atomic-type-node.mjs';
4
+ export * from './is-conditional-type-distribution-guard.mjs';
4
5
  export * from './is-readonly-node.mjs';
5
6
  export * from './is-spread-parameter-node.mjs';
6
7
  export * from './remove-parentheses.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/functions/functions/index.mts"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAC;AACpD,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/functions/functions/index.mts"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAC;AACpD,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC"}
@@ -1,6 +1,7 @@
1
1
  export { hasDisableNextLineComment } from './has-disable-next-line-comment.mjs';
2
2
  export { isAsConstNode } from './is-as-const-node.mjs';
3
3
  export { isAtomicTypeNode } from './is-atomic-type-node.mjs';
4
+ export { isConditionalTypeDistributionGuard } from './is-conditional-type-distribution-guard.mjs';
4
5
  export { isReadonlyArrayTypeNode, isReadonlyTupleOrArrayTypeNode, isReadonlyTupleTypeNode, isReadonlyTypeReferenceNode, isShallowReadonlyTypeNode } from './is-readonly-node.mjs';
5
6
  export { isSpreadNamedTupleMemberNode, isSpreadParameterNode } from './is-spread-parameter-node.mjs';
6
7
  export { removeParentheses } from './remove-parentheses.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -0,0 +1,23 @@
1
+ import * as tsm from 'ts-morph';
2
+ /**
3
+ * Determines whether a type node is an operand (check or extends type) of a
4
+ * conditional type whose check type is wrapped to suppress union distribution,
5
+ * i.e. the `X` and `Y` in `X extends Y ? ... : ...` where `X` is itself a tuple
6
+ * or array.
7
+ *
8
+ * Wrapping a naked type parameter so that it is no longer naked is a well-known
9
+ * type-implementation idiom used to suppress union distribution. Both
10
+ * `[A] extends [B] ? ...` (tuple wrapping) and `A[] extends B[] ? ...` (array
11
+ * wrapping) rely on this. Adding a `readonly` modifier to those operands neither
12
+ * makes the type more immutable in any meaningful way nor preserves the idiom's
13
+ * intent, so such operands must be left untouched.
14
+ *
15
+ * A naked check type such as `T extends string[] ? ...` still distributes, so it
16
+ * is not a guard; arrays/tuples in its extends position are converted as usual.
17
+ *
18
+ * @param node - The type node to check
19
+ * @returns true if the node is the check or extends type of a distribution-guarded
20
+ * conditional type
21
+ */
22
+ export declare const isConditionalTypeDistributionGuard: (node: tsm.Node) => boolean;
23
+ //# sourceMappingURL=is-conditional-type-distribution-guard.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-conditional-type-distribution-guard.d.mts","sourceRoot":"","sources":["../../../src/functions/functions/is-conditional-type-distribution-guard.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,kCAAkC,GAAI,MAAM,GAAG,CAAC,IAAI,KAAG,OAsBnE,CAAC"}
@@ -0,0 +1,40 @@
1
+ import * as tsm from 'ts-morph';
2
+
3
+ /**
4
+ * Determines whether a type node is an operand (check or extends type) of a
5
+ * conditional type whose check type is wrapped to suppress union distribution,
6
+ * i.e. the `X` and `Y` in `X extends Y ? ... : ...` where `X` is itself a tuple
7
+ * or array.
8
+ *
9
+ * Wrapping a naked type parameter so that it is no longer naked is a well-known
10
+ * type-implementation idiom used to suppress union distribution. Both
11
+ * `[A] extends [B] ? ...` (tuple wrapping) and `A[] extends B[] ? ...` (array
12
+ * wrapping) rely on this. Adding a `readonly` modifier to those operands neither
13
+ * makes the type more immutable in any meaningful way nor preserves the idiom's
14
+ * intent, so such operands must be left untouched.
15
+ *
16
+ * A naked check type such as `T extends string[] ? ...` still distributes, so it
17
+ * is not a guard; arrays/tuples in its extends position are converted as usual.
18
+ *
19
+ * @param node - The type node to check
20
+ * @returns true if the node is the check or extends type of a distribution-guarded
21
+ * conditional type
22
+ */
23
+ const isConditionalTypeDistributionGuard = (node) => {
24
+ const parent = node.getParent();
25
+ if (parent?.isKind(tsm.SyntaxKind.ConditionalType) !== true) {
26
+ return false;
27
+ }
28
+ const checkType = parent.getCheckType();
29
+ // The guard is only in effect when the check type itself is wrapped in a tuple
30
+ // or array; otherwise (e.g. a naked `T`) the conditional still distributes.
31
+ if (!checkType.isKind(tsm.SyntaxKind.TupleType) &&
32
+ !checkType.isKind(tsm.SyntaxKind.ArrayType)) {
33
+ return false;
34
+ }
35
+ return (checkType.compilerNode === node.compilerNode ||
36
+ parent.getExtendsType().compilerNode === node.compilerNode);
37
+ };
38
+
39
+ export { isConditionalTypeDistributionGuard };
40
+ //# sourceMappingURL=is-conditional-type-distribution-guard.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-conditional-type-distribution-guard.mjs","sources":["../../../src/functions/functions/is-conditional-type-distribution-guard.mts"],"sourcesContent":[null],"names":[],"mappings":";;AAEA;;;;;;;;;;;;;;;;;;;AAmBG;AACI,MAAM,kCAAkC,GAAG,CAAC,IAAc,KAAa;AAC5E,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;AAE/B,IAAA,IAAI,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE;AAC3D,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE;;;IAIvC,IACE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;QAC3C,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAC3C;AACA,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,QACE,SAAS,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY;QAC5C,MAAM,CAAC,cAAc,EAAE,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY;AAE9D;;;;"}
@@ -12,6 +12,7 @@ export { IGNORE_FILE_COMMENT_PREFIXES, IGNORE_LINE_COMMENT_PREFIXES } from './co
12
12
  export { hasDisableNextLineComment } from './functions/has-disable-next-line-comment.mjs';
13
13
  export { isAsConstNode } from './functions/is-as-const-node.mjs';
14
14
  export { isAtomicTypeNode } from './functions/is-atomic-type-node.mjs';
15
+ export { isConditionalTypeDistributionGuard } from './functions/is-conditional-type-distribution-guard.mjs';
15
16
  export { isReadonlyArrayTypeNode, isReadonlyTupleOrArrayTypeNode, isReadonlyTupleTypeNode, isReadonlyTypeReferenceNode, isShallowReadonlyTypeNode } from './functions/is-readonly-node.mjs';
16
17
  export { isSpreadNamedTupleMemberNode, isSpreadParameterNode } from './functions/is-spread-parameter-node.mjs';
17
18
  export { removeParentheses } from './functions/remove-parentheses.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;"}
package/dist/index.mjs CHANGED
@@ -12,6 +12,7 @@ export { IGNORE_FILE_COMMENT_PREFIXES, IGNORE_LINE_COMMENT_PREFIXES } from './fu
12
12
  export { hasDisableNextLineComment } from './functions/functions/has-disable-next-line-comment.mjs';
13
13
  export { isAsConstNode } from './functions/functions/is-as-const-node.mjs';
14
14
  export { isAtomicTypeNode } from './functions/functions/is-atomic-type-node.mjs';
15
+ export { isConditionalTypeDistributionGuard } from './functions/functions/is-conditional-type-distribution-guard.mjs';
15
16
  export { isReadonlyArrayTypeNode, isReadonlyTupleOrArrayTypeNode, isReadonlyTupleTypeNode, isReadonlyTypeReferenceNode, isShallowReadonlyTypeNode } from './functions/functions/is-readonly-node.mjs';
16
17
  export { isSpreadNamedTupleMemberNode, isSpreadParameterNode } from './functions/functions/is-spread-parameter-node.mjs';
17
18
  export { removeParentheses } from './functions/functions/remove-parentheses.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-codemod-lib",
3
- "version": "2.1.7",
3
+ "version": "2.2.1",
4
4
  "private": false,
5
5
  "keywords": [
6
6
  "typescript",
@@ -50,6 +50,12 @@
50
50
  "clean": "pnpm run /clean:.*/",
51
51
  "clean:logs": "npx rimraf ./*.log",
52
52
  "codemod": "run-s codemod:uncommitted:* fmt",
53
+ "codemod:diff": "run-s codemod:diff:* fmt",
54
+ "codemod:diff:as-const": "tsx ./src/cmd/append-as-const.mts --diff-from origin/main '{src,scripts,samples,test}/**/*.{mts,tsx}'",
55
+ "codemod:diff:any-to-unknown": "tsx ./src/cmd/replace-any-with-unknown.mts --diff-from origin/main '{src,scripts,samples,test}/**/*.{mts,tsx}'",
56
+ "codemod:diff:unknown-record": "tsx ./src/cmd/replace-record-with-unknown-record.mts --diff-from origin/main '{src,scripts,samples,test}/**/*.{mts,tsx}'",
57
+ "codemod:diff:interface-to-type": "tsx ./src/cmd/convert-interface-to-type.mts --diff-from origin/main '{src,scripts,samples,test}/**/*.{mts,tsx}'",
58
+ "codemod:diff:readonly": "tsx ./src/cmd/convert-to-readonly.mts --diff-from origin/main '{src,scripts,samples,test}/**/*.{mts,tsx}'",
53
59
  "codemod:full": "run-s codemod:full:* fmt",
54
60
  "codemod:full:as-const": "tsx ./src/cmd/append-as-const.mts '{src,scripts,samples,test}/**/*.{mts,tsx}'",
55
61
  "codemod:full:any-to-unknown": "tsx ./src/cmd/replace-any-with-unknown.mts '{src,scripts,samples,test}/**/*.{mts,tsx}'",
@@ -63,7 +69,7 @@
63
69
  "codemod:uncommitted:readonly": "tsx ./src/cmd/convert-to-readonly.mts --uncommitted '{src,scripts,samples,test}/**/*.{mts,tsx}'",
64
70
  "cspell": "cspell \"**\" --gitignore --gitignore-root ./ --no-progress",
65
71
  "doc": "tsx ./scripts/cmd/gen-docs.mts",
66
- "doc:embed": "tsx ./scripts/cmd/embed-samples.mts",
72
+ "doc:embed": "tsx ./scripts/cmd/embed-examples.mts",
67
73
  "doc:preview": "vite preview --config ./configs/vite.doc.config.mts",
68
74
  "doc:watch": "typedoc --options ./configs/typedoc.config.mjs --watch",
69
75
  "fmt": "format-uncommitted",
@@ -111,37 +117,37 @@
111
117
  "@semantic-release/commit-analyzer": "13.0.1",
112
118
  "@semantic-release/exec": "7.1.0",
113
119
  "@semantic-release/git": "10.0.1",
114
- "@semantic-release/github": "12.0.6",
120
+ "@semantic-release/github": "12.0.8",
115
121
  "@semantic-release/npm": "13.1.5",
116
- "@semantic-release/release-notes-generator": "14.1.0",
117
- "@types/node": "25.6.0",
122
+ "@semantic-release/release-notes-generator": "14.1.1",
123
+ "@types/node": "25.9.2",
118
124
  "@vitest/browser-playwright": "4.1.5",
119
125
  "@vitest/coverage-v8": "4.1.5",
120
126
  "@vitest/ui": "4.1.5",
121
127
  "cmd-ts": "0.15.0",
122
128
  "conventional-changelog-conventionalcommits": "9.3.1",
123
- "cspell": "10.0.0",
129
+ "cspell": "10.0.1",
124
130
  "dedent": "1.7.2",
125
131
  "eslint": "9.39.4",
126
- "eslint-config-typed": "4.9.7",
127
- "github-settings-as-code": "1.2.8",
128
- "jiti": "2.6.1",
132
+ "eslint-config-typed": "4.9.11",
133
+ "github-settings-as-code": "1.2.9",
134
+ "jiti": "2.7.0",
129
135
  "markdownlint": "0.40.0",
130
136
  "markdownlint-cli2": "0.22.1",
131
137
  "npm-run-all2": "8.0.4",
132
- "playwright": "1.59.1",
138
+ "playwright": "1.60.0",
133
139
  "prettier": "3.8.3",
134
140
  "prettier-plugin-organize-imports": "4.3.0",
135
141
  "prettier-plugin-packagejson": "3.0.2",
136
- "rollup": "4.60.2",
137
- "semantic-release": "25.0.3",
138
- "ts-repo-utils": "10.0.3",
142
+ "rollup": "4.61.1",
143
+ "semantic-release": "25.0.5",
144
+ "ts-repo-utils": "10.1.2",
139
145
  "tslib": "2.8.1",
140
- "tsx": "4.21.0",
146
+ "tsx": "4.22.3",
141
147
  "typedoc": "0.28.19",
142
148
  "typedoc-github-theme": "0.4.0",
143
149
  "typescript": "5.9.3",
144
- "vite": "8.0.10",
150
+ "vite": "8.0.16",
145
151
  "vitest": "4.1.5"
146
152
  },
147
153
  "peerDependencies": {
@@ -9,7 +9,7 @@ const transformer = appendAsConstTransformer();
9
9
 
10
10
  const cmdDef = cmd.command({
11
11
  name: transformer.name,
12
- version: '2.1.7',
12
+ version: '2.2.1',
13
13
  args: {
14
14
  baseDir: cmd.positional({
15
15
  type: cmd.string,
@@ -28,6 +28,12 @@ const cmdDef = cmd.command({
28
28
  description:
29
29
  'If true, transforms only uncommitted files (untracked, modified, and staged files)',
30
30
  }),
31
+ diffFrom: cmd.option({
32
+ long: 'diff-from',
33
+ type: cmd.optional(cmd.string),
34
+ description:
35
+ 'If provided, transforms only files that differ from the given base branch or commit hash',
36
+ }),
31
37
  silent: cmd.flag({
32
38
  long: 'silent',
33
39
  type: cmd.optional(cmd.boolean),
@@ -41,6 +47,7 @@ const cmdDef = cmd.command({
41
47
  baseDir: args.baseDir,
42
48
  exclude: args.exclude ?? [],
43
49
  uncommitted: args.uncommitted ?? false,
50
+ diffFrom: args.diffFrom,
44
51
  silent: args.silent ?? false,
45
52
  },
46
53
  [transformer],
@@ -9,7 +9,7 @@ const transformer = convertInterfaceToTypeTransformer();
9
9
 
10
10
  const cmdDef = cmd.command({
11
11
  name: transformer.name,
12
- version: '2.1.7',
12
+ version: '2.2.1',
13
13
  args: {
14
14
  baseDir: cmd.positional({
15
15
  type: cmd.string,
@@ -28,6 +28,12 @@ const cmdDef = cmd.command({
28
28
  description:
29
29
  'If true, transforms only uncommitted files (untracked, modified, and staged files)',
30
30
  }),
31
+ diffFrom: cmd.option({
32
+ long: 'diff-from',
33
+ type: cmd.optional(cmd.string),
34
+ description:
35
+ 'If provided, transforms only files that differ from the given base branch or commit hash',
36
+ }),
31
37
  silent: cmd.flag({
32
38
  long: 'silent',
33
39
  type: cmd.optional(cmd.boolean),
@@ -41,6 +47,7 @@ const cmdDef = cmd.command({
41
47
  baseDir: args.baseDir,
42
48
  exclude: args.exclude ?? [],
43
49
  uncommitted: args.uncommitted ?? false,
50
+ diffFrom: args.diffFrom,
44
51
  silent: args.silent ?? false,
45
52
  },
46
53
  [transformer],
@@ -9,7 +9,7 @@ const transformer = convertToReadonlyTransformer();
9
9
 
10
10
  const cmdDef = cmd.command({
11
11
  name: transformer.name,
12
- version: '2.1.7',
12
+ version: '2.2.1',
13
13
  args: {
14
14
  baseDir: cmd.positional({
15
15
  type: cmd.string,
@@ -28,6 +28,12 @@ const cmdDef = cmd.command({
28
28
  description:
29
29
  'If true, transforms only uncommitted files (untracked, modified, and staged files)',
30
30
  }),
31
+ diffFrom: cmd.option({
32
+ long: 'diff-from',
33
+ type: cmd.optional(cmd.string),
34
+ description:
35
+ 'If provided, transforms only files that differ from the given base branch or commit hash',
36
+ }),
31
37
  silent: cmd.flag({
32
38
  long: 'silent',
33
39
  type: cmd.optional(cmd.boolean),
@@ -41,6 +47,7 @@ const cmdDef = cmd.command({
41
47
  baseDir: args.baseDir,
42
48
  exclude: args.exclude ?? [],
43
49
  uncommitted: args.uncommitted ?? false,
50
+ diffFrom: args.diffFrom,
44
51
  silent: args.silent ?? false,
45
52
  },
46
53
  [transformer],
@@ -9,7 +9,7 @@ const transformer = replaceAnyWithUnknownTransformer();
9
9
 
10
10
  const cmdDef = cmd.command({
11
11
  name: transformer.name,
12
- version: '2.1.7',
12
+ version: '2.2.1',
13
13
  args: {
14
14
  baseDir: cmd.positional({
15
15
  type: cmd.string,
@@ -28,6 +28,12 @@ const cmdDef = cmd.command({
28
28
  description:
29
29
  'If true, transforms only uncommitted files (untracked, modified, and staged files)',
30
30
  }),
31
+ diffFrom: cmd.option({
32
+ long: 'diff-from',
33
+ type: cmd.optional(cmd.string),
34
+ description:
35
+ 'If provided, transforms only files that differ from the given base branch or commit hash',
36
+ }),
31
37
  silent: cmd.flag({
32
38
  long: 'silent',
33
39
  type: cmd.optional(cmd.boolean),
@@ -41,6 +47,7 @@ const cmdDef = cmd.command({
41
47
  baseDir: args.baseDir,
42
48
  exclude: args.exclude ?? [],
43
49
  uncommitted: args.uncommitted ?? false,
50
+ diffFrom: args.diffFrom,
44
51
  silent: args.silent ?? false,
45
52
  },
46
53
  [transformer],
@@ -9,7 +9,7 @@ const transformer = replaceRecordWithUnknownRecordTransformer();
9
9
 
10
10
  const cmdDef = cmd.command({
11
11
  name: transformer.name,
12
- version: '2.1.7',
12
+ version: '2.2.1',
13
13
  args: {
14
14
  baseDir: cmd.positional({
15
15
  type: cmd.string,
@@ -28,6 +28,12 @@ const cmdDef = cmd.command({
28
28
  description:
29
29
  'If true, transforms only uncommitted files (untracked, modified, and staged files)',
30
30
  }),
31
+ diffFrom: cmd.option({
32
+ long: 'diff-from',
33
+ type: cmd.optional(cmd.string),
34
+ description:
35
+ 'If provided, transforms only files that differ from the given base branch or commit hash',
36
+ }),
31
37
  silent: cmd.flag({
32
38
  long: 'silent',
33
39
  type: cmd.optional(cmd.boolean),
@@ -41,6 +47,7 @@ const cmdDef = cmd.command({
41
47
  baseDir: args.baseDir,
42
48
  exclude: args.exclude ?? [],
43
49
  uncommitted: args.uncommitted ?? false,
50
+ diffFrom: args.diffFrom,
44
51
  silent: args.silent ?? false,
45
52
  },
46
53
  [transformer],
@@ -5,6 +5,7 @@ import * as fs from 'node:fs/promises';
5
5
  import * as path from 'node:path';
6
6
  import { Arr, Result, unknownToString } from 'ts-data-forge';
7
7
  import {
8
+ getDiffFrom,
8
9
  getModifiedFiles,
9
10
  getStagedFiles,
10
11
  getUntrackedFiles,
@@ -19,6 +20,7 @@ type GetFilesOptions = Readonly<{
19
20
  baseDir: string;
20
21
  exclude: readonly string[];
21
22
  uncommitted: boolean;
23
+ diffFrom: string | undefined;
22
24
  silent: boolean;
23
25
  }>;
24
26
 
@@ -36,9 +38,11 @@ export const runTransformerCLI = async (
36
38
 
37
39
  if (Result.isErr(filesResult)) {
38
40
  errorIfNotSilent(
39
- options.uncommitted
40
- ? 'Error getting uncommitted files:'
41
- : 'Error finding files matching pattern:',
41
+ options.diffFrom !== undefined
42
+ ? `Error getting diff files from "${options.diffFrom}":`
43
+ : options.uncommitted
44
+ ? 'Error getting uncommitted files:'
45
+ : 'Error finding files matching pattern:',
42
46
  filesResult.value,
43
47
  );
44
48
 
@@ -49,9 +53,11 @@ export const runTransformerCLI = async (
49
53
 
50
54
  if (Arr.isArrayOfLength(files, 0)) {
51
55
  echoIfNotSilent(
52
- options.uncommitted
53
- ? 'No uncommitted files found'
54
- : `No files found matching pattern: ${options.baseDir}`,
56
+ options.diffFrom !== undefined
57
+ ? `No files found in diff from "${options.diffFrom}" matching pattern: ${options.baseDir}`
58
+ : options.uncommitted
59
+ ? 'No uncommitted files found'
60
+ : `No files found matching pattern: ${options.baseDir}`,
55
61
  );
56
62
 
57
63
  return Result.ok(undefined);
@@ -108,6 +114,12 @@ const getFilesForTransformation = async (
108
114
  options.silent,
109
115
  );
110
116
 
117
+ if (Result.isErr(filesFromGlob)) {
118
+ return filesFromGlob;
119
+ }
120
+
121
+ let mut_files = filesFromGlob.value;
122
+
111
123
  if (options.uncommitted) {
112
124
  const uncommittedFiles = await getUncommittedFiles(options.silent);
113
125
 
@@ -115,12 +127,22 @@ const getFilesForTransformation = async (
115
127
  return uncommittedFiles;
116
128
  }
117
129
 
118
- return Result.map(filesFromGlob, (files) =>
119
- Arr.setIntersection(files, uncommittedFiles.value),
120
- );
130
+ mut_files = Arr.setIntersection(mut_files, uncommittedFiles.value);
131
+ }
132
+
133
+ if (options.diffFrom !== undefined) {
134
+ const diffFiles = await getDiffFrom(options.diffFrom, {
135
+ silent: options.silent,
136
+ });
137
+
138
+ if (Result.isErr(diffFiles)) {
139
+ return diffFiles;
140
+ }
141
+
142
+ mut_files = Arr.setIntersection(mut_files, diffFiles.value);
121
143
  }
122
144
 
123
- return filesFromGlob;
145
+ return Result.ok(mut_files);
124
146
  };
125
147
 
126
148
  const getUncommittedFiles = async (
@@ -12,6 +12,7 @@ import { type DeepReadonly, type SafeUintWithSmallInt } from 'ts-type-forge';
12
12
  import {
13
13
  hasDisableNextLineComment,
14
14
  isAtomicTypeNode,
15
+ isConditionalTypeDistributionGuard,
15
16
  isReadonlyArrayTypeNode,
16
17
  isReadonlyTupleOrArrayTypeNode,
17
18
  isReadonlyTupleTypeNode,
@@ -705,7 +706,12 @@ const transformArrayTypeNode = (
705
706
  // Unnecessary `Readonly` wrapper will be remove in transformTypeReferenceNode
706
707
  case 'Readonly':
707
708
  case 'none':
708
- if (readonlyContext.indexedAccessDepth === 0) {
709
+ // Skip the `A[] extends B[] ? ...` union-distribution-guard idiom: adding
710
+ // `readonly` there does not improve immutability and breaks the idiom.
711
+ if (
712
+ readonlyContext.indexedAccessDepth === 0 &&
713
+ !isConditionalTypeDistributionGuard(node)
714
+ ) {
709
715
  const readonlyText = `readonly ${node.getFullText()}` as const;
710
716
 
711
717
  options.replaceNode(
@@ -752,7 +758,12 @@ const transformTupleTypeNode = (
752
758
  // Unnecessary `Readonly` wrapper will be remove in transformTypeReferenceNode
753
759
  case 'Readonly':
754
760
  case 'none':
755
- if (readonlyContext.indexedAccessDepth === 0) {
761
+ // Skip the `[A] extends [B] ? ...` union-distribution-guard idiom: adding
762
+ // `readonly` there does not improve immutability and breaks the idiom.
763
+ if (
764
+ readonlyContext.indexedAccessDepth === 0 &&
765
+ !isConditionalTypeDistributionGuard(node)
766
+ ) {
756
767
  const readonlyText = `readonly ${node.getFullText()}` as const;
757
768
 
758
769
  options.replaceNode(
@@ -738,6 +738,56 @@ describe(convertToReadonlyTransformer, () => {
738
738
  },
739
739
  ])('$name', testFn);
740
740
 
741
+ describe('Conditional type union-distribution-guard idiom', () => {
742
+ test.each([
743
+ {
744
+ name: 'Single-element tuples in check and extends positions are left as-is',
745
+ source: dedent`
746
+ type TypeExtends<A, B> = [A] extends [B] ? true : false;
747
+ `,
748
+ expected: dedent`
749
+ type TypeExtends<A, B> = [A] extends [B] ? true : false;
750
+ `,
751
+ },
752
+ {
753
+ name: 'Multi-element guard tuples are left as-is',
754
+ source: dedent`
755
+ type Eq<A, B> = [A, B] extends [B, A] ? true : false;
756
+ `,
757
+ expected: dedent`
758
+ type Eq<A, B> = [A, B] extends [B, A] ? true : false;
759
+ `,
760
+ },
761
+ {
762
+ name: 'Tuples in true/false branches are still converted',
763
+ source: dedent`
764
+ type T<A> = [A] extends [string] ? [A, A] : [number];
765
+ `,
766
+ expected: dedent`
767
+ type T<A> = [A] extends [string] ? readonly [A, A] : readonly [number];
768
+ `,
769
+ },
770
+ {
771
+ name: 'Arrays in check and extends positions are left as-is',
772
+ source: dedent`
773
+ type ArrayExtends<A, B> = A[] extends B[] ? true : false;
774
+ `,
775
+ expected: dedent`
776
+ type ArrayExtends<A, B> = A[] extends B[] ? true : false;
777
+ `,
778
+ },
779
+ {
780
+ name: 'Arrays in true/false branches are still converted',
781
+ source: dedent`
782
+ type T<A> = A[] extends string[] ? A[] : number[];
783
+ `,
784
+ expected: dedent`
785
+ type T<A> = A[] extends string[] ? readonly A[] : readonly number[];
786
+ `,
787
+ },
788
+ ])('$name', testFn);
789
+ });
790
+
741
791
  describe('Rest types', () => {
742
792
  test.each([
743
793
  {
@@ -1,6 +1,7 @@
1
1
  export * from './has-disable-next-line-comment.mjs';
2
2
  export * from './is-as-const-node.mjs';
3
3
  export * from './is-atomic-type-node.mjs';
4
+ export * from './is-conditional-type-distribution-guard.mjs';
4
5
  export * from './is-readonly-node.mjs';
5
6
  export * from './is-spread-parameter-node.mjs';
6
7
  export * from './remove-parentheses.mjs';
@@ -0,0 +1,45 @@
1
+ import * as tsm from 'ts-morph';
2
+
3
+ /**
4
+ * Determines whether a type node is an operand (check or extends type) of a
5
+ * conditional type whose check type is wrapped to suppress union distribution,
6
+ * i.e. the `X` and `Y` in `X extends Y ? ... : ...` where `X` is itself a tuple
7
+ * or array.
8
+ *
9
+ * Wrapping a naked type parameter so that it is no longer naked is a well-known
10
+ * type-implementation idiom used to suppress union distribution. Both
11
+ * `[A] extends [B] ? ...` (tuple wrapping) and `A[] extends B[] ? ...` (array
12
+ * wrapping) rely on this. Adding a `readonly` modifier to those operands neither
13
+ * makes the type more immutable in any meaningful way nor preserves the idiom's
14
+ * intent, so such operands must be left untouched.
15
+ *
16
+ * A naked check type such as `T extends string[] ? ...` still distributes, so it
17
+ * is not a guard; arrays/tuples in its extends position are converted as usual.
18
+ *
19
+ * @param node - The type node to check
20
+ * @returns true if the node is the check or extends type of a distribution-guarded
21
+ * conditional type
22
+ */
23
+ export const isConditionalTypeDistributionGuard = (node: tsm.Node): boolean => {
24
+ const parent = node.getParent();
25
+
26
+ if (parent?.isKind(tsm.SyntaxKind.ConditionalType) !== true) {
27
+ return false;
28
+ }
29
+
30
+ const checkType = parent.getCheckType();
31
+
32
+ // The guard is only in effect when the check type itself is wrapped in a tuple
33
+ // or array; otherwise (e.g. a naked `T`) the conditional still distributes.
34
+ if (
35
+ !checkType.isKind(tsm.SyntaxKind.TupleType) &&
36
+ !checkType.isKind(tsm.SyntaxKind.ArrayType)
37
+ ) {
38
+ return false;
39
+ }
40
+
41
+ return (
42
+ checkType.compilerNode === node.compilerNode ||
43
+ parent.getExtendsType().compilerNode === node.compilerNode
44
+ );
45
+ };