@schukai/monster 3.4.2 → 3.7.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 (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,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,instanceSymbol} from "../../constants.mjs";
9
- import {validateString} from "../../types/validate.mjs";
10
- import {Datasource} from "../datasource.mjs";
8
+ import { internalSymbol, instanceSymbol } from "../../constants.mjs";
9
+ import { validateString } from "../../types/validate.mjs";
10
+ import { Datasource } from "../datasource.mjs";
11
11
 
12
- export {Storage, storageObjectSymbol}
12
+ export { Storage, storageObjectSymbol };
13
13
 
14
14
  /**
15
15
  * @private
16
16
  * @type {symbol}
17
17
  */
18
- const storageObjectSymbol = Symbol.for ('@schukai/monster/data/datasource/storage/@@storageObject')
18
+ const storageObjectSymbol = Symbol.for("@schukai/monster/data/datasource/storage/@@storageObject");
19
19
 
20
20
  /**
21
21
  * The class represents a record.
22
- *
22
+ *
23
23
  * @license AGPLv3
24
24
  * @since 1.22.0
25
25
  * @copyright schukai GmbH
@@ -27,7 +27,6 @@ const storageObjectSymbol = Symbol.for ('@schukai/monster/data/datasource/stora
27
27
  * @summary The Storage class encapsulates the access to data objects over WebStorageAPI.
28
28
  */
29
29
  class Storage extends Datasource {
30
-
31
30
  /**
32
31
  *
33
32
  * @param {string} key LocalStorage Key
@@ -35,7 +34,7 @@ class Storage extends Datasource {
35
34
  */
36
35
  constructor(key) {
37
36
  super();
38
- this.setOption('key', validateString(key));
37
+ this.setOption("key", validateString(key));
39
38
  }
40
39
 
41
40
  /**
@@ -45,7 +44,7 @@ class Storage extends Datasource {
45
44
  */
46
45
  static get [instanceSymbol]() {
47
46
  return Symbol.for("@schukai/monster/data/datasource/storage");
48
- }
47
+ }
49
48
 
50
49
  /**
51
50
  * @property {string} key=undefined LocalStorage Key
@@ -62,7 +61,7 @@ class Storage extends Datasource {
62
61
  * @private
63
62
  */
64
63
  [storageObjectSymbol]() {
65
- throw new Error("this method must be implemented by derived classes")
64
+ throw new Error("this method must be implemented by derived classes");
66
65
  }
67
66
 
68
67
  /**
@@ -77,11 +76,10 @@ class Storage extends Datasource {
77
76
  const storage = self[storageObjectSymbol]();
78
77
 
79
78
  return new Promise(function (resolve) {
80
- const data = JSON.parse(storage.getItem(self.getOption('key')));
81
- self.set(data??{});
79
+ const data = JSON.parse(storage.getItem(self.getOption("key")));
80
+ self.set(data ?? {});
82
81
  resolve();
83
- })
84
-
82
+ });
85
83
  }
86
84
 
87
85
  /**
@@ -94,24 +92,22 @@ class Storage extends Datasource {
94
92
  const storage = self[storageObjectSymbol]();
95
93
 
96
94
  return new Promise(function (resolve) {
97
-
98
95
  const data = self.get();
99
96
  if (data === undefined) {
100
- storage.removeItem(self.getOption('key'));
97
+ storage.removeItem(self.getOption("key"));
101
98
  } else {
102
- storage.setItem(self.getOption('key'), JSON.stringify(data));
99
+ storage.setItem(self.getOption("key"), JSON.stringify(data));
103
100
  }
104
101
 
105
102
  resolve();
106
- })
103
+ });
107
104
  }
108
105
 
109
106
  /**
110
107
  * @return {Storage}
111
108
  */
112
109
  getClone() {
113
- const self=this;
114
- return new Storage(self[internalSymbol].getRealSubject()['options'].key);
115
- }
116
-
110
+ const self = this;
111
+ return new Storage(self[internalSymbol].getRealSubject()["options"].key);
112
+ }
117
113
  }
@@ -5,18 +5,17 @@
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";
9
- import {instanceSymbol} from '../constants.mjs';
10
- import {Base} from "../types/base.mjs";
11
- import {parseDataURL} from "../types/dataurl.mjs";
12
- import {isString} from "../types/is.mjs";
13
- import {ProxyObserver} from "../types/proxyobserver.mjs";
14
- import {validateObject} from "../types/validate.mjs";
15
- import {extend} from "./extend.mjs";
16
- import {Pathfinder} from "./pathfinder.mjs";
17
-
18
- export {Datasource}
19
-
8
+ import { internalSymbol } from "../constants.mjs";
9
+ import { instanceSymbol } from "../constants.mjs";
10
+ import { Base } from "../types/base.mjs";
11
+ import { parseDataURL } from "../types/dataurl.mjs";
12
+ import { isString } from "../types/is.mjs";
13
+ import { ProxyObserver } from "../types/proxyobserver.mjs";
14
+ import { validateObject } from "../types/validate.mjs";
15
+ import { extend } from "./extend.mjs";
16
+ import { Pathfinder } from "./pathfinder.mjs";
17
+
18
+ export { Datasource };
20
19
 
21
20
  /**
22
21
  * This callback can be passed to a datasource and is used to adapt data structures.
@@ -28,7 +27,6 @@ export {Datasource}
28
27
  * @see Monster.Data.Datasource
29
28
  */
30
29
 
31
-
32
30
  /**
33
31
  * @private
34
32
  * @type {symbol}
@@ -36,7 +34,7 @@ export {Datasource}
36
34
  * @license AGPLv3
37
35
  * @since 1.24.0
38
36
  */
39
- const internalDataSymbol = Symbol.for('@schukai/monster/data/datasource/@@data');
37
+ const internalDataSymbol = Symbol.for("@schukai/monster/data/datasource/@@data");
40
38
 
41
39
  /**
42
40
  * The datasource class is the basis for dealing with different data sources.
@@ -49,22 +47,17 @@ const internalDataSymbol = Symbol.for('@schukai/monster/data/datasource/@@data')
49
47
  * @summary The datasource class encapsulates the access to data objects.
50
48
  */
51
49
  class Datasource extends Base {
52
-
53
50
  /**
54
51
  * creates a new datasource
55
- *
52
+ *
56
53
  */
57
54
  constructor() {
58
55
  super();
59
56
  this[internalSymbol] = new ProxyObserver({
60
- 'options': extend({}, this.defaults)
57
+ options: extend({}, this.defaults),
61
58
  });
62
-
63
- this[internalDataSymbol] = new ProxyObserver({
64
59
 
65
- });
66
-
67
-
60
+ this[internalDataSymbol] = new ProxyObserver({});
68
61
  }
69
62
 
70
63
  /**
@@ -74,7 +67,7 @@ class Datasource extends Base {
74
67
  * @returns {Datasource}
75
68
  */
76
69
  attachObserver(observer) {
77
- this[internalDataSymbol].attachObserver(observer)
70
+ this[internalDataSymbol].attachObserver(observer);
78
71
  return this;
79
72
  }
80
73
 
@@ -85,7 +78,7 @@ class Datasource extends Base {
85
78
  * @returns {Datasource}
86
79
  */
87
80
  detachObserver(observer) {
88
- this[internalDataSymbol].detachObserver(observer)
81
+ this[internalDataSymbol].detachObserver(observer);
89
82
  return this;
90
83
  }
91
84
 
@@ -120,7 +113,7 @@ class Datasource extends Base {
120
113
  * @return {Datasource}
121
114
  */
122
115
  setOption(path, value) {
123
- new Pathfinder(this[internalSymbol].getSubject()['options']).setVia(path, value);
116
+ new Pathfinder(this[internalSymbol].getSubject()["options"]).setVia(path, value);
124
117
  return this;
125
118
  }
126
119
 
@@ -130,13 +123,12 @@ class Datasource extends Base {
130
123
  * @throws {Error} the options does not contain a valid json definition
131
124
  */
132
125
  setOptions(options) {
133
-
134
126
  if (isString(options)) {
135
- options = parseOptionsJSON(options)
127
+ options = parseOptionsJSON(options);
136
128
  }
137
129
 
138
130
  const self = this;
139
- extend(self[internalSymbol].getSubject()['options'], self.defaults, options);
131
+ extend(self[internalSymbol].getSubject()["options"], self.defaults, options);
140
132
 
141
133
  return self;
142
134
  }
@@ -152,10 +144,8 @@ class Datasource extends Base {
152
144
  let value;
153
145
 
154
146
  try {
155
- value = new Pathfinder(this[internalSymbol].getRealSubject()['options']).getVia(path);
156
- } catch (e) {
157
-
158
- }
147
+ value = new Pathfinder(this[internalSymbol].getRealSubject()["options"]).getVia(path);
148
+ } catch (e) {}
159
149
 
160
150
  if (value === undefined) return defaultValue;
161
151
  return value;
@@ -166,7 +156,7 @@ class Datasource extends Base {
166
156
  * @return {Promise}
167
157
  */
168
158
  read() {
169
- throw new Error("this method must be implemented by derived classes")
159
+ throw new Error("this method must be implemented by derived classes");
170
160
  }
171
161
 
172
162
  /**
@@ -174,13 +164,12 @@ class Datasource extends Base {
174
164
  * @return {Promise}
175
165
  */
176
166
  write() {
177
- throw new Error("this method must be implemented by derived classes")
167
+ throw new Error("this method must be implemented by derived classes");
178
168
  }
179
169
 
180
-
181
170
  /**
182
171
  * Returns real object
183
- *
172
+ *
184
173
  * @return {Object|Array}
185
174
  */
186
175
  get() {
@@ -206,7 +195,6 @@ class Datasource extends Base {
206
195
  static get [instanceSymbol]() {
207
196
  return Symbol.for("@schukai/monster/data/datasource");
208
197
  }
209
-
210
198
  }
211
199
 
212
200
  /**
@@ -217,22 +205,18 @@ class Datasource extends Base {
217
205
  */
218
206
  function parseOptionsJSON(data) {
219
207
  if (isString(data)) {
220
-
221
208
  // the configuration can be specified as a data url.
222
209
  try {
223
210
  let dataUrl = parseDataURL(data);
224
211
  data = dataUrl.content;
225
- } catch (e) {
226
-
227
- }
228
-
212
+ } catch (e) {}
229
213
 
230
214
  try {
231
215
  let obj = JSON.parse(data);
232
216
  validateObject(obj);
233
217
  return obj;
234
218
  } catch (e) {
235
- throw new Error('the options does not contain a valid json definition (actual: ' + data + ').');
219
+ throw new Error(`the options does not contain a valid json definition (actual: ${data}).`);
236
220
  }
237
221
  }
238
222
 
@@ -5,10 +5,10 @@
5
5
  * License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
6
6
  */
7
7
 
8
- import {isArray, isObject} from "../types/is.mjs";
9
- import {typeOf} from "../types/typeof.mjs";
8
+ import { isArray, isObject } from "../types/is.mjs";
9
+ import { typeOf } from "../types/typeof.mjs";
10
10
 
11
- export {diff}
11
+ export { diff };
12
12
 
13
13
  /**
14
14
  * With the diff function you can perform the change of one object to another. The result shows the changes of the second object to the first object.
@@ -25,7 +25,7 @@ export {diff}
25
25
  * @memberOf Monster.Data
26
26
  */
27
27
  function diff(first, second) {
28
- return doDiff(first, second)
28
+ return doDiff(first, second);
29
29
  }
30
30
 
31
31
  /**
@@ -54,37 +54,30 @@ function getKeys(a, b, type) {
54
54
  * @return {array}
55
55
  */
56
56
  function doDiff(a, b, path, diff) {
57
-
58
- let typeA = typeOf(a)
59
- let typeB = typeOf(b)
57
+ let typeA = typeOf(a);
58
+ let typeB = typeOf(b);
60
59
 
61
60
  const currPath = path || [];
62
61
  const currDiff = diff || [];
63
62
 
64
- if (typeA === typeB && (typeA === 'object' || typeA ==='array')) {
65
-
63
+ if (typeA === typeB && (typeA === "object" || typeA === "array")) {
66
64
  getKeys(a, b, typeA).forEach((v) => {
67
-
68
- if (!(Object.prototype.hasOwnProperty.call(a, v))) {
69
- currDiff.push(buildResult(a[v], b[v], 'add', currPath.concat(v)));
70
- } else if (!(Object.prototype.hasOwnProperty.call(b, v))) {
71
- currDiff.push(buildResult(a[v], b[v], 'delete', currPath.concat(v)));
65
+ if (!Object.prototype.hasOwnProperty.call(a, v)) {
66
+ currDiff.push(buildResult(a[v], b[v], "add", currPath.concat(v)));
67
+ } else if (!Object.prototype.hasOwnProperty.call(b, v)) {
68
+ currDiff.push(buildResult(a[v], b[v], "delete", currPath.concat(v)));
72
69
  } else {
73
70
  doDiff(a[v], b[v], currPath.concat(v), currDiff);
74
71
  }
75
72
  });
76
-
77
73
  } else {
78
-
79
74
  const o = getOperator(a, b, typeA, typeB);
80
75
  if (o !== undefined) {
81
76
  currDiff.push(buildResult(a, b, o, path));
82
77
  }
83
-
84
78
  }
85
79
 
86
80
  return currDiff;
87
-
88
81
  }
89
82
 
90
83
  /**
@@ -97,16 +90,15 @@ function doDiff(a, b, path, diff) {
97
90
  * @private
98
91
  */
99
92
  function buildResult(a, b, operator, path) {
100
-
101
93
  const result = {
102
94
  operator,
103
95
  path,
104
96
  };
105
97
 
106
- if (operator !== 'add') {
98
+ if (operator !== "add") {
107
99
  result.first = {
108
100
  value: a,
109
- type: typeof a
101
+ type: typeof a,
110
102
  };
111
103
 
112
104
  if (isObject(a)) {
@@ -117,10 +109,10 @@ function buildResult(a, b, operator, path) {
117
109
  }
118
110
  }
119
111
 
120
- if (operator === 'add' || operator === 'update') {
112
+ if (operator === "add" || operator === "update") {
121
113
  result.second = {
122
114
  value: b,
123
- type: typeof b
115
+ type: typeof b,
124
116
  };
125
117
 
126
118
  if (isObject(b)) {
@@ -129,7 +121,6 @@ function buildResult(a, b, operator, path) {
129
121
  result.second.instance = name;
130
122
  }
131
123
  }
132
-
133
124
  }
134
125
 
135
126
  return result;
@@ -142,7 +133,6 @@ function buildResult(a, b, operator, path) {
142
133
  * @return {boolean}
143
134
  */
144
135
  function isNotEqual(a, b) {
145
-
146
136
  if (typeof a !== typeof b) {
147
137
  return true;
148
138
  }
@@ -161,7 +151,6 @@ function isNotEqual(a, b) {
161
151
  * @return {string|undefined}
162
152
  */
163
153
  function getOperator(a, b) {
164
-
165
154
  /**
166
155
  * @type {string|undefined}
167
156
  */
@@ -177,14 +166,13 @@ function getOperator(a, b) {
177
166
  */
178
167
  let typeB = typeof b;
179
168
 
180
- if (typeA === 'undefined' && typeB !== 'undefined') {
181
- operator = 'add';
182
- } else if (typeA !== 'undefined' && typeB === 'undefined') {
183
- operator = 'delete';
169
+ if (typeA === "undefined" && typeB !== "undefined") {
170
+ operator = "add";
171
+ } else if (typeA !== "undefined" && typeB === "undefined") {
172
+ operator = "delete";
184
173
  } else if (isNotEqual(a, b)) {
185
- operator = 'update';
174
+ operator = "update";
186
175
  }
187
176
 
188
177
  return operator;
189
-
190
178
  }
@@ -5,10 +5,10 @@
5
5
  * License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
6
6
  */
7
7
 
8
- import {isArray, isObject} from "../types/is.mjs";
9
- import {typeOf} from "../types/typeof.mjs";
8
+ import { isArray, isObject } from "../types/is.mjs";
9
+ import { typeOf } from "../types/typeof.mjs";
10
10
 
11
- export {extend}
11
+ export { extend };
12
12
 
13
13
  /**
14
14
  * Extend copies all enumerable own properties from one or
@@ -23,15 +23,21 @@ export {extend}
23
23
  * @memberOf Monster.Data
24
24
  * @throws {Error} unsupported argument
25
25
  * @throws {Error} type mismatch
26
+ * @throws {Error} unsupported argument
26
27
  */
27
- function extend() {
28
- let o, i;
28
+ function extend(...args) {
29
+ let o;
30
+ let i;
31
+
32
+ if (typeof args !== "object" || args[0] === null) {
33
+ throw new Error(`unsupported argument ${JSON.stringify(args[0])}`);
34
+ }
29
35
 
30
- for (i = 0; i < arguments.length; i++) {
31
- let a = arguments[i];
36
+ for (i = 0; i < args.length; i++) {
37
+ let a = args[i];
32
38
 
33
39
  if (!(isObject(a) || isArray(a))) {
34
- throw new Error('unsupported argument ' + JSON.stringify(a));
40
+ throw new Error(`unsupported argument ${JSON.stringify(a)}`);
35
41
  }
36
42
 
37
43
  if (o === undefined) {
@@ -40,15 +46,13 @@ function extend() {
40
46
  }
41
47
 
42
48
  for (let k in a) {
43
-
44
49
  let v = a?.[k];
45
50
 
46
51
  if (v === o?.[k]) {
47
52
  continue;
48
53
  }
49
54
 
50
- if ((isObject(v)&&typeOf(v)==='object') || isArray(v)) {
51
-
55
+ if ((isObject(v) && typeOf(v) === "object") || isArray(v)) {
52
56
  if (o[k] === undefined) {
53
57
  if (isArray(v)) {
54
58
  o[k] = [];
@@ -57,16 +61,18 @@ function extend() {
57
61
  }
58
62
  } else {
59
63
  if (typeOf(o[k]) !== typeOf(v)) {
60
- throw new Error("type mismatch: " + JSON.stringify(o[k]) + "(" + typeOf(o[k]) + ") != " + JSON.stringify(v) + "(" + typeOf(v) + ")");
64
+ throw new Error(
65
+ `type mismatch: ${JSON.stringify(o[k])}(${typeOf(o[k])}) != ${JSON.stringify(v)}(${typeOf(
66
+ v,
67
+ )})`,
68
+ );
61
69
  }
62
70
  }
63
71
 
64
72
  o[k] = extend(o[k], v);
65
-
66
73
  } else {
67
74
  o[k] = v;
68
75
  }
69
-
70
76
  }
71
77
  }
72
78
 
@@ -3,8 +3,6 @@
3
3
  * SPDX-License-Identifier: AGPL-3.0
4
4
  */
5
5
 
6
-
7
-
8
6
  /**
9
7
  * In this namespace you will find classes and methods for handling data.
10
8
  *
@@ -12,4 +10,4 @@
12
10
  * @memberOf Monster
13
11
  * @author schukai GmbH
14
12
  */
15
- const ns = {};
13
+ const ns = {};