@speclynx/apidom-datamodel 1.12.2 → 2.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/CHANGELOG.md +20 -0
- package/LICENSE +202 -0
- package/NOTICE +2 -2
- package/README.md +151 -19
- package/dist/apidom-datamodel.browser.js +1141 -167
- package/dist/apidom-datamodel.browser.min.js +1 -1
- package/package.json +6 -3
- package/src/KeyValuePair.cjs +0 -7
- package/src/KeyValuePair.mjs +0 -7
- package/src/Namespace.cjs +1 -1
- package/src/Namespace.mjs +1 -1
- package/src/ObjectSlice.cjs +0 -7
- package/src/ObjectSlice.mjs +0 -7
- package/src/clone/errors/CloneError.cjs +22 -0
- package/src/clone/errors/CloneError.mjs +19 -0
- package/src/clone/errors/DeepCloneError.cjs +11 -0
- package/src/clone/errors/DeepCloneError.mjs +6 -0
- package/src/clone/errors/ShallowCloneError.cjs +11 -0
- package/src/clone/errors/ShallowCloneError.mjs +6 -0
- package/src/clone/index.cjs +184 -0
- package/src/clone/index.mjs +174 -0
- package/src/elements/Annotation.cjs +35 -0
- package/src/elements/Annotation.mjs +30 -0
- package/src/elements/Comment.cjs +18 -0
- package/src/elements/Comment.mjs +13 -0
- package/src/elements/LinkElement.cjs +8 -2
- package/src/elements/LinkElement.mjs +8 -2
- package/src/elements/ParseResult.cjs +91 -0
- package/src/elements/ParseResult.mjs +86 -0
- package/src/elements/RefElement.cjs +4 -1
- package/src/elements/RefElement.mjs +4 -1
- package/src/elements/SourceMap.cjs +140 -0
- package/src/elements/SourceMap.mjs +134 -0
- package/src/index.cjs +31 -2
- package/src/index.mjs +7 -3
- package/src/predicates/elements.cjs +46 -0
- package/src/predicates/elements.mjs +35 -0
- package/src/predicates/index.cjs +68 -0
- package/src/predicates/index.mjs +48 -0
- package/src/predicates/primitives.cjs +69 -0
- package/src/predicates/primitives.mjs +56 -0
- package/src/primitives/ArrayElement.cjs +0 -21
- package/src/primitives/ArrayElement.mjs +0 -21
- package/src/primitives/CollectionElement.cjs +5 -19
- package/src/primitives/CollectionElement.mjs +5 -19
- package/src/primitives/Element.cjs +110 -60
- package/src/primitives/Element.mjs +110 -60
- package/src/primitives/MemberElement.cjs +6 -2
- package/src/primitives/MemberElement.mjs +6 -2
- package/src/primitives/ObjectElement.cjs +0 -2
- package/src/primitives/ObjectElement.mjs +0 -2
- package/src/registration.cjs +8 -0
- package/src/registration.mjs +5 -1
- package/src/serialisers/JSONSerialiser.cjs +35 -4
- package/src/serialisers/JSONSerialiser.mjs +34 -8
- package/types/apidom-datamodel.d.ts +347 -51
package/src/index.mjs
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
export { default as Namespace } from "./Namespace.mjs";
|
|
2
|
-
export { default as KeyValuePair } from "./KeyValuePair.mjs"; //
|
|
3
|
-
export {
|
|
2
|
+
export { default as KeyValuePair } from "./KeyValuePair.mjs"; // Clone utilities
|
|
3
|
+
export { cloneShallow, cloneDeep, CloneError, DeepCloneError, ShallowCloneError } from "./clone/index.mjs";
|
|
4
|
+
// Re-export elements directly to preserve JSDoc
|
|
5
|
+
export { ObjectSlice, Element, CollectionElement, StringElement, NumberElement, BooleanElement, NullElement, ArrayElement, ObjectElement, MemberElement, RefElement, LinkElement, AnnotationElement, CommentElement, ParseResultElement, SourceMapElement, refract } from "./registration.mjs";
|
|
4
6
|
export { default as JSONSerialiser } from "./serialisers/JSONSerialiser.mjs"; // Re-export types - essential public API
|
|
5
7
|
// Re-export types - for advanced users extending the library
|
|
6
|
-
// Re-export types - used in public method signatures
|
|
8
|
+
// Re-export types - used in public method signatures
|
|
9
|
+
// Re-export predicates
|
|
10
|
+
export { isElement, isStringElement, isNumberElement, isNullElement, isBooleanElement, isObjectElement, isArrayElement, isMemberElement, isLinkElement, isRefElement, isAnnotationElement, isCommentElement, isParseResultElement, isSourceMapElement, isPrimitiveElement, hasElementSourceMap, includesSymbols, includesClasses } from "./predicates/index.mjs";
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.isSourceMapElement = exports.isRefElement = exports.isParseResultElement = exports.isLinkElement = exports.isCommentElement = exports.isAnnotationElement = void 0;
|
|
6
|
+
var _LinkElement = _interopRequireDefault(require("../elements/LinkElement.cjs"));
|
|
7
|
+
var _RefElement = _interopRequireDefault(require("../elements/RefElement.cjs"));
|
|
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"));
|
|
12
|
+
/**
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
15
|
+
const isLinkElement = element => element instanceof _LinkElement.default;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @public
|
|
19
|
+
*/
|
|
20
|
+
exports.isLinkElement = isLinkElement;
|
|
21
|
+
const isRefElement = element => element instanceof _RefElement.default;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @public
|
|
25
|
+
*/
|
|
26
|
+
exports.isRefElement = isRefElement;
|
|
27
|
+
const isAnnotationElement = element => element instanceof _Annotation.default;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @public
|
|
31
|
+
*/
|
|
32
|
+
exports.isAnnotationElement = isAnnotationElement;
|
|
33
|
+
const isCommentElement = element => element instanceof _Comment.default;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @public
|
|
37
|
+
*/
|
|
38
|
+
exports.isCommentElement = isCommentElement;
|
|
39
|
+
const isParseResultElement = element => element instanceof _ParseResult.default;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* @public
|
|
43
|
+
*/
|
|
44
|
+
exports.isParseResultElement = isParseResultElement;
|
|
45
|
+
const isSourceMapElement = element => element instanceof _SourceMap.default;
|
|
46
|
+
exports.isSourceMapElement = isSourceMapElement;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import LinkElement from "../elements/LinkElement.mjs";
|
|
2
|
+
import RefElement from "../elements/RefElement.mjs";
|
|
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 const isLinkElement = element => element instanceof LinkElement;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
15
|
+
export const isRefElement = element => element instanceof RefElement;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @public
|
|
19
|
+
*/
|
|
20
|
+
export const isAnnotationElement = element => element instanceof AnnotationElement;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @public
|
|
24
|
+
*/
|
|
25
|
+
export const isCommentElement = element => element instanceof CommentElement;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @public
|
|
29
|
+
*/
|
|
30
|
+
export const isParseResultElement = element => element instanceof ParseResultElement;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @public
|
|
34
|
+
*/
|
|
35
|
+
export const isSourceMapElement = element => element instanceof SourceMapElement;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.isStringElement = exports.isSourceMapElement = exports.isRefElement = exports.isPrimitiveElement = exports.isParseResultElement = exports.isObjectElement = exports.isNumberElement = exports.isNullElement = exports.isMemberElement = exports.isLinkElement = exports.isCommentElement = exports.isBooleanElement = exports.isAnnotationElement = exports.includesSymbols = exports.includesClasses = exports.hasElementSourceMap = void 0;
|
|
5
|
+
var _primitives = require("./primitives.cjs");
|
|
6
|
+
exports.isArrayElement = _primitives.isArrayElement;
|
|
7
|
+
exports.isElement = _primitives.isElement;
|
|
8
|
+
exports.isStringElement = _primitives.isStringElement;
|
|
9
|
+
exports.isNumberElement = _primitives.isNumberElement;
|
|
10
|
+
exports.isNullElement = _primitives.isNullElement;
|
|
11
|
+
exports.isBooleanElement = _primitives.isBooleanElement;
|
|
12
|
+
exports.isObjectElement = _primitives.isObjectElement;
|
|
13
|
+
exports.isMemberElement = _primitives.isMemberElement;
|
|
14
|
+
exports.isPrimitiveElement = _primitives.isPrimitiveElement;
|
|
15
|
+
var _elements = require("./elements.cjs");
|
|
16
|
+
exports.isLinkElement = _elements.isLinkElement;
|
|
17
|
+
exports.isRefElement = _elements.isRefElement;
|
|
18
|
+
exports.isAnnotationElement = _elements.isAnnotationElement;
|
|
19
|
+
exports.isCommentElement = _elements.isCommentElement;
|
|
20
|
+
exports.isParseResultElement = _elements.isParseResultElement;
|
|
21
|
+
exports.isSourceMapElement = _elements.isSourceMapElement;
|
|
22
|
+
/**
|
|
23
|
+
* Checks if an element has complete source position information.
|
|
24
|
+
* Returns true only if all 6 position properties are numbers.
|
|
25
|
+
* @public
|
|
26
|
+
*/
|
|
27
|
+
const hasElementSourceMap = element => {
|
|
28
|
+
return typeof element.startLine === 'number' && typeof element.startCharacter === 'number' && typeof element.startOffset === 'number' && typeof element.endLine === 'number' && typeof element.endCharacter === 'number' && typeof element.endOffset === 'number';
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @public
|
|
33
|
+
*/
|
|
34
|
+
exports.hasElementSourceMap = hasElementSourceMap;
|
|
35
|
+
const includesSymbols = (element, symbols) => {
|
|
36
|
+
if (symbols.length === 0) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
if (!element.hasAttributesProperty('symbols')) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
const elementSymbols = element.attributes.get('symbols');
|
|
43
|
+
if (!(0, _primitives.isArrayElement)(elementSymbols)) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
return symbols.every(symbol => elementSymbols.includes(symbol));
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* @public
|
|
51
|
+
*/
|
|
52
|
+
exports.includesSymbols = includesSymbols;
|
|
53
|
+
const includesClasses = (element, classes) => {
|
|
54
|
+
if (classes.length === 0) {
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
if (!(0, _primitives.isElement)(element)) {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
if (element.isMetaEmpty) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
if (!element.hasMetaProperty('classes')) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
return classes.every(cls => element.classes.includes(cls));
|
|
67
|
+
};
|
|
68
|
+
exports.includesClasses = includesClasses;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { isArrayElement, isElement } from "./primitives.mjs";
|
|
2
|
+
export { isStringElement, isNumberElement, isNullElement, isBooleanElement, isArrayElement, isObjectElement, isMemberElement, isPrimitiveElement } from "./primitives.mjs";
|
|
3
|
+
export { isElement };
|
|
4
|
+
export { isLinkElement, isRefElement, isAnnotationElement, isCommentElement, isParseResultElement, isSourceMapElement } from "./elements.mjs";
|
|
5
|
+
/**
|
|
6
|
+
* Checks if an element has complete source position information.
|
|
7
|
+
* Returns true only if all 6 position properties are numbers.
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
10
|
+
export const hasElementSourceMap = element => {
|
|
11
|
+
return typeof element.startLine === 'number' && typeof element.startCharacter === 'number' && typeof element.startOffset === 'number' && typeof element.endLine === 'number' && typeof element.endCharacter === 'number' && typeof element.endOffset === 'number';
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @public
|
|
16
|
+
*/
|
|
17
|
+
export const includesSymbols = (element, symbols) => {
|
|
18
|
+
if (symbols.length === 0) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
if (!element.hasAttributesProperty('symbols')) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
const elementSymbols = element.attributes.get('symbols');
|
|
25
|
+
if (!isArrayElement(elementSymbols)) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
return symbols.every(symbol => elementSymbols.includes(symbol));
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @public
|
|
33
|
+
*/
|
|
34
|
+
export const includesClasses = (element, classes) => {
|
|
35
|
+
if (classes.length === 0) {
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
if (!isElement(element)) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
if (element.isMetaEmpty) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
if (!element.hasMetaProperty('classes')) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
return classes.every(cls => element.classes.includes(cls));
|
|
48
|
+
};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.isStringElement = exports.isPrimitiveElement = exports.isObjectElement = exports.isNumberElement = exports.isNullElement = exports.isMemberElement = exports.isElement = exports.isBooleanElement = exports.isArrayElement = void 0;
|
|
6
|
+
var _Element = _interopRequireDefault(require("../primitives/Element.cjs"));
|
|
7
|
+
var _StringElement = _interopRequireDefault(require("../primitives/StringElement.cjs"));
|
|
8
|
+
var _NumberElement = _interopRequireDefault(require("../primitives/NumberElement.cjs"));
|
|
9
|
+
var _NullElement = _interopRequireDefault(require("../primitives/NullElement.cjs"));
|
|
10
|
+
var _BooleanElement = _interopRequireDefault(require("../primitives/BooleanElement.cjs"));
|
|
11
|
+
var _ArrayElement = _interopRequireDefault(require("../primitives/ArrayElement.cjs"));
|
|
12
|
+
var _ObjectElement = _interopRequireDefault(require("../primitives/ObjectElement.cjs"));
|
|
13
|
+
var _MemberElement = _interopRequireDefault(require("../primitives/MemberElement.cjs"));
|
|
14
|
+
/**
|
|
15
|
+
* @public
|
|
16
|
+
*/
|
|
17
|
+
const isElement = element => element instanceof _Element.default;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @public
|
|
21
|
+
*/
|
|
22
|
+
exports.isElement = isElement;
|
|
23
|
+
const isStringElement = element => element instanceof _StringElement.default;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @public
|
|
27
|
+
*/
|
|
28
|
+
exports.isStringElement = isStringElement;
|
|
29
|
+
const isNumberElement = element => element instanceof _NumberElement.default;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @public
|
|
33
|
+
*/
|
|
34
|
+
exports.isNumberElement = isNumberElement;
|
|
35
|
+
const isNullElement = element => element instanceof _NullElement.default;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @public
|
|
39
|
+
*/
|
|
40
|
+
exports.isNullElement = isNullElement;
|
|
41
|
+
const isBooleanElement = element => element instanceof _BooleanElement.default;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* @public
|
|
45
|
+
*/
|
|
46
|
+
exports.isBooleanElement = isBooleanElement;
|
|
47
|
+
const isArrayElement = element => element instanceof _ArrayElement.default;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* @public
|
|
51
|
+
*/
|
|
52
|
+
exports.isArrayElement = isArrayElement;
|
|
53
|
+
const isObjectElement = element => element instanceof _ObjectElement.default;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @public
|
|
57
|
+
*/
|
|
58
|
+
exports.isObjectElement = isObjectElement;
|
|
59
|
+
const isMemberElement = element => element instanceof _MemberElement.default;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @public
|
|
63
|
+
*/
|
|
64
|
+
exports.isMemberElement = isMemberElement;
|
|
65
|
+
/**
|
|
66
|
+
* @public
|
|
67
|
+
*/
|
|
68
|
+
const isPrimitiveElement = element => isObjectElement(element) && element.element === 'object' || isArrayElement(element) && element.element === 'array' || isBooleanElement(element) && element.element === 'boolean' || isNumberElement(element) && element.element === 'number' || isStringElement(element) && element.element === 'string' || isNullElement(element) && element.element === 'null' || isMemberElement(element) && element.element === 'member';
|
|
69
|
+
exports.isPrimitiveElement = isPrimitiveElement;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import Element from "../primitives/Element.mjs";
|
|
2
|
+
import StringElement from "../primitives/StringElement.mjs";
|
|
3
|
+
import NumberElement from "../primitives/NumberElement.mjs";
|
|
4
|
+
import NullElement from "../primitives/NullElement.mjs";
|
|
5
|
+
import BooleanElement from "../primitives/BooleanElement.mjs";
|
|
6
|
+
import ArrayElement from "../primitives/ArrayElement.mjs";
|
|
7
|
+
import ObjectElement from "../primitives/ObjectElement.mjs";
|
|
8
|
+
import MemberElement from "../primitives/MemberElement.mjs";
|
|
9
|
+
/**
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
12
|
+
export const isElement = element => element instanceof Element;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @public
|
|
16
|
+
*/
|
|
17
|
+
export const isStringElement = element => element instanceof StringElement;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @public
|
|
21
|
+
*/
|
|
22
|
+
export const isNumberElement = element => element instanceof NumberElement;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @public
|
|
26
|
+
*/
|
|
27
|
+
export const isNullElement = element => element instanceof NullElement;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @public
|
|
31
|
+
*/
|
|
32
|
+
export const isBooleanElement = element => element instanceof BooleanElement;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @public
|
|
36
|
+
*/
|
|
37
|
+
export const isArrayElement = element => element instanceof ArrayElement;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @public
|
|
41
|
+
*/
|
|
42
|
+
export const isObjectElement = element => element instanceof ObjectElement;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* @public
|
|
46
|
+
*/
|
|
47
|
+
export const isMemberElement = element => element instanceof MemberElement;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* @public
|
|
51
|
+
*/
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* @public
|
|
55
|
+
*/
|
|
56
|
+
export const isPrimitiveElement = element => isObjectElement(element) && element.element === 'object' || isArrayElement(element) && element.element === 'array' || isBooleanElement(element) && element.element === 'boolean' || isNumberElement(element) && element.element === 'number' || isStringElement(element) && element.element === 'string' || isNullElement(element) && element.element === 'null' || isMemberElement(element) && element.element === 'member';
|
|
@@ -13,13 +13,6 @@ var _CollectionElement = _interopRequireDefault(require("./CollectionElement.cjs
|
|
|
13
13
|
* @public
|
|
14
14
|
*/
|
|
15
15
|
class ArrayElement extends _CollectionElement.default {
|
|
16
|
-
// Static Fantasy Land methods
|
|
17
|
-
static empty() {
|
|
18
|
-
return new this();
|
|
19
|
-
}
|
|
20
|
-
static 'fantasy-land/empty'() {
|
|
21
|
-
return ArrayElement.empty();
|
|
22
|
-
}
|
|
23
16
|
constructor(content, meta, attributes) {
|
|
24
17
|
super(content || [], meta, attributes);
|
|
25
18
|
this.element = 'array';
|
|
@@ -152,25 +145,11 @@ class ArrayElement extends _CollectionElement.default {
|
|
|
152
145
|
});
|
|
153
146
|
}
|
|
154
147
|
|
|
155
|
-
// Fantasy Land
|
|
156
|
-
|
|
157
148
|
/**
|
|
158
149
|
* Returns an empty array element.
|
|
159
150
|
*/
|
|
160
151
|
empty() {
|
|
161
152
|
return new this.constructor([]);
|
|
162
153
|
}
|
|
163
|
-
'fantasy-land/map'(transform) {
|
|
164
|
-
return new this.constructor(this.map(transform));
|
|
165
|
-
}
|
|
166
|
-
'fantasy-land/chain'(transform) {
|
|
167
|
-
return this.map(element => transform(element)).reduce((a, b) => a.concat(b), this.empty());
|
|
168
|
-
}
|
|
169
|
-
'fantasy-land/filter'(callback) {
|
|
170
|
-
return new this.constructor(this._content.filter(callback));
|
|
171
|
-
}
|
|
172
|
-
'fantasy-land/reduce'(transform, initialValue) {
|
|
173
|
-
return this._content.reduce(transform, initialValue);
|
|
174
|
-
}
|
|
175
154
|
}
|
|
176
155
|
var _default = exports.default = ArrayElement;
|
|
@@ -6,13 +6,6 @@ import CollectionElement from "./CollectionElement.mjs"; // Re-export types from
|
|
|
6
6
|
* @public
|
|
7
7
|
*/
|
|
8
8
|
class ArrayElement extends CollectionElement {
|
|
9
|
-
// Static Fantasy Land methods
|
|
10
|
-
static empty() {
|
|
11
|
-
return new this();
|
|
12
|
-
}
|
|
13
|
-
static 'fantasy-land/empty'() {
|
|
14
|
-
return ArrayElement.empty();
|
|
15
|
-
}
|
|
16
9
|
constructor(content, meta, attributes) {
|
|
17
10
|
super(content || [], meta, attributes);
|
|
18
11
|
this.element = 'array';
|
|
@@ -145,25 +138,11 @@ class ArrayElement extends CollectionElement {
|
|
|
145
138
|
});
|
|
146
139
|
}
|
|
147
140
|
|
|
148
|
-
// Fantasy Land
|
|
149
|
-
|
|
150
141
|
/**
|
|
151
142
|
* Returns an empty array element.
|
|
152
143
|
*/
|
|
153
144
|
empty() {
|
|
154
145
|
return new this.constructor([]);
|
|
155
146
|
}
|
|
156
|
-
'fantasy-land/map'(transform) {
|
|
157
|
-
return new this.constructor(this.map(transform));
|
|
158
|
-
}
|
|
159
|
-
'fantasy-land/chain'(transform) {
|
|
160
|
-
return this.map(element => transform(element)).reduce((a, b) => a.concat(b), this.empty());
|
|
161
|
-
}
|
|
162
|
-
'fantasy-land/filter'(callback) {
|
|
163
|
-
return new this.constructor(this._content.filter(callback));
|
|
164
|
-
}
|
|
165
|
-
'fantasy-land/reduce'(transform, initialValue) {
|
|
166
|
-
return this._content.reduce(transform, initialValue);
|
|
167
|
-
}
|
|
168
147
|
}
|
|
169
148
|
export default ArrayElement;
|
|
@@ -69,20 +69,15 @@ class CollectionElement extends _Element.default {
|
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
/**
|
|
72
|
-
* Adds the given
|
|
72
|
+
* Adds the given elements to the end of the collection.
|
|
73
73
|
*/
|
|
74
|
-
push(
|
|
75
|
-
|
|
74
|
+
push(...values) {
|
|
75
|
+
for (const value of values) {
|
|
76
|
+
this._content.push(this.refract(value));
|
|
77
|
+
}
|
|
76
78
|
return this;
|
|
77
79
|
}
|
|
78
80
|
|
|
79
|
-
/**
|
|
80
|
-
* Alias for push.
|
|
81
|
-
*/
|
|
82
|
-
add(value) {
|
|
83
|
-
this.push(value);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
81
|
/**
|
|
87
82
|
* Removes the first element from the collection.
|
|
88
83
|
*/
|
|
@@ -165,16 +160,10 @@ class CollectionElement extends _Element.default {
|
|
|
165
160
|
return this.find(item => item.id.toValue() === id).first;
|
|
166
161
|
}
|
|
167
162
|
|
|
168
|
-
// Fantasy Land - Monoid
|
|
169
|
-
|
|
170
163
|
/**
|
|
171
164
|
* Returns an empty collection element.
|
|
172
165
|
*/
|
|
173
166
|
|
|
174
|
-
'fantasy-land/empty'() {
|
|
175
|
-
return this.empty();
|
|
176
|
-
}
|
|
177
|
-
|
|
178
167
|
/**
|
|
179
168
|
* Concatenates two collection elements.
|
|
180
169
|
*/
|
|
@@ -182,9 +171,6 @@ class CollectionElement extends _Element.default {
|
|
|
182
171
|
const Ctor = this.constructor;
|
|
183
172
|
return new Ctor(this._content.concat(other._content));
|
|
184
173
|
}
|
|
185
|
-
'fantasy-land/concat'(other) {
|
|
186
|
-
return this.concat(other);
|
|
187
|
-
}
|
|
188
174
|
|
|
189
175
|
// Iterator support
|
|
190
176
|
[Symbol.iterator]() {
|
|
@@ -62,20 +62,15 @@ class CollectionElement extends Element {
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
/**
|
|
65
|
-
* Adds the given
|
|
65
|
+
* Adds the given elements to the end of the collection.
|
|
66
66
|
*/
|
|
67
|
-
push(
|
|
68
|
-
|
|
67
|
+
push(...values) {
|
|
68
|
+
for (const value of values) {
|
|
69
|
+
this._content.push(this.refract(value));
|
|
70
|
+
}
|
|
69
71
|
return this;
|
|
70
72
|
}
|
|
71
73
|
|
|
72
|
-
/**
|
|
73
|
-
* Alias for push.
|
|
74
|
-
*/
|
|
75
|
-
add(value) {
|
|
76
|
-
this.push(value);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
74
|
/**
|
|
80
75
|
* Removes the first element from the collection.
|
|
81
76
|
*/
|
|
@@ -158,16 +153,10 @@ class CollectionElement extends Element {
|
|
|
158
153
|
return this.find(item => item.id.toValue() === id).first;
|
|
159
154
|
}
|
|
160
155
|
|
|
161
|
-
// Fantasy Land - Monoid
|
|
162
|
-
|
|
163
156
|
/**
|
|
164
157
|
* Returns an empty collection element.
|
|
165
158
|
*/
|
|
166
159
|
|
|
167
|
-
'fantasy-land/empty'() {
|
|
168
|
-
return this.empty();
|
|
169
|
-
}
|
|
170
|
-
|
|
171
160
|
/**
|
|
172
161
|
* Concatenates two collection elements.
|
|
173
162
|
*/
|
|
@@ -175,9 +164,6 @@ class CollectionElement extends Element {
|
|
|
175
164
|
const Ctor = this.constructor;
|
|
176
165
|
return new Ctor(this._content.concat(other._content));
|
|
177
166
|
}
|
|
178
|
-
'fantasy-land/concat'(other) {
|
|
179
|
-
return this.concat(other);
|
|
180
|
-
}
|
|
181
167
|
|
|
182
168
|
// Iterator support
|
|
183
169
|
[Symbol.iterator]() {
|