@visulima/jsdoc-open-api 3.0.0-alpha.12 → 3.0.0-alpha.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/cli/commander/index.cjs +1 -11
- package/dist/cli/commander/index.mjs +1 -2
- package/dist/cli/index.cjs +1 -11
- package/dist/cli/index.mjs +1 -2
- package/dist/index.cjs +1 -19
- package/dist/index.mjs +1 -6
- package/dist/packem_shared/SpecBuilder-CR4EZk93.cjs +1 -0
- package/dist/packem_shared/SpecBuilder-DjnDJFpv.mjs +1 -0
- package/dist/packem_shared/SwaggerCompilerPlugin-CLoD91_H.mjs +1 -0
- package/dist/packem_shared/SwaggerCompilerPlugin-lwIg0m84.cjs +1 -0
- package/dist/packem_shared/customizer-COfd-Xr1.mjs +1 -0
- package/dist/packem_shared/customizer-DUz3nxAJ.cjs +1 -0
- package/dist/packem_shared/generateCommand-BQuj1FCe.cjs +1 -0
- package/dist/packem_shared/generateCommand-Bn19mSDL.mjs +1 -0
- package/dist/packem_shared/generateCommand-DLJ2Ac1D.mjs +4 -0
- package/dist/packem_shared/generateCommand-DPOEw62Z.cjs +4 -0
- package/dist/packem_shared/initCommand-Bm4veOwd.mjs +1 -0
- package/dist/packem_shared/initCommand-CiV7G3q4.cjs +35 -0
- package/dist/packem_shared/initCommand-CwoPwelm.mjs +35 -0
- package/dist/packem_shared/initCommand-DAcI_ilX.cjs +1 -0
- package/dist/packem_shared/jsDocumentCommentsToOpenApi-Bvfi25DQ.mjs +1 -0
- package/dist/packem_shared/jsDocumentCommentsToOpenApi-DBYlHL5i.cjs +1 -0
- package/dist/packem_shared/parseFile-C7tyTcIn.cjs +1 -0
- package/dist/packem_shared/parseFile-CtAVjmPd.mjs +1 -0
- package/dist/packem_shared/swaggerJsDocumentCommentsToOpenApi-Bo1geBuG.cjs +10 -0
- package/dist/packem_shared/swaggerJsDocumentCommentsToOpenApi-xKOqHvN2.mjs +10 -0
- package/dist/packem_shared/validate-_k84qawx.mjs +1 -0
- package/dist/packem_shared/validate-tZa-jyuN.cjs +1 -0
- package/dist/packem_shared/yamlLoc-C2tVIYaz.mjs +1 -0
- package/dist/packem_shared/yamlLoc-DyGcp8YC.cjs +1 -0
- package/package.json +41 -41
- package/dist/packem_shared/SpecBuilder-B7YiF7zR.mjs +0 -61
- package/dist/packem_shared/SpecBuilder-CCESkmm5.cjs +0 -63
- package/dist/packem_shared/SwaggerCompilerPlugin-BkYJzU4f.cjs +0 -88
- package/dist/packem_shared/SwaggerCompilerPlugin-DZ7tIJ8x.mjs +0 -86
- package/dist/packem_shared/customizer-CoMXMU7a.mjs +0 -8
- package/dist/packem_shared/customizer-DDFwFqJl.cjs +0 -10
- package/dist/packem_shared/generateCommand-DRMkfIle.mjs +0 -15
- package/dist/packem_shared/generateCommand-MwnCNgEE.cjs +0 -82
- package/dist/packem_shared/generateCommand-RY4QFtm7.cjs +0 -17
- package/dist/packem_shared/generateCommand-a9_RAbug.mjs +0 -80
- package/dist/packem_shared/initCommand-B6Z9EXHP.mjs +0 -15
- package/dist/packem_shared/initCommand-Ch-72dKZ.cjs +0 -65
- package/dist/packem_shared/initCommand-D3yVEMwO.cjs +0 -17
- package/dist/packem_shared/initCommand-zE4VRDGW.mjs +0 -63
- package/dist/packem_shared/jsDocumentCommentsToOpenApi-C7yMeXJ5.cjs +0 -337
- package/dist/packem_shared/jsDocumentCommentsToOpenApi-DtrIZ2lK.mjs +0 -331
- package/dist/packem_shared/parseFile-BE-sKiRK.mjs +0 -35
- package/dist/packem_shared/parseFile-Dk7Bw7lt.cjs +0 -42
- package/dist/packem_shared/swaggerJsDocumentCommentsToOpenApi-B7g9rVr5.mjs +0 -131
- package/dist/packem_shared/swaggerJsDocumentCommentsToOpenApi-BuB7eE94.cjs +0 -138
- package/dist/packem_shared/validate-DZHaKH07.mjs +0 -30
- package/dist/packem_shared/validate-FKieC3ln.cjs +0 -37
- package/dist/packem_shared/yamlLoc-C7iHWvdq.mjs +0 -14
- package/dist/packem_shared/yamlLoc-CEvBiR4K.cjs +0 -16
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## @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)
|
|
2
|
+
|
|
3
|
+
### Miscellaneous Chores
|
|
4
|
+
|
|
5
|
+
* **jsdoc-open-api:** apply prettier and eslint quote-style auto-fix ([2e9b8d0](https://github.com/visulima/visulima/commit/2e9b8d0cdccaa94f22627e5e5f11153c71b689bd))
|
|
6
|
+
* **jsdoc-open-api:** housekeeping cleanup ([de52abe](https://github.com/visulima/visulima/commit/de52abea6d81abc06a8afc14c70ea2a5aabcd30e))
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Dependencies
|
|
10
|
+
|
|
11
|
+
* **@visulima/fs:** upgraded to 5.0.0-alpha.14
|
|
12
|
+
|
|
1
13
|
## @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
14
|
|
|
3
15
|
### Miscellaneous Chores
|
|
@@ -1,11 +1 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
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};
|
package/dist/cli/index.cjs
CHANGED
|
@@ -1,11 +1 @@
|
|
|
1
|
-
|
|
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;
|
package/dist/cli/index.mjs
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
3
|
+
"version": "3.0.0-alpha.13",
|
|
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
|
-
"
|
|
37
|
-
|
|
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
|
-
"
|
|
76
|
-
|
|
77
|
-
|
|
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.
|
|
113
|
+
"@visulima/fs": "5.0.0-alpha.14",
|
|
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;
|