ts-codemod-lib 2.2.1 → 2.2.3

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 (94) hide show
  1. package/dist/cmd/append-as-const.mjs +51 -48
  2. package/dist/cmd/append-as-const.mjs.map +1 -1
  3. package/dist/cmd/convert-interface-to-type.mjs +51 -48
  4. package/dist/cmd/convert-interface-to-type.mjs.map +1 -1
  5. package/dist/cmd/convert-to-readonly.mjs +51 -48
  6. package/dist/cmd/convert-to-readonly.mjs.map +1 -1
  7. package/dist/cmd/replace-any-with-unknown.mjs +51 -48
  8. package/dist/cmd/replace-any-with-unknown.mjs.map +1 -1
  9. package/dist/cmd/replace-record-with-unknown-record.mjs +51 -48
  10. package/dist/cmd/replace-record-with-unknown-record.mjs.map +1 -1
  11. package/dist/cmd/run-transformer-cli.d.mts.map +1 -1
  12. package/dist/cmd/run-transformer-cli.mjs +138 -127
  13. package/dist/cmd/run-transformer-cli.mjs.map +1 -1
  14. package/dist/functions/ast-transformers/append-as-const.d.mts.map +1 -1
  15. package/dist/functions/ast-transformers/append-as-const.mjs +205 -191
  16. package/dist/functions/ast-transformers/append-as-const.mjs.map +1 -1
  17. package/dist/functions/ast-transformers/convert-interface-to-type.mjs +62 -82
  18. package/dist/functions/ast-transformers/convert-interface-to-type.mjs.map +1 -1
  19. package/dist/functions/ast-transformers/convert-to-readonly.d.mts.map +1 -1
  20. package/dist/functions/ast-transformers/convert-to-readonly.mjs +742 -834
  21. package/dist/functions/ast-transformers/convert-to-readonly.mjs.map +1 -1
  22. package/dist/functions/ast-transformers/readonly-transformer-helpers/compare-union-types.d.mts.map +1 -1
  23. package/dist/functions/ast-transformers/readonly-transformer-helpers/compare-union-types.mjs +2 -14
  24. package/dist/functions/ast-transformers/readonly-transformer-helpers/compare-union-types.mjs.map +1 -1
  25. package/dist/functions/ast-transformers/readonly-transformer-helpers/constants.d.mts +2 -1
  26. package/dist/functions/ast-transformers/readonly-transformer-helpers/constants.d.mts.map +1 -1
  27. package/dist/functions/ast-transformers/readonly-transformer-helpers/constants.mjs +8 -8
  28. package/dist/functions/ast-transformers/readonly-transformer-helpers/constants.mjs.map +1 -1
  29. package/dist/functions/ast-transformers/readonly-transformer-helpers/group-union-types.d.mts.map +1 -1
  30. package/dist/functions/ast-transformers/readonly-transformer-helpers/group-union-types.mjs +51 -62
  31. package/dist/functions/ast-transformers/readonly-transformer-helpers/group-union-types.mjs.map +1 -1
  32. package/dist/functions/ast-transformers/readonly-transformer-helpers/readonly-context.d.mts +12 -12
  33. package/dist/functions/ast-transformers/readonly-transformer-helpers/readonly-context.d.mts.map +1 -1
  34. package/dist/functions/ast-transformers/readonly-transformer-helpers/readonly-context.mjs +16 -14
  35. package/dist/functions/ast-transformers/readonly-transformer-helpers/readonly-context.mjs.map +1 -1
  36. package/dist/functions/ast-transformers/replace-any-with-unknown.mjs +25 -27
  37. package/dist/functions/ast-transformers/replace-any-with-unknown.mjs.map +1 -1
  38. package/dist/functions/ast-transformers/replace-record-with-unknown-record.mjs +149 -208
  39. package/dist/functions/ast-transformers/replace-record-with-unknown-record.mjs.map +1 -1
  40. package/dist/functions/ast-transformers/transform-source-code.d.mts.map +1 -1
  41. package/dist/functions/ast-transformers/transform-source-code.mjs +70 -72
  42. package/dist/functions/ast-transformers/transform-source-code.mjs.map +1 -1
  43. package/dist/functions/constants/ignore-comment-text.d.mts +2 -2
  44. package/dist/functions/constants/ignore-comment-text.d.mts.map +1 -1
  45. package/dist/functions/constants/ignore-comment-text.mjs +8 -8
  46. package/dist/functions/constants/ignore-comment-text.mjs.map +1 -1
  47. package/dist/functions/functions/has-disable-next-line-comment.d.mts.map +1 -1
  48. package/dist/functions/functions/has-disable-next-line-comment.mjs +33 -65
  49. package/dist/functions/functions/has-disable-next-line-comment.mjs.map +1 -1
  50. package/dist/functions/functions/is-as-const-node.d.mts +1 -1
  51. package/dist/functions/functions/is-as-const-node.d.mts.map +1 -1
  52. package/dist/functions/functions/is-as-const-node.mjs +15 -23
  53. package/dist/functions/functions/is-as-const-node.mjs.map +1 -1
  54. package/dist/functions/functions/is-atomic-type-node.d.mts.map +1 -1
  55. package/dist/functions/functions/is-atomic-type-node.mjs +22 -36
  56. package/dist/functions/functions/is-atomic-type-node.mjs.map +1 -1
  57. package/dist/functions/functions/is-conditional-type-distribution-guard.d.mts.map +1 -1
  58. package/dist/functions/functions/is-conditional-type-distribution-guard.mjs +9 -33
  59. package/dist/functions/functions/is-conditional-type-distribution-guard.mjs.map +1 -1
  60. package/dist/functions/functions/is-readonly-node.d.mts.map +1 -1
  61. package/dist/functions/functions/is-readonly-node.mjs +11 -21
  62. package/dist/functions/functions/is-readonly-node.mjs.map +1 -1
  63. package/dist/functions/functions/is-spread-parameter-node.d.mts.map +1 -1
  64. package/dist/functions/functions/is-spread-parameter-node.mjs +2 -4
  65. package/dist/functions/functions/is-spread-parameter-node.mjs.map +1 -1
  66. package/dist/functions/functions/remove-parentheses.d.mts.map +1 -1
  67. package/dist/functions/functions/remove-parentheses.mjs +1 -4
  68. package/dist/functions/functions/remove-parentheses.mjs.map +1 -1
  69. package/dist/functions/functions/should-avoid-parentheses-for-readonly.d.mts.map +1 -1
  70. package/dist/functions/functions/should-avoid-parentheses-for-readonly.mjs +7 -24
  71. package/dist/functions/functions/should-avoid-parentheses-for-readonly.mjs.map +1 -1
  72. package/dist/functions/functions/unwrap-readonly.d.mts.map +1 -1
  73. package/dist/functions/functions/unwrap-readonly.mjs +1 -3
  74. package/dist/functions/functions/unwrap-readonly.mjs.map +1 -1
  75. package/dist/functions/functions/wrap-with-parentheses.d.mts.map +1 -1
  76. package/dist/functions/functions/wrap-with-parentheses.mjs +26 -51
  77. package/dist/functions/functions/wrap-with-parentheses.mjs.map +1 -1
  78. package/dist/functions/utils/replace-with-debug.d.mts.map +1 -1
  79. package/dist/functions/utils/replace-with-debug.mjs +2 -2
  80. package/dist/functions/utils/replace-with-debug.mjs.map +1 -1
  81. package/package.json +40 -29
  82. package/src/cmd/append-as-const.mts +3 -3
  83. package/src/cmd/convert-interface-to-type.mts +3 -3
  84. package/src/cmd/convert-to-readonly.mts +3 -3
  85. package/src/cmd/replace-any-with-unknown.mts +3 -3
  86. package/src/cmd/replace-record-with-unknown-record.mts +3 -3
  87. package/src/cmd/run-transformer-cli.mts +21 -17
  88. package/src/functions/ast-transformers/convert-interface-to-type.mts +1 -1
  89. package/src/functions/ast-transformers/convert-to-readonly.mts +64 -35
  90. package/src/functions/ast-transformers/convert-to-readonly.test.mts +67 -1
  91. package/src/functions/ast-transformers/readonly-transformer-helpers/readonly-context.mts +6 -6
  92. package/src/functions/ast-transformers/replace-record-with-unknown-record.mts +4 -4
  93. package/src/functions/functions/has-disable-next-line-comment.mts +5 -5
  94. package/src/functions/functions/wrap-with-parentheses.mts +17 -23
@@ -1 +1 @@
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
+ {"version":3,"file":"convert-to-readonly.mjs","sources":["../../../src/functions/ast-transformers/convert-to-readonly.mts"],"sourcesContent":["import {\n Arr,\n expectType,\n ISet,\n isString,\n mapNullable,\n match,\n pipe,\n} from 'ts-data-forge';\nimport * as tsm from 'ts-morph';\nimport { type DeepReadonly, type SafeUintWithSmallInt } from 'ts-type-forge';\nimport {\n hasDisableNextLineComment,\n isAtomicTypeNode,\n isConditionalTypeDistributionGuard,\n isReadonlyArrayTypeNode,\n isReadonlyTupleOrArrayTypeNode,\n isReadonlyTupleTypeNode,\n isReadonlyTypeReferenceNode,\n removeParentheses,\n shouldAvoidParenthesesForReadonly,\n unwrapReadonlyTypeArgText,\n wrapWithParentheses,\n type ReadonlyTypeReferenceNode,\n} from '../functions/index.mjs';\nimport { replaceNodeWithDebugPrint } from '../utils/index.mjs';\nimport {\n groupUnionIntersectionTypes,\n invalidDeepReadonlyTypeName,\n nextReadonlyContext,\n type ReadonlyContext,\n} from './readonly-transformer-helpers/index.mjs';\nimport { type TsMorphTransformer } from './types.mjs';\n\nconst TRANSFORMER_NAME = 'convert-to-readonly';\n\nexport const convertToReadonlyTransformer = (\n options?: ReadonlyTransformerOptions,\n): TsMorphTransformer => {\n if (\n options?.DeepReadonly?.typeName !== undefined &&\n invalidDeepReadonlyTypeName.has(options.DeepReadonly.typeName)\n ) {\n throw new Error(\n `Invalid DeepReadonly typeName \"${options.DeepReadonly.typeName}\" passed to convertToReadonlyType`,\n );\n }\n\n const DeepReadonlyTypeName =\n options?.DeepReadonly?.typeName ?? 'DeepReadonly';\n\n const ignorePrefixes = ISet.create(\n options?.ignorePrefixes ?? ['mut_', '#mut_', '_mut_', 'draft'],\n );\n\n const optionsInternal: ReadonlyTransformerOptionsInternal = {\n DeepReadonly: {\n typeName: DeepReadonlyTypeName,\n applyLevel: 'keep',\n },\n ignoreEmptyObjectTypes: options?.ignoreEmptyObjectTypes ?? true,\n ignoredPrefixes: ignorePrefixes,\n debugPrint: options?.debug === true ? console.debug : () => {},\n replaceNode:\n options?.debug === true\n ? replaceNodeWithDebugPrint\n : (node, newNodeText) => node.replaceWithText(newNodeText),\n } as const;\n\n return {\n name: TRANSFORMER_NAME,\n transform: (sourceAst) => {\n for (const node of sourceAst.getChildren()) {\n transformNode(node, initialReadonlyContext, optionsInternal);\n }\n },\n };\n};\n\nexport type ReadonlyTransformerOptions = DeepReadonly<{\n /**\n * Options for a type utility `DeepReadonly` that recursively applies readonly.\n */\n DeepReadonly?: {\n /**\n * The name of a type utility that recursively applies `Readonly`.\n *\n * @default \"DeepReadonly\"\n */\n typeName?: string;\n\n /**\n * Whether to apply `DeepReadonly` aggressively or remove `DeepReadonly` as\n * possible.\n *\n * If `applyLevel` is `\"applyAggressively\"`, it applies `DeepReadonly` to all\n * nested type literals without external type references. For example, the\n * following conversions are applied:\n *\n * - `number[][]` to be `DeepReadonly<number[][]>`\n * - `number[]` to be `readonly number[]`\n * - `<T>(arg: T[][]) => void` to be `<T>(arg: readonly (readonly T[])[]>) =>\n * void`\n *\n * If `applyLevel` is `\"removeAsPossible\"`, the following conversions are applied:\n *\n * - `DeepReadonly<number[][]>` to be `readonly (readonly number[])[]`\n * - `DeepReadonly<{ a: number[] }>` to be `Readonly<{ a: readonly number[]\n * }>`\n * - `<T>(arg: DeepReadonly<T[][]>) => void` to be `<T>(arg:\n * DeepReadonly<T[][]>) => void`\n *\n * @default 'keep'\n */\n // TODO\n // applyLevel?: 'applyAggressively' | 'keep' | 'removeAsPossible';\n };\n\n /**\n * Ignore the readonly conversion for `{}`.\n *\n * @default true\n */\n ignoreEmptyObjectTypes?: boolean;\n\n /**\n * A mute keywords to ignore the readonly conversion.\n *\n * (e.g. `\"mut_\"`)\n *\n * @default ['mut_', '#mut_', '_mut_', 'draft']\n */\n ignorePrefixes?: string[];\n\n debug?: boolean;\n}>;\n\ntype ReadonlyTransformerOptionsInternal = Readonly<{\n DeepReadonly: Readonly<{\n typeName: string;\n\n // removeAsPossible: 正規化後、 DeepReadonly の子ノードが typeLiteral かまたはその union or intersection であり、 それぞれの TypeLiteral がプリミティブ値のメンバーしか持たない場合。\n applyLevel: 'applyAggressively' | 'keep' | 'removeAsPossible';\n }>;\n\n ignoreEmptyObjectTypes: boolean;\n\n ignoredPrefixes: ISet<string>;\n\n debugPrint: (...args: readonly unknown[]) => void;\n replaceNode: (node: tsm.Node, newNodeText: string) => void;\n}>;\n\nconst initialReadonlyContext: ReadonlyContext = {\n type: 'none',\n indexedAccessDepth: 0,\n} as const;\n\nconst transformNode = (\n node: tsm.Node,\n readonlyContext: ReadonlyContext,\n options: ReadonlyTransformerOptionsInternal,\n): void => {\n if (\n tsm.Node.isTypeNode(node) ||\n node.isKind(tsm.SyntaxKind.InterfaceDeclaration) ||\n node.isKind(tsm.SyntaxKind.ClassDeclaration)\n ) {\n options.debugPrint();\n\n options.debugPrint(`transformNode [${node.getKindName()}] `);\n\n options.debugPrint(node.getFullText());\n\n options.debugPrint({ readonlyContext });\n\n options.debugPrint();\n }\n\n if (hasDisableNextLineComment(node, TRANSFORMER_NAME)) {\n options.debugPrint('skipped by disable-next-line comment');\n\n return;\n }\n\n // check for ignorePrefix\n if (node.isKind(tsm.SyntaxKind.VariableDeclaration)) {\n const nodeName = node.getName();\n\n if (options.ignoredPrefixes.some((p) => nodeName.startsWith(p))) {\n // Skip conversion for variable declarations with ignored prefixes\n // Example: const mut_foo: string[] = []; -> remains as is, without appending `as const`\n options.debugPrint('skipped variable declaration by ignorePrefixes');\n\n return;\n }\n\n // TODO: Support ignoredPrefixes in ArrayBindingPattern\n // if (ts.isArrayBindingPattern(nodeName)) {\n // // for (const [i, el] of nodeName.elements.entries())\n // }\n\n // TODO: Support ignoredPrefixes in ObjectBindingPattern\n // if (ts.isObjectBindingPattern(nodeName)) {\n // // for (const [i, el] of nodeName.elements.entries())\n // }\n }\n\n // Skip readonly conversion for function declarations with ignored prefixes\n // Example: function mut_foo() {} -> parameters and return types remain as is\n if (\n (node.isKind(tsm.SyntaxKind.FunctionDeclaration) ||\n node.isKind(tsm.SyntaxKind.FunctionExpression)) &&\n options.ignoredPrefixes.some((p) => node.getName()?.startsWith(p) === true)\n ) {\n return;\n }\n\n if (node.isKind(tsm.SyntaxKind.Parameter)) {\n const nodeName = node.getName();\n\n if (options.ignoredPrefixes.some((p) => nodeName.startsWith(p))) {\n // Skip readonly conversion for variable declarations with ignored prefixes\n // Example: const mut_foo: string[] = []; -> remains as is, without readonly conversion\n return;\n }\n\n // TODO: Support ignoredPrefixes in ArrayBindingPattern\n // if (ts.isArrayBindingPattern(nodeName)) {\n // }\n\n // TODO: Support ignoredPrefixes in ObjectBindingPattern\n // if (ts.isObjectBindingPattern(nodeName)) {\n // }\n }\n\n // Skip readonly conversion for type alias declarations with ignored prefixes\n // Example: type mut_Foo = number[]; -> remains as number[] without readonly\n if (\n node.isKind(tsm.SyntaxKind.TypeAliasDeclaration) &&\n options.ignoredPrefixes.some((p) => node.getName().startsWith(p))\n ) {\n return;\n }\n\n if (node.isKind(tsm.SyntaxKind.TypeReference)) {\n if (readonlyContext.type === 'readonly') {\n throw new Error(\n 'Invalid readonlyContext \"readonly\" passed to TypeReferenceNode',\n );\n }\n\n transformTypeReferenceNode(node, readonlyContext, options);\n\n return;\n }\n\n if (node.isKind(tsm.SyntaxKind.ArrayType)) {\n transformArrayTypeNode(node, readonlyContext, options);\n\n return;\n }\n\n if (node.isKind(tsm.SyntaxKind.TupleType)) {\n transformTupleTypeNode(node, readonlyContext, options);\n\n return;\n }\n\n if (node.isKind(tsm.SyntaxKind.RestType)) {\n transformRestTypeNode(node, readonlyContext, options);\n\n return;\n }\n\n if (node.isKind(tsm.SyntaxKind.TypeOperator)) {\n if (readonlyContext.type === 'readonly') {\n throw new Error(\n 'Invalid readonlyContext \"readonly\" passed to TypeOperatorNode',\n );\n }\n\n transformTypeOperatorNode(node, readonlyContext, options);\n\n return;\n }\n\n if (node.isKind(tsm.SyntaxKind.TypeLiteral)) {\n if (readonlyContext.type === 'readonly') {\n throw new Error(\n 'Invalid readonlyContext \"readonly\" passed to TypeLiteralNode',\n );\n }\n\n transformTypeLiteralNode(node, readonlyContext, options);\n\n return;\n }\n\n if (node.isKind(tsm.SyntaxKind.IndexedAccessType)) {\n transformIndexedAccessTypeNode(node, readonlyContext, options);\n\n return;\n }\n\n if (node.isKind(tsm.SyntaxKind.MappedType)) {\n if (readonlyContext.type === 'readonly') {\n throw new Error(\n 'Invalid readonlyContext \"readonly\" passed to MappedTypeNode',\n );\n }\n\n transformMappedTypeNode(node, readonlyContext, options);\n\n return;\n }\n\n if (node.isKind(tsm.SyntaxKind.InterfaceDeclaration)) {\n // Skip readonly conversion for interface declarations with ignored prefixes\n // Example: interface mut_Interface {...} -> properties remain without readonly\n if (options.ignoredPrefixes.some((p) => node.getName().startsWith(p))) {\n return;\n }\n\n transformInterfaceDeclarationNode(node, options);\n\n return;\n }\n\n if (node.isKind(tsm.SyntaxKind.ClassDeclaration)) {\n // Skip readonly conversion for class declarations with ignored prefixes\n // Example: class mut_Class {...} -> properties remain without readonly\n if (\n options.ignoredPrefixes.some(\n (p) => node.getName()?.startsWith(p) === true,\n )\n ) {\n return;\n }\n\n transformClassDeclarationNode(node, options);\n\n return;\n }\n\n if (node.isKind(tsm.SyntaxKind.IntersectionType)) {\n if (readonlyContext.type === 'readonly') {\n throw new Error(\n 'Invalid readonlyContext \"readonly\" passed to IntersectionTypeNode',\n );\n }\n\n transformIntersectionTypeNode(node, readonlyContext, options);\n\n return;\n }\n\n if (node.isKind(tsm.SyntaxKind.UnionType)) {\n if (readonlyContext.type === 'readonly') {\n throw new Error(\n 'Invalid readonlyContext \"readonly\" passed to UnionTypeNode',\n );\n }\n\n transformUnionTypeNode(node, readonlyContext, options);\n\n return;\n }\n\n if (node.isKind(tsm.SyntaxKind.ParenthesizedType)) {\n // NOTE: readonlyContext を不変のままバケツリレーさせるためにこのケースも必要\n transformParenthesizedTypeNode(node, readonlyContext, options);\n\n return;\n }\n\n for (const child of node.getChildren()) {\n transformNode(child, initialReadonlyContext, options);\n }\n};\n\n//\n// Transformer implementation for each node type\n//\n\n/**\n * - `tr(ReadonlyArray<E>) |-> readonly tr(E)[]`\n * - `tr(Readonly<Readonly<E>>) |-> Readonly<tr(E)>`\n * - `tr(DeepReadonly<Readonly<E>>) |-> DeepReadonly<tr(E)>`\n * - `tr(Readonly<number>) |-> number`\n * - `tr(Readonly<E[]>) |-> readonly tr(E)[]`\n * - `tr(Readonly<[E1, E2, E3]>) |-> readonly [tr(E1), tr(E2), tr(E3)]`\n * - `tr(Readonly<readonly E[]>) |-> readonly tr(E)[]`\n * - `tr(Readonly<readonly [E1, E2, E3]>) |-> readonly [tr(E1), tr(E2), tr(E3)]`\n * - `tr(Readonly<A | readonly E[]>) |-> Readonly<tr(A)> | readonly tr(E)[]>`\n */\nconst transformTypeReferenceNode = (\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n node: tsm.TypeReferenceNode,\n readonlyContext: Exclude<\n ReadonlyContext,\n Readonly<{ type: 'readonly'; indexedAccessDepth: SafeUintWithSmallInt }>\n >,\n options: ReadonlyTransformerOptionsInternal,\n): void => {\n const typeNameStr = node.getTypeName().getText();\n\n const typeArguments = node.getTypeArguments();\n\n // Array<T> / ReadonlyArray<T> to readonly T[]\n if (typeNameStr === 'Array' || typeNameStr === 'ReadonlyArray') {\n if (!Arr.isArrayOfLength(typeArguments, 1)) {\n throw new Error(\n `Unexpected number of type arguments \"${typeArguments.length}\" for ${typeNameStr}.`,\n );\n }\n\n // Recursive processing\n transformNode(\n typeArguments[0],\n {\n type: 'none',\n indexedAccessDepth: readonlyContext.indexedAccessDepth,\n },\n options,\n );\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const T = node.getTypeArguments()[0]!;\n\n options.replaceNode(\n node,\n readonlyContext.type === 'DeepReadonly'\n ? wrapWithParentheses(`${wrapWithParentheses(T.getFullText())}[]`)\n : wrapWithParentheses(\n `readonly ${wrapWithParentheses(T.getFullText())}[]`,\n ),\n );\n\n return;\n }\n\n // Set<T> to ReadonlySet<T>\n if (typeNameStr === 'Set') {\n if (!Arr.isArrayOfLength(typeArguments, 1)) {\n throw new Error(\n `Unexpected number of type arguments \"${typeArguments.length}\" for Set.`,\n );\n }\n\n // Recursive processing\n transformNode(\n typeArguments[0],\n {\n type: 'none',\n indexedAccessDepth: readonlyContext.indexedAccessDepth,\n },\n options,\n );\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const T = node.getTypeArguments()[0]!;\n\n options.replaceNode(node, `ReadonlySet<${T.getFullText()}>`);\n\n return;\n }\n\n // Map<T> to ReadonlyMap<T>\n if (typeNameStr === 'Map') {\n if (!Arr.isArrayOfLength(typeArguments, 2)) {\n throw new Error(\n `Unexpected number of type arguments \"${typeArguments.length}\" for Map.`,\n );\n }\n\n const nextReadonlyContextValue = nextReadonlyContext({\n currentReadonlyContext: readonlyContext,\n nextReadonlyContextType: 'none',\n indexedAccessDepthChange: 'keep',\n });\n\n // Recursive processing\n for (const t of typeArguments) {\n transformNode(t, nextReadonlyContextValue, options);\n }\n\n const [K, V] = node.getTypeArguments();\n\n options.replaceNode(\n node,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n `ReadonlyMap<${K!.getFullText()}, ${V!.getFullText()}>`,\n );\n\n return;\n }\n\n // remove unnecessary `Readonly` wrapper or convert to readonly operator\n if (typeNameStr === 'Readonly') {\n if (!Arr.isArrayOfLength(typeArguments, 1)) {\n throw new Error(\n `Unexpected number of type arguments \"${typeArguments.length}\" for Readonly.`,\n );\n }\n\n // Recursive processing\n transformNode(\n typeArguments[0],\n nextReadonlyContext({\n currentReadonlyContext: readonlyContext,\n nextReadonlyContextType: 'Readonly',\n indexedAccessDepthChange: 'keep',\n }),\n options,\n );\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const T = removeParentheses(node.getTypeArguments()[0]!);\n\n // DeepReadonly<Readonly<T>> -> DeepReadonly<T>\n if (readonlyContext.type === 'DeepReadonly') {\n options.replaceNode(node, T.getFullText());\n\n return;\n }\n\n // Readonly<{ ... }>[I] -> { ... }[I]\n if (readonlyContext.indexedAccessDepth > 0) {\n options.replaceNode(node, T.getFullText());\n\n return;\n }\n\n // Readonly<Readonly<T>> -> Readonly<T>\n if (isReadonlyTypeReferenceNode(T)) {\n options.replaceNode(node, T.getFullText());\n\n return;\n }\n\n // Readonly<number> -> number\n if (isAtomicTypeNode(T)) {\n options.replaceNode(node, T.getFullText());\n\n return;\n }\n\n // T = E[]\n // Readonly<E[]> -> readonly E[]\n //\n // T = [E1, E2, E3]\n // Readonly<[E1, E2, E3]> -> readonly [E1, E2, E3]\n if (\n T.isKind(tsm.SyntaxKind.ArrayType) ||\n T.isKind(tsm.SyntaxKind.TupleType)\n ) {\n const readonlyText = `readonly ${T.getFullText()}` as const;\n\n options.replaceNode(\n node,\n shouldAvoidParenthesesForReadonly(node)\n ? readonlyText\n : wrapWithParentheses(readonlyText),\n );\n\n return;\n }\n\n // T = readonly E[] or readonly [E1, E2, E3]\n // Readonly<readonly E[]> -> readonly E[]\n // Readonly<readonly [E1, E2, E3]> -> readonly [E1, E2, E3]\n if (isReadonlyTupleOrArrayTypeNode(T)) {\n options.replaceNode(node, T.getFullText());\n\n return;\n }\n\n // T = A | B | C\n // T = A & B & C\n if (\n T.isKind(tsm.SyntaxKind.UnionType) ||\n T.isKind(tsm.SyntaxKind.IntersectionType)\n ) {\n options.replaceNode(node, T.getFullText());\n\n return;\n }\n\n return;\n }\n\n // DeepReadonly\n if (typeNameStr === options.DeepReadonly.typeName) {\n if (!Arr.isArrayOfLength(typeArguments, 1)) {\n throw new Error(\n `Unexpected number of type arguments \"${typeArguments.length}\" for Readonly.`,\n );\n }\n\n // Recursive processing\n transformNode(\n typeArguments[0],\n nextReadonlyContext({\n currentReadonlyContext: readonlyContext,\n nextReadonlyContextType: 'DeepReadonly',\n }),\n options,\n );\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const T = node.getTypeArguments()[0]!;\n\n // DeepReadonly<DeepReadonly<T>> -> DeepReadonly<T>\n if (readonlyContext.type === 'DeepReadonly') {\n options.replaceNode(node, T.getFullText());\n\n return;\n }\n\n // Readonly<number> -> number\n if (isAtomicTypeNode(T)) {\n options.replaceNode(node, T.getFullText());\n\n return;\n }\n\n // T = P[]\n // DeepReadonly<P[]> -> readonly P[] (for primitive type arrays, convert to readonly P[] form)\n // DeepReadonly<O[]> -> DeepReadonly<O[]> (for object type arrays, keep as is to recursively apply Readonly)\n // DeepReadonly<P[][]> -> DeepReadonly<P[][]>\n if (\n T.isKind(tsm.SyntaxKind.ArrayType) &&\n isAtomicTypeNode(T.getElementTypeNode())\n ) {\n const readonlyText = `readonly ${T.getFullText()}` as const;\n\n options.replaceNode(\n node,\n shouldAvoidParenthesesForReadonly(node)\n ? readonlyText\n : wrapWithParentheses(readonlyText),\n );\n\n return;\n }\n\n // T = [P1, P2, P3]\n // DeepReadonly<[P1, P2, P3]> -> readonly [P1, P2, P3]\n if (\n T.isKind(tsm.SyntaxKind.TupleType) &&\n T.getElements().every(isAtomicTypeNode)\n ) {\n const readonlyText = `readonly ${T.getFullText()}` as const;\n\n options.replaceNode(\n node,\n shouldAvoidParenthesesForReadonly(node)\n ? readonlyText\n : wrapWithParentheses(readonlyText),\n );\n\n return;\n }\n\n return;\n }\n\n {\n const nextReadonlyContextValue = nextReadonlyContext({\n currentReadonlyContext: readonlyContext,\n nextReadonlyContextType: 'none',\n indexedAccessDepthChange: 'keep',\n });\n\n // Recursive processing\n for (const t of node.getTypeArguments()) {\n transformNode(t, nextReadonlyContextValue, options);\n }\n }\n};\n\n/** `tr(E[]) |-> tr(E)[]` */\nconst transformArrayTypeNode = (\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n node: tsm.ArrayTypeNode,\n readonlyContext: ReadonlyContext,\n options: ReadonlyTransformerOptionsInternal,\n): void => {\n // Recursive processing\n transformNode(\n node.getElementTypeNode(),\n nextReadonlyContext({\n currentReadonlyContext: readonlyContext,\n nextReadonlyContextType: 'none',\n indexedAccessDepthChange: 'decr',\n }),\n options,\n );\n\n switch (readonlyContext.type) {\n case 'DeepReadonly':\n case 'readonly':\n return; // remain tr(E)[] as is\n\n // Unnecessary `Readonly` wrapper will be remove in transformTypeReferenceNode\n case 'Readonly':\n case 'none':\n // Skip the `A[] extends B[] ? ...` union-distribution-guard idiom: adding\n // `readonly` there does not improve immutability and breaks the idiom.\n if (\n readonlyContext.indexedAccessDepth === 0 &&\n !isConditionalTypeDistributionGuard(node)\n ) {\n const readonlyText = `readonly ${node.getFullText()}` as const;\n\n options.replaceNode(\n node,\n shouldAvoidParenthesesForReadonly(node)\n ? readonlyText\n : wrapWithParentheses(readonlyText),\n );\n }\n }\n};\n\n/** `tr([E1, E2, E3])` |-> `[tr(E1), tr(E2), tr(E3)]` */\nconst transformTupleTypeNode = (\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n node: tsm.TupleTypeNode,\n readonlyContext: ReadonlyContext,\n options: ReadonlyTransformerOptionsInternal,\n): void => {\n // Recursive processing\n {\n const nextReadonlyContextValue = nextReadonlyContext({\n currentReadonlyContext: readonlyContext,\n nextReadonlyContextType: 'none',\n indexedAccessDepthChange: 'decr',\n });\n\n for (const el of node.getElements()) {\n if (el.isKind(tsm.SyntaxKind.NamedTupleMember)) {\n if (options.ignoredPrefixes.every((p) => !el.getName().startsWith(p))) {\n transformNode(el.getTypeNode(), nextReadonlyContextValue, options);\n }\n } else {\n transformNode(el, nextReadonlyContextValue, options);\n }\n }\n }\n\n switch (readonlyContext.type) {\n case 'DeepReadonly':\n case 'readonly':\n return; // remain tr(E)[] as is\n\n // Unnecessary `Readonly` wrapper will be remove in transformTypeReferenceNode\n case 'Readonly':\n case 'none':\n // Skip the `[A] extends [B] ? ...` union-distribution-guard idiom: adding\n // `readonly` there does not improve immutability and breaks the idiom.\n if (\n readonlyContext.indexedAccessDepth === 0 &&\n !isConditionalTypeDistributionGuard(node)\n ) {\n const readonlyText = `readonly ${node.getFullText()}` as const;\n\n options.replaceNode(\n node,\n shouldAvoidParenthesesForReadonly(node)\n ? readonlyText\n : wrapWithParentheses(readonlyText),\n );\n }\n }\n};\n\n/** `tr(\"...T\")` |-> `...tr(T)` */\nconst transformRestTypeNode = (\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n node: tsm.RestTypeNode,\n readonlyContext: ReadonlyContext,\n options: ReadonlyTransformerOptionsInternal,\n): void => {\n // Recursive processing\n transformNode(\n node.getTypeNode() /* = T */,\n nextReadonlyContext({\n currentReadonlyContext: readonlyContext,\n nextReadonlyContextType: 'none',\n indexedAccessDepthChange: 'decr',\n }),\n options,\n );\n\n const R = removeParentheses(node.getTypeNode());\n\n // `tr(\"...readonly E[]\") |-> ...tr(E)[]`\n // `tr(\"...readonly [E1, E2]\") |-> ...[tr(E1), tr(E2)]`\n if (isReadonlyArrayTypeNode(R) || isReadonlyTupleTypeNode(R)) {\n options.replaceNode(\n node,\n `...${R.getTypeNode().getFullText()}` /* = tr(E)[] or [tr(E1), tr(E2)] */,\n );\n }\n};\n\n/**\n * - `readonly T[][] |-> readonly (readonly T[])[]`\n * - `keyof { a: number[] } |-> keyof Readonly<{ a: readonly number[] }>`\n */\nconst transformTypeOperatorNode = (\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n node: tsm.TypeOperatorTypeNode,\n readonlyContext: Exclude<\n ReadonlyContext,\n Readonly<{ type: 'readonly'; indexedAccessDepth: SafeUintWithSmallInt }>\n >,\n options: ReadonlyTransformerOptionsInternal,\n): void => {\n // Recursive processing\n transformNode(\n node.getTypeNode(),\n nextReadonlyContext({\n currentReadonlyContext: readonlyContext,\n nextReadonlyContextType:\n node.getOperator() === tsm.SyntaxKind.ReadonlyKeyword\n ? 'readonly'\n : 'none',\n indexedAccessDepthChange: 'decr',\n }),\n options,\n );\n\n switch (readonlyContext.type) {\n // DeepReadonly<readonly E[]> -> DeepReadonly<E[]>\n case 'DeepReadonly':\n options.replaceNode(node, node.getTypeNode().getFullText());\n\n return;\n\n case 'Readonly':\n case 'none':\n if (readonlyContext.indexedAccessDepth > 0) {\n options.replaceNode(node, node.getTypeNode().getFullText());\n }\n }\n};\n\n// `{ readonly member: V } |-> Readonly<{ member: V }>`\nconst transformTypeLiteralNode = (\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n node: tsm.TypeLiteralNode,\n readonlyContext: Exclude<\n ReadonlyContext,\n Readonly<{ type: 'readonly'; indexedAccessDepth: SafeUintWithSmallInt }>\n >,\n options: ReadonlyTransformerOptionsInternal,\n): void => {\n if (\n options.ignoreEmptyObjectTypes &&\n Arr.isArrayOfLength(node.getMembers(), 0)\n ) {\n return;\n }\n\n // Recursive processing\n transformMembers(\n node.getMembers(),\n 'remove',\n nextReadonlyContext({\n currentReadonlyContext: readonlyContext,\n nextReadonlyContextType: 'none',\n indexedAccessDepthChange: 'decr',\n }),\n options,\n );\n\n switch (readonlyContext.type) {\n case 'DeepReadonly':\n case 'Readonly':\n // Don't wrap with Readonly if already readonly\n return;\n\n case 'none': {\n if (readonlyContext.indexedAccessDepth === 0) {\n // `{ readonly x: X, readonly y: Y } |-> Readonly<{ x: X, y: Y }>`\n options.replaceNode(node, `Readonly<${node.getFullText()}>`);\n }\n }\n }\n};\n\n/** `tr([A, B, C][I])` |-> `[tr(A), tr(B), tr(C)][I]` */\nconst transformIndexedAccessTypeNode = (\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n node: tsm.IndexedAccessTypeNode,\n readonlyContext: ReadonlyContext,\n options: ReadonlyTransformerOptionsInternal,\n): void => {\n // Recursive processing\n transformNode(\n node.getObjectTypeNode(),\n nextReadonlyContext({\n currentReadonlyContext: readonlyContext,\n nextReadonlyContextType: 'none',\n indexedAccessDepthChange: 'incr',\n }),\n options,\n );\n\n transformNode(\n node.getIndexTypeNode() /* = I */,\n nextReadonlyContext({\n currentReadonlyContext: readonlyContext,\n nextReadonlyContextType: 'Readonly',\n indexedAccessDepthChange: 'decr',\n }),\n options,\n );\n};\n\n/**\n * - `{ [key in Obj]: V }` -> `Readonly<{ [key in Obj]: V }>`\n * - `{ -readonly [key in Obj]: V }` -> `Readonly<{ [key in Obj]: V }>`\n * - `{ readonly [key in Obj]: V }` -> `Readonly<{ [key in Obj]: V }>`\n * - `{ +readonly [key in Obj]: V }` -> `Readonly<{ [key in Obj]: V }>`\n */\nconst transformMappedTypeNode = (\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n node: tsm.MappedTypeNode,\n readonlyContext: Exclude<\n ReadonlyContext,\n Readonly<{ type: 'readonly'; indexedAccessDepth: SafeUintWithSmallInt }>\n >,\n options: ReadonlyTransformerOptionsInternal,\n): void => {\n const typeNode = node.getTypeNode();\n\n if (typeNode !== undefined) {\n transformNode(\n typeNode,\n nextReadonlyContext({\n currentReadonlyContext: readonlyContext,\n nextReadonlyContextType: 'none',\n indexedAccessDepthChange: 'decr',\n }),\n options,\n );\n }\n\n const questionTokenText =\n pipe(node.getQuestionToken()?.getText()).mapNullable((t) =>\n t === '?' ? '?' : t === '-' ? '-?' : t === '+' ? '+?' : undefined,\n ).value ?? '';\n\n const result: string = pipe(\n // remove readonlyToken\n `{ [${node.getTypeParameter().getFullText()}]${questionTokenText}: ${node.getTypeNode()?.getFullText()} }`,\n ).map((mpt) =>\n match(readonlyContext.type, {\n // Don't wrap with Readonly if already readonly or unnecessary\n DeepReadonly: mpt,\n Readonly: mpt,\n none: readonlyContext.indexedAccessDepth > 0 ? mpt : `Readonly<${mpt}>`,\n }),\n ).value;\n\n options.replaceNode(node, result);\n};\n\n// Making interface members readonly\nconst transformInterfaceDeclarationNode = (\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n node: tsm.InterfaceDeclaration,\n options: ReadonlyTransformerOptionsInternal,\n): void => {\n for (const param of node.getTypeParameters()) {\n transformNode(param, initialReadonlyContext, options);\n }\n\n for (const n of node.getHeritageClauses()) {\n transformNode(n, initialReadonlyContext, options);\n }\n\n transformMembers(node.getMembers(), 'add', initialReadonlyContext, options);\n};\n\nconst transformClassDeclarationNode = (\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n node: tsm.ClassDeclaration,\n options: ReadonlyTransformerOptionsInternal,\n): void => {\n for (const n of node.getTypeParameters()) {\n transformNode(n, initialReadonlyContext, options);\n }\n\n for (const n of node.getHeritageClauses()) {\n transformNode(n, initialReadonlyContext, options);\n }\n\n for (const mb of node.getMembers()) {\n if (hasDisableNextLineComment(mb)) {\n options.debugPrint('skipped member by disable-next-line comment');\n\n continue;\n }\n\n if (mb.isKind(tsm.SyntaxKind.PropertyDeclaration)) {\n if (!checkIfPropertyNameShouldBeIgnored(mb.getNameNode(), options)) {\n mb.setIsReadonly(true);\n\n const type = mb.getTypeNode();\n\n if (type !== undefined) {\n transformNode(type, initialReadonlyContext, options);\n }\n\n const initializer = mb.getInitializer();\n\n if (initializer !== undefined) {\n transformNode(initializer, initialReadonlyContext, options);\n }\n }\n\n continue;\n }\n\n // MethodDeclaration, GetAccessorDeclaration, SetAccessorDeclaration\n // Check if method name has ignored prefix (e.g., mut_)\n if (\n (mb.isKind(tsm.SyntaxKind.MethodDeclaration) ||\n mb.isKind(tsm.SyntaxKind.GetAccessor) ||\n mb.isKind(tsm.SyntaxKind.SetAccessor)) &&\n checkIfPropertyNameShouldBeIgnored(mb.getNameNode(), options)\n ) {\n options.debugPrint('skipped method by ignored prefix');\n\n continue;\n }\n\n transformNode(mb, initialReadonlyContext, options);\n }\n\n for (const mb of node.getChildrenOfKind(tsm.SyntaxKind.IndexSignature)) {\n transformIndexSignatureDeclaration(\n mb,\n 'add',\n initialReadonlyContext,\n options,\n );\n }\n\n for (const ctor of node.getConstructors()) {\n for (const param of ctor.getParameters()) {\n transformConstructorParameter(param, options);\n }\n\n const body = ctor.getBody();\n\n if (body !== undefined) {\n transformNode(body, initialReadonlyContext, options);\n }\n }\n};\n\nconst transformConstructorParameter = (\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n param: tsm.ParameterDeclaration,\n options: ReadonlyTransformerOptionsInternal,\n): void => {\n if (hasDisableNextLineComment(param)) {\n options.debugPrint(\n 'skipped class constructor parameter by disable-next-line comment',\n );\n\n return;\n }\n\n const name = param.getName();\n\n if (options.ignoredPrefixes.some((p) => name.startsWith(p))) {\n return;\n }\n\n // Check if parameter is a property declaration (public/protected/private)\n const scope = param.getScope();\n\n // public -> public readonly\n // protected -> protected readonly\n // private -> private readonly\n if (\n scope === tsm.Scope.Public ||\n scope === tsm.Scope.Protected ||\n scope === tsm.Scope.Private\n ) {\n param.setIsReadonly(true);\n }\n\n const type = param.getTypeNode();\n\n if (type !== undefined) {\n transformNode(type, initialReadonlyContext, options);\n }\n};\n\n/**\n * - `tr(A & B) -> tr(A) & tr(B)`\n * - `tr(Readonly<A> & Readonly<B>) -> Readonly<tr(A) & tr(B)>`\n */\nconst transformIntersectionTypeNode = (\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n node: tsm.IntersectionTypeNode,\n readonlyContext: Exclude<\n ReadonlyContext,\n Readonly<{ type: 'readonly'; indexedAccessDepth: SafeUintWithSmallInt }>\n >,\n options: ReadonlyTransformerOptionsInternal,\n): void => {\n transformUnionOrIntersectionTypeNodeImpl(node, readonlyContext, options, '&');\n};\n\n/**\n * - `tr(A | B) |-> tr(A) | tr(B)`\n * - `tr(Readonly<A> | Readonly<B>) |-> Readonly<tr(A) | tr(B)>`\n */\nconst transformUnionTypeNode = (\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n node: tsm.UnionTypeNode,\n readonlyContext: Exclude<\n ReadonlyContext,\n Readonly<{ type: 'readonly'; indexedAccessDepth: SafeUintWithSmallInt }>\n >,\n options: ReadonlyTransformerOptionsInternal,\n): void => {\n transformUnionOrIntersectionTypeNodeImpl(node, readonlyContext, options, '|');\n};\n\nconst transformUnionOrIntersectionTypeNodeImpl = (\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n node: tsm.IntersectionTypeNode | tsm.UnionTypeNode,\n readonlyContext: Exclude<\n ReadonlyContext,\n Readonly<{ type: 'readonly'; indexedAccessDepth: SafeUintWithSmallInt }>\n >,\n options: ReadonlyTransformerOptionsInternal,\n operator: '&' | '|',\n): void => {\n const nextReadonlyContextValue = nextReadonlyContext({\n currentReadonlyContext: readonlyContext,\n nextReadonlyContextType: 'none',\n indexedAccessDepthChange: 'keep',\n });\n\n // Recursive processing\n for (const n of node.getTypeNodes() /* = [A, B] */) {\n transformNode(n, nextReadonlyContextValue, options);\n }\n\n const newTypes = node.getTypeNodes();\n\n const { primitives, arraysAndTuples, typeLiterals, others } =\n groupUnionIntersectionTypes(newTypes);\n\n options.debugPrint({ primitives, arraysAndTuples, typeLiterals, others });\n\n // Separate empty type literals from non-empty ones when ignoreEmptyObjectTypes is true\n const isEmptyTypeLiteral = (\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n n: tsm.TypeLiteralNode | ReadonlyTypeReferenceNode,\n ): boolean =>\n n.isKind(tsm.SyntaxKind.TypeLiteral) &&\n Arr.isArrayOfLength(n.getMembers(), 0);\n\n const nonEmptyTypeLiterals =\n typeLiterals === undefined\n ? undefined\n : options.ignoreEmptyObjectTypes\n ? typeLiterals.nodes.filter((n) => !isEmptyTypeLiteral(n))\n : typeLiterals.nodes;\n\n const emptyTypeLiterals =\n typeLiterals === undefined || !options.ignoreEmptyObjectTypes\n ? undefined\n : typeLiterals.nodes.filter((n) => isEmptyTypeLiteral(n));\n\n const typeLiteralsWrappedWithReadonly: readonly [] | readonly [string] =\n nonEmptyTypeLiterals === undefined ||\n Arr.isArrayOfLength(nonEmptyTypeLiterals, 0)\n ? ([] as const)\n : ([\n unionToString({\n types: nonEmptyTypeLiterals.map((n) =>\n isReadonlyTypeReferenceNode(n)\n ? // NOTE: Readonly<A & B> -> (A & B)\n unwrapReadonlyTypeArgText(n)\n : (n satisfies tsm.TypeLiteralNode).getFullText(),\n ),\n op: operator,\n wrapWithReadonly:\n nextReadonlyContextValue.type !== 'DeepReadonly' &&\n nextReadonlyContextValue.indexedAccessDepth === 0,\n }),\n ] as const);\n\n // Sort by first occurrence (preserving the original union order as much as possible)\n const sorted: readonly string[] = [\n mapNullable(\n primitives,\n (a) => [a.nodes.map((n) => n.getFullText()), a.firstPosition] as const,\n ),\n mapNullable(\n arraysAndTuples,\n (a) => [a.nodes.map((n) => n.getFullText()), a.firstPosition] as const,\n ),\n nonEmptyTypeLiterals !== undefined && Arr.isNonEmpty(nonEmptyTypeLiterals)\n ? mapNullable(\n typeLiterals,\n (a) => [typeLiteralsWrappedWithReadonly, a.firstPosition] as const,\n )\n : undefined,\n emptyTypeLiterals !== undefined && Arr.isNonEmpty(emptyTypeLiterals)\n ? mapNullable(\n typeLiterals,\n (a) =>\n [\n emptyTypeLiterals.map((n) => n.getFullText()),\n // Use a position after non-empty type literals if they exist\n a.firstPosition +\n (nonEmptyTypeLiterals !== undefined &&\n Arr.isNonEmpty(nonEmptyTypeLiterals)\n ? 0.5\n : 0),\n ] as const,\n )\n : undefined,\n mapNullable(\n others,\n (a) =>\n [\n a.nodes.map((n) => wrapWithParentheses(n.getFullText())),\n a.firstPosition,\n ] as const,\n ),\n ]\n .filter((x) => x !== undefined)\n .toSorted((a, b) => a[1] - b[1])\n .flatMap((a) => a[0]);\n\n // Readonly<number & { x: X } & { y: Y } & readonly E[]>\n // -> number & readonly E[] & Readonly<{ x: X } & { y: Y }>\n\n // Readonly<number | { x: X } | { y: Y } | readonly E[]>\n // -> number | readonly E[] | Readonly<{ x: X } | { y: Y }>\n // Readonly<number & { x: X } & { y: Y } & readonly E[]>\n // -> number & readonly E[] & Readonly<{ x: X } & { y: Y }>\n\n // Readonly<number | { x: X } | { y: Y } | readonly E[]>\n // -> number | readonly E[] | Readonly<{ x: X } | { y: Y }>\n //\n // NOTE: The result is wrapped in parentheses (via `unionToString`). This is\n // intentional and required for precedence safety: without it, a member such\n // as a function type (`() => T`), or a mix of `&` and `|`, or a `readonly`\n // operator would produce invalid syntax when this node is spliced back in.\n // Idempotency is guaranteed by `transformParenthesizedTypeNode`, which\n // collapses the redundant nesting (`((X))` -> `(X)`) this wrapping can create\n // — see the note there. That prevents the parentheses from growing without\n // bound when a union/intersection sits inside a `ParenthesizedType`.\n options.replaceNode(\n node,\n unionToString({ types: sorted, op: operator, wrapWithReadonly: false }),\n );\n};\n\nconst unionToString = ({\n types,\n op,\n wrapWithReadonly,\n}: Readonly<{\n types: readonly string[];\n op: '&' | '|';\n wrapWithReadonly: boolean | string;\n}>): string =>\n Arr.isArrayOfLength(types, 0)\n ? 'never'\n : Arr.isArrayOfLength(types, 1)\n ? wrapWithReadonly === false\n ? wrapWithParentheses(types[0])\n : (`${isString(wrapWithReadonly) ? wrapWithReadonly : 'Readonly'}<${types[0]}>` as const)\n : wrapWithReadonly === false\n ? wrapWithParentheses(types.join(` ${op} `))\n : (`${isString(wrapWithReadonly) ? wrapWithReadonly : 'Readonly'}<${types.join(` ${op} `)}>` as const);\n\n/** Convert ((T)) -> (T) recursively */\nconst transformParenthesizedTypeNode = (\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n node: tsm.ParenthesizedTypeNode,\n readonlyContext: ReadonlyContext,\n options: ReadonlyTransformerOptionsInternal,\n): void => {\n const typeNode = node.getTypeNode();\n\n if (typeNode.isKind(tsm.SyntaxKind.ParenthesizedType)) {\n // Recursive processing\n transformParenthesizedTypeNode(typeNode, readonlyContext, options);\n }\n\n transformNode(node.getTypeNode(), readonlyContext, options);\n\n const T = node.getTypeNode();\n\n if (\n // remove () if T is TypeReferenceNode\n // e.g. `(Readonly<A>) |-> Readonly<A>`\n T.isKind(tsm.SyntaxKind.TypeReference) ||\n // remove () if T is ArrayTypeNode\n // e.g. `(A[]) |-> A[]`\n T.isKind(tsm.SyntaxKind.ArrayType) ||\n // remove () if T is TupleTypeNode\n // e.g. `([A]) |-> [A]`\n T.isKind(tsm.SyntaxKind.TupleType) ||\n // remove () if T is PrimitiveTypeNode\n // e.g. `(number) |-> number`\n isAtomicTypeNode(T) ||\n // remove () if T is TypeLiteralNode\n // e.g. `({ member: V }) |-> { member: V }`\n T.isKind(tsm.SyntaxKind.TypeLiteral) ||\n // collapse redundant nested parentheses if T is itself a ParenthesizedType\n // e.g. `((X)) |-> (X)`\n //\n // This is what makes the transform terminate on nested parentheses. The\n // union/intersection handler defensively wraps its result in parentheses\n // for precedence safety, which turns `(A | B)` into `((A | B))` when the\n // union already sits inside a `ParenthesizedType`. Collapsing the redundant\n // outer layer here means each pass removes exactly the layer the wrapping\n // added, so the parentheses no longer grow without bound (which previously\n // overflowed the parser stack on inputs like `type T = (('a' | 'b'))`).\n T.isKind(tsm.SyntaxKind.ParenthesizedType)\n ) {\n options.replaceNode(node, T.getFullText());\n }\n};\n\n/**\n * `tr([\"member1: V1\", \"member2: V2\", \"member3: V3\"])`\n *\n * -> `[\"member1: tr(V1)\", \"member2: tr(V2)\", \"member3: tr(V3)\"]`\n */\nconst transformMembers = (\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n members: readonly tsm.TypeElementTypes[],\n readonlyModifier: 'add' | 'remove',\n readonlyContext: Extract<\n ReadonlyContext,\n Readonly<{\n type: 'DeepReadonly' | 'none';\n indexedAccessDepth: SafeUintWithSmallInt;\n }>\n >,\n options: ReadonlyTransformerOptionsInternal,\n): void => {\n for (const mb of members) {\n if (hasDisableNextLineComment(mb)) {\n options.debugPrint('skipped by member disable-next-line comment');\n\n continue;\n }\n\n if (mb.isKind(tsm.SyntaxKind.PropertySignature)) {\n if (!checkIfPropertyNameShouldBeIgnored(mb.getNameNode(), options)) {\n transformPropertySignature(\n mb,\n readonlyModifier,\n readonlyContext,\n options,\n );\n }\n\n continue;\n }\n\n if (mb.isKind(tsm.SyntaxKind.IndexSignature)) {\n transformIndexSignatureDeclaration(\n mb,\n readonlyModifier,\n readonlyContext,\n options,\n );\n\n continue;\n }\n\n transformNode(mb, readonlyContext, options);\n\n continue;\n }\n};\n\nconst transformPropertySignature = (\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n node: tsm.PropertySignature,\n readonlyModifier: 'add' | 'remove',\n readonlyContext: Extract<\n ReadonlyContext,\n Readonly<{\n type: 'DeepReadonly' | 'none';\n indexedAccessDepth: SafeUintWithSmallInt;\n }>\n >,\n options: ReadonlyTransformerOptionsInternal,\n): void => {\n if (\n readonlyContext.type === 'DeepReadonly' ||\n readonlyModifier === 'remove'\n ) {\n node.setIsReadonly(false);\n } else {\n node.setIsReadonly(true);\n }\n\n {\n const type = node.getTypeNode();\n\n if (type !== undefined) {\n transformNode(type, readonlyContext, options);\n }\n }\n};\n\nconst transformIndexSignatureDeclaration = (\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n node: tsm.IndexSignatureDeclaration,\n readonlyModifier: 'add' | 'remove',\n readonlyContext: Extract<\n ReadonlyContext,\n Readonly<{\n type: 'DeepReadonly' | 'none';\n indexedAccessDepth: SafeUintWithSmallInt;\n }>\n >,\n options: ReadonlyTransformerOptionsInternal,\n): void => {\n if (hasDisableNextLineComment(node, TRANSFORMER_NAME)) {\n options.debugPrint('skipped index signature by disable-next-line comment');\n\n return;\n }\n\n if (\n readonlyContext.type === 'DeepReadonly' ||\n readonlyModifier === 'remove'\n ) {\n // node.setIsReadonly(false);\n node.toggleModifier('readonly', false);\n } else {\n node.toggleModifier('readonly', true);\n // node.setIsReadonly(true);\n }\n\n {\n const key = node.getKeyTypeNode();\n\n transformNode(key, readonlyContext, options);\n }\n\n {\n const ret = node.getReturnTypeNode();\n\n if (ret !== undefined) {\n transformNode(ret, readonlyContext, options);\n }\n }\n};\n\nconst checkIfPropertyNameShouldBeIgnored = (\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n nameNode: tsm.PropertyName,\n options: ReadonlyTransformerOptionsInternal,\n): boolean => {\n expectType<typeof nameNode, tsm.PropertyName>('=');\n\n expectType<\n tsm.PropertyName,\n | tsm.NumericLiteral\n | tsm.BigIntLiteral\n | tsm.NoSubstitutionTemplateLiteral\n | tsm.Identifier\n | tsm.StringLiteral\n | tsm.PrivateIdentifier\n | tsm.ComputedPropertyName // [`mut_x`]: number[]\n >('=');\n\n return (\n // mut_x: number[]\n (nameNode.isKind(tsm.SyntaxKind.Identifier) &&\n pipe(nameNode.getText()).map((nm) =>\n options.ignoredPrefixes.some((p) => nm.startsWith(p)),\n ).value) ||\n // \"mut_x\": number[]\n (nameNode.isKind(tsm.SyntaxKind.StringLiteral) &&\n pipe(nameNode.getLiteralValue()).map((nm) =>\n options.ignoredPrefixes.some((p) => nm.startsWith(p)),\n ).value) ||\n // #memberName: number[] (class only)\n (nameNode.isKind(tsm.SyntaxKind.PrivateIdentifier) &&\n pipe(nameNode.getText()).map((nm) =>\n options.ignoredPrefixes.some((p) => nm.startsWith(`#${p}`)),\n ).value) ||\n // [`mut_x`]: number[]\n (nameNode.isKind(tsm.SyntaxKind.ComputedPropertyName) &&\n pipe(nameNode.getExpression()).map((exp) => {\n if (exp.isKind(tsm.SyntaxKind.StringLiteral)) {\n const nm = exp.getLiteralValue();\n\n return options.ignoredPrefixes.some((p) => nm.startsWith(p));\n }\n\n return false;\n }).value)\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"compare-union-types.d.mts","sourceRoot":"","sources":["../../../../src/functions/ast-transformers/readonly-transformer-helpers/compare-union-types.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAOhC,eAAO,MAAM,6BAA6B,GAExC,GAAG,GAAG,CAAC,QAAQ,EAEf,GAAG,GAAG,CAAC,QAAQ,KACd,MAAiC,CAAC"}
1
+ {"version":3,"file":"compare-union-types.d.mts","sourceRoot":"","sources":["../../../../src/functions/ast-transformers/readonly-transformer-helpers/compare-union-types.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAOhC,eAAO,MAAM,6BAA6B,MAErC,GAAG,CAAC,QAAQ,KAEZ,GAAG,CAAC,QAAQ,KACd,MAAiC,CAAC"}
@@ -3,20 +3,8 @@ import 'ts-data-forge';
3
3
  import { isAtomicTypeNode } from '../../functions/is-atomic-type-node.mjs';
4
4
  import { isReadonlyTupleOrArrayTypeNode } from '../../functions/is-readonly-node.mjs';
5
5
 
6
- const compareUnionIntersectionTypes = (
7
- // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
8
- a,
9
- // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
10
- b) => mapRank(a) - mapRank(b);
11
- const mapRank = (t) => isAtomicTypeNode(t)
12
- ? 0
13
- : t.isKind(tsm.SyntaxKind.ArrayType) ||
14
- t.isKind(tsm.SyntaxKind.TupleType) ||
15
- isReadonlyTupleOrArrayTypeNode(t)
16
- ? 1
17
- : t.isKind(tsm.SyntaxKind.TypeLiteral)
18
- ? 2
19
- : 3;
6
+ const compareUnionIntersectionTypes = (a, b) => mapRank(a) - mapRank(b);
7
+ const mapRank = (t) => isAtomicTypeNode(t) ? 0 : t.isKind(tsm.SyntaxKind.ArrayType) || t.isKind(tsm.SyntaxKind.TupleType) || isReadonlyTupleOrArrayTypeNode(t) ? 1 : t.isKind(tsm.SyntaxKind.TypeLiteral) ? 2 : 3;
20
8
 
21
9
  export { compareUnionIntersectionTypes };
22
10
  //# sourceMappingURL=compare-union-types.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"compare-union-types.mjs","sources":["../../../../src/functions/ast-transformers/readonly-transformer-helpers/compare-union-types.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAOO,MAAM,6BAA6B,GAAG;AAC3C;AACA,CAAe;AACf;AACA,CAAe,KACJ,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;AAEnC,MAAM,OAAO,GAAG,CAAC,CAA6B,KAC5C,gBAAgB,CAAC,CAAC;AAChB,MAAE;MACA,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;QAChC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;QAClC,8BAA8B,CAAC,CAAC;AAClC,UAAE;UACA,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW;AACnC,cAAE;cACA,CAAC;;;;"}
1
+ {"version":3,"file":"compare-union-types.mjs","sources":["../../../../src/functions/ast-transformers/readonly-transformer-helpers/compare-union-types.mts"],"sourcesContent":["import * as tsm from 'ts-morph';\nimport { type DeepReadonly } from 'ts-type-forge';\nimport {\n isAtomicTypeNode,\n isReadonlyTupleOrArrayTypeNode,\n} from '../../functions/index.mjs';\n\nexport const compareUnionIntersectionTypes = (\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n a: tsm.TypeNode,\n // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types\n b: tsm.TypeNode,\n): number => mapRank(a) - mapRank(b);\n\nconst mapRank = (t: DeepReadonly<tsm.TypeNode>): 0 | 1 | 2 | 3 =>\n isAtomicTypeNode(t)\n ? 0\n : t.isKind(tsm.SyntaxKind.ArrayType) ||\n t.isKind(tsm.SyntaxKind.TupleType) ||\n isReadonlyTupleOrArrayTypeNode(t)\n ? 1\n : t.isKind(tsm.SyntaxKind.TypeLiteral)\n ? 2\n : 3;\n"],"names":[],"mappings":";;;;;AAOO,MAAM,6BAAA,GAAgC,CAE3C,CAAA,EAEA,CAAA,KACW,QAAQ,CAAC,CAAA,GAAI,QAAQ,CAAC;AAEnC,MAAM,OAAA,GAAU,CAAC,CAAA,KACf,gBAAA,CAAiB,CAAC,CAAA,GACd,CAAA,GACA,CAAA,CAAE,MAAA,CAAO,GAAA,CAAI,UAAA,CAAW,SAAS,CAAA,IAC/B,CAAA,CAAE,MAAA,CAAO,GAAA,CAAI,UAAA,CAAW,SAAS,CAAA,IACjC,8BAAA,CAA+B,CAAC,CAAA,GAChC,CAAA,GACA,CAAA,CAAE,MAAA,CAAO,GAAA,CAAI,UAAA,CAAW,WAAW,IACjC,CAAA,GACA,CAAA;;;;"}
@@ -1,2 +1,3 @@
1
- export declare const invalidDeepReadonlyTypeName: any;
1
+ import { ISet } from 'ts-data-forge';
2
+ export declare const invalidDeepReadonlyTypeName: ISet<"Array" | "Map" | "Readonly" | "ReadonlyArray" | "ReadonlyMap" | "ReadonlySet" | "Set" | "readonly">;
2
3
  //# sourceMappingURL=constants.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../../../../src/functions/ast-transformers/readonly-transformer-helpers/constants.mts"],"names":[],"mappings":"AAEA,eAAO,MAAM,2BAA2B,KAStC,CAAC"}
1
+ {"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../../../../src/functions/ast-transformers/readonly-transformer-helpers/constants.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,eAAO,MAAM,2BAA2B,2GAStC,CAAC"}
@@ -1,14 +1,14 @@
1
1
  import { ISet } from 'ts-data-forge';
2
2
 
3
3
  const invalidDeepReadonlyTypeName = ISet.create([
4
- 'Readonly',
5
- 'readonly',
6
- 'ReadonlyArray',
7
- 'Array',
8
- 'Set',
9
- 'Map',
10
- 'ReadonlySet',
11
- 'ReadonlyMap',
4
+ "Readonly",
5
+ "readonly",
6
+ "ReadonlyArray",
7
+ "Array",
8
+ "Set",
9
+ "Map",
10
+ "ReadonlySet",
11
+ "ReadonlyMap"
12
12
  ]);
13
13
 
14
14
  export { invalidDeepReadonlyTypeName };
@@ -1 +1 @@
1
- {"version":3,"file":"constants.mjs","sources":["../../../../src/functions/ast-transformers/readonly-transformer-helpers/constants.mts"],"sourcesContent":[null],"names":[],"mappings":";;AAEO,MAAM,2BAA2B,GAAG,IAAI,CAAC,MAAM,CAAC;IACrD,UAAU;IACV,UAAU;IACV,eAAe;IACf,OAAO;IACP,KAAK;IACL,KAAK;IACL,aAAa;IACb,aAAa;AACd,CAAA;;;;"}
1
+ {"version":3,"file":"constants.mjs","sources":["../../../../src/functions/ast-transformers/readonly-transformer-helpers/constants.mts"],"sourcesContent":["import { ISet } from 'ts-data-forge';\n\nexport const invalidDeepReadonlyTypeName = ISet.create([\n 'Readonly',\n 'readonly',\n 'ReadonlyArray',\n 'Array',\n 'Set',\n 'Map',\n 'ReadonlySet',\n 'ReadonlyMap',\n]);\n"],"names":[],"mappings":";;AAEO,MAAM,2BAAA,GAA8B,KAAK,MAAA,CAAO;AAAA,EACrD,UAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"group-union-types.d.mts","sourceRoot":"","sources":["../../../../src/functions/ast-transformers/readonly-transformer-helpers/group-union-types.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC/B,MAAM,2BAA2B,CAAC;AAEnC,eAAO,MAAM,2BAA2B,GAEtC,OAAO,SAAS,GAAG,CAAC,QAAQ,EAAE,KAC7B,QAAQ,CAAC;IACV,UAAU,EACN,QAAQ,CAAC;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;KAClC,CAAC,GACF,SAAS,CAAC;IAEd,eAAe,EACX,QAAQ,CAAC;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,KAAK,EAAE,SAAS,CACZ,GAAG,CAAC,aAAa,GACjB,GAAG,CAAC,aAAa,GACjB,qBAAqB,GACrB,qBAAqB,CACxB,EAAE,CAAC;KACL,CAAC,GACF,SAAS,CAAC;IAEd,YAAY,EACR,QAAQ,CAAC;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,eAAe,GAAG,yBAAyB,CAAC,EAAE,CAAC;KACrE,CAAC,GACF,SAAS,CAAC;IAEd,MAAM,EACF,QAAQ,CAAC;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,KAAK,EAAE,SAAS,GAAG,CAAC,QAAQ,EAAE,CAAC;KAChC,CAAC,GACF,SAAS,CAAC;CACf,CAuGA,CAAC"}
1
+ {"version":3,"file":"group-union-types.d.mts","sourceRoot":"","sources":["../../../../src/functions/ast-transformers/readonly-transformer-helpers/group-union-types.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC/B,MAAM,2BAA2B,CAAC;AAEnC,eAAO,MAAM,2BAA2B,UAE/B,SAAS,GAAG,CAAC,QAAQ,EAAE,KAC7B,QAAQ,CAAC;IACV,UAAU,EACN,QAAQ,CAAC;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;KAClC,CAAC,GACF,SAAS,CAAC;IAEd,eAAe,EACX,QAAQ,CAAC;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,KAAK,EAAE,SAAS,CACZ,GAAG,CAAC,aAAa,GACjB,GAAG,CAAC,aAAa,GACjB,qBAAqB,GACrB,qBAAqB,CACxB,EAAE,CAAC;KACL,CAAC,GACF,SAAS,CAAC;IAEd,YAAY,EACR,QAAQ,CAAC;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,eAAe,GAAG,yBAAyB,CAAC,EAAE,CAAC;KACrE,CAAC,GACF,SAAS,CAAC;IAEd,MAAM,EACF,QAAQ,CAAC;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,KAAK,EAAE,SAAS,GAAG,CAAC,QAAQ,EAAE,CAAC;KAChC,CAAC,GACF,SAAS,CAAC;CACf,CAuGA,CAAC"}
@@ -4,69 +4,58 @@ import { isAtomicTypeNode } from '../../functions/is-atomic-type-node.mjs';
4
4
  import { isReadonlyTupleOrArrayTypeNode, isReadonlyTypeReferenceNode } from '../../functions/is-readonly-node.mjs';
5
5
  import { removeParentheses } from '../../functions/remove-parentheses.mjs';
6
6
 
7
- const groupUnionIntersectionTypes = (
8
- // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
9
- types) => {
10
- const mut_grouped = {
11
- primitives: undefined,
12
- arraysAndTuples: undefined,
13
- typeLiterals: undefined,
14
- others: undefined,
15
- };
16
- for (const [i, t_] of types.entries()) {
17
- const t = removeParentheses(t_);
18
- // isReadonlyTypeReferenceNode
19
- if (isAtomicTypeNode(t)) {
20
- if (mut_grouped.primitives === undefined) {
21
- mut_grouped.primitives = {
22
- firstPosition: i,
23
- nodes: [t],
24
- };
25
- }
26
- else {
27
- mut_grouped.primitives.nodes.push(t);
28
- }
29
- continue;
30
- }
31
- if (t.isKind(tsm.SyntaxKind.ArrayType) ||
32
- t.isKind(tsm.SyntaxKind.TupleType) ||
33
- isReadonlyTupleOrArrayTypeNode(t)) {
34
- if (mut_grouped.arraysAndTuples === undefined) {
35
- mut_grouped.arraysAndTuples = {
36
- firstPosition: i,
37
- nodes: [t],
38
- };
39
- }
40
- else {
41
- mut_grouped.arraysAndTuples.nodes.push(t);
42
- }
43
- continue;
44
- }
45
- if (t.isKind(tsm.SyntaxKind.TypeLiteral) ||
46
- isReadonlyTypeReferenceNode(t)) {
47
- if (mut_grouped.typeLiterals === undefined) {
48
- mut_grouped.typeLiterals = {
49
- firstPosition: i,
50
- nodes: [t],
51
- };
52
- }
53
- else {
54
- mut_grouped.typeLiterals.nodes.push(t);
55
- }
56
- continue;
57
- }
58
- // intersections, unions, etc.
59
- if (mut_grouped.others === undefined) {
60
- mut_grouped.others = {
61
- firstPosition: i,
62
- nodes: [t],
63
- };
64
- }
65
- else {
66
- mut_grouped.others.nodes.push(t);
67
- }
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;
68
26
  }
69
- return mut_grouped;
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);
56
+ }
57
+ }
58
+ return mut_grouped;
70
59
  };
71
60
 
72
61
  export { groupUnionIntersectionTypes };
@@ -1 +1 @@
1
- {"version":3,"file":"group-union-types.mjs","sources":["../../../../src/functions/ast-transformers/readonly-transformer-helpers/group-union-types.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAYO,MAAM,2BAA2B,GAAG;AACzC;AACA,KAA8B,KAkC3B;AACH,IAAA,MAAM,WAAW,GAiCb;AACF,QAAA,UAAU,EAAE,SAAS;AACrB,QAAA,eAAe,EAAE,SAAS;AAC1B,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,MAAM,EAAE,SAAS;KAClB;AAED,IAAA,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE;AACrC,QAAA,MAAM,CAAC,GAAG,iBAAiB,CAAC,EAAE,CAAC;;AAG/B,QAAA,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE;AACvB,YAAA,IAAI,WAAW,CAAC,UAAU,KAAK,SAAS,EAAE;gBACxC,WAAW,CAAC,UAAU,GAAG;AACvB,oBAAA,aAAa,EAAE,CAAC;oBAChB,KAAK,EAAE,CAAC,CAAC,CAAC;iBACF;YACZ;iBAAO;gBACL,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACtC;YAEA;QACF;QAEA,IACE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;YAClC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;AAClC,YAAA,8BAA8B,CAAC,CAAC,CAAC,EACjC;AACA,YAAA,IAAI,WAAW,CAAC,eAAe,KAAK,SAAS,EAAE;gBAC7C,WAAW,CAAC,eAAe,GAAG;AAC5B,oBAAA,aAAa,EAAE,CAAC;oBAChB,KAAK,EAAE,CAAC,CAAC,CAAC;iBACF;YACZ;iBAAO;gBACL,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3C;YAEA;QACF;QAEA,IACE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC;AACpC,YAAA,2BAA2B,CAAC,CAAC,CAAC,EAC9B;AACA,YAAA,IAAI,WAAW,CAAC,YAAY,KAAK,SAAS,EAAE;gBAC1C,WAAW,CAAC,YAAY,GAAG;AACzB,oBAAA,aAAa,EAAE,CAAC;oBAChB,KAAK,EAAE,CAAC,CAAC,CAAC;iBACF;YACZ;iBAAO;gBACL,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACxC;YAEA;QACF;;AAGA,QAAA,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE;YACpC,WAAW,CAAC,MAAM,GAAG;AACnB,gBAAA,aAAa,EAAE,CAAC;gBAChB,KAAK,EAAE,CAAC,CAAC,CAAC;aACF;QACZ;aAAO;YACL,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAClC;IACF;AAEA,IAAA,OAAO,WAAW;AACpB;;;;"}
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;;;;"}
@@ -12,9 +12,7 @@ import { type SafeUintWithSmallInt } from 'ts-type-forge';
12
12
  * IndexedAccessTypeNode.
13
13
  * - `"none"`: All other cases
14
14
  */
15
- export type ReadonlyContext = Readonly<{
16
- indexedAccessDepth: SafeUintWithSmallInt;
17
- } & ({
15
+ export type ReadonlyContext = Readonly<({
18
16
  type: 'DeepReadonly';
19
17
  } | {
20
18
  type: 'Readonly';
@@ -22,17 +20,19 @@ export type ReadonlyContext = Readonly<{
22
20
  type: 'readonly';
23
21
  } | {
24
22
  type: 'none';
25
- })>;
26
- export declare const nextReadonlyContext: <const Curr extends ReadonlyContext, const Next extends ReadonlyContext["type"]>({ currentReadonlyContext: curr, nextReadonlyContextType: next, indexedAccessDepthChange, }: Readonly<{
27
- currentReadonlyContext: Curr;
28
- } & ({
23
+ }) & {
24
+ indexedAccessDepth: SafeUintWithSmallInt;
25
+ }>;
26
+ export declare const nextReadonlyContext: <const Curr extends ReadonlyContext, const Next extends ReadonlyContext['type']>({ currentReadonlyContext: curr, nextReadonlyContextType: next, indexedAccessDepthChange, }: Readonly<({
29
27
  nextReadonlyContextType: Next;
30
- indexedAccessDepthChange: "decr" | "incr" | "keep" | "infinity";
28
+ indexedAccessDepthChange: 'decr' | 'incr' | 'keep' | 'infinity';
31
29
  } | {
32
- nextReadonlyContextType: Extract<ReadonlyContext["type"], "DeepReadonly">;
33
- indexedAccessDepthChange?: "infinity";
34
- })>) => Readonly<{
35
- type: Extract<ReadonlyContext["type"], "DeepReadonly"> | Next;
30
+ nextReadonlyContextType: Extract<ReadonlyContext['type'], 'DeepReadonly'>;
31
+ indexedAccessDepthChange?: 'infinity';
32
+ }) & {
33
+ currentReadonlyContext: Curr;
34
+ }>) => Readonly<{
35
+ type: Extract<ReadonlyContext['type'], 'DeepReadonly'> | Next;
36
36
  indexedAccessDepth: SafeUintWithSmallInt;
37
37
  }>;
38
38
  //# sourceMappingURL=readonly-context.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"readonly-context.d.mts","sourceRoot":"","sources":["../../../../src/functions/ast-transformers/readonly-transformer-helpers/readonly-context.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1D;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,CACpC;IAAE,kBAAkB,EAAE,oBAAoB,CAAA;CAAE,GAAG,CAC3C;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CACnB,CACF,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,KAAK,CAAC,IAAI,SAAS,eAAe,EAClC,KAAK,CAAC,IAAI,SAAS,eAAe,CAAC,MAAM,CAAC,EAC1C,4FAIC,QAAQ,CACT;IACE,sBAAsB,EAAE,IAAI,CAAC;CAC9B,GAAG,CACA;IACE,uBAAuB,EAAE,IAAI,CAAC;IAC9B,wBAAwB,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;CACjE,GACD;IACE,uBAAuB,EAAE,OAAO,CAC9B,eAAe,CAAC,MAAM,CAAC,EACvB,cAAc,CACf,CAAC;IACF,wBAAwB,CAAC,EAAE,UAAU,CAAC;CACvC,CACJ,CACF,KAAG,QAAQ,CAAC;IACX,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC;IAC9D,kBAAkB,EAAE,oBAAoB,CAAC;CAC1C,CAcgB,CAAC"}
1
+ {"version":3,"file":"readonly-context.d.mts","sourceRoot":"","sources":["../../../../src/functions/ast-transformers/readonly-transformer-helpers/readonly-context.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1D;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,CACpC,CACI;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CACnB,GAAG;IAAE,kBAAkB,EAAE,oBAAoB,CAAA;CAAE,CACjD,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,KAAK,CAAC,IAAI,SAAS,eAAe,EAClC,KAAK,CAAC,IAAI,SAAS,eAAe,CAAC,MAAM,CAAC,8FAKzC,QAAQ,CACT,CACI;IACE,uBAAuB,EAAE,IAAI,CAAC;IAC9B,wBAAwB,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;CACjE,GACD;IACE,uBAAuB,EAAE,OAAO,CAC9B,eAAe,CAAC,MAAM,CAAC,EACvB,cAAc,CACf,CAAC;IACF,wBAAwB,CAAC,EAAE,UAAU,CAAC;CACvC,CACJ,GAAG;IACF,sBAAsB,EAAE,IAAI,CAAC;CAC9B,CACF,KAAG,QAAQ,CAAC;IACX,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC;IAC9D,kBAAkB,EAAE,oBAAoB,CAAC;CAC1C,CAcgB,CAAC"}
@@ -1,19 +1,21 @@
1
1
  import { SafeUint, match } from 'ts-data-forge';
2
2
 
3
- const nextReadonlyContext = ({ currentReadonlyContext: curr, nextReadonlyContextType: next, indexedAccessDepthChange = 'infinity', }) => curr.type === 'DeepReadonly'
4
- ? {
5
- type: 'DeepReadonly',
6
- indexedAccessDepth: SafeUint.MAX_VALUE,
7
- }
8
- : {
9
- type: next,
10
- indexedAccessDepth: match(indexedAccessDepthChange, {
11
- decr: SafeUint.sub(curr.indexedAccessDepth, 1),
12
- keep: curr.indexedAccessDepth,
13
- incr: SafeUint.add(curr.indexedAccessDepth, 1),
14
- infinity: SafeUint.MAX_VALUE,
15
- }),
16
- };
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
+ };
17
19
 
18
20
  export { nextReadonlyContext };
19
21
  //# 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":[null],"names":[],"mappings":";;AAyBO,MAAM,mBAAmB,GAAG,CAGjC,EACA,sBAAsB,EAAE,IAAI,EAC5B,uBAAuB,EAAE,IAAI,EAC7B,wBAAwB,GAAG,UAAU,GAiBtC,KAIC,IAAI,CAAC,IAAI,KAAK;AACZ,MAAG;AACC,QAAA,IAAI,EAAE,cAAc;QACpB,kBAAkB,EAAE,QAAQ,CAAC,SAAS;AAC7B;AACb,MAAG;AACC,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,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;;;;;"}
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 } 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: Extract<\n ReadonlyContext['type'],\n 'DeepReadonly'\n >;\n indexedAccessDepthChange?: 'infinity';\n }\n ) & {\n currentReadonlyContext: Curr;\n }\n>): Readonly<{\n type: Extract<ReadonlyContext['type'], 'DeepReadonly'> | Next;\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;;;;"}