@redocly/openapi-core 1.19.0 → 1.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -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 +66 -24
- 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 +77 -19
- 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,2 +1,2 @@
|
|
|
1
|
-
import { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
1
|
+
import type { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
2
|
export declare const TagDescription: Oas3Rule | Oas2Rule;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
1
|
+
import type { Oas3Rule, Oas2Rule } from '../../visitors';
|
|
2
2
|
export declare const TagsAlphabetical: Oas3Rule | Oas2Rule;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Oas3Rule } from '../visitors';
|
|
2
|
-
import { ResolveResult, Problem } from '../walk';
|
|
3
|
-
import { Location } from '../ref-utils';
|
|
1
|
+
import type { Oas3Rule } from '../visitors';
|
|
2
|
+
import type { ResolveResult, Problem } from '../walk';
|
|
3
|
+
import type { Location } from '../ref-utils';
|
|
4
4
|
export declare const NoUnresolvedRefs: Oas3Rule;
|
|
5
5
|
export declare function reportUnresolvedRef(resolved: ResolveResult<any>, report: (m: Problem) => void, location: Location): void;
|
package/lib/rules/oas2/index.js
CHANGED
|
@@ -7,6 +7,7 @@ const no_invalid_parameter_examples_1 = require("../common/no-invalid-parameter-
|
|
|
7
7
|
const info_contact_1 = require("../common/info-contact");
|
|
8
8
|
const info_license_1 = require("../common/info-license");
|
|
9
9
|
const info_license_url_1 = require("../common/info-license-url");
|
|
10
|
+
const info_license_strict_1 = require("../common/info-license-strict");
|
|
10
11
|
const boolean_parameter_prefixes_1 = require("./boolean-parameter-prefixes");
|
|
11
12
|
const tag_description_1 = require("../common/tag-description");
|
|
12
13
|
const tags_alphabetical_1 = require("../common/tags-alphabetical");
|
|
@@ -51,6 +52,7 @@ exports.rules = {
|
|
|
51
52
|
'info-contact': info_contact_1.InfoContact,
|
|
52
53
|
'info-license': info_license_1.InfoLicense,
|
|
53
54
|
'info-license-url': info_license_url_1.InfoLicenseUrl,
|
|
55
|
+
'info-license-strict': info_license_strict_1.InfoLicenseStrict,
|
|
54
56
|
'tag-description': tag_description_1.TagDescription,
|
|
55
57
|
'tags-alphabetical': tags_alphabetical_1.TagsAlphabetical,
|
|
56
58
|
'paths-kebab-case': paths_kebab_case_1.PathsKebabCase,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Oas2Rule } from '../../visitors';
|
|
1
|
+
import type { Oas2Rule } from '../../visitors';
|
|
2
2
|
export declare const ResponseContainsProperty: Oas2Rule;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Oas2Rule, Oas3Rule } from '../../visitors';
|
|
1
|
+
import type { Oas2Rule, Oas3Rule } from '../../visitors';
|
|
2
2
|
export declare const ComponentNameUnique: Oas3Rule | Oas2Rule;
|
package/lib/rules/oas3/index.js
CHANGED
|
@@ -21,6 +21,7 @@ const tag_description_1 = require("../common/tag-description");
|
|
|
21
21
|
const info_contact_1 = require("../common/info-contact");
|
|
22
22
|
const info_license_1 = require("../common/info-license");
|
|
23
23
|
const info_license_url_1 = require("../common/info-license-url");
|
|
24
|
+
const info_license_strict_1 = require("../common/info-license-strict");
|
|
24
25
|
const operation_description_1 = require("../common/operation-description");
|
|
25
26
|
const no_unused_components_1 = require("./no-unused-components");
|
|
26
27
|
const path_not_include_query_1 = require("../common/path-not-include-query");
|
|
@@ -61,6 +62,7 @@ exports.rules = {
|
|
|
61
62
|
'info-contact': info_contact_1.InfoContact,
|
|
62
63
|
'info-license': info_license_1.InfoLicense,
|
|
63
64
|
'info-license-url': info_license_url_1.InfoLicenseUrl,
|
|
65
|
+
'info-license-strict': info_license_strict_1.InfoLicenseStrict,
|
|
64
66
|
'operation-2xx-response': operation_2xx_response_1.Operation2xxResponse,
|
|
65
67
|
'operation-4xx-response': operation_4xx_response_1.Operation4xxResponse,
|
|
66
68
|
'operation-4xx-problem-details-rfc7807': operation_4xx_problem_details_rfc7807_1.Operation4xxProblemDetailsRfc7807,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Oas3Rule } from '../../visitors';
|
|
1
|
+
import type { Oas3Rule } from '../../visitors';
|
|
2
2
|
export declare const NoEmptyServers: Oas3Rule;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Oas3Rule } from '../../visitors';
|
|
1
|
+
import type { Oas3Rule } from '../../visitors';
|
|
2
2
|
export declare const NoExampleValueAndExternalValue: Oas3Rule;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Oas3Rule } from '../../visitors';
|
|
1
|
+
import type { Oas3Rule } from '../../visitors';
|
|
2
2
|
export declare const ValidContentExamples: Oas3Rule;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Oas3Rule } from '../../visitors';
|
|
1
|
+
import type { Oas3Rule } from '../../visitors';
|
|
2
2
|
export declare const NoServerExample: Oas3Rule;
|
|
@@ -4,6 +4,7 @@ exports.NoServerExample = void 0;
|
|
|
4
4
|
const NoServerExample = () => {
|
|
5
5
|
return {
|
|
6
6
|
Server(server, { report, location }) {
|
|
7
|
+
// eslint-disable-next-line no-useless-escape
|
|
7
8
|
const pattern = /^(.*[\/.])?(example\.com|localhost)([\/:?].*|$)/;
|
|
8
9
|
if (server.url && pattern.test(server.url)) {
|
|
9
10
|
report({
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Oas3Rule } from '../../visitors';
|
|
1
|
+
import type { Oas3Rule } from '../../visitors';
|
|
2
2
|
export declare const NoServerTrailingSlash: Oas3Rule;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Oas3Rule } from '../../visitors';
|
|
1
|
+
import type { Oas3Rule } from '../../visitors';
|
|
2
2
|
export declare const NoServerVariablesEmptyEnum: Oas3Rule;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Oas3Rule } from '../../visitors';
|
|
1
|
+
import type { Oas3Rule } from '../../visitors';
|
|
2
2
|
export declare const NoUndefinedServerVariable: Oas3Rule;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Oas3Rule } from '../../visitors';
|
|
1
|
+
import type { Oas3Rule } from '../../visitors';
|
|
2
2
|
export declare const NoUnusedComponents: Oas3Rule;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Oas3Rule } from '../../visitors';
|
|
1
|
+
import type { Oas3Rule } from '../../visitors';
|
|
2
2
|
export declare const ResponseContainsProperty: Oas3Rule;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Oas3Rule } from '../../visitors';
|
|
1
|
+
import type { Oas3Rule } from '../../visitors';
|
|
2
2
|
export declare const SpecComponentsInvalidMapName: Oas3Rule;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Oas3Parameter, OasRef, Oas3Tag } from '../../typings/openapi';
|
|
2
|
-
import { Oas2Parameter } from '../../typings/swagger';
|
|
3
|
-
import { StatsAccumulator } from '../../typings/common';
|
|
1
|
+
import type { Oas3Parameter, OasRef, Oas3Tag } from '../../typings/openapi';
|
|
2
|
+
import type { Oas2Parameter } from '../../typings/swagger';
|
|
3
|
+
import type { StatsAccumulator } from '../../typings/common';
|
|
4
4
|
export declare const Stats: (statsAccumulator: StatsAccumulator) => {
|
|
5
5
|
ExternalDocs: {
|
|
6
6
|
leave(): void;
|
package/lib/rules/other/stats.js
CHANGED
|
@@ -34,9 +34,11 @@ const Stats = (statsAccumulator) => {
|
|
|
34
34
|
WebhooksMap: {
|
|
35
35
|
Operation: {
|
|
36
36
|
leave(operation) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
statsAccumulator.webhooks.total++;
|
|
38
|
+
operation.tags &&
|
|
39
|
+
operation.tags.forEach((tag) => {
|
|
40
|
+
statsAccumulator.tags.items.add(tag);
|
|
41
|
+
});
|
|
40
42
|
},
|
|
41
43
|
},
|
|
42
44
|
},
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ParametersNoBodyInsideIn = void 0;
|
|
4
|
+
const ParametersNoBodyInsideIn = () => {
|
|
5
|
+
return {
|
|
6
|
+
Parameter: {
|
|
7
|
+
enter(parameter, { report, location }) {
|
|
8
|
+
if (parameter.in === 'body') {
|
|
9
|
+
report({
|
|
10
|
+
message: 'The `body` value of the `in` property is not supported by Spot.',
|
|
11
|
+
location: location.child(['in']),
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
exports.ParametersNoBodyInsideIn = ParametersNoBodyInsideIn;
|
package/lib/rules/utils.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { UserContext } from '../walk';
|
|
2
1
|
import { Location } from '../ref-utils';
|
|
3
|
-
import { Oas3Schema, Oas3_1Schema, Referenced } from '../typings/openapi';
|
|
2
|
+
import type { Oas3Schema, Oas3_1Schema, Referenced } from '../typings/openapi';
|
|
3
|
+
import type { UserContext } from '../walk';
|
|
4
4
|
export declare function oasTypeOf(value: unknown): "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" | "integer" | "array" | "null";
|
|
5
5
|
/**
|
|
6
6
|
* Checks if value matches specified JSON schema type
|
|
@@ -11,8 +11,10 @@ export declare function oasTypeOf(value: unknown): "string" | "number" | "bigint
|
|
|
11
11
|
*/
|
|
12
12
|
export declare function matchesJsonSchemaType(value: unknown, type: string, nullable: boolean): boolean;
|
|
13
13
|
export declare function missingRequiredField(type: string, field: string): string;
|
|
14
|
+
export declare function missingRequiredOneOfFields(type: string, fields: string[]): string;
|
|
14
15
|
export declare function fieldNonEmpty(type: string, field: string): string;
|
|
15
16
|
export declare function validateDefinedAndNonEmpty(fieldName: string, value: any, ctx: UserContext): void;
|
|
17
|
+
export declare function validateOneOfDefinedAndNonEmpty(fieldNames: string[], value: any, ctx: UserContext): void;
|
|
16
18
|
export declare function getSuggest(given: string, variants: string[]): string[];
|
|
17
19
|
export declare function validateExample(example: any, schema: Referenced<Oas3Schema | Oas3_1Schema>, dataLoc: Location, { resolve, location, report }: UserContext, allowAdditionalProperties: boolean): void;
|
|
18
20
|
export declare function getAdditionalPropertiesOption(opts: Record<string, any>): boolean;
|
package/lib/rules/utils.js
CHANGED
|
@@ -3,8 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.oasTypeOf = oasTypeOf;
|
|
4
4
|
exports.matchesJsonSchemaType = matchesJsonSchemaType;
|
|
5
5
|
exports.missingRequiredField = missingRequiredField;
|
|
6
|
+
exports.missingRequiredOneOfFields = missingRequiredOneOfFields;
|
|
6
7
|
exports.fieldNonEmpty = fieldNonEmpty;
|
|
7
8
|
exports.validateDefinedAndNonEmpty = validateDefinedAndNonEmpty;
|
|
9
|
+
exports.validateOneOfDefinedAndNonEmpty = validateOneOfDefinedAndNonEmpty;
|
|
8
10
|
exports.getSuggest = getSuggest;
|
|
9
11
|
exports.validateExample = validateExample;
|
|
10
12
|
exports.getAdditionalPropertiesOption = getAdditionalPropertiesOption;
|
|
@@ -55,11 +57,16 @@ function matchesJsonSchemaType(value, type, nullable) {
|
|
|
55
57
|
function missingRequiredField(type, field) {
|
|
56
58
|
return `${type} object should contain \`${field}\` field.`;
|
|
57
59
|
}
|
|
60
|
+
function missingRequiredOneOfFields(type, fields) {
|
|
61
|
+
return `${type} object should contain one of the fields: ${fields
|
|
62
|
+
.map((field) => `\`${field}\``)
|
|
63
|
+
.join(', ')}.`;
|
|
64
|
+
}
|
|
58
65
|
function fieldNonEmpty(type, field) {
|
|
59
66
|
return `${type} object \`${field}\` must be non-empty string.`;
|
|
60
67
|
}
|
|
61
68
|
function validateDefinedAndNonEmpty(fieldName, value, ctx) {
|
|
62
|
-
if (
|
|
69
|
+
if (!(0, utils_1.isPlainObject)(value)) {
|
|
63
70
|
return;
|
|
64
71
|
}
|
|
65
72
|
if (value[fieldName] === undefined) {
|
|
@@ -75,6 +82,25 @@ function validateDefinedAndNonEmpty(fieldName, value, ctx) {
|
|
|
75
82
|
});
|
|
76
83
|
}
|
|
77
84
|
}
|
|
85
|
+
function validateOneOfDefinedAndNonEmpty(fieldNames, value, ctx) {
|
|
86
|
+
if (!(0, utils_1.isPlainObject)(value)) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (!fieldNames.some((fieldName) => value.hasOwnProperty(fieldName))) {
|
|
90
|
+
ctx.report({
|
|
91
|
+
message: missingRequiredOneOfFields(ctx.type.name, fieldNames),
|
|
92
|
+
location: ctx.location.key(),
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
for (const fieldName of fieldNames) {
|
|
96
|
+
if (value.hasOwnProperty(fieldName) && !value[fieldName]) {
|
|
97
|
+
ctx.report({
|
|
98
|
+
message: fieldNonEmpty(ctx.type.name, fieldName),
|
|
99
|
+
location: ctx.location.child([fieldName]).key(),
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
78
104
|
function getSuggest(given, variants) {
|
|
79
105
|
if (given === null)
|
|
80
106
|
return variants;
|