@keq-request/cli 5.0.0-alpha.30 → 5.0.0-alpha.31
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/CHANGELOG.md +10 -0
- package/dist/cli.cjs +76 -1
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +75 -0
- package/dist/cli.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
package/dist/cli.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict"; function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
|
+
"use strict"; function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
3
3
|
|
|
4
4
|
var _chunkJX74ZR2Ocjs = require('./chunk-JX74ZR2O.cjs');
|
|
5
5
|
require('./chunk-OC36G3PF.cjs');
|
|
@@ -191,6 +191,81 @@ program.command("list").option("-c --config <config>", "The keq-cli config file"
|
|
|
191
191
|
}
|
|
192
192
|
}
|
|
193
193
|
});
|
|
194
|
+
program.command("apis").option("-c --config <config>", "The keq-cli config file").option("--module <modules...>", "Filter module(s) to list").addOption(
|
|
195
|
+
new (0, _commander.Option)("--includes <includes...>", "Include specific parts").choices(["operations", "components"])
|
|
196
|
+
).option("--json", "Output in JSON format").option("--debug", "Print debug information").action(async (options) => {
|
|
197
|
+
const compiler = new (0, _chunkJX74ZR2Ocjs.Compiler)({
|
|
198
|
+
build: true,
|
|
199
|
+
persist: false,
|
|
200
|
+
silent: true,
|
|
201
|
+
config: options.config,
|
|
202
|
+
includes: options.module || [],
|
|
203
|
+
debug: !!options.debug
|
|
204
|
+
});
|
|
205
|
+
await compiler.run();
|
|
206
|
+
const context = compiler.context;
|
|
207
|
+
const documents = context.documents || [];
|
|
208
|
+
const includesList = options.includes || ["operations", "components"];
|
|
209
|
+
const includeOperations = includesList.includes("operations");
|
|
210
|
+
const includeComponents = includesList.includes("components");
|
|
211
|
+
const result = documents.map((document) => {
|
|
212
|
+
const item = {
|
|
213
|
+
module: document.module.name
|
|
214
|
+
};
|
|
215
|
+
if (includeOperations) {
|
|
216
|
+
item.operations = document.operations.map((operation) => ({
|
|
217
|
+
method: operation.method.toUpperCase(),
|
|
218
|
+
path: operation.pathname,
|
|
219
|
+
operationId: operation.operationId
|
|
220
|
+
}));
|
|
221
|
+
}
|
|
222
|
+
if (includeComponents) {
|
|
223
|
+
item.components = {
|
|
224
|
+
schemas: document.schemas.map((schema) => ({
|
|
225
|
+
name: schema.name
|
|
226
|
+
}))
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
return item;
|
|
230
|
+
});
|
|
231
|
+
if (options.json) {
|
|
232
|
+
console.log(JSON.stringify(result, null, 2));
|
|
233
|
+
} else {
|
|
234
|
+
for (const item of result) {
|
|
235
|
+
console.log(`
|
|
236
|
+
Module: ${item.module}`);
|
|
237
|
+
console.log("\u2500".repeat(70));
|
|
238
|
+
if (includeOperations) {
|
|
239
|
+
console.log("\n APIs:");
|
|
240
|
+
if (!item.operations || item.operations.length === 0) {
|
|
241
|
+
console.log(" (No APIs)");
|
|
242
|
+
} else {
|
|
243
|
+
for (const operation of item.operations) {
|
|
244
|
+
const method = operation.method.padEnd(7);
|
|
245
|
+
console.log(` ${method} ${operation.path}`);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
if (includeComponents) {
|
|
250
|
+
console.log("\n Schemas:");
|
|
251
|
+
if (!item.components || item.components.schemas.length === 0) {
|
|
252
|
+
console.log(" (No Schemas)");
|
|
253
|
+
} else {
|
|
254
|
+
for (const schema of item.components.schemas) {
|
|
255
|
+
console.log(` ${schema.name}`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
const totalApis = result.reduce((sum, item) => sum + (_optionalChain([item, 'access', _ => _.operations, 'optionalAccess', _2 => _2.length]) || 0), 0);
|
|
261
|
+
const totalSchemas = result.reduce((sum, item) => sum + (_optionalChain([item, 'access', _3 => _3.components, 'optionalAccess', _4 => _4.schemas, 'access', _5 => _5.length]) || 0), 0);
|
|
262
|
+
console.log("\n" + "\u2500".repeat(70));
|
|
263
|
+
const parts = [`${result.length} modules`];
|
|
264
|
+
if (includeOperations) parts.push(`${totalApis} APIs`);
|
|
265
|
+
if (includeComponents) parts.push(`${totalSchemas} Schemas`);
|
|
266
|
+
console.log(`Total: ${parts.join(", ")}`);
|
|
267
|
+
}
|
|
268
|
+
});
|
|
194
269
|
async function main() {
|
|
195
270
|
program.on("command:*", function(operands) {
|
|
196
271
|
throw new Error(`Unknown command '${String(operands[0])}'`);
|
package/dist/cli.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/keq/keq/packages/cli/dist/cli.cjs","../src/cli.ts","../src/utils/scan-generated-files.ts"],"names":["moduleNames"],"mappings":"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","file":"/home/runner/work/keq/keq/packages/cli/dist/cli.cjs","sourcesContent":[null,"#!/usr/bin/env node\nimport * as path from 'path'\nimport semver from 'semver'\nimport { Argument, Command, Option } from 'commander'\nimport { SupportedMethods } from './constants/supported-methods.js'\nimport { logger } from './utils/logger.js'\nimport { Compiler } from './compiler/compiler.js'\nimport { findInvalidFiles } from './utils/scan-generated-files.js'\n\n\nif (semver.lt(process.version, '20.0.0')) {\n throw new Error('Node.js version must be greater than 20')\n}\n\nconst program = new Command()\n\n\nprogram\n .command('build')\n .option('-c --config <config>', 'The keq-cli config file')\n .option('--module <modules...>', 'Filter module(s) to generate')\n .option('--debug', 'Print debug information')\n .option('--tolerant', 'Tolerate wrong swagger/openapi structure')\n .option('-i --interactive', 'Interactive select the scope of generation')\n .action(async (options) => {\n const compiler = new Compiler({\n build: true,\n persist: true,\n config: options.config,\n includes: options.module,\n debug: !!options.debug,\n tolerant: !!options.tolerant,\n interactive: !!options.interactive && {\n mode: 'except',\n clear: true,\n },\n })\n\n await compiler.run()\n })\n\n\nprogram\n .command('ignore')\n .addArgument(\n new Argument('<mode>', 'The ignore mode')\n .choices(['all', 'add', 'except'])\n .argRequired(),\n )\n .option('-c --config <config>', 'The keq-cli config file')\n .option('--debug', 'Print debug information')\n .option('--module <modules...>')\n .option('--build', 'Build after updating .keqignore file')\n .addOption(\n new Option('--method <method>', 'Only generate files of the specified operation method')\n .choices([\n ...SupportedMethods,\n ...SupportedMethods.map((method) => method.toUpperCase()),\n ]),\n )\n .option('--pathname <pathnames>', 'Only generate files of the specified operation pathname')\n .option('-i --interactive', 'Interactive select the scope of generation')\n .action(async (mode, options) => {\n let compiler: Compiler\n\n if (mode === 'all') {\n if (options.build) throw new Error(\"'--build' cannot be used with 'all' mode\")\n\n compiler = new Compiler({\n build: false,\n persist: true,\n config: options.config,\n includes: options.module,\n debug: !!options.debug,\n interactive: false,\n ignore: {\n rules: [{\n persist: true,\n ignore: true,\n moduleName: '*',\n operationMethod: '*',\n operationPathname: '*',\n }],\n },\n })\n } else if (options.interactive) {\n if (options.interactive) {\n if (options.method) throw new Error(\"'--method' cannot be used with '--interactive'\")\n if (options.pathname) throw new Error(\"'--pathname' cannot be used with '--interactive'\")\n }\n\n compiler = new Compiler({\n build: !!options.build,\n persist: true,\n config: options.config,\n includes: options.module,\n debug: !!options.debug,\n\n interactive: {\n mode,\n persist: true,\n },\n })\n } else {\n if (!options.method && !options.pathname) {\n throw new Error(\"at least one of '-i --interactive', '--method' or '--pathname' must be specified\")\n }\n\n const moduleNames = options.module || ['*']\n\n compiler = new Compiler({\n build: !!options.build,\n persist: true,\n config: options.config,\n debug: !!options.debug,\n includes: options.module,\n ignore: {\n rules: moduleNames.map((moduleNames) => ({\n persist: true,\n ignore: mode === 'add',\n moduleName: moduleNames,\n operationMethod: options.method,\n operationPathname: options.pathname,\n })),\n },\n interactive: false,\n })\n }\n\n await compiler.run()\n })\n\n\nprogram\n .command('list')\n .option('-c --config <config>', 'The keq-cli config file')\n .option('--invalid', 'List only invalid generated files (files not in current build)')\n .option('--debug', 'Print debug information')\n .action(async (options) => {\n const compiler = new Compiler({\n build: true,\n persist: false,\n silent: true,\n config: options.config,\n includes: [],\n debug: !!options.debug,\n })\n\n await compiler.run()\n\n const context = compiler.context\n\n if (!context.rc) {\n throw new Error('Failed to load configuration')\n }\n\n if (options.invalid) {\n // Get valid file paths from artifacts\n const validFilePaths = (context.artifacts || []).map((artifact) => artifact.filepath)\n\n // Find invalid files (all files in outdir not in current build)\n const invalidFiles = await findInvalidFiles(context.rc.outdir, validFilePaths)\n\n for (const file of invalidFiles) {\n // Join outdir with relative path to show full path with ./ prefix\n const fullPath = `./${path.join(context.rc.outdir, file.relativePath)}`\n console.log(fullPath)\n }\n } else {\n // List files that should be generated based on current config\n const artifacts = context.artifacts || []\n\n for (const artifact of artifacts) {\n // Join outdir with artifact filepath, similar to persist task, with ./ prefix\n const fullPath = `./${path.join(context.rc.outdir, artifact.filepath)}`\n console.log(fullPath)\n }\n }\n })\n\nasync function main(): Promise<void> {\n program.on('command:*', function (operands) {\n throw new Error(`Unknown command '${String(operands[0])}'`)\n })\n\n try {\n await program.parseAsync(process.argv)\n } catch (err) {\n if (process.argv.includes('--debug')) {\n console.error(err)\n } else {\n logger.error(err instanceof Error ? err.message : String(err))\n }\n }\n}\n\nvoid main()\n","import * as path from 'path'\nimport fs from 'fs-extra'\n\nexport interface GeneratedFile {\n /** Absolute path to the file */\n absolutePath: string\n /** Relative path from outdir */\n relativePath: string\n}\n\n/**\n * Recursively find all files in a directory\n */\nasync function findAllFiles(dir: string, extensions?: string[]): Promise<string[]> {\n const results: string[] = []\n\n async function scan(currentDir: string): Promise<void> {\n let entries: string[]\n try {\n entries = await fs.readdir(currentDir)\n } catch (err) {\n // Skip directories that can't be read\n return\n }\n\n for (const entry of entries) {\n // Skip node_modules and .git directories\n if (entry === 'node_modules' || entry === '.git') {\n continue\n }\n\n const fullPath = path.join(currentDir, entry)\n let stat: fs.Stats\n try {\n stat = await fs.stat(fullPath)\n } catch (err) {\n // Skip entries that can't be stat'd\n continue\n }\n\n if (stat.isDirectory()) {\n await scan(fullPath)\n } else if (stat.isFile()) {\n if (!extensions) {\n // If no extensions specified, include all files\n results.push(fullPath)\n } else {\n const ext = path.extname(fullPath)\n if (extensions.includes(ext)) {\n results.push(fullPath)\n }\n }\n }\n }\n }\n\n await scan(dir)\n return results\n}\n\n/**\n * Scan all files in the output directory\n * @param outdir The output directory to scan\n * @returns List of all files with their paths\n */\nasync function scanAllFiles(outdir: string): Promise<GeneratedFile[]> {\n const absoluteOutdir = path.resolve(outdir)\n\n // Check if outdir exists\n if (!await fs.exists(absoluteOutdir)) {\n return []\n }\n\n // Find all files in outdir (no extension filter)\n const files = await findAllFiles(absoluteOutdir)\n\n return files.map((file) => ({\n absolutePath: file,\n relativePath: path.relative(absoluteOutdir, file),\n }))\n}\n\n/**\n * Find invalid files that are not in the current artifacts list\n * This includes both non-generated files and outdated generated files\n * @param outdir The output directory\n * @param validFilePaths List of valid file paths (relative to outdir)\n * @returns List of invalid files\n */\nexport async function findInvalidFiles(\n outdir: string,\n validFilePaths: string[],\n): Promise<GeneratedFile[]> {\n const allFiles = await scanAllFiles(outdir)\n const validPathsSet = new Set(validFilePaths.map((p) => path.normalize(p)))\n\n return allFiles.filter((file) => {\n const normalizedPath = path.normalize(file.relativePath)\n return !validPathsSet.has(normalizedPath)\n })\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/keq/keq/packages/cli/dist/cli.cjs","../src/cli.ts","../src/utils/scan-generated-files.ts"],"names":["moduleNames"],"mappings":"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","file":"/home/runner/work/keq/keq/packages/cli/dist/cli.cjs","sourcesContent":[null,"#!/usr/bin/env node\nimport * as path from 'path'\nimport semver from 'semver'\nimport { Argument, Command, Option } from 'commander'\nimport { SupportedMethods } from './constants/supported-methods.js'\nimport { logger } from './utils/logger.js'\nimport { Compiler } from './compiler/compiler.js'\nimport { findInvalidFiles } from './utils/scan-generated-files.js'\n\n\nif (semver.lt(process.version, '20.0.0')) {\n throw new Error('Node.js version must be greater than 20')\n}\n\nconst program = new Command()\n\n\nprogram\n .command('build')\n .option('-c --config <config>', 'The keq-cli config file')\n .option('--module <modules...>', 'Filter module(s) to generate')\n .option('--debug', 'Print debug information')\n .option('--tolerant', 'Tolerate wrong swagger/openapi structure')\n .option('-i --interactive', 'Interactive select the scope of generation')\n .action(async (options) => {\n const compiler = new Compiler({\n build: true,\n persist: true,\n config: options.config,\n includes: options.module,\n debug: !!options.debug,\n tolerant: !!options.tolerant,\n interactive: !!options.interactive && {\n mode: 'except',\n clear: true,\n },\n })\n\n await compiler.run()\n })\n\n\nprogram\n .command('ignore')\n .addArgument(\n new Argument('<mode>', 'The ignore mode')\n .choices(['all', 'add', 'except'])\n .argRequired(),\n )\n .option('-c --config <config>', 'The keq-cli config file')\n .option('--debug', 'Print debug information')\n .option('--module <modules...>')\n .option('--build', 'Build after updating .keqignore file')\n .addOption(\n new Option('--method <method>', 'Only generate files of the specified operation method')\n .choices([\n ...SupportedMethods,\n ...SupportedMethods.map((method) => method.toUpperCase()),\n ]),\n )\n .option('--pathname <pathnames>', 'Only generate files of the specified operation pathname')\n .option('-i --interactive', 'Interactive select the scope of generation')\n .action(async (mode, options) => {\n let compiler: Compiler\n\n if (mode === 'all') {\n if (options.build) throw new Error(\"'--build' cannot be used with 'all' mode\")\n\n compiler = new Compiler({\n build: false,\n persist: true,\n config: options.config,\n includes: options.module,\n debug: !!options.debug,\n interactive: false,\n ignore: {\n rules: [{\n persist: true,\n ignore: true,\n moduleName: '*',\n operationMethod: '*',\n operationPathname: '*',\n }],\n },\n })\n } else if (options.interactive) {\n if (options.interactive) {\n if (options.method) throw new Error(\"'--method' cannot be used with '--interactive'\")\n if (options.pathname) throw new Error(\"'--pathname' cannot be used with '--interactive'\")\n }\n\n compiler = new Compiler({\n build: !!options.build,\n persist: true,\n config: options.config,\n includes: options.module,\n debug: !!options.debug,\n\n interactive: {\n mode,\n persist: true,\n },\n })\n } else {\n if (!options.method && !options.pathname) {\n throw new Error(\"at least one of '-i --interactive', '--method' or '--pathname' must be specified\")\n }\n\n const moduleNames = options.module || ['*']\n\n compiler = new Compiler({\n build: !!options.build,\n persist: true,\n config: options.config,\n debug: !!options.debug,\n includes: options.module,\n ignore: {\n rules: moduleNames.map((moduleNames) => ({\n persist: true,\n ignore: mode === 'add',\n moduleName: moduleNames,\n operationMethod: options.method,\n operationPathname: options.pathname,\n })),\n },\n interactive: false,\n })\n }\n\n await compiler.run()\n })\n\n\nprogram\n .command('list')\n .option('-c --config <config>', 'The keq-cli config file')\n .option('--invalid', 'List only invalid generated files (files not in current build)')\n .option('--debug', 'Print debug information')\n .action(async (options) => {\n const compiler = new Compiler({\n build: true,\n persist: false,\n silent: true,\n config: options.config,\n includes: [],\n debug: !!options.debug,\n })\n\n await compiler.run()\n\n const context = compiler.context\n\n if (!context.rc) {\n throw new Error('Failed to load configuration')\n }\n\n if (options.invalid) {\n // Get valid file paths from artifacts\n const validFilePaths = (context.artifacts || []).map((artifact) => artifact.filepath)\n\n // Find invalid files (all files in outdir not in current build)\n const invalidFiles = await findInvalidFiles(context.rc.outdir, validFilePaths)\n\n for (const file of invalidFiles) {\n // Join outdir with relative path to show full path with ./ prefix\n const fullPath = `./${path.join(context.rc.outdir, file.relativePath)}`\n console.log(fullPath)\n }\n } else {\n // List files that should be generated based on current config\n const artifacts = context.artifacts || []\n\n for (const artifact of artifacts) {\n // Join outdir with artifact filepath, similar to persist task, with ./ prefix\n const fullPath = `./${path.join(context.rc.outdir, artifact.filepath)}`\n console.log(fullPath)\n }\n }\n })\n\n\nprogram\n .command('apis')\n .option('-c --config <config>', 'The keq-cli config file')\n .option('--module <modules...>', 'Filter module(s) to list')\n .addOption(\n new Option('--includes <includes...>', 'Include specific parts')\n .choices(['operations', 'components']),\n )\n .option('--json', 'Output in JSON format')\n .option('--debug', 'Print debug information')\n .action(async (options) => {\n const compiler = new Compiler({\n build: true,\n persist: false,\n silent: true,\n config: options.config,\n includes: options.module || [],\n debug: !!options.debug,\n })\n\n await compiler.run()\n\n const context = compiler.context\n const documents = context.documents || []\n\n // Determine what to include\n const includesList = options.includes || ['operations', 'components']\n const includeOperations = includesList.includes('operations')\n const includeComponents = includesList.includes('components')\n\n // Build unified data structure\n const result = documents.map((document) => {\n const item: {\n module: string\n operations?: Array<{ method: string; path: string; operationId: string }>\n components?: { schemas: Array<{ name: string }> }\n } = {\n module: document.module.name,\n }\n\n if (includeOperations) {\n item.operations = document.operations.map((operation) => ({\n method: operation.method.toUpperCase(),\n path: operation.pathname,\n operationId: operation.operationId,\n }))\n }\n\n if (includeComponents) {\n item.components = {\n schemas: document.schemas.map((schema) => ({\n name: schema.name,\n })),\n }\n }\n\n return item\n })\n\n if (options.json) {\n // JSON format output\n console.log(JSON.stringify(result, null, 2))\n } else {\n // Human-readable format output\n for (const item of result) {\n console.log(`\\nModule: ${item.module}`)\n console.log('─'.repeat(70))\n\n // Display APIs\n if (includeOperations) {\n console.log('\\n APIs:')\n if (!item.operations || item.operations.length === 0) {\n console.log(' (No APIs)')\n } else {\n for (const operation of item.operations) {\n const method = operation.method.padEnd(7)\n console.log(` ${method} ${operation.path}`)\n }\n }\n }\n\n // Display Schemas\n if (includeComponents) {\n console.log('\\n Schemas:')\n if (!item.components || item.components.schemas.length === 0) {\n console.log(' (No Schemas)')\n } else {\n for (const schema of item.components.schemas) {\n console.log(` ${schema.name}`)\n }\n }\n }\n }\n\n // Print summary\n const totalApis = result.reduce((sum, item) => sum + (item.operations?.length || 0), 0)\n const totalSchemas = result.reduce((sum, item) => sum + (item.components?.schemas.length || 0), 0)\n console.log('\\n' + '─'.repeat(70))\n const parts = [`${result.length} modules`]\n if (includeOperations) parts.push(`${totalApis} APIs`)\n if (includeComponents) parts.push(`${totalSchemas} Schemas`)\n console.log(`Total: ${parts.join(', ')}`)\n }\n })\n\nasync function main(): Promise<void> {\n program.on('command:*', function (operands) {\n throw new Error(`Unknown command '${String(operands[0])}'`)\n })\n\n try {\n await program.parseAsync(process.argv)\n } catch (err) {\n if (process.argv.includes('--debug')) {\n console.error(err)\n } else {\n logger.error(err instanceof Error ? err.message : String(err))\n }\n }\n}\n\nvoid main()\n","import * as path from 'path'\nimport fs from 'fs-extra'\n\nexport interface GeneratedFile {\n /** Absolute path to the file */\n absolutePath: string\n /** Relative path from outdir */\n relativePath: string\n}\n\n/**\n * Recursively find all files in a directory\n */\nasync function findAllFiles(dir: string, extensions?: string[]): Promise<string[]> {\n const results: string[] = []\n\n async function scan(currentDir: string): Promise<void> {\n let entries: string[]\n try {\n entries = await fs.readdir(currentDir)\n } catch (err) {\n // Skip directories that can't be read\n return\n }\n\n for (const entry of entries) {\n // Skip node_modules and .git directories\n if (entry === 'node_modules' || entry === '.git') {\n continue\n }\n\n const fullPath = path.join(currentDir, entry)\n let stat: fs.Stats\n try {\n stat = await fs.stat(fullPath)\n } catch (err) {\n // Skip entries that can't be stat'd\n continue\n }\n\n if (stat.isDirectory()) {\n await scan(fullPath)\n } else if (stat.isFile()) {\n if (!extensions) {\n // If no extensions specified, include all files\n results.push(fullPath)\n } else {\n const ext = path.extname(fullPath)\n if (extensions.includes(ext)) {\n results.push(fullPath)\n }\n }\n }\n }\n }\n\n await scan(dir)\n return results\n}\n\n/**\n * Scan all files in the output directory\n * @param outdir The output directory to scan\n * @returns List of all files with their paths\n */\nasync function scanAllFiles(outdir: string): Promise<GeneratedFile[]> {\n const absoluteOutdir = path.resolve(outdir)\n\n // Check if outdir exists\n if (!await fs.exists(absoluteOutdir)) {\n return []\n }\n\n // Find all files in outdir (no extension filter)\n const files = await findAllFiles(absoluteOutdir)\n\n return files.map((file) => ({\n absolutePath: file,\n relativePath: path.relative(absoluteOutdir, file),\n }))\n}\n\n/**\n * Find invalid files that are not in the current artifacts list\n * This includes both non-generated files and outdated generated files\n * @param outdir The output directory\n * @param validFilePaths List of valid file paths (relative to outdir)\n * @returns List of invalid files\n */\nexport async function findInvalidFiles(\n outdir: string,\n validFilePaths: string[],\n): Promise<GeneratedFile[]> {\n const allFiles = await scanAllFiles(outdir)\n const validPathsSet = new Set(validFilePaths.map((p) => path.normalize(p)))\n\n return allFiles.filter((file) => {\n const normalizedPath = path.normalize(file.relativePath)\n return !validPathsSet.has(normalizedPath)\n })\n}\n"]}
|
package/dist/cli.js
CHANGED
|
@@ -191,6 +191,81 @@ program.command("list").option("-c --config <config>", "The keq-cli config file"
|
|
|
191
191
|
}
|
|
192
192
|
}
|
|
193
193
|
});
|
|
194
|
+
program.command("apis").option("-c --config <config>", "The keq-cli config file").option("--module <modules...>", "Filter module(s) to list").addOption(
|
|
195
|
+
new Option("--includes <includes...>", "Include specific parts").choices(["operations", "components"])
|
|
196
|
+
).option("--json", "Output in JSON format").option("--debug", "Print debug information").action(async (options) => {
|
|
197
|
+
const compiler = new Compiler({
|
|
198
|
+
build: true,
|
|
199
|
+
persist: false,
|
|
200
|
+
silent: true,
|
|
201
|
+
config: options.config,
|
|
202
|
+
includes: options.module || [],
|
|
203
|
+
debug: !!options.debug
|
|
204
|
+
});
|
|
205
|
+
await compiler.run();
|
|
206
|
+
const context = compiler.context;
|
|
207
|
+
const documents = context.documents || [];
|
|
208
|
+
const includesList = options.includes || ["operations", "components"];
|
|
209
|
+
const includeOperations = includesList.includes("operations");
|
|
210
|
+
const includeComponents = includesList.includes("components");
|
|
211
|
+
const result = documents.map((document) => {
|
|
212
|
+
const item = {
|
|
213
|
+
module: document.module.name
|
|
214
|
+
};
|
|
215
|
+
if (includeOperations) {
|
|
216
|
+
item.operations = document.operations.map((operation) => ({
|
|
217
|
+
method: operation.method.toUpperCase(),
|
|
218
|
+
path: operation.pathname,
|
|
219
|
+
operationId: operation.operationId
|
|
220
|
+
}));
|
|
221
|
+
}
|
|
222
|
+
if (includeComponents) {
|
|
223
|
+
item.components = {
|
|
224
|
+
schemas: document.schemas.map((schema) => ({
|
|
225
|
+
name: schema.name
|
|
226
|
+
}))
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
return item;
|
|
230
|
+
});
|
|
231
|
+
if (options.json) {
|
|
232
|
+
console.log(JSON.stringify(result, null, 2));
|
|
233
|
+
} else {
|
|
234
|
+
for (const item of result) {
|
|
235
|
+
console.log(`
|
|
236
|
+
Module: ${item.module}`);
|
|
237
|
+
console.log("\u2500".repeat(70));
|
|
238
|
+
if (includeOperations) {
|
|
239
|
+
console.log("\n APIs:");
|
|
240
|
+
if (!item.operations || item.operations.length === 0) {
|
|
241
|
+
console.log(" (No APIs)");
|
|
242
|
+
} else {
|
|
243
|
+
for (const operation of item.operations) {
|
|
244
|
+
const method = operation.method.padEnd(7);
|
|
245
|
+
console.log(` ${method} ${operation.path}`);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
if (includeComponents) {
|
|
250
|
+
console.log("\n Schemas:");
|
|
251
|
+
if (!item.components || item.components.schemas.length === 0) {
|
|
252
|
+
console.log(" (No Schemas)");
|
|
253
|
+
} else {
|
|
254
|
+
for (const schema of item.components.schemas) {
|
|
255
|
+
console.log(` ${schema.name}`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
const totalApis = result.reduce((sum, item) => sum + (item.operations?.length || 0), 0);
|
|
261
|
+
const totalSchemas = result.reduce((sum, item) => sum + (item.components?.schemas.length || 0), 0);
|
|
262
|
+
console.log("\n" + "\u2500".repeat(70));
|
|
263
|
+
const parts = [`${result.length} modules`];
|
|
264
|
+
if (includeOperations) parts.push(`${totalApis} APIs`);
|
|
265
|
+
if (includeComponents) parts.push(`${totalSchemas} Schemas`);
|
|
266
|
+
console.log(`Total: ${parts.join(", ")}`);
|
|
267
|
+
}
|
|
268
|
+
});
|
|
194
269
|
async function main() {
|
|
195
270
|
program.on("command:*", function(operands) {
|
|
196
271
|
throw new Error(`Unknown command '${String(operands[0])}'`);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli.ts","../src/utils/scan-generated-files.ts"],"sourcesContent":["#!/usr/bin/env node\nimport * as path from 'path'\nimport semver from 'semver'\nimport { Argument, Command, Option } from 'commander'\nimport { SupportedMethods } from './constants/supported-methods.js'\nimport { logger } from './utils/logger.js'\nimport { Compiler } from './compiler/compiler.js'\nimport { findInvalidFiles } from './utils/scan-generated-files.js'\n\n\nif (semver.lt(process.version, '20.0.0')) {\n throw new Error('Node.js version must be greater than 20')\n}\n\nconst program = new Command()\n\n\nprogram\n .command('build')\n .option('-c --config <config>', 'The keq-cli config file')\n .option('--module <modules...>', 'Filter module(s) to generate')\n .option('--debug', 'Print debug information')\n .option('--tolerant', 'Tolerate wrong swagger/openapi structure')\n .option('-i --interactive', 'Interactive select the scope of generation')\n .action(async (options) => {\n const compiler = new Compiler({\n build: true,\n persist: true,\n config: options.config,\n includes: options.module,\n debug: !!options.debug,\n tolerant: !!options.tolerant,\n interactive: !!options.interactive && {\n mode: 'except',\n clear: true,\n },\n })\n\n await compiler.run()\n })\n\n\nprogram\n .command('ignore')\n .addArgument(\n new Argument('<mode>', 'The ignore mode')\n .choices(['all', 'add', 'except'])\n .argRequired(),\n )\n .option('-c --config <config>', 'The keq-cli config file')\n .option('--debug', 'Print debug information')\n .option('--module <modules...>')\n .option('--build', 'Build after updating .keqignore file')\n .addOption(\n new Option('--method <method>', 'Only generate files of the specified operation method')\n .choices([\n ...SupportedMethods,\n ...SupportedMethods.map((method) => method.toUpperCase()),\n ]),\n )\n .option('--pathname <pathnames>', 'Only generate files of the specified operation pathname')\n .option('-i --interactive', 'Interactive select the scope of generation')\n .action(async (mode, options) => {\n let compiler: Compiler\n\n if (mode === 'all') {\n if (options.build) throw new Error(\"'--build' cannot be used with 'all' mode\")\n\n compiler = new Compiler({\n build: false,\n persist: true,\n config: options.config,\n includes: options.module,\n debug: !!options.debug,\n interactive: false,\n ignore: {\n rules: [{\n persist: true,\n ignore: true,\n moduleName: '*',\n operationMethod: '*',\n operationPathname: '*',\n }],\n },\n })\n } else if (options.interactive) {\n if (options.interactive) {\n if (options.method) throw new Error(\"'--method' cannot be used with '--interactive'\")\n if (options.pathname) throw new Error(\"'--pathname' cannot be used with '--interactive'\")\n }\n\n compiler = new Compiler({\n build: !!options.build,\n persist: true,\n config: options.config,\n includes: options.module,\n debug: !!options.debug,\n\n interactive: {\n mode,\n persist: true,\n },\n })\n } else {\n if (!options.method && !options.pathname) {\n throw new Error(\"at least one of '-i --interactive', '--method' or '--pathname' must be specified\")\n }\n\n const moduleNames = options.module || ['*']\n\n compiler = new Compiler({\n build: !!options.build,\n persist: true,\n config: options.config,\n debug: !!options.debug,\n includes: options.module,\n ignore: {\n rules: moduleNames.map((moduleNames) => ({\n persist: true,\n ignore: mode === 'add',\n moduleName: moduleNames,\n operationMethod: options.method,\n operationPathname: options.pathname,\n })),\n },\n interactive: false,\n })\n }\n\n await compiler.run()\n })\n\n\nprogram\n .command('list')\n .option('-c --config <config>', 'The keq-cli config file')\n .option('--invalid', 'List only invalid generated files (files not in current build)')\n .option('--debug', 'Print debug information')\n .action(async (options) => {\n const compiler = new Compiler({\n build: true,\n persist: false,\n silent: true,\n config: options.config,\n includes: [],\n debug: !!options.debug,\n })\n\n await compiler.run()\n\n const context = compiler.context\n\n if (!context.rc) {\n throw new Error('Failed to load configuration')\n }\n\n if (options.invalid) {\n // Get valid file paths from artifacts\n const validFilePaths = (context.artifacts || []).map((artifact) => artifact.filepath)\n\n // Find invalid files (all files in outdir not in current build)\n const invalidFiles = await findInvalidFiles(context.rc.outdir, validFilePaths)\n\n for (const file of invalidFiles) {\n // Join outdir with relative path to show full path with ./ prefix\n const fullPath = `./${path.join(context.rc.outdir, file.relativePath)}`\n console.log(fullPath)\n }\n } else {\n // List files that should be generated based on current config\n const artifacts = context.artifacts || []\n\n for (const artifact of artifacts) {\n // Join outdir with artifact filepath, similar to persist task, with ./ prefix\n const fullPath = `./${path.join(context.rc.outdir, artifact.filepath)}`\n console.log(fullPath)\n }\n }\n })\n\nasync function main(): Promise<void> {\n program.on('command:*', function (operands) {\n throw new Error(`Unknown command '${String(operands[0])}'`)\n })\n\n try {\n await program.parseAsync(process.argv)\n } catch (err) {\n if (process.argv.includes('--debug')) {\n console.error(err)\n } else {\n logger.error(err instanceof Error ? err.message : String(err))\n }\n }\n}\n\nvoid main()\n","import * as path from 'path'\nimport fs from 'fs-extra'\n\nexport interface GeneratedFile {\n /** Absolute path to the file */\n absolutePath: string\n /** Relative path from outdir */\n relativePath: string\n}\n\n/**\n * Recursively find all files in a directory\n */\nasync function findAllFiles(dir: string, extensions?: string[]): Promise<string[]> {\n const results: string[] = []\n\n async function scan(currentDir: string): Promise<void> {\n let entries: string[]\n try {\n entries = await fs.readdir(currentDir)\n } catch (err) {\n // Skip directories that can't be read\n return\n }\n\n for (const entry of entries) {\n // Skip node_modules and .git directories\n if (entry === 'node_modules' || entry === '.git') {\n continue\n }\n\n const fullPath = path.join(currentDir, entry)\n let stat: fs.Stats\n try {\n stat = await fs.stat(fullPath)\n } catch (err) {\n // Skip entries that can't be stat'd\n continue\n }\n\n if (stat.isDirectory()) {\n await scan(fullPath)\n } else if (stat.isFile()) {\n if (!extensions) {\n // If no extensions specified, include all files\n results.push(fullPath)\n } else {\n const ext = path.extname(fullPath)\n if (extensions.includes(ext)) {\n results.push(fullPath)\n }\n }\n }\n }\n }\n\n await scan(dir)\n return results\n}\n\n/**\n * Scan all files in the output directory\n * @param outdir The output directory to scan\n * @returns List of all files with their paths\n */\nasync function scanAllFiles(outdir: string): Promise<GeneratedFile[]> {\n const absoluteOutdir = path.resolve(outdir)\n\n // Check if outdir exists\n if (!await fs.exists(absoluteOutdir)) {\n return []\n }\n\n // Find all files in outdir (no extension filter)\n const files = await findAllFiles(absoluteOutdir)\n\n return files.map((file) => ({\n absolutePath: file,\n relativePath: path.relative(absoluteOutdir, file),\n }))\n}\n\n/**\n * Find invalid files that are not in the current artifacts list\n * This includes both non-generated files and outdated generated files\n * @param outdir The output directory\n * @param validFilePaths List of valid file paths (relative to outdir)\n * @returns List of invalid files\n */\nexport async function findInvalidFiles(\n outdir: string,\n validFilePaths: string[],\n): Promise<GeneratedFile[]> {\n const allFiles = await scanAllFiles(outdir)\n const validPathsSet = new Set(validFilePaths.map((p) => path.normalize(p)))\n\n return allFiles.filter((file) => {\n const normalizedPath = path.normalize(file.relativePath)\n return !validPathsSet.has(normalizedPath)\n })\n}\n"],"mappings":"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","names":["path","moduleNames"]}
|
|
1
|
+
{"version":3,"sources":["../src/cli.ts","../src/utils/scan-generated-files.ts"],"sourcesContent":["#!/usr/bin/env node\nimport * as path from 'path'\nimport semver from 'semver'\nimport { Argument, Command, Option } from 'commander'\nimport { SupportedMethods } from './constants/supported-methods.js'\nimport { logger } from './utils/logger.js'\nimport { Compiler } from './compiler/compiler.js'\nimport { findInvalidFiles } from './utils/scan-generated-files.js'\n\n\nif (semver.lt(process.version, '20.0.0')) {\n throw new Error('Node.js version must be greater than 20')\n}\n\nconst program = new Command()\n\n\nprogram\n .command('build')\n .option('-c --config <config>', 'The keq-cli config file')\n .option('--module <modules...>', 'Filter module(s) to generate')\n .option('--debug', 'Print debug information')\n .option('--tolerant', 'Tolerate wrong swagger/openapi structure')\n .option('-i --interactive', 'Interactive select the scope of generation')\n .action(async (options) => {\n const compiler = new Compiler({\n build: true,\n persist: true,\n config: options.config,\n includes: options.module,\n debug: !!options.debug,\n tolerant: !!options.tolerant,\n interactive: !!options.interactive && {\n mode: 'except',\n clear: true,\n },\n })\n\n await compiler.run()\n })\n\n\nprogram\n .command('ignore')\n .addArgument(\n new Argument('<mode>', 'The ignore mode')\n .choices(['all', 'add', 'except'])\n .argRequired(),\n )\n .option('-c --config <config>', 'The keq-cli config file')\n .option('--debug', 'Print debug information')\n .option('--module <modules...>')\n .option('--build', 'Build after updating .keqignore file')\n .addOption(\n new Option('--method <method>', 'Only generate files of the specified operation method')\n .choices([\n ...SupportedMethods,\n ...SupportedMethods.map((method) => method.toUpperCase()),\n ]),\n )\n .option('--pathname <pathnames>', 'Only generate files of the specified operation pathname')\n .option('-i --interactive', 'Interactive select the scope of generation')\n .action(async (mode, options) => {\n let compiler: Compiler\n\n if (mode === 'all') {\n if (options.build) throw new Error(\"'--build' cannot be used with 'all' mode\")\n\n compiler = new Compiler({\n build: false,\n persist: true,\n config: options.config,\n includes: options.module,\n debug: !!options.debug,\n interactive: false,\n ignore: {\n rules: [{\n persist: true,\n ignore: true,\n moduleName: '*',\n operationMethod: '*',\n operationPathname: '*',\n }],\n },\n })\n } else if (options.interactive) {\n if (options.interactive) {\n if (options.method) throw new Error(\"'--method' cannot be used with '--interactive'\")\n if (options.pathname) throw new Error(\"'--pathname' cannot be used with '--interactive'\")\n }\n\n compiler = new Compiler({\n build: !!options.build,\n persist: true,\n config: options.config,\n includes: options.module,\n debug: !!options.debug,\n\n interactive: {\n mode,\n persist: true,\n },\n })\n } else {\n if (!options.method && !options.pathname) {\n throw new Error(\"at least one of '-i --interactive', '--method' or '--pathname' must be specified\")\n }\n\n const moduleNames = options.module || ['*']\n\n compiler = new Compiler({\n build: !!options.build,\n persist: true,\n config: options.config,\n debug: !!options.debug,\n includes: options.module,\n ignore: {\n rules: moduleNames.map((moduleNames) => ({\n persist: true,\n ignore: mode === 'add',\n moduleName: moduleNames,\n operationMethod: options.method,\n operationPathname: options.pathname,\n })),\n },\n interactive: false,\n })\n }\n\n await compiler.run()\n })\n\n\nprogram\n .command('list')\n .option('-c --config <config>', 'The keq-cli config file')\n .option('--invalid', 'List only invalid generated files (files not in current build)')\n .option('--debug', 'Print debug information')\n .action(async (options) => {\n const compiler = new Compiler({\n build: true,\n persist: false,\n silent: true,\n config: options.config,\n includes: [],\n debug: !!options.debug,\n })\n\n await compiler.run()\n\n const context = compiler.context\n\n if (!context.rc) {\n throw new Error('Failed to load configuration')\n }\n\n if (options.invalid) {\n // Get valid file paths from artifacts\n const validFilePaths = (context.artifacts || []).map((artifact) => artifact.filepath)\n\n // Find invalid files (all files in outdir not in current build)\n const invalidFiles = await findInvalidFiles(context.rc.outdir, validFilePaths)\n\n for (const file of invalidFiles) {\n // Join outdir with relative path to show full path with ./ prefix\n const fullPath = `./${path.join(context.rc.outdir, file.relativePath)}`\n console.log(fullPath)\n }\n } else {\n // List files that should be generated based on current config\n const artifacts = context.artifacts || []\n\n for (const artifact of artifacts) {\n // Join outdir with artifact filepath, similar to persist task, with ./ prefix\n const fullPath = `./${path.join(context.rc.outdir, artifact.filepath)}`\n console.log(fullPath)\n }\n }\n })\n\n\nprogram\n .command('apis')\n .option('-c --config <config>', 'The keq-cli config file')\n .option('--module <modules...>', 'Filter module(s) to list')\n .addOption(\n new Option('--includes <includes...>', 'Include specific parts')\n .choices(['operations', 'components']),\n )\n .option('--json', 'Output in JSON format')\n .option('--debug', 'Print debug information')\n .action(async (options) => {\n const compiler = new Compiler({\n build: true,\n persist: false,\n silent: true,\n config: options.config,\n includes: options.module || [],\n debug: !!options.debug,\n })\n\n await compiler.run()\n\n const context = compiler.context\n const documents = context.documents || []\n\n // Determine what to include\n const includesList = options.includes || ['operations', 'components']\n const includeOperations = includesList.includes('operations')\n const includeComponents = includesList.includes('components')\n\n // Build unified data structure\n const result = documents.map((document) => {\n const item: {\n module: string\n operations?: Array<{ method: string; path: string; operationId: string }>\n components?: { schemas: Array<{ name: string }> }\n } = {\n module: document.module.name,\n }\n\n if (includeOperations) {\n item.operations = document.operations.map((operation) => ({\n method: operation.method.toUpperCase(),\n path: operation.pathname,\n operationId: operation.operationId,\n }))\n }\n\n if (includeComponents) {\n item.components = {\n schemas: document.schemas.map((schema) => ({\n name: schema.name,\n })),\n }\n }\n\n return item\n })\n\n if (options.json) {\n // JSON format output\n console.log(JSON.stringify(result, null, 2))\n } else {\n // Human-readable format output\n for (const item of result) {\n console.log(`\\nModule: ${item.module}`)\n console.log('─'.repeat(70))\n\n // Display APIs\n if (includeOperations) {\n console.log('\\n APIs:')\n if (!item.operations || item.operations.length === 0) {\n console.log(' (No APIs)')\n } else {\n for (const operation of item.operations) {\n const method = operation.method.padEnd(7)\n console.log(` ${method} ${operation.path}`)\n }\n }\n }\n\n // Display Schemas\n if (includeComponents) {\n console.log('\\n Schemas:')\n if (!item.components || item.components.schemas.length === 0) {\n console.log(' (No Schemas)')\n } else {\n for (const schema of item.components.schemas) {\n console.log(` ${schema.name}`)\n }\n }\n }\n }\n\n // Print summary\n const totalApis = result.reduce((sum, item) => sum + (item.operations?.length || 0), 0)\n const totalSchemas = result.reduce((sum, item) => sum + (item.components?.schemas.length || 0), 0)\n console.log('\\n' + '─'.repeat(70))\n const parts = [`${result.length} modules`]\n if (includeOperations) parts.push(`${totalApis} APIs`)\n if (includeComponents) parts.push(`${totalSchemas} Schemas`)\n console.log(`Total: ${parts.join(', ')}`)\n }\n })\n\nasync function main(): Promise<void> {\n program.on('command:*', function (operands) {\n throw new Error(`Unknown command '${String(operands[0])}'`)\n })\n\n try {\n await program.parseAsync(process.argv)\n } catch (err) {\n if (process.argv.includes('--debug')) {\n console.error(err)\n } else {\n logger.error(err instanceof Error ? err.message : String(err))\n }\n }\n}\n\nvoid main()\n","import * as path from 'path'\nimport fs from 'fs-extra'\n\nexport interface GeneratedFile {\n /** Absolute path to the file */\n absolutePath: string\n /** Relative path from outdir */\n relativePath: string\n}\n\n/**\n * Recursively find all files in a directory\n */\nasync function findAllFiles(dir: string, extensions?: string[]): Promise<string[]> {\n const results: string[] = []\n\n async function scan(currentDir: string): Promise<void> {\n let entries: string[]\n try {\n entries = await fs.readdir(currentDir)\n } catch (err) {\n // Skip directories that can't be read\n return\n }\n\n for (const entry of entries) {\n // Skip node_modules and .git directories\n if (entry === 'node_modules' || entry === '.git') {\n continue\n }\n\n const fullPath = path.join(currentDir, entry)\n let stat: fs.Stats\n try {\n stat = await fs.stat(fullPath)\n } catch (err) {\n // Skip entries that can't be stat'd\n continue\n }\n\n if (stat.isDirectory()) {\n await scan(fullPath)\n } else if (stat.isFile()) {\n if (!extensions) {\n // If no extensions specified, include all files\n results.push(fullPath)\n } else {\n const ext = path.extname(fullPath)\n if (extensions.includes(ext)) {\n results.push(fullPath)\n }\n }\n }\n }\n }\n\n await scan(dir)\n return results\n}\n\n/**\n * Scan all files in the output directory\n * @param outdir The output directory to scan\n * @returns List of all files with their paths\n */\nasync function scanAllFiles(outdir: string): Promise<GeneratedFile[]> {\n const absoluteOutdir = path.resolve(outdir)\n\n // Check if outdir exists\n if (!await fs.exists(absoluteOutdir)) {\n return []\n }\n\n // Find all files in outdir (no extension filter)\n const files = await findAllFiles(absoluteOutdir)\n\n return files.map((file) => ({\n absolutePath: file,\n relativePath: path.relative(absoluteOutdir, file),\n }))\n}\n\n/**\n * Find invalid files that are not in the current artifacts list\n * This includes both non-generated files and outdated generated files\n * @param outdir The output directory\n * @param validFilePaths List of valid file paths (relative to outdir)\n * @returns List of invalid files\n */\nexport async function findInvalidFiles(\n outdir: string,\n validFilePaths: string[],\n): Promise<GeneratedFile[]> {\n const allFiles = await scanAllFiles(outdir)\n const validPathsSet = new Set(validFilePaths.map((p) => path.normalize(p)))\n\n return allFiles.filter((file) => {\n const normalizedPath = path.normalize(file.relativePath)\n return !validPathsSet.has(normalizedPath)\n })\n}\n"],"mappings":"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","names":["path","moduleNames"]}
|
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"keq": "dist/cli.cjs"
|
|
8
8
|
},
|
|
9
9
|
"description": "Transform Swagger/OpenAPI to the function that send request by keq",
|
|
10
|
-
"version": "5.0.0-alpha.
|
|
10
|
+
"version": "5.0.0-alpha.31",
|
|
11
11
|
"engines": {
|
|
12
12
|
"node": ">=20.0.0"
|
|
13
13
|
},
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"@types/node": "^20.19.25",
|
|
56
56
|
"@types/ramda": "^0.31.1",
|
|
57
57
|
"@types/swagger2openapi": "^7.0.4",
|
|
58
|
-
"keq": "5.0.0-alpha.
|
|
58
|
+
"keq": "5.0.0-alpha.31"
|
|
59
59
|
},
|
|
60
60
|
"dependencies": {
|
|
61
61
|
"@inquirer/prompts": "^7.10.1",
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"word-wrap": "^1.2.5"
|
|
88
88
|
},
|
|
89
89
|
"peerDependencies": {
|
|
90
|
-
"keq": "5.0.0-alpha.
|
|
90
|
+
"keq": "5.0.0-alpha.31"
|
|
91
91
|
},
|
|
92
92
|
"optionalDependencies": {
|
|
93
93
|
"eslint": "^9.39.1"
|