ts-codemod-lib 3.3.0 → 3.3.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 (69) hide show
  1. package/dist/entry-point.mjs +2 -24
  2. package/dist/entry-point.mjs.map +1 -1
  3. package/dist/functions/ast-transformers/append-as-const.mjs +330 -292
  4. package/dist/functions/ast-transformers/append-as-const.mjs.map +1 -1
  5. package/dist/functions/ast-transformers/convert-interface-to-type.mjs +85 -70
  6. package/dist/functions/ast-transformers/convert-interface-to-type.mjs.map +1 -1
  7. package/dist/functions/ast-transformers/convert-to-readonly.mjs +969 -840
  8. package/dist/functions/ast-transformers/convert-to-readonly.mjs.map +1 -1
  9. package/dist/functions/ast-transformers/enable-no-unchecked-indexed-access.mjs +276 -134
  10. package/dist/functions/ast-transformers/enable-no-unchecked-indexed-access.mjs.map +1 -1
  11. package/dist/functions/ast-transformers/index.mjs +10 -12
  12. package/dist/functions/ast-transformers/index.mjs.map +1 -1
  13. package/dist/functions/ast-transformers/readonly-transformer-helpers/compare-union-types.mjs +14 -7
  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/constants.mjs +12 -15
  16. package/dist/functions/ast-transformers/readonly-transformer-helpers/constants.mjs.map +1 -1
  17. package/dist/functions/ast-transformers/readonly-transformer-helpers/group-union-types.mjs +63 -58
  18. package/dist/functions/ast-transformers/readonly-transformer-helpers/group-union-types.mjs.map +1 -1
  19. package/dist/functions/ast-transformers/readonly-transformer-helpers/index.mjs +5 -5
  20. package/dist/functions/ast-transformers/readonly-transformer-helpers/index.mjs.map +1 -1
  21. package/dist/functions/ast-transformers/readonly-transformer-helpers/readonly-context.mjs +15 -20
  22. package/dist/functions/ast-transformers/readonly-transformer-helpers/readonly-context.mjs.map +1 -1
  23. package/dist/functions/ast-transformers/replace-any-with-unknown.mjs +30 -34
  24. package/dist/functions/ast-transformers/replace-any-with-unknown.mjs.map +1 -1
  25. package/dist/functions/ast-transformers/replace-record-with-unknown-record.mjs +197 -156
  26. package/dist/functions/ast-transformers/replace-record-with-unknown-record.mjs.map +1 -1
  27. package/dist/functions/ast-transformers/transform-source-code.mjs +74 -75
  28. package/dist/functions/ast-transformers/transform-source-code.mjs.map +1 -1
  29. package/dist/functions/ast-transformers/types.mjs +2 -2
  30. package/dist/functions/ast-transformers/types.mjs.map +1 -1
  31. package/dist/functions/constants/ignore-comment-text.mjs +11 -13
  32. package/dist/functions/constants/ignore-comment-text.mjs.map +1 -1
  33. package/dist/functions/constants/index.mjs +2 -2
  34. package/dist/functions/constants/index.mjs.map +1 -1
  35. package/dist/functions/functions/has-disable-next-line-comment.mjs +67 -38
  36. package/dist/functions/functions/has-disable-next-line-comment.mjs.map +1 -1
  37. package/dist/functions/functions/index.mjs +11 -11
  38. package/dist/functions/functions/index.mjs.map +1 -1
  39. package/dist/functions/functions/is-as-const-node.mjs +25 -20
  40. package/dist/functions/functions/is-as-const-node.mjs.map +1 -1
  41. package/dist/functions/functions/is-atomic-type-node.mjs +245 -25
  42. package/dist/functions/functions/is-atomic-type-node.mjs.map +1 -1
  43. package/dist/functions/functions/is-conditional-type-distribution-guard.mjs +34 -13
  44. package/dist/functions/functions/is-conditional-type-distribution-guard.mjs.map +1 -1
  45. package/dist/functions/functions/is-readonly-node.mjs +120 -14
  46. package/dist/functions/functions/is-readonly-node.mjs.map +1 -1
  47. package/dist/functions/functions/is-spread-parameter-node.mjs +5 -6
  48. package/dist/functions/functions/is-spread-parameter-node.mjs.map +1 -1
  49. package/dist/functions/functions/remove-parentheses.mjs +4 -4
  50. package/dist/functions/functions/remove-parentheses.mjs.map +1 -1
  51. package/dist/functions/functions/should-avoid-parentheses-for-readonly.mjs +23 -9
  52. package/dist/functions/functions/should-avoid-parentheses-for-readonly.mjs.map +1 -1
  53. package/dist/functions/functions/unwrap-readonly.mjs +3 -4
  54. package/dist/functions/functions/unwrap-readonly.mjs.map +1 -1
  55. package/dist/functions/functions/wrap-with-parentheses.d.mts.map +1 -1
  56. package/dist/functions/functions/wrap-with-parentheses.mjs +54 -29
  57. package/dist/functions/functions/wrap-with-parentheses.mjs.map +1 -1
  58. package/dist/functions/index.mjs +5 -24
  59. package/dist/functions/index.mjs.map +1 -1
  60. package/dist/functions/utils/index.mjs +2 -2
  61. package/dist/functions/utils/index.mjs.map +1 -1
  62. package/dist/functions/utils/replace-with-debug.mjs +4 -6
  63. package/dist/functions/utils/replace-with-debug.mjs.map +1 -1
  64. package/dist/index.mjs +2 -24
  65. package/dist/index.mjs.map +1 -1
  66. package/package.json +11 -12
  67. package/src/functions/ast-transformers/convert-to-readonly.test.mts +10 -1
  68. package/src/functions/ast-transformers/enable-no-unchecked-indexed-access.test.mts +76 -22
  69. package/src/functions/functions/wrap-with-parentheses.mts +5 -2
@@ -1,62 +1,67 @@
1
1
  import * as tsm from 'ts-morph';
2
- import 'ts-data-forge';
3
- import { isAtomicTypeNode } from '../../functions/is-atomic-type-node.mjs';
4
- import { isReadonlyTupleOrArrayTypeNode, isReadonlyTypeReferenceNode } from '../../functions/is-readonly-node.mjs';
5
- import { removeParentheses } from '../../functions/remove-parentheses.mjs';
2
+ import { isAtomicTypeNode, isReadonlyTupleOrArrayTypeNode, isReadonlyTypeReferenceNode, removeParentheses, } from '../../functions/index.mjs';
3
+ export const groupUnionIntersectionTypes = (
6
4
 
7
- const groupUnionIntersectionTypes = (types) => {
8
- const mut_grouped = {
9
- primitives: void 0,
10
- arraysAndTuples: void 0,
11
- typeLiterals: void 0,
12
- others: void 0
13
- };
14
- for (const [i, t_] of types.entries()) {
15
- const t = removeParentheses(t_);
16
- if (isAtomicTypeNode(t)) {
17
- if (mut_grouped.primitives === void 0) {
18
- mut_grouped.primitives = {
19
- firstPosition: i,
20
- nodes: [t]
21
- };
22
- } else {
23
- mut_grouped.primitives.nodes.push(t);
24
- }
25
- continue;
26
- }
27
- if (t.isKind(tsm.SyntaxKind.ArrayType) || t.isKind(tsm.SyntaxKind.TupleType) || isReadonlyTupleOrArrayTypeNode(t)) {
28
- if (mut_grouped.arraysAndTuples === void 0) {
29
- mut_grouped.arraysAndTuples = {
30
- firstPosition: i,
31
- nodes: [t]
32
- };
33
- } else {
34
- mut_grouped.arraysAndTuples.nodes.push(t);
35
- }
36
- continue;
37
- }
38
- if (t.isKind(tsm.SyntaxKind.TypeLiteral) || isReadonlyTypeReferenceNode(t)) {
39
- if (mut_grouped.typeLiterals === void 0) {
40
- mut_grouped.typeLiterals = {
41
- firstPosition: i,
42
- nodes: [t]
43
- };
44
- } else {
45
- mut_grouped.typeLiterals.nodes.push(t);
46
- }
47
- continue;
48
- }
49
- if (mut_grouped.others === void 0) {
50
- mut_grouped.others = {
51
- firstPosition: i,
52
- nodes: [t]
53
- };
54
- } else {
55
- mut_grouped.others.nodes.push(t);
5
+ types) => {
6
+ const mut_grouped = {
7
+ primitives: undefined,
8
+ arraysAndTuples: undefined,
9
+ typeLiterals: undefined,
10
+ others: undefined,
11
+ };
12
+ for (const [i, t_] of types.entries()) {
13
+ const t = removeParentheses(t_);
14
+
15
+ if (isAtomicTypeNode(t)) {
16
+ if (mut_grouped.primitives === undefined) {
17
+ mut_grouped.primitives = {
18
+ firstPosition: i,
19
+ nodes: [t],
20
+ };
21
+ }
22
+ else {
23
+ mut_grouped.primitives.nodes.push(t);
24
+ }
25
+ continue;
26
+ }
27
+ if (t.isKind(tsm.SyntaxKind.ArrayType) ||
28
+ t.isKind(tsm.SyntaxKind.TupleType) ||
29
+ isReadonlyTupleOrArrayTypeNode(t)) {
30
+ if (mut_grouped.arraysAndTuples === undefined) {
31
+ mut_grouped.arraysAndTuples = {
32
+ firstPosition: i,
33
+ nodes: [t],
34
+ };
35
+ }
36
+ else {
37
+ mut_grouped.arraysAndTuples.nodes.push(t);
38
+ }
39
+ continue;
40
+ }
41
+ if (t.isKind(tsm.SyntaxKind.TypeLiteral) ||
42
+ isReadonlyTypeReferenceNode(t)) {
43
+ if (mut_grouped.typeLiterals === undefined) {
44
+ mut_grouped.typeLiterals = {
45
+ firstPosition: i,
46
+ nodes: [t],
47
+ };
48
+ }
49
+ else {
50
+ mut_grouped.typeLiterals.nodes.push(t);
51
+ }
52
+ continue;
53
+ }
54
+
55
+ if (mut_grouped.others === undefined) {
56
+ mut_grouped.others = {
57
+ firstPosition: i,
58
+ nodes: [t],
59
+ };
60
+ }
61
+ else {
62
+ mut_grouped.others.nodes.push(t);
63
+ }
56
64
  }
57
- }
58
- return mut_grouped;
65
+ return mut_grouped;
59
66
  };
60
-
61
- export { groupUnionIntersectionTypes };
62
- //# sourceMappingURL=group-union-types.mjs.map
67
+ //# sourceMappingURL=group-union-types.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"group-union-types.mjs","sources":["../../../../src/functions/ast-transformers/readonly-transformer-helpers/group-union-types.mts"],"sourcesContent":["import * as tsm from 'ts-morph';\nimport {\n isAtomicTypeNode,\n isReadonlyTupleOrArrayTypeNode,\n isReadonlyTypeReferenceNode,\n removeParentheses,\n type AtomicTypeNode,\n type ReadonlyArrayTypeNode,\n type ReadonlyTupleTypeNode,\n type ReadonlyTypeReferenceNode,\n} from '../../functions/index.mjs';\n\nexport const groupUnionIntersectionTypes = (\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n types: readonly tsm.TypeNode[],\n): Readonly<{\n primitives:\n | Readonly<{\n firstPosition: number;\n nodes: readonly AtomicTypeNode[];\n }>\n | undefined;\n\n arraysAndTuples:\n | Readonly<{\n firstPosition: number;\n nodes: readonly (\n | tsm.ArrayTypeNode\n | tsm.TupleTypeNode\n | ReadonlyArrayTypeNode\n | ReadonlyTupleTypeNode\n )[];\n }>\n | undefined;\n\n typeLiterals:\n | Readonly<{\n firstPosition: number;\n nodes: readonly (tsm.TypeLiteralNode | ReadonlyTypeReferenceNode)[];\n }>\n | undefined;\n\n others:\n | Readonly<{\n firstPosition: number;\n nodes: readonly tsm.TypeNode[];\n }>\n | undefined;\n}> => {\n const mut_grouped: {\n primitives:\n | Readonly<{\n firstPosition: number;\n nodes: AtomicTypeNode[];\n }>\n | undefined;\n\n arraysAndTuples:\n | Readonly<{\n firstPosition: number;\n nodes: (\n | tsm.ArrayTypeNode\n | tsm.TupleTypeNode\n | ReadonlyArrayTypeNode\n | ReadonlyTupleTypeNode\n )[];\n }>\n | undefined;\n\n typeLiterals:\n | Readonly<{\n firstPosition: number;\n nodes: (tsm.TypeLiteralNode | ReadonlyTypeReferenceNode)[];\n }>\n | undefined;\n\n others:\n | Readonly<{\n firstPosition: number;\n nodes: tsm.TypeNode[];\n }>\n | undefined;\n } = {\n primitives: undefined,\n arraysAndTuples: undefined,\n typeLiterals: undefined,\n others: undefined,\n };\n\n for (const [i, t_] of types.entries()) {\n const t = removeParentheses(t_);\n\n // isReadonlyTypeReferenceNode\n if (isAtomicTypeNode(t)) {\n if (mut_grouped.primitives === undefined) {\n mut_grouped.primitives = {\n firstPosition: i,\n nodes: [t],\n } as const;\n } else {\n mut_grouped.primitives.nodes.push(t);\n }\n\n continue;\n }\n\n if (\n t.isKind(tsm.SyntaxKind.ArrayType) ||\n t.isKind(tsm.SyntaxKind.TupleType) ||\n isReadonlyTupleOrArrayTypeNode(t)\n ) {\n if (mut_grouped.arraysAndTuples === undefined) {\n mut_grouped.arraysAndTuples = {\n firstPosition: i,\n nodes: [t],\n } as const;\n } else {\n mut_grouped.arraysAndTuples.nodes.push(t);\n }\n\n continue;\n }\n\n if (\n t.isKind(tsm.SyntaxKind.TypeLiteral) ||\n isReadonlyTypeReferenceNode(t)\n ) {\n if (mut_grouped.typeLiterals === undefined) {\n mut_grouped.typeLiterals = {\n firstPosition: i,\n nodes: [t],\n } as const;\n } else {\n mut_grouped.typeLiterals.nodes.push(t);\n }\n\n continue;\n }\n\n // intersections, unions, etc.\n if (mut_grouped.others === undefined) {\n mut_grouped.others = {\n firstPosition: i,\n nodes: [t],\n } as const;\n } else {\n mut_grouped.others.nodes.push(t);\n }\n }\n\n return mut_grouped;\n};\n"],"names":[],"mappings":";;;;;;AAYO,MAAM,2BAAA,GAA8B,CAEzC,KAAA,KAkCI;AACJ,EAAA,MAAM,WAAA,GAiCF;AAAA,IACF,UAAA,EAAY,MAAA;AAAA,IACZ,eAAA,EAAiB,MAAA;AAAA,IACjB,YAAA,EAAc,MAAA;AAAA,IACd,MAAA,EAAQ;AAAA,GACV;AAEA,EAAA,KAAA,MAAW,CAAC,CAAA,EAAG,EAAE,CAAA,IAAK,KAAA,CAAM,SAAQ,EAAG;AACrC,IAAA,MAAM,CAAA,GAAI,kBAAkB,EAAE,CAAA;AAG9B,IAAA,IAAI,gBAAA,CAAiB,CAAC,CAAA,EAAG;AACvB,MAAA,IAAI,WAAA,CAAY,eAAe,MAAA,EAAW;AACxC,QAAA,WAAA,CAAY,UAAA,GAAa;AAAA,UACvB,aAAA,EAAe,CAAA;AAAA,UACf,KAAA,EAAO,CAAC,CAAC;AAAA,SACX;AAAA,MACF,CAAA,MAAO;AACL,QAAA,WAAA,CAAY,UAAA,CAAW,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA;AAAA,MACrC;AAEA,MAAA;AAAA,IACF;AAEA,IAAA,IACE,CAAA,CAAE,MAAA,CAAO,GAAA,CAAI,UAAA,CAAW,SAAS,CAAA,IACjC,CAAA,CAAE,MAAA,CAAO,GAAA,CAAI,UAAA,CAAW,SAAS,CAAA,IACjC,8BAAA,CAA+B,CAAC,CAAA,EAChC;AACA,MAAA,IAAI,WAAA,CAAY,oBAAoB,MAAA,EAAW;AAC7C,QAAA,WAAA,CAAY,eAAA,GAAkB;AAAA,UAC5B,aAAA,EAAe,CAAA;AAAA,UACf,KAAA,EAAO,CAAC,CAAC;AAAA,SACX;AAAA,MACF,CAAA,MAAO;AACL,QAAA,WAAA,CAAY,eAAA,CAAgB,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA;AAAA,MAC1C;AAEA,MAAA;AAAA,IACF;AAEA,IAAA,IACE,CAAA,CAAE,OAAO,GAAA,CAAI,UAAA,CAAW,WAAW,CAAA,IACnC,2BAAA,CAA4B,CAAC,CAAA,EAC7B;AACA,MAAA,IAAI,WAAA,CAAY,iBAAiB,MAAA,EAAW;AAC1C,QAAA,WAAA,CAAY,YAAA,GAAe;AAAA,UACzB,aAAA,EAAe,CAAA;AAAA,UACf,KAAA,EAAO,CAAC,CAAC;AAAA,SACX;AAAA,MACF,CAAA,MAAO;AACL,QAAA,WAAA,CAAY,YAAA,CAAa,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA;AAAA,MACvC;AAEA,MAAA;AAAA,IACF;AAGA,IAAA,IAAI,WAAA,CAAY,WAAW,MAAA,EAAW;AACpC,MAAA,WAAA,CAAY,MAAA,GAAS;AAAA,QACnB,aAAA,EAAe,CAAA;AAAA,QACf,KAAA,EAAO,CAAC,CAAC;AAAA,OACX;AAAA,IACF,CAAA,MAAO;AACL,MAAA,WAAA,CAAY,MAAA,CAAO,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA;AAAA,IACjC;AAAA,EACF;AAEA,EAAA,OAAO,WAAA;AACT;;;;"}
1
+ {"version":3,"file":"group-union-types.mjs","sourceRoot":"","sources":["../../../../src/functions/ast-transformers/readonly-transformer-helpers/group-union-types.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EACL,gBAAgB,EAChB,8BAA8B,EAC9B,2BAA2B,EAC3B,iBAAiB,GAKlB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,CAAC,MAAM,2BAA2B,GAAG;AACzC,8EAA8E;AAC9E,KAA8B,EAkC7B,EAAE;IACH,MAAM,WAAW,GAiCb;QACF,UAAU,EAAE,SAAS;QACrB,eAAe,EAAE,SAAS;QAC1B,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE,SAAS;KAClB,CAAC;IAEF,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAEhC,8BAA8B;QAC9B,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;YACxB,IAAI,WAAW,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACzC,WAAW,CAAC,UAAU,GAAG;oBACvB,aAAa,EAAE,CAAC;oBAChB,KAAK,EAAE,CAAC,CAAC,CAAC;iBACF,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvC,CAAC;YAED,SAAS;QACX,CAAC;QAED,IACE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;YAClC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;YAClC,8BAA8B,CAAC,CAAC,CAAC,EACjC,CAAC;YACD,IAAI,WAAW,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;gBAC9C,WAAW,CAAC,eAAe,GAAG;oBAC5B,aAAa,EAAE,CAAC;oBAChB,KAAK,EAAE,CAAC,CAAC,CAAC;iBACF,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC5C,CAAC;YAED,SAAS;QACX,CAAC;QAED,IACE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC;YACpC,2BAA2B,CAAC,CAAC,CAAC,EAC9B,CAAC;YACD,IAAI,WAAW,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC3C,WAAW,CAAC,YAAY,GAAG;oBACzB,aAAa,EAAE,CAAC;oBAChB,KAAK,EAAE,CAAC,CAAC,CAAC;iBACF,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzC,CAAC;YAED,SAAS;QACX,CAAC;QAED,8BAA8B;QAC9B,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACrC,WAAW,CAAC,MAAM,GAAG;gBACnB,aAAa,EAAE,CAAC;gBAChB,KAAK,EAAE,CAAC,CAAC,CAAC;aACF,CAAC;QACb,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
- export { compareUnionIntersectionTypes } from './compare-union-types.mjs';
2
- export { invalidDeepReadonlyTypeName } from './constants.mjs';
3
- export { groupUnionIntersectionTypes } from './group-union-types.mjs';
4
- export { nextReadonlyContext } from './readonly-context.mjs';
5
- //# sourceMappingURL=index.mjs.map
1
+ export * from './compare-union-types.mjs';
2
+ export * from './constants.mjs';
3
+ export * from './group-union-types.mjs';
4
+ export * from './readonly-context.mjs';
5
+ //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../../src/functions/ast-transformers/readonly-transformer-helpers/index.mts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC"}
@@ -1,21 +1,16 @@
1
1
  import { SafeUint, match } from 'ts-data-forge';
2
-
3
- const nextReadonlyContext = ({
4
- currentReadonlyContext: curr,
5
- nextReadonlyContextType: next,
6
- indexedAccessDepthChange = "infinity"
7
- }) => curr.type === "DeepReadonly" ? {
8
- type: "DeepReadonly",
9
- indexedAccessDepth: SafeUint.MAX_VALUE
10
- } : {
11
- type: next,
12
- indexedAccessDepth: match(indexedAccessDepthChange, {
13
- decr: SafeUint.sub(curr.indexedAccessDepth, 1),
14
- keep: curr.indexedAccessDepth,
15
- incr: SafeUint.add(curr.indexedAccessDepth, 1),
16
- infinity: SafeUint.MAX_VALUE
17
- })
18
- };
19
-
20
- export { nextReadonlyContext };
21
- //# sourceMappingURL=readonly-context.mjs.map
2
+ export const nextReadonlyContext = ({ currentReadonlyContext: curr, nextReadonlyContextType: next, indexedAccessDepthChange = 'infinity', }) => curr.type === 'DeepReadonly'
3
+ ? {
4
+ type: 'DeepReadonly',
5
+ indexedAccessDepth: SafeUint.MAX_VALUE,
6
+ }
7
+ : {
8
+ type: next,
9
+ indexedAccessDepth: match(indexedAccessDepthChange, {
10
+ decr: SafeUint.sub(curr.indexedAccessDepth, 1),
11
+ keep: curr.indexedAccessDepth,
12
+ incr: SafeUint.add(curr.indexedAccessDepth, 1),
13
+ infinity: SafeUint.MAX_VALUE,
14
+ }),
15
+ };
16
+ //# sourceMappingURL=readonly-context.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"readonly-context.mjs","sources":["../../../../src/functions/ast-transformers/readonly-transformer-helpers/readonly-context.mts"],"sourcesContent":["import { SafeUint, match } from 'ts-data-forge';\nimport { type SafeUintWithSmallInt, type StrictExtract } from 'ts-type-forge';\n\n/**\n * Controls whether to make a layer mutable during recursive transformation\n * calls, to standardize by omitting readonly from inner `number[]` in types\n * like `DeepReadonly<[string, number[]]>`.\n *\n * - `\"DeepReadonly\"`: Indicates that `node` is inside a type utility like\n * `DeepReadonly` that recursively applies readonly.\n * - `\"Readonly\"`: Indicates that `node` is directly under a `Readonly` type.\n * - `\"readonly\"`: Indicates that `node` is directly under a `readonly` operator.\n * - `\"IndexedAccessObjectType\"`: Indicates that `node` is directly under an\n * IndexedAccessTypeNode.\n * - `\"none\"`: All other cases\n */\nexport type ReadonlyContext = Readonly<\n (\n | { type: 'DeepReadonly' }\n | { type: 'Readonly' }\n | { type: 'readonly' }\n | { type: 'none' }\n ) & { indexedAccessDepth: SafeUintWithSmallInt }\n>;\n\nexport const nextReadonlyContext = <\n const Curr extends ReadonlyContext,\n const Next extends ReadonlyContext['type'],\n>({\n currentReadonlyContext: curr,\n nextReadonlyContextType: next,\n indexedAccessDepthChange = 'infinity',\n}: Readonly<\n (\n | {\n nextReadonlyContextType: Next;\n indexedAccessDepthChange: 'decr' | 'incr' | 'keep' | 'infinity';\n }\n | {\n nextReadonlyContextType: StrictExtract<\n ReadonlyContext['type'],\n 'DeepReadonly'\n >;\n indexedAccessDepthChange?: 'infinity';\n }\n ) & {\n currentReadonlyContext: Curr;\n }\n>): Readonly<{\n type: Next | StrictExtract<ReadonlyContext['type'], 'DeepReadonly'>;\n indexedAccessDepth: SafeUintWithSmallInt;\n}> =>\n curr.type === 'DeepReadonly'\n ? ({\n type: 'DeepReadonly',\n indexedAccessDepth: SafeUint.MAX_VALUE,\n } as const)\n : ({\n type: next,\n indexedAccessDepth: match(indexedAccessDepthChange, {\n decr: SafeUint.sub(curr.indexedAccessDepth, 1),\n keep: curr.indexedAccessDepth,\n incr: SafeUint.add(curr.indexedAccessDepth, 1),\n infinity: SafeUint.MAX_VALUE,\n }),\n } as const);\n"],"names":[],"mappings":";;AAyBO,MAAM,sBAAsB,CAGjC;AAAA,EACA,sBAAA,EAAwB,IAAA;AAAA,EACxB,uBAAA,EAAyB,IAAA;AAAA,EACzB,wBAAA,GAA2B;AAC7B,CAAA,KAoBE,IAAA,CAAK,SAAS,cAAA,GACT;AAAA,EACC,IAAA,EAAM,cAAA;AAAA,EACN,oBAAoB,QAAA,CAAS;AAC/B,CAAA,GACC;AAAA,EACC,IAAA,EAAM,IAAA;AAAA,EACN,kBAAA,EAAoB,MAAM,wBAAA,EAA0B;AAAA,IAClD,IAAA,EAAM,QAAA,CAAS,GAAA,CAAI,IAAA,CAAK,oBAAoB,CAAC,CAAA;AAAA,IAC7C,MAAM,IAAA,CAAK,kBAAA;AAAA,IACX,IAAA,EAAM,QAAA,CAAS,GAAA,CAAI,IAAA,CAAK,oBAAoB,CAAC,CAAA;AAAA,IAC7C,UAAU,QAAA,CAAS;AAAA,GACpB;AACH;;;;"}
1
+ {"version":3,"file":"readonly-context.mjs","sourceRoot":"","sources":["../../../../src/functions/ast-transformers/readonly-transformer-helpers/readonly-context.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAyBhD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAGjC,EACA,sBAAsB,EAAE,IAAI,EAC5B,uBAAuB,EAAE,IAAI,EAC7B,wBAAwB,GAAG,UAAU,GAiBtC,EAGE,EAAE,CACH,IAAI,CAAC,IAAI,KAAK,cAAc;IAC1B,CAAC,CAAE;QACC,IAAI,EAAE,cAAc;QACpB,kBAAkB,EAAE,QAAQ,CAAC,SAAS;KAC7B;IACb,CAAC,CAAE;QACC,IAAI,EAAE,IAAI;QACV,kBAAkB,EAAE,KAAK,CAAC,wBAAwB,EAAE;YAClD,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;YAC9C,IAAI,EAAE,IAAI,CAAC,kBAAkB;YAC7B,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;YAC9C,QAAQ,EAAE,QAAQ,CAAC,SAAS;SAC7B,CAAC;KACO,CAAC"}
@@ -1,39 +1,35 @@
1
1
  import * as tsm from 'ts-morph';
2
- import { hasDisableNextLineComment } from '../functions/has-disable-next-line-comment.mjs';
3
- import 'ts-data-forge';
4
- import '../functions/is-atomic-type-node.mjs';
5
- import { isSpreadParameterNode, isSpreadNamedTupleMemberNode } from '../functions/is-spread-parameter-node.mjs';
6
-
7
- const TRANSFORMER_NAME = "replace-any-with-unknown";
8
- const replaceAnyWithUnknownTransformer = () => ({
9
- name: TRANSFORMER_NAME,
10
- transform: (sourceAst) => {
11
- for (const node of sourceAst.getChildren()) {
12
- transformNode(node);
13
- }
14
- }
2
+ import { hasDisableNextLineComment, isSpreadNamedTupleMemberNode, isSpreadParameterNode, } from '../functions/index.mjs';
3
+ const TRANSFORMER_NAME = 'replace-any-with-unknown';
4
+ export const replaceAnyWithUnknownTransformer = () => ({
5
+ name: TRANSFORMER_NAME,
6
+ transform: (sourceAst) => {
7
+ for (const node of sourceAst.getChildren()) {
8
+ transformNode(node);
9
+ }
10
+ },
15
11
  });
16
12
  const transformNode = (node) => {
17
- if (hasDisableNextLineComment(node, TRANSFORMER_NAME)) {
18
- console.debug("skipped by disable-next-line comment");
19
- return;
20
- }
21
- if (node.isKind(tsm.SyntaxKind.AnyKeyword)) {
22
- const anyKeywordNode = node;
23
- const parent = anyKeywordNode.getParent();
24
- if (parent !== void 0 && // `(...args: any) => any` -> `(...args: unknown[]) => any`
25
- (isSpreadParameterNode(parent) || // `[name: E0, ...args: any)]` -> `[name: E0, ...args: unknown[]]`
26
- isSpreadNamedTupleMemberNode(parent))) {
27
- anyKeywordNode.replaceWithText("readonly unknown[]");
28
- return;
13
+ if (hasDisableNextLineComment(node, TRANSFORMER_NAME)) {
14
+ console.debug('skipped by disable-next-line comment');
15
+ return;
29
16
  }
30
- anyKeywordNode.replaceWithText("unknown");
31
- return;
32
- }
33
- for (const child of node.getChildren()) {
34
- transformNode(child);
35
- }
36
- };
17
+ if (node.isKind(tsm.SyntaxKind.AnyKeyword)) {
18
+ const anyKeywordNode = node;
19
+ const parent = anyKeywordNode.getParent();
20
+ if (parent !== undefined &&
21
+
22
+ (isSpreadParameterNode(parent) ||
37
23
 
38
- export { replaceAnyWithUnknownTransformer };
39
- //# sourceMappingURL=replace-any-with-unknown.mjs.map
24
+ isSpreadNamedTupleMemberNode(parent))) {
25
+ anyKeywordNode.replaceWithText('readonly unknown[]');
26
+ return;
27
+ }
28
+ anyKeywordNode.replaceWithText('unknown');
29
+ return;
30
+ }
31
+ for (const child of node.getChildren()) {
32
+ transformNode(child);
33
+ }
34
+ };
35
+ //# sourceMappingURL=replace-any-with-unknown.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"replace-any-with-unknown.mjs","sources":["../../../src/functions/ast-transformers/replace-any-with-unknown.mts"],"sourcesContent":["import * as tsm from 'ts-morph';\nimport {\n hasDisableNextLineComment,\n isSpreadNamedTupleMemberNode,\n isSpreadParameterNode,\n} from '../functions/index.mjs';\nimport { type TsMorphTransformer } from './types.mjs';\n\nconst TRANSFORMER_NAME = 'replace-any-with-unknown';\n\nexport const replaceAnyWithUnknownTransformer = (): TsMorphTransformer =>\n ({\n name: TRANSFORMER_NAME,\n transform: (sourceAst) => {\n for (const node of sourceAst.getChildren()) {\n transformNode(node);\n }\n },\n }) as const;\n\nconst transformNode = (node: tsm.Node): void => {\n if (hasDisableNextLineComment(node, TRANSFORMER_NAME)) {\n console.debug('skipped by disable-next-line comment');\n\n return;\n }\n\n if (node.isKind(tsm.SyntaxKind.AnyKeyword)) {\n const anyKeywordNode = node;\n\n const parent = anyKeywordNode.getParent();\n\n if (\n parent !== undefined &&\n // `(...args: any) => any` -> `(...args: unknown[]) => any`\n (isSpreadParameterNode(parent) ||\n // `[name: E0, ...args: any)]` -> `[name: E0, ...args: unknown[]]`\n isSpreadNamedTupleMemberNode(parent))\n ) {\n anyKeywordNode.replaceWithText('readonly unknown[]');\n\n return;\n }\n\n anyKeywordNode.replaceWithText('unknown');\n\n return;\n }\n\n for (const child of node.getChildren()) {\n transformNode(child);\n }\n};\n"],"names":[],"mappings":";;;;;;AAQA,MAAM,gBAAA,GAAmB,0BAAA;AAElB,MAAM,mCAAmC,OAC7C;AAAA,EACC,IAAA,EAAM,gBAAA;AAAA,EACN,SAAA,EAAW,CAAC,SAAA,KAAc;AACxB,IAAA,KAAA,MAAW,IAAA,IAAQ,SAAA,CAAU,WAAA,EAAY,EAAG;AAC1C,MAAA,aAAA,CAAc,IAAI,CAAA;AAAA,IACpB;AAAA,EACF;AACF,CAAA;AAEF,MAAM,aAAA,GAAgB,CAAC,IAAA,KAAyB;AAC9C,EAAA,IAAI,yBAAA,CAA0B,IAAA,EAAM,gBAAgB,CAAA,EAAG;AACrD,IAAA,OAAA,CAAQ,MAAM,sCAAsC,CAAA;AAEpD,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,UAAA,CAAW,UAAU,CAAA,EAAG;AAC1C,IAAA,MAAM,cAAA,GAAiB,IAAA;AAEvB,IAAA,MAAM,MAAA,GAAS,eAAe,SAAA,EAAU;AAExC,IAAA,IACE,MAAA,KAAW,MAAA;AAAA,KAEV,sBAAsB,MAAM,CAAA;AAAA,IAE3B,4BAAA,CAA6B,MAAM,CAAA,CAAA,EACrC;AACA,MAAA,cAAA,CAAe,gBAAgB,oBAAoB,CAAA;AAEnD,MAAA;AAAA,IACF;AAEA,IAAA,cAAA,CAAe,gBAAgB,SAAS,CAAA;AAExC,IAAA;AAAA,EACF;AAEA,EAAA,KAAA,MAAW,KAAA,IAAS,IAAA,CAAK,WAAA,EAAY,EAAG;AACtC,IAAA,aAAA,CAAc,KAAK,CAAA;AAAA,EACrB;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"replace-any-with-unknown.mjs","sourceRoot":"","sources":["../../../src/functions/ast-transformers/replace-any-with-unknown.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EACL,yBAAyB,EACzB,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAGhC,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;AAEpD,MAAM,CAAC,MAAM,gCAAgC,GAAG,GAAuB,EAAE,CACvE,CAAC;IACC,IAAI,EAAE,gBAAgB;IACtB,SAAS,EAAE,CAAC,SAAS,EAAE,EAAE;QACvB,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;YAC3C,aAAa,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;CACF,CAAU,CAAC;AAEd,MAAM,aAAa,GAAG,CAAC,IAAc,EAAQ,EAAE;IAC7C,IAAI,yBAAyB,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE,CAAC;QACtD,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAEtD,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3C,MAAM,cAAc,GAAG,IAAI,CAAC;QAE5B,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC;QAE1C,IACE,MAAM,KAAK,SAAS;YACpB,2DAA2D;YAC3D,CAAC,qBAAqB,CAAC,MAAM,CAAC;gBAC5B,kEAAkE;gBAClE,4BAA4B,CAAC,MAAM,CAAC,CAAC,EACvC,CAAC;YACD,cAAc,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;YAErD,OAAO;QACT,CAAC;QAED,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAE1C,OAAO;IACT,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACvC,aAAa,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC,CAAC"}