oas 28.9.0 → 29.0.1
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/dist/analyzer/index.cjs +53 -169
- package/dist/analyzer/index.cjs.map +1 -1
- package/dist/analyzer/index.d.cts +136 -3
- package/dist/analyzer/index.d.ts +136 -3
- package/dist/analyzer/index.js +52 -166
- package/dist/analyzer/index.js.map +1 -1
- package/dist/analyzer/types.d.cts +3 -28
- package/dist/analyzer/types.d.ts +3 -28
- package/dist/{chunk-3QWOOJXM.cjs → chunk-7GDJGM5N.cjs} +4 -4
- package/dist/{chunk-3QWOOJXM.cjs.map → chunk-7GDJGM5N.cjs.map} +1 -1
- package/dist/{chunk-BOVZLW7Q.js → chunk-AGDSUQ52.js} +2 -2
- package/dist/{chunk-JMLIY2LK.js → chunk-H7UPQPL6.js} +20 -18
- package/dist/chunk-H7UPQPL6.js.map +1 -0
- package/dist/{chunk-LV26LN7C.js → chunk-MTQDFD77.js} +4 -2
- package/dist/{chunk-LV26LN7C.js.map → chunk-MTQDFD77.js.map} +1 -1
- package/dist/{chunk-4QAOLGY2.cjs → chunk-PGMLBMGX.cjs} +27 -25
- package/dist/chunk-PGMLBMGX.cjs.map +1 -0
- package/dist/{chunk-LNQ2I4RW.cjs → chunk-R2ZT35NQ.cjs} +4 -2
- package/dist/chunk-R2ZT35NQ.cjs.map +1 -0
- package/dist/index.cjs +4 -4
- package/dist/index.d.cts +3 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.js +3 -3
- package/dist/operation/index.cjs +3 -3
- package/dist/operation/index.js +2 -2
- package/dist/utils.cjs +4 -2
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.cts +2 -1
- package/dist/utils.d.ts +2 -1
- package/dist/utils.js +3 -1
- package/package.json +2 -2
- package/dist/chunk-4QAOLGY2.cjs.map +0 -1
- package/dist/chunk-JMLIY2LK.js.map +0 -1
- package/dist/chunk-LNQ2I4RW.cjs.map +0 -1
- /package/dist/{chunk-BOVZLW7Q.js.map → chunk-AGDSUQ52.js.map} +0 -0
package/dist/analyzer/index.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../chunk-
|
|
5
|
-
require('../chunk-
|
|
3
|
+
var _chunkPGMLBMGXcjs = require('../chunk-PGMLBMGX.cjs');
|
|
4
|
+
require('../chunk-7GDJGM5N.cjs');
|
|
5
|
+
require('../chunk-R2ZT35NQ.cjs');
|
|
6
6
|
require('../chunk-PLD2CAAP.cjs');
|
|
7
7
|
require('../chunk-KDRD2YJG.cjs');
|
|
8
8
|
require('../chunk-WK3UQMKM.cjs');
|
|
@@ -21,7 +21,7 @@ function callbacks(definition) {
|
|
|
21
21
|
);
|
|
22
22
|
}
|
|
23
23
|
async function circularRefs(definition) {
|
|
24
|
-
const oas = new (0,
|
|
24
|
+
const oas = new (0, _chunkPGMLBMGXcjs.Oas)(JSON.parse(JSON.stringify(definition)));
|
|
25
25
|
await oas.dereference();
|
|
26
26
|
const results = oas.getCircularReferences();
|
|
27
27
|
results.sort();
|
|
@@ -34,12 +34,21 @@ function discriminators(definition) {
|
|
|
34
34
|
return _chunkW6GBV2JTcjs.query.call(void 0, ["$..discriminator"], definition).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
|
|
35
35
|
}
|
|
36
36
|
async function fileSize(definition) {
|
|
37
|
-
const oas = new (0,
|
|
37
|
+
const oas = new (0, _chunkPGMLBMGXcjs.Oas)(structuredClone(definition));
|
|
38
38
|
const originalSizeInBytes = Buffer.from(JSON.stringify(oas.api)).length;
|
|
39
39
|
const raw = Number((originalSizeInBytes / (1024 * 1024)).toFixed(2));
|
|
40
40
|
await oas.dereference();
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
let dereferenced;
|
|
42
|
+
try {
|
|
43
|
+
const dereferencedSizeInBytes = Buffer.from(JSON.stringify(oas.api)).length;
|
|
44
|
+
dereferenced = Number((dereferencedSizeInBytes / (1024 * 1024)).toFixed(2));
|
|
45
|
+
} catch (err) {
|
|
46
|
+
if (err instanceof RangeError) {
|
|
47
|
+
dereferenced = NaN;
|
|
48
|
+
} else {
|
|
49
|
+
throw err;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
43
52
|
return { raw, dereferenced };
|
|
44
53
|
}
|
|
45
54
|
function links(definition) {
|
|
@@ -66,6 +75,9 @@ function polymorphism(definition) {
|
|
|
66
75
|
results.sort();
|
|
67
76
|
return results;
|
|
68
77
|
}
|
|
78
|
+
function refNames(definition) {
|
|
79
|
+
return _chunkW6GBV2JTcjs.query.call(void 0, ["$..['x-readme-ref-name']"], definition).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
|
|
80
|
+
}
|
|
69
81
|
function securityTypes(definition) {
|
|
70
82
|
return Array.from(new Set(_chunkW6GBV2JTcjs.query.call(void 0, ["$.components.securitySchemes..type"], definition).map((res) => res.value)));
|
|
71
83
|
}
|
|
@@ -78,33 +90,6 @@ function totalOperations(definition) {
|
|
|
78
90
|
function webhooks(definition) {
|
|
79
91
|
return _chunkW6GBV2JTcjs.query.call(void 0, ["$.webhooks[*]"], definition).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
|
|
80
92
|
}
|
|
81
|
-
function xml(definition) {
|
|
82
|
-
return _chunkW6GBV2JTcjs.query.call(void 0,
|
|
83
|
-
[
|
|
84
|
-
"$.components.schemas..xml^",
|
|
85
|
-
"$..parameters..xml^",
|
|
86
|
-
"$..requestBody..xml^",
|
|
87
|
-
"$..requestBody..['application/xml']",
|
|
88
|
-
"$..requestBody..['application/xml-external-parsed-entity']",
|
|
89
|
-
"$..requestBody..['application/xml-dtd']",
|
|
90
|
-
"$..requestBody..['text/xml']",
|
|
91
|
-
"$..requestBody..['text/xml-external-parsed-entity']",
|
|
92
|
-
"$..requestBody.content[?(@property.match(/\\+xml$/i))]",
|
|
93
|
-
"$..responses..['application/xml']",
|
|
94
|
-
"$..responses..['application/xml-external-parsed-entity']",
|
|
95
|
-
"$..responses..['application/xml-dtd']",
|
|
96
|
-
"$..responses..['text/xml']",
|
|
97
|
-
"$..responses..['text/xml-external-parsed-entity']",
|
|
98
|
-
"$..responses[*].content[?(@property.match(/\\+xml$/i))]"
|
|
99
|
-
],
|
|
100
|
-
definition
|
|
101
|
-
).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
|
|
102
|
-
}
|
|
103
|
-
function xmlSchemas(definition) {
|
|
104
|
-
return _chunkW6GBV2JTcjs.query.call(void 0, ["$.components.schemas..xml^", "$..parameters..xml^", "$..requestBody..xml^"], definition).map(
|
|
105
|
-
(res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer)
|
|
106
|
-
);
|
|
107
|
-
}
|
|
108
93
|
function xmlRequests(definition) {
|
|
109
94
|
return _chunkW6GBV2JTcjs.query.call(void 0,
|
|
110
95
|
[
|
|
@@ -131,77 +116,11 @@ function xmlResponses(definition) {
|
|
|
131
116
|
definition
|
|
132
117
|
).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
|
|
133
118
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
return _chunkW6GBV2JTcjs.query.call(void 0, ["$.components.securitySchemes..['x-default']^"], definition).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
|
|
138
|
-
}
|
|
139
|
-
function codeSampleLanguages(definition) {
|
|
140
|
-
const results = Array.from(
|
|
141
|
-
new Set(
|
|
142
|
-
_chunkW6GBV2JTcjs.query.call(void 0, ["$..['x-readme']['samples-languages']", "$..['x-samples-languages']"], definition).map((res) => res.value).reduce((prev, next) => prev.concat(next), [])
|
|
143
|
-
)
|
|
144
|
-
);
|
|
145
|
-
results.sort();
|
|
146
|
-
return results;
|
|
147
|
-
}
|
|
148
|
-
function codeSamplesDisabled(definition) {
|
|
149
|
-
return Array.from(
|
|
150
|
-
new Set(
|
|
151
|
-
_chunkW6GBV2JTcjs.query.call(void 0,
|
|
152
|
-
[
|
|
153
|
-
"$['x-samples-enabled']^",
|
|
154
|
-
"$['x-readme']['samples-enabled']",
|
|
155
|
-
"$..paths[*]..['x-samples-enabled']^",
|
|
156
|
-
"$..paths[*]..['x-readme']['samples-enabled']^^"
|
|
157
|
-
],
|
|
158
|
-
definition
|
|
159
|
-
).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer))
|
|
160
|
-
)
|
|
161
|
-
);
|
|
162
|
-
}
|
|
163
|
-
function corsProxyDisabled(definition) {
|
|
164
|
-
return Array.from(
|
|
165
|
-
new Set(
|
|
166
|
-
_chunkW6GBV2JTcjs.query.call(void 0,
|
|
167
|
-
[
|
|
168
|
-
"$['x-proxy-enabled']^",
|
|
169
|
-
"$['x-readme']['proxy-enabled']",
|
|
170
|
-
"$..paths[*]..['x-proxy-enabled']^",
|
|
171
|
-
"$..paths[*]..['x-readme']['proxy-enabled']^^"
|
|
172
|
-
],
|
|
173
|
-
definition
|
|
174
|
-
).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer))
|
|
175
|
-
)
|
|
119
|
+
function xmlSchemas(definition) {
|
|
120
|
+
return _chunkW6GBV2JTcjs.query.call(void 0, ["$.components.schemas..xml^", "$..parameters..xml^", "$..requestBody..xml^"], definition).map(
|
|
121
|
+
(res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer)
|
|
176
122
|
);
|
|
177
123
|
}
|
|
178
|
-
function customCodeSamples(definition) {
|
|
179
|
-
return _chunkW6GBV2JTcjs.query.call(void 0, ["$..['x-code-samples']", "$..['x-readme']['code-samples']"], definition).filter((res) => {
|
|
180
|
-
return Array.isArray(res.value) && res.value.length ? res : false;
|
|
181
|
-
}).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
|
|
182
|
-
}
|
|
183
|
-
function explorerDisabled(definition) {
|
|
184
|
-
return _chunkW6GBV2JTcjs.query.call(void 0,
|
|
185
|
-
[
|
|
186
|
-
"$['x-explorer-enabled']^",
|
|
187
|
-
"$['x-readme']['explorer-enabled']",
|
|
188
|
-
"$..paths[*]..['x-explorer-enabled']^",
|
|
189
|
-
"$..paths[*]..['x-readme']['explorer-enabled']^^"
|
|
190
|
-
],
|
|
191
|
-
definition
|
|
192
|
-
).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
|
|
193
|
-
}
|
|
194
|
-
function rawBody(definition) {
|
|
195
|
-
return _chunkW6GBV2JTcjs.query.call(void 0, ["$..RAW_BODY^^"], definition).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
|
|
196
|
-
}
|
|
197
|
-
function staticHeaders(definition) {
|
|
198
|
-
return _chunkW6GBV2JTcjs.query.call(void 0, ["$..['x-headers']", "$..['x-readme']['headers']"], definition).filter((res) => {
|
|
199
|
-
return Array.isArray(res.value) && res.value.length ? res : false;
|
|
200
|
-
}).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
|
|
201
|
-
}
|
|
202
|
-
function refNames(definition) {
|
|
203
|
-
return _chunkW6GBV2JTcjs.query.call(void 0, ["$..['x-readme-ref-name']"], definition).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
|
|
204
|
-
}
|
|
205
124
|
|
|
206
125
|
// src/analyzer/index.ts
|
|
207
126
|
async function analyzer(definition) {
|
|
@@ -210,25 +129,16 @@ async function analyzer(definition) {
|
|
|
210
129
|
const circularRefs2 = await circularRefs(definition);
|
|
211
130
|
const commonParameters2 = commonParameters(definition);
|
|
212
131
|
const discriminators2 = discriminators(definition);
|
|
132
|
+
const { raw: rawFileSize, dereferenced: dereferencedFileSize } = await fileSize(definition);
|
|
213
133
|
const links2 = links(definition);
|
|
214
134
|
const parameterSerialization2 = parameterSerialization(definition);
|
|
215
135
|
const polymorphism2 = polymorphism(definition);
|
|
136
|
+
const refNames2 = refNames(definition);
|
|
216
137
|
const serverVariables2 = serverVariables(definition);
|
|
217
|
-
const webhooks2 = webhooks(definition);
|
|
218
|
-
const xml2 = xml(definition);
|
|
219
138
|
const xmlSchemas2 = xmlSchemas(definition);
|
|
220
139
|
const xmlRequests2 = xmlRequests(definition);
|
|
221
140
|
const xmlResponses2 = xmlResponses(definition);
|
|
222
|
-
const
|
|
223
|
-
const codeSampleLanguages2 = codeSampleLanguages(definition);
|
|
224
|
-
const customCodeSamples2 = customCodeSamples(definition);
|
|
225
|
-
const codeSamplesDisabled2 = codeSamplesDisabled(definition);
|
|
226
|
-
const disabledCorsProxy = corsProxyDisabled(definition);
|
|
227
|
-
const explorerDisabled2 = explorerDisabled(definition);
|
|
228
|
-
const staticHeaders2 = staticHeaders(definition);
|
|
229
|
-
const rawBody2 = rawBody(definition);
|
|
230
|
-
const refNames2 = refNames(definition);
|
|
231
|
-
const { raw: rawFileSize, dereferenced: dereferencedFileSize } = await fileSize(definition);
|
|
141
|
+
const webhooks2 = webhooks(definition);
|
|
232
142
|
const analysis = {
|
|
233
143
|
general: {
|
|
234
144
|
dereferencedFileSize: {
|
|
@@ -285,22 +195,14 @@ async function analyzer(definition) {
|
|
|
285
195
|
present: !!polymorphism2.length,
|
|
286
196
|
locations: polymorphism2
|
|
287
197
|
},
|
|
198
|
+
refNames: {
|
|
199
|
+
present: !!refNames2.length,
|
|
200
|
+
locations: refNames2
|
|
201
|
+
},
|
|
288
202
|
serverVariables: {
|
|
289
203
|
present: !!serverVariables2.length,
|
|
290
204
|
locations: serverVariables2
|
|
291
205
|
},
|
|
292
|
-
webhooks: {
|
|
293
|
-
present: !!webhooks2.length,
|
|
294
|
-
locations: webhooks2
|
|
295
|
-
},
|
|
296
|
-
xml: {
|
|
297
|
-
present: !!xml2.length,
|
|
298
|
-
locations: xml2
|
|
299
|
-
},
|
|
300
|
-
xmlSchemas: {
|
|
301
|
-
present: !!xmlSchemas2.length,
|
|
302
|
-
locations: xmlSchemas2
|
|
303
|
-
},
|
|
304
206
|
xmlRequests: {
|
|
305
207
|
present: !!xmlRequests2.length,
|
|
306
208
|
locations: xmlRequests2
|
|
@@ -308,56 +210,38 @@ async function analyzer(definition) {
|
|
|
308
210
|
xmlResponses: {
|
|
309
211
|
present: !!xmlResponses2.length,
|
|
310
212
|
locations: xmlResponses2
|
|
311
|
-
}
|
|
312
|
-
},
|
|
313
|
-
readme: {
|
|
314
|
-
"x-default": {
|
|
315
|
-
present: !!authDefaults2.length,
|
|
316
|
-
locations: authDefaults2
|
|
317
|
-
},
|
|
318
|
-
"x-readme.code-samples": {
|
|
319
|
-
present: !!customCodeSamples2.length,
|
|
320
|
-
locations: customCodeSamples2
|
|
321
|
-
},
|
|
322
|
-
"x-readme.headers": {
|
|
323
|
-
present: !!staticHeaders2.length,
|
|
324
|
-
locations: staticHeaders2
|
|
325
|
-
},
|
|
326
|
-
"x-readme.explorer-enabled": {
|
|
327
|
-
present: !!explorerDisabled2.length,
|
|
328
|
-
locations: explorerDisabled2
|
|
329
|
-
},
|
|
330
|
-
"x-readme.proxy-enabled": {
|
|
331
|
-
present: !!disabledCorsProxy.length,
|
|
332
|
-
locations: disabledCorsProxy
|
|
333
213
|
},
|
|
334
|
-
|
|
335
|
-
present: !!
|
|
336
|
-
locations:
|
|
214
|
+
xmlSchemas: {
|
|
215
|
+
present: !!xmlSchemas2.length,
|
|
216
|
+
locations: xmlSchemas2
|
|
337
217
|
},
|
|
338
|
-
|
|
339
|
-
present: !!
|
|
340
|
-
locations:
|
|
218
|
+
webhooks: {
|
|
219
|
+
present: !!webhooks2.length,
|
|
220
|
+
locations: webhooks2
|
|
341
221
|
}
|
|
342
222
|
}
|
|
343
223
|
};
|
|
344
|
-
if (codeSamplesDisabled2.length) {
|
|
345
|
-
analysis.readme["x-readme.samples-enabled"] = {
|
|
346
|
-
present: !!codeSamplesDisabled2.length,
|
|
347
|
-
locations: codeSamplesDisabled2
|
|
348
|
-
};
|
|
349
|
-
}
|
|
350
|
-
if (rawBody2.length) {
|
|
351
|
-
analysis.readme.raw_body = {
|
|
352
|
-
present: !!rawBody2.length,
|
|
353
|
-
locations: rawBody2
|
|
354
|
-
};
|
|
355
|
-
}
|
|
356
224
|
return analysis;
|
|
357
225
|
}
|
|
358
226
|
|
|
359
227
|
|
|
360
|
-
exports.default = analyzer;
|
|
361
228
|
|
|
362
|
-
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
exports.analyzeAdditionalProperties = additionalProperties; exports.analyzeCallbacks = callbacks; exports.analyzeCircularRefs = circularRefs; exports.analyzeCommonParameters = commonParameters; exports.analyzeDiscriminators = discriminators; exports.analyzeFileSize = fileSize; exports.analyzeLinks = links; exports.analyzeMediaTypes = mediaTypes; exports.analyzeParameterSerialization = parameterSerialization; exports.analyzePolymorphism = polymorphism; exports.analyzeRefNames = refNames; exports.analyzeSecurityTypes = securityTypes; exports.analyzeServerVariables = serverVariables; exports.analyzeTotalOperations = totalOperations; exports.analyzeWebhooks = webhooks; exports.analyzeXMLRequests = xmlRequests; exports.analyzeXMLResponses = xmlResponses; exports.analyzeXMLSchemas = xmlSchemas; exports.analyzer = analyzer;
|
|
363
247
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/erunion/code/readme/oas/packages/oas/dist/analyzer/index.cjs","../../src/analyzer/queries/openapi.ts","../../src/analyzer/queries/readme.ts","../../src/analyzer/index.ts"],"names":["additionalProperties","callbacks","circularRefs","commonParameters","discriminators","links","parameterSerialization","polymorphism","serverVariables","webhooks","xml","xmlSchemas","xmlRequests","xmlResponses","authDefaults","codeSampleLanguages","customCodeSamples","codeSamplesDisabled","explorerDisabled","staticHeaders","rawBody","refNames"],"mappings":"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","file":"/Users/erunion/code/readme/oas/packages/oas/dist/analyzer/index.cjs","sourcesContent":[null,"import type { OASDocument } from '../../types.js';\n\nimport Oas from '../../index.js';\nimport { query, refizePointer } from '../util.js';\n\n/**\n * Determine if a given API definition uses the `additionalProperties` schema property.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}\n */\nexport function additionalProperties(definition: OASDocument): string[] {\n return query(['$..additionalProperties'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition utilizes `callbacks`.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#callback-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#callback-object}\n */\nexport function callbacks(definition: OASDocument): string[] {\n return query(['$.components.callbacks', '$.paths.*[?(@.callbacks)].callbacks'], definition).map(res =>\n refizePointer(res.pointer),\n );\n}\n\n/**\n * Determine if a given API definition has circular refs.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}\n */\nexport async function circularRefs(definition: OASDocument): Promise<string[]> {\n // Dereferencing will update the passed in variable, which we don't want to do, so we\n // instantiated `Oas` with a clone.\n const oas = new Oas(JSON.parse(JSON.stringify(definition)));\n await oas.dereference();\n\n const results = oas.getCircularReferences();\n\n results.sort();\n return results;\n}\n\n/**\n * Determine if a given API definition utilizes common parameters.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#path-item-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#path-item-object}\n */\nexport function commonParameters(definition: OASDocument): string[] {\n return query(['$..paths[*].parameters'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition utilizes discriminators.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#discriminator-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#discriminator-object}\n */\nexport function discriminators(definition: OASDocument): string[] {\n return query(['$..discriminator'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Calculate the size of the raw and dereferenced OpenAPI file in MB.\n *\n */\nexport async function fileSize(definition: OASDocument): Promise<{ raw: number; dereferenced: number }> {\n const oas = new Oas(structuredClone(definition));\n\n const originalSizeInBytes = Buffer.from(JSON.stringify(oas.api)).length;\n const raw = Number((originalSizeInBytes / (1024 * 1024)).toFixed(2));\n\n await oas.dereference();\n\n const dereferencedSizeInBytes = Buffer.from(JSON.stringify(oas)).length;\n const dereferenced = Number((dereferencedSizeInBytes / (1024 * 1024)).toFixed(2));\n\n return { raw, dereferenced };\n}\n\n/**\n * Determine if a given API definition utilizes `links`.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#link-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#link-object}\n */\nexport function links(definition: OASDocument): string[] {\n return query(['$.components.links', '$.paths..responses.*.links'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine all of the available media types used within an API definition.\n *\n * @todo This query currently picks up false positives if there is an object named `content`.\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#request-body-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#request-body-object}\n */\nexport function mediaTypes(definition: OASDocument): string[] {\n const results = Array.from(\n new Set(\n query(['$..paths..content'], definition).flatMap(res => {\n // This'll transform `results`, which looks like `[['application/json'], ['text/xml']]`\n // into `['application/json', 'text/xml']`.\n return Object.keys(res.value);\n }),\n ),\n );\n\n results.sort();\n return results;\n}\n\n/**\n * Determine if a given API definition uses parameter serialization.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#parameter-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#parameter-object}\n */\nexport function parameterSerialization(definition: OASDocument): string[] {\n return query(['$..parameters[*].style^'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition utilizes schema polymorphism and/of interitance.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}\n */\nexport function polymorphism(definition: OASDocument): string[] {\n const results = Array.from(\n new Set(query(['$..allOf^', '$..anyOf^', '$..oneOf^'], definition).map(res => refizePointer(res.pointer))),\n );\n\n results.sort();\n return results;\n}\n\n/**\n * Determine every kind of security type that a given API definition has documented.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#security-scheme-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#security-scheme-object}\n */\nexport function securityTypes(definition: OASDocument): string[] {\n return Array.from(new Set(query(['$.components.securitySchemes..type'], definition).map(res => res.value as string)));\n}\n\n/**\n * Determine if a given API definition utilizes server variables.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#server-variable-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#server-variable-object}\n */\nexport function serverVariables(definition: OASDocument): string[] {\n return query(['$.servers..variables^'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine how many operations are defined in a given API definition.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#operation-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#operation-object}\n */\nexport function totalOperations(definition: OASDocument): number {\n return query(['$..paths[*]'], definition).flatMap(res => Object.keys(res.value)).length;\n}\n\n/**\n * Determine if a given API definition utilizes `webhooks` support in OpenAPI 3.1.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#oasWebhooks}\n */\nexport function webhooks(definition: OASDocument): string[] {\n return query(['$.webhooks[*]'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition has XML schemas, payloads, or responses.\n *\n * @deprecated The data contained within this has been split apart into `xmlSchemas`, `xmlRequests`, and `xmlResponses`. This property will be removed in a future release.\n * @see xmlSchemas\n * @see xmlRequests\n * @see xmlResponses\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#xml-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#xml-object}\n */\nexport function xml(definition: OASDocument): string[] {\n return query(\n [\n '$.components.schemas..xml^',\n '$..parameters..xml^',\n '$..requestBody..xml^',\n\n \"$..requestBody..['application/xml']\",\n \"$..requestBody..['application/xml-external-parsed-entity']\",\n \"$..requestBody..['application/xml-dtd']\",\n \"$..requestBody..['text/xml']\",\n \"$..requestBody..['text/xml-external-parsed-entity']\",\n '$..requestBody.content[?(@property.match(/\\\\+xml$/i))]',\n\n \"$..responses..['application/xml']\",\n \"$..responses..['application/xml-external-parsed-entity']\",\n \"$..responses..['application/xml-dtd']\",\n \"$..responses..['text/xml']\",\n \"$..responses..['text/xml-external-parsed-entity']\",\n '$..responses[*].content[?(@property.match(/\\\\+xml$/i))]',\n ],\n definition,\n ).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition utilises the XML object for defining XML schemas.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#xml-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#xml-object}\n */\nexport function xmlSchemas(definition: OASDocument): string[] {\n return query(['$.components.schemas..xml^', '$..parameters..xml^', '$..requestBody..xml^'], definition).map(res =>\n refizePointer(res.pointer),\n );\n}\n\n/**\n * Determine if a given API definition uses XML in a request body payload.\n *\n * @todo detect `+xml` media types\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}\n */\nexport function xmlRequests(definition: OASDocument): string[] {\n return query(\n [\n \"$..requestBody..['application/xml']\",\n \"$..requestBody..['application/xml-external-parsed-entity']\",\n \"$..requestBody..['application/xml-dtd']\",\n \"$..requestBody..['text/xml']\",\n \"$..requestBody..['text/xml-external-parsed-entity']\",\n '$..requestBody.content[?(@property.match(/\\\\+xml$/i))]',\n ],\n definition,\n ).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition uses XML in a response body.\n *\n * @todo detect `+xml` media types\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}\n */\nexport function xmlResponses(definition: OASDocument): string[] {\n return query(\n [\n \"$..responses..['application/xml']\",\n \"$..responses..['application/xml-external-parsed-entity']\",\n \"$..responses..['application/xml-dtd']\",\n \"$..responses..['text/xml']\",\n \"$..responses..['text/xml-external-parsed-entity']\",\n '$..responses[*].content[?(@property.match(/\\\\+xml$/i))]',\n ],\n definition,\n ).map(res => refizePointer(res.pointer));\n}\n","import type { OASDocument } from '../../types.js';\n\nimport { query, refizePointer } from '../util.js';\n\n/**\n * Determine if a given API definition is using our `x-default` extension for defining auth\n * defaults.\n *\n * @see {@link https://docs.readme.com/main/docs/openapi-extensions#authentication-defaults}\n */\nexport function authDefaults(definition: OASDocument): string[] {\n return query([\"$.components.securitySchemes..['x-default']^\"], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine all of the code sample languages, using the `x-readme.samples-languages` extension\n * that are specified within an API definition.\n *\n * @see {@link https://docs.readme.com/main/docs/openapi-extensions#code-sample-languages}\n */\nexport function codeSampleLanguages(definition: OASDocument): string[] {\n const results: string[] = Array.from(\n new Set(\n query([\"$..['x-readme']['samples-languages']\", \"$..['x-samples-languages']\"], definition)\n .map(res => res.value as string)\n .reduce((prev, next) => prev.concat(next), []),\n ),\n );\n\n results.sort();\n return results;\n}\n\n/**\n * Determine if a given API defintion is using the `x-samples-enabled` extension for disabling\n * code samples.\n *\n * @see {@link https://docs.readme.com/main/docs/openapi-extensions#disable-code-examples}\n */\nexport function codeSamplesDisabled(definition: OASDocument): string[] {\n return Array.from(\n new Set(\n query(\n [\n \"$['x-samples-enabled']^\",\n \"$['x-readme']['samples-enabled']\",\n \"$..paths[*]..['x-samples-enabled']^\",\n \"$..paths[*]..['x-readme']['samples-enabled']^^\",\n ],\n definition,\n ).map(res => refizePointer(res.pointer)),\n ),\n );\n}\n\n/**\n * Determine if a given API definition is using our `x-proxy-enabled` extension for disabling the\n * \"Try It\" CORS proxy.\n *\n * @see {@link https://docs.readme.com/main/docs/openapi-extensions#cors-proxy-enabled}\n */\nexport function corsProxyDisabled(definition: OASDocument): string[] {\n return Array.from(\n new Set(\n query(\n [\n \"$['x-proxy-enabled']^\",\n \"$['x-readme']['proxy-enabled']\",\n \"$..paths[*]..['x-proxy-enabled']^\",\n \"$..paths[*]..['x-readme']['proxy-enabled']^^\",\n ],\n definition,\n ).map(res => refizePointer(res.pointer)),\n ),\n );\n}\n\n/**\n * Determine if a given API definition is using our `x-code-samples` extension for documentating\n * custom code samples.\n *\n * @see {@link https://docs.readme.com/main/docs/openapi-extensions#custom-code-samples}\n */\nexport function customCodeSamples(definition: OASDocument): string[] {\n return query([\"$..['x-code-samples']\", \"$..['x-readme']['code-samples']\"], definition)\n .filter(res => {\n // If `code-samples` is an empty array then we ignore it.\n return Array.isArray(res.value) && res.value.length ? res : false;\n })\n .map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition is using our `x-explorer-enabled` extension for disabling\n * \"Try It\" functionality.\n *\n * @see {@link https://docs.readme.com/main/docs/openapi-extensions#disable-the-api-explorer}\n */\nexport function explorerDisabled(definition: OASDocument): string[] {\n return query(\n [\n \"$['x-explorer-enabled']^\",\n \"$['x-readme']['explorer-enabled']\",\n \"$..paths[*]..['x-explorer-enabled']^\",\n \"$..paths[*]..['x-readme']['explorer-enabled']^^\",\n ],\n definition,\n ).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition uses the `RAW_BODY` manual API hack for raw body content.\n *\n * @see {@link https://docs.readme.com/main/docs/manual-api-editor#raw-body-content-body-content}\n */\nexport function rawBody(definition: OASDocument): string[] {\n return query(['$..RAW_BODY^^'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition is using our `x-readme.headers` extension for defining\n * static headers.\n *\n * @see {@link https://docs.readme.com/main/docs/openapi-extensions#static-headers}\n */\nexport function staticHeaders(definition: OASDocument): string[] {\n return query([\"$..['x-headers']\", \"$..['x-readme']['headers']\"], definition)\n .filter(res => {\n // If `headers` is an empty array then we ignore it.\n return Array.isArray(res.value) && res.value.length ? res : false;\n })\n .map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition previously had references by checking if we added the\n * `x-readme-ref-name` extension after dereferencing.\n */\nexport function refNames(definition: OASDocument): string[] {\n return query([\"$..['x-readme-ref-name']\"], definition).map(res => refizePointer(res.pointer));\n}\n","import type { OASDocument } from '../types.js';\nimport type { OASAnalysis } from './types.js';\n\nimport {\n additionalProperties as queryAdditionalProperties,\n callbacks as queryCallbacks,\n circularRefs as queryCircularRefs,\n commonParameters as queryCommonParameters,\n discriminators as queryDiscriminators,\n fileSize as queryFileSize,\n links as queryLinks,\n mediaTypes as queryMediaTypes,\n parameterSerialization as queryParameterSerialization,\n polymorphism as queryPolymorphism,\n securityTypes as querySecurityTypes,\n serverVariables as queryServerVariables,\n totalOperations as queryTotalOperations,\n webhooks as queryWebhooks,\n xml as queryXml,\n xmlRequests as queryXmlRequests,\n xmlResponses as queryXmlResponses,\n xmlSchemas as queryXmlSchemas,\n} from './queries/openapi.js';\nimport {\n authDefaults as queryAuthDefaults,\n codeSampleLanguages as queryCodeSampleLanguages,\n codeSamplesDisabled as queryCodeSamplesDisabled,\n corsProxyDisabled as queryCorsProxyDisabled,\n customCodeSamples as queryCustomCodeSamples,\n explorerDisabled as queryExplorerDisabled,\n rawBody as queryRawBody,\n refNames as queryRefNames,\n staticHeaders as queryStaticHeaders,\n} from './queries/readme.js';\n\n/**\n * Analyze a given OpenAPI or Swagger definition for any OpenAPI, JSON Schema, and ReadMe-specific\n * feature uses it may contain.\n *\n */\n// biome-ignore lint/style/noDefaultExport: This is safe for now.\nexport default async function analyzer(definition: OASDocument): Promise<OASAnalysis> {\n const additionalProperties = queryAdditionalProperties(definition);\n const callbacks = queryCallbacks(definition);\n const circularRefs = await queryCircularRefs(definition);\n const commonParameters = queryCommonParameters(definition);\n const discriminators = queryDiscriminators(definition);\n const links = queryLinks(definition);\n const parameterSerialization = queryParameterSerialization(definition);\n const polymorphism = queryPolymorphism(definition);\n const serverVariables = queryServerVariables(definition);\n const webhooks = queryWebhooks(definition);\n const xml = queryXml(definition);\n const xmlSchemas = queryXmlSchemas(definition);\n const xmlRequests = queryXmlRequests(definition);\n const xmlResponses = queryXmlResponses(definition);\n\n const authDefaults = queryAuthDefaults(definition);\n const codeSampleLanguages = queryCodeSampleLanguages(definition);\n const customCodeSamples = queryCustomCodeSamples(definition);\n const codeSamplesDisabled = queryCodeSamplesDisabled(definition);\n const disabledCorsProxy = queryCorsProxyDisabled(definition);\n const explorerDisabled = queryExplorerDisabled(definition);\n const staticHeaders = queryStaticHeaders(definition);\n const rawBody = queryRawBody(definition);\n const refNames = queryRefNames(definition);\n\n const { raw: rawFileSize, dereferenced: dereferencedFileSize } = await queryFileSize(definition);\n\n const analysis: OASAnalysis = {\n general: {\n dereferencedFileSize: {\n name: 'Dereferenced File Size',\n found: dereferencedFileSize,\n },\n mediaTypes: {\n name: 'Media Type',\n found: queryMediaTypes(definition),\n },\n operationTotal: {\n name: 'Operation',\n found: queryTotalOperations(definition),\n },\n rawFileSize: {\n name: 'Raw File Size',\n found: rawFileSize,\n },\n securityTypes: {\n name: 'Security Type',\n found: querySecurityTypes(definition),\n },\n },\n openapi: {\n additionalProperties: {\n present: !!additionalProperties.length,\n locations: additionalProperties,\n },\n callbacks: {\n present: !!callbacks.length,\n locations: callbacks,\n },\n circularRefs: {\n present: !!circularRefs.length,\n locations: circularRefs,\n },\n commonParameters: {\n present: !!commonParameters.length,\n locations: commonParameters,\n },\n discriminators: {\n present: !!discriminators.length,\n locations: discriminators,\n },\n links: {\n present: !!links.length,\n locations: links,\n },\n style: {\n present: !!parameterSerialization.length,\n locations: parameterSerialization,\n },\n polymorphism: {\n present: !!polymorphism.length,\n locations: polymorphism,\n },\n serverVariables: {\n present: !!serverVariables.length,\n locations: serverVariables,\n },\n webhooks: {\n present: !!webhooks.length,\n locations: webhooks,\n },\n xml: {\n present: !!xml.length,\n locations: xml,\n },\n xmlSchemas: {\n present: !!xmlSchemas.length,\n locations: xmlSchemas,\n },\n xmlRequests: {\n present: !!xmlRequests.length,\n locations: xmlRequests,\n },\n xmlResponses: {\n present: !!xmlResponses.length,\n locations: xmlResponses,\n },\n },\n readme: {\n 'x-default': {\n present: !!authDefaults.length,\n locations: authDefaults,\n },\n 'x-readme.code-samples': {\n present: !!customCodeSamples.length,\n locations: customCodeSamples,\n },\n 'x-readme.headers': {\n present: !!staticHeaders.length,\n locations: staticHeaders,\n },\n 'x-readme.explorer-enabled': {\n present: !!explorerDisabled.length,\n locations: explorerDisabled,\n },\n 'x-readme.proxy-enabled': {\n present: !!disabledCorsProxy.length,\n locations: disabledCorsProxy,\n },\n 'x-readme.samples-languages': {\n present: !!codeSampleLanguages.length,\n locations: codeSampleLanguages,\n },\n 'x-readme-ref-name': {\n present: !!refNames.length,\n locations: refNames,\n },\n },\n };\n\n // We should only surface analysis for deprecated features and extensions if they have them as\n // there's no reason to give them information about something they can't use and should no longer\n // know about.\n if (codeSamplesDisabled.length) {\n analysis.readme['x-readme.samples-enabled'] = {\n present: !!codeSamplesDisabled.length,\n locations: codeSamplesDisabled,\n };\n }\n\n if (rawBody.length) {\n analysis.readme.raw_body = {\n present: !!rawBody.length,\n locations: rawBody,\n };\n }\n\n return analysis;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["/Users/erunion/code/readme/oas/packages/oas/dist/analyzer/index.cjs","../../src/analyzer/queries/openapi.ts","../../src/analyzer/index.ts"],"names":["additionalProperties","callbacks","circularRefs","commonParameters","discriminators","links","parameterSerialization","polymorphism","refNames","serverVariables","xmlSchemas","xmlRequests","xmlResponses","webhooks"],"mappings":"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","file":"/Users/erunion/code/readme/oas/packages/oas/dist/analyzer/index.cjs","sourcesContent":[null,"import type { OASDocument } from '../../types.js';\n\nimport Oas from '../../index.js';\nimport { query, refizePointer } from '../util.js';\n\n/**\n * Determine if a given API definition uses the `additionalProperties` schema property.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}\n */\nexport function additionalProperties(definition: OASDocument): string[] {\n return query(['$..additionalProperties'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition utilizes `callbacks`.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#callback-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#callback-object}\n */\nexport function callbacks(definition: OASDocument): string[] {\n return query(['$.components.callbacks', '$.paths.*[?(@.callbacks)].callbacks'], definition).map(res =>\n refizePointer(res.pointer),\n );\n}\n\n/**\n * Determine if a given API definition has circular refs.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}\n */\nexport async function circularRefs(definition: OASDocument): Promise<string[]> {\n // Dereferencing will update the passed in variable, which we don't want to do, so we\n // instantiated `Oas` with a clone.\n const oas = new Oas(JSON.parse(JSON.stringify(definition)));\n await oas.dereference();\n\n const results = oas.getCircularReferences();\n\n results.sort();\n return results;\n}\n\n/**\n * Determine if a given API definition utilizes common parameters.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#path-item-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#path-item-object}\n */\nexport function commonParameters(definition: OASDocument): string[] {\n return query(['$..paths[*].parameters'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition utilizes discriminators.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#discriminator-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#discriminator-object}\n */\nexport function discriminators(definition: OASDocument): string[] {\n return query(['$..discriminator'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Calculate the size of the raw and dereferenced OpenAPI file in MB.\n *\n * If a dereferenced API definition is too large to be stringified the file size will be returned\n * as NaN.\n *\n */\nexport async function fileSize(definition: OASDocument): Promise<{ raw: number; dereferenced: number | typeof NaN }> {\n const oas = new Oas(structuredClone(definition));\n\n const originalSizeInBytes = Buffer.from(JSON.stringify(oas.api)).length;\n const raw = Number((originalSizeInBytes / (1024 * 1024)).toFixed(2));\n\n await oas.dereference();\n\n let dereferenced: number;\n try {\n const dereferencedSizeInBytes = Buffer.from(JSON.stringify(oas.api)).length;\n dereferenced = Number((dereferencedSizeInBytes / (1024 * 1024)).toFixed(2));\n } catch (err) {\n // If the dereferenced API definition is too large to be stringified then we don't have a safer\n // way to estimate its size that wouldn't sacrifice accuracy so we'll just return NaN.\n if (err instanceof RangeError) {\n dereferenced = NaN;\n } else {\n throw err;\n }\n }\n\n return { raw, dereferenced };\n}\n\n/**\n * Determine if a given API definition utilizes `links`.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#link-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#link-object}\n */\nexport function links(definition: OASDocument): string[] {\n return query(['$.components.links', '$.paths..responses.*.links'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine all of the available media types used within an API definition.\n *\n * @todo This query currently picks up false positives if there is an object named `content`.\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#request-body-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#request-body-object}\n */\nexport function mediaTypes(definition: OASDocument): string[] {\n const results = Array.from(\n new Set(\n query(['$..paths..content'], definition).flatMap(res => {\n // This'll transform `results`, which looks like `[['application/json'], ['text/xml']]`\n // into `['application/json', 'text/xml']`.\n return Object.keys(res.value);\n }),\n ),\n );\n\n results.sort();\n return results;\n}\n\n/**\n * Determine if a given API definition uses parameter serialization.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#parameter-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#parameter-object}\n */\nexport function parameterSerialization(definition: OASDocument): string[] {\n return query(['$..parameters[*].style^'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition utilizes schema polymorphism and/of interitance.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}\n */\nexport function polymorphism(definition: OASDocument): string[] {\n const results = Array.from(\n new Set(query(['$..allOf^', '$..anyOf^', '$..oneOf^'], definition).map(res => refizePointer(res.pointer))),\n );\n\n results.sort();\n return results;\n}\n\n/**\n * Determine if a given API definition previously had references by checking if we added the\n * `x-readme-ref-name` extension after dereferencing. This extension is added only during the\n * dereferencing process.\n *\n */\nexport function refNames(definition: OASDocument): string[] {\n return query([\"$..['x-readme-ref-name']\"], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine every kind of security type that a given API definition has documented.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#security-scheme-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#security-scheme-object}\n */\nexport function securityTypes(definition: OASDocument): string[] {\n return Array.from(new Set(query(['$.components.securitySchemes..type'], definition).map(res => res.value as string)));\n}\n\n/**\n * Determine if a given API definition utilizes server variables.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#server-variable-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#server-variable-object}\n */\nexport function serverVariables(definition: OASDocument): string[] {\n return query(['$.servers..variables^'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine how many operations are defined in a given API definition.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#operation-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#operation-object}\n */\nexport function totalOperations(definition: OASDocument): number {\n return query(['$..paths[*]'], definition).flatMap(res => Object.keys(res.value)).length;\n}\n\n/**\n * Determine if a given API definition utilizes `webhooks` support in OpenAPI 3.1.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#oasWebhooks}\n */\nexport function webhooks(definition: OASDocument): string[] {\n return query(['$.webhooks[*]'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition uses XML in a request body payload.\n *\n * @todo detect `+xml` media types\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}\n */\nexport function xmlRequests(definition: OASDocument): string[] {\n return query(\n [\n \"$..requestBody..['application/xml']\",\n \"$..requestBody..['application/xml-external-parsed-entity']\",\n \"$..requestBody..['application/xml-dtd']\",\n \"$..requestBody..['text/xml']\",\n \"$..requestBody..['text/xml-external-parsed-entity']\",\n '$..requestBody.content[?(@property.match(/\\\\+xml$/i))]',\n ],\n definition,\n ).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition uses XML in a response body.\n *\n * @todo detect `+xml` media types\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}\n */\nexport function xmlResponses(definition: OASDocument): string[] {\n return query(\n [\n \"$..responses..['application/xml']\",\n \"$..responses..['application/xml-external-parsed-entity']\",\n \"$..responses..['application/xml-dtd']\",\n \"$..responses..['text/xml']\",\n \"$..responses..['text/xml-external-parsed-entity']\",\n '$..responses[*].content[?(@property.match(/\\\\+xml$/i))]',\n ],\n definition,\n ).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition utilises the XML object for defining XML schemas.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#xml-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#xml-object}\n */\nexport function xmlSchemas(definition: OASDocument): string[] {\n return query(['$.components.schemas..xml^', '$..parameters..xml^', '$..requestBody..xml^'], definition).map(res =>\n refizePointer(res.pointer),\n );\n}\n","import type { OASDocument } from '../types.js';\nimport type { OASAnalysis } from './types.js';\n\nimport {\n additionalProperties as analyzeAdditionalProperties,\n callbacks as analyzeCallbacks,\n circularRefs as analyzeCircularRefs,\n commonParameters as analyzeCommonParameters,\n discriminators as analyzeDiscriminators,\n fileSize as analyzeFileSize,\n links as analyzeLinks,\n mediaTypes as analyzeMediaTypes,\n parameterSerialization as analyzeParameterSerialization,\n polymorphism as analyzePolymorphism,\n refNames as analyzeRefNames,\n securityTypes as analyzeSecurityTypes,\n serverVariables as analyzeServerVariables,\n totalOperations as analyzeTotalOperations,\n webhooks as analyzeWebhooks,\n xmlRequests as analyzeXMLRequests,\n xmlResponses as analyzeXMLResponses,\n xmlSchemas as analyzeXMLSchemas,\n} from './queries/openapi.js';\n\nexport {\n analyzeAdditionalProperties,\n analyzeCallbacks,\n analyzeCircularRefs,\n analyzeCommonParameters,\n analyzeDiscriminators,\n analyzeFileSize,\n analyzeLinks,\n analyzeMediaTypes,\n analyzeParameterSerialization,\n analyzePolymorphism,\n analyzeRefNames,\n analyzeSecurityTypes,\n analyzeServerVariables,\n analyzeTotalOperations,\n analyzeWebhooks,\n analyzeXMLRequests,\n analyzeXMLResponses,\n analyzeXMLSchemas,\n};\n\n/**\n * Analyze a given OpenAPI or Swagger definition for any OpenAPI or JSON Schema feature uses it\n * may contain or utilize.\n *\n */\nexport async function analyzer(definition: OASDocument): Promise<OASAnalysis> {\n const additionalProperties = analyzeAdditionalProperties(definition);\n const callbacks = analyzeCallbacks(definition);\n const circularRefs = await analyzeCircularRefs(definition);\n const commonParameters = analyzeCommonParameters(definition);\n const discriminators = analyzeDiscriminators(definition);\n const { raw: rawFileSize, dereferenced: dereferencedFileSize } = await analyzeFileSize(definition);\n const links = analyzeLinks(definition);\n const parameterSerialization = analyzeParameterSerialization(definition);\n const polymorphism = analyzePolymorphism(definition);\n const refNames = analyzeRefNames(definition);\n const serverVariables = analyzeServerVariables(definition);\n const xmlSchemas = analyzeXMLSchemas(definition);\n const xmlRequests = analyzeXMLRequests(definition);\n const xmlResponses = analyzeXMLResponses(definition);\n const webhooks = analyzeWebhooks(definition);\n\n const analysis: OASAnalysis = {\n general: {\n dereferencedFileSize: {\n name: 'Dereferenced File Size',\n found: dereferencedFileSize,\n },\n mediaTypes: {\n name: 'Media Type',\n found: analyzeMediaTypes(definition),\n },\n operationTotal: {\n name: 'Operation',\n found: analyzeTotalOperations(definition),\n },\n rawFileSize: {\n name: 'Raw File Size',\n found: rawFileSize,\n },\n securityTypes: {\n name: 'Security Type',\n found: analyzeSecurityTypes(definition),\n },\n },\n openapi: {\n additionalProperties: {\n present: !!additionalProperties.length,\n locations: additionalProperties,\n },\n callbacks: {\n present: !!callbacks.length,\n locations: callbacks,\n },\n circularRefs: {\n present: !!circularRefs.length,\n locations: circularRefs,\n },\n commonParameters: {\n present: !!commonParameters.length,\n locations: commonParameters,\n },\n discriminators: {\n present: !!discriminators.length,\n locations: discriminators,\n },\n links: {\n present: !!links.length,\n locations: links,\n },\n style: {\n present: !!parameterSerialization.length,\n locations: parameterSerialization,\n },\n polymorphism: {\n present: !!polymorphism.length,\n locations: polymorphism,\n },\n refNames: {\n present: !!refNames.length,\n locations: refNames,\n },\n serverVariables: {\n present: !!serverVariables.length,\n locations: serverVariables,\n },\n xmlRequests: {\n present: !!xmlRequests.length,\n locations: xmlRequests,\n },\n xmlResponses: {\n present: !!xmlResponses.length,\n locations: xmlResponses,\n },\n xmlSchemas: {\n present: !!xmlSchemas.length,\n locations: xmlSchemas,\n },\n webhooks: {\n present: !!webhooks.length,\n locations: webhooks,\n },\n },\n };\n\n return analysis;\n}\n"]}
|
|
@@ -4,10 +4,143 @@ import 'json-schema';
|
|
|
4
4
|
import 'openapi-types';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
7
|
+
* Determine if a given API definition uses the `additionalProperties` schema property.
|
|
8
|
+
*
|
|
9
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object}
|
|
10
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}
|
|
11
|
+
*/
|
|
12
|
+
declare function additionalProperties(definition: OASDocument): string[];
|
|
13
|
+
/**
|
|
14
|
+
* Determine if a given API definition utilizes `callbacks`.
|
|
15
|
+
*
|
|
16
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#callback-object}
|
|
17
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#callback-object}
|
|
18
|
+
*/
|
|
19
|
+
declare function callbacks(definition: OASDocument): string[];
|
|
20
|
+
/**
|
|
21
|
+
* Determine if a given API definition has circular refs.
|
|
22
|
+
*
|
|
23
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object}
|
|
24
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}
|
|
25
|
+
*/
|
|
26
|
+
declare function circularRefs(definition: OASDocument): Promise<string[]>;
|
|
27
|
+
/**
|
|
28
|
+
* Determine if a given API definition utilizes common parameters.
|
|
29
|
+
*
|
|
30
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#path-item-object}
|
|
31
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#path-item-object}
|
|
32
|
+
*/
|
|
33
|
+
declare function commonParameters(definition: OASDocument): string[];
|
|
34
|
+
/**
|
|
35
|
+
* Determine if a given API definition utilizes discriminators.
|
|
36
|
+
*
|
|
37
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#discriminator-object}
|
|
38
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#discriminator-object}
|
|
39
|
+
*/
|
|
40
|
+
declare function discriminators(definition: OASDocument): string[];
|
|
41
|
+
/**
|
|
42
|
+
* Calculate the size of the raw and dereferenced OpenAPI file in MB.
|
|
43
|
+
*
|
|
44
|
+
* If a dereferenced API definition is too large to be stringified the file size will be returned
|
|
45
|
+
* as NaN.
|
|
46
|
+
*
|
|
47
|
+
*/
|
|
48
|
+
declare function fileSize(definition: OASDocument): Promise<{
|
|
49
|
+
raw: number;
|
|
50
|
+
dereferenced: number | typeof NaN;
|
|
51
|
+
}>;
|
|
52
|
+
/**
|
|
53
|
+
* Determine if a given API definition utilizes `links`.
|
|
54
|
+
*
|
|
55
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#link-object}
|
|
56
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#link-object}
|
|
57
|
+
*/
|
|
58
|
+
declare function links(definition: OASDocument): string[];
|
|
59
|
+
/**
|
|
60
|
+
* Determine all of the available media types used within an API definition.
|
|
61
|
+
*
|
|
62
|
+
* @todo This query currently picks up false positives if there is an object named `content`.
|
|
63
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#request-body-object}
|
|
64
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#request-body-object}
|
|
65
|
+
*/
|
|
66
|
+
declare function mediaTypes(definition: OASDocument): string[];
|
|
67
|
+
/**
|
|
68
|
+
* Determine if a given API definition uses parameter serialization.
|
|
69
|
+
*
|
|
70
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#parameter-object}
|
|
71
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#parameter-object}
|
|
72
|
+
*/
|
|
73
|
+
declare function parameterSerialization(definition: OASDocument): string[];
|
|
74
|
+
/**
|
|
75
|
+
* Determine if a given API definition utilizes schema polymorphism and/of interitance.
|
|
76
|
+
*
|
|
77
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object}
|
|
78
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}
|
|
79
|
+
*/
|
|
80
|
+
declare function polymorphism(definition: OASDocument): string[];
|
|
81
|
+
/**
|
|
82
|
+
* Determine if a given API definition previously had references by checking if we added the
|
|
83
|
+
* `x-readme-ref-name` extension after dereferencing. This extension is added only during the
|
|
84
|
+
* dereferencing process.
|
|
85
|
+
*
|
|
86
|
+
*/
|
|
87
|
+
declare function refNames(definition: OASDocument): string[];
|
|
88
|
+
/**
|
|
89
|
+
* Determine every kind of security type that a given API definition has documented.
|
|
90
|
+
*
|
|
91
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#security-scheme-object}
|
|
92
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#security-scheme-object}
|
|
93
|
+
*/
|
|
94
|
+
declare function securityTypes(definition: OASDocument): string[];
|
|
95
|
+
/**
|
|
96
|
+
* Determine if a given API definition utilizes server variables.
|
|
97
|
+
*
|
|
98
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#server-variable-object}
|
|
99
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#server-variable-object}
|
|
100
|
+
*/
|
|
101
|
+
declare function serverVariables(definition: OASDocument): string[];
|
|
102
|
+
/**
|
|
103
|
+
* Determine how many operations are defined in a given API definition.
|
|
104
|
+
*
|
|
105
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#operation-object}
|
|
106
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#operation-object}
|
|
107
|
+
*/
|
|
108
|
+
declare function totalOperations(definition: OASDocument): number;
|
|
109
|
+
/**
|
|
110
|
+
* Determine if a given API definition utilizes `webhooks` support in OpenAPI 3.1.
|
|
111
|
+
*
|
|
112
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#oasWebhooks}
|
|
113
|
+
*/
|
|
114
|
+
declare function webhooks(definition: OASDocument): string[];
|
|
115
|
+
/**
|
|
116
|
+
* Determine if a given API definition uses XML in a request body payload.
|
|
117
|
+
*
|
|
118
|
+
* @todo detect `+xml` media types
|
|
119
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}
|
|
120
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}
|
|
121
|
+
*/
|
|
122
|
+
declare function xmlRequests(definition: OASDocument): string[];
|
|
123
|
+
/**
|
|
124
|
+
* Determine if a given API definition uses XML in a response body.
|
|
125
|
+
*
|
|
126
|
+
* @todo detect `+xml` media types
|
|
127
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}
|
|
128
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}
|
|
129
|
+
*/
|
|
130
|
+
declare function xmlResponses(definition: OASDocument): string[];
|
|
131
|
+
/**
|
|
132
|
+
* Determine if a given API definition utilises the XML object for defining XML schemas.
|
|
133
|
+
*
|
|
134
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#xml-object}
|
|
135
|
+
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#xml-object}
|
|
136
|
+
*/
|
|
137
|
+
declare function xmlSchemas(definition: OASDocument): string[];
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Analyze a given OpenAPI or Swagger definition for any OpenAPI or JSON Schema feature uses it
|
|
141
|
+
* may contain or utilize.
|
|
9
142
|
*
|
|
10
143
|
*/
|
|
11
144
|
declare function analyzer(definition: OASDocument): Promise<OASAnalysis>;
|
|
12
145
|
|
|
13
|
-
export
|
|
146
|
+
export { additionalProperties as analyzeAdditionalProperties, callbacks as analyzeCallbacks, circularRefs as analyzeCircularRefs, commonParameters as analyzeCommonParameters, discriminators as analyzeDiscriminators, fileSize as analyzeFileSize, links as analyzeLinks, mediaTypes as analyzeMediaTypes, parameterSerialization as analyzeParameterSerialization, polymorphism as analyzePolymorphism, refNames as analyzeRefNames, securityTypes as analyzeSecurityTypes, serverVariables as analyzeServerVariables, totalOperations as analyzeTotalOperations, webhooks as analyzeWebhooks, xmlRequests as analyzeXMLRequests, xmlResponses as analyzeXMLResponses, xmlSchemas as analyzeXMLSchemas, analyzer };
|