@nestia/core 2.4.3 → 3.0.0-dev.20231209

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 (67) hide show
  1. package/lib/decorators/EncryptedBody.js +13 -11
  2. package/lib/decorators/EncryptedBody.js.map +1 -1
  3. package/lib/decorators/EncryptedRoute.js +29 -12
  4. package/lib/decorators/EncryptedRoute.js.map +1 -1
  5. package/lib/decorators/internal/get_binary_body.d.ts +1 -0
  6. package/lib/decorators/internal/get_binary_body.js +66 -0
  7. package/lib/decorators/internal/get_binary_body.js.map +1 -0
  8. package/package.json +3 -3
  9. package/src/decorators/DynamicModule.ts +39 -39
  10. package/src/decorators/EncryptedBody.ts +17 -12
  11. package/src/decorators/EncryptedController.ts +38 -38
  12. package/src/decorators/EncryptedModule.ts +79 -79
  13. package/src/decorators/EncryptedRoute.ts +38 -14
  14. package/src/decorators/PlainBody.ts +72 -72
  15. package/src/decorators/TypedBody.ts +59 -59
  16. package/src/decorators/TypedException.ts +89 -89
  17. package/src/decorators/TypedHeaders.ts +69 -69
  18. package/src/decorators/TypedParam.ts +65 -65
  19. package/src/decorators/TypedQuery.ts +246 -246
  20. package/src/decorators/TypedRoute.ts +144 -144
  21. package/src/decorators/internal/EncryptedConstant.ts +4 -4
  22. package/src/decorators/internal/NoTransformConfigureError.ts +8 -8
  23. package/src/decorators/internal/get_binary_body.ts +18 -0
  24. package/src/decorators/internal/get_path_and_querify.ts +103 -103
  25. package/src/decorators/internal/get_path_and_stringify.ts +91 -91
  26. package/src/decorators/internal/get_text_body.ts +20 -20
  27. package/src/decorators/internal/headers_to_object.ts +13 -13
  28. package/src/decorators/internal/load_controller.ts +51 -51
  29. package/src/decorators/internal/route_error.ts +45 -45
  30. package/src/decorators/internal/validate_request_body.ts +57 -57
  31. package/src/decorators/internal/validate_request_headers.ts +68 -68
  32. package/src/decorators/internal/validate_request_query.ts +56 -56
  33. package/src/index.ts +5 -5
  34. package/src/module.ts +14 -14
  35. package/src/options/INestiaTransformOptions.ts +17 -17
  36. package/src/options/INestiaTransformProject.ts +7 -7
  37. package/src/options/IRequestBodyValidator.ts +20 -20
  38. package/src/options/IRequestHeadersValidator.ts +22 -22
  39. package/src/options/IRequestQueryValidator.ts +20 -20
  40. package/src/options/IResponseBodyQuerifier.ts +25 -25
  41. package/src/options/IResponseBodyStringifier.ts +25 -25
  42. package/src/programmers/PlainBodyProgrammer.ts +52 -52
  43. package/src/programmers/TypedBodyProgrammer.ts +108 -108
  44. package/src/programmers/TypedExceptionProgrammer.ts +72 -72
  45. package/src/programmers/TypedHeadersProgrammer.ts +56 -56
  46. package/src/programmers/TypedParamProgrammer.ts +24 -24
  47. package/src/programmers/TypedQueryBodyProgrammer.ts +56 -56
  48. package/src/programmers/TypedQueryProgrammer.ts +56 -56
  49. package/src/programmers/TypedQueryRouteProgrammer.ts +51 -51
  50. package/src/programmers/TypedRouteProgrammer.ts +51 -51
  51. package/src/programmers/http/HttpAssertQuerifyProgrammer.ts +58 -58
  52. package/src/programmers/http/HttpIsQuerifyProgrammer.ts +62 -62
  53. package/src/programmers/http/HttpQuerifyProgrammer.ts +96 -96
  54. package/src/programmers/http/HttpValidateQuerifyProgrammer.ts +63 -63
  55. package/src/programmers/internal/CoreMetadataUtil.ts +21 -21
  56. package/src/transform.ts +35 -35
  57. package/src/transformers/FileTransformer.ts +66 -66
  58. package/src/transformers/MethodTransformer.ts +94 -94
  59. package/src/transformers/NodeTransformer.ts +16 -16
  60. package/src/transformers/ParameterDecoratorTransformer.ts +121 -121
  61. package/src/transformers/ParameterTransformer.ts +48 -48
  62. package/src/transformers/TypedExceptionTransformer.ts +49 -49
  63. package/src/transformers/TypedRouteTransformer.ts +95 -95
  64. package/src/typings/Creator.ts +3 -3
  65. package/src/utils/ExceptionManager.ts +112 -112
  66. package/src/utils/Singleton.ts +20 -20
  67. package/src/utils/SourceFinder.ts +57 -57
@@ -1,62 +1,62 @@
1
- import ts from "typescript";
2
- import { IdentifierFactory } from "typia/lib/factories/IdentifierFactory";
3
- import { StatementFactory } from "typia/lib/factories/StatementFactory";
4
- import { IsProgrammer } from "typia/lib/programmers/IsProgrammer";
5
- import { IProject } from "typia/lib/transformers/IProject";
6
-
7
- import { HttpQuerifyProgrammer } from "./HttpQuerifyProgrammer";
8
-
9
- export namespace HttpIsQuerifyProgrammer {
10
- export const write =
11
- (project: IProject) =>
12
- (modulo: ts.LeftHandSideExpression) =>
13
- (type: ts.Type): ts.ArrowFunction =>
14
- ts.factory.createArrowFunction(
15
- undefined,
16
- undefined,
17
- [IdentifierFactory.parameter("input")],
18
- undefined,
19
- undefined,
20
- ts.factory.createBlock([
21
- StatementFactory.constant(
22
- "is",
23
- IsProgrammer.write({
24
- ...project,
25
- options: {
26
- ...project.options,
27
- functional: false,
28
- numeric: false,
29
- },
30
- })(modulo)(false)(type),
31
- ),
32
- StatementFactory.constant(
33
- "stringify",
34
- HttpQuerifyProgrammer.write({
35
- ...project,
36
- options: {
37
- ...project.options,
38
- functional: false,
39
- numeric: false,
40
- },
41
- })(modulo)(type),
42
- ),
43
- ts.factory.createReturnStatement(
44
- ts.factory.createConditionalExpression(
45
- ts.factory.createCallExpression(
46
- ts.factory.createIdentifier("is"),
47
- undefined,
48
- [ts.factory.createIdentifier("input")],
49
- ),
50
- undefined,
51
- ts.factory.createCallExpression(
52
- ts.factory.createIdentifier("stringify"),
53
- undefined,
54
- [ts.factory.createIdentifier("input")],
55
- ),
56
- undefined,
57
- ts.factory.createNull(),
58
- ),
59
- ),
60
- ]),
61
- );
62
- }
1
+ import ts from "typescript";
2
+ import { IdentifierFactory } from "typia/lib/factories/IdentifierFactory";
3
+ import { StatementFactory } from "typia/lib/factories/StatementFactory";
4
+ import { IsProgrammer } from "typia/lib/programmers/IsProgrammer";
5
+ import { IProject } from "typia/lib/transformers/IProject";
6
+
7
+ import { HttpQuerifyProgrammer } from "./HttpQuerifyProgrammer";
8
+
9
+ export namespace HttpIsQuerifyProgrammer {
10
+ export const write =
11
+ (project: IProject) =>
12
+ (modulo: ts.LeftHandSideExpression) =>
13
+ (type: ts.Type): ts.ArrowFunction =>
14
+ ts.factory.createArrowFunction(
15
+ undefined,
16
+ undefined,
17
+ [IdentifierFactory.parameter("input")],
18
+ undefined,
19
+ undefined,
20
+ ts.factory.createBlock([
21
+ StatementFactory.constant(
22
+ "is",
23
+ IsProgrammer.write({
24
+ ...project,
25
+ options: {
26
+ ...project.options,
27
+ functional: false,
28
+ numeric: false,
29
+ },
30
+ })(modulo)(false)(type),
31
+ ),
32
+ StatementFactory.constant(
33
+ "stringify",
34
+ HttpQuerifyProgrammer.write({
35
+ ...project,
36
+ options: {
37
+ ...project.options,
38
+ functional: false,
39
+ numeric: false,
40
+ },
41
+ })(modulo)(type),
42
+ ),
43
+ ts.factory.createReturnStatement(
44
+ ts.factory.createConditionalExpression(
45
+ ts.factory.createCallExpression(
46
+ ts.factory.createIdentifier("is"),
47
+ undefined,
48
+ [ts.factory.createIdentifier("input")],
49
+ ),
50
+ undefined,
51
+ ts.factory.createCallExpression(
52
+ ts.factory.createIdentifier("stringify"),
53
+ undefined,
54
+ [ts.factory.createIdentifier("input")],
55
+ ),
56
+ undefined,
57
+ ts.factory.createNull(),
58
+ ),
59
+ ),
60
+ ]),
61
+ );
62
+ }
@@ -1,96 +1,96 @@
1
- import ts from "typescript";
2
- import { IdentifierFactory } from "typia/lib/factories/IdentifierFactory";
3
- import { MetadataCollection } from "typia/lib/factories/MetadataCollection";
4
- import { MetadataFactory } from "typia/lib/factories/MetadataFactory";
5
- import { StatementFactory } from "typia/lib/factories/StatementFactory";
6
- import { FunctionImporter } from "typia/lib/programmers/helpers/FunctionImporeter";
7
- import { HttpQueryProgrammer } from "typia/lib/programmers/http/HttpQueryProgrammer";
8
- import { Metadata } from "typia/lib/schemas/metadata/Metadata";
9
- import { MetadataObject } from "typia/lib/schemas/metadata/MetadataObject";
10
- import { IProject } from "typia/lib/transformers/IProject";
11
- import { TransformerError } from "typia/lib/transformers/TransformerError";
12
-
13
- export namespace HttpQuerifyProgrammer {
14
- export const write =
15
- (project: IProject) =>
16
- (modulo: ts.LeftHandSideExpression) =>
17
- (type: ts.Type): ts.ArrowFunction => {
18
- // GET OBJECT TYPE
19
- const importer: FunctionImporter = new FunctionImporter(modulo.getText());
20
- const collection: MetadataCollection = new MetadataCollection();
21
- const result = MetadataFactory.analyze(project.checker)({
22
- escape: false,
23
- constant: true,
24
- absorb: true,
25
- validate: HttpQueryProgrammer.validate,
26
- })(collection)(type);
27
- if (result.success === false)
28
- throw TransformerError.from(
29
- `@nestia.core.TypedQuery.${importer.method}`,
30
- )(result.errors);
31
-
32
- const object: MetadataObject = result.data.objects[0]!;
33
- return ts.factory.createArrowFunction(
34
- undefined,
35
- undefined,
36
- [IdentifierFactory.parameter("input")],
37
- undefined,
38
- undefined,
39
- ts.factory.createBlock(
40
- [
41
- ...importer.declare(modulo),
42
- StatementFactory.constant(
43
- "output",
44
- ts.factory.createNewExpression(
45
- ts.factory.createIdentifier("URLSearchParams"),
46
- undefined,
47
- [],
48
- ),
49
- ),
50
- ...object.properties.map((p) =>
51
- ts.factory.createExpressionStatement(
52
- decode(p.key.constants[0]!.values[0] as string)(p.value),
53
- ),
54
- ),
55
- ts.factory.createReturnStatement(
56
- ts.factory.createIdentifier("output"),
57
- ),
58
- ],
59
- true,
60
- ),
61
- );
62
- };
63
-
64
- const decode =
65
- (key: string) =>
66
- (value: Metadata): ts.CallExpression =>
67
- !!value.arrays.length
68
- ? ts.factory.createCallExpression(
69
- IdentifierFactory.access(
70
- IdentifierFactory.access(ts.factory.createIdentifier("input"))(
71
- key,
72
- ),
73
- )("forEach"),
74
- undefined,
75
- [
76
- ts.factory.createArrowFunction(
77
- undefined,
78
- undefined,
79
- [IdentifierFactory.parameter("elem")],
80
- undefined,
81
- undefined,
82
- append(key)(ts.factory.createIdentifier("elem")),
83
- ),
84
- ],
85
- )
86
- : append(key)(
87
- IdentifierFactory.access(ts.factory.createIdentifier("input"))(key),
88
- );
89
-
90
- const append = (key: string) => (elem: ts.Expression) =>
91
- ts.factory.createCallExpression(
92
- IdentifierFactory.access(ts.factory.createIdentifier("output"))("append"),
93
- undefined,
94
- [ts.factory.createStringLiteral(key), elem],
95
- );
96
- }
1
+ import ts from "typescript";
2
+ import { IdentifierFactory } from "typia/lib/factories/IdentifierFactory";
3
+ import { MetadataCollection } from "typia/lib/factories/MetadataCollection";
4
+ import { MetadataFactory } from "typia/lib/factories/MetadataFactory";
5
+ import { StatementFactory } from "typia/lib/factories/StatementFactory";
6
+ import { FunctionImporter } from "typia/lib/programmers/helpers/FunctionImporeter";
7
+ import { HttpQueryProgrammer } from "typia/lib/programmers/http/HttpQueryProgrammer";
8
+ import { Metadata } from "typia/lib/schemas/metadata/Metadata";
9
+ import { MetadataObject } from "typia/lib/schemas/metadata/MetadataObject";
10
+ import { IProject } from "typia/lib/transformers/IProject";
11
+ import { TransformerError } from "typia/lib/transformers/TransformerError";
12
+
13
+ export namespace HttpQuerifyProgrammer {
14
+ export const write =
15
+ (project: IProject) =>
16
+ (modulo: ts.LeftHandSideExpression) =>
17
+ (type: ts.Type): ts.ArrowFunction => {
18
+ // GET OBJECT TYPE
19
+ const importer: FunctionImporter = new FunctionImporter(modulo.getText());
20
+ const collection: MetadataCollection = new MetadataCollection();
21
+ const result = MetadataFactory.analyze(project.checker)({
22
+ escape: false,
23
+ constant: true,
24
+ absorb: true,
25
+ validate: HttpQueryProgrammer.validate,
26
+ })(collection)(type);
27
+ if (result.success === false)
28
+ throw TransformerError.from(
29
+ `@nestia.core.TypedQuery.${importer.method}`,
30
+ )(result.errors);
31
+
32
+ const object: MetadataObject = result.data.objects[0]!;
33
+ return ts.factory.createArrowFunction(
34
+ undefined,
35
+ undefined,
36
+ [IdentifierFactory.parameter("input")],
37
+ undefined,
38
+ undefined,
39
+ ts.factory.createBlock(
40
+ [
41
+ ...importer.declare(modulo),
42
+ StatementFactory.constant(
43
+ "output",
44
+ ts.factory.createNewExpression(
45
+ ts.factory.createIdentifier("URLSearchParams"),
46
+ undefined,
47
+ [],
48
+ ),
49
+ ),
50
+ ...object.properties.map((p) =>
51
+ ts.factory.createExpressionStatement(
52
+ decode(p.key.constants[0]!.values[0] as string)(p.value),
53
+ ),
54
+ ),
55
+ ts.factory.createReturnStatement(
56
+ ts.factory.createIdentifier("output"),
57
+ ),
58
+ ],
59
+ true,
60
+ ),
61
+ );
62
+ };
63
+
64
+ const decode =
65
+ (key: string) =>
66
+ (value: Metadata): ts.CallExpression =>
67
+ !!value.arrays.length
68
+ ? ts.factory.createCallExpression(
69
+ IdentifierFactory.access(
70
+ IdentifierFactory.access(ts.factory.createIdentifier("input"))(
71
+ key,
72
+ ),
73
+ )("forEach"),
74
+ undefined,
75
+ [
76
+ ts.factory.createArrowFunction(
77
+ undefined,
78
+ undefined,
79
+ [IdentifierFactory.parameter("elem")],
80
+ undefined,
81
+ undefined,
82
+ append(key)(ts.factory.createIdentifier("elem")),
83
+ ),
84
+ ],
85
+ )
86
+ : append(key)(
87
+ IdentifierFactory.access(ts.factory.createIdentifier("input"))(key),
88
+ );
89
+
90
+ const append = (key: string) => (elem: ts.Expression) =>
91
+ ts.factory.createCallExpression(
92
+ IdentifierFactory.access(ts.factory.createIdentifier("output"))("append"),
93
+ undefined,
94
+ [ts.factory.createStringLiteral(key), elem],
95
+ );
96
+ }
@@ -1,63 +1,63 @@
1
- import ts from "typescript";
2
- import { IdentifierFactory } from "typia/lib/factories/IdentifierFactory";
3
- import { StatementFactory } from "typia/lib/factories/StatementFactory";
4
- import { ValidateProgrammer } from "typia/lib/programmers/ValidateProgrammer";
5
- import { IProject } from "typia/lib/transformers/IProject";
6
-
7
- import { HttpQuerifyProgrammer } from "./HttpQuerifyProgrammer";
8
-
9
- export namespace HttpValidateQuerifyProgrammer {
10
- export const write =
11
- (project: IProject) =>
12
- (modulo: ts.LeftHandSideExpression) =>
13
- (type: ts.Type, name?: string): ts.ArrowFunction =>
14
- ts.factory.createArrowFunction(
15
- undefined,
16
- undefined,
17
- [IdentifierFactory.parameter("input")],
18
- undefined,
19
- undefined,
20
- ts.factory.createBlock([
21
- StatementFactory.constant(
22
- "validate",
23
- ValidateProgrammer.write({
24
- ...project,
25
- options: {
26
- ...project.options,
27
- functional: false,
28
- numeric: true,
29
- },
30
- })(modulo)(false)(type, name),
31
- ),
32
- StatementFactory.constant(
33
- "query",
34
- HttpQuerifyProgrammer.write({
35
- ...project,
36
- options: {
37
- ...project.options,
38
- functional: false,
39
- numeric: false,
40
- },
41
- })(modulo)(type),
42
- ),
43
- StatementFactory.constant(
44
- "output",
45
- ts.factory.createCallExpression(
46
- ts.factory.createIdentifier("query"),
47
- undefined,
48
- [ts.factory.createIdentifier("input")],
49
- ),
50
- ),
51
- ts.factory.createReturnStatement(
52
- ts.factory.createAsExpression(
53
- ts.factory.createCallExpression(
54
- ts.factory.createIdentifier("validate"),
55
- undefined,
56
- [ts.factory.createIdentifier("output")],
57
- ),
58
- ts.factory.createTypeReferenceNode("any"),
59
- ),
60
- ),
61
- ]),
62
- );
63
- }
1
+ import ts from "typescript";
2
+ import { IdentifierFactory } from "typia/lib/factories/IdentifierFactory";
3
+ import { StatementFactory } from "typia/lib/factories/StatementFactory";
4
+ import { ValidateProgrammer } from "typia/lib/programmers/ValidateProgrammer";
5
+ import { IProject } from "typia/lib/transformers/IProject";
6
+
7
+ import { HttpQuerifyProgrammer } from "./HttpQuerifyProgrammer";
8
+
9
+ export namespace HttpValidateQuerifyProgrammer {
10
+ export const write =
11
+ (project: IProject) =>
12
+ (modulo: ts.LeftHandSideExpression) =>
13
+ (type: ts.Type, name?: string): ts.ArrowFunction =>
14
+ ts.factory.createArrowFunction(
15
+ undefined,
16
+ undefined,
17
+ [IdentifierFactory.parameter("input")],
18
+ undefined,
19
+ undefined,
20
+ ts.factory.createBlock([
21
+ StatementFactory.constant(
22
+ "validate",
23
+ ValidateProgrammer.write({
24
+ ...project,
25
+ options: {
26
+ ...project.options,
27
+ functional: false,
28
+ numeric: true,
29
+ },
30
+ })(modulo)(false)(type, name),
31
+ ),
32
+ StatementFactory.constant(
33
+ "query",
34
+ HttpQuerifyProgrammer.write({
35
+ ...project,
36
+ options: {
37
+ ...project.options,
38
+ functional: false,
39
+ numeric: false,
40
+ },
41
+ })(modulo)(type),
42
+ ),
43
+ StatementFactory.constant(
44
+ "output",
45
+ ts.factory.createCallExpression(
46
+ ts.factory.createIdentifier("query"),
47
+ undefined,
48
+ [ts.factory.createIdentifier("input")],
49
+ ),
50
+ ),
51
+ ts.factory.createReturnStatement(
52
+ ts.factory.createAsExpression(
53
+ ts.factory.createCallExpression(
54
+ ts.factory.createIdentifier("validate"),
55
+ undefined,
56
+ [ts.factory.createIdentifier("output")],
57
+ ),
58
+ ts.factory.createTypeReferenceNode("any"),
59
+ ),
60
+ ),
61
+ ]),
62
+ );
63
+ }
@@ -1,21 +1,21 @@
1
- import { Metadata } from "typia/lib/schemas/metadata/Metadata";
2
-
3
- export namespace CoreMetadataUtil {
4
- export const atomics = (
5
- meta: Metadata,
6
- ): Set<"boolean" | "bigint" | "number" | "string"> =>
7
- new Set([
8
- ...meta.atomics.map((a) => a.type),
9
- ...meta.constants.map((c) => c.type),
10
- ...(meta.templates.length ? (["string"] as const) : []),
11
- ]);
12
-
13
- export const isUnion = (meta: Metadata): boolean =>
14
- atomics(meta).size +
15
- meta.arrays.length +
16
- meta.tuples.length +
17
- meta.natives.length +
18
- meta.maps.length +
19
- meta.objects.length >
20
- 1;
21
- }
1
+ import { Metadata } from "typia/lib/schemas/metadata/Metadata";
2
+
3
+ export namespace CoreMetadataUtil {
4
+ export const atomics = (
5
+ meta: Metadata,
6
+ ): Set<"boolean" | "bigint" | "number" | "string"> =>
7
+ new Set([
8
+ ...meta.atomics.map((a) => a.type),
9
+ ...meta.constants.map((c) => c.type),
10
+ ...(meta.templates.length ? (["string"] as const) : []),
11
+ ]);
12
+
13
+ export const isUnion = (meta: Metadata): boolean =>
14
+ atomics(meta).size +
15
+ meta.arrays.length +
16
+ meta.tuples.length +
17
+ meta.natives.length +
18
+ meta.maps.length +
19
+ meta.objects.length >
20
+ 1;
21
+ }
package/src/transform.ts CHANGED
@@ -1,35 +1,35 @@
1
- import ts from "typescript";
2
- import { IProject } from "typia/lib/transformers/IProject";
3
-
4
- import { INestiaTransformOptions } from "./options/INestiaTransformOptions";
5
- import { FileTransformer } from "./transformers/FileTransformer";
6
-
7
- export const transform = (
8
- program: ts.Program,
9
- options: INestiaTransformOptions | undefined,
10
- extras: IProject["extras"],
11
- ): ts.TransformerFactory<ts.SourceFile> => {
12
- const compilerOptions: ts.CompilerOptions = program.getCompilerOptions();
13
- const strict: boolean =
14
- compilerOptions.strictNullChecks !== undefined
15
- ? !!compilerOptions.strictNullChecks
16
- : !!compilerOptions.strict;
17
- if (strict === false)
18
- extras.addDiagnostic({
19
- category: ts.DiagnosticCategory.Error,
20
- code: "(@nestia/core)" as any,
21
- file: undefined,
22
- start: undefined,
23
- length: undefined,
24
- messageText: "strict mode is required.",
25
- });
26
- return FileTransformer.transform({
27
- program,
28
- compilerOptions,
29
- checker: program.getTypeChecker(),
30
- printer: ts.createPrinter(),
31
- options: options ?? {},
32
- extras,
33
- });
34
- };
35
- export default transform;
1
+ import ts from "typescript";
2
+ import { IProject } from "typia/lib/transformers/IProject";
3
+
4
+ import { INestiaTransformOptions } from "./options/INestiaTransformOptions";
5
+ import { FileTransformer } from "./transformers/FileTransformer";
6
+
7
+ export const transform = (
8
+ program: ts.Program,
9
+ options: INestiaTransformOptions | undefined,
10
+ extras: IProject["extras"],
11
+ ): ts.TransformerFactory<ts.SourceFile> => {
12
+ const compilerOptions: ts.CompilerOptions = program.getCompilerOptions();
13
+ const strict: boolean =
14
+ compilerOptions.strictNullChecks !== undefined
15
+ ? !!compilerOptions.strictNullChecks
16
+ : !!compilerOptions.strict;
17
+ if (strict === false)
18
+ extras.addDiagnostic({
19
+ category: ts.DiagnosticCategory.Error,
20
+ code: "(@nestia/core)" as any,
21
+ file: undefined,
22
+ start: undefined,
23
+ length: undefined,
24
+ messageText: "strict mode is required.",
25
+ });
26
+ return FileTransformer.transform({
27
+ program,
28
+ compilerOptions,
29
+ checker: program.getTypeChecker(),
30
+ printer: ts.createPrinter(),
31
+ options: options ?? {},
32
+ extras,
33
+ });
34
+ };
35
+ export default transform;