@nestia/migrate 13.0.4 → 14.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/analyzers/NestiaMigrateControllerAnalyzer.d.ts +13 -0
- package/lib/analyzers/NestiaMigrateControllerAnalyzer.js +32 -2
- package/lib/analyzers/NestiaMigrateControllerAnalyzer.js.map +1 -1
- package/lib/analyzers/NestiaMigrateControllerAnalyzer.mjs +14 -2
- package/lib/bundles/NEST_TEMPLATE.js +1 -1
- package/lib/bundles/NEST_TEMPLATE.js.map +1 -1
- package/lib/bundles/NEST_TEMPLATE.mjs +1 -1
- package/lib/bundles/SDK_TEMPLATE.js +1 -1
- package/lib/bundles/SDK_TEMPLATE.js.map +1 -1
- package/lib/bundles/SDK_TEMPLATE.mjs +1 -1
- package/lib/executable/NestiaMigrateCommander.js +5 -1
- package/lib/executable/NestiaMigrateCommander.js.map +1 -1
- package/lib/executable/NestiaMigrateCommander.mjs +1 -1
- package/lib/executable/NestiaMigrateInquirer.js +7 -25
- package/lib/executable/NestiaMigrateInquirer.js.map +1 -1
- package/lib/executable/NestiaMigrateInquirer.mjs +5 -7
- package/lib/programmers/NestiaMigrateApiFunctionProgrammer.js +7 -5
- package/lib/programmers/NestiaMigrateApiFunctionProgrammer.js.map +1 -1
- package/lib/programmers/NestiaMigrateApiFunctionProgrammer.mjs +4 -2
- package/lib/programmers/NestiaMigrateApiNamespaceProgrammer.js +31 -13
- package/lib/programmers/NestiaMigrateApiNamespaceProgrammer.js.map +1 -1
- package/lib/programmers/NestiaMigrateApiNamespaceProgrammer.mjs +17 -8
- package/lib/programmers/NestiaMigrateApiSimulationProgrammer.js +24 -22
- package/lib/programmers/NestiaMigrateApiSimulationProgrammer.js.map +1 -1
- package/lib/programmers/NestiaMigrateApiSimulationProgrammer.mjs +13 -20
- package/lib/programmers/NestiaMigrateE2eFileProgrammer.js +20 -5
- package/lib/programmers/NestiaMigrateE2eFileProgrammer.js.map +1 -1
- package/lib/programmers/NestiaMigrateE2eFileProgrammer.mjs +6 -2
- package/lib/programmers/NestiaMigrateNestMethodProgrammer.js +69 -13
- package/lib/programmers/NestiaMigrateNestMethodProgrammer.js.map +1 -1
- package/lib/programmers/NestiaMigrateNestMethodProgrammer.mjs +46 -9
- package/lib/programmers/NestiaMigrateSchemaProgrammer.js +25 -4
- package/lib/programmers/NestiaMigrateSchemaProgrammer.js.map +1 -1
- package/lib/programmers/NestiaMigrateSchemaProgrammer.mjs +15 -4
- package/lib/utils/PathTemplate.d.ts +19 -0
- package/lib/utils/PathTemplate.js +42 -0
- package/lib/utils/PathTemplate.js.map +1 -0
- package/lib/utils/PathTemplate.mjs +34 -0
- package/lib/utils/PathTemplate.mjs.map +1 -0
- package/lib/utils/RequestBody.d.ts +9 -0
- package/lib/utils/RequestBody.js +16 -0
- package/lib/utils/RequestBody.js.map +1 -0
- package/lib/utils/RequestBody.mjs +9 -0
- package/lib/utils/RequestBody.mjs.map +1 -0
- package/lib/utils/SuccessStatus.d.ts +14 -0
- package/lib/utils/SuccessStatus.js +28 -0
- package/lib/utils/SuccessStatus.js.map +1 -0
- package/lib/utils/SuccessStatus.mjs +14 -0
- package/lib/utils/SuccessStatus.mjs.map +1 -0
- package/package.json +4 -4
- package/src/analyzers/NestiaMigrateControllerAnalyzer.ts +39 -2
- package/src/bundles/NEST_TEMPLATE.ts +1 -1
- package/src/bundles/SDK_TEMPLATE.ts +1 -1
- package/src/executable/NestiaMigrateCommander.ts +7 -1
- package/src/executable/NestiaMigrateInquirer.ts +12 -26
- package/src/programmers/NestiaMigrateApiFunctionProgrammer.ts +10 -4
- package/src/programmers/NestiaMigrateApiNamespaceProgrammer.ts +41 -20
- package/src/programmers/NestiaMigrateApiSimulationProgrammer.ts +23 -73
- package/src/programmers/NestiaMigrateE2eFileProgrammer.ts +41 -8
- package/src/programmers/NestiaMigrateNestMethodProgrammer.ts +88 -29
- package/src/programmers/NestiaMigrateSchemaProgrammer.ts +28 -10
- package/src/utils/PathTemplate.ts +39 -0
- package/src/utils/RequestBody.ts +14 -0
- package/src/utils/SuccessStatus.ts +29 -0
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { FilePrinter } from "../utils/FilePrinter.mjs";
|
|
2
2
|
import { TypeFactory } from "../factories/TypeFactory.mjs";
|
|
3
3
|
import { IdentifierFactory } from "../factories/IdentifierFactory.mjs";
|
|
4
|
+
import { RequestBody } from "../utils/RequestBody.mjs";
|
|
5
|
+
import { SuccessStatus } from "../utils/SuccessStatus.mjs";
|
|
4
6
|
import { StringUtil } from "../utils/StringUtil.mjs";
|
|
5
7
|
import { NestiaMigrateSchemaProgrammer } from "./NestiaMigrateSchemaProgrammer.mjs";
|
|
6
8
|
import { ExpressionFactory } from "../factories/ExpressionFactory.mjs";
|
|
7
9
|
import { LiteralFactory } from "../factories/LiteralFactory.mjs";
|
|
10
|
+
import { NestiaMigrateControllerAnalyzer } from "../analyzers/NestiaMigrateControllerAnalyzer.mjs";
|
|
8
11
|
import { SyntaxKind, factory } from "@ttsc/factory";
|
|
9
12
|
//#region src/programmers/NestiaMigrateNestMethodProgrammer.ts
|
|
10
13
|
let NestiaMigrateNestMethodProgrammer;
|
|
@@ -41,13 +44,16 @@ let NestiaMigrateNestMethodProgrammer;
|
|
|
41
44
|
const decorators = [];
|
|
42
45
|
if (ctx.route.success) decorators.push(...writeExampleDecorators("Response")(ctx.importer)(ctx.route.success.media()));
|
|
43
46
|
if (ctx.route.operation()["x-samchon-human"] === true) decorators.push(factory.createDecorator(factory.createCallExpression(external("@nestia/core", "HumanRoute"), void 0, void 0)));
|
|
44
|
-
const localPath = ctx.route.
|
|
47
|
+
const localPath = NestiaMigrateControllerAnalyzer.routePath(ctx.route).slice(ctx.controller.path.length).split("/").filter((str) => !!str.length).join("/");
|
|
45
48
|
const router = (instance) => factory.createDecorator(factory.createCallExpression(IdentifierFactory.access(external("@nestia/core", instance), StringUtil.capitalize(ctx.route.method)), [], localPath.length ? [factory.createStringLiteral(localPath)] : void 0));
|
|
49
|
+
const nest = (method) => factory.createDecorator(factory.createCallExpression(external("@nestjs/common", method), [], localPath.length ? [factory.createStringLiteral(localPath)] : void 0));
|
|
46
50
|
if (ctx.route.success?.["x-nestia-encrypted"]) decorators.push(router("EncryptedRoute"));
|
|
47
|
-
else if (ctx.route.success?.type === "text/plain") decorators.push(
|
|
51
|
+
else if (ctx.route.success?.type === "text/plain") decorators.push(nest(StringUtil.capitalize(ctx.route.method)));
|
|
48
52
|
else if (ctx.route.success?.type === "application/x-www-form-urlencoded") decorators.push(router("TypedQuery"));
|
|
49
|
-
else if (ctx.route.method === "head") decorators.push(
|
|
53
|
+
else if (ctx.route.method === "head") decorators.push(nest("Head"));
|
|
50
54
|
else if (ctx.route.success === null || ctx.route.success?.type === "application/json") decorators.push(router("TypedRoute"));
|
|
55
|
+
const status = SuccessStatus.of(ctx.route);
|
|
56
|
+
if (status !== null && status !== SuccessStatus.nest(ctx.route)) decorators.push(factory.createDecorator(factory.createCallExpression(external("@nestjs/common", "HttpCode"), void 0, [ExpressionFactory.number(status)])));
|
|
51
57
|
for (const [key, value] of Object.entries(ctx.route.exceptions ?? {})) decorators.push(factory.createDecorator(factory.createCallExpression(external("@nestia/core", "TypedException"), [NestiaMigrateSchemaProgrammer.write({
|
|
52
58
|
components: ctx.components,
|
|
53
59
|
importer: ctx.importer,
|
|
@@ -95,7 +101,7 @@ let NestiaMigrateNestMethodProgrammer;
|
|
|
95
101
|
})), void 0, void 0))] : []
|
|
96
102
|
})(ctx.components)(ctx.importer)({
|
|
97
103
|
schema: ctx.route.body.schema,
|
|
98
|
-
required:
|
|
104
|
+
required: RequestBody.optional(ctx.route) === false,
|
|
99
105
|
example: ctx.route.body.media().example,
|
|
100
106
|
examples: ctx.route.body.media().examples
|
|
101
107
|
})] : []
|
|
@@ -116,12 +122,43 @@ let NestiaMigrateNestMethodProgrammer;
|
|
|
116
122
|
type: "instance",
|
|
117
123
|
library: "@nestia/core",
|
|
118
124
|
name: "SwaggerExample"
|
|
119
|
-
})), kind), [], [LiteralFactory.write(media.example)]))] : [], ...Object.entries(media.examples ?? {}).
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
125
|
+
})), kind), [], [LiteralFactory.write(media.example)]))] : [], ...Object.entries(media.examples ?? {}).flatMap(([key, example]) => {
|
|
126
|
+
const value = exampleValue(example);
|
|
127
|
+
if (value === null) return [];
|
|
128
|
+
return factory.createDecorator(factory.createCallExpression(IdentifierFactory.access(factory.createIdentifier(importer.external({
|
|
129
|
+
type: "instance",
|
|
130
|
+
library: "@nestia/core",
|
|
131
|
+
name: "SwaggerExample"
|
|
132
|
+
})), kind), [], [factory.createStringLiteral(key), LiteralFactory.write(value.value)]));
|
|
133
|
+
})];
|
|
124
134
|
})(NestiaMigrateNestMethodProgrammer || (NestiaMigrateNestMethodProgrammer = {}));
|
|
135
|
+
/**
|
|
136
|
+
* The value a named example stands for, or `null` when it names none.
|
|
137
|
+
*
|
|
138
|
+
* OpenAPI names examples with Example Objects, whose `value` (or, since 3.2,
|
|
139
|
+
* `dataValue`) holds the value, and a `$ref` to one arrives resolved. Documents
|
|
140
|
+
* from earlier nestia versions held the values themselves, so an object is read
|
|
141
|
+
* as an Example Object only when it is one: it has one of the value fields, and
|
|
142
|
+
* every other key is an Example Object field or an extension. A raw value of
|
|
143
|
+
* exactly that shape is ambiguous and is read as an Example Object, as a
|
|
144
|
+
* conforming document means it. An Example Object that only points at its value
|
|
145
|
+
* (`externalValue`) or only serializes it (`serializedValue`) gives
|
|
146
|
+
* `SwaggerExample` nothing to hold.
|
|
147
|
+
*/
|
|
148
|
+
const exampleValue = (example) => {
|
|
149
|
+
if (isExampleObject(example) === false) return { value: example };
|
|
150
|
+
const record = example;
|
|
151
|
+
if (Object.prototype.hasOwnProperty.call(record, "value")) return { value: record.value };
|
|
152
|
+
if (Object.prototype.hasOwnProperty.call(record, "dataValue")) return { value: record.dataValue };
|
|
153
|
+
return null;
|
|
154
|
+
};
|
|
155
|
+
const isExampleObject = (example) => typeof example === "object" && example !== null && Array.isArray(example) === false && VALUE_KEYS.some((key) => Object.prototype.hasOwnProperty.call(example, key)) && Object.keys(example).every((key) => VALUE_KEYS.includes(key) || key === "summary" || key === "description" || key.startsWith("x-"));
|
|
156
|
+
const VALUE_KEYS = [
|
|
157
|
+
"value",
|
|
158
|
+
"dataValue",
|
|
159
|
+
"serializedValue",
|
|
160
|
+
"externalValue"
|
|
161
|
+
];
|
|
125
162
|
//#endregion
|
|
126
163
|
export { NestiaMigrateNestMethodProgrammer };
|
|
127
164
|
|
|
@@ -108,11 +108,25 @@ var NestiaMigrateSchemaProgrammer;
|
|
|
108
108
|
const writeInteger = (props) => writeNumeric({
|
|
109
109
|
factory: () => [
|
|
110
110
|
TypeFactory_1.TypeFactory.keyword("number"),
|
|
111
|
-
props.importer.tag("Type",
|
|
111
|
+
props.importer.tag("Type", integerType(props.schema)),
|
|
112
112
|
],
|
|
113
113
|
importer: props.importer,
|
|
114
114
|
schema: props.schema,
|
|
115
115
|
});
|
|
116
|
+
/**
|
|
117
|
+
* The typia integer type admitting what the schema admits: its own `format`
|
|
118
|
+
* when it names one typia has, else `int64`, as an integer schema without a
|
|
119
|
+
* format admits any integer.
|
|
120
|
+
*/
|
|
121
|
+
const integerType = (schema) => {
|
|
122
|
+
const format = schema.format;
|
|
123
|
+
return format === "int32" ||
|
|
124
|
+
format === "uint32" ||
|
|
125
|
+
format === "int64" ||
|
|
126
|
+
format === "uint64"
|
|
127
|
+
? format
|
|
128
|
+
: "int64";
|
|
129
|
+
};
|
|
116
130
|
const writeNumber = (props) => writeNumeric({
|
|
117
131
|
factory: () => [TypeFactory_1.TypeFactory.keyword("number")],
|
|
118
132
|
importer: props.importer,
|
|
@@ -122,10 +136,16 @@ var NestiaMigrateSchemaProgrammer;
|
|
|
122
136
|
const intersection = props.factory();
|
|
123
137
|
if (props.schema.default !== undefined)
|
|
124
138
|
intersection.push(props.importer.tag("Default", props.schema.default));
|
|
139
|
+
// the emended schema holds each bound as a number, as OpenAPI 3.1 does;
|
|
140
|
+
// an OpenAPI 3.0 boolean `exclusiveMinimum` is converted into that form
|
|
125
141
|
if (props.schema.minimum !== undefined)
|
|
126
|
-
intersection.push(props.importer.tag(
|
|
142
|
+
intersection.push(props.importer.tag("Minimum", props.schema.minimum));
|
|
143
|
+
if (typeof props.schema.exclusiveMinimum === "number")
|
|
144
|
+
intersection.push(props.importer.tag("ExclusiveMinimum", props.schema.exclusiveMinimum));
|
|
127
145
|
if (props.schema.maximum !== undefined)
|
|
128
|
-
intersection.push(props.importer.tag(
|
|
146
|
+
intersection.push(props.importer.tag("Maximum", props.schema.maximum));
|
|
147
|
+
if (typeof props.schema.exclusiveMaximum === "number")
|
|
148
|
+
intersection.push(props.importer.tag("ExclusiveMaximum", props.schema.exclusiveMaximum));
|
|
129
149
|
if (props.schema.multipleOf !== undefined)
|
|
130
150
|
intersection.push(props.importer.tag("MultipleOf", props.schema.multipleOf));
|
|
131
151
|
return intersection.length === 1
|
|
@@ -220,7 +240,8 @@ var NestiaMigrateSchemaProgrammer;
|
|
|
220
240
|
schema: props.schema.additionalProperties,
|
|
221
241
|
}),
|
|
222
242
|
]);
|
|
223
|
-
|
|
243
|
+
// `properties` is a record, which has no length
|
|
244
|
+
return Object.keys((_a = props.schema.properties) !== null && _a !== void 0 ? _a : {}).length !== 0 &&
|
|
224
245
|
typeof props.schema.additionalProperties === "object"
|
|
225
246
|
? factory_1.factory.createIntersectionTypeNode([regular(), dynamic()])
|
|
226
247
|
: typeof props.schema.additionalProperties === "object"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NestiaMigrateSchemaProgrammer.js","sourceRoot":"","sources":["../../src/programmers/NestiaMigrateSchemaProgrammer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NestiaMigrateSchemaProgrammer.js","sourceRoot":"","sources":["../../src/programmers/NestiaMigrateSchemaProgrammer.ts"],"names":[],"mappings":"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"}
|
|
@@ -66,10 +66,19 @@ let NestiaMigrateSchemaProgrammer;
|
|
|
66
66
|
};
|
|
67
67
|
const writeBoolean = () => TypeFactory.keyword("boolean");
|
|
68
68
|
const writeInteger = (props) => writeNumeric({
|
|
69
|
-
factory: () => [TypeFactory.keyword("number"), props.importer.tag("Type",
|
|
69
|
+
factory: () => [TypeFactory.keyword("number"), props.importer.tag("Type", integerType(props.schema))],
|
|
70
70
|
importer: props.importer,
|
|
71
71
|
schema: props.schema
|
|
72
72
|
});
|
|
73
|
+
/**
|
|
74
|
+
* The typia integer type admitting what the schema admits: its own `format`
|
|
75
|
+
* when it names one typia has, else `int64`, as an integer schema without a
|
|
76
|
+
* format admits any integer.
|
|
77
|
+
*/
|
|
78
|
+
const integerType = (schema) => {
|
|
79
|
+
const format = schema.format;
|
|
80
|
+
return format === "int32" || format === "uint32" || format === "int64" || format === "uint64" ? format : "int64";
|
|
81
|
+
};
|
|
73
82
|
const writeNumber = (props) => writeNumeric({
|
|
74
83
|
factory: () => [TypeFactory.keyword("number")],
|
|
75
84
|
importer: props.importer,
|
|
@@ -78,8 +87,10 @@ let NestiaMigrateSchemaProgrammer;
|
|
|
78
87
|
const writeNumeric = (props) => {
|
|
79
88
|
const intersection = props.factory();
|
|
80
89
|
if (props.schema.default !== void 0) intersection.push(props.importer.tag("Default", props.schema.default));
|
|
81
|
-
if (props.schema.minimum !== void 0) intersection.push(props.importer.tag(
|
|
82
|
-
if (props.schema.
|
|
90
|
+
if (props.schema.minimum !== void 0) intersection.push(props.importer.tag("Minimum", props.schema.minimum));
|
|
91
|
+
if (typeof props.schema.exclusiveMinimum === "number") intersection.push(props.importer.tag("ExclusiveMinimum", props.schema.exclusiveMinimum));
|
|
92
|
+
if (props.schema.maximum !== void 0) intersection.push(props.importer.tag("Maximum", props.schema.maximum));
|
|
93
|
+
if (typeof props.schema.exclusiveMaximum === "number") intersection.push(props.importer.tag("ExclusiveMaximum", props.schema.exclusiveMaximum));
|
|
83
94
|
if (props.schema.multipleOf !== void 0) intersection.push(props.importer.tag("MultipleOf", props.schema.multipleOf));
|
|
84
95
|
return intersection.length === 1 ? intersection[0] : factory.createIntersectionTypeNode(intersection);
|
|
85
96
|
};
|
|
@@ -127,7 +138,7 @@ let NestiaMigrateSchemaProgrammer;
|
|
|
127
138
|
importer: props.importer,
|
|
128
139
|
schema: props.schema.additionalProperties
|
|
129
140
|
})]);
|
|
130
|
-
return
|
|
141
|
+
return Object.keys(props.schema.properties ?? {}).length !== 0 && typeof props.schema.additionalProperties === "object" ? factory.createIntersectionTypeNode([regular(), dynamic()]) : typeof props.schema.additionalProperties === "object" ? dynamic() : regular();
|
|
131
142
|
};
|
|
132
143
|
const writeRegularProperty = (props) => {
|
|
133
144
|
const valueTypeNode = write({
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { IHttpMigrateRoute } from "@typia/interface";
|
|
2
|
+
export declare namespace PathTemplate {
|
|
3
|
+
type ISegment = {
|
|
4
|
+
type: "literal";
|
|
5
|
+
value: string;
|
|
6
|
+
} | {
|
|
7
|
+
type: "param";
|
|
8
|
+
parameter: IHttpMigrateRoute.IParameter;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* The route's path as literal text and path parameters, in order, read from
|
|
12
|
+
* the document's own template (`/files/{id}.json`), whose braces delimit each
|
|
13
|
+
* parameter name. The emended path (`/files/:id.json`) cannot be split back:
|
|
14
|
+
* its `:id.json` could name `id` or `id.json`, and a name such as `item-id`
|
|
15
|
+
* would read as `item` followed by `-id`. It always starts with `/`, as the
|
|
16
|
+
* emended path does.
|
|
17
|
+
*/
|
|
18
|
+
const segments: (route: IHttpMigrateRoute) => ISegment[];
|
|
19
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PathTemplate = void 0;
|
|
4
|
+
var PathTemplate;
|
|
5
|
+
(function (PathTemplate) {
|
|
6
|
+
/**
|
|
7
|
+
* The route's path as literal text and path parameters, in order, read from
|
|
8
|
+
* the document's own template (`/files/{id}.json`), whose braces delimit each
|
|
9
|
+
* parameter name. The emended path (`/files/:id.json`) cannot be split back:
|
|
10
|
+
* its `:id.json` could name `id` or `id.json`, and a name such as `item-id`
|
|
11
|
+
* would read as `item` followed by `-id`. It always starts with `/`, as the
|
|
12
|
+
* emended path does.
|
|
13
|
+
*/
|
|
14
|
+
PathTemplate.segments = (route) => {
|
|
15
|
+
const path = route.path.startsWith("/")
|
|
16
|
+
? route.path
|
|
17
|
+
: `/${route.path}`;
|
|
18
|
+
const output = [];
|
|
19
|
+
const literal = (value) => {
|
|
20
|
+
if (value.length === 0)
|
|
21
|
+
return;
|
|
22
|
+
const last = output[output.length - 1];
|
|
23
|
+
if ((last === null || last === void 0 ? void 0 : last.type) === "literal")
|
|
24
|
+
last.value += value;
|
|
25
|
+
else
|
|
26
|
+
output.push({ type: "literal", value });
|
|
27
|
+
};
|
|
28
|
+
let cursor = 0;
|
|
29
|
+
for (const match of path.matchAll(/\{([^{}]+)\}/g)) {
|
|
30
|
+
literal(path.slice(cursor, match.index));
|
|
31
|
+
cursor = match.index + match[0].length;
|
|
32
|
+
const parameter = route.parameters.find((p) => p.name === match[1]);
|
|
33
|
+
if (parameter === undefined)
|
|
34
|
+
literal(match[0]);
|
|
35
|
+
else
|
|
36
|
+
output.push({ type: "param", parameter });
|
|
37
|
+
}
|
|
38
|
+
literal(path.slice(cursor));
|
|
39
|
+
return output;
|
|
40
|
+
};
|
|
41
|
+
})(PathTemplate || (exports.PathTemplate = PathTemplate = {}));
|
|
42
|
+
//# sourceMappingURL=PathTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PathTemplate.js","sourceRoot":"","sources":["../../src/utils/PathTemplate.ts"],"names":[],"mappings":";;;AAEA,IAAiB,YAAY,CAoC5B;AApCD,WAAiB,YAAY;IAK3B;;;;;;;OAOG;IACU,qBAAQ,GAAG,CAAC,KAAwB,EAAc,EAAE;QAC/D,MAAM,IAAI,GAAW,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAC7C,CAAC,CAAC,KAAK,CAAC,IAAI;YACZ,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACrB,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,CAAC,KAAa,EAAQ,EAAE;YACtC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAC/B,MAAM,IAAI,GAAyB,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC7D,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,MAAK,SAAS;gBAAE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;;gBAC7C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC;QACF,IAAI,MAAM,GAAW,CAAC,CAAC;QACvB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACzC,MAAM,GAAG,KAAK,CAAC,KAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACxC,MAAM,SAAS,GACb,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,SAAS,KAAK,SAAS;gBAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;;gBAC1C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC,EApCgB,YAAY,aAAZ,YAAY,GAAZ,YAAY,QAoC5B"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
//#region src/utils/PathTemplate.ts
|
|
2
|
+
let PathTemplate;
|
|
3
|
+
(function(_PathTemplate) {
|
|
4
|
+
_PathTemplate.segments = (route) => {
|
|
5
|
+
const path = route.path.startsWith("/") ? route.path : `/${route.path}`;
|
|
6
|
+
const output = [];
|
|
7
|
+
const literal = (value) => {
|
|
8
|
+
if (value.length === 0) return;
|
|
9
|
+
const last = output[output.length - 1];
|
|
10
|
+
if (last?.type === "literal") last.value += value;
|
|
11
|
+
else output.push({
|
|
12
|
+
type: "literal",
|
|
13
|
+
value
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
let cursor = 0;
|
|
17
|
+
for (const match of path.matchAll(/\{([^{}]+)\}/g)) {
|
|
18
|
+
literal(path.slice(cursor, match.index));
|
|
19
|
+
cursor = match.index + match[0].length;
|
|
20
|
+
const parameter = route.parameters.find((p) => p.name === match[1]);
|
|
21
|
+
if (parameter === void 0) literal(match[0]);
|
|
22
|
+
else output.push({
|
|
23
|
+
type: "param",
|
|
24
|
+
parameter
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
literal(path.slice(cursor));
|
|
28
|
+
return output;
|
|
29
|
+
};
|
|
30
|
+
})(PathTemplate || (PathTemplate = {}));
|
|
31
|
+
//#endregion
|
|
32
|
+
export { PathTemplate };
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=PathTemplate.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PathTemplate.mjs","names":[],"sources":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IHttpMigrateRoute } from "@typia/interface";
|
|
2
|
+
export declare namespace RequestBody {
|
|
3
|
+
/**
|
|
4
|
+
* Whether the route's body may be omitted: a JSON or text body the document
|
|
5
|
+
* does not require. The SDK's positional and keyword functions and the Nest
|
|
6
|
+
* controller all read this one rule.
|
|
7
|
+
*/
|
|
8
|
+
const optional: (route: IHttpMigrateRoute) => boolean;
|
|
9
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RequestBody = void 0;
|
|
4
|
+
var RequestBody;
|
|
5
|
+
(function (RequestBody) {
|
|
6
|
+
/**
|
|
7
|
+
* Whether the route's body may be omitted: a JSON or text body the document
|
|
8
|
+
* does not require. The SDK's positional and keyword functions and the Nest
|
|
9
|
+
* controller all read this one rule.
|
|
10
|
+
*/
|
|
11
|
+
RequestBody.optional = (route) => { var _a; return route.body !== null &&
|
|
12
|
+
(route.body.type === "application/json" ||
|
|
13
|
+
route.body.type === "text/plain") &&
|
|
14
|
+
((_a = route.operation().requestBody) === null || _a === void 0 ? void 0 : _a.required) === false; };
|
|
15
|
+
})(RequestBody || (exports.RequestBody = RequestBody = {}));
|
|
16
|
+
//# sourceMappingURL=RequestBody.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequestBody.js","sourceRoot":"","sources":["../../src/utils/RequestBody.ts"],"names":[],"mappings":";;;AAEA,IAAiB,WAAW,CAW3B;AAXD,WAAiB,WAAW;IAC1B;;;;OAIG;IACU,oBAAQ,GAAG,CAAC,KAAwB,EAAW,EAAE,kBAC5D,KAAK,CAAC,IAAI,KAAK,IAAI;QACnB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,kBAAkB;YACrC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC;QACnC,CAAA,MAAA,KAAK,CAAC,SAAS,EAAE,CAAC,WAAW,0CAAE,QAAQ,MAAK,KAAK,GAAA,CAAC;AACtD,CAAC,EAXgB,WAAW,aAAX,WAAW,GAAX,WAAW,QAW3B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//#region src/utils/RequestBody.ts
|
|
2
|
+
let RequestBody;
|
|
3
|
+
(function(_RequestBody) {
|
|
4
|
+
_RequestBody.optional = (route) => route.body !== null && (route.body.type === "application/json" || route.body.type === "text/plain") && route.operation().requestBody?.required === false;
|
|
5
|
+
})(RequestBody || (RequestBody = {}));
|
|
6
|
+
//#endregion
|
|
7
|
+
export { RequestBody };
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=RequestBody.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequestBody.mjs","names":[],"sources":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IHttpMigrateRoute } from "@typia/interface";
|
|
2
|
+
export declare namespace SuccessStatus {
|
|
3
|
+
/**
|
|
4
|
+
* The route's success status code, or null when the document declares only a
|
|
5
|
+
* range (`2XX`) or a `default` response.
|
|
6
|
+
*
|
|
7
|
+
* The success response is the one typia's route composer selects: 200, then
|
|
8
|
+
* 201, then the lowest other 2xx. A bodiless one, such as a 204 No Content,
|
|
9
|
+
* leaves `route.success` null, so its status is read from the responses.
|
|
10
|
+
*/
|
|
11
|
+
const of: (route: IHttpMigrateRoute) => number | null;
|
|
12
|
+
/** The status NestJS answers without `@HttpCode()`. */
|
|
13
|
+
const nest: (route: IHttpMigrateRoute) => number;
|
|
14
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SuccessStatus = void 0;
|
|
4
|
+
var SuccessStatus;
|
|
5
|
+
(function (SuccessStatus) {
|
|
6
|
+
/**
|
|
7
|
+
* The route's success status code, or null when the document declares only a
|
|
8
|
+
* range (`2XX`) or a `default` response.
|
|
9
|
+
*
|
|
10
|
+
* The success response is the one typia's route composer selects: 200, then
|
|
11
|
+
* 201, then the lowest other 2xx. A bodiless one, such as a 204 No Content,
|
|
12
|
+
* leaves `route.success` null, so its status is read from the responses.
|
|
13
|
+
*/
|
|
14
|
+
SuccessStatus.of = (route) => {
|
|
15
|
+
var _a;
|
|
16
|
+
var _b, _c;
|
|
17
|
+
const status = (_b = (_a = route.success) === null || _a === void 0 ? void 0 : _a.status) !== null && _b !== void 0 ? _b : Object.keys((_c = route.operation().responses) !== null && _c !== void 0 ? _c : {})
|
|
18
|
+
.filter((key) => /^2\d\d$/.test(key))
|
|
19
|
+
.sort((x, y) => priority(x) - priority(y))[0];
|
|
20
|
+
return status !== undefined && /^\d{3}$/.test(status)
|
|
21
|
+
? Number(status)
|
|
22
|
+
: null;
|
|
23
|
+
};
|
|
24
|
+
/** The status NestJS answers without `@HttpCode()`. */
|
|
25
|
+
SuccessStatus.nest = (route) => route.method === "post" ? 201 : 200;
|
|
26
|
+
const priority = (status) => status === "200" ? 0 : status === "201" ? 1 : Number(status);
|
|
27
|
+
})(SuccessStatus || (exports.SuccessStatus = SuccessStatus = {}));
|
|
28
|
+
//# sourceMappingURL=SuccessStatus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SuccessStatus.js","sourceRoot":"","sources":["../../src/utils/SuccessStatus.ts"],"names":[],"mappings":";;;AAEA,IAAiB,aAAa,CA0B7B;AA1BD,WAAiB,aAAa;IAC5B;;;;;;;OAOG;IACU,gBAAE,GAAG,CAAC,KAAwB,EAAiB,EAAE;;;QAC5D,MAAM,MAAM,SACV,MAAA,KAAK,CAAC,OAAO,0CAAE,MAAM,mCACrB,MAAM,CAAC,IAAI,OAAC,KAAK,CAAC,SAAS,EAAE,CAAC,SAAS,mCAAI,EAAE,CAAC;aAC3C,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACpC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,OAAO,MAAM,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;YACnD,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YAChB,CAAC,CAAC,IAAI,CAAC;IACX,CAAC,CAAC;IAEF,uDAAuD;IAC1C,kBAAI,GAAG,CAAC,KAAwB,EAAU,EAAE,CACvD,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAEtC,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAU,EAAE,CAC1C,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACjE,CAAC,EA1BgB,aAAa,aAAb,aAAa,GAAb,aAAa,QA0B7B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//#region src/utils/SuccessStatus.ts
|
|
2
|
+
let SuccessStatus;
|
|
3
|
+
(function(_SuccessStatus) {
|
|
4
|
+
_SuccessStatus.of = (route) => {
|
|
5
|
+
const status = route.success?.status ?? Object.keys(route.operation().responses ?? {}).filter((key) => /^2\d\d$/.test(key)).sort((x, y) => priority(x) - priority(y))[0];
|
|
6
|
+
return status !== void 0 && /^\d{3}$/.test(status) ? Number(status) : null;
|
|
7
|
+
};
|
|
8
|
+
_SuccessStatus.nest = (route) => route.method === "post" ? 201 : 200;
|
|
9
|
+
const priority = (status) => status === "200" ? 0 : status === "201" ? 1 : Number(status);
|
|
10
|
+
})(SuccessStatus || (SuccessStatus = {}));
|
|
11
|
+
//#endregion
|
|
12
|
+
export { SuccessStatus };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=SuccessStatus.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SuccessStatus.mjs","names":[],"sources":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nestia/migrate",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "14.0.1",
|
|
4
4
|
"description": "Migration program from swagger to NestJS",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -45,14 +45,14 @@
|
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
|
|
47
47
|
"@ttsc/factory": "^0.28.1",
|
|
48
|
-
"@typia/interface": "^
|
|
49
|
-
"@typia/utils": "^
|
|
48
|
+
"@typia/interface": "^15.0.0",
|
|
49
|
+
"@typia/utils": "^15.0.0",
|
|
50
50
|
"commander": "10.0.0",
|
|
51
51
|
"inquirer": "8.2.5",
|
|
52
52
|
"prettier": "^3.8.1",
|
|
53
53
|
"prettier-plugin-jsdoc": "^1.8.0",
|
|
54
54
|
"tstl": "^3.0.0",
|
|
55
|
-
"typia": "
|
|
55
|
+
"typia": "15.0.0"
|
|
56
56
|
},
|
|
57
57
|
"files": [
|
|
58
58
|
"lib",
|
|
@@ -2,6 +2,7 @@ import { IHttpMigrateRoute } from "@typia/interface";
|
|
|
2
2
|
|
|
3
3
|
import { INestiaMigrateController } from "../structures/INestiaMigrateController";
|
|
4
4
|
import { MapUtil } from "../utils/MapUtil";
|
|
5
|
+
import { PathTemplate } from "../utils/PathTemplate";
|
|
5
6
|
import { StringUtil } from "../utils/StringUtil";
|
|
6
7
|
|
|
7
8
|
export namespace NestiaMigrateControllerAnalyzer {
|
|
@@ -27,9 +28,11 @@ export namespace NestiaMigrateControllerAnalyzer {
|
|
|
27
28
|
const controllers: INestiaMigrateController[] = [...collection.values()];
|
|
28
29
|
for (const col of controllers) {
|
|
29
30
|
const splitPath = (r: IHttpMigrateRoute): string[] =>
|
|
30
|
-
r.
|
|
31
|
+
routePath(r).split("/");
|
|
31
32
|
const splitLocation = (r: IHttpMigrateRoute): string[] =>
|
|
32
|
-
splitPath(r)
|
|
33
|
+
splitPath(r)
|
|
34
|
+
.filter((s) => s.length !== 0 && s[0] !== ":")
|
|
35
|
+
.map(directoryName);
|
|
33
36
|
|
|
34
37
|
const minPath: string[] = splitPath(col.routes[0]!);
|
|
35
38
|
const minLocation: string[] = splitLocation(col.routes[0]!);
|
|
@@ -42,8 +45,42 @@ export namespace NestiaMigrateControllerAnalyzer {
|
|
|
42
45
|
}
|
|
43
46
|
return controllers;
|
|
44
47
|
};
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* The route's path as NestJS reads it: each path parameter under the key its
|
|
51
|
+
* handler reads with `@TypedParam()`. The document's name, such as `item-id`,
|
|
52
|
+
* is no path-to-regexp parameter name; it would read as `item` followed by
|
|
53
|
+
* the literal `-id`, and the handler's lookup would miss. Each parameter is
|
|
54
|
+
* found where the document's template writes it, beside literal text in its
|
|
55
|
+
* segment too (`/files/{id}.json`).
|
|
56
|
+
*
|
|
57
|
+
* A literal character the router reserves is escaped, so an AIP custom
|
|
58
|
+
* method's `/items:batchGet` stays a literal rather than a parameter
|
|
59
|
+
* `batchGet`, and `(` or `*` no syntax error.
|
|
60
|
+
*/
|
|
61
|
+
export const routePath = (route: IHttpMigrateRoute): string =>
|
|
62
|
+
PathTemplate.segments(route)
|
|
63
|
+
.map((segment) =>
|
|
64
|
+
segment.type === "literal"
|
|
65
|
+
? segment.value.replace(ROUTER_RESERVED, "\\$&")
|
|
66
|
+
: `:${segment.parameter.key}`,
|
|
67
|
+
)
|
|
68
|
+
.join("");
|
|
45
69
|
}
|
|
46
70
|
|
|
71
|
+
/**
|
|
72
|
+
* The characters path-to-regexp 8, Express 5's router, gives a meaning in a
|
|
73
|
+
* route: parameters, wildcards, optional groups, and its own escape.
|
|
74
|
+
*/
|
|
75
|
+
const ROUTER_RESERVED = /[\\:*?+!(){}[\]]/g;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* A route segment as a directory name: unescaped, and each character a file
|
|
79
|
+
* name cannot hold on Windows (`:` of an AIP custom method, `*`, `?`) as `_`.
|
|
80
|
+
*/
|
|
81
|
+
const directoryName = (segment: string): string =>
|
|
82
|
+
segment.replace(/\\(.)/g, "$1").replace(/[<>:"|?*\\]/g, "_");
|
|
83
|
+
|
|
47
84
|
const getSplitIndex = (x: string[], y: string[]) => {
|
|
48
85
|
const n: number = Math.min(x.length, y.length);
|
|
49
86
|
for (let i: number = 0; i < n; ++i) if (x[i] !== y[i]) return i;
|
|
@@ -49,6 +49,6 @@ export const NEST_TEMPLATE: Record<string, string> = {
|
|
|
49
49
|
"packages/backend/test/webpack.ts": "import { DynamicExecutor } from \"@nestia/e2e\";\nimport cp from \"node:child_process\";\nimport { sleep_for } from \"tstl\";\n\nimport { MyConfiguration } from \"../src/MyConfiguration\";\nimport { MyGlobal } from \"../src/MyGlobal\";\nimport { TestAutomation } from \"./helpers/TestAutomation\";\nimport { TestAutomationStdio } from \"./helpers/TestAutomationStdio\";\n\nconst wait = async (): Promise<void> => {\n while (true)\n try {\n await fetch(`http://localhost:${MyConfiguration.API_PORT()}/dsafdsafsd`);\n return;\n } catch (exp) {\n await sleep_for(100);\n }\n};\n\nconst main = async (): Promise<void> => {\n MyGlobal.testing = true;\n\n const report: DynamicExecutor.IReport = await TestAutomation.execute({\n open: async () => {\n const backend: cp.ChildProcess = cp.fork(\n `${MyConfiguration.ROOT}/dist/server.js`,\n {\n cwd: `${MyConfiguration.ROOT}/dist`,\n },\n );\n await wait();\n return backend;\n },\n close: async (backend) => {\n backend.kill();\n },\n options: await TestAutomationStdio.getOptions(),\n onComplete: TestAutomationStdio.onComplete,\n });\n TestAutomationStdio.report(report);\n};\nmain().catch((exp: unknown) => {\n console.log(exp);\n process.exit(-1);\n});\n",
|
|
50
50
|
"packages/backend/tsconfig.json": "{\n \"extends\": \"../../config/tsconfig.json\",\n \"compilerOptions\": {\n \"outDir\": \"lib\",\n \"rootDir\": \"src\",\n \"experimentalDecorators\": true,\n \"emitDecoratorMetadata\": true\n },\n \"include\": [\"src\"]\n}\n",
|
|
51
51
|
"packages/backend/webpack.config.js": "const path = require(\"path\");\n\nconst CopyWebpackPlugin = require(\"copy-webpack-plugin\");\nconst WriteFilePlugin = require(\"write-file-webpack-plugin\");\nconst { IgnorePlugin } = require(\"webpack\");\n\nconst lazyImports = [\n \"@modelcontextprotocol/sdk\",\n \"@fastify/static\",\n \"@fastify/view\",\n \"@nestjs/microservices\",\n \"@nestjs/websockets\",\n \"class-transformer\",\n \"class-validator\",\n];\n\n// @reference https://tech-blog.s-yoshiki.com/entry/297\nmodule.exports = {\n // CUSTOMIZE HERE\n entry: {\n server: \"./lib/executable/server.js\",\n },\n output: {\n path: path.join(__dirname, \"dist\"),\n filename: \"[name].js\",\n },\n optimization: {\n minimize: true,\n },\n\n // JUST KEEP THEM\n mode: \"production\",\n target: \"node\",\n plugins: [\n new CopyWebpackPlugin({\n patterns: [\n {\n from: \".env\",\n to: \"[name][ext]\",\n },\n ],\n }),\n new WriteFilePlugin(),\n new IgnorePlugin({\n checkResource: (resource) => {\n if (lazyImports.some((modulo) => resource.startsWith(modulo))) {\n try {\n require.resolve(resource);\n } catch (err) {\n return true;\n }\n }\n return false;\n },\n }),\n ],\n};\n",
|
|
52
|
-
"pnpm-workspace.yaml": "packages:\n - \"config\"\n - \"packages/*\"\ncatalogs:\n samchon:\n \"@nestia/benchmark\": ^
|
|
52
|
+
"pnpm-workspace.yaml": "packages:\n - \"config\"\n - \"packages/*\"\ncatalogs:\n samchon:\n \"@nestia/benchmark\": ^14.0.1\n \"@nestia/core\": ^14.0.1\n \"@nestia/e2e\": ^14.0.1\n \"@nestia/fetcher\": ^14.0.1\n \"@nestia/sdk\": ^14.0.1\n nestia: ^14.0.1\n tgrid: ^1.2.1\n tstl: ^3.0.0\n typia: 15.0.0\n rolldown:\n rolldown: ^1.1.5\n utils:\n rimraf: ^6.1.3\n uuid: ^13.0.0\n typescript:\n \"@ttsc/lint\": ^0.18.2\n \"@ttsc/paths\": ^0.18.2\n \"@ttsc/unplugin\": ^0.28.1\n ttsc: ^0.28.1\n typescript: ^7.0.2\n",
|
|
53
53
|
"typos.toml": "[default]\nlocale = 'en-us'\nextend-ignore-re = [\n \"(?Rm)^.*(<!--|#|//)\\\\s*spellchecker:disable-line(-->|\\n)?$\",\n \"(?s)(<!--|#|//)\\\\s*spellchecker:off\\\\s*(-->|\\n).*?(<!--|#|//)\\\\s*spellchecker:on\",\n]\n\n[default.extend-words]\nJeongho = \"Jeongho\"\nNam = \"Nam\"\ntypia = \"typia\"\n\n[files]\nextend-exclude = [\"*.json\"]"
|
|
54
54
|
}
|