oas 25.0.4 → 25.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 +9 -8
- package/dist/analyzer/index.cjs +21 -5
- package/dist/analyzer/index.cjs.map +1 -1
- package/dist/analyzer/index.js +20 -4
- package/dist/analyzer/index.js.map +1 -1
- package/dist/analyzer/types.d.cts +6 -0
- package/dist/analyzer/types.d.ts +6 -0
- package/dist/{chunk-G6ASGSM5.cjs → chunk-4DQE5VZI.cjs} +1 -1
- package/dist/chunk-4DQE5VZI.cjs.map +1 -0
- package/dist/{chunk-MH3THWQH.js → chunk-CLQZGF6D.js} +15 -15
- package/dist/chunk-CLQZGF6D.js.map +1 -0
- package/dist/{chunk-YIKOQY6K.cjs → chunk-CPI37LBJ.cjs} +17 -17
- package/dist/chunk-CPI37LBJ.cjs.map +1 -0
- package/dist/{chunk-ZXCOYYXC.cjs → chunk-DAS55TQF.cjs} +39 -39
- package/dist/{chunk-ZXCOYYXC.cjs.map → chunk-DAS55TQF.cjs.map} +1 -1
- package/dist/{chunk-U7Q7XPMY.js → chunk-QMLWI5HD.js} +1 -1
- package/dist/chunk-QMLWI5HD.js.map +1 -0
- package/dist/{chunk-3I4KH26E.cjs → chunk-TG4VCYD4.cjs} +11 -11
- package/dist/chunk-TG4VCYD4.cjs.map +1 -0
- package/dist/{chunk-GMSH2DQK.js → chunk-V6OITOCT.js} +14 -14
- package/dist/chunk-V6OITOCT.js.map +1 -0
- package/dist/{chunk-LH3S6NWD.js → chunk-W7MR5CC7.js} +2 -2
- package/dist/chunk-W7MR5CC7.js.map +1 -0
- package/dist/{extensions-B4_nMl6M.d.cts → extensions-CaiwqAu-.d.cts} +14 -14
- package/dist/{extensions-BTG_yoHC.d.ts → extensions-DYrxWRh4.d.ts} +14 -14
- package/dist/extensions.d.cts +1 -1
- package/dist/extensions.d.ts +1 -1
- package/dist/index.cjs +5 -5
- package/dist/index.d.cts +12 -12
- package/dist/index.d.ts +12 -12
- package/dist/index.js +4 -4
- package/dist/operation/index.cjs +4 -4
- package/dist/operation/index.d.cts +1 -1
- package/dist/operation/index.d.ts +1 -1
- package/dist/operation/index.js +3 -3
- package/dist/operation/lib/get-parameters-as-json-schema.cjs +3 -3
- package/dist/operation/lib/get-parameters-as-json-schema.d.cts +1 -1
- package/dist/operation/lib/get-parameters-as-json-schema.d.ts +1 -1
- package/dist/operation/lib/get-parameters-as-json-schema.js +2 -2
- package/dist/types.cjs +2 -2
- package/dist/types.d.cts +36 -36
- package/dist/types.d.ts +36 -36
- package/dist/types.js +1 -1
- package/dist/utils.cjs +3 -3
- package/dist/utils.d.cts +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +2 -2
- package/package.json +2 -2
- package/dist/chunk-3I4KH26E.cjs.map +0 -1
- package/dist/chunk-G6ASGSM5.cjs.map +0 -1
- package/dist/chunk-GMSH2DQK.js.map +0 -1
- package/dist/chunk-LH3S6NWD.js.map +0 -1
- package/dist/chunk-MH3THWQH.js.map +0 -1
- package/dist/chunk-U7Q7XPMY.js.map +0 -1
- package/dist/chunk-YIKOQY6K.cjs.map +0 -1
package/README.md
CHANGED
|
@@ -119,8 +119,8 @@ Because this library has full TypeScript types and docblocks this README is not
|
|
|
119
119
|
<!-- prettier-ignore-start -->
|
|
120
120
|
| Method | Description |
|
|
121
121
|
| :--- | :--- |
|
|
122
|
-
| `.getExtension()` | Retrieve a given [specification extension](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#
|
|
123
|
-
| `.hasExtension()` | Determine if a given [specification extension](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#
|
|
122
|
+
| `.getExtension()` | Retrieve a given [specification extension](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#specification-extensions) if it exists at the root of the API definition. |
|
|
123
|
+
| `.hasExtension()` | Determine if a given [specification extension](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#specification-extensions) exists on the root of the API definition. |
|
|
124
124
|
| `.validateExtension()` | Determine if a given [ReadMe custom OpenAPI extension](https://docs.readme.com/docs/openapi-extensions) is valid or not. |
|
|
125
125
|
| `.validateExtensions()` | Validate all of our [ReadMe custom OpenAPI extension](https://docs.readme.com/docs/openapi-extensions), throwing exceptions when necessary. |
|
|
126
126
|
<!-- prettier-ignore-end -->
|
|
@@ -153,7 +153,7 @@ const operation = petstore.operation('/pet', 'post');
|
|
|
153
153
|
| Method | Description |
|
|
154
154
|
| :--- | :--- |
|
|
155
155
|
| `.getContentType()` | Retrieve the primary request body content type. If multiple are present, prefer whichever is JSON-compliant. |
|
|
156
|
-
| `.getDescription()` | Retrieve the `description` that's set on this operation. This supports common descriptions that may be set at the [path item level](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#
|
|
156
|
+
| `.getDescription()` | Retrieve the `description` that's set on this operation. This supports common descriptions that may be set at the [path item level](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#path-item-object). |
|
|
157
157
|
| `.getOperationId()` | Retrieve the `operationId` that's present on the operation, and if one is not present one will be created based off the method + path and returned instead. |
|
|
158
158
|
| `.hasOperationId()` | Determine if the operation has an `operationId` present. |
|
|
159
159
|
| `.isDeprecated()` | Determine if this operation is marked as deprecated. |
|
|
@@ -164,8 +164,8 @@ const operation = petstore.operation('/pet', 'post');
|
|
|
164
164
|
| `.isWebhook()` | Determine if this operation is an instance of the `Webhook` class. |
|
|
165
165
|
| `.getExampleGroups()` | Returns an object with groups of all example definitions (body/header/query/path/response/etc.). The examples are grouped by their key when defined via the `examples` map. |
|
|
166
166
|
| `.getHeaders()` | Retrieve all headers that can either be sent for or returned from this operation. This includes header-based authentication schemes, common header parameters, and request body and response content types. |
|
|
167
|
-
| `.getSummary()` | Retrieve the `summary` that's set on this operation. This supports common summaries that may be set at the [path item level](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#
|
|
168
|
-
| `.getTags()` | Retrieve all tags, and [their metadata](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#
|
|
167
|
+
| `.getSummary()` | Retrieve the `summary` that's set on this operation. This supports common summaries that may be set at the [path item level](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#path-item-object). |
|
|
168
|
+
| `.getTags()` | Retrieve all tags, and [their metadata](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#tag-object), that exist on this operation. |
|
|
169
169
|
<!-- prettier-ignore-end -->
|
|
170
170
|
|
|
171
171
|
#### Callbacks
|
|
@@ -182,7 +182,7 @@ const operation = petstore.operation('/pet', 'post');
|
|
|
182
182
|
#### Parameters
|
|
183
183
|
|
|
184
184
|
> [!NOTE]
|
|
185
|
-
> All parameter accessors here support, and will automatically retrieve and handle, common parameters that may be set at the [path item level](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#
|
|
185
|
+
> All parameter accessors here support, and will automatically retrieve and handle, common parameters that may be set at the [path item level](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#path-item-object).
|
|
186
186
|
|
|
187
187
|
<!-- prettier-ignore-start -->
|
|
188
188
|
| Method | Description |
|
|
@@ -231,14 +231,14 @@ const operation = petstore.operation('/pet', 'post');
|
|
|
231
231
|
<!-- prettier-ignore-start -->
|
|
232
232
|
| Method | Description |
|
|
233
233
|
| :--- | :--- |
|
|
234
|
-
| `.hasExtension()` | Determine if a given [specification extension](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#
|
|
234
|
+
| `.hasExtension()` | Determine if a given [specification extension](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#specification-extensions) exists on this operation. |
|
|
235
235
|
<!-- prettier-ignore-end -->
|
|
236
236
|
|
|
237
237
|
Information about ReadMe's supported OpenAPI extensions at https://docs.readme.com/docs/openapi-extensions.
|
|
238
238
|
|
|
239
239
|
### Callbacks
|
|
240
240
|
|
|
241
|
-
The `Callback` class inherits `Operation` so every API available on instances of `Operation` is available here too. Much like `Operation`, we also support common parameters, summaries, and descriptions that may be set at the [path item level](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#
|
|
241
|
+
The `Callback` class inherits `Operation` so every API available on instances of `Operation` is available here too. Much like `Operation`, we also support common parameters, summaries, and descriptions that may be set at the [path item level](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#path-item-object) within a `callbacks` definition.
|
|
242
242
|
|
|
243
243
|
#### General
|
|
244
244
|
|
|
@@ -285,6 +285,7 @@ console.log(await analyzer(petstore));
|
|
|
285
285
|
| `additionalProperties` | Does your API use `additionalProperties`? |
|
|
286
286
|
| `callbacks` | Does your API use [callbacks](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#callback-object)? |
|
|
287
287
|
| `circularRefs` | Does your API have any circular `$ref` pointers, and if so where are they located? |
|
|
288
|
+
| `commonParameters` | Does your API utilize [common parameters](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#path-item-object)? |
|
|
288
289
|
| `discriminators` | Does your API use polymorphic [discriminators](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#discriminator-object)? |
|
|
289
290
|
| `links` | Does your API use [links](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#link-object)? |
|
|
290
291
|
| `style` | Do any parameters in your API require [style](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#user-content-parameterstyle) serialization?
|
package/dist/analyzer/index.cjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../chunk-
|
|
3
|
+
var _chunkCPI37LBJcjs = require('../chunk-CPI37LBJ.cjs');
|
|
4
|
+
require('../chunk-DAS55TQF.cjs');
|
|
5
5
|
require('../chunk-VIIXOUMH.cjs');
|
|
6
|
-
require('../chunk-
|
|
6
|
+
require('../chunk-TG4VCYD4.cjs');
|
|
7
7
|
require('../chunk-YHO3AOX6.cjs');
|
|
8
|
-
require('../chunk-
|
|
8
|
+
require('../chunk-4DQE5VZI.cjs');
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
@@ -19,12 +19,15 @@ 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, _chunkCPI37LBJcjs.Oas)(JSON.parse(JSON.stringify(definition)));
|
|
23
23
|
await oas.dereference();
|
|
24
24
|
const results = oas.getCircularReferences();
|
|
25
25
|
results.sort();
|
|
26
26
|
return results;
|
|
27
27
|
}
|
|
28
|
+
function commonParameters(definition) {
|
|
29
|
+
return _chunkW6GBV2JTcjs.query.call(void 0, ["$..paths[*].parameters"], definition).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
|
|
30
|
+
}
|
|
28
31
|
function discriminators(definition) {
|
|
29
32
|
return _chunkW6GBV2JTcjs.query.call(void 0, ["$..discriminator"], definition).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
|
|
30
33
|
}
|
|
@@ -154,12 +157,16 @@ function staticHeaders(definition) {
|
|
|
154
157
|
return Array.isArray(res.value) && res.value.length ? res : false;
|
|
155
158
|
}).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
|
|
156
159
|
}
|
|
160
|
+
function refNames(definition) {
|
|
161
|
+
return _chunkW6GBV2JTcjs.query.call(void 0, ["$..['x-readme-ref-name']"], definition).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
|
|
162
|
+
}
|
|
157
163
|
|
|
158
164
|
// src/analyzer/index.ts
|
|
159
165
|
async function analyzer(definition) {
|
|
160
166
|
const additionalProperties2 = additionalProperties(definition);
|
|
161
167
|
const callbacks2 = callbacks(definition);
|
|
162
168
|
const circularRefs2 = await circularRefs(definition);
|
|
169
|
+
const commonParameters2 = commonParameters(definition);
|
|
163
170
|
const discriminators2 = discriminators(definition);
|
|
164
171
|
const links2 = links(definition);
|
|
165
172
|
const parameterSerialization2 = parameterSerialization(definition);
|
|
@@ -175,6 +182,7 @@ async function analyzer(definition) {
|
|
|
175
182
|
const explorerDisabled2 = explorerDisabled(definition);
|
|
176
183
|
const staticHeaders2 = staticHeaders(definition);
|
|
177
184
|
const rawBody2 = rawBody(definition);
|
|
185
|
+
const refNames2 = refNames(definition);
|
|
178
186
|
const analysis = {
|
|
179
187
|
general: {
|
|
180
188
|
mediaTypes: {
|
|
@@ -203,6 +211,10 @@ async function analyzer(definition) {
|
|
|
203
211
|
present: !!circularRefs2.length,
|
|
204
212
|
locations: circularRefs2
|
|
205
213
|
},
|
|
214
|
+
commonParameters: {
|
|
215
|
+
present: !!commonParameters2.length,
|
|
216
|
+
locations: commonParameters2
|
|
217
|
+
},
|
|
206
218
|
discriminators: {
|
|
207
219
|
present: !!discriminators2.length,
|
|
208
220
|
locations: discriminators2
|
|
@@ -256,6 +268,10 @@ async function analyzer(definition) {
|
|
|
256
268
|
"x-readme.samples-languages": {
|
|
257
269
|
present: !!codeSampleLanguages2.length,
|
|
258
270
|
locations: codeSampleLanguages2
|
|
271
|
+
},
|
|
272
|
+
"x-readme-ref-name": {
|
|
273
|
+
present: !!refNames2.length,
|
|
274
|
+
locations: refNames2
|
|
259
275
|
}
|
|
260
276
|
}
|
|
261
277
|
};
|
|
@@ -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","discriminators","links","parameterSerialization","polymorphism","serverVariables","webhooks","xml","authDefaults","codeSampleLanguages","customCodeSamples","codeSamplesDisabled","explorerDisabled","staticHeaders","rawBody"],"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) {\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#callbackObject}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#callbackObject}\n */\nexport function callbacks(definition: OASDocument) {\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) {\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 discriminators.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#discriminatorObject}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#discriminatorObject}\n */\nexport function discriminators(definition: OASDocument) {\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#linkObject}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#linkObject}\n */\nexport function links(definition: OASDocument) {\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) {\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) {\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) {\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#securitySchemeObject}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#securitySchemeObject}\n */\nexport function securityTypes(definition: OASDocument) {\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#serverVariableObject}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#serverVariableObject}\n */\nexport function serverVariables(definition: OASDocument) {\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#operationObject}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#operationObject}\n */\nexport function totalOperations(definition: OASDocument) {\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#oasObject}\n */\nexport function webhooks(definition: OASDocument) {\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#xmlObject}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#xmlObject}\n */\nexport function xml(definition: OASDocument) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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","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 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\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 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 },\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","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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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"]}
|
package/dist/analyzer/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Oas
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-V6OITOCT.js";
|
|
4
|
+
import "../chunk-CLQZGF6D.js";
|
|
5
5
|
import "../chunk-SITXIAYE.js";
|
|
6
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-W7MR5CC7.js";
|
|
7
7
|
import "../chunk-P2SB77YR.js";
|
|
8
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-QMLWI5HD.js";
|
|
9
9
|
import {
|
|
10
10
|
query,
|
|
11
11
|
refizePointer
|
|
@@ -25,6 +25,9 @@ async function circularRefs(definition) {
|
|
|
25
25
|
results.sort();
|
|
26
26
|
return results;
|
|
27
27
|
}
|
|
28
|
+
function commonParameters(definition) {
|
|
29
|
+
return query(["$..paths[*].parameters"], definition).map((res) => refizePointer(res.pointer));
|
|
30
|
+
}
|
|
28
31
|
function discriminators(definition) {
|
|
29
32
|
return query(["$..discriminator"], definition).map((res) => refizePointer(res.pointer));
|
|
30
33
|
}
|
|
@@ -154,12 +157,16 @@ function staticHeaders(definition) {
|
|
|
154
157
|
return Array.isArray(res.value) && res.value.length ? res : false;
|
|
155
158
|
}).map((res) => refizePointer(res.pointer));
|
|
156
159
|
}
|
|
160
|
+
function refNames(definition) {
|
|
161
|
+
return query(["$..['x-readme-ref-name']"], definition).map((res) => refizePointer(res.pointer));
|
|
162
|
+
}
|
|
157
163
|
|
|
158
164
|
// src/analyzer/index.ts
|
|
159
165
|
async function analyzer(definition) {
|
|
160
166
|
const additionalProperties2 = additionalProperties(definition);
|
|
161
167
|
const callbacks2 = callbacks(definition);
|
|
162
168
|
const circularRefs2 = await circularRefs(definition);
|
|
169
|
+
const commonParameters2 = commonParameters(definition);
|
|
163
170
|
const discriminators2 = discriminators(definition);
|
|
164
171
|
const links2 = links(definition);
|
|
165
172
|
const parameterSerialization2 = parameterSerialization(definition);
|
|
@@ -175,6 +182,7 @@ async function analyzer(definition) {
|
|
|
175
182
|
const explorerDisabled2 = explorerDisabled(definition);
|
|
176
183
|
const staticHeaders2 = staticHeaders(definition);
|
|
177
184
|
const rawBody2 = rawBody(definition);
|
|
185
|
+
const refNames2 = refNames(definition);
|
|
178
186
|
const analysis = {
|
|
179
187
|
general: {
|
|
180
188
|
mediaTypes: {
|
|
@@ -203,6 +211,10 @@ async function analyzer(definition) {
|
|
|
203
211
|
present: !!circularRefs2.length,
|
|
204
212
|
locations: circularRefs2
|
|
205
213
|
},
|
|
214
|
+
commonParameters: {
|
|
215
|
+
present: !!commonParameters2.length,
|
|
216
|
+
locations: commonParameters2
|
|
217
|
+
},
|
|
206
218
|
discriminators: {
|
|
207
219
|
present: !!discriminators2.length,
|
|
208
220
|
locations: discriminators2
|
|
@@ -256,6 +268,10 @@ async function analyzer(definition) {
|
|
|
256
268
|
"x-readme.samples-languages": {
|
|
257
269
|
present: !!codeSampleLanguages2.length,
|
|
258
270
|
locations: codeSampleLanguages2
|
|
271
|
+
},
|
|
272
|
+
"x-readme-ref-name": {
|
|
273
|
+
present: !!refNames2.length,
|
|
274
|
+
locations: refNames2
|
|
259
275
|
}
|
|
260
276
|
}
|
|
261
277
|
};
|
|
@@ -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) {\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#callbackObject}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#callbackObject}\n */\nexport function callbacks(definition: OASDocument) {\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) {\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 discriminators.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#discriminatorObject}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#discriminatorObject}\n */\nexport function discriminators(definition: OASDocument) {\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#linkObject}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#linkObject}\n */\nexport function links(definition: OASDocument) {\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) {\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) {\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) {\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#securitySchemeObject}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#securitySchemeObject}\n */\nexport function securityTypes(definition: OASDocument) {\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#serverVariableObject}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#serverVariableObject}\n */\nexport function serverVariables(definition: OASDocument) {\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#operationObject}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#operationObject}\n */\nexport function totalOperations(definition: OASDocument) {\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#oasObject}\n */\nexport function webhooks(definition: OASDocument) {\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#xmlObject}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#xmlObject}\n */\nexport function xml(definition: OASDocument) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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","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 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\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 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 },\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":";;;;;;;;;;;;;;AAWO,SAAS,qBAAqB,YAAyB;AAC5D,SAAO,MAAM,CAAC,yBAAyB,GAAG,UAAU,EAAE,IAAI,SAAO,cAAc,IAAI,OAAO,CAAC;AAC7F;AAQO,SAAS,UAAU,YAAyB;AACjD,SAAO,MAAM,CAAC,0BAA0B,oBAAoB,GAAG,UAAU,EAAE,IAAI,SAAO,cAAc,IAAI,OAAO,CAAC;AAClH;AAQA,eAAsB,aAAa,YAAyB;AAI1D,QAAM,MAAM,IAAI,IAAI,KAAK,MAAM,KAAK,UAAU,UAAU,CAAC,CAAC;AAC1D,QAAM,IAAI,YAAY;AAEtB,QAAM,UAAU,IAAI,sBAAsB;AAE1C,UAAQ,KAAK;AACb,SAAO;AACT;AAQO,SAAS,eAAe,YAAyB;AACtD,SAAO,MAAM,CAAC,kBAAkB,GAAG,UAAU,EAAE,IAAI,SAAO,cAAc,IAAI,OAAO,CAAC;AACtF;AAQO,SAAS,MAAM,YAAyB;AAC7C,SAAO,MAAM,CAAC,UAAU,GAAG,UAAU,EAAE,IAAI,SAAO,cAAc,IAAI,OAAO,CAAC;AAC9E;AASO,SAAS,WAAW,YAAyB;AAClD,QAAM,UAAU,MAAM;AAAA,IACpB,IAAI;AAAA,MACF,MAAM,CAAC,mBAAmB,GAAG,UAAU,EACpC,IAAI,SAAO;AAGV,eAAO,OAAO,KAAK,IAAI,KAAK;AAAA,MAC9B,CAAC,EACA,KAAK;AAAA,IACV;AAAA,EACF;AAEA,UAAQ,KAAK;AACb,SAAO;AACT;AAQO,SAAS,uBAAuB,YAAyB;AAC9D,SAAO,MAAM,CAAC,yBAAyB,GAAG,UAAU,EAAE,IAAI,SAAO,cAAc,IAAI,OAAO,CAAC;AAC7F;AAQO,SAAS,aAAa,YAAyB;AACpD,QAAM,UAAU,MAAM;AAAA,IACpB,IAAI,IAAI,MAAM,CAAC,aAAa,aAAa,WAAW,GAAG,UAAU,EAAE,IAAI,SAAO,cAAc,IAAI,OAAO,CAAC,CAAC;AAAA,EAC3G;AAEA,UAAQ,KAAK;AACb,SAAO;AACT;AAQO,SAAS,cAAc,YAAyB;AACrD,SAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,oCAAoC,GAAG,UAAU,EAAE,IAAI,SAAO,IAAI,KAAe,CAAC,CAAC;AACtH;AAQO,SAAS,gBAAgB,YAAyB;AACvD,SAAO,MAAM,CAAC,uBAAuB,GAAG,UAAU,EAAE,IAAI,SAAO,cAAc,IAAI,OAAO,CAAC;AAC3F;AAQO,SAAS,gBAAgB,YAAyB;AACvD,SAAO,MAAM,CAAC,aAAa,GAAG,UAAU,EACrC,IAAI,SAAO,OAAO,KAAK,IAAI,KAAK,CAAC,EACjC,KAAK,EAAE;AACZ;AAOO,SAAS,SAAS,YAAyB;AAChD,SAAO,MAAM,CAAC,eAAe,GAAG,UAAU,EAAE,IAAI,SAAO,cAAc,IAAI,OAAO,CAAC;AACnF;AASO,SAAS,IAAI,YAAyB;AAC3C,SAAO;AAAA,IACL;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,EACF,EAAE,IAAI,SAAO,cAAc,IAAI,OAAO,CAAC;AACzC;;;AC9KO,SAAS,aAAa,YAAyB;AACpD,SAAO,MAAM,CAAC,8CAA8C,GAAG,UAAU,EAAE,IAAI,SAAO,cAAc,IAAI,OAAO,CAAC;AAClH;AAQO,SAAS,oBAAoB,YAAyB;AAC3D,QAAM,UAAoB,MAAM;AAAA,IAC9B,IAAI;AAAA,MACF,MAAM,CAAC,wCAAwC,4BAA4B,GAAG,UAAU,EACrF,IAAI,SAAO,IAAI,KAAe,EAC9B,OAAO,CAAC,MAAM,SAAS,KAAK,OAAO,IAAI,GAAG,CAAC,CAAC;AAAA,IACjD;AAAA,EACF;AAEA,UAAQ,KAAK;AACb,SAAO;AACT;AAQO,SAAS,oBAAoB,YAAyB;AAC3D,SAAO,MAAM;AAAA,IACX,IAAI;AAAA,MACF;AAAA,QACE;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA;AAAA,MACF,EAAE,IAAI,SAAO,cAAc,IAAI,OAAO,CAAC;AAAA,IACzC;AAAA,EACF;AACF;AAQO,SAAS,kBAAkB,YAAyB;AACzD,SAAO,MAAM;AAAA,IACX,IAAI;AAAA,MACF;AAAA,QACE;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA;AAAA,MACF,EAAE,IAAI,SAAO,cAAc,IAAI,OAAO,CAAC;AAAA,IACzC;AAAA,EACF;AACF;AAQO,SAAS,kBAAkB,YAAyB;AACzD,SAAO,MAAM,CAAC,yBAAyB,iCAAiC,GAAG,UAAU,EAClF,OAAO,SAAO;AAEb,WAAO,MAAM,QAAQ,IAAI,KAAK,KAAK,IAAI,MAAM,SAAS,MAAM;AAAA,EAC9D,CAAC,EACA,IAAI,SAAO,cAAc,IAAI,OAAO,CAAC;AAC1C;AAQO,SAAS,iBAAiB,YAAyB;AACxD,SAAO;AAAA,IACL;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,EACF,EAAE,IAAI,SAAO,cAAc,IAAI,OAAO,CAAC;AACzC;AAOO,SAAS,QAAQ,YAAyB;AAC/C,SAAO,MAAM,CAAC,eAAe,GAAG,UAAU,EAAE,IAAI,SAAO,cAAc,IAAI,OAAO,CAAC;AACnF;AAQO,SAAS,cAAc,YAAyB;AACrD,SAAO,MAAM,CAAC,oBAAoB,4BAA4B,GAAG,UAAU,EACxE,OAAO,SAAO;AAEb,WAAO,MAAM,QAAQ,IAAI,KAAK,KAAK,IAAI,MAAM,SAAS,MAAM;AAAA,EAC9D,CAAC,EACA,IAAI,SAAO,cAAc,IAAI,OAAO,CAAC;AAC1C;;;ACxHA,eAAO,SAAgC,YAA+C;AACpF,QAAMA,wBAAuC,qBAAqB,UAAU;AAC5E,QAAMC,aAA4B,UAAU,UAAU;AACtD,QAAMC,gBAAe,MAAsB,aAAa,UAAU;AAClE,QAAMC,kBAAiC,eAAe,UAAU;AAChE,QAAMC,SAAwB,MAAM,UAAU;AAC9C,QAAMC,0BAAyC,uBAAuB,UAAU;AAChF,QAAMC,gBAA+B,aAAa,UAAU;AAC5D,QAAMC,mBAAkC,gBAAgB,UAAU;AAClE,QAAMC,YAA2B,SAAS,UAAU;AACpD,QAAMC,OAAsB,IAAI,UAAU;AAE1C,QAAMC,gBAA8B,aAAa,UAAU;AAC3D,QAAMC,uBAAqC,oBAAoB,UAAU;AACzE,QAAMC,qBAAmC,kBAAkB,UAAU;AACrE,QAAMC,uBAAqC,oBAAoB,UAAU;AACzE,QAAM,oBAAmC,kBAAkB,UAAU;AACrE,QAAMC,oBAAkC,iBAAiB,UAAU;AACnE,QAAMC,iBAA+B,cAAc,UAAU;AAC7D,QAAMC,WAAyB,QAAQ,UAAU;AAEjD,QAAM,WAAwB;AAAA,IAC5B,SAAS;AAAA,MACP,YAAY;AAAA,QACV,MAAM;AAAA,QACN,OAAuB,WAAW,UAAU;AAAA,MAC9C;AAAA,MACA,gBAAgB;AAAA,QACd,MAAM;AAAA,QACN,OAAuB,gBAAgB,UAAU;AAAA,MACnD;AAAA,MACA,eAAe;AAAA,QACb,MAAM;AAAA,QACN,OAAuB,cAAc,UAAU;AAAA,MACjD;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP,sBAAsB;AAAA,QACpB,SAAS,CAAC,CAAChB,sBAAqB;AAAA,QAChC,WAAWA;AAAA,MACb;AAAA,MACA,WAAW;AAAA,QACT,SAAS,CAAC,CAACC,WAAU;AAAA,QACrB,WAAWA;AAAA,MACb;AAAA,MACA,cAAc;AAAA,QACZ,SAAS,CAAC,CAACC,cAAa;AAAA,QACxB,WAAWA;AAAA,MACb;AAAA,MACA,gBAAgB;AAAA,QACd,SAAS,CAAC,CAACC,gBAAe;AAAA,QAC1B,WAAWA;AAAA,MACb;AAAA,MACA,OAAO;AAAA,QACL,SAAS,CAAC,CAACC,OAAM;AAAA,QACjB,WAAWA;AAAA,MACb;AAAA,MACA,OAAO;AAAA,QACL,SAAS,CAAC,CAACC,wBAAuB;AAAA,QAClC,WAAWA;AAAA,MACb;AAAA,MACA,cAAc;AAAA,QACZ,SAAS,CAAC,CAACC,cAAa;AAAA,QACxB,WAAWA;AAAA,MACb;AAAA,MACA,iBAAiB;AAAA,QACf,SAAS,CAAC,CAACC,iBAAgB;AAAA,QAC3B,WAAWA;AAAA,MACb;AAAA,MACA,UAAU;AAAA,QACR,SAAS,CAAC,CAACC,UAAS;AAAA,QACpB,WAAWA;AAAA,MACb;AAAA,MACA,KAAK;AAAA,QACH,SAAS,CAAC,CAACC,KAAI;AAAA,QACf,WAAWA;AAAA,MACb;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN,aAAa;AAAA,QACX,SAAS,CAAC,CAACC,cAAa;AAAA,QACxB,WAAWA;AAAA,MACb;AAAA,MACA,yBAAyB;AAAA,QACvB,SAAS,CAAC,CAACE,mBAAkB;AAAA,QAC7B,WAAWA;AAAA,MACb;AAAA,MACA,oBAAoB;AAAA,QAClB,SAAS,CAAC,CAACG,eAAc;AAAA,QACzB,WAAWA;AAAA,MACb;AAAA,MACA,6BAA6B;AAAA,QAC3B,SAAS,CAAC,CAACD,kBAAiB;AAAA,QAC5B,WAAWA;AAAA,MACb;AAAA,MACA,0BAA0B;AAAA,QACxB,SAAS,CAAC,CAAC,kBAAkB;AAAA,QAC7B,WAAW;AAAA,MACb;AAAA,MACA,8BAA8B;AAAA,QAC5B,SAAS,CAAC,CAACH,qBAAoB;AAAA,QAC/B,WAAWA;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAKA,MAAIE,qBAAoB,QAAQ;AAC9B,aAAS,OAAO,0BAA0B,IAAI;AAAA,MAC5C,SAAS,CAAC,CAACA,qBAAoB;AAAA,MAC/B,WAAWA;AAAA,IACb;AAAA,EACF;AAEA,MAAIG,SAAQ,QAAQ;AAClB,aAAS,OAAO,WAAW;AAAA,MACzB,SAAS,CAAC,CAACA,SAAQ;AAAA,MACnB,WAAWA;AAAA,IACb;AAAA,EACF;AAEA,SAAO;AACT;","names":["additionalProperties","callbacks","circularRefs","discriminators","links","parameterSerialization","polymorphism","serverVariables","webhooks","xml","authDefaults","codeSampleLanguages","customCodeSamples","codeSamplesDisabled","explorerDisabled","staticHeaders","rawBody"]}
|
|
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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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"]}
|
|
@@ -16,6 +16,7 @@ interface OASAnalysis {
|
|
|
16
16
|
additionalProperties: OASAnalysisFeature;
|
|
17
17
|
callbacks: OASAnalysisFeature;
|
|
18
18
|
circularRefs: OASAnalysisFeature;
|
|
19
|
+
commonParameters: OASAnalysisFeature;
|
|
19
20
|
discriminators: OASAnalysisFeature;
|
|
20
21
|
links: OASAnalysisFeature;
|
|
21
22
|
polymorphism: OASAnalysisFeature;
|
|
@@ -31,6 +32,11 @@ interface OASAnalysis {
|
|
|
31
32
|
*/
|
|
32
33
|
raw_body?: OASAnalysisFeature;
|
|
33
34
|
'x-default': OASAnalysisFeature;
|
|
35
|
+
/**
|
|
36
|
+
* x-readme-ref-name is added by our tooling after dereferencing so our UI can display the
|
|
37
|
+
* reference name.
|
|
38
|
+
*/
|
|
39
|
+
'x-readme-ref-name': OASAnalysisFeature;
|
|
34
40
|
'x-readme.code-samples': OASAnalysisFeature;
|
|
35
41
|
'x-readme.explorer-enabled': OASAnalysisFeature;
|
|
36
42
|
'x-readme.headers': OASAnalysisFeature;
|
package/dist/analyzer/types.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ interface OASAnalysis {
|
|
|
16
16
|
additionalProperties: OASAnalysisFeature;
|
|
17
17
|
callbacks: OASAnalysisFeature;
|
|
18
18
|
circularRefs: OASAnalysisFeature;
|
|
19
|
+
commonParameters: OASAnalysisFeature;
|
|
19
20
|
discriminators: OASAnalysisFeature;
|
|
20
21
|
links: OASAnalysisFeature;
|
|
21
22
|
polymorphism: OASAnalysisFeature;
|
|
@@ -31,6 +32,11 @@ interface OASAnalysis {
|
|
|
31
32
|
*/
|
|
32
33
|
raw_body?: OASAnalysisFeature;
|
|
33
34
|
'x-default': OASAnalysisFeature;
|
|
35
|
+
/**
|
|
36
|
+
* x-readme-ref-name is added by our tooling after dereferencing so our UI can display the
|
|
37
|
+
* reference name.
|
|
38
|
+
*/
|
|
39
|
+
'x-readme-ref-name': OASAnalysisFeature;
|
|
34
40
|
'x-readme.code-samples': OASAnalysisFeature;
|
|
35
41
|
'x-readme.explorer-enabled': OASAnalysisFeature;
|
|
36
42
|
'x-readme.headers': OASAnalysisFeature;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/erunion/code/readme/oas/packages/oas/dist/chunk-4DQE5VZI.cjs","../src/types.ts"],"names":[],"mappings":"AAAA;ACSO,SAAS,KAAA,CAAM,KAAA,EAAkF;AACtG,EAAA,OAAQ,KAAA,CAAkE,KAAA,IAAS,KAAA,CAAA;AACrF;AAMO,SAAS,OAAA,CAAQ,KAAA,EAAiF;AACvG,EAAA,OAAO,KAAA,CAAM,QAAA,IAAY,OAAA;AAC3B;AAyMO,SAAS,QAAA,CAAS,KAAA,EAAgB,wBAAA,EAA0B,KAAA,EAA8B;AAC/F,EAAA,OACG,KAAA,CAAuB,KAAA,IAAS,KAAA,EAAA,GAChC,KAAA,CAAuB,MAAA,IAAU,KAAA,EAAA,GACjC,KAAA,CAAuB,MAAA,IAAU,KAAA,EAAA,GACjC,KAAA,CAAuB,MAAA,IAAU,KAAA,EAAA,GAClC,uBAAA;AAEJ;AD1NA;AACA;AACE;AACA;AACA;AACF,8EAAC","file":"/Users/erunion/code/readme/oas/packages/oas/dist/chunk-4DQE5VZI.cjs","sourcesContent":[null,"import type { JSONSchema4, JSONSchema6, JSONSchema7 } from 'json-schema';\nimport type { OpenAPIV3, OpenAPIV3_1 } from 'openapi-types';\n\nexport type JSONSchema = JSONSchema4 | JSONSchema6 | JSONSchema7;\n\n/**\n * @param check Data to determine if it contains a ReferenceObject (`$ref` pointer`).\n * @returns If the supplied data has a `$ref` pointer.\n */\nexport function isRef(check: unknown): check is OpenAPIV3_1.ReferenceObject | OpenAPIV3.ReferenceObject {\n return (check as OpenAPIV3_1.ReferenceObject | OpenAPIV3.ReferenceObject).$ref !== undefined;\n}\n\n/**\n * @param check API definition to determine if it's a 3.1 definition.\n * @returns If the definition is a 3.1 definition.\n */\nexport function isOAS31(check: OpenAPIV3_1.Document | OpenAPIV3.Document): check is OpenAPIV3_1.Document {\n return check.openapi === '3.1.0';\n}\n\n/**\n * Data shape for taking OpenAPI operation data and converting it into HAR.\n *\n * @see {@link https://github.com/readmeio/oas/tree/main/packages/oas-to-har}\n */\nexport interface DataForHAR {\n body?: any;\n cookie?: Record<string, any>;\n formData?: Record<string, any>; // `application/x-www-form-urlencoded` requests payloads.\n header?: Record<string, any>;\n path?: Record<string, any>;\n query?: Record<string, any>;\n server?: {\n selected: number;\n variables?: ServerVariable;\n };\n}\n\nexport interface User {\n [key: string]: unknown;\n keys?: {\n [key: string]: unknown;\n name: number | string;\n pass?: number | string;\n user?: number | string;\n }[];\n}\n\n/**\n * The type of security scheme. Used by `operation.getSecurityWithTypes()` and `operation.prepareSecurity()`.\n */\nexport type SecurityType = 'apiKey' | 'Basic' | 'Bearer' | 'Cookie' | 'Header' | 'http' | 'OAuth2' | 'Query';\n\nexport type HttpMethods =\n | OpenAPIV3_1.HttpMethods\n | OpenAPIV3.HttpMethods\n | 'delete'\n | 'get'\n | 'head'\n | 'options'\n | 'patch'\n | 'post'\n | 'put'\n | 'trace';\n\n// The following are custom OpenAPI types that we use throughout this library, sans\n// `ReferenceObject` because we assume that the API definition has been dereferenced.\n//\n// These are organized by how they're defined in the OpenAPI Specification.\n\n/**\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#openapi-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#openapi-object}\n */\n// eslint-disable-next-line @typescript-eslint/sort-type-constituents\nexport type OASDocument = (OpenAPIV3_1.Document | OpenAPIV3.Document) &\n // `x-*` extensions\n Record<string, unknown>;\n\nexport type OAS31Document = OpenAPIV3_1.Document &\n // `x-*` extensions\n Record<string, unknown>;\n\n/**\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#server-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#server-object}\n */\nexport type ServerObject = OpenAPIV3_1.ServerObject | OpenAPIV3.ServerObject;\n\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 type ServerVariableObject = OpenAPIV3_1.ServerVariableObject | OpenAPIV3.ServerVariableObject;\nexport type ServerVariablesObject = Record<string, ServerVariableObject>;\nexport type ServerVariable = Record<\n string,\n { default?: number | string }[] | Record<string, never> | number | string | { default?: number | string }\n>;\n\nexport interface Servers {\n selected: number;\n variables: ServerVariable;\n}\n\n/**\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#components-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#components-object}\n */\nexport type ComponentsObject = OpenAPIV3_1.ComponentsObject | OpenAPIV3.ComponentsObject;\n\n/**\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#paths-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#paths-object}\n */\nexport type PathsObject = OpenAPIV3_1.PathsObject | OpenAPIV3.PathsObject;\n\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 type PathItemObject = OpenAPIV3_1.PathItemObject | OpenAPIV3.PathItemObject;\n\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 */\n// eslint-disable-next-line @typescript-eslint/sort-type-constituents\nexport type OperationObject = (OpenAPIV3_1.OperationObject | OpenAPIV3.OperationObject) &\n // `x-*` extensions\n Record<string, unknown>;\n\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 type ParameterObject = {\n in: 'cookie' | 'header' | 'path' | 'query';\n} & (OpenAPIV3_1.ParameterObject | OpenAPIV3.ParameterObject);\n\n/**\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 type RequestBodyObject = OpenAPIV3_1.RequestBodyObject | OpenAPIV3.RequestBodyObject;\n\n/**\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.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 type MediaTypeObject = OpenAPIV3_1.MediaTypeObject | OpenAPIV3.MediaTypeObject;\n\n/**\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#response-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#response-object}\n */\nexport type ResponseObject = OpenAPIV3_1.ResponseObject | OpenAPIV3.ResponseObject;\n\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 type CallbackObject = OpenAPIV3_1.CallbackObject | OpenAPIV3.CallbackObject;\n\n/**\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#example-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.3.md#example-object}\n */\nexport type ExampleObject = OpenAPIV3_1.ExampleObject | OpenAPIV3.ExampleObject;\n\n/**\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#tag-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#tag-object}\n */\nexport type TagObject = OpenAPIV3_1.TagObject | OpenAPIV3.TagObject;\n\n/**\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#header-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#header-object}\n */\nexport type HeaderObject = OpenAPIV3_1.HeaderObject | OpenAPIV3.HeaderObject;\n\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 type SchemaObject = {\n // OpenAPI-specific properties\n externalDocs?: unknown;\n xml?: unknown;\n} & {\n // TODO: We should split this into one type for v3 and one type for v3.1 to ensure type accuracy.\n $schema?: string;\n\n // We add this to the schema to help out with circular refs\n components?: OpenAPIV3_1.ComponentsObject;\n\n deprecated?: boolean;\n example?: unknown;\n examples?: unknown[];\n nullable?: boolean;\n readOnly?: boolean;\n writeOnly?: boolean;\n\n // We add this extension within our dereferencing work to preserve the origin dereferenced\n // schemas.\n 'x-readme-ref-name'?: string;\n} & ( // eslint-disable-next-line @typescript-eslint/sort-type-constituents\n | OpenAPIV3.SchemaObject\n | OpenAPIV3_1.SchemaObject\n // Adding `JSONSchema` to this because `json-schema-merge-allof` expects those.\n | JSONSchema\n );\n\n/**\n * @param check JSON Schema object to determine if it's a non-polymorphic schema.\n * @param isPolymorphicAllOfChild If this JSON Schema object is the child of a polymorphic `allOf`.\n * @returns If the JSON Schema object is a JSON Schema object.\n */\nexport function isSchema(check: unknown, isPolymorphicAllOfChild = false): check is SchemaObject {\n return (\n (check as SchemaObject).type !== undefined ||\n (check as SchemaObject).allOf !== undefined ||\n (check as SchemaObject).anyOf !== undefined ||\n (check as SchemaObject).oneOf !== undefined ||\n isPolymorphicAllOfChild\n );\n}\n\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 type SecuritySchemeObject = OpenAPIV3_1.SecuritySchemeObject | OpenAPIV3.SecuritySchemeObject;\n\nexport type SecuritySchemesObject = Record<string, SecuritySchemeObject>;\n\nexport type KeyedSecuritySchemeObject = SecuritySchemeObject & {\n /**\n * The key for the given security scheme object\n */\n _key: string;\n\n /**\n * An array of required scopes for the given security scheme object.\n * Used for `oauth2` security scheme types.\n */\n _requirements?: string[];\n\n // `x-default` is our custom extension for specifying auth defaults.\n // https://docs.readme.com/docs/openapi-extensions#authentication-defaults\n 'x-default'?: number | string;\n};\n\n/**\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#security-requirement-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#security-requirement-object}\n */\nexport type SecurityRequirementObject = OpenAPIV3_1.SecurityRequirementObject | OpenAPIV3.SecurityRequirementObject;\n"]}
|