@nestia/migrate 14.0.0 → 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 +2 -2
- 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": "14.0.
|
|
3
|
+
"version": "14.0.1",
|
|
4
4
|
"description": "Migration program from swagger to NestJS",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -52,7 +52,7 @@
|
|
|
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\": ^14.0.
|
|
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
|
}
|
|
@@ -5,7 +5,7 @@ export const SDK_TEMPLATE: Record<string, string> = {
|
|
|
5
5
|
"LICENSE": "MIT License\n\nCopyright (c) 2024 Jeongho Nam\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n",
|
|
6
6
|
"README.md": "# Software Development Kit\nThis is a SDK library generated by [`@nestia/migrate`](https://nestia.io/docs/migrate) or [`@nestia/editor`](https://nestia.io/docs/editor).\n\nWith this SDK library, you can easily and safely interact with backend server.\n\nJust import and call some API functions like gif image below:\n\n\n\n> Left is server code, and right is client code utilizing the SDK\n\n\n\n\n## How to Test\n```bash\npnpm install\npnpm run start # run only \"test/start.ts\" file\npnpm run test # everything under the \"test/features\" directory\npnpm run test:simulate # \"test/features\" with mockup simulation mode\n```\n\nIf you run `pnpm run start` command, only [test/start.ts](test/start.ts) file would be executed.\n\nOtherwise you run `pnpm run test` command instead, run everything in the [test/features](test/features) directory.\n\nFor reference, the [test/features](test/features) directory and E2E test functions (for each API endpoints) would be automatically composed only when you've configured the \"E2E test function generation mode\" of the `@nestia/migrate` (or `@nestia/editor`).\n\n```bash\npnpm dlx @nestia/migrate\n? Migration mode (Use arrow keys):\n NestJS\n > SDK\n? Swagger file location: assets/input/clickhouse.json\n? Output directory path: assets/output/clickhouse-sdk-manual\n? Mokup Simulator: true\n? E2E Test Functions: true\n```\n\n\n\n\n## Deploy\n```bash\npnpm install\npnpm run deploy\n```\n\nJust run `pnpm run deploy` command, then your SDK library would be published.\n\nBy the way, the initial package name of this template repository is `@ORGANIZATION/PROJECT-api`. I think it would better to change the word to your own organization and project name. If you're utilizing `VsCode`, you can do it through `Edit > Replace in Files` (*Ctrl + Shift + H*) feature.\n\n-----------\n\n> ## What [`Nestia`](https://nestia.io) is:\n> \n> \n> [](https://github.com/samchon/nestia/blob/master/LICENSE)\n> [](https://www.npmjs.com/package/@nestia/core)\n> [](https://www.npmjs.com/package/@nestia/core)\n> [](https://github.com/samchon/nestia/actions?query=workflow%3Abuild)\n> [](https://nestia.io/docs/)\n> \n> Nestia is a set of helper libraries for NestJS, supporting below features:\n> \n> - `@nestia/core`: Super-fast decorators\n> - `@nestia/sdk`:\n> - Swagger generator evolved than ever\n> - SDK library generator for clients\n> - Mockup Simulator for client applications\n> - Automatic E2E test functions generator\n> - `@nestia/migrate`: Migration from Swagger to NestJS\n> - `@nestia/editor`: Online TypeScript Swagger Editor\n> - `nestia`: Just CLI (command line interface) tool\n> \n>> **Note**\n>> \n>> - **Only one line** required, with pure TypeScript type\n>> - Enhance performance **30x** up\n>> - Runtime validator is **20,000x faster** than `class-validator`\n>> - JSON serialization is **200x faster** than `class-transformer`\n>> - Software Development Kit\n>> - SDK is a collection of `fetch` functions with type definitions like [tRPC](https://> trpc.io/)\n>> - Mockup simulator means embedded backend simulator in SDK\n>> - similar with [msw](https://mswjs.io/), but fully automated\n",
|
|
7
7
|
"hello.js": "function print(command, description) {\n return console.log(`\\x1b[1m${command}\\x1b[2m: ${description}\\x1b[0m`);\n}\n\nconsole.log(\"-----------------------------------------\");\nconsole.log(\"\\x1b[7mGenerated by \\x1b[2m@nestia/editor\\x1b[0m\");\nconsole.log(\"\");\nconsole.log(\" - \\x1b[36mhttps://nestia.io/docs/editor\\x1b[0m\");\nconsole.log(\" - \\x1b[36mhttps://github.com/samchon/nestia\\x1b[0m\");\nconsole.log(\"-----------------------------------------\");\n\nprint(\"pnpm run start\", \"Run only test/start.ts\");\nprint(\"pnpm run test\", \"Run every test/features/**/*.ts files\");\nprint(\"pnpm run test:simulate\", \"Test with mockup simulator\");\n",
|
|
8
|
-
"package.json": "{\n \"name\": \"@ORGANIZATION/PROJECT-api\",\n \"version\": \"0.1.0\",\n \"description\": \"SDK library generated by Nestia\",\n \"main\": \"src/index.ts\",\n \"exports\": {\n \".\": \"./src/index.ts\",\n \"./lib/*\": \"./src/*.ts\",\n \"./package.json\": \"./package.json\"\n },\n \"publishConfig\": {\n \"main\": \"lib/index.mjs\",\n \"module\": \"lib/index.mjs\",\n \"types\": \"lib/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./lib/index.d.ts\",\n \"import\": \"./lib/index.mjs\",\n \"default\": \"./lib/index.js\"\n },\n \"./lib/*\": {\n \"types\": \"./lib/*.d.ts\",\n \"import\": \"./lib/*.mjs\",\n \"default\": \"./lib/*.js\"\n },\n \"./package.json\": \"./package.json\"\n }\n },\n \"scripts\": {\n \"build\": \"rimraf lib && ttsc && rolldown -c\",\n \"build:test\": \"rimraf bin && ttsc --project test/tsconfig.json\",\n \"deploy\": \"pnpm run build && pnpm publish\",\n \"dev\": \"pnpm run build:test --watch\",\n \"hello\": \"node hello\",\n \"start\": \"ttsx test/start.ts\",\n \"swagger\": \"ttsx test/swagger.ts\",\n \"test\": \"ttsx test/index.ts\",\n \"test:simulate\": \"ttsx test/index.ts --simulate true\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/samchon/nestia\"\n },\n \"author\": \"Jeongho Nam\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/samchon/nestia/issues\"\n },\n \"homepage\": \"https://nestia.io\",\n \"files\": [\n \"lib\",\n \"swagger.json\",\n \"package.json\",\n \"README.md\"\n ],\n \"dependencies\": {\n \"@nestia/fetcher\": \"^14.0.
|
|
8
|
+
"package.json": "{\n \"name\": \"@ORGANIZATION/PROJECT-api\",\n \"version\": \"0.1.0\",\n \"description\": \"SDK library generated by Nestia\",\n \"main\": \"src/index.ts\",\n \"exports\": {\n \".\": \"./src/index.ts\",\n \"./lib/*\": \"./src/*.ts\",\n \"./package.json\": \"./package.json\"\n },\n \"publishConfig\": {\n \"main\": \"lib/index.mjs\",\n \"module\": \"lib/index.mjs\",\n \"types\": \"lib/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./lib/index.d.ts\",\n \"import\": \"./lib/index.mjs\",\n \"default\": \"./lib/index.js\"\n },\n \"./lib/*\": {\n \"types\": \"./lib/*.d.ts\",\n \"import\": \"./lib/*.mjs\",\n \"default\": \"./lib/*.js\"\n },\n \"./package.json\": \"./package.json\"\n }\n },\n \"scripts\": {\n \"build\": \"rimraf lib && ttsc && rolldown -c\",\n \"build:test\": \"rimraf bin && ttsc --project test/tsconfig.json\",\n \"deploy\": \"pnpm run build && pnpm publish\",\n \"dev\": \"pnpm run build:test --watch\",\n \"hello\": \"node hello\",\n \"start\": \"ttsx test/start.ts\",\n \"swagger\": \"ttsx test/swagger.ts\",\n \"test\": \"ttsx test/index.ts\",\n \"test:simulate\": \"ttsx test/index.ts --simulate true\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/samchon/nestia\"\n },\n \"author\": \"Jeongho Nam\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/samchon/nestia/issues\"\n },\n \"homepage\": \"https://nestia.io\",\n \"files\": [\n \"lib\",\n \"swagger.json\",\n \"package.json\",\n \"README.md\"\n ],\n \"dependencies\": {\n \"@nestia/fetcher\": \"^14.0.1\",\n \"tgrid\": \"^1.2.1\",\n \"typia\": \"15.0.0\"\n },\n \"devDependencies\": {\n \"@nestia/e2e\": \"^14.0.1\",\n \"@ttsc/unplugin\": \"^0.28.1\",\n \"@types/express\": \"^4.17.21\",\n \"@types/swagger-ui-express\": \"^4.1.6\",\n \"chalk\": \"4.1.2\",\n \"express\": \"^4.19.2\",\n \"rimraf\": \"^5.0.5\",\n \"rolldown\": \"^1.1.5\",\n \"swagger-ui-express\": \"^5.0.0\",\n \"tinyglobby\": \"^0.2.17\",\n \"ttsc\": \"^0.28.1\",\n \"typescript\": \"^7.0.2\",\n \"@nestia/core\": \"^14.0.1\"\n },\n \"packageManager\": \"pnpm@10.19.0\"\n}",
|
|
9
9
|
"rolldown.config.mjs": "import ttsc from \"@ttsc/unplugin/rolldown\";\nimport path from \"node:path\";\nimport { globSync } from \"tinyglobby\";\n\nexport default {\n input: globSync(\"./src/**/*.ts\"),\n external: (id) => !id.startsWith(\".\") && !path.isAbsolute(id),\n output: {\n dir: \"./lib\",\n format: \"esm\",\n sourcemap: true,\n entryFileNames: \"[name].mjs\",\n preserveModules: true,\n preserveModulesRoot: \"src\",\n },\n plugins: [ttsc()],\n};\n",
|
|
10
10
|
"src/HttpError.ts": "export { HttpError } from \"@nestia/fetcher\";\n",
|
|
11
11
|
"src/IConnection.ts": "export type { IConnection } from \"@nestia/fetcher\";\n",
|