@redocly/openapi-core 2.27.0 → 2.28.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.
@@ -1 +1 @@
1
- {"version":3,"file":"bundle-document.d.ts","sourceRoot":"","sources":["../../src/bundle/bundle-document.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,OAAO,EAAmB,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAClF,OAAO,EAAkB,KAAK,kBAAkB,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE3F,OAAO,EAAkC,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,mBAAmB,CAAC,EAAE,YAAY,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0BAA0B,CAAC,EAAE,YAAY,CAAC;CAC3C,CAAC;AAIF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,QAAQ,CAAC;IACjB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC3C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvD,CAAC;AAEF,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,mBAAmB,EAAE,YAAY,CAAC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0BAA0B,CAAC,EAAE,YAAY,CAAC;CAC3C,GAAG,OAAO,CAAC,YAAY,CAAC,CA+FxB"}
1
+ {"version":3,"file":"bundle-document.d.ts","sourceRoot":"","sources":["../../src/bundle/bundle-document.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,OAAO,EAAmB,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAClF,OAAO,EAAkB,KAAK,kBAAkB,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE3F,OAAO,EAAkC,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,mBAAmB,CAAC,EAAE,YAAY,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0BAA0B,CAAC,EAAE,YAAY,CAAC;CAC3C,CAAC;AAIF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,QAAQ,CAAC;IACjB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC3C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvD,CAAC;AAEF,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,mBAAmB,EAAE,YAAY,CAAC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0BAA0B,CAAC,EAAE,YAAY,CAAC;CAC3C,GAAG,OAAO,CAAC,YAAY,CAAC,CAoHxB"}
@@ -22,15 +22,6 @@ export async function bundleDocument(opts) {
22
22
  refTypes: new Map(),
23
23
  visitorsData: {},
24
24
  };
25
- if (removeUnusedComponents && !decorators.some((d) => d.ruleId === 'remove-unused-components')) {
26
- decorators.push({
27
- severity: 'error',
28
- ruleId: 'remove-unused-components',
29
- visitor: specMajorVersion === 'oas2'
30
- ? RemoveUnusedComponentsOas2({})
31
- : RemoveUnusedComponentsOas3({}),
32
- });
33
- }
34
25
  let resolvedRefMap = await resolveDocument({
35
26
  rootDocument: document,
36
27
  rootType: normalizedTypes.Root,
@@ -64,7 +55,7 @@ export async function bundleDocument(opts) {
64
55
  componentRenamingConflicts,
65
56
  }),
66
57
  },
67
- ...decorators,
58
+ ...decorators.filter((decorator) => decorator.ruleId !== 'remove-unused-components'),
68
59
  ], normalizedTypes);
69
60
  walkDocument({
70
61
  document,
@@ -73,6 +64,30 @@ export async function bundleDocument(opts) {
73
64
  resolvedRefMap,
74
65
  ctx,
75
66
  });
67
+ if (removeUnusedComponents ||
68
+ config.getDecoratorSettings('remove-unused-components', specVersion).severity !== 'off') {
69
+ const postBundleRefMap = await resolveDocument({
70
+ rootDocument: document,
71
+ rootType: normalizedTypes.Root,
72
+ externalRefResolver,
73
+ });
74
+ const postBundleVisitors = normalizeVisitors([
75
+ {
76
+ severity: 'error',
77
+ ruleId: 'remove-unused-components',
78
+ visitor: specMajorVersion === 'oas2'
79
+ ? RemoveUnusedComponentsOas2({})
80
+ : RemoveUnusedComponentsOas3({}),
81
+ },
82
+ ], normalizedTypes);
83
+ walkDocument({
84
+ document,
85
+ rootType: normalizedTypes.Root,
86
+ normalizedVisitors: postBundleVisitors,
87
+ resolvedRefMap: postBundleRefMap,
88
+ ctx,
89
+ });
90
+ }
76
91
  return {
77
92
  bundle: document,
78
93
  problems: ctx.problems.map((problem) => config.addProblemToIgnore(problem)),
@@ -1 +1 @@
1
- {"version":3,"file":"bundle-document.js","sourceRoot":"","sources":["../../src/bundle/bundle-document.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bundle-document.js","sourceRoot":"","sources":["../../src/bundle/bundle-document.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"bundle-visitor.d.ts","sourceRoot":"","sources":["../../src/bundle/bundle-visitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AASxD,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAMnE,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGpE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,4OAyF7E;AAED,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,EACX,0BAAmC,GACpC,EAAE;IACD,OAAO,EAAE,gBAAgB,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,QAAQ,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,0BAA0B,CAAC,EAAE,YAAY,CAAC;CAC3C,6BAiMA"}
1
+ {"version":3,"file":"bundle-visitor.d.ts","sourceRoot":"","sources":["../../src/bundle/bundle-visitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAWxD,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAKnE,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGpE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,4OAyF7E;AAED,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,EACX,0BAAmC,GACpC,EAAE;IACD,OAAO,EAAE,gBAAgB,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,QAAQ,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,0BAA0B,CAAC,EAAE,YAAY,CAAC;CAC3C,6BAoMA"}
@@ -1,7 +1,6 @@
1
- import { isAbsoluteUrl, replaceRef, isExternalValue, isRef, refBaseName, } from '../ref-utils.js';
1
+ import { isAbsoluteUrl, replaceRef, isExternalValue, isRef, pointerBaseName, refBaseName, isMappingRef, } from '../ref-utils.js';
2
2
  import { reportUnresolvedRef } from '../rules/common/no-unresolved-refs.js';
3
3
  import { dequal } from '../utils/dequal.js';
4
- import { isTruthy } from '../utils/is-truthy.js';
5
4
  import { makeRefId } from '../utils/make-ref-id.js';
6
5
  export function mapTypeToComponent(typeName, version) {
7
6
  switch (version) {
@@ -173,18 +172,35 @@ export function makeBundleVisitor({ version, dereference, rootDocument, resolved
173
172
  },
174
173
  };
175
174
  if (version === 'oas3') {
176
- visitor.DiscriminatorMapping = {
177
- leave(mapping, ctx) {
178
- for (const name of Object.keys(mapping)) {
179
- const $ref = mapping[name];
180
- const resolved = ctx.resolve({ $ref });
181
- if (!resolved.location || resolved.node === undefined) {
182
- reportUnresolvedRef(resolved, ctx.report, ctx.location.child(name));
183
- return;
184
- }
185
- const componentType = mapTypeToComponent('Schema', version);
186
- mapping[name] = saveComponent(componentType, resolved, ctx);
175
+ const componentType = mapTypeToComponent('Schema', version);
176
+ visitor.Discriminator = {
177
+ leave(discriminator, ctx) {
178
+ if (typeof discriminator.defaultMapping !== 'string' ||
179
+ !isMappingRef(discriminator.defaultMapping)) {
180
+ return;
181
+ }
182
+ const resolved = ctx.resolve({ $ref: discriminator.defaultMapping });
183
+ if (!resolved.location || resolved.node === undefined) {
184
+ reportUnresolvedRef(resolved, ctx.report, ctx.location.child('defaultMapping'));
185
+ return;
187
186
  }
187
+ discriminator.defaultMapping = saveComponent(componentType, resolved, ctx);
188
+ },
189
+ DiscriminatorMapping: {
190
+ leave(mapping, ctx) {
191
+ for (const name of Object.keys(mapping)) {
192
+ const $ref = mapping[name];
193
+ if (!isMappingRef($ref)) {
194
+ continue;
195
+ }
196
+ const resolved = ctx.resolve({ $ref });
197
+ if (!resolved.location || resolved.node === undefined) {
198
+ reportUnresolvedRef(resolved, ctx.report, ctx.location.child(name));
199
+ return;
200
+ }
201
+ mapping[name] = saveComponent(componentType, resolved, ctx);
202
+ }
203
+ },
188
204
  },
189
205
  };
190
206
  }
@@ -221,29 +237,16 @@ export function makeBundleVisitor({ version, dereference, rootDocument, resolved
221
237
  return dequal(node, target.node);
222
238
  }
223
239
  function getComponentName(target, componentType, ctx) {
224
- const [fileRef, pointer] = [target.location.source.absoluteRef, target.location.pointer];
225
240
  const componentsGroup = components[componentType];
226
- let name = '';
227
- const refParts = pointer.slice(2).split('/').filter(isTruthy); // slice(2) removes "#/"
228
- while (refParts.length > 0) {
229
- name = refParts.pop() + (name ? `-${name}` : '');
230
- if (!componentsGroup ||
231
- !componentsGroup[name] ||
232
- isEqualOrEqualRef(componentsGroup[name], target, ctx)) {
233
- return name;
234
- }
235
- }
236
- name = refBaseName(fileRef) + (name ? `_${name}` : '');
237
- if (!componentsGroup[name] || isEqualOrEqualRef(componentsGroup[name], target, ctx)) {
238
- return name;
239
- }
241
+ const [fileRef, pointer] = [target.location.source.absoluteRef, target.location.pointer];
242
+ let name = pointerBaseName(pointer) || refBaseName(fileRef);
240
243
  const prevName = name;
241
244
  let serialId = 2;
242
245
  while (componentsGroup[name] && !isEqualOrEqualRef(componentsGroup[name], target, ctx)) {
243
246
  name = `${prevName}-${serialId}`;
244
247
  serialId++;
245
248
  }
246
- if (!componentsGroup[name]) {
249
+ if (!componentsGroup[name] && prevName !== name) {
247
250
  ctx.report({
248
251
  message: `Two schemas are referenced with the same name but different content. Renamed ${prevName} to ${name}.`,
249
252
  location: ctx.location,
@@ -1 +1 @@
1
- {"version":3,"file":"bundle-visitor.js","sourceRoot":"","sources":["../../src/bundle/bundle-visitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bundle-visitor.js","sourceRoot":"","sources":["../../src/bundle/bundle-visitor.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,6 @@ export const decorators = {
14
14
  'remove-x-internal': RemoveXInternal,
15
15
  'filter-in': FilterIn,
16
16
  'filter-out': FilterOut,
17
- 'remove-unused-components': RemoveUnusedComponents, // always the last one
17
+ 'remove-unused-components': RemoveUnusedComponents,
18
18
  };
19
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decorators/oas2/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,gCAAgC,EAAE,4BAA6C;IAC/E,0BAA0B,EAAE,sBAAuC;IACnE,2BAA2B,EAAE,uBAAwC;IACrE,eAAe,EAAE,YAA6B;IAC9C,mBAAmB,EAAE,eAAgC;IACrD,WAAW,EAAE,QAAyB;IACtC,YAAY,EAAE,SAA0B;IACxC,0BAA0B,EAAE,sBAAsB,EAAE,sBAAsB;CAC3E,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decorators/oas2/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,gCAAgC,EAAE,4BAA6C;IAC/E,0BAA0B,EAAE,sBAAuC;IACnE,2BAA2B,EAAE,uBAAwC;IACrE,eAAe,EAAE,YAA6B;IAC9C,mBAAmB,EAAE,eAAgC;IACrD,WAAW,EAAE,QAAyB;IACtC,YAAY,EAAE,SAA0B;IACxC,0BAA0B,EAAE,sBAAsB;CACnD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"remove-unused-components.d.ts","sourceRoot":"","sources":["../../../src/decorators/oas2/remove-unused-components.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,eAAO,MAAM,sBAAsB,EAAE,aAwGpC,CAAC"}
1
+ {"version":3,"file":"remove-unused-components.d.ts","sourceRoot":"","sources":["../../../src/decorators/oas2/remove-unused-components.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AASvD,eAAO,MAAM,sBAAsB,EAAE,aAiGpC,CAAC"}
@@ -1,54 +1,63 @@
1
+ import { parseRef } from '../../ref-utils.js';
1
2
  import { isEmptyObject } from '../../utils/is-empty-object.js';
3
+ const OAS2_COMPONENT_TYPES = [
4
+ 'definitions',
5
+ 'parameters',
6
+ 'responses',
7
+ 'securityDefinitions',
8
+ ];
2
9
  export const RemoveUnusedComponents = () => {
3
10
  const components = new Map();
4
- function registerComponent(location, componentType, name) {
5
- components.set(location.absolutePointer, {
6
- usedIn: components.get(location.absolutePointer)?.usedIn ?? [],
11
+ function registerComponent(componentType, name) {
12
+ const key = `${componentType}/${name}`;
13
+ components.set(key, {
14
+ usedIn: components.get(key)?.usedIn ?? [],
7
15
  componentType,
8
16
  name,
9
17
  });
10
18
  }
11
- function removeUnusedComponents(root, removedPaths) {
12
- const removedLengthStart = removedPaths.length;
13
- for (const [path, { usedIn, name, componentType }] of components) {
14
- const used = usedIn.some((location) => !removedPaths.some((removed) =>
15
- // Check if the current location's absolute pointer starts with the 'removed' path
16
- // and either its length matches exactly with 'removed' or the character after the 'removed' path is a '/'
17
- location.absolutePointer.startsWith(removed) &&
18
- (location.absolutePointer.length === removed.length ||
19
- location.absolutePointer[removed.length] === '/')));
19
+ function getComponentKey(pointer) {
20
+ if (!pointer.startsWith('#/'))
21
+ return;
22
+ const [type, name] = parseRef(pointer).pointer;
23
+ if (!type || !name)
24
+ return undefined;
25
+ if (!OAS2_COMPONENT_TYPES.includes(type))
26
+ return undefined;
27
+ return `${type}/${name}`;
28
+ }
29
+ function removeUnusedComponents(root, removedKeys = new Set()) {
30
+ const removedCountBefore = removedKeys.size;
31
+ for (const [key, { usedIn, name, componentType }] of components) {
32
+ const used = usedIn.some((sourceKey) => sourceKey !== key && !removedKeys.has(sourceKey));
20
33
  if (!used && componentType) {
21
- removedPaths.push(path);
34
+ removedKeys.add(key);
22
35
  delete root[componentType][name];
23
- components.delete(path);
36
+ components.delete(key);
24
37
  if (isEmptyObject(root[componentType])) {
25
38
  delete root[componentType];
26
39
  }
27
40
  }
28
41
  }
29
- return removedPaths.length > removedLengthStart
30
- ? removeUnusedComponents(root, removedPaths)
31
- : removedPaths.length;
42
+ return removedKeys.size > removedCountBefore
43
+ ? removeUnusedComponents(root, removedKeys)
44
+ : removedKeys.size;
32
45
  }
33
46
  return {
34
47
  ref: {
35
- leave(ref, { location, type, resolve, key }) {
48
+ leave(ref, { location, type, key }) {
36
49
  if (['Schema', 'Parameter', 'Response', 'SecurityScheme'].includes(type.name)) {
37
- const resolvedRef = resolve(ref);
38
- if (!resolvedRef.location)
39
- return;
40
- const [fileLocation, localPointer] = resolvedRef.location.absolutePointer.split('#', 2);
41
- if (!localPointer)
50
+ const targetPointer = getComponentKey(ref.$ref);
51
+ if (!targetPointer)
42
52
  return;
43
- const componentLevelLocalPointer = localPointer.split('/').slice(0, 3).join('/');
44
- const pointer = `${fileLocation}#${componentLevelLocalPointer}`;
45
- const registered = components.get(pointer);
53
+ const sourcePointer = getComponentKey(location.pointer) ?? location.pointer;
54
+ const registered = components.get(targetPointer);
46
55
  if (registered) {
47
- registered.usedIn.push(location);
56
+ registered.usedIn.push(sourcePointer);
48
57
  }
49
58
  else {
50
- components.set(pointer, {
51
- usedIn: [location],
59
+ components.set(targetPointer, {
60
+ usedIn: [sourcePointer],
52
61
  name: key.toString(),
53
62
  });
54
63
  }
@@ -58,29 +67,29 @@ export const RemoveUnusedComponents = () => {
58
67
  Root: {
59
68
  leave(root, ctx) {
60
69
  const data = ctx.getVisitorData();
61
- data.removedCount = removeUnusedComponents(root, []);
70
+ data.removedCount = removeUnusedComponents(root);
62
71
  },
63
72
  },
64
73
  NamedSchemas: {
65
- Schema(schema, { location, key }) {
74
+ Schema(schema, { key }) {
66
75
  if (!schema.allOf) {
67
- registerComponent(location, 'definitions', key.toString());
76
+ registerComponent('definitions', key.toString());
68
77
  }
69
78
  },
70
79
  },
71
80
  NamedParameters: {
72
- Parameter(_parameter, { location, key }) {
73
- registerComponent(location, 'parameters', key.toString());
81
+ Parameter(_parameter, { key }) {
82
+ registerComponent('parameters', key.toString());
74
83
  },
75
84
  },
76
85
  NamedResponses: {
77
- Response(_response, { location, key }) {
78
- registerComponent(location, 'responses', key.toString());
86
+ Response(_response, { key }) {
87
+ registerComponent('responses', key.toString());
79
88
  },
80
89
  },
81
90
  NamedSecuritySchemes: {
82
- SecurityScheme(_securityScheme, { location, key }) {
83
- registerComponent(location, 'securityDefinitions', key.toString());
91
+ SecurityScheme(_securityScheme, { key }) {
92
+ registerComponent('securityDefinitions', key.toString());
84
93
  },
85
94
  },
86
95
  };
@@ -1 +1 @@
1
- {"version":3,"file":"remove-unused-components.js","sourceRoot":"","sources":["../../../src/decorators/oas2/remove-unused-components.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remove-unused-components.js","sourceRoot":"","sources":["../../../src/decorators/oas2/remove-unused-components.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,6 @@ export const decorators = {
16
16
  'filter-in': FilterIn,
17
17
  'filter-out': FilterOut,
18
18
  'media-type-examples-override': MediaTypeExamplesOverride,
19
- 'remove-unused-components': RemoveUnusedComponents, // always the last one
19
+ 'remove-unused-components': RemoveUnusedComponents,
20
20
  };
21
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decorators/oas3/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,gCAAgC,EAAE,4BAA6C;IAC/E,0BAA0B,EAAE,sBAAuC;IACnE,2BAA2B,EAAE,uBAAwC;IACrE,eAAe,EAAE,YAA6B;IAC9C,mBAAmB,EAAE,eAAgC;IACrD,WAAW,EAAE,QAAyB;IACtC,YAAY,EAAE,SAA0B;IACxC,8BAA8B,EAAE,yBAA0C;IAC1E,0BAA0B,EAAE,sBAAsB,EAAE,sBAAsB;CAC3E,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decorators/oas3/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,gCAAgC,EAAE,4BAA6C;IAC/E,0BAA0B,EAAE,sBAAuC;IACnE,2BAA2B,EAAE,uBAAwC;IACrE,eAAe,EAAE,YAA6B;IAC9C,mBAAmB,EAAE,eAAgC;IACrD,WAAW,EAAE,QAAyB;IACtC,YAAY,EAAE,SAA0B;IACxC,8BAA8B,EAAE,yBAA0C;IAC1E,0BAA0B,EAAE,sBAAsB;CACnD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"remove-unused-components.d.ts","sourceRoot":"","sources":["../../../src/decorators/oas3/remove-unused-components.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKvD,eAAO,MAAM,sBAAsB,EAAE,aA6IpC,CAAC"}
1
+ {"version":3,"file":"remove-unused-components.d.ts","sourceRoot":"","sources":["../../../src/decorators/oas3/remove-unused-components.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAYvD,eAAO,MAAM,sBAAsB,EAAE,aAgIpC,CAAC"}
@@ -1,40 +1,48 @@
1
+ import { parseRef } from '../../ref-utils.js';
1
2
  import { isEmptyObject } from '../../utils/is-empty-object.js';
2
3
  import { hasComponent } from '../../utils/oas-has-component.js';
4
+ function getComponentKey(pointer) {
5
+ if (!pointer.startsWith('#/components/'))
6
+ return;
7
+ const [_component, type, name] = parseRef(pointer).pointer;
8
+ if (!type || !name)
9
+ return;
10
+ return `${type}/${name}`;
11
+ }
3
12
  export const RemoveUnusedComponents = () => {
4
13
  const components = new Map();
5
- function registerComponent(location, componentType, name) {
6
- components.set(location.absolutePointer, {
7
- usedIn: components.get(location.absolutePointer)?.usedIn ?? [],
14
+ function registerComponent(componentType, name) {
15
+ const key = `${componentType}/${name}`;
16
+ components.set(key, {
17
+ usedIn: components.get(key)?.usedIn ?? [],
8
18
  componentType,
9
19
  name,
10
20
  });
11
21
  }
12
- function removeUnusedComponents(root, removedPaths) {
13
- const removedLengthStart = removedPaths.length;
14
- for (const [path, { usedIn, name, componentType }] of components) {
15
- const used = usedIn.some((location) => !removedPaths.some((removed) => location.absolutePointer.startsWith(removed) &&
16
- (location.absolutePointer.length === removed.length ||
17
- location.absolutePointer[removed.length] === '/')));
22
+ function removeUnusedComponents(root, removedKeys = new Set()) {
23
+ const removedCountBefore = removedKeys.size;
24
+ for (const [key, { usedIn, name, componentType }] of components) {
25
+ const used = usedIn.some((sourceKey) => sourceKey !== key && !removedKeys.has(sourceKey));
18
26
  if (!used &&
19
27
  componentType &&
20
28
  root.components &&
21
29
  hasComponent(root.components, componentType)) {
22
- removedPaths.push(path);
30
+ removedKeys.add(key);
23
31
  const componentChild = root.components[componentType];
24
32
  delete componentChild[name];
25
- components.delete(path);
33
+ components.delete(key);
26
34
  if (isEmptyObject(componentChild)) {
27
35
  delete root.components[componentType];
28
36
  }
29
37
  }
30
38
  }
31
- return removedPaths.length > removedLengthStart
32
- ? removeUnusedComponents(root, removedPaths)
33
- : removedPaths.length;
39
+ return removedKeys.size > removedCountBefore
40
+ ? removeUnusedComponents(root, removedKeys)
41
+ : removedKeys.size;
34
42
  }
35
43
  return {
36
44
  ref: {
37
- leave(ref, { location, type, resolve, key }) {
45
+ leave(ref, { location, type, key }) {
38
46
  if ([
39
47
  'Schema',
40
48
  'Header',
@@ -44,21 +52,17 @@ export const RemoveUnusedComponents = () => {
44
52
  'RequestBody',
45
53
  'MediaTypesMap',
46
54
  ].includes(type.name)) {
47
- const resolvedRef = resolve(ref);
48
- if (!resolvedRef.location)
55
+ const targetPointer = getComponentKey(ref.$ref);
56
+ if (!targetPointer)
49
57
  return;
50
- const [fileLocation, localPointer] = resolvedRef.location.absolutePointer.split('#', 2);
51
- if (!localPointer)
52
- return;
53
- const componentLevelLocalPointer = localPointer.split('/').slice(0, 4).join('/');
54
- const pointer = `${fileLocation}#${componentLevelLocalPointer}`;
55
- const registered = components.get(pointer);
58
+ const sourcePointer = getComponentKey(location.pointer) ?? location.pointer;
59
+ const registered = components.get(targetPointer);
56
60
  if (registered) {
57
- registered.usedIn.push(location);
61
+ registered.usedIn.push(sourcePointer);
58
62
  }
59
63
  else {
60
- components.set(pointer, {
61
- usedIn: [location],
64
+ components.set(targetPointer, {
65
+ usedIn: [sourcePointer],
62
66
  name: key.toString(),
63
67
  });
64
68
  }
@@ -68,47 +72,47 @@ export const RemoveUnusedComponents = () => {
68
72
  Root: {
69
73
  leave(root, ctx) {
70
74
  const data = ctx.getVisitorData();
71
- data.removedCount = removeUnusedComponents(root, []);
75
+ data.removedCount = removeUnusedComponents(root);
72
76
  if (isEmptyObject(root.components)) {
73
77
  delete root.components;
74
78
  }
75
79
  },
76
80
  },
77
81
  NamedSchemas: {
78
- Schema(schema, { location, key }) {
82
+ Schema(schema, { key }) {
79
83
  if (!schema.allOf) {
80
- registerComponent(location, 'schemas', key.toString());
84
+ registerComponent('schemas', key.toString());
81
85
  }
82
86
  },
83
87
  },
84
88
  NamedParameters: {
85
- Parameter(_parameter, { location, key }) {
86
- registerComponent(location, 'parameters', key.toString());
89
+ Parameter(_parameter, { key }) {
90
+ registerComponent('parameters', key.toString());
87
91
  },
88
92
  },
89
93
  NamedResponses: {
90
- Response(_response, { location, key }) {
91
- registerComponent(location, 'responses', key.toString());
94
+ Response(_response, { key }) {
95
+ registerComponent('responses', key.toString());
92
96
  },
93
97
  },
94
98
  NamedExamples: {
95
- Example(_example, { location, key }) {
96
- registerComponent(location, 'examples', key.toString());
99
+ Example(_example, { key }) {
100
+ registerComponent('examples', key.toString());
97
101
  },
98
102
  },
99
103
  NamedRequestBodies: {
100
- RequestBody(_requestBody, { location, key }) {
101
- registerComponent(location, 'requestBodies', key.toString());
104
+ RequestBody(_requestBody, { key }) {
105
+ registerComponent('requestBodies', key.toString());
102
106
  },
103
107
  },
104
108
  NamedHeaders: {
105
- Header(_header, { location, key }) {
106
- registerComponent(location, 'headers', key.toString());
109
+ Header(_header, { key }) {
110
+ registerComponent('headers', key.toString());
107
111
  },
108
112
  },
109
113
  NamedMediaTypes: {
110
- MediaTypesMap(_mediaTypesMap, { location, key }) {
111
- registerComponent(location, 'mediaTypes', key.toString());
114
+ MediaTypesMap(_mediaTypesMap, { key }) {
115
+ registerComponent('mediaTypes', key.toString());
112
116
  },
113
117
  },
114
118
  };
@@ -1 +1 @@
1
- {"version":3,"file":"remove-unused-components.js","sourceRoot":"","sources":["../../../src/decorators/oas3/remove-unused-components.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remove-unused-components.js","sourceRoot":"","sources":["../../../src/decorators/oas3/remove-unused-components.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/openapi-core",
3
- "version": "2.27.0",
3
+ "version": "2.28.0",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "types": "lib/index.d.ts",