@visulima/jsdoc-open-api 3.0.0-alpha.12 → 3.0.0-alpha.14

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.
Files changed (56) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/cli/commander/index.cjs +1 -11
  3. package/dist/cli/commander/index.mjs +1 -2
  4. package/dist/cli/index.cjs +1 -11
  5. package/dist/cli/index.mjs +1 -2
  6. package/dist/index.cjs +1 -19
  7. package/dist/index.mjs +1 -6
  8. package/dist/packem_shared/SpecBuilder-CR4EZk93.cjs +1 -0
  9. package/dist/packem_shared/SpecBuilder-DjnDJFpv.mjs +1 -0
  10. package/dist/packem_shared/SwaggerCompilerPlugin-CLoD91_H.mjs +1 -0
  11. package/dist/packem_shared/SwaggerCompilerPlugin-lwIg0m84.cjs +1 -0
  12. package/dist/packem_shared/customizer-COfd-Xr1.mjs +1 -0
  13. package/dist/packem_shared/customizer-DUz3nxAJ.cjs +1 -0
  14. package/dist/packem_shared/generateCommand-BQuj1FCe.cjs +1 -0
  15. package/dist/packem_shared/generateCommand-Bn19mSDL.mjs +1 -0
  16. package/dist/packem_shared/generateCommand-DLJ2Ac1D.mjs +4 -0
  17. package/dist/packem_shared/generateCommand-DPOEw62Z.cjs +4 -0
  18. package/dist/packem_shared/initCommand-Bm4veOwd.mjs +1 -0
  19. package/dist/packem_shared/initCommand-CiV7G3q4.cjs +35 -0
  20. package/dist/packem_shared/initCommand-CwoPwelm.mjs +35 -0
  21. package/dist/packem_shared/initCommand-DAcI_ilX.cjs +1 -0
  22. package/dist/packem_shared/jsDocumentCommentsToOpenApi-Bvfi25DQ.mjs +1 -0
  23. package/dist/packem_shared/jsDocumentCommentsToOpenApi-DBYlHL5i.cjs +1 -0
  24. package/dist/packem_shared/parseFile-C7tyTcIn.cjs +1 -0
  25. package/dist/packem_shared/parseFile-CtAVjmPd.mjs +1 -0
  26. package/dist/packem_shared/swaggerJsDocumentCommentsToOpenApi-Bo1geBuG.cjs +10 -0
  27. package/dist/packem_shared/swaggerJsDocumentCommentsToOpenApi-xKOqHvN2.mjs +10 -0
  28. package/dist/packem_shared/validate-_k84qawx.mjs +1 -0
  29. package/dist/packem_shared/validate-tZa-jyuN.cjs +1 -0
  30. package/dist/packem_shared/yamlLoc-C2tVIYaz.mjs +1 -0
  31. package/dist/packem_shared/yamlLoc-DyGcp8YC.cjs +1 -0
  32. package/package.json +41 -41
  33. package/dist/packem_shared/SpecBuilder-B7YiF7zR.mjs +0 -61
  34. package/dist/packem_shared/SpecBuilder-CCESkmm5.cjs +0 -63
  35. package/dist/packem_shared/SwaggerCompilerPlugin-BkYJzU4f.cjs +0 -88
  36. package/dist/packem_shared/SwaggerCompilerPlugin-DZ7tIJ8x.mjs +0 -86
  37. package/dist/packem_shared/customizer-CoMXMU7a.mjs +0 -8
  38. package/dist/packem_shared/customizer-DDFwFqJl.cjs +0 -10
  39. package/dist/packem_shared/generateCommand-DRMkfIle.mjs +0 -15
  40. package/dist/packem_shared/generateCommand-MwnCNgEE.cjs +0 -82
  41. package/dist/packem_shared/generateCommand-RY4QFtm7.cjs +0 -17
  42. package/dist/packem_shared/generateCommand-a9_RAbug.mjs +0 -80
  43. package/dist/packem_shared/initCommand-B6Z9EXHP.mjs +0 -15
  44. package/dist/packem_shared/initCommand-Ch-72dKZ.cjs +0 -65
  45. package/dist/packem_shared/initCommand-D3yVEMwO.cjs +0 -17
  46. package/dist/packem_shared/initCommand-zE4VRDGW.mjs +0 -63
  47. package/dist/packem_shared/jsDocumentCommentsToOpenApi-C7yMeXJ5.cjs +0 -337
  48. package/dist/packem_shared/jsDocumentCommentsToOpenApi-DtrIZ2lK.mjs +0 -331
  49. package/dist/packem_shared/parseFile-BE-sKiRK.mjs +0 -35
  50. package/dist/packem_shared/parseFile-Dk7Bw7lt.cjs +0 -42
  51. package/dist/packem_shared/swaggerJsDocumentCommentsToOpenApi-B7g9rVr5.mjs +0 -131
  52. package/dist/packem_shared/swaggerJsDocumentCommentsToOpenApi-BuB7eE94.cjs +0 -138
  53. package/dist/packem_shared/validate-DZHaKH07.mjs +0 -30
  54. package/dist/packem_shared/validate-FKieC3ln.cjs +0 -37
  55. package/dist/packem_shared/yamlLoc-C7iHWvdq.mjs +0 -14
  56. package/dist/packem_shared/yamlLoc-CEvBiR4K.cjs +0 -16
package/CHANGELOG.md CHANGED
@@ -1,3 +1,22 @@
1
+ ## @visulima/jsdoc-open-api [3.0.0-alpha.14](https://github.com/visulima/visulima/compare/@visulima/jsdoc-open-api@3.0.0-alpha.13...@visulima/jsdoc-open-api@3.0.0-alpha.14) (2026-05-06)
2
+
3
+
4
+ ### Dependencies
5
+
6
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.15
7
+
8
+ ## @visulima/jsdoc-open-api [3.0.0-alpha.13](https://github.com/visulima/visulima/compare/@visulima/jsdoc-open-api@3.0.0-alpha.12...@visulima/jsdoc-open-api@3.0.0-alpha.13) (2026-05-06)
9
+
10
+ ### Miscellaneous Chores
11
+
12
+ * **jsdoc-open-api:** apply prettier and eslint quote-style auto-fix ([2e9b8d0](https://github.com/visulima/visulima/commit/2e9b8d0cdccaa94f22627e5e5f11153c71b689bd))
13
+ * **jsdoc-open-api:** housekeeping cleanup ([de52abe](https://github.com/visulima/visulima/commit/de52abea6d81abc06a8afc14c70ea2a5aabcd30e))
14
+
15
+
16
+ ### Dependencies
17
+
18
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.14
19
+
1
20
  ## @visulima/jsdoc-open-api [3.0.0-alpha.12](https://github.com/visulima/visulima/compare/@visulima/jsdoc-open-api@3.0.0-alpha.11...@visulima/jsdoc-open-api@3.0.0-alpha.12) (2026-05-04)
2
21
 
3
22
  ### Miscellaneous Chores
@@ -1,11 +1 @@
1
- 'use strict';
2
-
3
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
4
-
5
- const generateCommand = require('../../packem_shared/generateCommand-RY4QFtm7.cjs');
6
- const initCommand = require('../../packem_shared/initCommand-D3yVEMwO.cjs');
7
-
8
-
9
-
10
- exports.generateCommand = generateCommand;
11
- exports.initCommand = initCommand;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../../packem_shared/generateCommand-BQuj1FCe.cjs"),t=require("../../packem_shared/initCommand-DAcI_ilX.cjs");exports.generateCommand=e;exports.initCommand=t;
@@ -1,2 +1 @@
1
- export { default as generateCommand } from '../../packem_shared/generateCommand-DRMkfIle.mjs';
2
- export { default as initCommand } from '../../packem_shared/initCommand-B6Z9EXHP.mjs';
1
+ import{default as m}from"../../packem_shared/generateCommand-Bn19mSDL.mjs";import{default as t}from"../../packem_shared/initCommand-Bm4veOwd.mjs";export{m as generateCommand,t as initCommand};
@@ -1,11 +1 @@
1
- 'use strict';
2
-
3
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
4
-
5
- const generateCommand = require('../packem_shared/generateCommand-MwnCNgEE.cjs');
6
- const initCommand = require('../packem_shared/initCommand-Ch-72dKZ.cjs');
7
-
8
-
9
-
10
- exports.generateCommand = generateCommand;
11
- exports.initCommand = initCommand;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../packem_shared/generateCommand-DPOEw62Z.cjs"),t=require("../packem_shared/initCommand-CiV7G3q4.cjs");exports.generateCommand=e;exports.initCommand=t;
@@ -1,2 +1 @@
1
- export { default as generateCommand } from '../packem_shared/generateCommand-a9_RAbug.mjs';
2
- export { default as initCommand } from '../packem_shared/initCommand-zE4VRDGW.mjs';
1
+ import{default as m}from"../packem_shared/generateCommand-DLJ2Ac1D.mjs";import{default as t}from"../packem_shared/initCommand-CwoPwelm.mjs";export{m as generateCommand,t as initCommand};
package/dist/index.cjs CHANGED
@@ -1,19 +1 @@
1
- 'use strict';
2
-
3
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
4
-
5
- const jsDocumentCommentsToOpenApi = require('./packem_shared/jsDocumentCommentsToOpenApi-C7yMeXJ5.cjs');
6
- const parseFile = require('./packem_shared/parseFile-Dk7Bw7lt.cjs');
7
- const SpecBuilder = require('./packem_shared/SpecBuilder-CCESkmm5.cjs');
8
- const swaggerJsDocumentCommentsToOpenApi = require('./packem_shared/swaggerJsDocumentCommentsToOpenApi-BuB7eE94.cjs');
9
- const yamlLoc = require('./packem_shared/yamlLoc-CEvBiR4K.cjs');
10
- const SwaggerCompilerPlugin = require('./packem_shared/SwaggerCompilerPlugin-BkYJzU4f.cjs');
11
-
12
-
13
-
14
- exports.jsDocumentCommentsToOpenApi = jsDocumentCommentsToOpenApi;
15
- exports.parseFile = parseFile;
16
- exports.SpecBuilder = SpecBuilder;
17
- exports.swaggerJsDocumentCommentsToOpenApi = swaggerJsDocumentCommentsToOpenApi;
18
- exports.yamlLoc = yamlLoc;
19
- exports.SwaggerCompilerPlugin = SwaggerCompilerPlugin;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./packem_shared/jsDocumentCommentsToOpenApi-DBYlHL5i.cjs"),r=require("./packem_shared/parseFile-C7tyTcIn.cjs"),i=require("./packem_shared/SpecBuilder-CR4EZk93.cjs"),o=require("./packem_shared/swaggerJsDocumentCommentsToOpenApi-Bo1geBuG.cjs"),u=require("./packem_shared/yamlLoc-DyGcp8YC.cjs"),m=require("./packem_shared/SwaggerCompilerPlugin-lwIg0m84.cjs");exports.jsDocumentCommentsToOpenApi=e;exports.parseFile=r;exports.SpecBuilder=i;exports.swaggerJsDocumentCommentsToOpenApi=o;exports.yamlLoc=u;exports.SwaggerCompilerPlugin=m;
package/dist/index.mjs CHANGED
@@ -1,6 +1 @@
1
- export { default as jsDocumentCommentsToOpenApi } from './packem_shared/jsDocumentCommentsToOpenApi-DtrIZ2lK.mjs';
2
- export { default as parseFile } from './packem_shared/parseFile-BE-sKiRK.mjs';
3
- export { default as SpecBuilder } from './packem_shared/SpecBuilder-B7YiF7zR.mjs';
4
- export { default as swaggerJsDocumentCommentsToOpenApi } from './packem_shared/swaggerJsDocumentCommentsToOpenApi-B7g9rVr5.mjs';
5
- export { default as yamlLoc } from './packem_shared/yamlLoc-C7iHWvdq.mjs';
6
- export { default as SwaggerCompilerPlugin } from './packem_shared/SwaggerCompilerPlugin-DZ7tIJ8x.mjs';
1
+ import{default as r}from"./packem_shared/jsDocumentCommentsToOpenApi-Bvfi25DQ.mjs";import{default as t}from"./packem_shared/parseFile-CtAVjmPd.mjs";import{default as p}from"./packem_shared/SpecBuilder-DjnDJFpv.mjs";import{default as s}from"./packem_shared/swaggerJsDocumentCommentsToOpenApi-xKOqHvN2.mjs";import{default as u}from"./packem_shared/yamlLoc-C2tVIYaz.mjs";import{default as n}from"./packem_shared/SwaggerCompilerPlugin-CLoD91_H.mjs";export{p as SpecBuilder,n as SwaggerCompilerPlugin,r as jsDocumentCommentsToOpenApi,t as parseFile,s as swaggerJsDocumentCommentsToOpenApi,u as yamlLoc};
@@ -0,0 +1 @@
1
+ "use strict";var p=Object.defineProperty;var a=(s,e)=>p(s,"name",{value:e,configurable:!0});var h=Object.defineProperty,u=a((s,e)=>h(s,"name",{value:e,configurable:!0}),"s");const v=u((s,e)=>{Object.keys(e).forEach(r=>{s[r]===void 0?s[r]={...e[r]}:Object.keys(e[r]).forEach(t=>{s[r][t]={...s[r][t],...e[r][t]}})})},"objectMerge");var l=Object.defineProperty,f=a((s,e)=>l(s,"name",{value:e,configurable:!0}),"c");class b{static{a(this,"u")}static{f(this,"SpecBuilder")}components;externalDocs;info;openapi;paths;security;servers;tags;constructor(e){this.openapi=e.openapi,this.info=e.info,this.paths=e.paths??{},e.servers&&(this.servers=e.servers),e.components&&(this.components=e.components),e.security&&(this.security=e.security),e.tags&&(this.tags=e.tags),e.externalDocs&&(this.externalDocs=e.externalDocs)}addData(e){e.forEach(r=>{const{components:t,paths:c,...n}=r;v(this,{components:t??{},paths:c??{}}),Object.entries(n).forEach(([o,i])=>{this[o]=i})})}}module.exports=b;
@@ -0,0 +1 @@
1
+ var p=Object.defineProperty;var t=(s,e)=>p(s,"name",{value:e,configurable:!0});var h=Object.defineProperty,u=t((s,e)=>h(s,"name",{value:e,configurable:!0}),"s");const l=u((s,e)=>{Object.keys(e).forEach(a=>{s[a]===void 0?s[a]={...e[a]}:Object.keys(e[a]).forEach(r=>{s[a][r]={...s[a][r],...e[a][r]}})})},"objectMerge");var v=Object.defineProperty,f=t((s,e)=>v(s,"name",{value:e,configurable:!0}),"c");class m{static{t(this,"u")}static{f(this,"SpecBuilder")}components;externalDocs;info;openapi;paths;security;servers;tags;constructor(e){this.openapi=e.openapi,this.info=e.info,this.paths=e.paths??{},e.servers&&(this.servers=e.servers),e.components&&(this.components=e.components),e.security&&(this.security=e.security),e.tags&&(this.tags=e.tags),e.externalDocs&&(this.externalDocs=e.externalDocs)}addData(e){e.forEach(a=>{const{components:r,paths:c,...n}=a;l(this,{components:r??{},paths:c??{}}),Object.entries(n).forEach(([o,i])=>{this[o]=i})})}}export{m as default};
@@ -0,0 +1 @@
1
+ var v=Object.defineProperty;var g=(s,o)=>v(s,"name",{value:o,configurable:!0});import{mkdir as w,writeFile as y}from"node:fs";import{dirname as D}from"node:path";import{exit as m}from"node:process";import{collect as P}from"@visulima/fs";import{r as S,D as $}from"./validate-_k84qawx.mjs";import j from"./jsDocumentCommentsToOpenApi-Bvfi25DQ.mjs";import p from"./parseFile-CtAVjmPd.mjs";import k from"./SpecBuilder-DjnDJFpv.mjs";import x from"./swaggerJsDocumentCommentsToOpenApi-xKOqHvN2.mjs";var E=Object.defineProperty,d=g((s,o)=>E(s,"name",{value:o,configurable:!0}),"g");const u=d(s=>{s&&(console.error(s),m(1))},"errorHandler");class T{static{g(this,"E")}static{d(this,"SwaggerCompilerPlugin")}assetsPath;ignore;sources;swaggerDefinition;verbose;constructor(o,i,h,r){this.assetsPath=o,this.swaggerDefinition=h,this.sources=i,this.verbose=r.verbose??!1,this.ignore=r.ignore??[]}apply(o){const i=new Set([...$,...this.ignore]);o.hooks.make.tapAsync("SwaggerCompilerPlugin",async(h,r)=>{console.log("Build paused, switching to swagger build");const t=new k(this.swaggerDefinition);for(const e of this.sources){const n=await P(e,{extensions:[".js",".cjs",".mjs",".ts",".tsx",".jsx",".yaml",".yml"],includeDirs:!1,skip:[...i]});this.verbose&&(console.log(`Found ${String(n.length)} files in ${e}`),console.log(n)),n.forEach(a=>{this.verbose&&console.log(`Parsing file ${a}`);try{const l=p(a,j,this.verbose);t.addData(l.map(c=>c.spec));const b=p(a,x,this.verbose);t.addData(b.map(c=>c.spec))}catch(l){console.error(l),m(1)}})}try{this.verbose&&(console.log("Validating swagger spec"),console.log(JSON.stringify(t,void 0,2))),await S(structuredClone(t))}catch(e){console.error(e.toJSON()),m(1)}const{assetsPath:f}=this;w(D(f),{recursive:!0},e=>{e&&u(e),y(f,JSON.stringify(t,void 0,2),u)}),this.verbose&&console.log(`Written swagger spec to "${this.assetsPath}" file`),console.log("switching back to normal build"),r()})}}export{T as default};
@@ -0,0 +1 @@
1
+ "use strict";var y=Object.defineProperty;var g=(e,s)=>y(e,"name",{value:s,configurable:!0});const p=require("node:fs"),q=require("node:path"),u=require("node:process"),D=require("@visulima/fs"),m=require("./validate-tZa-jyuN.cjs"),P=require("./jsDocumentCommentsToOpenApi-DBYlHL5i.cjs"),f=require("./parseFile-C7tyTcIn.cjs"),S=require("./SpecBuilder-CR4EZk93.cjs"),x=require("./swaggerJsDocumentCommentsToOpenApi-Bo1geBuG.cjs");var j=Object.defineProperty,w=g((e,s)=>j(e,"name",{value:s,configurable:!0}),"g");const v=w(e=>{e&&(console.error(e),u.exit(1))},"errorHandler");class O{static{g(this,"E")}static{w(this,"SwaggerCompilerPlugin")}assetsPath;ignore;sources;swaggerDefinition;verbose;constructor(s,t,h,i){this.assetsPath=s,this.swaggerDefinition=h,this.sources=t,this.verbose=i.verbose??!1,this.ignore=i.ignore??[]}apply(s){const t=new Set([...m.D,...this.ignore]);s.hooks.make.tapAsync("SwaggerCompilerPlugin",async(h,i)=>{console.log("Build paused, switching to swagger build");const r=new S(this.swaggerDefinition);for(const o of this.sources){const n=await D.collect(o,{extensions:[".js",".cjs",".mjs",".ts",".tsx",".jsx",".yaml",".yml"],includeDirs:!1,skip:[...t]});this.verbose&&(console.log(`Found ${String(n.length)} files in ${o}`),console.log(n)),n.forEach(a=>{this.verbose&&console.log(`Parsing file ${a}`);try{const c=f(a,P,this.verbose);r.addData(c.map(l=>l.spec));const b=f(a,x,this.verbose);r.addData(b.map(l=>l.spec))}catch(c){console.error(c),u.exit(1)}})}try{this.verbose&&(console.log("Validating swagger spec"),console.log(JSON.stringify(r,void 0,2))),await m.r(structuredClone(r))}catch(o){console.error(o.toJSON()),u.exit(1)}const{assetsPath:d}=this;p.mkdir(q.dirname(d),{recursive:!0},o=>{o&&v(o),p.writeFile(d,JSON.stringify(r,void 0,2),v)}),this.verbose&&console.log(`Written swagger spec to "${this.assetsPath}" file`),console.log("switching back to normal build"),i()})}}module.exports=O;
@@ -0,0 +1 @@
1
+ var t=Object.defineProperty;var a=(r,e)=>t(r,"name",{value:e,configurable:!0});var o=Object.defineProperty,u=a((r,e)=>o(r,"name",{value:e,configurable:!0}),"u");const c=u((r,e)=>{if(Array.isArray(r))return[...r,...e]},"customizer");export{c as o};
@@ -0,0 +1 @@
1
+ "use strict";var a=Object.defineProperty;var t=(r,e)=>a(r,"name",{value:e,configurable:!0});var u=Object.defineProperty,i=t((r,e)=>u(r,"name",{value:e,configurable:!0}),"u");const o=i((r,e)=>{if(Array.isArray(r))return[...r,...e]},"customizer");exports.o=o;
@@ -0,0 +1 @@
1
+ "use strict";var s=Object.defineProperty;var t=(e,o)=>s(e,"name",{value:o,configurable:!0});const p=require("node:process"),c=require("./generateCommand-DPOEw62Z.cjs");var u=Object.defineProperty,g=t((e,o)=>u(e,"name",{value:o,configurable:!0}),"t");const m=g((e,o="generate",r=".openapirc.js")=>{e.command(o).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(a,n)=>{try{await c(r,a,n)}catch(i){console.error(i),p.exit(1)}})},"generateCommand");module.exports=m;
@@ -0,0 +1 @@
1
+ var p=Object.defineProperty;var t=(e,o)=>p(e,"name",{value:o,configurable:!0});import{exit as s}from"node:process";import c from"./generateCommand-DLJ2Ac1D.mjs";var u=Object.defineProperty,g=t((e,o)=>u(e,"name",{value:o,configurable:!0}),"t");const v=g((e,o="generate",r=".openapirc.js")=>{e.command(o).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(a,i)=>{try{await c(r,a,i)}catch(n){console.error(n),s(1)}})},"generateCommand");export{v as default};
@@ -0,0 +1,4 @@
1
+ var y=Object.defineProperty;var g=(t,i)=>y(t,"name",{value:i,configurable:!0});import{lstat as b,realpath as h,mkdir as $,writeFile as j}from"node:fs/promises";import{normalize as D,dirname as S}from"node:path";import{pathToFileURL as x}from"node:url";import{collect as k}from"@visulima/fs";import{MultiBar as C,Presets as E}from"cli-progress";import{r as F,D as O}from"./validate-_k84qawx.mjs";import P from"./jsDocumentCommentsToOpenApi-Bvfi25DQ.mjs";import p from"./parseFile-CtAVjmPd.mjs";import V from"./SpecBuilder-DjnDJFpv.mjs";import L from"./swaggerJsDocumentCommentsToOpenApi-xKOqHvN2.mjs";var N=Object.defineProperty,U=g((t,i)=>N(t,"name",{value:i,configurable:!0}),"g");const G=U(async(t,i,e)=>{let r;try{let o=await import(x(D(e.config??t)).href);o?.default&&(o=o.default),r=o}catch{throw new Error(`No config file found, on: ${e.config??".openapirc.js"}
2
+ `)}const f=new C({clearOnComplete:!1,format:"{value}/{total} | {bar} | {filename}",hideCursor:!0},E.shades_grey),a=new V(r.swaggerDefinition),d=new Set([...O,...r.exclude]);for(const o of i){(await b(o)).isDirectory();const l=await h(o),n=await k(l,{extensions:r.extensions??[".js",".cjs",".mjs",".ts",".tsx",".jsx",".yaml",".yml"],followSymlinks:r.followSymlinks??!1,match:r.include,skip:[...d]});(e.verbose??e.veryVerbose)&&console.log(`
3
+ Found ${String(n.length)} files in ${l}`),e.veryVerbose&&console.log(n);const u=f.create(n.length,0);n.forEach(c=>{e.verbose&&console.log(`Parsing file ${c}`),u.increment(1,{filename:l});const w=p(c,P,e.verbose);a.addData(w.map(m=>m.spec));const v=p(c,L,e.verbose);a.addData(v.map(m=>m.spec))})}e.verbose&&console.log("Validating swagger spec"),e.veryVerbose&&console.log(JSON.stringify(a,void 0,2)),await F(structuredClone(a));const s=e.output??"swagger.json";f.stop(),e.verbose&&console.log(`Written swagger spec to "${s}" file`),await $(S(s),{recursive:!0}),await j(s,JSON.stringify(a,void 0,2)),console.log(`
4
+ Swagger specification is ready, check the "${s}" file.`)},"generateCommand");export{G as default};
@@ -0,0 +1,4 @@
1
+ "use strict";var j=Object.defineProperty;var m=(s,t)=>j(s,"name",{value:t,configurable:!0});const l=require("node:fs/promises"),d=require("node:path"),S=require("node:url"),D=require("@visulima/fs"),p=require("cli-progress"),w=require("./validate-tZa-jyuN.cjs"),x=require("./jsDocumentCommentsToOpenApi-DBYlHL5i.cjs"),v=require("./parseFile-C7tyTcIn.cjs"),C=require("./SpecBuilder-CR4EZk93.cjs"),O=require("./swaggerJsDocumentCommentsToOpenApi-Bo1geBuG.cjs");var $=Object.defineProperty,k=m((s,t)=>$(s,"name",{value:t,configurable:!0}),"g");const F=k(async(s,t,e)=>{let o;try{let r=await import(S.pathToFileURL(d.normalize(e.config??s)).href);r?.default&&(r=r.default),o=r}catch{throw new Error(`No config file found, on: ${e.config??".openapirc.js"}
2
+ `)}const f=new p.MultiBar({clearOnComplete:!1,format:"{value}/{total} | {bar} | {filename}",hideCursor:!0},p.Presets.shades_grey),i=new C(o.swaggerDefinition),y=new Set([...w.D,...o.exclude]);for(const r of t){(await l.lstat(r)).isDirectory();const c=await l.realpath(r),n=await D.collect(c,{extensions:o.extensions??[".js",".cjs",".mjs",".ts",".tsx",".jsx",".yaml",".yml"],followSymlinks:o.followSymlinks??!1,match:o.include,skip:[...y]});(e.verbose??e.veryVerbose)&&console.log(`
3
+ Found ${String(n.length)} files in ${c}`),e.veryVerbose&&console.log(n);const b=f.create(n.length,0);n.forEach(u=>{e.verbose&&console.log(`Parsing file ${u}`),b.increment(1,{filename:c});const h=v(u,x,e.verbose);i.addData(h.map(g=>g.spec));const q=v(u,O,e.verbose);i.addData(q.map(g=>g.spec))})}e.verbose&&console.log("Validating swagger spec"),e.veryVerbose&&console.log(JSON.stringify(i,void 0,2)),await w.r(structuredClone(i));const a=e.output??"swagger.json";f.stop(),e.verbose&&console.log(`Written swagger spec to "${a}" file`),await l.mkdir(d.dirname(a),{recursive:!0}),await l.writeFile(a,JSON.stringify(i,void 0,2)),console.log(`
4
+ Swagger specification is ready, check the "${a}" file.`)},"generateCommand");module.exports=F;
@@ -0,0 +1 @@
1
+ var a=Object.defineProperty;var o=(e,i)=>a(e,"name",{value:i,configurable:!0});import{exit as c}from"node:process";import m from"./initCommand-CwoPwelm.mjs";var p=Object.defineProperty,d=o((e,i)=>p(e,"name",{value:i,configurable:!0}),"m");const u=d((e,i="init",r="Inits a pre-configured @visulima/jsdoc-open-api config file.",t=".openapirc.js")=>{e.command(i).description(r).action(()=>{try{m(t)}catch(n){console.error(n),c(1)}})},"initCommand");export{u as default};
@@ -0,0 +1,35 @@
1
+ "use strict";var r=Object.defineProperty;var t=(e,s)=>r(e,"name",{value:s,configurable:!0});const n=require("node:fs"),c=require("@visulima/fs");var i=Object.defineProperty,m=t((e,s)=>i(e,"name",{value:s,configurable:!0}),"a");const p=m((e,s=process.cwd())=>{if(n.existsSync(e))throw new Error("Config file already exists");const o=c.findUpSync("package.json",{cwd:n.realpathSync(s)});let a="module.exports =";if(o){const l=c.readJsonSync(o);console.info(`Found package.json at "${o}"`),l.type==="module"&&(console.info("Found package.json with type: module, using ES6 as export for the config file"),a="export default")}else console.info("No package.json found");n.writeFileSync(e,`${a} {
2
+ exclude: [
3
+ 'coverage/**',
4
+ '.github/**',
5
+ 'packages/*/test{,s}/**',
6
+ '**/*.d.ts',
7
+ 'test{,s}/**',
8
+ 'test{,-*}.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}',
9
+ '**/*{.,-}test.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}',
10
+ '**/__tests__/**',
11
+ '**/{ava,babel,nyc}.config.{js,cjs,mjs}',
12
+ '**/jest.config.{js,cjs,mjs,ts}',
13
+ '**/{karma,rollup,webpack}.config.js',
14
+ '**/.{eslint,mocha}rc.{js,cjs}',
15
+ '**/.{travis,yarnrc}.yml',
16
+ '**/{docker-compose,docker}.yml',
17
+ '**/.yamllint.{yaml,yml}',
18
+ '**/node_modules/**',
19
+ '**/pnpm-lock.yaml',
20
+ '**/pnpm-workspace.yaml',
21
+ '**/{package,package-lock}.json',
22
+ '**/yarn.lock',
23
+ '**/package.json5',
24
+ '**/.next/**',
25
+ ],
26
+ followSymlinks: false,
27
+ swaggerDefinition: {
28
+ openapi: '3.0.0',
29
+ info: {
30
+ title: 'API',
31
+ version: '1.0.0',
32
+ },
33
+ },
34
+ };
35
+ `),console.log(`Created "${e}"`)},"initCommand");module.exports=p;
@@ -0,0 +1,35 @@
1
+ var c=Object.defineProperty;var n=(e,o)=>c(e,"name",{value:o,configurable:!0});import{existsSync as l,realpathSync as r,writeFileSync as i}from"node:fs";import{findUpSync as m,readJsonSync as p}from"@visulima/fs";var j=Object.defineProperty,f=n((e,o)=>j(e,"name",{value:o,configurable:!0}),"a");const k=f((e,o=process.cwd())=>{if(l(e))throw new Error("Config file already exists");const s=m("package.json",{cwd:r(o)});let a="module.exports =";if(s){const t=p(s);console.info(`Found package.json at "${s}"`),t.type==="module"&&(console.info("Found package.json with type: module, using ES6 as export for the config file"),a="export default")}else console.info("No package.json found");i(e,`${a} {
2
+ exclude: [
3
+ 'coverage/**',
4
+ '.github/**',
5
+ 'packages/*/test{,s}/**',
6
+ '**/*.d.ts',
7
+ 'test{,s}/**',
8
+ 'test{,-*}.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}',
9
+ '**/*{.,-}test.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}',
10
+ '**/__tests__/**',
11
+ '**/{ava,babel,nyc}.config.{js,cjs,mjs}',
12
+ '**/jest.config.{js,cjs,mjs,ts}',
13
+ '**/{karma,rollup,webpack}.config.js',
14
+ '**/.{eslint,mocha}rc.{js,cjs}',
15
+ '**/.{travis,yarnrc}.yml',
16
+ '**/{docker-compose,docker}.yml',
17
+ '**/.yamllint.{yaml,yml}',
18
+ '**/node_modules/**',
19
+ '**/pnpm-lock.yaml',
20
+ '**/pnpm-workspace.yaml',
21
+ '**/{package,package-lock}.json',
22
+ '**/yarn.lock',
23
+ '**/package.json5',
24
+ '**/.next/**',
25
+ ],
26
+ followSymlinks: false,
27
+ swaggerDefinition: {
28
+ openapi: '3.0.0',
29
+ info: {
30
+ title: 'API',
31
+ version: '1.0.0',
32
+ },
33
+ },
34
+ };
35
+ `),console.log(`Created "${e}"`)},"initCommand");export{k as default};
@@ -0,0 +1 @@
1
+ "use strict";var c=Object.defineProperty;var r=(e,i)=>c(e,"name",{value:i,configurable:!0});const a=require("node:process"),s=require("./initCommand-CiV7G3q4.cjs");var d=Object.defineProperty,m=r((e,i)=>d(e,"name",{value:i,configurable:!0}),"m");const p=m((e,i="init",n="Inits a pre-configured @visulima/jsdoc-open-api config file.",o=".openapirc.js")=>{e.command(i).description(n).action(()=>{try{s(o)}catch(t){console.error(t),a.exit(1)}})},"initCommand");module.exports=p;
@@ -0,0 +1 @@
1
+ var l=Object.defineProperty;var u=(s,n)=>l(s,"name",{value:n,configurable:!0});import{parse as y}from"comment-parser";import b from"lodash.mergewith";import{o as f}from"./customizer-COfd-Xr1.mjs";var g=Object.defineProperty,i=u((s,n)=>g(s,"name",{value:n,configurable:!0}),"p");const $=/\[\]$/,h=/^- /u,T=/Param$/u,w=/^(GET|PUT|POST|DELETE|OPTIONS|HEAD|PATCH|TRACE) \/.*$/,k=i(s=>{s.security&&(s.security=Object.keys(s.security).map(n=>({[n]:s.security[n]})))},"fixSecurityObject"),q=new Set(["array","boolean","integer","number","object","string"]),d={binary:"string",byte:"string",date:"string","date-time":"string",double:"number",float:"number",int32:"integer",int64:"integer",password:"string"},O=i(s=>{const n=s.type,a=n.endsWith("[]"),e=n.replace($,""),c=q.has(e),t=Object.keys(d).includes(e);let r;if(s.default)switch(e){case"double":case"float":case"number":{r=Number.parseFloat(s.default);break}case"int32":case"int64":case"integer":{r=Number.parseInt(s.default,10);break}default:{r=s.default;break}}let o;c?o={default:r,type:e}:t?o={default:r,format:e,type:d[e]}:o={$ref:`#/components/schemas/${e}`};let p=a?{items:{...o},type:"array"}:{...o};e===""&&(p=void 0);let m=s.description.trim().replace(h,"");return m===""&&(m=void 0),{description:m,name:s.name,rawType:n,required:!s.optional,schema:p}},"parseDescription"),P=i((s,n)=>s.map(a=>{const e=O(a);let c="";switch(e.name&&(c+=e.name),e.description&&(c+=` ${e.description.trim()}`),a.tag){case"bodyComponent":return{requestBody:{$ref:`#/components/requestBodies/${e.rawType}`}};case"bodyContent":return{requestBody:{content:{[e.name.replace(String.raw`*\/*`,"*/*")]:{schema:e.schema}}}};case"bodyDescription":return{requestBody:{description:c}};case"bodyExample":{const[t,r]=e.name.split(".");return{requestBody:{content:{[t]:{examples:{[r]:{$ref:`#/components/examples/${e.rawType}`}}}}}}}case"bodyRequired":return{requestBody:{required:!0}};case"callback":return{callbacks:{[e.name]:{$ref:`#/components/callbacks/${e.rawType}`}}};case"cookieParam":case"headerParam":case"pathParam":case"queryParam":return{parameters:[{description:e.description,in:a.tag.replace(T,""),name:e.name,required:e.required,schema:e.schema}]};case"deprecated":return{deprecated:!0};case"description":case"operationId":case"summary":return{[a.tag]:c};case"externalDocs":return{externalDocs:{description:e.description,url:e.name}};case"paramComponent":return{parameters:[{$ref:`#/components/parameters/${e.rawType}`}]};case"response":return{responses:{[e.name]:{description:e.description}}};case"responseComponent":return{responses:{[e.name]:{$ref:`#/components/responses/${e.rawType}`}}};case"responseContent":{const[t,r]=e.name.split(".");return{responses:{[t]:{content:{[r]:{schema:e.schema}}}}}}case"responseExample":{const[t,r,o]=e.name.split(".");return{responses:{[t]:{content:{[r]:{examples:{[o]:{$ref:`#/components/examples/${e.rawType}`}}}}}}}}case"responseHeader":{const[t,r]=e.name.split(".");return{responses:{[t]:{headers:{[r]:{description:e.description,schema:e.schema}}}}}}case"responseHeaderComponent":{const[t,r]=e.name.split(".");return{responses:{[t]:{headers:{[r]:{$ref:`#/components/headers/${e.rawType}`}}}}}}case"responseLink":{const[t,r]=e.name.split(".");return{responses:{[t]:{links:{[r]:{$ref:`#/components/links/${e.rawType}`}}}}}}case"security":{const[t,r]=e.name.split(".");let o=[];return r&&(o=[r]),{security:{[t]:o}}}case"server":return{servers:[{description:e.description,url:e.name}]};case"tag":return{tags:[c]};default:return{}}}),"tagsToObjects"),S=i((s,n)=>y(s,{spacing:"preserve"}).filter(a=>w.test(a.description.trim())).map(a=>{const e=a.tags.length+1,c=b({},...P(a.tags,n),f);k(c);const[t,r]=a.description.split(" "),o={[r.trim()]:{[t.toLowerCase().trim()]:{...c}}},p=JSON.parse(JSON.stringify({paths:o}));return{loc:e,spec:p}}),"commentsToOpenApi");export{S as default};
@@ -0,0 +1 @@
1
+ "use strict";var l=Object.defineProperty;var u=(r,n)=>l(r,"name",{value:n,configurable:!0});const y=require("comment-parser"),b=require("lodash.mergewith"),f=require("./customizer-DUz3nxAJ.cjs"),g=u(r=>r&&typeof r=="object"&&"default"in r?r.default:r,"_interopDefaultCompat"),$=g(b);var h=Object.defineProperty,p=u((r,n)=>h(r,"name",{value:n,configurable:!0}),"p");const T=/\[\]$/,w=/^- /u,q=/Param$/u,k=/^(GET|PUT|POST|DELETE|OPTIONS|HEAD|PATCH|TRACE) \/.*$/,O=p(r=>{r.security&&(r.security=Object.keys(r.security).map(n=>({[n]:r.security[n]})))},"fixSecurityObject"),P=new Set(["array","boolean","integer","number","object","string"]),d={binary:"string",byte:"string",date:"string","date-time":"string",double:"number",float:"number",int32:"integer",int64:"integer",password:"string"},x=p(r=>{const n=r.type,a=n.endsWith("[]"),e=n.replace(T,""),o=P.has(e),t=Object.keys(d).includes(e);let s;if(r.default)switch(e){case"double":case"float":case"number":{s=Number.parseFloat(r.default);break}case"int32":case"int64":case"integer":{s=Number.parseInt(r.default,10);break}default:{s=r.default;break}}let c;o?c={default:s,type:e}:t?c={default:s,format:e,type:d[e]}:c={$ref:`#/components/schemas/${e}`};let i=a?{items:{...c},type:"array"}:{...c};e===""&&(i=void 0);let m=r.description.trim().replace(w,"");return m===""&&(m=void 0),{description:m,name:r.name,rawType:n,required:!r.optional,schema:i}},"parseDescription"),C=p((r,n)=>r.map(a=>{const e=x(a);let o="";switch(e.name&&(o+=e.name),e.description&&(o+=` ${e.description.trim()}`),a.tag){case"bodyComponent":return{requestBody:{$ref:`#/components/requestBodies/${e.rawType}`}};case"bodyContent":return{requestBody:{content:{[e.name.replace(String.raw`*\/*`,"*/*")]:{schema:e.schema}}}};case"bodyDescription":return{requestBody:{description:o}};case"bodyExample":{const[t,s]=e.name.split(".");return{requestBody:{content:{[t]:{examples:{[s]:{$ref:`#/components/examples/${e.rawType}`}}}}}}}case"bodyRequired":return{requestBody:{required:!0}};case"callback":return{callbacks:{[e.name]:{$ref:`#/components/callbacks/${e.rawType}`}}};case"cookieParam":case"headerParam":case"pathParam":case"queryParam":return{parameters:[{description:e.description,in:a.tag.replace(q,""),name:e.name,required:e.required,schema:e.schema}]};case"deprecated":return{deprecated:!0};case"description":case"operationId":case"summary":return{[a.tag]:o};case"externalDocs":return{externalDocs:{description:e.description,url:e.name}};case"paramComponent":return{parameters:[{$ref:`#/components/parameters/${e.rawType}`}]};case"response":return{responses:{[e.name]:{description:e.description}}};case"responseComponent":return{responses:{[e.name]:{$ref:`#/components/responses/${e.rawType}`}}};case"responseContent":{const[t,s]=e.name.split(".");return{responses:{[t]:{content:{[s]:{schema:e.schema}}}}}}case"responseExample":{const[t,s,c]=e.name.split(".");return{responses:{[t]:{content:{[s]:{examples:{[c]:{$ref:`#/components/examples/${e.rawType}`}}}}}}}}case"responseHeader":{const[t,s]=e.name.split(".");return{responses:{[t]:{headers:{[s]:{description:e.description,schema:e.schema}}}}}}case"responseHeaderComponent":{const[t,s]=e.name.split(".");return{responses:{[t]:{headers:{[s]:{$ref:`#/components/headers/${e.rawType}`}}}}}}case"responseLink":{const[t,s]=e.name.split(".");return{responses:{[t]:{links:{[s]:{$ref:`#/components/links/${e.rawType}`}}}}}}case"security":{const[t,s]=e.name.split(".");let c=[];return s&&(c=[s]),{security:{[t]:c}}}case"server":return{servers:[{description:e.description,url:e.name}]};case"tag":return{tags:[o]};default:return{}}}),"tagsToObjects"),E=p((r,n)=>y.parse(r,{spacing:"preserve"}).filter(a=>k.test(a.description.trim())).map(a=>{const e=a.tags.length+1,o=$({},...C(a.tags,n),f.o);O(o);const[t,s]=a.description.split(" "),c={[s.trim()]:{[t.toLowerCase().trim()]:{...o}}},i=JSON.parse(JSON.stringify({paths:c}));return{loc:e,spec:i}}),"commentsToOpenApi");module.exports=E;
@@ -0,0 +1 @@
1
+ "use strict";var p=Object.defineProperty;var n=(e,s)=>p(e,"name",{value:s,configurable:!0});const y=require("node:fs"),h=require("node:path"),d=require("yaml"),m=require("./yamlLoc-DyGcp8YC.cjs"),l=n(e=>e&&typeof e=="object"&&"default"in e?e.default:e,"_interopDefaultCompat"),_=l(h),b=l(d);var j=Object.defineProperty,f=n((e,s)=>j(e,"name",{value:s,configurable:!0}),"s");const i=new Set(["components","externalDocs","info","openapi","paths","security","servers","tags"]);class x extends Error{static{n(this,"h")}static{f(this,"ParseError")}filePath}const P=f((e,s,u)=>{const o=y.readFileSync(e,{encoding:"utf8"}),a=_.extname(e);if(a===".yaml"||a===".yml"){const t=b.parse(o),c=Object.keys(t).filter(r=>!i.has(r));if(c.length>0){const r=new x(`Unexpected keys: ${c.join(", ")}`);throw r.filePath=e,r}return Object.keys(t).some(r=>i.has(r))?[{loc:m(o),spec:t}]:[]}try{return s(o,u)}catch(t){throw t.filePath=e,t}},"parseFile");module.exports=P;
@@ -0,0 +1 @@
1
+ var p=Object.defineProperty;var n=(e,o)=>p(e,"name",{value:o,configurable:!0});import{readFileSync as m}from"node:fs";import h from"node:path";import y from"yaml";import u from"./yamlLoc-C2tVIYaz.mjs";var d=Object.defineProperty,f=n((e,o)=>d(e,"name",{value:o,configurable:!0}),"s");const i=new Set(["components","externalDocs","info","openapi","paths","security","servers","tags"]);class x extends Error{static{n(this,"h")}static{f(this,"ParseError")}filePath}const w=f((e,o,l)=>{const s=m(e,{encoding:"utf8"}),a=h.extname(e);if(a===".yaml"||a===".yml"){const t=y.parse(s),c=Object.keys(t).filter(r=>!i.has(r));if(c.length>0){const r=new x(`Unexpected keys: ${c.join(", ")}`);throw r.filePath=e,r}return Object.keys(t).some(r=>i.has(r))?[{loc:u(s),spec:t}]:[]}try{return o(s,l)}catch(t){throw t.filePath=e,t}},"parseFile");export{w as default};
@@ -0,0 +1,10 @@
1
+ "use strict";var d=Object.defineProperty;var p=(e,t)=>d(e,"name",{value:t,configurable:!0});const v=require("comment-parser"),b=require("lodash.mergewith"),O=require("yaml"),j=require("./customizer-DUz3nxAJ.cjs"),y=p(e=>e&&typeof e=="object"&&"default"in e?e.default:e,"_interopDefaultCompat"),l=y(b),S=y(O);var w=Object.defineProperty,u=p((e,t)=>w(e,"name",{value:t,configurable:!0}),"o");const m=u((e,t)=>l({},e,t,(r,s)=>{if(s===null)return r}),"mergeDeep"),E=u(e=>Object.keys(e).map(t=>e[t]).every(t=>typeof t=="object"&&Object.keys(t).every(r=>!(r in t))),"hasEmptyProperty"),f=u((e,t)=>t.some(r=>e.name===r.name),"isTagPresentInTags"),D=u(e=>{switch(e.tag){case"asyncapi":return"v4";case"openapi":return"v3";case"swagger":return"v2";default:return"v2"}},"getSwaggerVersionFromSpec");var P=Object.defineProperty,$=p((e,t)=>P(e,"name",{value:t,configurable:!0}),"e");const A=$((e,t,r)=>{if(r==="x-webhooks"&&(e[r]=t[r]),!r.startsWith("x-"))if(["components","consumes","produces","paths","schemas","securityDefinitions","responses","parameters","definitions","channels"].includes(r))Object.keys(t[r]).forEach(s=>{e[r][s]=m(e[r][s],t[r][s])});else if(r==="tags"){const{tags:s}=t;Array.isArray(s)?s.forEach(n=>{f(n,e.tags)||e.tags.push(n)}):f(s,e.tags)||e.tags.push(s)}else if(r==="security"){const{security:s}=t;e.security=s}else r.startsWith("/")&&(e.paths[r]=m(e.paths[r],t[r]))},"organizeSwaggerObject");var T=Object.defineProperty,h=p((e,t)=>T(e,"name",{value:t,configurable:!0}),"c");const W={v2:["paths","definitions","responses","parameters","securityDefinitions"],v3:["paths","definitions","responses","parameters","securityDefinitions","components"],v4:["components","channels"]},k=h((e,t)=>e.map(r=>{const s=r.description!==""||r.name.startsWith("/")||r.name.endsWith(":");if((r.tag==="openapi"||r.tag==="swagger"||r.tag==="asyncapi")&&s){let n=r.description;(r.name.startsWith("/")||r.name.endsWith(":"))&&(n=n.trim()===""?r.name:`${r.name}
2
+ ${n}`);const a=S.parseDocument(n);if(a.errors.length>0){a.errors.forEach(c=>{c.annotation=n});let o="Error parsing YAML in @openapi spec:";throw o+=t?a.errors.map(c=>`${c.toString()}
3
+ Imbedded within:
4
+ \`\`\`
5
+ ${c.annotation?.replaceAll(`
6
+ `,`
7
+ `)}
8
+ \`\`\``).join(`
9
+ `):a.errors.map(c=>c.toString()).join(`
10
+ `),new Error(o)}const i=a.toJSON(),g={tags:[]};return W[D(r)].forEach(o=>{g[o]=g[o]??{}}),Object.keys(i).forEach(o=>{A(g,i,o)}),g}return{}}),"tagsToObjects"),_=h((e,t)=>v.parse(e,{spacing:"preserve"}).map(r=>{const s=r.tags.length+1,n=l({},...k(r.tags,t),j.o);["definitions","responses","parameters","securityDefinitions","components","tags"].forEach(i=>{n[i]!==void 0&&E(n[i])&&delete n[i]});const a=JSON.parse(JSON.stringify(n));return{loc:s,spec:a}}),"commentsToOpenApi");module.exports=_;
@@ -0,0 +1,10 @@
1
+ var l=Object.defineProperty;var m=(r,t)=>l(r,"name",{value:t,configurable:!0});import{parse as d}from"comment-parser";import h from"lodash.mergewith";import v from"yaml";import{o as b}from"./customizer-COfd-Xr1.mjs";var O=Object.defineProperty,g=m((r,t)=>O(r,"name",{value:t,configurable:!0}),"o");const u=g((r,t)=>h({},r,t,(e,s)=>{if(s===null)return e}),"mergeDeep"),j=g(r=>Object.keys(r).map(t=>r[t]).every(t=>typeof t=="object"&&Object.keys(t).every(e=>!(e in t))),"hasEmptyProperty"),f=g((r,t)=>t.some(e=>r.name===e.name),"isTagPresentInTags"),S=g(r=>{switch(r.tag){case"asyncapi":return"v4";case"openapi":return"v3";case"swagger":return"v2";default:return"v2"}},"getSwaggerVersionFromSpec");var w=Object.defineProperty,E=m((r,t)=>w(r,"name",{value:t,configurable:!0}),"e");const D=E((r,t,e)=>{if(e==="x-webhooks"&&(r[e]=t[e]),!e.startsWith("x-"))if(["components","consumes","produces","paths","schemas","securityDefinitions","responses","parameters","definitions","channels"].includes(e))Object.keys(t[e]).forEach(s=>{r[e][s]=u(r[e][s],t[e][s])});else if(e==="tags"){const{tags:s}=t;Array.isArray(s)?s.forEach(n=>{f(n,r.tags)||r.tags.push(n)}):f(s,r.tags)||r.tags.push(s)}else if(e==="security"){const{security:s}=t;r.security=s}else e.startsWith("/")&&(r.paths[e]=u(r.paths[e],t[e]))},"organizeSwaggerObject");var P=Object.defineProperty,y=m((r,t)=>P(r,"name",{value:t,configurable:!0}),"c");const $={v2:["paths","definitions","responses","parameters","securityDefinitions"],v3:["paths","definitions","responses","parameters","securityDefinitions","components"],v4:["components","channels"]},A=y((r,t)=>r.map(e=>{const s=e.description!==""||e.name.startsWith("/")||e.name.endsWith(":");if((e.tag==="openapi"||e.tag==="swagger"||e.tag==="asyncapi")&&s){let n=e.description;(e.name.startsWith("/")||e.name.endsWith(":"))&&(n=n.trim()===""?e.name:`${e.name}
2
+ ${n}`);const a=v.parseDocument(n);if(a.errors.length>0){a.errors.forEach(p=>{p.annotation=n});let o="Error parsing YAML in @openapi spec:";throw o+=t?a.errors.map(p=>`${p.toString()}
3
+ Imbedded within:
4
+ \`\`\`
5
+ ${p.annotation?.replaceAll(`
6
+ `,`
7
+ `)}
8
+ \`\`\``).join(`
9
+ `):a.errors.map(p=>p.toString()).join(`
10
+ `),new Error(o)}const i=a.toJSON(),c={tags:[]};return $[S(e)].forEach(o=>{c[o]=c[o]??{}}),Object.keys(i).forEach(o=>{D(c,i,o)}),c}return{}}),"tagsToObjects"),J=y((r,t)=>d(r,{spacing:"preserve"}).map(e=>{const s=e.tags.length+1,n=h({},...A(e.tags,t),b);["definitions","responses","parameters","securityDefinitions","components","tags"].forEach(i=>{n[i]!==void 0&&j(n[i])&&delete n[i]});const a=JSON.parse(JSON.stringify(n));return{loc:s,spec:a}}),"commentsToOpenApi");export{J as default};
@@ -0,0 +1 @@
1
+ var t=Object.defineProperty;var e=(s,a)=>t(s,"name",{value:a,configurable:!0});import c from"@apidevtools/swagger-parser";const n=["coverage/**",".github/**","**/*.d.ts","**/test{,s}/**","**/test{,-*}.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}","**/*{.,-}test.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}","**/__tests__/**","**/{ava,babel,nyc}.config.{js,cjs,mjs}","**/jest.config.{js,cjs,mjs,ts}","**/{karma,rollup,webpack}.config.js","**/.{eslint,mocha}rc.{js,cjs}","**/.{travis,yarnrc}.yml","**/{docker-compose,docker}.yml","**/.yamllint.{yaml,yml}","**/node_modules/**","**/{pnpm-workspace,pnpm-lock}.yaml","**/{package,package-lock}.json","**/yarn.lock","**/package.json5","**/.next/**"];var o=Object.defineProperty,l=e((s,a)=>o(s,"name",{value:a,configurable:!0}),"a");const r=l(async s=>{await c.validate(s)},"validate");export{n as D,r};
@@ -0,0 +1 @@
1
+ "use strict";var e=Object.defineProperty;var a=(s,t)=>e(s,"name",{value:t,configurable:!0});const c=require("@apidevtools/swagger-parser"),o=a(s=>s&&typeof s=="object"&&"default"in s?s.default:s,"_interopDefaultCompat"),l=o(c),n=["coverage/**",".github/**","**/*.d.ts","**/test{,s}/**","**/test{,-*}.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}","**/*{.,-}test.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}","**/__tests__/**","**/{ava,babel,nyc}.config.{js,cjs,mjs}","**/jest.config.{js,cjs,mjs,ts}","**/{karma,rollup,webpack}.config.js","**/.{eslint,mocha}rc.{js,cjs}","**/.{travis,yarnrc}.yml","**/{docker-compose,docker}.yml","**/.yamllint.{yaml,yml}","**/node_modules/**","**/{pnpm-workspace,pnpm-lock}.yaml","**/{package,package-lock}.json","**/yarn.lock","**/package.json5","**/.next/**"];var r=Object.defineProperty,j=a((s,t)=>r(s,"name",{value:t,configurable:!0}),"a");const m=j(async s=>{await l.validate(s)},"validate");exports.D=n;exports.r=m;
@@ -0,0 +1 @@
1
+ var l=Object.defineProperty;var r=(t,e)=>l(t,"name",{value:e,configurable:!0});var a=Object.defineProperty,n=r((t,e)=>a(t,"name",{value:e,configurable:!0}),"n");const s=/\r\n|\r|\n/u,i=/^\s*(#\s*(?:\S.*)?)?$/u,u=n(t=>t.split(s).filter(e=>i.test(e)?!1:e.trim().length>0).length,"yamlLoc");export{u as default};
@@ -0,0 +1 @@
1
+ "use strict";var s=Object.defineProperty;var r=(t,e)=>s(t,"name",{value:e,configurable:!0});var l=Object.defineProperty,n=r((t,e)=>l(t,"name",{value:e,configurable:!0}),"n");const a=/\r\n|\r|\n/u,i=/^\s*(#\s*(?:\S.*)?)?$/u,o=n(t=>t.split(a).filter(e=>i.test(e)?!1:e.trim().length>0).length,"yamlLoc");module.exports=o;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visulima/jsdoc-open-api",
3
- "version": "3.0.0-alpha.12",
3
+ "version": "3.0.0-alpha.14",
4
4
  "description": "Generates swagger doc based on JSDoc.",
5
5
  "keywords": [
6
6
  "api",
@@ -18,6 +18,11 @@
18
18
  "bugs": {
19
19
  "url": "https://github.com/visulima/visulima/issues"
20
20
  },
21
+ "license": "MIT",
22
+ "author": {
23
+ "name": "Daniel Bannert",
24
+ "email": "d.bannert@anolilab.de"
25
+ },
21
26
  "repository": {
22
27
  "type": "git",
23
28
  "url": "https://github.com/visulima/visulima.git",
@@ -33,12 +38,39 @@
33
38
  "url": "https://anolilab.com/support"
34
39
  }
35
40
  ],
36
- "license": "MIT",
37
- "author": {
38
- "name": "Daniel Bannert",
39
- "email": "d.bannert@anolilab.de"
41
+ "bin": {
42
+ "jsdoc-open-api": "./bin/index.js"
40
43
  },
44
+ "files": [
45
+ "bin/**",
46
+ "cli/**",
47
+ "dist/**",
48
+ "README.md",
49
+ "CHANGELOG.md",
50
+ "LICENSE.md"
51
+ ],
52
+ "os": [
53
+ "darwin",
54
+ "linux",
55
+ "win32"
56
+ ],
41
57
  "sideEffects": false,
58
+ "main": "dist/index.cjs",
59
+ "module": "dist/index.mjs",
60
+ "types": "dist/index.d.ts",
61
+ "typesVersions": {
62
+ ">=5.0": {
63
+ ".": [
64
+ "./dist/index.d.ts"
65
+ ],
66
+ "cli": [
67
+ "./dist/cli/index.d.ts"
68
+ ],
69
+ "cli/commander": [
70
+ "./dist/cli/commander/index.d.ts"
71
+ ]
72
+ }
73
+ },
42
74
  "exports": {
43
75
  ".": {
44
76
  "import": {
@@ -72,36 +104,13 @@
72
104
  },
73
105
  "./package.json": "./package.json"
74
106
  },
75
- "main": "dist/index.cjs",
76
- "module": "dist/index.mjs",
77
- "types": "dist/index.d.ts",
78
- "typesVersions": {
79
- ">=5.0": {
80
- ".": [
81
- "./dist/index.d.ts"
82
- ],
83
- "cli": [
84
- "./dist/cli/index.d.ts"
85
- ],
86
- "cli/commander": [
87
- "./dist/cli/commander/index.d.ts"
88
- ]
89
- }
90
- },
91
- "bin": {
92
- "jsdoc-open-api": "./bin/index.js"
107
+ "publishConfig": {
108
+ "access": "public",
109
+ "provenance": true
93
110
  },
94
- "files": [
95
- "bin/**",
96
- "cli/**",
97
- "dist/**",
98
- "README.md",
99
- "CHANGELOG.md",
100
- "LICENSE.md"
101
- ],
102
111
  "dependencies": {
103
112
  "@apidevtools/swagger-parser": "^12.1.0",
104
- "@visulima/fs": "5.0.0-alpha.13",
113
+ "@visulima/fs": "5.0.0-alpha.15",
105
114
  "comment-parser": "1.4.6",
106
115
  "lodash.mergewith": "^4.6.2",
107
116
  "yaml": "2.8.4"
@@ -113,14 +122,5 @@
113
122
  },
114
123
  "engines": {
115
124
  "node": "^22.14.0 || >=24.10.0"
116
- },
117
- "os": [
118
- "darwin",
119
- "linux",
120
- "win32"
121
- ],
122
- "publishConfig": {
123
- "access": "public",
124
- "provenance": true
125
125
  }
126
126
  }
@@ -1,61 +0,0 @@
1
- const objectMerge = (a, b) => {
2
- Object.keys(b).forEach((key) => {
3
- if (a[key] === void 0) {
4
- a[key] = {
5
- ...b[key]
6
- };
7
- } else {
8
- Object.keys(b[key]).forEach((subKey) => {
9
- a[key][subKey] = {
10
- ...a[key][subKey],
11
- ...b[key][subKey]
12
- };
13
- });
14
- }
15
- });
16
- };
17
-
18
- class SpecBuilder {
19
- components;
20
- externalDocs;
21
- info;
22
- openapi;
23
- paths;
24
- security;
25
- servers;
26
- tags;
27
- constructor(baseDefinition) {
28
- this.openapi = baseDefinition.openapi;
29
- this.info = baseDefinition.info;
30
- this.paths = baseDefinition.paths ?? {};
31
- if (baseDefinition.servers) {
32
- this.servers = baseDefinition.servers;
33
- }
34
- if (baseDefinition.components) {
35
- this.components = baseDefinition.components;
36
- }
37
- if (baseDefinition.security) {
38
- this.security = baseDefinition.security;
39
- }
40
- if (baseDefinition.tags) {
41
- this.tags = baseDefinition.tags;
42
- }
43
- if (baseDefinition.externalDocs) {
44
- this.externalDocs = baseDefinition.externalDocs;
45
- }
46
- }
47
- addData(parsedFile) {
48
- parsedFile.forEach((file) => {
49
- const { components, paths, ...rest } = file;
50
- objectMerge(this, {
51
- components: components ?? {},
52
- paths: paths ?? {}
53
- });
54
- Object.entries(rest).forEach(([key, value]) => {
55
- this[key] = value;
56
- });
57
- });
58
- }
59
- }
60
-
61
- export { SpecBuilder as default };
@@ -1,63 +0,0 @@
1
- 'use strict';
2
-
3
- const objectMerge = (a, b) => {
4
- Object.keys(b).forEach((key) => {
5
- if (a[key] === void 0) {
6
- a[key] = {
7
- ...b[key]
8
- };
9
- } else {
10
- Object.keys(b[key]).forEach((subKey) => {
11
- a[key][subKey] = {
12
- ...a[key][subKey],
13
- ...b[key][subKey]
14
- };
15
- });
16
- }
17
- });
18
- };
19
-
20
- class SpecBuilder {
21
- components;
22
- externalDocs;
23
- info;
24
- openapi;
25
- paths;
26
- security;
27
- servers;
28
- tags;
29
- constructor(baseDefinition) {
30
- this.openapi = baseDefinition.openapi;
31
- this.info = baseDefinition.info;
32
- this.paths = baseDefinition.paths ?? {};
33
- if (baseDefinition.servers) {
34
- this.servers = baseDefinition.servers;
35
- }
36
- if (baseDefinition.components) {
37
- this.components = baseDefinition.components;
38
- }
39
- if (baseDefinition.security) {
40
- this.security = baseDefinition.security;
41
- }
42
- if (baseDefinition.tags) {
43
- this.tags = baseDefinition.tags;
44
- }
45
- if (baseDefinition.externalDocs) {
46
- this.externalDocs = baseDefinition.externalDocs;
47
- }
48
- }
49
- addData(parsedFile) {
50
- parsedFile.forEach((file) => {
51
- const { components, paths, ...rest } = file;
52
- objectMerge(this, {
53
- components: components ?? {},
54
- paths: paths ?? {}
55
- });
56
- Object.entries(rest).forEach(([key, value]) => {
57
- this[key] = value;
58
- });
59
- });
60
- }
61
- }
62
-
63
- module.exports = SpecBuilder;