@redocly/openapi-core 1.18.1 → 1.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/__tests__/utils.ts +14 -7
- package/lib/benchmark/benches/lint-with-many-rules.bench.d.ts +1 -0
- package/lib/benchmark/benches/lint-with-many-rules.bench.js +7 -3
- package/lib/benchmark/benches/lint-with-nested-rule.bench.d.ts +1 -0
- package/lib/benchmark/benches/lint-with-nested-rule.bench.js +7 -3
- package/lib/benchmark/benches/lint-with-no-rules.bench.d.ts +1 -0
- package/lib/benchmark/benches/lint-with-no-rules.bench.js +7 -3
- package/lib/benchmark/benches/lint-with-top-level-rule-report.bench.d.ts +1 -0
- package/lib/benchmark/benches/lint-with-top-level-rule-report.bench.js +19 -15
- package/lib/benchmark/benches/lint-with-top-level-rule.bench.d.ts +1 -0
- package/lib/benchmark/benches/lint-with-top-level-rule.bench.js +18 -14
- package/lib/benchmark/benches/recommended-oas3.bench.js +2 -2
- package/lib/benchmark/benches/resolve-with-no-external.bench.js +2 -2
- package/lib/benchmark/utils.d.ts +3 -3
- package/lib/benchmark/utils.js +10 -7
- package/lib/bundle.d.ts +2 -2
- package/lib/bundle.js +127 -120
- package/lib/config/all.js +13 -1
- package/lib/config/builtIn.js +18 -17
- package/lib/config/config-resolvers.d.ts +1 -1
- package/lib/config/config-resolvers.js +241 -158
- package/lib/config/config.d.ts +4 -3
- package/lib/config/config.js +53 -34
- package/lib/config/load.d.ts +1 -1
- package/lib/config/load.js +105 -117
- package/lib/config/minimal.js +13 -0
- package/lib/config/recommended-strict.js +14 -1
- package/lib/config/recommended.js +14 -1
- package/lib/config/rules.d.ts +3 -3
- package/lib/config/rules.js +1 -2
- package/lib/config/types.d.ts +17 -4
- package/lib/config/utils.d.ts +3 -1
- package/lib/config/utils.js +78 -49
- package/lib/decorators/async3/index.d.ts +1 -0
- package/lib/decorators/async3/index.js +4 -0
- package/lib/decorators/common/filters/filter-helper.d.ts +1 -1
- package/lib/decorators/common/filters/filter-helper.js +2 -3
- package/lib/decorators/common/filters/filter-in.d.ts +1 -1
- package/lib/decorators/common/filters/filter-in.js +1 -1
- package/lib/decorators/common/filters/filter-out.d.ts +1 -1
- package/lib/decorators/common/filters/filter-out.js +1 -1
- package/lib/decorators/common/info-description-override.d.ts +1 -1
- package/lib/decorators/common/info-override.d.ts +1 -1
- package/lib/decorators/common/info-override.js +1 -12
- package/lib/decorators/common/media-type-examples-override.d.ts +1 -1
- package/lib/decorators/common/media-type-examples-override.js +8 -2
- package/lib/decorators/common/operation-description-override.d.ts +1 -1
- package/lib/decorators/common/registry-dependencies.d.ts +1 -1
- package/lib/decorators/common/remove-x-internal.d.ts +1 -1
- package/lib/decorators/common/remove-x-internal.js +4 -5
- package/lib/decorators/common/tag-description-override.d.ts +1 -1
- package/lib/decorators/oas2/index.d.ts +1 -1
- package/lib/decorators/oas2/remove-unused-components.js +1 -2
- package/lib/decorators/oas3/index.d.ts +1 -1
- package/lib/decorators/oas3/remove-unused-components.js +1 -2
- package/lib/env.d.ts +0 -1
- package/lib/env.js +1 -1
- package/lib/format/codeframes.d.ts +1 -1
- package/lib/format/codeframes.js +10 -8
- package/lib/format/format.d.ts +1 -1
- package/lib/format/format.js +24 -16
- package/lib/index.d.ts +2 -1
- package/lib/index.js +6 -4
- package/lib/js-yaml/index.d.ts +1 -1
- package/lib/js-yaml/index.js +1 -1
- package/lib/lint.d.ts +3 -1
- package/lib/lint.js +92 -99
- package/lib/logger.js +2 -2
- package/lib/oas-types.d.ts +9 -5
- package/lib/oas-types.js +22 -12
- package/lib/redocly/domains.d.ts +1 -1
- package/lib/redocly/domains.js +6 -6
- package/lib/redocly/index.d.ts +1 -1
- package/lib/redocly/index.js +60 -73
- package/lib/redocly/registry-api.js +64 -82
- package/lib/ref-utils.d.ts +2 -2
- package/lib/ref-utils.js +14 -13
- package/lib/resolve.d.ts +2 -2
- package/lib/resolve.js +186 -205
- package/lib/rules/ajv.d.ts +1 -1
- package/lib/rules/ajv.js +10 -8
- package/lib/rules/arazzo/index.js +2 -0
- package/lib/rules/async2/channels-kebab-case.d.ts +1 -1
- package/lib/rules/async2/index.js +2 -0
- package/lib/rules/async2/no-channel-trailing-slash.d.ts +1 -1
- package/lib/rules/async3/channels-kebab-case.d.ts +2 -0
- package/lib/rules/async3/channels-kebab-case.js +19 -0
- package/lib/rules/async3/index.d.ts +3 -0
- package/lib/rules/async3/index.js +24 -0
- package/lib/rules/async3/no-channel-trailing-slash.d.ts +2 -0
- package/lib/rules/async3/no-channel-trailing-slash.js +16 -0
- package/lib/rules/common/assertions/asserts.d.ts +2 -2
- package/lib/rules/common/assertions/asserts.js +5 -5
- package/lib/rules/common/assertions/index.d.ts +4 -4
- package/lib/rules/common/assertions/utils.d.ts +1 -1
- package/lib/rules/common/assertions/utils.js +43 -28
- package/lib/rules/common/info-contact.d.ts +1 -1
- package/lib/rules/common/info-license-strict.d.ts +2 -0
- package/lib/rules/common/info-license-strict.js +26 -0
- package/lib/rules/common/info-license-url.d.ts +1 -1
- package/lib/rules/common/info-license.d.ts +1 -1
- package/lib/rules/common/no-ambiguous-paths.d.ts +1 -1
- package/lib/rules/common/no-enum-type-mismatch.d.ts +1 -1
- package/lib/rules/common/no-http-verbs-in-paths.d.ts +1 -1
- package/lib/rules/common/no-identical-paths.d.ts +1 -1
- package/lib/rules/common/no-invalid-parameter-examples.js +1 -2
- package/lib/rules/common/no-invalid-schema-examples.js +1 -2
- package/lib/rules/common/no-path-trailing-slash.d.ts +1 -1
- package/lib/rules/common/no-required-schema-properties-undefined.d.ts +1 -1
- package/lib/rules/common/no-required-schema-properties-undefined.js +1 -2
- package/lib/rules/common/operation-2xx-response.d.ts +1 -1
- package/lib/rules/common/operation-4xx-response.d.ts +1 -1
- package/lib/rules/common/operation-description.d.ts +1 -1
- package/lib/rules/common/operation-operationId-unique.d.ts +1 -1
- package/lib/rules/common/operation-operationId-url-safe.d.ts +1 -1
- package/lib/rules/common/operation-operationId-url-safe.js +1 -0
- package/lib/rules/common/operation-operationId.d.ts +1 -1
- package/lib/rules/common/operation-parameters-unique.d.ts +1 -1
- package/lib/rules/common/operation-singular-tag.d.ts +1 -1
- package/lib/rules/common/operation-summary.d.ts +1 -1
- package/lib/rules/common/operation-tag-defined.d.ts +1 -1
- package/lib/rules/common/operation-tag-defined.js +1 -2
- package/lib/rules/common/parameter-description.d.ts +1 -1
- package/lib/rules/common/path-declaration-must-exist.d.ts +1 -1
- package/lib/rules/common/path-excludes-patterns.d.ts +1 -1
- package/lib/rules/common/path-http-verbs-order.d.ts +1 -1
- package/lib/rules/common/path-http-verbs-order.js +1 -1
- package/lib/rules/common/path-not-include-query.d.ts +1 -1
- package/lib/rules/common/path-params-defined.d.ts +1 -1
- package/lib/rules/common/path-segment-plural.d.ts +1 -1
- package/lib/rules/common/paths-kebab-case.d.ts +1 -1
- package/lib/rules/common/required-string-property-missing-min-length.d.ts +1 -1
- package/lib/rules/common/required-string-property-missing-min-length.js +2 -2
- package/lib/rules/common/response-contains-header.d.ts +1 -1
- package/lib/rules/common/response-contains-header.js +2 -2
- package/lib/rules/common/security-defined.d.ts +1 -1
- package/lib/rules/common/security-defined.js +3 -7
- package/lib/rules/common/spec-strict-refs.d.ts +1 -1
- package/lib/rules/common/spec.d.ts +2 -2
- package/lib/rules/common/spec.js +6 -7
- package/lib/rules/common/tag-description.d.ts +1 -1
- package/lib/rules/common/tags-alphabetical.d.ts +1 -1
- package/lib/rules/no-unresolved-refs.d.ts +3 -3
- package/lib/rules/no-unresolved-refs.js +3 -4
- package/lib/rules/oas2/boolean-parameter-prefixes.d.ts +1 -1
- package/lib/rules/oas2/index.d.ts +1 -1
- package/lib/rules/oas2/index.js +2 -0
- package/lib/rules/oas2/response-contains-property.d.ts +1 -1
- package/lib/rules/oas2/response-contains-property.js +1 -2
- package/lib/rules/oas3/array-parameter-serialization.d.ts +1 -1
- package/lib/rules/oas3/array-parameter-serialization.js +1 -2
- package/lib/rules/oas3/boolean-parameter-prefixes.d.ts +1 -1
- package/lib/rules/oas3/component-name-unique.d.ts +1 -1
- package/lib/rules/oas3/component-name-unique.js +2 -4
- package/lib/rules/oas3/index.d.ts +1 -1
- package/lib/rules/oas3/index.js +2 -0
- package/lib/rules/oas3/no-empty-servers.d.ts +1 -1
- package/lib/rules/oas3/no-example-value-and-externalValue.d.ts +1 -1
- package/lib/rules/oas3/no-invalid-media-type-examples.d.ts +1 -1
- package/lib/rules/oas3/no-invalid-media-type-examples.js +1 -2
- package/lib/rules/oas3/no-server-example.com.d.ts +1 -1
- package/lib/rules/oas3/no-server-example.com.js +1 -0
- package/lib/rules/oas3/no-server-trailing-slash.d.ts +1 -1
- package/lib/rules/oas3/no-server-variables-empty-enum.d.ts +1 -1
- package/lib/rules/oas3/no-server-variables-empty-enum.js +1 -2
- package/lib/rules/oas3/no-undefined-server-variable.d.ts +1 -1
- package/lib/rules/oas3/no-undefined-server-variable.js +2 -3
- package/lib/rules/oas3/no-unused-components.d.ts +1 -1
- package/lib/rules/oas3/no-unused-components.js +1 -2
- package/lib/rules/oas3/response-contains-property.d.ts +1 -1
- package/lib/rules/oas3/response-contains-property.js +1 -2
- package/lib/rules/oas3/spec-components-invalid-map-name.d.ts +1 -1
- package/lib/rules/other/stats.d.ts +3 -3
- package/lib/rules/other/stats.js +5 -3
- package/lib/rules/spot/parameters-no-body-inside-in.d.ts +2 -0
- package/lib/rules/spot/parameters-no-body-inside-in.js +18 -0
- package/lib/rules/utils.d.ts +4 -2
- package/lib/rules/utils.js +41 -13
- package/lib/types/arazzo.d.ts +1 -2275
- package/lib/types/arazzo.js +246 -309
- package/lib/types/asyncapi2.d.ts +17 -0
- package/lib/types/{asyncapi.js → asyncapi2.js} +59 -53
- package/lib/types/asyncapi3.d.ts +2 -0
- package/lib/types/asyncapi3.js +347 -0
- package/lib/types/index.js +19 -10
- package/lib/types/json-schema-adapter.d.ts +1 -1
- package/lib/types/json-schema-adapter.js +4 -18
- package/lib/types/oas2.js +6 -6
- package/lib/types/oas3.d.ts +4 -0
- package/lib/types/oas3.js +19 -19
- package/lib/types/oas3_1.d.ts +3 -0
- package/lib/types/oas3_1.js +20 -14
- package/lib/types/redocly-yaml.d.ts +8 -6
- package/lib/types/redocly-yaml.js +135 -36
- package/lib/typings/arazzo.d.ts +145 -27
- package/lib/typings/asyncapi3.d.ts +53 -0
- package/lib/typings/asyncapi3.js +2 -0
- package/lib/typings/common.d.ts +1 -1
- package/lib/typings/swagger.d.ts +2 -2
- package/lib/utils.d.ts +4 -3
- package/lib/utils.js +55 -72
- package/lib/visitors.d.ts +29 -1
- package/lib/visitors.js +21 -8
- package/lib/walk.d.ts +3 -3
- package/lib/walk.js +30 -23
- package/package.json +3 -3
- package/src/__tests__/bundle.test.ts +144 -2
- package/src/__tests__/lint.test.ts +29 -21
- package/src/__tests__/walk.test.ts +25 -25
- package/src/benchmark/benches/lint-with-many-rules.bench.ts +7 -1
- package/src/benchmark/benches/lint-with-nested-rule.bench.ts +7 -1
- package/src/benchmark/benches/lint-with-no-rules.bench.ts +8 -1
- package/src/benchmark/benches/lint-with-top-level-rule-report.bench.ts +18 -13
- package/src/benchmark/benches/lint-with-top-level-rule.bench.ts +17 -11
- package/src/benchmark/fork.js +4 -0
- package/src/benchmark/utils.ts +6 -5
- package/src/bundle.ts +19 -4
- package/src/config/__tests__/__snapshots__/config-resolvers.test.ts.snap +32 -2
- package/src/config/__tests__/__snapshots__/config.test.ts.snap +24 -0
- package/src/config/__tests__/config-resolvers.test.ts +82 -0
- package/src/config/__tests__/config.test.ts +11 -0
- package/src/config/__tests__/fixtures/resolve-config/local-config-with-commonjs-export-function.yaml +2 -0
- package/src/config/__tests__/fixtures/resolve-config/local-config-with-esm.yaml +2 -0
- package/src/config/__tests__/fixtures/resolve-config/plugin-esm.mjs +10 -0
- package/src/config/__tests__/fixtures/resolve-config/plugin-with-export-function.cjs +10 -0
- package/src/config/__tests__/resolve-plugins.test.ts +4 -1
- package/src/config/all.ts +13 -1
- package/src/config/builtIn.ts +9 -8
- package/src/config/config-resolvers.ts +92 -21
- package/src/config/config.ts +31 -13
- package/src/config/load.ts +2 -2
- package/src/config/minimal.ts +13 -0
- package/src/config/recommended-strict.ts +14 -1
- package/src/config/recommended.ts +14 -1
- package/src/config/rules.ts +12 -4
- package/src/config/types.ts +34 -5
- package/src/config/utils.ts +28 -2
- package/src/decorators/__tests__/filter-in.test.ts +29 -26
- package/src/decorators/__tests__/filter-out.test.ts +32 -23
- package/src/decorators/__tests__/media-type-examples-override.test.ts +45 -45
- package/src/decorators/__tests__/remove-x-internal.test.ts +8 -5
- package/src/decorators/async3/index.ts +1 -0
- package/src/decorators/common/filters/filter-helper.ts +2 -1
- package/src/decorators/common/filters/filter-in.ts +2 -1
- package/src/decorators/common/filters/filter-out.ts +2 -1
- package/src/decorators/common/info-description-override.ts +3 -2
- package/src/decorators/common/info-override.ts +1 -1
- package/src/decorators/common/media-type-examples-override.ts +4 -3
- package/src/decorators/common/operation-description-override.ts +5 -4
- package/src/decorators/common/registry-dependencies.ts +2 -2
- package/src/decorators/common/remove-x-internal.ts +5 -4
- package/src/decorators/common/tag-description-override.ts +3 -2
- package/src/decorators/oas2/__tests__/remove-unused-components.test.ts +3 -3
- package/src/decorators/oas2/index.ts +2 -1
- package/src/decorators/oas2/remove-unused-components.ts +1 -1
- package/src/decorators/oas3/__tests__/remove-unused-components.test.ts +4 -4
- package/src/decorators/oas3/index.ts +2 -1
- package/src/decorators/oas3/remove-unused-components.ts +1 -1
- package/src/format/codeframes.ts +2 -1
- package/src/format/format.ts +9 -4
- package/src/index.ts +2 -1
- package/src/js-yaml/index.ts +3 -1
- package/src/lint.ts +28 -4
- package/src/logger.ts +2 -2
- package/src/oas-types.ts +41 -22
- package/src/redocly/domains.ts +1 -1
- package/src/redocly/index.ts +3 -3
- package/src/redocly/registry-api.ts +5 -3
- package/src/ref-utils.ts +4 -2
- package/src/resolve.ts +6 -4
- package/src/rules/__tests__/no-unresolved-refs.test.ts +21 -7
- package/src/rules/ajv.ts +2 -1
- package/src/rules/arazzo/__tests__/parameters-no-body-inside-in.test.ts +76 -0
- package/src/rules/arazzo/index.ts +6 -3
- package/src/rules/async2/__tests__/channels-kebab-case.test.ts +9 -5
- package/src/rules/async2/__tests__/no-channel-trailing-slash.test.ts +3 -3
- package/src/rules/async2/channels-kebab-case.ts +2 -2
- package/src/rules/async2/index.ts +9 -6
- package/src/rules/async2/no-channel-trailing-slash.ts +2 -2
- package/src/rules/async3/__tests__/channels-kebab-case.test.ts +145 -0
- package/src/rules/async3/__tests__/no-channel-trailing-slash.test.ts +96 -0
- package/src/rules/async3/channels-kebab-case.ts +19 -0
- package/src/rules/async3/index.ts +26 -0
- package/src/rules/async3/no-channel-trailing-slash.ts +16 -0
- package/src/rules/common/__tests__/info-license-strict.test.ts +141 -0
- package/src/rules/common/__tests__/info-license.test.ts +2 -2
- package/src/rules/common/__tests__/license-url.test.ts +2 -2
- package/src/rules/common/__tests__/no-ambiguous-paths.test.ts +1 -1
- package/src/rules/common/__tests__/no-enum-type-mismatch.test.ts +5 -5
- package/src/rules/common/__tests__/no-identical-paths.test.ts +1 -1
- package/src/rules/common/__tests__/no-invalid-parameter-examples.test.ts +1 -1
- package/src/rules/common/__tests__/no-invalid-schema-examples.test.ts +1 -1
- package/src/rules/common/__tests__/no-path-trailing-slash.test.ts +4 -4
- package/src/rules/common/__tests__/no-required-schema-properties-undefined.test.ts +11 -11
- package/src/rules/common/__tests__/operation-2xx-response.test.ts +8 -6
- package/src/rules/common/__tests__/operation-4xx-response.test.ts +9 -7
- package/src/rules/common/__tests__/operation-operationId-unique.test.ts +2 -2
- package/src/rules/common/__tests__/operation-operationId-url-safe.test.ts +1 -1
- package/src/rules/common/__tests__/operation-parameters-unique.test.ts +4 -4
- package/src/rules/common/__tests__/operation-singular-tag.test.ts +2 -2
- package/src/rules/common/__tests__/path-http-verbs-order.test.ts +2 -2
- package/src/rules/common/__tests__/path-not-include-query.test.ts +2 -2
- package/src/rules/common/__tests__/path-params-defined.test.ts +5 -5
- package/src/rules/common/__tests__/paths-kebab-case.test.ts +6 -4
- package/src/rules/common/__tests__/scalar-property-missing-example.test.ts +8 -8
- package/src/rules/common/__tests__/security-defined.test.ts +14 -8
- package/src/rules/common/__tests__/spec-strict-refs.test.ts +1 -1
- package/src/rules/common/__tests__/spec.test.ts +10 -10
- package/src/rules/common/__tests__/tag-description.test.ts +2 -2
- package/src/rules/common/__tests__/tags-alphabetical.test.ts +6 -4
- package/src/rules/common/assertions/asserts.ts +5 -9
- package/src/rules/common/assertions/index.ts +12 -4
- package/src/rules/common/assertions/utils.ts +4 -2
- package/src/rules/common/info-contact.ts +2 -1
- package/src/rules/common/info-license-strict.ts +24 -0
- package/src/rules/common/info-license-url.ts +2 -1
- package/src/rules/common/info-license.ts +2 -1
- package/src/rules/common/no-ambiguous-paths.ts +4 -4
- package/src/rules/common/no-enum-type-mismatch.ts +5 -4
- package/src/rules/common/no-http-verbs-in-paths.ts +5 -4
- package/src/rules/common/no-identical-paths.ts +4 -4
- package/src/rules/common/no-invalid-parameter-examples.ts +3 -2
- package/src/rules/common/no-path-trailing-slash.ts +2 -2
- package/src/rules/common/no-required-schema-properties-undefined.ts +5 -4
- package/src/rules/common/operation-2xx-response.ts +3 -2
- package/src/rules/common/operation-4xx-response.ts +3 -2
- package/src/rules/common/operation-description.ts +5 -4
- package/src/rules/common/operation-operationId-unique.ts +4 -4
- package/src/rules/common/operation-operationId-url-safe.ts +5 -4
- package/src/rules/common/operation-operationId.ts +5 -4
- package/src/rules/common/operation-parameters-unique.ts +4 -4
- package/src/rules/common/operation-singular-tag.ts +4 -4
- package/src/rules/common/operation-summary.ts +5 -4
- package/src/rules/common/operation-tag-defined.ts +4 -4
- package/src/rules/common/parameter-description.ts +4 -4
- package/src/rules/common/path-declaration-must-exist.ts +2 -2
- package/src/rules/common/path-excludes-patterns.ts +4 -4
- package/src/rules/common/path-http-verbs-order.ts +4 -4
- package/src/rules/common/path-not-include-query.ts +2 -2
- package/src/rules/common/path-params-defined.ts +4 -4
- package/src/rules/common/path-segment-plural.ts +3 -2
- package/src/rules/common/paths-kebab-case.ts +2 -2
- package/src/rules/common/required-string-property-missing-min-length.ts +4 -4
- package/src/rules/common/response-contains-header.ts +5 -4
- package/src/rules/common/scalar-property-missing-example.ts +2 -1
- package/src/rules/common/security-defined.ts +5 -5
- package/src/rules/common/spec-strict-refs.ts +2 -1
- package/src/rules/common/spec.ts +4 -3
- package/src/rules/common/tag-description.ts +2 -1
- package/src/rules/common/tags-alphabetical.ts +4 -4
- package/src/rules/no-unresolved-refs.ts +4 -3
- package/src/rules/oas2/__tests__/boolean-parameter-prefixes.test.ts +7 -5
- package/src/rules/oas2/__tests__/response-contains-header.test.ts +14 -8
- package/src/rules/oas2/__tests__/response-contains-property.test.ts +14 -8
- package/src/rules/oas2/__tests__/spec/referenceableScalars.test.ts +3 -1
- package/src/rules/oas2/boolean-parameter-prefixes.ts +1 -1
- package/src/rules/oas2/index.ts +8 -6
- package/src/rules/oas2/request-mime-type.ts +2 -1
- package/src/rules/oas2/response-contains-property.ts +3 -2
- package/src/rules/oas2/response-mime-type.ts +2 -1
- package/src/rules/oas3/__tests__/array-parameter-serialization.test.ts +18 -6
- package/src/rules/oas3/__tests__/boolean-parameter-prefixes.test.ts +7 -5
- package/src/rules/oas3/__tests__/no-empty-enum-servers.com.test.ts +6 -6
- package/src/rules/oas3/__tests__/no-example-value-and-externalValue.test.ts +2 -2
- package/src/rules/oas3/__tests__/no-invalid-media-type-examples.test.ts +34 -24
- package/src/rules/oas3/__tests__/no-server-example.com.test.ts +3 -3
- package/src/rules/oas3/__tests__/no-server-trailing-slash.test.ts +3 -3
- package/src/rules/oas3/__tests__/no-unused-components.test.ts +1 -1
- package/src/rules/oas3/__tests__/operation-4xx-problem-details-rfc7807.test.ts +3 -3
- package/src/rules/oas3/__tests__/response-contains-header.test.ts +34 -22
- package/src/rules/oas3/__tests__/response-contains-property.test.ts +34 -20
- package/src/rules/oas3/__tests__/spec/spec.test.ts +12 -3
- package/src/rules/oas3/__tests__/spec-components-invalid-map-name.test.ts +9 -3
- package/src/rules/oas3/__tests__/utils/lint-document-for-test.ts +1 -1
- package/src/rules/oas3/array-parameter-serialization.ts +3 -2
- package/src/rules/oas3/boolean-parameter-prefixes.ts +1 -1
- package/src/rules/oas3/component-name-unique.ts +3 -3
- package/src/rules/oas3/index.ts +42 -38
- package/src/rules/oas3/no-empty-servers.ts +1 -1
- package/src/rules/oas3/no-example-value-and-externalValue.ts +1 -1
- package/src/rules/oas3/no-invalid-media-type-examples.ts +6 -4
- package/src/rules/oas3/no-server-example.com.ts +2 -1
- package/src/rules/oas3/no-server-trailing-slash.ts +1 -1
- package/src/rules/oas3/no-server-variables-empty-enum.ts +2 -2
- package/src/rules/oas3/no-undefined-server-variable.ts +1 -1
- package/src/rules/oas3/no-unused-components.ts +2 -2
- package/src/rules/oas3/operation-4xx-problem-details-rfc7807.ts +2 -1
- package/src/rules/oas3/request-mime-type.ts +2 -1
- package/src/rules/oas3/response-contains-property.ts +3 -2
- package/src/rules/oas3/response-mime-type.ts +2 -1
- package/src/rules/oas3/spec-components-invalid-map-name.ts +3 -3
- package/src/rules/other/stats.ts +8 -6
- package/src/rules/spot/parameters-no-body-inside-in.ts +17 -0
- package/src/rules/utils.ts +41 -4
- package/src/types/arazzo.ts +257 -334
- package/src/types/{asyncapi.ts → asyncapi2.ts} +41 -35
- package/src/types/asyncapi3.ts +383 -0
- package/src/types/json-schema-adapter.ts +2 -2
- package/src/types/oas3.ts +4 -4
- package/src/types/oas3_1.ts +5 -4
- package/src/types/redocly-yaml.ts +21 -4
- package/src/typings/arazzo.ts +169 -41
- package/src/typings/asyncapi3.ts +61 -0
- package/src/typings/common.ts +1 -0
- package/src/typings/swagger.ts +2 -2
- package/src/utils.ts +5 -3
- package/src/visitors.ts +58 -1
- package/src/walk.ts +3 -3
- package/tsconfig.tsbuildinfo +1 -1
- package/lib/types/asyncapi.d.ts +0 -2
package/lib/types/index.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.SpecExtension = void 0;
|
|
4
|
+
exports.listOf = listOf;
|
|
5
|
+
exports.mapOf = mapOf;
|
|
6
|
+
exports.normalizeTypes = normalizeTypes;
|
|
7
|
+
exports.isNamedType = isNamedType;
|
|
4
8
|
function listOf(typeName) {
|
|
5
9
|
return {
|
|
6
10
|
name: `${typeName}List`,
|
|
@@ -8,7 +12,6 @@ function listOf(typeName) {
|
|
|
8
12
|
items: typeName,
|
|
9
13
|
};
|
|
10
14
|
}
|
|
11
|
-
exports.listOf = listOf;
|
|
12
15
|
function mapOf(typeName) {
|
|
13
16
|
return {
|
|
14
17
|
name: `${typeName}Map`,
|
|
@@ -16,7 +19,6 @@ function mapOf(typeName) {
|
|
|
16
19
|
additionalProperties: () => typeName,
|
|
17
20
|
};
|
|
18
21
|
}
|
|
19
|
-
exports.mapOf = mapOf;
|
|
20
22
|
exports.SpecExtension = {
|
|
21
23
|
name: 'SpecExtension',
|
|
22
24
|
properties: {},
|
|
@@ -26,7 +28,10 @@ exports.SpecExtension = {
|
|
|
26
28
|
function normalizeTypes(types, options = {}) {
|
|
27
29
|
const normalizedTypes = {};
|
|
28
30
|
for (const typeName of Object.keys(types)) {
|
|
29
|
-
normalizedTypes[typeName] =
|
|
31
|
+
normalizedTypes[typeName] = {
|
|
32
|
+
...types[typeName],
|
|
33
|
+
name: typeName,
|
|
34
|
+
};
|
|
30
35
|
}
|
|
31
36
|
for (const type of Object.values(normalizedTypes)) {
|
|
32
37
|
normalizeType(type);
|
|
@@ -46,7 +51,10 @@ function normalizeTypes(types, options = {}) {
|
|
|
46
51
|
for (const [propName, prop] of Object.entries(type.properties)) {
|
|
47
52
|
mappedProps[propName] = resolveType(prop);
|
|
48
53
|
if (options.doNotResolveExamples && prop && prop.isExample) {
|
|
49
|
-
mappedProps[propName] =
|
|
54
|
+
mappedProps[propName] = {
|
|
55
|
+
...prop,
|
|
56
|
+
resolvable: false,
|
|
57
|
+
};
|
|
50
58
|
}
|
|
51
59
|
}
|
|
52
60
|
type.properties = mappedProps;
|
|
@@ -66,20 +74,21 @@ function normalizeTypes(types, options = {}) {
|
|
|
66
74
|
};
|
|
67
75
|
}
|
|
68
76
|
else if (type && type.name) {
|
|
69
|
-
type =
|
|
77
|
+
type = { ...type };
|
|
70
78
|
normalizeType(type);
|
|
71
79
|
return type;
|
|
72
80
|
}
|
|
73
81
|
else if (type && type.directResolveAs) {
|
|
74
|
-
return
|
|
82
|
+
return {
|
|
83
|
+
...type,
|
|
84
|
+
directResolveAs: resolveType(type.directResolveAs),
|
|
85
|
+
};
|
|
75
86
|
}
|
|
76
87
|
else {
|
|
77
88
|
return type;
|
|
78
89
|
}
|
|
79
90
|
}
|
|
80
91
|
}
|
|
81
|
-
exports.normalizeTypes = normalizeTypes;
|
|
82
92
|
function isNamedType(t) {
|
|
83
|
-
return typeof
|
|
93
|
+
return typeof t?.name === 'string';
|
|
84
94
|
}
|
|
85
|
-
exports.isNamedType = isNamedType;
|
|
@@ -1,18 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// For internal usage only
|
|
3
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
4
|
-
var t = {};
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
8
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
9
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
10
|
-
t[p[i]] = s[p[i]];
|
|
11
|
-
}
|
|
12
|
-
return t;
|
|
13
|
-
};
|
|
14
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.getNodeTypesFromJSONSchema =
|
|
4
|
+
exports.getNodeTypesFromJSONSchema = getNodeTypesFromJSONSchema;
|
|
16
5
|
const _2020_1 = require("@redocly/ajv/dist/2020");
|
|
17
6
|
const utils_1 = require("../utils");
|
|
18
7
|
const ajv = new _2020_1.default({
|
|
@@ -37,7 +26,6 @@ function findOneOf(schemaOneOf, oneOfs) {
|
|
|
37
26
|
};
|
|
38
27
|
}
|
|
39
28
|
function transformJSONSchemaToNodeType(propertyName, schema, ctx) {
|
|
40
|
-
var _a;
|
|
41
29
|
if (!schema || typeof schema === 'boolean') {
|
|
42
30
|
throw new Error(`Unexpected schema in ${propertyName}.`);
|
|
43
31
|
}
|
|
@@ -54,7 +42,7 @@ function transformJSONSchemaToNodeType(propertyName, schema, ctx) {
|
|
|
54
42
|
schema.type === 'number' ||
|
|
55
43
|
schema.type === 'integer' ||
|
|
56
44
|
schema.type === 'boolean') {
|
|
57
|
-
const { default: _, format: _format
|
|
45
|
+
const { default: _, format: _format, ...rest } = schema;
|
|
58
46
|
return rest;
|
|
59
47
|
}
|
|
60
48
|
if (schema.type === 'object' && !schema.properties && !schema.oneOf) {
|
|
@@ -82,16 +70,15 @@ function transformJSONSchemaToNodeType(propertyName, schema, ctx) {
|
|
|
82
70
|
}
|
|
83
71
|
if (schema.oneOf) {
|
|
84
72
|
if (schema.discriminator) {
|
|
85
|
-
const discriminatedPropertyName =
|
|
73
|
+
const discriminatedPropertyName = schema.discriminator?.propertyName;
|
|
86
74
|
if (!discriminatedPropertyName) {
|
|
87
75
|
throw new Error(`Unexpected discriminator without a propertyName in ${propertyName}.`);
|
|
88
76
|
}
|
|
89
77
|
const oneOfs = schema.oneOf.map((option, i) => {
|
|
90
|
-
var _a;
|
|
91
78
|
if (typeof option === 'boolean') {
|
|
92
79
|
throw new Error(`Unexpected boolean schema in ${propertyName} at position ${i} in oneOf.`);
|
|
93
80
|
}
|
|
94
|
-
const discriminatedProperty =
|
|
81
|
+
const discriminatedProperty = option?.properties?.[discriminatedPropertyName];
|
|
95
82
|
if (!discriminatedProperty || typeof discriminatedProperty === 'boolean') {
|
|
96
83
|
throw new Error(`Unexpected property '${discriminatedProperty}' schema in ${propertyName} at position ${i} in oneOf.`);
|
|
97
84
|
}
|
|
@@ -170,4 +157,3 @@ function getNodeTypesFromJSONSchema(schemaName, entrySchema) {
|
|
|
170
157
|
transformJSONSchemaToNodeType(schemaName, entrySchema, ctx);
|
|
171
158
|
return ctx;
|
|
172
159
|
}
|
|
173
|
-
exports.getNodeTypesFromJSONSchema = getNodeTypesFromJSONSchema;
|
package/lib/types/oas2.js
CHANGED
|
@@ -71,7 +71,7 @@ const Paths = {
|
|
|
71
71
|
};
|
|
72
72
|
const PathItem = {
|
|
73
73
|
properties: {
|
|
74
|
-
$ref: { type: 'string' },
|
|
74
|
+
$ref: { type: 'string' }, // TODO: verify special $ref handling for Path Item
|
|
75
75
|
parameters: 'ParameterList',
|
|
76
76
|
get: 'Operation',
|
|
77
77
|
put: 'Operation',
|
|
@@ -98,7 +98,7 @@ const Operation = {
|
|
|
98
98
|
deprecated: { type: 'boolean' },
|
|
99
99
|
security: 'SecurityRequirementList',
|
|
100
100
|
'x-codeSamples': 'XCodeSampleList',
|
|
101
|
-
'x-code-samples': 'XCodeSampleList',
|
|
101
|
+
'x-code-samples': 'XCodeSampleList', // deprecated
|
|
102
102
|
'x-hideTryItPanel': { type: 'boolean' },
|
|
103
103
|
},
|
|
104
104
|
required: ['responses'],
|
|
@@ -359,11 +359,11 @@ const SecurityScheme = {
|
|
|
359
359
|
'x-defaultClientId': { type: 'string' },
|
|
360
360
|
},
|
|
361
361
|
required(value) {
|
|
362
|
-
switch (value
|
|
362
|
+
switch (value?.type) {
|
|
363
363
|
case 'apiKey':
|
|
364
364
|
return ['type', 'name', 'in'];
|
|
365
365
|
case 'oauth2':
|
|
366
|
-
switch (value
|
|
366
|
+
switch (value?.flow) {
|
|
367
367
|
case 'implicit':
|
|
368
368
|
return ['type', 'flow', 'authorizationUrl', 'scopes'];
|
|
369
369
|
case 'accessCode':
|
|
@@ -379,13 +379,13 @@ const SecurityScheme = {
|
|
|
379
379
|
}
|
|
380
380
|
},
|
|
381
381
|
allowed(value) {
|
|
382
|
-
switch (value
|
|
382
|
+
switch (value?.type) {
|
|
383
383
|
case 'basic':
|
|
384
384
|
return ['type', 'description'];
|
|
385
385
|
case 'apiKey':
|
|
386
386
|
return ['type', 'name', 'in', 'description'];
|
|
387
387
|
case 'oauth2':
|
|
388
|
-
switch (value
|
|
388
|
+
switch (value?.flow) {
|
|
389
389
|
case 'implicit':
|
|
390
390
|
return ['type', 'flow', 'authorizationUrl', 'description', 'scopes'];
|
|
391
391
|
case 'accessCode':
|
package/lib/types/oas3.d.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import type { NodeType } from '.';
|
|
2
2
|
import type { Oas3NodeType } from './redocly-yaml';
|
|
3
|
+
export declare const ExternalDocs: NodeType;
|
|
4
|
+
export declare const Xml: NodeType;
|
|
5
|
+
export declare const DiscriminatorMapping: NodeType;
|
|
6
|
+
export declare const Discriminator: NodeType;
|
|
3
7
|
export declare const Oas3Types: Record<Oas3NodeType, NodeType>;
|
package/lib/types/oas3.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Oas3Types = void 0;
|
|
3
|
+
exports.Oas3Types = exports.Discriminator = exports.DiscriminatorMapping = exports.Xml = exports.ExternalDocs = void 0;
|
|
4
4
|
const _1 = require(".");
|
|
5
5
|
const ref_utils_1 = require("../ref-utils");
|
|
6
6
|
const responseCodeRegexp = /^[0-9][0-9Xx]{2}$/;
|
|
@@ -39,7 +39,7 @@ const TagGroup = {
|
|
|
39
39
|
},
|
|
40
40
|
extensionsPrefix: 'x-',
|
|
41
41
|
};
|
|
42
|
-
|
|
42
|
+
exports.ExternalDocs = {
|
|
43
43
|
properties: {
|
|
44
44
|
description: { type: 'string' },
|
|
45
45
|
url: { type: 'string' },
|
|
@@ -119,7 +119,7 @@ const WebhooksMap = {
|
|
|
119
119
|
};
|
|
120
120
|
const PathItem = {
|
|
121
121
|
properties: {
|
|
122
|
-
$ref: { type: 'string' },
|
|
122
|
+
$ref: { type: 'string' }, // TODO: verify special $ref handling for Path Item
|
|
123
123
|
servers: 'ServerList',
|
|
124
124
|
parameters: 'ParameterList',
|
|
125
125
|
summary: { type: 'string' },
|
|
@@ -175,7 +175,7 @@ const Operation = {
|
|
|
175
175
|
deprecated: { type: 'boolean' },
|
|
176
176
|
callbacks: 'CallbacksMap',
|
|
177
177
|
'x-codeSamples': 'XCodeSampleList',
|
|
178
|
-
'x-code-samples': 'XCodeSampleList',
|
|
178
|
+
'x-code-samples': 'XCodeSampleList', // deprecated
|
|
179
179
|
'x-hideTryItPanel': { type: 'boolean' },
|
|
180
180
|
},
|
|
181
181
|
required: ['responses'],
|
|
@@ -273,8 +273,8 @@ const Link = {
|
|
|
273
273
|
properties: {
|
|
274
274
|
operationRef: { type: 'string' },
|
|
275
275
|
operationId: { type: 'string' },
|
|
276
|
-
parameters: null,
|
|
277
|
-
requestBody: null,
|
|
276
|
+
parameters: null, // TODO: figure out how to describe/validate this
|
|
277
|
+
requestBody: null, // TODO: figure out how to describe/validate this
|
|
278
278
|
description: { type: 'string' },
|
|
279
279
|
server: 'Server',
|
|
280
280
|
},
|
|
@@ -339,7 +339,7 @@ const Schema = {
|
|
|
339
339
|
},
|
|
340
340
|
extensionsPrefix: 'x-',
|
|
341
341
|
};
|
|
342
|
-
|
|
342
|
+
exports.Xml = {
|
|
343
343
|
properties: {
|
|
344
344
|
name: { type: 'string' },
|
|
345
345
|
namespace: { type: 'string' },
|
|
@@ -353,7 +353,7 @@ const SchemaProperties = {
|
|
|
353
353
|
properties: {},
|
|
354
354
|
additionalProperties: 'Schema',
|
|
355
355
|
};
|
|
356
|
-
|
|
356
|
+
exports.DiscriminatorMapping = {
|
|
357
357
|
properties: {},
|
|
358
358
|
additionalProperties: (value) => {
|
|
359
359
|
if ((0, ref_utils_1.isMappingRef)(value)) {
|
|
@@ -364,7 +364,7 @@ const DiscriminatorMapping = {
|
|
|
364
364
|
}
|
|
365
365
|
},
|
|
366
366
|
};
|
|
367
|
-
|
|
367
|
+
exports.Discriminator = {
|
|
368
368
|
properties: {
|
|
369
369
|
propertyName: { type: 'string' },
|
|
370
370
|
mapping: 'DiscriminatorMapping',
|
|
@@ -389,7 +389,7 @@ const Components = {
|
|
|
389
389
|
const ImplicitFlow = {
|
|
390
390
|
properties: {
|
|
391
391
|
refreshUrl: { type: 'string' },
|
|
392
|
-
scopes: { type: 'object', additionalProperties: { type: 'string' } },
|
|
392
|
+
scopes: { type: 'object', additionalProperties: { type: 'string' } }, // TODO: validate scopes
|
|
393
393
|
authorizationUrl: { type: 'string' },
|
|
394
394
|
},
|
|
395
395
|
required: ['authorizationUrl', 'scopes'],
|
|
@@ -398,7 +398,7 @@ const ImplicitFlow = {
|
|
|
398
398
|
const PasswordFlow = {
|
|
399
399
|
properties: {
|
|
400
400
|
refreshUrl: { type: 'string' },
|
|
401
|
-
scopes: { type: 'object', additionalProperties: { type: 'string' } },
|
|
401
|
+
scopes: { type: 'object', additionalProperties: { type: 'string' } }, // TODO: validate scopes
|
|
402
402
|
tokenUrl: { type: 'string' },
|
|
403
403
|
},
|
|
404
404
|
required: ['tokenUrl', 'scopes'],
|
|
@@ -407,7 +407,7 @@ const PasswordFlow = {
|
|
|
407
407
|
const ClientCredentials = {
|
|
408
408
|
properties: {
|
|
409
409
|
refreshUrl: { type: 'string' },
|
|
410
|
-
scopes: { type: 'object', additionalProperties: { type: 'string' } },
|
|
410
|
+
scopes: { type: 'object', additionalProperties: { type: 'string' } }, // TODO: validate scopes
|
|
411
411
|
tokenUrl: { type: 'string' },
|
|
412
412
|
},
|
|
413
413
|
required: ['tokenUrl', 'scopes'],
|
|
@@ -417,7 +417,7 @@ const AuthorizationCode = {
|
|
|
417
417
|
properties: {
|
|
418
418
|
refreshUrl: { type: 'string' },
|
|
419
419
|
authorizationUrl: { type: 'string' },
|
|
420
|
-
scopes: { type: 'object', additionalProperties: { type: 'string' } },
|
|
420
|
+
scopes: { type: 'object', additionalProperties: { type: 'string' } }, // TODO: validate scopes
|
|
421
421
|
tokenUrl: { type: 'string' },
|
|
422
422
|
'x-usePkce': (value) => {
|
|
423
423
|
if (typeof value === 'boolean') {
|
|
@@ -453,7 +453,7 @@ const SecurityScheme = {
|
|
|
453
453
|
'x-defaultClientId': { type: 'string' },
|
|
454
454
|
},
|
|
455
455
|
required(value) {
|
|
456
|
-
switch (value
|
|
456
|
+
switch (value?.type) {
|
|
457
457
|
case 'apiKey':
|
|
458
458
|
return ['type', 'name', 'in'];
|
|
459
459
|
case 'http':
|
|
@@ -467,7 +467,7 @@ const SecurityScheme = {
|
|
|
467
467
|
}
|
|
468
468
|
},
|
|
469
469
|
allowed(value) {
|
|
470
|
-
switch (value
|
|
470
|
+
switch (value?.type) {
|
|
471
471
|
case 'apiKey':
|
|
472
472
|
return ['type', 'name', 'in', 'description'];
|
|
473
473
|
case 'http':
|
|
@@ -494,7 +494,7 @@ exports.Oas3Types = {
|
|
|
494
494
|
TagList: (0, _1.listOf)('Tag'),
|
|
495
495
|
TagGroups: (0, _1.listOf)('TagGroup'),
|
|
496
496
|
TagGroup,
|
|
497
|
-
ExternalDocs,
|
|
497
|
+
ExternalDocs: exports.ExternalDocs,
|
|
498
498
|
Server,
|
|
499
499
|
ServerList: (0, _1.listOf)('Server'),
|
|
500
500
|
ServerVariable,
|
|
@@ -526,10 +526,10 @@ exports.Oas3Types = {
|
|
|
526
526
|
Link,
|
|
527
527
|
Logo,
|
|
528
528
|
Schema,
|
|
529
|
-
Xml,
|
|
529
|
+
Xml: exports.Xml,
|
|
530
530
|
SchemaProperties,
|
|
531
|
-
DiscriminatorMapping,
|
|
532
|
-
Discriminator,
|
|
531
|
+
DiscriminatorMapping: exports.DiscriminatorMapping,
|
|
532
|
+
Discriminator: exports.Discriminator,
|
|
533
533
|
Components,
|
|
534
534
|
LinksMap: (0, _1.mapOf)('Link'),
|
|
535
535
|
NamedSchemas: (0, _1.mapOf)('Schema'),
|
package/lib/types/oas3_1.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import type { NodeType } from '.';
|
|
2
2
|
import type { Oas3_1NodeType } from './redocly-yaml';
|
|
3
|
+
export declare const Schema: NodeType;
|
|
4
|
+
export declare const SchemaProperties: NodeType;
|
|
5
|
+
export declare const DependentRequired: NodeType;
|
|
3
6
|
export declare const Oas3_1Types: Record<Oas3_1NodeType, NodeType>;
|
package/lib/types/oas3_1.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Oas3_1Types = void 0;
|
|
3
|
+
exports.Oas3_1Types = exports.DependentRequired = exports.SchemaProperties = exports.Schema = void 0;
|
|
4
4
|
const _1 = require(".");
|
|
5
5
|
const oas3_1 = require("./oas3");
|
|
6
6
|
const Root = {
|
|
@@ -76,12 +76,12 @@ const Operation = {
|
|
|
76
76
|
deprecated: { type: 'boolean' },
|
|
77
77
|
callbacks: 'CallbacksMap',
|
|
78
78
|
'x-codeSamples': 'XCodeSampleList',
|
|
79
|
-
'x-code-samples': 'XCodeSampleList',
|
|
79
|
+
'x-code-samples': 'XCodeSampleList', // deprecated
|
|
80
80
|
'x-hideTryItPanel': { type: 'boolean' },
|
|
81
81
|
},
|
|
82
82
|
extensionsPrefix: 'x-',
|
|
83
83
|
};
|
|
84
|
-
|
|
84
|
+
exports.Schema = {
|
|
85
85
|
properties: {
|
|
86
86
|
$id: { type: 'string' },
|
|
87
87
|
$anchor: { type: 'string' },
|
|
@@ -134,7 +134,7 @@ const Schema = {
|
|
|
134
134
|
contains: 'Schema',
|
|
135
135
|
minContains: { type: 'integer', minimum: 0 },
|
|
136
136
|
maxContains: { type: 'integer', minimum: 0 },
|
|
137
|
-
patternProperties: '
|
|
137
|
+
patternProperties: 'PatternProperties',
|
|
138
138
|
propertyNames: 'Schema',
|
|
139
139
|
unevaluatedItems: (value) => {
|
|
140
140
|
if (typeof value === 'boolean') {
|
|
@@ -183,7 +183,7 @@ const Schema = {
|
|
|
183
183
|
},
|
|
184
184
|
extensionsPrefix: 'x-',
|
|
185
185
|
};
|
|
186
|
-
|
|
186
|
+
exports.SchemaProperties = {
|
|
187
187
|
properties: {},
|
|
188
188
|
additionalProperties: (value) => {
|
|
189
189
|
if (typeof value === 'boolean') {
|
|
@@ -206,7 +206,7 @@ const SecurityScheme = {
|
|
|
206
206
|
openIdConnectUrl: { type: 'string' },
|
|
207
207
|
},
|
|
208
208
|
required(value) {
|
|
209
|
-
switch (value
|
|
209
|
+
switch (value?.type) {
|
|
210
210
|
case 'apiKey':
|
|
211
211
|
return ['type', 'name', 'in'];
|
|
212
212
|
case 'http':
|
|
@@ -220,13 +220,13 @@ const SecurityScheme = {
|
|
|
220
220
|
}
|
|
221
221
|
},
|
|
222
222
|
allowed(value) {
|
|
223
|
-
switch (value
|
|
223
|
+
switch (value?.type) {
|
|
224
224
|
case 'apiKey':
|
|
225
225
|
return ['type', 'name', 'in', 'description'];
|
|
226
226
|
case 'http':
|
|
227
227
|
return ['type', 'scheme', 'bearerFormat', 'description'];
|
|
228
228
|
case 'oauth2':
|
|
229
|
-
switch (value
|
|
229
|
+
switch (value?.flows) {
|
|
230
230
|
case 'implicit':
|
|
231
231
|
return ['type', 'flows', 'authorizationUrl', 'refreshUrl', 'description', 'scopes'];
|
|
232
232
|
case 'password':
|
|
@@ -263,15 +263,21 @@ const SecurityScheme = {
|
|
|
263
263
|
},
|
|
264
264
|
extensionsPrefix: 'x-',
|
|
265
265
|
};
|
|
266
|
-
|
|
266
|
+
exports.DependentRequired = {
|
|
267
267
|
properties: {},
|
|
268
268
|
additionalProperties: { type: 'array', items: { type: 'string' } },
|
|
269
269
|
};
|
|
270
|
-
exports.Oas3_1Types =
|
|
270
|
+
exports.Oas3_1Types = {
|
|
271
|
+
...oas3_1.Oas3Types,
|
|
272
|
+
Info,
|
|
271
273
|
Root,
|
|
272
|
-
Schema,
|
|
273
|
-
SchemaProperties,
|
|
274
|
+
Schema: exports.Schema,
|
|
275
|
+
SchemaProperties: exports.SchemaProperties,
|
|
276
|
+
PatternProperties: exports.SchemaProperties,
|
|
274
277
|
License,
|
|
275
|
-
Components,
|
|
278
|
+
Components,
|
|
279
|
+
NamedPathItems: (0, _1.mapOf)('PathItem'),
|
|
280
|
+
SecurityScheme,
|
|
276
281
|
Operation,
|
|
277
|
-
DependentRequired
|
|
282
|
+
DependentRequired: exports.DependentRequired,
|
|
283
|
+
};
|
|
@@ -1,21 +1,23 @@
|
|
|
1
|
-
import type { NodeType } from '.';
|
|
2
1
|
import type { JSONSchema } from 'json-schema-to-ts';
|
|
3
|
-
import {
|
|
4
|
-
|
|
2
|
+
import type { NodeType } from '.';
|
|
3
|
+
import type { Config } from '../config';
|
|
4
|
+
declare const builtInCommonOASRules: readonly ["spec", "info-contact", "operation-operationId", "tag-description", "tags-alphabetical", "info-license-url", "info-license-strict", "info-license", "no-ambiguous-paths", "no-enum-type-mismatch", "no-http-verbs-in-paths", "no-identical-paths", "no-invalid-parameter-examples", "no-invalid-schema-examples", "no-path-trailing-slash", "operation-2xx-response", "operation-4xx-response", "operation-description", "operation-operationId-unique", "operation-operationId-url-safe", "operation-parameters-unique", "operation-singular-tag", "operation-summary", "operation-tag-defined", "parameter-description", "path-declaration-must-exist", "path-excludes-patterns", "path-http-verbs-order", "path-not-include-query", "path-params-defined", "path-parameters-defined", "path-segment-plural", "paths-kebab-case", "required-string-property-missing-min-length", "response-contains-header", "scalar-property-missing-example", "security-defined", "spec-strict-refs", "no-unresolved-refs", "no-required-schema-properties-undefined"];
|
|
5
5
|
export type BuiltInCommonOASRuleId = typeof builtInCommonOASRules[number];
|
|
6
6
|
declare const builtInOAS2Rules: readonly ["boolean-parameter-prefixes", "request-mime-type", "response-contains-property", "response-mime-type"];
|
|
7
7
|
export type BuiltInOAS2RuleId = typeof builtInOAS2Rules[number];
|
|
8
8
|
declare const builtInOAS3Rules: readonly ["boolean-parameter-prefixes", "component-name-unique", "no-empty-servers", "no-example-value-and-externalValue", "no-invalid-media-type-examples", "no-server-example.com", "no-server-trailing-slash", "no-server-variables-empty-enum", "no-undefined-server-variable", "no-unused-components", "operation-4xx-problem-details-rfc7807", "request-mime-type", "response-contains-property", "response-mime-type", "spec-components-invalid-map-name", "array-parameter-serialization"];
|
|
9
9
|
export type BuiltInOAS3RuleId = typeof builtInOAS3Rules[number];
|
|
10
|
-
declare const builtInAsync2Rules: readonly ["spec", "info-contact", "operation-operationId", "tag-description", "tags-alphabetical", "channels-kebab-case", "no-channel-trailing-slash"];
|
|
10
|
+
declare const builtInAsync2Rules: readonly ["spec", "info-contact", "info-license-strict", "operation-operationId", "tag-description", "tags-alphabetical", "channels-kebab-case", "no-channel-trailing-slash"];
|
|
11
|
+
declare const builtInAsync3Rules: readonly ["spec", "info-contact", "info-license-strict", "operation-operationId", "tag-description", "tags-alphabetical", "channels-kebab-case", "no-channel-trailing-slash"];
|
|
11
12
|
export type BuiltInAsync2RuleId = typeof builtInAsync2Rules[number];
|
|
12
|
-
|
|
13
|
+
export type BuiltInAsync3RuleId = typeof builtInAsync3Rules[number];
|
|
14
|
+
declare const builtInArazzoRules: readonly ["spec", "parameters-no-body-inside-in"];
|
|
13
15
|
export type BuiltInArazzoRuleId = typeof builtInArazzoRules[number];
|
|
14
16
|
declare const oas2NodeTypesList: readonly ["Root", "Tag", "TagList", "ExternalDocs", "SecurityRequirement", "SecurityRequirementList", "Info", "Contact", "License", "Paths", "PathItem", "Parameter", "ParameterList", "ParameterItems", "Operation", "Example", "ExamplesMap", "Examples", "Header", "Responses", "Response", "Schema", "Xml", "SchemaProperties", "NamedSchemas", "NamedResponses", "NamedParameters", "NamedSecuritySchemes", "SecurityScheme", "TagGroup", "TagGroups", "EnumDescriptions", "Logo", "XCodeSample", "XCodeSampleList", "XServer", "XServerList"];
|
|
15
17
|
export type Oas2NodeType = typeof oas2NodeTypesList[number];
|
|
16
18
|
declare const oas3NodeTypesList: readonly ["Root", "Tag", "TagList", "ExternalDocs", "Server", "ServerList", "ServerVariable", "ServerVariablesMap", "SecurityRequirement", "SecurityRequirementList", "Info", "Contact", "License", "Paths", "PathItem", "Parameter", "ParameterList", "Operation", "Callback", "CallbacksMap", "RequestBody", "MediaTypesMap", "MediaType", "Example", "ExamplesMap", "Encoding", "EncodingMap", "Header", "HeadersMap", "Responses", "Response", "Link", "LinksMap", "Schema", "Xml", "SchemaProperties", "DiscriminatorMapping", "Discriminator", "Components", "NamedSchemas", "NamedResponses", "NamedParameters", "NamedExamples", "NamedRequestBodies", "NamedHeaders", "NamedSecuritySchemes", "NamedLinks", "NamedCallbacks", "ImplicitFlow", "PasswordFlow", "ClientCredentials", "AuthorizationCode", "OAuth2Flows", "SecurityScheme", "TagGroup", "TagGroups", "EnumDescriptions", "Logo", "XCodeSample", "XCodeSampleList", "XUsePkce", "WebhooksMap"];
|
|
17
19
|
export type Oas3NodeType = typeof oas3NodeTypesList[number];
|
|
18
|
-
declare const oas3_1NodeTypesList: readonly ["Root", "Schema", "SchemaProperties", "Info", "License", "Components", "NamedPathItems", "SecurityScheme", "Operation", "DependentRequired"];
|
|
20
|
+
declare const oas3_1NodeTypesList: readonly ["Root", "Schema", "SchemaProperties", "PatternProperties", "Info", "License", "Components", "NamedPathItems", "SecurityScheme", "Operation", "DependentRequired"];
|
|
19
21
|
export type Oas3_1NodeType = typeof oas3_1NodeTypesList[number];
|
|
20
22
|
export declare function createConfigTypes(extraSchemas: JSONSchema, config?: Config): {
|
|
21
23
|
ConfigRoot: NodeType;
|