ts-codemod-lib 2.1.4 → 2.1.6

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 (41) hide show
  1. package/README.md +3 -1
  2. package/dist/cmd/append-as-const.mjs +1 -1
  3. package/dist/cmd/convert-interface-to-type.mjs +1 -1
  4. package/dist/cmd/convert-to-readonly.mjs +1 -1
  5. package/dist/cmd/replace-any-with-unknown.mjs +1 -1
  6. package/dist/cmd/replace-record-with-unknown-record.mjs +1 -1
  7. package/dist/functions/ast-transformers/append-as-const.d.mts +1 -0
  8. package/dist/functions/ast-transformers/append-as-const.d.mts.map +1 -1
  9. package/dist/functions/ast-transformers/append-as-const.mjs.map +1 -1
  10. package/dist/functions/ast-transformers/convert-to-readonly.d.mts +1 -0
  11. package/dist/functions/ast-transformers/convert-to-readonly.d.mts.map +1 -1
  12. package/dist/functions/ast-transformers/convert-to-readonly.mjs.map +1 -1
  13. package/dist/functions/ast-transformers/readonly-transformer-helpers/compare-union-types.d.mts.map +1 -1
  14. package/dist/functions/ast-transformers/readonly-transformer-helpers/compare-union-types.mjs.map +1 -1
  15. package/dist/functions/ast-transformers/readonly-transformer-helpers/readonly-context.d.mts +1 -0
  16. package/dist/functions/ast-transformers/readonly-transformer-helpers/readonly-context.d.mts.map +1 -1
  17. package/dist/functions/ast-transformers/readonly-transformer-helpers/readonly-context.mjs.map +1 -1
  18. package/dist/functions/ast-transformers/replace-record-with-unknown-record.d.mts +5 -1
  19. package/dist/functions/ast-transformers/replace-record-with-unknown-record.d.mts.map +1 -1
  20. package/dist/functions/ast-transformers/replace-record-with-unknown-record.mjs +134 -80
  21. package/dist/functions/ast-transformers/replace-record-with-unknown-record.mjs.map +1 -1
  22. package/dist/functions/functions/is-atomic-type-node.d.mts +1 -0
  23. package/dist/functions/functions/is-atomic-type-node.d.mts.map +1 -1
  24. package/dist/functions/functions/is-atomic-type-node.mjs.map +1 -1
  25. package/dist/functions/functions/is-readonly-node.d.mts +1 -0
  26. package/dist/functions/functions/is-readonly-node.d.mts.map +1 -1
  27. package/dist/functions/functions/is-readonly-node.mjs.map +1 -1
  28. package/package.json +6 -6
  29. package/src/cmd/append-as-const.mts +1 -1
  30. package/src/cmd/convert-interface-to-type.mts +1 -1
  31. package/src/cmd/convert-to-readonly.mts +1 -1
  32. package/src/cmd/replace-any-with-unknown.mts +1 -1
  33. package/src/cmd/replace-record-with-unknown-record.mts +1 -1
  34. package/src/functions/ast-transformers/append-as-const.mts +1 -0
  35. package/src/functions/ast-transformers/convert-to-readonly.mts +1 -0
  36. package/src/functions/ast-transformers/readonly-transformer-helpers/compare-union-types.mts +1 -0
  37. package/src/functions/ast-transformers/readonly-transformer-helpers/readonly-context.mts +1 -0
  38. package/src/functions/ast-transformers/replace-record-with-unknown-record.mts +169 -94
  39. package/src/functions/ast-transformers/replace-record-with-unknown-record.test.mts +312 -0
  40. package/src/functions/functions/is-atomic-type-node.mts +1 -0
  41. package/src/functions/functions/is-readonly-node.mts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"replace-record-with-unknown-record.mjs","sources":["../../../src/functions/ast-transformers/replace-record-with-unknown-record.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"replace-record-with-unknown-record.mjs","sources":["../../../src/functions/ast-transformers/replace-record-with-unknown-record.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import * as tsm from 'ts-morph';
2
+ import { type DeepReadonly } from 'ts-type-forge';
2
3
  export type AtomicTypeNode = tsm.Node & Readonly<tsm.LiteralTypeNode | tsm.TemplateLiteralTypeNode | (tsm.TypeNode & {
3
4
  kind: tsm.SyntaxKind.StringKeyword | tsm.SyntaxKind.BooleanKeyword | tsm.SyntaxKind.NumberKeyword | tsm.SyntaxKind.BigIntKeyword | tsm.SyntaxKind.SymbolKeyword | tsm.SyntaxKind.UndefinedKeyword | tsm.SyntaxKind.VoidKeyword | tsm.SyntaxKind.AnyKeyword | tsm.SyntaxKind.UnknownKeyword | tsm.SyntaxKind.ObjectKeyword | tsm.SyntaxKind.NeverKeyword;
4
5
  })>;
@@ -1 +1 @@
1
- {"version":3,"file":"is-atomic-type-node.d.mts","sourceRoot":"","sources":["../../../src/functions/functions/is-atomic-type-node.mts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAkBhC,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,IAAI,GACnC,QAAQ,CACJ,GAAG,CAAC,eAAe,GACnB,GAAG,CAAC,uBAAuB,GAC3B,CAAC,GAAG,CAAC,QAAQ,GAAG;IACd,IAAI,EACA,GAAG,CAAC,UAAU,CAAC,aAAa,GAC5B,GAAG,CAAC,UAAU,CAAC,cAAc,GAC7B,GAAG,CAAC,UAAU,CAAC,aAAa,GAC5B,GAAG,CAAC,UAAU,CAAC,aAAa,GAC5B,GAAG,CAAC,UAAU,CAAC,aAAa,GAC5B,GAAG,CAAC,UAAU,CAAC,gBAAgB,GAC/B,GAAG,CAAC,UAAU,CAAC,WAAW,GAC1B,GAAG,CAAC,UAAU,CAAC,UAAU,GACzB,GAAG,CAAC,UAAU,CAAC,cAAc,GAC7B,GAAG,CAAC,UAAU,CAAC,aAAa,GAC5B,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC;CACjC,CAAC,CACL,CAAC;AAEJ;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAC3B,IAAI,IAAI,cAmBV,CAAC"}
1
+ {"version":3,"file":"is-atomic-type-node.d.mts","sourceRoot":"","sources":["../../../src/functions/functions/is-atomic-type-node.mts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAkBlD,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,IAAI,GACnC,QAAQ,CACJ,GAAG,CAAC,eAAe,GACnB,GAAG,CAAC,uBAAuB,GAC3B,CAAC,GAAG,CAAC,QAAQ,GAAG;IACd,IAAI,EACA,GAAG,CAAC,UAAU,CAAC,aAAa,GAC5B,GAAG,CAAC,UAAU,CAAC,cAAc,GAC7B,GAAG,CAAC,UAAU,CAAC,aAAa,GAC5B,GAAG,CAAC,UAAU,CAAC,aAAa,GAC5B,GAAG,CAAC,UAAU,CAAC,aAAa,GAC5B,GAAG,CAAC,UAAU,CAAC,gBAAgB,GAC/B,GAAG,CAAC,UAAU,CAAC,WAAW,GAC1B,GAAG,CAAC,UAAU,CAAC,UAAU,GACzB,GAAG,CAAC,UAAU,CAAC,cAAc,GAC7B,GAAG,CAAC,UAAU,CAAC,aAAa,GAC5B,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC;CACjC,CAAC,CACL,CAAC;AAEJ;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAC3B,IAAI,IAAI,cAmBV,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"is-atomic-type-node.mjs","sources":["../../../src/functions/functions/is-atomic-type-node.mts"],"sourcesContent":[null],"names":[],"mappings":";;;AAGA;AACA,MAAM,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAiB;IACzD,GAAG,CAAC,UAAU,CAAC,aAAa;IAC5B,GAAG,CAAC,UAAU,CAAC,cAAc;IAC7B,GAAG,CAAC,UAAU,CAAC,aAAa;IAC5B,GAAG,CAAC,UAAU,CAAC,aAAa;IAC5B,GAAG,CAAC,UAAU,CAAC,aAAa;IAC5B,GAAG,CAAC,UAAU,CAAC,gBAAgB;IAC/B,GAAG,CAAC,UAAU,CAAC,WAAW;IAC1B,GAAG,CAAC,UAAU,CAAC,UAAU;IACzB,GAAG,CAAC,UAAU,CAAC,cAAc;AAC7B,IAAA,GAAG,CAAC,UAAU,CAAC,aAAa;IAC5B,GAAG,CAAC,UAAU,CAAC,YAAY;AAC5B,CAAA,CAAC;AAuBF;;;;;;;;AAQG;AACI,MAAM,gBAAgB,GAAG,CAC9B,IAA4B,KACF;;IAE1B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;AAC3C,QAAA,OAAO,IAAI;IACb;;IAGA,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE;AACnD,QAAA,OAAO,IAAI;IACb;;;;IAKA,IAAI,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;AAC9C,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,OAAO,KAAK;AACd;;;;"}
1
+ {"version":3,"file":"is-atomic-type-node.mjs","sources":["../../../src/functions/functions/is-atomic-type-node.mts"],"sourcesContent":[null],"names":[],"mappings":";;;AAIA;AACA,MAAM,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAiB;IACzD,GAAG,CAAC,UAAU,CAAC,aAAa;IAC5B,GAAG,CAAC,UAAU,CAAC,cAAc;IAC7B,GAAG,CAAC,UAAU,CAAC,aAAa;IAC5B,GAAG,CAAC,UAAU,CAAC,aAAa;IAC5B,GAAG,CAAC,UAAU,CAAC,aAAa;IAC5B,GAAG,CAAC,UAAU,CAAC,gBAAgB;IAC/B,GAAG,CAAC,UAAU,CAAC,WAAW;IAC1B,GAAG,CAAC,UAAU,CAAC,UAAU;IACzB,GAAG,CAAC,UAAU,CAAC,cAAc;AAC7B,IAAA,GAAG,CAAC,UAAU,CAAC,aAAa;IAC5B,GAAG,CAAC,UAAU,CAAC,YAAY;AAC5B,CAAA,CAAC;AAuBF;;;;;;;;AAQG;AACI,MAAM,gBAAgB,GAAG,CAC9B,IAA4B,KACF;;IAE1B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;AAC3C,QAAA,OAAO,IAAI;IACb;;IAGA,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE;AACnD,QAAA,OAAO,IAAI;IACb;;;;IAKA,IAAI,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;AAC9C,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,OAAO,KAAK;AACd;;;;"}
@@ -1,4 +1,5 @@
1
1
  import * as tsm from 'ts-morph';
2
+ import { type DeepReadonly } from 'ts-type-forge';
2
3
  export declare const isShallowReadonlyTypeNode: (node: tsm.Node) => boolean;
3
4
  export declare const isReadonlyTupleOrArrayTypeNode: (node: DeepReadonly<tsm.Node>) => node is ReadonlyArrayTypeNode | ReadonlyTupleTypeNode;
4
5
  export type ReadonlyArrayTypeNode = tsm.TypeNode & Omit<tsm.TypeOperatorTypeNode, 'getOperator' | 'getTypeNode'> & Readonly<{
@@ -1 +1 @@
1
- {"version":3,"file":"is-readonly-node.d.mts","sourceRoot":"","sources":["../../../src/functions/functions/is-readonly-node.mts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAGhC,eAAO,MAAM,yBAAyB,GAAI,MAAM,GAAG,CAAC,IAAI,KAAG,OAGnC,CAAC;AAEzB,eAAO,MAAM,8BAA8B,GACzC,MAAM,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAC3B,IAAI,IAAI,qBAAqB,GAAG,qBAIqB,CAAC;AAEzD,MAAM,MAAM,qBAAqB,GAAG,GAAG,CAAC,QAAQ,GAC9C,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,aAAa,GAAG,aAAa,CAAC,GAC7D,QAAQ,CAAC;IACP,WAAW,EAAE,MAAM,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC;IAClD,WAAW,EAAE,MAAM,GAAG,CAAC,aAAa,CAAC;CACtC,CAAC,CAAC;AAEL,eAAO,MAAM,uBAAuB,GAClC,MAAM,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAC3B,IAAI,IAAI,qBAG0C,CAAC;AA8DtD,MAAM,MAAM,qBAAqB,GAAG,GAAG,CAAC,QAAQ,GAC9C,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,aAAa,GAAG,aAAa,CAAC,GAC7D,QAAQ,CAAC;IACP,WAAW,EAAE,MAAM,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC;IAClD,WAAW,EAAE,MAAM,GAAG,CAAC,aAAa,CAAC;CACtC,CAAC,CAAC;AAEL,eAAO,MAAM,uBAAuB,GAClC,MAAM,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAC3B,IAAI,IAAI,qBAG0C,CAAC;AAkDtD,MAAM,MAAM,yBAAyB,GAAG,GAAG,CAAC,QAAQ,GAClD,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,aAAa,GAAG,kBAAkB,CAAC,GAC/D,QAAQ,CAAC;IACP,WAAW,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,GAChD,QAAQ,CAAC;QACP,OAAO,EAAE,MAAM,UAAU,CAAC;KAC3B,CAAC,CAAC;IACL,gBAAgB,EAAE,MAAM,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;CACjD,CAAC,CAAC;AAEL,eAAO,MAAM,2BAA2B,GACtC,MAAM,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAC3B,IAAI,IAAI,yBAcV,CAAC"}
1
+ {"version":3,"file":"is-readonly-node.d.mts","sourceRoot":"","sources":["../../../src/functions/functions/is-readonly-node.mts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD,eAAO,MAAM,yBAAyB,GAAI,MAAM,GAAG,CAAC,IAAI,KAAG,OAGnC,CAAC;AAEzB,eAAO,MAAM,8BAA8B,GACzC,MAAM,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAC3B,IAAI,IAAI,qBAAqB,GAAG,qBAIqB,CAAC;AAEzD,MAAM,MAAM,qBAAqB,GAAG,GAAG,CAAC,QAAQ,GAC9C,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,aAAa,GAAG,aAAa,CAAC,GAC7D,QAAQ,CAAC;IACP,WAAW,EAAE,MAAM,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC;IAClD,WAAW,EAAE,MAAM,GAAG,CAAC,aAAa,CAAC;CACtC,CAAC,CAAC;AAEL,eAAO,MAAM,uBAAuB,GAClC,MAAM,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAC3B,IAAI,IAAI,qBAG0C,CAAC;AA8DtD,MAAM,MAAM,qBAAqB,GAAG,GAAG,CAAC,QAAQ,GAC9C,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,aAAa,GAAG,aAAa,CAAC,GAC7D,QAAQ,CAAC;IACP,WAAW,EAAE,MAAM,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC;IAClD,WAAW,EAAE,MAAM,GAAG,CAAC,aAAa,CAAC;CACtC,CAAC,CAAC;AAEL,eAAO,MAAM,uBAAuB,GAClC,MAAM,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAC3B,IAAI,IAAI,qBAG0C,CAAC;AAkDtD,MAAM,MAAM,yBAAyB,GAAG,GAAG,CAAC,QAAQ,GAClD,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,aAAa,GAAG,kBAAkB,CAAC,GAC/D,QAAQ,CAAC;IACP,WAAW,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,GAChD,QAAQ,CAAC;QACP,OAAO,EAAE,MAAM,UAAU,CAAC;KAC3B,CAAC,CAAC;IACL,gBAAgB,EAAE,MAAM,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;CACjD,CAAC,CAAC;AAEL,eAAO,MAAM,2BAA2B,GACtC,MAAM,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAC3B,IAAI,IAAI,yBAcV,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"is-readonly-node.mjs","sources":["../../../src/functions/functions/is-readonly-node.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAIO,MAAM,yBAAyB,GAAG,CAAC,IAAc,KACtD,8BAA8B,CAAC,IAAI,CAAC;IACpC,2BAA2B,CAAC,IAAI,CAAC;IACjC,gBAAgB,CAAC,IAAI;AAEhB,MAAM,8BAA8B,GAAG,CAC5C,IAA4B,KAE5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC;IACxC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,UAAU,CAAC,eAAe;AACrD,KAAC,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;AAClD,QAAA,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;AAShD,MAAM,uBAAuB,GAAG,CACrC,IAA4B,KAE5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC;IACxC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,UAAU,CAAC,eAAe;AACrD,IAAA,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS;AAqE7C,MAAM,uBAAuB,GAAG,CACrC,IAA4B,KAE5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC;IACxC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,UAAU,CAAC,eAAe;AACrD,IAAA,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS;AA4D7C,MAAM,2BAA2B,GAAG,CACzC,IAA4B,KACS;AACrC,IAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;AAC9C,QAAA,OAAO,KAAK;;AAGd,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;AAEnC,IAAA,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE;IAE7C,QACE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;AAC1C,QAAA,QAAQ,CAAC,OAAO,EAAE,KAAK,UAAU;QACjC,GAAG,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC,CAAC;AAEzC;;;;"}
1
+ {"version":3,"file":"is-readonly-node.mjs","sources":["../../../src/functions/functions/is-readonly-node.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKO,MAAM,yBAAyB,GAAG,CAAC,IAAc,KACtD,8BAA8B,CAAC,IAAI,CAAC;IACpC,2BAA2B,CAAC,IAAI,CAAC;IACjC,gBAAgB,CAAC,IAAI;AAEhB,MAAM,8BAA8B,GAAG,CAC5C,IAA4B,KAE5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC;IACxC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,UAAU,CAAC,eAAe;AACrD,KAAC,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;AAClD,QAAA,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;AAShD,MAAM,uBAAuB,GAAG,CACrC,IAA4B,KAE5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC;IACxC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,UAAU,CAAC,eAAe;AACrD,IAAA,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS;AAqE7C,MAAM,uBAAuB,GAAG,CACrC,IAA4B,KAE5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC;IACxC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,UAAU,CAAC,eAAe;AACrD,IAAA,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS;AA4D7C,MAAM,2BAA2B,GAAG,CACzC,IAA4B,KACS;AACrC,IAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;AAC9C,QAAA,OAAO,KAAK;;AAGd,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;AAEnC,IAAA,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE;IAE7C,QACE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;AAC1C,QAAA,QAAQ,CAAC,OAAO,EAAE,KAAK,UAAU;QACjC,GAAG,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC,CAAC;AAEzC;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-codemod-lib",
3
- "version": "2.1.4",
3
+ "version": "2.1.6",
4
4
  "private": false,
5
5
  "keywords": [
6
6
  "typescript",
@@ -99,8 +99,9 @@
99
99
  "z:vitest:node": "pnpm run z:vitest --project='Node.js'"
100
100
  },
101
101
  "dependencies": {
102
- "ts-data-forge": "6.9.2",
103
- "ts-morph": "28.0.0"
102
+ "ts-data-forge": "6.9.4",
103
+ "ts-morph": "28.0.0",
104
+ "ts-type-forge": "3.0.0"
104
105
  },
105
106
  "devDependencies": {
106
107
  "@rollup/plugin-replace": "6.0.3",
@@ -134,8 +135,7 @@
134
135
  "prettier-plugin-packagejson": "3.0.2",
135
136
  "rollup": "4.60.2",
136
137
  "semantic-release": "25.0.3",
137
- "ts-repo-utils": "10.0.0",
138
- "ts-type-forge": "2.4.1",
138
+ "ts-repo-utils": "10.0.1",
139
139
  "tslib": "2.8.1",
140
140
  "tsx": "4.21.0",
141
141
  "typedoc": "0.28.19",
@@ -160,7 +160,7 @@
160
160
  "optional": true
161
161
  }
162
162
  },
163
- "packageManager": "pnpm@10.33.2",
163
+ "packageManager": "pnpm@11.0.9",
164
164
  "engines": {
165
165
  "node": ">=22.18.0",
166
166
  "pnpm": ">=9.0.0"
@@ -9,7 +9,7 @@ const transformer = appendAsConstTransformer();
9
9
 
10
10
  const cmdDef = cmd.command({
11
11
  name: transformer.name,
12
- version: '2.1.4',
12
+ version: '2.1.6',
13
13
  args: {
14
14
  baseDir: cmd.positional({
15
15
  type: cmd.string,
@@ -9,7 +9,7 @@ const transformer = convertInterfaceToTypeTransformer();
9
9
 
10
10
  const cmdDef = cmd.command({
11
11
  name: transformer.name,
12
- version: '2.1.4',
12
+ version: '2.1.6',
13
13
  args: {
14
14
  baseDir: cmd.positional({
15
15
  type: cmd.string,
@@ -9,7 +9,7 @@ const transformer = convertToReadonlyTransformer();
9
9
 
10
10
  const cmdDef = cmd.command({
11
11
  name: transformer.name,
12
- version: '2.1.4',
12
+ version: '2.1.6',
13
13
  args: {
14
14
  baseDir: cmd.positional({
15
15
  type: cmd.string,
@@ -9,7 +9,7 @@ const transformer = replaceAnyWithUnknownTransformer();
9
9
 
10
10
  const cmdDef = cmd.command({
11
11
  name: transformer.name,
12
- version: '2.1.4',
12
+ version: '2.1.6',
13
13
  args: {
14
14
  baseDir: cmd.positional({
15
15
  type: cmd.string,
@@ -9,7 +9,7 @@ const transformer = replaceRecordWithUnknownRecordTransformer();
9
9
 
10
10
  const cmdDef = cmd.command({
11
11
  name: transformer.name,
12
- version: '2.1.4',
12
+ version: '2.1.6',
13
13
  args: {
14
14
  baseDir: cmd.positional({
15
15
  type: cmd.string,
@@ -1,5 +1,6 @@
1
1
  import { Arr, ISet } from 'ts-data-forge';
2
2
  import * as tsm from 'ts-morph';
3
+ import { type DeepReadonly } from 'ts-type-forge';
3
4
  import {
4
5
  hasDisableNextLineComment,
5
6
  isAsConstNode,
@@ -8,6 +8,7 @@ import {
8
8
  pipe,
9
9
  } from 'ts-data-forge';
10
10
  import * as tsm from 'ts-morph';
11
+ import { type DeepReadonly, type SafeUintWithSmallInt } from 'ts-type-forge';
11
12
  import {
12
13
  hasDisableNextLineComment,
13
14
  isAtomicTypeNode,
@@ -1,4 +1,5 @@
1
1
  import * as tsm from 'ts-morph';
2
+ import { type DeepReadonly } from 'ts-type-forge';
2
3
  import {
3
4
  isAtomicTypeNode,
4
5
  isReadonlyTupleOrArrayTypeNode,
@@ -1,4 +1,5 @@
1
1
  import { SafeUint, match } from 'ts-data-forge';
2
+ import { type SafeUintWithSmallInt } from 'ts-type-forge';
2
3
 
3
4
  /**
4
5
  * Controls whether to make a layer mutable during recursive transformation
@@ -6,95 +6,113 @@ import { type TsMorphTransformer } from './types.mjs';
6
6
 
7
7
  const TRANSFORMER_NAME = 'replace-record-with-unknown-record';
8
8
 
9
+ const UNKNOWN_RECORD_MODULE = 'ts-type-forge';
10
+
11
+ const UNKNOWN_RECORD_NAME = 'UnknownRecord';
12
+
9
13
  /**
10
14
  * Replaces `Readonly<Record<string, unknown>>`, `Record<string, unknown>`,
11
- * and index signatures `[k: string]: unknown` with `UnknownRecord`
15
+ * and index signatures `[k: string]: unknown` with `UnknownRecord`.
16
+ *
17
+ * When a replacement occurs, also inserts
18
+ * `import { type UnknownRecord } from 'ts-type-forge';` at the top of the
19
+ * source file (or merges into an existing import from `'ts-type-forge'`).
12
20
  */
13
21
  export const replaceRecordWithUnknownRecordTransformer =
14
22
  (): TsMorphTransformer =>
15
23
  ({
16
24
  name: TRANSFORMER_NAME,
17
25
  transform: (sourceAst) => {
18
- // Process top-level declarations
19
- processDeclarations(sourceAst);
20
-
21
- // Process declarations inside namespaces/modules
22
- const namespaces = sourceAst.getModules();
23
-
24
- for (const namespace of namespaces) {
25
- processDeclarations(namespace);
26
+ const containerModifications = [
27
+ processDeclarations(sourceAst),
28
+ ...sourceAst
29
+ .getModules()
30
+ .map((namespace) => processDeclarations(namespace)),
31
+ ];
32
+
33
+ if (containerModifications.includes(true)) {
34
+ ensureUnknownRecordImport(sourceAst);
26
35
  }
27
36
  },
28
37
  }) as const;
29
38
 
30
39
  const processDeclarations = (
31
40
  container: tsm.SourceFile | tsm.ModuleDeclaration,
32
- ): void => {
33
- const typeAliases = container.getTypeAliases();
34
-
35
- for (const typeAlias of typeAliases) {
41
+ ): boolean => {
42
+ const typeAliasModifications = container.getTypeAliases().map((typeAlias) => {
36
43
  if (hasDisableNextLineComment(typeAlias, TRANSFORMER_NAME)) {
37
- continue;
44
+ return false;
38
45
  }
39
46
 
40
47
  const typeNode = typeAlias.getTypeNode();
41
48
 
42
- if (typeNode === undefined) continue;
49
+ if (typeNode === undefined) return false;
43
50
 
44
- visitTypeNode(typeNode);
45
- }
51
+ return visitTypeNode(typeNode);
52
+ });
46
53
 
47
- const interfaces = container.getInterfaces();
54
+ const interfaceModifications = container
55
+ .getInterfaces()
56
+ .map((interfaceDecl) => processInterfaceDeclaration(interfaceDecl));
48
57
 
49
- for (const interfaceDecl of interfaces) {
50
- if (hasDisableNextLineComment(interfaceDecl, TRANSFORMER_NAME)) {
51
- continue;
52
- }
58
+ return [...typeAliasModifications, ...interfaceModifications].includes(true);
59
+ };
53
60
 
54
- // Check if interface has index signature [k: string]: unknown
55
- const indexSignatures = interfaceDecl.getIndexSignatures();
61
+ const processInterfaceDeclaration = (
62
+ interfaceDecl: tsm.InterfaceDeclaration,
63
+ ): boolean => {
64
+ if (hasDisableNextLineComment(interfaceDecl, TRANSFORMER_NAME)) {
65
+ return false;
66
+ }
56
67
 
57
- const hasStringUnknownSignature = indexSignatures.some((sig) => {
58
- const keyType = sig.getKeyType();
68
+ // Check if interface has index signature [k: string]: unknown
69
+ const indexSignatures = interfaceDecl.getIndexSignatures();
59
70
 
60
- const returnType = sig.getReturnType();
71
+ const hasStringUnknownSignature = indexSignatures.some((sig) => {
72
+ const keyType = sig.getKeyType();
61
73
 
62
- return (
63
- keyType.getText() === 'string' && returnType.getText() === 'unknown'
64
- );
65
- });
74
+ const returnType = sig.getReturnType();
66
75
 
67
- // If it has the signature and no other members, replace entire interface with type alias
68
- if (hasStringUnknownSignature) {
69
- const properties = interfaceDecl.getProperties();
76
+ return keyType.getText() === 'string' && returnType.getText() === 'unknown';
77
+ });
70
78
 
71
- if (
72
- Arr.isArrayOfLength(properties, 0) &&
73
- Arr.isArrayOfLength(indexSignatures, 1)
74
- ) {
75
- // Replace interface with type alias
76
- const interfaceName = interfaceDecl.getName();
79
+ // If it has the signature and no other members, replace entire interface with type alias.
80
+ // Skip when the interface carries semantics that a plain type alias would lose
81
+ // (type parameters, extends clauses, declare modifier, default export).
82
+ if (
83
+ hasStringUnknownSignature &&
84
+ Arr.isArrayOfLength(interfaceDecl.getProperties(), 0) &&
85
+ Arr.isArrayOfLength(indexSignatures, 1) &&
86
+ Arr.isArrayOfLength(interfaceDecl.getTypeParameters(), 0) &&
87
+ Arr.isArrayOfLength(interfaceDecl.getExtends(), 0) &&
88
+ !interfaceDecl.hasDeclareKeyword() &&
89
+ !interfaceDecl.hasDefaultKeyword()
90
+ ) {
91
+ const exportPrefix = interfaceDecl.hasExportKeyword() ? 'export ' : '';
77
92
 
78
- interfaceDecl.replaceWithText(
79
- `export type ${interfaceName} = UnknownRecord;`,
80
- );
93
+ const interfaceName = interfaceDecl.getName();
81
94
 
82
- continue;
83
- }
84
- }
95
+ interfaceDecl.replaceWithText(
96
+ `${exportPrefix}type ${interfaceName} = UnknownRecord;`,
97
+ );
98
+
99
+ return true;
100
+ }
85
101
 
86
- // Otherwise, check properties for Record types
87
- for (const property of interfaceDecl.getProperties()) {
102
+ // Otherwise, check properties for Record types
103
+ return interfaceDecl
104
+ .getProperties()
105
+ .map((property) => {
88
106
  const typeNode = property.getTypeNode();
89
107
 
90
- if (typeNode === undefined) continue;
108
+ if (typeNode === undefined) return false;
91
109
 
92
- visitTypeNode(typeNode);
93
- }
94
- }
110
+ return visitTypeNode(typeNode);
111
+ })
112
+ .includes(true);
95
113
  };
96
114
 
97
- const visitTypeNode = (node: tsm.TypeNode): void => {
115
+ const visitTypeNode = (node: tsm.TypeNode): boolean => {
98
116
  if (tsm.Node.isTypeReference(node)) {
99
117
  // Check if it's Readonly<{ [k: string]: unknown }>
100
118
  if (node.getTypeName().getText() === 'Readonly') {
@@ -118,18 +136,16 @@ const visitTypeNode = (node: tsm.TypeNode): void => {
118
136
  ) {
119
137
  node.replaceWithText('UnknownRecord');
120
138
 
121
- return;
139
+ return true;
122
140
  }
123
141
 
124
142
  // Otherwise, recurse into the type literal to visit its properties
125
- visitTypeNode(typeArg);
126
-
127
- return;
143
+ return visitTypeNode(typeArg);
128
144
  }
129
145
  }
130
146
  }
131
147
 
132
- replaceIfRecordUnknown(node);
148
+ return replaceIfRecordUnknown(node);
133
149
  }
134
150
 
135
151
  // Check for type literal { [k: string]: unknown }
@@ -148,44 +164,65 @@ const visitTypeNode = (node: tsm.TypeNode): void => {
148
164
  ) {
149
165
  node.replaceWithText('UnknownRecord');
150
166
 
151
- return;
167
+ return true;
152
168
  }
153
- }
154
169
 
155
- // Recursively visit child type nodes
156
- if (tsm.Node.isUnionTypeNode(node)) {
157
- for (const typeNode of node.getTypeNodes()) {
158
- visitTypeNode(typeNode);
159
- }
160
- } else if (tsm.Node.isIntersectionTypeNode(node)) {
161
- for (const typeNode of node.getTypeNodes()) {
162
- visitTypeNode(typeNode);
163
- }
164
- } else if (tsm.Node.isArrayTypeNode(node)) {
165
- visitTypeNode(node.getElementTypeNode());
166
- } else if (tsm.Node.isTupleTypeNode(node)) {
167
- for (const element of node.getElements()) {
168
- visitTypeNode(element);
169
- }
170
- } else if (tsm.Node.isParenthesizedTypeNode(node)) {
171
- visitTypeNode(node.getTypeNode());
172
- } else if (tsm.Node.isTypeLiteral(node)) {
173
- for (const member of node.getMembers()) {
174
- if (tsm.Node.isPropertySignature(member)) {
175
- const typeNode = member.getTypeNode();
176
-
177
- if (typeNode !== undefined) {
178
- visitTypeNode(typeNode);
170
+ return members
171
+ .map((member) => {
172
+ if (tsm.Node.isPropertySignature(member)) {
173
+ const typeNode = member.getTypeNode();
174
+
175
+ return typeNode === undefined ? false : visitTypeNode(typeNode);
179
176
  }
180
- } else if (tsm.Node.isIndexSignatureDeclaration(member)) {
181
- const typeNode = member.getReturnTypeNode();
182
177
 
183
- if (typeNode !== undefined) {
184
- visitTypeNode(typeNode);
178
+ if (tsm.Node.isIndexSignatureDeclaration(member)) {
179
+ const typeNode = member.getReturnTypeNode();
180
+
181
+ return typeNode === undefined ? false : visitTypeNode(typeNode);
185
182
  }
186
- }
187
- }
183
+
184
+ return false;
185
+ })
186
+ .includes(true);
187
+ }
188
+
189
+ // Recursively visit child type nodes
190
+ if (tsm.Node.isUnionTypeNode(node) || tsm.Node.isIntersectionTypeNode(node)) {
191
+ return node
192
+ .getTypeNodes()
193
+ .map((typeNode) => visitTypeNode(typeNode))
194
+ .includes(true);
195
+ }
196
+
197
+ if (tsm.Node.isArrayTypeNode(node)) {
198
+ return visitTypeNode(node.getElementTypeNode());
199
+ }
200
+
201
+ if (tsm.Node.isTupleTypeNode(node)) {
202
+ return node
203
+ .getElements()
204
+ .map((element) => visitTypeNode(element))
205
+ .includes(true);
206
+ }
207
+
208
+ if (tsm.Node.isParenthesizedTypeNode(node)) {
209
+ return visitTypeNode(node.getTypeNode());
210
+ }
211
+
212
+ // Handles `readonly T[]`, `readonly [...]`, `keyof T`
213
+ if (tsm.Node.isTypeOperatorTypeNode(node)) {
214
+ return visitTypeNode(node.getTypeNode());
215
+ }
216
+
217
+ if (tsm.Node.isRestTypeNode(node)) {
218
+ return visitTypeNode(node.getTypeNode());
188
219
  }
220
+
221
+ if (tsm.Node.isNamedTupleMember(node)) {
222
+ return visitTypeNode(node.getTypeNode());
223
+ }
224
+
225
+ return false;
189
226
  };
190
227
 
191
228
  const isStringUnknownIndexSignature = (
@@ -198,7 +235,7 @@ const isStringUnknownIndexSignature = (
198
235
  return keyType.getText() === 'string' && returnType?.getText() === 'unknown';
199
236
  };
200
237
 
201
- const replaceIfRecordUnknown = (node: tsm.TypeReferenceNode): void => {
238
+ const replaceIfRecordUnknown = (node: tsm.TypeReferenceNode): boolean => {
202
239
  const typeName = node.getTypeName().getText();
203
240
 
204
241
  switch (typeName) {
@@ -212,9 +249,12 @@ const replaceIfRecordUnknown = (node: tsm.TypeReferenceNode): void => {
212
249
  typeArgs[1].getText() === 'unknown'
213
250
  ) {
214
251
  node.replaceWithText('UnknownRecord');
252
+
253
+ return true;
215
254
  }
216
255
 
217
- break;
256
+ // Recurse into type arguments (e.g. Record<string, Record<string, unknown>>)
257
+ return typeArgs.map((typeArg) => visitTypeNode(typeArg)).includes(true);
218
258
  }
219
259
  case 'Readonly': {
220
260
  // Check if it's Readonly<Record<string, unknown>>
@@ -235,16 +275,51 @@ const replaceIfRecordUnknown = (node: tsm.TypeReferenceNode): void => {
235
275
  innerTypeArgs[1].getText() === 'unknown'
236
276
  ) {
237
277
  node.replaceWithText('UnknownRecord');
278
+
279
+ return true;
238
280
  }
239
281
  }
240
282
  }
283
+
284
+ // Otherwise, recurse into the type argument
285
+ return visitTypeNode(innerType);
241
286
  }
242
287
 
243
- break;
288
+ return false;
244
289
  }
245
290
 
246
291
  default: {
247
- break;
292
+ // Recurse into type arguments for any other generic type
293
+ return node
294
+ .getTypeArguments()
295
+ .map((typeArg) => visitTypeNode(typeArg))
296
+ .includes(true);
248
297
  }
249
298
  }
250
299
  };
300
+
301
+ const ensureUnknownRecordImport = (sourceFile: tsm.SourceFile): void => {
302
+ const existingImport = sourceFile
303
+ .getImportDeclarations()
304
+ .find((decl) => decl.getModuleSpecifierValue() === UNKNOWN_RECORD_MODULE);
305
+
306
+ if (existingImport === undefined) {
307
+ sourceFile.insertImportDeclaration(0, {
308
+ moduleSpecifier: UNKNOWN_RECORD_MODULE,
309
+ namedImports: [{ name: UNKNOWN_RECORD_NAME, isTypeOnly: true }],
310
+ });
311
+
312
+ return;
313
+ }
314
+
315
+ const alreadyImported = existingImport
316
+ .getNamedImports()
317
+ .some((ni) => ni.getName() === UNKNOWN_RECORD_NAME);
318
+
319
+ if (alreadyImported) return;
320
+
321
+ existingImport.addNamedImport({
322
+ name: UNKNOWN_RECORD_NAME,
323
+ isTypeOnly: true,
324
+ });
325
+ };