@schukai/monster 1.22.0 → 1.26.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/CHANGELOG +56 -0
- package/README.md +4 -4
- package/dist/modules/constants.js +2 -2
- package/dist/modules/constraints/abstract.js +1 -1
- package/dist/modules/constraints/abstractoperator.js +1 -1
- package/dist/modules/constraints/andoperator.js +1 -1
- package/dist/modules/constraints/invalid.js +1 -1
- package/dist/modules/constraints/isarray.js +1 -1
- package/dist/modules/constraints/isobject.js +1 -1
- package/dist/modules/constraints/namespace.js +1 -1
- package/dist/modules/constraints/oroperator.js +1 -1
- package/dist/modules/constraints/valid.js +1 -1
- package/dist/modules/data/buildmap.js +2 -2
- package/dist/modules/data/buildtree.js +2 -0
- package/dist/modules/data/datasource/namespace.js +1 -1
- package/dist/modules/data/datasource/restapi/writeerror.js +2 -0
- package/dist/modules/data/datasource/restapi.js +2 -2
- package/dist/modules/data/datasource/storage/localstorage.js +2 -2
- package/dist/modules/data/datasource/storage/namespace.js +1 -1
- package/dist/modules/data/datasource/storage/sessionstorage.js +2 -2
- package/dist/modules/data/datasource/storage.js +2 -2
- package/dist/modules/data/datasource.js +2 -2
- package/dist/modules/data/diff.js +2 -2
- package/dist/modules/data/extend.js +1 -1
- package/dist/modules/data/namespace.js +1 -1
- package/dist/modules/data/pathfinder.js +2 -2
- package/dist/modules/data/pipe.js +1 -1
- package/dist/modules/data/transformer.js +2 -2
- package/dist/modules/dom/assembler.js +1 -1
- package/dist/modules/dom/attributes.js +1 -1
- package/dist/modules/dom/constants.js +2 -2
- package/dist/modules/dom/customcontrol.js +2 -2
- package/dist/modules/dom/customelement.js +2 -2
- package/dist/modules/dom/events.js +1 -1
- package/dist/modules/dom/focusmanager.js +2 -0
- package/dist/modules/dom/locale.js +1 -1
- package/dist/modules/dom/namespace.js +1 -1
- package/dist/modules/dom/resource/data.js +2 -0
- package/dist/modules/dom/resource/link/stylesheet.js +2 -0
- package/dist/modules/dom/resource/link.js +2 -0
- package/dist/modules/dom/resource/script.js +2 -0
- package/dist/modules/dom/resource.js +2 -0
- package/dist/modules/dom/resourcemanager.js +2 -0
- package/dist/modules/dom/template.js +1 -1
- package/dist/modules/dom/theme.js +1 -1
- package/dist/modules/dom/updater.js +2 -2
- package/dist/modules/dom/util.js +1 -1
- package/dist/modules/dom/worker/factory.js +2 -0
- package/dist/modules/i18n/formatter.js +2 -0
- package/dist/modules/i18n/locale.js +1 -1
- package/dist/modules/i18n/namespace.js +1 -1
- package/dist/modules/i18n/provider.js +1 -1
- package/dist/modules/i18n/providers/fetch.js +2 -2
- package/dist/modules/i18n/providers/namespace.js +1 -1
- package/dist/modules/i18n/translations.js +1 -1
- package/dist/modules/logging/handler/console.js +1 -1
- package/dist/modules/logging/handler/namespace.js +1 -1
- package/dist/modules/logging/handler.js +1 -1
- package/dist/modules/logging/logentry.js +1 -1
- package/dist/modules/logging/logger.js +1 -1
- package/dist/modules/logging/namespace.js +1 -1
- package/dist/modules/math/namespace.js +1 -1
- package/dist/modules/math/random.js +2 -2
- package/dist/modules/monster.js +1 -1
- package/dist/modules/namespace.js +1 -1
- package/dist/modules/text/formatter.js +2 -2
- package/dist/modules/text/namespace.js +1 -1
- package/dist/modules/types/base.js +1 -1
- package/dist/modules/types/basewithoptions.js +2 -2
- package/dist/modules/types/binary.js +1 -1
- package/dist/modules/types/dataurl.js +1 -1
- package/dist/modules/types/global.js +1 -1
- package/dist/modules/types/id.js +1 -1
- package/dist/modules/types/is.js +2 -2
- package/dist/modules/types/mediatype.js +1 -1
- package/dist/modules/types/namespace.js +1 -1
- package/dist/modules/types/node.js +2 -0
- package/dist/modules/types/nodelist.js +2 -0
- package/dist/modules/types/noderecursiveiterator.js +2 -0
- package/dist/modules/types/observer.js +1 -1
- package/dist/modules/types/observerlist.js +2 -2
- package/dist/modules/types/proxyobserver.js +2 -2
- package/dist/modules/types/queue.js +1 -1
- package/dist/modules/types/randomid.js +1 -1
- package/dist/modules/types/regex.js +2 -0
- package/dist/modules/types/stack.js +1 -1
- package/dist/modules/types/tokenlist.js +2 -2
- package/dist/modules/types/typeof.js +1 -1
- package/dist/modules/types/uniquequeue.js +1 -1
- package/dist/modules/types/uuid.js +2 -0
- package/dist/modules/types/validate.js +1 -1
- package/dist/modules/types/version.js +2 -2
- package/dist/modules/util/clone.js +2 -2
- package/dist/modules/util/comparator.js +2 -2
- package/dist/modules/util/freeze.js +1 -1
- package/dist/modules/util/namespace.js +1 -1
- package/dist/modules/util/processing.js +2 -2
- package/dist/modules/util/trimspaces.js +2 -0
- package/dist/monster.dev.js +1838 -792
- package/dist/monster.dev.js.map +1 -1
- package/dist/monster.js +2 -2
- package/package.json +13 -2
- package/source/constants.js +16 -7
- package/source/constraints/abstract.js +5 -0
- package/source/constraints/abstractoperator.js +5 -0
- package/source/constraints/andoperator.js +10 -5
- package/source/constraints/invalid.js +8 -3
- package/source/constraints/isarray.js +9 -4
- package/source/constraints/isobject.js +8 -3
- package/source/constraints/oroperator.js +10 -5
- package/source/constraints/valid.js +8 -3
- package/source/data/buildmap.js +27 -11
- package/source/data/buildtree.js +95 -0
- package/source/data/datasource/restapi/writeerror.js +49 -0
- package/source/data/datasource/restapi.js +95 -11
- package/source/data/datasource/storage/localstorage.js +15 -8
- package/source/data/datasource/storage/sessionstorage.js +16 -12
- package/source/data/datasource/storage.js +16 -7
- package/source/data/datasource.js +60 -16
- package/source/data/diff.js +8 -8
- package/source/data/extend.js +5 -5
- package/source/data/pathfinder.js +12 -6
- package/source/data/pipe.js +6 -5
- package/source/data/transformer.js +131 -24
- package/source/dom/assembler.js +2 -2
- package/source/dom/attributes.js +24 -24
- package/source/dom/constants.js +305 -12
- package/source/dom/customcontrol.js +40 -19
- package/source/dom/customelement.js +182 -102
- package/source/dom/events.js +6 -6
- package/source/dom/focusmanager.js +250 -0
- package/source/dom/locale.js +10 -5
- package/source/dom/resource/data.js +170 -0
- package/source/dom/resource/link/stylesheet.js +54 -0
- package/source/dom/resource/link.js +125 -0
- package/source/dom/resource/script.js +112 -0
- package/source/dom/resource.js +268 -0
- package/source/dom/resourcemanager.js +214 -0
- package/source/dom/template.js +40 -10
- package/source/dom/theme.js +3 -3
- package/source/dom/updater.js +115 -39
- package/source/dom/util.js +6 -6
- package/source/dom/worker/factory.js +134 -0
- package/source/i18n/formatter.js +140 -0
- package/source/i18n/locale.js +10 -8
- package/source/i18n/provider.js +4 -4
- package/source/i18n/providers/fetch.js +24 -14
- package/source/i18n/translations.js +20 -10
- package/source/logging/handler/console.js +2 -2
- package/source/logging/handler.js +2 -2
- package/source/logging/logentry.js +2 -2
- package/source/logging/logger.js +4 -4
- package/source/math/random.js +11 -5
- package/source/namespace.js +1 -1
- package/source/text/formatter.js +244 -27
- package/source/types/base.js +4 -4
- package/source/types/basewithoptions.js +10 -15
- package/source/types/binary.js +8 -8
- package/source/types/dataurl.js +6 -6
- package/source/types/global.js +9 -7
- package/source/types/id.js +6 -3
- package/source/types/is.js +103 -85
- package/source/types/mediatype.js +4 -4
- package/source/types/node.js +179 -0
- package/source/types/nodelist.js +125 -0
- package/source/types/noderecursiveiterator.js +126 -0
- package/source/types/observer.js +3 -3
- package/source/types/observerlist.js +3 -3
- package/source/types/proxyobserver.js +24 -7
- package/source/types/queue.js +6 -6
- package/source/types/randomid.js +2 -2
- package/source/types/regex.js +49 -0
- package/source/types/stack.js +2 -2
- package/source/types/tokenlist.js +8 -9
- package/source/types/typeof.js +3 -3
- package/source/types/uniquequeue.js +4 -4
- package/source/types/uuid.js +102 -0
- package/source/types/validate.js +20 -20
- package/source/types/version.js +6 -6
- package/source/util/clone.js +5 -6
- package/source/util/comparator.js +5 -5
- package/source/util/freeze.js +5 -5
- package/source/util/processing.js +33 -36
- package/source/util/trimspaces.js +85 -0
- package/test/cases/data/buildtree.js +149 -0
- package/test/cases/data/datasource/restapi.js +1 -1
- package/test/cases/data/datasource.js +4 -4
- package/test/cases/data/diff.js +4 -4
- package/test/cases/data/pathfinder.js +18 -9
- package/test/cases/data/pipe.js +26 -2
- package/test/cases/data/transformer.js +41 -10
- package/test/cases/dom/attributes.js +18 -14
- package/test/cases/dom/customcontrol.js +6 -5
- package/test/cases/dom/customelement.js +25 -26
- package/test/cases/dom/focusmanager.js +111 -0
- package/test/cases/dom/locale.js +1 -4
- package/test/cases/dom/resource/data.js +129 -0
- package/test/cases/dom/resource/link/stylesheet.js +101 -0
- package/test/cases/dom/resource/link.js +101 -0
- package/test/cases/dom/resource/script.js +115 -0
- package/test/cases/dom/resourcemanager.js +118 -0
- package/test/cases/dom/updater.js +42 -19
- package/test/cases/dom/worker/factory.js +63 -0
- package/test/cases/i18n/formatter.js +66 -0
- package/test/cases/monster.js +1 -1
- package/test/cases/text/formatter.js +71 -8
- package/test/cases/types/node.js +196 -0
- package/test/cases/types/nodelist.js +64 -0
- package/test/cases/types/noderecursiveiterator.js +54 -0
- package/test/cases/types/proxyobserver.js +55 -11
- package/test/cases/types/regex.js +32 -0
- package/test/cases/types/uuid.js +42 -0
- package/test/cases/util/freeze.js +30 -4
- package/test/cases/util/trimspaces.js +24 -0
- package/test/util/cleanupdom.js +48 -0
- package/test/util/jsdom.js +22 -9
- package/test/web/import.js +15 -0
- package/test/web/monster-dev.html +3 -3
- package/test/web/monster.html +2 -2
- package/test/web/test.html +3 -3
- package/test/web/tests.js +7 -7
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @author schukai GmbH
|
|
5
|
+
*/
|
|
6
|
+
import {assignToNamespace, Monster} from '../namespace.js';
|
|
7
|
+
import {isArray, isInstance} from "./is.js";
|
|
8
|
+
import {Node} from "./node.js";
|
|
9
|
+
import {validateInstance} from "./validate.js";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* You can create the instance via the monster namespace `new Monster.Types.NodeList()`.
|
|
13
|
+
*
|
|
14
|
+
* ```
|
|
15
|
+
* <script type="module">
|
|
16
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/monster.js';
|
|
17
|
+
* new Monster.Types.NodeList()
|
|
18
|
+
* </script>
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* Alternatively, you can also integrate this function individually.
|
|
22
|
+
*
|
|
23
|
+
* ```
|
|
24
|
+
* <script type="module">
|
|
25
|
+
* import {NodeList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/nodelist.js';
|
|
26
|
+
* new NodeList()
|
|
27
|
+
* </script>
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @since 1.26.0
|
|
31
|
+
* @copyright schukai GmbH
|
|
32
|
+
* @memberOf Monster.Types
|
|
33
|
+
* @summary A NodeList class
|
|
34
|
+
*/
|
|
35
|
+
class NodeList extends Set {
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @throws {Error} invalid value type
|
|
39
|
+
* @param {NodeList|Node|Array<Node>}values
|
|
40
|
+
*/
|
|
41
|
+
constructor(values) {
|
|
42
|
+
super();
|
|
43
|
+
|
|
44
|
+
const self = this
|
|
45
|
+
|
|
46
|
+
if(values===undefined) return;
|
|
47
|
+
|
|
48
|
+
if (isArray(values)) {
|
|
49
|
+
values.forEach(value => self.add(value));
|
|
50
|
+
} else if (isInstance(values, NodeList)) {
|
|
51
|
+
values.forEach(value => self.add(value));
|
|
52
|
+
} else if (isInstance(values, Node)) {
|
|
53
|
+
self.add(values);
|
|
54
|
+
} else {
|
|
55
|
+
throw new Error('invalid value type');
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
*
|
|
63
|
+
* @param {Node} node
|
|
64
|
+
* @return {Monster.Types.NodeList}
|
|
65
|
+
*/
|
|
66
|
+
add(node) {
|
|
67
|
+
super.add(validateInstance(node, Node));
|
|
68
|
+
return this;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* @param {Node} node
|
|
73
|
+
* @returns {NodeList}
|
|
74
|
+
*/
|
|
75
|
+
remove(node) {
|
|
76
|
+
super.delete(validateInstance(node, Node));
|
|
77
|
+
return this;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* @param {Node} node
|
|
82
|
+
* @returns {boolean}
|
|
83
|
+
*/
|
|
84
|
+
has(node) {
|
|
85
|
+
return super.has(validateInstance(node, Node));
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* @returns {NodeList}
|
|
91
|
+
*/
|
|
92
|
+
clear() {
|
|
93
|
+
super.clear();
|
|
94
|
+
return this;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* @returns {NodeList}
|
|
99
|
+
*/
|
|
100
|
+
toArray() {
|
|
101
|
+
return Array.from(this);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* @returns {NodeList}
|
|
106
|
+
*/
|
|
107
|
+
toJSON() {
|
|
108
|
+
return this.toArray();
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* @returns {NodeList}
|
|
113
|
+
*/
|
|
114
|
+
toString() {
|
|
115
|
+
return this.toArray().toString();
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
get length() {
|
|
119
|
+
return super.size;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
assignToNamespace('Monster.Types', NodeList);
|
|
125
|
+
export {Monster, NodeList}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @author schukai GmbH
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
import {internalSymbol} from "../constants.js";
|
|
9
|
+
import {assignToNamespace, Monster} from '../namespace.js';
|
|
10
|
+
import {Base} from './base.js';
|
|
11
|
+
import {validateInstance} from "./validate.js";
|
|
12
|
+
import {Node} from "./node.js";
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* You can create the instance via the monster namespace `new Monster.Types.NodeRecursiveIterator()`.
|
|
17
|
+
*
|
|
18
|
+
* ```
|
|
19
|
+
* <script type="module">
|
|
20
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/monster.js';
|
|
21
|
+
* new Monster.Types.NodeRecursiveIterator()
|
|
22
|
+
* </script>
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* Alternatively, you can also integrate this function individually.
|
|
26
|
+
*
|
|
27
|
+
* ```
|
|
28
|
+
* <script type="module">
|
|
29
|
+
* import {NodeRecursiveIterator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/noderecursiveiterator.js';
|
|
30
|
+
* new NodeRecursiveIterator()
|
|
31
|
+
* </script>
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* import {Node} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/node.js';
|
|
36
|
+
* import {NodeRecursiveIterator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/noderecursiveiterator.js';
|
|
37
|
+
*
|
|
38
|
+
* const node =new Node('1')
|
|
39
|
+
*
|
|
40
|
+
* // 1
|
|
41
|
+
* // 2
|
|
42
|
+
* // ├ 2.1
|
|
43
|
+
* // ├ 2.2
|
|
44
|
+
* // └ 2.3
|
|
45
|
+
* // 3
|
|
46
|
+
* // 4
|
|
47
|
+
* // ├ 4.1
|
|
48
|
+
* // └ 4.2
|
|
49
|
+
* node.appendChild(
|
|
50
|
+
* (new Node('2'))
|
|
51
|
+
* .appendChild(new Node('2.1'))
|
|
52
|
+
* .appendChild(new Node('2.2'))
|
|
53
|
+
* .appendChild(new Node('2.3')))
|
|
54
|
+
* .appendChild(new Node('3'))
|
|
55
|
+
* .appendChild(new Node('4')
|
|
56
|
+
* .appendChild(new Node('4.1'))
|
|
57
|
+
* .appendChild(new Node('4.2')));
|
|
58
|
+
*
|
|
59
|
+
* const iterator = new NodeRecursiveIterator(node);
|
|
60
|
+
*
|
|
61
|
+
* const result = [];
|
|
62
|
+
* for (const n of iterator) {
|
|
63
|
+
* result.push(n.value);
|
|
64
|
+
* }
|
|
65
|
+
*
|
|
66
|
+
* // ↦ ['1', '2', '2.1', '2.2', '2.3', '3', '4', '4.1', '4.2']
|
|
67
|
+
*
|
|
68
|
+
* @since 1.26.0
|
|
69
|
+
* @copyright schukai GmbH
|
|
70
|
+
* @memberOf Monster.Types
|
|
71
|
+
* @summary An iterator to run recursively through a tree of nodes
|
|
72
|
+
*/
|
|
73
|
+
class NodeRecursiveIterator extends Base {
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* @param {Node} [data]
|
|
77
|
+
*/
|
|
78
|
+
constructor(node) {
|
|
79
|
+
super();
|
|
80
|
+
this[internalSymbol] = validateInstance(node, Node);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* @private
|
|
85
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/yield
|
|
86
|
+
*/
|
|
87
|
+
[Symbol.iterator] = function* () {
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* The end of the generator function is reached. In this case, execution of the generator
|
|
91
|
+
* ends and an IteratorResult is returned to the caller in which the value is undefined and done is true.
|
|
92
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/yield
|
|
93
|
+
*/
|
|
94
|
+
if (this[internalSymbol] === undefined) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
yield this[internalSymbol];
|
|
99
|
+
|
|
100
|
+
if (this[internalSymbol].hasChildNodes()) {
|
|
101
|
+
let childNodes = this[internalSymbol].childNodes;
|
|
102
|
+
|
|
103
|
+
for (let node of childNodes) {
|
|
104
|
+
yield* new NodeRecursiveIterator(node);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* @param {function} callback
|
|
113
|
+
* @return {Monster.Types.NodeRecursiveIterator}
|
|
114
|
+
*/
|
|
115
|
+
forEach(callback) {
|
|
116
|
+
for (const node of this) {
|
|
117
|
+
callback(node);
|
|
118
|
+
}
|
|
119
|
+
return this;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
assignToNamespace('Monster.Types', NodeRecursiveIterator);
|
|
126
|
+
export {Monster, NodeRecursiveIterator}
|
package/source/types/observer.js
CHANGED
|
@@ -17,7 +17,7 @@ import {UniqueQueue} from './uniquequeue.js';
|
|
|
17
17
|
*
|
|
18
18
|
* ```
|
|
19
19
|
* <script type="module">
|
|
20
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
20
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/monster.js';
|
|
21
21
|
* console.log(new Monster.Types.Observer())
|
|
22
22
|
* </script>
|
|
23
23
|
* ```
|
|
@@ -26,7 +26,7 @@ import {UniqueQueue} from './uniquequeue.js';
|
|
|
26
26
|
*
|
|
27
27
|
* ```
|
|
28
28
|
* <script type="module">
|
|
29
|
-
* import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
29
|
+
* import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/observer.js';
|
|
30
30
|
* console.log(new Observer())
|
|
31
31
|
* </script>
|
|
32
32
|
* ```
|
|
@@ -60,7 +60,7 @@ import {UniqueQueue} from './uniquequeue.js';
|
|
|
60
60
|
*
|
|
61
61
|
* @example
|
|
62
62
|
*
|
|
63
|
-
* import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
63
|
+
* import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/observer.js';
|
|
64
64
|
*
|
|
65
65
|
* const observer = new Observer(function(a, b, c) {
|
|
66
66
|
* console.log(this, a, b, c); // ↦ "a", 2, true
|
|
@@ -16,7 +16,7 @@ import {validateInstance} from "./validate.js";
|
|
|
16
16
|
*
|
|
17
17
|
* ```
|
|
18
18
|
* <script type="module">
|
|
19
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
19
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/monster.js';
|
|
20
20
|
* console.log(new Monster.Types.ObserverList())
|
|
21
21
|
* console.log(new Monster.Types.ObserverList())
|
|
22
22
|
* </script>
|
|
@@ -26,7 +26,7 @@ import {validateInstance} from "./validate.js";
|
|
|
26
26
|
*
|
|
27
27
|
* ```
|
|
28
28
|
* <script type="module">
|
|
29
|
-
* import {ObserverList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
29
|
+
* import {ObserverList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/observerlist.js';
|
|
30
30
|
* console.log(ObserverList())
|
|
31
31
|
* console.log(ObserverList())
|
|
32
32
|
* </script>
|
|
@@ -104,7 +104,7 @@ class ObserverList extends Base {
|
|
|
104
104
|
|
|
105
105
|
let pomises = []
|
|
106
106
|
|
|
107
|
-
|
|
107
|
+
let i = 0, l = this.observers.length;
|
|
108
108
|
for (; i < l; i++) {
|
|
109
109
|
pomises.push(this.observers[i].update(subject));
|
|
110
110
|
}
|
|
@@ -9,6 +9,7 @@ import {isArray, isObject, isPrimitive} from "./is.js";
|
|
|
9
9
|
import {Observer} from "./observer.js";
|
|
10
10
|
import {ObserverList} from "./observerlist.js";
|
|
11
11
|
import {validateObject} from "./validate.js";
|
|
12
|
+
import {extend} from "../data/extend.js";
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* An observer manages a callback function
|
|
@@ -17,8 +18,8 @@ import {validateObject} from "./validate.js";
|
|
|
17
18
|
*
|
|
18
19
|
* ```
|
|
19
20
|
* <script type="module">
|
|
20
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
21
|
-
*
|
|
21
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/monster.js';
|
|
22
|
+
* new Monster.Types.ProxyObserver()
|
|
22
23
|
* </script>
|
|
23
24
|
* ```
|
|
24
25
|
*
|
|
@@ -26,8 +27,8 @@ import {validateObject} from "./validate.js";
|
|
|
26
27
|
*
|
|
27
28
|
* ```
|
|
28
29
|
* <script type="module">
|
|
29
|
-
* import {ProxyObserver} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
30
|
-
*
|
|
30
|
+
* import {ProxyObserver} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/proxyobserver.js';
|
|
31
|
+
* new ProxyObserver()
|
|
31
32
|
* </script>
|
|
32
33
|
* ```
|
|
33
34
|
*
|
|
@@ -37,9 +38,9 @@ import {validateObject} from "./validate.js";
|
|
|
37
38
|
*
|
|
38
39
|
* @example
|
|
39
40
|
*
|
|
40
|
-
* import {ProxyObserver} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
41
|
-
* import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
42
|
-
* import {isObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
41
|
+
* import {ProxyObserver} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/proxyobserver.js';
|
|
42
|
+
* import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/observer.js';
|
|
43
|
+
* import {isObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/is.js';
|
|
43
44
|
*
|
|
44
45
|
* const o = new Observer(function () {
|
|
45
46
|
* if (isObject(this) && this instanceof ProxyObserver) {
|
|
@@ -100,6 +101,22 @@ class ProxyObserver extends Base {
|
|
|
100
101
|
return this.subject
|
|
101
102
|
}
|
|
102
103
|
|
|
104
|
+
/**
|
|
105
|
+
* @since 1.24.0
|
|
106
|
+
* @param {Object} obj
|
|
107
|
+
* @return {Monster.Types.ProxyObserver}
|
|
108
|
+
*/
|
|
109
|
+
setSubject(obj) {
|
|
110
|
+
|
|
111
|
+
let i, k = Object.keys(this.subject);
|
|
112
|
+
for (i = 0; i < k.length; i++) {
|
|
113
|
+
delete this.subject[k[i]];
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
this.subject = extend(this.subject, obj);
|
|
117
|
+
return this;
|
|
118
|
+
}
|
|
119
|
+
|
|
103
120
|
/**
|
|
104
121
|
* get the proxied object
|
|
105
122
|
*
|
package/source/types/queue.js
CHANGED
|
@@ -7,12 +7,12 @@ import {assignToNamespace, Monster} from '../namespace.js';
|
|
|
7
7
|
import {Base} from './base.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
* You can
|
|
10
|
+
* You can create the instance via the monster namespace `new Monster.Types.Queue()`.
|
|
11
11
|
*
|
|
12
12
|
* ```
|
|
13
13
|
* <script type="module">
|
|
14
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
15
|
-
*
|
|
14
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/monster.js';
|
|
15
|
+
* new Monster.Types.Queue()
|
|
16
16
|
* </script>
|
|
17
17
|
* ```
|
|
18
18
|
*
|
|
@@ -20,14 +20,14 @@ import {Base} from './base.js';
|
|
|
20
20
|
*
|
|
21
21
|
* ```
|
|
22
22
|
* <script type="module">
|
|
23
|
-
* import {
|
|
24
|
-
*
|
|
23
|
+
* import {Queue} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/queue.js';
|
|
24
|
+
* new Queue()
|
|
25
25
|
* </script>
|
|
26
26
|
* ```
|
|
27
27
|
*
|
|
28
28
|
* @example
|
|
29
29
|
*
|
|
30
|
-
* import {Queue} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
30
|
+
* import {Queue} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/queue.js';
|
|
31
31
|
*
|
|
32
32
|
* const queue = new Queue;
|
|
33
33
|
*
|
package/source/types/randomid.js
CHANGED
|
@@ -19,7 +19,7 @@ let internalCounter = 0;
|
|
|
19
19
|
*
|
|
20
20
|
* ```
|
|
21
21
|
* <script type="module">
|
|
22
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
22
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/monster.js';
|
|
23
23
|
* console.log(new Monster.Types.RandomID())
|
|
24
24
|
* </script>
|
|
25
25
|
* ```
|
|
@@ -28,7 +28,7 @@ let internalCounter = 0;
|
|
|
28
28
|
*
|
|
29
29
|
* ```
|
|
30
30
|
* <script type="module">
|
|
31
|
-
* import {RandomID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
31
|
+
* import {RandomID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/randomid.js';
|
|
32
32
|
* console.log(new RandomID())
|
|
33
33
|
* </script>
|
|
34
34
|
* ```
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @author schukai GmbH
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
import {assignToNamespace, Monster} from "../namespace.js";
|
|
9
|
+
import {validateString} from "./validate.js";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* This function prefixes all special characters that may appear in a regex with a slash.
|
|
13
|
+
*
|
|
14
|
+
* You can call the method via the monster namespace `Monster.Types.escapeString()`.
|
|
15
|
+
*
|
|
16
|
+
* ```
|
|
17
|
+
* <script type="module">
|
|
18
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/monster.js';
|
|
19
|
+
* Monster.Types.escapeString()
|
|
20
|
+
* </script>
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* Alternatively, you can also integrate this function individually.
|
|
24
|
+
*
|
|
25
|
+
* ```
|
|
26
|
+
* <script type="module">
|
|
27
|
+
* import {escapeString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/validate.js';
|
|
28
|
+
* escapeString()
|
|
29
|
+
* </script>
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* @param {string} value
|
|
33
|
+
* @return {string}
|
|
34
|
+
* @since 1.26.0
|
|
35
|
+
* @copyright schukai GmbH
|
|
36
|
+
* @memberOf Monster.Types
|
|
37
|
+
* @throws {TypeError} value is not a string
|
|
38
|
+
*/
|
|
39
|
+
function escapeString(value) {
|
|
40
|
+
return validateString(value)
|
|
41
|
+
.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&')
|
|
42
|
+
.replace(/-/g, '\\x2d');
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
assignToNamespace('Monster.Types', escapeString);
|
|
46
|
+
export {
|
|
47
|
+
Monster,
|
|
48
|
+
escapeString
|
|
49
|
+
}
|
package/source/types/stack.js
CHANGED
|
@@ -12,7 +12,7 @@ import {Base} from './base.js';
|
|
|
12
12
|
*
|
|
13
13
|
* ```
|
|
14
14
|
* <script type="module">
|
|
15
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
15
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/monster.js';
|
|
16
16
|
* console.log(new Monster.Types.Stack())
|
|
17
17
|
* </script>
|
|
18
18
|
* ```
|
|
@@ -21,7 +21,7 @@ import {Base} from './base.js';
|
|
|
21
21
|
*
|
|
22
22
|
* ```
|
|
23
23
|
* <script type="module">
|
|
24
|
-
* import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
24
|
+
* import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/stack.js';
|
|
25
25
|
* console.log(new Stack())
|
|
26
26
|
* </script>
|
|
27
27
|
* ```
|
|
@@ -18,9 +18,8 @@ import {Base} from './base.js';
|
|
|
18
18
|
*
|
|
19
19
|
* ```
|
|
20
20
|
* <script type="module">
|
|
21
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
22
|
-
*
|
|
23
|
-
* console.log(new Monster.Types.TokenList("myclass row"))
|
|
21
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/monster.js';
|
|
22
|
+
* new Monster.Types.TokenList("myclass row")
|
|
24
23
|
* </script>
|
|
25
24
|
* ```
|
|
26
25
|
*
|
|
@@ -28,16 +27,16 @@ import {Base} from './base.js';
|
|
|
28
27
|
*
|
|
29
28
|
* ```
|
|
30
29
|
* <script type="module">
|
|
31
|
-
* import {TokenList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
32
|
-
*
|
|
33
|
-
* console.log(new TokenList("myclass row"))
|
|
30
|
+
* import {TokenList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/tokenlist.js';
|
|
31
|
+
* new TokenList("myclass row")
|
|
34
32
|
* </script>
|
|
35
33
|
* ```
|
|
36
34
|
*
|
|
37
35
|
* This class implements the [iteration protocol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols).
|
|
38
36
|
*
|
|
39
37
|
* ```
|
|
40
|
-
*
|
|
38
|
+
* typeof new TokenList("myclass row")[Symbol.iterator];
|
|
39
|
+
* // ↦ "function"
|
|
41
40
|
* ```
|
|
42
41
|
*
|
|
43
42
|
* @since 1.2.0
|
|
@@ -194,7 +193,7 @@ class TokenList extends Base {
|
|
|
194
193
|
this.tokens.delete(token.trim());
|
|
195
194
|
}
|
|
196
195
|
} else if (typeof value !== "undefined") {
|
|
197
|
-
throw new TypeError("unsupported value");
|
|
196
|
+
throw new TypeError("unsupported value", "types/tokenlist.js");
|
|
198
197
|
}
|
|
199
198
|
|
|
200
199
|
return this;
|
|
@@ -254,7 +253,7 @@ class TokenList extends Base {
|
|
|
254
253
|
toggleValue.call(this, token);
|
|
255
254
|
}
|
|
256
255
|
} else if (typeof value !== "undefined") {
|
|
257
|
-
throw new TypeError("unsupported value");
|
|
256
|
+
throw new TypeError("unsupported value", "types/tokenlist.js");
|
|
258
257
|
}
|
|
259
258
|
|
|
260
259
|
return this;
|
package/source/types/typeof.js
CHANGED
|
@@ -14,7 +14,7 @@ import {assignToNamespace, Monster} from '../namespace.js';
|
|
|
14
14
|
*
|
|
15
15
|
* ```
|
|
16
16
|
* <script type="module">
|
|
17
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
17
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/monster.js';
|
|
18
18
|
* console.log(Monster.Types.typeOf())
|
|
19
19
|
* </script>
|
|
20
20
|
* ```
|
|
@@ -23,14 +23,14 @@ import {assignToNamespace, Monster} from '../namespace.js';
|
|
|
23
23
|
*
|
|
24
24
|
* ```
|
|
25
25
|
* <script type="module">
|
|
26
|
-
* import {typeOf} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
26
|
+
* import {typeOf} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/typeof.js';
|
|
27
27
|
* console.log(typeOf())
|
|
28
28
|
* </script>
|
|
29
29
|
* ```
|
|
30
30
|
*
|
|
31
31
|
* @example
|
|
32
32
|
*
|
|
33
|
-
* import {typeOf} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
33
|
+
* import {typeOf} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/typeof.js';
|
|
34
34
|
*
|
|
35
35
|
* console.log(typeOf(undefined)); // ↦ undefined
|
|
36
36
|
* console.log(typeOf("")); // ↦ string
|
|
@@ -13,8 +13,8 @@ import {validateObject} from "./validate.js";
|
|
|
13
13
|
*
|
|
14
14
|
* ```
|
|
15
15
|
* <script type="module">
|
|
16
|
-
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
17
|
-
*
|
|
16
|
+
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/monster.js';
|
|
17
|
+
* new Monster.Types.UniqueQueue()
|
|
18
18
|
* </script>
|
|
19
19
|
* ```
|
|
20
20
|
*
|
|
@@ -22,8 +22,8 @@ import {validateObject} from "./validate.js";
|
|
|
22
22
|
*
|
|
23
23
|
* ```
|
|
24
24
|
* <script type="module">
|
|
25
|
-
* import {UniqueQueue} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.
|
|
26
|
-
*
|
|
25
|
+
* import {UniqueQueue} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/uniquequeue.js';
|
|
26
|
+
* new UniqueQueue()
|
|
27
27
|
* </script>
|
|
28
28
|
* ```
|
|
29
29
|
*
|