@visulima/jsdoc-open-api 3.0.0-alpha.11 → 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.
Files changed (117) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/LICENSE.md +34 -0
  3. package/dist/cli/commander/index.cjs +1 -11
  4. package/dist/cli/commander/index.d.cts +1000 -2
  5. package/dist/cli/commander/index.d.mts +1000 -2
  6. package/dist/cli/commander/index.d.ts +1000 -2
  7. package/dist/cli/commander/index.mjs +1 -2
  8. package/dist/cli/index.cjs +1 -11
  9. package/dist/cli/index.d.cts +8 -2
  10. package/dist/cli/index.d.mts +8 -2
  11. package/dist/cli/index.d.ts +8 -2
  12. package/dist/cli/index.mjs +1 -2
  13. package/dist/index.cjs +1 -19
  14. package/dist/index.d.cts +247 -7
  15. package/dist/index.d.mts +247 -7
  16. package/dist/index.d.ts +247 -7
  17. package/dist/index.mjs +1 -6
  18. package/dist/packem_shared/SpecBuilder-CR4EZk93.cjs +1 -0
  19. package/dist/packem_shared/SpecBuilder-DjnDJFpv.mjs +1 -0
  20. package/dist/packem_shared/SwaggerCompilerPlugin-CLoD91_H.mjs +1 -0
  21. package/dist/packem_shared/SwaggerCompilerPlugin-lwIg0m84.cjs +1 -0
  22. package/dist/packem_shared/customizer-COfd-Xr1.mjs +1 -0
  23. package/dist/packem_shared/customizer-DUz3nxAJ.cjs +1 -0
  24. package/dist/packem_shared/generateCommand-BQuj1FCe.cjs +1 -0
  25. package/dist/packem_shared/generateCommand-Bn19mSDL.mjs +1 -0
  26. package/dist/packem_shared/generateCommand-DLJ2Ac1D.mjs +4 -0
  27. package/dist/packem_shared/generateCommand-DPOEw62Z.cjs +4 -0
  28. package/dist/packem_shared/initCommand-Bm4veOwd.mjs +1 -0
  29. package/dist/packem_shared/initCommand-CiV7G3q4.cjs +35 -0
  30. package/dist/packem_shared/initCommand-CwoPwelm.mjs +35 -0
  31. package/dist/packem_shared/initCommand-DAcI_ilX.cjs +1 -0
  32. package/dist/packem_shared/jsDocumentCommentsToOpenApi-Bvfi25DQ.mjs +1 -0
  33. package/dist/packem_shared/jsDocumentCommentsToOpenApi-DBYlHL5i.cjs +1 -0
  34. package/dist/packem_shared/parseFile-C7tyTcIn.cjs +1 -0
  35. package/dist/packem_shared/parseFile-CtAVjmPd.mjs +1 -0
  36. package/dist/packem_shared/swaggerJsDocumentCommentsToOpenApi-Bo1geBuG.cjs +10 -0
  37. package/dist/packem_shared/swaggerJsDocumentCommentsToOpenApi-xKOqHvN2.mjs +10 -0
  38. package/dist/packem_shared/validate-_k84qawx.mjs +1 -0
  39. package/dist/packem_shared/validate-tZa-jyuN.cjs +1 -0
  40. package/dist/packem_shared/yamlLoc-C2tVIYaz.mjs +1 -0
  41. package/dist/packem_shared/yamlLoc-DyGcp8YC.cjs +1 -0
  42. package/package.json +49 -49
  43. package/dist/cli/command/generate-command.d.cts +0 -7
  44. package/dist/cli/command/generate-command.d.mts +0 -7
  45. package/dist/cli/command/generate-command.d.ts +0 -7
  46. package/dist/cli/command/init-command.d.cts +0 -2
  47. package/dist/cli/command/init-command.d.mts +0 -2
  48. package/dist/cli/command/init-command.d.ts +0 -2
  49. package/dist/cli/commander/command/generate-command.d.cts +0 -3
  50. package/dist/cli/commander/command/generate-command.d.mts +0 -3
  51. package/dist/cli/commander/command/generate-command.d.ts +0 -3
  52. package/dist/cli/commander/command/init-command.d.cts +0 -3
  53. package/dist/cli/commander/command/init-command.d.mts +0 -3
  54. package/dist/cli/commander/command/init-command.d.ts +0 -3
  55. package/dist/constants.d.cts +0 -1
  56. package/dist/constants.d.mts +0 -1
  57. package/dist/constants.d.ts +0 -1
  58. package/dist/exported.d.cts +0 -198
  59. package/dist/exported.d.mts +0 -198
  60. package/dist/exported.d.ts +0 -198
  61. package/dist/jsdoc/comments-to-open-api.d.cts +0 -6
  62. package/dist/jsdoc/comments-to-open-api.d.mts +0 -6
  63. package/dist/jsdoc/comments-to-open-api.d.ts +0 -6
  64. package/dist/packem_shared/SpecBuilder-B7YiF7zR.mjs +0 -61
  65. package/dist/packem_shared/SpecBuilder-CCESkmm5.cjs +0 -63
  66. package/dist/packem_shared/SwaggerCompilerPlugin-BkYJzU4f.cjs +0 -88
  67. package/dist/packem_shared/SwaggerCompilerPlugin-DZ7tIJ8x.mjs +0 -86
  68. package/dist/packem_shared/customizer-CoMXMU7a.mjs +0 -8
  69. package/dist/packem_shared/customizer-DDFwFqJl.cjs +0 -10
  70. package/dist/packem_shared/generateCommand-DRMkfIle.mjs +0 -15
  71. package/dist/packem_shared/generateCommand-MwnCNgEE.cjs +0 -82
  72. package/dist/packem_shared/generateCommand-RY4QFtm7.cjs +0 -17
  73. package/dist/packem_shared/generateCommand-a9_RAbug.mjs +0 -80
  74. package/dist/packem_shared/initCommand-B6Z9EXHP.mjs +0 -15
  75. package/dist/packem_shared/initCommand-Ch-72dKZ.cjs +0 -65
  76. package/dist/packem_shared/initCommand-D3yVEMwO.cjs +0 -17
  77. package/dist/packem_shared/initCommand-zE4VRDGW.mjs +0 -63
  78. package/dist/packem_shared/jsDocumentCommentsToOpenApi-C7yMeXJ5.cjs +0 -337
  79. package/dist/packem_shared/jsDocumentCommentsToOpenApi-DtrIZ2lK.mjs +0 -331
  80. package/dist/packem_shared/parseFile-BE-sKiRK.mjs +0 -35
  81. package/dist/packem_shared/parseFile-Dk7Bw7lt.cjs +0 -42
  82. package/dist/packem_shared/swaggerJsDocumentCommentsToOpenApi-B7g9rVr5.mjs +0 -131
  83. package/dist/packem_shared/swaggerJsDocumentCommentsToOpenApi-BuB7eE94.cjs +0 -138
  84. package/dist/packem_shared/validate-DZHaKH07.mjs +0 -30
  85. package/dist/packem_shared/validate-FKieC3ln.cjs +0 -37
  86. package/dist/packem_shared/yamlLoc-C7iHWvdq.mjs +0 -14
  87. package/dist/packem_shared/yamlLoc-CEvBiR4K.cjs +0 -16
  88. package/dist/parse-file.d.cts +0 -9
  89. package/dist/parse-file.d.mts +0 -9
  90. package/dist/parse-file.d.ts +0 -9
  91. package/dist/spec-builder.d.cts +0 -14
  92. package/dist/spec-builder.d.mts +0 -14
  93. package/dist/spec-builder.d.ts +0 -14
  94. package/dist/swagger-jsdoc/comments-to-open-api.d.cts +0 -6
  95. package/dist/swagger-jsdoc/comments-to-open-api.d.mts +0 -6
  96. package/dist/swagger-jsdoc/comments-to-open-api.d.ts +0 -6
  97. package/dist/swagger-jsdoc/organize-swagger-object.d.cts +0 -7
  98. package/dist/swagger-jsdoc/organize-swagger-object.d.mts +0 -7
  99. package/dist/swagger-jsdoc/organize-swagger-object.d.ts +0 -7
  100. package/dist/swagger-jsdoc/utils.d.cts +0 -22
  101. package/dist/swagger-jsdoc/utils.d.mts +0 -22
  102. package/dist/swagger-jsdoc/utils.d.ts +0 -22
  103. package/dist/util/customizer.d.cts +0 -2
  104. package/dist/util/customizer.d.mts +0 -2
  105. package/dist/util/customizer.d.ts +0 -2
  106. package/dist/util/object-merge.d.cts +0 -2
  107. package/dist/util/object-merge.d.mts +0 -2
  108. package/dist/util/object-merge.d.ts +0 -2
  109. package/dist/util/yaml-loc.d.cts +0 -2
  110. package/dist/util/yaml-loc.d.mts +0 -2
  111. package/dist/util/yaml-loc.d.ts +0 -2
  112. package/dist/validate.d.cts +0 -2
  113. package/dist/validate.d.mts +0 -2
  114. package/dist/validate.d.ts +0 -2
  115. package/dist/webpack/swagger-compiler-plugin.d.cts +0 -15
  116. package/dist/webpack/swagger-compiler-plugin.d.mts +0 -15
  117. package/dist/webpack/swagger-compiler-plugin.d.ts +0 -15
package/dist/index.d.ts CHANGED
@@ -1,7 +1,247 @@
1
- export type { BaseDefinition, OpenApiObject } from "./exported.d.ts";
2
- export { default as jsDocumentCommentsToOpenApi } from "./jsdoc/comments-to-open-api.d.ts";
3
- export { default as parseFile } from "./parse-file.d.ts";
4
- export { default as SpecBuilder } from "./spec-builder.d.ts";
5
- export { default as swaggerJsDocumentCommentsToOpenApi } from "./swagger-jsdoc/comments-to-open-api.d.ts";
6
- export { default as yamlLoc } from "./util/yaml-loc.d.ts";
7
- export { default as SwaggerCompilerPlugin } from "./webpack/swagger-compiler-plugin.d.ts";
1
+ import 'buffer';
2
+ import 'http';
3
+ import 'https';
4
+ import 'inspector';
5
+ import 'net';
6
+ import 'url';
7
+ import 'vm';
8
+ interface BaseDefinition {
9
+ components?: ComponentsObject;
10
+ externalDocs?: ExternalDocumentationObject;
11
+ info: InfoObject;
12
+ openapi: string;
13
+ paths?: PathsObject;
14
+ security?: SecurityRequirementObject[];
15
+ servers?: ServerObject[];
16
+ tags?: TagObject[];
17
+ }
18
+ interface OpenApiObject extends BaseDefinition {
19
+ paths?: PathsObject;
20
+ }
21
+ interface InfoObject {
22
+ contact?: ContactObject;
23
+ description?: string;
24
+ license?: LicenseObject;
25
+ termsOfService?: string;
26
+ title: string;
27
+ version: string;
28
+ }
29
+ interface ContactObject {
30
+ email?: string;
31
+ name?: string;
32
+ url?: string;
33
+ }
34
+ interface LicenseObject {
35
+ name: string;
36
+ url?: string;
37
+ }
38
+ interface ServerObject {
39
+ description?: string;
40
+ url: string;
41
+ variables?: Map<ServerVariable>;
42
+ }
43
+ interface ServerVariable {
44
+ default: string;
45
+ description?: string;
46
+ enum?: string[];
47
+ }
48
+ interface ComponentsObject {
49
+ callbacks?: Map<CallbackObject | ReferenceObject>;
50
+ examples?: Map<ExampleObject | ReferenceObject>;
51
+ headers?: Map<HeaderObject | ReferenceObject>;
52
+ links?: Map<LinkObject | ReferenceObject>;
53
+ parameters?: Map<ParameterObject | ReferenceObject>;
54
+ requestBodies?: Map<ReferenceObject | RequestBodyObject>;
55
+ responses?: Map<ReferenceObject | ResponseObject>;
56
+ schemas?: Map<ReferenceObject | SchemaObject>;
57
+ securitySchemes?: Map<ApiKeySecuritySchemeObject | HttpSecuritySchemeObject | Oauth2SecuritySchemeObject | OpenIdConnectSecuritySchemeObject | ReferenceObject>;
58
+ }
59
+ type PathsObject = Record<string, PathItemObject>;
60
+ interface PathItemObject {
61
+ $ref?: string;
62
+ delete?: OperationObject;
63
+ description?: string;
64
+ get?: OperationObject;
65
+ head?: OperationObject;
66
+ options?: OperationObject;
67
+ parameters?: (ParameterObject | ReferenceObject)[];
68
+ patch?: OperationObject;
69
+ post?: OperationObject;
70
+ put?: OperationObject;
71
+ servers?: ServerObject[];
72
+ summary?: string;
73
+ trace?: OperationObject;
74
+ }
75
+ interface OperationObject {
76
+ callbacks?: Map<CallbackObject | ReferenceObject>;
77
+ deprecated?: boolean;
78
+ description?: string;
79
+ externalDocs?: ExternalDocumentationObject;
80
+ operationId?: string;
81
+ parameters?: (ParameterObject | ReferenceObject)[];
82
+ requestBody?: ReferenceObject | RequestBodyObject;
83
+ responses: ResponsesObject;
84
+ security?: SecurityRequirementObject[];
85
+ servers?: ServerObject[];
86
+ summary?: string;
87
+ tags?: string[];
88
+ }
89
+ interface ExternalDocumentationObject {
90
+ description?: string;
91
+ url: string;
92
+ }
93
+ interface ParameterObject {
94
+ allowEmptyValue?: boolean;
95
+ allowReserved?: boolean;
96
+ content?: Map<MediaTypeObject>;
97
+ deprecated?: boolean;
98
+ description?: string;
99
+ example?: any;
100
+ examples?: Map<ExampleObject | ReferenceObject>;
101
+ explode?: string;
102
+ in: string;
103
+ name: string;
104
+ required?: boolean;
105
+ schema?: ReferenceObject | SchemaObject;
106
+ style?: string;
107
+ }
108
+ interface RequestBodyObject {
109
+ content: Map<MediaTypeObject>;
110
+ description?: string;
111
+ required?: boolean;
112
+ }
113
+ interface MediaTypeObject {
114
+ encoding?: Map<EncodingObject>;
115
+ example?: any;
116
+ examples?: Map<ExampleObject | ReferenceObject>;
117
+ schema?: ReferenceObject | SchemaObject;
118
+ }
119
+ interface EncodingObject {
120
+ allowReserved?: boolean;
121
+ contentType?: string;
122
+ explode?: boolean;
123
+ headers?: Map<HeaderObject | ReferenceObject>;
124
+ style?: string;
125
+ }
126
+ type ResponsesObject = Record<string, ReferenceObject | ResponseObject>;
127
+ interface ResponseObject {
128
+ content?: Map<MediaTypeObject>;
129
+ description: string;
130
+ headers?: Map<HeaderObject | ReferenceObject>;
131
+ links?: Map<LinkObject | ReferenceObject>;
132
+ }
133
+ type CallbackObject = Record<string, PathItemObject>;
134
+ interface ExampleObject {
135
+ description?: string;
136
+ externalValue?: string;
137
+ summary?: string;
138
+ value?: any;
139
+ }
140
+ interface LinkObject {
141
+ description?: string;
142
+ operationId?: string;
143
+ operationRef?: string;
144
+ parameters?: Map<any>;
145
+ requestBody?: any;
146
+ server?: ServerObject;
147
+ }
148
+ interface HeaderObject {
149
+ allowEmptyValue?: boolean;
150
+ allowReserved?: boolean;
151
+ content?: Map<MediaTypeObject>;
152
+ deprecated?: boolean;
153
+ description?: string;
154
+ example?: any;
155
+ examples?: Map<ExampleObject | ReferenceObject>;
156
+ explode?: string;
157
+ required?: boolean;
158
+ schema?: ReferenceObject | SchemaObject;
159
+ style?: string;
160
+ }
161
+ interface TagObject {
162
+ description?: string;
163
+ externalDocs?: ExternalDocumentationObject;
164
+ name: string;
165
+ }
166
+ interface ReferenceObject {
167
+ $ref: string;
168
+ }
169
+ type SchemaObject = Record<string, any>;
170
+ interface ApiKeySecuritySchemeObject {
171
+ description?: string;
172
+ in: string;
173
+ name: string;
174
+ type: string;
175
+ }
176
+ interface HttpSecuritySchemeObject {
177
+ bearerFormat?: string;
178
+ description?: string;
179
+ scheme: string;
180
+ type: string;
181
+ }
182
+ interface Oauth2SecuritySchemeObject {
183
+ description?: string;
184
+ flows: OAuthFlowsObject;
185
+ type: string;
186
+ }
187
+ interface OpenIdConnectSecuritySchemeObject {
188
+ description?: string;
189
+ openIdConnectUrl: string;
190
+ type: string;
191
+ }
192
+ interface OAuthFlowsObject {
193
+ authorizationCode?: OAuthFlowObject;
194
+ clientCredentials?: OAuthFlowObject;
195
+ implicit?: OAuthFlowObject;
196
+ password?: OAuthFlowObject;
197
+ }
198
+ interface OAuthFlowObject {
199
+ authorizationUrl?: string;
200
+ refreshUrl: string;
201
+ scopes: Map<string>;
202
+ tokenUrl?: string;
203
+ }
204
+ type SecurityRequirementObject = Record<string, string[]>;
205
+ type Map<T> = Record<string, T>;
206
+ declare const commentsToOpenApi$1: (fileContents: string, verbose?: boolean) => {
207
+ loc: number;
208
+ spec: OpenApiObject;
209
+ }[];
210
+ declare const parseFile: (file: string, commentsToOpenApi: (fileContent: string, verbose?: boolean) => {
211
+ loc: number;
212
+ spec: OpenApiObject;
213
+ }[], verbose?: boolean) => {
214
+ loc: number;
215
+ spec: OpenApiObject;
216
+ }[];
217
+ declare class SpecBuilder implements OpenApiObject {
218
+ components?: ComponentsObject;
219
+ externalDocs?: ExternalDocumentationObject;
220
+ info: InfoObject;
221
+ openapi: string;
222
+ paths: PathsObject;
223
+ security?: SecurityRequirementObject[];
224
+ servers?: ServerObject[];
225
+ tags?: TagObject[];
226
+ constructor(baseDefinition: BaseDefinition);
227
+ addData(parsedFile: OpenApiObject[]): void;
228
+ }
229
+ declare const commentsToOpenApi: (fileContents: string, verbose?: boolean) => {
230
+ loc: number;
231
+ spec: OpenApiObject;
232
+ }[];
233
+ declare const yamlLoc: (string: string) => number;
234
+ type WebpackCompiler = undefined;
235
+ declare class SwaggerCompilerPlugin {
236
+ private readonly assetsPath;
237
+ private readonly ignore;
238
+ private readonly sources;
239
+ private readonly swaggerDefinition;
240
+ private readonly verbose;
241
+ constructor(assetsPath: string, sources: string[], swaggerDefinition: BaseDefinition, options: {
242
+ ignore?: (RegExp | string)[];
243
+ verbose?: boolean;
244
+ });
245
+ apply(compiler: WebpackCompiler): void;
246
+ }
247
+ export { type BaseDefinition, type OpenApiObject, SpecBuilder, SwaggerCompilerPlugin, commentsToOpenApi$1 as jsDocumentCommentsToOpenApi, parseFile, commentsToOpenApi as swaggerJsDocumentCommentsToOpenApi, yamlLoc };
package/dist/index.mjs CHANGED
@@ -1,6 +1 @@
1
- export { default as jsDocumentCommentsToOpenApi } from './packem_shared/jsDocumentCommentsToOpenApi-DtrIZ2lK.mjs';
2
- export { default as parseFile } from './packem_shared/parseFile-BE-sKiRK.mjs';
3
- export { default as SpecBuilder } from './packem_shared/SpecBuilder-B7YiF7zR.mjs';
4
- export { default as swaggerJsDocumentCommentsToOpenApi } from './packem_shared/swaggerJsDocumentCommentsToOpenApi-B7g9rVr5.mjs';
5
- export { default as yamlLoc } from './packem_shared/yamlLoc-C7iHWvdq.mjs';
6
- export { default as SwaggerCompilerPlugin } from './packem_shared/SwaggerCompilerPlugin-DZ7tIJ8x.mjs';
1
+ import{default as r}from"./packem_shared/jsDocumentCommentsToOpenApi-Bvfi25DQ.mjs";import{default as t}from"./packem_shared/parseFile-CtAVjmPd.mjs";import{default as p}from"./packem_shared/SpecBuilder-DjnDJFpv.mjs";import{default as s}from"./packem_shared/swaggerJsDocumentCommentsToOpenApi-xKOqHvN2.mjs";import{default as u}from"./packem_shared/yamlLoc-C2tVIYaz.mjs";import{default as n}from"./packem_shared/SwaggerCompilerPlugin-CLoD91_H.mjs";export{p as SpecBuilder,n as SwaggerCompilerPlugin,r as jsDocumentCommentsToOpenApi,t as parseFile,s as swaggerJsDocumentCommentsToOpenApi,u as yamlLoc};
@@ -0,0 +1 @@
1
+ "use strict";var p=Object.defineProperty;var a=(s,e)=>p(s,"name",{value:e,configurable:!0});var h=Object.defineProperty,u=a((s,e)=>h(s,"name",{value:e,configurable:!0}),"s");const v=u((s,e)=>{Object.keys(e).forEach(r=>{s[r]===void 0?s[r]={...e[r]}:Object.keys(e[r]).forEach(t=>{s[r][t]={...s[r][t],...e[r][t]}})})},"objectMerge");var l=Object.defineProperty,f=a((s,e)=>l(s,"name",{value:e,configurable:!0}),"c");class b{static{a(this,"u")}static{f(this,"SpecBuilder")}components;externalDocs;info;openapi;paths;security;servers;tags;constructor(e){this.openapi=e.openapi,this.info=e.info,this.paths=e.paths??{},e.servers&&(this.servers=e.servers),e.components&&(this.components=e.components),e.security&&(this.security=e.security),e.tags&&(this.tags=e.tags),e.externalDocs&&(this.externalDocs=e.externalDocs)}addData(e){e.forEach(r=>{const{components:t,paths:c,...n}=r;v(this,{components:t??{},paths:c??{}}),Object.entries(n).forEach(([o,i])=>{this[o]=i})})}}module.exports=b;
@@ -0,0 +1 @@
1
+ var p=Object.defineProperty;var t=(s,e)=>p(s,"name",{value:e,configurable:!0});var h=Object.defineProperty,u=t((s,e)=>h(s,"name",{value:e,configurable:!0}),"s");const l=u((s,e)=>{Object.keys(e).forEach(a=>{s[a]===void 0?s[a]={...e[a]}:Object.keys(e[a]).forEach(r=>{s[a][r]={...s[a][r],...e[a][r]}})})},"objectMerge");var v=Object.defineProperty,f=t((s,e)=>v(s,"name",{value:e,configurable:!0}),"c");class m{static{t(this,"u")}static{f(this,"SpecBuilder")}components;externalDocs;info;openapi;paths;security;servers;tags;constructor(e){this.openapi=e.openapi,this.info=e.info,this.paths=e.paths??{},e.servers&&(this.servers=e.servers),e.components&&(this.components=e.components),e.security&&(this.security=e.security),e.tags&&(this.tags=e.tags),e.externalDocs&&(this.externalDocs=e.externalDocs)}addData(e){e.forEach(a=>{const{components:r,paths:c,...n}=a;l(this,{components:r??{},paths:c??{}}),Object.entries(n).forEach(([o,i])=>{this[o]=i})})}}export{m as default};
@@ -0,0 +1 @@
1
+ var v=Object.defineProperty;var g=(s,o)=>v(s,"name",{value:o,configurable:!0});import{mkdir as w,writeFile as y}from"node:fs";import{dirname as D}from"node:path";import{exit as m}from"node:process";import{collect as P}from"@visulima/fs";import{r as S,D as $}from"./validate-_k84qawx.mjs";import j from"./jsDocumentCommentsToOpenApi-Bvfi25DQ.mjs";import p from"./parseFile-CtAVjmPd.mjs";import k from"./SpecBuilder-DjnDJFpv.mjs";import x from"./swaggerJsDocumentCommentsToOpenApi-xKOqHvN2.mjs";var E=Object.defineProperty,d=g((s,o)=>E(s,"name",{value:o,configurable:!0}),"g");const u=d(s=>{s&&(console.error(s),m(1))},"errorHandler");class T{static{g(this,"E")}static{d(this,"SwaggerCompilerPlugin")}assetsPath;ignore;sources;swaggerDefinition;verbose;constructor(o,i,h,r){this.assetsPath=o,this.swaggerDefinition=h,this.sources=i,this.verbose=r.verbose??!1,this.ignore=r.ignore??[]}apply(o){const i=new Set([...$,...this.ignore]);o.hooks.make.tapAsync("SwaggerCompilerPlugin",async(h,r)=>{console.log("Build paused, switching to swagger build");const t=new k(this.swaggerDefinition);for(const e of this.sources){const n=await P(e,{extensions:[".js",".cjs",".mjs",".ts",".tsx",".jsx",".yaml",".yml"],includeDirs:!1,skip:[...i]});this.verbose&&(console.log(`Found ${String(n.length)} files in ${e}`),console.log(n)),n.forEach(a=>{this.verbose&&console.log(`Parsing file ${a}`);try{const l=p(a,j,this.verbose);t.addData(l.map(c=>c.spec));const b=p(a,x,this.verbose);t.addData(b.map(c=>c.spec))}catch(l){console.error(l),m(1)}})}try{this.verbose&&(console.log("Validating swagger spec"),console.log(JSON.stringify(t,void 0,2))),await S(structuredClone(t))}catch(e){console.error(e.toJSON()),m(1)}const{assetsPath:f}=this;w(D(f),{recursive:!0},e=>{e&&u(e),y(f,JSON.stringify(t,void 0,2),u)}),this.verbose&&console.log(`Written swagger spec to "${this.assetsPath}" file`),console.log("switching back to normal build"),r()})}}export{T as default};
@@ -0,0 +1 @@
1
+ "use strict";var y=Object.defineProperty;var g=(e,s)=>y(e,"name",{value:s,configurable:!0});const p=require("node:fs"),q=require("node:path"),u=require("node:process"),D=require("@visulima/fs"),m=require("./validate-tZa-jyuN.cjs"),P=require("./jsDocumentCommentsToOpenApi-DBYlHL5i.cjs"),f=require("./parseFile-C7tyTcIn.cjs"),S=require("./SpecBuilder-CR4EZk93.cjs"),x=require("./swaggerJsDocumentCommentsToOpenApi-Bo1geBuG.cjs");var j=Object.defineProperty,w=g((e,s)=>j(e,"name",{value:s,configurable:!0}),"g");const v=w(e=>{e&&(console.error(e),u.exit(1))},"errorHandler");class O{static{g(this,"E")}static{w(this,"SwaggerCompilerPlugin")}assetsPath;ignore;sources;swaggerDefinition;verbose;constructor(s,t,h,i){this.assetsPath=s,this.swaggerDefinition=h,this.sources=t,this.verbose=i.verbose??!1,this.ignore=i.ignore??[]}apply(s){const t=new Set([...m.D,...this.ignore]);s.hooks.make.tapAsync("SwaggerCompilerPlugin",async(h,i)=>{console.log("Build paused, switching to swagger build");const r=new S(this.swaggerDefinition);for(const o of this.sources){const n=await D.collect(o,{extensions:[".js",".cjs",".mjs",".ts",".tsx",".jsx",".yaml",".yml"],includeDirs:!1,skip:[...t]});this.verbose&&(console.log(`Found ${String(n.length)} files in ${o}`),console.log(n)),n.forEach(a=>{this.verbose&&console.log(`Parsing file ${a}`);try{const c=f(a,P,this.verbose);r.addData(c.map(l=>l.spec));const b=f(a,x,this.verbose);r.addData(b.map(l=>l.spec))}catch(c){console.error(c),u.exit(1)}})}try{this.verbose&&(console.log("Validating swagger spec"),console.log(JSON.stringify(r,void 0,2))),await m.r(structuredClone(r))}catch(o){console.error(o.toJSON()),u.exit(1)}const{assetsPath:d}=this;p.mkdir(q.dirname(d),{recursive:!0},o=>{o&&v(o),p.writeFile(d,JSON.stringify(r,void 0,2),v)}),this.verbose&&console.log(`Written swagger spec to "${this.assetsPath}" file`),console.log("switching back to normal build"),i()})}}module.exports=O;
@@ -0,0 +1 @@
1
+ var t=Object.defineProperty;var a=(r,e)=>t(r,"name",{value:e,configurable:!0});var o=Object.defineProperty,u=a((r,e)=>o(r,"name",{value:e,configurable:!0}),"u");const c=u((r,e)=>{if(Array.isArray(r))return[...r,...e]},"customizer");export{c as o};
@@ -0,0 +1 @@
1
+ "use strict";var a=Object.defineProperty;var t=(r,e)=>a(r,"name",{value:e,configurable:!0});var u=Object.defineProperty,i=t((r,e)=>u(r,"name",{value:e,configurable:!0}),"u");const o=i((r,e)=>{if(Array.isArray(r))return[...r,...e]},"customizer");exports.o=o;
@@ -0,0 +1 @@
1
+ "use strict";var s=Object.defineProperty;var t=(e,o)=>s(e,"name",{value:o,configurable:!0});const p=require("node:process"),c=require("./generateCommand-DPOEw62Z.cjs");var u=Object.defineProperty,g=t((e,o)=>u(e,"name",{value:o,configurable:!0}),"t");const m=g((e,o="generate",r=".openapirc.js")=>{e.command(o).description("Generates OpenAPI (Swagger) documentation from JSDoc's").usage("[options] <path ...>").argument("[path ...]","Paths to files or directories to parse").option("-c, --config [.openapirc.js]","@visulima/jsdoc-open-api config file path.").option("-o, --output [swaggerSpec.json]","Output swagger specification.").option("-v, --verbose","Verbose output.").option("-d, --very-verbose","Very verbose output.").action(async(a,n)=>{try{await c(r,a,n)}catch(i){console.error(i),p.exit(1)}})},"generateCommand");module.exports=m;
@@ -0,0 +1 @@
1
+ var p=Object.defineProperty;var t=(e,o)=>p(e,"name",{value:o,configurable:!0});import{exit as s}from"node:process";import c from"./generateCommand-DLJ2Ac1D.mjs";var u=Object.defineProperty,g=t((e,o)=>u(e,"name",{value:o,configurable:!0}),"t");const v=g((e,o="generate",r=".openapirc.js")=>{e.command(o).description("Generates OpenAPI (Swagger) documentation from JSDoc's").usage("[options] <path ...>").argument("[path ...]","Paths to files or directories to parse").option("-c, --config [.openapirc.js]","@visulima/jsdoc-open-api config file path.").option("-o, --output [swaggerSpec.json]","Output swagger specification.").option("-v, --verbose","Verbose output.").option("-d, --very-verbose","Very verbose output.").action(async(a,i)=>{try{await c(r,a,i)}catch(n){console.error(n),s(1)}})},"generateCommand");export{v as default};
@@ -0,0 +1,4 @@
1
+ var y=Object.defineProperty;var g=(t,i)=>y(t,"name",{value:i,configurable:!0});import{lstat as b,realpath as h,mkdir as $,writeFile as j}from"node:fs/promises";import{normalize as D,dirname as S}from"node:path";import{pathToFileURL as x}from"node:url";import{collect as k}from"@visulima/fs";import{MultiBar as C,Presets as E}from"cli-progress";import{r as F,D as O}from"./validate-_k84qawx.mjs";import P from"./jsDocumentCommentsToOpenApi-Bvfi25DQ.mjs";import p from"./parseFile-CtAVjmPd.mjs";import V from"./SpecBuilder-DjnDJFpv.mjs";import L from"./swaggerJsDocumentCommentsToOpenApi-xKOqHvN2.mjs";var N=Object.defineProperty,U=g((t,i)=>N(t,"name",{value:i,configurable:!0}),"g");const G=U(async(t,i,e)=>{let r;try{let o=await import(x(D(e.config??t)).href);o?.default&&(o=o.default),r=o}catch{throw new Error(`No config file found, on: ${e.config??".openapirc.js"}
2
+ `)}const f=new C({clearOnComplete:!1,format:"{value}/{total} | {bar} | {filename}",hideCursor:!0},E.shades_grey),a=new V(r.swaggerDefinition),d=new Set([...O,...r.exclude]);for(const o of i){(await b(o)).isDirectory();const l=await h(o),n=await k(l,{extensions:r.extensions??[".js",".cjs",".mjs",".ts",".tsx",".jsx",".yaml",".yml"],followSymlinks:r.followSymlinks??!1,match:r.include,skip:[...d]});(e.verbose??e.veryVerbose)&&console.log(`
3
+ Found ${String(n.length)} files in ${l}`),e.veryVerbose&&console.log(n);const u=f.create(n.length,0);n.forEach(c=>{e.verbose&&console.log(`Parsing file ${c}`),u.increment(1,{filename:l});const w=p(c,P,e.verbose);a.addData(w.map(m=>m.spec));const v=p(c,L,e.verbose);a.addData(v.map(m=>m.spec))})}e.verbose&&console.log("Validating swagger spec"),e.veryVerbose&&console.log(JSON.stringify(a,void 0,2)),await F(structuredClone(a));const s=e.output??"swagger.json";f.stop(),e.verbose&&console.log(`Written swagger spec to "${s}" file`),await $(S(s),{recursive:!0}),await j(s,JSON.stringify(a,void 0,2)),console.log(`
4
+ Swagger specification is ready, check the "${s}" file.`)},"generateCommand");export{G as default};
@@ -0,0 +1,4 @@
1
+ "use strict";var j=Object.defineProperty;var m=(s,t)=>j(s,"name",{value:t,configurable:!0});const l=require("node:fs/promises"),d=require("node:path"),S=require("node:url"),D=require("@visulima/fs"),p=require("cli-progress"),w=require("./validate-tZa-jyuN.cjs"),x=require("./jsDocumentCommentsToOpenApi-DBYlHL5i.cjs"),v=require("./parseFile-C7tyTcIn.cjs"),C=require("./SpecBuilder-CR4EZk93.cjs"),O=require("./swaggerJsDocumentCommentsToOpenApi-Bo1geBuG.cjs");var $=Object.defineProperty,k=m((s,t)=>$(s,"name",{value:t,configurable:!0}),"g");const F=k(async(s,t,e)=>{let o;try{let r=await import(S.pathToFileURL(d.normalize(e.config??s)).href);r?.default&&(r=r.default),o=r}catch{throw new Error(`No config file found, on: ${e.config??".openapirc.js"}
2
+ `)}const f=new p.MultiBar({clearOnComplete:!1,format:"{value}/{total} | {bar} | {filename}",hideCursor:!0},p.Presets.shades_grey),i=new C(o.swaggerDefinition),y=new Set([...w.D,...o.exclude]);for(const r of t){(await l.lstat(r)).isDirectory();const c=await l.realpath(r),n=await D.collect(c,{extensions:o.extensions??[".js",".cjs",".mjs",".ts",".tsx",".jsx",".yaml",".yml"],followSymlinks:o.followSymlinks??!1,match:o.include,skip:[...y]});(e.verbose??e.veryVerbose)&&console.log(`
3
+ Found ${String(n.length)} files in ${c}`),e.veryVerbose&&console.log(n);const b=f.create(n.length,0);n.forEach(u=>{e.verbose&&console.log(`Parsing file ${u}`),b.increment(1,{filename:c});const h=v(u,x,e.verbose);i.addData(h.map(g=>g.spec));const q=v(u,O,e.verbose);i.addData(q.map(g=>g.spec))})}e.verbose&&console.log("Validating swagger spec"),e.veryVerbose&&console.log(JSON.stringify(i,void 0,2)),await w.r(structuredClone(i));const a=e.output??"swagger.json";f.stop(),e.verbose&&console.log(`Written swagger spec to "${a}" file`),await l.mkdir(d.dirname(a),{recursive:!0}),await l.writeFile(a,JSON.stringify(i,void 0,2)),console.log(`
4
+ Swagger specification is ready, check the "${a}" file.`)},"generateCommand");module.exports=F;
@@ -0,0 +1 @@
1
+ var a=Object.defineProperty;var o=(e,i)=>a(e,"name",{value:i,configurable:!0});import{exit as c}from"node:process";import m from"./initCommand-CwoPwelm.mjs";var p=Object.defineProperty,d=o((e,i)=>p(e,"name",{value:i,configurable:!0}),"m");const u=d((e,i="init",r="Inits a pre-configured @visulima/jsdoc-open-api config file.",t=".openapirc.js")=>{e.command(i).description(r).action(()=>{try{m(t)}catch(n){console.error(n),c(1)}})},"initCommand");export{u as default};
@@ -0,0 +1,35 @@
1
+ "use strict";var r=Object.defineProperty;var t=(e,s)=>r(e,"name",{value:s,configurable:!0});const n=require("node:fs"),c=require("@visulima/fs");var i=Object.defineProperty,m=t((e,s)=>i(e,"name",{value:s,configurable:!0}),"a");const p=m((e,s=process.cwd())=>{if(n.existsSync(e))throw new Error("Config file already exists");const o=c.findUpSync("package.json",{cwd:n.realpathSync(s)});let a="module.exports =";if(o){const l=c.readJsonSync(o);console.info(`Found package.json at "${o}"`),l.type==="module"&&(console.info("Found package.json with type: module, using ES6 as export for the config file"),a="export default")}else console.info("No package.json found");n.writeFileSync(e,`${a} {
2
+ exclude: [
3
+ 'coverage/**',
4
+ '.github/**',
5
+ 'packages/*/test{,s}/**',
6
+ '**/*.d.ts',
7
+ 'test{,s}/**',
8
+ 'test{,-*}.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}',
9
+ '**/*{.,-}test.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}',
10
+ '**/__tests__/**',
11
+ '**/{ava,babel,nyc}.config.{js,cjs,mjs}',
12
+ '**/jest.config.{js,cjs,mjs,ts}',
13
+ '**/{karma,rollup,webpack}.config.js',
14
+ '**/.{eslint,mocha}rc.{js,cjs}',
15
+ '**/.{travis,yarnrc}.yml',
16
+ '**/{docker-compose,docker}.yml',
17
+ '**/.yamllint.{yaml,yml}',
18
+ '**/node_modules/**',
19
+ '**/pnpm-lock.yaml',
20
+ '**/pnpm-workspace.yaml',
21
+ '**/{package,package-lock}.json',
22
+ '**/yarn.lock',
23
+ '**/package.json5',
24
+ '**/.next/**',
25
+ ],
26
+ followSymlinks: false,
27
+ swaggerDefinition: {
28
+ openapi: '3.0.0',
29
+ info: {
30
+ title: 'API',
31
+ version: '1.0.0',
32
+ },
33
+ },
34
+ };
35
+ `),console.log(`Created "${e}"`)},"initCommand");module.exports=p;
@@ -0,0 +1,35 @@
1
+ var c=Object.defineProperty;var n=(e,o)=>c(e,"name",{value:o,configurable:!0});import{existsSync as l,realpathSync as r,writeFileSync as i}from"node:fs";import{findUpSync as m,readJsonSync as p}from"@visulima/fs";var j=Object.defineProperty,f=n((e,o)=>j(e,"name",{value:o,configurable:!0}),"a");const k=f((e,o=process.cwd())=>{if(l(e))throw new Error("Config file already exists");const s=m("package.json",{cwd:r(o)});let a="module.exports =";if(s){const t=p(s);console.info(`Found package.json at "${s}"`),t.type==="module"&&(console.info("Found package.json with type: module, using ES6 as export for the config file"),a="export default")}else console.info("No package.json found");i(e,`${a} {
2
+ exclude: [
3
+ 'coverage/**',
4
+ '.github/**',
5
+ 'packages/*/test{,s}/**',
6
+ '**/*.d.ts',
7
+ 'test{,s}/**',
8
+ 'test{,-*}.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}',
9
+ '**/*{.,-}test.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}',
10
+ '**/__tests__/**',
11
+ '**/{ava,babel,nyc}.config.{js,cjs,mjs}',
12
+ '**/jest.config.{js,cjs,mjs,ts}',
13
+ '**/{karma,rollup,webpack}.config.js',
14
+ '**/.{eslint,mocha}rc.{js,cjs}',
15
+ '**/.{travis,yarnrc}.yml',
16
+ '**/{docker-compose,docker}.yml',
17
+ '**/.yamllint.{yaml,yml}',
18
+ '**/node_modules/**',
19
+ '**/pnpm-lock.yaml',
20
+ '**/pnpm-workspace.yaml',
21
+ '**/{package,package-lock}.json',
22
+ '**/yarn.lock',
23
+ '**/package.json5',
24
+ '**/.next/**',
25
+ ],
26
+ followSymlinks: false,
27
+ swaggerDefinition: {
28
+ openapi: '3.0.0',
29
+ info: {
30
+ title: 'API',
31
+ version: '1.0.0',
32
+ },
33
+ },
34
+ };
35
+ `),console.log(`Created "${e}"`)},"initCommand");export{k as default};
@@ -0,0 +1 @@
1
+ "use strict";var c=Object.defineProperty;var r=(e,i)=>c(e,"name",{value:i,configurable:!0});const a=require("node:process"),s=require("./initCommand-CiV7G3q4.cjs");var d=Object.defineProperty,m=r((e,i)=>d(e,"name",{value:i,configurable:!0}),"m");const p=m((e,i="init",n="Inits a pre-configured @visulima/jsdoc-open-api config file.",o=".openapirc.js")=>{e.command(i).description(n).action(()=>{try{s(o)}catch(t){console.error(t),a.exit(1)}})},"initCommand");module.exports=p;
@@ -0,0 +1 @@
1
+ var l=Object.defineProperty;var u=(s,n)=>l(s,"name",{value:n,configurable:!0});import{parse as y}from"comment-parser";import b from"lodash.mergewith";import{o as f}from"./customizer-COfd-Xr1.mjs";var g=Object.defineProperty,i=u((s,n)=>g(s,"name",{value:n,configurable:!0}),"p");const $=/\[\]$/,h=/^- /u,T=/Param$/u,w=/^(GET|PUT|POST|DELETE|OPTIONS|HEAD|PATCH|TRACE) \/.*$/,k=i(s=>{s.security&&(s.security=Object.keys(s.security).map(n=>({[n]:s.security[n]})))},"fixSecurityObject"),q=new Set(["array","boolean","integer","number","object","string"]),d={binary:"string",byte:"string",date:"string","date-time":"string",double:"number",float:"number",int32:"integer",int64:"integer",password:"string"},O=i(s=>{const n=s.type,a=n.endsWith("[]"),e=n.replace($,""),c=q.has(e),t=Object.keys(d).includes(e);let r;if(s.default)switch(e){case"double":case"float":case"number":{r=Number.parseFloat(s.default);break}case"int32":case"int64":case"integer":{r=Number.parseInt(s.default,10);break}default:{r=s.default;break}}let o;c?o={default:r,type:e}:t?o={default:r,format:e,type:d[e]}:o={$ref:`#/components/schemas/${e}`};let p=a?{items:{...o},type:"array"}:{...o};e===""&&(p=void 0);let m=s.description.trim().replace(h,"");return m===""&&(m=void 0),{description:m,name:s.name,rawType:n,required:!s.optional,schema:p}},"parseDescription"),P=i((s,n)=>s.map(a=>{const e=O(a);let c="";switch(e.name&&(c+=e.name),e.description&&(c+=` ${e.description.trim()}`),a.tag){case"bodyComponent":return{requestBody:{$ref:`#/components/requestBodies/${e.rawType}`}};case"bodyContent":return{requestBody:{content:{[e.name.replace(String.raw`*\/*`,"*/*")]:{schema:e.schema}}}};case"bodyDescription":return{requestBody:{description:c}};case"bodyExample":{const[t,r]=e.name.split(".");return{requestBody:{content:{[t]:{examples:{[r]:{$ref:`#/components/examples/${e.rawType}`}}}}}}}case"bodyRequired":return{requestBody:{required:!0}};case"callback":return{callbacks:{[e.name]:{$ref:`#/components/callbacks/${e.rawType}`}}};case"cookieParam":case"headerParam":case"pathParam":case"queryParam":return{parameters:[{description:e.description,in:a.tag.replace(T,""),name:e.name,required:e.required,schema:e.schema}]};case"deprecated":return{deprecated:!0};case"description":case"operationId":case"summary":return{[a.tag]:c};case"externalDocs":return{externalDocs:{description:e.description,url:e.name}};case"paramComponent":return{parameters:[{$ref:`#/components/parameters/${e.rawType}`}]};case"response":return{responses:{[e.name]:{description:e.description}}};case"responseComponent":return{responses:{[e.name]:{$ref:`#/components/responses/${e.rawType}`}}};case"responseContent":{const[t,r]=e.name.split(".");return{responses:{[t]:{content:{[r]:{schema:e.schema}}}}}}case"responseExample":{const[t,r,o]=e.name.split(".");return{responses:{[t]:{content:{[r]:{examples:{[o]:{$ref:`#/components/examples/${e.rawType}`}}}}}}}}case"responseHeader":{const[t,r]=e.name.split(".");return{responses:{[t]:{headers:{[r]:{description:e.description,schema:e.schema}}}}}}case"responseHeaderComponent":{const[t,r]=e.name.split(".");return{responses:{[t]:{headers:{[r]:{$ref:`#/components/headers/${e.rawType}`}}}}}}case"responseLink":{const[t,r]=e.name.split(".");return{responses:{[t]:{links:{[r]:{$ref:`#/components/links/${e.rawType}`}}}}}}case"security":{const[t,r]=e.name.split(".");let o=[];return r&&(o=[r]),{security:{[t]:o}}}case"server":return{servers:[{description:e.description,url:e.name}]};case"tag":return{tags:[c]};default:return{}}}),"tagsToObjects"),S=i((s,n)=>y(s,{spacing:"preserve"}).filter(a=>w.test(a.description.trim())).map(a=>{const e=a.tags.length+1,c=b({},...P(a.tags,n),f);k(c);const[t,r]=a.description.split(" "),o={[r.trim()]:{[t.toLowerCase().trim()]:{...c}}},p=JSON.parse(JSON.stringify({paths:o}));return{loc:e,spec:p}}),"commentsToOpenApi");export{S as default};
@@ -0,0 +1 @@
1
+ "use strict";var l=Object.defineProperty;var u=(r,n)=>l(r,"name",{value:n,configurable:!0});const y=require("comment-parser"),b=require("lodash.mergewith"),f=require("./customizer-DUz3nxAJ.cjs"),g=u(r=>r&&typeof r=="object"&&"default"in r?r.default:r,"_interopDefaultCompat"),$=g(b);var h=Object.defineProperty,p=u((r,n)=>h(r,"name",{value:n,configurable:!0}),"p");const T=/\[\]$/,w=/^- /u,q=/Param$/u,k=/^(GET|PUT|POST|DELETE|OPTIONS|HEAD|PATCH|TRACE) \/.*$/,O=p(r=>{r.security&&(r.security=Object.keys(r.security).map(n=>({[n]:r.security[n]})))},"fixSecurityObject"),P=new Set(["array","boolean","integer","number","object","string"]),d={binary:"string",byte:"string",date:"string","date-time":"string",double:"number",float:"number",int32:"integer",int64:"integer",password:"string"},x=p(r=>{const n=r.type,a=n.endsWith("[]"),e=n.replace(T,""),o=P.has(e),t=Object.keys(d).includes(e);let s;if(r.default)switch(e){case"double":case"float":case"number":{s=Number.parseFloat(r.default);break}case"int32":case"int64":case"integer":{s=Number.parseInt(r.default,10);break}default:{s=r.default;break}}let c;o?c={default:s,type:e}:t?c={default:s,format:e,type:d[e]}:c={$ref:`#/components/schemas/${e}`};let i=a?{items:{...c},type:"array"}:{...c};e===""&&(i=void 0);let m=r.description.trim().replace(w,"");return m===""&&(m=void 0),{description:m,name:r.name,rawType:n,required:!r.optional,schema:i}},"parseDescription"),C=p((r,n)=>r.map(a=>{const e=x(a);let o="";switch(e.name&&(o+=e.name),e.description&&(o+=` ${e.description.trim()}`),a.tag){case"bodyComponent":return{requestBody:{$ref:`#/components/requestBodies/${e.rawType}`}};case"bodyContent":return{requestBody:{content:{[e.name.replace(String.raw`*\/*`,"*/*")]:{schema:e.schema}}}};case"bodyDescription":return{requestBody:{description:o}};case"bodyExample":{const[t,s]=e.name.split(".");return{requestBody:{content:{[t]:{examples:{[s]:{$ref:`#/components/examples/${e.rawType}`}}}}}}}case"bodyRequired":return{requestBody:{required:!0}};case"callback":return{callbacks:{[e.name]:{$ref:`#/components/callbacks/${e.rawType}`}}};case"cookieParam":case"headerParam":case"pathParam":case"queryParam":return{parameters:[{description:e.description,in:a.tag.replace(q,""),name:e.name,required:e.required,schema:e.schema}]};case"deprecated":return{deprecated:!0};case"description":case"operationId":case"summary":return{[a.tag]:o};case"externalDocs":return{externalDocs:{description:e.description,url:e.name}};case"paramComponent":return{parameters:[{$ref:`#/components/parameters/${e.rawType}`}]};case"response":return{responses:{[e.name]:{description:e.description}}};case"responseComponent":return{responses:{[e.name]:{$ref:`#/components/responses/${e.rawType}`}}};case"responseContent":{const[t,s]=e.name.split(".");return{responses:{[t]:{content:{[s]:{schema:e.schema}}}}}}case"responseExample":{const[t,s,c]=e.name.split(".");return{responses:{[t]:{content:{[s]:{examples:{[c]:{$ref:`#/components/examples/${e.rawType}`}}}}}}}}case"responseHeader":{const[t,s]=e.name.split(".");return{responses:{[t]:{headers:{[s]:{description:e.description,schema:e.schema}}}}}}case"responseHeaderComponent":{const[t,s]=e.name.split(".");return{responses:{[t]:{headers:{[s]:{$ref:`#/components/headers/${e.rawType}`}}}}}}case"responseLink":{const[t,s]=e.name.split(".");return{responses:{[t]:{links:{[s]:{$ref:`#/components/links/${e.rawType}`}}}}}}case"security":{const[t,s]=e.name.split(".");let c=[];return s&&(c=[s]),{security:{[t]:c}}}case"server":return{servers:[{description:e.description,url:e.name}]};case"tag":return{tags:[o]};default:return{}}}),"tagsToObjects"),E=p((r,n)=>y.parse(r,{spacing:"preserve"}).filter(a=>k.test(a.description.trim())).map(a=>{const e=a.tags.length+1,o=$({},...C(a.tags,n),f.o);O(o);const[t,s]=a.description.split(" "),c={[s.trim()]:{[t.toLowerCase().trim()]:{...o}}},i=JSON.parse(JSON.stringify({paths:c}));return{loc:e,spec:i}}),"commentsToOpenApi");module.exports=E;
@@ -0,0 +1 @@
1
+ "use strict";var p=Object.defineProperty;var n=(e,s)=>p(e,"name",{value:s,configurable:!0});const y=require("node:fs"),h=require("node:path"),d=require("yaml"),m=require("./yamlLoc-DyGcp8YC.cjs"),l=n(e=>e&&typeof e=="object"&&"default"in e?e.default:e,"_interopDefaultCompat"),_=l(h),b=l(d);var j=Object.defineProperty,f=n((e,s)=>j(e,"name",{value:s,configurable:!0}),"s");const i=new Set(["components","externalDocs","info","openapi","paths","security","servers","tags"]);class x extends Error{static{n(this,"h")}static{f(this,"ParseError")}filePath}const P=f((e,s,u)=>{const o=y.readFileSync(e,{encoding:"utf8"}),a=_.extname(e);if(a===".yaml"||a===".yml"){const t=b.parse(o),c=Object.keys(t).filter(r=>!i.has(r));if(c.length>0){const r=new x(`Unexpected keys: ${c.join(", ")}`);throw r.filePath=e,r}return Object.keys(t).some(r=>i.has(r))?[{loc:m(o),spec:t}]:[]}try{return s(o,u)}catch(t){throw t.filePath=e,t}},"parseFile");module.exports=P;
@@ -0,0 +1 @@
1
+ var p=Object.defineProperty;var n=(e,o)=>p(e,"name",{value:o,configurable:!0});import{readFileSync as m}from"node:fs";import h from"node:path";import y from"yaml";import u from"./yamlLoc-C2tVIYaz.mjs";var d=Object.defineProperty,f=n((e,o)=>d(e,"name",{value:o,configurable:!0}),"s");const i=new Set(["components","externalDocs","info","openapi","paths","security","servers","tags"]);class x extends Error{static{n(this,"h")}static{f(this,"ParseError")}filePath}const w=f((e,o,l)=>{const s=m(e,{encoding:"utf8"}),a=h.extname(e);if(a===".yaml"||a===".yml"){const t=y.parse(s),c=Object.keys(t).filter(r=>!i.has(r));if(c.length>0){const r=new x(`Unexpected keys: ${c.join(", ")}`);throw r.filePath=e,r}return Object.keys(t).some(r=>i.has(r))?[{loc:u(s),spec:t}]:[]}try{return o(s,l)}catch(t){throw t.filePath=e,t}},"parseFile");export{w as default};
@@ -0,0 +1,10 @@
1
+ "use strict";var d=Object.defineProperty;var p=(e,t)=>d(e,"name",{value:t,configurable:!0});const v=require("comment-parser"),b=require("lodash.mergewith"),O=require("yaml"),j=require("./customizer-DUz3nxAJ.cjs"),y=p(e=>e&&typeof e=="object"&&"default"in e?e.default:e,"_interopDefaultCompat"),l=y(b),S=y(O);var w=Object.defineProperty,u=p((e,t)=>w(e,"name",{value:t,configurable:!0}),"o");const m=u((e,t)=>l({},e,t,(r,s)=>{if(s===null)return r}),"mergeDeep"),E=u(e=>Object.keys(e).map(t=>e[t]).every(t=>typeof t=="object"&&Object.keys(t).every(r=>!(r in t))),"hasEmptyProperty"),f=u((e,t)=>t.some(r=>e.name===r.name),"isTagPresentInTags"),D=u(e=>{switch(e.tag){case"asyncapi":return"v4";case"openapi":return"v3";case"swagger":return"v2";default:return"v2"}},"getSwaggerVersionFromSpec");var P=Object.defineProperty,$=p((e,t)=>P(e,"name",{value:t,configurable:!0}),"e");const A=$((e,t,r)=>{if(r==="x-webhooks"&&(e[r]=t[r]),!r.startsWith("x-"))if(["components","consumes","produces","paths","schemas","securityDefinitions","responses","parameters","definitions","channels"].includes(r))Object.keys(t[r]).forEach(s=>{e[r][s]=m(e[r][s],t[r][s])});else if(r==="tags"){const{tags:s}=t;Array.isArray(s)?s.forEach(n=>{f(n,e.tags)||e.tags.push(n)}):f(s,e.tags)||e.tags.push(s)}else if(r==="security"){const{security:s}=t;e.security=s}else r.startsWith("/")&&(e.paths[r]=m(e.paths[r],t[r]))},"organizeSwaggerObject");var T=Object.defineProperty,h=p((e,t)=>T(e,"name",{value:t,configurable:!0}),"c");const W={v2:["paths","definitions","responses","parameters","securityDefinitions"],v3:["paths","definitions","responses","parameters","securityDefinitions","components"],v4:["components","channels"]},k=h((e,t)=>e.map(r=>{const s=r.description!==""||r.name.startsWith("/")||r.name.endsWith(":");if((r.tag==="openapi"||r.tag==="swagger"||r.tag==="asyncapi")&&s){let n=r.description;(r.name.startsWith("/")||r.name.endsWith(":"))&&(n=n.trim()===""?r.name:`${r.name}
2
+ ${n}`);const a=S.parseDocument(n);if(a.errors.length>0){a.errors.forEach(c=>{c.annotation=n});let o="Error parsing YAML in @openapi spec:";throw o+=t?a.errors.map(c=>`${c.toString()}
3
+ Imbedded within:
4
+ \`\`\`
5
+ ${c.annotation?.replaceAll(`
6
+ `,`
7
+ `)}
8
+ \`\`\``).join(`
9
+ `):a.errors.map(c=>c.toString()).join(`
10
+ `),new Error(o)}const i=a.toJSON(),g={tags:[]};return W[D(r)].forEach(o=>{g[o]=g[o]??{}}),Object.keys(i).forEach(o=>{A(g,i,o)}),g}return{}}),"tagsToObjects"),_=h((e,t)=>v.parse(e,{spacing:"preserve"}).map(r=>{const s=r.tags.length+1,n=l({},...k(r.tags,t),j.o);["definitions","responses","parameters","securityDefinitions","components","tags"].forEach(i=>{n[i]!==void 0&&E(n[i])&&delete n[i]});const a=JSON.parse(JSON.stringify(n));return{loc:s,spec:a}}),"commentsToOpenApi");module.exports=_;
@@ -0,0 +1,10 @@
1
+ var l=Object.defineProperty;var m=(r,t)=>l(r,"name",{value:t,configurable:!0});import{parse as d}from"comment-parser";import h from"lodash.mergewith";import v from"yaml";import{o as b}from"./customizer-COfd-Xr1.mjs";var O=Object.defineProperty,g=m((r,t)=>O(r,"name",{value:t,configurable:!0}),"o");const u=g((r,t)=>h({},r,t,(e,s)=>{if(s===null)return e}),"mergeDeep"),j=g(r=>Object.keys(r).map(t=>r[t]).every(t=>typeof t=="object"&&Object.keys(t).every(e=>!(e in t))),"hasEmptyProperty"),f=g((r,t)=>t.some(e=>r.name===e.name),"isTagPresentInTags"),S=g(r=>{switch(r.tag){case"asyncapi":return"v4";case"openapi":return"v3";case"swagger":return"v2";default:return"v2"}},"getSwaggerVersionFromSpec");var w=Object.defineProperty,E=m((r,t)=>w(r,"name",{value:t,configurable:!0}),"e");const D=E((r,t,e)=>{if(e==="x-webhooks"&&(r[e]=t[e]),!e.startsWith("x-"))if(["components","consumes","produces","paths","schemas","securityDefinitions","responses","parameters","definitions","channels"].includes(e))Object.keys(t[e]).forEach(s=>{r[e][s]=u(r[e][s],t[e][s])});else if(e==="tags"){const{tags:s}=t;Array.isArray(s)?s.forEach(n=>{f(n,r.tags)||r.tags.push(n)}):f(s,r.tags)||r.tags.push(s)}else if(e==="security"){const{security:s}=t;r.security=s}else e.startsWith("/")&&(r.paths[e]=u(r.paths[e],t[e]))},"organizeSwaggerObject");var P=Object.defineProperty,y=m((r,t)=>P(r,"name",{value:t,configurable:!0}),"c");const $={v2:["paths","definitions","responses","parameters","securityDefinitions"],v3:["paths","definitions","responses","parameters","securityDefinitions","components"],v4:["components","channels"]},A=y((r,t)=>r.map(e=>{const s=e.description!==""||e.name.startsWith("/")||e.name.endsWith(":");if((e.tag==="openapi"||e.tag==="swagger"||e.tag==="asyncapi")&&s){let n=e.description;(e.name.startsWith("/")||e.name.endsWith(":"))&&(n=n.trim()===""?e.name:`${e.name}
2
+ ${n}`);const a=v.parseDocument(n);if(a.errors.length>0){a.errors.forEach(p=>{p.annotation=n});let o="Error parsing YAML in @openapi spec:";throw o+=t?a.errors.map(p=>`${p.toString()}
3
+ Imbedded within:
4
+ \`\`\`
5
+ ${p.annotation?.replaceAll(`
6
+ `,`
7
+ `)}
8
+ \`\`\``).join(`
9
+ `):a.errors.map(p=>p.toString()).join(`
10
+ `),new Error(o)}const i=a.toJSON(),c={tags:[]};return $[S(e)].forEach(o=>{c[o]=c[o]??{}}),Object.keys(i).forEach(o=>{D(c,i,o)}),c}return{}}),"tagsToObjects"),J=y((r,t)=>d(r,{spacing:"preserve"}).map(e=>{const s=e.tags.length+1,n=h({},...A(e.tags,t),b);["definitions","responses","parameters","securityDefinitions","components","tags"].forEach(i=>{n[i]!==void 0&&j(n[i])&&delete n[i]});const a=JSON.parse(JSON.stringify(n));return{loc:s,spec:a}}),"commentsToOpenApi");export{J as default};
@@ -0,0 +1 @@
1
+ var t=Object.defineProperty;var e=(s,a)=>t(s,"name",{value:a,configurable:!0});import c from"@apidevtools/swagger-parser";const n=["coverage/**",".github/**","**/*.d.ts","**/test{,s}/**","**/test{,-*}.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}","**/*{.,-}test.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}","**/__tests__/**","**/{ava,babel,nyc}.config.{js,cjs,mjs}","**/jest.config.{js,cjs,mjs,ts}","**/{karma,rollup,webpack}.config.js","**/.{eslint,mocha}rc.{js,cjs}","**/.{travis,yarnrc}.yml","**/{docker-compose,docker}.yml","**/.yamllint.{yaml,yml}","**/node_modules/**","**/{pnpm-workspace,pnpm-lock}.yaml","**/{package,package-lock}.json","**/yarn.lock","**/package.json5","**/.next/**"];var o=Object.defineProperty,l=e((s,a)=>o(s,"name",{value:a,configurable:!0}),"a");const r=l(async s=>{await c.validate(s)},"validate");export{n as D,r};
@@ -0,0 +1 @@
1
+ "use strict";var e=Object.defineProperty;var a=(s,t)=>e(s,"name",{value:t,configurable:!0});const c=require("@apidevtools/swagger-parser"),o=a(s=>s&&typeof s=="object"&&"default"in s?s.default:s,"_interopDefaultCompat"),l=o(c),n=["coverage/**",".github/**","**/*.d.ts","**/test{,s}/**","**/test{,-*}.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}","**/*{.,-}test.{js,cjs,mjs,ts,tsx,jsx,yaml,yml}","**/__tests__/**","**/{ava,babel,nyc}.config.{js,cjs,mjs}","**/jest.config.{js,cjs,mjs,ts}","**/{karma,rollup,webpack}.config.js","**/.{eslint,mocha}rc.{js,cjs}","**/.{travis,yarnrc}.yml","**/{docker-compose,docker}.yml","**/.yamllint.{yaml,yml}","**/node_modules/**","**/{pnpm-workspace,pnpm-lock}.yaml","**/{package,package-lock}.json","**/yarn.lock","**/package.json5","**/.next/**"];var r=Object.defineProperty,j=a((s,t)=>r(s,"name",{value:t,configurable:!0}),"a");const m=j(async s=>{await l.validate(s)},"validate");exports.D=n;exports.r=m;
@@ -0,0 +1 @@
1
+ var l=Object.defineProperty;var r=(t,e)=>l(t,"name",{value:e,configurable:!0});var a=Object.defineProperty,n=r((t,e)=>a(t,"name",{value:e,configurable:!0}),"n");const s=/\r\n|\r|\n/u,i=/^\s*(#\s*(?:\S.*)?)?$/u,u=n(t=>t.split(s).filter(e=>i.test(e)?!1:e.trim().length>0).length,"yamlLoc");export{u as default};
@@ -0,0 +1 @@
1
+ "use strict";var s=Object.defineProperty;var r=(t,e)=>s(t,"name",{value:e,configurable:!0});var l=Object.defineProperty,n=r((t,e)=>l(t,"name",{value:e,configurable:!0}),"n");const a=/\r\n|\r|\n/u,i=/^\s*(#\s*(?:\S.*)?)?$/u,o=n(t=>t.split(a).filter(e=>i.test(e)?!1:e.trim().length>0).length,"yamlLoc");module.exports=o;
package/package.json CHANGED
@@ -1,23 +1,28 @@
1
1
  {
2
2
  "name": "@visulima/jsdoc-open-api",
3
- "version": "3.0.0-alpha.11",
3
+ "version": "3.0.0-alpha.13",
4
4
  "description": "Generates swagger doc based on JSDoc.",
5
5
  "keywords": [
6
- "visulima",
6
+ "api",
7
+ "cli",
8
+ "command",
9
+ "comment",
7
10
  "javascript",
11
+ "jsdoc",
8
12
  "openapi",
9
13
  "swagger",
10
- "jsdoc",
11
- "comment",
12
- "api",
13
- "webpack",
14
- "cli",
15
- "command"
14
+ "visulima",
15
+ "webpack"
16
16
  ],
17
17
  "homepage": "https://visulima.com/packages/jsdoc-open-api/",
18
18
  "bugs": {
19
19
  "url": "https://github.com/visulima/visulima/issues"
20
20
  },
21
+ "license": "MIT",
22
+ "author": {
23
+ "name": "Daniel Bannert",
24
+ "email": "d.bannert@anolilab.de"
25
+ },
21
26
  "repository": {
22
27
  "type": "git",
23
28
  "url": "https://github.com/visulima/visulima.git",
@@ -33,12 +38,39 @@
33
38
  "url": "https://anolilab.com/support"
34
39
  }
35
40
  ],
36
- "license": "MIT",
37
- "author": {
38
- "name": "Daniel Bannert",
39
- "email": "d.bannert@anolilab.de"
41
+ "bin": {
42
+ "jsdoc-open-api": "./bin/index.js"
40
43
  },
44
+ "files": [
45
+ "bin/**",
46
+ "cli/**",
47
+ "dist/**",
48
+ "README.md",
49
+ "CHANGELOG.md",
50
+ "LICENSE.md"
51
+ ],
52
+ "os": [
53
+ "darwin",
54
+ "linux",
55
+ "win32"
56
+ ],
41
57
  "sideEffects": false,
58
+ "main": "dist/index.cjs",
59
+ "module": "dist/index.mjs",
60
+ "types": "dist/index.d.ts",
61
+ "typesVersions": {
62
+ ">=5.0": {
63
+ ".": [
64
+ "./dist/index.d.ts"
65
+ ],
66
+ "cli": [
67
+ "./dist/cli/index.d.ts"
68
+ ],
69
+ "cli/commander": [
70
+ "./dist/cli/commander/index.d.ts"
71
+ ]
72
+ }
73
+ },
42
74
  "exports": {
43
75
  ".": {
44
76
  "import": {
@@ -72,39 +104,16 @@
72
104
  },
73
105
  "./package.json": "./package.json"
74
106
  },
75
- "main": "dist/index.cjs",
76
- "module": "dist/index.mjs",
77
- "types": "dist/index.d.ts",
78
- "typesVersions": {
79
- ">=5.0": {
80
- ".": [
81
- "./dist/index.d.ts"
82
- ],
83
- "cli": [
84
- "./dist/cli/index.d.ts"
85
- ],
86
- "cli/commander": [
87
- "./dist/cli/commander/index.d.ts"
88
- ]
89
- }
90
- },
91
- "bin": {
92
- "jsdoc-open-api": "./bin/index.js"
107
+ "publishConfig": {
108
+ "access": "public",
109
+ "provenance": true
93
110
  },
94
- "files": [
95
- "bin/**",
96
- "cli/**",
97
- "dist/**",
98
- "README.md",
99
- "CHANGELOG.md",
100
- "LICENSE.md"
101
- ],
102
111
  "dependencies": {
103
112
  "@apidevtools/swagger-parser": "^12.1.0",
104
- "@visulima/fs": "5.0.0-alpha.12",
113
+ "@visulima/fs": "5.0.0-alpha.14",
105
114
  "comment-parser": "1.4.6",
106
115
  "lodash.mergewith": "^4.6.2",
107
- "yaml": "2.8.3"
116
+ "yaml": "2.8.4"
108
117
  },
109
118
  "optionalDependencies": {
110
119
  "cli-progress": "^3.12.0",
@@ -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,7 +0,0 @@
1
- declare const generateCommand: (configName: string, paths: string[], options: {
2
- config?: string;
3
- output?: string;
4
- verbose?: boolean;
5
- veryVerbose?: boolean;
6
- }) => Promise<void>;
7
- export = generateCommand;