@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.
Files changed (92) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/NOTICE +16 -7
  3. package/README.md +102 -330
  4. package/dist/apidom-core.browser.js +13110 -10559
  5. package/dist/apidom-core.browser.min.js +1 -1
  6. package/package.json +7 -12
  7. package/src/identity/index.cjs +8 -6
  8. package/src/identity/index.mjs +6 -4
  9. package/src/index.cjs +13 -79
  10. package/src/index.mjs +3 -13
  11. package/src/merge/deepmerge.cjs +22 -20
  12. package/src/merge/deepmerge.mjs +9 -7
  13. package/src/merge/merge-right.cjs +2 -2
  14. package/src/merge/merge-right.mjs +1 -1
  15. package/src/namespace.cjs +4 -36
  16. package/src/namespace.mjs +2 -30
  17. package/src/refractor/plugins/dispatcher/index.cjs +5 -12
  18. package/src/refractor/plugins/dispatcher/index.mjs +5 -12
  19. package/src/refractor/plugins/element-identity.cjs +2 -2
  20. package/src/refractor/plugins/element-identity.mjs +2 -2
  21. package/src/refractor/plugins/semantic-element-identity.cjs +5 -10
  22. package/src/refractor/plugins/semantic-element-identity.mjs +5 -9
  23. package/src/refractor/toolbox.cjs +22 -5
  24. package/src/refractor/toolbox.mjs +25 -6
  25. package/src/specification.cjs +51 -0
  26. package/src/specification.mjs +47 -0
  27. package/src/transcluder/Transcluder.cjs +8 -8
  28. package/src/transcluder/Transcluder.mjs +1 -1
  29. package/src/transformers/from.mjs +2 -2
  30. package/src/transformers/serializers/json.cjs +2 -2
  31. package/src/transformers/serializers/json.mjs +1 -1
  32. package/src/transformers/serializers/value.cjs +50 -0
  33. package/src/transformers/serializers/value.mjs +47 -0
  34. package/src/transformers/serializers/yaml-1-2.cjs +22 -18
  35. package/src/transformers/serializers/yaml-1-2.mjs +22 -18
  36. package/src/transformers/sexprs.cjs +20 -23
  37. package/src/transformers/sexprs.mjs +20 -22
  38. package/src/transformers/to-string.mjs +2 -2
  39. package/types/apidom-core.d.ts +67 -519
  40. package/src/clone/errors/CloneError.cjs +0 -22
  41. package/src/clone/errors/CloneError.mjs +0 -19
  42. package/src/clone/errors/DeepCloneError.cjs +0 -11
  43. package/src/clone/errors/DeepCloneError.mjs +0 -6
  44. package/src/clone/errors/ShallowCloneError.cjs +0 -11
  45. package/src/clone/errors/ShallowCloneError.mjs +0 -6
  46. package/src/clone/index.cjs +0 -155
  47. package/src/clone/index.mjs +0 -146
  48. package/src/elements/Annotation.cjs +0 -23
  49. package/src/elements/Annotation.mjs +0 -20
  50. package/src/elements/Comment.cjs +0 -15
  51. package/src/elements/Comment.mjs +0 -12
  52. package/src/elements/ParseResult.cjs +0 -53
  53. package/src/elements/ParseResult.mjs +0 -50
  54. package/src/elements/SourceMap.cjs +0 -39
  55. package/src/elements/SourceMap.mjs +0 -36
  56. package/src/predicates/helpers.cjs +0 -85
  57. package/src/predicates/helpers.mjs +0 -77
  58. package/src/predicates/index.cjs +0 -208
  59. package/src/predicates/index.mjs +0 -198
  60. package/src/refractor/index.cjs +0 -46
  61. package/src/refractor/index.mjs +0 -40
  62. package/src/refractor/registration.cjs +0 -34
  63. package/src/refractor/registration.mjs +0 -19
  64. package/src/transformers/serializers/value/ast/ephemeral-array.cjs +0 -21
  65. package/src/transformers/serializers/value/ast/ephemeral-array.mjs +0 -17
  66. package/src/transformers/serializers/value/ast/ephemeral-object.cjs +0 -20
  67. package/src/transformers/serializers/value/ast/ephemeral-object.mjs +0 -16
  68. package/src/transformers/serializers/value/index.cjs +0 -85
  69. package/src/transformers/serializers/value/index.mjs +0 -80
  70. package/src/transformers/serializers/value/visitor.cjs +0 -52
  71. package/src/transformers/serializers/value/visitor.mjs +0 -47
  72. package/src/traversal/filter.cjs +0 -18
  73. package/src/traversal/filter.mjs +0 -14
  74. package/src/traversal/find.cjs +0 -19
  75. package/src/traversal/find.mjs +0 -15
  76. package/src/traversal/findAtOffset.cjs +0 -65
  77. package/src/traversal/findAtOffset.mjs +0 -60
  78. package/src/traversal/index.cjs +0 -19
  79. package/src/traversal/index.mjs +0 -7
  80. package/src/traversal/parents.cjs +0 -38
  81. package/src/traversal/parents.mjs +0 -34
  82. package/src/traversal/reject.cjs +0 -15
  83. package/src/traversal/reject.mjs +0 -10
  84. package/src/traversal/some.cjs +0 -15
  85. package/src/traversal/some.mjs +0 -10
  86. package/src/traversal/traverse.cjs +0 -60
  87. package/src/traversal/traverse.mjs +0 -53
  88. package/src/traversal/visitor.cjs +0 -123
  89. package/src/traversal/visitor.mjs +0 -115
  90. package/src/util.cjs +0 -28
  91. package/src/util.mjs +0 -24
  92. package/types/minim.d.ts +0 -236
@@ -1,10 +0,0 @@
1
- import { complement } from 'ramda';
2
- import filter from "./filter.mjs";
3
- /**
4
- * Complement of filter.
5
- * @public
6
- */
7
- const reject = (predicate, element) => {
8
- return filter(complement(predicate), element);
9
- };
10
- export default reject;
@@ -1,15 +0,0 @@
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 _ramdaAdjunct = require("ramda-adjunct");
7
- var _find = _interopRequireDefault(require("./find.cjs"));
8
- /**
9
- * Tests whether at least one element passes the predicate.
10
- * @public
11
- */
12
- const some = (predicate, element) => {
13
- return (0, _ramdaAdjunct.isNotUndefined)((0, _find.default)(predicate, element));
14
- };
15
- var _default = exports.default = some;
@@ -1,10 +0,0 @@
1
- import { isNotUndefined } from 'ramda-adjunct';
2
- import find from "./find.mjs";
3
- /**
4
- * Tests whether at least one element passes the predicate.
5
- * @public
6
- */
7
- const some = (predicate, element) => {
8
- return isNotUndefined(find(predicate, element));
9
- };
10
- export default some;
@@ -1,60 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- exports.default = exports.CallbackVisitor = void 0;
5
- var _ramda = require("ramda");
6
- var _ramdaAdjunct = require("ramda-adjunct");
7
- var _visitor = require("./visitor.cjs");
8
- var _index = require("../predicates/index.cjs");
9
- /**
10
- * @public
11
- */
12
-
13
- /**
14
- * @public
15
- */
16
-
17
- class CallbackVisitor extends _visitor.PredicateVisitor {
18
- callback;
19
- constructor({
20
- callback = _ramdaAdjunct.noop,
21
- ...rest
22
- } = {}) {
23
- super({
24
- ...rest
25
- });
26
- this.callback = callback;
27
- }
28
- enter(element) {
29
- if (this.predicate(element)) {
30
- this.callback(element);
31
- return this.returnOnTrue;
32
- }
33
- return this.returnOnFalse;
34
- }
35
- }
36
-
37
- /**
38
- * Executes the callback on this element and all descendants.
39
- * @public
40
- */
41
- exports.CallbackVisitor = CallbackVisitor;
42
- const traverse = (options, element) => {
43
- let callback;
44
- let predicate;
45
- if ((0, _ramdaAdjunct.isFunction)(options)) {
46
- callback = options;
47
- predicate = _index.isElement;
48
- } else {
49
- callback = (0, _ramda.pathOr)(_ramdaAdjunct.noop, ['callback'], options);
50
- predicate = (0, _ramda.pathOr)(_index.isElement, ['predicate'], options);
51
- }
52
- const visitor = new CallbackVisitor({
53
- callback,
54
- predicate
55
- });
56
-
57
- // @ts-ignore
58
- (0, _visitor.visit)(element, visitor);
59
- };
60
- var _default = exports.default = traverse;
@@ -1,53 +0,0 @@
1
- import { pathOr } from 'ramda';
2
- import { isFunction, noop } from 'ramda-adjunct';
3
- import { visit, PredicateVisitor } from "./visitor.mjs";
4
- import { isElement } from "../predicates/index.mjs";
5
- /**
6
- * @public
7
- */
8
- /**
9
- * @public
10
- */
11
- export class CallbackVisitor extends PredicateVisitor {
12
- callback;
13
- constructor({
14
- callback = noop,
15
- ...rest
16
- } = {}) {
17
- super({
18
- ...rest
19
- });
20
- this.callback = callback;
21
- }
22
- enter(element) {
23
- if (this.predicate(element)) {
24
- this.callback(element);
25
- return this.returnOnTrue;
26
- }
27
- return this.returnOnFalse;
28
- }
29
- }
30
-
31
- /**
32
- * Executes the callback on this element and all descendants.
33
- * @public
34
- */
35
- const traverse = (options, element) => {
36
- let callback;
37
- let predicate;
38
- if (isFunction(options)) {
39
- callback = options;
40
- predicate = isElement;
41
- } else {
42
- callback = pathOr(noop, ['callback'], options);
43
- predicate = pathOr(isElement, ['predicate'], options);
44
- }
45
- const visitor = new CallbackVisitor({
46
- callback,
47
- predicate
48
- });
49
-
50
- // @ts-ignore
51
- visit(element, visitor);
52
- };
53
- export default traverse;
@@ -1,123 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- exports.visit = exports.keyMapDefault = exports.isNode = exports.getNodeType = exports.cloneNode = exports.PredicateVisitor = void 0;
5
- var _ramda = require("ramda");
6
- var _ramdaAdjunct = require("ramda-adjunct");
7
- var _apidomAst = require("@speclynx/apidom-ast");
8
- exports.BREAK = _apidomAst.BREAK;
9
- exports.mergeAllVisitors = _apidomAst.mergeAllVisitors;
10
- var _index = require("../predicates/index.cjs");
11
- var _index2 = require("../clone/index.cjs");
12
- /**
13
- * @public
14
- */
15
- const getNodeType = element => {
16
- /*
17
- * We're translating every possible higher element type to primitive minim type here.
18
- * We're using polymorphism to recognize any higher element type as ObjectElement or ArrayElement.
19
- * Using polymorphism allows us to assume any namespace.
20
- *
21
- * There is a problem with naming visitor methods described here: https://github.com/babel/babel/discussions/12874
22
- */
23
- return (0, _index.isObjectElement)(element) ? 'ObjectElement' : (0, _index.isArrayElement)(element) ? 'ArrayElement' : (0, _index.isMemberElement)(element) ? 'MemberElement' : (0, _index.isStringElement)(element) ? 'StringElement' : (0, _index.isBooleanElement)(element) ? 'BooleanElement' : (0, _index.isNumberElement)(element) ? 'NumberElement' : (0, _index.isNullElement)(element) ? 'NullElement' : (0, _index.isLinkElement)(element) ? 'LinkElement' : (0, _index.isRefElement)(element) ? 'RefElement' : undefined;
24
- };
25
-
26
- /**
27
- * @public
28
- */
29
- exports.getNodeType = getNodeType;
30
- const cloneNode = node => {
31
- if ((0, _index.isElement)(node)) {
32
- return (0, _index2.cloneShallow)(node);
33
- }
34
- return (0, _apidomAst.cloneNode)(node);
35
- };
36
-
37
- // isNode :: Node -> Boolean
38
- exports.cloneNode = cloneNode;
39
- const isNode = exports.isNode = (0, _ramda.pipe)(getNodeType, _ramdaAdjunct.isString);
40
-
41
- /**
42
- * @public
43
- */
44
- const keyMapDefault = exports.keyMapDefault = {
45
- ObjectElement: ['content'],
46
- ArrayElement: ['content'],
47
- MemberElement: ['key', 'value'],
48
- StringElement: [],
49
- BooleanElement: [],
50
- NumberElement: [],
51
- NullElement: [],
52
- RefElement: [],
53
- LinkElement: [],
54
- Annotation: [],
55
- Comment: [],
56
- ParseResultElement: ['content'],
57
- SourceMap: ['content']
58
- };
59
- class PredicateVisitor {
60
- result;
61
- predicate;
62
- returnOnTrue;
63
- returnOnFalse;
64
- constructor({
65
- predicate = _ramda.F,
66
- returnOnTrue,
67
- returnOnFalse
68
- } = {}) {
69
- this.result = [];
70
- this.predicate = predicate;
71
- this.returnOnTrue = returnOnTrue;
72
- this.returnOnFalse = returnOnFalse;
73
- }
74
- enter(element) {
75
- if (this.predicate(element)) {
76
- this.result.push(element);
77
- return this.returnOnTrue;
78
- }
79
- return this.returnOnFalse;
80
- }
81
- }
82
-
83
- /**
84
- * @public
85
- */
86
- exports.PredicateVisitor = PredicateVisitor;
87
- const visit = (root,
88
- // @ts-ignore
89
- visitor, {
90
- keyMap = keyMapDefault,
91
- ...rest
92
- } = {}) => {
93
- // @ts-ignore
94
- return (0, _apidomAst.visit)(root, visitor, {
95
- // @ts-ignore
96
- keyMap,
97
- // @ts-ignore
98
- nodeTypeGetter: getNodeType,
99
- nodePredicate: isNode,
100
- nodeCloneFn: cloneNode,
101
- ...rest
102
- });
103
- };
104
-
105
- // @ts-ignore
106
- exports.visit = visit;
107
- visit[Symbol.for('nodejs.util.promisify.custom')] = async (root,
108
- // @ts-ignore
109
- visitor, {
110
- keyMap = keyMapDefault,
111
- ...rest
112
- } = {}) => {
113
- // @ts-ignore
114
- return _apidomAst.visit[Symbol.for('nodejs.util.promisify.custom')](root, visitor, {
115
- // @ts-ignore
116
- keyMap,
117
- // @ts-ignore
118
- nodeTypeGetter: getNodeType,
119
- nodePredicate: isNode,
120
- nodeCloneFn: cloneNode,
121
- ...rest
122
- });
123
- };
@@ -1,115 +0,0 @@
1
- import { F as stubFalse, pipe } from 'ramda';
2
- import { isString } from 'ramda-adjunct';
3
- import { visit as astVisit, BREAK, mergeAllVisitors, cloneNode as cloneNodeDefault } from '@speclynx/apidom-ast';
4
- import { isElement, isMemberElement, isArrayElement, isStringElement, isBooleanElement, isLinkElement, isRefElement, isObjectElement, isNullElement, isNumberElement } from "../predicates/index.mjs";
5
- import { cloneShallow } from "../clone/index.mjs";
6
- export { BREAK, mergeAllVisitors };
7
-
8
- /**
9
- * @public
10
- */
11
- export const getNodeType = element => {
12
- /*
13
- * We're translating every possible higher element type to primitive minim type here.
14
- * We're using polymorphism to recognize any higher element type as ObjectElement or ArrayElement.
15
- * Using polymorphism allows us to assume any namespace.
16
- *
17
- * There is a problem with naming visitor methods described here: https://github.com/babel/babel/discussions/12874
18
- */
19
- return isObjectElement(element) ? 'ObjectElement' : isArrayElement(element) ? 'ArrayElement' : isMemberElement(element) ? 'MemberElement' : isStringElement(element) ? 'StringElement' : isBooleanElement(element) ? 'BooleanElement' : isNumberElement(element) ? 'NumberElement' : isNullElement(element) ? 'NullElement' : isLinkElement(element) ? 'LinkElement' : isRefElement(element) ? 'RefElement' : undefined;
20
- };
21
-
22
- /**
23
- * @public
24
- */
25
- export const cloneNode = node => {
26
- if (isElement(node)) {
27
- return cloneShallow(node);
28
- }
29
- return cloneNodeDefault(node);
30
- };
31
-
32
- // isNode :: Node -> Boolean
33
- export const isNode = pipe(getNodeType, isString);
34
-
35
- /**
36
- * @public
37
- */
38
- export const keyMapDefault = {
39
- ObjectElement: ['content'],
40
- ArrayElement: ['content'],
41
- MemberElement: ['key', 'value'],
42
- StringElement: [],
43
- BooleanElement: [],
44
- NumberElement: [],
45
- NullElement: [],
46
- RefElement: [],
47
- LinkElement: [],
48
- Annotation: [],
49
- Comment: [],
50
- ParseResultElement: ['content'],
51
- SourceMap: ['content']
52
- };
53
- export class PredicateVisitor {
54
- result;
55
- predicate;
56
- returnOnTrue;
57
- returnOnFalse;
58
- constructor({
59
- predicate = stubFalse,
60
- returnOnTrue,
61
- returnOnFalse
62
- } = {}) {
63
- this.result = [];
64
- this.predicate = predicate;
65
- this.returnOnTrue = returnOnTrue;
66
- this.returnOnFalse = returnOnFalse;
67
- }
68
- enter(element) {
69
- if (this.predicate(element)) {
70
- this.result.push(element);
71
- return this.returnOnTrue;
72
- }
73
- return this.returnOnFalse;
74
- }
75
- }
76
-
77
- /**
78
- * @public
79
- */
80
- export const visit = (root,
81
- // @ts-ignore
82
- visitor, {
83
- keyMap = keyMapDefault,
84
- ...rest
85
- } = {}) => {
86
- // @ts-ignore
87
- return astVisit(root, visitor, {
88
- // @ts-ignore
89
- keyMap,
90
- // @ts-ignore
91
- nodeTypeGetter: getNodeType,
92
- nodePredicate: isNode,
93
- nodeCloneFn: cloneNode,
94
- ...rest
95
- });
96
- };
97
-
98
- // @ts-ignore
99
- visit[Symbol.for('nodejs.util.promisify.custom')] = async (root,
100
- // @ts-ignore
101
- visitor, {
102
- keyMap = keyMapDefault,
103
- ...rest
104
- } = {}) => {
105
- // @ts-ignore
106
- return astVisit[Symbol.for('nodejs.util.promisify.custom')](root, visitor, {
107
- // @ts-ignore
108
- keyMap,
109
- // @ts-ignore
110
- nodeTypeGetter: getNodeType,
111
- nodePredicate: isNode,
112
- nodeCloneFn: cloneNode,
113
- ...rest
114
- });
115
- };
package/src/util.cjs DELETED
@@ -1,28 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- exports.dereference = void 0;
5
- var _ramda = require("ramda");
6
- var _ramdaAdjunct = require("ramda-adjunct");
7
- /**
8
- * This dereference algorithm is used exclusively for dereferencing specification objects.
9
- * It doesn't handle circular references of external references and works on objects only (not arrays).
10
- * @public
11
- */
12
-
13
- const dereference = (object, root) => {
14
- const rootObject = (0, _ramda.defaultTo)(object, root);
15
- return (0, _ramda.mapObjIndexed)(val => {
16
- if ((0, _ramdaAdjunct.isPlainObject)(val) && (0, _ramda.has)('$ref', val) && (0, _ramda.propSatisfies)(_ramdaAdjunct.isString, '$ref', val)) {
17
- const $ref = (0, _ramda.path)(['$ref'], val);
18
- // @ts-ignore
19
- const pointer = (0, _ramdaAdjunct.trimCharsStart)('#/', $ref);
20
- return (0, _ramda.path)(pointer.split('/'), rootObject);
21
- }
22
- if ((0, _ramdaAdjunct.isPlainObject)(val)) {
23
- return dereference(val, rootObject);
24
- }
25
- return val;
26
- }, object);
27
- };
28
- exports.dereference = dereference;
package/src/util.mjs DELETED
@@ -1,24 +0,0 @@
1
- import { defaultTo, has, mapObjIndexed, path, propSatisfies } from 'ramda';
2
- import { isPlainObject, isString, trimCharsStart } from 'ramda-adjunct';
3
-
4
- /**
5
- * This dereference algorithm is used exclusively for dereferencing specification objects.
6
- * It doesn't handle circular references of external references and works on objects only (not arrays).
7
- * @public
8
- */
9
-
10
- export const dereference = (object, root) => {
11
- const rootObject = defaultTo(object, root);
12
- return mapObjIndexed(val => {
13
- if (isPlainObject(val) && has('$ref', val) && propSatisfies(isString, '$ref', val)) {
14
- const $ref = path(['$ref'], val);
15
- // @ts-ignore
16
- const pointer = trimCharsStart('#/', $ref);
17
- return path(pointer.split('/'), rootObject);
18
- }
19
- if (isPlainObject(val)) {
20
- return dereference(val, rootObject);
21
- }
22
- return val;
23
- }, object);
24
- };
package/types/minim.d.ts DELETED
@@ -1,236 +0,0 @@
1
- /* eslint-disable spaced-comment, max-classes-per-file */
2
- /// <reference types="node" />
3
-
4
- declare module 'minim' {
5
- export type Meta = Record<string, any>;
6
- export type Attributes = Record<string, any>;
7
- export type Predicate = (element: Element) => boolean;
8
- type Callback = (element: Element) => void;
9
-
10
- export function refract(value: any): Element;
11
-
12
- export class Element {
13
- static refract(value: any, options?: Record<string, any>): Element;
14
-
15
- public element: string;
16
-
17
- public meta: ObjectElement;
18
-
19
- public attributes: ObjectElement;
20
-
21
- public classes: ArrayElement;
22
-
23
- public children: ArraySlice;
24
-
25
- public parent: Element;
26
-
27
- public content: Array<unknown>;
28
-
29
- constructor(content?: Array<unknown>, meta?: Meta, attributes?: Attributes);
30
-
31
- set id(element: Element);
32
-
33
- get id(): Element;
34
-
35
- equals(value: any): boolean;
36
-
37
- toValue(): any;
38
-
39
- getMetaProperty(name: string, value?: any): any;
40
-
41
- setMetaProperty(name: string, value: any): void;
42
-
43
- freeze(): void;
44
-
45
- clone(): Element;
46
-
47
- primitive(): string | undefined;
48
-
49
- [key: string]: unknown;
50
- }
51
-
52
- interface Type<T> extends Element {
53
- new (...args: any[]): T;
54
- }
55
-
56
- type ExtendingElement<T extends Element = Element> = Record<string, T>;
57
-
58
- export class Namespace {
59
- get elements(): Record<string, Element>;
60
-
61
- toRefract(element: Element): JSON;
62
-
63
- toElement(value: any): Element;
64
-
65
- fromRefract(doc: Record<string, any> | Array<any>): Element;
66
-
67
- register(name: string, elementClass: any): Namespace;
68
-
69
- detect(test: any, elementClass: any, givenPrepend: boolean): Namespace;
70
-
71
- use(plugin: NamespacePlugin): Namespace;
72
-
73
- getElementClass(element: string): typeof Element;
74
- }
75
-
76
- export interface NamespacePluginOptions {
77
- base: Namespace;
78
- }
79
-
80
- export interface NamespacePlugin {
81
- namespace(options: NamespacePluginOptions): Namespace;
82
- }
83
-
84
- export class StringElement extends Element {
85
- constructor(content?: string, meta?: Meta, attributes?: Attributes);
86
- }
87
-
88
- export class NumberElement extends Element {
89
- constructor(content?: number, meta?: Meta, attributes?: Attributes);
90
- }
91
-
92
- export class NullElement extends Element {}
93
-
94
- export class BooleanElement extends Element {
95
- constructor(content?: boolean, meta?: Meta, attributes?: Attributes);
96
- }
97
-
98
- export class ArrayElement extends Element {
99
- constructor(content?: unknown[], meta?: Meta, attributes?: Attributes);
100
-
101
- first: Element | undefined;
102
-
103
- second: Element | undefined;
104
-
105
- get(index: string | number): any;
106
-
107
- set(index: string | number, element: Element): void;
108
-
109
- find(predicate: Predicate): ArraySlice;
110
-
111
- findElements(condition: Predicate, givenOptions: any): Array<Element>;
112
-
113
- filter(predicate: Predicate): ArraySlice;
114
-
115
- contains(value: any): boolean;
116
-
117
- includes(value: any): boolean;
118
-
119
- push(value: any): ArrayElement;
120
-
121
- concat(value: ArrayElement): ArrayElement;
122
-
123
- ['fantasy-land/map'](transform: any): ArrayElement;
124
-
125
- forEach(callback: (item: Element, index: number) => void, thisArg?: unknown): void;
126
-
127
- [Symbol.iterator](): IterableIterator<any>;
128
-
129
- get length(): number;
130
-
131
- map(callback: (element: Element) => Element, thisArg?: unknown): Array<Element>;
132
- }
133
-
134
- export class ObjectElement extends ArrayElement {
135
- constructor(content?: Record<string, unknown>, meta?: Meta, attributes?: Attributes);
136
-
137
- remove(name: string): Element;
138
-
139
- set(key: string | StringElement | number, value: any): ObjectElement;
140
-
141
- hasKey(value: string): boolean;
142
-
143
- getKey(value: string): StringElement;
144
-
145
- getMember(key: string): MemberElement;
146
-
147
- // @ts-ignore
148
- forEach(
149
- callback: (value: Element, key: Element, item: Element) => void,
150
- thisArg?: unknown,
151
- ): void;
152
-
153
- map(
154
- callback: (value: Element, key: Element, member: MemberElement) => MemberElement,
155
- thisArg?: unknown,
156
- ): Array<MemberElement>;
157
-
158
- keys(): unknown[];
159
- }
160
-
161
- export class MemberElement extends Element {
162
- constructor(key?: unknown, value?: unknown, meta?: Meta, attributes?: Attributes);
163
-
164
- get key(): unknown;
165
-
166
- set key(key: unknown);
167
-
168
- get value(): unknown;
169
-
170
- set value(value: unknown);
171
- }
172
-
173
- export class LinkElement extends Element {
174
- constructor(content?: unknown, meta?: Meta, attributes?: Attributes);
175
-
176
- get relation(): string;
177
-
178
- set relation(relation: string);
179
-
180
- get href(): string;
181
-
182
- set href(key: string);
183
- }
184
-
185
- export class RefElement extends Element {
186
- constructor(content?: unknown, meta?: Meta, attributes?: Attributes);
187
-
188
- get path(): string;
189
-
190
- set path(path: string);
191
- }
192
-
193
- export class ArraySlice {
194
- constructor(elements?: Array<unknown>);
195
-
196
- get length(): number;
197
-
198
- get first(): Element;
199
-
200
- get isEmpty(): boolean;
201
-
202
- filter(predicate: Predicate, thisArg?: unknown): ArraySlice;
203
-
204
- reject(predicate: Predicate, thisArg?: unknown): ArraySlice;
205
-
206
- forEach(callback: Callback): void;
207
-
208
- reduce<T>(callback: (acc: T, cur: Element) => T, initialValue: T): ArraySlice;
209
-
210
- map(callback: (currentValue: any, index: number) => any, thisArg?: unknown): ArraySlice;
211
-
212
- hasKey(value: string): boolean;
213
-
214
- get<T extends Element>(index: number): T;
215
-
216
- [Symbol.iterator](): IterableIterator<any>;
217
-
218
- toValue(): any;
219
-
220
- clone(): ArraySlice;
221
- }
222
-
223
- export class ObjectSlice extends ArraySlice {
224
- clone(): ObjectSlice;
225
- }
226
-
227
- export class KeyValuePair {
228
- public key: Element | undefined;
229
-
230
- public value: Element | undefined;
231
-
232
- constructor(key?: Element, value?: Element);
233
-
234
- clone(): KeyValuePair;
235
- }
236
- }