@speclynx/apidom-datamodel 4.0.2 → 4.0.3
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 +6 -0
- package/package.json +4 -5
- package/src/KeyValuePair.cjs +31 -0
- package/src/KeyValuePair.mjs +27 -0
- package/src/KeyValuePair.ts +31 -0
- package/src/Metadata.cjs +91 -0
- package/src/Metadata.mjs +87 -0
- package/src/Metadata.ts +100 -0
- package/src/Namespace.cjs +212 -0
- package/src/Namespace.mjs +206 -0
- package/src/Namespace.ts +260 -0
- package/src/ObjectSlice.cjs +199 -0
- package/src/ObjectSlice.mjs +195 -0
- package/src/ObjectSlice.ts +228 -0
- package/src/clone/errors/CloneError.cjs +22 -0
- package/src/clone/errors/CloneError.mjs +19 -0
- package/src/clone/errors/CloneError.ts +26 -0
- package/src/clone/errors/DeepCloneError.cjs +11 -0
- package/src/clone/errors/DeepCloneError.mjs +6 -0
- package/src/clone/errors/DeepCloneError.ts +8 -0
- package/src/clone/errors/ShallowCloneError.cjs +11 -0
- package/src/clone/errors/ShallowCloneError.mjs +6 -0
- package/src/clone/errors/ShallowCloneError.ts +8 -0
- package/src/clone/index.cjs +188 -0
- package/src/clone/index.mjs +178 -0
- package/src/clone/index.ts +195 -0
- package/src/elements/Annotation.cjs +35 -0
- package/src/elements/Annotation.mjs +30 -0
- package/src/elements/Annotation.ts +35 -0
- package/src/elements/Comment.cjs +18 -0
- package/src/elements/Comment.mjs +13 -0
- package/src/elements/Comment.ts +16 -0
- package/src/elements/LinkElement.cjs +50 -0
- package/src/elements/LinkElement.mjs +45 -0
- package/src/elements/LinkElement.ts +49 -0
- package/src/elements/ParseResult.cjs +91 -0
- package/src/elements/ParseResult.mjs +86 -0
- package/src/elements/ParseResult.ts +94 -0
- package/src/elements/RefElement.cjs +34 -0
- package/src/elements/RefElement.mjs +29 -0
- package/src/elements/RefElement.ts +33 -0
- package/src/elements/SourceMap.cjs +140 -0
- package/src/elements/SourceMap.mjs +134 -0
- package/src/elements/SourceMap.ts +170 -0
- package/src/elements/Style.cjs +54 -0
- package/src/elements/Style.mjs +48 -0
- package/src/elements/Style.ts +56 -0
- package/src/index.cjs +58 -0
- package/src/index.mjs +11 -0
- package/src/index.ts +79 -0
- package/src/predicates/elements.cjs +46 -0
- package/src/predicates/elements.mjs +35 -0
- package/src/predicates/elements.ts +42 -0
- package/src/predicates/index.cjs +77 -0
- package/src/predicates/index.mjs +56 -0
- package/src/predicates/index.ts +89 -0
- package/src/predicates/primitives.cjs +69 -0
- package/src/predicates/primitives.mjs +56 -0
- package/src/predicates/primitives.ts +79 -0
- package/src/primitives/ArrayElement.cjs +155 -0
- package/src/primitives/ArrayElement.mjs +148 -0
- package/src/primitives/ArrayElement.ts +161 -0
- package/src/primitives/BooleanElement.cjs +20 -0
- package/src/primitives/BooleanElement.mjs +15 -0
- package/src/primitives/BooleanElement.ts +18 -0
- package/src/primitives/CollectionElement.cjs +180 -0
- package/src/primitives/CollectionElement.mjs +173 -0
- package/src/primitives/CollectionElement.ts +191 -0
- package/src/primitives/Element.cjs +510 -0
- package/src/primitives/Element.mjs +505 -0
- package/src/primitives/Element.ts +556 -0
- package/src/primitives/MemberElement.cjs +58 -0
- package/src/primitives/MemberElement.mjs +53 -0
- package/src/primitives/MemberElement.ts +61 -0
- package/src/primitives/NullElement.cjs +28 -0
- package/src/primitives/NullElement.mjs +23 -0
- package/src/primitives/NullElement.ts +26 -0
- package/src/primitives/NumberElement.cjs +20 -0
- package/src/primitives/NumberElement.mjs +15 -0
- package/src/primitives/NumberElement.ts +18 -0
- package/src/primitives/ObjectElement.cjs +220 -0
- package/src/primitives/ObjectElement.mjs +214 -0
- package/src/primitives/ObjectElement.ts +263 -0
- package/src/primitives/StringElement.cjs +27 -0
- package/src/primitives/StringElement.mjs +22 -0
- package/src/primitives/StringElement.ts +25 -0
- package/src/registration.cjs +101 -0
- package/src/registration.mjs +79 -0
- package/src/registration.ts +111 -0
- package/src/serialisers/JSONSerialiser.cjs +230 -0
- package/src/serialisers/JSONSerialiser.mjs +221 -0
- package/src/serialisers/JSONSerialiser.ts +295 -0
- package/src/types.cjs +3 -0
- package/src/types.mjs +1 -0
- package/src/types.ts +72 -0
|
@@ -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,42 @@
|
|
|
1
|
+
import LinkElement from '../elements/LinkElement.ts';
|
|
2
|
+
import RefElement from '../elements/RefElement.ts';
|
|
3
|
+
import AnnotationElement from '../elements/Annotation.ts';
|
|
4
|
+
import CommentElement from '../elements/Comment.ts';
|
|
5
|
+
import ParseResultElement from '../elements/ParseResult.ts';
|
|
6
|
+
import SourceMapElement from '../elements/SourceMap.ts';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
export const isLinkElement = (element: unknown): element is LinkElement =>
|
|
12
|
+
element instanceof LinkElement;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @public
|
|
16
|
+
*/
|
|
17
|
+
export const isRefElement = (element: unknown): element is RefElement =>
|
|
18
|
+
element instanceof RefElement;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
23
|
+
export const isAnnotationElement = (element: unknown): element is AnnotationElement =>
|
|
24
|
+
element instanceof AnnotationElement;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @public
|
|
28
|
+
*/
|
|
29
|
+
export const isCommentElement = (element: unknown): element is CommentElement =>
|
|
30
|
+
element instanceof CommentElement;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @public
|
|
34
|
+
*/
|
|
35
|
+
export const isParseResultElement = (element: unknown): element is ParseResultElement =>
|
|
36
|
+
element instanceof ParseResultElement;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @public
|
|
40
|
+
*/
|
|
41
|
+
export const isSourceMapElement = (element: unknown): element is SourceMapElement =>
|
|
42
|
+
element instanceof SourceMapElement;
|
|
@@ -0,0 +1,77 @@
|
|
|
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.hasElementStyle = 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 format-specific style information.
|
|
24
|
+
* @public
|
|
25
|
+
*/
|
|
26
|
+
const hasElementStyle = element => {
|
|
27
|
+
return element.style !== undefined;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Checks if an element has complete source position information.
|
|
32
|
+
* Returns true only if all 6 position properties are numbers.
|
|
33
|
+
* @public
|
|
34
|
+
*/
|
|
35
|
+
exports.hasElementStyle = hasElementStyle;
|
|
36
|
+
const hasElementSourceMap = element => {
|
|
37
|
+
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';
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @public
|
|
42
|
+
*/
|
|
43
|
+
exports.hasElementSourceMap = hasElementSourceMap;
|
|
44
|
+
const includesSymbols = (element, symbols) => {
|
|
45
|
+
if (symbols.length === 0) {
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
if (!element.hasAttributesProperty('symbols')) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
const elementSymbols = element.attributes.get('symbols');
|
|
52
|
+
if (!(0, _primitives.isArrayElement)(elementSymbols)) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
return symbols.every(symbol => elementSymbols.includes(symbol));
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @public
|
|
60
|
+
*/
|
|
61
|
+
exports.includesSymbols = includesSymbols;
|
|
62
|
+
const includesClasses = (element, classes) => {
|
|
63
|
+
if (classes.length === 0) {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
if (!(0, _primitives.isElement)(element)) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
if (element.isMetaEmpty) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
if (!element.hasMetaProperty('classes')) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
return classes.every(cls => element.classes.includes(cls));
|
|
76
|
+
};
|
|
77
|
+
exports.includesClasses = includesClasses;
|
|
@@ -0,0 +1,56 @@
|
|
|
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 format-specific style information.
|
|
7
|
+
* @public
|
|
8
|
+
*/
|
|
9
|
+
export const hasElementStyle = element => {
|
|
10
|
+
return element.style !== undefined;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Checks if an element has complete source position information.
|
|
15
|
+
* Returns true only if all 6 position properties are numbers.
|
|
16
|
+
* @public
|
|
17
|
+
*/
|
|
18
|
+
export const hasElementSourceMap = element => {
|
|
19
|
+
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';
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @public
|
|
24
|
+
*/
|
|
25
|
+
export const includesSymbols = (element, symbols) => {
|
|
26
|
+
if (symbols.length === 0) {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
if (!element.hasAttributesProperty('symbols')) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
const elementSymbols = element.attributes.get('symbols');
|
|
33
|
+
if (!isArrayElement(elementSymbols)) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
return symbols.every(symbol => elementSymbols.includes(symbol));
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @public
|
|
41
|
+
*/
|
|
42
|
+
export const includesClasses = (element, classes) => {
|
|
43
|
+
if (classes.length === 0) {
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
if (!isElement(element)) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
if (element.isMetaEmpty) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
if (!element.hasMetaProperty('classes')) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
return classes.every(cls => element.classes.includes(cls));
|
|
56
|
+
};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import Element from '../primitives/Element.ts';
|
|
2
|
+
import { isArrayElement, isElement } from './primitives.ts';
|
|
3
|
+
|
|
4
|
+
export {
|
|
5
|
+
isStringElement,
|
|
6
|
+
isNumberElement,
|
|
7
|
+
isNullElement,
|
|
8
|
+
isBooleanElement,
|
|
9
|
+
isArrayElement,
|
|
10
|
+
isObjectElement,
|
|
11
|
+
isMemberElement,
|
|
12
|
+
isPrimitiveElement,
|
|
13
|
+
} from './primitives.ts';
|
|
14
|
+
export { isElement };
|
|
15
|
+
export type { PrimitiveElement } from './primitives.ts';
|
|
16
|
+
|
|
17
|
+
export {
|
|
18
|
+
isLinkElement,
|
|
19
|
+
isRefElement,
|
|
20
|
+
isAnnotationElement,
|
|
21
|
+
isCommentElement,
|
|
22
|
+
isParseResultElement,
|
|
23
|
+
isSourceMapElement,
|
|
24
|
+
} from './elements.ts';
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Checks if an element has format-specific style information.
|
|
28
|
+
* @public
|
|
29
|
+
*/
|
|
30
|
+
export const hasElementStyle = <T extends Element>(element: T): boolean => {
|
|
31
|
+
return element.style !== undefined;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Checks if an element has complete source position information.
|
|
36
|
+
* Returns true only if all 6 position properties are numbers.
|
|
37
|
+
* @public
|
|
38
|
+
*/
|
|
39
|
+
export const hasElementSourceMap = <T extends Element>(element: T): boolean => {
|
|
40
|
+
return (
|
|
41
|
+
typeof element.startLine === 'number' &&
|
|
42
|
+
typeof element.startCharacter === 'number' &&
|
|
43
|
+
typeof element.startOffset === 'number' &&
|
|
44
|
+
typeof element.endLine === 'number' &&
|
|
45
|
+
typeof element.endCharacter === 'number' &&
|
|
46
|
+
typeof element.endOffset === 'number'
|
|
47
|
+
);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @public
|
|
52
|
+
*/
|
|
53
|
+
export const includesSymbols = <T extends Element>(element: T, symbols: string[]): boolean => {
|
|
54
|
+
if (symbols.length === 0) {
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (!element.hasAttributesProperty('symbols')) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const elementSymbols = element.attributes.get('symbols');
|
|
63
|
+
|
|
64
|
+
if (!isArrayElement(elementSymbols)) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return symbols.every((symbol) => elementSymbols.includes(symbol));
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* @public
|
|
73
|
+
*/
|
|
74
|
+
export const includesClasses = <T extends Element>(element: T, classes: string[]): boolean => {
|
|
75
|
+
if (classes.length === 0) {
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
if (!isElement(element)) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
if (element.isMetaEmpty) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
if (!element.hasMetaProperty('classes')) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return classes.every((cls) => element.classes.includes(cls));
|
|
89
|
+
};
|
|
@@ -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';
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import Element from '../primitives/Element.ts';
|
|
2
|
+
import StringElement from '../primitives/StringElement.ts';
|
|
3
|
+
import NumberElement from '../primitives/NumberElement.ts';
|
|
4
|
+
import NullElement from '../primitives/NullElement.ts';
|
|
5
|
+
import BooleanElement from '../primitives/BooleanElement.ts';
|
|
6
|
+
import ArrayElement from '../primitives/ArrayElement.ts';
|
|
7
|
+
import ObjectElement from '../primitives/ObjectElement.ts';
|
|
8
|
+
import MemberElement from '../primitives/MemberElement.ts';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
export const isElement = (element: unknown): element is Element => element instanceof Element;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @public
|
|
17
|
+
*/
|
|
18
|
+
export const isStringElement = (element: unknown): element is StringElement =>
|
|
19
|
+
element instanceof StringElement;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @public
|
|
23
|
+
*/
|
|
24
|
+
export const isNumberElement = (element: unknown): element is NumberElement =>
|
|
25
|
+
element instanceof NumberElement;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @public
|
|
29
|
+
*/
|
|
30
|
+
export const isNullElement = (element: unknown): element is NullElement =>
|
|
31
|
+
element instanceof NullElement;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* @public
|
|
35
|
+
*/
|
|
36
|
+
export const isBooleanElement = (element: unknown): element is BooleanElement =>
|
|
37
|
+
element instanceof BooleanElement;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @public
|
|
41
|
+
*/
|
|
42
|
+
export const isArrayElement = (element: unknown): element is ArrayElement =>
|
|
43
|
+
element instanceof ArrayElement;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* @public
|
|
47
|
+
*/
|
|
48
|
+
export const isObjectElement = (element: unknown): element is ObjectElement =>
|
|
49
|
+
element instanceof ObjectElement;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @public
|
|
53
|
+
*/
|
|
54
|
+
export const isMemberElement = (element: unknown): element is MemberElement =>
|
|
55
|
+
element instanceof MemberElement;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* @public
|
|
59
|
+
*/
|
|
60
|
+
export type PrimitiveElement =
|
|
61
|
+
| ObjectElement
|
|
62
|
+
| ArrayElement
|
|
63
|
+
| BooleanElement
|
|
64
|
+
| NumberElement
|
|
65
|
+
| StringElement
|
|
66
|
+
| NullElement
|
|
67
|
+
| MemberElement;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* @public
|
|
71
|
+
*/
|
|
72
|
+
export const isPrimitiveElement = (element: unknown): element is PrimitiveElement =>
|
|
73
|
+
(isObjectElement(element) && element.element === 'object') ||
|
|
74
|
+
(isArrayElement(element) && element.element === 'array') ||
|
|
75
|
+
(isBooleanElement(element) && element.element === 'boolean') ||
|
|
76
|
+
(isNumberElement(element) && element.element === 'number') ||
|
|
77
|
+
(isStringElement(element) && element.element === 'string') ||
|
|
78
|
+
(isNullElement(element) && element.element === 'null') ||
|
|
79
|
+
(isMemberElement(element) && element.element === 'member');
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.default = void 0;
|
|
6
|
+
var _CollectionElement = _interopRequireDefault(require("./CollectionElement.cjs"));
|
|
7
|
+
// Re-export types from CollectionElement
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* ArrayElement represents an array/collection of elements in ApiDOM.
|
|
11
|
+
*
|
|
12
|
+
* @typeParam T - The element type contained in the array, defaults to Element
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
15
|
+
class ArrayElement extends _CollectionElement.default {
|
|
16
|
+
constructor(content, meta, attributes) {
|
|
17
|
+
super(content || [], meta, attributes);
|
|
18
|
+
this.element = 'array';
|
|
19
|
+
}
|
|
20
|
+
primitive() {
|
|
21
|
+
return 'array';
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Gets the element at the specified index.
|
|
26
|
+
*/
|
|
27
|
+
get(index) {
|
|
28
|
+
return this._content[index];
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Helper for returning the value of an item.
|
|
33
|
+
*/
|
|
34
|
+
getValue(index) {
|
|
35
|
+
const item = this.get(index);
|
|
36
|
+
if (item) {
|
|
37
|
+
return item.toValue();
|
|
38
|
+
}
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Sets the element at the specified index, or sets the content if called with one argument.
|
|
44
|
+
*/
|
|
45
|
+
set(indexOrContent, value) {
|
|
46
|
+
if (typeof indexOrContent === 'number' && value !== undefined) {
|
|
47
|
+
this._content[indexOrContent] = this.refract(value);
|
|
48
|
+
} else {
|
|
49
|
+
// Delegate to parent set behavior
|
|
50
|
+
this.content = indexOrContent;
|
|
51
|
+
}
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Removes the element at the specified index.
|
|
57
|
+
*/
|
|
58
|
+
remove(index) {
|
|
59
|
+
return this._content.splice(index, 1)[0] ?? null;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Maps each element using the provided callback function.
|
|
64
|
+
*/
|
|
65
|
+
map(callback, thisArg) {
|
|
66
|
+
return this._content.map(callback, thisArg);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Maps and then flattens the results.
|
|
71
|
+
*/
|
|
72
|
+
flatMap(callback, thisArg) {
|
|
73
|
+
return this._content.flatMap(callback, thisArg);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Returns an array containing the truthy results of calling the given transformation.
|
|
78
|
+
*/
|
|
79
|
+
compactMap(transform, thisArg) {
|
|
80
|
+
const results = [];
|
|
81
|
+
for (const element of this._content) {
|
|
82
|
+
const result = transform.call(thisArg, element);
|
|
83
|
+
if (result) {
|
|
84
|
+
results.push(result);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return results;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Filters elements using the provided callback.
|
|
92
|
+
*/
|
|
93
|
+
filter(callback, thisArg) {
|
|
94
|
+
const filtered = this._content.filter(callback, thisArg);
|
|
95
|
+
return new this.constructor(filtered);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Rejects elements that match the provided callback.
|
|
100
|
+
*/
|
|
101
|
+
reject(callback, thisArg) {
|
|
102
|
+
const results = [];
|
|
103
|
+
for (const element of this._content) {
|
|
104
|
+
if (!callback.call(thisArg, element)) {
|
|
105
|
+
results.push(element);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return new this.constructor(results);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Reduces the array to a single value.
|
|
113
|
+
* This is a reduce function specifically for datamodel arrays and objects.
|
|
114
|
+
* It allows for returning normal values or datamodel instances.
|
|
115
|
+
*/
|
|
116
|
+
reduce(callback, initialValue) {
|
|
117
|
+
let startIndex;
|
|
118
|
+
let memo;
|
|
119
|
+
|
|
120
|
+
// Allows for defining a starting value of the reduce
|
|
121
|
+
if (initialValue !== undefined) {
|
|
122
|
+
startIndex = 0;
|
|
123
|
+
memo = this.refract(initialValue);
|
|
124
|
+
} else {
|
|
125
|
+
startIndex = 1;
|
|
126
|
+
memo = this.first;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// Sending each function call to the registry allows for passing datamodel
|
|
130
|
+
// instances through the function return.
|
|
131
|
+
for (let i = startIndex; i < this.length; i += 1) {
|
|
132
|
+
const item = this._content[i];
|
|
133
|
+
const result = callback(memo, item, i, this);
|
|
134
|
+
memo = result === undefined ? result : this.refract(result);
|
|
135
|
+
}
|
|
136
|
+
return memo;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Executes a provided function once for each element.
|
|
141
|
+
*/
|
|
142
|
+
forEach(callback, thisArg) {
|
|
143
|
+
this._content.forEach((item, index) => {
|
|
144
|
+
callback.call(thisArg, item, index);
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Returns an empty array element.
|
|
150
|
+
*/
|
|
151
|
+
empty() {
|
|
152
|
+
return new this.constructor([]);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
var _default = exports.default = ArrayElement;
|