@speclynx/apidom-core 2.13.0 → 3.0.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@speclynx/apidom-core",
3
- "version": "2.13.0",
3
+ "version": "3.0.0",
4
4
  "description": "Tools for manipulating ApiDOM structures.",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -40,9 +40,9 @@
40
40
  "license": "Apache-2.0",
41
41
  "dependencies": {
42
42
  "@babel/runtime-corejs3": "^7.28.4",
43
- "@speclynx/apidom-datamodel": "2.13.0",
44
- "@speclynx/apidom-error": "2.13.0",
45
- "@speclynx/apidom-traverse": "2.13.0",
43
+ "@speclynx/apidom-datamodel": "3.0.0",
44
+ "@speclynx/apidom-error": "3.0.0",
45
+ "@speclynx/apidom-traverse": "3.0.0",
46
46
  "ramda": "~0.32.0",
47
47
  "ramda-adjunct": "^6.0.0",
48
48
  "short-unique-id": "^5.3.2",
@@ -59,5 +59,5 @@
59
59
  "README.md",
60
60
  "CHANGELOG.md"
61
61
  ],
62
- "gitHead": "3c92eda7e227426c3a40c918c418c14dc20fca7e"
62
+ "gitHead": "cb94ec84ea789d121801065876e7a91799a363d0"
63
63
  }
@@ -29,9 +29,9 @@ class IdentityManager {
29
29
 
30
30
  // use already assigned identity
31
31
  if (element.hasMetaProperty('id')) {
32
- const existingId = element.meta.get('id');
33
- if ((0, _apidomDatamodel.isStringElement)(existingId) && !existingId.equals('')) {
34
- return element.id;
32
+ const existingId = element.id;
33
+ if (typeof existingId === 'string' && existingId !== '') {
34
+ return existingId;
35
35
  }
36
36
  }
37
37
 
@@ -41,7 +41,7 @@ class IdentityManager {
41
41
  }
42
42
 
43
43
  // return element identity
44
- const id = new _apidomDatamodel.StringElement(this.generateId());
44
+ const id = this.generateId();
45
45
  this.identityMap.set(element, id);
46
46
  return id;
47
47
  }
@@ -1,4 +1,4 @@
1
- import { StringElement, isElement, isStringElement } from '@speclynx/apidom-datamodel';
1
+ import { isElement } from '@speclynx/apidom-datamodel';
2
2
  import ShortUniqueId from 'short-unique-id';
3
3
  import ElementIdentityError from "./errors/ElementIdentityError.mjs";
4
4
  /**
@@ -24,9 +24,9 @@ export class IdentityManager {
24
24
 
25
25
  // use already assigned identity
26
26
  if (element.hasMetaProperty('id')) {
27
- const existingId = element.meta.get('id');
28
- if (isStringElement(existingId) && !existingId.equals('')) {
29
- return element.id;
27
+ const existingId = element.id;
28
+ if (typeof existingId === 'string' && existingId !== '') {
29
+ return existingId;
30
30
  }
31
31
  }
32
32
 
@@ -36,7 +36,7 @@ export class IdentityManager {
36
36
  }
37
37
 
38
38
  // return element identity
39
- const id = new StringElement(this.generateId());
39
+ const id = this.generateId();
40
40
  this.identityMap.set(element, id);
41
41
  return id;
42
42
  }
@@ -46,7 +46,7 @@ var _value = _interopRequireDefault(require("../transformers/serializers/value.c
46
46
  */
47
47
 
48
48
  const emptyElement = element => {
49
- const meta = !element.isMetaEmpty ? (0, _apidomDatamodel.cloneDeep)(element.meta) : undefined;
49
+ const meta = !element.isMetaEmpty ? element.meta.cloneDeep() : undefined;
50
50
  const attributes = !element.isAttributesEmpty ? (0, _apidomDatamodel.cloneDeep)(element.attributes) : undefined;
51
51
 
52
52
  // @ts-ignore
@@ -63,7 +63,7 @@ const getMergeFunction = (keyElement, options) => {
63
63
  };
64
64
  const getMetaMergeFunction = options => {
65
65
  if (typeof options.customMetaMerge !== 'function') {
66
- return targetMeta => (0, _apidomDatamodel.cloneDeep)(targetMeta);
66
+ return targetMeta => targetMeta.cloneDeep();
67
67
  }
68
68
  return options.customMetaMerge;
69
69
  };
@@ -135,8 +135,20 @@ const deepmerge = (targetElement, sourceElement, options) => {
135
135
  const mergedElement = sourceIsArrayElement && typeof mergedOptions.arrayElementMerge === 'function' ? mergedOptions.arrayElementMerge(targetElement, sourceElement, mergedOptions) : mergedOptions.objectElementMerge(targetElement, sourceElement, mergedOptions);
136
136
 
137
137
  // merging meta & attributes
138
- mergedElement.meta = getMetaMergeFunction(mergedOptions)(targetElement.meta, sourceElement.meta);
139
- mergedElement.attributes = getAttributesMergeFunction(mergedOptions)(targetElement.attributes, sourceElement.attributes);
138
+ if (!targetElement.isMetaEmpty && !sourceElement.isMetaEmpty) {
139
+ mergedElement.meta = getMetaMergeFunction(mergedOptions)(targetElement.meta, sourceElement.meta);
140
+ } else if (!targetElement.isMetaEmpty) {
141
+ mergedElement.meta = targetElement.meta.cloneDeep();
142
+ } else if (!sourceElement.isMetaEmpty) {
143
+ mergedElement.meta = sourceElement.meta.cloneDeep();
144
+ }
145
+ if (!targetElement.isAttributesEmpty && !sourceElement.isAttributesEmpty) {
146
+ mergedElement.attributes = getAttributesMergeFunction(mergedOptions)(targetElement.attributes, sourceElement.attributes);
147
+ } else if (!targetElement.isAttributesEmpty) {
148
+ mergedElement.attributes = (0, _apidomDatamodel.cloneDeep)(targetElement.attributes);
149
+ } else if (!sourceElement.isAttributesEmpty) {
150
+ mergedElement.attributes = (0, _apidomDatamodel.cloneDeep)(sourceElement.attributes);
151
+ }
140
152
  return mergedElement;
141
153
  };
142
154
  deepmerge.all = (list, options) => {
@@ -31,7 +31,7 @@ import toValue from "../transformers/serializers/value.mjs";
31
31
  * @public
32
32
  */
33
33
  export const emptyElement = element => {
34
- const meta = !element.isMetaEmpty ? cloneDeep(element.meta) : undefined;
34
+ const meta = !element.isMetaEmpty ? element.meta.cloneDeep() : undefined;
35
35
  const attributes = !element.isAttributesEmpty ? cloneDeep(element.attributes) : undefined;
36
36
 
37
37
  // @ts-ignore
@@ -47,7 +47,7 @@ const getMergeFunction = (keyElement, options) => {
47
47
  };
48
48
  const getMetaMergeFunction = options => {
49
49
  if (typeof options.customMetaMerge !== 'function') {
50
- return targetMeta => cloneDeep(targetMeta);
50
+ return targetMeta => targetMeta.cloneDeep();
51
51
  }
52
52
  return options.customMetaMerge;
53
53
  };
@@ -119,8 +119,20 @@ const deepmerge = (targetElement, sourceElement, options) => {
119
119
  const mergedElement = sourceIsArrayElement && typeof mergedOptions.arrayElementMerge === 'function' ? mergedOptions.arrayElementMerge(targetElement, sourceElement, mergedOptions) : mergedOptions.objectElementMerge(targetElement, sourceElement, mergedOptions);
120
120
 
121
121
  // merging meta & attributes
122
- mergedElement.meta = getMetaMergeFunction(mergedOptions)(targetElement.meta, sourceElement.meta);
123
- mergedElement.attributes = getAttributesMergeFunction(mergedOptions)(targetElement.attributes, sourceElement.attributes);
122
+ if (!targetElement.isMetaEmpty && !sourceElement.isMetaEmpty) {
123
+ mergedElement.meta = getMetaMergeFunction(mergedOptions)(targetElement.meta, sourceElement.meta);
124
+ } else if (!targetElement.isMetaEmpty) {
125
+ mergedElement.meta = targetElement.meta.cloneDeep();
126
+ } else if (!sourceElement.isMetaEmpty) {
127
+ mergedElement.meta = sourceElement.meta.cloneDeep();
128
+ }
129
+ if (!targetElement.isAttributesEmpty && !sourceElement.isAttributesEmpty) {
130
+ mergedElement.attributes = getAttributesMergeFunction(mergedOptions)(targetElement.attributes, sourceElement.attributes);
131
+ } else if (!targetElement.isAttributesEmpty) {
132
+ mergedElement.attributes = cloneDeep(targetElement.attributes);
133
+ } else if (!sourceElement.isAttributesEmpty) {
134
+ mergedElement.attributes = cloneDeep(sourceElement.attributes);
135
+ }
124
136
  return mergedElement;
125
137
  };
126
138
  deepmerge.all = (list, options) => {
@@ -23,12 +23,12 @@ import { isPrimitiveElement } from '@speclynx/apidom-datamodel';
23
23
  import { isRefElement } from '@speclynx/apidom-datamodel';
24
24
  import { isSourceMapElement } from '@speclynx/apidom-datamodel';
25
25
  import { isStringElement } from '@speclynx/apidom-datamodel';
26
+ import { Metadata } from '@speclynx/apidom-datamodel';
26
27
  import { Namespace } from '@speclynx/apidom-datamodel';
27
28
  import { ObjectElement } from '@speclynx/apidom-datamodel';
28
29
  import { Path } from '@speclynx/apidom-traverse';
29
30
  import { SchemaOptions } from 'yaml';
30
31
  import ShortUniqueId from 'short-unique-id';
31
- import { StringElement } from '@speclynx/apidom-datamodel';
32
32
  import { ToStringOptions } from 'yaml';
33
33
 
34
34
  /**
@@ -72,7 +72,7 @@ export declare type DeepMergeCustomMerge = (keyElement: Element_2, options: Deep
72
72
  /**
73
73
  * @public
74
74
  */
75
- export declare type DeepMergeCustomMetaMerge = (targetElementMeta: ObjectElement, sourceElementMeta: ObjectElement) => ObjectElement;
75
+ export declare type DeepMergeCustomMetaMerge = (targetElementMeta: Metadata, sourceElementMeta: Metadata) => Metadata;
76
76
 
77
77
  /**
78
78
  * @public
@@ -222,11 +222,11 @@ export declare const from: (data: unknown, namespace?: Namespace) => Element_2 |
222
222
  */
223
223
  export declare class IdentityManager {
224
224
  protected readonly uuid: ShortUniqueId;
225
- protected readonly identityMap: WeakMap<Element_2, StringElement>;
225
+ protected readonly identityMap: WeakMap<Element_2, string>;
226
226
  constructor({ length }?: {
227
227
  length?: number | undefined;
228
228
  });
229
- identify<T extends Element_2>(this: IdentityManager, element: T): StringElement;
229
+ identify<T extends Element_2>(this: IdentityManager, element: T): string;
230
230
  forget<T extends Element_2>(element: T): boolean;
231
231
  generateId(): string;
232
232
  }