@tsoa-next/cli 8.0.3-dev.51.464a0c70 → 8.0.4-dev.53.2c0aa7c6

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.
@@ -0,0 +1,13 @@
1
+ export type DiscoveryMode = 'path' | 'glob';
2
+ export interface DiscoveredConfigFile {
3
+ absolutePath: string;
4
+ displayPath: string;
5
+ sortKey: string;
6
+ }
7
+ export interface DiscoveryResult {
8
+ effectiveRoot: string;
9
+ matches: DiscoveredConfigFile[];
10
+ mode: DiscoveryMode;
11
+ }
12
+ export declare const getDefaultDiscoverRoot: () => string;
13
+ export declare function discoverConfigs(input?: string): Promise<DiscoveryResult>;
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDefaultDiscoverRoot = void 0;
4
+ exports.discoverConfigs = discoverConfigs;
5
+ const promises_1 = require("node:fs/promises");
6
+ const node_path_1 = require("node:path");
7
+ const glob_1 = require("glob");
8
+ const discoverableConfigFileNames = new Set(['tsoa.json', 'tsoa.yaml', 'tsoa.yml', 'tsoa.config.js', 'tsoa.config.cjs']);
9
+ const skippedDirectoryNames = new Set(['.git', 'node_modules', 'dist', 'build', 'coverage', '.turbo', '.cache']);
10
+ const normalizePathForDisplay = (value) => value.replaceAll(node_path_1.sep, '/');
11
+ const toDisplayPath = (basePath, absolutePath) => {
12
+ const relativePath = (0, node_path_1.relative)(basePath, absolutePath);
13
+ return normalizePathForDisplay(relativePath.length > 0 ? relativePath : (0, node_path_1.basename)(absolutePath));
14
+ };
15
+ const isDiscoverableConfigPath = (path) => discoverableConfigFileNames.has((0, node_path_1.basename)(path));
16
+ const getGlobOptions = () => ({
17
+ absolute: true,
18
+ dot: true,
19
+ follow: true,
20
+ nodir: false,
21
+ windowsPathsNoEscape: node_path_1.sep === '\\',
22
+ });
23
+ const isFileSystemMissingError = (error) => {
24
+ return !!error && typeof error === 'object' && 'code' in error && (error.code === 'ENOENT' || error.code === 'ENOTDIR');
25
+ };
26
+ const addDiscoveredConfig = async (path, displayBasePath, seenRealPaths, results) => {
27
+ if (!isDiscoverableConfigPath(path)) {
28
+ return;
29
+ }
30
+ const resolvedRealPath = await (0, promises_1.realpath)(path);
31
+ if (seenRealPaths.has(resolvedRealPath)) {
32
+ return;
33
+ }
34
+ seenRealPaths.add(resolvedRealPath);
35
+ const displayPath = toDisplayPath(displayBasePath, path);
36
+ results.push({
37
+ absolutePath: path,
38
+ displayPath,
39
+ sortKey: normalizePathForDisplay(displayPath),
40
+ });
41
+ };
42
+ const createDiscoveryAccumulator = () => ({
43
+ results: [],
44
+ seenDirectoryRealPaths: new Set(),
45
+ seenFileRealPaths: new Set(),
46
+ });
47
+ const sortDiscoveredConfigs = (results) => {
48
+ results.sort((left, right) => left.sortKey.localeCompare(right.sortKey));
49
+ };
50
+ const enqueueDirectoryIfIncluded = (pendingDirectories, parentPath, name) => {
51
+ if (skippedDirectoryNames.has(name)) {
52
+ return;
53
+ }
54
+ pendingDirectories.push({
55
+ path: (0, node_path_1.join)(parentPath, name),
56
+ });
57
+ };
58
+ const getOptionalSymbolicTargetStats = async (symbolicPath) => {
59
+ try {
60
+ return await (0, promises_1.stat)(symbolicPath);
61
+ }
62
+ catch (error) {
63
+ if (isFileSystemMissingError(error)) {
64
+ return undefined;
65
+ }
66
+ throw error;
67
+ }
68
+ };
69
+ const getRequiredSymbolicTargetStats = async (input, symbolicPath) => {
70
+ const symbolicTargetStats = await getOptionalSymbolicTargetStats(symbolicPath);
71
+ if (!symbolicTargetStats) {
72
+ throw new Error(`Discover path '${input}' does not exist.`);
73
+ }
74
+ return symbolicTargetStats;
75
+ };
76
+ const processDirectoryEntry = async (entry, currentDirectoryPath, displayBasePath, pendingDirectories, accumulator) => {
77
+ if (entry.isDirectory()) {
78
+ enqueueDirectoryIfIncluded(pendingDirectories, currentDirectoryPath, entry.name);
79
+ return;
80
+ }
81
+ const entryPath = (0, node_path_1.join)(currentDirectoryPath, entry.name);
82
+ if (entry.isFile()) {
83
+ await addDiscoveredConfig(entryPath, displayBasePath, accumulator.seenFileRealPaths, accumulator.results);
84
+ return;
85
+ }
86
+ if (!entry.isSymbolicLink()) {
87
+ return;
88
+ }
89
+ const symbolicTargetStats = await getOptionalSymbolicTargetStats(entryPath);
90
+ if (!symbolicTargetStats) {
91
+ return;
92
+ }
93
+ if (symbolicTargetStats.isDirectory()) {
94
+ enqueueDirectoryIfIncluded(pendingDirectories, currentDirectoryPath, entry.name);
95
+ return;
96
+ }
97
+ if (symbolicTargetStats.isFile()) {
98
+ await addDiscoveredConfig(entryPath, displayBasePath, accumulator.seenFileRealPaths, accumulator.results);
99
+ }
100
+ };
101
+ const processRootPath = async (rootPath, rootStats, displayBasePath, accumulator) => {
102
+ if (rootStats.isDirectory()) {
103
+ await scanDirectoryTree(rootPath, displayBasePath, accumulator);
104
+ return;
105
+ }
106
+ if (rootStats.isFile()) {
107
+ await addDiscoveredConfig(rootPath, displayBasePath, accumulator.seenFileRealPaths, accumulator.results);
108
+ }
109
+ };
110
+ const scanDirectoryTree = async (rootPath, displayBasePath, accumulator) => {
111
+ const pendingDirectories = [{ path: rootPath }];
112
+ while (pendingDirectories.length > 0) {
113
+ const currentDirectory = pendingDirectories.pop();
114
+ if (!currentDirectory) {
115
+ continue;
116
+ }
117
+ const currentRealPath = await (0, promises_1.realpath)(currentDirectory.path);
118
+ if (accumulator.seenDirectoryRealPaths.has(currentRealPath)) {
119
+ continue;
120
+ }
121
+ accumulator.seenDirectoryRealPaths.add(currentRealPath);
122
+ const directoryEntries = await (0, promises_1.readdir)(currentDirectory.path, { withFileTypes: true });
123
+ for (const entry of directoryEntries) {
124
+ await processDirectoryEntry(entry, currentDirectory.path, displayBasePath, pendingDirectories, accumulator);
125
+ }
126
+ }
127
+ };
128
+ const expandGlobInput = async (input) => {
129
+ return await (0, glob_1.glob)(input, getGlobOptions());
130
+ };
131
+ const resolvePathInput = (input) => {
132
+ return (0, node_path_1.isAbsolute)(input) ? input : (0, node_path_1.resolve)(input);
133
+ };
134
+ const discoverFromPath = async (input) => {
135
+ const resolvedPath = resolvePathInput(input);
136
+ let rootStats;
137
+ try {
138
+ rootStats = await (0, promises_1.lstat)(resolvedPath);
139
+ }
140
+ catch (error) {
141
+ if (isFileSystemMissingError(error)) {
142
+ throw new Error(`Discover path '${input}' does not exist.`);
143
+ }
144
+ throw error;
145
+ }
146
+ const accumulator = createDiscoveryAccumulator();
147
+ if (rootStats.isSymbolicLink()) {
148
+ const symbolicTargetStats = await getRequiredSymbolicTargetStats(input, resolvedPath);
149
+ await processRootPath(resolvedPath, symbolicTargetStats, resolvedPath, accumulator);
150
+ }
151
+ else {
152
+ await processRootPath(resolvedPath, rootStats, resolvedPath, accumulator);
153
+ }
154
+ sortDiscoveredConfigs(accumulator.results);
155
+ return {
156
+ effectiveRoot: resolvedPath,
157
+ matches: accumulator.results,
158
+ mode: 'path',
159
+ };
160
+ };
161
+ const processGlobMatch = async (expandedPath, displayBasePath, accumulator) => {
162
+ const expandedPathStats = await (0, promises_1.lstat)(expandedPath);
163
+ if (expandedPathStats.isSymbolicLink()) {
164
+ const symbolicTargetStats = await getOptionalSymbolicTargetStats(expandedPath);
165
+ if (!symbolicTargetStats) {
166
+ return;
167
+ }
168
+ await processRootPath(expandedPath, symbolicTargetStats, displayBasePath, accumulator);
169
+ return;
170
+ }
171
+ await processRootPath(expandedPath, expandedPathStats, displayBasePath, accumulator);
172
+ };
173
+ const discoverFromGlob = async (input) => {
174
+ const expandedPaths = await expandGlobInput(input);
175
+ if (expandedPaths.length === 0) {
176
+ throw new Error(`No filesystem entries matched discover glob '${input}'.`);
177
+ }
178
+ const accumulator = createDiscoveryAccumulator();
179
+ const displayBasePath = process.cwd();
180
+ for (const expandedPath of expandedPaths) {
181
+ await processGlobMatch(expandedPath, displayBasePath, accumulator);
182
+ }
183
+ sortDiscoveredConfigs(accumulator.results);
184
+ return {
185
+ effectiveRoot: displayBasePath,
186
+ matches: accumulator.results,
187
+ mode: 'glob',
188
+ };
189
+ };
190
+ const getDefaultDiscoverRoot = () => process.cwd();
191
+ exports.getDefaultDiscoverRoot = getDefaultDiscoverRoot;
192
+ async function discoverConfigs(input = (0, exports.getDefaultDiscoverRoot)()) {
193
+ return (0, glob_1.hasMagic)(input) ? discoverFromGlob(input) : discoverFromPath(input);
194
+ }
195
+ //# sourceMappingURL=discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
package/dist/runCLI.js CHANGED
@@ -34,13 +34,23 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.runCLI = runCLI;
37
- const api_1 = require("./api");
37
+ const node_async_hooks_1 = require("node:async_hooks");
38
+ const node_os_1 = require("node:os");
39
+ const node_util_1 = require("node:util");
40
+ const discovery_1 = require("./discovery");
41
+ const outputPrefixStorage = new node_async_hooks_1.AsyncLocalStorage();
38
42
  const configurationArgs = {
39
43
  alias: 'c',
40
44
  describe: 'tsoa configuration file; default is tsoa.json in the working directory',
41
45
  required: false,
42
46
  string: true,
43
47
  };
48
+ const discoverArgs = {
49
+ describe: 'discover tsoa config files using a path or glob before running the command',
50
+ required: false,
51
+ requiresArg: true,
52
+ string: true,
53
+ };
44
54
  const hostArgs = {
45
55
  describe: 'API host',
46
56
  required: false,
@@ -64,6 +74,7 @@ const jsonArgs = {
64
74
  const configCommandArgs = {
65
75
  basePath: basePathArgs,
66
76
  configuration: configurationArgs,
77
+ discover: discoverArgs,
67
78
  };
68
79
  const specCommandArgs = {
69
80
  ...configCommandArgs,
@@ -94,6 +105,142 @@ const getHideBin = (moduleExports) => {
94
105
  }
95
106
  throw new TypeError('Unable to load yargs/helpers');
96
107
  };
108
+ const loadCLIAPI = async () => {
109
+ return await Promise.resolve().then(() => __importStar(require('./api')));
110
+ };
111
+ const renderPrefixedOutput = (prefix, args) => {
112
+ const rendered = (0, node_util_1.format)(...args);
113
+ return rendered
114
+ .split('\n')
115
+ .map(line => `${prefix}${line}`)
116
+ .join('\n');
117
+ };
118
+ const withPatchedConsole = async (action) => {
119
+ const originalConsoleError = console.error;
120
+ const originalConsoleLog = console.log;
121
+ const originalConsoleWarn = console.warn;
122
+ console.log = (...args) => {
123
+ const prefix = outputPrefixStorage.getStore();
124
+ if (!prefix) {
125
+ originalConsoleLog(...args);
126
+ return;
127
+ }
128
+ originalConsoleLog(renderPrefixedOutput(prefix, args));
129
+ };
130
+ console.warn = (...args) => {
131
+ const prefix = outputPrefixStorage.getStore();
132
+ if (!prefix) {
133
+ originalConsoleWarn(...args);
134
+ return;
135
+ }
136
+ originalConsoleWarn(renderPrefixedOutput(prefix, args));
137
+ };
138
+ console.error = (...args) => {
139
+ const prefix = outputPrefixStorage.getStore();
140
+ if (!prefix) {
141
+ originalConsoleError(...args);
142
+ return;
143
+ }
144
+ originalConsoleError(renderPrefixedOutput(prefix, args));
145
+ };
146
+ try {
147
+ return await action();
148
+ }
149
+ finally {
150
+ console.error = originalConsoleError;
151
+ console.log = originalConsoleLog;
152
+ console.warn = originalConsoleWarn;
153
+ }
154
+ };
155
+ const ensureExclusiveConfigurationModes = (configuration, discover) => {
156
+ if (configuration !== undefined && discover !== undefined) {
157
+ throw new Error('The --configuration and --discover options cannot be used together.');
158
+ }
159
+ };
160
+ const getDiscoveryInputDisplay = (input) => input ?? (0, discovery_1.getDefaultDiscoverRoot)();
161
+ const ensureDiscoveredConfigs = async (input) => {
162
+ const discoveryResult = await (0, discovery_1.discoverConfigs)(input);
163
+ if (discoveryResult.matches.length === 0) {
164
+ throw new Error(`No tsoa config files found for '${getDiscoveryInputDisplay(input)}'.`);
165
+ }
166
+ return discoveryResult.matches;
167
+ };
168
+ const runTasksWithConcurrency = async (limit, tasks) => {
169
+ const results = new Array(tasks.length);
170
+ let nextTaskIndex = 0;
171
+ const workers = Array.from({ length: Math.min(limit, tasks.length) }, async () => {
172
+ while (nextTaskIndex < tasks.length) {
173
+ const currentTaskIndex = nextTaskIndex;
174
+ nextTaskIndex += 1;
175
+ try {
176
+ const value = await tasks[currentTaskIndex]();
177
+ results[currentTaskIndex] = {
178
+ status: 'fulfilled',
179
+ value,
180
+ };
181
+ }
182
+ catch (error) {
183
+ results[currentTaskIndex] = {
184
+ status: 'rejected',
185
+ reason: error,
186
+ };
187
+ }
188
+ }
189
+ });
190
+ await Promise.all(workers);
191
+ return results;
192
+ };
193
+ const formatFailureReason = (reason) => {
194
+ if (reason instanceof Error) {
195
+ return reason.message;
196
+ }
197
+ return String(reason);
198
+ };
199
+ const formatDiscoveredCommandPrefix = (displayPath) => `[${displayPath}] `;
200
+ const executeDiscoveredTask = async (commandName, api, args, configurationPath, displayPath, execute) => {
201
+ return await outputPrefixStorage.run(formatDiscoveredCommandPrefix(displayPath), async () => {
202
+ console.log(`Starting ${commandName}`);
203
+ const result = await execute(api, configurationPath, args);
204
+ console.log(`Finished ${commandName}`);
205
+ return result;
206
+ });
207
+ };
208
+ const createDiscoveredCommandTask = (commandName, api, args, discoveredConfig, execute) => {
209
+ return async () => await executeDiscoveredTask(commandName, api, args, discoveredConfig.absolutePath, discoveredConfig.displayPath, execute);
210
+ };
211
+ const runDiscoveredCommand = async (commandName, args, execute) => {
212
+ ensureExclusiveConfigurationModes(args.configuration, args.discover);
213
+ if (!args.discover) {
214
+ const api = await loadCLIAPI();
215
+ return await execute(api, args.configuration, args);
216
+ }
217
+ const discoveredConfigs = await ensureDiscoveredConfigs(args.discover);
218
+ const api = await loadCLIAPI();
219
+ const concurrency = Math.min(discoveredConfigs.length, (0, node_os_1.availableParallelism)());
220
+ const results = await withPatchedConsole(async () => {
221
+ return await runTasksWithConcurrency(concurrency, discoveredConfigs.map(discoveredConfig => createDiscoveredCommandTask(commandName, api, args, discoveredConfig, execute)));
222
+ });
223
+ const failures = results.flatMap((result, index) => {
224
+ if (result?.status !== 'rejected') {
225
+ return [];
226
+ }
227
+ const discoveredConfig = discoveredConfigs[index];
228
+ if (!discoveredConfig) {
229
+ return [];
230
+ }
231
+ return [`- ${discoveredConfig.displayPath}: ${formatFailureReason(result.reason)}`];
232
+ });
233
+ if (failures.length > 0) {
234
+ throw new Error(`Failed ${commandName} for discovered config files:\n${failures.join('\n')}`);
235
+ }
236
+ return results;
237
+ };
238
+ const runDiscoverCommand = async (pathOrGlob) => {
239
+ const discoveryResult = await ensureDiscoveredConfigs(pathOrGlob);
240
+ for (const discoveredConfig of discoveryResult) {
241
+ process.stdout.write(`${discoveredConfig.displayPath}\n`);
242
+ }
243
+ };
97
244
  async function runCLI() {
98
245
  const [yargsModule, yargsHelpers] = await Promise.all([Promise.resolve().then(() => __importStar(require('yargs'))), Promise.resolve().then(() => __importStar(require('yargs/helpers')))]);
99
246
  const yargsFactory = getYargsFactory(yargsModule);
@@ -102,28 +249,41 @@ async function runCLI() {
102
249
  return cli
103
250
  .scriptName('tsoa')
104
251
  .usage('Usage: $0 <command> [options]')
252
+ .command('discover [pathOrGlob]', 'Discover tsoa config files beneath a path or glob', command => command.positional('pathOrGlob', {
253
+ describe: 'Path or glob to search. Defaults to the current working directory.',
254
+ string: true,
255
+ type: 'string',
256
+ }), async (args) => {
257
+ await runDiscoverCommand(args.pathOrGlob);
258
+ })
105
259
  .command('spec', 'Generate OpenAPI spec', specCommandArgs, async (args) => {
106
- await (0, api_1.generateSpecFromArgs)({
107
- basePath: args.basePath,
108
- configuration: args.configuration,
109
- host: args.host,
110
- json: args.json,
111
- yaml: args.yaml,
260
+ await runDiscoveredCommand('spec', args, async (api, configurationPath, resolvedArgs) => {
261
+ await api.generateSpecFromArgs({
262
+ basePath: resolvedArgs.basePath,
263
+ configuration: configurationPath,
264
+ host: resolvedArgs.host,
265
+ json: resolvedArgs.json,
266
+ yaml: resolvedArgs.yaml,
267
+ });
112
268
  });
113
269
  })
114
270
  .command('routes', 'Generate routes', configCommandArgs, async (args) => {
115
- await (0, api_1.generateRoutesFromArgs)({
116
- basePath: args.basePath,
117
- configuration: args.configuration,
271
+ await runDiscoveredCommand('routes', args, async (api, configurationPath, resolvedArgs) => {
272
+ await api.generateRoutesFromArgs({
273
+ basePath: resolvedArgs.basePath,
274
+ configuration: configurationPath,
275
+ });
118
276
  });
119
277
  })
120
278
  .command('spec-and-routes', 'Generate OpenAPI spec and routes', specCommandArgs, async (args) => {
121
- await (0, api_1.generateSpecAndRoutes)({
122
- basePath: args.basePath,
123
- configuration: args.configuration,
124
- host: args.host,
125
- json: args.json,
126
- yaml: args.yaml,
279
+ await runDiscoveredCommand('spec-and-routes', args, async (api, configurationPath, resolvedArgs) => {
280
+ await api.generateSpecAndRoutes({
281
+ basePath: resolvedArgs.basePath,
282
+ configuration: configurationPath,
283
+ host: resolvedArgs.host,
284
+ json: resolvedArgs.json,
285
+ yaml: resolvedArgs.yaml,
286
+ });
127
287
  });
128
288
  })
129
289
  .demandCommand(1, 1, 'Must provide a valid command.')
@@ -1 +1 @@
1
- {"version":3,"file":"runCLI.js","sourceRoot":"","sources":["../src/runCLI.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runCLI.js","sourceRoot":"","sources":["../src/runCLI.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsoa-next/cli",
3
- "version": "8.0.3-dev.51.464a0c70",
3
+ "version": "8.0.4-dev.53.2c0aa7c6",
4
4
  "description": "Build swagger-compliant REST APIs using TypeScript and Node",
5
5
  "main": "./dist/index.js",
6
6
  "typings": "./dist/index.d.ts",
@@ -33,7 +33,7 @@
33
33
  "author": "Vanna DiCatania <vanna@dicatania.me> (http://www.dicatania.me)",
34
34
  "license": "MIT",
35
35
  "dependencies": {
36
- "@tsoa-next/runtime": "8.0.3-dev.51.464a0c70",
36
+ "@tsoa-next/runtime": "8.0.4-dev.53.2c0aa7c6",
37
37
  "@types/multer": "^2.1.0",
38
38
  "fs-extra": "^11.3.4",
39
39
  "glob": "^13.0.6",