ts-codemod-lib 3.4.0 → 3.4.2

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 (50) hide show
  1. package/README.md +4 -4
  2. package/dist/functions/ast-transformers/append-as-const.d.mts +2 -2
  3. package/dist/functions/ast-transformers/append-as-const.d.mts.map +1 -1
  4. package/dist/functions/ast-transformers/append-as-const.mjs +13 -3
  5. package/dist/functions/ast-transformers/append-as-const.mjs.map +1 -1
  6. package/dist/functions/ast-transformers/convert-interface-to-type.d.mts +1 -1
  7. package/dist/functions/ast-transformers/convert-interface-to-type.d.mts.map +1 -1
  8. package/dist/functions/ast-transformers/convert-to-readonly.d.mts +2 -2
  9. package/dist/functions/ast-transformers/convert-to-readonly.d.mts.map +1 -1
  10. package/dist/functions/ast-transformers/convert-to-readonly.mjs +157 -33
  11. package/dist/functions/ast-transformers/convert-to-readonly.mjs.map +1 -1
  12. package/dist/functions/ast-transformers/enable-no-unchecked-indexed-access.d.mts +2 -2
  13. package/dist/functions/ast-transformers/enable-no-unchecked-indexed-access.d.mts.map +1 -1
  14. package/dist/functions/ast-transformers/enable-no-unchecked-indexed-access.mjs +24 -6
  15. package/dist/functions/ast-transformers/enable-no-unchecked-indexed-access.mjs.map +1 -1
  16. package/dist/functions/ast-transformers/readonly-transformer-helpers/group-union-types.d.mts +32 -2
  17. package/dist/functions/ast-transformers/readonly-transformer-helpers/group-union-types.d.mts.map +1 -1
  18. package/dist/functions/ast-transformers/readonly-transformer-helpers/group-union-types.mjs +88 -2
  19. package/dist/functions/ast-transformers/readonly-transformer-helpers/group-union-types.mjs.map +1 -1
  20. package/dist/functions/ast-transformers/readonly-transformer-helpers/readonly-context.d.mts +1 -1
  21. package/dist/functions/ast-transformers/readonly-transformer-helpers/readonly-context.d.mts.map +1 -1
  22. package/dist/functions/ast-transformers/replace-any-with-unknown.d.mts +1 -1
  23. package/dist/functions/ast-transformers/replace-any-with-unknown.d.mts.map +1 -1
  24. package/dist/functions/ast-transformers/replace-record-with-unknown-record.d.mts +1 -1
  25. package/dist/functions/ast-transformers/replace-record-with-unknown-record.d.mts.map +1 -1
  26. package/dist/functions/ast-transformers/transform-source-code.d.mts +1 -1
  27. package/dist/functions/ast-transformers/transform-source-code.d.mts.map +1 -1
  28. package/dist/functions/functions/is-atomic-type-node.d.mts +1 -1
  29. package/dist/functions/functions/is-atomic-type-node.d.mts.map +1 -1
  30. package/dist/functions/functions/is-readonly-node.d.mts +1 -1
  31. package/dist/functions/functions/is-readonly-node.d.mts.map +1 -1
  32. package/dist/functions/functions/unwrap-readonly.d.mts +1 -1
  33. package/dist/functions/functions/unwrap-readonly.d.mts.map +1 -1
  34. package/package.json +14 -14
  35. package/src/functions/ast-transformers/append-as-const.mts +21 -5
  36. package/src/functions/ast-transformers/append-as-const.test.mts +24 -0
  37. package/src/functions/ast-transformers/convert-interface-to-type.mts +1 -1
  38. package/src/functions/ast-transformers/convert-to-readonly.mts +249 -52
  39. package/src/functions/ast-transformers/convert-to-readonly.test.mts +421 -7
  40. package/src/functions/ast-transformers/enable-no-unchecked-indexed-access.mts +30 -8
  41. package/src/functions/ast-transformers/enable-no-unchecked-indexed-access.test.mts +111 -0
  42. package/src/functions/ast-transformers/readonly-transformer-helpers/compare-union-types.mts +1 -1
  43. package/src/functions/ast-transformers/readonly-transformer-helpers/group-union-types.mts +124 -3
  44. package/src/functions/ast-transformers/readonly-transformer-helpers/readonly-context.mts +1 -1
  45. package/src/functions/ast-transformers/replace-any-with-unknown.mts +1 -1
  46. package/src/functions/ast-transformers/replace-record-with-unknown-record.mts +1 -1
  47. package/src/functions/ast-transformers/transform-source-code.mts +1 -1
  48. package/src/functions/functions/is-atomic-type-node.mts +1 -1
  49. package/src/functions/functions/is-readonly-node.mts +1 -1
  50. package/src/functions/functions/unwrap-readonly.mts +1 -1
package/README.md CHANGED
@@ -383,12 +383,12 @@ const transformedCode = transformSourceCode(originalCode, isTsx, [
383
383
  const expected = dedent`
384
384
  import { type UnknownRecord } from "ts-type-forge";
385
385
 
386
- export type A = Readonly< {
386
+ export type A = Readonly<{
387
387
  name?: string;
388
- point: (readonly [x: number, y: number, z?: number]);
389
- meta: Readonly< {
388
+ point: (readonly [x: number, y: number, z?: number]);
389
+ meta: Readonly<{
390
390
  description?: string;
391
- tags: (readonly string[]);
391
+ tags: (readonly string[]);
392
392
  attributes: UnknownRecord;
393
393
  data?: unknown;
394
394
  }>;
@@ -1,5 +1,5 @@
1
- import { type DeepReadonly } from 'ts-type-forge';
2
- import { type TsMorphTransformer } from './types.mjs';
1
+ import type { DeepReadonly } from 'ts-type-forge';
2
+ import type { TsMorphTransformer } from './types.mjs';
3
3
  export declare const appendAsConstTransformer: (options?: AppendAsConstTransformerOptions) => TsMorphTransformer;
4
4
  export type AppendAsConstTransformerOptions = DeepReadonly<{
5
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"append-as-const.d.mts","sourceRoot":"","sources":["../../../src/functions/ast-transformers/append-as-const.mts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAMlD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAItD,eAAO,MAAM,wBAAwB,aACzB,+BAA+B,KACxC,kBAuCF,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG,YAAY,CAAC;IACzD;;OAEG;IACH,UAAU,CAAC,EAAE,KAAK,GAAG,qBAAqB,CAAC;IAE3C;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B;;;;;;;;;;;;;;OAcG;IACH,mCAAmC,CAAC,EAAE,OAAO,CAAC;IAE9C,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC,CAAC"}
1
+ {"version":3,"file":"append-as-const.d.mts","sourceRoot":"","sources":["../../../src/functions/ast-transformers/append-as-const.mts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAMlD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAItD,eAAO,MAAM,wBAAwB,aACzB,+BAA+B,KACxC,kBAuCF,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG,YAAY,CAAC;IACzD;;OAEG;IACH,UAAU,CAAC,EAAE,KAAK,GAAG,qBAAqB,CAAC;IAE3C;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B;;;;;;;;;;;;;;OAcG;IACH,mCAAmC,CAAC,EAAE,OAAO,CAAC;IAE9C,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC,CAAC"}
@@ -233,7 +233,7 @@ sourceAst, options) => {
233
233
  }
234
234
  const args = call.getArguments();
235
235
 
236
- if (!args.some(isAsConstNode)) {
236
+ if (args.every((arg) => !isAsConstNode(skipParenthesizedExpressions(arg)))) {
237
237
  continue;
238
238
  }
239
239
  if (hasDisableNextLineComment(call, TRANSFORMER_NAME)) {
@@ -267,7 +267,12 @@ callTarget, options) => {
267
267
  if (argumentIndex >= mappableArgCount) {
268
268
  return;
269
269
  }
270
- if (argument.wasForgotten() || !isAsConstNode(argument)) {
270
+ if (argument.wasForgotten()) {
271
+ continue;
272
+ }
273
+
274
+ const asConst = skipParenthesizedExpressions(argument);
275
+ if (!isAsConstNode(asConst)) {
271
276
  continue;
272
277
  }
273
278
  if (hasDisableNextLineComment(argument, TRANSFORMER_NAME)) {
@@ -279,10 +284,15 @@ callTarget, options) => {
279
284
  continue;
280
285
  }
281
286
  options.debugPrint('removing redundant as const in const type parameter argument', argument.getText());
282
- options.replaceNode(argument, argument.getExpression().getText());
287
+
288
+ options.replaceNode(argument, asConst.getExpression().getText());
283
289
  }
284
290
  };
285
291
 
292
+ const skipParenthesizedExpressions = (node) => tsm.Node.isParenthesizedExpression(node)
293
+ ? skipParenthesizedExpressions(node.getExpression())
294
+ : node;
295
+
286
296
 
287
297
 
288
298
 
@@ -1 +1 @@
1
- {"version":3,"file":"append-as-const.mjs","sourceRoot":"","sources":["../../../src/functions/ast-transformers/append-as-const.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"append-as-const.mjs","sourceRoot":"","sources":["../../../src/functions/ast-transformers/append-as-const.mts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type TsMorphTransformer } from './types.mjs';
1
+ import type { TsMorphTransformer } from './types.mjs';
2
2
  /**
3
3
  * interface による型定義を type による型定義に変換する。
4
4
  * @typescript-eslint/consistent-type-definitions: ["error", "type"] と同等の動作
@@ -1 +1 @@
1
- {"version":3,"file":"convert-interface-to-type.d.mts","sourceRoot":"","sources":["../../../src/functions/ast-transformers/convert-interface-to-type.mts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAItD;;;GAGG;AACH,eAAO,MAAM,iCAAiC,QAAO,kBAqHxC,CAAC"}
1
+ {"version":3,"file":"convert-interface-to-type.d.mts","sourceRoot":"","sources":["../../../src/functions/ast-transformers/convert-interface-to-type.mts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAItD;;;GAGG;AACH,eAAO,MAAM,iCAAiC,QAAO,kBAqHxC,CAAC"}
@@ -1,5 +1,5 @@
1
- import { type DeepReadonly } from 'ts-type-forge';
2
- import { type TsMorphTransformer } from './types.mjs';
1
+ import type { DeepReadonly } from 'ts-type-forge';
2
+ import type { TsMorphTransformer } from './types.mjs';
3
3
  export declare const convertToReadonlyTransformer: (options?: ReadonlyTransformerOptions) => TsMorphTransformer;
4
4
  export type ReadonlyTransformerOptions = DeepReadonly<{
5
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"convert-to-readonly.d.mts","sourceRoot":"","sources":["../../../src/functions/ast-transformers/convert-to-readonly.mts"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,YAAY,EAIlB,MAAM,eAAe,CAAC;AAuBvB,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAItD,eAAO,MAAM,4BAA4B,aAC7B,0BAA0B,KACnC,kBAwCF,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,YAAY,CAAC;IACpD;;OAEG;IACH,YAAY,CAAC,EAAE;QACb;;;;WAIG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;KA2BnB,CAAC;IAEF;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B;;;;;;;;;;;;;;;;;OAiBG;IACH,WAAW,CAAC,EAAE,kBAAkB,GAAG,gBAAgB,CAAC;IAEpD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC,CAAC"}
1
+ {"version":3,"file":"convert-to-readonly.d.mts","sourceRoot":"","sources":["../../../src/functions/ast-transformers/convert-to-readonly.mts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,YAAY,EAIb,MAAM,eAAe,CAAC;AAuBvB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAItD,eAAO,MAAM,4BAA4B,aAC7B,0BAA0B,KACnC,kBAwCF,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,YAAY,CAAC;IACpD;;OAEG;IACH,YAAY,CAAC,EAAE;QACb;;;;WAIG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;KA2BnB,CAAC;IAEF;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B;;;;;;;;;;;;;;;;;OAiBG;IACH,WAAW,CAAC,EAAE,kBAAkB,GAAG,gBAAgB,CAAC;IAEpD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC,CAAC"}
@@ -2,7 +2,7 @@ import { Arr, ISet, isString, mapNullable, match, pipe, } from 'ts-data-forge';
2
2
  import * as tsm from 'ts-morph';
3
3
  import { hasCallOrConstructSignature, hasDisableNextLineComment, isAtomicTypeNode, isConditionalTypeDistributionGuard, isReadonlyArrayTypeNode, isReadonlyTupleOrArrayTypeNode, isReadonlyTupleTypeNode, isReadonlyTypeReferenceNode, removeParentheses, shouldAvoidParenthesesForReadonly, unwrapReadonlyTypeArgText, wrapWithParentheses, } from '../functions/index.mjs';
4
4
  import { replaceNodeWithDebugPrint } from '../utils/index.mjs';
5
- import { groupUnionIntersectionTypes, invalidDeepReadonlyTypeName, nextReadonlyContext, } from './readonly-transformer-helpers/index.mjs';
5
+ import { groupUnionIntersectionTypes, invalidDeepReadonlyTypeName, isMergeableReadonlyTypeReferenceNode, nextReadonlyContext, } from './readonly-transformer-helpers/index.mjs';
6
6
  const TRANSFORMER_NAME = 'convert-to-readonly';
7
7
  export const convertToReadonlyTransformer = (options) => {
8
8
  if (options?.DeepReadonly?.typeName !== undefined &&
@@ -344,25 +344,36 @@ node, readonlyContext, options) => {
344
344
  indexedAccessDepthChange: 'keep',
345
345
  }), options);
346
346
 
347
- const T = removeParentheses(node.getTypeArguments()[0]);
347
+ const typeArgument = node.getTypeArguments()[0];
348
+ const T = removeParentheses(typeArgument);
349
+
350
+
351
+ const commentsInFrontOfT = commentsBetween(node.getSourceFile(), typeArgument.getPos(), T.getStart());
352
+ const TText = `${commentsInFrontOfT}${T.getText()}`;
353
+
354
+
355
+ const unwrappedText = T.isKind(tsm.SyntaxKind.UnionType) ||
356
+ T.isKind(tsm.SyntaxKind.IntersectionType)
357
+ ? wrapWithParentheses(TText)
358
+ : TText;
348
359
 
349
360
  if (readonlyContext.type === 'DeepReadonly') {
350
- options.replaceNode(node, T.getFullText());
361
+ options.replaceNode(node, unwrappedText);
351
362
  return;
352
363
  }
353
364
 
354
365
  if (readonlyContext.indexedAccessDepth > 0) {
355
- options.replaceNode(node, T.getFullText());
366
+ options.replaceNode(node, unwrappedText);
356
367
  return;
357
368
  }
358
369
 
359
370
  if (isReadonlyTypeReferenceNode(T)) {
360
- options.replaceNode(node, T.getFullText());
371
+ options.replaceNode(node, TText);
361
372
  return;
362
373
  }
363
374
 
364
375
  if (isAtomicTypeNode(T)) {
365
- options.replaceNode(node, T.getFullText());
376
+ options.replaceNode(node, TText);
366
377
  return;
367
378
  }
368
379
 
@@ -371,7 +382,7 @@ node, readonlyContext, options) => {
371
382
  T.getTypeName().getText() === 'Record') {
372
383
  const recordTypeArguments = T.getTypeArguments();
373
384
  if (Arr.isFixedLengthArray(2, recordTypeArguments)) {
374
- options.replaceNode(node, readonlyRecordText(recordTypeArguments[0].getFullText(), recordTypeArguments[1].getFullText(), options));
385
+ options.replaceNode(node, `${commentsInFrontOfT}${readonlyRecordText(recordTypeArguments[0].getFullText(), recordTypeArguments[1].getFullText(), options)}`);
375
386
  return;
376
387
  }
377
388
  }
@@ -382,7 +393,7 @@ node, readonlyContext, options) => {
382
393
 
383
394
  if (T.isKind(tsm.SyntaxKind.ArrayType) ||
384
395
  T.isKind(tsm.SyntaxKind.TupleType)) {
385
- const readonlyText = `readonly ${T.getFullText()}`;
396
+ const readonlyText = `readonly ${TText}`;
386
397
  options.replaceNode(node, shouldAvoidParenthesesForReadonly(node)
387
398
  ? readonlyText
388
399
  : wrapWithParentheses(readonlyText));
@@ -392,14 +403,17 @@ node, readonlyContext, options) => {
392
403
 
393
404
 
394
405
  if (isReadonlyTupleOrArrayTypeNode(T)) {
395
- options.replaceNode(node, T.getFullText());
406
+ options.replaceNode(node, TText);
396
407
  return;
397
408
  }
398
409
 
399
410
 
411
+
412
+
413
+
400
414
  if (T.isKind(tsm.SyntaxKind.UnionType) ||
401
415
  T.isKind(tsm.SyntaxKind.IntersectionType)) {
402
- options.replaceNode(node, T.getFullText());
416
+ options.replaceNode(node, unwrappedText);
403
417
  return;
404
418
  }
405
419
  return;
@@ -487,7 +501,7 @@ node, readonlyContext, options) => {
487
501
 
488
502
  if (readonlyContext.indexedAccessDepth === 0 &&
489
503
  !isConditionalTypeDistributionGuard(node)) {
490
- const readonlyText = `readonly ${node.getFullText()}`;
504
+ const readonlyText = `readonly ${node.getText()}`;
491
505
  options.replaceNode(node, shouldAvoidParenthesesForReadonly(node)
492
506
  ? readonlyText
493
507
  : wrapWithParentheses(readonlyText));
@@ -527,7 +541,7 @@ node, readonlyContext, options) => {
527
541
 
528
542
  if (readonlyContext.indexedAccessDepth === 0 &&
529
543
  !isConditionalTypeDistributionGuard(node)) {
530
- const readonlyText = `readonly ${node.getFullText()}`;
544
+ const readonlyText = `readonly ${node.getText()}`;
531
545
  options.replaceNode(node, shouldAvoidParenthesesForReadonly(node)
532
546
  ? readonlyText
533
547
  : wrapWithParentheses(readonlyText));
@@ -547,9 +561,13 @@ node, readonlyContext, options) => {
547
561
  const R = removeParentheses(node.getTypeNode());
548
562
 
549
563
 
550
- if (isReadonlyArrayTypeNode(R) || isReadonlyTupleTypeNode(R)) {
551
- options.replaceNode(node, `...${R.getTypeNode().getFullText()}` );
564
+ if (!isReadonlyArrayTypeNode(R) && !isReadonlyTupleTypeNode(R)) {
565
+ return;
552
566
  }
567
+
568
+
569
+ const commentsInFrontOfR = commentsBetween(node.getSourceFile(), node.getTypeNode().getPos(), R.getStart());
570
+ options.replaceNode(node, `...${commentsInFrontOfR}${R.getTypeNode().getFullText()}` );
553
571
  };
554
572
 
555
573
 
@@ -605,7 +623,7 @@ node, readonlyContext, options) => {
605
623
  }), options);
606
624
  if (wrappingApplies && !skipWrapping) {
607
625
 
608
- options.replaceNode(node, `Readonly<${node.getFullText()}>`);
626
+ options.replaceNode(node, `Readonly<${node.getText()}>`);
609
627
  }
610
628
  };
611
629
 
@@ -749,6 +767,7 @@ param, options) => {
749
767
 
750
768
 
751
769
 
770
+
752
771
  const transformIntersectionTypeNode = (
753
772
 
754
773
  node, readonlyContext, options) => {
@@ -777,7 +796,18 @@ node, readonlyContext, options, operator) => {
777
796
  transformNode(n, nextReadonlyContextValue, options);
778
797
  }
779
798
  const newTypes = node.getTypeNodes();
780
- const { primitives, arraysAndTuples, typeLiterals, others } = groupUnionIntersectionTypes(newTypes);
799
+ const withLeadingComments = (
800
+
801
+ member, memberText) => `${leadingCommentsOfMember(node, member)}${memberText}`;
802
+ const { primitives, arraysAndTuples, typeLiterals, others } = groupUnionIntersectionTypes(newTypes, {
803
+ operator,
804
+
805
+
806
+ underReadonly: readonlyContext.type === 'Readonly' &&
807
+ readonlyContext.indexedAccessDepth === 0 &&
808
+ isTypeArgumentOfReadonly(node),
809
+ deepReadonlyTypeName: options.DeepReadonly.typeName,
810
+ });
781
811
  options.debugPrint({ primitives, arraysAndTuples, typeLiterals, others });
782
812
 
783
813
  const isEmptyTypeLiteral = (
@@ -795,10 +825,13 @@ node, readonlyContext, options, operator) => {
795
825
  ? []
796
826
  : [
797
827
  unionToString({
798
- types: nonEmptyTypeLiterals.map((n) => isReadonlyTypeReferenceNode(n)
828
+ types: nonEmptyTypeLiterals.map((n) => withLeadingComments(n, isMergeableReadonlyTypeReferenceNode(n, operator)
799
829
  ?
800
830
  unwrapReadonlyTypeArgText(n)
801
- : n.getFullText()),
831
+ : n.isKind(tsm.SyntaxKind.TypeLiteral)
832
+ ? n.getText()
833
+ :
834
+ wrapWithParentheses(n.getText()))),
802
835
  op: operator,
803
836
  wrapWithReadonly: nextReadonlyContextValue.type !== 'DeepReadonly' &&
804
837
  nextReadonlyContextValue.indexedAccessDepth === 0,
@@ -806,14 +839,20 @@ node, readonlyContext, options, operator) => {
806
839
  ];
807
840
 
808
841
  const sorted = [
809
- mapNullable(primitives, (a) => [a.nodes.map((n) => n.getFullText()), a.firstPosition]),
810
- mapNullable(arraysAndTuples, (a) => [a.nodes.map((n) => n.getFullText()), a.firstPosition]),
842
+ mapNullable(primitives, (a) => [
843
+ a.nodes.map((n) => withLeadingComments(n, n.getText())),
844
+ a.firstPosition,
845
+ ]),
846
+ mapNullable(arraysAndTuples, (a) => [
847
+ a.nodes.map((n) => withLeadingComments(n, n.getText())),
848
+ a.firstPosition,
849
+ ]),
811
850
  nonEmptyTypeLiterals !== undefined && Arr.isNonEmpty(nonEmptyTypeLiterals)
812
851
  ? mapNullable(typeLiterals, (a) => [typeLiteralsWrappedWithReadonly, a.firstPosition])
813
852
  : undefined,
814
853
  emptyTypeLiterals !== undefined && Arr.isNonEmpty(emptyTypeLiterals)
815
854
  ? mapNullable(typeLiterals, (a) => [
816
- emptyTypeLiterals.map((n) => n.getFullText()),
855
+ emptyTypeLiterals.map((n) => withLeadingComments(n, n.getText())),
817
856
 
818
857
  a.firstPosition +
819
858
  (nonEmptyTypeLiterals !== undefined &&
@@ -826,8 +865,8 @@ node, readonlyContext, options, operator) => {
826
865
 
827
866
 
828
867
  operator === '|'
829
- ? mergeDeepReadonlyUnionMembers(a.nodes, options.DeepReadonly.typeName)
830
- : a.nodes.map((n) => wrapWithParentheses(n.getFullText())),
868
+ ? mergeDeepReadonlyUnionMembers(a.nodes, options.DeepReadonly.typeName, withLeadingComments)
869
+ : a.nodes.map((n) => withLeadingComments(n, wrapWithParentheses(n.getText()))),
831
870
  a.firstPosition,
832
871
  ]),
833
872
  ]
@@ -877,36 +916,122 @@ node, readonlyContext, options, operator) => {
877
916
 
878
917
 
879
918
 
919
+
880
920
 
881
921
 
882
922
  const mergeDeepReadonlyUnionMembers = (
883
923
 
884
- nodes, deepReadonlyTypeName) => {
924
+ nodes, deepReadonlyTypeName, withLeadingComments) => {
885
925
  const typeArgsOfDeepReadonly = nodes.map((n) => getDeepReadonlyTypeArg(n, deepReadonlyTypeName));
886
- const typeArgs = typeArgsOfDeepReadonly.filter((t) => t !== undefined);
887
- if (typeArgs.length < 2) {
888
- return nodes.map((n) => wrapWithParentheses(n.getFullText()));
926
+ const asIs = (
927
+
928
+ n) => withLeadingComments(n, wrapWithParentheses(n.getText()));
929
+ if (typeArgsOfDeepReadonly.filter((t) => t !== undefined).length < 2) {
930
+ return nodes.map(asIs);
889
931
  }
890
932
  const firstIndex = typeArgsOfDeepReadonly.findIndex((t) => t !== undefined);
891
933
  const merged = unionToString({
892
- types: typeArgs.map((t_) => {
934
+
935
+
936
+
937
+ types: nodes.flatMap((n, i) => {
938
+ const t_ = typeArgsOfDeepReadonly[i];
939
+ if (t_ === undefined) {
940
+ return [];
941
+ }
893
942
  const t = removeParentheses(t_);
894
943
 
895
944
 
896
- return t.isKind(tsm.SyntaxKind.UnionType)
897
- ? t.getFullText()
898
- : wrapWithParentheses(t.getFullText());
945
+ const tText = textWithoutParentheses(t_, t);
946
+ return [
947
+ withLeadingComments(n, t.isKind(tsm.SyntaxKind.UnionType)
948
+ ? tText
949
+ : wrapWithParentheses(tText)),
950
+ ];
899
951
  }),
900
952
  op: '|',
901
953
  wrapWithReadonly: deepReadonlyTypeName,
902
954
  });
903
955
  return nodes.flatMap((n, i) => typeArgsOfDeepReadonly[i] === undefined
904
- ? [wrapWithParentheses(n.getFullText())]
956
+ ? [asIs(n)]
905
957
  : i === firstIndex
906
958
  ? [merged]
907
959
  : []);
908
960
  };
909
961
 
962
+ const isTypeArgumentOfReadonly = (
963
+
964
+ node) => {
965
+ const parent = node.getParent();
966
+ return (parent !== undefined &&
967
+ (parent.isKind(tsm.SyntaxKind.ParenthesizedType)
968
+ ? isTypeArgumentOfReadonly(parent)
969
+ : isReadonlyTypeReferenceNode(parent)));
970
+ };
971
+
972
+
973
+
974
+
975
+
976
+
977
+
978
+
979
+
980
+
981
+
982
+
983
+
984
+
985
+
986
+ const leadingCommentsOfMember = (
987
+
988
+ node,
989
+
990
+ member) => commentsBetween(node.getSourceFile(), node
991
+ .getTypeNodes()
992
+ .findLast((m) => m.getEnd() <= member.getStart())
993
+ ?.getEnd() ?? node.getStart(), member.getStart());
994
+
995
+
996
+
997
+
998
+
999
+
1000
+
1001
+
1002
+ const textWithoutParentheses = (
1003
+
1004
+ outer,
1005
+
1006
+ inner) => `${commentsBetween(outer.getSourceFile(), outer.getPos(), inner.getStart())}${inner.getText()}`;
1007
+
1008
+
1009
+
1010
+
1011
+
1012
+ const commentsBetween = (
1013
+
1014
+ sourceFile, from, to) => {
1015
+ if (to <= from) {
1016
+ return '';
1017
+ }
1018
+ const scanner = tsm.ts.createScanner(tsm.ts.ScriptTarget.Latest, false, tsm.ts.LanguageVariant.Standard, sourceFile.getFullText(), undefined, from, to - from);
1019
+ const mut_comments = [];
1020
+ while (scanner.scan() !== tsm.ts.SyntaxKind.EndOfFileToken) {
1021
+ const token = scanner.getToken();
1022
+
1023
+ const separator = token === tsm.ts.SyntaxKind.SingleLineCommentTrivia
1024
+ ? '\n'
1025
+ : token === tsm.ts.SyntaxKind.MultiLineCommentTrivia
1026
+ ? ' '
1027
+ : undefined;
1028
+ if (separator !== undefined) {
1029
+ mut_comments.push(`${scanner.getTokenText()}${separator}`);
1030
+ }
1031
+ }
1032
+ return mut_comments.join('');
1033
+ };
1034
+
910
1035
  const getDeepReadonlyTypeArg = (
911
1036
 
912
1037
  node, deepReadonlyTypeName) => {
@@ -927,7 +1052,6 @@ const unionToString = ({ types: typesRaw, op, wrapWithReadonly, }) => {
927
1052
 
928
1053
 
929
1054
 
930
-
931
1055
  const types = typesRaw.map((s) => s.trim());
932
1056
  return unionToStringImpl({ types, op, wrapWithReadonly });
933
1057
  };