@schukai/monster 3.4.2 → 3.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. package/example/i18n/providers/embed.mjs +5 -0
  2. package/package.json +1 -1
  3. package/source/constants.mjs +4 -9
  4. package/source/constraints/abstract.mjs +4 -6
  5. package/source/constraints/abstractoperator.mjs +6 -12
  6. package/source/constraints/andoperator.mjs +3 -6
  7. package/source/constraints/invalid.mjs +3 -6
  8. package/source/constraints/isarray.mjs +6 -9
  9. package/source/constraints/isobject.mjs +4 -7
  10. package/source/constraints/namespace.mjs +1 -3
  11. package/source/constraints/oroperator.mjs +26 -25
  12. package/source/constraints/valid.mjs +3 -6
  13. package/source/data/buildmap.mjs +20 -36
  14. package/source/data/buildtree.mjs +29 -29
  15. package/source/data/datasource/namespace.mjs +1 -1
  16. package/source/data/datasource/server/restapi/writeerror.mjs +6 -6
  17. package/source/data/datasource/server/restapi.mjs +51 -65
  18. package/source/data/datasource/server/webconnect.mjs +26 -35
  19. package/source/data/datasource/server.mjs +17 -21
  20. package/source/data/datasource/storage/localstorage.mjs +8 -11
  21. package/source/data/datasource/storage/sessionstorage.mjs +8 -10
  22. package/source/data/datasource/storage.mjs +18 -22
  23. package/source/data/datasource.mjs +27 -43
  24. package/source/data/diff.mjs +20 -32
  25. package/source/data/extend.mjs +20 -14
  26. package/source/data/namespace.mjs +1 -3
  27. package/source/data/pathfinder.mjs +40 -67
  28. package/source/data/pipe.mjs +6 -10
  29. package/source/data/transformer.mjs +141 -157
  30. package/source/dom/assembler.mjs +6 -9
  31. package/source/dom/attributes.mjs +36 -48
  32. package/source/dom/constants.mjs +55 -71
  33. package/source/dom/customcontrol.mjs +16 -21
  34. package/source/dom/customelement.mjs +140 -164
  35. package/source/dom/events.mjs +17 -24
  36. package/source/dom/focusmanager.mjs +30 -48
  37. package/source/dom/locale.mjs +41 -10
  38. package/source/dom/namespace.mjs +1 -1
  39. package/source/dom/ready.mjs +7 -10
  40. package/source/dom/resource/data.mjs +38 -46
  41. package/source/dom/resource/link/namespace.mjs +1 -3
  42. package/source/dom/resource/link/stylesheet.mjs +7 -11
  43. package/source/dom/resource/link.mjs +36 -17
  44. package/source/dom/resource/namespace.mjs +1 -1
  45. package/source/dom/resource/script.mjs +23 -13
  46. package/source/dom/resource.mjs +47 -60
  47. package/source/dom/resourcemanager.mjs +36 -43
  48. package/source/dom/template.mjs +17 -24
  49. package/source/dom/theme.mjs +8 -12
  50. package/source/dom/updater.mjs +150 -196
  51. package/source/dom/util.mjs +11 -12
  52. package/source/dom/worker/factory.mjs +21 -25
  53. package/source/dom/worker/namespace.mjs +1 -1
  54. package/source/i18n/formatter.mjs +20 -24
  55. package/source/i18n/locale.mjs +40 -42
  56. package/source/i18n/namespace.mjs +1 -1
  57. package/source/i18n/provider.mjs +4 -7
  58. package/source/i18n/providers/embed.mjs +115 -0
  59. package/source/i18n/providers/fetch.mjs +33 -38
  60. package/source/i18n/translations.mjs +16 -20
  61. package/source/logging/handler/console.mjs +6 -10
  62. package/source/logging/handler.mjs +15 -18
  63. package/source/logging/logentry.mjs +8 -9
  64. package/source/logging/logger.mjs +73 -55
  65. package/source/logging/namespace.mjs +1 -1
  66. package/source/math/namespace.mjs +1 -1
  67. package/source/math/random.mjs +13 -14
  68. package/source/monster.mjs +132 -100
  69. package/source/net/namespace.mjs +1 -3
  70. package/source/net/webconnect/message.mjs +6 -8
  71. package/source/net/webconnect/namespace.mjs +1 -3
  72. package/source/net/webconnect.mjs +28 -39
  73. package/source/text/formatter.mjs +44 -55
  74. package/source/types/base.mjs +16 -26
  75. package/source/types/basewithoptions.mjs +8 -14
  76. package/source/types/binary.mjs +4 -5
  77. package/source/types/dataurl.mjs +19 -27
  78. package/source/types/global.mjs +14 -26
  79. package/source/types/id.mjs +4 -6
  80. package/source/types/is.mjs +11 -16
  81. package/source/types/mediatype.mjs +29 -44
  82. package/source/types/namespace.mjs +0 -1
  83. package/source/types/node.mjs +16 -22
  84. package/source/types/nodelist.mjs +10 -14
  85. package/source/types/noderecursiveiterator.mjs +11 -14
  86. package/source/types/observablequeue.mjs +13 -16
  87. package/source/types/observer.mjs +16 -23
  88. package/source/types/observerlist.mjs +18 -21
  89. package/source/types/proxyobserver.mjs +24 -37
  90. package/source/types/queue.mjs +8 -13
  91. package/source/types/randomid.mjs +10 -10
  92. package/source/types/regex.mjs +3 -5
  93. package/source/types/stack.mjs +4 -8
  94. package/source/types/tokenlist.mjs +24 -31
  95. package/source/types/typeof.mjs +5 -7
  96. package/source/types/uniquequeue.mjs +8 -13
  97. package/source/types/uuid.mjs +18 -25
  98. package/source/types/validate.mjs +26 -27
  99. package/source/types/version.mjs +17 -25
  100. package/source/util/clone.mjs +23 -32
  101. package/source/util/comparator.mjs +7 -15
  102. package/source/util/deadmansswitch.mjs +16 -23
  103. package/source/util/freeze.mjs +5 -7
  104. package/source/util/namespace.mjs +1 -1
  105. package/source/util/processing.mjs +33 -39
  106. package/source/util/trimspaces.mjs +17 -24
  107. package/test/cases/dom/locale.mjs +15 -0
  108. package/test/cases/i18n/providers/embed.mjs +72 -0
  109. package/test/cases/monster.mjs +1 -1
@@ -5,16 +5,16 @@
5
5
  * License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
6
6
  */
7
7
 
8
- import {Base} from './base.mjs';
9
- import {validateString} from "./validate.mjs";
8
+ import { Base } from "./base.mjs";
9
+ import { validateString } from "./validate.mjs";
10
10
 
11
- export {ID}
11
+ export { ID };
12
12
 
13
13
  /**
14
14
  * @private
15
15
  * @type {Map<string, integer>}
16
16
  */
17
- let internalCounter = new Map;
17
+ let internalCounter = new Map();
18
18
 
19
19
  /**
20
20
  * With the id class, sequences of ids can be created. for this purpose, an internal counter is incremented for each prefix.
@@ -32,7 +32,6 @@ let internalCounter = new Map;
32
32
  * @summary Automatic generation of ids
33
33
  */
34
34
  class ID extends Base {
35
-
36
35
  /**
37
36
  * create new id with prefix
38
37
  *
@@ -63,5 +62,4 @@ class ID extends Base {
63
62
  toString() {
64
63
  return this.id;
65
64
  }
66
-
67
65
  }
@@ -5,7 +5,7 @@
5
5
  * License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
6
6
  */
7
7
 
8
- export {isIterable, isPrimitive, isSymbol, isBoolean, isString, isObject, isInstance, isArray, isFunction, isInteger}
8
+ export { isIterable, isPrimitive, isSymbol, isBoolean, isString, isObject, isInstance, isArray, isFunction, isInteger };
9
9
 
10
10
  /**
11
11
  * With this function you can check if a value is iterable.
@@ -25,10 +25,9 @@ export {isIterable, isPrimitive, isSymbol, isBoolean, isString, isObject, isInst
25
25
  function isIterable(value) {
26
26
  if (value === undefined) return false;
27
27
  if (value === null) return false;
28
- return typeof value?.[Symbol.iterator] === 'function';
28
+ return typeof value?.[Symbol.iterator] === "function";
29
29
  }
30
30
 
31
-
32
31
  /**
33
32
  * Checks whether the value passed is a primitive (string, number, boolean, NaN, undefined, null or symbol)
34
33
  *
@@ -51,7 +50,7 @@ function isPrimitive(value) {
51
50
 
52
51
  type = typeof value;
53
52
 
54
- if (type === 'string' || type === 'number' || type === 'boolean' || type === 'symbol') {
53
+ if (type === "string" || type === "number" || type === "boolean" || type === "symbol") {
55
54
  return true;
56
55
  }
57
56
 
@@ -72,7 +71,7 @@ function isPrimitive(value) {
72
71
  * @memberOf Monster.Types
73
72
  */
74
73
  function isSymbol(value) {
75
- return ('symbol' === typeof value) ? true : false;
74
+ return "symbol" === typeof value ? true : false;
76
75
  }
77
76
 
78
77
  /**
@@ -89,7 +88,6 @@ function isSymbol(value) {
89
88
  * @memberOf Monster.Types
90
89
  */
91
90
  function isBoolean(value) {
92
-
93
91
  if (value === true || value === false) {
94
92
  return true;
95
93
  }
@@ -111,7 +109,7 @@ function isBoolean(value) {
111
109
  * @memberOf Monster.Types
112
110
  */
113
111
  function isString(value) {
114
- if (value === undefined || typeof value !== 'string') {
112
+ if (value === undefined || typeof value !== "string") {
115
113
  return false;
116
114
  }
117
115
  return true;
@@ -131,11 +129,10 @@ function isString(value) {
131
129
  * @memberOf Monster.Types
132
130
  */
133
131
  function isObject(value) {
134
-
135
132
  if (isArray(value)) return false;
136
133
  if (isPrimitive(value)) return false;
137
134
 
138
- if (typeof value === 'object') {
135
+ if (typeof value === "object") {
139
136
  return true;
140
137
  }
141
138
 
@@ -146,7 +143,7 @@ function isObject(value) {
146
143
  * Checks whether the value passed is a object and instance of instance.
147
144
  *
148
145
  * This method is used in the library to have consistent names.
149
- *
146
+ *
150
147
  * @externalExample ../../example/types/is-7.mjs
151
148
  * @param {*} value
152
149
  * @param {*} instance
@@ -159,8 +156,8 @@ function isObject(value) {
159
156
  function isInstance(value, instance) {
160
157
  if (!isObject(value)) return false;
161
158
  if (!isFunction(instance)) return false;
162
- if (!instance.hasOwnProperty('prototype')) return false;
163
- return (value instanceof instance) ? true : false;
159
+ if (!instance.hasOwnProperty("prototype")) return false;
160
+ return value instanceof instance ? true : false;
164
161
  }
165
162
 
166
163
  /**
@@ -185,7 +182,7 @@ function isArray(value) {
185
182
  * Checks whether the value passed is a function
186
183
  *
187
184
  * This method is used in the library to have consistent names.
188
- *
185
+ *
189
186
  * @externalExample ../../example/types/is-9.mjs
190
187
  * @param {*} value
191
188
  * @returns {boolean}
@@ -198,12 +195,11 @@ function isFunction(value) {
198
195
  if (isArray(value)) return false;
199
196
  if (isPrimitive(value)) return false;
200
197
 
201
- if (typeof value === 'function') {
198
+ if (typeof value === "function") {
202
199
  return true;
203
200
  }
204
201
 
205
202
  return false;
206
-
207
203
  }
208
204
 
209
205
  /**
@@ -222,4 +218,3 @@ function isFunction(value) {
222
218
  function isInteger(value) {
223
219
  return Number.isInteger(value);
224
220
  }
225
-
@@ -5,17 +5,17 @@
5
5
  * License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
6
6
  */
7
7
 
8
- import {Base} from "./base.mjs";
9
- import {isString} from "./is.mjs";
10
- import {validateArray, validateString} from "./validate.mjs";
11
- import {instanceSymbol} from '../constants.mjs';
12
- export {MediaType, parseMediaType}
8
+ import { Base } from "./base.mjs";
9
+ import { isString } from "./is.mjs";
10
+ import { validateArray, validateString } from "./validate.mjs";
11
+ import { instanceSymbol } from "../constants.mjs";
12
+ export { MediaType, parseMediaType };
13
13
 
14
14
  /**
15
15
  * @private
16
16
  * @type {symbol}
17
17
  */
18
- const internal = Symbol('internal');
18
+ const internal = Symbol("internal");
19
19
 
20
20
  /**
21
21
  * @typedef {Object} Parameter
@@ -24,7 +24,6 @@ const internal = Symbol('internal');
24
24
  * @memberOf Monster.Types
25
25
  */
26
26
 
27
-
28
27
  /**
29
28
  * You can create an object via the monster namespace `new Monster.Types.MediaType()`.
30
29
  *
@@ -34,7 +33,6 @@ const internal = Symbol('internal');
34
33
  * @memberOf Monster.Types
35
34
  */
36
35
  class MediaType extends Base {
37
-
38
36
  /**
39
37
  *
40
38
  * @param {String} type
@@ -47,14 +45,12 @@ class MediaType extends Base {
47
45
  this[internal] = {
48
46
  type: validateString(type).toLowerCase(),
49
47
  subtype: validateString(subtype).toLowerCase(),
50
- parameter: []
51
- }
48
+ parameter: [],
49
+ };
52
50
 
53
51
  if (parameter !== undefined) {
54
- this[internal]['parameter'] = validateArray(parameter);
52
+ this[internal]["parameter"] = validateArray(parameter);
55
53
  }
56
-
57
-
58
54
  }
59
55
 
60
56
  /**
@@ -66,7 +62,6 @@ class MediaType extends Base {
66
62
  return Symbol.for("@schukai/monster/types/media-type");
67
63
  }
68
64
 
69
-
70
65
  /**
71
66
  * @return {String}
72
67
  */
@@ -94,11 +89,9 @@ class MediaType extends Base {
94
89
  * @return {Map}
95
90
  */
96
91
  get parameter() {
92
+ const result = new Map();
97
93
 
98
- const result = new Map
99
-
100
- this[internal]['parameter'].forEach(p => {
101
-
94
+ this[internal]["parameter"].forEach((p) => {
102
95
  let value = p.value;
103
96
 
104
97
  // internally special values are partly stored with quotes, this function removes them.
@@ -107,8 +100,7 @@ class MediaType extends Base {
107
100
  }
108
101
 
109
102
  result.set(p.key, value);
110
- })
111
-
103
+ });
112
104
 
113
105
  return result;
114
106
  }
@@ -118,15 +110,15 @@ class MediaType extends Base {
118
110
  * @return {string}
119
111
  */
120
112
  toString() {
121
-
122
113
  let parameter = [];
123
114
  for (let a of this[internal].parameter) {
124
- parameter.push(a.key + '=' + a.value);
115
+ parameter.push(`${a.key}=${a.value}`);
125
116
  }
126
117
 
127
- return this[internal].type + '/' + this[internal].subtype + (parameter.length > 0 ? ';' + parameter.join(';') : '');
118
+ return `${this[internal].type}/${this[internal].subtype}${
119
+ parameter.length > 0 ? `;${parameter.join(";")}` : ""
120
+ }`;
128
121
  }
129
-
130
122
  }
131
123
 
132
124
  /**
@@ -166,26 +158,24 @@ class MediaType extends Base {
166
158
  * @memberOf Monster.Types
167
159
  */
168
160
  function parseMediaType(mediatype) {
169
-
170
- const regex = /(?<type>[A-Za-z]+|\*)\/(?<subtype>([a-zA-Z0-9.\+_\-]+)|\*|)(?<parameter>\s*;\s*([a-zA-Z0-9]+)\s*(=\s*("?[A-Za-z0-9_\-]+"?))?)*/g;
161
+ const regex =
162
+ /(?<type>[A-Za-z]+|\*)\/(?<subtype>([a-zA-Z0-9.\+_\-]+)|\*|)(?<parameter>\s*;\s*([a-zA-Z0-9]+)\s*(=\s*("?[A-Za-z0-9_\-]+"?))?)*/g;
171
163
  const result = regex.exec(validateString(mediatype));
172
164
 
173
- const groups = result?.['groups'];
165
+ const groups = result?.["groups"];
174
166
  if (groups === undefined) {
175
- throw new TypeError('the mimetype can not be parsed')
167
+ throw new TypeError("the mimetype can not be parsed");
176
168
  }
177
169
 
178
- const type = groups?.['type'];
179
- const subtype = groups?.['subtype'];
180
- const parameter = groups?.['parameter'];
170
+ const type = groups?.["type"];
171
+ const subtype = groups?.["subtype"];
172
+ const parameter = groups?.["parameter"];
181
173
 
182
174
  if (subtype === "" || type === "") {
183
- throw new TypeError('blank value is not allowed');
175
+ throw new TypeError("blank value is not allowed");
184
176
  }
185
177
 
186
178
  return new MediaType(type, subtype, parseParameter(parameter));
187
-
188
-
189
179
  }
190
180
 
191
181
  /**
@@ -197,21 +187,19 @@ function parseMediaType(mediatype) {
197
187
  * @memberOf Monster.Types
198
188
  */
199
189
  function parseParameter(parameter) {
200
-
201
190
  if (!isString(parameter)) {
202
191
  return undefined;
203
192
  }
204
193
 
205
194
  let result = [];
206
195
 
207
- parameter.split(';').forEach((entry) => {
208
-
196
+ parameter.split(";").forEach((entry) => {
209
197
  entry = entry.trim();
210
198
  if (entry === "") {
211
199
  return;
212
200
  }
213
201
 
214
- const kv = entry.split('=')
202
+ const kv = entry.split("=");
215
203
 
216
204
  let key = validateString(kv?.[0]).trim();
217
205
  let value = validateString(kv?.[1]).trim();
@@ -219,12 +207,9 @@ function parseParameter(parameter) {
219
207
  // if values are quoted, they remain so internally
220
208
  result.push({
221
209
  key: key,
222
- value: value
223
- })
224
-
225
-
226
- })
210
+ value: value,
211
+ });
212
+ });
227
213
 
228
214
  return result;
229
-
230
215
  }
@@ -11,4 +11,3 @@
11
11
  * @author schukai GmbH
12
12
  */
13
13
  const ns = {};
14
-
@@ -5,26 +5,25 @@
5
5
  * License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
6
6
  */
7
7
 
8
- import {Base} from './base.mjs';
9
- import {isPrimitive} from "./is.mjs";
10
- import {NodeList} from './nodelist.mjs';
11
- import {validateInstance} from './validate.mjs';
12
- import {instanceSymbol} from '../constants.mjs';
8
+ import { Base } from "./base.mjs";
9
+ import { isPrimitive } from "./is.mjs";
10
+ import { NodeList } from "./nodelist.mjs";
11
+ import { validateInstance } from "./validate.mjs";
12
+ import { instanceSymbol } from "../constants.mjs";
13
13
 
14
- export {Node}
14
+ export { Node };
15
15
 
16
16
  /**
17
17
  * @private
18
18
  * @type {symbol}
19
19
  */
20
- const internalValueSymbol = Symbol('internalData');
20
+ const internalValueSymbol = Symbol("internalData");
21
21
 
22
22
  /**
23
23
  * @private
24
24
  * @type {symbol}
25
25
  */
26
- const treeStructureSymbol = Symbol('treeStructure');
27
-
26
+ const treeStructureSymbol = Symbol("treeStructure");
28
27
 
29
28
  /**
30
29
  * You can create the instance via the monster namespace `new Monster.Types.Node()`.
@@ -37,7 +36,6 @@ const treeStructureSymbol = Symbol('treeStructure');
37
36
  * @see https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Iteration_protocols
38
37
  */
39
38
  class Node extends Base {
40
-
41
39
  /**
42
40
  * @param {*} [value]
43
41
  */
@@ -47,10 +45,9 @@ class Node extends Base {
47
45
 
48
46
  this[treeStructureSymbol] = {
49
47
  parent: null,
50
- childNodes: new NodeList,
51
- level: 0
52
- }
53
-
48
+ childNodes: new NodeList(),
49
+ level: 0,
50
+ };
54
51
  }
55
52
 
56
53
  /**
@@ -62,7 +59,6 @@ class Node extends Base {
62
59
  return Symbol.for("@schukai/monster/types/node");
63
60
  }
64
61
 
65
-
66
62
  /**
67
63
  * @property {*}
68
64
  */
@@ -155,11 +151,10 @@ class Node extends Base {
155
151
  * @return {string}
156
152
  */
157
153
  toString() {
158
-
159
154
  let parts = [];
160
155
  if (this[internalValueSymbol]) {
161
156
  let label = this[internalValueSymbol];
162
- if (!isPrimitive(label)) label = JSON.stringify(this[internalValueSymbol])
157
+ if (!isPrimitive(label)) label = JSON.stringify(this[internalValueSymbol]);
163
158
 
164
159
  parts.push(label);
165
160
  }
@@ -168,18 +163,17 @@ class Node extends Base {
168
163
  return parts.join("\n");
169
164
  }
170
165
 
171
- let count = this.childNodes.length,
172
- counter = 0;
166
+ let count = this.childNodes.length;
167
+ let counter = 0;
173
168
 
174
169
  for (const node of this.childNodes) {
175
170
  counter++;
176
- const prefix = (count === counter ? '' : '').padStart(2 * node.level, ' |');
171
+ const prefix = (count === counter ? "" : "").padStart(2 * node.level, " |");
177
172
  parts.push(prefix + node.toString());
178
173
  }
179
174
 
180
175
  return parts.join("\n");
181
176
  }
182
-
183
177
  }
184
178
 
185
179
  /**
@@ -192,7 +186,7 @@ function setChildLevelAndParent(node, operand) {
192
186
  const self = this;
193
187
 
194
188
  if (node !== this) {
195
- node[treeStructureSymbol].parent = this
189
+ node[treeStructureSymbol].parent = this;
196
190
  }
197
191
 
198
192
  node[treeStructureSymbol].childNodes.forEach(function (child) {
@@ -5,11 +5,11 @@
5
5
  * License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
6
6
  */
7
7
 
8
- import {isArray, isInstance} from "./is.mjs";
9
- import {Node} from "./node.mjs";
10
- import {validateInstance} from "./validate.mjs";
11
- import {instanceSymbol} from '../constants.mjs';
12
- export {NodeList}
8
+ import { isArray, isInstance } from "./is.mjs";
9
+ import { Node } from "./node.mjs";
10
+ import { validateInstance } from "./validate.mjs";
11
+ import { instanceSymbol } from "../constants.mjs";
12
+ export { NodeList };
13
13
 
14
14
  /**
15
15
  * You can create the instance via the monster namespace `new Monster.Types.NodeList()`.
@@ -21,7 +21,6 @@ export {NodeList}
21
21
  * @summary A NodeList class
22
22
  */
23
23
  class NodeList extends Set {
24
-
25
24
  /**
26
25
  * @throws {Error} invalid value type
27
26
  * @param {NodeList|Node|Array<Node>}values
@@ -29,18 +28,18 @@ class NodeList extends Set {
29
28
  constructor(values) {
30
29
  super();
31
30
 
32
- const self = this
31
+ const self = this;
33
32
 
34
33
  if (values === undefined) return;
35
34
 
36
35
  if (isArray(values)) {
37
- values.forEach(value => self.add(value));
36
+ values.forEach((value) => self.add(value));
38
37
  } else if (isInstance(values, NodeList)) {
39
- values.forEach(value => self.add(value));
38
+ values.forEach((value) => self.add(value));
40
39
  } else if (isInstance(values, Node)) {
41
40
  self.add(values);
42
41
  } else {
43
- throw new Error('invalid value type');
42
+ throw new Error("invalid value type");
44
43
  }
45
44
  }
46
45
 
@@ -52,7 +51,6 @@ class NodeList extends Set {
52
51
  static get [instanceSymbol]() {
53
52
  return Symbol.for("@schukai/monster/types/node-list");
54
53
  }
55
-
56
54
 
57
55
  /**
58
56
  *
@@ -79,7 +77,6 @@ class NodeList extends Set {
79
77
  */
80
78
  has(node) {
81
79
  return super.has(validateInstance(node, Node));
82
- return false;
83
80
  }
84
81
 
85
82
  /**
@@ -111,7 +108,7 @@ class NodeList extends Set {
111
108
  let parts = [];
112
109
 
113
110
  for (const node of this.toArray()) {
114
- parts.push(node.toString())
111
+ parts.push(node.toString());
115
112
  }
116
113
 
117
114
  return parts.join("\n");
@@ -121,4 +118,3 @@ class NodeList extends Set {
121
118
  return super.size;
122
119
  }
123
120
  }
124
-
@@ -5,21 +5,21 @@
5
5
  * License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
6
6
  */
7
7
 
8
- import {internalSymbol} from "../constants.mjs";
8
+ import { internalSymbol } from "../constants.mjs";
9
9
 
10
- import {Base} from './base.mjs';
11
- import {isInstance} from "./is.mjs";
12
- import {Node} from "./node.mjs";
13
- import {NodeList} from "./nodelist.mjs";
14
- import {validateInstance} from "./validate.mjs";
10
+ import { Base } from "./base.mjs";
11
+ import { isInstance } from "./is.mjs";
12
+ import { Node } from "./node.mjs";
13
+ import { NodeList } from "./nodelist.mjs";
14
+ import { validateInstance } from "./validate.mjs";
15
15
 
16
- export {NodeRecursiveIterator}
16
+ export { NodeRecursiveIterator };
17
17
 
18
18
  /**
19
19
  * @private
20
20
  * @type {symbol}
21
21
  */
22
- const isNodeListSymbol = Symbol('isNodeList');
22
+ const isNodeListSymbol = Symbol("isNodeList");
23
23
 
24
24
  /**
25
25
  * You can create the instance via the monster namespace `new Monster.Types.NodeRecursiveIterator()`.
@@ -31,8 +31,7 @@ const isNodeListSymbol = Symbol('isNodeList');
31
31
  * @memberOf Monster.Types
32
32
  * @summary An iterator to run recursively through a tree of nodes
33
33
  */
34
- class NodeRecursiveIterator extends Base {
35
-
34
+ class NodeRecursiveIterator extends Base {
36
35
  /**
37
36
  * @param {Node} [data]
38
37
  */
@@ -57,7 +56,6 @@ const isNodeListSymbol = Symbol('isNodeList');
57
56
  * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/yield
58
57
  */
59
58
  [Symbol.iterator] = function* () {
60
-
61
59
  /**
62
60
  * The end of the generator function is reached. In this case, execution of the generator
63
61
  * ends and an IteratorResult is returned to the caller in which the value is undefined and done is true.
@@ -66,7 +64,7 @@ const isNodeListSymbol = Symbol('isNodeList');
66
64
  if (this[internalSymbol] === undefined) {
67
65
  return;
68
66
  }
69
-
67
+
70
68
  // iterator is a nodelist and the main node is only a placeholder
71
69
  if (this[isNodeListSymbol] !== true) {
72
70
  yield this[internalSymbol];
@@ -81,7 +79,7 @@ const isNodeListSymbol = Symbol('isNodeList');
81
79
  }
82
80
 
83
81
  return;
84
- }
82
+ };
85
83
 
86
84
  /**
87
85
  * @param {function} callback
@@ -93,5 +91,4 @@ const isNodeListSymbol = Symbol('isNodeList');
93
91
  }
94
92
  return this;
95
93
  }
96
-
97
94
  }
@@ -5,17 +5,17 @@
5
5
  * License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
6
6
  */
7
7
 
8
- import {Queue} from './queue.mjs';
9
- import {instanceSymbol, internalSymbol} from '../constants.mjs';
10
- import {ObserverList} from "./observerlist.mjs";
8
+ import { Queue } from "./queue.mjs";
9
+ import { instanceSymbol, internalSymbol } from "../constants.mjs";
10
+ import { ObserverList } from "./observerlist.mjs";
11
11
 
12
- export {ObservableQueue};
12
+ export { ObservableQueue };
13
13
 
14
14
  /**
15
15
  * An observable queue is a list of items that are processed one after another (first in, first out).
16
- *
16
+ *
17
17
  * `Queue.add()` and `Queue.clear()` notify all observers.
18
- *
18
+ *
19
19
  * @externalExample ../../example/types/queue.mjs
20
20
  * @license AGPLv3
21
21
  * @since 3.3.0
@@ -24,14 +24,13 @@ export {ObservableQueue};
24
24
  * @summary An observable Queue (Fifo)
25
25
  */
26
26
  class ObservableQueue extends Queue {
27
-
28
27
  /**
29
28
  *
30
29
  */
31
30
  constructor() {
32
31
  super();
33
- this[internalSymbol]= {
34
- observers: new ObserverList()
32
+ this[internalSymbol] = {
33
+ observers: new ObserverList(),
35
34
  };
36
35
  }
37
36
 
@@ -43,7 +42,7 @@ class ObservableQueue extends Queue {
43
42
  static get [instanceSymbol]() {
44
43
  return Symbol.for("@schukai/monster/types/observablequeue");
45
44
  }
46
-
45
+
47
46
  /**
48
47
  * Add a new element to the end of the queue.
49
48
  *
@@ -74,7 +73,7 @@ class ObservableQueue extends Queue {
74
73
  * @returns {ProxyObserver}
75
74
  */
76
75
  attachObserver(observer) {
77
- this[internalSymbol].observers.attach(observer)
76
+ this[internalSymbol].observers.attach(observer);
78
77
  return this;
79
78
  }
80
79
 
@@ -85,7 +84,7 @@ class ObservableQueue extends Queue {
85
84
  * @returns {ProxyObserver}
86
85
  */
87
86
  detachObserver(observer) {
88
- this[internalSymbol].observers.detach(observer)
87
+ this[internalSymbol].observers.detach(observer);
89
88
  return this;
90
89
  }
91
90
 
@@ -103,8 +102,6 @@ class ObservableQueue extends Queue {
103
102
  * @returns {boolean}
104
103
  */
105
104
  containsObserver(observer) {
106
- return this[internalSymbol].observers.contains(observer)
107
- }
108
-
109
-
105
+ return this[internalSymbol].observers.contains(observer);
106
+ }
110
107
  }