@visulima/jsdoc-open-api 3.0.0-alpha.24 → 3.0.0-alpha.25

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 (23) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/bin/index.js +1 -1
  3. package/dist/cli/commander/index.cjs +1 -1
  4. package/dist/cli/commander/index.mjs +1 -1
  5. package/dist/cli/index.cjs +1 -1
  6. package/dist/cli/index.mjs +1 -1
  7. package/dist/index.cjs +1 -1
  8. package/dist/index.mjs +1 -1
  9. package/dist/packem_shared/{SwaggerCompilerPlugin-lwIg0m84.cjs → SwaggerCompilerPlugin-CQiTDSm2.cjs} +1 -1
  10. package/dist/packem_shared/{SwaggerCompilerPlugin-CLoD91_H.mjs → SwaggerCompilerPlugin-CTiomx-N.mjs} +1 -1
  11. package/dist/packem_shared/{generateCommand-DPOEw62Z.cjs → generateCommand-BtCK1O88.cjs} +1 -1
  12. package/dist/packem_shared/{generateCommand-DLJ2Ac1D.mjs → generateCommand-CRR2nmxN.mjs} +3 -3
  13. package/dist/packem_shared/{generateCommand-Bn19mSDL.mjs → generateCommand-DWXSUZxZ.mjs} +1 -1
  14. package/dist/packem_shared/{generateCommand-BQuj1FCe.cjs → generateCommand-IDN6r1fR.cjs} +1 -1
  15. package/dist/packem_shared/jsDocumentCommentsToOpenApi-C9inxd9m.mjs +1 -0
  16. package/dist/packem_shared/jsDocumentCommentsToOpenApi-D859Nr79.cjs +1 -0
  17. package/dist/packem_shared/swaggerJsDocumentCommentsToOpenApi-CPuUxW0D.cjs +10 -0
  18. package/dist/packem_shared/swaggerJsDocumentCommentsToOpenApi-Dy8pOPTp.mjs +10 -0
  19. package/package.json +42 -42
  20. package/dist/packem_shared/jsDocumentCommentsToOpenApi-Bvfi25DQ.mjs +0 -1
  21. package/dist/packem_shared/jsDocumentCommentsToOpenApi-DBYlHL5i.cjs +0 -1
  22. package/dist/packem_shared/swaggerJsDocumentCommentsToOpenApi-Bo1geBuG.cjs +0 -10
  23. package/dist/packem_shared/swaggerJsDocumentCommentsToOpenApi-xKOqHvN2.mjs +0 -10
package/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ ## @visulima/jsdoc-open-api [3.0.0-alpha.25](https://github.com/visulima/visulima/compare/@visulima/jsdoc-open-api@3.0.0-alpha.24...@visulima/jsdoc-open-api@3.0.0-alpha.25) (2026-05-26)
2
+
3
+ ### Miscellaneous Chores
4
+
5
+ * **ci-stability:** green CI across vis, native, lint, tests, attw ([#651](https://github.com/visulima/visulima/issues/651)) ([d4eb684](https://github.com/visulima/visulima/commit/d4eb684b5f75c818c9251048c605a0ed54a268e3))
6
+ * **repo:** apply eslint --fix and prettier --fix across packages ([#650](https://github.com/visulima/visulima/issues/650)) ([2e26a84](https://github.com/visulima/visulima/commit/2e26a84774f218f21345e9a8ecd68236b6542743)), closes [#620](https://github.com/visulima/visulima/issues/620)
7
+ * **repo:** sort package.json keys across all packages ([e1fd9ab](https://github.com/visulima/visulima/commit/e1fd9ab467ef96a98c777da1572ff6a50fcf7e71))
8
+
9
+ ### Tests
10
+
11
+ * **repo:** add dist runtime + types integration tests ([32ee300](https://github.com/visulima/visulima/commit/32ee300b7184117a0ddf9f9d390f75f8932d5ed9))
12
+ * **repo:** cover bin entry points in dist integration suite ([7479ef1](https://github.com/visulima/visulima/commit/7479ef113cf5ccef25692619082afb1b6a0eecab))
13
+
14
+
15
+ ### Dependencies
16
+
17
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.26
18
+
1
19
  ## @visulima/jsdoc-open-api [3.0.0-alpha.24](https://github.com/visulima/visulima/compare/@visulima/jsdoc-open-api@3.0.0-alpha.23...@visulima/jsdoc-open-api@3.0.0-alpha.24) (2026-05-20)
2
20
 
3
21
 
package/bin/index.js CHANGED
@@ -4,7 +4,7 @@ const { exit } = require("node:process");
4
4
  // eslint-disable-next-line import/no-extraneous-dependencies
5
5
  const { Command } = require("commander");
6
6
 
7
- const { generateCommand, initCommand } = require("../dist/cli/commander");
7
+ const { generateCommand, initCommand } = require("../dist/cli/commander/index.cjs");
8
8
 
9
9
  // eslint-disable-next-line no-underscore-dangle
10
10
  const package_ = require("../package.json");
@@ -1 +1 @@
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
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../../packem_shared/generateCommand-IDN6r1fR.cjs"),t=require("../../packem_shared/initCommand-DAcI_ilX.cjs");exports.generateCommand=e;exports.initCommand=t;
@@ -1 +1 @@
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
+ import{default as m}from"../../packem_shared/generateCommand-DWXSUZxZ.mjs";import{default as t}from"../../packem_shared/initCommand-Bm4veOwd.mjs";export{m as generateCommand,t as initCommand};
@@ -1 +1 @@
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
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../packem_shared/generateCommand-BtCK1O88.cjs"),t=require("../packem_shared/initCommand-CiV7G3q4.cjs");exports.generateCommand=e;exports.initCommand=t;
@@ -1 +1 @@
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};
1
+ import{default as m}from"../packem_shared/generateCommand-CRR2nmxN.mjs";import{default as t}from"../packem_shared/initCommand-CwoPwelm.mjs";export{m as generateCommand,t as initCommand};
package/dist/index.cjs CHANGED
@@ -1 +1 @@
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;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./packem_shared/jsDocumentCommentsToOpenApi-D859Nr79.cjs"),r=require("./packem_shared/parseFile-C7tyTcIn.cjs"),i=require("./packem_shared/SpecBuilder-CR4EZk93.cjs"),o=require("./packem_shared/swaggerJsDocumentCommentsToOpenApi-CPuUxW0D.cjs"),u=require("./packem_shared/yamlLoc-DyGcp8YC.cjs"),m=require("./packem_shared/SwaggerCompilerPlugin-CQiTDSm2.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 +1 @@
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};
1
+ import{default as r}from"./packem_shared/jsDocumentCommentsToOpenApi-C9inxd9m.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-Dy8pOPTp.mjs";import{default as u}from"./packem_shared/yamlLoc-C2tVIYaz.mjs";import{default as n}from"./packem_shared/SwaggerCompilerPlugin-CTiomx-N.mjs";export{p as SpecBuilder,n as SwaggerCompilerPlugin,r as jsDocumentCommentsToOpenApi,t as parseFile,s as swaggerJsDocumentCommentsToOpenApi,u as yamlLoc};
@@ -1 +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;
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-D859Nr79.cjs"),f=require("./parseFile-C7tyTcIn.cjs"),S=require("./SpecBuilder-CR4EZk93.cjs"),x=require("./swaggerJsDocumentCommentsToOpenApi-CPuUxW0D.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;
@@ -1 +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};
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 j}from"./validate-_k84qawx.mjs";import $ from"./jsDocumentCommentsToOpenApi-C9inxd9m.mjs";import p from"./parseFile-CtAVjmPd.mjs";import k from"./SpecBuilder-DjnDJFpv.mjs";import x from"./swaggerJsDocumentCommentsToOpenApi-Dy8pOPTp.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([...j,...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,$,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};
@@ -1,4 +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"}
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-D859Nr79.cjs"),v=require("./parseFile-C7tyTcIn.cjs"),C=require("./SpecBuilder-CR4EZk93.cjs"),O=require("./swaggerJsDocumentCommentsToOpenApi-CPuUxW0D.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
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
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
4
  Swagger specification is ready, check the "${a}" file.`)},"generateCommand");module.exports=F;
@@ -1,4 +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(`
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 V from"./jsDocumentCommentsToOpenApi-C9inxd9m.mjs";import p from"./parseFile-CtAVjmPd.mjs";import L from"./SpecBuilder-DjnDJFpv.mjs";import N from"./swaggerJsDocumentCommentsToOpenApi-Dy8pOPTp.mjs";var P=Object.defineProperty,U=g((t,i)=>P(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 L(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,V,e.verbose);a.addData(w.map(m=>m.spec));const v=p(c,N,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
4
  Swagger specification is ready, check the "${s}" file.`)},"generateCommand");export{G as default};
@@ -1 +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};
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-CRR2nmxN.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};
@@ -1 +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;
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-BtCK1O88.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 l=Object.defineProperty;var u=(s,n)=>l(s,"name",{value:n,configurable:!0});import{parse as y}from"comment-parser";import{mergeWith as f}from"es-toolkit";import{o as b}from"./customizer-COfd-Xr1.mjs";var g=Object.defineProperty,m=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=m(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=m(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 i=s.description.trim().replace(h,"");return i===""&&(i=void 0),{description:i,name:s.name,rawType:n,required:!s.optional,schema:p}},"parseDescription"),P=m((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"),j=m((s,n)=>y(s,{spacing:"preserve"}).filter(a=>w.test(a.description.trim())).map(a=>{const e=a.tags.length+1,c={};for(const i of P(a.tags,n))f(c,i,b);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{j 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("es-toolkit"),f=require("./customizer-DUz3nxAJ.cjs");var g=Object.defineProperty,m=u((r,n)=>g(r,"name",{value:n,configurable:!0}),"p");const h=/\[\]$/,$=/^- /u,T=/Param$/u,w=/^(GET|PUT|POST|DELETE|OPTIONS|HEAD|PATCH|TRACE) \/.*$/,q=m(r=>{r.security&&(r.security=Object.keys(r.security).map(n=>({[n]:r.security[n]})))},"fixSecurityObject"),k=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=m(r=>{const n=r.type,a=n.endsWith("[]"),e=n.replace(h,""),c=k.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 o;c?o={default:s,type:e}:t?o={default:s,format:e,type:d[e]}:o={$ref:`#/components/schemas/${e}`};let p=a?{items:{...o},type:"array"}:{...o};e===""&&(p=void 0);let i=r.description.trim().replace($,"");return i===""&&(i=void 0),{description:i,name:r.name,rawType:n,required:!r.optional,schema:p}},"parseDescription"),P=m((r,n)=>r.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,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(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,s]=e.name.split(".");return{responses:{[t]:{content:{[s]:{schema:e.schema}}}}}}case"responseExample":{const[t,s,o]=e.name.split(".");return{responses:{[t]:{content:{[s]:{examples:{[o]:{$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 o=[];return s&&(o=[s]),{security:{[t]:o}}}case"server":return{servers:[{description:e.description,url:e.name}]};case"tag":return{tags:[c]};default:return{}}}),"tagsToObjects"),x=m((r,n)=>y.parse(r,{spacing:"preserve"}).filter(a=>w.test(a.description.trim())).map(a=>{const e=a.tags.length+1,c={};for(const i of P(a.tags,n))b.mergeWith(c,i,f.o);q(c);const[t,s]=a.description.split(" "),o={[s.trim()]:{[t.toLowerCase().trim()]:{...c}}},p=JSON.parse(JSON.stringify({paths:o}));return{loc:e,spec:p}}),"commentsToOpenApi");module.exports=x;
@@ -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"),u=require("es-toolkit"),b=require("yaml"),O=require("./customizer-DUz3nxAJ.cjs"),j=p(e=>e&&typeof e=="object"&&"default"in e?e.default:e,"_interopDefaultCompat"),S=j(b);var w=Object.defineProperty,g=p((e,t)=>w(e,"name",{value:t,configurable:!0}),"n$1");const f=g((e,t)=>{if(t===null)return e},"ignoreNullCustomizer"),h=g((e,t)=>{const r=u.mergeWith({},e??{},f);return u.mergeWith(r,t??{},f)},"mergeDeep"),E=g(e=>Object.keys(e).map(t=>e[t]).every(t=>typeof t=="object"&&Object.keys(t).every(r=>!(r in t))),"hasEmptyProperty"),l=g((e,t)=>t.some(r=>e.name===r.name),"isTagPresentInTags"),W=g(e=>{switch(e.tag){case"asyncapi":return"v4";case"openapi":return"v3";case"swagger":return"v2";default:return"v2"}},"getSwaggerVersionFromSpec");var D=Object.defineProperty,P=p((e,t)=>D(e,"name",{value:t,configurable:!0}),"e");const T=P((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]=h(e[r][s],t[r][s])});else if(r==="tags"){const{tags:s}=t;Array.isArray(s)?s.forEach(n=>{l(n,e.tags)||e.tags.push(n)}):l(s,e.tags)||e.tags.push(s)}else if(r==="security"){const{security:s}=t;e.security=s}else r.startsWith("/")&&(e.paths[r]=h(e.paths[r],t[r]))},"organizeSwaggerObject");var k=Object.defineProperty,y=p((e,t)=>k(e,"name",{value:t,configurable:!0}),"c");const A={v2:["paths","definitions","responses","parameters","securityDefinitions"],v3:["paths","definitions","responses","parameters","securityDefinitions","components"],v4:["components","channels"]},$=y((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 o=S.parseDocument(n);if(o.errors.length>0){o.errors.forEach(c=>{c.annotation=n});let i="Error parsing YAML in @openapi spec:";throw i+=t?o.errors.map(c=>`${c.toString()}
3
+ Imbedded within:
4
+ \`\`\`
5
+ ${c.annotation?.replaceAll(`
6
+ `,`
7
+ `)}
8
+ \`\`\``).join(`
9
+ `):o.errors.map(c=>c.toString()).join(`
10
+ `),new Error(i)}const a=o.toJSON(),m={tags:[]};return A[W(r)].forEach(i=>{m[i]=m[i]??{}}),Object.keys(a).forEach(i=>{T(m,a,i)}),m}return{}}),"tagsToObjects"),q=y((e,t)=>v.parse(e,{spacing:"preserve"}).map(r=>{const s=r.tags.length+1,n={};for(const a of $(r.tags,t))u.mergeWith(n,a,O.o);["definitions","responses","parameters","securityDefinitions","components","tags"].forEach(a=>{n[a]!==void 0&&E(n[a])&&delete n[a]});const o=JSON.parse(JSON.stringify(n));return{loc:s,spec:o}}),"commentsToOpenApi");module.exports=q;
@@ -0,0 +1,10 @@
1
+ var d=Object.defineProperty;var g=(r,t)=>d(r,"name",{value:t,configurable:!0});import{parse as v}from"comment-parser";import{mergeWith as u}from"es-toolkit";import b from"yaml";import{o as O}from"./customizer-COfd-Xr1.mjs";var j=Object.defineProperty,p=g((r,t)=>j(r,"name",{value:t,configurable:!0}),"n$1");const f=p((r,t)=>{if(t===null)return r},"ignoreNullCustomizer"),h=p((r,t)=>{const e=u({},r??{},f);return u(e,t??{},f)},"mergeDeep"),S=p(r=>Object.keys(r).map(t=>r[t]).every(t=>typeof t=="object"&&Object.keys(t).every(e=>!(e in t))),"hasEmptyProperty"),l=p((r,t)=>t.some(e=>r.name===e.name),"isTagPresentInTags"),w=p(r=>{switch(r.tag){case"asyncapi":return"v4";case"openapi":return"v3";case"swagger":return"v2";default:return"v2"}},"getSwaggerVersionFromSpec");var E=Object.defineProperty,D=g((r,t)=>E(r,"name",{value:t,configurable:!0}),"e");const P=D((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(n=>{r[e][n]=h(r[e][n],t[e][n])});else if(e==="tags"){const{tags:n}=t;Array.isArray(n)?n.forEach(s=>{l(s,r.tags)||r.tags.push(s)}):l(n,r.tags)||r.tags.push(n)}else if(e==="security"){const{security:n}=t;r.security=n}else e.startsWith("/")&&(r.paths[e]=h(r.paths[e],t[e]))},"organizeSwaggerObject");var W=Object.defineProperty,y=g((r,t)=>W(r,"name",{value:t,configurable:!0}),"c");const A={v2:["paths","definitions","responses","parameters","securityDefinitions"],v3:["paths","definitions","responses","parameters","securityDefinitions","components"],v4:["components","channels"]},T=y((r,t)=>r.map(e=>{const n=e.description!==""||e.name.startsWith("/")||e.name.endsWith(":");if((e.tag==="openapi"||e.tag==="swagger"||e.tag==="asyncapi")&&n){let s=e.description;(e.name.startsWith("/")||e.name.endsWith(":"))&&(s=s.trim()===""?e.name:`${e.name}
2
+ ${s}`);const o=b.parseDocument(s);if(o.errors.length>0){o.errors.forEach(c=>{c.annotation=s});let i="Error parsing YAML in @openapi spec:";throw i+=t?o.errors.map(c=>`${c.toString()}
3
+ Imbedded within:
4
+ \`\`\`
5
+ ${c.annotation?.replaceAll(`
6
+ `,`
7
+ `)}
8
+ \`\`\``).join(`
9
+ `):o.errors.map(c=>c.toString()).join(`
10
+ `),new Error(i)}const a=o.toJSON(),m={tags:[]};return A[w(e)].forEach(i=>{m[i]=m[i]??{}}),Object.keys(a).forEach(i=>{P(m,a,i)}),m}return{}}),"tagsToObjects"),J=y((r,t)=>v(r,{spacing:"preserve"}).map(e=>{const n=e.tags.length+1,s={};for(const a of T(e.tags,t))u(s,a,O);["definitions","responses","parameters","securityDefinitions","components","tags"].forEach(a=>{s[a]!==void 0&&S(s[a])&&delete s[a]});const o=JSON.parse(JSON.stringify(s));return{loc:n,spec:o}}),"commentsToOpenApi");export{J as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visulima/jsdoc-open-api",
3
- "version": "3.0.0-alpha.24",
3
+ "version": "3.0.0-alpha.25",
4
4
  "description": "Generates swagger doc based on JSDoc.",
5
5
  "keywords": [
6
6
  "api",
@@ -18,11 +18,6 @@
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
- },
26
21
  "repository": {
27
22
  "type": "git",
28
23
  "url": "https://github.com/visulima/visulima.git",
@@ -38,39 +33,12 @@
38
33
  "url": "https://anolilab.com/support"
39
34
  }
40
35
  ],
41
- "bin": {
42
- "jsdoc-open-api": "./bin/index.js"
36
+ "license": "MIT",
37
+ "author": {
38
+ "name": "Daniel Bannert",
39
+ "email": "d.bannert@anolilab.de"
43
40
  },
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
- ],
57
41
  "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
- },
74
42
  "exports": {
75
43
  ".": {
76
44
  "import": {
@@ -104,15 +72,38 @@
104
72
  },
105
73
  "./package.json": "./package.json"
106
74
  },
107
- "publishConfig": {
108
- "access": "public",
109
- "provenance": true
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
+ }
110
90
  },
91
+ "bin": {
92
+ "jsdoc-open-api": "./bin/index.js"
93
+ },
94
+ "files": [
95
+ "bin/**",
96
+ "cli/**",
97
+ "dist/**",
98
+ "README.md",
99
+ "CHANGELOG.md",
100
+ "LICENSE.md"
101
+ ],
111
102
  "dependencies": {
112
103
  "@apidevtools/swagger-parser": "^12.1.0",
113
- "@visulima/fs": "5.0.0-alpha.25",
104
+ "@visulima/fs": "5.0.0-alpha.26",
114
105
  "comment-parser": "1.4.6",
115
- "lodash.mergewith": "^4.6.2",
106
+ "es-toolkit": "^1.46.1",
116
107
  "yaml": "2.9.0"
117
108
  },
118
109
  "optionalDependencies": {
@@ -122,5 +113,14 @@
122
113
  },
123
114
  "engines": {
124
115
  "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 +0,0 @@
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};
@@ -1 +0,0 @@
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;
@@ -1,10 +0,0 @@
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=_;
@@ -1,10 +0,0 @@
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};