@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.
- package/example/i18n/providers/embed.mjs +5 -0
- package/package.json +1 -1
- package/source/constants.mjs +4 -9
- package/source/constraints/abstract.mjs +4 -6
- package/source/constraints/abstractoperator.mjs +6 -12
- package/source/constraints/andoperator.mjs +3 -6
- package/source/constraints/invalid.mjs +3 -6
- package/source/constraints/isarray.mjs +6 -9
- package/source/constraints/isobject.mjs +4 -7
- package/source/constraints/namespace.mjs +1 -3
- package/source/constraints/oroperator.mjs +26 -25
- package/source/constraints/valid.mjs +3 -6
- package/source/data/buildmap.mjs +20 -36
- package/source/data/buildtree.mjs +29 -29
- package/source/data/datasource/namespace.mjs +1 -1
- package/source/data/datasource/server/restapi/writeerror.mjs +6 -6
- package/source/data/datasource/server/restapi.mjs +51 -65
- package/source/data/datasource/server/webconnect.mjs +26 -35
- package/source/data/datasource/server.mjs +17 -21
- package/source/data/datasource/storage/localstorage.mjs +8 -11
- package/source/data/datasource/storage/sessionstorage.mjs +8 -10
- package/source/data/datasource/storage.mjs +18 -22
- package/source/data/datasource.mjs +27 -43
- package/source/data/diff.mjs +20 -32
- package/source/data/extend.mjs +20 -14
- package/source/data/namespace.mjs +1 -3
- package/source/data/pathfinder.mjs +40 -67
- package/source/data/pipe.mjs +6 -10
- package/source/data/transformer.mjs +141 -157
- package/source/dom/assembler.mjs +6 -9
- package/source/dom/attributes.mjs +36 -48
- package/source/dom/constants.mjs +55 -71
- package/source/dom/customcontrol.mjs +16 -21
- package/source/dom/customelement.mjs +140 -164
- package/source/dom/events.mjs +17 -24
- package/source/dom/focusmanager.mjs +30 -48
- package/source/dom/locale.mjs +41 -10
- package/source/dom/namespace.mjs +1 -1
- package/source/dom/ready.mjs +7 -10
- package/source/dom/resource/data.mjs +38 -46
- package/source/dom/resource/link/namespace.mjs +1 -3
- package/source/dom/resource/link/stylesheet.mjs +7 -11
- package/source/dom/resource/link.mjs +36 -17
- package/source/dom/resource/namespace.mjs +1 -1
- package/source/dom/resource/script.mjs +23 -13
- package/source/dom/resource.mjs +47 -60
- package/source/dom/resourcemanager.mjs +36 -43
- package/source/dom/template.mjs +17 -24
- package/source/dom/theme.mjs +8 -12
- package/source/dom/updater.mjs +150 -196
- package/source/dom/util.mjs +11 -12
- package/source/dom/worker/factory.mjs +21 -25
- package/source/dom/worker/namespace.mjs +1 -1
- package/source/i18n/formatter.mjs +20 -24
- package/source/i18n/locale.mjs +40 -42
- package/source/i18n/namespace.mjs +1 -1
- package/source/i18n/provider.mjs +4 -7
- package/source/i18n/providers/embed.mjs +115 -0
- package/source/i18n/providers/fetch.mjs +33 -38
- package/source/i18n/translations.mjs +16 -20
- package/source/logging/handler/console.mjs +6 -10
- package/source/logging/handler.mjs +15 -18
- package/source/logging/logentry.mjs +8 -9
- package/source/logging/logger.mjs +73 -55
- package/source/logging/namespace.mjs +1 -1
- package/source/math/namespace.mjs +1 -1
- package/source/math/random.mjs +13 -14
- package/source/monster.mjs +132 -100
- package/source/net/namespace.mjs +1 -3
- package/source/net/webconnect/message.mjs +6 -8
- package/source/net/webconnect/namespace.mjs +1 -3
- package/source/net/webconnect.mjs +28 -39
- package/source/text/formatter.mjs +44 -55
- package/source/types/base.mjs +16 -26
- package/source/types/basewithoptions.mjs +8 -14
- package/source/types/binary.mjs +4 -5
- package/source/types/dataurl.mjs +19 -27
- package/source/types/global.mjs +14 -26
- package/source/types/id.mjs +4 -6
- package/source/types/is.mjs +11 -16
- package/source/types/mediatype.mjs +29 -44
- package/source/types/namespace.mjs +0 -1
- package/source/types/node.mjs +16 -22
- package/source/types/nodelist.mjs +10 -14
- package/source/types/noderecursiveiterator.mjs +11 -14
- package/source/types/observablequeue.mjs +13 -16
- package/source/types/observer.mjs +16 -23
- package/source/types/observerlist.mjs +18 -21
- package/source/types/proxyobserver.mjs +24 -37
- package/source/types/queue.mjs +8 -13
- package/source/types/randomid.mjs +10 -10
- package/source/types/regex.mjs +3 -5
- package/source/types/stack.mjs +4 -8
- package/source/types/tokenlist.mjs +24 -31
- package/source/types/typeof.mjs +5 -7
- package/source/types/uniquequeue.mjs +8 -13
- package/source/types/uuid.mjs +18 -25
- package/source/types/validate.mjs +26 -27
- package/source/types/version.mjs +17 -25
- package/source/util/clone.mjs +23 -32
- package/source/util/comparator.mjs +7 -15
- package/source/util/deadmansswitch.mjs +16 -23
- package/source/util/freeze.mjs +5 -7
- package/source/util/namespace.mjs +1 -1
- package/source/util/processing.mjs +33 -39
- package/source/util/trimspaces.mjs +17 -24
- package/test/cases/dom/locale.mjs +15 -0
- package/test/cases/i18n/providers/embed.mjs +72 -0
- package/test/cases/monster.mjs +1 -1
|
@@ -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 {isIterable, isString} from
|
|
9
|
-
import {validateFunction, validateString} from
|
|
10
|
-
import {Base} from
|
|
8
|
+
import { isIterable, isString } from "../types/is.mjs";
|
|
9
|
+
import { validateFunction, validateString } from "../types/validate.mjs";
|
|
10
|
+
import { Base } from "./base.mjs";
|
|
11
11
|
|
|
12
|
-
export {TokenList}
|
|
12
|
+
export { TokenList };
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* A `TokenList` allows you to manage tokens (individual character strings such as css classes in an attribute string).
|
|
@@ -25,7 +25,6 @@ export {TokenList}
|
|
|
25
25
|
* @memberOf Monster.Types
|
|
26
26
|
*/
|
|
27
27
|
class TokenList extends Base {
|
|
28
|
-
|
|
29
28
|
/**
|
|
30
29
|
*
|
|
31
30
|
* @param {array|string|iteratable} init
|
|
@@ -37,7 +36,6 @@ class TokenList extends Base {
|
|
|
37
36
|
if (typeof init !== "undefined") {
|
|
38
37
|
this.add(init);
|
|
39
38
|
}
|
|
40
|
-
|
|
41
39
|
}
|
|
42
40
|
|
|
43
41
|
/**
|
|
@@ -59,17 +57,17 @@ class TokenList extends Base {
|
|
|
59
57
|
// iterations over the iterable safe for non-trivial cases,
|
|
60
58
|
// such as use of break or nested looping over the same iterable.
|
|
61
59
|
let index = 0;
|
|
62
|
-
let entries = this.entries()
|
|
60
|
+
let entries = this.entries();
|
|
63
61
|
|
|
64
62
|
return {
|
|
65
63
|
next: () => {
|
|
66
64
|
if (index < entries.length) {
|
|
67
|
-
return {value: entries?.[index++], done: false}
|
|
65
|
+
return { value: entries?.[index++], done: false };
|
|
68
66
|
} else {
|
|
69
|
-
return {done: true}
|
|
67
|
+
return { done: true };
|
|
70
68
|
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
69
|
+
},
|
|
70
|
+
};
|
|
73
71
|
}
|
|
74
72
|
|
|
75
73
|
/**
|
|
@@ -81,12 +79,12 @@ class TokenList extends Base {
|
|
|
81
79
|
*/
|
|
82
80
|
contains(value) {
|
|
83
81
|
if (isString(value)) {
|
|
84
|
-
value = value.trim()
|
|
82
|
+
value = value.trim();
|
|
85
83
|
let counter = 0;
|
|
86
|
-
value.split(" ").forEach(token => {
|
|
84
|
+
value.split(" ").forEach((token) => {
|
|
87
85
|
if (this.tokens.has(token.trim()) === false) return false;
|
|
88
|
-
counter
|
|
89
|
-
})
|
|
86
|
+
counter++;
|
|
87
|
+
});
|
|
90
88
|
return counter > 0 ? true : false;
|
|
91
89
|
}
|
|
92
90
|
|
|
@@ -95,7 +93,7 @@ class TokenList extends Base {
|
|
|
95
93
|
for (let token of value) {
|
|
96
94
|
validateString(token);
|
|
97
95
|
if (this.tokens.has(token.trim()) === false) return false;
|
|
98
|
-
counter
|
|
96
|
+
counter++;
|
|
99
97
|
}
|
|
100
98
|
return counter > 0 ? true : false;
|
|
101
99
|
}
|
|
@@ -113,9 +111,9 @@ class TokenList extends Base {
|
|
|
113
111
|
*/
|
|
114
112
|
add(value) {
|
|
115
113
|
if (isString(value)) {
|
|
116
|
-
value.split(" ").forEach(token => {
|
|
114
|
+
value.split(" ").forEach((token) => {
|
|
117
115
|
this.tokens.add(token.trim());
|
|
118
|
-
})
|
|
116
|
+
});
|
|
119
117
|
} else if (isIterable(value)) {
|
|
120
118
|
for (let token of value) {
|
|
121
119
|
validateString(token);
|
|
@@ -148,9 +146,9 @@ class TokenList extends Base {
|
|
|
148
146
|
*/
|
|
149
147
|
remove(value) {
|
|
150
148
|
if (isString(value)) {
|
|
151
|
-
value.split(" ").forEach(token => {
|
|
149
|
+
value.split(" ").forEach((token) => {
|
|
152
150
|
this.tokens.delete(token.trim());
|
|
153
|
-
})
|
|
151
|
+
});
|
|
154
152
|
} else if (isIterable(value)) {
|
|
155
153
|
for (let token of value) {
|
|
156
154
|
validateString(token);
|
|
@@ -180,7 +178,7 @@ class TokenList extends Base {
|
|
|
180
178
|
return this;
|
|
181
179
|
}
|
|
182
180
|
|
|
183
|
-
let a = Array.from(this.tokens)
|
|
181
|
+
let a = Array.from(this.tokens);
|
|
184
182
|
let i = a.indexOf(token);
|
|
185
183
|
if (i === -1) return this;
|
|
186
184
|
|
|
@@ -189,8 +187,6 @@ class TokenList extends Base {
|
|
|
189
187
|
this.add(a);
|
|
190
188
|
|
|
191
189
|
return this;
|
|
192
|
-
|
|
193
|
-
|
|
194
190
|
}
|
|
195
191
|
|
|
196
192
|
/**
|
|
@@ -202,11 +198,10 @@ class TokenList extends Base {
|
|
|
202
198
|
* @throws {TypeError} unsupported value
|
|
203
199
|
*/
|
|
204
200
|
toggle(value) {
|
|
205
|
-
|
|
206
201
|
if (isString(value)) {
|
|
207
|
-
value.split(" ").forEach(token => {
|
|
202
|
+
value.split(" ").forEach((token) => {
|
|
208
203
|
toggleValue.call(this, token);
|
|
209
|
-
})
|
|
204
|
+
});
|
|
210
205
|
} else if (isIterable(value)) {
|
|
211
206
|
for (let token of value) {
|
|
212
207
|
toggleValue.call(this, token);
|
|
@@ -216,7 +211,6 @@ class TokenList extends Base {
|
|
|
216
211
|
}
|
|
217
212
|
|
|
218
213
|
return this;
|
|
219
|
-
|
|
220
214
|
}
|
|
221
215
|
|
|
222
216
|
/**
|
|
@@ -225,7 +219,7 @@ class TokenList extends Base {
|
|
|
225
219
|
* @returns {array}
|
|
226
220
|
*/
|
|
227
221
|
entries() {
|
|
228
|
-
return Array.from(this.tokens)
|
|
222
|
+
return Array.from(this.tokens);
|
|
229
223
|
}
|
|
230
224
|
|
|
231
225
|
/**
|
|
@@ -246,9 +240,8 @@ class TokenList extends Base {
|
|
|
246
240
|
* @returns {string}
|
|
247
241
|
*/
|
|
248
242
|
toString() {
|
|
249
|
-
return this.entries().join(
|
|
243
|
+
return this.entries().join(" ");
|
|
250
244
|
}
|
|
251
|
-
|
|
252
245
|
}
|
|
253
246
|
|
|
254
247
|
/**
|
|
@@ -258,7 +251,7 @@ class TokenList extends Base {
|
|
|
258
251
|
* @throws {Error} must be called with TokenList.call
|
|
259
252
|
*/
|
|
260
253
|
function toggleValue(token) {
|
|
261
|
-
if (!(this instanceof TokenList)) throw Error("must be called with TokenList.call")
|
|
254
|
+
if (!(this instanceof TokenList)) throw Error("must be called with TokenList.call");
|
|
262
255
|
validateString(token);
|
|
263
256
|
token = token.trim();
|
|
264
257
|
if (this.contains(token)) {
|
package/source/types/typeof.mjs
CHANGED
|
@@ -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 {typeOf}
|
|
8
|
+
export { typeOf };
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* The built-in typeof method is known to have some historical weaknesses. This function tries to provide a better and more accurate result.
|
|
@@ -20,18 +20,16 @@ export {typeOf}
|
|
|
20
20
|
* @throws {TypeError} value is not a primitive
|
|
21
21
|
*/
|
|
22
22
|
function typeOf(value) {
|
|
23
|
-
let type =
|
|
24
|
-
if (
|
|
25
|
-
|
|
23
|
+
let type = {}.toString.call(value).match(/\s([a-zA-Z]+)/)[1];
|
|
24
|
+
if ("Object" === type) {
|
|
26
25
|
const name = value.constructor.name;
|
|
27
26
|
if (name) {
|
|
28
27
|
return name.toLowerCase();
|
|
29
28
|
}
|
|
30
29
|
|
|
31
|
-
const results =
|
|
32
|
-
type =
|
|
30
|
+
const results = /^(class|function)\s+(\w+)/.exec(value.constructor.toString());
|
|
31
|
+
type = results && results.length > 2 ? results[2] : "";
|
|
33
32
|
}
|
|
34
33
|
|
|
35
34
|
return type.toLowerCase();
|
|
36
35
|
}
|
|
37
|
-
|
|
@@ -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 {Queue} from "./queue.mjs";
|
|
9
|
-
import {internalSymbol} from "../constants.mjs";
|
|
10
|
-
import {validateObject} from "./validate.mjs";
|
|
8
|
+
import { Queue } from "./queue.mjs";
|
|
9
|
+
import { internalSymbol } from "../constants.mjs";
|
|
10
|
+
import { validateObject } from "./validate.mjs";
|
|
11
11
|
|
|
12
|
-
export {UniqueQueue}
|
|
12
|
+
export { UniqueQueue };
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* An UniqueQueue is a queue that contains items only once.
|
|
@@ -20,15 +20,14 @@ export {UniqueQueue}
|
|
|
20
20
|
* @memberOf Monster.Types
|
|
21
21
|
* @summary A queue for unique values
|
|
22
22
|
*/
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
class UniqueQueue extends Queue {
|
|
25
24
|
/**
|
|
26
25
|
*
|
|
27
26
|
*/
|
|
28
27
|
constructor() {
|
|
29
28
|
super();
|
|
30
|
-
this[internalSymbol]={
|
|
31
|
-
unique
|
|
29
|
+
this[internalSymbol] = {
|
|
30
|
+
unique: new WeakSet(),
|
|
32
31
|
};
|
|
33
32
|
}
|
|
34
33
|
|
|
@@ -40,7 +39,6 @@ export {UniqueQueue}
|
|
|
40
39
|
* @throws {TypeError} value is not a object
|
|
41
40
|
*/
|
|
42
41
|
add(value) {
|
|
43
|
-
|
|
44
42
|
validateObject(value);
|
|
45
43
|
|
|
46
44
|
if (!this[internalSymbol].unique.has(value)) {
|
|
@@ -58,7 +56,7 @@ export {UniqueQueue}
|
|
|
58
56
|
*/
|
|
59
57
|
clear() {
|
|
60
58
|
super.clear();
|
|
61
|
-
this[internalSymbol].unique = new WeakSet;
|
|
59
|
+
this[internalSymbol].unique = new WeakSet();
|
|
62
60
|
return this;
|
|
63
61
|
}
|
|
64
62
|
|
|
@@ -69,7 +67,6 @@ export {UniqueQueue}
|
|
|
69
67
|
* @return {object}
|
|
70
68
|
*/
|
|
71
69
|
poll() {
|
|
72
|
-
|
|
73
70
|
if (this.isEmpty()) {
|
|
74
71
|
return undefined;
|
|
75
72
|
}
|
|
@@ -77,6 +74,4 @@ export {UniqueQueue}
|
|
|
77
74
|
this[internalSymbol].unique.delete(value);
|
|
78
75
|
return value;
|
|
79
76
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
77
|
}
|
package/source/types/uuid.mjs
CHANGED
|
@@ -5,25 +5,24 @@
|
|
|
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 {random} from "../math/random.mjs";
|
|
10
|
-
import {isObject} from
|
|
11
|
-
import {Base} from "./base.mjs";
|
|
12
|
-
import {getGlobalObject} from "./global.mjs";
|
|
8
|
+
import { internalSymbol } from "../constants.mjs";
|
|
9
|
+
import { random } from "../math/random.mjs";
|
|
10
|
+
import { isObject } from "../types/is.mjs";
|
|
11
|
+
import { Base } from "./base.mjs";
|
|
12
|
+
import { getGlobalObject } from "./global.mjs";
|
|
13
13
|
|
|
14
|
-
export {UUID}
|
|
14
|
+
export { UUID };
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* The UUID class makes it possible to get a unique UUID for an object.
|
|
18
|
-
*
|
|
18
|
+
*
|
|
19
19
|
* @license AGPLv3
|
|
20
20
|
* @since 1.25.0
|
|
21
21
|
* @copyright schukai GmbH
|
|
22
22
|
* @memberOf Monster.Types
|
|
23
23
|
* @throws {Error} unsupported
|
|
24
24
|
*/
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
class UUID extends Base {
|
|
27
26
|
/**
|
|
28
27
|
*
|
|
29
28
|
*/
|
|
@@ -36,15 +35,13 @@ export {UUID}
|
|
|
36
35
|
uuid = createWithRandom();
|
|
37
36
|
}
|
|
38
37
|
|
|
39
|
-
|
|
40
38
|
if (uuid === undefined) {
|
|
41
|
-
throw new Error(
|
|
39
|
+
throw new Error("unsupported");
|
|
42
40
|
}
|
|
43
41
|
|
|
44
42
|
this[internalSymbol] = {
|
|
45
|
-
value: uuid
|
|
46
|
-
}
|
|
47
|
-
|
|
43
|
+
value: uuid,
|
|
44
|
+
};
|
|
48
45
|
}
|
|
49
46
|
|
|
50
47
|
/**
|
|
@@ -52,10 +49,8 @@ export {UUID}
|
|
|
52
49
|
* @return {string}
|
|
53
50
|
*/
|
|
54
51
|
toString() {
|
|
55
|
-
return this[internalSymbol][
|
|
52
|
+
return this[internalSymbol]["value"];
|
|
56
53
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
54
|
}
|
|
60
55
|
|
|
61
56
|
/**
|
|
@@ -63,22 +58,20 @@ export {UUID}
|
|
|
63
58
|
* @return {string|undefined}
|
|
64
59
|
*/
|
|
65
60
|
function createWithRandom() {
|
|
66
|
-
return
|
|
67
|
-
|
|
68
|
-
|
|
61
|
+
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) {
|
|
62
|
+
const r = (random(0, 65000) * 16) | 0;
|
|
63
|
+
const v = c === "x" ? r : (r & 0x3) | 0x8;
|
|
69
64
|
return v.toString(16)[0];
|
|
70
|
-
})
|
|
65
|
+
});
|
|
71
66
|
}
|
|
72
67
|
|
|
73
|
-
|
|
74
68
|
/**
|
|
75
69
|
* @private
|
|
76
70
|
* @return {string|undefined}
|
|
77
71
|
*/
|
|
78
72
|
function createWithCrypto() {
|
|
79
|
-
const crypt = getGlobalObject(
|
|
73
|
+
const crypt = getGlobalObject("crypto");
|
|
80
74
|
if (!isObject(crypt)) return;
|
|
81
|
-
if (typeof crypt?.[
|
|
75
|
+
if (typeof crypt?.["randomUUID"]) return;
|
|
82
76
|
return crypt.randomUUID();
|
|
83
77
|
}
|
|
84
|
-
|
|
@@ -15,8 +15,8 @@ import {
|
|
|
15
15
|
isObject,
|
|
16
16
|
isPrimitive,
|
|
17
17
|
isString,
|
|
18
|
-
isSymbol
|
|
19
|
-
} from
|
|
18
|
+
isSymbol,
|
|
19
|
+
} from "./is.mjs";
|
|
20
20
|
|
|
21
21
|
export {
|
|
22
22
|
validateIterable,
|
|
@@ -28,8 +28,8 @@ export {
|
|
|
28
28
|
validateArray,
|
|
29
29
|
validateSymbol,
|
|
30
30
|
validateFunction,
|
|
31
|
-
validateInteger
|
|
32
|
-
}
|
|
31
|
+
validateInteger,
|
|
32
|
+
};
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
35
|
* This method checks if the type matches the primitive type. this function is identical to isPrimitive() except that a TypeError is thrown.
|
|
@@ -55,9 +55,9 @@ export {
|
|
|
55
55
|
*/
|
|
56
56
|
function validateIterable(value) {
|
|
57
57
|
if (!isIterable(value)) {
|
|
58
|
-
throw new TypeError(
|
|
58
|
+
throw new TypeError("value is not iterable");
|
|
59
59
|
}
|
|
60
|
-
return value
|
|
60
|
+
return value;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
/**
|
|
@@ -84,9 +84,9 @@ function validateIterable(value) {
|
|
|
84
84
|
*/
|
|
85
85
|
function validatePrimitive(value) {
|
|
86
86
|
if (!isPrimitive(value)) {
|
|
87
|
-
throw new TypeError(
|
|
87
|
+
throw new TypeError("value is not a primitive");
|
|
88
88
|
}
|
|
89
|
-
return value
|
|
89
|
+
return value;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
/**
|
|
@@ -112,9 +112,9 @@ function validatePrimitive(value) {
|
|
|
112
112
|
*/
|
|
113
113
|
function validateBoolean(value) {
|
|
114
114
|
if (!isBoolean(value)) {
|
|
115
|
-
throw new TypeError(
|
|
115
|
+
throw new TypeError("value is not a boolean");
|
|
116
116
|
}
|
|
117
|
-
return value
|
|
117
|
+
return value;
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
/**
|
|
@@ -138,12 +138,11 @@ function validateBoolean(value) {
|
|
|
138
138
|
*/
|
|
139
139
|
function validateString(value) {
|
|
140
140
|
if (!isString(value)) {
|
|
141
|
-
throw new TypeError(
|
|
141
|
+
throw new TypeError("value is not a string");
|
|
142
142
|
}
|
|
143
|
-
return value
|
|
143
|
+
return value;
|
|
144
144
|
}
|
|
145
145
|
|
|
146
|
-
|
|
147
146
|
/**
|
|
148
147
|
* This method checks if the type matches the object type. this function is identical to isObject() except that a TypeError is thrown.
|
|
149
148
|
*
|
|
@@ -166,9 +165,9 @@ function validateString(value) {
|
|
|
166
165
|
*/
|
|
167
166
|
function validateObject(value) {
|
|
168
167
|
if (!isObject(value)) {
|
|
169
|
-
throw new TypeError(
|
|
168
|
+
throw new TypeError("value is not a object");
|
|
170
169
|
}
|
|
171
|
-
return value
|
|
170
|
+
return value;
|
|
172
171
|
}
|
|
173
172
|
|
|
174
173
|
/**
|
|
@@ -195,16 +194,16 @@ function validateInstance(value, instance) {
|
|
|
195
194
|
if (!isInstance(value, instance)) {
|
|
196
195
|
let n = "";
|
|
197
196
|
if (isObject(instance) || isFunction(instance)) {
|
|
198
|
-
n = instance?.[
|
|
197
|
+
n = instance?.["name"];
|
|
199
198
|
}
|
|
200
199
|
|
|
201
200
|
if (n) {
|
|
202
|
-
n =
|
|
201
|
+
n = ` ${n}`;
|
|
203
202
|
}
|
|
204
203
|
|
|
205
|
-
throw new TypeError(
|
|
204
|
+
throw new TypeError(`value is not an instance of${n}`);
|
|
206
205
|
}
|
|
207
|
-
return value
|
|
206
|
+
return value;
|
|
208
207
|
}
|
|
209
208
|
|
|
210
209
|
/**
|
|
@@ -228,9 +227,9 @@ function validateInstance(value, instance) {
|
|
|
228
227
|
*/
|
|
229
228
|
function validateArray(value) {
|
|
230
229
|
if (!isArray(value)) {
|
|
231
|
-
throw new TypeError(
|
|
230
|
+
throw new TypeError("value is not an array");
|
|
232
231
|
}
|
|
233
|
-
return value
|
|
232
|
+
return value;
|
|
234
233
|
}
|
|
235
234
|
|
|
236
235
|
/**
|
|
@@ -254,9 +253,9 @@ function validateArray(value) {
|
|
|
254
253
|
*/
|
|
255
254
|
function validateSymbol(value) {
|
|
256
255
|
if (!isSymbol(value)) {
|
|
257
|
-
throw new TypeError(
|
|
256
|
+
throw new TypeError("value is not an symbol");
|
|
258
257
|
}
|
|
259
|
-
return value
|
|
258
|
+
return value;
|
|
260
259
|
}
|
|
261
260
|
|
|
262
261
|
/**
|
|
@@ -281,9 +280,9 @@ function validateSymbol(value) {
|
|
|
281
280
|
*/
|
|
282
281
|
function validateFunction(value) {
|
|
283
282
|
if (!isFunction(value)) {
|
|
284
|
-
throw new TypeError(
|
|
283
|
+
throw new TypeError("value is not a function");
|
|
285
284
|
}
|
|
286
|
-
return value
|
|
285
|
+
return value;
|
|
287
286
|
}
|
|
288
287
|
|
|
289
288
|
/**
|
|
@@ -308,7 +307,7 @@ function validateFunction(value) {
|
|
|
308
307
|
*/
|
|
309
308
|
function validateInteger(value) {
|
|
310
309
|
if (!isInteger(value)) {
|
|
311
|
-
throw new TypeError(
|
|
310
|
+
throw new TypeError("value is not an integer");
|
|
312
311
|
}
|
|
313
|
-
return value
|
|
312
|
+
return value;
|
|
314
313
|
}
|
package/source/types/version.mjs
CHANGED
|
@@ -5,11 +5,10 @@
|
|
|
5
5
|
* License text available at https://www.gnu.org/licenses/agpl-3.0.en.html
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import {Base} from
|
|
9
|
-
import {instanceSymbol} from
|
|
10
|
-
|
|
11
|
-
export {Version, getMonsterVersion}
|
|
8
|
+
import { Base } from "./base.mjs";
|
|
9
|
+
import { instanceSymbol } from "../constants.mjs";
|
|
12
10
|
|
|
11
|
+
export { Version, getMonsterVersion };
|
|
13
12
|
|
|
14
13
|
/**
|
|
15
14
|
* The version object contains a semantic version number
|
|
@@ -23,7 +22,6 @@ export {Version, getMonsterVersion}
|
|
|
23
22
|
* @summary The version object contains a sematic version number
|
|
24
23
|
*/
|
|
25
24
|
class Version extends Base {
|
|
26
|
-
|
|
27
25
|
/**
|
|
28
26
|
*
|
|
29
27
|
* @param major
|
|
@@ -36,16 +34,15 @@ class Version extends Base {
|
|
|
36
34
|
constructor(major, minor, patch) {
|
|
37
35
|
super();
|
|
38
36
|
|
|
39
|
-
if (typeof major ===
|
|
40
|
-
|
|
41
|
-
let parts = major.toString().split('.');
|
|
37
|
+
if (typeof major === "string" && minor === undefined && patch === undefined) {
|
|
38
|
+
let parts = major.toString().split(".");
|
|
42
39
|
major = parseInt(parts[0] || 0);
|
|
43
40
|
minor = parseInt(parts[1] || 0);
|
|
44
41
|
patch = parseInt(parts[2] || 0);
|
|
45
42
|
}
|
|
46
43
|
|
|
47
44
|
if (major === undefined) {
|
|
48
|
-
throw
|
|
45
|
+
throw new Error("major version is undefined");
|
|
49
46
|
}
|
|
50
47
|
|
|
51
48
|
if (minor === undefined) {
|
|
@@ -61,17 +58,16 @@ class Version extends Base {
|
|
|
61
58
|
this.patch = parseInt(patch);
|
|
62
59
|
|
|
63
60
|
if (isNaN(this.major)) {
|
|
64
|
-
throw
|
|
61
|
+
throw new Error("major is not a number");
|
|
65
62
|
}
|
|
66
63
|
|
|
67
64
|
if (isNaN(this.minor)) {
|
|
68
|
-
throw
|
|
65
|
+
throw new Error("minor is not a number");
|
|
69
66
|
}
|
|
70
67
|
|
|
71
68
|
if (isNaN(this.patch)) {
|
|
72
|
-
throw
|
|
69
|
+
throw new Error("patch is not a number");
|
|
73
70
|
}
|
|
74
|
-
|
|
75
71
|
}
|
|
76
72
|
|
|
77
73
|
/**
|
|
@@ -83,13 +79,12 @@ class Version extends Base {
|
|
|
83
79
|
return Symbol.for("@schukai/monster/types/version");
|
|
84
80
|
}
|
|
85
81
|
|
|
86
|
-
|
|
87
82
|
/**
|
|
88
83
|
*
|
|
89
84
|
* @returns {string}
|
|
90
85
|
*/
|
|
91
86
|
toString() {
|
|
92
|
-
return this.major
|
|
87
|
+
return `${this.major}.${this.minor}.${this.patch}`;
|
|
93
88
|
}
|
|
94
89
|
|
|
95
90
|
/**
|
|
@@ -100,13 +95,12 @@ class Version extends Base {
|
|
|
100
95
|
* @returns {number}
|
|
101
96
|
*/
|
|
102
97
|
compareTo(version) {
|
|
103
|
-
|
|
104
98
|
if (version instanceof Version) {
|
|
105
99
|
version = version.toString();
|
|
106
100
|
}
|
|
107
101
|
|
|
108
|
-
if (typeof version !==
|
|
109
|
-
throw
|
|
102
|
+
if (typeof version !== "string") {
|
|
103
|
+
throw new Error("type exception");
|
|
110
104
|
}
|
|
111
105
|
|
|
112
106
|
if (version === this.toString()) {
|
|
@@ -114,20 +108,19 @@ class Version extends Base {
|
|
|
114
108
|
}
|
|
115
109
|
|
|
116
110
|
let a = [this.major, this.minor, this.patch];
|
|
117
|
-
let b = version.split(
|
|
111
|
+
let b = version.split(".");
|
|
118
112
|
let len = Math.max(a.length, b.length);
|
|
119
113
|
|
|
120
114
|
for (let i = 0; i < len; i += 1) {
|
|
121
|
-
if ((a[i] && !b[i] && parseInt(a[i]) > 0) ||
|
|
115
|
+
if ((a[i] && !b[i] && parseInt(a[i]) > 0) || parseInt(a[i]) > parseInt(b[i])) {
|
|
122
116
|
return 1;
|
|
123
|
-
} else if ((b[i] && !a[i] && parseInt(b[i]) > 0) ||
|
|
117
|
+
} else if ((b[i] && !a[i] && parseInt(b[i]) > 0) || parseInt(a[i]) < parseInt(b[i])) {
|
|
124
118
|
return -1;
|
|
125
119
|
}
|
|
126
120
|
}
|
|
127
121
|
|
|
128
122
|
return 0;
|
|
129
|
-
}
|
|
130
|
-
|
|
123
|
+
}
|
|
131
124
|
}
|
|
132
125
|
|
|
133
126
|
let monsterVersion;
|
|
@@ -149,8 +142,7 @@ function getMonsterVersion() {
|
|
|
149
142
|
}
|
|
150
143
|
|
|
151
144
|
/** don't touch, replaced by make with package.json version */
|
|
152
|
-
monsterVersion = new Version(
|
|
145
|
+
monsterVersion = new Version("3.7.0");
|
|
153
146
|
|
|
154
147
|
return monsterVersion;
|
|
155
|
-
|
|
156
148
|
}
|