@visulima/jsdoc-open-api 3.0.0-alpha.3 → 3.0.0-alpha.31
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 +318 -0
- package/LICENSE.md +35 -1
- package/README.md +44 -33
- package/bin/index.js +1 -1
- package/dist/cli/commander/index.cjs +1 -0
- package/dist/cli/commander/index.d.cts +1000 -0
- package/dist/cli/commander/index.d.mts +996 -3
- package/dist/cli/commander/index.d.ts +996 -3
- package/dist/cli/commander/index.mjs +1 -30
- package/dist/cli/index.cjs +1 -0
- package/dist/cli/index.d.cts +9 -0
- package/dist/cli/index.d.mts +5 -6
- package/dist/cli/index.d.ts +5 -6
- package/dist/cli/index.mjs +1 -4
- package/dist/index.cjs +1 -0
- package/dist/index.d.cts +266 -0
- package/dist/index.d.mts +200 -182
- package/dist/index.d.ts +200 -182
- package/dist/index.mjs +1 -85
- package/dist/packem_shared/DEFAULT_OPTIONS-C7o6qjwP.mjs +1 -0
- package/dist/packem_shared/DEFAULT_OPTIONS-CP1lNs-k.cjs +1 -0
- package/dist/packem_shared/SpecBuilder-C_KcIxW-.cjs +1 -0
- package/dist/packem_shared/SpecBuilder-Vbq42UbW.mjs +1 -0
- package/dist/packem_shared/SwaggerCompilerPlugin-Bd9L4Djt.cjs +1 -0
- package/dist/packem_shared/SwaggerCompilerPlugin-wRdVpHJS.mjs +1 -0
- package/dist/packem_shared/constants-CdEv9ZcD.mjs +1 -0
- package/dist/packem_shared/constants-DnbfJ7Id.cjs +1 -0
- package/dist/packem_shared/customizer-BXFVpImq.mjs +1 -0
- package/dist/packem_shared/customizer-Bo8QD_ti.cjs +1 -0
- package/dist/packem_shared/generateCommand-CEP0sWth.cjs +5 -0
- package/dist/packem_shared/generateCommand-CkcShFNr.mjs +5 -0
- package/dist/packem_shared/generateCommand-CmoN8jyY.cjs +1 -0
- package/dist/packem_shared/generateCommand-DEhmHbRZ.mjs +1 -0
- package/dist/packem_shared/initCommand-1O6IuWJv.mjs +1 -0
- package/dist/packem_shared/initCommand-C8s0kkim.cjs +1 -0
- package/dist/packem_shared/initCommand-Ca1hGdYS.mjs +35 -0
- package/dist/packem_shared/initCommand-DvNH61Z4.cjs +35 -0
- package/dist/packem_shared/jsDocumentCommentsToOpenApi-BEQrWgpQ.mjs +1 -0
- package/dist/packem_shared/jsDocumentCommentsToOpenApi-CMbdb0uR.cjs +1 -0
- package/dist/packem_shared/loadDefinition-7r9qpfuE.mjs +1 -0
- package/dist/packem_shared/loadDefinition-ah20Zy-G.cjs +1 -0
- package/dist/packem_shared/parseFile-CPb-Kglh.cjs +1 -0
- package/dist/packem_shared/parseFile-Wxs3O0wy.mjs +1 -0
- package/dist/packem_shared/swaggerJsDocumentCommentsToOpenApi-BnPWbZoe.mjs +10 -0
- package/dist/packem_shared/swaggerJsDocumentCommentsToOpenApi-rMEaS4lg.cjs +10 -0
- package/dist/packem_shared/validate-9Rwe2A3r.mjs +1 -0
- package/dist/packem_shared/validate-DLmCjOPl.cjs +1 -0
- package/dist/packem_shared/yamlLoc-DC_7PYVS.cjs +1 -0
- package/dist/packem_shared/yamlLoc-DPq-xUM4.mjs +1 -0
- package/package.json +43 -32
- package/dist/chunk-46IWFMQ2.mjs +0 -1205
- package/dist/chunk-46IWFMQ2.mjs.map +0 -1
- package/dist/chunk-KI63G47G.mjs +0 -142
- package/dist/chunk-KI63G47G.mjs.map +0 -1
- package/dist/chunk-QK4CXNUY.js +0 -149
- package/dist/chunk-QK4CXNUY.js.map +0 -1
- package/dist/chunk-WEX5DMNT.js +0 -1223
- package/dist/chunk-WEX5DMNT.js.map +0 -1
- package/dist/cli/commander/index.js +0 -33
- package/dist/cli/commander/index.js.map +0 -1
- package/dist/cli/commander/index.mjs.map +0 -1
- package/dist/cli/index.js +0 -17
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/index.mjs.map +0 -1
- package/dist/index.js +0 -106
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import{existsSync as t,realpathSync as c,writeFileSync as l}from"node:fs";import{findUpSync as i,readJsonSync as r}from"@visulima/fs";const j=(e,a=process.cwd())=>{if(t(e))throw new Error("Config file already exists");const o=i("package.json",{cwd:c(a)});let s="module.exports =";if(o){const n=r(o);console.info(`Found package.json at "${o}"`),n.type==="module"&&(console.info("Found package.json with type: module, using ES6 as export for the config file"),s="export default")}else console.info("No package.json found");l(e,`${s} {
|
|
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}"`)};export{j as default};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";const o=require("node:fs"),c=require("@visulima/fs"),l=(e,t=process.cwd())=>{if(o.existsSync(e))throw new Error("Config file already exists");const s=c.findUpSync("package.json",{cwd:o.realpathSync(t)});let n="module.exports =";if(s){const a=c.readJsonSync(s);console.info(`Found package.json at "${s}"`),a.type==="module"&&(console.info("Found package.json with type: module, using ES6 as export for the config file"),n="export default")}else console.info("No package.json found");o.writeFileSync(e,`${n} {
|
|
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}"`)};module.exports=l;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{parse as d}from"comment-parser";import{mergeWith as l}from"es-toolkit";import{u as y}from"./customizer-BXFVpImq.mjs";const f=/\[\]$/,b=/^- /u,$=/Param$/u,g=/^(GET|PUT|POST|DELETE|OPTIONS|HEAD|PATCH|TRACE) \/.*$/,h=t=>{t.security&&(t.security=Object.keys(t.security).map(o=>({[o]:t.security[o]})))},T=new Set(["array","boolean","integer","number","object","string"]),m={binary:"string",byte:"string",date:"string","date-time":"string",double:"number",float:"number",int32:"integer",int64:"integer",password:"string"},w=t=>{const o=t.type,c=o.endsWith("[]"),e=o.replace(f,""),n=T.has(e),r=Object.keys(m).includes(e);let s;if(t.default)switch(e){case"double":case"float":case"number":{s=Number.parseFloat(t.default);break}case"int32":case"int64":case"integer":{s=Number.parseInt(t.default,10);break}default:{s=t.default;break}}let a;n?a={default:s,type:e}:r?a={default:s,format:e,type:m[e]}:a={$ref:`#/components/schemas/${e}`};let p=c?{items:{...a},type:"array"}:{...a};e===""&&(p=void 0);let i=t.description.trim().replace(b,"");return i===""&&(i=void 0),{description:i,name:t.name,rawType:o,required:!t.optional,schema:p}},k=(t,o)=>t.map(c=>{const e=w(c);let n="";switch(e.name&&(n+=e.name),e.description&&(n+=` ${e.description.trim()}`),c.tag){case"bodyComponent":return{requestBody:{$ref:`#/components/requestBodies/${e.rawType}`}};case"bodyContent":return{requestBody:{content:{[e.name.replaceAll(String.raw`*\/*`,"*/*")]:{schema:e.schema}}}};case"bodyDescription":return{requestBody:{description:n}};case"bodyExample":{const[r,s]=e.name.split(".");return{requestBody:{content:{[r]:{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:c.tag.replace($,""),name:e.name,required:e.required,schema:e.schema}]};case"deprecated":return{deprecated:!0};case"description":case"operationId":case"summary":return{[c.tag]:n};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[r,s]=e.name.split(".");return{responses:{[r]:{content:{[s]:{schema:e.schema}}}}}}case"responseExample":{const[r,s,a]=e.name.split(".");return{responses:{[r]:{content:{[s]:{examples:{[a]:{$ref:`#/components/examples/${e.rawType}`}}}}}}}}case"responseHeader":{const[r,s]=e.name.split(".");return{responses:{[r]:{headers:{[s]:{description:e.description,schema:e.schema}}}}}}case"responseHeaderComponent":{const[r,s]=e.name.split(".");return{responses:{[r]:{headers:{[s]:{$ref:`#/components/headers/${e.rawType}`}}}}}}case"responseLink":{const[r,s]=e.name.split(".");return{responses:{[r]:{links:{[s]:{$ref:`#/components/links/${e.rawType}`}}}}}}case"security":{const[r,s]=e.name.split(".");let a=[];return s&&(a=[s]),{security:{[r]:a}}}case"server":return{servers:[{description:e.description,url:e.name}]};case"tag":return{tags:[n]};default:return{}}}),C=(t,o,c)=>(c??d(t,{spacing:"preserve"})).filter(e=>g.test(e.description.trim())).map(e=>{const n=e.tags.length+1,r={};for(const u of k(e.tags))l(r,u,y);h(r);const[s,a]=e.description.split(" "),p={[a.trim()]:{[s.toLowerCase().trim()]:{...r}}},i=JSON.parse(JSON.stringify({paths:p}));return{loc:n,spec:i}});export{C as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const d=require("comment-parser"),l=require("es-toolkit"),y=require("./customizer-Bo8QD_ti.cjs"),b=/\[\]$/,f=/^- /u,g=/Param$/u,h=/^(GET|PUT|POST|DELETE|OPTIONS|HEAD|PATCH|TRACE) \/.*$/,$=t=>{t.security&&(t.security=Object.keys(t.security).map(o=>({[o]:t.security[o]})))},T=new Set(["array","boolean","integer","number","object","string"]),m={binary:"string",byte:"string",date:"string","date-time":"string",double:"number",float:"number",int32:"integer",int64:"integer",password:"string"},w=t=>{const o=t.type,c=o.endsWith("[]"),e=o.replace(b,""),n=T.has(e),r=Object.keys(m).includes(e);let s;if(t.default)switch(e){case"double":case"float":case"number":{s=Number.parseFloat(t.default);break}case"int32":case"int64":case"integer":{s=Number.parseInt(t.default,10);break}default:{s=t.default;break}}let a;n?a={default:s,type:e}:r?a={default:s,format:e,type:m[e]}:a={$ref:`#/components/schemas/${e}`};let p=c?{items:{...a},type:"array"}:{...a};e===""&&(p=void 0);let i=t.description.trim().replace(f,"");return i===""&&(i=void 0),{description:i,name:t.name,rawType:o,required:!t.optional,schema:p}},q=(t,o)=>t.map(c=>{const e=w(c);let n="";switch(e.name&&(n+=e.name),e.description&&(n+=` ${e.description.trim()}`),c.tag){case"bodyComponent":return{requestBody:{$ref:`#/components/requestBodies/${e.rawType}`}};case"bodyContent":return{requestBody:{content:{[e.name.replaceAll(String.raw`*\/*`,"*/*")]:{schema:e.schema}}}};case"bodyDescription":return{requestBody:{description:n}};case"bodyExample":{const[r,s]=e.name.split(".");return{requestBody:{content:{[r]:{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:c.tag.replace(g,""),name:e.name,required:e.required,schema:e.schema}]};case"deprecated":return{deprecated:!0};case"description":case"operationId":case"summary":return{[c.tag]:n};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[r,s]=e.name.split(".");return{responses:{[r]:{content:{[s]:{schema:e.schema}}}}}}case"responseExample":{const[r,s,a]=e.name.split(".");return{responses:{[r]:{content:{[s]:{examples:{[a]:{$ref:`#/components/examples/${e.rawType}`}}}}}}}}case"responseHeader":{const[r,s]=e.name.split(".");return{responses:{[r]:{headers:{[s]:{description:e.description,schema:e.schema}}}}}}case"responseHeaderComponent":{const[r,s]=e.name.split(".");return{responses:{[r]:{headers:{[s]:{$ref:`#/components/headers/${e.rawType}`}}}}}}case"responseLink":{const[r,s]=e.name.split(".");return{responses:{[r]:{links:{[s]:{$ref:`#/components/links/${e.rawType}`}}}}}}case"security":{const[r,s]=e.name.split(".");let a=[];return s&&(a=[s]),{security:{[r]:a}}}case"server":return{servers:[{description:e.description,url:e.name}]};case"tag":return{tags:[n]};default:return{}}}),k=(t,o,c)=>(c??d.parse(t,{spacing:"preserve"})).filter(e=>h.test(e.description.trim())).map(e=>{const n=e.tags.length+1,r={};for(const u of q(e.tags))l.mergeWith(r,u,y.u);$(r);const[s,a]=e.description.split(" "),p={[a.trim()]:{[s.toLowerCase().trim()]:{...r}}},i=JSON.parse(JSON.stringify({paths:p}));return{loc:n,spec:i}});module.exports=k;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{readFileSync as n}from"node:fs";import t from"node:path";import m from"yaml";const s=o=>{const r=t.extname(o);if(r!==".yaml"&&r!==".yml"&&r!==".json")throw new Error("OpenAPI definition path must be YAML or JSON.");const e=n(o,{encoding:"utf8"});return r===".yaml"||r===".yml"?m.parse(e):JSON.parse(e)};export{s as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const r=require("node:fs"),s=require("node:path"),a=require("yaml"),o=e=>e&&typeof e=="object"&&"default"in e?e.default:e,i=o(s),u=o(a),c=e=>{const t=i.extname(e);if(t!==".yaml"&&t!==".yml"&&t!==".json")throw new Error("OpenAPI definition path must be YAML or JSON.");const n=r.readFileSync(e,{encoding:"utf8"});return t===".yaml"||t===".yml"?u.parse(n):JSON.parse(n)};module.exports=c;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("node:fs"),y=require("node:path"),m=require("comment-parser"),g=require("yaml"),_=require("./yamlLoc-DC_7PYVS.cjs"),u=e=>e&&typeof e=="object"&&"default"in e?e.default:e,f=u(y),b=u(g),i=new Set(["components","externalDocs","info","openapi","paths","security","servers","tags"]);class j extends Error{filePath}const p=new Set([".yaml",".yml"]),h=(e,s)=>{const n=b.parse(s);if(n===null||typeof n!="object")return[];const r=Object.keys(n).filter(t=>!i.has(t));if(r.length>0){const t=new j(`Unexpected keys: ${r.join(", ")}`);throw t.filePath=e,t}return Object.keys(n).some(t=>i.has(t))?[{loc:_(s),spec:n}]:[]},w=(e,s,n)=>{const r=l.readFileSync(e,{encoding:"utf8"}),t=f.extname(e);if(p.has(t))return h(e,r);try{return s(r,n)}catch(o){throw o.filePath=e,o}},P=(e,s,n)=>{const r=l.readFileSync(e,{encoding:"utf8"}),t=f.extname(e);if(p.has(t))return h(e,r);const o=m.parse(r,{spacing:"preserve"}),c=[];for(const d of s)try{c.push(...d(r,n,o))}catch(a){throw a.filePath=e,a}return c};exports.default=w;exports.parseFileMulti=P;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{readFileSync as f}from"node:fs";import p from"node:path";import{parse as u}from"comment-parser";import y from"yaml";import d from"./yamlLoc-DPq-xUM4.mjs";const i=new Set(["components","externalDocs","info","openapi","paths","security","servers","tags"]);class g extends Error{filePath}const l=new Set([".yaml",".yml"]),h=(t,o)=>{const r=y.parse(o);if(r===null||typeof r!="object")return[];const n=Object.keys(r).filter(e=>!i.has(e));if(n.length>0){const e=new g(`Unexpected keys: ${n.join(", ")}`);throw e.filePath=t,e}return Object.keys(r).some(e=>i.has(e))?[{loc:d(o),spec:r}]:[]},k=(t,o,r)=>{const n=f(t,{encoding:"utf8"}),e=p.extname(t);if(l.has(e))return h(t,n);try{return o(n,r)}catch(s){throw s.filePath=t,s}},O=(t,o,r)=>{const n=f(t,{encoding:"utf8"}),e=p.extname(t);if(l.has(e))return h(t,n);const s=u(n,{spacing:"preserve"}),c=[];for(const m of o)try{c.push(...m(n,r,s))}catch(a){throw a.filePath=t,a}return c};export{k as default,O as parseFileMulti};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import{parse as f}from"comment-parser";import{mergeWith as m}from"es-toolkit";import y from"yaml";import{u as l}from"./customizer-BXFVpImq.mjs";const g=(s,t)=>{if(t===null)return s},h=(s,t)=>{const e=m({},s??{},g);return m(e,t??{},g)},d=s=>Object.keys(s).map(t=>s[t]).every(t=>typeof t=="object"&&Object.keys(t).every(e=>!(e in t))),u=(s,t)=>t.some(e=>s.name===e.name),v=s=>{switch(s.tag){case"asyncapi":return"v4";case"openapi":return"v3";case"swagger":return"v2";default:return"v2"}},w=(s,t,e)=>{if(e==="x-webhooks"&&(s[e]=t[e]),!e.startsWith("x-"))if(["components","consumes","produces","paths","schemas","securityDefinitions","responses","parameters","definitions","channels"].includes(e))Object.keys(t[e]).forEach(r=>{s[e][r]=h(s[e][r],t[e][r])});else if(e==="tags"){const{tags:r}=t;Array.isArray(r)?r.forEach(n=>{u(n,s.tags)||s.tags.push(n)}):u(r,s.tags)||s.tags.push(r)}else if(e==="security"){const{security:r}=t;s.security=r}else e.startsWith("/")&&(s.paths[e]=h(s.paths[e],t[e]))},E={v2:["paths","definitions","responses","parameters","securityDefinitions"],v3:["paths","definitions","responses","parameters","securityDefinitions","components"],v4:["components","channels"]},S=(s,t)=>s.map(e=>{const r=e.description!==""||e.name.startsWith("/")||e.name.endsWith(":");if((e.tag==="openapi"||e.tag==="swagger"||e.tag==="asyncapi")&&r){let n=e.description;(e.name.startsWith("/")||e.name.endsWith(":"))&&(n=n.trim()===""?e.name:`${e.name}
|
|
2
|
+
${n}`);const a=y.parseDocument(n);if(a.errors.length>0){a.errors.forEach(p=>{p.annotation=n});let i="Error parsing YAML in @openapi spec:";throw i+=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(i)}const c=a.toJSON(),o={tags:[]};return E[v(e)].forEach(i=>{o[i]=o[i]??{}}),Object.keys(c).forEach(i=>{w(o,c,i)}),o}return{}}),O=new Set(["asyncapi","openapi","swagger"]),k=(s,t,e)=>(e??f(s,{spacing:"preserve"})).filter(r=>r.tags.some(n=>O.has(n.tag))).map(r=>{const n=r.tags.length+1,a={};for(const o of S(r.tags,t))m(a,o,l);["definitions","responses","parameters","securityDefinitions","components","tags"].forEach(o=>{a[o]!==void 0&&d(a[o])&&delete a[o]});const c=JSON.parse(JSON.stringify(a));return{loc:n,spec:c}});export{k as default};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";const f=require("comment-parser"),g=require("es-toolkit"),l=require("yaml"),y=require("./customizer-Bo8QD_ti.cjs"),d=t=>t&&typeof t=="object"&&"default"in t?t.default:t,v=d(l),m=(t,s)=>{if(s===null)return t},u=(t,s)=>{const e=g.mergeWith({},t??{},m);return g.mergeWith(e,s??{},m)},w=t=>Object.keys(t).map(s=>t[s]).every(s=>typeof s=="object"&&Object.keys(s).every(e=>!(e in s))),h=(t,s)=>s.some(e=>t.name===e.name),E=t=>{switch(t.tag){case"asyncapi":return"v4";case"openapi":return"v3";case"swagger":return"v2";default:return"v2"}},O=(t,s,e)=>{if(e==="x-webhooks"&&(t[e]=s[e]),!e.startsWith("x-"))if(["components","consumes","produces","paths","schemas","securityDefinitions","responses","parameters","definitions","channels"].includes(e))Object.keys(s[e]).forEach(r=>{t[e][r]=u(t[e][r],s[e][r])});else if(e==="tags"){const{tags:r}=s;Array.isArray(r)?r.forEach(n=>{h(n,t.tags)||t.tags.push(n)}):h(r,t.tags)||t.tags.push(r)}else if(e==="security"){const{security:r}=s;t.security=r}else e.startsWith("/")&&(t.paths[e]=u(t.paths[e],s[e]))},S={v2:["paths","definitions","responses","parameters","securityDefinitions"],v3:["paths","definitions","responses","parameters","securityDefinitions","components"],v4:["components","channels"]},W=(t,s)=>t.map(e=>{const r=e.description!==""||e.name.startsWith("/")||e.name.endsWith(":");if((e.tag==="openapi"||e.tag==="swagger"||e.tag==="asyncapi")&&r){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(c=>{c.annotation=n});let i="Error parsing YAML in @openapi spec:";throw i+=s?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(i)}const p=a.toJSON(),o={tags:[]};return S[E(e)].forEach(i=>{o[i]=o[i]??{}}),Object.keys(p).forEach(i=>{O(o,p,i)}),o}return{}}),b=new Set(["asyncapi","openapi","swagger"]),j=(t,s,e)=>(e??f.parse(t,{spacing:"preserve"})).filter(r=>r.tags.some(n=>b.has(n.tag))).map(r=>{const n=r.tags.length+1,a={};for(const o of W(r.tags,s))g.mergeWith(a,o,y.u);["definitions","responses","parameters","securityDefinitions","components","tags"].forEach(o=>{a[o]!==void 0&&w(a[o])&&delete a[o]});const p=JSON.parse(JSON.stringify(a));return{loc:n,spec:p}});module.exports=j;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import t from"@apidevtools/swagger-parser";const e=async a=>{await t.validate(a)};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const a=require("@apidevtools/swagger-parser"),o=t=>t&&typeof t=="object"&&"default"in t?t.default:t,e=o(a),s=async t=>{await e.validate(t)};module.exports=s;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const e=/\r\n|\r|\n/u,n=/^\s*(#\s*(?:\S.*)?)?$/u,r=t=>t.split(e).filter(s=>n.test(s)?!1:s.trim().length>0).length;module.exports=r;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const s=/\r\n|\r|\n/u,l=/^\s*(#\s*(?:\S.*)?)?$/u,n=e=>e.split(s).filter(t=>l.test(t)?!1:t.trim().length>0).length;export{n as default};
|
package/package.json
CHANGED
|
@@ -1,23 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visulima/jsdoc-open-api",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.31",
|
|
4
4
|
"description": "Generates swagger doc based on JSDoc.",
|
|
5
5
|
"keywords": [
|
|
6
|
-
"
|
|
6
|
+
"api",
|
|
7
|
+
"cli",
|
|
8
|
+
"command",
|
|
9
|
+
"comment",
|
|
7
10
|
"javascript",
|
|
11
|
+
"jsdoc",
|
|
8
12
|
"openapi",
|
|
9
13
|
"swagger",
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"api",
|
|
13
|
-
"webpack",
|
|
14
|
-
"cli",
|
|
15
|
-
"command"
|
|
14
|
+
"visulima",
|
|
15
|
+
"webpack"
|
|
16
16
|
],
|
|
17
|
-
"homepage": "https://
|
|
18
|
-
"bugs":
|
|
19
|
-
"url": "https://github.com/visulima/visulima/issues"
|
|
20
|
-
},
|
|
17
|
+
"homepage": "https://visulima.com/packages/jsdoc-open-api/",
|
|
18
|
+
"bugs": "https://github.com/visulima/visulima/issues",
|
|
21
19
|
"repository": {
|
|
22
20
|
"type": "git",
|
|
23
21
|
"url": "https://github.com/visulima/visulima.git",
|
|
@@ -41,40 +39,53 @@
|
|
|
41
39
|
"sideEffects": false,
|
|
42
40
|
"exports": {
|
|
43
41
|
".": {
|
|
44
|
-
"require": {
|
|
45
|
-
"types": "./dist/index.d.ts",
|
|
46
|
-
"default": "./dist/index.js"
|
|
47
|
-
},
|
|
48
42
|
"import": {
|
|
49
43
|
"types": "./dist/index.d.mts",
|
|
50
44
|
"default": "./dist/index.mjs"
|
|
45
|
+
},
|
|
46
|
+
"require": {
|
|
47
|
+
"types": "./dist/index.d.cts",
|
|
48
|
+
"default": "./dist/index.cjs"
|
|
51
49
|
}
|
|
52
50
|
},
|
|
53
51
|
"./cli": {
|
|
54
|
-
"require": {
|
|
55
|
-
"types": "./dist/cli/index.d.ts",
|
|
56
|
-
"default": "./dist/cli/index.js"
|
|
57
|
-
},
|
|
58
52
|
"import": {
|
|
59
53
|
"types": "./dist/cli/index.d.mts",
|
|
60
54
|
"default": "./dist/cli/index.mjs"
|
|
55
|
+
},
|
|
56
|
+
"require": {
|
|
57
|
+
"types": "./dist/cli/index.d.cts",
|
|
58
|
+
"default": "./dist/cli/index.cjs"
|
|
61
59
|
}
|
|
62
60
|
},
|
|
63
61
|
"./cli/commander": {
|
|
64
|
-
"require": {
|
|
65
|
-
"types": "./dist/cli/commander/index.d.ts",
|
|
66
|
-
"default": "./dist/cli/commander/index.js"
|
|
67
|
-
},
|
|
68
62
|
"import": {
|
|
69
63
|
"types": "./dist/cli/commander/index.d.mts",
|
|
70
64
|
"default": "./dist/cli/commander/index.mjs"
|
|
65
|
+
},
|
|
66
|
+
"require": {
|
|
67
|
+
"types": "./dist/cli/commander/index.d.cts",
|
|
68
|
+
"default": "./dist/cli/commander/index.cjs"
|
|
71
69
|
}
|
|
72
70
|
},
|
|
73
71
|
"./package.json": "./package.json"
|
|
74
72
|
},
|
|
75
|
-
"main": "dist/index.
|
|
73
|
+
"main": "dist/index.cjs",
|
|
76
74
|
"module": "dist/index.mjs",
|
|
77
75
|
"types": "dist/index.d.ts",
|
|
76
|
+
"typesVersions": {
|
|
77
|
+
">=5.0": {
|
|
78
|
+
".": [
|
|
79
|
+
"./dist/index.d.ts"
|
|
80
|
+
],
|
|
81
|
+
"cli": [
|
|
82
|
+
"./dist/cli/index.d.ts"
|
|
83
|
+
],
|
|
84
|
+
"cli/commander": [
|
|
85
|
+
"./dist/cli/commander/index.d.ts"
|
|
86
|
+
]
|
|
87
|
+
}
|
|
88
|
+
},
|
|
78
89
|
"bin": {
|
|
79
90
|
"jsdoc-open-api": "./bin/index.js"
|
|
80
91
|
},
|
|
@@ -88,18 +99,18 @@
|
|
|
88
99
|
],
|
|
89
100
|
"dependencies": {
|
|
90
101
|
"@apidevtools/swagger-parser": "^12.1.0",
|
|
91
|
-
"
|
|
92
|
-
"
|
|
93
|
-
"
|
|
94
|
-
"yaml": "
|
|
102
|
+
"@visulima/fs": "5.0.0-alpha.32",
|
|
103
|
+
"comment-parser": "1.4.7",
|
|
104
|
+
"es-toolkit": "^1.47.1",
|
|
105
|
+
"yaml": "2.9.0"
|
|
95
106
|
},
|
|
96
107
|
"optionalDependencies": {
|
|
97
108
|
"cli-progress": "^3.12.0",
|
|
98
|
-
"commander": "^
|
|
99
|
-
"webpack": "^5.
|
|
109
|
+
"commander": "^15.0.0",
|
|
110
|
+
"webpack": "^5.107.2"
|
|
100
111
|
},
|
|
101
112
|
"engines": {
|
|
102
|
-
"node": "
|
|
113
|
+
"node": "^22.14.0 || >=24.10.0"
|
|
103
114
|
},
|
|
104
115
|
"os": [
|
|
105
116
|
"darwin",
|