@speclynx/apidom-core 1.12.2 → 2.1.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 +25 -0
- package/NOTICE +16 -7
- package/README.md +102 -330
- package/dist/apidom-core.browser.js +13110 -10559
- package/dist/apidom-core.browser.min.js +1 -1
- package/package.json +7 -12
- package/src/identity/index.cjs +8 -6
- package/src/identity/index.mjs +6 -4
- package/src/index.cjs +13 -79
- package/src/index.mjs +3 -13
- package/src/merge/deepmerge.cjs +22 -20
- package/src/merge/deepmerge.mjs +9 -7
- package/src/merge/merge-right.cjs +2 -2
- package/src/merge/merge-right.mjs +1 -1
- package/src/namespace.cjs +4 -36
- package/src/namespace.mjs +2 -30
- package/src/refractor/plugins/dispatcher/index.cjs +5 -12
- package/src/refractor/plugins/dispatcher/index.mjs +5 -12
- package/src/refractor/plugins/element-identity.cjs +2 -2
- package/src/refractor/plugins/element-identity.mjs +2 -2
- package/src/refractor/plugins/semantic-element-identity.cjs +5 -10
- package/src/refractor/plugins/semantic-element-identity.mjs +5 -9
- package/src/refractor/toolbox.cjs +22 -5
- package/src/refractor/toolbox.mjs +25 -6
- package/src/specification.cjs +51 -0
- package/src/specification.mjs +47 -0
- package/src/transcluder/Transcluder.cjs +8 -8
- package/src/transcluder/Transcluder.mjs +1 -1
- package/src/transformers/from.mjs +2 -2
- package/src/transformers/serializers/json.cjs +2 -2
- package/src/transformers/serializers/json.mjs +1 -1
- package/src/transformers/serializers/value.cjs +50 -0
- package/src/transformers/serializers/value.mjs +47 -0
- package/src/transformers/serializers/yaml-1-2.cjs +22 -18
- package/src/transformers/serializers/yaml-1-2.mjs +22 -18
- package/src/transformers/sexprs.cjs +20 -23
- package/src/transformers/sexprs.mjs +20 -22
- package/src/transformers/to-string.mjs +2 -2
- package/types/apidom-core.d.ts +67 -519
- package/src/clone/errors/CloneError.cjs +0 -22
- package/src/clone/errors/CloneError.mjs +0 -19
- package/src/clone/errors/DeepCloneError.cjs +0 -11
- package/src/clone/errors/DeepCloneError.mjs +0 -6
- package/src/clone/errors/ShallowCloneError.cjs +0 -11
- package/src/clone/errors/ShallowCloneError.mjs +0 -6
- package/src/clone/index.cjs +0 -155
- package/src/clone/index.mjs +0 -146
- package/src/elements/Annotation.cjs +0 -23
- package/src/elements/Annotation.mjs +0 -20
- package/src/elements/Comment.cjs +0 -15
- package/src/elements/Comment.mjs +0 -12
- package/src/elements/ParseResult.cjs +0 -53
- package/src/elements/ParseResult.mjs +0 -50
- package/src/elements/SourceMap.cjs +0 -39
- package/src/elements/SourceMap.mjs +0 -36
- package/src/predicates/helpers.cjs +0 -85
- package/src/predicates/helpers.mjs +0 -77
- package/src/predicates/index.cjs +0 -208
- package/src/predicates/index.mjs +0 -198
- package/src/refractor/index.cjs +0 -46
- package/src/refractor/index.mjs +0 -40
- package/src/refractor/registration.cjs +0 -34
- package/src/refractor/registration.mjs +0 -19
- package/src/transformers/serializers/value/ast/ephemeral-array.cjs +0 -21
- package/src/transformers/serializers/value/ast/ephemeral-array.mjs +0 -17
- package/src/transformers/serializers/value/ast/ephemeral-object.cjs +0 -20
- package/src/transformers/serializers/value/ast/ephemeral-object.mjs +0 -16
- package/src/transformers/serializers/value/index.cjs +0 -85
- package/src/transformers/serializers/value/index.mjs +0 -80
- package/src/transformers/serializers/value/visitor.cjs +0 -52
- package/src/transformers/serializers/value/visitor.mjs +0 -47
- package/src/traversal/filter.cjs +0 -18
- package/src/traversal/filter.mjs +0 -14
- package/src/traversal/find.cjs +0 -19
- package/src/traversal/find.mjs +0 -15
- package/src/traversal/findAtOffset.cjs +0 -65
- package/src/traversal/findAtOffset.mjs +0 -60
- package/src/traversal/index.cjs +0 -19
- package/src/traversal/index.mjs +0 -7
- package/src/traversal/parents.cjs +0 -38
- package/src/traversal/parents.mjs +0 -34
- package/src/traversal/reject.cjs +0 -15
- package/src/traversal/reject.mjs +0 -10
- package/src/traversal/some.cjs +0 -15
- package/src/traversal/some.mjs +0 -10
- package/src/traversal/traverse.cjs +0 -60
- package/src/traversal/traverse.mjs +0 -53
- package/src/traversal/visitor.cjs +0 -123
- package/src/traversal/visitor.mjs +0 -115
- package/src/util.cjs +0 -28
- package/src/util.mjs +0 -24
- package/types/minim.d.ts +0 -236
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@speclynx/apidom-core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Tools for manipulating ApiDOM structures.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
@@ -8,10 +8,7 @@
|
|
|
8
8
|
"provenance": true
|
|
9
9
|
},
|
|
10
10
|
"type": "module",
|
|
11
|
-
"sideEffects":
|
|
12
|
-
"./src/refractor/registration.mjs",
|
|
13
|
-
"./src/refractor/registration.cjs"
|
|
14
|
-
],
|
|
11
|
+
"sideEffects": false,
|
|
15
12
|
"unpkg": "./dist/apidom-core.browser.min.js",
|
|
16
13
|
"main": "./src/index.cjs",
|
|
17
14
|
"exports": {
|
|
@@ -29,7 +26,7 @@
|
|
|
29
26
|
"lint:fix": "eslint ./ --fix",
|
|
30
27
|
"clean": "rimraf --glob 'src/**/*.mjs' 'src/**/*.cjs' 'test/**/*.mjs' ./dist ./types",
|
|
31
28
|
"typescript:check-types": "tsc --noEmit && tsc -p ./test/tsconfig.json --noEmit",
|
|
32
|
-
"typescript:declaration": "tsc -p tsconfig.declaration.json && api-extractor run -l -c ./config/api-extractor/api-extractor.json
|
|
29
|
+
"typescript:declaration": "tsc -p tsconfig.declaration.json && api-extractor run -l -c ./config/api-extractor/api-extractor.json",
|
|
33
30
|
"test": "npm run build:es && cross-env BABEL_ENV=es babel test --out-dir test --extensions '.ts' --out-file-extension '.mjs' --root-mode 'upward' && cross-env NODE_ENV=test mocha",
|
|
34
31
|
"test:update-snapshots": "cross-env UPDATE_SNAPSHOT=1 NODE_ENV=test mocha",
|
|
35
32
|
"prepack": "copyfiles -u 3 ../../LICENSES/* LICENSES && copyfiles -u 2 ../../NOTICE .",
|
|
@@ -43,10 +40,9 @@
|
|
|
43
40
|
"license": "Apache-2.0",
|
|
44
41
|
"dependencies": {
|
|
45
42
|
"@babel/runtime-corejs3": "^7.28.4",
|
|
46
|
-
"@speclynx/apidom-
|
|
47
|
-
"@speclynx/apidom-error": "^1.
|
|
48
|
-
"@
|
|
49
|
-
"minim": "~0.23.8",
|
|
43
|
+
"@speclynx/apidom-datamodel": "^2.1.0",
|
|
44
|
+
"@speclynx/apidom-error": "^2.1.0",
|
|
45
|
+
"@speclynx/apidom-traverse": "^2.1.0",
|
|
50
46
|
"ramda": "~0.32.0",
|
|
51
47
|
"ramda-adjunct": "^6.0.0",
|
|
52
48
|
"short-unique-id": "^5.3.2",
|
|
@@ -57,11 +53,10 @@
|
|
|
57
53
|
"src/**/*.cjs",
|
|
58
54
|
"dist/",
|
|
59
55
|
"types/apidom-core.d.ts",
|
|
60
|
-
"types/minim.d.ts",
|
|
61
56
|
"LICENSES",
|
|
62
57
|
"NOTICE",
|
|
63
58
|
"README.md",
|
|
64
59
|
"CHANGELOG.md"
|
|
65
60
|
],
|
|
66
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "dd02cfbbe82b0a31c6e7c444cec140e740e1c6e9"
|
|
67
62
|
}
|
package/src/identity/index.cjs
CHANGED
|
@@ -3,10 +3,9 @@
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
4
4
|
exports.__esModule = true;
|
|
5
5
|
exports.defaultIdentityManager = exports.IdentityManager = void 0;
|
|
6
|
-
var
|
|
6
|
+
var _apidomDatamodel = require("@speclynx/apidom-datamodel");
|
|
7
7
|
var _shortUniqueId = _interopRequireDefault(require("short-unique-id"));
|
|
8
8
|
var _ElementIdentityError = _interopRequireDefault(require("./errors/ElementIdentityError.cjs"));
|
|
9
|
-
var _index = require("../predicates/index.cjs");
|
|
10
9
|
/**
|
|
11
10
|
* @public
|
|
12
11
|
*/
|
|
@@ -22,15 +21,18 @@ class IdentityManager {
|
|
|
22
21
|
this.identityMap = new WeakMap();
|
|
23
22
|
}
|
|
24
23
|
identify(element) {
|
|
25
|
-
if (!(0,
|
|
24
|
+
if (!(0, _apidomDatamodel.isElement)(element)) {
|
|
26
25
|
throw new _ElementIdentityError.default('Cannot not identify the element. `element` is neither structurally compatible nor a subclass of an Element class.', {
|
|
27
26
|
value: element
|
|
28
27
|
});
|
|
29
28
|
}
|
|
30
29
|
|
|
31
30
|
// use already assigned identity
|
|
32
|
-
if (element.
|
|
33
|
-
|
|
31
|
+
if (element.hasMetaProperty('id')) {
|
|
32
|
+
const existingId = element.meta.get('id');
|
|
33
|
+
if ((0, _apidomDatamodel.isStringElement)(existingId) && !existingId.equals('')) {
|
|
34
|
+
return element.id;
|
|
35
|
+
}
|
|
34
36
|
}
|
|
35
37
|
|
|
36
38
|
// assign identity in immutable way
|
|
@@ -39,7 +41,7 @@ class IdentityManager {
|
|
|
39
41
|
}
|
|
40
42
|
|
|
41
43
|
// return element identity
|
|
42
|
-
const id = new
|
|
44
|
+
const id = new _apidomDatamodel.StringElement(this.generateId());
|
|
43
45
|
this.identityMap.set(element, id);
|
|
44
46
|
return id;
|
|
45
47
|
}
|
package/src/identity/index.mjs
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { StringElement } from '
|
|
1
|
+
import { StringElement, isElement, isStringElement } from '@speclynx/apidom-datamodel';
|
|
2
2
|
import ShortUniqueId from 'short-unique-id';
|
|
3
3
|
import ElementIdentityError from "./errors/ElementIdentityError.mjs";
|
|
4
|
-
import { isElement, isStringElement } from "../predicates/index.mjs";
|
|
5
4
|
/**
|
|
6
5
|
* @public
|
|
7
6
|
*/
|
|
@@ -24,8 +23,11 @@ export class IdentityManager {
|
|
|
24
23
|
}
|
|
25
24
|
|
|
26
25
|
// use already assigned identity
|
|
27
|
-
if (element.
|
|
28
|
-
|
|
26
|
+
if (element.hasMetaProperty('id')) {
|
|
27
|
+
const existingId = element.meta.get('id');
|
|
28
|
+
if (isStringElement(existingId) && !existingId.equals('')) {
|
|
29
|
+
return element.id;
|
|
30
|
+
}
|
|
29
31
|
}
|
|
30
32
|
|
|
31
33
|
// assign identity in immutable way
|
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.
|
|
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
|
|
16
|
-
exports.
|
|
17
|
-
exports.
|
|
18
|
-
|
|
19
|
-
exports.
|
|
20
|
-
|
|
21
|
-
exports.
|
|
22
|
-
|
|
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
|
|
96
|
-
exports.toValue =
|
|
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 {
|
|
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
|
|
19
|
+
export { default as toValue } from "./transformers/serializers/value.mjs";
|
|
30
20
|
/**
|
|
31
21
|
* Transforms the ApiDOM into JSON string.
|
|
32
22
|
*/
|
package/src/merge/deepmerge.cjs
CHANGED
|
@@ -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
|
|
7
|
-
var
|
|
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.
|
|
52
|
-
const attributes = element.
|
|
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,
|
|
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,
|
|
72
|
+
return targetAttributes => (0, _apidomDatamodel.cloneDeep)(targetAttributes);
|
|
75
73
|
}
|
|
76
74
|
return options.customAttributesMerge;
|
|
77
75
|
};
|
|
78
|
-
const mergeArrayElement = (targetElement, sourceElement, 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,
|
|
81
|
-
if ((0,
|
|
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,
|
|
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,
|
|
91
|
+
const keyValue = (0, _value.default)(key);
|
|
90
92
|
let clonedMember;
|
|
91
|
-
if ((0,
|
|
93
|
+
if ((0, _apidomDatamodel.isObjectElement)(targetElement) && targetElement.hasKey(keyValue) && options.isMergeableElement(value)) {
|
|
92
94
|
const targetValue = targetElement.get(keyValue);
|
|
93
|
-
clonedMember = (0,
|
|
95
|
+
clonedMember = (0, _apidomDatamodel.cloneShallow)(member);
|
|
94
96
|
clonedMember.value = getMergeFunction(key, options)(targetValue, value, options);
|
|
95
97
|
} else {
|
|
96
|
-
clonedMember = (0,
|
|
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,
|
|
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,
|
|
126
|
-
const targetIsArrayElement = (0,
|
|
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
|
|
147
|
+
return new _apidomDatamodel.ObjectElement();
|
|
146
148
|
}
|
|
147
149
|
return list.reduce((target, source) => {
|
|
148
150
|
return deepmerge(target, source, options);
|
package/src/merge/deepmerge.mjs
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { ObjectElement } from '
|
|
2
|
-
import
|
|
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.
|
|
37
|
-
const attributes = element.
|
|
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) =>
|
|
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
|
|
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
|
|
29
|
+
return new _apidomDatamodel.ObjectElement();
|
|
30
30
|
}
|
|
31
31
|
return list.reduce((target, source) => {
|
|
32
32
|
return mergeRight(target, source, options);
|
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 =
|
|
6
|
-
var
|
|
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
|
-
*
|
|
7
|
+
* Default namespace instance with all base elements registered.
|
|
14
8
|
*/
|
|
15
|
-
|
|
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
|
|
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
|
-
*
|
|
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,
|
|
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,
|
|
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
|
|
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
|
|
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 =
|
|
35
|
-
...visitorOptions
|
|
36
|
-
});
|
|
33
|
+
const mergedPluginsVisitor = mergeVisitors(pluginsSpecs.map(propOr({}, 'visitor')), visitorOptions);
|
|
37
34
|
pluginsSpecs.forEach(invokeArgs(['pre'], []));
|
|
38
|
-
const newElement =
|
|
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
|
|
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
|
|
50
|
+
const newElement = await traverseAsync(element, mergedPluginsVisitor);
|
|
58
51
|
await Promise.allSettled(pluginsSpecs.map(invokeArgs(['post'], [])));
|
|
59
52
|
return newElement;
|
|
60
53
|
};
|