@redocly/openapi-core 1.18.1 → 1.20.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/CHANGELOG.md +22 -0
- package/__tests__/utils.ts +14 -7
- package/lib/benchmark/benches/lint-with-many-rules.bench.d.ts +1 -0
- package/lib/benchmark/benches/lint-with-many-rules.bench.js +7 -3
- package/lib/benchmark/benches/lint-with-nested-rule.bench.d.ts +1 -0
- package/lib/benchmark/benches/lint-with-nested-rule.bench.js +7 -3
- package/lib/benchmark/benches/lint-with-no-rules.bench.d.ts +1 -0
- package/lib/benchmark/benches/lint-with-no-rules.bench.js +7 -3
- package/lib/benchmark/benches/lint-with-top-level-rule-report.bench.d.ts +1 -0
- package/lib/benchmark/benches/lint-with-top-level-rule-report.bench.js +19 -15
- package/lib/benchmark/benches/lint-with-top-level-rule.bench.d.ts +1 -0
- package/lib/benchmark/benches/lint-with-top-level-rule.bench.js +18 -14
- package/lib/benchmark/benches/recommended-oas3.bench.js +2 -2
- package/lib/benchmark/benches/resolve-with-no-external.bench.js +2 -2
- package/lib/benchmark/utils.d.ts +3 -3
- package/lib/benchmark/utils.js +10 -7
- package/lib/bundle.d.ts +2 -2
- package/lib/bundle.js +127 -120
- package/lib/config/all.js +13 -1
- package/lib/config/builtIn.js +18 -17
- package/lib/config/config-resolvers.d.ts +1 -1
- package/lib/config/config-resolvers.js +241 -158
- package/lib/config/config.d.ts +4 -3
- package/lib/config/config.js +53 -34
- package/lib/config/load.d.ts +1 -1
- package/lib/config/load.js +105 -117
- package/lib/config/minimal.js +13 -0
- package/lib/config/recommended-strict.js +14 -1
- package/lib/config/recommended.js +14 -1
- package/lib/config/rules.d.ts +3 -3
- package/lib/config/rules.js +1 -2
- package/lib/config/types.d.ts +17 -4
- package/lib/config/utils.d.ts +3 -1
- package/lib/config/utils.js +78 -49
- 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 +1 -1
- package/lib/decorators/common/filters/filter-helper.js +2 -3
- package/lib/decorators/common/filters/filter-in.d.ts +1 -1
- package/lib/decorators/common/filters/filter-in.js +1 -1
- package/lib/decorators/common/filters/filter-out.d.ts +1 -1
- package/lib/decorators/common/filters/filter-out.js +1 -1
- package/lib/decorators/common/info-description-override.d.ts +1 -1
- package/lib/decorators/common/info-override.d.ts +1 -1
- package/lib/decorators/common/info-override.js +1 -12
- package/lib/decorators/common/media-type-examples-override.d.ts +1 -1
- package/lib/decorators/common/media-type-examples-override.js +8 -2
- package/lib/decorators/common/operation-description-override.d.ts +1 -1
- package/lib/decorators/common/registry-dependencies.d.ts +1 -1
- package/lib/decorators/common/remove-x-internal.d.ts +1 -1
- package/lib/decorators/common/remove-x-internal.js +4 -5
- package/lib/decorators/common/tag-description-override.d.ts +1 -1
- package/lib/decorators/oas2/index.d.ts +1 -1
- package/lib/decorators/oas2/remove-unused-components.js +1 -2
- package/lib/decorators/oas3/index.d.ts +1 -1
- package/lib/decorators/oas3/remove-unused-components.js +1 -2
- package/lib/env.d.ts +0 -1
- package/lib/env.js +1 -1
- package/lib/format/codeframes.d.ts +1 -1
- package/lib/format/codeframes.js +10 -8
- package/lib/format/format.d.ts +1 -1
- package/lib/format/format.js +24 -16
- package/lib/index.d.ts +2 -1
- package/lib/index.js +6 -4
- package/lib/js-yaml/index.d.ts +1 -1
- package/lib/js-yaml/index.js +1 -1
- package/lib/lint.d.ts +3 -1
- package/lib/lint.js +92 -99
- package/lib/logger.js +2 -2
- package/lib/oas-types.d.ts +9 -5
- package/lib/oas-types.js +22 -12
- package/lib/redocly/domains.d.ts +1 -1
- package/lib/redocly/domains.js +6 -6
- package/lib/redocly/index.d.ts +1 -1
- package/lib/redocly/index.js +60 -73
- package/lib/redocly/registry-api.js +64 -82
- package/lib/ref-utils.d.ts +2 -2
- package/lib/ref-utils.js +14 -13
- package/lib/resolve.d.ts +2 -2
- package/lib/resolve.js +186 -205
- package/lib/rules/ajv.d.ts +1 -1
- package/lib/rules/ajv.js +10 -8
- package/lib/rules/arazzo/index.js +2 -0
- package/lib/rules/async2/channels-kebab-case.d.ts +1 -1
- package/lib/rules/async2/index.js +2 -0
- package/lib/rules/async2/no-channel-trailing-slash.d.ts +1 -1
- 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 +24 -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 +2 -2
- package/lib/rules/common/assertions/asserts.js +5 -5
- package/lib/rules/common/assertions/index.d.ts +4 -4
- package/lib/rules/common/assertions/utils.d.ts +1 -1
- package/lib/rules/common/assertions/utils.js +43 -28
- package/lib/rules/common/info-contact.d.ts +1 -1
- 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 +1 -1
- package/lib/rules/common/info-license.d.ts +1 -1
- package/lib/rules/common/no-ambiguous-paths.d.ts +1 -1
- package/lib/rules/common/no-enum-type-mismatch.d.ts +1 -1
- package/lib/rules/common/no-http-verbs-in-paths.d.ts +1 -1
- package/lib/rules/common/no-identical-paths.d.ts +1 -1
- package/lib/rules/common/no-invalid-parameter-examples.js +1 -2
- package/lib/rules/common/no-invalid-schema-examples.js +1 -2
- package/lib/rules/common/no-path-trailing-slash.d.ts +1 -1
- package/lib/rules/common/no-required-schema-properties-undefined.d.ts +1 -1
- package/lib/rules/common/no-required-schema-properties-undefined.js +1 -2
- package/lib/rules/common/operation-2xx-response.d.ts +1 -1
- package/lib/rules/common/operation-4xx-response.d.ts +1 -1
- package/lib/rules/common/operation-description.d.ts +1 -1
- package/lib/rules/common/operation-operationId-unique.d.ts +1 -1
- package/lib/rules/common/operation-operationId-url-safe.d.ts +1 -1
- package/lib/rules/common/operation-operationId-url-safe.js +1 -0
- package/lib/rules/common/operation-operationId.d.ts +1 -1
- package/lib/rules/common/operation-parameters-unique.d.ts +1 -1
- package/lib/rules/common/operation-singular-tag.d.ts +1 -1
- package/lib/rules/common/operation-summary.d.ts +1 -1
- package/lib/rules/common/operation-tag-defined.d.ts +1 -1
- package/lib/rules/common/operation-tag-defined.js +1 -2
- package/lib/rules/common/parameter-description.d.ts +1 -1
- package/lib/rules/common/path-declaration-must-exist.d.ts +1 -1
- package/lib/rules/common/path-excludes-patterns.d.ts +1 -1
- package/lib/rules/common/path-http-verbs-order.d.ts +1 -1
- package/lib/rules/common/path-http-verbs-order.js +1 -1
- package/lib/rules/common/path-not-include-query.d.ts +1 -1
- package/lib/rules/common/path-params-defined.d.ts +1 -1
- package/lib/rules/common/path-segment-plural.d.ts +1 -1
- package/lib/rules/common/paths-kebab-case.d.ts +1 -1
- package/lib/rules/common/required-string-property-missing-min-length.d.ts +1 -1
- package/lib/rules/common/required-string-property-missing-min-length.js +2 -2
- package/lib/rules/common/response-contains-header.d.ts +1 -1
- package/lib/rules/common/response-contains-header.js +2 -2
- package/lib/rules/common/security-defined.d.ts +1 -1
- package/lib/rules/common/security-defined.js +3 -7
- package/lib/rules/common/spec-strict-refs.d.ts +1 -1
- package/lib/rules/common/spec.d.ts +2 -2
- package/lib/rules/common/spec.js +6 -7
- package/lib/rules/common/tag-description.d.ts +1 -1
- package/lib/rules/common/tags-alphabetical.d.ts +1 -1
- package/lib/rules/no-unresolved-refs.d.ts +3 -3
- package/lib/rules/no-unresolved-refs.js +3 -4
- package/lib/rules/oas2/boolean-parameter-prefixes.d.ts +1 -1
- package/lib/rules/oas2/index.d.ts +1 -1
- package/lib/rules/oas2/index.js +2 -0
- package/lib/rules/oas2/response-contains-property.d.ts +1 -1
- package/lib/rules/oas2/response-contains-property.js +1 -2
- package/lib/rules/oas3/array-parameter-serialization.d.ts +1 -1
- package/lib/rules/oas3/array-parameter-serialization.js +1 -2
- package/lib/rules/oas3/boolean-parameter-prefixes.d.ts +1 -1
- package/lib/rules/oas3/component-name-unique.d.ts +1 -1
- package/lib/rules/oas3/component-name-unique.js +2 -4
- package/lib/rules/oas3/index.d.ts +1 -1
- package/lib/rules/oas3/index.js +2 -0
- package/lib/rules/oas3/no-empty-servers.d.ts +1 -1
- package/lib/rules/oas3/no-example-value-and-externalValue.d.ts +1 -1
- package/lib/rules/oas3/no-invalid-media-type-examples.d.ts +1 -1
- package/lib/rules/oas3/no-invalid-media-type-examples.js +1 -2
- package/lib/rules/oas3/no-server-example.com.d.ts +1 -1
- package/lib/rules/oas3/no-server-example.com.js +1 -0
- package/lib/rules/oas3/no-server-trailing-slash.d.ts +1 -1
- package/lib/rules/oas3/no-server-variables-empty-enum.d.ts +1 -1
- package/lib/rules/oas3/no-server-variables-empty-enum.js +1 -2
- package/lib/rules/oas3/no-undefined-server-variable.d.ts +1 -1
- package/lib/rules/oas3/no-undefined-server-variable.js +2 -3
- package/lib/rules/oas3/no-unused-components.d.ts +1 -1
- package/lib/rules/oas3/no-unused-components.js +1 -2
- package/lib/rules/oas3/response-contains-property.d.ts +1 -1
- package/lib/rules/oas3/response-contains-property.js +1 -2
- package/lib/rules/oas3/spec-components-invalid-map-name.d.ts +1 -1
- package/lib/rules/other/stats.d.ts +3 -3
- package/lib/rules/other/stats.js +5 -3
- package/lib/rules/spot/parameters-no-body-inside-in.d.ts +2 -0
- package/lib/rules/spot/parameters-no-body-inside-in.js +18 -0
- package/lib/rules/utils.d.ts +4 -2
- package/lib/rules/utils.js +41 -13
- package/lib/types/arazzo.d.ts +1 -2275
- package/lib/types/arazzo.js +246 -309
- package/lib/types/asyncapi2.d.ts +17 -0
- package/lib/types/{asyncapi.js → asyncapi2.js} +59 -53
- package/lib/types/asyncapi3.d.ts +2 -0
- package/lib/types/asyncapi3.js +347 -0
- package/lib/types/index.js +19 -10
- package/lib/types/json-schema-adapter.d.ts +1 -1
- package/lib/types/json-schema-adapter.js +4 -18
- package/lib/types/oas2.js +6 -6
- package/lib/types/oas3.d.ts +4 -0
- package/lib/types/oas3.js +19 -19
- package/lib/types/oas3_1.d.ts +3 -0
- package/lib/types/oas3_1.js +20 -14
- package/lib/types/redocly-yaml.d.ts +8 -6
- package/lib/types/redocly-yaml.js +135 -36
- package/lib/typings/arazzo.d.ts +145 -27
- package/lib/typings/asyncapi3.d.ts +53 -0
- package/lib/typings/asyncapi3.js +2 -0
- package/lib/typings/common.d.ts +1 -1
- package/lib/typings/swagger.d.ts +2 -2
- package/lib/utils.d.ts +4 -3
- package/lib/utils.js +55 -72
- package/lib/visitors.d.ts +29 -1
- package/lib/visitors.js +21 -8
- package/lib/walk.d.ts +3 -3
- package/lib/walk.js +30 -23
- package/package.json +3 -3
- package/src/__tests__/bundle.test.ts +144 -2
- package/src/__tests__/lint.test.ts +29 -21
- package/src/__tests__/walk.test.ts +25 -25
- package/src/benchmark/benches/lint-with-many-rules.bench.ts +7 -1
- package/src/benchmark/benches/lint-with-nested-rule.bench.ts +7 -1
- package/src/benchmark/benches/lint-with-no-rules.bench.ts +8 -1
- package/src/benchmark/benches/lint-with-top-level-rule-report.bench.ts +18 -13
- package/src/benchmark/benches/lint-with-top-level-rule.bench.ts +17 -11
- package/src/benchmark/fork.js +4 -0
- package/src/benchmark/utils.ts +6 -5
- package/src/bundle.ts +19 -4
- package/src/config/__tests__/__snapshots__/config-resolvers.test.ts.snap +32 -2
- package/src/config/__tests__/__snapshots__/config.test.ts.snap +24 -0
- package/src/config/__tests__/config-resolvers.test.ts +82 -0
- package/src/config/__tests__/config.test.ts +11 -0
- package/src/config/__tests__/fixtures/resolve-config/local-config-with-commonjs-export-function.yaml +2 -0
- package/src/config/__tests__/fixtures/resolve-config/local-config-with-esm.yaml +2 -0
- package/src/config/__tests__/fixtures/resolve-config/plugin-esm.mjs +10 -0
- package/src/config/__tests__/fixtures/resolve-config/plugin-with-export-function.cjs +10 -0
- package/src/config/__tests__/resolve-plugins.test.ts +4 -1
- package/src/config/all.ts +13 -1
- package/src/config/builtIn.ts +9 -8
- package/src/config/config-resolvers.ts +92 -21
- package/src/config/config.ts +31 -13
- package/src/config/load.ts +2 -2
- package/src/config/minimal.ts +13 -0
- package/src/config/recommended-strict.ts +14 -1
- package/src/config/recommended.ts +14 -1
- package/src/config/rules.ts +12 -4
- package/src/config/types.ts +34 -5
- package/src/config/utils.ts +28 -2
- package/src/decorators/__tests__/filter-in.test.ts +29 -26
- package/src/decorators/__tests__/filter-out.test.ts +32 -23
- package/src/decorators/__tests__/media-type-examples-override.test.ts +45 -45
- package/src/decorators/__tests__/remove-x-internal.test.ts +8 -5
- package/src/decorators/async3/index.ts +1 -0
- package/src/decorators/common/filters/filter-helper.ts +2 -1
- package/src/decorators/common/filters/filter-in.ts +2 -1
- package/src/decorators/common/filters/filter-out.ts +2 -1
- package/src/decorators/common/info-description-override.ts +3 -2
- package/src/decorators/common/info-override.ts +1 -1
- package/src/decorators/common/media-type-examples-override.ts +4 -3
- package/src/decorators/common/operation-description-override.ts +5 -4
- package/src/decorators/common/registry-dependencies.ts +2 -2
- package/src/decorators/common/remove-x-internal.ts +5 -4
- package/src/decorators/common/tag-description-override.ts +3 -2
- package/src/decorators/oas2/__tests__/remove-unused-components.test.ts +3 -3
- package/src/decorators/oas2/index.ts +2 -1
- package/src/decorators/oas2/remove-unused-components.ts +1 -1
- package/src/decorators/oas3/__tests__/remove-unused-components.test.ts +4 -4
- package/src/decorators/oas3/index.ts +2 -1
- package/src/decorators/oas3/remove-unused-components.ts +1 -1
- package/src/format/codeframes.ts +2 -1
- package/src/format/format.ts +9 -4
- package/src/index.ts +2 -1
- package/src/js-yaml/index.ts +3 -1
- package/src/lint.ts +28 -4
- package/src/logger.ts +2 -2
- package/src/oas-types.ts +41 -22
- package/src/redocly/domains.ts +1 -1
- package/src/redocly/index.ts +3 -3
- package/src/redocly/registry-api.ts +5 -3
- package/src/ref-utils.ts +4 -2
- package/src/resolve.ts +6 -4
- package/src/rules/__tests__/no-unresolved-refs.test.ts +21 -7
- package/src/rules/ajv.ts +2 -1
- package/src/rules/arazzo/__tests__/parameters-no-body-inside-in.test.ts +76 -0
- package/src/rules/arazzo/index.ts +6 -3
- package/src/rules/async2/__tests__/channels-kebab-case.test.ts +9 -5
- package/src/rules/async2/__tests__/no-channel-trailing-slash.test.ts +3 -3
- package/src/rules/async2/channels-kebab-case.ts +2 -2
- package/src/rules/async2/index.ts +9 -6
- package/src/rules/async2/no-channel-trailing-slash.ts +2 -2
- package/src/rules/async3/__tests__/channels-kebab-case.test.ts +145 -0
- package/src/rules/async3/__tests__/no-channel-trailing-slash.test.ts +96 -0
- package/src/rules/async3/channels-kebab-case.ts +19 -0
- package/src/rules/async3/index.ts +26 -0
- package/src/rules/async3/no-channel-trailing-slash.ts +16 -0
- package/src/rules/common/__tests__/info-license-strict.test.ts +141 -0
- package/src/rules/common/__tests__/info-license.test.ts +2 -2
- package/src/rules/common/__tests__/license-url.test.ts +2 -2
- package/src/rules/common/__tests__/no-ambiguous-paths.test.ts +1 -1
- package/src/rules/common/__tests__/no-enum-type-mismatch.test.ts +5 -5
- package/src/rules/common/__tests__/no-identical-paths.test.ts +1 -1
- package/src/rules/common/__tests__/no-invalid-parameter-examples.test.ts +1 -1
- package/src/rules/common/__tests__/no-invalid-schema-examples.test.ts +1 -1
- package/src/rules/common/__tests__/no-path-trailing-slash.test.ts +4 -4
- package/src/rules/common/__tests__/no-required-schema-properties-undefined.test.ts +11 -11
- package/src/rules/common/__tests__/operation-2xx-response.test.ts +8 -6
- package/src/rules/common/__tests__/operation-4xx-response.test.ts +9 -7
- package/src/rules/common/__tests__/operation-operationId-unique.test.ts +2 -2
- package/src/rules/common/__tests__/operation-operationId-url-safe.test.ts +1 -1
- package/src/rules/common/__tests__/operation-parameters-unique.test.ts +4 -4
- package/src/rules/common/__tests__/operation-singular-tag.test.ts +2 -2
- package/src/rules/common/__tests__/path-http-verbs-order.test.ts +2 -2
- package/src/rules/common/__tests__/path-not-include-query.test.ts +2 -2
- package/src/rules/common/__tests__/path-params-defined.test.ts +5 -5
- package/src/rules/common/__tests__/paths-kebab-case.test.ts +6 -4
- package/src/rules/common/__tests__/scalar-property-missing-example.test.ts +8 -8
- package/src/rules/common/__tests__/security-defined.test.ts +14 -8
- package/src/rules/common/__tests__/spec-strict-refs.test.ts +1 -1
- package/src/rules/common/__tests__/spec.test.ts +10 -10
- package/src/rules/common/__tests__/tag-description.test.ts +2 -2
- package/src/rules/common/__tests__/tags-alphabetical.test.ts +6 -4
- package/src/rules/common/assertions/asserts.ts +5 -9
- package/src/rules/common/assertions/index.ts +12 -4
- package/src/rules/common/assertions/utils.ts +4 -2
- package/src/rules/common/info-contact.ts +2 -1
- package/src/rules/common/info-license-strict.ts +24 -0
- package/src/rules/common/info-license-url.ts +2 -1
- package/src/rules/common/info-license.ts +2 -1
- package/src/rules/common/no-ambiguous-paths.ts +4 -4
- package/src/rules/common/no-enum-type-mismatch.ts +5 -4
- package/src/rules/common/no-http-verbs-in-paths.ts +5 -4
- package/src/rules/common/no-identical-paths.ts +4 -4
- package/src/rules/common/no-invalid-parameter-examples.ts +3 -2
- package/src/rules/common/no-path-trailing-slash.ts +2 -2
- package/src/rules/common/no-required-schema-properties-undefined.ts +5 -4
- package/src/rules/common/operation-2xx-response.ts +3 -2
- package/src/rules/common/operation-4xx-response.ts +3 -2
- package/src/rules/common/operation-description.ts +5 -4
- package/src/rules/common/operation-operationId-unique.ts +4 -4
- package/src/rules/common/operation-operationId-url-safe.ts +5 -4
- package/src/rules/common/operation-operationId.ts +5 -4
- package/src/rules/common/operation-parameters-unique.ts +4 -4
- package/src/rules/common/operation-singular-tag.ts +4 -4
- package/src/rules/common/operation-summary.ts +5 -4
- package/src/rules/common/operation-tag-defined.ts +4 -4
- package/src/rules/common/parameter-description.ts +4 -4
- package/src/rules/common/path-declaration-must-exist.ts +2 -2
- package/src/rules/common/path-excludes-patterns.ts +4 -4
- package/src/rules/common/path-http-verbs-order.ts +4 -4
- package/src/rules/common/path-not-include-query.ts +2 -2
- package/src/rules/common/path-params-defined.ts +4 -4
- package/src/rules/common/path-segment-plural.ts +3 -2
- package/src/rules/common/paths-kebab-case.ts +2 -2
- package/src/rules/common/required-string-property-missing-min-length.ts +4 -4
- package/src/rules/common/response-contains-header.ts +5 -4
- package/src/rules/common/scalar-property-missing-example.ts +2 -1
- package/src/rules/common/security-defined.ts +5 -5
- package/src/rules/common/spec-strict-refs.ts +2 -1
- package/src/rules/common/spec.ts +4 -3
- package/src/rules/common/tag-description.ts +2 -1
- package/src/rules/common/tags-alphabetical.ts +4 -4
- package/src/rules/no-unresolved-refs.ts +4 -3
- package/src/rules/oas2/__tests__/boolean-parameter-prefixes.test.ts +7 -5
- package/src/rules/oas2/__tests__/response-contains-header.test.ts +14 -8
- package/src/rules/oas2/__tests__/response-contains-property.test.ts +14 -8
- package/src/rules/oas2/__tests__/spec/referenceableScalars.test.ts +3 -1
- package/src/rules/oas2/boolean-parameter-prefixes.ts +1 -1
- package/src/rules/oas2/index.ts +8 -6
- package/src/rules/oas2/request-mime-type.ts +2 -1
- package/src/rules/oas2/response-contains-property.ts +3 -2
- package/src/rules/oas2/response-mime-type.ts +2 -1
- package/src/rules/oas3/__tests__/array-parameter-serialization.test.ts +18 -6
- package/src/rules/oas3/__tests__/boolean-parameter-prefixes.test.ts +7 -5
- package/src/rules/oas3/__tests__/no-empty-enum-servers.com.test.ts +6 -6
- package/src/rules/oas3/__tests__/no-example-value-and-externalValue.test.ts +2 -2
- package/src/rules/oas3/__tests__/no-invalid-media-type-examples.test.ts +34 -24
- package/src/rules/oas3/__tests__/no-server-example.com.test.ts +3 -3
- package/src/rules/oas3/__tests__/no-server-trailing-slash.test.ts +3 -3
- package/src/rules/oas3/__tests__/no-unused-components.test.ts +1 -1
- package/src/rules/oas3/__tests__/operation-4xx-problem-details-rfc7807.test.ts +3 -3
- package/src/rules/oas3/__tests__/response-contains-header.test.ts +34 -22
- package/src/rules/oas3/__tests__/response-contains-property.test.ts +34 -20
- package/src/rules/oas3/__tests__/spec/spec.test.ts +12 -3
- package/src/rules/oas3/__tests__/spec-components-invalid-map-name.test.ts +9 -3
- package/src/rules/oas3/__tests__/utils/lint-document-for-test.ts +1 -1
- package/src/rules/oas3/array-parameter-serialization.ts +3 -2
- package/src/rules/oas3/boolean-parameter-prefixes.ts +1 -1
- package/src/rules/oas3/component-name-unique.ts +3 -3
- package/src/rules/oas3/index.ts +42 -38
- package/src/rules/oas3/no-empty-servers.ts +1 -1
- package/src/rules/oas3/no-example-value-and-externalValue.ts +1 -1
- package/src/rules/oas3/no-invalid-media-type-examples.ts +6 -4
- package/src/rules/oas3/no-server-example.com.ts +2 -1
- package/src/rules/oas3/no-server-trailing-slash.ts +1 -1
- package/src/rules/oas3/no-server-variables-empty-enum.ts +2 -2
- package/src/rules/oas3/no-undefined-server-variable.ts +1 -1
- package/src/rules/oas3/no-unused-components.ts +2 -2
- package/src/rules/oas3/operation-4xx-problem-details-rfc7807.ts +2 -1
- package/src/rules/oas3/request-mime-type.ts +2 -1
- package/src/rules/oas3/response-contains-property.ts +3 -2
- package/src/rules/oas3/response-mime-type.ts +2 -1
- package/src/rules/oas3/spec-components-invalid-map-name.ts +3 -3
- package/src/rules/other/stats.ts +8 -6
- package/src/rules/spot/parameters-no-body-inside-in.ts +17 -0
- package/src/rules/utils.ts +41 -4
- package/src/types/arazzo.ts +257 -334
- package/src/types/{asyncapi.ts → asyncapi2.ts} +41 -35
- package/src/types/asyncapi3.ts +383 -0
- package/src/types/json-schema-adapter.ts +2 -2
- package/src/types/oas3.ts +4 -4
- package/src/types/oas3_1.ts +5 -4
- package/src/types/redocly-yaml.ts +21 -4
- package/src/typings/arazzo.ts +169 -41
- package/src/typings/asyncapi3.ts +61 -0
- package/src/typings/common.ts +1 -0
- package/src/typings/swagger.ts +2 -2
- package/src/utils.ts +5 -3
- package/src/visitors.ts +58 -1
- package/src/walk.ts +3 -3
- package/tsconfig.tsbuildinfo +1 -1
- package/lib/types/asyncapi.d.ts +0 -2
package/src/config/utils.ts
CHANGED
|
@@ -6,13 +6,15 @@ import {
|
|
|
6
6
|
showWarningForDeprecatedField,
|
|
7
7
|
} from '../utils';
|
|
8
8
|
import { Config } from './config';
|
|
9
|
+
import { logger, colorize } from '../logger';
|
|
10
|
+
|
|
9
11
|
import type {
|
|
10
12
|
Api,
|
|
11
13
|
DeprecatedInApi,
|
|
12
14
|
DeprecatedInRawConfig,
|
|
15
|
+
ImportedPlugin,
|
|
13
16
|
FlatApi,
|
|
14
17
|
FlatRawConfig,
|
|
15
|
-
Plugin,
|
|
16
18
|
RawConfig,
|
|
17
19
|
RawResolveConfig,
|
|
18
20
|
ResolveConfig,
|
|
@@ -20,8 +22,9 @@ import type {
|
|
|
20
22
|
RulesFields,
|
|
21
23
|
StyleguideRawConfig,
|
|
22
24
|
ThemeConfig,
|
|
25
|
+
Plugin,
|
|
26
|
+
PluginCreator,
|
|
23
27
|
} from './types';
|
|
24
|
-
import { logger, colorize } from '../logger';
|
|
25
28
|
|
|
26
29
|
export function parsePresetName(presetName: string): { pluginId: string; configName: string } {
|
|
27
30
|
if (presetName.indexOf('/') > -1) {
|
|
@@ -56,6 +59,7 @@ function extractFlatConfig<
|
|
|
56
59
|
oas3_0Rules,
|
|
57
60
|
oas3_1Rules,
|
|
58
61
|
async2Rules,
|
|
62
|
+
async3Rules,
|
|
59
63
|
arazzoRules,
|
|
60
64
|
|
|
61
65
|
preprocessors,
|
|
@@ -63,6 +67,7 @@ function extractFlatConfig<
|
|
|
63
67
|
oas3_0Preprocessors,
|
|
64
68
|
oas3_1Preprocessors,
|
|
65
69
|
async2Preprocessors,
|
|
70
|
+
async3Preprocessors,
|
|
66
71
|
arazzoPreprocessors,
|
|
67
72
|
|
|
68
73
|
decorators,
|
|
@@ -70,6 +75,7 @@ function extractFlatConfig<
|
|
|
70
75
|
oas3_0Decorators,
|
|
71
76
|
oas3_1Decorators,
|
|
72
77
|
async2Decorators,
|
|
78
|
+
async3Decorators,
|
|
73
79
|
arazzoDecorators,
|
|
74
80
|
|
|
75
81
|
...rawConfigRest
|
|
@@ -86,6 +92,7 @@ function extractFlatConfig<
|
|
|
86
92
|
oas3_0Rules,
|
|
87
93
|
oas3_1Rules,
|
|
88
94
|
async2Rules,
|
|
95
|
+
async3Rules,
|
|
89
96
|
arazzoRules,
|
|
90
97
|
|
|
91
98
|
preprocessors,
|
|
@@ -93,6 +100,7 @@ function extractFlatConfig<
|
|
|
93
100
|
oas3_0Preprocessors,
|
|
94
101
|
oas3_1Preprocessors,
|
|
95
102
|
async2Preprocessors,
|
|
103
|
+
async3Preprocessors,
|
|
96
104
|
arazzoPreprocessors,
|
|
97
105
|
|
|
98
106
|
decorators,
|
|
@@ -100,6 +108,7 @@ function extractFlatConfig<
|
|
|
100
108
|
oas3_0Decorators,
|
|
101
109
|
oas3_1Decorators,
|
|
102
110
|
async2Decorators,
|
|
111
|
+
async3Decorators,
|
|
103
112
|
arazzoDecorators,
|
|
104
113
|
|
|
105
114
|
doNotResolveExamples: rawConfigRest.resolve?.doNotResolveExamples,
|
|
@@ -158,6 +167,7 @@ export function mergeExtends(rulesConfList: ResolvedStyleguideConfig[]) {
|
|
|
158
167
|
oas3_0Rules: {},
|
|
159
168
|
oas3_1Rules: {},
|
|
160
169
|
async2Rules: {},
|
|
170
|
+
async3Rules: {},
|
|
161
171
|
arazzoRules: {},
|
|
162
172
|
|
|
163
173
|
preprocessors: {},
|
|
@@ -165,6 +175,7 @@ export function mergeExtends(rulesConfList: ResolvedStyleguideConfig[]) {
|
|
|
165
175
|
oas3_0Preprocessors: {},
|
|
166
176
|
oas3_1Preprocessors: {},
|
|
167
177
|
async2Preprocessors: {},
|
|
178
|
+
async3Preprocessors: {},
|
|
168
179
|
arazzoPreprocessors: {},
|
|
169
180
|
|
|
170
181
|
decorators: {},
|
|
@@ -172,6 +183,7 @@ export function mergeExtends(rulesConfList: ResolvedStyleguideConfig[]) {
|
|
|
172
183
|
oas3_0Decorators: {},
|
|
173
184
|
oas3_1Decorators: {},
|
|
174
185
|
async2Decorators: {},
|
|
186
|
+
async3Decorators: {},
|
|
175
187
|
arazzoDecorators: {},
|
|
176
188
|
|
|
177
189
|
plugins: [],
|
|
@@ -195,6 +207,8 @@ export function mergeExtends(rulesConfList: ResolvedStyleguideConfig[]) {
|
|
|
195
207
|
assignExisting(result.oas3_1Rules, rulesConf.rules || {});
|
|
196
208
|
Object.assign(result.async2Rules, rulesConf.async2Rules);
|
|
197
209
|
assignExisting(result.async2Rules, rulesConf.rules || {});
|
|
210
|
+
Object.assign(result.async3Rules, rulesConf.async3Rules);
|
|
211
|
+
assignExisting(result.async3Rules, rulesConf.rules || {});
|
|
198
212
|
Object.assign(result.arazzoRules, rulesConf.arazzoRules);
|
|
199
213
|
assignExisting(result.arazzoRules, rulesConf.rules || {});
|
|
200
214
|
|
|
@@ -207,6 +221,8 @@ export function mergeExtends(rulesConfList: ResolvedStyleguideConfig[]) {
|
|
|
207
221
|
assignExisting(result.oas3_1Preprocessors, rulesConf.preprocessors || {});
|
|
208
222
|
Object.assign(result.async2Preprocessors, rulesConf.async2Preprocessors);
|
|
209
223
|
assignExisting(result.async2Preprocessors, rulesConf.preprocessors || {});
|
|
224
|
+
Object.assign(result.async3Preprocessors, rulesConf.async3Preprocessors);
|
|
225
|
+
assignExisting(result.async3Preprocessors, rulesConf.preprocessors || {});
|
|
210
226
|
Object.assign(result.arazzoPreprocessors, rulesConf.arazzoPreprocessors);
|
|
211
227
|
assignExisting(result.arazzoPreprocessors, rulesConf.preprocessors || {});
|
|
212
228
|
|
|
@@ -219,6 +235,8 @@ export function mergeExtends(rulesConfList: ResolvedStyleguideConfig[]) {
|
|
|
219
235
|
assignExisting(result.oas3_1Decorators, rulesConf.decorators || {});
|
|
220
236
|
Object.assign(result.async2Decorators, rulesConf.async2Decorators);
|
|
221
237
|
assignExisting(result.async2Decorators, rulesConf.decorators || {});
|
|
238
|
+
Object.assign(result.async3Decorators, rulesConf.async3Decorators);
|
|
239
|
+
assignExisting(result.async3Decorators, rulesConf.decorators || {});
|
|
222
240
|
Object.assign(result.arazzoDecorators, rulesConf.arazzoDecorators);
|
|
223
241
|
assignExisting(result.arazzoDecorators, rulesConf.decorators || {});
|
|
224
242
|
|
|
@@ -383,3 +401,11 @@ export class ConfigValidationError extends Error {}
|
|
|
383
401
|
export function deepCloneMapWithJSON<K, V>(originalMap: Map<K, V>): Map<K, V> {
|
|
384
402
|
return new Map(JSON.parse(JSON.stringify([...originalMap])));
|
|
385
403
|
}
|
|
404
|
+
|
|
405
|
+
export function isDeprecatedPluginFormat(plugin: ImportedPlugin | undefined): plugin is Plugin {
|
|
406
|
+
return plugin !== undefined && typeof plugin === 'object' && 'id' in plugin;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
export function isCommonJsPlugin(plugin: ImportedPlugin | undefined): plugin is PluginCreator {
|
|
410
|
+
return typeof plugin === 'function';
|
|
411
|
+
}
|
|
@@ -56,7 +56,10 @@ describe('oas3 filter-in', () => {
|
|
|
56
56
|
const { bundle: res } = await bundleDocument({
|
|
57
57
|
document: testDocument,
|
|
58
58
|
externalRefResolver: new BaseResolver(),
|
|
59
|
-
config: await makeConfig({
|
|
59
|
+
config: await makeConfig({
|
|
60
|
+
rules: {},
|
|
61
|
+
decorators: { 'filter-in': { value: 'public', property: 'x-access' } },
|
|
62
|
+
}),
|
|
60
63
|
});
|
|
61
64
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
62
65
|
openapi: 3.0.0
|
|
@@ -76,16 +79,16 @@ describe('oas3 filter-in', () => {
|
|
|
76
79
|
const { bundle: res } = await bundleDocument({
|
|
77
80
|
document: inputDoc,
|
|
78
81
|
externalRefResolver: new BaseResolver(),
|
|
79
|
-
config: await makeConfig(
|
|
80
|
-
{},
|
|
81
|
-
{
|
|
82
|
+
config: await makeConfig({
|
|
83
|
+
rules: {},
|
|
84
|
+
decorators: {
|
|
82
85
|
'filter-in': {
|
|
83
86
|
property: 'x-audience',
|
|
84
87
|
value: ['Public', 'Protected'],
|
|
85
88
|
matchStrategy: 'all',
|
|
86
89
|
},
|
|
87
|
-
}
|
|
88
|
-
),
|
|
90
|
+
},
|
|
91
|
+
}),
|
|
89
92
|
});
|
|
90
93
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
91
94
|
openapi: 3.0.0
|
|
@@ -130,16 +133,16 @@ describe('oas3 filter-in', () => {
|
|
|
130
133
|
const { bundle: res } = await bundleDocument({
|
|
131
134
|
document: testDoc,
|
|
132
135
|
externalRefResolver: new BaseResolver(),
|
|
133
|
-
config: await makeConfig(
|
|
134
|
-
{},
|
|
135
|
-
{
|
|
136
|
+
config: await makeConfig({
|
|
137
|
+
rules: {},
|
|
138
|
+
decorators: {
|
|
136
139
|
'filter-in': {
|
|
137
140
|
property: 'x-audience',
|
|
138
141
|
value: ['Public', 'Global'],
|
|
139
142
|
matchStrategy: 'any',
|
|
140
143
|
},
|
|
141
|
-
}
|
|
142
|
-
),
|
|
144
|
+
},
|
|
145
|
+
}),
|
|
143
146
|
});
|
|
144
147
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
145
148
|
openapi: 3.0.0
|
|
@@ -171,16 +174,16 @@ describe('oas3 filter-in', () => {
|
|
|
171
174
|
const { bundle: res } = await bundleDocument({
|
|
172
175
|
document: inputDoc,
|
|
173
176
|
externalRefResolver: new BaseResolver(),
|
|
174
|
-
config: await makeConfig(
|
|
175
|
-
{},
|
|
176
|
-
{
|
|
177
|
+
config: await makeConfig({
|
|
178
|
+
rules: {},
|
|
179
|
+
decorators: {
|
|
177
180
|
'filter-in': {
|
|
178
181
|
property: 'x-audience',
|
|
179
182
|
value: 'non-existing-audience',
|
|
180
183
|
matchStrategy: 'any',
|
|
181
184
|
},
|
|
182
|
-
}
|
|
183
|
-
),
|
|
185
|
+
},
|
|
186
|
+
}),
|
|
184
187
|
});
|
|
185
188
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
186
189
|
openapi: 3.0.0
|
|
@@ -220,16 +223,16 @@ describe('oas3 filter-in', () => {
|
|
|
220
223
|
const { bundle: res } = await bundleDocument({
|
|
221
224
|
document: testDoc,
|
|
222
225
|
externalRefResolver: new BaseResolver(),
|
|
223
|
-
config: await makeConfig(
|
|
224
|
-
{},
|
|
225
|
-
{
|
|
226
|
+
config: await makeConfig({
|
|
227
|
+
rules: {},
|
|
228
|
+
decorators: {
|
|
226
229
|
'filter-in': {
|
|
227
230
|
property: 'x-audience',
|
|
228
231
|
value: ['Public', 'Global'],
|
|
229
232
|
matchStrategy: 'any',
|
|
230
233
|
},
|
|
231
|
-
}
|
|
232
|
-
),
|
|
234
|
+
},
|
|
235
|
+
}),
|
|
233
236
|
});
|
|
234
237
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
235
238
|
openapi: 3.0.0
|
|
@@ -279,16 +282,16 @@ describe('oas2 filter-in', () => {
|
|
|
279
282
|
const { bundle: res } = await bundleDocument({
|
|
280
283
|
document: testDoc,
|
|
281
284
|
externalRefResolver: new BaseResolver(),
|
|
282
|
-
config: await makeConfig(
|
|
283
|
-
{},
|
|
284
|
-
{
|
|
285
|
+
config: await makeConfig({
|
|
286
|
+
rules: {},
|
|
287
|
+
decorators: {
|
|
285
288
|
'filter-in': {
|
|
286
289
|
property: 'x-access',
|
|
287
290
|
value: ['public', 'global'],
|
|
288
291
|
matchStrategy: 'any',
|
|
289
292
|
},
|
|
290
|
-
}
|
|
291
|
-
),
|
|
293
|
+
},
|
|
294
|
+
}),
|
|
292
295
|
});
|
|
293
296
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
294
297
|
swagger: '2.0'
|
|
@@ -52,7 +52,10 @@ describe('oas3 filter-out', () => {
|
|
|
52
52
|
const { bundle: res } = await bundleDocument({
|
|
53
53
|
document: testDocument,
|
|
54
54
|
externalRefResolver: new BaseResolver(),
|
|
55
|
-
config: await makeConfig({
|
|
55
|
+
config: await makeConfig({
|
|
56
|
+
rules: {},
|
|
57
|
+
decorators: { 'filter-out': { property: 'x-access', value: 'private' } },
|
|
58
|
+
}),
|
|
56
59
|
});
|
|
57
60
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
58
61
|
openapi: 3.0.0
|
|
@@ -68,16 +71,16 @@ describe('oas3 filter-out', () => {
|
|
|
68
71
|
const { bundle: res } = await bundleDocument({
|
|
69
72
|
document: inputDoc,
|
|
70
73
|
externalRefResolver: new BaseResolver(),
|
|
71
|
-
config: await makeConfig(
|
|
72
|
-
{},
|
|
73
|
-
{
|
|
74
|
+
config: await makeConfig({
|
|
75
|
+
rules: {},
|
|
76
|
+
decorators: {
|
|
74
77
|
'filter-out': {
|
|
75
78
|
property: 'x-audience',
|
|
76
79
|
value: ['Private', 'Protected'],
|
|
77
80
|
matchStrategy: 'all',
|
|
78
81
|
},
|
|
79
|
-
}
|
|
80
|
-
),
|
|
82
|
+
},
|
|
83
|
+
}),
|
|
81
84
|
});
|
|
82
85
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
83
86
|
openapi: 3.0.0
|
|
@@ -99,16 +102,16 @@ describe('oas3 filter-out', () => {
|
|
|
99
102
|
const { bundle: res } = await bundleDocument({
|
|
100
103
|
document: inputDoc,
|
|
101
104
|
externalRefResolver: new BaseResolver(),
|
|
102
|
-
config: await makeConfig(
|
|
103
|
-
{},
|
|
104
|
-
{
|
|
105
|
+
config: await makeConfig({
|
|
106
|
+
rules: {},
|
|
107
|
+
decorators: {
|
|
105
108
|
'filter-out': {
|
|
106
109
|
property: 'x-audience',
|
|
107
110
|
value: ['Private', 'Protected'],
|
|
108
111
|
matchStrategy: 'any',
|
|
109
112
|
},
|
|
110
|
-
}
|
|
111
|
-
),
|
|
113
|
+
},
|
|
114
|
+
}),
|
|
112
115
|
});
|
|
113
116
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
114
117
|
openapi: 3.0.0
|
|
@@ -138,16 +141,16 @@ describe('oas3 filter-out', () => {
|
|
|
138
141
|
const { bundle: res } = await bundleDocument({
|
|
139
142
|
document: testDoc,
|
|
140
143
|
externalRefResolver: new BaseResolver(),
|
|
141
|
-
config: await makeConfig(
|
|
142
|
-
{},
|
|
143
|
-
{
|
|
144
|
+
config: await makeConfig({
|
|
145
|
+
rules: {},
|
|
146
|
+
decorators: {
|
|
144
147
|
'filter-out': {
|
|
145
148
|
property: 'x-access',
|
|
146
149
|
value: 'private',
|
|
147
150
|
matchStrategy: 'any',
|
|
148
151
|
},
|
|
149
|
-
}
|
|
150
|
-
),
|
|
152
|
+
},
|
|
153
|
+
}),
|
|
151
154
|
});
|
|
152
155
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
153
156
|
openapi: 3.0.0
|
|
@@ -192,7 +195,10 @@ describe('oas3 filter-out', () => {
|
|
|
192
195
|
const { bundle: res } = await bundleDocument({
|
|
193
196
|
document: testDocument,
|
|
194
197
|
externalRefResolver: new BaseResolver(),
|
|
195
|
-
config: await makeConfig({
|
|
198
|
+
config: await makeConfig({
|
|
199
|
+
rules: {},
|
|
200
|
+
decorators: { 'filter-out': { property: 'x-prop', value: false } },
|
|
201
|
+
}),
|
|
196
202
|
});
|
|
197
203
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
198
204
|
openapi: 3.0.0
|
|
@@ -244,7 +250,10 @@ describe('oas3 filter-out', () => {
|
|
|
244
250
|
const { bundle: res } = await bundleDocument({
|
|
245
251
|
document: testDocument,
|
|
246
252
|
externalRefResolver: new BaseResolver(),
|
|
247
|
-
config: await makeConfig({
|
|
253
|
+
config: await makeConfig({
|
|
254
|
+
rules: {},
|
|
255
|
+
decorators: { 'filter-out': { property: 'x-prop', value: null } },
|
|
256
|
+
}),
|
|
248
257
|
});
|
|
249
258
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
250
259
|
openapi: 3.0.0
|
|
@@ -305,16 +314,16 @@ describe('oas2 filter-out', () => {
|
|
|
305
314
|
const { bundle: res } = await bundleDocument({
|
|
306
315
|
document: testDoc,
|
|
307
316
|
externalRefResolver: new BaseResolver(),
|
|
308
|
-
config: await makeConfig(
|
|
309
|
-
{},
|
|
310
|
-
{
|
|
317
|
+
config: await makeConfig({
|
|
318
|
+
rules: {},
|
|
319
|
+
decorators: {
|
|
311
320
|
'filter-out': {
|
|
312
321
|
property: 'x-access',
|
|
313
322
|
value: ['private', 'protected'],
|
|
314
323
|
matchStrategy: 'any',
|
|
315
324
|
},
|
|
316
|
-
}
|
|
317
|
-
),
|
|
325
|
+
},
|
|
326
|
+
}),
|
|
318
327
|
});
|
|
319
328
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
320
329
|
swagger: '2.0'
|
|
@@ -28,9 +28,9 @@ describe('oas3 media-type-examples-override', () => {
|
|
|
28
28
|
const { bundle: res } = await bundleDocument({
|
|
29
29
|
document: testDocument,
|
|
30
30
|
externalRefResolver: new BaseResolver(),
|
|
31
|
-
config: await makeConfig(
|
|
32
|
-
{},
|
|
33
|
-
{
|
|
31
|
+
config: await makeConfig({
|
|
32
|
+
rules: {},
|
|
33
|
+
decorators: {
|
|
34
34
|
'media-type-examples-override': {
|
|
35
35
|
operationIds: {
|
|
36
36
|
getUserById: {
|
|
@@ -43,8 +43,8 @@ describe('oas3 media-type-examples-override', () => {
|
|
|
43
43
|
},
|
|
44
44
|
},
|
|
45
45
|
},
|
|
46
|
-
}
|
|
47
|
-
),
|
|
46
|
+
},
|
|
47
|
+
}),
|
|
48
48
|
});
|
|
49
49
|
|
|
50
50
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
@@ -88,9 +88,9 @@ describe('oas3 media-type-examples-override', () => {
|
|
|
88
88
|
const { bundle: res } = await bundleDocument({
|
|
89
89
|
document: testDocument,
|
|
90
90
|
externalRefResolver: new BaseResolver(),
|
|
91
|
-
config: await makeConfig(
|
|
92
|
-
{},
|
|
93
|
-
{
|
|
91
|
+
config: await makeConfig({
|
|
92
|
+
rules: {},
|
|
93
|
+
decorators: {
|
|
94
94
|
'media-type-examples-override': {
|
|
95
95
|
operationIds: {
|
|
96
96
|
getUserById: {
|
|
@@ -101,8 +101,8 @@ describe('oas3 media-type-examples-override', () => {
|
|
|
101
101
|
},
|
|
102
102
|
},
|
|
103
103
|
},
|
|
104
|
-
}
|
|
105
|
-
),
|
|
104
|
+
},
|
|
105
|
+
}),
|
|
106
106
|
});
|
|
107
107
|
|
|
108
108
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
@@ -153,9 +153,9 @@ describe('oas3 media-type-examples-override', () => {
|
|
|
153
153
|
const { bundle: res } = await bundleDocument({
|
|
154
154
|
document: testDocument,
|
|
155
155
|
externalRefResolver: new BaseResolver(),
|
|
156
|
-
config: await makeConfig(
|
|
157
|
-
{},
|
|
158
|
-
{
|
|
156
|
+
config: await makeConfig({
|
|
157
|
+
rules: {},
|
|
158
|
+
decorators: {
|
|
159
159
|
'media-type-examples-override': {
|
|
160
160
|
operationIds: {
|
|
161
161
|
getUserById: {
|
|
@@ -176,8 +176,8 @@ describe('oas3 media-type-examples-override', () => {
|
|
|
176
176
|
},
|
|
177
177
|
},
|
|
178
178
|
},
|
|
179
|
-
}
|
|
180
|
-
),
|
|
179
|
+
},
|
|
180
|
+
}),
|
|
181
181
|
});
|
|
182
182
|
|
|
183
183
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
@@ -245,9 +245,9 @@ describe('oas3 media-type-examples-override', () => {
|
|
|
245
245
|
const { bundle: res } = await bundleDocument({
|
|
246
246
|
document: testDocument,
|
|
247
247
|
externalRefResolver: new BaseResolver(),
|
|
248
|
-
config: await makeConfig(
|
|
249
|
-
{},
|
|
250
|
-
{
|
|
248
|
+
config: await makeConfig({
|
|
249
|
+
rules: {},
|
|
250
|
+
decorators: {
|
|
251
251
|
'media-type-examples-override': {
|
|
252
252
|
operationIds: {
|
|
253
253
|
getUserById: {
|
|
@@ -264,8 +264,8 @@ describe('oas3 media-type-examples-override', () => {
|
|
|
264
264
|
},
|
|
265
265
|
},
|
|
266
266
|
},
|
|
267
|
-
}
|
|
268
|
-
),
|
|
267
|
+
},
|
|
268
|
+
}),
|
|
269
269
|
});
|
|
270
270
|
|
|
271
271
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
@@ -345,9 +345,9 @@ describe('oas3 media-type-examples-override', () => {
|
|
|
345
345
|
const { bundle: res } = await bundleDocument({
|
|
346
346
|
document: testDocument,
|
|
347
347
|
externalRefResolver: new BaseResolver(),
|
|
348
|
-
config: await makeConfig(
|
|
349
|
-
{},
|
|
350
|
-
{
|
|
348
|
+
config: await makeConfig({
|
|
349
|
+
rules: {},
|
|
350
|
+
decorators: {
|
|
351
351
|
'media-type-examples-override': {
|
|
352
352
|
operationIds: {
|
|
353
353
|
getUserById: {
|
|
@@ -364,8 +364,8 @@ describe('oas3 media-type-examples-override', () => {
|
|
|
364
364
|
},
|
|
365
365
|
},
|
|
366
366
|
},
|
|
367
|
-
}
|
|
368
|
-
),
|
|
367
|
+
},
|
|
368
|
+
}),
|
|
369
369
|
});
|
|
370
370
|
|
|
371
371
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
@@ -417,9 +417,9 @@ describe('oas3 media-type-examples-override', () => {
|
|
|
417
417
|
const { bundle: res } = await bundleDocument({
|
|
418
418
|
document: testDocument,
|
|
419
419
|
externalRefResolver: new BaseResolver(),
|
|
420
|
-
config: await makeConfig(
|
|
421
|
-
{},
|
|
422
|
-
{
|
|
420
|
+
config: await makeConfig({
|
|
421
|
+
rules: {},
|
|
422
|
+
decorators: {
|
|
423
423
|
'media-type-examples-override': {
|
|
424
424
|
operationIds: {
|
|
425
425
|
getUserById: {
|
|
@@ -436,8 +436,8 @@ describe('oas3 media-type-examples-override', () => {
|
|
|
436
436
|
},
|
|
437
437
|
},
|
|
438
438
|
},
|
|
439
|
-
}
|
|
440
|
-
),
|
|
439
|
+
},
|
|
440
|
+
}),
|
|
441
441
|
});
|
|
442
442
|
|
|
443
443
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
@@ -489,9 +489,9 @@ describe('oas3 media-type-examples-override', () => {
|
|
|
489
489
|
const { bundle: res } = await bundleDocument({
|
|
490
490
|
document: testDocument,
|
|
491
491
|
externalRefResolver: new BaseResolver(),
|
|
492
|
-
config: await makeConfig(
|
|
493
|
-
{},
|
|
494
|
-
{
|
|
492
|
+
config: await makeConfig({
|
|
493
|
+
rules: {},
|
|
494
|
+
decorators: {
|
|
495
495
|
'media-type-examples-override': {
|
|
496
496
|
operationIds: {
|
|
497
497
|
getUserById: {
|
|
@@ -504,8 +504,8 @@ describe('oas3 media-type-examples-override', () => {
|
|
|
504
504
|
},
|
|
505
505
|
},
|
|
506
506
|
},
|
|
507
|
-
}
|
|
508
|
-
),
|
|
507
|
+
},
|
|
508
|
+
}),
|
|
509
509
|
});
|
|
510
510
|
|
|
511
511
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
@@ -550,9 +550,9 @@ describe('oas3 media-type-examples-override', () => {
|
|
|
550
550
|
const { bundle: res } = await bundleDocument({
|
|
551
551
|
document: testDocument,
|
|
552
552
|
externalRefResolver: new BaseResolver(),
|
|
553
|
-
config: await makeConfig(
|
|
554
|
-
{},
|
|
555
|
-
{
|
|
553
|
+
config: await makeConfig({
|
|
554
|
+
rules: {},
|
|
555
|
+
decorators: {
|
|
556
556
|
'media-type-examples-override': {
|
|
557
557
|
operationIds: {
|
|
558
558
|
getUserById: {
|
|
@@ -565,8 +565,8 @@ describe('oas3 media-type-examples-override', () => {
|
|
|
565
565
|
},
|
|
566
566
|
},
|
|
567
567
|
},
|
|
568
|
-
}
|
|
569
|
-
),
|
|
568
|
+
},
|
|
569
|
+
}),
|
|
570
570
|
});
|
|
571
571
|
|
|
572
572
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
@@ -618,9 +618,9 @@ describe('oas3 media-type-examples-override', () => {
|
|
|
618
618
|
const { bundle: res } = await bundleDocument({
|
|
619
619
|
document: testDocument,
|
|
620
620
|
externalRefResolver: new BaseResolver(),
|
|
621
|
-
config: await makeConfig(
|
|
622
|
-
{},
|
|
623
|
-
{
|
|
621
|
+
config: await makeConfig({
|
|
622
|
+
rules: {},
|
|
623
|
+
decorators: {
|
|
624
624
|
'media-type-examples-override': {
|
|
625
625
|
operationIds: {
|
|
626
626
|
getUserById: {
|
|
@@ -633,8 +633,8 @@ describe('oas3 media-type-examples-override', () => {
|
|
|
633
633
|
},
|
|
634
634
|
},
|
|
635
635
|
},
|
|
636
|
-
}
|
|
637
|
-
),
|
|
636
|
+
},
|
|
637
|
+
}),
|
|
638
638
|
});
|
|
639
639
|
|
|
640
640
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
@@ -25,7 +25,10 @@ describe('oas3 remove-x-internal', () => {
|
|
|
25
25
|
const { bundle: res } = await bundleDocument({
|
|
26
26
|
document: testDocument,
|
|
27
27
|
externalRefResolver: new BaseResolver(),
|
|
28
|
-
config: await makeConfig({
|
|
28
|
+
config: await makeConfig({
|
|
29
|
+
rules: {},
|
|
30
|
+
decorators: { 'remove-x-internal': { internalFlagProperty: 'removeit' } },
|
|
31
|
+
}),
|
|
29
32
|
});
|
|
30
33
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
31
34
|
openapi: 3.0.0
|
|
@@ -92,7 +95,7 @@ describe('oas3 remove-x-internal', () => {
|
|
|
92
95
|
const { bundle: res } = await bundleDocument({
|
|
93
96
|
document: testDoc,
|
|
94
97
|
externalRefResolver: new BaseResolver(),
|
|
95
|
-
config: await makeConfig({}, { 'remove-x-internal': 'on' }),
|
|
98
|
+
config: await makeConfig({ rules: {}, decorators: { 'remove-x-internal': 'on' } }),
|
|
96
99
|
});
|
|
97
100
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
98
101
|
openapi: 3.1.0
|
|
@@ -165,7 +168,7 @@ describe('oas3 remove-x-internal', () => {
|
|
|
165
168
|
const { bundle: res } = await bundleDocument({
|
|
166
169
|
document: testDoc,
|
|
167
170
|
externalRefResolver: new BaseResolver(),
|
|
168
|
-
config: await makeConfig({}, { 'remove-x-internal': 'on' }),
|
|
171
|
+
config: await makeConfig({ rules: {}, decorators: { 'remove-x-internal': 'on' } }),
|
|
169
172
|
});
|
|
170
173
|
|
|
171
174
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
@@ -239,7 +242,7 @@ describe('oas3 remove-x-internal', () => {
|
|
|
239
242
|
const { bundle: res } = await bundleDocument({
|
|
240
243
|
document: testDoc,
|
|
241
244
|
externalRefResolver: new BaseResolver(),
|
|
242
|
-
config: await makeConfig({}, { 'remove-x-internal': 'on' }),
|
|
245
|
+
config: await makeConfig({ rules: {}, decorators: { 'remove-x-internal': 'on' } }),
|
|
243
246
|
});
|
|
244
247
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
245
248
|
openapi: 3.0.1
|
|
@@ -302,7 +305,7 @@ describe('oas2 remove-x-internal', () => {
|
|
|
302
305
|
const { bundle: res } = await bundleDocument({
|
|
303
306
|
document: testDoc,
|
|
304
307
|
externalRefResolver: new BaseResolver(),
|
|
305
|
-
config: await makeConfig({}, { 'remove-x-internal': 'on' }),
|
|
308
|
+
config: await makeConfig({ rules: {}, decorators: { 'remove-x-internal': 'on' } }),
|
|
306
309
|
});
|
|
307
310
|
expect(res.parsed).toMatchInlineSnapshot(`
|
|
308
311
|
swagger: '2.0'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const decorators = {};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { UserContext } from '../../../walk';
|
|
2
1
|
import { isRef } from '../../../ref-utils';
|
|
3
2
|
import { isEmptyArray, isEmptyObject, isPlainObject } from '../../../utils';
|
|
4
3
|
|
|
4
|
+
import type { UserContext } from '../../../walk';
|
|
5
|
+
|
|
5
6
|
export function filter(node: any, ctx: UserContext, criteria: (item: any) => boolean) {
|
|
6
7
|
const { parent, key } = ctx;
|
|
7
8
|
let didDelete = false;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Oas2Decorator, Oas3Decorator } from '../../../visitors';
|
|
2
1
|
import { checkIfMatchByStrategy, filter } from './filter-helper';
|
|
3
2
|
|
|
3
|
+
import type { Oas2Decorator, Oas3Decorator } from '../../../visitors';
|
|
4
|
+
|
|
4
5
|
const DEFAULT_STRATEGY = 'any';
|
|
5
6
|
|
|
6
7
|
export const FilterIn: Oas3Decorator | Oas2Decorator = ({ property, value, matchStrategy }) => {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Oas2Decorator, Oas3Decorator } from '../../../visitors';
|
|
2
1
|
import { checkIfMatchByStrategy, filter } from './filter-helper';
|
|
3
2
|
|
|
3
|
+
import type { Oas2Decorator, Oas3Decorator } from '../../../visitors';
|
|
4
|
+
|
|
4
5
|
const DEFAULT_STRATEGY = 'any';
|
|
5
6
|
|
|
6
7
|
export const FilterOut: Oas3Decorator | Oas2Decorator = ({ property, value, matchStrategy }) => {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Oas3Decorator, Oas2Decorator } from '../../visitors';
|
|
2
1
|
import { readFileAsStringSync } from '../../utils';
|
|
3
|
-
|
|
2
|
+
|
|
3
|
+
import type { Oas3Decorator, Oas2Decorator } from '../../visitors';
|
|
4
|
+
import type { UserContext } from '../../walk';
|
|
4
5
|
|
|
5
6
|
export const InfoDescriptionOverride: Oas3Decorator | Oas2Decorator = ({ filePath }) => {
|
|
6
7
|
return {
|