@visulima/jsdoc-open-api 3.0.0-alpha.2 → 3.0.0-alpha.4
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 +21 -0
- package/dist/{chunk-46IWFMQ2.mjs → chunk-2T6HMUIL.mjs} +15 -5
- package/dist/chunk-2T6HMUIL.mjs.map +1 -0
- package/dist/{chunk-WEX5DMNT.js → chunk-PTFTJY7I.js} +15 -5
- package/dist/chunk-PTFTJY7I.js.map +1 -0
- package/dist/{chunk-KI63G47G.mjs → chunk-RGP6RTJO.mjs} +3 -3
- package/dist/{chunk-KI63G47G.mjs.map → chunk-RGP6RTJO.mjs.map} +1 -1
- package/dist/{chunk-QK4CXNUY.js → chunk-RVCK3H3U.js} +9 -9
- package/dist/{chunk-QK4CXNUY.js.map → chunk-RVCK3H3U.js.map} +1 -1
- package/dist/cli/commander/index.js +4 -4
- package/dist/cli/commander/index.mjs +2 -2
- package/dist/cli/index.js +4 -4
- package/dist/cli/index.mjs +2 -2
- package/dist/index.js +12 -12
- package/dist/index.mjs +2 -2
- package/package.json +3 -4
- package/dist/chunk-46IWFMQ2.mjs.map +0 -1
- package/dist/chunk-WEX5DMNT.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { spec_builder_default, DEFAULT_EXCLUDE, collect, parse_file_default, comments_to_open_api_default, comments_to_open_api_default2, validate_default } from './chunk-
|
|
1
|
+
import { spec_builder_default, DEFAULT_EXCLUDE, collect, parse_file_default, comments_to_open_api_default, comments_to_open_api_default2, validate_default } from './chunk-2T6HMUIL.mjs';
|
|
2
2
|
import { lstat, realpath, mkdir, writeFile } from 'fs/promises';
|
|
3
3
|
import { normalize, dirname } from 'path';
|
|
4
4
|
import { pathToFileURL } from 'url';
|
|
@@ -138,5 +138,5 @@ var initCommand = (configName, packageJsonPath = process.cwd()) => {
|
|
|
138
138
|
var init_command_default = initCommand;
|
|
139
139
|
|
|
140
140
|
export { generate_command_default, init_command_default };
|
|
141
|
-
//# sourceMappingURL=chunk-
|
|
142
|
-
//# sourceMappingURL=chunk-
|
|
141
|
+
//# sourceMappingURL=chunk-RGP6RTJO.mjs.map
|
|
142
|
+
//# sourceMappingURL=chunk-RGP6RTJO.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/command/generate-command.ts","../src/cli/command/init-command.ts"],"names":["comments_to_open_api_default"],"mappings":"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","file":"chunk-KI63G47G.mjs","sourcesContent":["import { lstat, mkdir, realpath, writeFile } from \"node:fs/promises\";\nimport { dirname, normalize } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\n\nimport type { WalkOptions } from \"@visulima/fs\";\nimport { collect } from \"@visulima/fs\";\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { MultiBar, Presets } from \"cli-progress\";\n\nimport { DEFAULT_EXCLUDE } from \"../../constants\";\nimport type { BaseDefinition } from \"../../exported\";\nimport jsDocumentCommentsToOpenApi from \"../../jsdoc/comments-to-open-api\";\nimport parseFile from \"../../parse-file\";\nimport SpecBuilder from \"../../spec-builder\";\nimport swaggerJsDocumentCommentsToOpenApi from \"../../swagger-jsdoc/comments-to-open-api\";\nimport validate from \"../../validate\";\n\nconst generateCommand = async (\n configName: string,\n paths: string[],\n options: {\n config?: string;\n output?: string;\n verbose?: boolean;\n veryVerbose?: boolean;\n },\n): Promise<void> => {\n let openapiConfig: {\n exclude: string[];\n extensions?: string[];\n followSymlinks?: boolean;\n include?: (RegExp | string)[];\n swaggerDefinition: BaseDefinition;\n } = {\n exclude: [],\n swaggerDefinition: {} as BaseDefinition,\n };\n\n try {\n let config = await import(pathToFileURL(normalize(options.config ?? configName)).href);\n\n if (config?.default) {\n config = config.default;\n }\n\n openapiConfig = config;\n } catch {\n throw new Error(`No config file found, on: ${options.config ?? \".openapirc.js\"}\\n`);\n }\n\n const multibar = new MultiBar(\n {\n clearOnComplete: false,\n format: \"{value}/{total} | {bar} | {filename}\",\n hideCursor: true,\n },\n Presets.shades_grey,\n );\n\n const spec = new SpecBuilder(openapiConfig.swaggerDefinition);\n const skip = new Set<RegExp | string>([...DEFAULT_EXCLUDE, ...openapiConfig.exclude]);\n\n // eslint-disable-next-line unicorn/prevent-abbreviations,no-loops/no-loops\n for await (const dir of paths) {\n // Check if the path is a directory\n // eslint-disable-next-line security/detect-non-literal-fs-filename,unicorn/no-await-expression-member\n (await lstat(dir)).isDirectory();\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n const realDirectory = await realpath(dir);\n\n const files: string[] = await collect(realDirectory, {\n extensions: openapiConfig.extensions ?? [\".js\", \".cjs\", \".mjs\", \".ts\", \".tsx\", \".jsx\", \".yaml\", \".yml\"],\n followSymlinks: openapiConfig.followSymlinks ?? false,\n match: openapiConfig.include,\n skip: [...skip],\n } as WalkOptions);\n\n if (options.verbose ?? options.veryVerbose) {\n // eslint-disable-next-line no-console\n console.log(`\\nFound ${String(files.length)} files in ${realDirectory}`);\n }\n\n if (options.veryVerbose) {\n // eslint-disable-next-line no-console\n console.log(files);\n }\n\n const bar = multibar.create(files.length, 0);\n\n files.forEach((file) => {\n if (options.verbose) {\n // eslint-disable-next-line no-console\n console.log(`Parsing file ${file}`);\n }\n\n bar.increment(1, { filename: realDirectory });\n\n const parsedJsDocumentFile = parseFile(file, jsDocumentCommentsToOpenApi, options.verbose);\n\n spec.addData(parsedJsDocumentFile.map((item) => item.spec));\n\n const parsedSwaggerJsDocumentFile = parseFile(file, swaggerJsDocumentCommentsToOpenApi, options.verbose);\n\n spec.addData(parsedSwaggerJsDocumentFile.map((item) => item.spec));\n });\n }\n\n if (options.verbose) {\n // eslint-disable-next-line no-console\n console.log(\"Validating swagger spec\");\n }\n\n if (options.veryVerbose) {\n // eslint-disable-next-line no-console\n console.log(JSON.stringify(spec, null, 2));\n }\n\n await validate(JSON.parse(JSON.stringify(spec)) as Record<string, unknown>);\n\n const output = options.output ?? \"swagger.json\";\n\n multibar.stop();\n\n if (options.verbose) {\n // eslint-disable-next-line no-console\n console.log(`Written swagger spec to \"${output}\" file`);\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n await mkdir(dirname(output), { recursive: true });\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n await writeFile(output, JSON.stringify(spec, null, 2));\n\n // eslint-disable-next-line no-console\n console.log(`\\nSwagger specification is ready, check the \"${output}\" file.`);\n};\n\nexport default generateCommand;\n","import { existsSync, realpathSync, writeFileSync } from \"node:fs\";\n\nimport readPkgUp from \"read-pkg-up\";\n\nconst initCommand = (configName: string, packageJsonPath = process.cwd()): void => {\n if (existsSync(configName)) {\n throw new Error(\"Config file already exists\");\n }\n\n const foundPackageJson = readPkgUp.sync({\n cwd: realpathSync(packageJsonPath),\n });\n\n let exportTemplate = \"module.exports =\";\n\n if (foundPackageJson) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const { packageJson: package_, path: packagePath } = foundPackageJson;\n\n // eslint-disable-next-line no-console\n console.info(`Found package.json at \"${packagePath as string}\"`);\n\n if (package_.type === \"module\") {\n // eslint-disable-next-line no-console\n console.info(\"Found package.json with type: module, using ES6 as export for the config file\");\n\n exportTemplate = \"export default\";\n }\n } else {\n // eslint-disable-next-line no-console\n console.info(\"No package.json found\");\n }\n\n writeFileSync(\n configName,\n `${exportTemplate} {\n exclude: [\n 'coverage/**',\n '.github/**',\n 'packages/*/test{,s}/**',\n '**/*.d.ts',\n 'test{,s}/**',\n 'test{,-*}.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}',\n '**/*{.,-}test.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}',\n '**/__tests__/**',\n '**/{ava,babel,nyc}.config.{js,cjs,mjs}',\n '**/jest.config.{js,cjs,mjs,ts}',\n '**/{karma,rollup,webpack}.config.js',\n '**/.{eslint,mocha}rc.{js,cjs}',\n '**/.{travis,yarnrc}.yml',\n '**/{docker-compose,docker}.yml',\n '**/.yamllint.{yaml,yml}',\n '**/node_modules/**',\n '**/pnpm-lock.yaml',\n '**/pnpm-workspace.yaml',\n '**/{package,package-lock}.json',\n '**/yarn.lock',\n '**/package.json5',\n '**/.next/**',\n ],\n followSymlinks: false,\n swaggerDefinition: {\n openapi: '3.0.0',\n info: {\n title: 'API',\n version: '1.0.0',\n },\n },\n};\n`,\n );\n\n // eslint-disable-next-line no-console\n console.log(`Created \"${configName}\"`);\n};\n\nexport default initCommand;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/cli/command/generate-command.ts","../src/cli/command/init-command.ts"],"names":["comments_to_open_api_default"],"mappings":"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","file":"chunk-RGP6RTJO.mjs","sourcesContent":["import { lstat, mkdir, realpath, writeFile } from \"node:fs/promises\";\nimport { dirname, normalize } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\n\nimport type { WalkOptions } from \"@visulima/fs\";\nimport { collect } from \"@visulima/fs\";\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { MultiBar, Presets } from \"cli-progress\";\n\nimport { DEFAULT_EXCLUDE } from \"../../constants\";\nimport type { BaseDefinition } from \"../../exported\";\nimport jsDocumentCommentsToOpenApi from \"../../jsdoc/comments-to-open-api\";\nimport parseFile from \"../../parse-file\";\nimport SpecBuilder from \"../../spec-builder\";\nimport swaggerJsDocumentCommentsToOpenApi from \"../../swagger-jsdoc/comments-to-open-api\";\nimport validate from \"../../validate\";\n\nconst generateCommand = async (\n configName: string,\n paths: string[],\n options: {\n config?: string;\n output?: string;\n verbose?: boolean;\n veryVerbose?: boolean;\n },\n): Promise<void> => {\n let openapiConfig: {\n exclude: string[];\n extensions?: string[];\n followSymlinks?: boolean;\n include?: (RegExp | string)[];\n swaggerDefinition: BaseDefinition;\n } = {\n exclude: [],\n swaggerDefinition: {} as BaseDefinition,\n };\n\n try {\n let config = await import(pathToFileURL(normalize(options.config ?? configName)).href);\n\n if (config?.default) {\n config = config.default;\n }\n\n openapiConfig = config;\n } catch {\n throw new Error(`No config file found, on: ${options.config ?? \".openapirc.js\"}\\n`);\n }\n\n const multibar = new MultiBar(\n {\n clearOnComplete: false,\n format: \"{value}/{total} | {bar} | {filename}\",\n hideCursor: true,\n },\n Presets.shades_grey,\n );\n\n const spec = new SpecBuilder(openapiConfig.swaggerDefinition);\n const skip = new Set<RegExp | string>([...DEFAULT_EXCLUDE, ...openapiConfig.exclude]);\n\n // eslint-disable-next-line unicorn/prevent-abbreviations,no-loops/no-loops\n for await (const dir of paths) {\n // Check if the path is a directory\n // eslint-disable-next-line security/detect-non-literal-fs-filename,unicorn/no-await-expression-member\n (await lstat(dir)).isDirectory();\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n const realDirectory = await realpath(dir);\n\n const files: string[] = await collect(realDirectory, {\n extensions: openapiConfig.extensions ?? [\".js\", \".cjs\", \".mjs\", \".ts\", \".tsx\", \".jsx\", \".yaml\", \".yml\"],\n followSymlinks: openapiConfig.followSymlinks ?? false,\n match: openapiConfig.include,\n skip: [...skip],\n } as WalkOptions);\n\n if (options.verbose ?? options.veryVerbose) {\n // eslint-disable-next-line no-console\n console.log(`\\nFound ${String(files.length)} files in ${realDirectory}`);\n }\n\n if (options.veryVerbose) {\n // eslint-disable-next-line no-console\n console.log(files);\n }\n\n const bar = multibar.create(files.length, 0);\n\n files.forEach((file) => {\n if (options.verbose) {\n // eslint-disable-next-line no-console\n console.log(`Parsing file ${file}`);\n }\n\n bar.increment(1, { filename: realDirectory });\n\n const parsedJsDocumentFile = parseFile(file, jsDocumentCommentsToOpenApi, options.verbose);\n\n spec.addData(parsedJsDocumentFile.map((item) => item.spec));\n\n const parsedSwaggerJsDocumentFile = parseFile(file, swaggerJsDocumentCommentsToOpenApi, options.verbose);\n\n spec.addData(parsedSwaggerJsDocumentFile.map((item) => item.spec));\n });\n }\n\n if (options.verbose) {\n // eslint-disable-next-line no-console\n console.log(\"Validating swagger spec\");\n }\n\n if (options.veryVerbose) {\n // eslint-disable-next-line no-console\n console.log(JSON.stringify(spec, null, 2));\n }\n\n await validate(JSON.parse(JSON.stringify(spec)) as Record<string, unknown>);\n\n const output = options.output ?? \"swagger.json\";\n\n multibar.stop();\n\n if (options.verbose) {\n // eslint-disable-next-line no-console\n console.log(`Written swagger spec to \"${output}\" file`);\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n await mkdir(dirname(output), { recursive: true });\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n await writeFile(output, JSON.stringify(spec, null, 2));\n\n // eslint-disable-next-line no-console\n console.log(`\\nSwagger specification is ready, check the \"${output}\" file.`);\n};\n\nexport default generateCommand;\n","import { existsSync, realpathSync, writeFileSync } from \"node:fs\";\n\nimport readPkgUp from \"read-pkg-up\";\n\nconst initCommand = (configName: string, packageJsonPath = process.cwd()): void => {\n if (existsSync(configName)) {\n throw new Error(\"Config file already exists\");\n }\n\n const foundPackageJson = readPkgUp.sync({\n cwd: realpathSync(packageJsonPath),\n });\n\n let exportTemplate = \"module.exports =\";\n\n if (foundPackageJson) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const { packageJson: package_, path: packagePath } = foundPackageJson;\n\n // eslint-disable-next-line no-console\n console.info(`Found package.json at \"${packagePath as string}\"`);\n\n if (package_.type === \"module\") {\n // eslint-disable-next-line no-console\n console.info(\"Found package.json with type: module, using ES6 as export for the config file\");\n\n exportTemplate = \"export default\";\n }\n } else {\n // eslint-disable-next-line no-console\n console.info(\"No package.json found\");\n }\n\n writeFileSync(\n configName,\n `${exportTemplate} {\n exclude: [\n 'coverage/**',\n '.github/**',\n 'packages/*/test{,s}/**',\n '**/*.d.ts',\n 'test{,s}/**',\n 'test{,-*}.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}',\n '**/*{.,-}test.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}',\n '**/__tests__/**',\n '**/{ava,babel,nyc}.config.{js,cjs,mjs}',\n '**/jest.config.{js,cjs,mjs,ts}',\n '**/{karma,rollup,webpack}.config.js',\n '**/.{eslint,mocha}rc.{js,cjs}',\n '**/.{travis,yarnrc}.yml',\n '**/{docker-compose,docker}.yml',\n '**/.yamllint.{yaml,yml}',\n '**/node_modules/**',\n '**/pnpm-lock.yaml',\n '**/pnpm-workspace.yaml',\n '**/{package,package-lock}.json',\n '**/yarn.lock',\n '**/package.json5',\n '**/.next/**',\n ],\n followSymlinks: false,\n swaggerDefinition: {\n openapi: '3.0.0',\n info: {\n title: 'API',\n version: '1.0.0',\n },\n },\n};\n`,\n );\n\n // eslint-disable-next-line no-console\n console.log(`Created \"${configName}\"`);\n};\n\nexport default initCommand;\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkPTFTJY7I_js = require('./chunk-PTFTJY7I.js');
|
|
4
4
|
var promises = require('fs/promises');
|
|
5
5
|
var path = require('path');
|
|
6
6
|
var url = require('url');
|
|
@@ -35,12 +35,12 @@ var generateCommand = async (configName, paths, options) => {
|
|
|
35
35
|
},
|
|
36
36
|
cliProgress.Presets.shades_grey
|
|
37
37
|
);
|
|
38
|
-
const spec = new
|
|
39
|
-
const skip = /* @__PURE__ */ new Set([...
|
|
38
|
+
const spec = new chunkPTFTJY7I_js.spec_builder_default(openapiConfig.swaggerDefinition);
|
|
39
|
+
const skip = /* @__PURE__ */ new Set([...chunkPTFTJY7I_js.DEFAULT_EXCLUDE, ...openapiConfig.exclude]);
|
|
40
40
|
for await (const dir of paths) {
|
|
41
41
|
(await promises.lstat(dir)).isDirectory();
|
|
42
42
|
const realDirectory = await promises.realpath(dir);
|
|
43
|
-
const files = await
|
|
43
|
+
const files = await chunkPTFTJY7I_js.collect(realDirectory, {
|
|
44
44
|
extensions: openapiConfig.extensions ?? [".js", ".cjs", ".mjs", ".ts", ".tsx", ".jsx", ".yaml", ".yml"],
|
|
45
45
|
followSymlinks: openapiConfig.followSymlinks ?? false,
|
|
46
46
|
match: openapiConfig.include,
|
|
@@ -59,9 +59,9 @@ Found ${String(files.length)} files in ${realDirectory}`);
|
|
|
59
59
|
console.log(`Parsing file ${file}`);
|
|
60
60
|
}
|
|
61
61
|
bar.increment(1, { filename: realDirectory });
|
|
62
|
-
const parsedJsDocumentFile =
|
|
62
|
+
const parsedJsDocumentFile = chunkPTFTJY7I_js.parse_file_default(file, chunkPTFTJY7I_js.comments_to_open_api_default, options.verbose);
|
|
63
63
|
spec.addData(parsedJsDocumentFile.map((item) => item.spec));
|
|
64
|
-
const parsedSwaggerJsDocumentFile =
|
|
64
|
+
const parsedSwaggerJsDocumentFile = chunkPTFTJY7I_js.parse_file_default(file, chunkPTFTJY7I_js.comments_to_open_api_default2, options.verbose);
|
|
65
65
|
spec.addData(parsedSwaggerJsDocumentFile.map((item) => item.spec));
|
|
66
66
|
});
|
|
67
67
|
}
|
|
@@ -71,7 +71,7 @@ Found ${String(files.length)} files in ${realDirectory}`);
|
|
|
71
71
|
if (options.veryVerbose) {
|
|
72
72
|
console.log(JSON.stringify(spec, null, 2));
|
|
73
73
|
}
|
|
74
|
-
await
|
|
74
|
+
await chunkPTFTJY7I_js.validate_default(JSON.parse(JSON.stringify(spec)));
|
|
75
75
|
const output = options.output ?? "swagger.json";
|
|
76
76
|
multibar.stop();
|
|
77
77
|
if (options.verbose) {
|
|
@@ -145,5 +145,5 @@ var init_command_default = initCommand;
|
|
|
145
145
|
|
|
146
146
|
exports.generate_command_default = generate_command_default;
|
|
147
147
|
exports.init_command_default = init_command_default;
|
|
148
|
-
//# sourceMappingURL=chunk-
|
|
149
|
-
//# sourceMappingURL=chunk-
|
|
148
|
+
//# sourceMappingURL=chunk-RVCK3H3U.js.map
|
|
149
|
+
//# sourceMappingURL=chunk-RVCK3H3U.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/command/generate-command.ts","../src/cli/command/init-command.ts"],"names":["pathToFileURL","normalize","MultiBar","Presets","spec_builder_default","DEFAULT_EXCLUDE","lstat","realpath","collect","parse_file_default","comments_to_open_api_default","validate_default","mkdir","dirname","writeFile","existsSync","readPkgUp","realpathSync","writeFileSync"],"mappings":"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","file":"chunk-QK4CXNUY.js","sourcesContent":["import { lstat, mkdir, realpath, writeFile } from \"node:fs/promises\";\nimport { dirname, normalize } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\n\nimport type { WalkOptions } from \"@visulima/fs\";\nimport { collect } from \"@visulima/fs\";\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { MultiBar, Presets } from \"cli-progress\";\n\nimport { DEFAULT_EXCLUDE } from \"../../constants\";\nimport type { BaseDefinition } from \"../../exported\";\nimport jsDocumentCommentsToOpenApi from \"../../jsdoc/comments-to-open-api\";\nimport parseFile from \"../../parse-file\";\nimport SpecBuilder from \"../../spec-builder\";\nimport swaggerJsDocumentCommentsToOpenApi from \"../../swagger-jsdoc/comments-to-open-api\";\nimport validate from \"../../validate\";\n\nconst generateCommand = async (\n configName: string,\n paths: string[],\n options: {\n config?: string;\n output?: string;\n verbose?: boolean;\n veryVerbose?: boolean;\n },\n): Promise<void> => {\n let openapiConfig: {\n exclude: string[];\n extensions?: string[];\n followSymlinks?: boolean;\n include?: (RegExp | string)[];\n swaggerDefinition: BaseDefinition;\n } = {\n exclude: [],\n swaggerDefinition: {} as BaseDefinition,\n };\n\n try {\n let config = await import(pathToFileURL(normalize(options.config ?? configName)).href);\n\n if (config?.default) {\n config = config.default;\n }\n\n openapiConfig = config;\n } catch {\n throw new Error(`No config file found, on: ${options.config ?? \".openapirc.js\"}\\n`);\n }\n\n const multibar = new MultiBar(\n {\n clearOnComplete: false,\n format: \"{value}/{total} | {bar} | {filename}\",\n hideCursor: true,\n },\n Presets.shades_grey,\n );\n\n const spec = new SpecBuilder(openapiConfig.swaggerDefinition);\n const skip = new Set<RegExp | string>([...DEFAULT_EXCLUDE, ...openapiConfig.exclude]);\n\n // eslint-disable-next-line unicorn/prevent-abbreviations,no-loops/no-loops\n for await (const dir of paths) {\n // Check if the path is a directory\n // eslint-disable-next-line security/detect-non-literal-fs-filename,unicorn/no-await-expression-member\n (await lstat(dir)).isDirectory();\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n const realDirectory = await realpath(dir);\n\n const files: string[] = await collect(realDirectory, {\n extensions: openapiConfig.extensions ?? [\".js\", \".cjs\", \".mjs\", \".ts\", \".tsx\", \".jsx\", \".yaml\", \".yml\"],\n followSymlinks: openapiConfig.followSymlinks ?? false,\n match: openapiConfig.include,\n skip: [...skip],\n } as WalkOptions);\n\n if (options.verbose ?? options.veryVerbose) {\n // eslint-disable-next-line no-console\n console.log(`\\nFound ${String(files.length)} files in ${realDirectory}`);\n }\n\n if (options.veryVerbose) {\n // eslint-disable-next-line no-console\n console.log(files);\n }\n\n const bar = multibar.create(files.length, 0);\n\n files.forEach((file) => {\n if (options.verbose) {\n // eslint-disable-next-line no-console\n console.log(`Parsing file ${file}`);\n }\n\n bar.increment(1, { filename: realDirectory });\n\n const parsedJsDocumentFile = parseFile(file, jsDocumentCommentsToOpenApi, options.verbose);\n\n spec.addData(parsedJsDocumentFile.map((item) => item.spec));\n\n const parsedSwaggerJsDocumentFile = parseFile(file, swaggerJsDocumentCommentsToOpenApi, options.verbose);\n\n spec.addData(parsedSwaggerJsDocumentFile.map((item) => item.spec));\n });\n }\n\n if (options.verbose) {\n // eslint-disable-next-line no-console\n console.log(\"Validating swagger spec\");\n }\n\n if (options.veryVerbose) {\n // eslint-disable-next-line no-console\n console.log(JSON.stringify(spec, null, 2));\n }\n\n await validate(JSON.parse(JSON.stringify(spec)) as Record<string, unknown>);\n\n const output = options.output ?? \"swagger.json\";\n\n multibar.stop();\n\n if (options.verbose) {\n // eslint-disable-next-line no-console\n console.log(`Written swagger spec to \"${output}\" file`);\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n await mkdir(dirname(output), { recursive: true });\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n await writeFile(output, JSON.stringify(spec, null, 2));\n\n // eslint-disable-next-line no-console\n console.log(`\\nSwagger specification is ready, check the \"${output}\" file.`);\n};\n\nexport default generateCommand;\n","import { existsSync, realpathSync, writeFileSync } from \"node:fs\";\n\nimport readPkgUp from \"read-pkg-up\";\n\nconst initCommand = (configName: string, packageJsonPath = process.cwd()): void => {\n if (existsSync(configName)) {\n throw new Error(\"Config file already exists\");\n }\n\n const foundPackageJson = readPkgUp.sync({\n cwd: realpathSync(packageJsonPath),\n });\n\n let exportTemplate = \"module.exports =\";\n\n if (foundPackageJson) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const { packageJson: package_, path: packagePath } = foundPackageJson;\n\n // eslint-disable-next-line no-console\n console.info(`Found package.json at \"${packagePath as string}\"`);\n\n if (package_.type === \"module\") {\n // eslint-disable-next-line no-console\n console.info(\"Found package.json with type: module, using ES6 as export for the config file\");\n\n exportTemplate = \"export default\";\n }\n } else {\n // eslint-disable-next-line no-console\n console.info(\"No package.json found\");\n }\n\n writeFileSync(\n configName,\n `${exportTemplate} {\n exclude: [\n 'coverage/**',\n '.github/**',\n 'packages/*/test{,s}/**',\n '**/*.d.ts',\n 'test{,s}/**',\n 'test{,-*}.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}',\n '**/*{.,-}test.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}',\n '**/__tests__/**',\n '**/{ava,babel,nyc}.config.{js,cjs,mjs}',\n '**/jest.config.{js,cjs,mjs,ts}',\n '**/{karma,rollup,webpack}.config.js',\n '**/.{eslint,mocha}rc.{js,cjs}',\n '**/.{travis,yarnrc}.yml',\n '**/{docker-compose,docker}.yml',\n '**/.yamllint.{yaml,yml}',\n '**/node_modules/**',\n '**/pnpm-lock.yaml',\n '**/pnpm-workspace.yaml',\n '**/{package,package-lock}.json',\n '**/yarn.lock',\n '**/package.json5',\n '**/.next/**',\n ],\n followSymlinks: false,\n swaggerDefinition: {\n openapi: '3.0.0',\n info: {\n title: 'API',\n version: '1.0.0',\n },\n },\n};\n`,\n );\n\n // eslint-disable-next-line no-console\n console.log(`Created \"${configName}\"`);\n};\n\nexport default initCommand;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/cli/command/generate-command.ts","../src/cli/command/init-command.ts"],"names":["pathToFileURL","normalize","MultiBar","Presets","spec_builder_default","DEFAULT_EXCLUDE","lstat","realpath","collect","parse_file_default","comments_to_open_api_default","validate_default","mkdir","dirname","writeFile","existsSync","readPkgUp","realpathSync","writeFileSync"],"mappings":"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","file":"chunk-RVCK3H3U.js","sourcesContent":["import { lstat, mkdir, realpath, writeFile } from \"node:fs/promises\";\nimport { dirname, normalize } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\n\nimport type { WalkOptions } from \"@visulima/fs\";\nimport { collect } from \"@visulima/fs\";\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { MultiBar, Presets } from \"cli-progress\";\n\nimport { DEFAULT_EXCLUDE } from \"../../constants\";\nimport type { BaseDefinition } from \"../../exported\";\nimport jsDocumentCommentsToOpenApi from \"../../jsdoc/comments-to-open-api\";\nimport parseFile from \"../../parse-file\";\nimport SpecBuilder from \"../../spec-builder\";\nimport swaggerJsDocumentCommentsToOpenApi from \"../../swagger-jsdoc/comments-to-open-api\";\nimport validate from \"../../validate\";\n\nconst generateCommand = async (\n configName: string,\n paths: string[],\n options: {\n config?: string;\n output?: string;\n verbose?: boolean;\n veryVerbose?: boolean;\n },\n): Promise<void> => {\n let openapiConfig: {\n exclude: string[];\n extensions?: string[];\n followSymlinks?: boolean;\n include?: (RegExp | string)[];\n swaggerDefinition: BaseDefinition;\n } = {\n exclude: [],\n swaggerDefinition: {} as BaseDefinition,\n };\n\n try {\n let config = await import(pathToFileURL(normalize(options.config ?? configName)).href);\n\n if (config?.default) {\n config = config.default;\n }\n\n openapiConfig = config;\n } catch {\n throw new Error(`No config file found, on: ${options.config ?? \".openapirc.js\"}\\n`);\n }\n\n const multibar = new MultiBar(\n {\n clearOnComplete: false,\n format: \"{value}/{total} | {bar} | {filename}\",\n hideCursor: true,\n },\n Presets.shades_grey,\n );\n\n const spec = new SpecBuilder(openapiConfig.swaggerDefinition);\n const skip = new Set<RegExp | string>([...DEFAULT_EXCLUDE, ...openapiConfig.exclude]);\n\n // eslint-disable-next-line unicorn/prevent-abbreviations,no-loops/no-loops\n for await (const dir of paths) {\n // Check if the path is a directory\n // eslint-disable-next-line security/detect-non-literal-fs-filename,unicorn/no-await-expression-member\n (await lstat(dir)).isDirectory();\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n const realDirectory = await realpath(dir);\n\n const files: string[] = await collect(realDirectory, {\n extensions: openapiConfig.extensions ?? [\".js\", \".cjs\", \".mjs\", \".ts\", \".tsx\", \".jsx\", \".yaml\", \".yml\"],\n followSymlinks: openapiConfig.followSymlinks ?? false,\n match: openapiConfig.include,\n skip: [...skip],\n } as WalkOptions);\n\n if (options.verbose ?? options.veryVerbose) {\n // eslint-disable-next-line no-console\n console.log(`\\nFound ${String(files.length)} files in ${realDirectory}`);\n }\n\n if (options.veryVerbose) {\n // eslint-disable-next-line no-console\n console.log(files);\n }\n\n const bar = multibar.create(files.length, 0);\n\n files.forEach((file) => {\n if (options.verbose) {\n // eslint-disable-next-line no-console\n console.log(`Parsing file ${file}`);\n }\n\n bar.increment(1, { filename: realDirectory });\n\n const parsedJsDocumentFile = parseFile(file, jsDocumentCommentsToOpenApi, options.verbose);\n\n spec.addData(parsedJsDocumentFile.map((item) => item.spec));\n\n const parsedSwaggerJsDocumentFile = parseFile(file, swaggerJsDocumentCommentsToOpenApi, options.verbose);\n\n spec.addData(parsedSwaggerJsDocumentFile.map((item) => item.spec));\n });\n }\n\n if (options.verbose) {\n // eslint-disable-next-line no-console\n console.log(\"Validating swagger spec\");\n }\n\n if (options.veryVerbose) {\n // eslint-disable-next-line no-console\n console.log(JSON.stringify(spec, null, 2));\n }\n\n await validate(JSON.parse(JSON.stringify(spec)) as Record<string, unknown>);\n\n const output = options.output ?? \"swagger.json\";\n\n multibar.stop();\n\n if (options.verbose) {\n // eslint-disable-next-line no-console\n console.log(`Written swagger spec to \"${output}\" file`);\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n await mkdir(dirname(output), { recursive: true });\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n await writeFile(output, JSON.stringify(spec, null, 2));\n\n // eslint-disable-next-line no-console\n console.log(`\\nSwagger specification is ready, check the \"${output}\" file.`);\n};\n\nexport default generateCommand;\n","import { existsSync, realpathSync, writeFileSync } from \"node:fs\";\n\nimport readPkgUp from \"read-pkg-up\";\n\nconst initCommand = (configName: string, packageJsonPath = process.cwd()): void => {\n if (existsSync(configName)) {\n throw new Error(\"Config file already exists\");\n }\n\n const foundPackageJson = readPkgUp.sync({\n cwd: realpathSync(packageJsonPath),\n });\n\n let exportTemplate = \"module.exports =\";\n\n if (foundPackageJson) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const { packageJson: package_, path: packagePath } = foundPackageJson;\n\n // eslint-disable-next-line no-console\n console.info(`Found package.json at \"${packagePath as string}\"`);\n\n if (package_.type === \"module\") {\n // eslint-disable-next-line no-console\n console.info(\"Found package.json with type: module, using ES6 as export for the config file\");\n\n exportTemplate = \"export default\";\n }\n } else {\n // eslint-disable-next-line no-console\n console.info(\"No package.json found\");\n }\n\n writeFileSync(\n configName,\n `${exportTemplate} {\n exclude: [\n 'coverage/**',\n '.github/**',\n 'packages/*/test{,s}/**',\n '**/*.d.ts',\n 'test{,s}/**',\n 'test{,-*}.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}',\n '**/*{.,-}test.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}',\n '**/__tests__/**',\n '**/{ava,babel,nyc}.config.{js,cjs,mjs}',\n '**/jest.config.{js,cjs,mjs,ts}',\n '**/{karma,rollup,webpack}.config.js',\n '**/.{eslint,mocha}rc.{js,cjs}',\n '**/.{travis,yarnrc}.yml',\n '**/{docker-compose,docker}.yml',\n '**/.yamllint.{yaml,yml}',\n '**/node_modules/**',\n '**/pnpm-lock.yaml',\n '**/pnpm-workspace.yaml',\n '**/{package,package-lock}.json',\n '**/yarn.lock',\n '**/package.json5',\n '**/.next/**',\n ],\n followSymlinks: false,\n swaggerDefinition: {\n openapi: '3.0.0',\n info: {\n title: 'API',\n version: '1.0.0',\n },\n },\n};\n`,\n );\n\n // eslint-disable-next-line no-console\n console.log(`Created \"${configName}\"`);\n};\n\nexport default initCommand;\n"]}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../../chunk-
|
|
3
|
+
var chunkRVCK3H3U_js = require('../../chunk-RVCK3H3U.js');
|
|
4
|
+
require('../../chunk-PTFTJY7I.js');
|
|
5
5
|
var process = require('process');
|
|
6
6
|
|
|
7
7
|
var generateCommand = (program, commandName = "generate", configName = ".openapirc.js") => {
|
|
8
8
|
program.command(commandName).description("Generates OpenAPI (Swagger) documentation from JSDoc's").usage("[options] <path ...>").argument("[path ...]", "Paths to files or directories to parse").option("-c, --config [.openapirc.js]", "@visulima/jsdoc-open-api config file path.").option("-o, --output [swaggerSpec.json]", "Output swagger specification.").option("-v, --verbose", "Verbose output.").option("-d, --very-verbose", "Very verbose output.").action(async (paths, options) => {
|
|
9
9
|
try {
|
|
10
|
-
await
|
|
10
|
+
await chunkRVCK3H3U_js.generate_command_default(configName, paths, options);
|
|
11
11
|
} catch (error) {
|
|
12
12
|
console.error(error);
|
|
13
13
|
process.exit(1);
|
|
@@ -18,7 +18,7 @@ var generate_command_default2 = generateCommand;
|
|
|
18
18
|
var initCommand = (program, commandName = "init", description = "Inits a pre-configured @visulima/jsdoc-open-api config file.", configName = ".openapirc.js") => {
|
|
19
19
|
program.command(commandName).description(description).action(() => {
|
|
20
20
|
try {
|
|
21
|
-
|
|
21
|
+
chunkRVCK3H3U_js.init_command_default(configName);
|
|
22
22
|
} catch (error) {
|
|
23
23
|
console.error(error);
|
|
24
24
|
process.exit(1);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { generate_command_default, init_command_default } from '../../chunk-
|
|
2
|
-
import '../../chunk-
|
|
1
|
+
import { generate_command_default, init_command_default } from '../../chunk-RGP6RTJO.mjs';
|
|
2
|
+
import '../../chunk-2T6HMUIL.mjs';
|
|
3
3
|
import { exit } from 'process';
|
|
4
4
|
|
|
5
5
|
var generateCommand = (program, commandName = "generate", configName = ".openapirc.js") => {
|
package/dist/cli/index.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../chunk-
|
|
3
|
+
var chunkRVCK3H3U_js = require('../chunk-RVCK3H3U.js');
|
|
4
|
+
require('../chunk-PTFTJY7I.js');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
Object.defineProperty(exports, "generateCommand", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
10
|
+
get: function () { return chunkRVCK3H3U_js.generate_command_default; }
|
|
11
11
|
});
|
|
12
12
|
Object.defineProperty(exports, "initCommand", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
14
|
+
get: function () { return chunkRVCK3H3U_js.init_command_default; }
|
|
15
15
|
});
|
|
16
16
|
//# sourceMappingURL=index.js.map
|
|
17
17
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { generate_command_default as generateCommand, init_command_default as initCommand } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { generate_command_default as generateCommand, init_command_default as initCommand } from '../chunk-RGP6RTJO.mjs';
|
|
2
|
+
import '../chunk-2T6HMUIL.mjs';
|
|
3
3
|
//# sourceMappingURL=index.mjs.map
|
|
4
4
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkPTFTJY7I_js = require('./chunk-PTFTJY7I.js');
|
|
4
4
|
var fs = require('fs');
|
|
5
5
|
var path = require('path');
|
|
6
6
|
var process = require('process');
|
|
@@ -25,12 +25,12 @@ var SwaggerCompilerPlugin = class {
|
|
|
25
25
|
this.ignore = options.ignore ?? [];
|
|
26
26
|
}
|
|
27
27
|
apply(compiler) {
|
|
28
|
-
const skip = /* @__PURE__ */ new Set([...
|
|
28
|
+
const skip = /* @__PURE__ */ new Set([...chunkPTFTJY7I_js.DEFAULT_EXCLUDE, ...this.ignore]);
|
|
29
29
|
compiler.hooks.make.tapAsync("SwaggerCompilerPlugin", async (_, callback) => {
|
|
30
30
|
console.log("Build paused, switching to swagger build");
|
|
31
|
-
const spec = new
|
|
31
|
+
const spec = new chunkPTFTJY7I_js.spec_builder_default(this.swaggerDefinition);
|
|
32
32
|
for await (const dir of this.sources) {
|
|
33
|
-
const files = await
|
|
33
|
+
const files = await chunkPTFTJY7I_js.collect(dir, {
|
|
34
34
|
extensions: [".js", ".cjs", ".mjs", ".ts", ".tsx", ".jsx", ".yaml", ".yml"],
|
|
35
35
|
includeDirs: false,
|
|
36
36
|
skip: [...skip]
|
|
@@ -44,9 +44,9 @@ var SwaggerCompilerPlugin = class {
|
|
|
44
44
|
console.log(`Parsing file ${file}`);
|
|
45
45
|
}
|
|
46
46
|
try {
|
|
47
|
-
const parsedJsDocumentFile =
|
|
47
|
+
const parsedJsDocumentFile = chunkPTFTJY7I_js.parse_file_default(file, chunkPTFTJY7I_js.comments_to_open_api_default, this.verbose);
|
|
48
48
|
spec.addData(parsedJsDocumentFile.map((item) => item.spec));
|
|
49
|
-
const parsedSwaggerJsDocumentFile =
|
|
49
|
+
const parsedSwaggerJsDocumentFile = chunkPTFTJY7I_js.parse_file_default(file, chunkPTFTJY7I_js.comments_to_open_api_default2, this.verbose);
|
|
50
50
|
spec.addData(parsedSwaggerJsDocumentFile.map((item) => item.spec));
|
|
51
51
|
} catch (error) {
|
|
52
52
|
console.error(error);
|
|
@@ -59,7 +59,7 @@ var SwaggerCompilerPlugin = class {
|
|
|
59
59
|
console.log("Validating swagger spec");
|
|
60
60
|
console.log(JSON.stringify(spec, null, 2));
|
|
61
61
|
}
|
|
62
|
-
await
|
|
62
|
+
await chunkPTFTJY7I_js.validate_default(JSON.parse(JSON.stringify(spec)));
|
|
63
63
|
} catch (error) {
|
|
64
64
|
console.error(error.toJSON());
|
|
65
65
|
process.exit(1);
|
|
@@ -83,23 +83,23 @@ var swagger_compiler_plugin_default = SwaggerCompilerPlugin;
|
|
|
83
83
|
|
|
84
84
|
Object.defineProperty(exports, "SpecBuilder", {
|
|
85
85
|
enumerable: true,
|
|
86
|
-
get: function () { return
|
|
86
|
+
get: function () { return chunkPTFTJY7I_js.spec_builder_default; }
|
|
87
87
|
});
|
|
88
88
|
Object.defineProperty(exports, "jsDocumentCommentsToOpenApi", {
|
|
89
89
|
enumerable: true,
|
|
90
|
-
get: function () { return
|
|
90
|
+
get: function () { return chunkPTFTJY7I_js.comments_to_open_api_default; }
|
|
91
91
|
});
|
|
92
92
|
Object.defineProperty(exports, "parseFile", {
|
|
93
93
|
enumerable: true,
|
|
94
|
-
get: function () { return
|
|
94
|
+
get: function () { return chunkPTFTJY7I_js.parse_file_default; }
|
|
95
95
|
});
|
|
96
96
|
Object.defineProperty(exports, "swaggerJsDocumentCommentsToOpenApi", {
|
|
97
97
|
enumerable: true,
|
|
98
|
-
get: function () { return
|
|
98
|
+
get: function () { return chunkPTFTJY7I_js.comments_to_open_api_default2; }
|
|
99
99
|
});
|
|
100
100
|
Object.defineProperty(exports, "yamlLoc", {
|
|
101
101
|
enumerable: true,
|
|
102
|
-
get: function () { return
|
|
102
|
+
get: function () { return chunkPTFTJY7I_js.yaml_loc_default; }
|
|
103
103
|
});
|
|
104
104
|
exports.SwaggerCompilerPlugin = swagger_compiler_plugin_default;
|
|
105
105
|
//# sourceMappingURL=index.js.map
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { DEFAULT_EXCLUDE, spec_builder_default, collect, parse_file_default, comments_to_open_api_default, comments_to_open_api_default2, validate_default } from './chunk-
|
|
2
|
-
export { spec_builder_default as SpecBuilder, comments_to_open_api_default as jsDocumentCommentsToOpenApi, parse_file_default as parseFile, comments_to_open_api_default2 as swaggerJsDocumentCommentsToOpenApi, yaml_loc_default as yamlLoc } from './chunk-
|
|
1
|
+
import { DEFAULT_EXCLUDE, spec_builder_default, collect, parse_file_default, comments_to_open_api_default, comments_to_open_api_default2, validate_default } from './chunk-2T6HMUIL.mjs';
|
|
2
|
+
export { spec_builder_default as SpecBuilder, comments_to_open_api_default as jsDocumentCommentsToOpenApi, parse_file_default as parseFile, comments_to_open_api_default2 as swaggerJsDocumentCommentsToOpenApi, yaml_loc_default as yamlLoc } from './chunk-2T6HMUIL.mjs';
|
|
3
3
|
import { mkdir, writeFile } from 'fs';
|
|
4
4
|
import { dirname } from 'path';
|
|
5
5
|
import { exit } from 'process';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visulima/jsdoc-open-api",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.4",
|
|
4
4
|
"description": "Generates swagger doc based on JSDoc.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"visulima",
|
|
@@ -88,16 +88,15 @@
|
|
|
88
88
|
],
|
|
89
89
|
"dependencies": {
|
|
90
90
|
"@apidevtools/swagger-parser": "^12.1.0",
|
|
91
|
-
"comment-parser": "^1.4.
|
|
91
|
+
"comment-parser": "^1.4.3",
|
|
92
92
|
"lodash.mergewith": "^4.6.2",
|
|
93
|
-
"publint": "^0.3.15",
|
|
94
93
|
"read-pkg-up": "^7.0.1",
|
|
95
94
|
"yaml": "^2.8.2"
|
|
96
95
|
},
|
|
97
96
|
"optionalDependencies": {
|
|
98
97
|
"cli-progress": "^3.12.0",
|
|
99
98
|
"commander": "^14.0.2",
|
|
100
|
-
"webpack": "^5.
|
|
99
|
+
"webpack": "^5.104.1"
|
|
101
100
|
},
|
|
102
101
|
"engines": {
|
|
103
102
|
"node": ">=22.13 <=25.x"
|