oas 27.0.1 → 27.2.0
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/README.md +3 -1
- package/dist/analyzer/index.cjs +71 -7
- package/dist/analyzer/index.cjs.map +1 -1
- package/dist/analyzer/index.d.cts +0 -1
- package/dist/analyzer/index.d.ts +0 -1
- package/dist/analyzer/index.js +70 -6
- package/dist/analyzer/index.js.map +1 -1
- package/dist/analyzer/types.d.cts +8 -0
- package/dist/analyzer/types.d.ts +8 -0
- package/dist/{chunk-36L32E7W.js → chunk-3TRWJPXH.js} +3 -3
- package/dist/chunk-3TRWJPXH.js.map +1 -0
- package/dist/{chunk-HGHW4JSM.js → chunk-5XZQA26T.js} +2 -2
- package/dist/chunk-5XZQA26T.js.map +1 -0
- package/dist/{chunk-7XLR2GY5.cjs → chunk-BLQKFBR2.cjs} +6 -6
- package/dist/chunk-BLQKFBR2.cjs.map +1 -0
- package/dist/{chunk-Q2TBKI3O.cjs → chunk-OJBEY3IB.cjs} +1 -1
- package/dist/chunk-OJBEY3IB.cjs.map +1 -0
- package/dist/{chunk-4EWSCVWC.cjs → chunk-URXLIMMM.cjs} +18 -18
- package/dist/chunk-URXLIMMM.cjs.map +1 -0
- package/dist/{chunk-5KFARTQ3.js → chunk-V24D22KO.js} +1 -1
- package/dist/chunk-V24D22KO.js.map +1 -0
- package/dist/index.cjs +4 -4
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -3
- package/dist/operation/index.cjs +3 -3
- package/dist/operation/index.js +2 -2
- package/dist/operation/lib/get-parameters-as-json-schema.cjs +2 -2
- package/dist/operation/lib/get-parameters-as-json-schema.js +1 -1
- package/dist/utils.cjs +2 -2
- package/dist/utils.js +1 -1
- package/package.json +5 -5
- package/dist/chunk-36L32E7W.js.map +0 -1
- package/dist/chunk-4EWSCVWC.cjs.map +0 -1
- package/dist/chunk-5KFARTQ3.js.map +0 -1
- package/dist/chunk-7XLR2GY5.cjs.map +0 -1
- package/dist/chunk-HGHW4JSM.js.map +0 -1
- package/dist/chunk-Q2TBKI3O.cjs.map +0 -1
package/README.md
CHANGED
|
@@ -272,9 +272,11 @@ console.log(await analyzer(petstore));
|
|
|
272
272
|
<!-- prettier-ignore-start -->
|
|
273
273
|
| Metric | Description |
|
|
274
274
|
| :--- | :--- |
|
|
275
|
+
| `dereferencedFileSize` | Size of the definition after resolving all references. |
|
|
275
276
|
| `mediaTypes` | What are the different media type shapes that your API operations support? |
|
|
276
277
|
| `operationTotal` | The total amount of operations in your definition. |
|
|
277
|
-
| `
|
|
278
|
+
| `rawFileSize` | Size of the definition in its raw form. |
|
|
279
|
+
| `securityTypes` | The different types of security that your API contains. |
|
|
278
280
|
<!-- prettier-ignore-end -->
|
|
279
281
|
|
|
280
282
|
##### OpenAPI Features
|
package/dist/analyzer/index.cjs
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkBLQKFBR2cjs = require('../chunk-BLQKFBR2.cjs');
|
|
4
|
+
require('../chunk-URXLIMMM.cjs');
|
|
5
|
+
require('../chunk-TDI4MZLI.cjs');
|
|
6
|
+
require('../chunk-OJBEY3IB.cjs');
|
|
7
|
+
require('../chunk-XS7VDTTT.cjs');
|
|
8
|
+
require('../chunk-VSXG73AZ.cjs');
|
|
4
9
|
|
|
5
10
|
|
|
6
11
|
|
|
7
12
|
var _chunkW6GBV2JTcjs = require('../chunk-W6GBV2JT.cjs');
|
|
8
|
-
require('../chunk-4EWSCVWC.cjs');
|
|
9
|
-
require('../chunk-TDI4MZLI.cjs');
|
|
10
|
-
require('../chunk-Q2TBKI3O.cjs');
|
|
11
|
-
require('../chunk-XS7VDTTT.cjs');
|
|
12
|
-
require('../chunk-VSXG73AZ.cjs');
|
|
13
13
|
|
|
14
14
|
// src/analyzer/queries/openapi.ts
|
|
15
15
|
function additionalProperties(definition) {
|
|
@@ -19,7 +19,7 @@ function callbacks(definition) {
|
|
|
19
19
|
return _chunkW6GBV2JTcjs.query.call(void 0, ["$.components.callbacks", "$.paths..callbacks"], definition).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
|
|
20
20
|
}
|
|
21
21
|
async function circularRefs(definition) {
|
|
22
|
-
const oas = new (0,
|
|
22
|
+
const oas = new (0, _chunkBLQKFBR2cjs.Oas)(JSON.parse(JSON.stringify(definition)));
|
|
23
23
|
await oas.dereference();
|
|
24
24
|
const results = oas.getCircularReferences();
|
|
25
25
|
results.sort();
|
|
@@ -31,6 +31,15 @@ function commonParameters(definition) {
|
|
|
31
31
|
function discriminators(definition) {
|
|
32
32
|
return _chunkW6GBV2JTcjs.query.call(void 0, ["$..discriminator"], definition).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
|
|
33
33
|
}
|
|
34
|
+
async function fileSize(definition) {
|
|
35
|
+
const oas = new (0, _chunkBLQKFBR2cjs.Oas)(structuredClone(definition));
|
|
36
|
+
const originalSizeInBytes = Buffer.from(JSON.stringify(oas.api)).length;
|
|
37
|
+
const raw = Number((originalSizeInBytes / (1024 * 1024)).toFixed(2));
|
|
38
|
+
await oas.dereference();
|
|
39
|
+
const dereferencedSizeInBytes = Buffer.from(JSON.stringify(oas)).length;
|
|
40
|
+
const dereferenced = Number((dereferencedSizeInBytes / (1024 * 1024)).toFixed(2));
|
|
41
|
+
return { raw, dereferenced };
|
|
42
|
+
}
|
|
34
43
|
function links(definition) {
|
|
35
44
|
return _chunkW6GBV2JTcjs.query.call(void 0, ["$..links"], definition).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
|
|
36
45
|
}
|
|
@@ -89,6 +98,37 @@ function xml(definition) {
|
|
|
89
98
|
definition
|
|
90
99
|
).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
|
|
91
100
|
}
|
|
101
|
+
function xmlSchemas(definition) {
|
|
102
|
+
return _chunkW6GBV2JTcjs.query.call(void 0, ["$.components.schemas..xml^", "$..parameters..xml^", "$..requestBody..xml^"], definition).map(
|
|
103
|
+
(res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer)
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
function xmlRequests(definition) {
|
|
107
|
+
return _chunkW6GBV2JTcjs.query.call(void 0,
|
|
108
|
+
[
|
|
109
|
+
"$..requestBody..['application/xml']",
|
|
110
|
+
"$..requestBody..['application/xml-external-parsed-entity']",
|
|
111
|
+
"$..requestBody..['application/xml-dtd']",
|
|
112
|
+
"$..requestBody..['text/xml']",
|
|
113
|
+
"$..requestBody..['text/xml-external-parsed-entity']",
|
|
114
|
+
"$..requestBody.content[?(@property.match(/\\+xml$/i))]"
|
|
115
|
+
],
|
|
116
|
+
definition
|
|
117
|
+
).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
|
|
118
|
+
}
|
|
119
|
+
function xmlResponses(definition) {
|
|
120
|
+
return _chunkW6GBV2JTcjs.query.call(void 0,
|
|
121
|
+
[
|
|
122
|
+
"$..responses..['application/xml']",
|
|
123
|
+
"$..responses..['application/xml-external-parsed-entity']",
|
|
124
|
+
"$..responses..['application/xml-dtd']",
|
|
125
|
+
"$..responses..['text/xml']",
|
|
126
|
+
"$..responses..['text/xml-external-parsed-entity']",
|
|
127
|
+
"$..responses[*].content[?(@property.match(/\\+xml$/i))]"
|
|
128
|
+
],
|
|
129
|
+
definition
|
|
130
|
+
).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
|
|
131
|
+
}
|
|
92
132
|
|
|
93
133
|
// src/analyzer/queries/readme.ts
|
|
94
134
|
function authDefaults(definition) {
|
|
@@ -174,6 +214,9 @@ async function analyzer(definition) {
|
|
|
174
214
|
const serverVariables2 = serverVariables(definition);
|
|
175
215
|
const webhooks2 = webhooks(definition);
|
|
176
216
|
const xml2 = xml(definition);
|
|
217
|
+
const xmlSchemas2 = xmlSchemas(definition);
|
|
218
|
+
const xmlRequests2 = xmlRequests(definition);
|
|
219
|
+
const xmlResponses2 = xmlResponses(definition);
|
|
177
220
|
const authDefaults2 = authDefaults(definition);
|
|
178
221
|
const codeSampleLanguages2 = codeSampleLanguages(definition);
|
|
179
222
|
const customCodeSamples2 = customCodeSamples(definition);
|
|
@@ -183,8 +226,13 @@ async function analyzer(definition) {
|
|
|
183
226
|
const staticHeaders2 = staticHeaders(definition);
|
|
184
227
|
const rawBody2 = rawBody(definition);
|
|
185
228
|
const refNames2 = refNames(definition);
|
|
229
|
+
const { raw: rawFileSize, dereferenced: dereferencedFileSize } = await fileSize(definition);
|
|
186
230
|
const analysis = {
|
|
187
231
|
general: {
|
|
232
|
+
dereferencedFileSize: {
|
|
233
|
+
name: "Dereferenced File Size",
|
|
234
|
+
found: dereferencedFileSize
|
|
235
|
+
},
|
|
188
236
|
mediaTypes: {
|
|
189
237
|
name: "Media Type",
|
|
190
238
|
found: mediaTypes(definition)
|
|
@@ -193,6 +241,10 @@ async function analyzer(definition) {
|
|
|
193
241
|
name: "Operation",
|
|
194
242
|
found: totalOperations(definition)
|
|
195
243
|
},
|
|
244
|
+
rawFileSize: {
|
|
245
|
+
name: "Raw File Size",
|
|
246
|
+
found: rawFileSize
|
|
247
|
+
},
|
|
196
248
|
securityTypes: {
|
|
197
249
|
name: "Security Type",
|
|
198
250
|
found: securityTypes(definition)
|
|
@@ -242,6 +294,18 @@ async function analyzer(definition) {
|
|
|
242
294
|
xml: {
|
|
243
295
|
present: !!xml2.length,
|
|
244
296
|
locations: xml2
|
|
297
|
+
},
|
|
298
|
+
xmlSchemas: {
|
|
299
|
+
present: !!xmlSchemas2.length,
|
|
300
|
+
locations: xmlSchemas2
|
|
301
|
+
},
|
|
302
|
+
xmlRequests: {
|
|
303
|
+
present: !!xmlRequests2.length,
|
|
304
|
+
locations: xmlRequests2
|
|
305
|
+
},
|
|
306
|
+
xmlResponses: {
|
|
307
|
+
present: !!xmlResponses2.length,
|
|
308
|
+
locations: xmlResponses2
|
|
245
309
|
}
|
|
246
310
|
},
|
|
247
311
|
readme: {
|
|
@@ -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","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'], definition).map(res => refizePointer(res.pointer));\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 // eslint-disable-next-line try-catch-failsafe/json-parse\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 * 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(['$..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)\n .map(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 .flat(),\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)\n .map(res => Object.keys(res.value))\n .flat().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 * @todo detect `+xml` media types\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","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 { OASAnalysis } from './types.js';\nimport type { OASDocument } from '../types.js';\n\nimport * as OPENAPI_QUERIES from './queries/openapi.js';\nimport * as README_QUERIES 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 * @todo this might be worth moving into the `oas` package at some point\n */\nexport default async function analyzer(definition: OASDocument): Promise<OASAnalysis> {\n const additionalProperties = OPENAPI_QUERIES.additionalProperties(definition);\n const callbacks = OPENAPI_QUERIES.callbacks(definition);\n const circularRefs = await OPENAPI_QUERIES.circularRefs(definition);\n const commonParameters = OPENAPI_QUERIES.commonParameters(definition);\n const discriminators = OPENAPI_QUERIES.discriminators(definition);\n const links = OPENAPI_QUERIES.links(definition);\n const parameterSerialization = OPENAPI_QUERIES.parameterSerialization(definition);\n const polymorphism = OPENAPI_QUERIES.polymorphism(definition);\n const serverVariables = OPENAPI_QUERIES.serverVariables(definition);\n const webhooks = OPENAPI_QUERIES.webhooks(definition);\n const xml = OPENAPI_QUERIES.xml(definition);\n\n const authDefaults = README_QUERIES.authDefaults(definition);\n const codeSampleLanguages = README_QUERIES.codeSampleLanguages(definition);\n const customCodeSamples = README_QUERIES.customCodeSamples(definition);\n const codeSamplesDisabled = README_QUERIES.codeSamplesDisabled(definition);\n const disabledCorsProxy = README_QUERIES.corsProxyDisabled(definition);\n const explorerDisabled = README_QUERIES.explorerDisabled(definition);\n const staticHeaders = README_QUERIES.staticHeaders(definition);\n const rawBody = README_QUERIES.rawBody(definition);\n const refNames = README_QUERIES.refNames(definition);\n\n const analysis: OASAnalysis = {\n general: {\n mediaTypes: {\n name: 'Media Type',\n found: OPENAPI_QUERIES.mediaTypes(definition),\n },\n operationTotal: {\n name: 'Operation',\n found: OPENAPI_QUERIES.totalOperations(definition),\n },\n securityTypes: {\n name: 'Security Type',\n found: OPENAPI_QUERIES.securityTypes(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 },\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/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'], definition).map(res => refizePointer(res.pointer));\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 // eslint-disable-next-line try-catch-failsafe/json-parse\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(['$..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)\n .map(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 .flat(),\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)\n .map(res => Object.keys(res.value))\n .flat().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 { OASAnalysis } from './types.js';\nimport type { OASDocument } from '../types.js';\n\nimport * as OPENAPI_QUERIES from './queries/openapi.js'; // eslint-disable-line readme/no-wildcard-imports\nimport * as README_QUERIES from './queries/readme.js'; // eslint-disable-line readme/no-wildcard-imports\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 */\nexport default async function analyzer(definition: OASDocument): Promise<OASAnalysis> {\n const additionalProperties = OPENAPI_QUERIES.additionalProperties(definition);\n const callbacks = OPENAPI_QUERIES.callbacks(definition);\n const circularRefs = await OPENAPI_QUERIES.circularRefs(definition);\n const commonParameters = OPENAPI_QUERIES.commonParameters(definition);\n const discriminators = OPENAPI_QUERIES.discriminators(definition);\n const links = OPENAPI_QUERIES.links(definition);\n const parameterSerialization = OPENAPI_QUERIES.parameterSerialization(definition);\n const polymorphism = OPENAPI_QUERIES.polymorphism(definition);\n const serverVariables = OPENAPI_QUERIES.serverVariables(definition);\n const webhooks = OPENAPI_QUERIES.webhooks(definition);\n const xml = OPENAPI_QUERIES.xml(definition);\n const xmlSchemas = OPENAPI_QUERIES.xmlSchemas(definition);\n const xmlRequests = OPENAPI_QUERIES.xmlRequests(definition);\n const xmlResponses = OPENAPI_QUERIES.xmlResponses(definition);\n\n const authDefaults = README_QUERIES.authDefaults(definition);\n const codeSampleLanguages = README_QUERIES.codeSampleLanguages(definition);\n const customCodeSamples = README_QUERIES.customCodeSamples(definition);\n const codeSamplesDisabled = README_QUERIES.codeSamplesDisabled(definition);\n const disabledCorsProxy = README_QUERIES.corsProxyDisabled(definition);\n const explorerDisabled = README_QUERIES.explorerDisabled(definition);\n const staticHeaders = README_QUERIES.staticHeaders(definition);\n const rawBody = README_QUERIES.rawBody(definition);\n const refNames = README_QUERIES.refNames(definition);\n\n const { raw: rawFileSize, dereferenced: dereferencedFileSize } = await OPENAPI_QUERIES.fileSize(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: OPENAPI_QUERIES.mediaTypes(definition),\n },\n operationTotal: {\n name: 'Operation',\n found: OPENAPI_QUERIES.totalOperations(definition),\n },\n rawFileSize: {\n name: 'Raw File Size',\n found: rawFileSize,\n },\n securityTypes: {\n name: 'Security Type',\n found: OPENAPI_QUERIES.securityTypes(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"]}
|
|
@@ -7,7 +7,6 @@ import 'openapi-types';
|
|
|
7
7
|
* Analyze a given OpenAPI or Swagger definition for any OpenAPI, JSON Schema, and ReadMe-specific
|
|
8
8
|
* feature uses it may contain.
|
|
9
9
|
*
|
|
10
|
-
* @todo this might be worth moving into the `oas` package at some point
|
|
11
10
|
*/
|
|
12
11
|
declare function analyzer(definition: OASDocument): Promise<OASAnalysis>;
|
|
13
12
|
|
package/dist/analyzer/index.d.ts
CHANGED
|
@@ -7,7 +7,6 @@ import 'openapi-types';
|
|
|
7
7
|
* Analyze a given OpenAPI or Swagger definition for any OpenAPI, JSON Schema, and ReadMe-specific
|
|
8
8
|
* feature uses it may contain.
|
|
9
9
|
*
|
|
10
|
-
* @todo this might be worth moving into the `oas` package at some point
|
|
11
10
|
*/
|
|
12
11
|
declare function analyzer(definition: OASDocument): Promise<OASAnalysis>;
|
|
13
12
|
|
package/dist/analyzer/index.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Oas
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-3TRWJPXH.js";
|
|
4
|
+
import "../chunk-5XZQA26T.js";
|
|
5
|
+
import "../chunk-W2TD4LSC.js";
|
|
6
|
+
import "../chunk-V24D22KO.js";
|
|
7
|
+
import "../chunk-L2OVXZK3.js";
|
|
8
|
+
import "../chunk-DPTPURCR.js";
|
|
4
9
|
import {
|
|
5
10
|
query,
|
|
6
11
|
refizePointer
|
|
7
12
|
} from "../chunk-CKC36IL7.js";
|
|
8
|
-
import "../chunk-HGHW4JSM.js";
|
|
9
|
-
import "../chunk-W2TD4LSC.js";
|
|
10
|
-
import "../chunk-5KFARTQ3.js";
|
|
11
|
-
import "../chunk-L2OVXZK3.js";
|
|
12
|
-
import "../chunk-DPTPURCR.js";
|
|
13
13
|
|
|
14
14
|
// src/analyzer/queries/openapi.ts
|
|
15
15
|
function additionalProperties(definition) {
|
|
@@ -31,6 +31,15 @@ function commonParameters(definition) {
|
|
|
31
31
|
function discriminators(definition) {
|
|
32
32
|
return query(["$..discriminator"], definition).map((res) => refizePointer(res.pointer));
|
|
33
33
|
}
|
|
34
|
+
async function fileSize(definition) {
|
|
35
|
+
const oas = new Oas(structuredClone(definition));
|
|
36
|
+
const originalSizeInBytes = Buffer.from(JSON.stringify(oas.api)).length;
|
|
37
|
+
const raw = Number((originalSizeInBytes / (1024 * 1024)).toFixed(2));
|
|
38
|
+
await oas.dereference();
|
|
39
|
+
const dereferencedSizeInBytes = Buffer.from(JSON.stringify(oas)).length;
|
|
40
|
+
const dereferenced = Number((dereferencedSizeInBytes / (1024 * 1024)).toFixed(2));
|
|
41
|
+
return { raw, dereferenced };
|
|
42
|
+
}
|
|
34
43
|
function links(definition) {
|
|
35
44
|
return query(["$..links"], definition).map((res) => refizePointer(res.pointer));
|
|
36
45
|
}
|
|
@@ -89,6 +98,37 @@ function xml(definition) {
|
|
|
89
98
|
definition
|
|
90
99
|
).map((res) => refizePointer(res.pointer));
|
|
91
100
|
}
|
|
101
|
+
function xmlSchemas(definition) {
|
|
102
|
+
return query(["$.components.schemas..xml^", "$..parameters..xml^", "$..requestBody..xml^"], definition).map(
|
|
103
|
+
(res) => refizePointer(res.pointer)
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
function xmlRequests(definition) {
|
|
107
|
+
return query(
|
|
108
|
+
[
|
|
109
|
+
"$..requestBody..['application/xml']",
|
|
110
|
+
"$..requestBody..['application/xml-external-parsed-entity']",
|
|
111
|
+
"$..requestBody..['application/xml-dtd']",
|
|
112
|
+
"$..requestBody..['text/xml']",
|
|
113
|
+
"$..requestBody..['text/xml-external-parsed-entity']",
|
|
114
|
+
"$..requestBody.content[?(@property.match(/\\+xml$/i))]"
|
|
115
|
+
],
|
|
116
|
+
definition
|
|
117
|
+
).map((res) => refizePointer(res.pointer));
|
|
118
|
+
}
|
|
119
|
+
function xmlResponses(definition) {
|
|
120
|
+
return query(
|
|
121
|
+
[
|
|
122
|
+
"$..responses..['application/xml']",
|
|
123
|
+
"$..responses..['application/xml-external-parsed-entity']",
|
|
124
|
+
"$..responses..['application/xml-dtd']",
|
|
125
|
+
"$..responses..['text/xml']",
|
|
126
|
+
"$..responses..['text/xml-external-parsed-entity']",
|
|
127
|
+
"$..responses[*].content[?(@property.match(/\\+xml$/i))]"
|
|
128
|
+
],
|
|
129
|
+
definition
|
|
130
|
+
).map((res) => refizePointer(res.pointer));
|
|
131
|
+
}
|
|
92
132
|
|
|
93
133
|
// src/analyzer/queries/readme.ts
|
|
94
134
|
function authDefaults(definition) {
|
|
@@ -174,6 +214,9 @@ async function analyzer(definition) {
|
|
|
174
214
|
const serverVariables2 = serverVariables(definition);
|
|
175
215
|
const webhooks2 = webhooks(definition);
|
|
176
216
|
const xml2 = xml(definition);
|
|
217
|
+
const xmlSchemas2 = xmlSchemas(definition);
|
|
218
|
+
const xmlRequests2 = xmlRequests(definition);
|
|
219
|
+
const xmlResponses2 = xmlResponses(definition);
|
|
177
220
|
const authDefaults2 = authDefaults(definition);
|
|
178
221
|
const codeSampleLanguages2 = codeSampleLanguages(definition);
|
|
179
222
|
const customCodeSamples2 = customCodeSamples(definition);
|
|
@@ -183,8 +226,13 @@ async function analyzer(definition) {
|
|
|
183
226
|
const staticHeaders2 = staticHeaders(definition);
|
|
184
227
|
const rawBody2 = rawBody(definition);
|
|
185
228
|
const refNames2 = refNames(definition);
|
|
229
|
+
const { raw: rawFileSize, dereferenced: dereferencedFileSize } = await fileSize(definition);
|
|
186
230
|
const analysis = {
|
|
187
231
|
general: {
|
|
232
|
+
dereferencedFileSize: {
|
|
233
|
+
name: "Dereferenced File Size",
|
|
234
|
+
found: dereferencedFileSize
|
|
235
|
+
},
|
|
188
236
|
mediaTypes: {
|
|
189
237
|
name: "Media Type",
|
|
190
238
|
found: mediaTypes(definition)
|
|
@@ -193,6 +241,10 @@ async function analyzer(definition) {
|
|
|
193
241
|
name: "Operation",
|
|
194
242
|
found: totalOperations(definition)
|
|
195
243
|
},
|
|
244
|
+
rawFileSize: {
|
|
245
|
+
name: "Raw File Size",
|
|
246
|
+
found: rawFileSize
|
|
247
|
+
},
|
|
196
248
|
securityTypes: {
|
|
197
249
|
name: "Security Type",
|
|
198
250
|
found: securityTypes(definition)
|
|
@@ -242,6 +294,18 @@ async function analyzer(definition) {
|
|
|
242
294
|
xml: {
|
|
243
295
|
present: !!xml2.length,
|
|
244
296
|
locations: xml2
|
|
297
|
+
},
|
|
298
|
+
xmlSchemas: {
|
|
299
|
+
present: !!xmlSchemas2.length,
|
|
300
|
+
locations: xmlSchemas2
|
|
301
|
+
},
|
|
302
|
+
xmlRequests: {
|
|
303
|
+
present: !!xmlRequests2.length,
|
|
304
|
+
locations: xmlRequests2
|
|
305
|
+
},
|
|
306
|
+
xmlResponses: {
|
|
307
|
+
present: !!xmlResponses2.length,
|
|
308
|
+
locations: xmlResponses2
|
|
245
309
|
}
|
|
246
310
|
},
|
|
247
311
|
readme: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/analyzer/queries/openapi.ts","../../src/analyzer/queries/readme.ts","../../src/analyzer/index.ts"],"sourcesContent":["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'], definition).map(res => refizePointer(res.pointer));\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 // eslint-disable-next-line try-catch-failsafe/json-parse\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 * 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(['$..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)\n .map(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 .flat(),\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)\n .map(res => Object.keys(res.value))\n .flat().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 * @todo detect `+xml` media types\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","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 { OASAnalysis } from './types.js';\nimport type { OASDocument } from '../types.js';\n\nimport * as OPENAPI_QUERIES from './queries/openapi.js';\nimport * as README_QUERIES 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 * @todo this might be worth moving into the `oas` package at some point\n */\nexport default async function analyzer(definition: OASDocument): Promise<OASAnalysis> {\n const additionalProperties = OPENAPI_QUERIES.additionalProperties(definition);\n const callbacks = OPENAPI_QUERIES.callbacks(definition);\n const circularRefs = await OPENAPI_QUERIES.circularRefs(definition);\n const commonParameters = OPENAPI_QUERIES.commonParameters(definition);\n const discriminators = OPENAPI_QUERIES.discriminators(definition);\n const links = OPENAPI_QUERIES.links(definition);\n const parameterSerialization = OPENAPI_QUERIES.parameterSerialization(definition);\n const polymorphism = OPENAPI_QUERIES.polymorphism(definition);\n const serverVariables = OPENAPI_QUERIES.serverVariables(definition);\n const webhooks = OPENAPI_QUERIES.webhooks(definition);\n const xml = OPENAPI_QUERIES.xml(definition);\n\n const authDefaults = README_QUERIES.authDefaults(definition);\n const codeSampleLanguages = README_QUERIES.codeSampleLanguages(definition);\n const customCodeSamples = README_QUERIES.customCodeSamples(definition);\n const codeSamplesDisabled = README_QUERIES.codeSamplesDisabled(definition);\n const disabledCorsProxy = README_QUERIES.corsProxyDisabled(definition);\n const explorerDisabled = README_QUERIES.explorerDisabled(definition);\n const staticHeaders = README_QUERIES.staticHeaders(definition);\n const rawBody = README_QUERIES.rawBody(definition);\n const refNames = README_QUERIES.refNames(definition);\n\n const analysis: OASAnalysis = {\n general: {\n mediaTypes: {\n name: 'Media Type',\n found: OPENAPI_QUERIES.mediaTypes(definition),\n },\n operationTotal: {\n name: 'Operation',\n found: OPENAPI_QUERIES.totalOperations(definition),\n },\n securityTypes: {\n name: 'Security Type',\n found: OPENAPI_QUERIES.securityTypes(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 },\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"],"mappings":"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","names":["additionalProperties","callbacks","circularRefs","commonParameters","discriminators","links","parameterSerialization","polymorphism","serverVariables","webhooks","xml","authDefaults","codeSampleLanguages","customCodeSamples","codeSamplesDisabled","explorerDisabled","staticHeaders","rawBody","refNames"]}
|
|
1
|
+
{"version":3,"sources":["../../src/analyzer/queries/openapi.ts","../../src/analyzer/queries/readme.ts","../../src/analyzer/index.ts"],"sourcesContent":["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'], definition).map(res => refizePointer(res.pointer));\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 // eslint-disable-next-line try-catch-failsafe/json-parse\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(['$..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)\n .map(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 .flat(),\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)\n .map(res => Object.keys(res.value))\n .flat().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 { OASAnalysis } from './types.js';\nimport type { OASDocument } from '../types.js';\n\nimport * as OPENAPI_QUERIES from './queries/openapi.js'; // eslint-disable-line readme/no-wildcard-imports\nimport * as README_QUERIES from './queries/readme.js'; // eslint-disable-line readme/no-wildcard-imports\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 */\nexport default async function analyzer(definition: OASDocument): Promise<OASAnalysis> {\n const additionalProperties = OPENAPI_QUERIES.additionalProperties(definition);\n const callbacks = OPENAPI_QUERIES.callbacks(definition);\n const circularRefs = await OPENAPI_QUERIES.circularRefs(definition);\n const commonParameters = OPENAPI_QUERIES.commonParameters(definition);\n const discriminators = OPENAPI_QUERIES.discriminators(definition);\n const links = OPENAPI_QUERIES.links(definition);\n const parameterSerialization = OPENAPI_QUERIES.parameterSerialization(definition);\n const polymorphism = OPENAPI_QUERIES.polymorphism(definition);\n const serverVariables = OPENAPI_QUERIES.serverVariables(definition);\n const webhooks = OPENAPI_QUERIES.webhooks(definition);\n const xml = OPENAPI_QUERIES.xml(definition);\n const xmlSchemas = OPENAPI_QUERIES.xmlSchemas(definition);\n const xmlRequests = OPENAPI_QUERIES.xmlRequests(definition);\n const xmlResponses = OPENAPI_QUERIES.xmlResponses(definition);\n\n const authDefaults = README_QUERIES.authDefaults(definition);\n const codeSampleLanguages = README_QUERIES.codeSampleLanguages(definition);\n const customCodeSamples = README_QUERIES.customCodeSamples(definition);\n const codeSamplesDisabled = README_QUERIES.codeSamplesDisabled(definition);\n const disabledCorsProxy = README_QUERIES.corsProxyDisabled(definition);\n const explorerDisabled = README_QUERIES.explorerDisabled(definition);\n const staticHeaders = README_QUERIES.staticHeaders(definition);\n const rawBody = README_QUERIES.rawBody(definition);\n const refNames = README_QUERIES.refNames(definition);\n\n const { raw: rawFileSize, dereferenced: dereferencedFileSize } = await OPENAPI_QUERIES.fileSize(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: OPENAPI_QUERIES.mediaTypes(definition),\n },\n operationTotal: {\n name: 'Operation',\n found: OPENAPI_QUERIES.totalOperations(definition),\n },\n rawFileSize: {\n name: 'Raw File Size',\n found: rawFileSize,\n },\n securityTypes: {\n name: 'Security Type',\n found: OPENAPI_QUERIES.securityTypes(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"],"mappings":"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","names":["additionalProperties","callbacks","circularRefs","commonParameters","discriminators","links","parameterSerialization","polymorphism","serverVariables","webhooks","xml","xmlSchemas","xmlRequests","xmlResponses","authDefaults","codeSampleLanguages","customCodeSamples","codeSamplesDisabled","explorerDisabled","staticHeaders","rawBody","refNames"]}
|
|
@@ -8,8 +8,10 @@ interface OASAnalysisGeneral {
|
|
|
8
8
|
}
|
|
9
9
|
interface OASAnalysis {
|
|
10
10
|
general: {
|
|
11
|
+
dereferencedFileSize: OASAnalysisGeneral;
|
|
11
12
|
mediaTypes: OASAnalysisGeneral;
|
|
12
13
|
operationTotal: OASAnalysisGeneral;
|
|
14
|
+
rawFileSize: OASAnalysisGeneral;
|
|
13
15
|
securityTypes: OASAnalysisGeneral;
|
|
14
16
|
};
|
|
15
17
|
openapi: {
|
|
@@ -23,7 +25,13 @@ interface OASAnalysis {
|
|
|
23
25
|
serverVariables: OASAnalysisFeature;
|
|
24
26
|
style: OASAnalysisFeature;
|
|
25
27
|
webhooks: OASAnalysisFeature;
|
|
28
|
+
/**
|
|
29
|
+
* @deprecated The data contained within this has been split apart into `xmlSchemas`, `xmlRequests`, and `xmlResponses`. This property will be removed in a future release.
|
|
30
|
+
*/
|
|
26
31
|
xml: OASAnalysisFeature;
|
|
32
|
+
xmlSchemas: OASAnalysisFeature;
|
|
33
|
+
xmlRequests: OASAnalysisFeature;
|
|
34
|
+
xmlResponses: OASAnalysisFeature;
|
|
27
35
|
};
|
|
28
36
|
readme: {
|
|
29
37
|
/**
|