@tsoa-next/cli 7.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.MD +3 -0
- package/dist/cli.d.ts +44 -0
- package/dist/cli.js +356 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/metadataGeneration/controllerGenerator.d.ts +30 -0
- package/dist/metadataGeneration/controllerGenerator.js +229 -0
- package/dist/metadataGeneration/controllerGenerator.js.map +1 -0
- package/dist/metadataGeneration/exceptions.d.ts +13 -0
- package/dist/metadataGeneration/exceptions.js +53 -0
- package/dist/metadataGeneration/exceptions.js.map +1 -0
- package/dist/metadataGeneration/extension.d.ts +5 -0
- package/dist/metadataGeneration/extension.js +85 -0
- package/dist/metadataGeneration/extension.js.map +1 -0
- package/dist/metadataGeneration/initializer-value.d.ts +6 -0
- package/dist/metadataGeneration/initializer-value.js +154 -0
- package/dist/metadataGeneration/initializer-value.js.map +1 -0
- package/dist/metadataGeneration/metadataGenerator.d.ts +29 -0
- package/dist/metadataGeneration/metadataGenerator.js +220 -0
- package/dist/metadataGeneration/metadataGenerator.js.map +1 -0
- package/dist/metadataGeneration/methodGenerator.d.ts +45 -0
- package/dist/metadataGeneration/methodGenerator.js +367 -0
- package/dist/metadataGeneration/methodGenerator.js.map +1 -0
- package/dist/metadataGeneration/parameterGenerator.d.ts +33 -0
- package/dist/metadataGeneration/parameterGenerator.js +552 -0
- package/dist/metadataGeneration/parameterGenerator.js.map +1 -0
- package/dist/metadataGeneration/transformer/dateTransformer.d.ts +6 -0
- package/dist/metadataGeneration/transformer/dateTransformer.js +28 -0
- package/dist/metadataGeneration/transformer/dateTransformer.js.map +1 -0
- package/dist/metadataGeneration/transformer/enumTransformer.d.ts +12 -0
- package/dist/metadataGeneration/transformer/enumTransformer.js +75 -0
- package/dist/metadataGeneration/transformer/enumTransformer.js.map +1 -0
- package/dist/metadataGeneration/transformer/primitiveTransformer.d.ts +11 -0
- package/dist/metadataGeneration/transformer/primitiveTransformer.js +70 -0
- package/dist/metadataGeneration/transformer/primitiveTransformer.js.map +1 -0
- package/dist/metadataGeneration/transformer/propertyTransformer.d.ts +12 -0
- package/dist/metadataGeneration/transformer/propertyTransformer.js +101 -0
- package/dist/metadataGeneration/transformer/propertyTransformer.js.map +1 -0
- package/dist/metadataGeneration/transformer/referenceTransformer.d.ts +10 -0
- package/dist/metadataGeneration/transformer/referenceTransformer.js +81 -0
- package/dist/metadataGeneration/transformer/referenceTransformer.js.map +1 -0
- package/dist/metadataGeneration/transformer/transformer.d.ts +9 -0
- package/dist/metadataGeneration/transformer/transformer.js +39 -0
- package/dist/metadataGeneration/transformer/transformer.js.map +1 -0
- package/dist/metadataGeneration/typeResolver.d.ts +52 -0
- package/dist/metadataGeneration/typeResolver.js +1202 -0
- package/dist/metadataGeneration/typeResolver.js.map +1 -0
- package/dist/module/generate-routes.d.ts +9 -0
- package/dist/module/generate-routes.js +90 -0
- package/dist/module/generate-routes.js.map +1 -0
- package/dist/module/generate-spec.d.ts +9 -0
- package/dist/module/generate-spec.js +79 -0
- package/dist/module/generate-spec.js.map +1 -0
- package/dist/routeGeneration/defaultRouteGenerator.d.ts +12 -0
- package/dist/routeGeneration/defaultRouteGenerator.js +119 -0
- package/dist/routeGeneration/defaultRouteGenerator.js.map +1 -0
- package/dist/routeGeneration/routeGenerator.d.ts +56 -0
- package/dist/routeGeneration/routeGenerator.js +257 -0
- package/dist/routeGeneration/routeGenerator.js.map +1 -0
- package/dist/routeGeneration/templates/express.hbs +221 -0
- package/dist/routeGeneration/templates/hapi.hbs +267 -0
- package/dist/routeGeneration/templates/koa.hbs +218 -0
- package/dist/swagger/specGenerator.d.ts +33 -0
- package/dist/swagger/specGenerator.js +253 -0
- package/dist/swagger/specGenerator.js.map +1 -0
- package/dist/swagger/specGenerator2.d.ts +27 -0
- package/dist/swagger/specGenerator2.js +476 -0
- package/dist/swagger/specGenerator2.js.map +1 -0
- package/dist/swagger/specGenerator3.d.ts +158 -0
- package/dist/swagger/specGenerator3.js +646 -0
- package/dist/swagger/specGenerator3.js.map +1 -0
- package/dist/swagger/specGenerator31.d.ts +24 -0
- package/dist/swagger/specGenerator31.js +75 -0
- package/dist/swagger/specGenerator31.js.map +1 -0
- package/dist/utils/decoratorUtils.d.ts +9 -0
- package/dist/utils/decoratorUtils.js +118 -0
- package/dist/utils/decoratorUtils.js.map +1 -0
- package/dist/utils/flowUtils.d.ts +1 -0
- package/dist/utils/flowUtils.js +8 -0
- package/dist/utils/flowUtils.js.map +1 -0
- package/dist/utils/fs.d.ts +5 -0
- package/dist/utils/fs.js +55 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/genericTypeGuards.d.ts +1 -0
- package/dist/utils/genericTypeGuards.js +8 -0
- package/dist/utils/genericTypeGuards.js.map +1 -0
- package/dist/utils/headerTypeHelpers.d.ts +5 -0
- package/dist/utils/headerTypeHelpers.js +27 -0
- package/dist/utils/headerTypeHelpers.js.map +1 -0
- package/dist/utils/importClassesFromDirectories.d.ts +4 -0
- package/dist/utils/importClassesFromDirectories.js +20 -0
- package/dist/utils/importClassesFromDirectories.js.map +1 -0
- package/dist/utils/internalTypeGuards.d.ts +5 -0
- package/dist/utils/internalTypeGuards.js +66 -0
- package/dist/utils/internalTypeGuards.js.map +1 -0
- package/dist/utils/isVoidType.d.ts +2 -0
- package/dist/utils/isVoidType.js +16 -0
- package/dist/utils/isVoidType.js.map +1 -0
- package/dist/utils/jsDocUtils.d.ts +8 -0
- package/dist/utils/jsDocUtils.js +122 -0
- package/dist/utils/jsDocUtils.js.map +1 -0
- package/dist/utils/jsonUtils.d.ts +1 -0
- package/dist/utils/jsonUtils.js +12 -0
- package/dist/utils/jsonUtils.js.map +1 -0
- package/dist/utils/pathUtils.d.ts +9 -0
- package/dist/utils/pathUtils.js +37 -0
- package/dist/utils/pathUtils.js.map +1 -0
- package/dist/utils/specMerge.d.ts +2 -0
- package/dist/utils/specMerge.js +36 -0
- package/dist/utils/specMerge.js.map +1 -0
- package/dist/utils/swaggerUtils.d.ts +3 -0
- package/dist/utils/swaggerUtils.js +22 -0
- package/dist/utils/swaggerUtils.js.map +1 -0
- package/dist/utils/unspecifiedObject.d.ts +3 -0
- package/dist/utils/unspecifiedObject.js +3 -0
- package/dist/utils/unspecifiedObject.js.map +1 -0
- package/dist/utils/validatorUtils.d.ts +5 -0
- package/dist/utils/validatorUtils.js +241 -0
- package/dist/utils/validatorUtils.js.map +1 -0
- package/package.json +69 -0
package/README.MD
ADDED
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Config, RoutesConfig, SpecConfig, Tsoa } from '@tsoa-next/runtime';
|
|
3
|
+
import { AbstractRouteGenerator } from './routeGeneration/routeGenerator';
|
|
4
|
+
export interface ExtendedSpecConfig extends SpecConfig {
|
|
5
|
+
entryFile: Config['entryFile'];
|
|
6
|
+
noImplicitAdditionalProperties: Exclude<Config['noImplicitAdditionalProperties'], undefined>;
|
|
7
|
+
controllerPathGlobs?: Config['controllerPathGlobs'];
|
|
8
|
+
}
|
|
9
|
+
export declare const validateSpecConfig: (config: Config) => Promise<ExtendedSpecConfig>;
|
|
10
|
+
type RouteGeneratorImpl = new (metadata: Tsoa.Metadata, options: ExtendedRoutesConfig) => AbstractRouteGenerator<any>;
|
|
11
|
+
export interface ExtendedRoutesConfig extends RoutesConfig {
|
|
12
|
+
entryFile: Config['entryFile'];
|
|
13
|
+
noImplicitAdditionalProperties: Exclude<Config['noImplicitAdditionalProperties'], undefined>;
|
|
14
|
+
bodyCoercion: Exclude<RoutesConfig['bodyCoercion'], undefined>;
|
|
15
|
+
controllerPathGlobs?: Config['controllerPathGlobs'];
|
|
16
|
+
multerOpts?: Config['multerOpts'];
|
|
17
|
+
rootSecurity?: Config['spec']['rootSecurity'];
|
|
18
|
+
routeGenerator?: string | RouteGeneratorImpl;
|
|
19
|
+
}
|
|
20
|
+
export interface ConfigArgs {
|
|
21
|
+
basePath?: string;
|
|
22
|
+
configuration?: string | Config;
|
|
23
|
+
}
|
|
24
|
+
export interface SwaggerArgs extends ConfigArgs {
|
|
25
|
+
host?: string;
|
|
26
|
+
json?: boolean;
|
|
27
|
+
yaml?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export declare function runCLI(): {
|
|
30
|
+
[x: string]: unknown;
|
|
31
|
+
_: (string | number)[];
|
|
32
|
+
$0: string;
|
|
33
|
+
} | Promise<{
|
|
34
|
+
[x: string]: unknown;
|
|
35
|
+
_: (string | number)[];
|
|
36
|
+
$0: string;
|
|
37
|
+
}>;
|
|
38
|
+
export declare function generateSpecAndRoutes(args: SwaggerArgs, metadata?: Tsoa.Metadata): Promise<Tsoa.Metadata>;
|
|
39
|
+
export type RouteGeneratorModule<Config extends ExtendedRoutesConfig> = {
|
|
40
|
+
default: new (metadata: Tsoa.Metadata, routesConfig: Config) => {
|
|
41
|
+
GenerateCustomRoutes: () => Promise<void>;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
export {};
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
+
};
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.validateSpecConfig = void 0;
|
|
41
|
+
exports.runCLI = runCLI;
|
|
42
|
+
exports.generateSpecAndRoutes = generateSpecAndRoutes;
|
|
43
|
+
const yaml_1 = __importDefault(require("yaml"));
|
|
44
|
+
const yargs_1 = __importDefault(require("yargs"));
|
|
45
|
+
const helpers_1 = require("yargs/helpers");
|
|
46
|
+
const metadataGenerator_1 = require("./metadataGeneration/metadataGenerator");
|
|
47
|
+
const generate_routes_1 = require("./module/generate-routes");
|
|
48
|
+
const generate_spec_1 = require("./module/generate-spec");
|
|
49
|
+
const fs_1 = require("./utils/fs");
|
|
50
|
+
const node_path_1 = require("node:path");
|
|
51
|
+
const workingDir = process.cwd();
|
|
52
|
+
let packageJson;
|
|
53
|
+
const getPackageJsonValue = async (key, defaultValue = '') => {
|
|
54
|
+
if (!packageJson) {
|
|
55
|
+
try {
|
|
56
|
+
const packageJsonRaw = await (0, fs_1.fsReadFile)(`${workingDir}/package.json`);
|
|
57
|
+
packageJson = JSON.parse(packageJsonRaw.toString('utf8'));
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
return defaultValue;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return packageJson[key] || '';
|
|
64
|
+
};
|
|
65
|
+
const nameDefault = () => getPackageJsonValue('name', 'TSOA');
|
|
66
|
+
const versionDefault = () => getPackageJsonValue('version', '1.0.0');
|
|
67
|
+
const descriptionDefault = () => getPackageJsonValue('description', 'Build swagger-compliant REST APIs using TypeScript and Node');
|
|
68
|
+
const licenseDefault = () => getPackageJsonValue('license', 'MIT');
|
|
69
|
+
const determineNoImplicitAdditionalSetting = (noImplicitAdditionalProperties) => {
|
|
70
|
+
if (noImplicitAdditionalProperties === 'silently-remove-extras' || noImplicitAdditionalProperties === 'throw-on-extras' || noImplicitAdditionalProperties === 'ignore') {
|
|
71
|
+
return noImplicitAdditionalProperties;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
return 'ignore';
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
const authorInformation = getPackageJsonValue('author', 'unknown');
|
|
78
|
+
const isYamlExtension = (extension) => extension === '.yaml' || extension === '.yml';
|
|
79
|
+
const isJsExtension = (extension) => extension === '.js' || extension === '.cjs';
|
|
80
|
+
const getConfig = async (configPath = 'tsoa.json') => {
|
|
81
|
+
let config;
|
|
82
|
+
const ext = (0, node_path_1.extname)(configPath);
|
|
83
|
+
const configFullPath = (0, node_path_1.isAbsolute)(configPath) ? configPath : `${workingDir}/${configPath}`;
|
|
84
|
+
try {
|
|
85
|
+
if (isYamlExtension(ext)) {
|
|
86
|
+
const configRaw = await (0, fs_1.fsReadFile)(configFullPath);
|
|
87
|
+
config = yaml_1.default.parse(configRaw.toString('utf8'));
|
|
88
|
+
}
|
|
89
|
+
else if (isJsExtension(ext)) {
|
|
90
|
+
config = await Promise.resolve(`${configFullPath}`).then(s => __importStar(require(s)));
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
const configRaw = await (0, fs_1.fsReadFile)(configFullPath);
|
|
94
|
+
config = JSON.parse(configRaw.toString('utf8'));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
if (!(err instanceof Error)) {
|
|
99
|
+
console.error(err);
|
|
100
|
+
throw Error(`Unhandled error encountered loading '${configPath}': ${String(err)}`);
|
|
101
|
+
}
|
|
102
|
+
else if ('code' in err && err.code === 'MODULE_NOT_FOUND') {
|
|
103
|
+
throw Error(`No config file found at '${configPath}'`);
|
|
104
|
+
}
|
|
105
|
+
else if (err.name === 'SyntaxError') {
|
|
106
|
+
console.error(err);
|
|
107
|
+
const errorType = isJsExtension(ext) ? 'JS' : 'JSON';
|
|
108
|
+
throw Error(`Invalid ${errorType} syntax in config at '${configPath}': ${err.message}`);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
console.error(err);
|
|
112
|
+
throw Error(`Unhandled error encountered loading '${configPath}': ${err.message}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return config;
|
|
116
|
+
};
|
|
117
|
+
const resolveConfig = async (config) => {
|
|
118
|
+
return typeof config === 'object' ? config : getConfig(config);
|
|
119
|
+
};
|
|
120
|
+
const validateCompilerOptions = (config) => {
|
|
121
|
+
return (config || {});
|
|
122
|
+
};
|
|
123
|
+
const validateSpecConfig = async (config) => {
|
|
124
|
+
if (!config.spec) {
|
|
125
|
+
throw new Error('Missing spec: configuration must contain spec. Spec used to be called swagger in previous versions of tsoa.');
|
|
126
|
+
}
|
|
127
|
+
if (!config.spec.outputDirectory) {
|
|
128
|
+
throw new Error('Missing outputDirectory: configuration must contain output directory.');
|
|
129
|
+
}
|
|
130
|
+
if (!config.entryFile && (!config.controllerPathGlobs || !config.controllerPathGlobs.length)) {
|
|
131
|
+
throw new Error('Missing entryFile and controllerPathGlobs: Configuration must contain an entry point file or controller path globals.');
|
|
132
|
+
}
|
|
133
|
+
if (!!config.entryFile && !(await (0, fs_1.fsExists)(config.entryFile))) {
|
|
134
|
+
throw new Error(`EntryFile not found: ${config.entryFile} - please check your tsoa config.`);
|
|
135
|
+
}
|
|
136
|
+
config.spec.version = config.spec.version || (await versionDefault());
|
|
137
|
+
config.spec.specVersion = config.spec.specVersion || 2;
|
|
138
|
+
const supportedVersions = [2, 3, 3.1];
|
|
139
|
+
if (!supportedVersions.includes(config.spec.specVersion)) {
|
|
140
|
+
throw new Error(`Unsupported Spec version: ${config.spec.specVersion}.`);
|
|
141
|
+
}
|
|
142
|
+
if (config.spec.spec && !['immediate', 'recursive', 'deepmerge', undefined].includes(config.spec.specMerging)) {
|
|
143
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
144
|
+
throw new Error(`Invalid specMerging config: ${config.spec.specMerging}`);
|
|
145
|
+
}
|
|
146
|
+
const noImplicitAdditionalProperties = determineNoImplicitAdditionalSetting(config.noImplicitAdditionalProperties);
|
|
147
|
+
config.spec.name = config.spec.name || (await nameDefault());
|
|
148
|
+
config.spec.description = config.spec.description || (await descriptionDefault());
|
|
149
|
+
config.spec.license = config.spec.license || (await licenseDefault());
|
|
150
|
+
config.spec.basePath = config.spec.basePath || '/';
|
|
151
|
+
// defaults to template that may generate non-unique operation ids.
|
|
152
|
+
// @see https://github.com/lukeautry/tsoa/issues/1005
|
|
153
|
+
config.spec.operationIdTemplate = config.spec.operationIdTemplate || '{{titleCase method.name}}';
|
|
154
|
+
if (!config.spec.contact) {
|
|
155
|
+
config.spec.contact = {};
|
|
156
|
+
}
|
|
157
|
+
const author = await authorInformation;
|
|
158
|
+
if (typeof author === 'string') {
|
|
159
|
+
const contact = /^([^<(]*)?\s*(?:<([^>(]*)>)?\s*(?:\(([^)]*)\)|$)/m.exec(author);
|
|
160
|
+
config.spec.contact.name = config.spec.contact.name || contact?.[1];
|
|
161
|
+
config.spec.contact.email = config.spec.contact.email || contact?.[2];
|
|
162
|
+
config.spec.contact.url = config.spec.contact.url || contact?.[3];
|
|
163
|
+
}
|
|
164
|
+
else if (typeof author === 'object') {
|
|
165
|
+
config.spec.contact.name = config.spec.contact.name || author?.name;
|
|
166
|
+
config.spec.contact.email = config.spec.contact.email || author?.email;
|
|
167
|
+
config.spec.contact.url = config.spec.contact.url || author?.url;
|
|
168
|
+
}
|
|
169
|
+
if (!config.defaultNumberType) {
|
|
170
|
+
config.defaultNumberType = 'double';
|
|
171
|
+
}
|
|
172
|
+
if (config.spec.rootSecurity) {
|
|
173
|
+
if (!Array.isArray(config.spec.rootSecurity)) {
|
|
174
|
+
throw new Error('spec.rootSecurity must be an array');
|
|
175
|
+
}
|
|
176
|
+
if (config.spec.rootSecurity) {
|
|
177
|
+
const ok = config.spec.rootSecurity.every(security => typeof security === 'object' && security !== null && Object.values(security).every(scope => Array.isArray(scope)));
|
|
178
|
+
if (!ok) {
|
|
179
|
+
throw new Error('spec.rootSecurity must be an array of objects whose keys are security scheme names and values are arrays of scopes');
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return {
|
|
184
|
+
...config.spec,
|
|
185
|
+
noImplicitAdditionalProperties,
|
|
186
|
+
entryFile: config.entryFile,
|
|
187
|
+
controllerPathGlobs: config.controllerPathGlobs,
|
|
188
|
+
};
|
|
189
|
+
};
|
|
190
|
+
exports.validateSpecConfig = validateSpecConfig;
|
|
191
|
+
const validateRoutesConfig = async (config) => {
|
|
192
|
+
if (!config.entryFile && (!config.controllerPathGlobs || !config.controllerPathGlobs.length)) {
|
|
193
|
+
throw new Error('Missing entryFile and controllerPathGlobs: Configuration must contain an entry point file or controller path globals.');
|
|
194
|
+
}
|
|
195
|
+
if (!!config.entryFile && !(await (0, fs_1.fsExists)(config.entryFile))) {
|
|
196
|
+
throw new Error(`EntryFile not found: ${config.entryFile} - Please check your tsoa config.`);
|
|
197
|
+
}
|
|
198
|
+
if (!config.routes.routesDir) {
|
|
199
|
+
throw new Error('Missing routesDir: Configuration must contain a routes file output directory.');
|
|
200
|
+
}
|
|
201
|
+
if (config.routes.authenticationModule && !((await (0, fs_1.fsExists)(config.routes.authenticationModule)) || (await (0, fs_1.fsExists)(config.routes.authenticationModule + '.ts')))) {
|
|
202
|
+
throw new Error(`No authenticationModule file found at '${config.routes.authenticationModule}'`);
|
|
203
|
+
}
|
|
204
|
+
if (config.routes.iocModule && !((await (0, fs_1.fsExists)(config.routes.iocModule)) || (await (0, fs_1.fsExists)(config.routes.iocModule + '.ts')))) {
|
|
205
|
+
throw new Error(`No iocModule file found at '${config.routes.iocModule}'`);
|
|
206
|
+
}
|
|
207
|
+
const noImplicitAdditionalProperties = determineNoImplicitAdditionalSetting(config.noImplicitAdditionalProperties);
|
|
208
|
+
const bodyCoercion = config.routes.bodyCoercion ?? true;
|
|
209
|
+
config.routes.basePath = config.routes.basePath || '/';
|
|
210
|
+
return {
|
|
211
|
+
...config.routes,
|
|
212
|
+
entryFile: config.entryFile,
|
|
213
|
+
noImplicitAdditionalProperties,
|
|
214
|
+
bodyCoercion,
|
|
215
|
+
controllerPathGlobs: config.controllerPathGlobs,
|
|
216
|
+
multerOpts: config.multerOpts,
|
|
217
|
+
rootSecurity: config.spec.rootSecurity,
|
|
218
|
+
};
|
|
219
|
+
};
|
|
220
|
+
const configurationArgs = {
|
|
221
|
+
alias: 'c',
|
|
222
|
+
describe: 'tsoa configuration file; default is tsoa.json in the working directory',
|
|
223
|
+
required: false,
|
|
224
|
+
string: true,
|
|
225
|
+
};
|
|
226
|
+
const hostArgs = {
|
|
227
|
+
describe: 'API host',
|
|
228
|
+
required: false,
|
|
229
|
+
string: true,
|
|
230
|
+
};
|
|
231
|
+
const basePathArgs = {
|
|
232
|
+
describe: 'Base API path',
|
|
233
|
+
required: false,
|
|
234
|
+
string: true,
|
|
235
|
+
};
|
|
236
|
+
const yarmlArgs = {
|
|
237
|
+
describe: 'Swagger spec yaml format',
|
|
238
|
+
required: false,
|
|
239
|
+
boolean: true,
|
|
240
|
+
};
|
|
241
|
+
const jsonArgs = {
|
|
242
|
+
describe: 'Swagger spec json format',
|
|
243
|
+
required: false,
|
|
244
|
+
boolean: true,
|
|
245
|
+
};
|
|
246
|
+
function runCLI() {
|
|
247
|
+
return (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
|
|
248
|
+
.usage('Usage: $0 <command> [options]')
|
|
249
|
+
.command('spec', 'Generate OpenAPI spec', {
|
|
250
|
+
basePath: basePathArgs,
|
|
251
|
+
configuration: configurationArgs,
|
|
252
|
+
host: hostArgs,
|
|
253
|
+
json: jsonArgs,
|
|
254
|
+
yaml: yarmlArgs,
|
|
255
|
+
}, args => SpecGenerator(args))
|
|
256
|
+
.command('routes', 'Generate routes', {
|
|
257
|
+
basePath: basePathArgs,
|
|
258
|
+
configuration: configurationArgs,
|
|
259
|
+
}, args => routeGenerator(args))
|
|
260
|
+
.command('spec-and-routes', 'Generate OpenAPI spec and routes', {
|
|
261
|
+
basePath: basePathArgs,
|
|
262
|
+
configuration: configurationArgs,
|
|
263
|
+
host: hostArgs,
|
|
264
|
+
json: jsonArgs,
|
|
265
|
+
yaml: yarmlArgs,
|
|
266
|
+
}, args => void generateSpecAndRoutes(args))
|
|
267
|
+
.demandCommand(1, 1, 'Must provide a valid command.')
|
|
268
|
+
.help('help')
|
|
269
|
+
.alias('help', 'h')
|
|
270
|
+
.parse();
|
|
271
|
+
}
|
|
272
|
+
if (require.main === module) {
|
|
273
|
+
void (async () => {
|
|
274
|
+
try {
|
|
275
|
+
await runCLI();
|
|
276
|
+
}
|
|
277
|
+
catch (err) {
|
|
278
|
+
// eslint-disable-next-line no-console
|
|
279
|
+
console.error('tsoa cli error:\n', err);
|
|
280
|
+
process.exit(1);
|
|
281
|
+
}
|
|
282
|
+
})();
|
|
283
|
+
}
|
|
284
|
+
async function SpecGenerator(args) {
|
|
285
|
+
try {
|
|
286
|
+
const config = await resolveConfig(args.configuration);
|
|
287
|
+
if (args.basePath) {
|
|
288
|
+
config.spec.basePath = args.basePath;
|
|
289
|
+
}
|
|
290
|
+
if (args.host) {
|
|
291
|
+
config.spec.host = args.host;
|
|
292
|
+
}
|
|
293
|
+
if (args.yaml) {
|
|
294
|
+
config.spec.yaml = args.yaml;
|
|
295
|
+
}
|
|
296
|
+
if (args.json) {
|
|
297
|
+
config.spec.yaml = false;
|
|
298
|
+
}
|
|
299
|
+
const compilerOptions = validateCompilerOptions(config.compilerOptions);
|
|
300
|
+
const swaggerConfig = await (0, exports.validateSpecConfig)(config);
|
|
301
|
+
await (0, generate_spec_1.generateSpec)(swaggerConfig, compilerOptions, config.ignore);
|
|
302
|
+
}
|
|
303
|
+
catch (err) {
|
|
304
|
+
// eslint-disable-next-line no-console
|
|
305
|
+
console.error('Generate swagger error.\n', err);
|
|
306
|
+
process.exit(1);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
async function routeGenerator(args) {
|
|
310
|
+
try {
|
|
311
|
+
const config = await resolveConfig(args.configuration);
|
|
312
|
+
if (args.basePath) {
|
|
313
|
+
config.routes.basePath = args.basePath;
|
|
314
|
+
}
|
|
315
|
+
const compilerOptions = validateCompilerOptions(config.compilerOptions);
|
|
316
|
+
const routesConfig = await validateRoutesConfig(config);
|
|
317
|
+
await (0, generate_routes_1.generateRoutes)(routesConfig, compilerOptions, config.ignore);
|
|
318
|
+
}
|
|
319
|
+
catch (err) {
|
|
320
|
+
// eslint-disable-next-line no-console
|
|
321
|
+
console.error('Generate routes error.\n', err);
|
|
322
|
+
process.exit(1);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
async function generateSpecAndRoutes(args, metadata) {
|
|
326
|
+
try {
|
|
327
|
+
const config = await resolveConfig(args.configuration);
|
|
328
|
+
if (args.basePath) {
|
|
329
|
+
config.spec.basePath = args.basePath;
|
|
330
|
+
}
|
|
331
|
+
if (args.host) {
|
|
332
|
+
config.spec.host = args.host;
|
|
333
|
+
}
|
|
334
|
+
if (args.yaml) {
|
|
335
|
+
config.spec.yaml = args.yaml;
|
|
336
|
+
}
|
|
337
|
+
if (args.json) {
|
|
338
|
+
config.spec.yaml = false;
|
|
339
|
+
}
|
|
340
|
+
const compilerOptions = validateCompilerOptions(config.compilerOptions);
|
|
341
|
+
const routesConfig = await validateRoutesConfig(config);
|
|
342
|
+
const swaggerConfig = await (0, exports.validateSpecConfig)(config);
|
|
343
|
+
if (!metadata) {
|
|
344
|
+
metadata = new metadataGenerator_1.MetadataGenerator(config.entryFile, compilerOptions, config.ignore, config.controllerPathGlobs, config.spec.rootSecurity, config.defaultNumberType, config.routes.esm).Generate();
|
|
345
|
+
}
|
|
346
|
+
await Promise.all([(0, generate_routes_1.generateRoutes)(routesConfig, compilerOptions, config.ignore, metadata), (0, generate_spec_1.generateSpec)(swaggerConfig, compilerOptions, config.ignore, metadata)]);
|
|
347
|
+
return metadata;
|
|
348
|
+
}
|
|
349
|
+
catch (err) {
|
|
350
|
+
// eslint-disable-next-line no-console
|
|
351
|
+
console.error('Generate routes error.\n', err);
|
|
352
|
+
process.exit(1);
|
|
353
|
+
throw err;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './module/generate-spec';
|
|
2
|
+
export * from './module/generate-routes';
|
|
3
|
+
export { AbstractRouteGenerator } from './routeGeneration/routeGenerator';
|
|
4
|
+
export { DefaultRouteGenerator } from './routeGeneration/defaultRouteGenerator';
|
|
5
|
+
export { Config } from '@tsoa-next/runtime';
|
|
6
|
+
export * from './cli';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.DefaultRouteGenerator = exports.AbstractRouteGenerator = void 0;
|
|
18
|
+
__exportStar(require("./module/generate-spec"), exports);
|
|
19
|
+
__exportStar(require("./module/generate-routes"), exports);
|
|
20
|
+
var routeGenerator_1 = require("./routeGeneration/routeGenerator");
|
|
21
|
+
Object.defineProperty(exports, "AbstractRouteGenerator", { enumerable: true, get: function () { return routeGenerator_1.AbstractRouteGenerator; } });
|
|
22
|
+
var defaultRouteGenerator_1 = require("./routeGeneration/defaultRouteGenerator");
|
|
23
|
+
Object.defineProperty(exports, "DefaultRouteGenerator", { enumerable: true, get: function () { return defaultRouteGenerator_1.DefaultRouteGenerator; } });
|
|
24
|
+
__exportStar(require("./cli"), exports);
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,yDAAsC;AACtC,2DAAwC;AACxC,mEAAyE;AAAhE,wHAAA,sBAAsB,OAAA;AAC/B,iFAA+E;AAAtE,8HAAA,qBAAqB,OAAA;AAE9B,wCAAqB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { MetadataGenerator } from './metadataGenerator';
|
|
2
|
+
import { Tsoa } from '@tsoa-next/runtime';
|
|
3
|
+
import { type ClassDeclaration } from 'typescript';
|
|
4
|
+
export declare class ControllerGenerator {
|
|
5
|
+
private readonly node;
|
|
6
|
+
private readonly current;
|
|
7
|
+
private readonly parentSecurity;
|
|
8
|
+
private readonly path?;
|
|
9
|
+
private readonly tags?;
|
|
10
|
+
private readonly security?;
|
|
11
|
+
private readonly isHidden?;
|
|
12
|
+
private readonly commonResponses;
|
|
13
|
+
private readonly produces?;
|
|
14
|
+
constructor(node: ClassDeclaration, current: MetadataGenerator, parentSecurity?: Tsoa.Security[]);
|
|
15
|
+
IsValid(): boolean;
|
|
16
|
+
Generate(): Tsoa.Controller;
|
|
17
|
+
private buildMethods;
|
|
18
|
+
private getMethodsWithInheritedMethods;
|
|
19
|
+
private getInheritanceChainForRoutes;
|
|
20
|
+
private getDirectBaseClassInfo;
|
|
21
|
+
private extendsRuntimeController;
|
|
22
|
+
private getMethodKey;
|
|
23
|
+
private getImportModuleSpecifier;
|
|
24
|
+
private getPath;
|
|
25
|
+
private getCommonResponses;
|
|
26
|
+
private getTags;
|
|
27
|
+
private getSecurity;
|
|
28
|
+
private getIsHidden;
|
|
29
|
+
private getProduces;
|
|
30
|
+
}
|