@redocly/openapi-core 1.19.0 → 1.20.1
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 +14 -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 +5 -1
- package/lib/benchmark/benches/lint-with-nested-rule.bench.d.ts +1 -0
- package/lib/benchmark/benches/lint-with-nested-rule.bench.js +5 -1
- package/lib/benchmark/benches/lint-with-no-rules.bench.d.ts +1 -0
- package/lib/benchmark/benches/lint-with-no-rules.bench.js +5 -1
- 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 +17 -13
- 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 +16 -12
- package/lib/benchmark/utils.d.ts +3 -3
- package/lib/benchmark/utils.js +3 -3
- package/lib/config/all.js +4 -1
- package/lib/config/builtIn.js +15 -20
- package/lib/config/config-resolvers.d.ts +1 -1
- package/lib/config/config-resolvers.js +67 -28
- package/lib/config/config.d.ts +3 -2
- package/lib/config/load.d.ts +1 -1
- package/lib/config/minimal.js +4 -0
- package/lib/config/recommended-strict.js +5 -1
- package/lib/config/recommended.js +5 -1
- package/lib/config/types.d.ts +9 -2
- package/lib/config/utils.d.ts +3 -1
- package/lib/config/utils.js +8 -0
- package/lib/decorators/common/filters/filter-helper.d.ts +1 -1
- package/lib/decorators/common/filters/filter-in.d.ts +1 -1
- package/lib/decorators/common/filters/filter-out.d.ts +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/media-type-examples-override.d.ts +1 -1
- 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/tag-description-override.d.ts +1 -1
- package/lib/decorators/oas2/index.d.ts +1 -1
- package/lib/decorators/oas3/index.d.ts +1 -1
- package/lib/format/codeframes.d.ts +1 -1
- package/lib/format/format.d.ts +1 -1
- package/lib/format/format.js +1 -1
- package/lib/js-yaml/index.d.ts +1 -1
- package/lib/lint.d.ts +1 -1
- package/lib/logger.js +2 -2
- package/lib/oas-types.d.ts +2 -2
- package/lib/redocly/domains.d.ts +1 -1
- package/lib/redocly/index.d.ts +1 -1
- package/lib/ref-utils.d.ts +2 -2
- package/lib/ref-utils.js +1 -0
- package/lib/resolve.d.ts +2 -2
- package/lib/rules/ajv.d.ts +1 -1
- 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 +1 -1
- package/lib/rules/async3/index.js +2 -0
- package/lib/rules/async3/no-channel-trailing-slash.d.ts +1 -1
- package/lib/rules/common/assertions/asserts.d.ts +2 -2
- package/lib/rules/common/assertions/index.d.ts +1 -2
- package/lib/rules/common/assertions/utils.d.ts +1 -1
- 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-path-trailing-slash.d.ts +1 -1
- package/lib/rules/common/no-required-schema-properties-undefined.d.ts +1 -1
- 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/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-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/response-contains-header.d.ts +1 -1
- package/lib/rules/common/security-defined.d.ts +1 -1
- package/lib/rules/common/spec-strict-refs.d.ts +1 -1
- 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/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/oas3/array-parameter-serialization.d.ts +1 -1
- 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/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-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-undefined-server-variable.d.ts +1 -1
- package/lib/rules/oas3/no-unused-components.d.ts +1 -1
- package/lib/rules/oas3/response-contains-property.d.ts +1 -1
- 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 +27 -1
- package/lib/types/arazzo.d.ts +1 -2275
- package/lib/types/arazzo.js +246 -309
- package/lib/types/asyncapi2.d.ts +1 -1
- package/lib/types/asyncapi2.js +3 -1
- package/lib/types/asyncapi3.d.ts +1 -1
- package/lib/types/json-schema-adapter.d.ts +1 -1
- package/lib/types/oas3.d.ts +4 -0
- package/lib/types/oas3.js +9 -9
- package/lib/types/oas3_1.d.ts +3 -0
- package/lib/types/oas3_1.js +8 -8
- package/lib/types/redocly-yaml.d.ts +6 -6
- package/lib/types/redocly-yaml.js +4 -1
- package/lib/typings/arazzo.d.ts +145 -27
- package/lib/typings/common.d.ts +1 -1
- package/lib/typings/swagger.d.ts +2 -2
- package/lib/visitors.d.ts +18 -1
- package/lib/walk.d.ts +3 -3
- package/package.json +2 -2
- package/src/__tests__/bundle.test.ts +4 -4
- 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 +2 -1
- package/src/config/__tests__/__snapshots__/config-resolvers.test.ts.snap +10 -2
- package/src/config/__tests__/config-resolvers.test.ts +82 -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 +4 -1
- package/src/config/builtIn.ts +5 -10
- package/src/config/config-resolvers.ts +78 -23
- package/src/config/config.ts +7 -8
- package/src/config/load.ts +2 -2
- package/src/config/minimal.ts +4 -0
- package/src/config/recommended-strict.ts +5 -1
- package/src/config/recommended.ts +5 -1
- package/src/config/types.ts +19 -3
- package/src/config/utils.ts +13 -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/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 +3 -2
- 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/js-yaml/index.ts +3 -1
- package/src/lint.ts +2 -1
- package/src/logger.ts +2 -2
- package/src/oas-types.ts +14 -13
- 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 +5 -2
- 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 +4 -1
- package/src/rules/async2/no-channel-trailing-slash.ts +2 -2
- package/src/rules/async3/__tests__/channels-kebab-case.test.ts +9 -5
- package/src/rules/async3/__tests__/no-channel-trailing-slash.test.ts +3 -3
- package/src/rules/async3/channels-kebab-case.ts +3 -3
- package/src/rules/async3/index.ts +4 -1
- package/src/rules/async3/no-channel-trailing-slash.ts +3 -3
- 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 +1 -2
- 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 +3 -2
- 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 +4 -2
- 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 +3 -1
- 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/asyncapi2.ts +4 -1
- package/src/types/asyncapi3.ts +3 -1
- package/src/types/json-schema-adapter.ts +2 -2
- package/src/types/oas3.ts +4 -4
- package/src/types/oas3_1.ts +3 -3
- package/src/types/redocly-yaml.ts +7 -4
- package/src/typings/arazzo.ts +169 -41
- package/src/typings/common.ts +1 -0
- package/src/typings/swagger.ts +2 -2
- package/src/visitors.ts +40 -1
- package/src/walk.ts +3 -3
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -24,7 +24,7 @@ describe('Oas3 path-params-defined', () => {
|
|
|
24
24
|
const results = await lintDocument({
|
|
25
25
|
externalRefResolver: new BaseResolver(),
|
|
26
26
|
document,
|
|
27
|
-
config: await makeConfig({ 'path-params-defined': 'error' }),
|
|
27
|
+
config: await makeConfig({ rules: { 'path-params-defined': 'error' } }),
|
|
28
28
|
});
|
|
29
29
|
|
|
30
30
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
|
|
@@ -52,7 +52,7 @@ describe('Oas3 path-params-defined', () => {
|
|
|
52
52
|
const results = await lintDocument({
|
|
53
53
|
externalRefResolver: new BaseResolver(),
|
|
54
54
|
document,
|
|
55
|
-
config: await makeConfig({ 'path-params-defined': 'error' }),
|
|
55
|
+
config: await makeConfig({ rules: { 'path-params-defined': 'error' } }),
|
|
56
56
|
});
|
|
57
57
|
|
|
58
58
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -96,7 +96,7 @@ describe('Oas3 path-params-defined', () => {
|
|
|
96
96
|
const results = await lintDocument({
|
|
97
97
|
externalRefResolver: new BaseResolver(),
|
|
98
98
|
document,
|
|
99
|
-
config: await makeConfig({ 'path-params-defined': 'error' }),
|
|
99
|
+
config: await makeConfig({ rules: { 'path-params-defined': 'error' } }),
|
|
100
100
|
});
|
|
101
101
|
|
|
102
102
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -150,7 +150,7 @@ describe('Oas3 path-params-defined', () => {
|
|
|
150
150
|
const results = await lintDocument({
|
|
151
151
|
externalRefResolver: new BaseResolver(),
|
|
152
152
|
document,
|
|
153
|
-
config: await makeConfig({ 'path-params-defined': 'error' }),
|
|
153
|
+
config: await makeConfig({ rules: { 'path-params-defined': 'error' } }),
|
|
154
154
|
});
|
|
155
155
|
|
|
156
156
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -194,7 +194,7 @@ describe('Oas3 path-params-defined', () => {
|
|
|
194
194
|
const results = await lintDocument({
|
|
195
195
|
externalRefResolver: new BaseResolver(),
|
|
196
196
|
document,
|
|
197
|
-
config: await makeConfig({ 'path-params-defined': 'error' }),
|
|
197
|
+
config: await makeConfig({ rules: { 'path-params-defined': 'error' } }),
|
|
198
198
|
});
|
|
199
199
|
|
|
200
200
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
|
|
@@ -22,7 +22,7 @@ describe('Oas3 paths-kebab-case', () => {
|
|
|
22
22
|
const results = await lintDocument({
|
|
23
23
|
externalRefResolver: new BaseResolver(),
|
|
24
24
|
document,
|
|
25
|
-
config: await makeConfig({ 'paths-kebab-case': 'error' }),
|
|
25
|
+
config: await makeConfig({ rules: { 'paths-kebab-case': 'error' } }),
|
|
26
26
|
});
|
|
27
27
|
|
|
28
28
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -61,7 +61,7 @@ describe('Oas3 paths-kebab-case', () => {
|
|
|
61
61
|
const results = await lintDocument({
|
|
62
62
|
externalRefResolver: new BaseResolver(),
|
|
63
63
|
document,
|
|
64
|
-
config: await makeConfig({ 'paths-kebab-case': 'error' }),
|
|
64
|
+
config: await makeConfig({ rules: { 'paths-kebab-case': 'error' } }),
|
|
65
65
|
});
|
|
66
66
|
|
|
67
67
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -99,8 +99,10 @@ describe('Oas3 paths-kebab-case', () => {
|
|
|
99
99
|
externalRefResolver: new BaseResolver(),
|
|
100
100
|
document,
|
|
101
101
|
config: await makeConfig({
|
|
102
|
-
|
|
103
|
-
|
|
102
|
+
rules: {
|
|
103
|
+
'paths-kebab-case': 'error',
|
|
104
|
+
'no-path-trailing-slash': 'off',
|
|
105
|
+
},
|
|
104
106
|
}),
|
|
105
107
|
});
|
|
106
108
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
|
|
@@ -24,7 +24,7 @@ describe('Oas3 scalar-property-missing-example', () => {
|
|
|
24
24
|
const results = await lintDocument({
|
|
25
25
|
externalRefResolver: new BaseResolver(),
|
|
26
26
|
document,
|
|
27
|
-
config: await makeConfig({ 'scalar-property-missing-example': 'error' }),
|
|
27
|
+
config: await makeConfig({ rules: { 'scalar-property-missing-example': 'error' } }),
|
|
28
28
|
});
|
|
29
29
|
|
|
30
30
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -68,7 +68,7 @@ describe('Oas3.1 scalar-property-missing-example', () => {
|
|
|
68
68
|
const results = await lintDocument({
|
|
69
69
|
externalRefResolver: new BaseResolver(),
|
|
70
70
|
document,
|
|
71
|
-
config: await makeConfig({ 'scalar-property-missing-example': 'error' }),
|
|
71
|
+
config: await makeConfig({ rules: { 'scalar-property-missing-example': 'error' } }),
|
|
72
72
|
});
|
|
73
73
|
|
|
74
74
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -111,7 +111,7 @@ describe('Oas3.1 scalar-property-missing-example', () => {
|
|
|
111
111
|
const results = await lintDocument({
|
|
112
112
|
externalRefResolver: new BaseResolver(),
|
|
113
113
|
document,
|
|
114
|
-
config: await makeConfig({ 'scalar-property-missing-example': 'error' }),
|
|
114
|
+
config: await makeConfig({ rules: { 'scalar-property-missing-example': 'error' } }),
|
|
115
115
|
});
|
|
116
116
|
|
|
117
117
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
|
|
@@ -140,7 +140,7 @@ describe('Oas3.1 scalar-property-missing-example', () => {
|
|
|
140
140
|
const results = await lintDocument({
|
|
141
141
|
externalRefResolver: new BaseResolver(),
|
|
142
142
|
document,
|
|
143
|
-
config: await makeConfig({ 'scalar-property-missing-example': 'error' }),
|
|
143
|
+
config: await makeConfig({ rules: { 'scalar-property-missing-example': 'error' } }),
|
|
144
144
|
});
|
|
145
145
|
|
|
146
146
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
|
|
@@ -174,7 +174,7 @@ describe('Oas3.1 scalar-property-missing-example', () => {
|
|
|
174
174
|
const results = await lintDocument({
|
|
175
175
|
externalRefResolver: new BaseResolver(),
|
|
176
176
|
document,
|
|
177
|
-
config: await makeConfig({ 'scalar-property-missing-example': 'error' }),
|
|
177
|
+
config: await makeConfig({ rules: { 'scalar-property-missing-example': 'error' } }),
|
|
178
178
|
});
|
|
179
179
|
|
|
180
180
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
|
|
@@ -199,7 +199,7 @@ describe('Oas3.1 scalar-property-missing-example', () => {
|
|
|
199
199
|
const results = await lintDocument({
|
|
200
200
|
externalRefResolver: new BaseResolver(),
|
|
201
201
|
document,
|
|
202
|
-
config: await makeConfig({ 'scalar-property-missing-example': 'error' }),
|
|
202
|
+
config: await makeConfig({ rules: { 'scalar-property-missing-example': 'error' } }),
|
|
203
203
|
});
|
|
204
204
|
|
|
205
205
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
|
|
@@ -230,7 +230,7 @@ describe('Oas3.1 scalar-property-missing-example', () => {
|
|
|
230
230
|
const results = await lintDocument({
|
|
231
231
|
externalRefResolver: new BaseResolver(),
|
|
232
232
|
document,
|
|
233
|
-
config: await makeConfig({ 'scalar-property-missing-example': 'error' }),
|
|
233
|
+
config: await makeConfig({ rules: { 'scalar-property-missing-example': 'error' } }),
|
|
234
234
|
});
|
|
235
235
|
|
|
236
236
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
|
|
@@ -256,7 +256,7 @@ describe('Oas3.1 scalar-property-missing-example', () => {
|
|
|
256
256
|
const results = await lintDocument({
|
|
257
257
|
externalRefResolver: new BaseResolver(),
|
|
258
258
|
document,
|
|
259
|
-
config: await makeConfig({ 'scalar-property-missing-example': 'error' }),
|
|
259
|
+
config: await makeConfig({ rules: { 'scalar-property-missing-example': 'error' } }),
|
|
260
260
|
});
|
|
261
261
|
|
|
262
262
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
|
|
@@ -19,7 +19,7 @@ describe('Oas3 security-defined', () => {
|
|
|
19
19
|
const results = await lintDocument({
|
|
20
20
|
externalRefResolver: new BaseResolver(),
|
|
21
21
|
document,
|
|
22
|
-
config: await makeConfig({ 'security-defined': 'error' }),
|
|
22
|
+
config: await makeConfig({ rules: { 'security-defined': 'error' } }),
|
|
23
23
|
});
|
|
24
24
|
|
|
25
25
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -53,7 +53,7 @@ describe('Oas3 security-defined', () => {
|
|
|
53
53
|
const results = await lintDocument({
|
|
54
54
|
externalRefResolver: new BaseResolver(),
|
|
55
55
|
document,
|
|
56
|
-
config: await makeConfig({ 'security-defined': 'error' }),
|
|
56
|
+
config: await makeConfig({ rules: { 'security-defined': 'error' } }),
|
|
57
57
|
});
|
|
58
58
|
|
|
59
59
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
|
|
@@ -73,7 +73,7 @@ describe('Oas3 security-defined', () => {
|
|
|
73
73
|
const results = await lintDocument({
|
|
74
74
|
externalRefResolver: new BaseResolver(),
|
|
75
75
|
document,
|
|
76
|
-
config: await makeConfig({ 'security-defined': 'error' }),
|
|
76
|
+
config: await makeConfig({ rules: { 'security-defined': 'error' } }),
|
|
77
77
|
});
|
|
78
78
|
|
|
79
79
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -112,7 +112,7 @@ describe('Oas3 security-defined', () => {
|
|
|
112
112
|
const results = await lintDocument({
|
|
113
113
|
externalRefResolver: new BaseResolver(),
|
|
114
114
|
document,
|
|
115
|
-
config: await makeConfig({ 'security-defined': 'error' }),
|
|
115
|
+
config: await makeConfig({ rules: { 'security-defined': 'error' } }),
|
|
116
116
|
});
|
|
117
117
|
|
|
118
118
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -167,7 +167,7 @@ describe('Oas3 security-defined', () => {
|
|
|
167
167
|
const results = await lintDocument({
|
|
168
168
|
externalRefResolver: new BaseResolver(),
|
|
169
169
|
document,
|
|
170
|
-
config: await makeConfig({ 'security-defined': 'error' }),
|
|
170
|
+
config: await makeConfig({ rules: { 'security-defined': 'error' } }),
|
|
171
171
|
});
|
|
172
172
|
|
|
173
173
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
|
|
@@ -190,7 +190,9 @@ describe('Oas3 security-defined', () => {
|
|
|
190
190
|
externalRefResolver: new BaseResolver(),
|
|
191
191
|
document,
|
|
192
192
|
config: await makeConfig({
|
|
193
|
-
|
|
193
|
+
rules: {
|
|
194
|
+
'security-defined': { exceptions: [{ path: '/excluded' }] },
|
|
195
|
+
},
|
|
194
196
|
}),
|
|
195
197
|
});
|
|
196
198
|
|
|
@@ -217,7 +219,9 @@ describe('Oas3 security-defined', () => {
|
|
|
217
219
|
externalRefResolver: new BaseResolver(),
|
|
218
220
|
document,
|
|
219
221
|
config: await makeConfig({
|
|
220
|
-
|
|
222
|
+
rules: {
|
|
223
|
+
'security-defined': { exceptions: [{ path: '/partially-excluded', methods: ['GET'] }] },
|
|
224
|
+
},
|
|
221
225
|
}),
|
|
222
226
|
});
|
|
223
227
|
|
|
@@ -254,7 +258,9 @@ describe('Oas3 security-defined', () => {
|
|
|
254
258
|
const results = await lintDocument({
|
|
255
259
|
externalRefResolver: new BaseResolver(),
|
|
256
260
|
document,
|
|
257
|
-
config: await makeConfig({
|
|
261
|
+
config: await makeConfig({
|
|
262
|
+
rules: { 'security-defined': { exceptions: [{ path: '/excluded' }] } },
|
|
263
|
+
}),
|
|
258
264
|
});
|
|
259
265
|
|
|
260
266
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -33,7 +33,7 @@ describe('Oas3 spec-strict-refs', () => {
|
|
|
33
33
|
const results = await lintDocument({
|
|
34
34
|
externalRefResolver: new BaseResolver(),
|
|
35
35
|
document,
|
|
36
|
-
config: await makeConfig({ 'spec-strict-refs': 'error' }),
|
|
36
|
+
config: await makeConfig({ rules: { 'spec-strict-refs': 'error' } }),
|
|
37
37
|
});
|
|
38
38
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
39
39
|
[
|
|
@@ -25,7 +25,7 @@ describe('Oas3 spec', () => {
|
|
|
25
25
|
const results = await lintDocument({
|
|
26
26
|
externalRefResolver: new BaseResolver(),
|
|
27
27
|
document,
|
|
28
|
-
config: await makeConfig({ spec: 'error' }),
|
|
28
|
+
config: await makeConfig({ rules: { spec: 'error' } }),
|
|
29
29
|
});
|
|
30
30
|
|
|
31
31
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -85,7 +85,7 @@ describe('Oas3 spec', () => {
|
|
|
85
85
|
const results = await lintDocument({
|
|
86
86
|
externalRefResolver: new BaseResolver(),
|
|
87
87
|
document,
|
|
88
|
-
config: await makeConfig({ spec: 'error' }),
|
|
88
|
+
config: await makeConfig({ rules: { spec: 'error' } }),
|
|
89
89
|
});
|
|
90
90
|
|
|
91
91
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -157,7 +157,7 @@ describe('Oas3 spec', () => {
|
|
|
157
157
|
const results = await lintDocument({
|
|
158
158
|
externalRefResolver: new BaseResolver(),
|
|
159
159
|
document,
|
|
160
|
-
config: await makeConfig({ spec: 'error' }),
|
|
160
|
+
config: await makeConfig({ rules: { spec: 'error' } }),
|
|
161
161
|
});
|
|
162
162
|
|
|
163
163
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -231,7 +231,7 @@ describe('Oas3 spec', () => {
|
|
|
231
231
|
const results = await lintDocument({
|
|
232
232
|
externalRefResolver: new BaseResolver(),
|
|
233
233
|
document,
|
|
234
|
-
config: await makeConfig({ spec: 'error' }),
|
|
234
|
+
config: await makeConfig({ rules: { spec: 'error' } }),
|
|
235
235
|
});
|
|
236
236
|
|
|
237
237
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -322,7 +322,7 @@ describe('Oas3 spec', () => {
|
|
|
322
322
|
const results = await lintDocument({
|
|
323
323
|
externalRefResolver: new BaseResolver(),
|
|
324
324
|
document,
|
|
325
|
-
config: await makeConfig({ spec: 'error' }),
|
|
325
|
+
config: await makeConfig({ rules: { spec: 'error' } }),
|
|
326
326
|
});
|
|
327
327
|
|
|
328
328
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -384,7 +384,7 @@ describe('Oas3.1 spec', () => {
|
|
|
384
384
|
const results = await lintDocument({
|
|
385
385
|
externalRefResolver: new BaseResolver(),
|
|
386
386
|
document,
|
|
387
|
-
config: await makeConfig({ spec: 'error' }),
|
|
387
|
+
config: await makeConfig({ rules: { spec: 'error' } }),
|
|
388
388
|
});
|
|
389
389
|
|
|
390
390
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -432,7 +432,7 @@ describe('Oas3.1 spec', () => {
|
|
|
432
432
|
const results = await lintDocument({
|
|
433
433
|
externalRefResolver: new BaseResolver(),
|
|
434
434
|
document,
|
|
435
|
-
config: await makeConfig({ spec: 'error' }),
|
|
435
|
+
config: await makeConfig({ rules: { spec: 'error' } }),
|
|
436
436
|
});
|
|
437
437
|
|
|
438
438
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -486,7 +486,7 @@ describe('Oas3.1 spec', () => {
|
|
|
486
486
|
const results = await lintDocument({
|
|
487
487
|
externalRefResolver: new BaseResolver(),
|
|
488
488
|
document,
|
|
489
|
-
config: await makeConfig({ spec: 'error' }),
|
|
489
|
+
config: await makeConfig({ rules: { spec: 'error' } }),
|
|
490
490
|
});
|
|
491
491
|
|
|
492
492
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -557,7 +557,7 @@ describe('Oas3.1 spec', () => {
|
|
|
557
557
|
const results = await lintDocument({
|
|
558
558
|
externalRefResolver: new BaseResolver(),
|
|
559
559
|
document,
|
|
560
|
-
config: await makeConfig({ spec: 'error' }),
|
|
560
|
+
config: await makeConfig({ rules: { spec: 'error' } }),
|
|
561
561
|
});
|
|
562
562
|
|
|
563
563
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -632,7 +632,7 @@ describe('Oas3.1 spec', () => {
|
|
|
632
632
|
const results = await lintDocument({
|
|
633
633
|
externalRefResolver: new BaseResolver(),
|
|
634
634
|
document,
|
|
635
|
-
config: await makeConfig({ spec: 'error' }),
|
|
635
|
+
config: await makeConfig({ rules: { spec: 'error' } }),
|
|
636
636
|
});
|
|
637
637
|
|
|
638
638
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -19,7 +19,7 @@ describe('Oas3 tag-description', () => {
|
|
|
19
19
|
const results = await lintDocument({
|
|
20
20
|
externalRefResolver: new BaseResolver(),
|
|
21
21
|
document,
|
|
22
|
-
config: await makeConfig({ 'tag-description': 'error' }),
|
|
22
|
+
config: await makeConfig({ rules: { 'tag-description': 'error' } }),
|
|
23
23
|
});
|
|
24
24
|
|
|
25
25
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -57,7 +57,7 @@ describe('Oas3 tag-description', () => {
|
|
|
57
57
|
const results = await lintDocument({
|
|
58
58
|
externalRefResolver: new BaseResolver(),
|
|
59
59
|
document,
|
|
60
|
-
config: await makeConfig({ 'tag-description': 'error' }),
|
|
60
|
+
config: await makeConfig({ rules: { 'tag-description': 'error' } }),
|
|
61
61
|
});
|
|
62
62
|
|
|
63
63
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
|
|
@@ -19,7 +19,7 @@ describe('Oas3 tags-alphabetical', () => {
|
|
|
19
19
|
const results = await lintDocument({
|
|
20
20
|
externalRefResolver: new BaseResolver(),
|
|
21
21
|
document,
|
|
22
|
-
config: await makeConfig({ 'tags-alphabetical': 'error' }),
|
|
22
|
+
config: await makeConfig({ rules: { 'tags-alphabetical': 'error' } }),
|
|
23
23
|
});
|
|
24
24
|
|
|
25
25
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -56,7 +56,7 @@ describe('Oas3 tags-alphabetical', () => {
|
|
|
56
56
|
const results = await lintDocument({
|
|
57
57
|
externalRefResolver: new BaseResolver(),
|
|
58
58
|
document,
|
|
59
|
-
config: await makeConfig({ 'tags-alphabetical': 'error' }),
|
|
59
|
+
config: await makeConfig({ rules: { 'tags-alphabetical': 'error' } }),
|
|
60
60
|
});
|
|
61
61
|
|
|
62
62
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
|
|
@@ -77,7 +77,7 @@ describe('Oas3 tags-alphabetical', () => {
|
|
|
77
77
|
const results = await lintDocument({
|
|
78
78
|
externalRefResolver: new BaseResolver(),
|
|
79
79
|
document,
|
|
80
|
-
config: await makeConfig({ 'tags-alphabetical': 'error' }),
|
|
80
|
+
config: await makeConfig({ rules: { 'tags-alphabetical': 'error' } }),
|
|
81
81
|
});
|
|
82
82
|
|
|
83
83
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -114,7 +114,9 @@ describe('Oas3 tags-alphabetical', () => {
|
|
|
114
114
|
const results = await lintDocument({
|
|
115
115
|
externalRefResolver: new BaseResolver(),
|
|
116
116
|
document,
|
|
117
|
-
config: await makeConfig({
|
|
117
|
+
config: await makeConfig({
|
|
118
|
+
rules: { 'tags-alphabetical': { severity: 'error', ignoreCase: true } },
|
|
119
|
+
}),
|
|
118
120
|
});
|
|
119
121
|
|
|
120
122
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
|
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
import { AssertionContext, AssertResult, CustomFunction } from 'core/src/config/types';
|
|
2
|
-
import { Location } from '../../../ref-utils';
|
|
3
1
|
import { isPlainObject, isString as runOnValue, isTruthy } from '../../../utils';
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
regexFromString,
|
|
10
|
-
} from './utils';
|
|
2
|
+
import { isOrdered, getIntersectionLength, regexFromString } from './utils';
|
|
3
|
+
|
|
4
|
+
import type { AssertionContext, AssertResult, CustomFunction } from '../../../config/types';
|
|
5
|
+
import type { Location } from '../../../ref-utils';
|
|
6
|
+
import type { OrderOptions, OrderDirection } from './utils';
|
|
11
7
|
|
|
12
8
|
export type AssertionFnContext = AssertionContext & { baseLocation: Location; rawValue?: any };
|
|
13
9
|
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { asserts } from './asserts';
|
|
2
1
|
import { buildSubjectVisitor, buildVisitorObject } from './utils';
|
|
3
2
|
import { isString } from '../../../utils';
|
|
4
3
|
|
|
5
|
-
import type { AssertionFn } from './asserts';
|
|
4
|
+
import type { asserts, AssertionFn } from './asserts';
|
|
6
5
|
import type {
|
|
7
6
|
ArazzoVisitor,
|
|
8
7
|
Async2Visitor,
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import { asserts, runOnKeysSet, runOnValuesSet
|
|
1
|
+
import { asserts, runOnKeysSet, runOnValuesSet } from './asserts';
|
|
2
2
|
import { colorize } from '../../../logger';
|
|
3
3
|
import { isRef } from '../../../ref-utils';
|
|
4
4
|
import { isTruthy, keysOf, isString } from '../../../utils';
|
|
5
|
+
|
|
6
|
+
import type { UserContext } from 'core/src/walk';
|
|
7
|
+
import type { Asserts } from './asserts';
|
|
5
8
|
import type { AssertionContext, AssertResult } from '../../../config';
|
|
6
9
|
import type { Assertion, AssertionDefinition, AssertionLocators } from '.';
|
|
7
10
|
import type {
|
|
@@ -10,7 +13,6 @@ import type {
|
|
|
10
13
|
SkipFunctionContext,
|
|
11
14
|
VisitFunction,
|
|
12
15
|
} from '../../../visitors';
|
|
13
|
-
import { UserContext } from 'core/src/walk';
|
|
14
16
|
|
|
15
17
|
export type OrderDirection = 'asc' | 'desc';
|
|
16
18
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
1
|
import { missingRequiredField } from '../utils';
|
|
3
2
|
|
|
3
|
+
import type { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
4
|
+
|
|
4
5
|
export const InfoContact: Oas3Rule | Oas2Rule = () => {
|
|
5
6
|
return {
|
|
6
7
|
Info(info, { report, location }) {
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { detectSpec } from '../../oas-types';
|
|
2
|
+
import { validateDefinedAndNonEmpty, validateOneOfDefinedAndNonEmpty } from '../utils';
|
|
3
|
+
|
|
4
|
+
import type { Oas3Rule, Oas2Rule, Async2Rule, Async3Rule } from '../../visitors';
|
|
5
|
+
|
|
6
|
+
export const InfoLicenseStrict: Oas2Rule | Oas3Rule | Async2Rule | Async3Rule = () => {
|
|
7
|
+
let specVersion: string | undefined;
|
|
8
|
+
return {
|
|
9
|
+
Root: {
|
|
10
|
+
enter(root: any) {
|
|
11
|
+
specVersion = detectSpec(root);
|
|
12
|
+
},
|
|
13
|
+
License: {
|
|
14
|
+
leave(license, ctx) {
|
|
15
|
+
if (specVersion === 'oas3_1') {
|
|
16
|
+
validateOneOfDefinedAndNonEmpty(['url', 'identifier'], license, ctx);
|
|
17
|
+
} else {
|
|
18
|
+
validateDefinedAndNonEmpty('url', license, ctx);
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
1
|
import { validateDefinedAndNonEmpty } from '../utils';
|
|
3
2
|
|
|
3
|
+
import type { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
4
|
+
|
|
4
5
|
export const InfoLicenseUrl: Oas3Rule | Oas2Rule = () => {
|
|
5
6
|
return {
|
|
6
7
|
License(license, ctx) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
-
import { UserContext } from '../../walk';
|
|
3
|
-
import { Oas3Paths } from '../../typings/openapi';
|
|
4
|
-
import { Oas2Paths } from '../../typings/swagger';
|
|
1
|
+
import type { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
+
import type { UserContext } from '../../walk';
|
|
3
|
+
import type { Oas3Paths } from '../../typings/openapi';
|
|
4
|
+
import type { Oas2Paths } from '../../typings/swagger';
|
|
5
5
|
|
|
6
6
|
export const NoAmbiguousPaths: Oas3Rule | Oas2Rule = () => {
|
|
7
7
|
return {
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
1
|
import { matchesJsonSchemaType, oasTypeOf } from '../utils';
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
|
|
3
|
+
import type { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
4
|
+
import type { Oas2Schema } from '../../typings/swagger';
|
|
5
|
+
import type { Oas3Schema } from '../../typings/openapi';
|
|
6
|
+
import type { UserContext } from '../../walk';
|
|
6
7
|
|
|
7
8
|
export const NoEnumTypeMismatch: Oas3Rule | Oas2Rule = () => {
|
|
8
9
|
return {
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
-
import { Oas2PathItem } from '../../typings/swagger';
|
|
3
|
-
import { Oas3PathItem } from '../../typings/openapi';
|
|
4
|
-
import { UserContext } from '../../walk';
|
|
5
1
|
import { isPathParameter, splitCamelCaseIntoWords } from '../../utils';
|
|
6
2
|
|
|
3
|
+
import type { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
4
|
+
import type { Oas2PathItem } from '../../typings/swagger';
|
|
5
|
+
import type { Oas3PathItem } from '../../typings/openapi';
|
|
6
|
+
import type { UserContext } from '../../walk';
|
|
7
|
+
|
|
7
8
|
const httpMethods = ['get', 'head', 'post', 'put', 'patch', 'delete', 'options', 'trace'];
|
|
8
9
|
|
|
9
10
|
export const NoHttpVerbsInPaths: Oas3Rule | Oas2Rule = ({ splitIntoWords }) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
-
import { UserContext } from '../../walk';
|
|
3
|
-
import { Oas3Paths } from '../../typings/openapi';
|
|
4
|
-
import { Oas2Paths } from '../../typings/swagger';
|
|
1
|
+
import type { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
+
import type { UserContext } from '../../walk';
|
|
3
|
+
import type { Oas3Paths } from '../../typings/openapi';
|
|
4
|
+
import type { Oas2Paths } from '../../typings/swagger';
|
|
5
5
|
|
|
6
6
|
export const NoIdenticalPaths: Oas3Rule | Oas2Rule = () => {
|
|
7
7
|
return {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { UserContext } from '../../walk';
|
|
2
|
-
import { Oas3Parameter } from '../../typings/openapi';
|
|
3
1
|
import { getAdditionalPropertiesOption, validateExample } from '../utils';
|
|
4
2
|
|
|
3
|
+
import type { UserContext } from '../../walk';
|
|
4
|
+
import type { Oas3Parameter } from '../../typings/openapi';
|
|
5
|
+
|
|
5
6
|
export const NoInvalidParameterExamples: any = (opts: any) => {
|
|
6
7
|
const allowAdditionalProperties = getAdditionalPropertiesOption(opts) ?? false;
|
|
7
8
|
return {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
-
import { UserContext } from '../../walk';
|
|
1
|
+
import type { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
+
import type { UserContext } from '../../walk';
|
|
3
3
|
|
|
4
4
|
export const NoPathTrailingSlash: Oas3Rule | Oas2Rule = () => {
|
|
5
5
|
return {
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { Oas2Rule, Oas3Rule } from '../../visitors';
|
|
2
|
-
import { Oas3Schema, Oas3_1Schema } from '../../typings/openapi';
|
|
3
|
-
import { Oas2Schema } from 'core/src/typings/swagger';
|
|
4
|
-
import { UserContext } from 'core/src/walk';
|
|
5
1
|
import { isRef } from '../../ref-utils';
|
|
6
2
|
|
|
3
|
+
import type { Oas2Rule, Oas3Rule } from '../../visitors';
|
|
4
|
+
import type { Oas3Schema, Oas3_1Schema } from '../../typings/openapi';
|
|
5
|
+
import type { Oas2Schema } from 'core/src/typings/swagger';
|
|
6
|
+
import type { UserContext } from 'core/src/walk';
|
|
7
|
+
|
|
7
8
|
export const NoRequiredSchemaPropertiesUndefined: Oas3Rule | Oas2Rule = () => {
|
|
8
9
|
return {
|
|
9
10
|
Schema: {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
-
import { UserContext } from '../../walk';
|
|
3
1
|
import { validateResponseCodes } from '../utils';
|
|
4
2
|
|
|
3
|
+
import type { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
4
|
+
import type { UserContext } from '../../walk';
|
|
5
|
+
|
|
5
6
|
export const Operation2xxResponse: Oas3Rule | Oas2Rule = ({ validateWebhooks }) => {
|
|
6
7
|
return {
|
|
7
8
|
Paths: {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
-
import { UserContext } from '../../walk';
|
|
3
1
|
import { validateResponseCodes } from '../utils';
|
|
4
2
|
|
|
3
|
+
import type { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
4
|
+
import type { UserContext } from '../../walk';
|
|
5
|
+
|
|
5
6
|
export const Operation4xxResponse: Oas3Rule | Oas2Rule = ({ validateWebhooks }) => {
|
|
6
7
|
return {
|
|
7
8
|
Paths: {
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
1
|
import { validateDefinedAndNonEmpty } from '../utils';
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
|
|
3
|
+
import type { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
4
|
+
import type { UserContext } from '../../walk';
|
|
5
|
+
import type { Oas2Operation } from '../../typings/swagger';
|
|
6
|
+
import type { Oas3Operation } from '../../typings/openapi';
|
|
6
7
|
|
|
7
8
|
export const OperationDescription: Oas3Rule | Oas2Rule = () => {
|
|
8
9
|
return {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
-
import { Oas2Operation } from '../../typings/swagger';
|
|
3
|
-
import { Oas3Operation } from '../../typings/openapi';
|
|
4
|
-
import { UserContext } from '../../walk';
|
|
1
|
+
import type { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
+
import type { Oas2Operation } from '../../typings/swagger';
|
|
3
|
+
import type { Oas3Operation } from '../../typings/openapi';
|
|
4
|
+
import type { UserContext } from '../../walk';
|
|
5
5
|
|
|
6
6
|
export const OperationIdUnique: Oas3Rule | Oas2Rule = () => {
|
|
7
7
|
const seenOperations = new Set();
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
-
import { Oas2Operation } from '../../typings/swagger';
|
|
3
|
-
import { Oas3Operation } from '../../typings/openapi';
|
|
4
|
-
import { UserContext } from '../../walk';
|
|
1
|
+
import type { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
+
import type { Oas2Operation } from '../../typings/swagger';
|
|
3
|
+
import type { Oas3Operation } from '../../typings/openapi';
|
|
4
|
+
import type { UserContext } from '../../walk';
|
|
5
5
|
|
|
6
|
+
// eslint-disable-next-line no-useless-escape
|
|
6
7
|
const validUrlSymbols = /^[A-Za-z0-9-._~:/?#\[\]@!\$&'()*+,;=]*$/;
|
|
7
8
|
|
|
8
9
|
export const OperationIdUrlSafe: Oas3Rule | Oas2Rule = () => {
|