@redocly/openapi-core 1.0.0-beta.104 → 1.0.0-beta.107
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/README.md +4 -4
- package/__tests__/utils.ts +8 -6
- package/lib/benchmark/benches/recommended-oas3.bench.js +1 -1
- package/lib/benchmark/utils.d.ts +2 -2
- package/lib/benchmark/utils.js +2 -2
- package/lib/bundle.d.ts +2 -2
- package/lib/bundle.js +2 -2
- package/lib/config/all.d.ts +2 -2
- package/lib/config/all.js +1 -1
- package/lib/config/builtIn.d.ts +2 -2
- package/lib/config/builtIn.js +2 -2
- package/lib/config/config-resolvers.d.ts +5 -5
- package/lib/config/config-resolvers.js +39 -36
- package/lib/config/config.d.ts +6 -5
- package/lib/config/config.js +27 -20
- package/lib/config/load.js +6 -7
- package/lib/config/minimal.d.ts +2 -2
- package/lib/config/minimal.js +3 -2
- package/lib/config/recommended.d.ts +2 -2
- package/lib/config/recommended.js +3 -2
- package/lib/config/rules.d.ts +2 -2
- package/lib/config/rules.js +1 -1
- package/lib/config/types.d.ts +23 -19
- package/lib/config/utils.d.ts +5 -5
- package/lib/config/utils.js +43 -26
- package/lib/decorators/common/remove-x-internal.js +2 -2
- package/lib/format/format.js +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +3 -2
- package/lib/js-yaml/index.js +1 -6
- package/lib/lint.d.ts +2 -2
- package/lib/lint.js +16 -6
- package/lib/redocly/registry-api.d.ts +1 -1
- package/lib/redocly/registry-api.js +2 -2
- package/lib/rules/ajv.d.ts +1 -1
- package/lib/rules/ajv.js +6 -6
- package/lib/rules/common/info-license-url.d.ts +1 -1
- package/lib/rules/common/info-license-url.js +5 -10
- package/lib/rules/common/info-license.d.ts +2 -0
- package/lib/rules/common/info-license.js +17 -0
- package/lib/rules/common/no-enum-type-mismatch.js +1 -3
- package/lib/rules/common/no-invalid-parameter-examples.js +3 -3
- package/lib/rules/common/no-invalid-schema-examples.js +3 -3
- package/lib/rules/common/operation-operationId.js +1 -1
- package/lib/rules/common/path-not-include-query.js +1 -1
- package/lib/rules/common/paths-kebab-case.js +4 -1
- package/lib/rules/common/spec.js +1 -1
- package/lib/rules/oas2/index.js +4 -4
- package/lib/rules/oas2/remove-unused-components.js +3 -3
- package/lib/rules/oas3/index.js +4 -4
- package/lib/rules/oas3/no-empty-servers.js +1 -1
- package/lib/rules/oas3/no-invalid-media-type-examples.js +2 -2
- package/lib/rules/oas3/remove-unused-components.js +2 -2
- package/lib/rules/other/stats.js +43 -14
- package/lib/rules/utils.d.ts +3 -2
- package/lib/rules/utils.js +19 -4
- package/lib/types/index.d.ts +2 -2
- package/lib/types/redocly-yaml.js +8 -7
- package/lib/utils.d.ts +5 -2
- package/lib/utils.js +20 -2
- package/lib/walk.d.ts +2 -1
- package/lib/walk.js +6 -3
- package/package.json +2 -2
- package/src/__tests__/__snapshots__/bundle.test.ts.snap +141 -0
- package/src/__tests__/bundle.test.ts +68 -34
- package/src/__tests__/codeframes.test.ts +13 -14
- package/src/__tests__/fixtures/.redocly.lint-ignore.yaml +5 -0
- package/src/__tests__/js-yaml.test.ts +6 -4
- package/src/__tests__/lint.test.ts +127 -12
- package/src/__tests__/login.test.ts +2 -2
- package/src/__tests__/normalizeVisitors.test.ts +4 -4
- package/src/__tests__/ref-utils.test.ts +13 -13
- package/src/__tests__/resolve-http.test.ts +1 -1
- package/src/__tests__/resolve.test.ts +14 -11
- package/src/__tests__/utils.test.ts +42 -1
- package/src/__tests__/walk.test.ts +48 -56
- package/src/benchmark/benches/lint-with-many-rules.bench.ts +1 -1
- package/src/benchmark/benches/lint-with-nested-rule.bench.ts +1 -1
- package/src/benchmark/benches/lint-with-no-rules.bench.ts +1 -1
- package/src/benchmark/benches/lint-with-top-level-rule-report.bench.ts +1 -1
- package/src/benchmark/benches/lint-with-top-level-rule.bench.ts +1 -1
- package/src/benchmark/benches/recommended-oas3.bench.ts +3 -3
- package/src/benchmark/benches/resolve-with-no-external.bench.ts +1 -1
- package/src/benchmark/benchmark.js +9 -5
- package/src/benchmark/utils.ts +5 -5
- package/src/bundle.ts +18 -17
- package/src/config/__tests__/__snapshots__/config-resolvers.test.ts.snap +3 -1
- package/src/config/__tests__/config-resolvers.test.ts +123 -121
- package/src/config/__tests__/config.test.ts +76 -76
- package/src/config/__tests__/fixtures/resolve-config/api/plugin.js +4 -2
- package/src/config/__tests__/fixtures/resolve-config/plugin.js +4 -1
- package/src/config/__tests__/load.test.ts +2 -2
- package/src/config/__tests__/resolve-plugins.test.ts +3 -3
- package/src/config/__tests__/utils.test.ts +83 -0
- package/src/config/all.ts +3 -4
- package/src/config/builtIn.ts +5 -5
- package/src/config/config-resolvers.ts +122 -83
- package/src/config/config.ts +36 -32
- package/src/config/load.ts +13 -16
- package/src/config/minimal.ts +5 -4
- package/src/config/recommended.ts +5 -4
- package/src/config/rules.ts +6 -6
- package/src/config/types.ts +28 -19
- package/src/config/utils.ts +74 -54
- package/src/decorators/__tests__/filter-out.test.ts +8 -4
- package/src/decorators/__tests__/remove-x-internal.test.ts +5 -5
- package/src/decorators/common/filters/filter-helper.ts +1 -1
- package/src/decorators/common/info-description-override.ts +1 -1
- package/src/decorators/common/operation-description-override.ts +1 -1
- package/src/decorators/common/remove-x-internal.ts +4 -4
- package/src/decorators/common/tag-description-override.ts +1 -1
- package/src/format/codeframes.ts +4 -4
- package/src/format/format.ts +10 -10
- package/src/index.ts +3 -4
- package/src/js-yaml/index.ts +3 -8
- package/src/lint.ts +22 -18
- package/src/oas-types.ts +1 -6
- package/src/redocly/__tests__/redocly-client.test.ts +25 -19
- package/src/redocly/index.ts +6 -4
- package/src/redocly/registry-api.ts +6 -6
- package/src/ref-utils.ts +2 -2
- package/src/resolve.ts +7 -4
- package/src/rules/__tests__/no-unresolved-refs.test.ts +4 -4
- package/src/rules/__tests__/utils.test.ts +160 -0
- package/src/rules/ajv.ts +7 -8
- package/src/rules/common/__tests__/info-description.test.ts +3 -3
- 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 +8 -8
- package/src/rules/common/__tests__/no-identical-paths.test.ts +1 -1
- package/src/rules/common/__tests__/no-path-trailing-slash.test.ts +3 -3
- package/src/rules/common/__tests__/operation-2xx-response.test.ts +3 -3
- package/src/rules/common/__tests__/operation-4xx-response.test.ts +3 -3
- 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-security-defined.test.ts +2 -2
- 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 +3 -3
- package/src/rules/common/__tests__/paths-kebab-case.test.ts +15 -15
- package/src/rules/common/__tests__/scalar-property-missing-example.test.ts +8 -8
- package/src/rules/common/__tests__/spec.test.ts +2 -2
- package/src/rules/common/__tests__/tag-description.test.ts +2 -2
- package/src/rules/common/__tests__/tags-alphabetical.test.ts +2 -2
- package/src/rules/common/assertions/__tests__/asserts.test.ts +513 -130
- package/src/rules/common/assertions/index.ts +6 -6
- package/src/rules/common/info-license-url.ts +4 -9
- package/src/rules/common/info-license.ts +15 -0
- package/src/rules/common/no-ambiguous-paths.ts +1 -1
- package/src/rules/common/no-enum-type-mismatch.ts +12 -9
- package/src/rules/common/no-invalid-parameter-examples.ts +4 -4
- package/src/rules/common/no-invalid-schema-examples.ts +4 -4
- package/src/rules/common/operation-operationId.ts +1 -1
- package/src/rules/common/operation-parameters-unique.ts +2 -2
- package/src/rules/common/path-not-include-query.ts +1 -1
- package/src/rules/common/path-params-defined.ts +1 -1
- package/src/rules/common/paths-kebab-case.ts +4 -1
- package/src/rules/common/scalar-property-missing-example.ts +1 -1
- package/src/rules/common/spec.ts +10 -7
- package/src/rules/no-unresolved-refs.ts +1 -1
- package/src/rules/oas2/__tests__/boolean-parameter-prefixes.test.ts +3 -3
- package/src/rules/oas2/__tests__/spec/info.test.ts +12 -12
- package/src/rules/oas2/__tests__/spec/operation.test.ts +4 -4
- package/src/rules/oas2/__tests__/spec/paths.test.ts +10 -10
- package/src/rules/oas2/__tests__/spec/referenceableScalars.test.ts +6 -2
- package/src/rules/oas2/__tests__/spec/utils.ts +6 -6
- package/src/rules/oas2/index.ts +3 -3
- package/src/rules/oas2/remove-unused-components.ts +13 -8
- package/src/rules/oas3/__tests__/boolean-parameter-prefixes.test.ts +3 -3
- 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 +13 -13
- package/src/rules/oas3/__tests__/no-server-example.com.test.ts +2 -2
- 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__/spec/callbacks.test.ts +1 -1
- package/src/rules/oas3/__tests__/spec/info.test.ts +12 -12
- package/src/rules/oas3/__tests__/spec/operation.test.ts +8 -8
- package/src/rules/oas3/__tests__/spec/paths.test.ts +10 -10
- package/src/rules/oas3/__tests__/spec/referenceableScalars.test.ts +12 -12
- package/src/rules/oas3/__tests__/spec/servers.test.ts +15 -15
- package/src/rules/oas3/__tests__/spec/spec.test.ts +6 -6
- package/src/rules/oas3/__tests__/spec/utils.ts +6 -6
- package/src/rules/oas3/index.ts +3 -3
- package/src/rules/oas3/no-empty-servers.ts +1 -1
- package/src/rules/oas3/no-invalid-media-type-examples.ts +14 -6
- package/src/rules/oas3/no-servers-empty-enum.ts +9 -10
- package/src/rules/oas3/remove-unused-components.ts +18 -7
- package/src/rules/other/stats.ts +46 -17
- package/src/rules/utils.ts +19 -3
- package/src/types/index.ts +5 -5
- package/src/types/redocly-yaml.ts +8 -7
- package/src/typings/common.ts +9 -1
- package/src/typings/openapi.ts +1 -1
- package/src/utils.ts +31 -8
- package/src/visitors.ts +4 -4
- package/src/walk.ts +15 -11
- package/tsconfig.tsbuildinfo +1 -1
- package/lib/rules/common/license-url.d.ts +0 -2
- package/lib/rules/common/license-url.js +0 -12
- package/src/rules/common/license-url.ts +0 -10
package/src/bundle.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { Oas3_1Types } from './types/oas3_1';
|
|
|
7
7
|
import { NormalizedNodeType, normalizeTypes, NodeType } from './types';
|
|
8
8
|
import { WalkContext, walkDocument, UserContext, ResolveResult } from './walk';
|
|
9
9
|
import { detectOpenAPI, openAPIMajor, OasMajorVersion } from './oas-types';
|
|
10
|
-
import {isAbsoluteUrl, isRef, Location, refBaseName} from './ref-utils';
|
|
10
|
+
import { isAbsoluteUrl, isRef, Location, refBaseName } from './ref-utils';
|
|
11
11
|
import { initRules } from './config/rules';
|
|
12
12
|
import { reportUnresolvedRef } from './rules/no-unresolved-refs';
|
|
13
13
|
import { isPlainObject } from './utils';
|
|
@@ -16,7 +16,7 @@ import { isRedoclyRegistryURL } from './redocly';
|
|
|
16
16
|
import { RemoveUnusedComponents as RemoveUnusedComponentsOas2 } from './rules/oas2/remove-unused-components';
|
|
17
17
|
import { RemoveUnusedComponents as RemoveUnusedComponentsOas3 } from './rules/oas3/remove-unused-components';
|
|
18
18
|
|
|
19
|
-
import type { Config,
|
|
19
|
+
import type { Config, StyleguideConfig } from './config';
|
|
20
20
|
|
|
21
21
|
export type Oas3RuleSet = Record<string, Oas3Rule>;
|
|
22
22
|
|
|
@@ -57,7 +57,7 @@ export async function bundle(opts: {
|
|
|
57
57
|
return bundleDocument({
|
|
58
58
|
document,
|
|
59
59
|
...opts,
|
|
60
|
-
config: opts.config.
|
|
60
|
+
config: opts.config.styleguide,
|
|
61
61
|
externalRefResolver,
|
|
62
62
|
});
|
|
63
63
|
}
|
|
@@ -66,7 +66,7 @@ type BundleContext = WalkContext;
|
|
|
66
66
|
|
|
67
67
|
export async function bundleDocument(opts: {
|
|
68
68
|
document: Document;
|
|
69
|
-
config:
|
|
69
|
+
config: StyleguideConfig;
|
|
70
70
|
customTypes?: Record<string, NodeType>;
|
|
71
71
|
externalRefResolver: BaseResolver;
|
|
72
72
|
dereference?: boolean;
|
|
@@ -94,9 +94,9 @@ export async function bundleDocument(opts: {
|
|
|
94
94
|
? Oas3_1Types
|
|
95
95
|
: Oas3Types
|
|
96
96
|
: Oas2Types,
|
|
97
|
-
oasVersion
|
|
97
|
+
oasVersion
|
|
98
98
|
),
|
|
99
|
-
config
|
|
99
|
+
config
|
|
100
100
|
);
|
|
101
101
|
|
|
102
102
|
const preprocessors = initRules(rules as any, config, 'preprocessors', oasVersion);
|
|
@@ -113,10 +113,11 @@ export async function bundleDocument(opts: {
|
|
|
113
113
|
decorators.push({
|
|
114
114
|
severity: 'error',
|
|
115
115
|
ruleId: 'remove-unused-components',
|
|
116
|
-
visitor:
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
116
|
+
visitor:
|
|
117
|
+
oasMajorVersion === OasMajorVersion.Version2
|
|
118
|
+
? RemoveUnusedComponentsOas2({})
|
|
119
|
+
: RemoveUnusedComponentsOas3({}),
|
|
120
|
+
});
|
|
120
121
|
}
|
|
121
122
|
|
|
122
123
|
const resolvedRefMap = await resolveDocument({
|
|
@@ -137,12 +138,12 @@ export async function bundleDocument(opts: {
|
|
|
137
138
|
skipRedoclyRegistryRefs,
|
|
138
139
|
document,
|
|
139
140
|
resolvedRefMap,
|
|
140
|
-
keepUrlRefs
|
|
141
|
+
keepUrlRefs
|
|
141
142
|
),
|
|
142
143
|
},
|
|
143
144
|
...decorators,
|
|
144
145
|
] as any,
|
|
145
|
-
types
|
|
146
|
+
types
|
|
146
147
|
);
|
|
147
148
|
|
|
148
149
|
walkDocument({
|
|
@@ -210,7 +211,7 @@ function makeBundleVisitor(
|
|
|
210
211
|
skipRedoclyRegistryRefs: boolean,
|
|
211
212
|
rootDocument: Document,
|
|
212
213
|
resolvedRefMap: ResolvedRefMap,
|
|
213
|
-
keepUrlRefs: boolean
|
|
214
|
+
keepUrlRefs: boolean
|
|
214
215
|
) {
|
|
215
216
|
let components: Record<string, Record<string, any>>;
|
|
216
217
|
|
|
@@ -287,7 +288,7 @@ function makeBundleVisitor(
|
|
|
287
288
|
}
|
|
288
289
|
|
|
289
290
|
function resolveBundledComponent(node: OasRef, resolved: ResolveResult<any>, ctx: UserContext) {
|
|
290
|
-
const newRefId = makeRefId(ctx.location.source.absoluteRef, node.$ref)
|
|
291
|
+
const newRefId = makeRefId(ctx.location.source.absoluteRef, node.$ref);
|
|
291
292
|
resolvedRefMap.set(newRefId, {
|
|
292
293
|
document: rootDocument,
|
|
293
294
|
isRemote: false,
|
|
@@ -310,7 +311,7 @@ function makeBundleVisitor(
|
|
|
310
311
|
function saveComponent(
|
|
311
312
|
componentType: string,
|
|
312
313
|
target: { node: any; location: Location },
|
|
313
|
-
ctx: UserContext
|
|
314
|
+
ctx: UserContext
|
|
314
315
|
) {
|
|
315
316
|
components[componentType] = components[componentType] || {};
|
|
316
317
|
const name = getComponentName(target, componentType, ctx);
|
|
@@ -325,7 +326,7 @@ function makeBundleVisitor(
|
|
|
325
326
|
function isEqualOrEqualRef(
|
|
326
327
|
node: any,
|
|
327
328
|
target: { node: any; location: Location },
|
|
328
|
-
ctx: UserContext
|
|
329
|
+
ctx: UserContext
|
|
329
330
|
) {
|
|
330
331
|
if (
|
|
331
332
|
isRef(node) &&
|
|
@@ -340,7 +341,7 @@ function makeBundleVisitor(
|
|
|
340
341
|
function getComponentName(
|
|
341
342
|
target: { node: any; location: Location },
|
|
342
343
|
componentType: string,
|
|
343
|
-
ctx: UserContext
|
|
344
|
+
ctx: UserContext
|
|
344
345
|
) {
|
|
345
346
|
const [fileRef, pointer] = [target.location.source.absoluteRef, target.location.pointer];
|
|
346
347
|
const componentsGroup = components[componentType];
|
|
@@ -24,6 +24,7 @@ Object {
|
|
|
24
24
|
"oas3_1Rules": Object {
|
|
25
25
|
"no-empty-servers": "error",
|
|
26
26
|
"no-example-value-and-externalValue": "error",
|
|
27
|
+
"no-invalid-media-type-examples": "error",
|
|
27
28
|
"no-server-example.com": "warn",
|
|
28
29
|
"no-server-trailing-slash": "error",
|
|
29
30
|
"no-servers-empty-enum": "error",
|
|
@@ -70,7 +71,7 @@ Object {
|
|
|
70
71
|
}
|
|
71
72
|
`;
|
|
72
73
|
|
|
73
|
-
exports[`
|
|
74
|
+
exports[`resolveStyleguideConfig should resolve extends with local file config witch contains path to nested config 1`] = `
|
|
74
75
|
Object {
|
|
75
76
|
"decorators": Object {},
|
|
76
77
|
"doNotResolveExamples": undefined,
|
|
@@ -94,6 +95,7 @@ Object {
|
|
|
94
95
|
"oas3_1Rules": Object {
|
|
95
96
|
"no-empty-servers": "error",
|
|
96
97
|
"no-example-value-and-externalValue": "error",
|
|
98
|
+
"no-invalid-media-type-examples": "warn",
|
|
97
99
|
"no-server-example.com": "warn",
|
|
98
100
|
"no-server-trailing-slash": "error",
|
|
99
101
|
"no-servers-empty-enum": "error",
|