@nestia/migrate 0.6.2 → 0.7.0-dev.20240201
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/lib/IMigrateConfig.d.ts +4 -0
- package/lib/IMigrateConfig.js +3 -0
- package/lib/IMigrateConfig.js.map +1 -0
- package/lib/MigrateApplication.d.ts +2 -12
- package/lib/MigrateApplication.js +20 -60
- package/lib/MigrateApplication.js.map +1 -1
- package/lib/analyzers/MigrateAnalyzer.d.ts +2 -1
- package/lib/analyzers/MigrateAnalyzer.js +2 -1
- package/lib/analyzers/MigrateAnalyzer.js.map +1 -1
- package/lib/bundles/NEST_TEMPLATE.d.ts +5 -0
- package/{src/bundles/TEMPLATE.ts → lib/bundles/NEST_TEMPLATE.js} +71 -27
- package/lib/bundles/NEST_TEMPLATE.js.map +1 -0
- package/lib/bundles/SDK_TEMPLATE.d.ts +5 -0
- package/lib/bundles/SDK_TEMPLATE.js +61 -0
- package/lib/bundles/SDK_TEMPLATE.js.map +1 -0
- package/lib/bundles/TEMPLATE.d.ts +1 -1
- package/lib/bundles/TEMPLATE.js +23 -23
- package/lib/bundles/TEMPLATE.js.map +1 -1
- package/lib/executable/bundle.js +70 -51
- package/lib/executable/bundle.js.map +1 -1
- package/lib/executable/migrate.js +2 -59
- package/lib/executable/migrate.js.map +1 -1
- package/lib/internal/MigrateCli.d.ts +3 -0
- package/lib/internal/MigrateCli.js +59 -0
- package/lib/internal/MigrateCli.js.map +1 -0
- package/lib/internal/MigrateCommander.d.ts +9 -0
- package/lib/internal/MigrateCommander.js +70 -0
- package/lib/internal/MigrateCommander.js.map +1 -0
- package/lib/programmers/ApiFileProgrammer.d.ts +2 -1
- package/lib/programmers/ApiFileProgrammer.js +3 -3
- package/lib/programmers/ApiFileProgrammer.js.map +1 -1
- package/lib/programmers/ApiFunctionProgrammer.d.ts +3 -1
- package/lib/programmers/ApiFunctionProgrammer.js +34 -23
- package/lib/programmers/ApiFunctionProgrammer.js.map +1 -1
- package/lib/programmers/ApiNamespaceProgrammer.d.ts +3 -1
- package/lib/programmers/ApiNamespaceProgrammer.js +15 -2
- package/lib/programmers/ApiNamespaceProgrammer.js.map +1 -1
- package/lib/programmers/ApiProgrammer.js +48 -3
- package/lib/programmers/ApiProgrammer.js.map +1 -1
- package/lib/programmers/ApiSimulatationProgrammer.d.ts +14 -0
- package/lib/programmers/ApiSimulatationProgrammer.js +127 -0
- package/lib/programmers/ApiSimulatationProgrammer.js.map +1 -0
- package/lib/structures/IMigrateProgram.d.ts +2 -0
- package/package.json +68 -64
- package/src/IMigrateConfig.ts +4 -0
- package/src/MigrateApplication.ts +20 -63
- package/src/analyzers/MigrateAnalyzer.ts +8 -4
- package/src/bundles/NEST_TEMPLATE.ts +202 -0
- package/src/bundles/SDK_TEMPLATE.ts +57 -0
- package/src/executable/bundle.ts +80 -50
- package/src/executable/migrate.ts +2 -54
- package/src/internal/MigrateCommander.ts +52 -0
- package/src/internal/MigrateInquirer.ts +79 -0
- package/src/programmers/ApiFileProgrammer.ts +4 -2
- package/src/programmers/ApiFunctionProgrammer.ts +47 -20
- package/src/programmers/ApiNamespaceProgrammer.ts +24 -1
- package/src/programmers/ApiProgrammer.ts +63 -3
- package/src/programmers/ApiSimulatationProgrammer.ts +328 -0
- package/src/structures/IMigrateProgram.ts +2 -0
@@ -0,0 +1,127 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.ApiSimulatationProgrammer = void 0;
|
7
|
+
const typescript_1 = __importDefault(require("typescript"));
|
8
|
+
const IdentifierFactory_1 = require("typia/lib/factories/IdentifierFactory");
|
9
|
+
const StatementFactory_1 = require("typia/lib/factories/StatementFactory");
|
10
|
+
const TypeFactory_1 = require("typia/lib/factories/TypeFactory");
|
11
|
+
const ApiFunctionProgrammer_1 = require("./ApiFunctionProgrammer");
|
12
|
+
const ApiNamespaceProgrammer_1 = require("./ApiNamespaceProgrammer");
|
13
|
+
const SchemaProgrammer_1 = require("./SchemaProgrammer");
|
14
|
+
var ApiSimulatationProgrammer;
|
15
|
+
(function (ApiSimulatationProgrammer) {
|
16
|
+
ApiSimulatationProgrammer.random = (components) => (importer) => (props) => constant("random")(typescript_1.default.factory.createArrowFunction(undefined, undefined, [
|
17
|
+
typescript_1.default.factory.createParameterDeclaration(undefined, undefined, "g", typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.QuestionToken), typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier("Partial"), [
|
18
|
+
typescript_1.default.factory.createTypeReferenceNode(`${importer.external({
|
19
|
+
type: "default",
|
20
|
+
library: "typia",
|
21
|
+
name: "typia",
|
22
|
+
})}.IRandomGenerator`),
|
23
|
+
])),
|
24
|
+
], undefined, undefined, typescript_1.default.factory.createCallExpression(IdentifierFactory_1.IdentifierFactory.access(typescript_1.default.factory.createIdentifier(importer.external({
|
25
|
+
type: "default",
|
26
|
+
library: "typia",
|
27
|
+
name: "typia",
|
28
|
+
})))("random"), [
|
29
|
+
props.route.success
|
30
|
+
? SchemaProgrammer_1.SchemaProgrammer.write(components)(importer)(props.route.success.schema)
|
31
|
+
: TypeFactory_1.TypeFactory.keyword("void"),
|
32
|
+
], [typescript_1.default.factory.createIdentifier("g")])));
|
33
|
+
ApiSimulatationProgrammer.simulate = (components) => (importer) => (props) => {
|
34
|
+
const caller = () => typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("random"), undefined, [
|
35
|
+
typescript_1.default.factory.createConditionalExpression(typescript_1.default.factory.createLogicalAnd(typescript_1.default.factory.createStrictEquality(typescript_1.default.factory.createStringLiteral("object"), typescript_1.default.factory.createTypeOfExpression(typescript_1.default.factory.createIdentifier("connection.simulate"))), typescript_1.default.factory.createStrictInequality(typescript_1.default.factory.createNull(), typescript_1.default.factory.createIdentifier("connection.simulate"))), undefined, typescript_1.default.factory.createIdentifier("connection.simulate"), undefined, typescript_1.default.factory.createIdentifier("undefined")),
|
36
|
+
]);
|
37
|
+
assert;
|
38
|
+
return constant("simulate")(typescript_1.default.factory.createArrowFunction(undefined, undefined, ApiFunctionProgrammer_1.ApiFunctionProgrammer.writeParameterDeclarations(components)(importer)(props), typescript_1.default.factory.createTypeReferenceNode(props.route.success ? "Output" : "void"), undefined, typescript_1.default.factory.createBlock([
|
39
|
+
...assert(components)(importer)(props),
|
40
|
+
typescript_1.default.factory.createReturnStatement(caller()),
|
41
|
+
], true)));
|
42
|
+
};
|
43
|
+
const assert = (components) => (importer) => (props) => {
|
44
|
+
var _a, _b;
|
45
|
+
const parameters = [
|
46
|
+
...props.route.parameters.map((p) => ({
|
47
|
+
category: "param",
|
48
|
+
name: p.key,
|
49
|
+
schema: SchemaProgrammer_1.SchemaProgrammer.write(components)(importer)(p.schema),
|
50
|
+
})),
|
51
|
+
...(props.route.query
|
52
|
+
? [
|
53
|
+
{
|
54
|
+
category: "query",
|
55
|
+
name: props.route.query.key,
|
56
|
+
schema: SchemaProgrammer_1.SchemaProgrammer.write(components)(importer)(props.route.query.schema),
|
57
|
+
},
|
58
|
+
]
|
59
|
+
: []),
|
60
|
+
...(props.route.body
|
61
|
+
? [
|
62
|
+
{
|
63
|
+
category: "body",
|
64
|
+
name: props.route.body.key,
|
65
|
+
schema: SchemaProgrammer_1.SchemaProgrammer.write(components)(importer)(props.route.body.schema),
|
66
|
+
},
|
67
|
+
]
|
68
|
+
: []),
|
69
|
+
];
|
70
|
+
if (parameters.length === 0)
|
71
|
+
return [];
|
72
|
+
const validator = StatementFactory_1.StatementFactory.constant("assert", typescript_1.default.factory.createCallExpression(IdentifierFactory_1.IdentifierFactory.access(typescript_1.default.factory.createIdentifier(importer.external({
|
73
|
+
type: "instance",
|
74
|
+
library: `@nestia/fetcher/lib/NestiaSimulator`,
|
75
|
+
name: "NestiaSimulator",
|
76
|
+
})))("assert"), undefined, [
|
77
|
+
typescript_1.default.factory.createObjectLiteralExpression([
|
78
|
+
typescript_1.default.factory.createPropertyAssignment("method", typescript_1.default.factory.createIdentifier("METADATA.method")),
|
79
|
+
typescript_1.default.factory.createPropertyAssignment("host", typescript_1.default.factory.createIdentifier("connection.host")),
|
80
|
+
typescript_1.default.factory.createPropertyAssignment("path", ApiNamespaceProgrammer_1.ApiNamespaceProgrammer.writePathCallExpression(props)),
|
81
|
+
typescript_1.default.factory.createPropertyAssignment("contentType", typescript_1.default.factory.createStringLiteral((_b = (_a = props.route.success) === null || _a === void 0 ? void 0 : _a.type) !== null && _b !== void 0 ? _b : "application/json")),
|
82
|
+
], true),
|
83
|
+
]));
|
84
|
+
const individual = parameters
|
85
|
+
.map((p) => typescript_1.default.factory.createCallExpression((() => {
|
86
|
+
const base = IdentifierFactory_1.IdentifierFactory.access(typescript_1.default.factory.createIdentifier("assert"))(p.category);
|
87
|
+
if (p.category !== "param")
|
88
|
+
return base;
|
89
|
+
return typescript_1.default.factory.createCallExpression(base, undefined, [
|
90
|
+
typescript_1.default.factory.createStringLiteral(p.name),
|
91
|
+
]);
|
92
|
+
})(), undefined, [
|
93
|
+
typescript_1.default.factory.createArrowFunction(undefined, undefined, [], undefined, undefined, typescript_1.default.factory.createCallExpression(IdentifierFactory_1.IdentifierFactory.access(typescript_1.default.factory.createIdentifier(importer.external({
|
94
|
+
type: "default",
|
95
|
+
library: "typia",
|
96
|
+
name: "typia",
|
97
|
+
})))("assert"), undefined, [
|
98
|
+
typescript_1.default.factory.createIdentifier(p.category === "headers" ? "connection.headers" : p.name),
|
99
|
+
])),
|
100
|
+
]))
|
101
|
+
.map(typescript_1.default.factory.createExpressionStatement);
|
102
|
+
return [validator, tryAndCatch(importer)(individual)];
|
103
|
+
};
|
104
|
+
const tryAndCatch = (importer) => (individual) => typescript_1.default.factory.createTryStatement(typescript_1.default.factory.createBlock(individual, true), typescript_1.default.factory.createCatchClause("exp", typescript_1.default.factory.createBlock([
|
105
|
+
typescript_1.default.factory.createIfStatement(typescript_1.default.factory.createLogicalNot(typescript_1.default.factory.createCallExpression(IdentifierFactory_1.IdentifierFactory.access(typescript_1.default.factory.createIdentifier(importer.external({
|
106
|
+
type: "default",
|
107
|
+
library: "typia",
|
108
|
+
name: "typia",
|
109
|
+
})))("is"), [
|
110
|
+
typescript_1.default.factory.createTypeReferenceNode(importer.external({
|
111
|
+
type: "instance",
|
112
|
+
library: "@nestia/Fetcher",
|
113
|
+
name: "HttpError",
|
114
|
+
})),
|
115
|
+
], [typescript_1.default.factory.createIdentifier("exp")])), typescript_1.default.factory.createThrowStatement(typescript_1.default.factory.createIdentifier("exp"))),
|
116
|
+
typescript_1.default.factory.createReturnStatement(typescript_1.default.factory.createAsExpression(typescript_1.default.factory.createObjectLiteralExpression([
|
117
|
+
typescript_1.default.factory.createPropertyAssignment("success", typescript_1.default.factory.createFalse()),
|
118
|
+
typescript_1.default.factory.createPropertyAssignment("status", typescript_1.default.factory.createIdentifier("exp.status")),
|
119
|
+
typescript_1.default.factory.createPropertyAssignment("headers", typescript_1.default.factory.createIdentifier("exp.headers")),
|
120
|
+
typescript_1.default.factory.createPropertyAssignment("data", typescript_1.default.factory.createIdentifier("exp.toJSON().message")),
|
121
|
+
], true), TypeFactory_1.TypeFactory.keyword("any"))),
|
122
|
+
], true)), undefined);
|
123
|
+
})(ApiSimulatationProgrammer || (exports.ApiSimulatationProgrammer = ApiSimulatationProgrammer = {}));
|
124
|
+
const constant = (name) => (expression) => typescript_1.default.factory.createVariableStatement([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], typescript_1.default.factory.createVariableDeclarationList([
|
125
|
+
typescript_1.default.factory.createVariableDeclaration(typescript_1.default.factory.createIdentifier(name), undefined, undefined, expression),
|
126
|
+
], typescript_1.default.NodeFlags.Const));
|
127
|
+
//# sourceMappingURL=ApiSimulatationProgrammer.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ApiSimulatationProgrammer.js","sourceRoot":"","sources":["../../src/programmers/ApiSimulatationProgrammer.ts"],"names":[],"mappings":"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"}
|
@@ -1,6 +1,8 @@
|
|
1
|
+
import { IMigrateConfig } from "../IMigrateConfig";
|
1
2
|
import { IMigrateController } from "./IMigrateController";
|
2
3
|
import { ISwagger } from "./ISwagger";
|
3
4
|
export interface IMigrateProgram {
|
5
|
+
config: IMigrateConfig;
|
4
6
|
controllers: IMigrateController[];
|
5
7
|
swagger: ISwagger;
|
6
8
|
}
|
package/package.json
CHANGED
@@ -1,64 +1,68 @@
|
|
1
|
-
{
|
2
|
-
"name": "@nestia/migrate",
|
3
|
-
"version": "0.
|
4
|
-
"description": "Migration program from swagger to NestJS",
|
5
|
-
"main": "lib/index.js",
|
6
|
-
"typings": "lib/index.d.ts",
|
7
|
-
"bin": {
|
8
|
-
"@nestia/migrate": "lib/executable/migrate.js"
|
9
|
-
},
|
10
|
-
"scripts": {
|
11
|
-
"build": "rimraf lib && tsc",
|
12
|
-
"
|
13
|
-
"
|
14
|
-
"
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
"
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
"
|
23
|
-
"
|
24
|
-
"
|
25
|
-
|
26
|
-
|
27
|
-
"
|
28
|
-
"
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
"
|
33
|
-
|
34
|
-
"@nestia/
|
35
|
-
"@
|
36
|
-
"@nestjs/
|
37
|
-
"@nestjs/
|
38
|
-
"@nestjs/platform-
|
39
|
-
"@
|
40
|
-
"@types/
|
41
|
-
"
|
42
|
-
"
|
43
|
-
"
|
44
|
-
"
|
45
|
-
"
|
46
|
-
"
|
47
|
-
"
|
48
|
-
"
|
49
|
-
"
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
"
|
57
|
-
"
|
58
|
-
|
59
|
-
|
60
|
-
"
|
61
|
-
"
|
62
|
-
"
|
63
|
-
|
64
|
-
|
1
|
+
{
|
2
|
+
"name": "@nestia/migrate",
|
3
|
+
"version": "0.7.0-dev.20240201",
|
4
|
+
"description": "Migration program from swagger to NestJS",
|
5
|
+
"main": "lib/index.js",
|
6
|
+
"typings": "lib/index.d.ts",
|
7
|
+
"bin": {
|
8
|
+
"@nestia/migrate": "lib/executable/migrate.js"
|
9
|
+
},
|
10
|
+
"scripts": {
|
11
|
+
"build": "rimraf lib && tsc",
|
12
|
+
"bundle": "ts-node src/executable/bundle.ts",
|
13
|
+
"dev": "npm run build -- --watch",
|
14
|
+
"prepare": "ts-patch install && typia patch && npm run bundle",
|
15
|
+
"test": "node lib/test"
|
16
|
+
},
|
17
|
+
"repository": {
|
18
|
+
"type": "git",
|
19
|
+
"url": "https://github.com/samchon/nestia"
|
20
|
+
},
|
21
|
+
"keywords": [
|
22
|
+
"migration",
|
23
|
+
"swagger",
|
24
|
+
"NestJS",
|
25
|
+
"nestia"
|
26
|
+
],
|
27
|
+
"author": "Jeongho Nam",
|
28
|
+
"license": "MIT",
|
29
|
+
"bugs": {
|
30
|
+
"url": "https://github.com/samchon/nestia/issues"
|
31
|
+
},
|
32
|
+
"homepage": "https://github.com/samchon/nestia#readme",
|
33
|
+
"devDependencies": {
|
34
|
+
"@nestia/core": "2.5.0-dev.20240201",
|
35
|
+
"@nestia/fetcher": "2.5.0-dev.20240201",
|
36
|
+
"@nestjs/common": "^10.3.1",
|
37
|
+
"@nestjs/core": "^10.3.1",
|
38
|
+
"@nestjs/platform-express": "^10.3.1",
|
39
|
+
"@nestjs/platform-fastify": "^10.3.1",
|
40
|
+
"@types/express": "^4.17.21",
|
41
|
+
"@types/inquirer": "^9.0.7",
|
42
|
+
"@types/node": "^20.3.3",
|
43
|
+
"dotenv": "^16.3.1",
|
44
|
+
"dotenv-expand": "^10.0.0",
|
45
|
+
"rimraf": "^5.0.1",
|
46
|
+
"serialize-error": "^4.1.0",
|
47
|
+
"source-map-support": "^0.5.21",
|
48
|
+
"ts-node": "^10.9.1",
|
49
|
+
"ts-patch": "^3.1.0",
|
50
|
+
"tstl": "^2.5.13",
|
51
|
+
"typescript-transform-paths": "^3.4.6"
|
52
|
+
},
|
53
|
+
"dependencies": {
|
54
|
+
"commander": "10.0.0",
|
55
|
+
"inquirer": "8.2.5",
|
56
|
+
"typescript": "^5.3.3",
|
57
|
+
"typia": "^5.4.1"
|
58
|
+
},
|
59
|
+
"files": [
|
60
|
+
"lib",
|
61
|
+
"src",
|
62
|
+
"!lib/test",
|
63
|
+
"!src/test",
|
64
|
+
"package.json",
|
65
|
+
"README.md",
|
66
|
+
"LICENSE"
|
67
|
+
]
|
68
|
+
}
|
@@ -1,78 +1,35 @@
|
|
1
|
-
import cp from "child_process";
|
2
|
-
import fs from "fs";
|
3
1
|
import typia from "typia";
|
4
2
|
|
5
3
|
import { MigrateAnalyzer } from "./analyzers/MigrateAnalyzer";
|
6
|
-
import {
|
7
|
-
import {
|
4
|
+
import { NEST_TEMPLATE } from "./bundles/NEST_TEMPLATE";
|
5
|
+
import { SDK_TEMPLATE } from "./bundles/SDK_TEMPLATE";
|
8
6
|
import { ApiProgrammer } from "./programmers/ApiProgrammer";
|
9
7
|
import { NestProgrammer } from "./programmers/NestProgrammer";
|
10
8
|
import { IMigrateFile } from "./structures/IMigrateFile";
|
11
|
-
import { IMigrateProgram } from "./structures/IMigrateProgram";
|
12
9
|
import { ISwagger } from "./structures/ISwagger";
|
13
10
|
|
14
11
|
export class MigrateApplication {
|
15
|
-
public readonly swagger: ISwagger
|
16
|
-
|
17
|
-
private files: IMigrateFile[] | null;
|
18
|
-
|
19
|
-
public constructor(swagger: ISwagger) {
|
20
|
-
this.swagger = typia.assert(swagger);
|
21
|
-
this.program = null;
|
22
|
-
this.files = null;
|
23
|
-
}
|
24
|
-
|
25
|
-
public analyze(): IMigrateProgram {
|
26
|
-
if (this.program === null)
|
27
|
-
this.program = MigrateAnalyzer.analyze(this.swagger);
|
28
|
-
return this.program;
|
12
|
+
public constructor(public readonly swagger: ISwagger) {
|
13
|
+
typia.assert(swagger);
|
29
14
|
}
|
30
15
|
|
31
|
-
public
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
16
|
+
public nest(simulate: boolean): IMigrateFile[] {
|
17
|
+
const program = MigrateAnalyzer.analyze({
|
18
|
+
mode: "nest",
|
19
|
+
simulate,
|
20
|
+
})(this.swagger);
|
21
|
+
return [
|
22
|
+
...NEST_TEMPLATE,
|
23
|
+
...NestProgrammer.write(program),
|
24
|
+
...ApiProgrammer.write(program),
|
25
|
+
];
|
40
26
|
}
|
41
27
|
|
42
|
-
public
|
43
|
-
const
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
})(output);
|
49
|
-
try {
|
50
|
-
cp.execSync(
|
51
|
-
`git clone https://github.com/samchon/nestia-template "${output}"`,
|
52
|
-
{ stdio: "ignore" },
|
53
|
-
);
|
54
|
-
try {
|
55
|
-
for (const path of [
|
56
|
-
"/.git",
|
57
|
-
"/src/api",
|
58
|
-
"/src/controllers",
|
59
|
-
"/src/providers",
|
60
|
-
"/test/features",
|
61
|
-
])
|
62
|
-
fs.rmSync(`${output}${path}`, {
|
63
|
-
recursive: true,
|
64
|
-
force: true,
|
65
|
-
});
|
66
|
-
} catch {}
|
67
|
-
} catch {
|
68
|
-
await archiver(TEMPLATE);
|
69
|
-
}
|
70
|
-
await archiver(files);
|
71
|
-
}
|
72
|
-
}
|
73
|
-
export namespace NestiaMigrateApplication {
|
74
|
-
export interface IArchiver {
|
75
|
-
mkdir: (path: string) => void;
|
76
|
-
writeFile: (path: string, content: string) => void;
|
28
|
+
public sdk(simulate: boolean): IMigrateFile[] {
|
29
|
+
const program = MigrateAnalyzer.analyze({
|
30
|
+
mode: "sdk",
|
31
|
+
simulate,
|
32
|
+
})(this.swagger);
|
33
|
+
return [...SDK_TEMPLATE, ...ApiProgrammer.write(program)];
|
77
34
|
}
|
78
35
|
}
|
@@ -1,9 +1,13 @@
|
|
1
|
+
import { IMigrateConfig } from "../IMigrateConfig";
|
1
2
|
import { IMigrateProgram, ISwagger } from "../module";
|
2
3
|
import { ControllerAnalyzer } from "./ControllerAnalyzer";
|
3
4
|
|
4
5
|
export namespace MigrateAnalyzer {
|
5
|
-
export const analyze =
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
export const analyze =
|
7
|
+
(config: IMigrateConfig) =>
|
8
|
+
(swagger: ISwagger): IMigrateProgram => ({
|
9
|
+
config,
|
10
|
+
swagger,
|
11
|
+
controllers: ControllerAnalyzer.analyze(swagger),
|
12
|
+
});
|
9
13
|
}
|