@swagger-api/apidom-core 0.94.0 → 0.96.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 CHANGED
@@ -3,6 +3,24 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [0.96.0](https://github.com/swagger-api/apidom/compare/v0.95.0...v0.96.0) (2024-02-28)
7
+
8
+ ### Bug Fixes
9
+
10
+ - **core:** assign unique ID to elements only when missing ([#3841](https://github.com/swagger-api/apidom/issues/3841)) ([89af0a9](https://github.com/swagger-api/apidom/commit/89af0a95c1675706c1b8aec6f67a656f5d85f96b)), closes [#3840](https://github.com/swagger-api/apidom/issues/3840)
11
+ - **core:** retain meta & attributes during refracting ([#3843](https://github.com/swagger-api/apidom/issues/3843)) ([a7aac32](https://github.com/swagger-api/apidom/commit/a7aac3217730cb058370f906c2d8cc333c8111ee)), closes [#3842](https://github.com/swagger-api/apidom/issues/3842)
12
+ - **playground:** fix bug related to instantiating parser ([#3851](https://github.com/swagger-api/apidom/issues/3851)) ([9b23628](https://github.com/swagger-api/apidom/commit/9b23628d20dda075cb844d5eca0f1d63018de70b))
13
+
14
+ ### Features
15
+
16
+ - **core:** add mechanism for left shallow merge ([#3849](https://github.com/swagger-api/apidom/issues/3849)) ([3334c6b](https://github.com/swagger-api/apidom/commit/3334c6bd200adedf84c8215bb263ab9009b1d1de)), closes [#3845](https://github.com/swagger-api/apidom/issues/3845)
17
+ - **core:** add mechanism for right shallow merge ([#3846](https://github.com/swagger-api/apidom/issues/3846)) ([2059f28](https://github.com/swagger-api/apidom/commit/2059f28b810c70159d6fa4ddec1115cb38fa330b)), closes [#3845](https://github.com/swagger-api/apidom/issues/3845)
18
+ - **core:** customize meta & attributes merges for deepmerge function ([#3855](https://github.com/swagger-api/apidom/issues/3855)) ([1e94924](https://github.com/swagger-api/apidom/commit/1e94924ab474f4ce4773239f9a9b175d129602f0)), closes [#3853](https://github.com/swagger-api/apidom/issues/3853)
19
+
20
+ # [0.95.0](https://github.com/swagger-api/apidom/compare/v0.94.0...v0.95.0) (2024-02-09)
21
+
22
+ **Note:** Version bump only for package @swagger-api/apidom-core
23
+
6
24
  # [0.94.0](https://github.com/swagger-api/apidom/compare/v0.93.0...v0.94.0) (2024-02-05)
7
25
 
8
26
  **Note:** Version bump only for package @swagger-api/apidom-core
package/README.md CHANGED
@@ -104,6 +104,105 @@ transcluder.transclude(search, replace); // => ArrayElement<[1, 4, 3]>
104
104
 
105
105
  ---
106
106
 
107
+ ## Shallow merging
108
+
109
+ `mergeRight` and `mergeLeft` functions merge members of two or more ObjectElements shallowly
110
+ and handles shallow merging of ArrayElements as well.
111
+
112
+ ### API
113
+
114
+ #### mergeRight(target, source, [options])
115
+
116
+ Merges two ApiDOM elements target and source shallowly, returning a new merged ApiDOM element with the elements
117
+ from both target and source. If an element at the same key is present for both target and source,
118
+ the value from source will appear in the result. Merging creates a new ApiDOM element,
119
+ so that neither target nor source is modified (operation is immutable).
120
+
121
+ ```js
122
+ import { mergeRight, ObjectElement } from '@swagger-api/apidom-core';
123
+
124
+ const x = new ObjectElement({
125
+ foo: { bar: 3 },
126
+ });
127
+
128
+ const y = new ObjectElement({
129
+ foo: { baz: 4 },
130
+ quux: 5,
131
+ });
132
+
133
+ const output = mergeRight(x, y);
134
+ // =>
135
+ // ObjectElement({
136
+ // foo: ObjectElement({
137
+ // baz: 4,
138
+ // }),
139
+ // quux: 5,
140
+ // })
141
+ ```
142
+
143
+ #### mergeRight.all([element1, element2, ...], [options])
144
+
145
+ Merges shallowly any number of ApiDOM elements into a single ApiDOM element.
146
+
147
+ ```js
148
+ import { mergeRight, ObjectElement } from '@swagger-api/apidom-core';
149
+
150
+ const foobar = new ObjectElement({ foo: { bar: 3 } });
151
+ const foobaz = new ObjectElement({ foo: { baz: 4 } });
152
+ const bar = new ObjectElement({ bar: 'yay!' });
153
+
154
+ const output = mergeRight.all([ foobar, foobaz, bar ]);
155
+ // => ObjectElement({ foo: { baz: 4 }, bar: 'yay!' })
156
+ ```
157
+
158
+ #### mergeLeft(source, target, [options])
159
+
160
+ Merges two ApiDOM elements source and target shallowly, returning a new merged ApiDOM element with the elements
161
+ from both target and source. If an element at the same key is present for both target and source,
162
+ the value from source will appear in the result. Merging creates a new ApiDOM element,
163
+ so that neither target nor source is modified (operation is immutable).
164
+
165
+ ```js
166
+ import { mergeLeft, ObjectElement } from '@swagger-api/apidom-core';
167
+
168
+ const x = new ObjectElement({
169
+ foo: { bar: 3 },
170
+ });
171
+
172
+ const y = new ObjectElement({
173
+ foo: { baz: 4 },
174
+ quux: 5,
175
+ });
176
+
177
+ const output = mergeLeft(x, y);
178
+ // =>
179
+ // ObjectElement({
180
+ // foo: ObjectElement({
181
+ // bar: 3,
182
+ // }),
183
+ // quux: 5,
184
+ // })
185
+ ```
186
+
187
+ #### mergeLeft.all([element1, element2, ...], [options])
188
+
189
+ Merges shallowly any number of ApiDOM elements into a single ApiDOM element.
190
+
191
+ ```js
192
+ import { mergeLeft, ObjectElement } from '@swagger-api/apidom-core';
193
+
194
+ const foobar = new ObjectElement({ foo: { bar: 3 } });
195
+ const foobaz = new ObjectElement({ foo: { baz: 4 } });
196
+ const bar = new ObjectElement({ bar: 'yay!' });
197
+
198
+ const output = mergeLeft.all([ foobar, foobaz, bar ]);
199
+ // => ObjectElement({ foo: { baz: 3 }, bar: 'yay!' })
200
+ ```
201
+
202
+ ### Shallow merge Options
203
+
204
+ `mergeRight` and `mergeLeft` take the same options as [deepmerge](#deepmerge-options), except for `customMerge` and `clone`.
205
+
107
206
  ## Deep merging
108
207
 
109
208
  `deepmerge` functions merged members of two or more ObjectElements deeply
@@ -115,7 +214,7 @@ that works equivalently on ApiDOM structures.
115
214
 
116
215
  #### deepmerge(target, source, [options])
117
216
 
118
- Merge two ApiDOM elements target and source deeply, returning a new merged ApiDOM element with the elements
217
+ Merges two ApiDOM elements target and source deeply, returning a new merged ApiDOM element with the elements
119
218
  from both target and source. If an element at the same key is present for both target and source,
120
219
  the value from source will appear in the result. Merging creates a new ApiDOM element,
121
220
  so that neither target nor source is modified (operation is immutable).
@@ -173,7 +272,7 @@ const output = deepmerge(x, y);
173
272
 
174
273
  #### deepmerge.all([element1, element2, ...], [options])
175
274
 
176
- Merges any number of ApiDOM elements into a single ApiDOM element.
275
+ Merges deeply any number of ApiDOM elements into a single ApiDOM element.
177
276
 
178
277
  ```js
179
278
  import { deepmerge, ObjectElement } from '@swagger-api/apidom-core';
@@ -186,7 +285,7 @@ const output = deepmerge.all([ foobar, foobaz, bar ]);
186
285
  // => ObjectElement({ foo: { bar: 3, baz: 4 }, bar: 'yay!' })
187
286
  ```
188
287
 
189
- ### Options
288
+ ### Deepmerge Options
190
289
 
191
290
  #### arrayElementMerge
192
291
 
@@ -292,6 +391,42 @@ const output = deepmerge(alex, tony, { customMerge });
292
391
  // output.get('pets'); // => ArrayElement(['Cat', 'Parrot', 'Dog'])
293
392
  ```
294
393
 
394
+ #### customMetaMerge
395
+
396
+ Specifies a function which can be used to override the default metadata merge behavior.
397
+ The `customMetaMerge` function will be passed target and source metadata. If not specified,
398
+ the default behavior is to deep copy metadata from target to new merged element.
399
+
400
+ ```js
401
+ import { deepmerge, ObjectElement } from '@swagger-api/apidom-core';
402
+
403
+ const alex = new ObjectElement({ name: { first: 'Alex' } }, { metaKey: true });
404
+ const tony = new ObjectElement({ name: { first: 'Tony' } }, { metaKey: false });
405
+
406
+ const customMetaMerge = (targetMeta, sourceMeta) => deepmerge(targetMeta, sourceMeta);
407
+
408
+ const output = deepmerge(alex, tony, { customMetaMerge });
409
+ // output.meta.get('metaKey') // => BooleanElement(false)
410
+ ```
411
+
412
+ #### customAttributesMerge
413
+
414
+ Specifies a function which can be used to override the default attributes merge behavior.
415
+ The `customAttributesMerge` function will be passed target and source attributes. If not specified,
416
+ the default behavior is to deep copy attributes from target to new merged element.
417
+
418
+ ```js
419
+ import { deepmerge, ObjectElement } from '@swagger-api/apidom-core';
420
+
421
+ const alex = new ObjectElement({ name: { first: 'Alex' } }, undefined, { attributeKey: true });
422
+ const tony = new ObjectElement({ name: { first: 'Tony' } }, undefined, { attributeKey: false });
423
+
424
+ const customAttributesMerge = (targetMeta, sourceMeta) => deepmerge(targetMeta, sourceMeta);
425
+
426
+ const output = deepmerge(alex, tony, { customAttributesMerge });
427
+ // output.attributs.get('attributeKey') // => BooleanElement(false)
428
+ ```
429
+
295
430
  #### clone
296
431
 
297
432
  Defaults to `true`.
@@ -33,7 +33,7 @@ const IdentityManager = exports.IdentityManager = (0, _stampit.default)({
33
33
  }
34
34
 
35
35
  // use already assigned identity
36
- if (element.meta.hasKey('id') && (0, _index.isStringElement)(element.meta.id) && !element.meta.id.equals('')) {
36
+ if (element.meta.hasKey('id') && (0, _index.isStringElement)(element.meta.get('id')) && !element.meta.get('id').equals('')) {
37
37
  return element.id;
38
38
  }
39
39
 
package/cjs/index.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
  var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard").default;
4
4
  var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
5
5
  exports.__esModule = true;
6
- exports.visit = exports.traverse = exports.transclude = exports.toYAML = exports.toValue = exports.toString = exports.toJSON = exports.some = exports.sexprs = exports.reject = exports.refractorPluginSemanticElementIdentity = exports.refractorPluginElementIdentity = exports.refract = exports.parents = exports.namespace = exports.mergeAllVisitors = exports.keyMap = exports.isStringElement = exports.isSourceMapElement = exports.isRefElement = exports.isPrimitiveElement = exports.isParseResultElement = exports.isObjectElement = exports.isNumberElement = exports.isNullElement = exports.isMemberElement = exports.isLinkElement = exports.isElement = exports.isBooleanElement = exports.isArrayElement = exports.isAnnotationElement = exports.includesSymbols = exports.includesClasses = exports.hasElementSourceMap = exports.getNodeType = exports.from = exports.findAtOffset = exports.find = exports.filter = exports.dispatchRefractorPlugins = exports.dereference = exports.dehydrate = exports.defaultIdentityManager = exports.deepmerge = exports.createPredicate = exports.createNamespace = exports.cloneShallow = exports.cloneNode = exports.cloneDeep = exports.Transcluder = exports.StringElement = exports.SourceMapElement = exports.ShallowCloneError = exports.RefElement = exports.ParseResultElement = exports.ObjectSlice = exports.ObjectElement = exports.NumberElement = exports.NullElement = exports.Namespace = exports.MemberElement = exports.MediaTypes = exports.LinkElement = exports.KeyValuePair = exports.IdentityManager = exports.ElementIdentityError = exports.Element = exports.DeepCloneError = exports.CommentElement = exports.CloneError = exports.BooleanElement = exports.BREAK = exports.ArraySlice = exports.ArrayElement = exports.AnnotationElement = void 0;
6
+ exports.visit = exports.traverse = exports.transclude = exports.toYAML = exports.toValue = exports.toString = exports.toJSON = exports.some = exports.sexprs = exports.reject = exports.refractorPluginSemanticElementIdentity = exports.refractorPluginElementIdentity = exports.refract = exports.parents = exports.namespace = exports.mergeRight = exports.mergeLeft = exports.mergeAllVisitors = exports.keyMap = exports.isStringElement = exports.isSourceMapElement = exports.isRefElement = exports.isPrimitiveElement = exports.isParseResultElement = exports.isObjectElement = exports.isNumberElement = exports.isNullElement = exports.isMemberElement = exports.isLinkElement = exports.isElement = exports.isBooleanElement = exports.isArrayElement = exports.isAnnotationElement = exports.includesSymbols = exports.includesClasses = exports.hasElementSourceMap = exports.getNodeType = exports.from = exports.findAtOffset = exports.find = exports.filter = exports.dispatchRefractorPlugins = exports.dereference = exports.dehydrate = exports.defaultIdentityManager = exports.deepmerge = exports.createPredicate = exports.createNamespace = exports.cloneShallow = exports.cloneNode = exports.cloneDeep = exports.Transcluder = exports.StringElement = exports.SourceMapElement = exports.ShallowCloneError = exports.RefElement = exports.ParseResultElement = exports.ObjectSlice = exports.ObjectElement = exports.NumberElement = exports.NullElement = exports.Namespace = exports.MemberElement = exports.MediaTypes = exports.LinkElement = exports.KeyValuePair = exports.IdentityManager = exports.ElementIdentityError = exports.Element = exports.DeepCloneError = exports.CommentElement = exports.CloneError = exports.BooleanElement = exports.BREAK = exports.ArraySlice = exports.ArrayElement = exports.AnnotationElement = void 0;
7
7
  var _index = require("./refractor/plugins/utils/index.cjs");
8
8
  exports.dispatchRefractorPlugins = _index.dispatchPlugins;
9
9
  var _elementIdentity = _interopRequireDefault(require("./refractor/plugins/element-identity.cjs"));
@@ -104,5 +104,9 @@ var _toString = _interopRequireDefault(require("./transformers/to-string.cjs"));
104
104
  exports.toString = _toString.default;
105
105
  var _sexprs = _interopRequireDefault(require("./transformers/sexprs.cjs"));
106
106
  exports.sexprs = _sexprs.default;
107
- var _deepmerge = _interopRequireDefault(require("./deepmerge.cjs"));
108
- exports.deepmerge = _deepmerge.default;
107
+ var _deepmerge = _interopRequireDefault(require("./merge/deepmerge.cjs"));
108
+ exports.deepmerge = _deepmerge.default;
109
+ var _mergeRight = _interopRequireDefault(require("./merge/merge-right.cjs"));
110
+ exports.mergeRight = _mergeRight.default;
111
+ var _mergeLeft = _interopRequireDefault(require("./merge/merge-left.cjs"));
112
+ exports.mergeLeft = _mergeLeft.default;
@@ -3,19 +3,21 @@
3
3
  var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
4
  exports.__esModule = true;
5
5
  exports.default = deepmerge;
6
+ exports.emptyElement = exports.defaultOptions = void 0;
6
7
  var _minim = require("minim");
7
- var _index = require("./predicates/index.cjs");
8
- var _index2 = require("./clone/index.cjs");
9
- var _index3 = _interopRequireDefault(require("./transformers/serializers/value/index.cjs"));
8
+ var _index = require("../predicates/index.cjs");
9
+ var _index2 = require("../clone/index.cjs");
10
+ var _index3 = _interopRequireDefault(require("../transformers/serializers/value/index.cjs"));
10
11
  /* eslint-disable @typescript-eslint/no-use-before-define */
11
12
 
12
13
  const emptyElement = element => {
13
- const meta = (0, _index2.cloneDeep)(element.meta);
14
- const attributes = (0, _index2.cloneDeep)(element.attributes);
14
+ const meta = element.meta.length > 0 ? (0, _index2.cloneDeep)(element.meta) : undefined;
15
+ const attributes = element.attributes.length > 0 ? (0, _index2.cloneDeep)(element.attributes) : undefined;
15
16
 
16
17
  // @ts-ignore
17
18
  return new element.constructor(undefined, meta, attributes);
18
19
  };
20
+ exports.emptyElement = emptyElement;
19
21
  const cloneUnlessOtherwiseSpecified = (element, options) => options.clone && options.isMergeableElement(element) ? deepmerge(emptyElement(element), element, options) : element;
20
22
  const getMergeFunction = (keyElement, options) => {
21
23
  if (typeof options.customMerge !== 'function') {
@@ -24,6 +26,18 @@ const getMergeFunction = (keyElement, options) => {
24
26
  const customMerge = options.customMerge(keyElement, options);
25
27
  return typeof customMerge === 'function' ? customMerge : deepmerge;
26
28
  };
29
+ const getMetaMergeFunction = options => {
30
+ if (typeof options.customMetaMerge !== 'function') {
31
+ return targetMeta => (0, _index2.cloneDeep)(targetMeta);
32
+ }
33
+ return options.customMetaMerge;
34
+ };
35
+ const getAttributesMergeFunction = options => {
36
+ if (typeof options.customAttributesMerge !== 'function') {
37
+ return targetAttributes => (0, _index2.cloneDeep)(targetAttributes);
38
+ }
39
+ return options.customAttributesMerge;
40
+ };
27
41
  const mergeArrayElement = (targetElement, sourceElement, options) => targetElement.concat(sourceElement)['fantasy-land/map'](item => cloneUnlessOtherwiseSpecified(item, options));
28
42
  const mergeObjectElement = (targetElement, sourceElement, options) => {
29
43
  const destination = (0, _index.isObjectElement)(targetElement) ? emptyElement(targetElement) : emptyElement(sourceElement);
@@ -50,15 +64,17 @@ const mergeObjectElement = (targetElement, sourceElement, options) => {
50
64
  });
51
65
  return destination;
52
66
  };
67
+ const defaultOptions = exports.defaultOptions = {
68
+ clone: true,
69
+ isMergeableElement: element => (0, _index.isObjectElement)(element) || (0, _index.isArrayElement)(element),
70
+ arrayElementMerge: mergeArrayElement,
71
+ objectElementMerge: mergeObjectElement,
72
+ customMerge: undefined,
73
+ customMetaMerge: undefined,
74
+ customAttributesMerge: undefined
75
+ };
53
76
  function deepmerge(targetElement, sourceElement, options) {
54
77
  var _mergedOptions$isMerg, _mergedOptions$arrayE, _mergedOptions$object;
55
- const defaultOptions = {
56
- clone: true,
57
- isMergeableElement: element => (0, _index.isObjectElement)(element) || (0, _index.isArrayElement)(element),
58
- arrayElementMerge: mergeArrayElement,
59
- objectElementMerge: mergeObjectElement,
60
- customMerge: undefined
61
- };
62
78
  const mergedOptions = {
63
79
  ...defaultOptions,
64
80
  ...options
@@ -72,10 +88,14 @@ function deepmerge(targetElement, sourceElement, options) {
72
88
  if (!sourceAndTargetTypesMatch) {
73
89
  return cloneUnlessOtherwiseSpecified(sourceElement, mergedOptions);
74
90
  }
75
- if (sourceIsArrayElement && typeof mergedOptions.arrayElementMerge === 'function') {
76
- return mergedOptions.arrayElementMerge(targetElement, sourceElement, mergedOptions);
77
- }
78
- return mergedOptions.objectElementMerge(targetElement, sourceElement, mergedOptions);
91
+
92
+ // merging two elements
93
+ const mergedElement = sourceIsArrayElement && typeof mergedOptions.arrayElementMerge === 'function' ? mergedOptions.arrayElementMerge(targetElement, sourceElement, mergedOptions) : mergedOptions.objectElementMerge(targetElement, sourceElement, mergedOptions);
94
+
95
+ // merging meta & attributes
96
+ mergedElement.meta = getMetaMergeFunction(mergedOptions)(targetElement.meta, sourceElement.meta);
97
+ mergedElement.attributes = getAttributesMergeFunction(mergedOptions)(targetElement.attributes, sourceElement.attributes);
98
+ return mergedElement;
79
99
  }
80
100
  deepmerge.all = (list, options) => {
81
101
  if (!Array.isArray(list)) {
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
+ exports.__esModule = true;
5
+ exports.default = void 0;
6
+ var _mergeRight = _interopRequireDefault(require("./merge-right.cjs"));
7
+ const mergeLeft = (...[sourceElement, targetElement, options]) => {
8
+ return (0, _mergeRight.default)(targetElement, sourceElement, options);
9
+ };
10
+ mergeLeft.all = (...[list, options]) => {
11
+ return _mergeRight.default.all([...list].reverse(), options);
12
+ };
13
+ var _default = exports.default = mergeLeft;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard").default;
4
+ exports.__esModule = true;
5
+ exports.default = void 0;
6
+ var _minim = require("minim");
7
+ var _deepmerge = _interopRequireWildcard(require("./deepmerge.cjs"));
8
+ const mergeRight = (targetElement, sourceElement, options) => {
9
+ const mergedOptions = {
10
+ ..._deepmerge.defaultOptions,
11
+ ...options,
12
+ customMerge: () => (target, source) => source,
13
+ clone: false
14
+ };
15
+ return (0, _deepmerge.default)(targetElement, sourceElement, mergedOptions);
16
+ };
17
+ mergeRight.all = (list, options) => {
18
+ if (!Array.isArray(list)) {
19
+ throw new TypeError('First argument of mergeRight should be an array.');
20
+ }
21
+ if (list.length === 0) {
22
+ return new _minim.ObjectElement();
23
+ }
24
+ return list.reduce((target, source) => {
25
+ return mergeRight(target, source, options);
26
+ }, (0, _deepmerge.emptyElement)(list[0]));
27
+ };
28
+ var _default = exports.default = mergeRight;
@@ -5,6 +5,8 @@ exports.__esModule = true;
5
5
  exports.default = exports.createRefractor = void 0;
6
6
  var _index = require("./plugins/utils/index.cjs");
7
7
  var _visitor = require("../traversal/visitor.cjs");
8
+ var _index2 = require("../clone/index.cjs");
9
+ var _index3 = require("../predicates/index.cjs");
8
10
  var _toolbox = _interopRequireDefault(require("./toolbox.cjs"));
9
11
  const refract = (value, {
10
12
  Type,
@@ -16,6 +18,14 @@ const refract = (value, {
16
18
  * Though we allow consumers to define their onw plugins on already transformed ApiDOM.
17
19
  */
18
20
  const element = new Type(value);
21
+ if ((0, _index3.isElement)(value)) {
22
+ if (value.meta.length > 0) {
23
+ element.meta = (0, _index2.cloneDeep)(value.meta);
24
+ }
25
+ if (value.attributes.length > 0) {
26
+ element.attributes = (0, _index2.cloneDeep)(value.attributes);
27
+ }
28
+ }
19
29
 
20
30
  /**
21
31
  * Run plugins only when necessary.
@@ -2,7 +2,6 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  exports.default = void 0;
5
- var _minim = require("minim");
6
5
  var _index = require("../../identity/index.cjs");
7
6
  /**
8
7
  * Plugin for decorating every element in ApiDOM tree with UUID.
@@ -20,7 +19,7 @@ const plugin = ({
20
19
  },
21
20
  visitor: {
22
21
  enter(element) {
23
- element.id = new _minim.StringElement(identityManager.generateId()); // eslint-disable-line no-param-reassign
22
+ element.id = identityManager.identify(element); // eslint-disable-line no-param-reassign
24
23
  }
25
24
  },
26
25
  post() {
@@ -2,7 +2,6 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  exports.default = void 0;
5
- var _minim = require("minim");
6
5
  var _index = require("../../identity/index.cjs");
7
6
  /**
8
7
  * Plugin for decorating every semantic element in ApiDOM tree with UUID.
@@ -23,7 +22,7 @@ const plugin = ({
23
22
  visitor: {
24
23
  enter(element) {
25
24
  if (!predicates.isPrimitiveElement(element)) {
26
- element.id = new _minim.StringElement(identityManager.generateId()); // eslint-disable-line no-param-reassign
25
+ element.id = identityManager.identify(element); // eslint-disable-line no-param-reassign
27
26
  }
28
27
  }
29
28
  },