ts-codemod-lib 1.4.2 → 2.0.0
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.
- package/README.md +10 -7
- package/dist/cmd/append-as-const.mjs +5 -4
- package/dist/cmd/append-as-const.mjs.map +1 -1
- package/dist/cmd/convert-interface-to-type.mjs +5 -4
- package/dist/cmd/convert-interface-to-type.mjs.map +1 -1
- package/dist/cmd/convert-to-readonly.mjs +6 -5
- package/dist/cmd/convert-to-readonly.mjs.map +1 -1
- package/dist/cmd/replace-any-with-unknown.mjs +5 -4
- package/dist/cmd/replace-any-with-unknown.mjs.map +1 -1
- package/dist/cmd/replace-record-with-unknown-record.mjs +5 -4
- package/dist/cmd/replace-record-with-unknown-record.mjs.map +1 -1
- package/dist/cmd/run-transformer-cli.d.mts.map +1 -1
- package/dist/cmd/run-transformer-cli.mjs +1 -2
- package/dist/cmd/run-transformer-cli.mjs.map +1 -1
- package/dist/entry-point.mjs +2 -2
- package/dist/functions/ast-transformers/append-as-const.d.mts +3 -0
- package/dist/functions/ast-transformers/append-as-const.d.mts.map +1 -1
- package/dist/functions/ast-transformers/append-as-const.mjs +74 -134
- package/dist/functions/ast-transformers/append-as-const.mjs.map +1 -1
- package/dist/functions/ast-transformers/convert-interface-to-type.d.mts.map +1 -1
- package/dist/functions/ast-transformers/convert-interface-to-type.mjs +12 -7
- package/dist/functions/ast-transformers/convert-interface-to-type.mjs.map +1 -1
- package/dist/functions/ast-transformers/{convert-to-readonly-type.d.mts → convert-to-readonly.d.mts} +2 -2
- package/dist/functions/ast-transformers/convert-to-readonly.d.mts.map +1 -0
- package/dist/functions/ast-transformers/{convert-to-readonly-type.mjs → convert-to-readonly.mjs} +23 -18
- package/dist/functions/ast-transformers/convert-to-readonly.mjs.map +1 -0
- package/dist/functions/ast-transformers/index.d.mts +1 -1
- package/dist/functions/ast-transformers/index.d.mts.map +1 -1
- package/dist/functions/ast-transformers/index.mjs +1 -1
- package/dist/functions/ast-transformers/readonly-transformer-helpers/compare-union-types.mjs +2 -2
- package/dist/functions/ast-transformers/readonly-transformer-helpers/compare-union-types.mjs.map +1 -1
- package/dist/functions/ast-transformers/readonly-transformer-helpers/group-union-types.d.mts +2 -2
- package/dist/functions/ast-transformers/readonly-transformer-helpers/group-union-types.d.mts.map +1 -1
- package/dist/functions/ast-transformers/readonly-transformer-helpers/group-union-types.mjs +2 -2
- package/dist/functions/ast-transformers/readonly-transformer-helpers/group-union-types.mjs.map +1 -1
- package/dist/functions/ast-transformers/replace-any-with-unknown.d.mts.map +1 -1
- package/dist/functions/ast-transformers/replace-any-with-unknown.mjs +28 -34
- package/dist/functions/ast-transformers/replace-any-with-unknown.mjs.map +1 -1
- package/dist/functions/ast-transformers/replace-record-with-unknown-record.d.mts.map +1 -1
- package/dist/functions/ast-transformers/replace-record-with-unknown-record.mjs +154 -150
- package/dist/functions/ast-transformers/replace-record-with-unknown-record.mjs.map +1 -1
- package/dist/functions/ast-transformers/transform-source-code.d.mts.map +1 -1
- package/dist/functions/ast-transformers/transform-source-code.mjs +4 -6
- package/dist/functions/ast-transformers/transform-source-code.mjs.map +1 -1
- package/dist/functions/ast-transformers/types.d.mts +5 -5
- package/dist/functions/ast-transformers/types.d.mts.map +1 -1
- package/dist/functions/functions/index.d.mts +1 -1
- package/dist/functions/functions/index.d.mts.map +1 -1
- package/dist/functions/functions/index.mjs +1 -1
- package/dist/functions/functions/{is-primitive-type-node.d.mts → is-atomic-type-node.d.mts} +3 -3
- package/dist/functions/functions/is-atomic-type-node.d.mts.map +1 -0
- package/dist/functions/functions/{is-primitive-type-node.mjs → is-atomic-type-node.mjs} +5 -5
- package/dist/functions/functions/is-atomic-type-node.mjs.map +1 -0
- package/dist/functions/functions/is-readonly-node.d.mts.map +1 -1
- package/dist/functions/functions/is-readonly-node.mjs +2 -2
- package/dist/functions/functions/is-readonly-node.mjs.map +1 -1
- package/dist/functions/functions/wrap-with-parentheses.d.mts +1 -1
- package/dist/functions/functions/wrap-with-parentheses.d.mts.map +1 -1
- package/dist/functions/index.mjs +2 -2
- package/dist/index.mjs +2 -2
- package/package.json +17 -5
- package/src/cmd/append-as-const.mts +5 -3
- package/src/cmd/convert-interface-to-type.mts +5 -3
- package/src/cmd/convert-to-readonly.mts +6 -4
- package/src/cmd/replace-any-with-unknown.mts +5 -3
- package/src/cmd/replace-record-with-unknown-record.mts +5 -3
- package/src/cmd/run-transformer-cli.mts +0 -1
- package/src/functions/ast-transformers/append-as-const.mts +106 -217
- package/src/functions/ast-transformers/append-as-const.test.mts +53 -48
- package/src/functions/ast-transformers/convert-interface-to-type.mts +96 -89
- package/src/functions/ast-transformers/convert-interface-to-type.test.mts +20 -20
- package/src/functions/ast-transformers/{convert-to-readonly-type.mts → convert-to-readonly.mts} +26 -24
- package/src/functions/ast-transformers/{convert-to-readonly-type.test.mts → convert-to-readonly.test.mts} +36 -10
- package/src/functions/ast-transformers/index.mts +1 -1
- package/src/functions/ast-transformers/readonly-transformer-helpers/compare-union-types.mts +2 -2
- package/src/functions/ast-transformers/readonly-transformer-helpers/group-union-types.mts +5 -5
- package/src/functions/ast-transformers/replace-any-with-unknown.mts +31 -40
- package/src/functions/ast-transformers/replace-record-with-unknown-record.mts +183 -182
- package/src/functions/ast-transformers/transform-source-code.mts +3 -4
- package/src/functions/ast-transformers/transformer-specific-ignore.test.mts +6 -6
- package/src/functions/ast-transformers/types.mts +7 -7
- package/src/functions/functions/index.mts +1 -1
- package/src/functions/functions/{is-primitive-type-node.mts → is-atomic-type-node.mts} +9 -10
- package/src/functions/functions/is-readonly-node.mts +2 -2
- package/src/functions/functions/wrap-with-parentheses.mts +2 -2
- package/dist/functions/ast-transformers/convert-to-readonly-type.d.mts.map +0 -1
- package/dist/functions/ast-transformers/convert-to-readonly-type.mjs.map +0 -1
- package/dist/functions/functions/is-primitive-type-node.d.mts.map +0 -1
- package/dist/functions/functions/is-primitive-type-node.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -62,7 +62,7 @@ const arr2 = [1, 2, 3] as const;
|
|
|
62
62
|
const obj2 = { a: 1, b: 2 } as const;
|
|
63
63
|
```
|
|
64
64
|
|
|
65
|
-
### 2. `
|
|
65
|
+
### 2. `convertToReadonlyTransformer`
|
|
66
66
|
|
|
67
67
|
Converts TypeScript type definitions to readonly types. This transformer helps in creating more type-safe code by making types readonly where appropriate. It also normalizes nested readonly types (e.g., `Readonly<Readonly<T>>` becomes `Readonly<T>`).
|
|
68
68
|
|
|
@@ -103,6 +103,8 @@ Example:
|
|
|
103
103
|
|
|
104
104
|
```ts
|
|
105
105
|
// Before
|
|
106
|
+
// embed-sample-code-ignore-above
|
|
107
|
+
// Before
|
|
106
108
|
interface User {
|
|
107
109
|
id: number;
|
|
108
110
|
name: string;
|
|
@@ -179,9 +181,10 @@ type Config = {
|
|
|
179
181
|
settings: { timeout: number };
|
|
180
182
|
};
|
|
181
183
|
|
|
182
|
-
// After applying
|
|
184
|
+
// After applying convertToReadonlyTransformer
|
|
183
185
|
type Config2 = Readonly<{
|
|
184
186
|
apiKey: string;
|
|
187
|
+
// transformer-ignore-next-line
|
|
185
188
|
mutableOptions: string[]; // Not made Readonly because it was skipped
|
|
186
189
|
settings: Readonly<{ timeout: number }>;
|
|
187
190
|
}>;
|
|
@@ -263,7 +266,7 @@ import dedent from 'dedent';
|
|
|
263
266
|
import {
|
|
264
267
|
appendAsConstTransformer,
|
|
265
268
|
convertInterfaceToTypeTransformer,
|
|
266
|
-
|
|
269
|
+
convertToReadonlyTransformer,
|
|
267
270
|
replaceAnyWithUnknownTransformer,
|
|
268
271
|
replaceRecordWithUnknownRecordTransformer,
|
|
269
272
|
transformSourceCode,
|
|
@@ -301,7 +304,7 @@ const isTsx = false;
|
|
|
301
304
|
const transformedCode = transformSourceCode(originalCode, isTsx, [
|
|
302
305
|
convertInterfaceToTypeTransformer(),
|
|
303
306
|
replaceRecordWithUnknownRecordTransformer(),
|
|
304
|
-
|
|
307
|
+
convertToReadonlyTransformer(),
|
|
305
308
|
appendAsConstTransformer(),
|
|
306
309
|
replaceAnyWithUnknownTransformer(),
|
|
307
310
|
]);
|
|
@@ -349,7 +352,7 @@ import * as fs from 'node:fs/promises';
|
|
|
349
352
|
import {
|
|
350
353
|
appendAsConstTransformer,
|
|
351
354
|
convertInterfaceToTypeTransformer,
|
|
352
|
-
|
|
355
|
+
convertToReadonlyTransformer,
|
|
353
356
|
replaceAnyWithUnknownTransformer,
|
|
354
357
|
replaceRecordWithUnknownRecordTransformer,
|
|
355
358
|
transformSourceCode,
|
|
@@ -372,7 +375,7 @@ for await (const filePath of fs.glob('path/to/src/**/*.{mts,tsx}')) {
|
|
|
372
375
|
const transformedCode = transformSourceCode(originalCode, isTsx, [
|
|
373
376
|
convertInterfaceToTypeTransformer(),
|
|
374
377
|
replaceRecordWithUnknownRecordTransformer(),
|
|
375
|
-
|
|
378
|
+
convertToReadonlyTransformer(),
|
|
376
379
|
appendAsConstTransformer(),
|
|
377
380
|
replaceAnyWithUnknownTransformer(),
|
|
378
381
|
]);
|
|
@@ -406,7 +409,7 @@ node codemod.mjs
|
|
|
406
409
|
return { success: true };
|
|
407
410
|
}
|
|
408
411
|
|
|
409
|
-
// After applying
|
|
412
|
+
// After applying convertToReadonlyTransformer
|
|
410
413
|
/**
|
|
411
414
|
* Processes user data.
|
|
412
415
|
* @param {object} user - The user object. // JSDoc type is not changed
|
|
@@ -4,13 +4,14 @@ import { Result } from 'ts-data-forge';
|
|
|
4
4
|
import 'ts-repo-utils';
|
|
5
5
|
import { appendAsConstTransformer } from '../functions/ast-transformers/append-as-const.mjs';
|
|
6
6
|
import 'ts-morph';
|
|
7
|
-
import '../functions/functions/is-
|
|
7
|
+
import '../functions/functions/is-atomic-type-node.mjs';
|
|
8
8
|
import '../functions/ast-transformers/readonly-transformer-helpers/constants.mjs';
|
|
9
9
|
import { runTransformerCLI } from './run-transformer-cli.mjs';
|
|
10
10
|
|
|
11
|
+
const transformer = appendAsConstTransformer();
|
|
11
12
|
const cmdDef = cmd.command({
|
|
12
|
-
name:
|
|
13
|
-
version: '
|
|
13
|
+
name: transformer.name,
|
|
14
|
+
version: '2.0.0',
|
|
14
15
|
args: {
|
|
15
16
|
baseDir: cmd.positional({
|
|
16
17
|
type: cmd.string,
|
|
@@ -40,7 +41,7 @@ const cmdDef = cmd.command({
|
|
|
40
41
|
exclude: args.exclude ?? [],
|
|
41
42
|
uncommitted: args.uncommitted ?? false,
|
|
42
43
|
silent: args.silent ?? false,
|
|
43
|
-
}, [
|
|
44
|
+
}, [transformer]);
|
|
44
45
|
if (Result.isErr(result)) {
|
|
45
46
|
process.exit(1);
|
|
46
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"append-as-const.mjs","sources":["../../src/cmd/append-as-const.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;AAQA,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"append-as-const.mjs","sources":["../../src/cmd/append-as-const.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;AAQA,MAAM,WAAW,GAAG,wBAAwB,EAAE;AAE9C,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACzB,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,IAAI,EAAE;AACJ,QAAA,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;YACtB,IAAI,EAAE,GAAG,CAAC,MAAM;AAChB,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,WAAW,EAAE,uDAAuD;SACrE,CAAC;AACF,QAAA,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC;AACvB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzC,YAAA,WAAW,EACT,4FAA4F;SAC/F,CAAC;AACF,QAAA,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EACT,oFAAoF;SACvF,CAAC;AACF,QAAA,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC;AACf,YAAA,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EAAE,sDAAsD;SACpE,CAAC;AACH,KAAA;AACD,IAAA,OAAO,EAAE,CAAC,IAAI,KAAI;QAChB,CAAC,YAA0B;AACzB,YAAA,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC;gBACE,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;AAC3B,gBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK;AACtC,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AAC7B,aAAA,EACD,CAAC,WAAW,CAAC,CACd;AAED,YAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxB,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACjB;QACF,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAc,KAAI;AAC5B,YAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC;AAE1C,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,QAAA,CAAC,CAAC;IACJ,CAAC;AACF,CAAA,CAAC;AAEF,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -3,14 +3,15 @@ import * as cmd from 'cmd-ts';
|
|
|
3
3
|
import { Result } from 'ts-data-forge';
|
|
4
4
|
import 'ts-repo-utils';
|
|
5
5
|
import 'ts-morph';
|
|
6
|
-
import '../functions/functions/is-
|
|
6
|
+
import '../functions/functions/is-atomic-type-node.mjs';
|
|
7
7
|
import { convertInterfaceToTypeTransformer } from '../functions/ast-transformers/convert-interface-to-type.mjs';
|
|
8
8
|
import '../functions/ast-transformers/readonly-transformer-helpers/constants.mjs';
|
|
9
9
|
import { runTransformerCLI } from './run-transformer-cli.mjs';
|
|
10
10
|
|
|
11
|
+
const transformer = convertInterfaceToTypeTransformer();
|
|
11
12
|
const cmdDef = cmd.command({
|
|
12
|
-
name:
|
|
13
|
-
version: '
|
|
13
|
+
name: transformer.name,
|
|
14
|
+
version: '2.0.0',
|
|
14
15
|
args: {
|
|
15
16
|
baseDir: cmd.positional({
|
|
16
17
|
type: cmd.string,
|
|
@@ -40,7 +41,7 @@ const cmdDef = cmd.command({
|
|
|
40
41
|
exclude: args.exclude ?? [],
|
|
41
42
|
uncommitted: args.uncommitted ?? false,
|
|
42
43
|
silent: args.silent ?? false,
|
|
43
|
-
}, [
|
|
44
|
+
}, [transformer]);
|
|
44
45
|
if (Result.isErr(result)) {
|
|
45
46
|
process.exit(1);
|
|
46
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-interface-to-type.mjs","sources":["../../src/cmd/convert-interface-to-type.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;AAQA,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"convert-interface-to-type.mjs","sources":["../../src/cmd/convert-interface-to-type.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;AAQA,MAAM,WAAW,GAAG,iCAAiC,EAAE;AAEvD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACzB,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,IAAI,EAAE;AACJ,QAAA,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;YACtB,IAAI,EAAE,GAAG,CAAC,MAAM;AAChB,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,WAAW,EAAE,uDAAuD;SACrE,CAAC;AACF,QAAA,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC;AACvB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzC,YAAA,WAAW,EACT,4FAA4F;SAC/F,CAAC;AACF,QAAA,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EACT,oFAAoF;SACvF,CAAC;AACF,QAAA,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC;AACf,YAAA,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EAAE,sDAAsD;SACpE,CAAC;AACH,KAAA;AACD,IAAA,OAAO,EAAE,CAAC,IAAI,KAAI;QAChB,CAAC,YAA0B;AACzB,YAAA,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC;gBACE,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;AAC3B,gBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK;AACtC,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AAC7B,aAAA,EACD,CAAC,WAAW,CAAC,CACd;AAED,YAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxB,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACjB;QACF,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAc,KAAI;AAC5B,YAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC;AAE1C,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,QAAA,CAAC,CAAC;IACJ,CAAC;AACF,CAAA,CAAC;AAEF,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -3,14 +3,15 @@ import * as cmd from 'cmd-ts';
|
|
|
3
3
|
import { Result } from 'ts-data-forge';
|
|
4
4
|
import 'ts-repo-utils';
|
|
5
5
|
import 'ts-morph';
|
|
6
|
-
import '../functions/functions/is-
|
|
7
|
-
import {
|
|
6
|
+
import '../functions/functions/is-atomic-type-node.mjs';
|
|
7
|
+
import { convertToReadonlyTransformer } from '../functions/ast-transformers/convert-to-readonly.mjs';
|
|
8
8
|
import '../functions/ast-transformers/readonly-transformer-helpers/constants.mjs';
|
|
9
9
|
import { runTransformerCLI } from './run-transformer-cli.mjs';
|
|
10
10
|
|
|
11
|
+
const transformer = convertToReadonlyTransformer();
|
|
11
12
|
const cmdDef = cmd.command({
|
|
12
|
-
name:
|
|
13
|
-
version: '
|
|
13
|
+
name: transformer.name,
|
|
14
|
+
version: '2.0.0',
|
|
14
15
|
args: {
|
|
15
16
|
baseDir: cmd.positional({
|
|
16
17
|
type: cmd.string,
|
|
@@ -40,7 +41,7 @@ const cmdDef = cmd.command({
|
|
|
40
41
|
exclude: args.exclude ?? [],
|
|
41
42
|
uncommitted: args.uncommitted ?? false,
|
|
42
43
|
silent: args.silent ?? false,
|
|
43
|
-
}, [
|
|
44
|
+
}, [transformer]);
|
|
44
45
|
if (Result.isErr(result)) {
|
|
45
46
|
process.exit(1);
|
|
46
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-to-readonly.mjs","sources":["../../src/cmd/convert-to-readonly.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;AAQA,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"convert-to-readonly.mjs","sources":["../../src/cmd/convert-to-readonly.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;AAQA,MAAM,WAAW,GAAG,4BAA4B,EAAE;AAElD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACzB,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,IAAI,EAAE;AACJ,QAAA,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;YACtB,IAAI,EAAE,GAAG,CAAC,MAAM;AAChB,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,WAAW,EAAE,uDAAuD;SACrE,CAAC;AACF,QAAA,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC;AACvB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzC,YAAA,WAAW,EACT,4FAA4F;SAC/F,CAAC;AACF,QAAA,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EACT,oFAAoF;SACvF,CAAC;AACF,QAAA,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC;AACf,YAAA,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EAAE,sDAAsD;SACpE,CAAC;AACH,KAAA;AACD,IAAA,OAAO,EAAE,CAAC,IAAI,KAAI;QAChB,CAAC,YAA0B;AACzB,YAAA,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC;gBACE,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;AAC3B,gBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK;AACtC,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AAC7B,aAAA,EACD,CAAC,WAAW,CAAC,CACd;AAED,YAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxB,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACjB;QACF,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAc,KAAI;AAC5B,YAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC;AAE1C,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,QAAA,CAAC,CAAC;IACJ,CAAC;AACF,CAAA,CAAC;AAEF,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -3,14 +3,15 @@ import * as cmd from 'cmd-ts';
|
|
|
3
3
|
import { Result } from 'ts-data-forge';
|
|
4
4
|
import 'ts-repo-utils';
|
|
5
5
|
import 'ts-morph';
|
|
6
|
-
import '../functions/functions/is-
|
|
6
|
+
import '../functions/functions/is-atomic-type-node.mjs';
|
|
7
7
|
import '../functions/ast-transformers/readonly-transformer-helpers/constants.mjs';
|
|
8
8
|
import { replaceAnyWithUnknownTransformer } from '../functions/ast-transformers/replace-any-with-unknown.mjs';
|
|
9
9
|
import { runTransformerCLI } from './run-transformer-cli.mjs';
|
|
10
10
|
|
|
11
|
+
const transformer = replaceAnyWithUnknownTransformer();
|
|
11
12
|
const cmdDef = cmd.command({
|
|
12
|
-
name:
|
|
13
|
-
version: '
|
|
13
|
+
name: transformer.name,
|
|
14
|
+
version: '2.0.0',
|
|
14
15
|
args: {
|
|
15
16
|
baseDir: cmd.positional({
|
|
16
17
|
type: cmd.string,
|
|
@@ -40,7 +41,7 @@ const cmdDef = cmd.command({
|
|
|
40
41
|
exclude: args.exclude ?? [],
|
|
41
42
|
uncommitted: args.uncommitted ?? false,
|
|
42
43
|
silent: args.silent ?? false,
|
|
43
|
-
}, [
|
|
44
|
+
}, [transformer]);
|
|
44
45
|
if (Result.isErr(result)) {
|
|
45
46
|
process.exit(1);
|
|
46
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replace-any-with-unknown.mjs","sources":["../../src/cmd/replace-any-with-unknown.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;AAQA,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"replace-any-with-unknown.mjs","sources":["../../src/cmd/replace-any-with-unknown.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;AAQA,MAAM,WAAW,GAAG,gCAAgC,EAAE;AAEtD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACzB,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,IAAI,EAAE;AACJ,QAAA,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;YACtB,IAAI,EAAE,GAAG,CAAC,MAAM;AAChB,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,WAAW,EAAE,uDAAuD;SACrE,CAAC;AACF,QAAA,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC;AACvB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzC,YAAA,WAAW,EACT,4FAA4F;SAC/F,CAAC;AACF,QAAA,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EACT,oFAAoF;SACvF,CAAC;AACF,QAAA,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC;AACf,YAAA,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EAAE,sDAAsD;SACpE,CAAC;AACH,KAAA;AACD,IAAA,OAAO,EAAE,CAAC,IAAI,KAAI;QAChB,CAAC,YAA0B;AACzB,YAAA,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC;gBACE,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;AAC3B,gBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK;AACtC,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AAC7B,aAAA,EACD,CAAC,WAAW,CAAC,CACd;AAED,YAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxB,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACjB;QACF,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAc,KAAI;AAC5B,YAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC;AAE1C,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,QAAA,CAAC,CAAC;IACJ,CAAC;AACF,CAAA,CAAC;AAEF,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -3,14 +3,15 @@ import * as cmd from 'cmd-ts';
|
|
|
3
3
|
import { Result } from 'ts-data-forge';
|
|
4
4
|
import 'ts-repo-utils';
|
|
5
5
|
import 'ts-morph';
|
|
6
|
-
import '../functions/functions/is-
|
|
6
|
+
import '../functions/functions/is-atomic-type-node.mjs';
|
|
7
7
|
import '../functions/ast-transformers/readonly-transformer-helpers/constants.mjs';
|
|
8
8
|
import { replaceRecordWithUnknownRecordTransformer } from '../functions/ast-transformers/replace-record-with-unknown-record.mjs';
|
|
9
9
|
import { runTransformerCLI } from './run-transformer-cli.mjs';
|
|
10
10
|
|
|
11
|
+
const transformer = replaceRecordWithUnknownRecordTransformer();
|
|
11
12
|
const cmdDef = cmd.command({
|
|
12
|
-
name:
|
|
13
|
-
version: '
|
|
13
|
+
name: transformer.name,
|
|
14
|
+
version: '2.0.0',
|
|
14
15
|
args: {
|
|
15
16
|
baseDir: cmd.positional({
|
|
16
17
|
type: cmd.string,
|
|
@@ -40,7 +41,7 @@ const cmdDef = cmd.command({
|
|
|
40
41
|
exclude: args.exclude ?? [],
|
|
41
42
|
uncommitted: args.uncommitted ?? false,
|
|
42
43
|
silent: args.silent ?? false,
|
|
43
|
-
}, [
|
|
44
|
+
}, [transformer]);
|
|
44
45
|
if (Result.isErr(result)) {
|
|
45
46
|
process.exit(1);
|
|
46
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replace-record-with-unknown-record.mjs","sources":["../../src/cmd/replace-record-with-unknown-record.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;AAQA,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"replace-record-with-unknown-record.mjs","sources":["../../src/cmd/replace-record-with-unknown-record.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;AAQA,MAAM,WAAW,GAAG,yCAAyC,EAAE;AAE/D,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACzB,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,IAAI,EAAE;AACJ,QAAA,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC;YACtB,IAAI,EAAE,GAAG,CAAC,MAAM;AAChB,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,WAAW,EAAE,uDAAuD;SACrE,CAAC;AACF,QAAA,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC;AACvB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzC,YAAA,WAAW,EACT,4FAA4F;SAC/F,CAAC;AACF,QAAA,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EACT,oFAAoF;SACvF,CAAC;AACF,QAAA,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC;AACf,YAAA,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/B,YAAA,WAAW,EAAE,sDAAsD;SACpE,CAAC;AACH,KAAA;AACD,IAAA,OAAO,EAAE,CAAC,IAAI,KAAI;QAChB,CAAC,YAA0B;AACzB,YAAA,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC;gBACE,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;AAC3B,gBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK;AACtC,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AAC7B,aAAA,EACD,CAAC,WAAW,CAAC,CACd;AAED,YAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACxB,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACjB;QACF,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAc,KAAI;AAC5B,YAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC;AAE1C,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,QAAA,CAAC,CAAC;IACJ,CAAC;AACF,CAAA,CAAC;AAEF,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-transformer-cli.d.mts","sourceRoot":"","sources":["../../src/cmd/run-transformer-cli.mts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run-transformer-cli.d.mts","sourceRoot":"","sources":["../../src/cmd/run-transformer-cli.mts"],"names":[],"mappings":"AAGA,OAAO,EAAO,MAAM,EAAmB,MAAM,eAAe,CAAC;AAM7D,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,wBAAwB,CAAC;AAEhC,KAAK,eAAe,GAAG,QAAQ,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC,CAAC;AAEH,KAAK,qBAAqB,GAAG,eAAe,CAAC;AAE7C,eAAO,MAAM,iBAAiB,GAC5B,SAAS,qBAAqB,EAC9B,cAAc,SAAS,kBAAkB,EAAE,KAC1C,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CA8DtC,CAAC"}
|
|
@@ -2,11 +2,10 @@ import dedent from 'dedent';
|
|
|
2
2
|
import { Result, Arr, unknownToString } from 'ts-data-forge';
|
|
3
3
|
import { getUntrackedFiles, getModifiedFiles, getStagedFiles } from 'ts-repo-utils';
|
|
4
4
|
import 'ts-morph';
|
|
5
|
-
import '../functions/functions/is-
|
|
5
|
+
import '../functions/functions/is-atomic-type-node.mjs';
|
|
6
6
|
import '../functions/ast-transformers/readonly-transformer-helpers/constants.mjs';
|
|
7
7
|
import { transformSourceCode } from '../functions/ast-transformers/transform-source-code.mjs';
|
|
8
8
|
|
|
9
|
-
/* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */
|
|
10
9
|
/* eslint-disable no-await-in-loop */
|
|
11
10
|
const runTransformerCLI = async (options, transformers) => {
|
|
12
11
|
const echoIfNotSilent = options.silent ? () => { } : echo;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-transformer-cli.mjs","sources":["../../src/cmd/run-transformer-cli.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;AAAA;
|
|
1
|
+
{"version":3,"file":"run-transformer-cli.mjs","sources":["../../src/cmd/run-transformer-cli.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;AAAA;AAuBO,MAAM,iBAAiB,GAAG,OAC/B,OAA8B,EAC9B,YAA2C,KACF;AACzC,IAAA,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,QAAO,CAAC,GAAG,IAAI;AAExD,IAAA,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,MAAK,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK;AAElE,IAAA,MAAM,WAAW,GAAG,MAAM,yBAAyB,CAAC,OAAO,CAAC;AAE5D,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;QAC7B,gBAAgB,CACd,OAAO,CAAC;AACN,cAAE;AACF,cAAE,uCAAuC,EAC3C,WAAW,CAAC,KAAK,CAClB;AAED,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;IAC9B;AAEA,IAAA,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK;AAE/B,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,eAAe,CACb,OAAO,CAAC;AACN,cAAE;AACF,cAAE,CAAA,iCAAA,EAAoC,OAAO,CAAC,OAAO,CAAA,CAAE,CAC1D;AAED,QAAA,OAAO,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC;IAC7B;AAEA,IAAA,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,MAAM,cAAc,CAC3E,KAAK,EACL,YAAY,EACZ,OAAO,CAAC,MAAM,CACf;IAED,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IAEzB,eAAe,CAAC,MAAM,CAAA;MAClB,EAAE;;uBAEe,gBAAgB;wBACf,cAAc;AACf,qBAAA,EAAA,UAAU,CAAC,MAAM;AAChB,sBAAA,EAAA,KAAK,CAAC,MAAM;AACjC,EAAA,CAAA,CAAC;AAEF,IAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;QACzB,eAAe,CAAC,sBAAsB,CAAC;AAEvC,QAAA,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE;AACjC,YAAA,eAAe,CAAC,CAAA,IAAA,EAAO,QAAQ,CAAA,CAAE,CAAC;QACpC;IACF;IAEA,eAAe,CAAC,EAAE,CAAC;AAEnB,IAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;IAC9B;AAEA,IAAA,OAAO,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC;AAC7B;AAEA,MAAM,yBAAyB,GAAG,OAChC,OAAwB,KAStB;AACF,IAAA,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAC1C,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,MAAM,CACf;AAED,IAAA,IAAI,OAAO,CAAC,WAAW,EAAE;QACvB,MAAM,gBAAgB,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC;AAElE,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;AAClC,YAAA,OAAO,gBAAgB;QACzB;QAEA,OAAO,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,KAAK,KACrC,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,CACnD;IACH;AAEA,IAAA,OAAO,aAAa;AACtB,CAAC;AAED,MAAM,mBAAmB,GAAG,OAC1B,MAAe,KASb;IACF,MAAM,SAAS,GAAa,EAAE;IAE9B,MAAM,oBAAoB,GAAG,MAAM,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;AAEhE,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE;AACtC,QAAA,OAAO,oBAAoB;IAC7B;IAEA,SAAS,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC;IAE7C,MAAM,mBAAmB,GAAG,MAAM,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;AAE9D,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE;AACrC,QAAA,OAAO,mBAAmB;IAC5B;IAEA,SAAS,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC;IAE5C,MAAM,iBAAiB,GAAG,MAAM,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;AAE1D,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE;AACnC,QAAA,OAAO,iBAAiB;IAC1B;IAEA,SAAS,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC;IAE1C,OAAO,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,gBAAgB,GAAG,OACvB,OAAe,EACf,OAA0B,EAC1B,MAAe,KASb;AACF,IAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;AACrC,QAAA,MAAM,EAAE,OAAO;AAChB,KAAA,CAAC;AAEF,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;QAC5B,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,UAAU,CAAC,KAAK,CAAC;QAC1E;QAEA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACvC;IAEA,OAAO,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;AACpC,CAAC;AAED,MAAM,cAAc,GAAG,OACrB,SAA4B,EAC5B,YAA2C,EAC3C,MAAe,KAOb;IACF,IAAI,oBAAoB,GAAW,CAAC;IAEpC,IAAI,kBAAkB,GAAW,CAAC;IAElC,MAAM,cAAc,GAAa,EAAE;AAEnC,IAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;QAChC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC;AAErE,QAAA,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACvB,YAAA,QAAQ,MAAM,CAAC,KAAK;AAClB,gBAAA,KAAK,aAAa;oBAChB,oBAAoB,IAAI,CAAC;oBAEzB;AAEF,gBAAA,KAAK,WAAW;oBACd,kBAAkB,IAAI,CAAC;oBAEvB;;QAEN;aAAO;YACL,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC9C;IACF;IAEA,OAAO;AACL,QAAA,gBAAgB,EAAE,oBAAoB;AACtC,QAAA,cAAc,EAAE,kBAAkB;AAClC,QAAA,UAAU,EAAE,cAAc;KAC3B;AACH,CAAC;AAED,MAAM,gBAAgB,GAAG,OACvB,QAAgB,EAChB,YAA2C,EAC3C,MAAe,KACyC;AACxD,IAAA,MAAM,eAAe,GAAG,MAAM,GAAG,MAAK,EAAE,CAAC,GAAG,IAAI;AAEhD,IAAA,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAK,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK;IAE1D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAExC,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;AAEpE,IAAA,IAAI;QACF,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAExD,MAAM,eAAe,GAAG,mBAAmB,CACzC,YAAY,EACZ,KAAK,EACL,YAAY,CACb;AAED,QAAA,IAAI,eAAe,KAAK,YAAY,EAAE;AACpC,YAAA,eAAe,CAAC,CAAA,GAAA,EAAM,QAAQ,CAAA,oBAAA,CAAsB,CAAC;AAErD,YAAA,OAAO,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC;QAC/B;aAAO;YACL,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,CAAC;AAErD,YAAA,eAAe,CAAC,CAAA,EAAA,EAAK,QAAQ,CAAA,cAAA,CAAgB,CAAC;AAE9C,YAAA,OAAO,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC;QACjC;IACF;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC;AAErC,QAAA,gBAAgB,CAAC,CAAA,EAAA,EAAK,QAAQ,aAAa,MAAM,CAAA,CAAE,CAAC;AAEpD,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;IAC3B;AACF,CAAC;;;;"}
|
package/dist/entry-point.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { appendAsConstTransformer } from './functions/ast-transformers/append-as-const.mjs';
|
|
2
2
|
export { convertInterfaceToTypeTransformer } from './functions/ast-transformers/convert-interface-to-type.mjs';
|
|
3
|
-
export {
|
|
3
|
+
export { convertToReadonlyTransformer } from './functions/ast-transformers/convert-to-readonly.mjs';
|
|
4
4
|
export { compareUnionIntersectionTypes } from './functions/ast-transformers/readonly-transformer-helpers/compare-union-types.mjs';
|
|
5
5
|
export { invalidDeepReadonlyTypeName } from './functions/ast-transformers/readonly-transformer-helpers/constants.mjs';
|
|
6
6
|
export { groupUnionIntersectionTypes } from './functions/ast-transformers/readonly-transformer-helpers/group-union-types.mjs';
|
|
@@ -11,7 +11,7 @@ export { transformSourceCode } from './functions/ast-transformers/transform-sour
|
|
|
11
11
|
export { IGNORE_FILE_COMMENT_PREFIX, IGNORE_LINE_COMMENT_PREFIX } from './functions/constants/ignore-comment-text.mjs';
|
|
12
12
|
export { hasDisableNextLineComment } from './functions/functions/has-disable-next-line-comment.mjs';
|
|
13
13
|
export { isAsConstNode } from './functions/functions/is-as-const-node.mjs';
|
|
14
|
-
export {
|
|
14
|
+
export { isAtomicTypeNode } from './functions/functions/is-atomic-type-node.mjs';
|
|
15
15
|
export { isReadonlyArrayTypeNode, isReadonlyTupleOrArrayTypeNode, isReadonlyTupleTypeNode, isReadonlyTypeReferenceNode, isShallowReadonlyTypeNode } from './functions/functions/is-readonly-node.mjs';
|
|
16
16
|
export { isSpreadNamedTupleMemberNode, isSpreadParameterNode } from './functions/functions/is-spread-parameter-node.mjs';
|
|
17
17
|
export { removeParentheses } from './functions/functions/remove-parentheses.mjs';
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { type TsMorphTransformer } from './types.mjs';
|
|
2
2
|
export declare const appendAsConstTransformer: (options?: AppendAsConstTransformerOptions) => TsMorphTransformer;
|
|
3
3
|
export type AppendAsConstTransformerOptions = DeepReadonly<{
|
|
4
|
+
/**
|
|
5
|
+
* @default "avoidInFunctionArgs"
|
|
6
|
+
*/
|
|
4
7
|
applyLevel?: 'all' | 'avoidInFunctionArgs';
|
|
5
8
|
/**
|
|
6
9
|
* A mute keywords to ignore the readonly conversion.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"append-as-const.d.mts","sourceRoot":"","sources":["../../../src/functions/ast-transformers/append-as-const.mts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAItD,eAAO,MAAM,wBAAwB,GACnC,UAAU,+BAA+B,KACxC,kBAkCF,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG,YAAY,CAAC;IACzD,UAAU,CAAC,EAAE,KAAK,GAAG,qBAAqB,CAAC;IAE3C;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAK1B,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":"AAOA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAItD,eAAO,MAAM,wBAAwB,GACnC,UAAU,+BAA+B,KACxC,kBAkCF,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;IAK1B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ISet, Arr
|
|
1
|
+
import { ISet, Arr } from 'ts-data-forge';
|
|
2
2
|
import * as tsm from 'ts-morph';
|
|
3
3
|
import { hasDisableNextLineComment } from '../functions/has-disable-next-line-comment.mjs';
|
|
4
4
|
import { isAsConstNode } from '../functions/is-as-const-node.mjs';
|
|
5
|
-
import '../functions/is-
|
|
5
|
+
import '../functions/is-atomic-type-node.mjs';
|
|
6
6
|
import { replaceNodeWithDebugPrint } from '../utils/replace-with-debug.mjs';
|
|
7
7
|
|
|
8
8
|
const TRANSFORMER_NAME = 'append-as-const';
|
|
@@ -16,55 +16,24 @@ const appendAsConstTransformer = (options) => {
|
|
|
16
16
|
? replaceNodeWithDebugPrint
|
|
17
17
|
: (node, newNodeText) => node.replaceWithText(newNodeText),
|
|
18
18
|
};
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
19
|
+
return {
|
|
20
|
+
name: TRANSFORMER_NAME,
|
|
21
|
+
transform: (sourceAst) => {
|
|
22
|
+
for (const node of sourceAst.getDescendantsOfKind(tsm.SyntaxKind.VariableDeclaration)) {
|
|
23
|
+
transformNode(node, {
|
|
24
|
+
isUnderConstContext: false,
|
|
25
|
+
isDirectUnderConstInitializer: false,
|
|
26
|
+
isUnderSpreadElement: false,
|
|
27
|
+
}, optionsInternal);
|
|
28
|
+
}
|
|
29
|
+
},
|
|
27
30
|
};
|
|
28
|
-
// eslint-disable-next-line functional/immutable-data
|
|
29
|
-
transformer.transformerName = TRANSFORMER_NAME;
|
|
30
|
-
return transformer;
|
|
31
31
|
};
|
|
32
32
|
const transformNode = (node, context, options) => {
|
|
33
|
-
|
|
34
|
-
if (node.isKind(tsm.SyntaxKind.LiteralType) ||
|
|
35
|
-
node.isKind(tsm.SyntaxKind.TypeLiteral) ||
|
|
36
|
-
node.isKind(tsm.SyntaxKind.TypeReference) ||
|
|
37
|
-
node.isKind(tsm.SyntaxKind.UnionType) ||
|
|
38
|
-
node.isKind(tsm.SyntaxKind.TypeAliasDeclaration) ||
|
|
39
|
-
node.isKind(tsm.SyntaxKind.ImportDeclaration) ||
|
|
40
|
-
isDirective(node)) {
|
|
41
|
-
return; // skip type annotations, import declarations, and directives
|
|
42
|
-
}
|
|
43
|
-
if (hasDisableNextLineComment(node, TRANSFORMER_NAME)) {
|
|
44
|
-
options.debugPrint('skipped by disable-next-line comment');
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
if (options.applyLevel === 'avoidInFunctionArgs' &&
|
|
48
|
-
tsm.Node.isCallExpression(node)) {
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
if (node.isKind(tsm.SyntaxKind.NoSubstitutionTemplateLiteral) || // `abc`
|
|
52
|
-
node.isKind(tsm.SyntaxKind.NumericLiteral) || // 123
|
|
53
|
-
node.isKind(tsm.SyntaxKind.BigIntLiteral) || // 123n
|
|
54
|
-
node.isKind(tsm.SyntaxKind.StringLiteral) || // 'abc'
|
|
55
|
-
node.isKind(tsm.SyntaxKind.TrueKeyword) || // true
|
|
56
|
-
node.isKind(tsm.SyntaxKind.FalseKeyword) // false
|
|
57
|
-
) {
|
|
58
|
-
if (context.isDirectUnderConstInitializer || context.isUnderConstContext) {
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
options.replaceNode(node, `${node.getText()} as const`);
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
if (node.isKind(tsm.SyntaxKind.TemplateExpression)) {
|
|
65
|
-
options.replaceNode(node, `${node.getText()} as const`);
|
|
33
|
+
if (node.wasForgotten()) {
|
|
66
34
|
return;
|
|
67
35
|
}
|
|
36
|
+
options.debugPrint(node.getKindName(), node.getText(), { context });
|
|
68
37
|
if (node.isKind(tsm.SyntaxKind.VariableDeclaration)) {
|
|
69
38
|
const nodeName = node.getName();
|
|
70
39
|
// check for ignorePrefix
|
|
@@ -74,6 +43,11 @@ const transformNode = (node, context, options) => {
|
|
|
74
43
|
options.debugPrint('skipped variable declaration by ignorePrefixes');
|
|
75
44
|
return;
|
|
76
45
|
}
|
|
46
|
+
const variableStatement = node.getVariableStatement();
|
|
47
|
+
if (variableStatement !== undefined &&
|
|
48
|
+
hasDisableNextLineComment(variableStatement, TRANSFORMER_NAME)) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
77
51
|
const initializer = node.getInitializer();
|
|
78
52
|
if (initializer === undefined) {
|
|
79
53
|
return;
|
|
@@ -102,6 +76,31 @@ const transformNode = (node, context, options) => {
|
|
|
102
76
|
// // for (const [i, el] of nodeName.elements.entries())
|
|
103
77
|
// }
|
|
104
78
|
}
|
|
79
|
+
if (hasDisableNextLineComment(node, TRANSFORMER_NAME)) {
|
|
80
|
+
options.debugPrint('skipped by disable-next-line comment');
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (options.applyLevel === 'avoidInFunctionArgs' &&
|
|
84
|
+
tsm.Node.isCallExpression(node)) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
if (node.isKind(tsm.SyntaxKind.NoSubstitutionTemplateLiteral) || // `abc`
|
|
88
|
+
node.isKind(tsm.SyntaxKind.NumericLiteral) || // 123
|
|
89
|
+
node.isKind(tsm.SyntaxKind.BigIntLiteral) || // 123n
|
|
90
|
+
node.isKind(tsm.SyntaxKind.StringLiteral) || // 'abc'
|
|
91
|
+
node.isKind(tsm.SyntaxKind.TrueKeyword) || // true
|
|
92
|
+
node.isKind(tsm.SyntaxKind.FalseKeyword) // false
|
|
93
|
+
) {
|
|
94
|
+
if (context.isDirectUnderConstInitializer || context.isUnderConstContext) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
options.replaceNode(node, `${node.getText()} as const`);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
if (node.isKind(tsm.SyntaxKind.TemplateExpression)) {
|
|
101
|
+
options.replaceNode(node, `${node.getText()} as const`);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
105
104
|
// `as const` node
|
|
106
105
|
if (isAsConstNode(node)) {
|
|
107
106
|
if (context.isDirectUnderConstInitializer) {
|
|
@@ -165,6 +164,22 @@ const transformNode = (node, context, options) => {
|
|
|
165
164
|
transformNode(node.getExpression(), context, options);
|
|
166
165
|
return;
|
|
167
166
|
}
|
|
167
|
+
if (tsm.Node.isSatisfiesExpression(node)) {
|
|
168
|
+
transformNode(node.getExpression(), context, options);
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
if (tsm.Node.isPropertyAssignment(node)) {
|
|
172
|
+
const initializer = node.getInitializer();
|
|
173
|
+
if (initializer !== undefined) {
|
|
174
|
+
transformNode(initializer, context, options);
|
|
175
|
+
}
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
if (tsm.Node.isArrowFunction(node)) {
|
|
179
|
+
const body = node.getBody();
|
|
180
|
+
transformNode(body, context, options);
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
168
183
|
if (tsm.Node.isArrayLiteralExpression(node)) {
|
|
169
184
|
for (const el of node.getElements()) {
|
|
170
185
|
transformNode(el, {
|
|
@@ -189,94 +204,19 @@ const transformNode = (node, context, options) => {
|
|
|
189
204
|
if (!context.isUnderConstContext) {
|
|
190
205
|
options.replaceNode(node, `${node.getText()} as const`);
|
|
191
206
|
}
|
|
192
|
-
return;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
isDirectUnderConstInitializer: false,
|
|
206
|
-
isUnderConstContext: context.isUnderConstContext,
|
|
207
|
-
isUnderSpreadElement: context.isUnderSpreadElement,
|
|
208
|
-
}, options);
|
|
209
|
-
}
|
|
210
|
-
};
|
|
211
|
-
const transformClassDeclarationNode = (
|
|
212
|
-
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
213
|
-
node, context, options) => {
|
|
214
|
-
for (const mb of node.getMembers()) {
|
|
215
|
-
if (hasDisableNextLineComment(mb)) {
|
|
216
|
-
options.debugPrint('skipped member by disable-next-line comment');
|
|
217
|
-
continue;
|
|
218
|
-
}
|
|
219
|
-
if (mb.isKind(tsm.SyntaxKind.PropertyDeclaration)) {
|
|
220
|
-
if (!checkIfPropertyNameShouldBeIgnored(mb.getNameNode(), options)) {
|
|
221
|
-
const type = mb.getTypeNode();
|
|
222
|
-
if (type !== undefined) {
|
|
223
|
-
transformNode(type, {
|
|
224
|
-
isDirectUnderConstInitializer: false,
|
|
225
|
-
isUnderConstContext: false,
|
|
226
|
-
isUnderSpreadElement: context.isUnderSpreadElement,
|
|
227
|
-
}, options);
|
|
228
|
-
}
|
|
229
|
-
const initializer = mb.getInitializer();
|
|
230
|
-
if (initializer !== undefined) {
|
|
231
|
-
transformNode(initializer, {
|
|
232
|
-
isDirectUnderConstInitializer: false,
|
|
233
|
-
isUnderConstContext: false,
|
|
234
|
-
isUnderSpreadElement: context.isUnderSpreadElement,
|
|
235
|
-
}, options);
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
continue;
|
|
239
|
-
}
|
|
240
|
-
transformNode(mb, {
|
|
241
|
-
isDirectUnderConstInitializer: false,
|
|
242
|
-
isUnderConstContext: false,
|
|
243
|
-
isUnderSpreadElement: context.isUnderSpreadElement,
|
|
244
|
-
}, options);
|
|
245
|
-
}
|
|
246
|
-
};
|
|
247
|
-
const checkIfPropertyNameShouldBeIgnored = (
|
|
248
|
-
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
249
|
-
nameNode, options) => {
|
|
250
|
-
return ((nameNode.isKind(tsm.SyntaxKind.Identifier) &&
|
|
251
|
-
pipe(nameNode.getText()).map((nm) => options.ignoredPrefixes.some((p) => nm.startsWith(p))).value) ||
|
|
252
|
-
(nameNode.isKind(tsm.SyntaxKind.StringLiteral) &&
|
|
253
|
-
pipe(nameNode.getLiteralValue()).map((nm) => options.ignoredPrefixes.some((p) => nm.startsWith(p))).value) ||
|
|
254
|
-
(nameNode.isKind(tsm.SyntaxKind.PrivateIdentifier) &&
|
|
255
|
-
pipe(nameNode.getText()).map((nm) => options.ignoredPrefixes.some((p) => nm.startsWith(`#${p}`))).value) ||
|
|
256
|
-
(nameNode.isKind(tsm.SyntaxKind.ComputedPropertyName) &&
|
|
257
|
-
pipe(nameNode.getExpression()).map((exp) => {
|
|
258
|
-
if (exp.isKind(tsm.SyntaxKind.StringLiteral)) {
|
|
259
|
-
const nm = exp.getLiteralValue();
|
|
260
|
-
return options.ignoredPrefixes.some((p) => nm.startsWith(p));
|
|
261
|
-
}
|
|
262
|
-
return false;
|
|
263
|
-
}).value));
|
|
264
|
-
};
|
|
265
|
-
const isDirective = (node) => {
|
|
266
|
-
if (!tsm.Node.isStringLiteral(node))
|
|
267
|
-
return false;
|
|
268
|
-
const parent = node.getParent();
|
|
269
|
-
// 1. 親が ExpressionStatement であることを確認
|
|
270
|
-
if (tsm.Node.isExpressionStatement(parent)) {
|
|
271
|
-
// 2. その ExpressionStatement の子がこの StringLiteral だけである
|
|
272
|
-
// かつ、ソースファイルやブロックの先頭付近にある
|
|
273
|
-
const expression = parent.getExpression();
|
|
274
|
-
if (expression === node) {
|
|
275
|
-
// "use strict" や "use client" などの文字列そのものが文(Statement)になっている
|
|
276
|
-
return true;
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
return false;
|
|
207
|
+
// return;
|
|
208
|
+
}
|
|
209
|
+
// for (const child of node.getChildren()) {
|
|
210
|
+
// transformNode(
|
|
211
|
+
// child,
|
|
212
|
+
// {
|
|
213
|
+
// isDirectUnderConstInitializer: false,
|
|
214
|
+
// isUnderConstContext: context.isUnderConstContext,
|
|
215
|
+
// isUnderSpreadElement: context.isUnderSpreadElement,
|
|
216
|
+
// },
|
|
217
|
+
// options,
|
|
218
|
+
// );
|
|
219
|
+
// }
|
|
280
220
|
};
|
|
281
221
|
|
|
282
222
|
export { appendAsConstTransformer };
|