@redocly/openapi-core 0.0.0-snapshot.1737554067
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 +268 -0
- package/lib/benchmark/benches/lint-with-many-rules.bench.d.ts +4 -0
- package/lib/benchmark/benches/lint-with-many-rules.bench.js +38 -0
- package/lib/benchmark/benches/lint-with-nested-rule.bench.d.ts +4 -0
- package/lib/benchmark/benches/lint-with-nested-rule.bench.js +44 -0
- package/lib/benchmark/benches/lint-with-no-rules.bench.d.ts +4 -0
- package/lib/benchmark/benches/lint-with-no-rules.bench.js +25 -0
- package/lib/benchmark/benches/lint-with-top-level-rule-report.bench.d.ts +4 -0
- package/lib/benchmark/benches/lint-with-top-level-rule-report.bench.js +37 -0
- package/lib/benchmark/benches/lint-with-top-level-rule.bench.d.ts +4 -0
- package/lib/benchmark/benches/lint-with-top-level-rule.bench.js +36 -0
- package/lib/benchmark/benches/recommended-oas3.bench.d.ts +3 -0
- package/lib/benchmark/benches/recommended-oas3.bench.js +21 -0
- package/lib/benchmark/benches/resolve-with-no-external.bench.d.ts +3 -0
- package/lib/benchmark/benches/resolve-with-no-external.bench.js +22 -0
- package/lib/benchmark/utils.d.ts +6 -0
- package/lib/benchmark/utils.js +34 -0
- package/lib/bundle.d.ts +50 -0
- package/lib/bundle.js +385 -0
- package/lib/config/all.d.ts +3 -0
- package/lib/config/all.js +227 -0
- package/lib/config/builtIn.d.ts +3 -0
- package/lib/config/builtIn.js +53 -0
- package/lib/config/config-resolvers.d.ts +30 -0
- package/lib/config/config-resolvers.js +447 -0
- package/lib/config/config.d.ts +53 -0
- package/lib/config/config.js +320 -0
- package/lib/config/index.d.ts +7 -0
- package/lib/config/index.js +23 -0
- package/lib/config/load.d.ts +38 -0
- package/lib/config/load.js +140 -0
- package/lib/config/minimal.d.ts +3 -0
- package/lib/config/minimal.js +203 -0
- package/lib/config/recommended-strict.d.ts +3 -0
- package/lib/config/recommended-strict.js +203 -0
- package/lib/config/recommended.d.ts +3 -0
- package/lib/config/recommended.js +203 -0
- package/lib/config/rules.d.ts +10 -0
- package/lib/config/rules.js +37 -0
- package/lib/config/spec.d.ts +3 -0
- package/lib/config/spec.js +29 -0
- package/lib/config/types.d.ts +189 -0
- package/lib/config/types.js +2 -0
- package/lib/config/utils.d.ts +19 -0
- package/lib/config/utils.js +308 -0
- package/lib/decorators/arazzo/index.d.ts +1 -0
- package/lib/decorators/arazzo/index.js +4 -0
- package/lib/decorators/async2/index.d.ts +1 -0
- package/lib/decorators/async2/index.js +4 -0
- package/lib/decorators/async3/index.d.ts +1 -0
- package/lib/decorators/async3/index.js +4 -0
- package/lib/decorators/common/filters/filter-helper.d.ts +3 -0
- package/lib/decorators/common/filters/filter-helper.js +66 -0
- package/lib/decorators/common/filters/filter-in.d.ts +2 -0
- package/lib/decorators/common/filters/filter-in.js +17 -0
- package/lib/decorators/common/filters/filter-out.d.ts +2 -0
- package/lib/decorators/common/filters/filter-out.js +17 -0
- package/lib/decorators/common/info-description-override.d.ts +2 -0
- package/lib/decorators/common/info-description-override.js +24 -0
- package/lib/decorators/common/info-override.d.ts +2 -0
- package/lib/decorators/common/info-override.js +17 -0
- package/lib/decorators/common/media-type-examples-override.d.ts +2 -0
- package/lib/decorators/common/media-type-examples-override.js +59 -0
- package/lib/decorators/common/operation-description-override.d.ts +2 -0
- package/lib/decorators/common/operation-description-override.js +29 -0
- package/lib/decorators/common/registry-dependencies.d.ts +2 -0
- package/lib/decorators/common/registry-dependencies.js +24 -0
- package/lib/decorators/common/remove-x-internal.d.ts +2 -0
- package/lib/decorators/common/remove-x-internal.js +69 -0
- package/lib/decorators/common/tag-description-override.d.ts +2 -0
- package/lib/decorators/common/tag-description-override.js +25 -0
- package/lib/decorators/oas2/index.d.ts +11 -0
- package/lib/decorators/oas2/index.js +21 -0
- package/lib/decorators/oas2/remove-unused-components.d.ts +2 -0
- package/lib/decorators/oas2/remove-unused-components.js +89 -0
- package/lib/decorators/oas3/index.d.ts +12 -0
- package/lib/decorators/oas3/index.js +23 -0
- package/lib/decorators/oas3/remove-unused-components.d.ts +2 -0
- package/lib/decorators/oas3/remove-unused-components.js +100 -0
- package/lib/env.d.ts +2 -0
- package/lib/env.js +7 -0
- package/lib/format/codeframes.d.ts +22 -0
- package/lib/format/codeframes.js +185 -0
- package/lib/format/format.d.ts +20 -0
- package/lib/format/format.js +365 -0
- package/lib/index.d.ts +26 -0
- package/lib/index.js +98 -0
- package/lib/js-yaml/index.d.ts +3 -0
- package/lib/js-yaml/index.js +15 -0
- package/lib/lint.d.ts +32 -0
- package/lib/lint.js +118 -0
- package/lib/logger.d.ts +10 -0
- package/lib/logger.js +31 -0
- package/lib/oas-types.d.ts +36 -0
- package/lib/oas-types.js +92 -0
- package/lib/output.d.ts +3 -0
- package/lib/output.js +9 -0
- package/lib/redocly/domains.d.ts +14 -0
- package/lib/redocly/domains.js +41 -0
- package/lib/redocly/index.d.ts +30 -0
- package/lib/redocly/index.js +131 -0
- package/lib/redocly/redocly-client-types.d.ts +8 -0
- package/lib/redocly/redocly-client-types.js +2 -0
- package/lib/redocly/registry-api-types.d.ts +29 -0
- package/lib/redocly/registry-api-types.js +2 -0
- package/lib/redocly/registry-api.d.ts +17 -0
- package/lib/redocly/registry-api.js +96 -0
- package/lib/ref-utils.d.ts +27 -0
- package/lib/ref-utils.js +85 -0
- package/lib/resolve.d.ts +66 -0
- package/lib/resolve.js +342 -0
- package/lib/rules/ajv.d.ts +10 -0
- package/lib/rules/ajv.js +82 -0
- package/lib/rules/arazzo/criteria-unique.d.ts +2 -0
- package/lib/rules/arazzo/criteria-unique.js +71 -0
- package/lib/rules/arazzo/index.d.ts +3 -0
- package/lib/rules/arazzo/index.js +36 -0
- package/lib/rules/arazzo/parameters-unique.d.ts +2 -0
- package/lib/rules/arazzo/parameters-unique.js +32 -0
- package/lib/rules/arazzo/requestBody-replacements-unique.d.ts +2 -0
- package/lib/rules/arazzo/requestBody-replacements-unique.js +28 -0
- package/lib/rules/arazzo/sourceDescription-type.d.ts +2 -0
- package/lib/rules/arazzo/sourceDescription-type.js +22 -0
- package/lib/rules/arazzo/sourceDescriptions-name-unique.d.ts +2 -0
- package/lib/rules/arazzo/sourceDescriptions-name-unique.js +24 -0
- package/lib/rules/arazzo/sourceDescriptions-not-empty.d.ts +2 -0
- package/lib/rules/arazzo/sourceDescriptions-not-empty.js +18 -0
- package/lib/rules/arazzo/step-onFailure-unique.d.ts +2 -0
- package/lib/rules/arazzo/step-onFailure-unique.js +32 -0
- package/lib/rules/arazzo/step-onSuccess-unique.d.ts +2 -0
- package/lib/rules/arazzo/step-onSuccess-unique.js +32 -0
- package/lib/rules/arazzo/stepId-unique.d.ts +2 -0
- package/lib/rules/arazzo/stepId-unique.js +26 -0
- package/lib/rules/arazzo/workflow-dependsOn.d.ts +2 -0
- package/lib/rules/arazzo/workflow-dependsOn.js +56 -0
- package/lib/rules/arazzo/workflowId-unique.d.ts +2 -0
- package/lib/rules/arazzo/workflowId-unique.js +22 -0
- package/lib/rules/async2/channels-kebab-case.d.ts +2 -0
- package/lib/rules/async2/channels-kebab-case.js +19 -0
- package/lib/rules/async2/index.d.ts +3 -0
- package/lib/rules/async2/index.js +27 -0
- package/lib/rules/async2/no-channel-trailing-slash.d.ts +2 -0
- package/lib/rules/async2/no-channel-trailing-slash.js +16 -0
- package/lib/rules/async3/channels-kebab-case.d.ts +2 -0
- package/lib/rules/async3/channels-kebab-case.js +19 -0
- package/lib/rules/async3/index.d.ts +3 -0
- package/lib/rules/async3/index.js +27 -0
- package/lib/rules/async3/no-channel-trailing-slash.d.ts +2 -0
- package/lib/rules/async3/no-channel-trailing-slash.js +16 -0
- package/lib/rules/common/assertions/asserts.d.ts +30 -0
- package/lib/rules/common/assertions/asserts.js +281 -0
- package/lib/rules/common/assertions/index.d.ts +27 -0
- package/lib/rules/common/assertions/index.js +24 -0
- package/lib/rules/common/assertions/utils.d.ts +28 -0
- package/lib/rules/common/assertions/utils.js +226 -0
- package/lib/rules/common/info-contact.d.ts +2 -0
- package/lib/rules/common/info-contact.js +17 -0
- package/lib/rules/common/info-license-strict.d.ts +2 -0
- package/lib/rules/common/info-license-strict.js +26 -0
- package/lib/rules/common/info-license-url.d.ts +2 -0
- package/lib/rules/common/info-license-url.js +12 -0
- package/lib/rules/common/info-license.d.ts +2 -0
- package/lib/rules/common/info-license.js +17 -0
- package/lib/rules/common/no-ambiguous-paths.d.ts +2 -0
- package/lib/rules/common/no-ambiguous-paths.js +45 -0
- package/lib/rules/common/no-enum-type-mismatch.d.ts +2 -0
- package/lib/rules/common/no-enum-type-mismatch.js +41 -0
- package/lib/rules/common/no-http-verbs-in-paths.d.ts +2 -0
- package/lib/rules/common/no-http-verbs-in-paths.js +33 -0
- package/lib/rules/common/no-identical-paths.d.ts +2 -0
- package/lib/rules/common/no-identical-paths.js +24 -0
- package/lib/rules/common/no-invalid-parameter-examples.d.ts +1 -0
- package/lib/rules/common/no-invalid-parameter-examples.js +24 -0
- package/lib/rules/common/no-invalid-schema-examples.d.ts +1 -0
- package/lib/rules/common/no-invalid-schema-examples.js +22 -0
- package/lib/rules/common/no-path-trailing-slash.d.ts +2 -0
- package/lib/rules/common/no-path-trailing-slash.js +16 -0
- package/lib/rules/common/no-required-schema-properties-undefined.d.ts +2 -0
- package/lib/rules/common/no-required-schema-properties-undefined.js +36 -0
- package/lib/rules/common/operation-2xx-response.d.ts +2 -0
- package/lib/rules/common/operation-2xx-response.js +23 -0
- package/lib/rules/common/operation-4xx-response.d.ts +2 -0
- package/lib/rules/common/operation-4xx-response.js +23 -0
- package/lib/rules/common/operation-description.d.ts +2 -0
- package/lib/rules/common/operation-description.js +12 -0
- package/lib/rules/common/operation-operationId-unique.d.ts +2 -0
- package/lib/rules/common/operation-operationId-unique.js +20 -0
- package/lib/rules/common/operation-operationId-url-safe.d.ts +2 -0
- package/lib/rules/common/operation-operationId-url-safe.js +18 -0
- package/lib/rules/common/operation-operationId.d.ts +2 -0
- package/lib/rules/common/operation-operationId.js +16 -0
- package/lib/rules/common/operation-parameters-unique.d.ts +2 -0
- package/lib/rules/common/operation-parameters-unique.js +40 -0
- package/lib/rules/common/operation-singular-tag.d.ts +2 -0
- package/lib/rules/common/operation-singular-tag.js +16 -0
- package/lib/rules/common/operation-summary.d.ts +2 -0
- package/lib/rules/common/operation-summary.js +12 -0
- package/lib/rules/common/operation-tag-defined.d.ts +2 -0
- package/lib/rules/common/operation-tag-defined.js +24 -0
- package/lib/rules/common/parameter-description.d.ts +2 -0
- package/lib/rules/common/parameter-description.js +22 -0
- package/lib/rules/common/path-declaration-must-exist.d.ts +2 -0
- package/lib/rules/common/path-declaration-must-exist.js +16 -0
- package/lib/rules/common/path-excludes-patterns.d.ts +2 -0
- package/lib/rules/common/path-excludes-patterns.js +22 -0
- package/lib/rules/common/path-http-verbs-order.d.ts +2 -0
- package/lib/rules/common/path-http-verbs-order.js +26 -0
- package/lib/rules/common/path-not-include-query.d.ts +2 -0
- package/lib/rules/common/path-not-include-query.js +18 -0
- package/lib/rules/common/path-params-defined.d.ts +2 -0
- package/lib/rules/common/path-params-defined.js +58 -0
- package/lib/rules/common/path-segment-plural.d.ts +2 -0
- package/lib/rules/common/path-segment-plural.js +33 -0
- package/lib/rules/common/paths-kebab-case.d.ts +2 -0
- package/lib/rules/common/paths-kebab-case.js +20 -0
- package/lib/rules/common/required-string-property-missing-min-length.d.ts +2 -0
- package/lib/rules/common/required-string-property-missing-min-length.js +37 -0
- package/lib/rules/common/response-contains-header.d.ts +2 -0
- package/lib/rules/common/response-contains-header.js +29 -0
- package/lib/rules/common/scalar-property-missing-example.d.ts +2 -0
- package/lib/rules/common/scalar-property-missing-example.js +42 -0
- package/lib/rules/common/security-defined.d.ts +2 -0
- package/lib/rules/common/security-defined.js +65 -0
- package/lib/rules/common/spec-strict-refs.d.ts +2 -0
- package/lib/rules/common/spec-strict-refs.js +30 -0
- package/lib/rules/common/struct.d.ts +2 -0
- package/lib/rules/common/struct.js +158 -0
- package/lib/rules/common/tag-description.d.ts +2 -0
- package/lib/rules/common/tag-description.js +12 -0
- package/lib/rules/common/tags-alphabetical.d.ts +2 -0
- package/lib/rules/common/tags-alphabetical.js +23 -0
- package/lib/rules/no-unresolved-refs.d.ts +5 -0
- package/lib/rules/no-unresolved-refs.js +46 -0
- package/lib/rules/oas2/boolean-parameter-prefixes.d.ts +5 -0
- package/lib/rules/oas2/boolean-parameter-prefixes.js +22 -0
- package/lib/rules/oas2/index.d.ts +3 -0
- package/lib/rules/oas2/index.js +98 -0
- package/lib/rules/oas2/request-mime-type.d.ts +2 -0
- package/lib/rules/oas2/request-mime-type.js +17 -0
- package/lib/rules/oas2/response-contains-property.d.ts +2 -0
- package/lib/rules/oas2/response-contains-property.js +37 -0
- package/lib/rules/oas2/response-mime-type.d.ts +2 -0
- package/lib/rules/oas2/response-mime-type.js +17 -0
- package/lib/rules/oas3/array-parameter-serialization.d.ts +5 -0
- package/lib/rules/oas3/array-parameter-serialization.js +29 -0
- package/lib/rules/oas3/boolean-parameter-prefixes.d.ts +5 -0
- package/lib/rules/oas3/boolean-parameter-prefixes.js +24 -0
- package/lib/rules/oas3/component-name-unique.d.ts +2 -0
- package/lib/rules/oas3/component-name-unique.js +133 -0
- package/lib/rules/oas3/index.d.ts +3 -0
- package/lib/rules/oas3/index.js +122 -0
- package/lib/rules/oas3/no-empty-servers.d.ts +2 -0
- package/lib/rules/oas3/no-empty-servers.js +23 -0
- package/lib/rules/oas3/no-example-value-and-externalValue.d.ts +2 -0
- package/lib/rules/oas3/no-example-value-and-externalValue.js +16 -0
- package/lib/rules/oas3/no-invalid-media-type-examples.d.ts +2 -0
- package/lib/rules/oas3/no-invalid-media-type-examples.js +39 -0
- package/lib/rules/oas3/no-server-example.com.d.ts +2 -0
- package/lib/rules/oas3/no-server-example.com.js +18 -0
- package/lib/rules/oas3/no-server-trailing-slash.d.ts +2 -0
- package/lib/rules/oas3/no-server-trailing-slash.js +18 -0
- package/lib/rules/oas3/no-server-variables-empty-enum.d.ts +2 -0
- package/lib/rules/oas3/no-server-variables-empty-enum.js +66 -0
- package/lib/rules/oas3/no-undefined-server-variable.d.ts +2 -0
- package/lib/rules/oas3/no-undefined-server-variable.js +31 -0
- package/lib/rules/oas3/no-unused-components.d.ts +2 -0
- package/lib/rules/oas3/no-unused-components.js +73 -0
- package/lib/rules/oas3/operation-4xx-problem-details-rfc7807.d.ts +5 -0
- package/lib/rules/oas3/operation-4xx-problem-details-rfc7807.js +36 -0
- package/lib/rules/oas3/request-mime-type.d.ts +2 -0
- package/lib/rules/oas3/request-mime-type.js +31 -0
- package/lib/rules/oas3/response-contains-property.d.ts +2 -0
- package/lib/rules/oas3/response-contains-property.js +39 -0
- package/lib/rules/oas3/response-mime-type.d.ts +2 -0
- package/lib/rules/oas3/response-mime-type.js +31 -0
- package/lib/rules/oas3/spec-components-invalid-map-name.d.ts +2 -0
- package/lib/rules/oas3/spec-components-invalid-map-name.js +62 -0
- package/lib/rules/other/stats.d.ts +41 -0
- package/lib/rules/other/stats.js +75 -0
- package/lib/rules/spot/no-criteria-xpath.d.ts +2 -0
- package/lib/rules/spot/no-criteria-xpath.js +21 -0
- package/lib/rules/spot/spot-supported-versions.d.ts +2 -0
- package/lib/rules/spot/spot-supported-versions.js +21 -0
- package/lib/rules/utils.d.ts +22 -0
- package/lib/rules/utils.js +183 -0
- package/lib/types/arazzo.d.ts +2 -0
- package/lib/types/arazzo.js +311 -0
- package/lib/types/asyncapi2.d.ts +17 -0
- package/lib/types/asyncapi2.js +1008 -0
- package/lib/types/asyncapi3.d.ts +2 -0
- package/lib/types/asyncapi3.js +347 -0
- package/lib/types/index.d.ts +57 -0
- package/lib/types/index.js +94 -0
- package/lib/types/json-schema-adapter.d.ts +3 -0
- package/lib/types/json-schema-adapter.js +159 -0
- package/lib/types/oas2.d.ts +3 -0
- package/lib/types/oas2.js +456 -0
- package/lib/types/oas3.d.ts +7 -0
- package/lib/types/oas3.js +554 -0
- package/lib/types/oas3_1.d.ts +6 -0
- package/lib/types/oas3_1.js +285 -0
- package/lib/types/redocly-yaml.d.ts +26 -0
- package/lib/types/redocly-yaml.js +1126 -0
- package/lib/typings/arazzo.d.ts +131 -0
- package/lib/typings/arazzo.js +5 -0
- package/lib/typings/asyncapi.d.ts +21 -0
- package/lib/typings/asyncapi.js +2 -0
- package/lib/typings/asyncapi3.d.ts +53 -0
- package/lib/typings/asyncapi3.js +2 -0
- package/lib/typings/common.d.ts +8 -0
- package/lib/typings/common.js +2 -0
- package/lib/typings/openapi.d.ts +355 -0
- package/lib/typings/openapi.js +2 -0
- package/lib/typings/swagger.d.ts +217 -0
- package/lib/typings/swagger.js +2 -0
- package/lib/utils.d.ts +70 -0
- package/lib/utils.js +301 -0
- package/lib/visitors.d.ts +229 -0
- package/lib/visitors.js +176 -0
- package/lib/walk.d.ts +78 -0
- package/lib/walk.js +290 -0
- package/package.json +59 -0
package/README.md
ADDED
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
# openapi-core
|
|
2
|
+
|
|
3
|
+
See https://github.com/Redocly/redocly-cli
|
|
4
|
+
|
|
5
|
+
> [!IMPORTANT]
|
|
6
|
+
> The `openapi-core package` is designed for our internal use; the interfaces that are considered safe to use are documented below.
|
|
7
|
+
> Some of the function arguments are not documented below because they are not intended for public use.
|
|
8
|
+
> Avoid using any functions or features that are not documented below.
|
|
9
|
+
> If your use case is not documented below, please open an issue.
|
|
10
|
+
|
|
11
|
+
## Basic usage
|
|
12
|
+
|
|
13
|
+
### Lint from file system
|
|
14
|
+
|
|
15
|
+
[Lint](https://redocly.com/docs/cli/commands/lint/) a file, optionally with a [config file](https://redocly.com/docs/cli/configuration/).
|
|
16
|
+
|
|
17
|
+
```js
|
|
18
|
+
import { lint, loadConfig } from '@redocly/openapi-core';
|
|
19
|
+
|
|
20
|
+
const pathToApi = 'openapi.yaml';
|
|
21
|
+
const config = await loadConfig({ configPath: 'optional/path/to/redocly.yaml' });
|
|
22
|
+
const lintResults = await lint({ ref: pathToApi, config });
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The content of `lintResults` describes any errors or warnings found during linting; an empty array means no problems were found.
|
|
26
|
+
For each problem, the rule, severity, feedback message and a location object are provided.
|
|
27
|
+
To learn more, [check the `lint` function section](#lint).
|
|
28
|
+
|
|
29
|
+
### Bundle from file system
|
|
30
|
+
|
|
31
|
+
[Bundle](https://redocly.com/docs/cli/commands/bundle/) an API description into a single structure, optionally with a [config file](https://redocly.com/docs/cli/configuration/).
|
|
32
|
+
|
|
33
|
+
```js
|
|
34
|
+
import { bundle, loadConfig } from '@redocly/openapi-core';
|
|
35
|
+
|
|
36
|
+
const pathToApi = 'openapi.yaml';
|
|
37
|
+
const config = await loadConfig({ configPath: 'optional/path/to/redocly.yaml' });
|
|
38
|
+
const bundleResults = await bundle({ ref: pathToApi, config });
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
In `bundleResults`, the `bundle.parsed` field has the bundled API description.
|
|
42
|
+
For more information, [check the `bundle` function section](#bundle).
|
|
43
|
+
|
|
44
|
+
### Lint from memory with config
|
|
45
|
+
|
|
46
|
+
[Lint](https://redocly.com/docs/cli/commands/lint/) an API description, with configuration defined. This is useful if the API description you're working with isn't a file on disk.
|
|
47
|
+
|
|
48
|
+
```js
|
|
49
|
+
import { lintFromString, createConfig, stringifyYaml } from '@redocly/openapi-core';
|
|
50
|
+
|
|
51
|
+
const config = await createConfig(
|
|
52
|
+
{
|
|
53
|
+
extends: ['minimal'],
|
|
54
|
+
rules: {
|
|
55
|
+
'operation-description': 'error',
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
// optionally provide config path for resolving $refs and proper error locations
|
|
60
|
+
configPath: 'optional/path/to/redocly.yaml',
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
const source = stringifyYaml({ openapi: '3.0.1' /* ... */ }); // you can also use JSON.stringify
|
|
64
|
+
const lintResults = await lintFromString({
|
|
65
|
+
source,
|
|
66
|
+
// optionally pass path to the file for resolving $refs and proper error locations
|
|
67
|
+
absoluteRef: 'optional/path/to/openapi.yaml',
|
|
68
|
+
config,
|
|
69
|
+
});
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Lint from memory with a custom plugin
|
|
73
|
+
|
|
74
|
+
[Lint](https://redocly.com/docs/cli/commands/lint/) an API description, with configuration including a [custom plugin](https://redocly.com/docs/cli/custom-plugins/) to define a rule.
|
|
75
|
+
|
|
76
|
+
```js
|
|
77
|
+
import { lintFromString, createConfig, stringifyYaml } from '@redocly/openapi-core';
|
|
78
|
+
|
|
79
|
+
const CustomRule = (ruleOptions) => {
|
|
80
|
+
return {
|
|
81
|
+
Operation() {
|
|
82
|
+
// some rule logic
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
const config = await createConfig({
|
|
88
|
+
extends: ['recommended'],
|
|
89
|
+
plugins: [
|
|
90
|
+
{
|
|
91
|
+
id: 'pluginId',
|
|
92
|
+
rules: {
|
|
93
|
+
oas3: {
|
|
94
|
+
customRule1: CustomRule,
|
|
95
|
+
},
|
|
96
|
+
oas2: {
|
|
97
|
+
customRule1: CustomRule, // if the same rule can handle both oas3 and oas2
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
decorators: {
|
|
101
|
+
// ...
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
// enable rule
|
|
106
|
+
rules: {
|
|
107
|
+
'pluginId/customRule1': 'error',
|
|
108
|
+
},
|
|
109
|
+
decorators: {
|
|
110
|
+
// ...
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
const source = stringifyYaml({ openapi: '3.0.1' /* ... */ }); // you can also use JSON.stringify
|
|
115
|
+
const lintResults = await lintFromString({
|
|
116
|
+
source,
|
|
117
|
+
// optionally pass path to the file for resolving $refs and proper error locations
|
|
118
|
+
absoluteRef: 'optional/path/to/openapi.yaml',
|
|
119
|
+
config,
|
|
120
|
+
});
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Bundle from memory
|
|
124
|
+
|
|
125
|
+
[Bundle](https://redocly.com/docs/cli/commands/bundle/) an API description into a single structure, using default configuration.
|
|
126
|
+
|
|
127
|
+
```js
|
|
128
|
+
import { bundleFromString, createConfig } from '@redocly/openapi-core';
|
|
129
|
+
|
|
130
|
+
const config = await createConfig({}); // create empty config
|
|
131
|
+
const source = stringifyYaml({ openapi: '3.0.1' /* ... */ }); // you can also use JSON.stringify
|
|
132
|
+
const bundleResults = await bundleFromString({
|
|
133
|
+
source,
|
|
134
|
+
// optionally pass path to the file for resolving $refs and proper error locations
|
|
135
|
+
absoluteRef: 'optional/path/to/openapi.yaml',
|
|
136
|
+
config,
|
|
137
|
+
});
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## API
|
|
141
|
+
|
|
142
|
+
### `createConfig`
|
|
143
|
+
|
|
144
|
+
Creates a config object from a JSON or YAML string or JS object.
|
|
145
|
+
Resolves remote config from `extends` (if there are URLs or local fs paths).
|
|
146
|
+
|
|
147
|
+
```ts
|
|
148
|
+
async function createConfig(
|
|
149
|
+
// JSON or YAML string or object with Redocly config
|
|
150
|
+
config: string | RawUniversalConfig,
|
|
151
|
+
options?: {
|
|
152
|
+
// optional path to the config file for resolving $refs and proper error locations
|
|
153
|
+
configPath?: string;
|
|
154
|
+
}
|
|
155
|
+
): Promise<Config>;
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### `loadConfig`
|
|
159
|
+
|
|
160
|
+
Loads a config object from a file system. If `configPath` is not provided,
|
|
161
|
+
it tries to find `redocly.yaml` in the current working directory.
|
|
162
|
+
|
|
163
|
+
```ts
|
|
164
|
+
async function loadConfig(options?: {
|
|
165
|
+
// optional path to the config file for resolving $refs and proper error locations
|
|
166
|
+
configPath?: string;
|
|
167
|
+
// allows to add custom `extends` additionally to one from the config file
|
|
168
|
+
customExtends?: string[];
|
|
169
|
+
}): Promise<Config>;
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### `lint`
|
|
173
|
+
|
|
174
|
+
Lint an OpenAPI document from the file system.
|
|
175
|
+
|
|
176
|
+
```ts
|
|
177
|
+
async function lint(options: {
|
|
178
|
+
// path to the OpenAPI document root
|
|
179
|
+
ref: string;
|
|
180
|
+
// config object
|
|
181
|
+
config: Config;
|
|
182
|
+
}): Promise<NormalizedProblem[]>;
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### `lintFromString`
|
|
186
|
+
|
|
187
|
+
Lint an OpenAPI document from a string.
|
|
188
|
+
|
|
189
|
+
```ts
|
|
190
|
+
async function lintFromString(options: {
|
|
191
|
+
// OpenAPI document string
|
|
192
|
+
source: string;
|
|
193
|
+
// optional path to the OpenAPI document for resolving $refs and proper error locations
|
|
194
|
+
absoluteRef?: string;
|
|
195
|
+
// config object
|
|
196
|
+
config: Config;
|
|
197
|
+
}): Promise<NormalizedProblem[]>;
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### `bundle`
|
|
201
|
+
|
|
202
|
+
Bundle an OpenAPI document from the file system.
|
|
203
|
+
|
|
204
|
+
```ts
|
|
205
|
+
async function bundle(options: {
|
|
206
|
+
// path to the OpenAPI document root
|
|
207
|
+
ref: string;
|
|
208
|
+
// config object
|
|
209
|
+
config: Config;
|
|
210
|
+
// whether to fully dereference $refs, resulting document won't have any $ref
|
|
211
|
+
// warning: this can produce circular objects
|
|
212
|
+
dereference?: boolean;
|
|
213
|
+
// whether to remove unused components (schemas, parameters, responses, etc)
|
|
214
|
+
removeUnusedComponents?: boolean;
|
|
215
|
+
// whether to keep $ref pointers to the http URLs and resolve only local fs $refs
|
|
216
|
+
keepUrlRefs?: boolean;
|
|
217
|
+
}): Promise<{
|
|
218
|
+
bundle: {
|
|
219
|
+
parsed: object; // OpenAPI document object as js object
|
|
220
|
+
};
|
|
221
|
+
problems: NormalizedProblem[]
|
|
222
|
+
fileDependencies
|
|
223
|
+
rootType
|
|
224
|
+
refTypes
|
|
225
|
+
visitorsData
|
|
226
|
+
|
|
227
|
+
}>;
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### `bundleFromString`
|
|
231
|
+
|
|
232
|
+
Bundle an OpenAPI document from a string.
|
|
233
|
+
|
|
234
|
+
```ts
|
|
235
|
+
async function bundleFromString(options: {
|
|
236
|
+
// OpenAPI document string
|
|
237
|
+
source: string;
|
|
238
|
+
// optional path to the OpenAPI document for resolving $refs and proper error locations
|
|
239
|
+
absoluteRef?: string;
|
|
240
|
+
// config object
|
|
241
|
+
config: Config;
|
|
242
|
+
// whether to fully dereference $refs, resulting document won't have any $ref
|
|
243
|
+
// warning: this can produce circular objects
|
|
244
|
+
dereference?: boolean;
|
|
245
|
+
// whether to remove unused components (schemas, parameters, responses, etc)
|
|
246
|
+
removeUnusedComponents?: boolean;
|
|
247
|
+
// whether to keep $ref pointers to the http URLs and resolve only local fs $refs
|
|
248
|
+
keepUrlRefs?: boolean;
|
|
249
|
+
}): Promise<{
|
|
250
|
+
bundle: {
|
|
251
|
+
parsed: object; // OpenAPI document object as js object
|
|
252
|
+
};
|
|
253
|
+
problems: NormalizedProblem[]
|
|
254
|
+
fileDependencies
|
|
255
|
+
rootType
|
|
256
|
+
refTypes
|
|
257
|
+
visitorsData
|
|
258
|
+
|
|
259
|
+
}>;
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### `stringifyYaml`
|
|
263
|
+
|
|
264
|
+
Helper function to stringify a javascript object to YAML.
|
|
265
|
+
|
|
266
|
+
```ts
|
|
267
|
+
function stringifyYaml(obj: object): string;
|
|
268
|
+
```
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.count = exports.name = void 0;
|
|
4
|
+
exports.setupAsync = setupAsync;
|
|
5
|
+
exports.measureAsync = measureAsync;
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
const lint_1 = require("../../lint");
|
|
9
|
+
const resolve_1 = require("../../resolve");
|
|
10
|
+
const utils_1 = require("../utils");
|
|
11
|
+
exports.name = 'Validate with 50 top-level rules';
|
|
12
|
+
exports.count = 10;
|
|
13
|
+
const rebillyDefinitionRef = (0, path_1.resolve)((0, path_1.join)(__dirname, 'rebilly.yaml'));
|
|
14
|
+
const rebillyDocument = (0, utils_1.parseYamlToDocument)((0, fs_1.readFileSync)(rebillyDefinitionRef, 'utf-8'), rebillyDefinitionRef);
|
|
15
|
+
const ruleset = {};
|
|
16
|
+
for (let i = 0; i < 50; i++) {
|
|
17
|
+
ruleset['rule-' + i] = () => {
|
|
18
|
+
let count = 0;
|
|
19
|
+
return {
|
|
20
|
+
Schema() {
|
|
21
|
+
count++;
|
|
22
|
+
if (count === -1)
|
|
23
|
+
throw new Error('Disable optimization');
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
let config;
|
|
29
|
+
async function setupAsync() {
|
|
30
|
+
config = await (0, utils_1.makeConfigForRuleset)(ruleset);
|
|
31
|
+
}
|
|
32
|
+
function measureAsync() {
|
|
33
|
+
return (0, lint_1.lintDocument)({
|
|
34
|
+
externalRefResolver: new resolve_1.BaseResolver(),
|
|
35
|
+
document: rebillyDocument,
|
|
36
|
+
config,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.count = exports.name = void 0;
|
|
4
|
+
exports.setupAsync = setupAsync;
|
|
5
|
+
exports.measureAsync = measureAsync;
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
const lint_1 = require("../../lint");
|
|
9
|
+
const resolve_1 = require("../../resolve");
|
|
10
|
+
const utils_1 = require("../utils");
|
|
11
|
+
exports.name = 'Validate with single nested rule';
|
|
12
|
+
exports.count = 10;
|
|
13
|
+
const rebillyDefinitionRef = (0, path_1.resolve)((0, path_1.join)(__dirname, 'rebilly.yaml'));
|
|
14
|
+
const rebillyDocument = (0, utils_1.parseYamlToDocument)((0, fs_1.readFileSync)(rebillyDefinitionRef, 'utf-8'), rebillyDefinitionRef);
|
|
15
|
+
const visitor = {
|
|
16
|
+
test: () => {
|
|
17
|
+
let count = 0;
|
|
18
|
+
return {
|
|
19
|
+
PathItem: {
|
|
20
|
+
Parameter() {
|
|
21
|
+
count++;
|
|
22
|
+
},
|
|
23
|
+
Operation: {
|
|
24
|
+
Parameter() {
|
|
25
|
+
count++;
|
|
26
|
+
if (count === -1)
|
|
27
|
+
throw new Error('Disable optimization');
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
let config;
|
|
35
|
+
async function setupAsync() {
|
|
36
|
+
config = await (0, utils_1.makeConfigForRuleset)(visitor);
|
|
37
|
+
}
|
|
38
|
+
function measureAsync() {
|
|
39
|
+
return (0, lint_1.lintDocument)({
|
|
40
|
+
externalRefResolver: new resolve_1.BaseResolver(),
|
|
41
|
+
document: rebillyDocument,
|
|
42
|
+
config,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.count = exports.name = void 0;
|
|
4
|
+
exports.setupAsync = setupAsync;
|
|
5
|
+
exports.measureAsync = measureAsync;
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
const lint_1 = require("../../lint");
|
|
9
|
+
const resolve_1 = require("../../resolve");
|
|
10
|
+
const utils_1 = require("../utils");
|
|
11
|
+
exports.name = 'Validate with no rules';
|
|
12
|
+
exports.count = 10;
|
|
13
|
+
const rebillyDefinitionRef = (0, path_1.resolve)((0, path_1.join)(__dirname, 'rebilly.yaml'));
|
|
14
|
+
const rebillyDocument = (0, utils_1.parseYamlToDocument)((0, fs_1.readFileSync)(rebillyDefinitionRef, 'utf-8'), rebillyDefinitionRef);
|
|
15
|
+
let config;
|
|
16
|
+
async function setupAsync() {
|
|
17
|
+
config = await (0, utils_1.makeConfigForRuleset)({});
|
|
18
|
+
}
|
|
19
|
+
function measureAsync() {
|
|
20
|
+
return (0, lint_1.lintDocument)({
|
|
21
|
+
externalRefResolver: new resolve_1.BaseResolver(),
|
|
22
|
+
document: rebillyDocument,
|
|
23
|
+
config,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.count = exports.name = void 0;
|
|
4
|
+
exports.setupAsync = setupAsync;
|
|
5
|
+
exports.measureAsync = measureAsync;
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
const lint_1 = require("../../lint");
|
|
9
|
+
const resolve_1 = require("../../resolve");
|
|
10
|
+
const utils_1 = require("../utils");
|
|
11
|
+
exports.name = 'Validate with single top-level rule and report';
|
|
12
|
+
exports.count = 10;
|
|
13
|
+
const rebillyDefinitionRef = (0, path_1.resolve)((0, path_1.join)(__dirname, 'rebilly.yaml'));
|
|
14
|
+
const rebillyDocument = (0, utils_1.parseYamlToDocument)((0, fs_1.readFileSync)(rebillyDefinitionRef, 'utf-8'), rebillyDefinitionRef);
|
|
15
|
+
let config;
|
|
16
|
+
async function setupAsync() {
|
|
17
|
+
config = await (0, utils_1.makeConfigForRuleset)({
|
|
18
|
+
test: () => {
|
|
19
|
+
return {
|
|
20
|
+
Schema(schema, ctx) {
|
|
21
|
+
if (schema.type === 'number') {
|
|
22
|
+
ctx.report({
|
|
23
|
+
message: 'type number is not allowed',
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
function measureAsync() {
|
|
32
|
+
return (0, lint_1.lintDocument)({
|
|
33
|
+
externalRefResolver: new resolve_1.BaseResolver(),
|
|
34
|
+
document: rebillyDocument,
|
|
35
|
+
config,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.count = exports.name = void 0;
|
|
4
|
+
exports.setupAsync = setupAsync;
|
|
5
|
+
exports.measureAsync = measureAsync;
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
const lint_1 = require("../../lint");
|
|
9
|
+
const resolve_1 = require("../../resolve");
|
|
10
|
+
const utils_1 = require("../utils");
|
|
11
|
+
exports.name = 'Validate with single top-level rule';
|
|
12
|
+
exports.count = 10;
|
|
13
|
+
const rebillyDefinitionRef = (0, path_1.resolve)((0, path_1.join)(__dirname, 'rebilly.yaml'));
|
|
14
|
+
const rebillyDocument = (0, utils_1.parseYamlToDocument)((0, fs_1.readFileSync)(rebillyDefinitionRef, 'utf-8'), rebillyDefinitionRef);
|
|
15
|
+
let config;
|
|
16
|
+
async function setupAsync() {
|
|
17
|
+
config = await (0, utils_1.makeConfigForRuleset)({
|
|
18
|
+
test: () => {
|
|
19
|
+
let count = 0;
|
|
20
|
+
return {
|
|
21
|
+
Schema() {
|
|
22
|
+
count++;
|
|
23
|
+
if (count === -1)
|
|
24
|
+
throw new Error('Disable optimization');
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
function measureAsync() {
|
|
31
|
+
return (0, lint_1.lintDocument)({
|
|
32
|
+
externalRefResolver: new resolve_1.BaseResolver(),
|
|
33
|
+
document: rebillyDocument,
|
|
34
|
+
config,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.count = exports.name = void 0;
|
|
4
|
+
exports.measureAsync = measureAsync;
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const lint_1 = require("../../lint");
|
|
8
|
+
const config_1 = require("../../config");
|
|
9
|
+
const resolve_1 = require("../../resolve");
|
|
10
|
+
const utils_1 = require("../utils");
|
|
11
|
+
exports.name = 'Validate with recommended rules';
|
|
12
|
+
exports.count = 10;
|
|
13
|
+
const rebillyDefinitionRef = (0, path_1.resolve)((0, path_1.join)(__dirname, 'rebilly.yaml'));
|
|
14
|
+
const rebillyDocument = (0, utils_1.parseYamlToDocument)((0, fs_1.readFileSync)(rebillyDefinitionRef, 'utf-8'), rebillyDefinitionRef);
|
|
15
|
+
function measureAsync() {
|
|
16
|
+
return (0, lint_1.lintDocument)({
|
|
17
|
+
externalRefResolver: new resolve_1.BaseResolver(),
|
|
18
|
+
document: rebillyDocument,
|
|
19
|
+
config: new config_1.StyleguideConfig((0, config_1.resolvePreset)('recommended', [config_1.defaultPlugin])),
|
|
20
|
+
});
|
|
21
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.count = exports.name = void 0;
|
|
4
|
+
exports.measureAsync = measureAsync;
|
|
5
|
+
const path = require("path");
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const resolve_1 = require("../../resolve");
|
|
8
|
+
const utils_1 = require("../utils");
|
|
9
|
+
const oas3_1 = require("../../types/oas3");
|
|
10
|
+
const types_1 = require("../../types");
|
|
11
|
+
exports.name = 'Resolve with no external refs';
|
|
12
|
+
exports.count = 10;
|
|
13
|
+
const rebillyDefinitionRef = path.resolve(path.join(__dirname, 'rebilly.yaml'));
|
|
14
|
+
const rebillyDocument = (0, utils_1.parseYamlToDocument)((0, fs_1.readFileSync)(rebillyDefinitionRef, 'utf-8'), rebillyDefinitionRef);
|
|
15
|
+
const externalRefResolver = new resolve_1.BaseResolver();
|
|
16
|
+
function measureAsync() {
|
|
17
|
+
return (0, resolve_1.resolveDocument)({
|
|
18
|
+
rootDocument: rebillyDocument,
|
|
19
|
+
externalRefResolver,
|
|
20
|
+
rootType: (0, types_1.normalizeTypes)(oas3_1.Oas3Types).Root,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { StyleguideConfig } from '../config';
|
|
2
|
+
import type { Document } from '../resolve';
|
|
3
|
+
import type { Oas3RuleSet } from '../oas-types';
|
|
4
|
+
import type { Plugin } from '../config/types';
|
|
5
|
+
export declare function parseYamlToDocument(body: string, absoluteRef?: string): Document;
|
|
6
|
+
export declare function makeConfigForRuleset(rules: Oas3RuleSet, plugin?: Partial<Plugin>): Promise<StyleguideConfig>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseYamlToDocument = parseYamlToDocument;
|
|
4
|
+
exports.makeConfigForRuleset = makeConfigForRuleset;
|
|
5
|
+
const js_yaml_1 = require("../js-yaml");
|
|
6
|
+
const resolve_1 = require("../resolve");
|
|
7
|
+
const config_1 = require("../config");
|
|
8
|
+
function parseYamlToDocument(body, absoluteRef = '') {
|
|
9
|
+
return {
|
|
10
|
+
source: new resolve_1.Source(absoluteRef, body),
|
|
11
|
+
parsed: (0, js_yaml_1.parseYaml)(body, { filename: absoluteRef }),
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
async function makeConfigForRuleset(rules, plugin) {
|
|
15
|
+
const rulesConf = {};
|
|
16
|
+
const ruleId = 'test';
|
|
17
|
+
Object.keys(rules).forEach((name) => {
|
|
18
|
+
rulesConf[`${ruleId}/${name}`] = 'error';
|
|
19
|
+
});
|
|
20
|
+
const extendConfigs = [
|
|
21
|
+
(await (0, config_1.resolvePlugins)([
|
|
22
|
+
{
|
|
23
|
+
...plugin,
|
|
24
|
+
id: ruleId,
|
|
25
|
+
rules: { oas3: rules },
|
|
26
|
+
},
|
|
27
|
+
])),
|
|
28
|
+
];
|
|
29
|
+
if (rules) {
|
|
30
|
+
extendConfigs.push({ rules });
|
|
31
|
+
}
|
|
32
|
+
const styleguide = (0, config_1.mergeExtends)(extendConfigs);
|
|
33
|
+
return new config_1.StyleguideConfig(styleguide);
|
|
34
|
+
}
|
package/lib/bundle.d.ts
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { BaseResolver } from './resolve';
|
|
2
|
+
import { SpecMajorVersion } from './oas-types';
|
|
3
|
+
import type { NormalizedNodeType, NodeType } from './types';
|
|
4
|
+
import type { NormalizedProblem } from './walk';
|
|
5
|
+
import type { Config, StyleguideConfig } from './config';
|
|
6
|
+
import type { Document, ResolvedRefMap } from './resolve';
|
|
7
|
+
import type { CollectFn } from './utils';
|
|
8
|
+
export declare enum OasVersion {
|
|
9
|
+
Version2 = "oas2",
|
|
10
|
+
Version3_0 = "oas3_0",
|
|
11
|
+
Version3_1 = "oas3_1"
|
|
12
|
+
}
|
|
13
|
+
export type BundleOptions = {
|
|
14
|
+
externalRefResolver?: BaseResolver;
|
|
15
|
+
config: Config;
|
|
16
|
+
dereference?: boolean;
|
|
17
|
+
base?: string | null;
|
|
18
|
+
skipRedoclyRegistryRefs?: boolean;
|
|
19
|
+
removeUnusedComponents?: boolean;
|
|
20
|
+
keepUrlRefs?: boolean;
|
|
21
|
+
};
|
|
22
|
+
export declare function bundleConfig(document: Document, resolvedRefMap: ResolvedRefMap): Promise<any>;
|
|
23
|
+
export declare function bundle(opts: {
|
|
24
|
+
ref?: string;
|
|
25
|
+
doc?: Document;
|
|
26
|
+
collectSpecData?: CollectFn;
|
|
27
|
+
} & BundleOptions): Promise<BundleResult>;
|
|
28
|
+
export declare function bundleFromString(opts: {
|
|
29
|
+
source: string;
|
|
30
|
+
absoluteRef?: string;
|
|
31
|
+
} & BundleOptions): Promise<BundleResult>;
|
|
32
|
+
export type BundleResult = {
|
|
33
|
+
bundle: Document;
|
|
34
|
+
problems: NormalizedProblem[];
|
|
35
|
+
fileDependencies: Set<string>;
|
|
36
|
+
rootType: NormalizedNodeType;
|
|
37
|
+
refTypes?: Map<string, NormalizedNodeType>;
|
|
38
|
+
visitorsData: Record<string, Record<string, unknown>>;
|
|
39
|
+
};
|
|
40
|
+
export declare function bundleDocument(opts: {
|
|
41
|
+
document: Document;
|
|
42
|
+
config: StyleguideConfig;
|
|
43
|
+
customTypes?: Record<string, NodeType>;
|
|
44
|
+
externalRefResolver: BaseResolver;
|
|
45
|
+
dereference?: boolean;
|
|
46
|
+
skipRedoclyRegistryRefs?: boolean;
|
|
47
|
+
removeUnusedComponents?: boolean;
|
|
48
|
+
keepUrlRefs?: boolean;
|
|
49
|
+
}): Promise<BundleResult>;
|
|
50
|
+
export declare function mapTypeToComponent(typeName: string, version: SpecMajorVersion): "definitions" | "links" | "responses" | "parameters" | "examples" | "headers" | "schemas" | "requestBodies" | "securitySchemes" | "callbacks" | null;
|