@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.
Files changed (95) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/package.json +4 -5
  3. package/src/KeyValuePair.cjs +31 -0
  4. package/src/KeyValuePair.mjs +27 -0
  5. package/src/KeyValuePair.ts +31 -0
  6. package/src/Metadata.cjs +91 -0
  7. package/src/Metadata.mjs +87 -0
  8. package/src/Metadata.ts +100 -0
  9. package/src/Namespace.cjs +212 -0
  10. package/src/Namespace.mjs +206 -0
  11. package/src/Namespace.ts +260 -0
  12. package/src/ObjectSlice.cjs +199 -0
  13. package/src/ObjectSlice.mjs +195 -0
  14. package/src/ObjectSlice.ts +228 -0
  15. package/src/clone/errors/CloneError.cjs +22 -0
  16. package/src/clone/errors/CloneError.mjs +19 -0
  17. package/src/clone/errors/CloneError.ts +26 -0
  18. package/src/clone/errors/DeepCloneError.cjs +11 -0
  19. package/src/clone/errors/DeepCloneError.mjs +6 -0
  20. package/src/clone/errors/DeepCloneError.ts +8 -0
  21. package/src/clone/errors/ShallowCloneError.cjs +11 -0
  22. package/src/clone/errors/ShallowCloneError.mjs +6 -0
  23. package/src/clone/errors/ShallowCloneError.ts +8 -0
  24. package/src/clone/index.cjs +188 -0
  25. package/src/clone/index.mjs +178 -0
  26. package/src/clone/index.ts +195 -0
  27. package/src/elements/Annotation.cjs +35 -0
  28. package/src/elements/Annotation.mjs +30 -0
  29. package/src/elements/Annotation.ts +35 -0
  30. package/src/elements/Comment.cjs +18 -0
  31. package/src/elements/Comment.mjs +13 -0
  32. package/src/elements/Comment.ts +16 -0
  33. package/src/elements/LinkElement.cjs +50 -0
  34. package/src/elements/LinkElement.mjs +45 -0
  35. package/src/elements/LinkElement.ts +49 -0
  36. package/src/elements/ParseResult.cjs +91 -0
  37. package/src/elements/ParseResult.mjs +86 -0
  38. package/src/elements/ParseResult.ts +94 -0
  39. package/src/elements/RefElement.cjs +34 -0
  40. package/src/elements/RefElement.mjs +29 -0
  41. package/src/elements/RefElement.ts +33 -0
  42. package/src/elements/SourceMap.cjs +140 -0
  43. package/src/elements/SourceMap.mjs +134 -0
  44. package/src/elements/SourceMap.ts +170 -0
  45. package/src/elements/Style.cjs +54 -0
  46. package/src/elements/Style.mjs +48 -0
  47. package/src/elements/Style.ts +56 -0
  48. package/src/index.cjs +58 -0
  49. package/src/index.mjs +11 -0
  50. package/src/index.ts +79 -0
  51. package/src/predicates/elements.cjs +46 -0
  52. package/src/predicates/elements.mjs +35 -0
  53. package/src/predicates/elements.ts +42 -0
  54. package/src/predicates/index.cjs +77 -0
  55. package/src/predicates/index.mjs +56 -0
  56. package/src/predicates/index.ts +89 -0
  57. package/src/predicates/primitives.cjs +69 -0
  58. package/src/predicates/primitives.mjs +56 -0
  59. package/src/predicates/primitives.ts +79 -0
  60. package/src/primitives/ArrayElement.cjs +155 -0
  61. package/src/primitives/ArrayElement.mjs +148 -0
  62. package/src/primitives/ArrayElement.ts +161 -0
  63. package/src/primitives/BooleanElement.cjs +20 -0
  64. package/src/primitives/BooleanElement.mjs +15 -0
  65. package/src/primitives/BooleanElement.ts +18 -0
  66. package/src/primitives/CollectionElement.cjs +180 -0
  67. package/src/primitives/CollectionElement.mjs +173 -0
  68. package/src/primitives/CollectionElement.ts +191 -0
  69. package/src/primitives/Element.cjs +510 -0
  70. package/src/primitives/Element.mjs +505 -0
  71. package/src/primitives/Element.ts +556 -0
  72. package/src/primitives/MemberElement.cjs +58 -0
  73. package/src/primitives/MemberElement.mjs +53 -0
  74. package/src/primitives/MemberElement.ts +61 -0
  75. package/src/primitives/NullElement.cjs +28 -0
  76. package/src/primitives/NullElement.mjs +23 -0
  77. package/src/primitives/NullElement.ts +26 -0
  78. package/src/primitives/NumberElement.cjs +20 -0
  79. package/src/primitives/NumberElement.mjs +15 -0
  80. package/src/primitives/NumberElement.ts +18 -0
  81. package/src/primitives/ObjectElement.cjs +220 -0
  82. package/src/primitives/ObjectElement.mjs +214 -0
  83. package/src/primitives/ObjectElement.ts +263 -0
  84. package/src/primitives/StringElement.cjs +27 -0
  85. package/src/primitives/StringElement.mjs +22 -0
  86. package/src/primitives/StringElement.ts +25 -0
  87. package/src/registration.cjs +101 -0
  88. package/src/registration.mjs +79 -0
  89. package/src/registration.ts +111 -0
  90. package/src/serialisers/JSONSerialiser.cjs +230 -0
  91. package/src/serialisers/JSONSerialiser.mjs +221 -0
  92. package/src/serialisers/JSONSerialiser.ts +295 -0
  93. package/src/types.cjs +3 -0
  94. package/src/types.mjs +1 -0
  95. 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;