@scalar/openapi-parser 0.8.9 → 0.8.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +26 -3
- package/dist/index.js +3 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/dereference.d.ts +1 -1
- package/dist/utils/dereference.d.ts.map +1 -1
- package/dist/utils/dereference.js +1 -1
- package/dist/utils/details.d.ts +1 -1
- package/dist/utils/details.js +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/normalize.d.ts +3 -2
- package/dist/utils/normalize.d.ts.map +1 -1
- package/dist/utils/normalize.js +3 -2
- package/dist/utils/transform/index.d.ts +2 -0
- package/dist/utils/transform/index.d.ts.map +1 -0
- package/dist/utils/transform/sanitize.d.ts +9 -0
- package/dist/utils/transform/sanitize.d.ts.map +1 -0
- package/dist/utils/transform/sanitize.js +23 -0
- package/dist/utils/transform/utils/addInfoObject.d.ts +7 -0
- package/dist/utils/transform/utils/addInfoObject.d.ts.map +1 -0
- package/dist/utils/transform/utils/addInfoObject.js +12 -0
- package/dist/utils/transform/utils/addLatestOpenApiVersion.d.ts +6 -0
- package/dist/utils/transform/utils/addLatestOpenApiVersion.d.ts.map +1 -0
- package/dist/utils/transform/utils/addLatestOpenApiVersion.js +7 -0
- package/dist/utils/transform/utils/addMissingTags.d.ts +3 -0
- package/dist/utils/transform/utils/addMissingTags.d.ts.map +1 -0
- package/dist/utils/transform/utils/addMissingTags.js +38 -0
- package/dist/utils/transform/utils/normalizeSecuritySchemes.d.ts +3 -0
- package/dist/utils/transform/utils/normalizeSecuritySchemes.d.ts.map +1 -0
- package/dist/utils/transform/utils/normalizeSecuritySchemes.js +49 -0
- package/dist/utils/transform/utils/rejectSwaggerDocuments.d.ts +3 -0
- package/dist/utils/transform/utils/rejectSwaggerDocuments.d.ts.map +1 -0
- package/dist/utils/transform/utils/rejectSwaggerDocuments.js +8 -0
- package/dist/utils/validate.d.ts +1 -1
- package/dist/utils/validate.js +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -63,7 +63,7 @@ const specification = `{
|
|
|
63
63
|
const { schema, errors } = await dereference(specification)
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
-
### Modify an OpenAPI
|
|
66
|
+
### Modify an OpenAPI document
|
|
67
67
|
|
|
68
68
|
```ts
|
|
69
69
|
import { filter } from '@scalar/openapi-parser'
|
|
@@ -80,9 +80,9 @@ const specification = `{
|
|
|
80
80
|
const { specification } = filter(specification, (schema) => !schema?.['x-internal'])
|
|
81
81
|
```
|
|
82
82
|
|
|
83
|
-
### Upgrade your OpenAPI
|
|
83
|
+
### Upgrade your OpenAPI document
|
|
84
84
|
|
|
85
|
-
There’s an `upgrade` command to upgrade all your OpenAPI
|
|
85
|
+
There’s an `upgrade` command to upgrade all your OpenAPI documents to the latest OpenAPI version.
|
|
86
86
|
|
|
87
87
|
> ⚠️ The upgrade from Swagger 2.0 is still experimental and probably lacks features.
|
|
88
88
|
|
|
@@ -102,6 +102,29 @@ console.log(specification.openapi)
|
|
|
102
102
|
// Output: 3.1.0
|
|
103
103
|
```
|
|
104
104
|
|
|
105
|
+
### Sanitize your OpenAPI document
|
|
106
|
+
|
|
107
|
+
The `sanitize()` utility helps ensure your OpenAPI document is valid and complete.
|
|
108
|
+
It automatically adds any missing required properties like the OpenAPI version and info object, collects operation tags
|
|
109
|
+
and adds them to the global tags array and normalizes security scheme types.
|
|
110
|
+
|
|
111
|
+
This makes your document as OpenAPI-compliant as possible with minimal effort, handling many common specification
|
|
112
|
+
requirements automatically.
|
|
113
|
+
|
|
114
|
+
> ⚠️ This doesn’t support Swagger 2.0 documents.
|
|
115
|
+
|
|
116
|
+
```ts
|
|
117
|
+
import { sanitize } from '@scalar/openapi-parser'
|
|
118
|
+
|
|
119
|
+
const result = sanitize({
|
|
120
|
+
info: {
|
|
121
|
+
title: 'Hello World',
|
|
122
|
+
},
|
|
123
|
+
})
|
|
124
|
+
|
|
125
|
+
console.log(result)
|
|
126
|
+
```
|
|
127
|
+
|
|
105
128
|
### Pipeline syntax
|
|
106
129
|
|
|
107
130
|
```ts
|
package/dist/index.js
CHANGED
|
@@ -24,3 +24,6 @@ export { upgrade } from './utils/upgrade.js';
|
|
|
24
24
|
export { isSchemaPath, upgradeFromThreeToThreeOne } from './utils/upgradeFromThreeToThreeOne.js';
|
|
25
25
|
export { upgradeFromTwoToThree } from './utils/upgradeFromTwoToThree.js';
|
|
26
26
|
export { validate } from './utils/validate.js';
|
|
27
|
+
export { DEFAULT_OPENAPI_VERSION } from './utils/transform/utils/addLatestOpenApiVersion.js';
|
|
28
|
+
export { DEFAULT_TITLE, DEFAULT_VERSION } from './utils/transform/utils/addInfoObject.js';
|
|
29
|
+
export { sanitize } from './utils/transform/sanitize.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAEpD,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAEpD,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAG9D;;GAEG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;AAE9C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAE3C;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,SAAS,CAAA;AAEvD,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,EAAE,UAAU,CAAA;IACtB,aAAa,EAAE,SAAS,CAAA;IACxB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,OAAO,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAA;IAChC,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAA;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI;IACzE,aAAa,EAAE,CAAC,CAAA;IAChB,OAAO,EAAE,KAAK,CAAA;CACf,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,aAAa,EAAE,SAAS,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,cAAc,CAAA;IACvB,iBAAiB,EAAE,MAAM,CAAA;IACzB,oBAAoB,EAAE,MAAM,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAA;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAA;IACzB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,OAAO,MAAM,GAAG,MAAM,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;CACzB,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,eAAe,EAAE,CAAA;AAE1C;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,OAAO,CAAA;IACrB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,SAAS,CAAA;CACzB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAA;AAE/C,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAED,OAAO,CAAC,MAAM,CAAC;IACb;;OAEG;IAEH,UAAU,QAAQ;KAAG;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,SAAS,IAAI,EAAE,GAAG,SAAS,IAAI,EAAE,IAAI;IAC/D,oEAAoE;IACpE,KAAK,EAAE,sBAAsB,CAAA;IAC7B,qDAAqD;IACrD,aAAa,EAAE,SAAS,CAAA;IACxB,qBAAqB;IACrB,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,mBAAmB;IACnB,KAAK,EAAE,CAAC,CAAA;CACT,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAA;AAEnD,MAAM,MAAM,uBAAuB,GAAG;IACpC,UAAU,EAAE,UAAU,CAAA;IACtB,aAAa,EAAE,SAAS,CAAA;CACzB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,IAAI,EAAE,IAAI,CAAC,SAAS;IACrD,MAAM,KAAK;IACX,GAAG,MAAM,IAAI;CACd,GACG,KAAK,SAAS,IAAI,GAChB,IAAI,SAAS,IAAI,EAAE,GACjB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,GAC5D,KAAK,GACP,KAAK,GACP,uBAAuB,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AnyApiDefinitionFormat, DereferenceResult, Filesystem, ThrowOnErrorOption } from '../types';
|
|
2
2
|
export type DereferenceOptions = ThrowOnErrorOption;
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Resolves all references in an OpenAPI document
|
|
5
5
|
*/
|
|
6
6
|
export declare function dereference(value: AnyApiDefinitionFormat | Filesystem, options?: DereferenceOptions): Promise<DereferenceResult>;
|
|
7
7
|
//# sourceMappingURL=dereference.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dereference.d.ts","sourceRoot":"","sources":["../../src/utils/dereference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,
|
|
1
|
+
{"version":3,"file":"dereference.d.ts","sourceRoot":"","sources":["../../src/utils/dereference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,iBAAiB,EACjB,UAAU,EACV,kBAAkB,EACnB,MAAM,UAAU,CAAA;AAMjB,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,CAAA;AAEnD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,sBAAsB,GAAG,UAAU,EAC1C,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CAY5B"}
|
|
@@ -4,7 +4,7 @@ import { makeFilesystem } from './makeFilesystem.js';
|
|
|
4
4
|
import { resolveReferences } from './resolveReferences.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* Resolves all references in an OpenAPI document
|
|
8
8
|
*/
|
|
9
9
|
async function dereference(value, options) {
|
|
10
10
|
const filesystem = makeFilesystem(value);
|
package/dist/utils/details.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AnyObject, DetailsResult } from '../types';
|
|
2
2
|
/**
|
|
3
|
-
* Get versions of the OpenAPI
|
|
3
|
+
* Get versions of the OpenAPI document.
|
|
4
4
|
*/
|
|
5
5
|
export declare function details(specification: AnyObject): DetailsResult;
|
|
6
6
|
//# sourceMappingURL=details.d.ts.map
|
package/dist/utils/details.js
CHANGED
package/dist/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,qBAAqB,CAAA;AACnC,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,qBAAqB,CAAA;AACnC,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,uBAAuB,CAAA;AACrC,cAAc,WAAW,CAAA;AACzB,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yBAAyB,CAAA;AACvC,cAAc,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,qBAAqB,CAAA;AACnC,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,qBAAqB,CAAA;AACnC,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,uBAAuB,CAAA;AACrC,cAAc,WAAW,CAAA;AACzB,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yBAAyB,CAAA;AACvC,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { AnyObject, Filesystem } from '../types';
|
|
2
2
|
/**
|
|
3
|
-
* Normalize the OpenAPI
|
|
4
|
-
*
|
|
3
|
+
* Normalize the OpenAPI document (YAML, JSON, object) to a JavaScript object.
|
|
4
|
+
*
|
|
5
|
+
* Doesn’t modify the object if it’s a `Filesystem` (multiple files) already.
|
|
5
6
|
*/
|
|
6
7
|
export declare function normalize(specification: string | AnyObject | Filesystem): AnyObject | Filesystem;
|
|
7
8
|
//# sourceMappingURL=normalize.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/utils/normalize.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAGrD
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/utils/normalize.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAGrD;;;;GAIG;AACH,wBAAgB,SAAS,CACvB,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAC7C,SAAS,GAAG,UAAU,CAgBxB"}
|
package/dist/utils/normalize.js
CHANGED
|
@@ -2,8 +2,9 @@ import { parse } from 'yaml';
|
|
|
2
2
|
import { isFilesystem } from './isFilesystem.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* Normalize the OpenAPI
|
|
6
|
-
*
|
|
5
|
+
* Normalize the OpenAPI document (YAML, JSON, object) to a JavaScript object.
|
|
6
|
+
*
|
|
7
|
+
* Doesn’t modify the object if it’s a `Filesystem` (multiple files) already.
|
|
7
8
|
*/
|
|
8
9
|
function normalize(specification) {
|
|
9
10
|
if (isFilesystem(specification)) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/transform/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { OpenAPI } from '@scalar/openapi-types';
|
|
2
|
+
import type { AnyObject } from '../../types';
|
|
3
|
+
export { DEFAULT_OPENAPI_VERSION } from './utils/addLatestOpenApiVersion.js';
|
|
4
|
+
export { DEFAULT_TITLE, DEFAULT_VERSION } from './utils/addInfoObject.js';
|
|
5
|
+
/**
|
|
6
|
+
* Make an OpenAPI document a valid and clean OpenAPI document
|
|
7
|
+
*/
|
|
8
|
+
export declare function sanitize(definition: AnyObject): OpenAPI.Document;
|
|
9
|
+
//# sourceMappingURL=sanitize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/utils/transform/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAEpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAO5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAA;AACzE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEtE;;GAEG;AACH,wBAAgB,QAAQ,CAAC,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,CAUhE"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { addInfoObject } from './utils/addInfoObject.js';
|
|
2
|
+
export { DEFAULT_TITLE, DEFAULT_VERSION } from './utils/addInfoObject.js';
|
|
3
|
+
import { addLatestOpenApiVersion } from './utils/addLatestOpenApiVersion.js';
|
|
4
|
+
export { DEFAULT_OPENAPI_VERSION } from './utils/addLatestOpenApiVersion.js';
|
|
5
|
+
import { addMissingTags } from './utils/addMissingTags.js';
|
|
6
|
+
import { normalizeSecuritySchemes } from './utils/normalizeSecuritySchemes.js';
|
|
7
|
+
import { rejectSwaggerDocuments } from './utils/rejectSwaggerDocuments.js';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Make an OpenAPI document a valid and clean OpenAPI document
|
|
11
|
+
*/
|
|
12
|
+
function sanitize(definition) {
|
|
13
|
+
const transformers = [
|
|
14
|
+
rejectSwaggerDocuments,
|
|
15
|
+
addLatestOpenApiVersion,
|
|
16
|
+
addInfoObject,
|
|
17
|
+
addMissingTags,
|
|
18
|
+
normalizeSecuritySchemes,
|
|
19
|
+
];
|
|
20
|
+
return transformers.reduce((doc, transformer) => transformer(doc), definition);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export { sanitize };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AnyObject } from '../../../types';
|
|
2
|
+
export declare const DEFAULT_TITLE = "API";
|
|
3
|
+
export declare const DEFAULT_VERSION = "1.0";
|
|
4
|
+
export declare const addInfoObject: (definition: AnyObject) => {
|
|
5
|
+
info: any;
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=addInfoObject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addInfoObject.d.ts","sourceRoot":"","sources":["../../../../src/utils/transform/utils/addInfoObject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,eAAO,MAAM,aAAa,QAAQ,CAAA;AAClC,eAAO,MAAM,eAAe,QAAQ,CAAA;AAEpC,eAAO,MAAM,aAAa,eAAgB,SAAS;;CAOjD,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const DEFAULT_TITLE = 'API';
|
|
2
|
+
const DEFAULT_VERSION = '1.0';
|
|
3
|
+
const addInfoObject = (definition) => ({
|
|
4
|
+
...definition,
|
|
5
|
+
info: {
|
|
6
|
+
...definition.info,
|
|
7
|
+
title: definition.info?.title ?? DEFAULT_TITLE,
|
|
8
|
+
version: definition.info?.version ?? DEFAULT_VERSION,
|
|
9
|
+
},
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
export { DEFAULT_TITLE, DEFAULT_VERSION, addInfoObject };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addLatestOpenApiVersion.d.ts","sourceRoot":"","sources":["../../../../src/utils/transform/utils/addLatestOpenApiVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,eAAO,MAAM,uBAAuB,UAAU,CAAA;AAE9C,eAAO,MAAM,uBAAuB,eAAgB,SAAS;;CAG3D,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addMissingTags.d.ts","sourceRoot":"","sources":["../../../../src/utils/transform/utils/addMissingTags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,eAAO,MAAM,cAAc,eAAgB,SAAS,cA8CnD,CAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
const addMissingTags = (definition) => {
|
|
2
|
+
if (!definition.paths) {
|
|
3
|
+
return definition;
|
|
4
|
+
}
|
|
5
|
+
// Collect all unique tags used in operations
|
|
6
|
+
const usedTags = new Set();
|
|
7
|
+
for (const path of Object.values(definition.paths)) {
|
|
8
|
+
if (typeof path === 'object' && path !== null) {
|
|
9
|
+
for (const operation of Object.values(path)) {
|
|
10
|
+
if (typeof operation === 'object' &&
|
|
11
|
+
operation !== null &&
|
|
12
|
+
'tags' in operation) {
|
|
13
|
+
const tags = operation.tags;
|
|
14
|
+
if (Array.isArray(tags)) {
|
|
15
|
+
tags.forEach((tag) => usedTags.add(String(tag)));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
// Convert tags to array of tag objects if not already present
|
|
22
|
+
const existingTags = new Set((Array.isArray(definition.tags) ? definition.tags : [])
|
|
23
|
+
.map((tag) => typeof tag === 'object' && tag !== null ? String(tag.name) : null)
|
|
24
|
+
.filter(Boolean));
|
|
25
|
+
// Add missing tags
|
|
26
|
+
const missingTags = [...usedTags]
|
|
27
|
+
.filter((tag) => !existingTags.has(tag))
|
|
28
|
+
.map((name) => ({ name }));
|
|
29
|
+
return {
|
|
30
|
+
...definition,
|
|
31
|
+
tags: [
|
|
32
|
+
...(Array.isArray(definition.tags) ? definition.tags : []),
|
|
33
|
+
...missingTags,
|
|
34
|
+
],
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export { addMissingTags };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizeSecuritySchemes.d.ts","sourceRoot":"","sources":["../../../../src/utils/transform/utils/normalizeSecuritySchemes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,eAAO,MAAM,wBAAwB,eAAgB,SAAS,cAsD7D,CAAA"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
const normalizeSecuritySchemes = (definition) => {
|
|
2
|
+
if (!definition.components?.securitySchemes) {
|
|
3
|
+
return definition;
|
|
4
|
+
}
|
|
5
|
+
const securitySchemes = { ...definition.components.securitySchemes };
|
|
6
|
+
for (const scheme of Object.values(securitySchemes)) {
|
|
7
|
+
if (typeof scheme === 'object' && scheme !== null && 'type' in scheme) {
|
|
8
|
+
const type = String(scheme.type).toLowerCase();
|
|
9
|
+
scheme.type =
|
|
10
|
+
{
|
|
11
|
+
apikey: 'apiKey',
|
|
12
|
+
oauth2: 'oauth2',
|
|
13
|
+
http: 'http',
|
|
14
|
+
mutualtls: 'mutualTLS',
|
|
15
|
+
openidconnect: 'openIdConnect',
|
|
16
|
+
}[type] ?? type;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
// Convert array scopes to objects
|
|
20
|
+
for (const scheme of Object.values(securitySchemes)) {
|
|
21
|
+
if (typeof scheme === 'object' &&
|
|
22
|
+
scheme !== null &&
|
|
23
|
+
'type' in scheme &&
|
|
24
|
+
scheme.type === 'oauth2' &&
|
|
25
|
+
'flows' in scheme) {
|
|
26
|
+
const flows = scheme.flows;
|
|
27
|
+
for (const flow of Object.values(flows)) {
|
|
28
|
+
if (typeof flow === 'object' &&
|
|
29
|
+
flow !== null &&
|
|
30
|
+
'scopes' in flow &&
|
|
31
|
+
Array.isArray(flow.scopes)) {
|
|
32
|
+
flow.scopes = flow.scopes.reduce((acc, scope) => {
|
|
33
|
+
acc[scope] = '';
|
|
34
|
+
return acc;
|
|
35
|
+
}, {});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
...definition,
|
|
42
|
+
components: {
|
|
43
|
+
...definition.components,
|
|
44
|
+
securitySchemes,
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export { normalizeSecuritySchemes };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rejectSwaggerDocuments.d.ts","sourceRoot":"","sources":["../../../../src/utils/transform/utils/rejectSwaggerDocuments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,eAAO,MAAM,sBAAsB,cAAe,SAAS,cAQ1D,CAAA"}
|
package/dist/utils/validate.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AnyObject, Filesystem, ThrowOnErrorOption, ValidateResult } from '../types';
|
|
2
2
|
export type ValidateOptions = ThrowOnErrorOption;
|
|
3
3
|
/**
|
|
4
|
-
* Validates an OpenAPI
|
|
4
|
+
* Validates an OpenAPI document
|
|
5
5
|
*/
|
|
6
6
|
export declare function validate(value: string | AnyObject | Filesystem, options?: ValidateOptions): Promise<ValidateResult>;
|
|
7
7
|
//# sourceMappingURL=validate.d.ts.map
|
package/dist/utils/validate.js
CHANGED
|
@@ -2,7 +2,7 @@ import { makeFilesystem } from './makeFilesystem.js';
|
|
|
2
2
|
import { Validator } from '../lib/Validator/Validator.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* Validates an OpenAPI
|
|
5
|
+
* Validates an OpenAPI document
|
|
6
6
|
*/
|
|
7
7
|
async function validate(value, options) {
|
|
8
8
|
const filesystem = makeFilesystem(value);
|
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"parser",
|
|
18
18
|
"typescript"
|
|
19
19
|
],
|
|
20
|
-
"version": "0.8.
|
|
20
|
+
"version": "0.8.10",
|
|
21
21
|
"engines": {
|
|
22
22
|
"node": ">=18"
|
|
23
23
|
},
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"json-to-ast": "^2.1.0",
|
|
65
65
|
"just-diff": "^6.0.2",
|
|
66
66
|
"tinybench": "^2.8.0",
|
|
67
|
-
"@scalar/build-tooling": "0.1.
|
|
67
|
+
"@scalar/build-tooling": "0.1.12",
|
|
68
68
|
"@scalar/openapi-types": "0.1.5"
|
|
69
69
|
},
|
|
70
70
|
"scripts": {
|