@visulima/jsdoc-open-api 1.3.11 → 1.3.12

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 CHANGED
@@ -1,3 +1,16 @@
1
+ ## @visulima/jsdoc-open-api [1.3.12](https://github.com/visulima/visulima/compare/@visulima/jsdoc-open-api@1.3.11...@visulima/jsdoc-open-api@1.3.12) (2023-07-28)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * Update eslint rules and dependencies ([01a4bef](https://github.com/visulima/visulima/commit/01a4beff467091ac2d2fc6f342d274d282391842))
7
+
8
+
9
+
10
+ ### Dependencies
11
+
12
+ * **@visulima/readdir:** upgraded to 1.3.8
13
+
1
14
  ## @visulima/jsdoc-open-api [1.3.11](https://github.com/visulima/visulima/compare/@visulima/jsdoc-open-api@1.3.10...@visulima/jsdoc-open-api@1.3.11) (2023-07-26)
2
15
 
3
16
 
@@ -47,4 +47,4 @@ Swagger specification is ready, check the "${i}" file.`);},L=F;var _=(r,l=proces
47
47
 
48
48
  export { L as a, G as b };
49
49
  //# sourceMappingURL=out.js.map
50
- //# sourceMappingURL=chunk-NLSOZGMI.mjs.map
50
+ //# sourceMappingURL=chunk-L5IKCPR2.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli/command/generate-command.ts","../src/cli/command/init-command.ts"],"names":["collect","cliProgress","lstatSync","mkdirSync","writeFileSync","dirname","normalize","pathToFileURL","generateCommand","configName","paths","options","openapiConfig","config","multibar","spec","spec_builder_default","dir","files","bar","file","parsedJsDocumentFile","parse_file_default","comments_to_open_api_default","item","parsedSwaggerJsDocumentFile","validate_default","output","generate_command_default","existsSync","realpathSync","readPkgUp","initCommand","packageJsonPath","foundPackageJson","exportTemplate","package_","packagePath","init_command_default"],"mappings":"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","sourcesContent":["import { collect } from \"@visulima/readdir\";\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport cliProgress from \"cli-progress\";\nimport { lstatSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname, normalize } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\n\nimport type { BaseDefinition } from \"../../exported.d\";\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 // eslint-disable-next-line sonarjs/cognitive-complexity\n): Promise<void> => {\n let openapiConfig: {\n exclude: string[];\n extensions?: string[];\n followSymlinks?: boolean;\n include?: ReadonlyArray<string> | 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 cliProgress.MultiBar(\n {\n clearOnComplete: false,\n format: \"{value}/{total} | {bar} | {filename}\",\n hideCursor: true,\n },\n cliProgress.Presets.shades_grey,\n );\n const spec = new SpecBuilder(openapiConfig.swaggerDefinition);\n\n // eslint-disable-next-line no-restricted-syntax,unicorn/prevent-abbreviations\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\n lstatSync(dir).isDirectory();\n\n const files = await collect(dir, {\n extensions: openapiConfig.extensions ?? [\".js\", \".cjs\", \".mjs\", \".ts\", \".tsx\", \".jsx\", \".yaml\", \".yml\"],\n followSymlinks: openapiConfig.followSymlinks ?? false,\n match: openapiConfig.include,\n minimatchOptions: {\n match: {\n debug: options.verbose,\n matchBase: true,\n },\n skip: {\n debug: options.verbose,\n matchBase: true,\n },\n },\n skip: [...openapiConfig.exclude, \"node_modules/**\"],\n });\n\n if (options.verbose ?? options.veryVerbose) {\n console.log(`\\nFound ${files.length} files in ${dir}`);\n }\n\n if (options.veryVerbose) {\n console.log(files);\n }\n\n const bar = multibar.create(files.length, 0);\n\n files.forEach((file) => {\n if (options.verbose) {\n console.log(`Parsing file ${file}`);\n }\n\n bar.increment(1, { filename: dir });\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 console.log(\"Validating swagger spec\");\n }\n\n if (options.veryVerbose) {\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 console.log(`Written swagger spec to \"${output}\" file`);\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n mkdirSync(dirname(output), { recursive: true });\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n writeFileSync(output, JSON.stringify(spec, null, 2));\n\n console.log(`\\nSwagger specification is ready, check the \"${output}\" file.`);\n};\n\nexport default generateCommand;\n","import { existsSync, realpathSync, writeFileSync } from \"node:fs\";\nimport readPkgUp from \"read-pkg-up\";\n\nconst initCommand = (configName: string, packageJsonPath = process.cwd()): void => {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(configName)) {\n throw new Error(\"Config file already exists\");\n }\n\n const foundPackageJson = readPkgUp.sync({\n // eslint-disable-next-line security/detect-non-literal-fs-filename\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 console.info(`Found package.json at \"${packagePath}\"`);\n\n if (package_[\"type\"] === \"module\") {\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 console.info(\"No package.json found\");\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\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 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":["collect","cliProgress","lstatSync","mkdirSync","writeFileSync","dirname","normalize","pathToFileURL","generateCommand","configName","paths","options","openapiConfig","config","multibar","spec","spec_builder_default","dir","files","bar","file","parsedJsDocumentFile","parse_file_default","comments_to_open_api_default","item","parsedSwaggerJsDocumentFile","validate_default","output","generate_command_default","existsSync","realpathSync","readPkgUp","initCommand","packageJsonPath","foundPackageJson","exportTemplate","package_","packagePath","init_command_default"],"mappings":"qEAAA,OAAS,WAAAA,MAAe,oBAExB,OAAOC,MAAiB,eACxB,OAAS,aAAAC,EAAW,aAAAC,EAAW,iBAAAC,MAAqB,KACpD,OAAS,WAAAC,EAAS,aAAAC,MAAiB,OACnC,OAAS,iBAAAC,MAAqB,MAS9B,IAAMC,EAAkB,MACpBC,EACAC,EACAC,IAOgB,CAChB,IAAIC,EAMA,CACA,QAAS,CAAC,EACV,kBAAmB,CAAC,CACxB,EAEA,GAAI,CACA,IAAIC,EAAS,MAAM,OAAON,EAAcD,EAAUK,EAAQ,QAAUF,CAAU,CAAC,EAAE,MAE7EI,GAAQ,UACRA,EAASA,EAAO,SAGpBD,EAAgBC,CACpB,MAAQ,CACJ,MAAM,IAAI,MAAM,6BAA6BF,EAAQ,QAAU,eAAe;AAAA,CAAI,CACtF,CAEA,IAAMG,EAAW,IAAIb,EAAY,SAC7B,CACI,gBAAiB,GACjB,OAAQ,uCACR,WAAY,EAChB,EACAA,EAAY,QAAQ,WACxB,EACMc,EAAO,IAAIC,EAAYJ,EAAc,iBAAiB,EAG5D,cAAiBK,KAAOP,EAAO,CAG3BR,EAAUe,CAAG,EAAE,YAAY,EAE3B,IAAMC,EAAQ,MAAMlB,EAAQiB,EAAK,CAC7B,WAAYL,EAAc,YAAc,CAAC,MAAO,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,QAAS,MAAM,EACtG,eAAgBA,EAAc,gBAAkB,GAChD,MAAOA,EAAc,QACrB,iBAAkB,CACd,MAAO,CACH,MAAOD,EAAQ,QACf,UAAW,EACf,EACA,KAAM,CACF,MAAOA,EAAQ,QACf,UAAW,EACf,CACJ,EACA,KAAM,CAAC,GAAGC,EAAc,QAAS,iBAAiB,CACtD,CAAC,GAEGD,EAAQ,SAAWA,EAAQ,cAE3B,QAAQ,IAAI;AAAA,QAAWO,EAAM,MAAM,aAAaD,CAAG,EAAE,EAGrDN,EAAQ,aAER,QAAQ,IAAIO,CAAK,EAGrB,IAAMC,EAAML,EAAS,OAAOI,EAAM,OAAQ,CAAC,EAE3CA,EAAM,QAASE,GAAS,CAChBT,EAAQ,SAER,QAAQ,IAAI,gBAAgBS,CAAI,EAAE,EAGtCD,EAAI,UAAU,EAAG,CAAE,SAAUF,CAAI,CAAC,EAElC,IAAMI,EAAuBC,EAAUF,EAAMG,EAA6BZ,EAAQ,OAAO,EAEzFI,EAAK,QAAQM,EAAqB,IAAKG,GAASA,EAAK,IAAI,CAAC,EAE1D,IAAMC,EAA8BH,EAAUF,EAAMG,EAAoCZ,EAAQ,OAAO,EAEvGI,EAAK,QAAQU,EAA4B,IAAKD,GAASA,EAAK,IAAI,CAAC,CACrE,CAAC,CACL,CAEIb,EAAQ,SAER,QAAQ,IAAI,yBAAyB,EAGrCA,EAAQ,aAER,QAAQ,IAAI,KAAK,UAAUI,EAAM,KAAM,CAAC,CAAC,EAG7C,MAAMW,EAAS,KAAK,MAAM,KAAK,UAAUX,CAAI,CAAC,CAA4B,EAE1E,IAAMY,EAAShB,EAAQ,QAAU,eAEjCG,EAAS,KAAK,EAEVH,EAAQ,SAER,QAAQ,IAAI,4BAA4BgB,CAAM,QAAQ,EAI1DxB,EAAUE,EAAQsB,CAAM,EAAG,CAAE,UAAW,EAAK,CAAC,EAE9CvB,EAAcuB,EAAQ,KAAK,UAAUZ,EAAM,KAAM,CAAC,CAAC,EAGnD,QAAQ,IAAI;AAAA,6CAAgDY,CAAM,SAAS,CAC/E,EAEOC,EAAQpB,EC7If,OAAS,cAAAqB,EAAY,gBAAAC,EAAc,iBAAA1B,MAAqB,KACxD,OAAO2B,MAAe,cAEtB,IAAMC,EAAc,CAACvB,EAAoBwB,EAAkB,QAAQ,IAAI,IAAY,CAE/E,GAAIJ,EAAWpB,CAAU,EACrB,MAAM,IAAI,MAAM,4BAA4B,EAGhD,IAAMyB,EAAmBH,EAAU,KAAK,CAEpC,IAAKD,EAAaG,CAAe,CACrC,CAAC,EAEGE,EAAiB,mBAErB,GAAID,EAAkB,CAElB,GAAM,CAAE,YAAaE,EAAU,KAAMC,CAAY,EAAIH,EAGrD,QAAQ,KAAK,0BAA0BG,CAAW,GAAG,EAEjDD,EAAS,OAAY,WAErB,QAAQ,KAAK,+EAA+E,EAE5FD,EAAiB,iBAEzB,MAEI,QAAQ,KAAK,uBAAuB,EAIxC/B,EACIK,EACA,GAAG0B,CAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAmCrB,EAGA,QAAQ,IAAI,YAAY1B,CAAU,GAAG,CACzC,EAEO6B,EAAQN","sourcesContent":["import { collect } from \"@visulima/readdir\";\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport cliProgress from \"cli-progress\";\nimport { lstatSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname, normalize } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\n\nimport type { BaseDefinition } from \"../../exported.d\";\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 // eslint-disable-next-line sonarjs/cognitive-complexity\n): Promise<void> => {\n let openapiConfig: {\n exclude: string[];\n extensions?: string[];\n followSymlinks?: boolean;\n include?: ReadonlyArray<string> | 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 cliProgress.MultiBar(\n {\n clearOnComplete: false,\n format: \"{value}/{total} | {bar} | {filename}\",\n hideCursor: true,\n },\n cliProgress.Presets.shades_grey,\n );\n const spec = new SpecBuilder(openapiConfig.swaggerDefinition);\n\n // eslint-disable-next-line no-restricted-syntax,unicorn/prevent-abbreviations\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\n lstatSync(dir).isDirectory();\n\n const files = await collect(dir, {\n extensions: openapiConfig.extensions ?? [\".js\", \".cjs\", \".mjs\", \".ts\", \".tsx\", \".jsx\", \".yaml\", \".yml\"],\n followSymlinks: openapiConfig.followSymlinks ?? false,\n match: openapiConfig.include,\n minimatchOptions: {\n match: {\n debug: options.verbose,\n matchBase: true,\n },\n skip: {\n debug: options.verbose,\n matchBase: true,\n },\n },\n skip: [...openapiConfig.exclude, \"node_modules/**\"],\n });\n\n if (options.verbose ?? options.veryVerbose) {\n // eslint-disable-next-line no-console\n console.log(`\\nFound ${files.length} files in ${dir}`);\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: dir });\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 mkdirSync(dirname(output), { recursive: true });\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n writeFileSync(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\";\nimport readPkgUp from \"read-pkg-up\";\n\nconst initCommand = (configName: string, packageJsonPath = process.cwd()): void => {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(configName)) {\n throw new Error(\"Config file already exists\");\n }\n\n const foundPackageJson = readPkgUp.sync({\n // eslint-disable-next-line security/detect-non-literal-fs-filename\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}\"`);\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 // eslint-disable-next-line security/detect-non-literal-fs-filename\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"]}
@@ -55,4 +55,4 @@ Swagger specification is ready, check the "${i}" file.`);},L=F;var _=(r,l=proces
55
55
  exports.a = L;
56
56
  exports.b = G;
57
57
  //# sourceMappingURL=out.js.map
58
- //# sourceMappingURL=chunk-LJ3K3FMO.js.map
58
+ //# sourceMappingURL=chunk-WCKT775T.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli/command/generate-command.ts","../src/cli/command/init-command.ts"],"names":["collect","cliProgress","lstatSync","mkdirSync","writeFileSync","dirname","normalize","pathToFileURL","generateCommand","configName","paths","options","openapiConfig","config","multibar","spec","spec_builder_default","dir","files","bar","file","parsedJsDocumentFile","parse_file_default","comments_to_open_api_default","item","parsedSwaggerJsDocumentFile","validate_default","output","generate_command_default","existsSync","realpathSync","readPkgUp","initCommand","packageJsonPath","foundPackageJson","exportTemplate","package_","packagePath","init_command_default"],"mappings":"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","sourcesContent":["import { collect } from \"@visulima/readdir\";\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport cliProgress from \"cli-progress\";\nimport { lstatSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname, normalize } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\n\nimport type { BaseDefinition } from \"../../exported.d\";\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 // eslint-disable-next-line sonarjs/cognitive-complexity\n): Promise<void> => {\n let openapiConfig: {\n exclude: string[];\n extensions?: string[];\n followSymlinks?: boolean;\n include?: ReadonlyArray<string> | 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 cliProgress.MultiBar(\n {\n clearOnComplete: false,\n format: \"{value}/{total} | {bar} | {filename}\",\n hideCursor: true,\n },\n cliProgress.Presets.shades_grey,\n );\n const spec = new SpecBuilder(openapiConfig.swaggerDefinition);\n\n // eslint-disable-next-line no-restricted-syntax,unicorn/prevent-abbreviations\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\n lstatSync(dir).isDirectory();\n\n const files = await collect(dir, {\n extensions: openapiConfig.extensions ?? [\".js\", \".cjs\", \".mjs\", \".ts\", \".tsx\", \".jsx\", \".yaml\", \".yml\"],\n followSymlinks: openapiConfig.followSymlinks ?? false,\n match: openapiConfig.include,\n minimatchOptions: {\n match: {\n debug: options.verbose,\n matchBase: true,\n },\n skip: {\n debug: options.verbose,\n matchBase: true,\n },\n },\n skip: [...openapiConfig.exclude, \"node_modules/**\"],\n });\n\n if (options.verbose ?? options.veryVerbose) {\n console.log(`\\nFound ${files.length} files in ${dir}`);\n }\n\n if (options.veryVerbose) {\n console.log(files);\n }\n\n const bar = multibar.create(files.length, 0);\n\n files.forEach((file) => {\n if (options.verbose) {\n console.log(`Parsing file ${file}`);\n }\n\n bar.increment(1, { filename: dir });\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 console.log(\"Validating swagger spec\");\n }\n\n if (options.veryVerbose) {\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 console.log(`Written swagger spec to \"${output}\" file`);\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n mkdirSync(dirname(output), { recursive: true });\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n writeFileSync(output, JSON.stringify(spec, null, 2));\n\n console.log(`\\nSwagger specification is ready, check the \"${output}\" file.`);\n};\n\nexport default generateCommand;\n","import { existsSync, realpathSync, writeFileSync } from \"node:fs\";\nimport readPkgUp from \"read-pkg-up\";\n\nconst initCommand = (configName: string, packageJsonPath = process.cwd()): void => {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(configName)) {\n throw new Error(\"Config file already exists\");\n }\n\n const foundPackageJson = readPkgUp.sync({\n // eslint-disable-next-line security/detect-non-literal-fs-filename\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 console.info(`Found package.json at \"${packagePath}\"`);\n\n if (package_[\"type\"] === \"module\") {\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 console.info(\"No package.json found\");\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\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 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":["collect","cliProgress","lstatSync","mkdirSync","writeFileSync","dirname","normalize","pathToFileURL","generateCommand","configName","paths","options","openapiConfig","config","multibar","spec","spec_builder_default","dir","files","bar","file","parsedJsDocumentFile","parse_file_default","comments_to_open_api_default","item","parsedSwaggerJsDocumentFile","validate_default","output","generate_command_default","existsSync","realpathSync","readPkgUp","initCommand","packageJsonPath","foundPackageJson","exportTemplate","package_","packagePath","init_command_default"],"mappings":"oEAAA,OAAS,WAAAA,MAAe,oBAExB,OAAOC,MAAiB,eACxB,OAAS,aAAAC,EAAW,aAAAC,EAAW,iBAAAC,MAAqB,KACpD,OAAS,WAAAC,EAAS,aAAAC,MAAiB,OACnC,OAAS,iBAAAC,MAAqB,MAS9B,IAAMC,EAAkB,MACpBC,EACAC,EACAC,IAOgB,CAChB,IAAIC,EAMA,CACA,QAAS,CAAC,EACV,kBAAmB,CAAC,CACxB,EAEA,GAAI,CACA,IAAIC,EAAS,MAAM,OAAON,EAAcD,EAAUK,EAAQ,QAAUF,CAAU,CAAC,EAAE,MAE7EI,GAAQ,UACRA,EAASA,EAAO,SAGpBD,EAAgBC,CACpB,MAAQ,CACJ,MAAM,IAAI,MAAM,6BAA6BF,EAAQ,QAAU,eAAe;AAAA,CAAI,CACtF,CAEA,IAAMG,EAAW,IAAIb,EAAY,SAC7B,CACI,gBAAiB,GACjB,OAAQ,uCACR,WAAY,EAChB,EACAA,EAAY,QAAQ,WACxB,EACMc,EAAO,IAAIC,EAAYJ,EAAc,iBAAiB,EAG5D,cAAiBK,KAAOP,EAAO,CAG3BR,EAAUe,CAAG,EAAE,YAAY,EAE3B,IAAMC,EAAQ,MAAMlB,EAAQiB,EAAK,CAC7B,WAAYL,EAAc,YAAc,CAAC,MAAO,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,QAAS,MAAM,EACtG,eAAgBA,EAAc,gBAAkB,GAChD,MAAOA,EAAc,QACrB,iBAAkB,CACd,MAAO,CACH,MAAOD,EAAQ,QACf,UAAW,EACf,EACA,KAAM,CACF,MAAOA,EAAQ,QACf,UAAW,EACf,CACJ,EACA,KAAM,CAAC,GAAGC,EAAc,QAAS,iBAAiB,CACtD,CAAC,GAEGD,EAAQ,SAAWA,EAAQ,cAE3B,QAAQ,IAAI;AAAA,QAAWO,EAAM,MAAM,aAAaD,CAAG,EAAE,EAGrDN,EAAQ,aAER,QAAQ,IAAIO,CAAK,EAGrB,IAAMC,EAAML,EAAS,OAAOI,EAAM,OAAQ,CAAC,EAE3CA,EAAM,QAASE,GAAS,CAChBT,EAAQ,SAER,QAAQ,IAAI,gBAAgBS,CAAI,EAAE,EAGtCD,EAAI,UAAU,EAAG,CAAE,SAAUF,CAAI,CAAC,EAElC,IAAMI,EAAuBC,EAAUF,EAAMG,EAA6BZ,EAAQ,OAAO,EAEzFI,EAAK,QAAQM,EAAqB,IAAKG,GAASA,EAAK,IAAI,CAAC,EAE1D,IAAMC,EAA8BH,EAAUF,EAAMG,EAAoCZ,EAAQ,OAAO,EAEvGI,EAAK,QAAQU,EAA4B,IAAKD,GAASA,EAAK,IAAI,CAAC,CACrE,CAAC,CACL,CAEIb,EAAQ,SAER,QAAQ,IAAI,yBAAyB,EAGrCA,EAAQ,aAER,QAAQ,IAAI,KAAK,UAAUI,EAAM,KAAM,CAAC,CAAC,EAG7C,MAAMW,EAAS,KAAK,MAAM,KAAK,UAAUX,CAAI,CAAC,CAA4B,EAE1E,IAAMY,EAAShB,EAAQ,QAAU,eAEjCG,EAAS,KAAK,EAEVH,EAAQ,SAER,QAAQ,IAAI,4BAA4BgB,CAAM,QAAQ,EAI1DxB,EAAUE,EAAQsB,CAAM,EAAG,CAAE,UAAW,EAAK,CAAC,EAE9CvB,EAAcuB,EAAQ,KAAK,UAAUZ,EAAM,KAAM,CAAC,CAAC,EAGnD,QAAQ,IAAI;AAAA,6CAAgDY,CAAM,SAAS,CAC/E,EAEOC,EAAQpB,EC7If,OAAS,cAAAqB,EAAY,gBAAAC,EAAc,iBAAA1B,MAAqB,KACxD,OAAO2B,MAAe,cAEtB,IAAMC,EAAc,CAACvB,EAAoBwB,EAAkB,QAAQ,IAAI,IAAY,CAE/E,GAAIJ,EAAWpB,CAAU,EACrB,MAAM,IAAI,MAAM,4BAA4B,EAGhD,IAAMyB,EAAmBH,EAAU,KAAK,CAEpC,IAAKD,EAAaG,CAAe,CACrC,CAAC,EAEGE,EAAiB,mBAErB,GAAID,EAAkB,CAElB,GAAM,CAAE,YAAaE,EAAU,KAAMC,CAAY,EAAIH,EAGrD,QAAQ,KAAK,0BAA0BG,CAAW,GAAG,EAEjDD,EAAS,OAAY,WAErB,QAAQ,KAAK,+EAA+E,EAE5FD,EAAiB,iBAEzB,MAEI,QAAQ,KAAK,uBAAuB,EAIxC/B,EACIK,EACA,GAAG0B,CAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAmCrB,EAGA,QAAQ,IAAI,YAAY1B,CAAU,GAAG,CACzC,EAEO6B,EAAQN","sourcesContent":["import { collect } from \"@visulima/readdir\";\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport cliProgress from \"cli-progress\";\nimport { lstatSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname, normalize } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\n\nimport type { BaseDefinition } from \"../../exported.d\";\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 // eslint-disable-next-line sonarjs/cognitive-complexity\n): Promise<void> => {\n let openapiConfig: {\n exclude: string[];\n extensions?: string[];\n followSymlinks?: boolean;\n include?: ReadonlyArray<string> | 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 cliProgress.MultiBar(\n {\n clearOnComplete: false,\n format: \"{value}/{total} | {bar} | {filename}\",\n hideCursor: true,\n },\n cliProgress.Presets.shades_grey,\n );\n const spec = new SpecBuilder(openapiConfig.swaggerDefinition);\n\n // eslint-disable-next-line no-restricted-syntax,unicorn/prevent-abbreviations\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\n lstatSync(dir).isDirectory();\n\n const files = await collect(dir, {\n extensions: openapiConfig.extensions ?? [\".js\", \".cjs\", \".mjs\", \".ts\", \".tsx\", \".jsx\", \".yaml\", \".yml\"],\n followSymlinks: openapiConfig.followSymlinks ?? false,\n match: openapiConfig.include,\n minimatchOptions: {\n match: {\n debug: options.verbose,\n matchBase: true,\n },\n skip: {\n debug: options.verbose,\n matchBase: true,\n },\n },\n skip: [...openapiConfig.exclude, \"node_modules/**\"],\n });\n\n if (options.verbose ?? options.veryVerbose) {\n // eslint-disable-next-line no-console\n console.log(`\\nFound ${files.length} files in ${dir}`);\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: dir });\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 mkdirSync(dirname(output), { recursive: true });\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n writeFileSync(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\";\nimport readPkgUp from \"read-pkg-up\";\n\nconst initCommand = (configName: string, packageJsonPath = process.cwd()): void => {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n if (existsSync(configName)) {\n throw new Error(\"Config file already exists\");\n }\n\n const foundPackageJson = readPkgUp.sync({\n // eslint-disable-next-line security/detect-non-literal-fs-filename\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}\"`);\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 // eslint-disable-next-line security/detect-non-literal-fs-filename\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,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunkLJ3K3FMO_js = require('../../chunk-LJ3K3FMO.js');
3
+ var chunkWCKT775T_js = require('../../chunk-WCKT775T.js');
4
4
  require('../../chunk-D7VYGB4A.js');
5
5
  var process = require('process');
6
6
 
7
- var s=(o,e="generate",t=".openapirc.js")=>{o.command(e).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("-vv, --very-verbose","Very verbose output.").action(async(r,a)=>{try{await chunkLJ3K3FMO_js.a(t,r,a);}catch(m){console.error(m),process.exit(1);}});},c=s;var f=(o,e="init",t="Inits a pre-configured @visulima/jsdoc-open-api config file.",r=".openapirc.js")=>{o.command(e).description(t).action(()=>{try{chunkLJ3K3FMO_js.b(r);}catch(a){console.error(a),process.exit(1);}});},u=f;
7
+ var s=(o,e="generate",t=".openapirc.js")=>{o.command(e).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("-vv, --very-verbose","Very verbose output.").action(async(r,a)=>{try{await chunkWCKT775T_js.a(t,r,a);}catch(m){console.error(m),process.exit(1);}});},c=s;var f=(o,e="init",t="Inits a pre-configured @visulima/jsdoc-open-api config file.",r=".openapirc.js")=>{o.command(e).description(t).action(()=>{try{chunkWCKT775T_js.b(r);}catch(a){console.error(a),process.exit(1);}});},u=f;
8
8
 
9
9
  exports.generateCommand = c;
10
10
  exports.initCommand = u;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commander/command/generate-command.ts","../../../src/cli/commander/command/init-command.ts"],"names":["exit","generateCommand","program","commandName","configName","paths","options","generate_command_default","error","initCommand","description","init_command_default"],"mappings":"mFACA,OAAS,QAAAA,MAAY,UAIrB,IAAMC,EAAkB,CAACC,EAAkBC,EAAc,WAAYC,EAAa,kBAA0B,CACxGF,EACK,QAAQC,CAAW,EACnB,YAAY,wDAAwD,EACpE,MAAM,sBAAsB,EAC5B,SAAS,aAAc,wCAAwC,EAC/D,OAAO,+BAAgC,4CAA4C,EACnF,OAAO,kCAAmC,+BAA+B,EACzE,OAAO,gBAAiB,iBAAiB,EACzC,OAAO,sBAAuB,sBAAsB,EAEpD,OAAO,MAAOE,EAAOC,IAAY,CAC9B,GAAI,CACA,MAAMC,EAAoBH,EAAYC,EAAOC,CAAO,CACxD,OAASE,EAAO,CACZ,QAAQ,MAAMA,CAAK,EACnBR,EAAK,CAAC,CACV,CACJ,CAAC,CACT,EAEOO,EAAQN,ECzBf,OAAS,QAAAD,MAAY,UAIrB,IAAMS,EAAc,CAChBP,EACAC,EAAc,OACdO,EAAc,+DACdN,EAAa,kBACN,CACPF,EACK,QAAQC,CAAW,EACnB,YAAYO,CAAW,EACvB,OAAO,IAAM,CACV,GAAI,CACAC,EAAgBP,CAAU,CAC9B,OAASI,EAAO,CACZ,QAAQ,MAAMA,CAAK,EACnBR,EAAK,CAAC,CACV,CACJ,CAAC,CACT,EAEOW,EAAQF","sourcesContent":["import type { Command } from \"commander\";\nimport { exit } from \"node:process\";\n\nimport baseGenerateCommand from \"../../command/generate-command\";\n\nconst generateCommand = (program: Command, commandName = \"generate\", configName = \".openapirc.js\"): void => {\n program\n .command(commandName)\n .description(\"Generates OpenAPI (Swagger) documentation from JSDoc's\")\n .usage(\"[options] <path ...>\")\n .argument(\"[path ...]\", \"Paths to files or directories to parse\")\n .option(\"-c, --config [.openapirc.js]\", \"@visulima/jsdoc-open-api config file path.\")\n .option(\"-o, --output [swaggerSpec.json]\", \"Output swagger specification.\")\n .option(\"-v, --verbose\", \"Verbose output.\")\n .option(\"-vv, --very-verbose\", \"Very verbose output.\")\n\n .action(async (paths, options) => {\n try {\n await baseGenerateCommand(configName, paths, options);\n } catch (error) {\n console.error(error);\n exit(1);\n }\n });\n};\n\nexport default generateCommand;\n","import type { Command } from \"commander\";\nimport { exit } from \"node:process\";\n\nimport baseInitCommand from \"../../command/init-command\";\n\nconst initCommand = (\n program: Command,\n commandName = \"init\",\n description = \"Inits a pre-configured @visulima/jsdoc-open-api config file.\",\n configName = \".openapirc.js\",\n): void => {\n program\n .command(commandName)\n .description(description)\n .action(() => {\n try {\n baseInitCommand(configName);\n } catch (error) {\n console.error(error);\n exit(1);\n }\n });\n};\n\nexport default initCommand;\n"]}
1
+ {"version":3,"sources":["../../../src/cli/commander/command/generate-command.ts","../../../src/cli/commander/command/init-command.ts"],"names":["exit","generateCommand","program","commandName","configName","paths","options","generate_command_default","error","initCommand","description","init_command_default"],"mappings":"mFACA,OAAS,QAAAA,MAAY,UAIrB,IAAMC,EAAkB,CAACC,EAAkBC,EAAc,WAAYC,EAAa,kBAA0B,CACxGF,EACK,QAAQC,CAAW,EACnB,YAAY,wDAAwD,EACpE,MAAM,sBAAsB,EAC5B,SAAS,aAAc,wCAAwC,EAC/D,OAAO,+BAAgC,4CAA4C,EACnF,OAAO,kCAAmC,+BAA+B,EACzE,OAAO,gBAAiB,iBAAiB,EACzC,OAAO,sBAAuB,sBAAsB,EAEpD,OAAO,MAAOE,EAAOC,IAAY,CAC9B,GAAI,CACA,MAAMC,EAAoBH,EAAYC,EAAOC,CAAO,CACxD,OAASE,EAAO,CAEZ,QAAQ,MAAMA,CAAK,EAEnBR,EAAK,CAAC,CACV,CACJ,CAAC,CACT,EAEOO,EAAQN,EC3Bf,OAAS,QAAAD,MAAY,UAIrB,IAAMS,EAAc,CAChBP,EACAC,EAAc,OACdO,EAAc,+DACdN,EAAa,kBACN,CACPF,EACK,QAAQC,CAAW,EACnB,YAAYO,CAAW,EACvB,OAAO,IAAM,CACV,GAAI,CACAC,EAAgBP,CAAU,CAC9B,OAASI,EAAO,CAEZ,QAAQ,MAAMA,CAAK,EAEnBR,EAAK,CAAC,CACV,CACJ,CAAC,CACT,EAEOW,EAAQF","sourcesContent":["import type { Command } from \"commander\";\nimport { exit } from \"node:process\";\n\nimport baseGenerateCommand from \"../../command/generate-command\";\n\nconst generateCommand = (program: Command, commandName = \"generate\", configName = \".openapirc.js\"): void => {\n program\n .command(commandName)\n .description(\"Generates OpenAPI (Swagger) documentation from JSDoc's\")\n .usage(\"[options] <path ...>\")\n .argument(\"[path ...]\", \"Paths to files or directories to parse\")\n .option(\"-c, --config [.openapirc.js]\", \"@visulima/jsdoc-open-api config file path.\")\n .option(\"-o, --output [swaggerSpec.json]\", \"Output swagger specification.\")\n .option(\"-v, --verbose\", \"Verbose output.\")\n .option(\"-vv, --very-verbose\", \"Very verbose output.\")\n\n .action(async (paths, options) => {\n try {\n await baseGenerateCommand(configName, paths, options);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n\n exit(1);\n }\n });\n};\n\nexport default generateCommand;\n","import type { Command } from \"commander\";\nimport { exit } from \"node:process\";\n\nimport baseInitCommand from \"../../command/init-command\";\n\nconst initCommand = (\n program: Command,\n commandName = \"init\",\n description = \"Inits a pre-configured @visulima/jsdoc-open-api config file.\",\n configName = \".openapirc.js\",\n): void => {\n program\n .command(commandName)\n .description(description)\n .action(() => {\n try {\n baseInitCommand(configName);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n\n exit(1);\n }\n });\n};\n\nexport default initCommand;\n"]}
@@ -1,4 +1,4 @@
1
- import { a, b } from '../../chunk-NLSOZGMI.mjs';
1
+ import { a, b } from '../../chunk-L5IKCPR2.mjs';
2
2
  import '../../chunk-WHYPHVY6.mjs';
3
3
  import { exit } from 'process';
4
4
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commander/command/generate-command.ts","../../../src/cli/commander/command/init-command.ts"],"names":["exit","generateCommand","program","commandName","configName","paths","options","generate_command_default","error","initCommand","description","init_command_default"],"mappings":"qFACA,OAAS,QAAAA,MAAY,UAIrB,IAAMC,EAAkB,CAACC,EAAkBC,EAAc,WAAYC,EAAa,kBAA0B,CACxGF,EACK,QAAQC,CAAW,EACnB,YAAY,wDAAwD,EACpE,MAAM,sBAAsB,EAC5B,SAAS,aAAc,wCAAwC,EAC/D,OAAO,+BAAgC,4CAA4C,EACnF,OAAO,kCAAmC,+BAA+B,EACzE,OAAO,gBAAiB,iBAAiB,EACzC,OAAO,sBAAuB,sBAAsB,EAEpD,OAAO,MAAOE,EAAOC,IAAY,CAC9B,GAAI,CACA,MAAMC,EAAoBH,EAAYC,EAAOC,CAAO,CACxD,OAASE,EAAO,CACZ,QAAQ,MAAMA,CAAK,EACnBR,EAAK,CAAC,CACV,CACJ,CAAC,CACT,EAEOO,EAAQN,ECzBf,OAAS,QAAAD,MAAY,UAIrB,IAAMS,EAAc,CAChBP,EACAC,EAAc,OACdO,EAAc,+DACdN,EAAa,kBACN,CACPF,EACK,QAAQC,CAAW,EACnB,YAAYO,CAAW,EACvB,OAAO,IAAM,CACV,GAAI,CACAC,EAAgBP,CAAU,CAC9B,OAASI,EAAO,CACZ,QAAQ,MAAMA,CAAK,EACnBR,EAAK,CAAC,CACV,CACJ,CAAC,CACT,EAEOW,EAAQF","sourcesContent":["import type { Command } from \"commander\";\nimport { exit } from \"node:process\";\n\nimport baseGenerateCommand from \"../../command/generate-command\";\n\nconst generateCommand = (program: Command, commandName = \"generate\", configName = \".openapirc.js\"): void => {\n program\n .command(commandName)\n .description(\"Generates OpenAPI (Swagger) documentation from JSDoc's\")\n .usage(\"[options] <path ...>\")\n .argument(\"[path ...]\", \"Paths to files or directories to parse\")\n .option(\"-c, --config [.openapirc.js]\", \"@visulima/jsdoc-open-api config file path.\")\n .option(\"-o, --output [swaggerSpec.json]\", \"Output swagger specification.\")\n .option(\"-v, --verbose\", \"Verbose output.\")\n .option(\"-vv, --very-verbose\", \"Very verbose output.\")\n\n .action(async (paths, options) => {\n try {\n await baseGenerateCommand(configName, paths, options);\n } catch (error) {\n console.error(error);\n exit(1);\n }\n });\n};\n\nexport default generateCommand;\n","import type { Command } from \"commander\";\nimport { exit } from \"node:process\";\n\nimport baseInitCommand from \"../../command/init-command\";\n\nconst initCommand = (\n program: Command,\n commandName = \"init\",\n description = \"Inits a pre-configured @visulima/jsdoc-open-api config file.\",\n configName = \".openapirc.js\",\n): void => {\n program\n .command(commandName)\n .description(description)\n .action(() => {\n try {\n baseInitCommand(configName);\n } catch (error) {\n console.error(error);\n exit(1);\n }\n });\n};\n\nexport default initCommand;\n"]}
1
+ {"version":3,"sources":["../../../src/cli/commander/command/generate-command.ts","../../../src/cli/commander/command/init-command.ts"],"names":["exit","generateCommand","program","commandName","configName","paths","options","generate_command_default","error","initCommand","description","init_command_default"],"mappings":"qFACA,OAAS,QAAAA,MAAY,UAIrB,IAAMC,EAAkB,CAACC,EAAkBC,EAAc,WAAYC,EAAa,kBAA0B,CACxGF,EACK,QAAQC,CAAW,EACnB,YAAY,wDAAwD,EACpE,MAAM,sBAAsB,EAC5B,SAAS,aAAc,wCAAwC,EAC/D,OAAO,+BAAgC,4CAA4C,EACnF,OAAO,kCAAmC,+BAA+B,EACzE,OAAO,gBAAiB,iBAAiB,EACzC,OAAO,sBAAuB,sBAAsB,EAEpD,OAAO,MAAOE,EAAOC,IAAY,CAC9B,GAAI,CACA,MAAMC,EAAoBH,EAAYC,EAAOC,CAAO,CACxD,OAASE,EAAO,CAEZ,QAAQ,MAAMA,CAAK,EAEnBR,EAAK,CAAC,CACV,CACJ,CAAC,CACT,EAEOO,EAAQN,EC3Bf,OAAS,QAAAD,MAAY,UAIrB,IAAMS,EAAc,CAChBP,EACAC,EAAc,OACdO,EAAc,+DACdN,EAAa,kBACN,CACPF,EACK,QAAQC,CAAW,EACnB,YAAYO,CAAW,EACvB,OAAO,IAAM,CACV,GAAI,CACAC,EAAgBP,CAAU,CAC9B,OAASI,EAAO,CAEZ,QAAQ,MAAMA,CAAK,EAEnBR,EAAK,CAAC,CACV,CACJ,CAAC,CACT,EAEOW,EAAQF","sourcesContent":["import type { Command } from \"commander\";\nimport { exit } from \"node:process\";\n\nimport baseGenerateCommand from \"../../command/generate-command\";\n\nconst generateCommand = (program: Command, commandName = \"generate\", configName = \".openapirc.js\"): void => {\n program\n .command(commandName)\n .description(\"Generates OpenAPI (Swagger) documentation from JSDoc's\")\n .usage(\"[options] <path ...>\")\n .argument(\"[path ...]\", \"Paths to files or directories to parse\")\n .option(\"-c, --config [.openapirc.js]\", \"@visulima/jsdoc-open-api config file path.\")\n .option(\"-o, --output [swaggerSpec.json]\", \"Output swagger specification.\")\n .option(\"-v, --verbose\", \"Verbose output.\")\n .option(\"-vv, --very-verbose\", \"Very verbose output.\")\n\n .action(async (paths, options) => {\n try {\n await baseGenerateCommand(configName, paths, options);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n\n exit(1);\n }\n });\n};\n\nexport default generateCommand;\n","import type { Command } from \"commander\";\nimport { exit } from \"node:process\";\n\nimport baseInitCommand from \"../../command/init-command\";\n\nconst initCommand = (\n program: Command,\n commandName = \"init\",\n description = \"Inits a pre-configured @visulima/jsdoc-open-api config file.\",\n configName = \".openapirc.js\",\n): void => {\n program\n .command(commandName)\n .description(description)\n .action(() => {\n try {\n baseInitCommand(configName);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n\n exit(1);\n }\n });\n};\n\nexport default initCommand;\n"]}
package/dist/cli/index.js CHANGED
@@ -1,17 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var chunkLJ3K3FMO_js = require('../chunk-LJ3K3FMO.js');
3
+ var chunkWCKT775T_js = require('../chunk-WCKT775T.js');
4
4
  require('../chunk-D7VYGB4A.js');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, 'generateCommand', {
9
9
  enumerable: true,
10
- get: function () { return chunkLJ3K3FMO_js.a; }
10
+ get: function () { return chunkWCKT775T_js.a; }
11
11
  });
12
12
  Object.defineProperty(exports, 'initCommand', {
13
13
  enumerable: true,
14
- get: function () { return chunkLJ3K3FMO_js.b; }
14
+ get: function () { return chunkWCKT775T_js.b; }
15
15
  });
16
16
  //# sourceMappingURL=out.js.map
17
17
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- export { a as generateCommand, b as initCommand } from '../chunk-NLSOZGMI.mjs';
1
+ export { a as generateCommand, b as initCommand } from '../chunk-L5IKCPR2.mjs';
2
2
  import '../chunk-WHYPHVY6.mjs';
3
3
  //# sourceMappingURL=out.js.map
4
4
  //# sourceMappingURL=index.mjs.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/webpack/swagger-compiler-plugin.ts"],"names":["collect","mkdir","writeFile","dirname","exit","exclude","errorHandler","error","SwaggerCompilerPlugin","assetsPath","sources","swaggerDefinition","options","compiler","_","callback","spec","spec_builder_default","dir","files","file","parsedJsDocumentFile","parse_file_default","comments_to_open_api_default","item","parsedSwaggerJsDocumentFile","validate_default","swagger_compiler_plugin_default"],"mappings":"2EAAA,OAAS,WAAAA,MAAe,oBACxB,OAAS,SAAAC,EAAO,aAAAC,MAAiB,KACjC,OAAS,WAAAC,MAAe,OACxB,OAAS,QAAAC,MAAY,UAWrB,IAAMC,EAAU,CACZ,cACA,aACA,yBACA,YACA,cACA,6CACA,iDACA,kBACA,yCACA,iCACA,sCACA,gCACA,0BACA,iCACA,0BACA,qBACA,oBACA,yBACA,iCACA,eACA,mBACA,aACJ,EAEMC,EAAgBC,GAAe,CAC7BA,IACA,QAAQ,MAAMA,CAAK,EACnBH,EAAK,CAAC,EAEd,EAEMI,EAAN,KAA4B,CAWjB,YACHC,EACAC,EACAC,EACAC,EAIF,CACE,KAAK,WAAaH,EAClB,KAAK,kBAAoBE,EACzB,KAAK,QAAUD,EACf,KAAK,QAAUE,EAAQ,SAAW,GAClC,KAAK,OAASA,EAAQ,QAAU,CAAC,CACrC,CAEO,MAAMC,EAA0B,CAEnCA,EAAS,MAAM,KAAK,SAAS,wBAAyB,MAAOC,EAAGC,IAA0C,CACtG,QAAQ,IAAI,0CAA0C,EAEtD,IAAMC,EAAO,IAAIC,EAAY,KAAK,iBAAiB,EAGnD,cAAiBC,KAAO,KAAK,QAAS,CAClC,IAAMC,EAAQ,MAAMnB,EAAQkB,EAAK,CAC7B,WAAY,CAAC,MAAO,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,QAAS,MAAM,EAC1E,YAAa,GACb,iBAAkB,CACd,MAAO,CACH,MAAO,KAAK,QACZ,UAAW,EACf,EACA,KAAM,CACF,MAAO,KAAK,QACZ,UAAW,EACf,CACJ,EACA,KAAM,CAAC,GAAG,KAAK,OAAQ,GAAGb,CAAO,CACrC,CAAC,EAEG,KAAK,UACL,QAAQ,IAAI,SAASc,EAAM,MAAM,aAAaD,CAAG,EAAE,EAEnD,QAAQ,IAAIC,CAAK,GAGrBA,EAAM,QAASC,GAAS,CAChB,KAAK,SACL,QAAQ,IAAI,gBAAgBA,CAAI,EAAE,EAGtC,GAAI,CACA,IAAMC,EAAuBC,EAAUF,EAAMG,EAA6B,KAAK,OAAO,EAEtFP,EAAK,QAAQK,EAAqB,IAAKG,GAASA,EAAK,IAAI,CAAC,EAE1D,IAAMC,EAA8BH,EAAUF,EAAMG,EAAoC,KAAK,OAAO,EAEpGP,EAAK,QAAQS,EAA4B,IAAKD,GAASA,EAAK,IAAI,CAAC,CACrE,OAASjB,EAAO,CACZ,QAAQ,MAAMA,CAAK,EACnBH,EAAK,CAAC,CACV,CACJ,CAAC,CACL,CAEA,GAAI,CACI,KAAK,UACL,QAAQ,IAAI,yBAAyB,EAErC,QAAQ,IAAI,KAAK,UAAUY,EAAM,KAAM,CAAC,CAAC,GAG7C,MAAMU,EAAS,KAAK,MAAM,KAAK,UAAUV,CAAI,CAAC,CAAC,CACnD,OAAST,EAAY,CACjB,QAAQ,MAAMA,EAAM,OAAO,CAAC,EAC5BH,EAAK,CAAC,CACV,CAEA,GAAM,CAAE,WAAAK,CAAW,EAAI,KAGvBR,EAAME,EAAQM,CAAU,EAAG,CAAE,UAAW,EAAK,EAAIF,GAAU,CACnDA,GACAD,EAAaC,CAAK,EAItBL,EAAUO,EAAY,KAAK,UAAUO,EAAM,KAAM,CAAC,EAAGV,CAAY,CACrE,CAAC,EAEG,KAAK,SACL,QAAQ,IAAI,4BAA4B,KAAK,UAAU,QAAQ,EAGnE,QAAQ,IAAI,gCAAgC,EAE5CS,EAAS,CACb,CAAC,CACL,CACJ,EAEOY,EAAQnB","sourcesContent":["import { collect } from \"@visulima/readdir\";\nimport { mkdir, writeFile } from \"node:fs\";\nimport { dirname } from \"node:path\";\nimport { exit } from \"node:process\";\n\nimport type { Compiler } from \"webpack\";\n\nimport type { BaseDefinition } from \"../exported.d\";\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 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\nconst errorHandler = (error: any) => {\n if (error) {\n console.error(error);\n exit(1);\n }\n};\n\nclass SwaggerCompilerPlugin {\n private readonly assetsPath: string;\n\n private readonly ignore: ReadonlyArray<string> | string;\n\n private readonly sources: string[];\n\n private readonly swaggerDefinition: BaseDefinition;\n\n private readonly verbose: boolean;\n\n public constructor(\n assetsPath: string,\n sources: string[],\n swaggerDefinition: BaseDefinition,\n options: {\n ignore?: ReadonlyArray<string> | string;\n verbose?: boolean;\n },\n ) {\n this.assetsPath = assetsPath;\n this.swaggerDefinition = swaggerDefinition;\n this.sources = sources;\n this.verbose = options.verbose ?? false;\n this.ignore = options.ignore ?? [];\n }\n\n public apply(compiler: Compiler): void {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n compiler.hooks.make.tapAsync(\"SwaggerCompilerPlugin\", async (_, callback: VoidFunction): Promise<void> => {\n console.log(\"Build paused, switching to swagger build\");\n\n const spec = new SpecBuilder(this.swaggerDefinition);\n\n // eslint-disable-next-line no-restricted-syntax,unicorn/prevent-abbreviations\n for await (const dir of this.sources) {\n const files = await collect(dir, {\n extensions: [\".js\", \".cjs\", \".mjs\", \".ts\", \".tsx\", \".jsx\", \".yaml\", \".yml\"],\n includeDirs: false,\n minimatchOptions: {\n match: {\n debug: this.verbose,\n matchBase: true,\n },\n skip: {\n debug: this.verbose,\n matchBase: true,\n },\n },\n skip: [...this.ignore, ...exclude],\n });\n\n if (this.verbose) {\n console.log(`Found ${files.length} files in ${dir}`);\n\n console.log(files);\n }\n\n files.forEach((file) => {\n if (this.verbose) {\n console.log(`Parsing file ${file}`);\n }\n\n try {\n const parsedJsDocumentFile = parseFile(file, jsDocumentCommentsToOpenApi, this.verbose);\n\n spec.addData(parsedJsDocumentFile.map((item) => item.spec));\n\n const parsedSwaggerJsDocumentFile = parseFile(file, swaggerJsDocumentCommentsToOpenApi, this.verbose);\n\n spec.addData(parsedSwaggerJsDocumentFile.map((item) => item.spec));\n } catch (error) {\n console.error(error);\n exit(1);\n }\n });\n }\n\n try {\n if (this.verbose) {\n console.log(\"Validating swagger spec\");\n\n console.log(JSON.stringify(spec, null, 2));\n }\n\n await validate(JSON.parse(JSON.stringify(spec)));\n } catch (error: any) {\n console.error(error.toJSON());\n exit(1);\n }\n\n const { assetsPath } = this;\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n mkdir(dirname(assetsPath), { recursive: true }, (error) => {\n if (error) {\n errorHandler(error);\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n writeFile(assetsPath, JSON.stringify(spec, null, 2), errorHandler);\n });\n\n if (this.verbose) {\n console.log(`Written swagger spec to \"${this.assetsPath}\" file`);\n }\n\n console.log(\"switching back to normal build\");\n\n callback();\n });\n }\n}\n\nexport default SwaggerCompilerPlugin;\n"]}
1
+ {"version":3,"sources":["../src/webpack/swagger-compiler-plugin.ts"],"names":["collect","mkdir","writeFile","dirname","exit","exclude","errorHandler","error","SwaggerCompilerPlugin","assetsPath","sources","swaggerDefinition","options","compiler","_","callback","spec","spec_builder_default","dir","files","file","parsedJsDocumentFile","parse_file_default","comments_to_open_api_default","item","parsedSwaggerJsDocumentFile","validate_default","swagger_compiler_plugin_default"],"mappings":"2EAAA,OAAS,WAAAA,MAAe,oBACxB,OAAS,SAAAC,EAAO,aAAAC,MAAiB,KACjC,OAAS,WAAAC,MAAe,OACxB,OAAS,QAAAC,MAAY,UAWrB,IAAMC,EAAU,CACZ,cACA,aACA,yBACA,YACA,cACA,6CACA,iDACA,kBACA,yCACA,iCACA,sCACA,gCACA,0BACA,iCACA,0BACA,qBACA,oBACA,yBACA,iCACA,eACA,mBACA,aACJ,EAEMC,EAAgBC,GAAe,CAC7BA,IAEA,QAAQ,MAAMA,CAAK,EAEnBH,EAAK,CAAC,EAEd,EAEMI,EAAN,KAA4B,CAWjB,YACHC,EACAC,EACAC,EACAC,EAIF,CACE,KAAK,WAAaH,EAClB,KAAK,kBAAoBE,EACzB,KAAK,QAAUD,EACf,KAAK,QAAUE,EAAQ,SAAW,GAClC,KAAK,OAASA,EAAQ,QAAU,CAAC,CACrC,CAEO,MAAMC,EAA0B,CAEnCA,EAAS,MAAM,KAAK,SAAS,wBAAyB,MAAOC,EAAGC,IAA0C,CAEtG,QAAQ,IAAI,0CAA0C,EAEtD,IAAMC,EAAO,IAAIC,EAAY,KAAK,iBAAiB,EAGnD,cAAiBC,KAAO,KAAK,QAAS,CAClC,IAAMC,EAAQ,MAAMnB,EAAQkB,EAAK,CAC7B,WAAY,CAAC,MAAO,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,QAAS,MAAM,EAC1E,YAAa,GACb,iBAAkB,CACd,MAAO,CACH,MAAO,KAAK,QACZ,UAAW,EACf,EACA,KAAM,CACF,MAAO,KAAK,QACZ,UAAW,EACf,CACJ,EACA,KAAM,CAAC,GAAG,KAAK,OAAQ,GAAGb,CAAO,CACrC,CAAC,EAEG,KAAK,UAEL,QAAQ,IAAI,SAASc,EAAM,MAAM,aAAaD,CAAG,EAAE,EAEnD,QAAQ,IAAIC,CAAK,GAGrBA,EAAM,QAASC,GAAS,CAChB,KAAK,SAEL,QAAQ,IAAI,gBAAgBA,CAAI,EAAE,EAGtC,GAAI,CACA,IAAMC,EAAuBC,EAAUF,EAAMG,EAA6B,KAAK,OAAO,EAEtFP,EAAK,QAAQK,EAAqB,IAAKG,GAASA,EAAK,IAAI,CAAC,EAE1D,IAAMC,EAA8BH,EAAUF,EAAMG,EAAoC,KAAK,OAAO,EAEpGP,EAAK,QAAQS,EAA4B,IAAKD,GAASA,EAAK,IAAI,CAAC,CACrE,OAASjB,EAAO,CAEZ,QAAQ,MAAMA,CAAK,EAEnBH,EAAK,CAAC,CACV,CACJ,CAAC,CACL,CAEA,GAAI,CACI,KAAK,UAEL,QAAQ,IAAI,yBAAyB,EAErC,QAAQ,IAAI,KAAK,UAAUY,EAAM,KAAM,CAAC,CAAC,GAG7C,MAAMU,EAAS,KAAK,MAAM,KAAK,UAAUV,CAAI,CAAC,CAAC,CACnD,OAAST,EAAY,CAEjB,QAAQ,MAAMA,EAAM,OAAO,CAAC,EAE5BH,EAAK,CAAC,CACV,CAEA,GAAM,CAAE,WAAAK,CAAW,EAAI,KAGvBR,EAAME,EAAQM,CAAU,EAAG,CAAE,UAAW,EAAK,EAAIF,GAAU,CACnDA,GACAD,EAAaC,CAAK,EAItBL,EAAUO,EAAY,KAAK,UAAUO,EAAM,KAAM,CAAC,EAAGV,CAAY,CACrE,CAAC,EAEG,KAAK,SAEL,QAAQ,IAAI,4BAA4B,KAAK,UAAU,QAAQ,EAInE,QAAQ,IAAI,gCAAgC,EAE5CS,EAAS,CACb,CAAC,CACL,CACJ,EAEOY,EAAQnB","sourcesContent":["import { collect } from \"@visulima/readdir\";\nimport { mkdir, writeFile } from \"node:fs\";\nimport { dirname } from \"node:path\";\nimport { exit } from \"node:process\";\n\nimport type { Compiler } from \"webpack\";\n\nimport type { BaseDefinition } from \"../exported.d\";\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 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\nconst errorHandler = (error: any) => {\n if (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n\n exit(1);\n }\n};\n\nclass SwaggerCompilerPlugin {\n private readonly assetsPath: string;\n\n private readonly ignore: ReadonlyArray<string> | string;\n\n private readonly sources: string[];\n\n private readonly swaggerDefinition: BaseDefinition;\n\n private readonly verbose: boolean;\n\n public constructor(\n assetsPath: string,\n sources: string[],\n swaggerDefinition: BaseDefinition,\n options: {\n ignore?: ReadonlyArray<string> | string;\n verbose?: boolean;\n },\n ) {\n this.assetsPath = assetsPath;\n this.swaggerDefinition = swaggerDefinition;\n this.sources = sources;\n this.verbose = options.verbose ?? false;\n this.ignore = options.ignore ?? [];\n }\n\n public apply(compiler: Compiler): void {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n compiler.hooks.make.tapAsync(\"SwaggerCompilerPlugin\", async (_, callback: VoidFunction): Promise<void> => {\n // eslint-disable-next-line no-console\n console.log(\"Build paused, switching to swagger build\");\n\n const spec = new SpecBuilder(this.swaggerDefinition);\n\n // eslint-disable-next-line no-restricted-syntax,unicorn/prevent-abbreviations\n for await (const dir of this.sources) {\n const files = await collect(dir, {\n extensions: [\".js\", \".cjs\", \".mjs\", \".ts\", \".tsx\", \".jsx\", \".yaml\", \".yml\"],\n includeDirs: false,\n minimatchOptions: {\n match: {\n debug: this.verbose,\n matchBase: true,\n },\n skip: {\n debug: this.verbose,\n matchBase: true,\n },\n },\n skip: [...this.ignore, ...exclude],\n });\n\n if (this.verbose) {\n // eslint-disable-next-line no-console\n console.log(`Found ${files.length} files in ${dir}`);\n // eslint-disable-next-line no-console\n console.log(files);\n }\n\n files.forEach((file) => {\n if (this.verbose) {\n // eslint-disable-next-line no-console\n console.log(`Parsing file ${file}`);\n }\n\n try {\n const parsedJsDocumentFile = parseFile(file, jsDocumentCommentsToOpenApi, this.verbose);\n\n spec.addData(parsedJsDocumentFile.map((item) => item.spec));\n\n const parsedSwaggerJsDocumentFile = parseFile(file, swaggerJsDocumentCommentsToOpenApi, this.verbose);\n\n spec.addData(parsedSwaggerJsDocumentFile.map((item) => item.spec));\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n\n exit(1);\n }\n });\n }\n\n try {\n if (this.verbose) {\n // eslint-disable-next-line no-console\n console.log(\"Validating swagger spec\");\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)));\n } catch (error: any) {\n // eslint-disable-next-line no-console\n console.error(error.toJSON());\n\n exit(1);\n }\n\n const { assetsPath } = this;\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n mkdir(dirname(assetsPath), { recursive: true }, (error) => {\n if (error) {\n errorHandler(error);\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n writeFile(assetsPath, JSON.stringify(spec, null, 2), errorHandler);\n });\n\n if (this.verbose) {\n // eslint-disable-next-line no-console\n console.log(`Written swagger spec to \"${this.assetsPath}\" file`);\n }\n\n // eslint-disable-next-line no-console\n console.log(\"switching back to normal build\");\n\n callback();\n });\n }\n}\n\nexport default SwaggerCompilerPlugin;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/webpack/swagger-compiler-plugin.ts"],"names":["collect","mkdir","writeFile","dirname","exit","exclude","errorHandler","error","SwaggerCompilerPlugin","assetsPath","sources","swaggerDefinition","options","compiler","_","callback","spec","spec_builder_default","dir","files","file","parsedJsDocumentFile","parse_file_default","comments_to_open_api_default","item","parsedSwaggerJsDocumentFile","validate_default","swagger_compiler_plugin_default"],"mappings":"4EAAA,OAAS,WAAAA,MAAe,oBACxB,OAAS,SAAAC,EAAO,aAAAC,MAAiB,KACjC,OAAS,WAAAC,MAAe,OACxB,OAAS,QAAAC,MAAY,UAWrB,IAAMC,EAAU,CACZ,cACA,aACA,yBACA,YACA,cACA,6CACA,iDACA,kBACA,yCACA,iCACA,sCACA,gCACA,0BACA,iCACA,0BACA,qBACA,oBACA,yBACA,iCACA,eACA,mBACA,aACJ,EAEMC,EAAgBC,GAAe,CAC7BA,IACA,QAAQ,MAAMA,CAAK,EACnBH,EAAK,CAAC,EAEd,EAEMI,EAAN,KAA4B,CAWjB,YACHC,EACAC,EACAC,EACAC,EAIF,CACE,KAAK,WAAaH,EAClB,KAAK,kBAAoBE,EACzB,KAAK,QAAUD,EACf,KAAK,QAAUE,EAAQ,SAAW,GAClC,KAAK,OAASA,EAAQ,QAAU,CAAC,CACrC,CAEO,MAAMC,EAA0B,CAEnCA,EAAS,MAAM,KAAK,SAAS,wBAAyB,MAAOC,EAAGC,IAA0C,CACtG,QAAQ,IAAI,0CAA0C,EAEtD,IAAMC,EAAO,IAAIC,EAAY,KAAK,iBAAiB,EAGnD,cAAiBC,KAAO,KAAK,QAAS,CAClC,IAAMC,EAAQ,MAAMnB,EAAQkB,EAAK,CAC7B,WAAY,CAAC,MAAO,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,QAAS,MAAM,EAC1E,YAAa,GACb,iBAAkB,CACd,MAAO,CACH,MAAO,KAAK,QACZ,UAAW,EACf,EACA,KAAM,CACF,MAAO,KAAK,QACZ,UAAW,EACf,CACJ,EACA,KAAM,CAAC,GAAG,KAAK,OAAQ,GAAGb,CAAO,CACrC,CAAC,EAEG,KAAK,UACL,QAAQ,IAAI,SAASc,EAAM,MAAM,aAAaD,CAAG,EAAE,EAEnD,QAAQ,IAAIC,CAAK,GAGrBA,EAAM,QAASC,GAAS,CAChB,KAAK,SACL,QAAQ,IAAI,gBAAgBA,CAAI,EAAE,EAGtC,GAAI,CACA,IAAMC,EAAuBC,EAAUF,EAAMG,EAA6B,KAAK,OAAO,EAEtFP,EAAK,QAAQK,EAAqB,IAAKG,GAASA,EAAK,IAAI,CAAC,EAE1D,IAAMC,EAA8BH,EAAUF,EAAMG,EAAoC,KAAK,OAAO,EAEpGP,EAAK,QAAQS,EAA4B,IAAKD,GAASA,EAAK,IAAI,CAAC,CACrE,OAASjB,EAAO,CACZ,QAAQ,MAAMA,CAAK,EACnBH,EAAK,CAAC,CACV,CACJ,CAAC,CACL,CAEA,GAAI,CACI,KAAK,UACL,QAAQ,IAAI,yBAAyB,EAErC,QAAQ,IAAI,KAAK,UAAUY,EAAM,KAAM,CAAC,CAAC,GAG7C,MAAMU,EAAS,KAAK,MAAM,KAAK,UAAUV,CAAI,CAAC,CAAC,CACnD,OAAST,EAAY,CACjB,QAAQ,MAAMA,EAAM,OAAO,CAAC,EAC5BH,EAAK,CAAC,CACV,CAEA,GAAM,CAAE,WAAAK,CAAW,EAAI,KAGvBR,EAAME,EAAQM,CAAU,EAAG,CAAE,UAAW,EAAK,EAAIF,GAAU,CACnDA,GACAD,EAAaC,CAAK,EAItBL,EAAUO,EAAY,KAAK,UAAUO,EAAM,KAAM,CAAC,EAAGV,CAAY,CACrE,CAAC,EAEG,KAAK,SACL,QAAQ,IAAI,4BAA4B,KAAK,UAAU,QAAQ,EAGnE,QAAQ,IAAI,gCAAgC,EAE5CS,EAAS,CACb,CAAC,CACL,CACJ,EAEOY,EAAQnB","sourcesContent":["import { collect } from \"@visulima/readdir\";\nimport { mkdir, writeFile } from \"node:fs\";\nimport { dirname } from \"node:path\";\nimport { exit } from \"node:process\";\n\nimport type { Compiler } from \"webpack\";\n\nimport type { BaseDefinition } from \"../exported.d\";\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 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\nconst errorHandler = (error: any) => {\n if (error) {\n console.error(error);\n exit(1);\n }\n};\n\nclass SwaggerCompilerPlugin {\n private readonly assetsPath: string;\n\n private readonly ignore: ReadonlyArray<string> | string;\n\n private readonly sources: string[];\n\n private readonly swaggerDefinition: BaseDefinition;\n\n private readonly verbose: boolean;\n\n public constructor(\n assetsPath: string,\n sources: string[],\n swaggerDefinition: BaseDefinition,\n options: {\n ignore?: ReadonlyArray<string> | string;\n verbose?: boolean;\n },\n ) {\n this.assetsPath = assetsPath;\n this.swaggerDefinition = swaggerDefinition;\n this.sources = sources;\n this.verbose = options.verbose ?? false;\n this.ignore = options.ignore ?? [];\n }\n\n public apply(compiler: Compiler): void {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n compiler.hooks.make.tapAsync(\"SwaggerCompilerPlugin\", async (_, callback: VoidFunction): Promise<void> => {\n console.log(\"Build paused, switching to swagger build\");\n\n const spec = new SpecBuilder(this.swaggerDefinition);\n\n // eslint-disable-next-line no-restricted-syntax,unicorn/prevent-abbreviations\n for await (const dir of this.sources) {\n const files = await collect(dir, {\n extensions: [\".js\", \".cjs\", \".mjs\", \".ts\", \".tsx\", \".jsx\", \".yaml\", \".yml\"],\n includeDirs: false,\n minimatchOptions: {\n match: {\n debug: this.verbose,\n matchBase: true,\n },\n skip: {\n debug: this.verbose,\n matchBase: true,\n },\n },\n skip: [...this.ignore, ...exclude],\n });\n\n if (this.verbose) {\n console.log(`Found ${files.length} files in ${dir}`);\n\n console.log(files);\n }\n\n files.forEach((file) => {\n if (this.verbose) {\n console.log(`Parsing file ${file}`);\n }\n\n try {\n const parsedJsDocumentFile = parseFile(file, jsDocumentCommentsToOpenApi, this.verbose);\n\n spec.addData(parsedJsDocumentFile.map((item) => item.spec));\n\n const parsedSwaggerJsDocumentFile = parseFile(file, swaggerJsDocumentCommentsToOpenApi, this.verbose);\n\n spec.addData(parsedSwaggerJsDocumentFile.map((item) => item.spec));\n } catch (error) {\n console.error(error);\n exit(1);\n }\n });\n }\n\n try {\n if (this.verbose) {\n console.log(\"Validating swagger spec\");\n\n console.log(JSON.stringify(spec, null, 2));\n }\n\n await validate(JSON.parse(JSON.stringify(spec)));\n } catch (error: any) {\n console.error(error.toJSON());\n exit(1);\n }\n\n const { assetsPath } = this;\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n mkdir(dirname(assetsPath), { recursive: true }, (error) => {\n if (error) {\n errorHandler(error);\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n writeFile(assetsPath, JSON.stringify(spec, null, 2), errorHandler);\n });\n\n if (this.verbose) {\n console.log(`Written swagger spec to \"${this.assetsPath}\" file`);\n }\n\n console.log(\"switching back to normal build\");\n\n callback();\n });\n }\n}\n\nexport default SwaggerCompilerPlugin;\n"]}
1
+ {"version":3,"sources":["../src/webpack/swagger-compiler-plugin.ts"],"names":["collect","mkdir","writeFile","dirname","exit","exclude","errorHandler","error","SwaggerCompilerPlugin","assetsPath","sources","swaggerDefinition","options","compiler","_","callback","spec","spec_builder_default","dir","files","file","parsedJsDocumentFile","parse_file_default","comments_to_open_api_default","item","parsedSwaggerJsDocumentFile","validate_default","swagger_compiler_plugin_default"],"mappings":"4EAAA,OAAS,WAAAA,MAAe,oBACxB,OAAS,SAAAC,EAAO,aAAAC,MAAiB,KACjC,OAAS,WAAAC,MAAe,OACxB,OAAS,QAAAC,MAAY,UAWrB,IAAMC,EAAU,CACZ,cACA,aACA,yBACA,YACA,cACA,6CACA,iDACA,kBACA,yCACA,iCACA,sCACA,gCACA,0BACA,iCACA,0BACA,qBACA,oBACA,yBACA,iCACA,eACA,mBACA,aACJ,EAEMC,EAAgBC,GAAe,CAC7BA,IAEA,QAAQ,MAAMA,CAAK,EAEnBH,EAAK,CAAC,EAEd,EAEMI,EAAN,KAA4B,CAWjB,YACHC,EACAC,EACAC,EACAC,EAIF,CACE,KAAK,WAAaH,EAClB,KAAK,kBAAoBE,EACzB,KAAK,QAAUD,EACf,KAAK,QAAUE,EAAQ,SAAW,GAClC,KAAK,OAASA,EAAQ,QAAU,CAAC,CACrC,CAEO,MAAMC,EAA0B,CAEnCA,EAAS,MAAM,KAAK,SAAS,wBAAyB,MAAOC,EAAGC,IAA0C,CAEtG,QAAQ,IAAI,0CAA0C,EAEtD,IAAMC,EAAO,IAAIC,EAAY,KAAK,iBAAiB,EAGnD,cAAiBC,KAAO,KAAK,QAAS,CAClC,IAAMC,EAAQ,MAAMnB,EAAQkB,EAAK,CAC7B,WAAY,CAAC,MAAO,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,QAAS,MAAM,EAC1E,YAAa,GACb,iBAAkB,CACd,MAAO,CACH,MAAO,KAAK,QACZ,UAAW,EACf,EACA,KAAM,CACF,MAAO,KAAK,QACZ,UAAW,EACf,CACJ,EACA,KAAM,CAAC,GAAG,KAAK,OAAQ,GAAGb,CAAO,CACrC,CAAC,EAEG,KAAK,UAEL,QAAQ,IAAI,SAASc,EAAM,MAAM,aAAaD,CAAG,EAAE,EAEnD,QAAQ,IAAIC,CAAK,GAGrBA,EAAM,QAASC,GAAS,CAChB,KAAK,SAEL,QAAQ,IAAI,gBAAgBA,CAAI,EAAE,EAGtC,GAAI,CACA,IAAMC,EAAuBC,EAAUF,EAAMG,EAA6B,KAAK,OAAO,EAEtFP,EAAK,QAAQK,EAAqB,IAAKG,GAASA,EAAK,IAAI,CAAC,EAE1D,IAAMC,EAA8BH,EAAUF,EAAMG,EAAoC,KAAK,OAAO,EAEpGP,EAAK,QAAQS,EAA4B,IAAKD,GAASA,EAAK,IAAI,CAAC,CACrE,OAASjB,EAAO,CAEZ,QAAQ,MAAMA,CAAK,EAEnBH,EAAK,CAAC,CACV,CACJ,CAAC,CACL,CAEA,GAAI,CACI,KAAK,UAEL,QAAQ,IAAI,yBAAyB,EAErC,QAAQ,IAAI,KAAK,UAAUY,EAAM,KAAM,CAAC,CAAC,GAG7C,MAAMU,EAAS,KAAK,MAAM,KAAK,UAAUV,CAAI,CAAC,CAAC,CACnD,OAAST,EAAY,CAEjB,QAAQ,MAAMA,EAAM,OAAO,CAAC,EAE5BH,EAAK,CAAC,CACV,CAEA,GAAM,CAAE,WAAAK,CAAW,EAAI,KAGvBR,EAAME,EAAQM,CAAU,EAAG,CAAE,UAAW,EAAK,EAAIF,GAAU,CACnDA,GACAD,EAAaC,CAAK,EAItBL,EAAUO,EAAY,KAAK,UAAUO,EAAM,KAAM,CAAC,EAAGV,CAAY,CACrE,CAAC,EAEG,KAAK,SAEL,QAAQ,IAAI,4BAA4B,KAAK,UAAU,QAAQ,EAInE,QAAQ,IAAI,gCAAgC,EAE5CS,EAAS,CACb,CAAC,CACL,CACJ,EAEOY,EAAQnB","sourcesContent":["import { collect } from \"@visulima/readdir\";\nimport { mkdir, writeFile } from \"node:fs\";\nimport { dirname } from \"node:path\";\nimport { exit } from \"node:process\";\n\nimport type { Compiler } from \"webpack\";\n\nimport type { BaseDefinition } from \"../exported.d\";\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 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\nconst errorHandler = (error: any) => {\n if (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n\n exit(1);\n }\n};\n\nclass SwaggerCompilerPlugin {\n private readonly assetsPath: string;\n\n private readonly ignore: ReadonlyArray<string> | string;\n\n private readonly sources: string[];\n\n private readonly swaggerDefinition: BaseDefinition;\n\n private readonly verbose: boolean;\n\n public constructor(\n assetsPath: string,\n sources: string[],\n swaggerDefinition: BaseDefinition,\n options: {\n ignore?: ReadonlyArray<string> | string;\n verbose?: boolean;\n },\n ) {\n this.assetsPath = assetsPath;\n this.swaggerDefinition = swaggerDefinition;\n this.sources = sources;\n this.verbose = options.verbose ?? false;\n this.ignore = options.ignore ?? [];\n }\n\n public apply(compiler: Compiler): void {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n compiler.hooks.make.tapAsync(\"SwaggerCompilerPlugin\", async (_, callback: VoidFunction): Promise<void> => {\n // eslint-disable-next-line no-console\n console.log(\"Build paused, switching to swagger build\");\n\n const spec = new SpecBuilder(this.swaggerDefinition);\n\n // eslint-disable-next-line no-restricted-syntax,unicorn/prevent-abbreviations\n for await (const dir of this.sources) {\n const files = await collect(dir, {\n extensions: [\".js\", \".cjs\", \".mjs\", \".ts\", \".tsx\", \".jsx\", \".yaml\", \".yml\"],\n includeDirs: false,\n minimatchOptions: {\n match: {\n debug: this.verbose,\n matchBase: true,\n },\n skip: {\n debug: this.verbose,\n matchBase: true,\n },\n },\n skip: [...this.ignore, ...exclude],\n });\n\n if (this.verbose) {\n // eslint-disable-next-line no-console\n console.log(`Found ${files.length} files in ${dir}`);\n // eslint-disable-next-line no-console\n console.log(files);\n }\n\n files.forEach((file) => {\n if (this.verbose) {\n // eslint-disable-next-line no-console\n console.log(`Parsing file ${file}`);\n }\n\n try {\n const parsedJsDocumentFile = parseFile(file, jsDocumentCommentsToOpenApi, this.verbose);\n\n spec.addData(parsedJsDocumentFile.map((item) => item.spec));\n\n const parsedSwaggerJsDocumentFile = parseFile(file, swaggerJsDocumentCommentsToOpenApi, this.verbose);\n\n spec.addData(parsedSwaggerJsDocumentFile.map((item) => item.spec));\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n\n exit(1);\n }\n });\n }\n\n try {\n if (this.verbose) {\n // eslint-disable-next-line no-console\n console.log(\"Validating swagger spec\");\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)));\n } catch (error: any) {\n // eslint-disable-next-line no-console\n console.error(error.toJSON());\n\n exit(1);\n }\n\n const { assetsPath } = this;\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n mkdir(dirname(assetsPath), { recursive: true }, (error) => {\n if (error) {\n errorHandler(error);\n }\n\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n writeFile(assetsPath, JSON.stringify(spec, null, 2), errorHandler);\n });\n\n if (this.verbose) {\n // eslint-disable-next-line no-console\n console.log(`Written swagger spec to \"${this.assetsPath}\" file`);\n }\n\n // eslint-disable-next-line no-console\n console.log(\"switching back to normal build\");\n\n callback();\n });\n }\n}\n\nexport default SwaggerCompilerPlugin;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visulima/jsdoc-open-api",
3
- "version": "1.3.11",
3
+ "version": "1.3.12",
4
4
  "description": "Generates swagger doc based on JSDoc.",
5
5
  "keywords": [
6
6
  "visulima",
@@ -87,14 +87,14 @@
87
87
  },
88
88
  "dependencies": {
89
89
  "@apidevtools/swagger-parser": "^10.1.0",
90
- "@visulima/readdir": "1.3.7",
90
+ "@visulima/readdir": "1.3.8",
91
91
  "comment-parser": "^1.3.1",
92
92
  "lodash.mergewith": "^4.6.2",
93
93
  "read-pkg-up": "^7.0.1",
94
94
  "yaml": "^2.3.1"
95
95
  },
96
96
  "devDependencies": {
97
- "@anolilab/eslint-config": "^10.0.6",
97
+ "@anolilab/eslint-config": "^11.0.2",
98
98
  "@anolilab/prettier-config": "^5.0.1",
99
99
  "@anolilab/semantic-release-preset": "^6.0.2",
100
100
  "@rushstack/eslint-plugin-security": "^0.6.0",
@@ -109,10 +109,10 @@
109
109
  "cli-progress": "^3.12.0",
110
110
  "commander": "^11.0.0",
111
111
  "cross-env": "^7.0.3",
112
- "eslint": "^8.45.0",
112
+ "eslint": "^8.46.0",
113
113
  "eslint-plugin-etc": "^2.0.3",
114
114
  "eslint-plugin-mdx": "^2.1.0",
115
- "eslint-plugin-vitest": "^0.2.6",
115
+ "eslint-plugin-vitest": "^0.2.8",
116
116
  "openapi-types": "^12.1.3",
117
117
  "prettier": "^3.0.0",
118
118
  "rimraf": "^5.0.1",