@speclynx/apidom-core 1.12.1 → 2.0.1

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.
Files changed (92) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/NOTICE +16 -7
  3. package/README.md +102 -330
  4. package/dist/apidom-core.browser.js +7529 -11588
  5. package/dist/apidom-core.browser.min.js +1 -1
  6. package/package.json +7 -12
  7. package/src/identity/index.cjs +8 -6
  8. package/src/identity/index.mjs +6 -4
  9. package/src/index.cjs +13 -79
  10. package/src/index.mjs +3 -13
  11. package/src/merge/deepmerge.cjs +22 -20
  12. package/src/merge/deepmerge.mjs +9 -7
  13. package/src/merge/merge-right.cjs +2 -2
  14. package/src/merge/merge-right.mjs +1 -1
  15. package/src/namespace.cjs +4 -36
  16. package/src/namespace.mjs +2 -30
  17. package/src/refractor/plugins/dispatcher/index.cjs +5 -12
  18. package/src/refractor/plugins/dispatcher/index.mjs +5 -12
  19. package/src/refractor/plugins/element-identity.cjs +2 -2
  20. package/src/refractor/plugins/element-identity.mjs +2 -2
  21. package/src/refractor/plugins/semantic-element-identity.cjs +5 -10
  22. package/src/refractor/plugins/semantic-element-identity.mjs +5 -9
  23. package/src/refractor/toolbox.cjs +22 -5
  24. package/src/refractor/toolbox.mjs +25 -6
  25. package/src/specification.cjs +51 -0
  26. package/src/specification.mjs +47 -0
  27. package/src/transcluder/Transcluder.cjs +8 -8
  28. package/src/transcluder/Transcluder.mjs +1 -1
  29. package/src/transformers/from.mjs +2 -2
  30. package/src/transformers/serializers/json.cjs +2 -2
  31. package/src/transformers/serializers/json.mjs +1 -1
  32. package/src/transformers/serializers/value.cjs +50 -0
  33. package/src/transformers/serializers/value.mjs +47 -0
  34. package/src/transformers/serializers/yaml-1-2.cjs +22 -18
  35. package/src/transformers/serializers/yaml-1-2.mjs +22 -18
  36. package/src/transformers/sexprs.cjs +20 -23
  37. package/src/transformers/sexprs.mjs +20 -22
  38. package/src/transformers/to-string.mjs +2 -2
  39. package/types/apidom-core.d.ts +67 -519
  40. package/src/clone/errors/CloneError.cjs +0 -22
  41. package/src/clone/errors/CloneError.mjs +0 -19
  42. package/src/clone/errors/DeepCloneError.cjs +0 -11
  43. package/src/clone/errors/DeepCloneError.mjs +0 -6
  44. package/src/clone/errors/ShallowCloneError.cjs +0 -11
  45. package/src/clone/errors/ShallowCloneError.mjs +0 -6
  46. package/src/clone/index.cjs +0 -155
  47. package/src/clone/index.mjs +0 -146
  48. package/src/elements/Annotation.cjs +0 -23
  49. package/src/elements/Annotation.mjs +0 -20
  50. package/src/elements/Comment.cjs +0 -15
  51. package/src/elements/Comment.mjs +0 -12
  52. package/src/elements/ParseResult.cjs +0 -53
  53. package/src/elements/ParseResult.mjs +0 -50
  54. package/src/elements/SourceMap.cjs +0 -39
  55. package/src/elements/SourceMap.mjs +0 -36
  56. package/src/predicates/helpers.cjs +0 -85
  57. package/src/predicates/helpers.mjs +0 -77
  58. package/src/predicates/index.cjs +0 -208
  59. package/src/predicates/index.mjs +0 -198
  60. package/src/refractor/index.cjs +0 -46
  61. package/src/refractor/index.mjs +0 -40
  62. package/src/refractor/registration.cjs +0 -34
  63. package/src/refractor/registration.mjs +0 -19
  64. package/src/transformers/serializers/value/ast/ephemeral-array.cjs +0 -21
  65. package/src/transformers/serializers/value/ast/ephemeral-array.mjs +0 -17
  66. package/src/transformers/serializers/value/ast/ephemeral-object.cjs +0 -20
  67. package/src/transformers/serializers/value/ast/ephemeral-object.mjs +0 -16
  68. package/src/transformers/serializers/value/index.cjs +0 -85
  69. package/src/transformers/serializers/value/index.mjs +0 -80
  70. package/src/transformers/serializers/value/visitor.cjs +0 -52
  71. package/src/transformers/serializers/value/visitor.mjs +0 -47
  72. package/src/traversal/filter.cjs +0 -18
  73. package/src/traversal/filter.mjs +0 -14
  74. package/src/traversal/find.cjs +0 -19
  75. package/src/traversal/find.mjs +0 -15
  76. package/src/traversal/findAtOffset.cjs +0 -65
  77. package/src/traversal/findAtOffset.mjs +0 -60
  78. package/src/traversal/index.cjs +0 -19
  79. package/src/traversal/index.mjs +0 -7
  80. package/src/traversal/parents.cjs +0 -38
  81. package/src/traversal/parents.mjs +0 -34
  82. package/src/traversal/reject.cjs +0 -15
  83. package/src/traversal/reject.mjs +0 -10
  84. package/src/traversal/some.cjs +0 -15
  85. package/src/traversal/some.mjs +0 -10
  86. package/src/traversal/traverse.cjs +0 -60
  87. package/src/traversal/traverse.mjs +0 -53
  88. package/src/traversal/visitor.cjs +0 -123
  89. package/src/traversal/visitor.mjs +0 -115
  90. package/src/util.cjs +0 -28
  91. package/src/util.mjs +0 -24
  92. package/types/minim.d.ts +0 -236
package/src/index.cjs CHANGED
@@ -3,97 +3,31 @@
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.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;
6
+ exports.transclude = exports.toYAML = exports.toValue = exports.toString = exports.toJSON = exports.sexprs = exports.resolveSpecification = exports.refractorPluginSemanticElementIdentity = exports.refractorPluginElementIdentity = exports.mergeRight = exports.mergeLeft = exports.from = exports.dispatchRefractorPlugins = exports.dehydrate = exports.defaultIdentityManager = exports.deepmerge = exports.createToolbox = exports.Transcluder = exports.MediaTypes = exports.IdentityManager = exports.ElementIdentityError = void 0;
7
7
  var _index = require("./refractor/plugins/dispatcher/index.cjs");
8
8
  exports.dispatchRefractorPlugins = _index.dispatchPluginsSync;
9
+ var _toolbox = _interopRequireDefault(require("./refractor/toolbox.cjs"));
10
+ exports.createToolbox = _toolbox.default;
9
11
  var _elementIdentity = _interopRequireDefault(require("./refractor/plugins/element-identity.cjs"));
10
12
  exports.refractorPluginElementIdentity = _elementIdentity.default;
11
13
  var _semanticElementIdentity = _interopRequireDefault(require("./refractor/plugins/semantic-element-identity.cjs"));
12
14
  exports.refractorPluginSemanticElementIdentity = _semanticElementIdentity.default;
13
15
  var _mediaTypes = _interopRequireDefault(require("./media-types.cjs"));
14
16
  exports.MediaTypes = _mediaTypes.default;
15
- var _minim = require("minim");
16
- exports.Element = _minim.Element;
17
- exports.MemberElement = _minim.MemberElement;
18
- exports.KeyValuePair = _minim.KeyValuePair;
19
- exports.ObjectSlice = _minim.ObjectSlice;
20
- exports.ArraySlice = _minim.ArraySlice;
21
- exports.refract = _minim.refract;
22
- var _namespace = _interopRequireWildcard(require("./namespace.cjs"));
23
- exports.namespace = _namespace.default;
24
- exports.Namespace = _namespace.Namespace;
25
- exports.createNamespace = _namespace.createNamespace;
26
- var _registration = require("./refractor/registration.cjs");
27
- exports.ObjectElement = _registration.ObjectElement;
28
- exports.ArrayElement = _registration.ArrayElement;
29
- exports.BooleanElement = _registration.BooleanElement;
30
- exports.NullElement = _registration.NullElement;
31
- exports.NumberElement = _registration.NumberElement;
32
- exports.StringElement = _registration.StringElement;
33
- exports.LinkElement = _registration.LinkElement;
34
- exports.RefElement = _registration.RefElement;
35
- exports.AnnotationElement = _registration.AnnotationElement;
36
- exports.CommentElement = _registration.CommentElement;
37
- exports.ParseResultElement = _registration.ParseResultElement;
38
- exports.SourceMapElement = _registration.SourceMapElement;
39
- var _index2 = require("./predicates/index.cjs");
40
- exports.isElement = _index2.isElement;
41
- exports.isStringElement = _index2.isStringElement;
42
- exports.isNumberElement = _index2.isNumberElement;
43
- exports.isNullElement = _index2.isNullElement;
44
- exports.isBooleanElement = _index2.isBooleanElement;
45
- exports.isArrayElement = _index2.isArrayElement;
46
- exports.isObjectElement = _index2.isObjectElement;
47
- exports.isMemberElement = _index2.isMemberElement;
48
- exports.isLinkElement = _index2.isLinkElement;
49
- exports.isRefElement = _index2.isRefElement;
50
- exports.isAnnotationElement = _index2.isAnnotationElement;
51
- exports.isParseResultElement = _index2.isParseResultElement;
52
- exports.isSourceMapElement = _index2.isSourceMapElement;
53
- exports.isPrimitiveElement = _index2.isPrimitiveElement;
54
- exports.hasElementSourceMap = _index2.hasElementSourceMap;
55
- exports.includesSymbols = _index2.includesSymbols;
56
- exports.includesClasses = _index2.includesClasses;
57
- var _helpers = _interopRequireDefault(require("./predicates/helpers.cjs"));
58
- exports.createPredicate = _helpers.default;
59
- var _index3 = require("./traversal/index.cjs");
60
- exports.filter = _index3.filter;
61
- exports.reject = _index3.reject;
62
- exports.find = _index3.find;
63
- exports.findAtOffset = _index3.findAtOffset;
64
- exports.some = _index3.some;
65
- exports.traverse = _index3.traverse;
66
- exports.parents = _index3.parents;
67
- var _visitor = require("./traversal/visitor.cjs");
68
- exports.visit = _visitor.visit;
69
- exports.BREAK = _visitor.BREAK;
70
- exports.mergeAllVisitors = _visitor.mergeAllVisitors;
71
- exports.getNodeType = _visitor.getNodeType;
72
- exports.cloneNode = _visitor.cloneNode;
73
- exports.keyMap = _visitor.keyMapDefault;
74
- var _index4 = _interopRequireWildcard(require("./transcluder/index.cjs"));
75
- exports.transclude = _index4.transclude;
76
- exports.Transcluder = _index4.default;
77
- var _util = require("./util.cjs");
78
- exports.dereference = _util.dereference;
79
- var _index5 = require("./clone/index.cjs");
80
- exports.cloneShallow = _index5.cloneShallow;
81
- exports.cloneDeep = _index5.cloneDeep;
82
- var _CloneError = _interopRequireDefault(require("./clone/errors/CloneError.cjs"));
83
- exports.CloneError = _CloneError.default;
84
- var _DeepCloneError = _interopRequireDefault(require("./clone/errors/DeepCloneError.cjs"));
85
- exports.DeepCloneError = _DeepCloneError.default;
86
- var _ShallowCloneError = _interopRequireDefault(require("./clone/errors/ShallowCloneError.cjs"));
87
- exports.ShallowCloneError = _ShallowCloneError.default;
88
- var _index6 = require("./identity/index.cjs");
89
- exports.defaultIdentityManager = _index6.defaultIdentityManager;
90
- exports.IdentityManager = _index6.IdentityManager;
17
+ var _index2 = _interopRequireWildcard(require("./transcluder/index.cjs"));
18
+ exports.transclude = _index2.transclude;
19
+ exports.Transcluder = _index2.default;
20
+ var _specification = require("./specification.cjs");
21
+ exports.resolveSpecification = _specification.resolveSpecification;
22
+ var _index3 = require("./identity/index.cjs");
23
+ exports.defaultIdentityManager = _index3.defaultIdentityManager;
24
+ exports.IdentityManager = _index3.IdentityManager;
91
25
  var _ElementIdentityError = _interopRequireDefault(require("./identity/errors/ElementIdentityError.cjs"));
92
26
  exports.ElementIdentityError = _ElementIdentityError.default;
93
27
  var _from = _interopRequireDefault(require("./transformers/from.cjs"));
94
28
  exports.from = _from.default;
95
- var _index7 = _interopRequireDefault(require("./transformers/serializers/value/index.cjs"));
96
- exports.toValue = _index7.default;
29
+ var _value = _interopRequireDefault(require("./transformers/serializers/value.cjs"));
30
+ exports.toValue = _value.default;
97
31
  var _json = _interopRequireDefault(require("./transformers/serializers/json.cjs"));
98
32
  exports.toJSON = _json.default;
99
33
  var _yaml = _interopRequireDefault(require("./transformers/serializers/yaml-1-2.cjs"));
package/src/index.mjs CHANGED
@@ -1,20 +1,10 @@
1
1
  export { dispatchPluginsSync as dispatchRefractorPlugins } from "./refractor/plugins/dispatcher/index.mjs";
2
+ export { default as createToolbox } from "./refractor/toolbox.mjs";
2
3
  export { default as refractorPluginElementIdentity } from "./refractor/plugins/element-identity.mjs";
3
4
  export { default as refractorPluginSemanticElementIdentity } from "./refractor/plugins/semantic-element-identity.mjs";
4
5
  export { default as MediaTypes } from "./media-types.mjs";
5
- export { Element, MemberElement, KeyValuePair, ObjectSlice, ArraySlice, refract } from 'minim';
6
- export { default as namespace, Namespace, createNamespace } from "./namespace.mjs";
7
- export { ObjectElement, ArrayElement, BooleanElement, NullElement, NumberElement, StringElement, LinkElement, RefElement, AnnotationElement, CommentElement, ParseResultElement, SourceMapElement } from "./refractor/registration.mjs";
8
- export { isElement, isStringElement, isNumberElement, isNullElement, isBooleanElement, isArrayElement, isObjectElement, isMemberElement, isLinkElement, isRefElement, isAnnotationElement, isParseResultElement, isSourceMapElement, isPrimitiveElement, hasElementSourceMap, includesSymbols, includesClasses } from "./predicates/index.mjs";
9
- export { default as createPredicate } from "./predicates/helpers.mjs";
10
- export { filter, reject, find, findAtOffset, some, traverse, parents } from "./traversal/index.mjs";
11
- export { visit, BREAK, mergeAllVisitors, getNodeType, cloneNode, keyMapDefault as keyMap } from "./traversal/visitor.mjs";
12
6
  export { transclude, default as Transcluder } from "./transcluder/index.mjs";
13
- export { dereference } from "./util.mjs";
14
- export { cloneShallow, cloneDeep } from "./clone/index.mjs";
15
- export { default as CloneError } from "./clone/errors/CloneError.mjs";
16
- export { default as DeepCloneError } from "./clone/errors/DeepCloneError.mjs";
17
- export { default as ShallowCloneError } from "./clone/errors/ShallowCloneError.mjs";
7
+ export { resolveSpecification } from "./specification.mjs";
18
8
  export { defaultIdentityManager, IdentityManager } from "./identity/index.mjs";
19
9
  export { default as ElementIdentityError } from "./identity/errors/ElementIdentityError.mjs";
20
10
  /**
@@ -26,7 +16,7 @@ export { default as from } from "./transformers/from.mjs";
26
16
  * This POJO would be the result of interpreting the ApiDOM
27
17
  * into JavaScript structure.
28
18
  */
29
- export { default as toValue } from "./transformers/serializers/value/index.mjs";
19
+ export { default as toValue } from "./transformers/serializers/value.mjs";
30
20
  /**
31
21
  * Transforms the ApiDOM into JSON string.
32
22
  */
@@ -3,10 +3,8 @@
3
3
  var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
4
  exports.__esModule = true;
5
5
  exports.emptyElement = exports.defaultOptions = exports.default = void 0;
6
- 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"));
6
+ var _apidomDatamodel = require("@speclynx/apidom-datamodel");
7
+ var _value = _interopRequireDefault(require("../transformers/serializers/value.cjs"));
10
8
  /**
11
9
  * @public
12
10
  */
@@ -48,8 +46,8 @@ var _index3 = _interopRequireDefault(require("../transformers/serializers/value/
48
46
  */
49
47
 
50
48
  const emptyElement = element => {
51
- const meta = element.meta.length > 0 ? (0, _index2.cloneDeep)(element.meta) : undefined;
52
- const attributes = element.attributes.length > 0 ? (0, _index2.cloneDeep)(element.attributes) : undefined;
49
+ const meta = !element.isMetaEmpty ? (0, _apidomDatamodel.cloneDeep)(element.meta) : undefined;
50
+ const attributes = !element.isAttributesEmpty ? (0, _apidomDatamodel.cloneDeep)(element.attributes) : undefined;
53
51
 
54
52
  // @ts-ignore
55
53
  return new element.constructor(undefined, meta, attributes);
@@ -65,35 +63,39 @@ const getMergeFunction = (keyElement, options) => {
65
63
  };
66
64
  const getMetaMergeFunction = options => {
67
65
  if (typeof options.customMetaMerge !== 'function') {
68
- return targetMeta => (0, _index2.cloneDeep)(targetMeta);
66
+ return targetMeta => (0, _apidomDatamodel.cloneDeep)(targetMeta);
69
67
  }
70
68
  return options.customMetaMerge;
71
69
  };
72
70
  const getAttributesMergeFunction = options => {
73
71
  if (typeof options.customAttributesMerge !== 'function') {
74
- return targetAttributes => (0, _index2.cloneDeep)(targetAttributes);
72
+ return targetAttributes => (0, _apidomDatamodel.cloneDeep)(targetAttributes);
75
73
  }
76
74
  return options.customAttributesMerge;
77
75
  };
78
- const mergeArrayElement = (targetElement, sourceElement, options) => targetElement.concat(sourceElement)['fantasy-land/map'](item => cloneUnlessOtherwiseSpecified(item, options));
76
+ const mergeArrayElement = (targetElement, sourceElement, options) => {
77
+ const Ctor = targetElement.constructor;
78
+ const merged = targetElement.concat(sourceElement);
79
+ return new Ctor(merged.map(item => cloneUnlessOtherwiseSpecified(item, options)));
80
+ };
79
81
  const mergeObjectElement = (targetElement, sourceElement, options) => {
80
- const destination = (0, _index.isObjectElement)(targetElement) ? emptyElement(targetElement) : emptyElement(sourceElement);
81
- if ((0, _index.isObjectElement)(targetElement)) {
82
+ const destination = (0, _apidomDatamodel.isObjectElement)(targetElement) ? emptyElement(targetElement) : emptyElement(sourceElement);
83
+ if ((0, _apidomDatamodel.isObjectElement)(targetElement)) {
82
84
  targetElement.forEach((value, key, member) => {
83
- const clonedMember = (0, _index2.cloneShallow)(member);
85
+ const clonedMember = (0, _apidomDatamodel.cloneShallow)(member);
84
86
  clonedMember.value = cloneUnlessOtherwiseSpecified(value, options);
85
87
  destination.content.push(clonedMember);
86
88
  });
87
89
  }
88
90
  sourceElement.forEach((value, key, member) => {
89
- const keyValue = (0, _index3.default)(key);
91
+ const keyValue = (0, _value.default)(key);
90
92
  let clonedMember;
91
- if ((0, _index.isObjectElement)(targetElement) && targetElement.hasKey(keyValue) && options.isMergeableElement(value)) {
93
+ if ((0, _apidomDatamodel.isObjectElement)(targetElement) && targetElement.hasKey(keyValue) && options.isMergeableElement(value)) {
92
94
  const targetValue = targetElement.get(keyValue);
93
- clonedMember = (0, _index2.cloneShallow)(member);
95
+ clonedMember = (0, _apidomDatamodel.cloneShallow)(member);
94
96
  clonedMember.value = getMergeFunction(key, options)(targetValue, value, options);
95
97
  } else {
96
- clonedMember = (0, _index2.cloneShallow)(member);
98
+ clonedMember = (0, _apidomDatamodel.cloneShallow)(member);
97
99
  clonedMember.value = cloneUnlessOtherwiseSpecified(value, options);
98
100
  }
99
101
  destination.remove(keyValue);
@@ -103,7 +105,7 @@ const mergeObjectElement = (targetElement, sourceElement, options) => {
103
105
  };
104
106
  const defaultOptions = exports.defaultOptions = {
105
107
  clone: true,
106
- isMergeableElement: element => (0, _index.isObjectElement)(element) || (0, _index.isArrayElement)(element),
108
+ isMergeableElement: element => (0, _apidomDatamodel.isObjectElement)(element) || (0, _apidomDatamodel.isArrayElement)(element),
107
109
  arrayElementMerge: mergeArrayElement,
108
110
  objectElementMerge: mergeObjectElement,
109
111
  customMerge: undefined,
@@ -122,8 +124,8 @@ const deepmerge = (targetElement, sourceElement, options) => {
122
124
  mergedOptions.isMergeableElement = mergedOptions.isMergeableElement ?? defaultOptions.isMergeableElement;
123
125
  mergedOptions.arrayElementMerge = mergedOptions.arrayElementMerge ?? defaultOptions.arrayElementMerge;
124
126
  mergedOptions.objectElementMerge = mergedOptions.objectElementMerge ?? defaultOptions.objectElementMerge;
125
- const sourceIsArrayElement = (0, _index.isArrayElement)(sourceElement);
126
- const targetIsArrayElement = (0, _index.isArrayElement)(targetElement);
127
+ const sourceIsArrayElement = (0, _apidomDatamodel.isArrayElement)(sourceElement);
128
+ const targetIsArrayElement = (0, _apidomDatamodel.isArrayElement)(targetElement);
127
129
  const sourceAndTargetTypesMatch = sourceIsArrayElement === targetIsArrayElement;
128
130
  if (!sourceAndTargetTypesMatch) {
129
131
  return cloneUnlessOtherwiseSpecified(sourceElement, mergedOptions);
@@ -142,7 +144,7 @@ deepmerge.all = (list, options) => {
142
144
  throw new TypeError('First argument of deepmerge should be an array.');
143
145
  }
144
146
  if (list.length === 0) {
145
- return new _minim.ObjectElement();
147
+ return new _apidomDatamodel.ObjectElement();
146
148
  }
147
149
  return list.reduce((target, source) => {
148
150
  return deepmerge(target, source, options);
@@ -1,7 +1,5 @@
1
- import { ObjectElement } from 'minim';
2
- import { isObjectElement, isArrayElement } from "../predicates/index.mjs";
3
- import { cloneDeep, cloneShallow } from "../clone/index.mjs";
4
- import toValue from "../transformers/serializers/value/index.mjs";
1
+ import { ObjectElement, isObjectElement, isArrayElement, cloneDeep, cloneShallow } from '@speclynx/apidom-datamodel';
2
+ import toValue from "../transformers/serializers/value.mjs";
5
3
  /**
6
4
  * @public
7
5
  */
@@ -33,8 +31,8 @@ import toValue from "../transformers/serializers/value/index.mjs";
33
31
  * @public
34
32
  */
35
33
  export const emptyElement = element => {
36
- const meta = element.meta.length > 0 ? cloneDeep(element.meta) : undefined;
37
- const attributes = element.attributes.length > 0 ? cloneDeep(element.attributes) : undefined;
34
+ const meta = !element.isMetaEmpty ? cloneDeep(element.meta) : undefined;
35
+ const attributes = !element.isAttributesEmpty ? cloneDeep(element.attributes) : undefined;
38
36
 
39
37
  // @ts-ignore
40
38
  return new element.constructor(undefined, meta, attributes);
@@ -59,7 +57,11 @@ const getAttributesMergeFunction = options => {
59
57
  }
60
58
  return options.customAttributesMerge;
61
59
  };
62
- const mergeArrayElement = (targetElement, sourceElement, options) => targetElement.concat(sourceElement)['fantasy-land/map'](item => cloneUnlessOtherwiseSpecified(item, options));
60
+ const mergeArrayElement = (targetElement, sourceElement, options) => {
61
+ const Ctor = targetElement.constructor;
62
+ const merged = targetElement.concat(sourceElement);
63
+ return new Ctor(merged.map(item => cloneUnlessOtherwiseSpecified(item, options)));
64
+ };
63
65
  const mergeObjectElement = (targetElement, sourceElement, options) => {
64
66
  const destination = isObjectElement(targetElement) ? emptyElement(targetElement) : emptyElement(sourceElement);
65
67
  if (isObjectElement(targetElement)) {
@@ -3,7 +3,7 @@
3
3
  var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard").default;
4
4
  exports.__esModule = true;
5
5
  exports.default = void 0;
6
- var _minim = require("minim");
6
+ var _apidomDatamodel = require("@speclynx/apidom-datamodel");
7
7
  var _deepmerge = _interopRequireWildcard(require("./deepmerge.cjs"));
8
8
  /**
9
9
  * @public
@@ -26,7 +26,7 @@ mergeRight.all = (list, options) => {
26
26
  throw new TypeError('First argument of mergeRight should be an array.');
27
27
  }
28
28
  if (list.length === 0) {
29
- return new _minim.ObjectElement();
29
+ return new _apidomDatamodel.ObjectElement();
30
30
  }
31
31
  return list.reduce((target, source) => {
32
32
  return mergeRight(target, source, options);
@@ -1,4 +1,4 @@
1
- import { ObjectElement } from 'minim';
1
+ import { ObjectElement } from '@speclynx/apidom-datamodel';
2
2
  import deepmerge, { defaultOptions as defaultDeepmergeOptions, emptyElement } from "./deepmerge.mjs";
3
3
  /**
4
4
  * @public
package/src/namespace.cjs CHANGED
@@ -1,42 +1,10 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
3
  exports.__esModule = true;
5
- exports.default = exports.createNamespace = exports.Namespace = void 0;
6
- var _minim = require("minim");
7
- var _ramdaAdjunct = require("ramda-adjunct");
8
- var _Annotation = _interopRequireDefault(require("./elements/Annotation.cjs"));
9
- var _Comment = _interopRequireDefault(require("./elements/Comment.cjs"));
10
- var _ParseResult = _interopRequireDefault(require("./elements/ParseResult.cjs"));
11
- var _SourceMap = _interopRequireDefault(require("./elements/SourceMap.cjs"));
4
+ exports.default = void 0;
5
+ var _apidomDatamodel = require("@speclynx/apidom-datamodel");
12
6
  /**
13
- * @public
7
+ * Default namespace instance with all base elements registered.
14
8
  */
15
- class Namespace extends _minim.Namespace {
16
- constructor() {
17
- super();
18
- this.register('annotation', _Annotation.default);
19
- this.register('comment', _Comment.default);
20
- this.register('parseResult', _ParseResult.default);
21
- this.register('sourceMap', _SourceMap.default);
22
- }
23
- }
24
-
25
- /**
26
- * @public
27
- */
28
- exports.Namespace = Namespace;
29
- const namespace = new Namespace();
30
-
31
- /**
32
- * @public
33
- */
34
- const createNamespace = namespacePlugin => {
35
- const namespaceInstance = new Namespace();
36
- if ((0, _ramdaAdjunct.isPlainObject)(namespacePlugin)) {
37
- namespaceInstance.use(namespacePlugin);
38
- }
39
- return namespaceInstance;
40
- };
41
- exports.createNamespace = createNamespace;
9
+ const namespace = new _apidomDatamodel.Namespace();
42
10
  var _default = exports.default = namespace;
package/src/namespace.mjs CHANGED
@@ -1,35 +1,7 @@
1
- import { Namespace as MinimNamespace } from 'minim';
2
- import { isPlainObject } from 'ramda-adjunct';
3
- import AnnotationElement from "./elements/Annotation.mjs";
4
- import CommentElement from "./elements/Comment.mjs";
5
- import ParseResultElement from "./elements/ParseResult.mjs";
6
- import SourceMapElement from "./elements/SourceMap.mjs";
7
- /**
8
- * @public
9
- */
10
- export class Namespace extends MinimNamespace {
11
- constructor() {
12
- super();
13
- this.register('annotation', AnnotationElement);
14
- this.register('comment', CommentElement);
15
- this.register('parseResult', ParseResultElement);
16
- this.register('sourceMap', SourceMapElement);
17
- }
18
- }
1
+ import { Namespace } from '@speclynx/apidom-datamodel';
19
2
 
20
3
  /**
21
- * @public
4
+ * Default namespace instance with all base elements registered.
22
5
  */
23
6
  const namespace = new Namespace();
24
-
25
- /**
26
- * @public
27
- */
28
- export const createNamespace = namespacePlugin => {
29
- const namespaceInstance = new Namespace();
30
- if (isPlainObject(namespacePlugin)) {
31
- namespaceInstance.use(namespacePlugin);
32
- }
33
- return namespaceInstance;
34
- };
35
7
  export default namespace;
@@ -3,10 +3,10 @@
3
3
  var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
4
  exports.__esModule = true;
5
5
  exports.dispatchPluginsSync = exports.dispatchPluginsAsync = void 0;
6
+ var _apidomTraverse = require("@speclynx/apidom-traverse");
6
7
  var _ramda = require("ramda");
7
8
  var _ramdaAdjunct = require("ramda-adjunct");
8
9
  var _toolbox = _interopRequireDefault(require("../../toolbox.cjs"));
9
- var _visitor = require("../../../traversal/visitor.cjs");
10
10
  /**
11
11
  * @public
12
12
  */
@@ -22,7 +22,6 @@ var _visitor = require("../../../traversal/visitor.cjs");
22
22
  const defaultDispatchPluginsOptions = {
23
23
  toolboxCreator: _toolbox.default,
24
24
  visitorOptions: {
25
- nodeTypeGetter: _visitor.getNodeType,
26
25
  exposeEdits: true
27
26
  }
28
27
  };
@@ -39,11 +38,9 @@ const dispatchPluginsSync = (element, plugins, options = {}) => {
39
38
  } = mergedOptions;
40
39
  const toolbox = toolboxCreator();
41
40
  const pluginsSpecs = plugins.map(plugin => plugin(toolbox));
42
- const mergedPluginsVisitor = (0, _visitor.mergeAllVisitors)(pluginsSpecs.map((0, _ramda.propOr)({}, 'visitor')), {
43
- ...visitorOptions
44
- });
41
+ const mergedPluginsVisitor = (0, _apidomTraverse.mergeVisitors)(pluginsSpecs.map((0, _ramda.propOr)({}, 'visitor')), visitorOptions);
45
42
  pluginsSpecs.forEach((0, _ramdaAdjunct.invokeArgs)(['pre'], []));
46
- const newElement = (0, _visitor.visit)(element, mergedPluginsVisitor, visitorOptions);
43
+ const newElement = (0, _apidomTraverse.traverse)(element, mergedPluginsVisitor);
47
44
  pluginsSpecs.forEach((0, _ramdaAdjunct.invokeArgs)(['post'], []));
48
45
  return newElement;
49
46
  };
@@ -57,13 +54,9 @@ const dispatchPluginsAsync = async (element, plugins, options = {}) => {
57
54
  } = mergedOptions;
58
55
  const toolbox = toolboxCreator();
59
56
  const pluginsSpecs = plugins.map(plugin => plugin(toolbox));
60
- const mergeAllVisitorsAsync = _visitor.mergeAllVisitors[Symbol.for('nodejs.util.promisify.custom')];
61
- const visitAsync = _visitor.visit[Symbol.for('nodejs.util.promisify.custom')];
62
- const mergedPluginsVisitor = mergeAllVisitorsAsync(pluginsSpecs.map((0, _ramda.propOr)({}, 'visitor')), {
63
- ...visitorOptions
64
- });
57
+ const mergedPluginsVisitor = (0, _apidomTraverse.mergeVisitorsAsync)(pluginsSpecs.map((0, _ramda.propOr)({}, 'visitor')), visitorOptions);
65
58
  await Promise.allSettled(pluginsSpecs.map((0, _ramdaAdjunct.invokeArgs)(['pre'], [])));
66
- const newElement = await visitAsync(element, mergedPluginsVisitor, visitorOptions);
59
+ const newElement = await (0, _apidomTraverse.traverseAsync)(element, mergedPluginsVisitor);
67
60
  await Promise.allSettled(pluginsSpecs.map((0, _ramdaAdjunct.invokeArgs)(['post'], [])));
68
61
  return newElement;
69
62
  };
@@ -1,7 +1,7 @@
1
+ import { traverse, traverseAsync, mergeVisitors, mergeVisitorsAsync } from '@speclynx/apidom-traverse';
1
2
  import { mergeDeepRight, propOr } from 'ramda';
2
3
  import { invokeArgs } from 'ramda-adjunct';
3
4
  import createToolbox from "../../toolbox.mjs";
4
- import { getNodeType, mergeAllVisitors, visit } from "../../../traversal/visitor.mjs";
5
5
  /**
6
6
  * @public
7
7
  */
@@ -14,7 +14,6 @@ import { getNodeType, mergeAllVisitors, visit } from "../../../traversal/visitor
14
14
  const defaultDispatchPluginsOptions = {
15
15
  toolboxCreator: createToolbox,
16
16
  visitorOptions: {
17
- nodeTypeGetter: getNodeType,
18
17
  exposeEdits: true
19
18
  }
20
19
  };
@@ -31,11 +30,9 @@ export const dispatchPluginsSync = (element, plugins, options = {}) => {
31
30
  } = mergedOptions;
32
31
  const toolbox = toolboxCreator();
33
32
  const pluginsSpecs = plugins.map(plugin => plugin(toolbox));
34
- const mergedPluginsVisitor = mergeAllVisitors(pluginsSpecs.map(propOr({}, 'visitor')), {
35
- ...visitorOptions
36
- });
33
+ const mergedPluginsVisitor = mergeVisitors(pluginsSpecs.map(propOr({}, 'visitor')), visitorOptions);
37
34
  pluginsSpecs.forEach(invokeArgs(['pre'], []));
38
- const newElement = visit(element, mergedPluginsVisitor, visitorOptions);
35
+ const newElement = traverse(element, mergedPluginsVisitor);
39
36
  pluginsSpecs.forEach(invokeArgs(['post'], []));
40
37
  return newElement;
41
38
  };
@@ -48,13 +45,9 @@ export const dispatchPluginsAsync = async (element, plugins, options = {}) => {
48
45
  } = mergedOptions;
49
46
  const toolbox = toolboxCreator();
50
47
  const pluginsSpecs = plugins.map(plugin => plugin(toolbox));
51
- const mergeAllVisitorsAsync = mergeAllVisitors[Symbol.for('nodejs.util.promisify.custom')];
52
- const visitAsync = visit[Symbol.for('nodejs.util.promisify.custom')];
53
- const mergedPluginsVisitor = mergeAllVisitorsAsync(pluginsSpecs.map(propOr({}, 'visitor')), {
54
- ...visitorOptions
55
- });
48
+ const mergedPluginsVisitor = mergeVisitorsAsync(pluginsSpecs.map(propOr({}, 'visitor')), visitorOptions);
56
49
  await Promise.allSettled(pluginsSpecs.map(invokeArgs(['pre'], [])));
57
- const newElement = await visitAsync(element, mergedPluginsVisitor, visitorOptions);
50
+ const newElement = await traverseAsync(element, mergedPluginsVisitor);
58
51
  await Promise.allSettled(pluginsSpecs.map(invokeArgs(['post'], [])));
59
52
  return newElement;
60
53
  };
@@ -19,8 +19,8 @@ const plugin = ({
19
19
  });
20
20
  },
21
21
  visitor: {
22
- enter(element) {
23
- element.id = identityManager.identify(element);
22
+ enter(path) {
23
+ path.node.id = identityManager.identify(path.node);
24
24
  }
25
25
  },
26
26
  post() {
@@ -14,8 +14,8 @@ const plugin = ({
14
14
  });
15
15
  },
16
16
  visitor: {
17
- enter(element) {
18
- element.id = identityManager.identify(element);
17
+ enter(path) {
18
+ path.node.id = identityManager.identify(path.node);
19
19
  }
20
20
  },
21
21
  post() {
@@ -2,20 +2,15 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  exports.default = void 0;
5
+ var _apidomDatamodel = require("@speclynx/apidom-datamodel");
5
6
  var _index = require("../../identity/index.cjs");
6
- /**
7
- * @public
8
- */
9
-
10
7
  /**
11
8
  * Plugin for decorating every semantic element in ApiDOM tree with UUID.
12
9
  * @public
13
10
  */
14
11
  const plugin = ({
15
12
  length = 6
16
- } = {}) => ({
17
- predicates
18
- }) => {
13
+ } = {}) => () => {
19
14
  let identityManager;
20
15
  return {
21
16
  pre() {
@@ -24,9 +19,9 @@ const plugin = ({
24
19
  });
25
20
  },
26
21
  visitor: {
27
- enter(element) {
28
- if (!predicates.isPrimitiveElement(element)) {
29
- element.id = identityManager.identify(element);
22
+ enter(path) {
23
+ if (!(0, _apidomDatamodel.isPrimitiveElement)(path.node)) {
24
+ path.node.id = identityManager.identify(path.node);
30
25
  }
31
26
  }
32
27
  },
@@ -1,16 +1,12 @@
1
+ import { isPrimitiveElement } from '@speclynx/apidom-datamodel';
1
2
  import { IdentityManager } from "../../identity/index.mjs";
2
- /**
3
- * @public
4
- */
5
3
  /**
6
4
  * Plugin for decorating every semantic element in ApiDOM tree with UUID.
7
5
  * @public
8
6
  */
9
7
  const plugin = ({
10
8
  length = 6
11
- } = {}) => ({
12
- predicates
13
- }) => {
9
+ } = {}) => () => {
14
10
  let identityManager;
15
11
  return {
16
12
  pre() {
@@ -19,9 +15,9 @@ const plugin = ({
19
15
  });
20
16
  },
21
17
  visitor: {
22
- enter(element) {
23
- if (!predicates.isPrimitiveElement(element)) {
24
- element.id = identityManager.identify(element);
18
+ enter(path) {
19
+ if (!isPrimitiveElement(path.node)) {
20
+ path.node.id = identityManager.identify(path.node);
25
21
  }
26
22
  }
27
23
  },
@@ -1,15 +1,35 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
- var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard").default;
5
4
  exports.__esModule = true;
6
5
  exports.default = void 0;
7
- var basePredicates = _interopRequireWildcard(require("../predicates/index.cjs"));
6
+ var _apidomDatamodel = require("@speclynx/apidom-datamodel");
8
7
  var _namespace = _interopRequireDefault(require("../namespace.cjs"));
9
8
  /**
10
9
  * @public
11
10
  */
12
11
 
12
+ const predicates = {
13
+ isElement: _apidomDatamodel.isElement,
14
+ isStringElement: _apidomDatamodel.isStringElement,
15
+ isNumberElement: _apidomDatamodel.isNumberElement,
16
+ isNullElement: _apidomDatamodel.isNullElement,
17
+ isBooleanElement: _apidomDatamodel.isBooleanElement,
18
+ isArrayElement: _apidomDatamodel.isArrayElement,
19
+ isObjectElement: _apidomDatamodel.isObjectElement,
20
+ isMemberElement: _apidomDatamodel.isMemberElement,
21
+ isPrimitiveElement: _apidomDatamodel.isPrimitiveElement,
22
+ isLinkElement: _apidomDatamodel.isLinkElement,
23
+ isRefElement: _apidomDatamodel.isRefElement,
24
+ isAnnotationElement: _apidomDatamodel.isAnnotationElement,
25
+ isCommentElement: _apidomDatamodel.isCommentElement,
26
+ isParseResultElement: _apidomDatamodel.isParseResultElement,
27
+ isSourceMapElement: _apidomDatamodel.isSourceMapElement,
28
+ hasElementSourceMap: _apidomDatamodel.hasElementSourceMap,
29
+ includesSymbols: _apidomDatamodel.includesSymbols,
30
+ includesClasses: _apidomDatamodel.includesClasses
31
+ };
32
+
13
33
  /**
14
34
  * @public
15
35
  */
@@ -18,9 +38,6 @@ var _namespace = _interopRequireDefault(require("../namespace.cjs"));
18
38
  * @public
19
39
  */
20
40
  const createToolbox = () => {
21
- const predicates = {
22
- ...basePredicates
23
- };
24
41
  return {
25
42
  predicates,
26
43
  namespace: _namespace.default