@tsoa-next/cli 7.3.3-dev.36.0bd572e6 → 7.3.4-dev.38.e942a31b

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/dist/api.d.ts ADDED
@@ -0,0 +1,38 @@
1
+ import { Config, RoutesConfig, SpecConfig, Tsoa } from '@tsoa-next/runtime';
2
+ import { AbstractRouteGenerator } from './routeGeneration/routeGenerator';
3
+ import type { CompilerOptions } from 'typescript';
4
+ export declare function validateCompilerOptions(config: Config, configBaseDir?: string): CompilerOptions;
5
+ export declare function validateCompilerOptions(compilerOptions?: Record<string, unknown>, configBaseDir?: string): CompilerOptions;
6
+ export interface ExtendedSpecConfig extends SpecConfig {
7
+ entryFile: Config['entryFile'];
8
+ noImplicitAdditionalProperties: Exclude<Config['noImplicitAdditionalProperties'], undefined>;
9
+ controllerPathGlobs?: Config['controllerPathGlobs'];
10
+ }
11
+ export declare const validateSpecConfig: (config: Config) => Promise<ExtendedSpecConfig>;
12
+ export interface ExtendedRoutesConfig extends RoutesConfig {
13
+ entryFile: Config['entryFile'];
14
+ noImplicitAdditionalProperties: Exclude<Config['noImplicitAdditionalProperties'], undefined>;
15
+ bodyCoercion: Exclude<RoutesConfig['bodyCoercion'], undefined>;
16
+ controllerPathGlobs?: Config['controllerPathGlobs'];
17
+ multerOpts?: Config['multerOpts'];
18
+ rootSecurity?: Config['spec']['rootSecurity'];
19
+ routeGenerator?: string | (new (metadata: Tsoa.Metadata, options: ExtendedRoutesConfig) => AbstractRouteGenerator<ExtendedRoutesConfig>);
20
+ }
21
+ export declare const validateRoutesConfig: (config: Config) => Promise<ExtendedRoutesConfig>;
22
+ export interface ConfigArgs {
23
+ basePath?: string;
24
+ configuration?: string | Config;
25
+ }
26
+ export interface SwaggerArgs extends ConfigArgs {
27
+ host?: string;
28
+ json?: boolean;
29
+ yaml?: boolean;
30
+ }
31
+ export declare function generateSpecFromArgs(args: SwaggerArgs): Promise<void>;
32
+ export declare function generateRoutesFromArgs(args: ConfigArgs): Promise<void>;
33
+ export declare function generateSpecAndRoutes(args: SwaggerArgs, metadata?: Tsoa.Metadata): Promise<Tsoa.Metadata>;
34
+ export type RouteGeneratorModule<Config extends ExtendedRoutesConfig> = {
35
+ default: new (metadata: Tsoa.Metadata, routesConfig: Config) => {
36
+ GenerateCustomRoutes: () => Promise<void>;
37
+ };
38
+ };
package/dist/api.js ADDED
@@ -0,0 +1,393 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.validateRoutesConfig = exports.validateSpecConfig = void 0;
37
+ exports.validateCompilerOptions = validateCompilerOptions;
38
+ exports.generateSpecFromArgs = generateSpecFromArgs;
39
+ exports.generateRoutesFromArgs = generateRoutesFromArgs;
40
+ exports.generateSpecAndRoutes = generateSpecAndRoutes;
41
+ const yaml_1 = require("yaml");
42
+ const ts = __importStar(require("typescript"));
43
+ const metadataGenerator_1 = require("./metadataGeneration/metadataGenerator");
44
+ const generate_routes_1 = require("./module/generate-routes");
45
+ const generate_spec_1 = require("./module/generate-spec");
46
+ const fs_1 = require("./utils/fs");
47
+ const node_path_1 = require("node:path");
48
+ const workingDir = process.cwd();
49
+ const isRecord = (value) => typeof value === 'object' && value !== null;
50
+ let packageJson;
51
+ const getPackageJsonValue = async (key, defaultValue = '') => {
52
+ if (!packageJson) {
53
+ try {
54
+ const packageJsonRaw = await (0, fs_1.fsReadFile)(`${workingDir}/package.json`);
55
+ const parsedPackageJson = JSON.parse(packageJsonRaw.toString('utf8'));
56
+ packageJson = isRecord(parsedPackageJson) ? parsedPackageJson : {};
57
+ }
58
+ catch {
59
+ return defaultValue;
60
+ }
61
+ }
62
+ const value = packageJson[key];
63
+ return typeof value === 'string' ? value : defaultValue;
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 isAuthorWhitespace = (char) => char === ' ' || char === '\t' || char === '\n' || char === '\r';
78
+ const skipAuthorWhitespace = (value, index) => {
79
+ let currentIndex = index;
80
+ while (currentIndex < value.length && isAuthorWhitespace(value[currentIndex])) {
81
+ currentIndex += 1;
82
+ }
83
+ return currentIndex;
84
+ };
85
+ const trimToUndefined = (value) => {
86
+ const trimmed = value.trim();
87
+ return trimmed.length > 0 ? trimmed : undefined;
88
+ };
89
+ const parseAuthorContact = (author) => {
90
+ const contact = {};
91
+ let index = skipAuthorWhitespace(author, 0);
92
+ let nameBoundary = author.length;
93
+ const emailStart = author.indexOf('<', index);
94
+ if (emailStart !== -1 && emailStart < nameBoundary) {
95
+ nameBoundary = emailStart;
96
+ }
97
+ const urlStart = author.indexOf('(', index);
98
+ if (urlStart !== -1 && urlStart < nameBoundary) {
99
+ nameBoundary = urlStart;
100
+ }
101
+ const name = trimToUndefined(author.slice(index, nameBoundary));
102
+ if (name) {
103
+ contact.name = name;
104
+ }
105
+ index = skipAuthorWhitespace(author, nameBoundary);
106
+ if (author[index] === '<') {
107
+ const emailEnd = author.indexOf('>', index + 1);
108
+ if (emailEnd !== -1) {
109
+ const email = trimToUndefined(author.slice(index + 1, emailEnd));
110
+ if (email) {
111
+ contact.email = email;
112
+ }
113
+ index = skipAuthorWhitespace(author, emailEnd + 1);
114
+ }
115
+ }
116
+ if (author[index] === '(') {
117
+ const urlEnd = author.indexOf(')', index + 1);
118
+ if (urlEnd !== -1) {
119
+ const url = trimToUndefined(author.slice(index + 1, urlEnd));
120
+ if (url) {
121
+ contact.url = url;
122
+ }
123
+ }
124
+ }
125
+ return contact;
126
+ };
127
+ const authorInformation = getPackageJsonValue('author', 'unknown');
128
+ const isYamlExtension = (extension) => extension === '.yaml' || extension === '.yml';
129
+ const isJsExtension = (extension) => extension === '.js' || extension === '.cjs';
130
+ const getConfig = async (configPath = 'tsoa.json') => {
131
+ let config;
132
+ const ext = (0, node_path_1.extname)(configPath);
133
+ const configFullPath = (0, node_path_1.isAbsolute)(configPath) ? configPath : `${workingDir}/${configPath}`;
134
+ try {
135
+ if (isYamlExtension(ext)) {
136
+ const configRaw = await (0, fs_1.fsReadFile)(configFullPath);
137
+ config = parseConfigValue((0, yaml_1.parse)(configRaw.toString('utf8')));
138
+ }
139
+ else if (isJsExtension(ext)) {
140
+ const importedConfig = await Promise.resolve(`${configFullPath}`).then(s => __importStar(require(s)));
141
+ if (!isRecord(importedConfig)) {
142
+ throw new Error(`Invalid JS config export at '${configPath}'`);
143
+ }
144
+ config = parseConfigModule(importedConfig);
145
+ }
146
+ else {
147
+ const configRaw = await (0, fs_1.fsReadFile)(configFullPath);
148
+ config = parseConfigValue(JSON.parse(configRaw.toString('utf8')));
149
+ }
150
+ }
151
+ catch (err) {
152
+ if (!(err instanceof Error)) {
153
+ console.error(err);
154
+ throw Error(`Unhandled error encountered loading '${configPath}': ${String(err)}`);
155
+ }
156
+ else if ('code' in err && err.code === 'MODULE_NOT_FOUND') {
157
+ throw Error(`No config file found at '${configPath}'`);
158
+ }
159
+ else if (err.name === 'SyntaxError') {
160
+ console.error(err);
161
+ const errorType = isJsExtension(ext) ? 'JS' : 'JSON';
162
+ throw Error(`Invalid ${errorType} syntax in config at '${configPath}': ${err.message}`);
163
+ }
164
+ else {
165
+ console.error(err);
166
+ throw Error(`Unhandled error encountered loading '${configPath}': ${err.message}`);
167
+ }
168
+ }
169
+ return {
170
+ config,
171
+ configBaseDir: (0, node_path_1.dirname)(configFullPath),
172
+ };
173
+ };
174
+ const resolveConfig = async (config) => {
175
+ if (typeof config === 'object' && config !== null) {
176
+ return {
177
+ config,
178
+ configBaseDir: workingDir,
179
+ };
180
+ }
181
+ return getConfig(config);
182
+ };
183
+ const formatCompilerOptionsErrors = (context, errors) => {
184
+ const message = errors.map(error => ts.flattenDiagnosticMessageText(error.messageText, ts.sys.newLine)).join(ts.sys.newLine);
185
+ throw new Error(`${context}: ${message}`);
186
+ };
187
+ const parseCompilerOptionsObject = (compilerOptions, configBaseDir, context, validateDiagnostics = true) => {
188
+ const parsed = ts.convertCompilerOptionsFromJson(compilerOptions, configBaseDir);
189
+ if (validateDiagnostics && parsed.errors.length > 0) {
190
+ formatCompilerOptionsErrors(context, parsed.errors);
191
+ }
192
+ return parsed.options;
193
+ };
194
+ const loadTsConfigCompilerOptions = (config, configBaseDir) => {
195
+ const configuredTsconfig = config.tsconfig;
196
+ const fileExists = (fileName) => ts.sys.fileExists(fileName);
197
+ const readFile = (fileName) => ts.sys.readFile(fileName);
198
+ const resolvedTsconfigPath = configuredTsconfig !== undefined
199
+ ? (0, node_path_1.isAbsolute)(configuredTsconfig)
200
+ ? configuredTsconfig
201
+ : (0, node_path_1.resolve)(configBaseDir, configuredTsconfig)
202
+ : ts.findConfigFile(configBaseDir, fileExists, 'tsconfig.json');
203
+ if (!resolvedTsconfigPath) {
204
+ return {};
205
+ }
206
+ const readResult = ts.readConfigFile(resolvedTsconfigPath, readFile);
207
+ if (readResult.error) {
208
+ formatCompilerOptionsErrors(`Failed to read tsconfig at '${resolvedTsconfigPath}'`, [readResult.error]);
209
+ }
210
+ const parsed = ts.parseJsonConfigFileContent(readResult.config, ts.sys, (0, node_path_1.dirname)(resolvedTsconfigPath), undefined, resolvedTsconfigPath);
211
+ const relevantErrors = parsed.errors.filter(error => error.code !== 18003);
212
+ if (relevantErrors.length > 0) {
213
+ formatCompilerOptionsErrors(`Failed to resolve tsconfig at '${resolvedTsconfigPath}'`, relevantErrors);
214
+ }
215
+ return parsed.options;
216
+ };
217
+ const isConfig = (value) => {
218
+ return isRecord(value) && ('entryFile' in value || 'routes' in value || 'spec' in value || 'tsconfig' in value);
219
+ };
220
+ const parseConfigValue = (value) => {
221
+ if (isConfig(value)) {
222
+ return value;
223
+ }
224
+ throw new Error('Invalid tsoa-next config shape');
225
+ };
226
+ const parseConfigModule = (moduleExports) => {
227
+ const defaultExport = 'default' in moduleExports ? moduleExports.default : moduleExports;
228
+ return parseConfigValue(defaultExport);
229
+ };
230
+ function validateCompilerOptions(configOrCompilerOptions, configBaseDir = workingDir) {
231
+ if (!isConfig(configOrCompilerOptions)) {
232
+ return configOrCompilerOptions ? parseCompilerOptionsObject(configOrCompilerOptions, configBaseDir, 'Invalid compilerOptions in tsoa-next config', false) : {};
233
+ }
234
+ const tsconfigCompilerOptions = loadTsConfigCompilerOptions(configOrCompilerOptions, configBaseDir);
235
+ const compilerOptionsBaseDir = typeof tsconfigCompilerOptions.configFilePath === 'string' ? (0, node_path_1.dirname)(tsconfigCompilerOptions.configFilePath) : configBaseDir;
236
+ const explicitCompilerOptions = configOrCompilerOptions.compilerOptions
237
+ ? parseCompilerOptionsObject(configOrCompilerOptions.compilerOptions, compilerOptionsBaseDir, 'Invalid compilerOptions in tsoa-next config')
238
+ : {};
239
+ return {
240
+ ...tsconfigCompilerOptions,
241
+ ...explicitCompilerOptions,
242
+ };
243
+ }
244
+ const validateSpecConfig = async (config) => {
245
+ if (!config.spec) {
246
+ throw new Error('Missing spec: configuration must contain spec. Spec used to be called swagger in previous versions of tsoa.');
247
+ }
248
+ if (!config.spec.outputDirectory) {
249
+ throw new Error('Missing outputDirectory: configuration must contain output directory.');
250
+ }
251
+ if (!config.entryFile && (!config.controllerPathGlobs || !config.controllerPathGlobs.length)) {
252
+ throw new Error('Missing entryFile and controllerPathGlobs: Configuration must contain an entry point file or controller path globals.');
253
+ }
254
+ if (config.entryFile && !(await (0, fs_1.fsExists)(config.entryFile))) {
255
+ throw new Error(`EntryFile not found: ${config.entryFile} - please check your tsoa config.`);
256
+ }
257
+ config.spec.version = config.spec.version || (await versionDefault());
258
+ config.spec.specVersion = config.spec.specVersion || 2;
259
+ const supportedVersions = [2, 3, 3.1];
260
+ if (!supportedVersions.includes(config.spec.specVersion)) {
261
+ throw new Error(`Unsupported Spec version: ${config.spec.specVersion}.`);
262
+ }
263
+ if (config.spec.spec && !['immediate', 'recursive', 'deepmerge', undefined].includes(config.spec.specMerging)) {
264
+ throw new Error(`Invalid specMerging config: ${config.spec.specMerging}`);
265
+ }
266
+ const noImplicitAdditionalProperties = determineNoImplicitAdditionalSetting(config.noImplicitAdditionalProperties);
267
+ config.spec.name = config.spec.name || (await nameDefault());
268
+ config.spec.description = config.spec.description || (await descriptionDefault());
269
+ config.spec.license = config.spec.license || (await licenseDefault());
270
+ config.spec.basePath = config.spec.basePath || '/';
271
+ // defaults to template that may generate non-unique operation ids.
272
+ // @see https://github.com/lukeautry/tsoa/issues/1005
273
+ config.spec.operationIdTemplate = config.spec.operationIdTemplate || '{{titleCase method.name}}';
274
+ if (!config.spec.contact) {
275
+ config.spec.contact = {};
276
+ }
277
+ const specContact = config.spec.contact;
278
+ const setContactValue = (key, value) => {
279
+ if (!specContact[key] && value !== undefined) {
280
+ specContact[key] = value;
281
+ }
282
+ };
283
+ const author = await authorInformation;
284
+ if (typeof author === 'string') {
285
+ const contact = parseAuthorContact(author);
286
+ setContactValue('name', contact.name);
287
+ setContactValue('email', contact.email);
288
+ setContactValue('url', contact.url);
289
+ }
290
+ else if (typeof author === 'object') {
291
+ setContactValue('name', author?.name);
292
+ setContactValue('email', author?.email);
293
+ setContactValue('url', author?.url);
294
+ }
295
+ if (!config.defaultNumberType) {
296
+ config.defaultNumberType = 'double';
297
+ }
298
+ if (config.spec.rootSecurity) {
299
+ if (!Array.isArray(config.spec.rootSecurity)) {
300
+ throw new Error('spec.rootSecurity must be an array');
301
+ }
302
+ const ok = config.spec.rootSecurity.every(security => typeof security === 'object' && security !== null && Object.values(security).every(scope => Array.isArray(scope)));
303
+ if (!ok) {
304
+ throw new Error('spec.rootSecurity must be an array of objects whose keys are security scheme names and values are arrays of scopes');
305
+ }
306
+ }
307
+ return {
308
+ ...config.spec,
309
+ noImplicitAdditionalProperties,
310
+ entryFile: config.entryFile,
311
+ controllerPathGlobs: config.controllerPathGlobs,
312
+ };
313
+ };
314
+ exports.validateSpecConfig = validateSpecConfig;
315
+ const validateRoutesConfig = async (config) => {
316
+ if (!config.entryFile && (!config.controllerPathGlobs || !config.controllerPathGlobs.length)) {
317
+ throw new Error('Missing entryFile and controllerPathGlobs: Configuration must contain an entry point file or controller path globals.');
318
+ }
319
+ if (config.entryFile && !(await (0, fs_1.fsExists)(config.entryFile))) {
320
+ throw new Error(`EntryFile not found: ${config.entryFile} - Please check your tsoa config.`);
321
+ }
322
+ const routes = config.routes;
323
+ if (!routes) {
324
+ throw new Error('Missing routes: configuration must contain routes.');
325
+ }
326
+ if (!routes.routesDir) {
327
+ throw new Error('Missing routesDir: Configuration must contain a routes file output directory.');
328
+ }
329
+ if (routes.authenticationModule && !((await (0, fs_1.fsExists)(routes.authenticationModule)) || (await (0, fs_1.fsExists)(routes.authenticationModule + '.ts')))) {
330
+ throw new Error(`No authenticationModule file found at '${routes.authenticationModule}'`);
331
+ }
332
+ if (routes.iocModule && !((await (0, fs_1.fsExists)(routes.iocModule)) || (await (0, fs_1.fsExists)(routes.iocModule + '.ts')))) {
333
+ throw new Error(`No iocModule file found at '${routes.iocModule}'`);
334
+ }
335
+ const noImplicitAdditionalProperties = determineNoImplicitAdditionalSetting(config.noImplicitAdditionalProperties);
336
+ const bodyCoercion = routes.bodyCoercion ?? true;
337
+ routes.basePath = routes.basePath || '/';
338
+ return {
339
+ ...routes,
340
+ entryFile: config.entryFile,
341
+ noImplicitAdditionalProperties,
342
+ bodyCoercion,
343
+ controllerPathGlobs: config.controllerPathGlobs,
344
+ multerOpts: config.multerOpts,
345
+ rootSecurity: config.spec?.rootSecurity,
346
+ };
347
+ };
348
+ exports.validateRoutesConfig = validateRoutesConfig;
349
+ const applyBasePathArg = (config, args) => {
350
+ if (args.basePath) {
351
+ config.basePath = args.basePath;
352
+ }
353
+ };
354
+ const applySwaggerArgs = (config, args) => {
355
+ applyBasePathArg(config, args);
356
+ if (args.host) {
357
+ config.host = args.host;
358
+ }
359
+ if (args.yaml) {
360
+ config.yaml = args.yaml;
361
+ }
362
+ if (args.json) {
363
+ config.yaml = false;
364
+ }
365
+ };
366
+ async function generateSpecFromArgs(args) {
367
+ const { config, configBaseDir } = await resolveConfig(args.configuration);
368
+ const compilerOptions = validateCompilerOptions(config, configBaseDir);
369
+ const swaggerConfig = await (0, exports.validateSpecConfig)(config);
370
+ applySwaggerArgs(swaggerConfig, args);
371
+ await (0, generate_spec_1.generateSpec)(swaggerConfig, compilerOptions, config.ignore);
372
+ }
373
+ async function generateRoutesFromArgs(args) {
374
+ const { config, configBaseDir } = await resolveConfig(args.configuration);
375
+ const compilerOptions = validateCompilerOptions(config, configBaseDir);
376
+ const routesConfig = await (0, exports.validateRoutesConfig)(config);
377
+ applyBasePathArg(routesConfig, args);
378
+ await (0, generate_routes_1.generateRoutes)(routesConfig, compilerOptions, config.ignore);
379
+ }
380
+ async function generateSpecAndRoutes(args, metadata) {
381
+ const { config, configBaseDir } = await resolveConfig(args.configuration);
382
+ const compilerOptions = validateCompilerOptions(config, configBaseDir);
383
+ const swaggerConfig = await (0, exports.validateSpecConfig)(config);
384
+ const routesConfig = await (0, exports.validateRoutesConfig)(config);
385
+ applySwaggerArgs(swaggerConfig, args);
386
+ applyBasePathArg(routesConfig, args);
387
+ if (!metadata) {
388
+ metadata = new metadataGenerator_1.MetadataGenerator(config.entryFile, compilerOptions, config.ignore, config.controllerPathGlobs, swaggerConfig.rootSecurity, config.defaultNumberType, routesConfig.esm).Generate();
389
+ }
390
+ await Promise.all([(0, generate_routes_1.generateRoutes)(routesConfig, compilerOptions, config.ignore, metadata), (0, generate_spec_1.generateSpec)(swaggerConfig, compilerOptions, config.ignore, metadata)]);
391
+ return metadata;
392
+ }
393
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts CHANGED
@@ -1,47 +1,3 @@
1
1
  #!/usr/bin/env node
2
- import { Config, RoutesConfig, SpecConfig, Tsoa } from '@tsoa-next/runtime';
3
- import { AbstractRouteGenerator } from './routeGeneration/routeGenerator';
4
- import type { CompilerOptions } from 'typescript';
5
- export declare function validateCompilerOptions(config: Config, configBaseDir?: string): CompilerOptions;
6
- export declare function validateCompilerOptions(compilerOptions?: Record<string, unknown>, configBaseDir?: string): CompilerOptions;
7
- export interface ExtendedSpecConfig extends SpecConfig {
8
- entryFile: Config['entryFile'];
9
- noImplicitAdditionalProperties: Exclude<Config['noImplicitAdditionalProperties'], undefined>;
10
- controllerPathGlobs?: Config['controllerPathGlobs'];
11
- }
12
- export declare const validateSpecConfig: (config: Config) => Promise<ExtendedSpecConfig>;
13
- type RouteGeneratorImpl = new (metadata: Tsoa.Metadata, options: ExtendedRoutesConfig) => AbstractRouteGenerator<ExtendedRoutesConfig>;
14
- export interface ExtendedRoutesConfig extends RoutesConfig {
15
- entryFile: Config['entryFile'];
16
- noImplicitAdditionalProperties: Exclude<Config['noImplicitAdditionalProperties'], undefined>;
17
- bodyCoercion: Exclude<RoutesConfig['bodyCoercion'], undefined>;
18
- controllerPathGlobs?: Config['controllerPathGlobs'];
19
- multerOpts?: Config['multerOpts'];
20
- rootSecurity?: Config['spec']['rootSecurity'];
21
- routeGenerator?: string | RouteGeneratorImpl;
22
- }
23
- export interface ConfigArgs {
24
- basePath?: string;
25
- configuration?: string | Config;
26
- }
27
- export interface SwaggerArgs extends ConfigArgs {
28
- host?: string;
29
- json?: boolean;
30
- yaml?: boolean;
31
- }
32
- export declare function runCLI(): {
33
- [x: string]: unknown;
34
- _: (string | number)[];
35
- $0: string;
36
- } | Promise<{
37
- [x: string]: unknown;
38
- _: (string | number)[];
39
- $0: string;
40
- }>;
41
- export declare function generateSpecAndRoutes(args: SwaggerArgs, metadata?: Tsoa.Metadata): Promise<Tsoa.Metadata>;
42
- export type RouteGeneratorModule<Config extends ExtendedRoutesConfig> = {
43
- default: new (metadata: Tsoa.Metadata, routesConfig: Config) => {
44
- GenerateCustomRoutes: () => Promise<void>;
45
- };
46
- };
47
- export {};
2
+ import { runCLI } from './runCLI';
3
+ export { runCLI };