@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
|
@@ -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 OperationOperationId: Oas3Rule | Oas2Rule = () => {
|
|
8
9
|
return {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
-
import { Oas2Parameter } from '../../typings/swagger';
|
|
3
|
-
import { Oas3Parameter } from '../../typings/openapi';
|
|
4
|
-
import { UserContext } from '../../walk';
|
|
1
|
+
import type { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
+
import type { Oas2Parameter } from '../../typings/swagger';
|
|
3
|
+
import type { Oas3Parameter } from '../../typings/openapi';
|
|
4
|
+
import type { UserContext } from '../../walk';
|
|
5
5
|
|
|
6
6
|
export const OperationParametersUnique: Oas3Rule | Oas2Rule = () => {
|
|
7
7
|
let seenPathParams: Set<string>;
|
|
@@ -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 OperationSingularTag: Oas3Rule | Oas2Rule = () => {
|
|
7
7
|
return {
|
|
@@ -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 OperationSummary: Oas3Rule | Oas2Rule = () => {
|
|
8
9
|
return {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
-
import { Oas2Definition, Oas2Operation } from '../../typings/swagger';
|
|
3
|
-
import { Oas3Definition, Oas3Operation } from '../../typings/openapi';
|
|
4
|
-
import { UserContext } from '../../walk';
|
|
1
|
+
import type { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
+
import type { Oas2Definition, Oas2Operation } from '../../typings/swagger';
|
|
3
|
+
import type { Oas3Definition, Oas3Operation } from '../../typings/openapi';
|
|
4
|
+
import type { UserContext } from '../../walk';
|
|
5
5
|
|
|
6
6
|
export const OperationTagDefined: Oas3Rule | Oas2Rule = () => {
|
|
7
7
|
let definedTags: Set<string>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
-
import { Oas2Parameter } from '../../typings/swagger';
|
|
3
|
-
import { Oas3Parameter } from '../../typings/openapi';
|
|
4
|
-
import { UserContext } from '../../walk';
|
|
1
|
+
import type { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
+
import type { Oas2Parameter } from '../../typings/swagger';
|
|
3
|
+
import type { Oas3Parameter } from '../../typings/openapi';
|
|
4
|
+
import type { UserContext } from '../../walk';
|
|
5
5
|
|
|
6
6
|
export const ParameterDescription: Oas3Rule | Oas2Rule = () => {
|
|
7
7
|
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 PathDeclarationMustExist: Oas3Rule | Oas2Rule = () => {
|
|
5
5
|
return {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Oas2Rule, Oas3Rule } from '../../visitors';
|
|
2
|
-
import { Oas2PathItem } from '../../typings/swagger';
|
|
3
|
-
import { Oas3PathItem } from '../../typings/openapi';
|
|
4
|
-
import { UserContext } from '../../walk';
|
|
1
|
+
import type { Oas2Rule, Oas3Rule } from '../../visitors';
|
|
2
|
+
import type { Oas2PathItem } from '../../typings/swagger';
|
|
3
|
+
import type { Oas3PathItem } from '../../typings/openapi';
|
|
4
|
+
import type { UserContext } from '../../walk';
|
|
5
5
|
|
|
6
6
|
export const PathExcludesPatterns: Oas3Rule | Oas2Rule = ({ patterns }) => {
|
|
7
7
|
return {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
-
import { Oas2PathItem } from '../../typings/swagger';
|
|
3
|
-
import { Oas3PathItem } from '../../typings/openapi';
|
|
4
|
-
import { UserContext } from '../../walk';
|
|
1
|
+
import type { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
+
import type { Oas2PathItem } from '../../typings/swagger';
|
|
3
|
+
import type { Oas3PathItem } from '../../typings/openapi';
|
|
4
|
+
import type { UserContext } from '../../walk';
|
|
5
5
|
|
|
6
6
|
const defaultOrder = ['get', 'head', 'post', 'put', 'patch', 'delete', 'options', 'trace'];
|
|
7
7
|
|
|
@@ -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 PathNotIncludeQuery: Oas3Rule | Oas2Rule = () => {
|
|
5
5
|
return {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
-
import { Oas2Parameter } from '../../typings/swagger';
|
|
3
|
-
import { Oas3Parameter } from '../../typings/openapi';
|
|
4
|
-
import { UserContext } from '../../walk';
|
|
1
|
+
import type { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
+
import type { Oas2Parameter } from '../../typings/swagger';
|
|
3
|
+
import type { Oas3Parameter } from '../../typings/openapi';
|
|
4
|
+
import type { UserContext } from '../../walk';
|
|
5
5
|
|
|
6
6
|
const pathRegex = /\{([a-zA-Z0-9_.-]+)\}+/g;
|
|
7
7
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import * as pluralize from 'pluralize';
|
|
2
|
-
import { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
3
|
-
import { UserContext } from '../../walk';
|
|
4
2
|
import { isPathParameter } from '../../utils';
|
|
5
3
|
|
|
4
|
+
import type { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
5
|
+
import type { UserContext } from '../../walk';
|
|
6
|
+
|
|
6
7
|
export const PathSegmentPlural: Oas3Rule | Oas2Rule = (opts) => {
|
|
7
8
|
const { ignoreLastPathSegment, exceptions } = opts;
|
|
8
9
|
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 PathsKebabCase: Oas3Rule | Oas2Rule = () => {
|
|
5
5
|
return {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { UserContext } from '../../walk';
|
|
2
|
-
import { Oas3Schema, Oas3_1Schema } from '../../typings/openapi';
|
|
3
|
-
import { Oas2Schema } from 'core/src/typings/swagger';
|
|
4
|
-
import { Oas3Rule } from 'core/src/visitors';
|
|
1
|
+
import type { UserContext } from '../../walk';
|
|
2
|
+
import type { Oas3Schema, Oas3_1Schema } from '../../typings/openapi';
|
|
3
|
+
import type { Oas2Schema } from 'core/src/typings/swagger';
|
|
4
|
+
import type { Oas3Rule } from 'core/src/visitors';
|
|
5
5
|
|
|
6
6
|
export const RequiredStringPropertyMissingMinLength: Oas3Rule = () => {
|
|
7
7
|
let skipSchemaProperties: boolean;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { Oas2Rule, Oas3Rule } from '../../visitors';
|
|
2
|
-
import { UserContext } from '../../walk';
|
|
3
|
-
import { Oas3Response } from '../../typings/openapi';
|
|
4
|
-
import { Oas2Response } from '../../typings/swagger';
|
|
5
1
|
import { getMatchingStatusCodeRange } from '../../utils';
|
|
6
2
|
|
|
3
|
+
import type { Oas2Rule, Oas3Rule } from '../../visitors';
|
|
4
|
+
import type { UserContext } from '../../walk';
|
|
5
|
+
import type { Oas3Response } from '../../typings/openapi';
|
|
6
|
+
import type { Oas2Response } from '../../typings/swagger';
|
|
7
|
+
|
|
7
8
|
export const ResponseContainsHeader: Oas3Rule | Oas2Rule = (options) => {
|
|
8
9
|
const names: Record<string, string[]> = options.names || {};
|
|
9
10
|
return {
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { SpecVersion } from '../../oas-types';
|
|
2
|
+
|
|
1
3
|
import type { Oas2Rule, Oas3Rule } from '../../visitors';
|
|
2
4
|
import type { UserContext } from '../../walk';
|
|
3
5
|
import type { Oas2Schema } from '../../typings/swagger';
|
|
4
6
|
import type { Oas3Schema, Oas3_1Schema } from '../../typings/openapi';
|
|
5
|
-
import { SpecVersion } from '../../oas-types';
|
|
6
7
|
|
|
7
8
|
const SCALAR_TYPES = ['string', 'integer', 'number', 'boolean', 'null'];
|
|
8
9
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
-
import { Location } from '../../ref-utils';
|
|
3
|
-
import { UserContext } from '../../walk';
|
|
4
|
-
import {
|
|
1
|
+
import type { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
+
import type { Location } from '../../ref-utils';
|
|
3
|
+
import type { UserContext } from '../../walk';
|
|
4
|
+
import type {
|
|
5
5
|
Oas2Definition,
|
|
6
6
|
Oas2Operation,
|
|
7
7
|
Oas2PathItem,
|
|
8
8
|
Oas2SecurityScheme,
|
|
9
9
|
} from '../../typings/swagger';
|
|
10
|
-
import {
|
|
10
|
+
import type {
|
|
11
11
|
Oas3Definition,
|
|
12
12
|
Oas3Operation,
|
|
13
13
|
Oas3PathItem,
|
package/src/rules/common/spec.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import type { Oas3Rule, Oas2Rule, Async2Rule, Async3Rule, ArazzoRule } from '../../visitors';
|
|
2
1
|
import { isNamedType, SpecExtension } from '../../types';
|
|
3
2
|
import { oasTypeOf, matchesJsonSchemaType, getSuggest, validateSchemaEnumType } from '../utils';
|
|
4
3
|
import { isRef } from '../../ref-utils';
|
|
5
4
|
import { isPlainObject } from '../../utils';
|
|
6
|
-
|
|
5
|
+
|
|
6
|
+
import type { UserContext } from '../../walk';
|
|
7
|
+
import type { Oas3Rule, Oas2Rule, Async2Rule, Async3Rule, ArazzoRule } from '../../visitors';
|
|
7
8
|
|
|
8
9
|
export const Spec: Oas3Rule | Oas2Rule | Async2Rule | Async3Rule | ArazzoRule = () => {
|
|
9
10
|
return {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
-
import { Oas2Definition, Oas2Tag } from '../../typings/swagger';
|
|
3
|
-
import { Oas3Definition, Oas3Tag } from '../../typings/openapi';
|
|
4
|
-
import { UserContext } from '../../walk';
|
|
1
|
+
import type { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
|
+
import type { Oas2Definition, Oas2Tag } from '../../typings/swagger';
|
|
3
|
+
import type { Oas3Definition, Oas3Tag } from '../../typings/openapi';
|
|
4
|
+
import type { UserContext } from '../../walk';
|
|
5
5
|
|
|
6
6
|
export const TagsAlphabetical: Oas3Rule | Oas2Rule = ({ ignoreCase = false }) => {
|
|
7
7
|
return {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { Oas3Rule } from '../visitors';
|
|
2
1
|
import { YamlParseError } from '../resolve';
|
|
3
|
-
|
|
4
|
-
import {
|
|
2
|
+
|
|
3
|
+
import type { Oas3Rule } from '../visitors';
|
|
4
|
+
import type { ResolveResult, Problem } from '../walk';
|
|
5
|
+
import type { Location } from '../ref-utils';
|
|
5
6
|
|
|
6
7
|
export const NoUnresolvedRefs: Oas3Rule = () => {
|
|
7
8
|
return {
|
|
@@ -21,7 +21,7 @@ describe('oas2 boolean-parameter-prefixes', () => {
|
|
|
21
21
|
const results = await lintDocument({
|
|
22
22
|
externalRefResolver: new BaseResolver(),
|
|
23
23
|
document,
|
|
24
|
-
config: await makeConfig({ 'boolean-parameter-prefixes': 'error' }),
|
|
24
|
+
config: await makeConfig({ rules: { 'boolean-parameter-prefixes': 'error' } }),
|
|
25
25
|
});
|
|
26
26
|
|
|
27
27
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -73,7 +73,7 @@ describe('oas2 boolean-parameter-prefixes', () => {
|
|
|
73
73
|
const results = await lintDocument({
|
|
74
74
|
externalRefResolver: new BaseResolver(),
|
|
75
75
|
document,
|
|
76
|
-
config: await makeConfig({ 'boolean-parameter-prefixes': 'error' }),
|
|
76
|
+
config: await makeConfig({ rules: { 'boolean-parameter-prefixes': 'error' } }),
|
|
77
77
|
});
|
|
78
78
|
|
|
79
79
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
|
|
@@ -98,9 +98,11 @@ describe('oas2 boolean-parameter-prefixes', () => {
|
|
|
98
98
|
externalRefResolver: new BaseResolver(),
|
|
99
99
|
document,
|
|
100
100
|
config: await makeConfig({
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
101
|
+
rules: {
|
|
102
|
+
'boolean-parameter-prefixes': {
|
|
103
|
+
severity: 'error',
|
|
104
|
+
prefixes: ['should'],
|
|
105
|
+
},
|
|
104
106
|
},
|
|
105
107
|
}),
|
|
106
108
|
});
|
|
@@ -29,9 +29,11 @@ describe('Oas2 response-contains-header', () => {
|
|
|
29
29
|
externalRefResolver: new BaseResolver(),
|
|
30
30
|
document,
|
|
31
31
|
config: await makeConfig({
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
rules: {
|
|
33
|
+
'response-contains-header': {
|
|
34
|
+
severity: 'error',
|
|
35
|
+
names: { '2xx': ['Content-Length'], '4xx': ['Content-Length'] },
|
|
36
|
+
},
|
|
35
37
|
},
|
|
36
38
|
}),
|
|
37
39
|
});
|
|
@@ -136,9 +138,11 @@ describe('Oas2 response-contains-header', () => {
|
|
|
136
138
|
externalRefResolver: new BaseResolver(),
|
|
137
139
|
document,
|
|
138
140
|
config: await makeConfig({
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
141
|
+
rules: {
|
|
142
|
+
'response-contains-header': {
|
|
143
|
+
severity: 'error',
|
|
144
|
+
names: { '2xx': ['Content-Length'], '400': ['Content-Length'] },
|
|
145
|
+
},
|
|
142
146
|
},
|
|
143
147
|
}),
|
|
144
148
|
});
|
|
@@ -164,8 +168,10 @@ describe('Oas2 response-contains-header', () => {
|
|
|
164
168
|
externalRefResolver: new BaseResolver(),
|
|
165
169
|
document,
|
|
166
170
|
config: await makeConfig({
|
|
167
|
-
|
|
168
|
-
|
|
171
|
+
rules: {
|
|
172
|
+
'response-contains-header': {
|
|
173
|
+
severity: 'error',
|
|
174
|
+
},
|
|
169
175
|
},
|
|
170
176
|
}),
|
|
171
177
|
});
|
|
@@ -35,9 +35,11 @@ describe('Oas2 response-contains-property', () => {
|
|
|
35
35
|
externalRefResolver: new BaseResolver(),
|
|
36
36
|
document,
|
|
37
37
|
config: await makeConfig({
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
rules: {
|
|
39
|
+
'response-contains-property': {
|
|
40
|
+
severity: 'error',
|
|
41
|
+
names: { '2xx': ['id'], '4xx': ['id'] },
|
|
42
|
+
},
|
|
41
43
|
},
|
|
42
44
|
}),
|
|
43
45
|
});
|
|
@@ -117,9 +119,11 @@ describe('Oas2 response-contains-property', () => {
|
|
|
117
119
|
externalRefResolver: new BaseResolver(),
|
|
118
120
|
document,
|
|
119
121
|
config: await makeConfig({
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
122
|
+
rules: {
|
|
123
|
+
'response-contains-property': {
|
|
124
|
+
severity: 'error',
|
|
125
|
+
names: { '200': ['id'], '4xx': ['id'] },
|
|
126
|
+
},
|
|
123
127
|
},
|
|
124
128
|
}),
|
|
125
129
|
});
|
|
@@ -145,8 +149,10 @@ describe('Oas2 response-contains-property', () => {
|
|
|
145
149
|
externalRefResolver: new BaseResolver(),
|
|
146
150
|
document,
|
|
147
151
|
config: await makeConfig({
|
|
148
|
-
|
|
149
|
-
|
|
152
|
+
rules: {
|
|
153
|
+
'response-contains-property': {
|
|
154
|
+
severity: 'error',
|
|
155
|
+
},
|
|
150
156
|
},
|
|
151
157
|
}),
|
|
152
158
|
});
|
package/src/rules/oas2/index.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Oas2Rule } from '../../visitors';
|
|
2
1
|
import { Spec } from '../common/spec';
|
|
3
2
|
import { NoInvalidSchemaExamples } from '../common/no-invalid-schema-examples';
|
|
4
3
|
import { NoInvalidParameterExamples } from '../common/no-invalid-parameter-examples';
|
|
5
4
|
import { InfoContact } from '../common/info-contact';
|
|
6
5
|
import { InfoLicense } from '../common/info-license';
|
|
7
6
|
import { InfoLicenseUrl } from '../common/info-license-url';
|
|
7
|
+
import { InfoLicenseStrict } from '../common/info-license-strict';
|
|
8
8
|
import { BooleanParameterPrefixes } from './boolean-parameter-prefixes';
|
|
9
9
|
import { TagDescription } from '../common/tag-description';
|
|
10
10
|
import { TagsAlphabetical } from '../common/tags-alphabetical';
|
|
@@ -43,7 +43,8 @@ import { RequiredStringPropertyMissingMinLength } from '../common/required-strin
|
|
|
43
43
|
import { SpecStrictRefs } from '../common/spec-strict-refs';
|
|
44
44
|
import { NoRequiredSchemaPropertiesUndefined } from '../common/no-required-schema-properties-undefined';
|
|
45
45
|
|
|
46
|
-
import type {
|
|
46
|
+
import type { Oas2Rule } from '../../visitors';
|
|
47
|
+
import type { Oas2RuleSet } from '../../oas-types';
|
|
47
48
|
|
|
48
49
|
export const rules: Oas2RuleSet<'built-in'> = {
|
|
49
50
|
spec: Spec as Oas2Rule,
|
|
@@ -52,6 +53,7 @@ export const rules: Oas2RuleSet<'built-in'> = {
|
|
|
52
53
|
'info-contact': InfoContact as Oas2Rule,
|
|
53
54
|
'info-license': InfoLicense as Oas2Rule,
|
|
54
55
|
'info-license-url': InfoLicenseUrl as Oas2Rule,
|
|
56
|
+
'info-license-strict': InfoLicenseStrict as Oas2Rule,
|
|
55
57
|
'tag-description': TagDescription as Oas2Rule,
|
|
56
58
|
'tags-alphabetical': TagsAlphabetical as Oas2Rule,
|
|
57
59
|
'paths-kebab-case': PathsKebabCase as Oas2Rule,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { validateMimeType } from '../../utils';
|
|
2
|
+
|
|
1
3
|
import type { Oas2Rule } from '../../visitors';
|
|
2
4
|
import type { UserContext } from '../../walk';
|
|
3
|
-
import { validateMimeType } from '../../utils';
|
|
4
5
|
|
|
5
6
|
export const RequestMimeType: Oas2Rule = ({ allowedValues }) => {
|
|
6
7
|
return {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { Oas2Rule } from '../../visitors';
|
|
2
|
-
import { UserContext } from '../../walk';
|
|
3
1
|
import { getMatchingStatusCodeRange } from '../../utils';
|
|
4
2
|
|
|
3
|
+
import type { Oas2Rule } from '../../visitors';
|
|
4
|
+
import type { UserContext } from '../../walk';
|
|
5
|
+
|
|
5
6
|
export const ResponseContainsProperty: Oas2Rule = (options) => {
|
|
6
7
|
const names: Record<string, string[]> = options.names || {};
|
|
7
8
|
let key: string | number;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { validateMimeType } from '../../utils';
|
|
2
|
+
|
|
1
3
|
import type { Oas2Rule } from '../../visitors';
|
|
2
4
|
import type { UserContext } from '../../walk';
|
|
3
|
-
import { validateMimeType } from '../../utils';
|
|
4
5
|
|
|
5
6
|
export const ResponseMimeType: Oas2Rule = ({ allowedValues }) => {
|
|
6
7
|
return {
|
|
@@ -30,7 +30,9 @@ describe('oas3 array-parameter-serialization', () => {
|
|
|
30
30
|
externalRefResolver: new BaseResolver(),
|
|
31
31
|
document,
|
|
32
32
|
config: await makeConfig({
|
|
33
|
-
|
|
33
|
+
rules: {
|
|
34
|
+
'array-parameter-serialization': { severity: 'error', in: ['query'] },
|
|
35
|
+
},
|
|
34
36
|
}),
|
|
35
37
|
});
|
|
36
38
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -73,7 +75,9 @@ describe('oas3 array-parameter-serialization', () => {
|
|
|
73
75
|
externalRefResolver: new BaseResolver(),
|
|
74
76
|
document,
|
|
75
77
|
config: await makeConfig({
|
|
76
|
-
|
|
78
|
+
rules: {
|
|
79
|
+
'array-parameter-serialization': { severity: 'error', in: ['query'] },
|
|
80
|
+
},
|
|
77
81
|
}),
|
|
78
82
|
});
|
|
79
83
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -126,7 +130,9 @@ describe('oas3 array-parameter-serialization', () => {
|
|
|
126
130
|
externalRefResolver: new BaseResolver(),
|
|
127
131
|
document,
|
|
128
132
|
config: await makeConfig({
|
|
129
|
-
|
|
133
|
+
rules: {
|
|
134
|
+
'array-parameter-serialization': { severity: 'error', in: ['query'] },
|
|
135
|
+
},
|
|
130
136
|
}),
|
|
131
137
|
});
|
|
132
138
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -170,7 +176,9 @@ describe('oas3 array-parameter-serialization', () => {
|
|
|
170
176
|
externalRefResolver: new BaseResolver(),
|
|
171
177
|
document,
|
|
172
178
|
config: await makeConfig({
|
|
173
|
-
|
|
179
|
+
rules: {
|
|
180
|
+
'array-parameter-serialization': { severity: 'error', in: ['query'] },
|
|
181
|
+
},
|
|
174
182
|
}),
|
|
175
183
|
});
|
|
176
184
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
|
|
@@ -194,7 +202,9 @@ describe('oas3 array-parameter-serialization', () => {
|
|
|
194
202
|
externalRefResolver: new BaseResolver(),
|
|
195
203
|
document,
|
|
196
204
|
config: await makeConfig({
|
|
197
|
-
|
|
205
|
+
rules: {
|
|
206
|
+
'array-parameter-serialization': { severity: 'error', in: ['query'] },
|
|
207
|
+
},
|
|
198
208
|
}),
|
|
199
209
|
});
|
|
200
210
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
|
|
@@ -226,7 +236,9 @@ describe('oas3 array-parameter-serialization', () => {
|
|
|
226
236
|
externalRefResolver: new BaseResolver(),
|
|
227
237
|
document,
|
|
228
238
|
config: await makeConfig({
|
|
229
|
-
|
|
239
|
+
rules: {
|
|
240
|
+
'array-parameter-serialization': { severity: 'error' },
|
|
241
|
+
},
|
|
230
242
|
}),
|
|
231
243
|
});
|
|
232
244
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -22,7 +22,7 @@ describe('oas3 boolean-parameter-prefixes', () => {
|
|
|
22
22
|
const results = await lintDocument({
|
|
23
23
|
externalRefResolver: new BaseResolver(),
|
|
24
24
|
document,
|
|
25
|
-
config: await makeConfig({ 'boolean-parameter-prefixes': 'error' }),
|
|
25
|
+
config: await makeConfig({ rules: { 'boolean-parameter-prefixes': 'error' } }),
|
|
26
26
|
});
|
|
27
27
|
|
|
28
28
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -74,7 +74,7 @@ describe('oas3 boolean-parameter-prefixes', () => {
|
|
|
74
74
|
const results = await lintDocument({
|
|
75
75
|
externalRefResolver: new BaseResolver(),
|
|
76
76
|
document,
|
|
77
|
-
config: await makeConfig({ 'boolean-parameter-prefixes': 'error' }),
|
|
77
|
+
config: await makeConfig({ rules: { 'boolean-parameter-prefixes': 'error' } }),
|
|
78
78
|
});
|
|
79
79
|
|
|
80
80
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
|
|
@@ -99,9 +99,11 @@ describe('oas3 boolean-parameter-prefixes', () => {
|
|
|
99
99
|
externalRefResolver: new BaseResolver(),
|
|
100
100
|
document,
|
|
101
101
|
config: await makeConfig({
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
102
|
+
rules: {
|
|
103
|
+
'boolean-parameter-prefixes': {
|
|
104
|
+
severity: 'error',
|
|
105
|
+
prefixes: ['should'],
|
|
106
|
+
},
|
|
105
107
|
},
|
|
106
108
|
}),
|
|
107
109
|
});
|
|
@@ -24,7 +24,7 @@ describe('Oas3 as3-no-server-variables-empty-enum', () => {
|
|
|
24
24
|
const results = await lintDocument({
|
|
25
25
|
externalRefResolver: new BaseResolver(),
|
|
26
26
|
document,
|
|
27
|
-
config: await makeConfig({ 'no-server-variables-empty-enum': 'error' }),
|
|
27
|
+
config: await makeConfig({ rules: { 'no-server-variables-empty-enum': 'error' } }),
|
|
28
28
|
});
|
|
29
29
|
|
|
30
30
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -78,7 +78,7 @@ describe('Oas3 as3-no-server-variables-empty-enum', () => {
|
|
|
78
78
|
const results = await lintDocument({
|
|
79
79
|
externalRefResolver: new BaseResolver(),
|
|
80
80
|
document,
|
|
81
|
-
config: await makeConfig({ 'no-server-variables-empty-enum': 'error' }),
|
|
81
|
+
config: await makeConfig({ rules: { 'no-server-variables-empty-enum': 'error' } }),
|
|
82
82
|
});
|
|
83
83
|
|
|
84
84
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
|
|
@@ -117,7 +117,7 @@ describe('Oas3 as3-no-server-variables-empty-enum', () => {
|
|
|
117
117
|
const results = await lintDocument({
|
|
118
118
|
externalRefResolver: new BaseResolver(),
|
|
119
119
|
document,
|
|
120
|
-
config: await makeConfig({ 'no-server-variables-empty-enum': 'error' }),
|
|
120
|
+
config: await makeConfig({ rules: { 'no-server-variables-empty-enum': 'error' } }),
|
|
121
121
|
});
|
|
122
122
|
|
|
123
123
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
|
|
@@ -141,7 +141,7 @@ describe('Oas3 as3-no-server-variables-empty-enum', () => {
|
|
|
141
141
|
const results = await lintDocument({
|
|
142
142
|
externalRefResolver: new BaseResolver(),
|
|
143
143
|
document,
|
|
144
|
-
config: await makeConfig({ 'no-server-variables-empty-enum': 'error' }),
|
|
144
|
+
config: await makeConfig({ rules: { 'no-server-variables-empty-enum': 'error' } }),
|
|
145
145
|
});
|
|
146
146
|
|
|
147
147
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
|
|
@@ -168,7 +168,7 @@ describe('Oas3 as3-no-server-variables-empty-enum', () => {
|
|
|
168
168
|
const results = await lintDocument({
|
|
169
169
|
externalRefResolver: new BaseResolver(),
|
|
170
170
|
document,
|
|
171
|
-
config: await makeConfig({ 'no-server-variables-empty-enum': 'error' }),
|
|
171
|
+
config: await makeConfig({ rules: { 'no-server-variables-empty-enum': 'error' } }),
|
|
172
172
|
});
|
|
173
173
|
|
|
174
174
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
|
|
@@ -197,7 +197,7 @@ describe('Oas3 as3-no-server-variables-empty-enum', () => {
|
|
|
197
197
|
const results = await lintDocument({
|
|
198
198
|
externalRefResolver: new BaseResolver(),
|
|
199
199
|
document,
|
|
200
|
-
config: await makeConfig({ 'no-server-variables-empty-enum': 'error' }),
|
|
200
|
+
config: await makeConfig({ rules: { 'no-server-variables-empty-enum': 'error' } }),
|
|
201
201
|
});
|
|
202
202
|
|
|
203
203
|
expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
|