@ama-openapi/redocly-plugin 14.1.0-prerelease.8 → 14.1.0-prerelease.9

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ama-openapi/redocly-plugin",
3
- "version": "14.1.0-prerelease.8",
3
+ "version": "14.1.0-prerelease.9",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -30,13 +30,13 @@
30
30
  "postbuild": "patch-package-json-main"
31
31
  },
32
32
  "dependencies": {
33
- "@ama-openapi/core": "~14.1.0-prerelease.8",
33
+ "@ama-openapi/core": "~14.1.0-prerelease.9",
34
34
  "dotenv": "~17.2.3",
35
35
  "tslib": "^2.6.2",
36
36
  "yargs": "~18.0.0"
37
37
  },
38
38
  "peerDependencies": {
39
- "@o3r/telemetry": "~14.1.0-prerelease.8",
39
+ "@o3r/telemetry": "~14.1.0-prerelease.9",
40
40
  "@redocly/openapi-core": "^2.11.0"
41
41
  },
42
42
  "peerDependenciesMeta": {
@@ -55,20 +55,19 @@
55
55
  "@nx/eslint-plugin": "~22.4.0",
56
56
  "@nx/jest": "~22.4.0",
57
57
  "@nx/js": "~22.4.0",
58
- "@o3r/build-helpers": "~14.1.0-prerelease.8",
59
- "@o3r/eslint-plugin": "~14.1.0-prerelease.8",
60
- "@o3r/telemetry": "~14.1.0-prerelease.8",
61
- "@o3r/test-helpers": "~14.1.0-prerelease.8",
58
+ "@o3r/build-helpers": "~14.1.0-prerelease.9",
59
+ "@o3r/eslint-plugin": "~14.1.0-prerelease.9",
60
+ "@o3r/telemetry": "~14.1.0-prerelease.9",
61
+ "@o3r/test-helpers": "~14.1.0-prerelease.9",
62
62
  "@redocly/openapi-core": "~2.11.0",
63
63
  "@stylistic/eslint-plugin": "~5.7.0",
64
64
  "@types/jest": "~30.0.0",
65
- "@types/js-yaml": "^4.0.5",
66
65
  "@types/minimist": "^1.2.2",
67
66
  "@types/node": "~24.10.0",
68
67
  "@types/semver": "^7.3.13",
69
68
  "@types/yargs": "~17.0.33",
70
69
  "@typescript-eslint/parser": "~8.54.0",
71
- "angular-eslint": "~21.1.0",
70
+ "angular-eslint": "~21.2.0",
72
71
  "babel-jest": "^30.0.5",
73
72
  "cpy-cli": "^6.0.0",
74
73
  "eslint": "~9.39.0",
@@ -1 +1 @@
1
- {"version":3,"file":"remove-unused-components.decorator.d.mts","sourceRoot":"","sources":["../../../../../../src/plugins/decorators/oas3/remove-unused-components/remove-unused-components.decorator.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EAEtB,MAAM,uBAAuB,CAAC;AAE/B,0DAA0D;AAC1D,eAAO,MAAM,qCAAqC,6BAA6B,CAAC;AAEhF;;;;;;GAMG;AACH,eAAO,MAAM,+BAA+B,EAAE,gBAyG7C,CAAC"}
1
+ {"version":3,"file":"remove-unused-components.decorator.d.mts","sourceRoot":"","sources":["../../../../../../src/plugins/decorators/oas3/remove-unused-components/remove-unused-components.decorator.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EAEtB,MAAM,uBAAuB,CAAC;AAE/B,0DAA0D;AAC1D,eAAO,MAAM,qCAAqC,6BAA6B,CAAC;AAKhF;;;;;;GAMG;AACH,eAAO,MAAM,+BAA+B,EAAE,gBA4I7C,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import { logger, } from '@redocly/openapi-core';
2
2
  /** Name of the removeUnusedComponents custom decorator */
3
3
  export const DECORATOR_ID_REMOVE_UNUSED_COMPONENTS = 'remove-unused-components';
4
+ /** Composition keywords in OpenAPI Schema */
5
+ const COMPOSITION_KEYWORDS = ['allOf', 'oneOf', 'anyOf', 'not'];
4
6
  /**
5
7
  * This decorator remove the components not referred in the bundled specification
6
8
  *
@@ -9,6 +11,7 @@ export const DECORATOR_ID_REMOVE_UNUSED_COMPONENTS = 'remove-unused-components';
9
11
  * This plugin will be deprecated in favor to the built-in plugin when issue https://github.com/Redocly/redocly-cli/issues/1783 is fixed
10
12
  */
11
13
  export const removeUnusedComponentsDecorator = () => {
14
+ const discriminatorNoMappingRefs = new Set();
12
15
  const refMaps = new Map();
13
16
  const setRef = (ref, ctx) => {
14
17
  if (refMaps.has(ref)) {
@@ -44,6 +47,38 @@ export const removeUnusedComponentsDecorator = () => {
44
47
  .forEach((value) => setRef(value, ctx));
45
48
  }
46
49
  },
50
+ // Discover and register if the schema references are used as implicit polymorphism
51
+ Schema: {
52
+ skip: (node) => node.type !== 'object',
53
+ enter: (node, ctx) => {
54
+ if (node.discriminator) {
55
+ if (node.discriminator.mapping) {
56
+ Object.values(node.discriminator.mapping)
57
+ .forEach((value) => setRef(value, ctx));
58
+ }
59
+ else {
60
+ discriminatorNoMappingRefs.add(ctx);
61
+ }
62
+ }
63
+ },
64
+ leave: (node, ctx) => {
65
+ const discriminatorRefs = [...discriminatorNoMappingRefs];
66
+ COMPOSITION_KEYWORDS
67
+ .map((key) => node[key])
68
+ .filter((item) => !!item)
69
+ .forEach((item) => {
70
+ const schemas = Array.isArray(item) ? item : [item];
71
+ schemas
72
+ .filter((schema) => !!schema.$ref)
73
+ .forEach((schema) => {
74
+ const discriminatorRef = discriminatorRefs.find(({ location }) => location.absolutePointer.endsWith(schema.$ref));
75
+ if (discriminatorRef) {
76
+ setRef(ctx.location.pointer, discriminatorRef);
77
+ }
78
+ });
79
+ });
80
+ }
81
+ },
47
82
  Paths: {
48
83
  leave: registerComponent
49
84
  },
@@ -1 +1 @@
1
- {"version":3,"file":"remove-unused-components.decorator.mjs","sourceRoot":"","sources":["../../../../../../src/plugins/decorators/oas3/remove-unused-components/remove-unused-components.decorator.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remove-unused-components.decorator.mjs","sourceRoot":"","sources":["../../../../../../src/plugins/decorators/oas3/remove-unused-components/remove-unused-components.decorator.mts"],"names":[],"mappings":"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"}