@schukai/monster 1.25.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.
Files changed (197) hide show
  1. package/CHANGELOG +15 -0
  2. package/README.md +3 -3
  3. package/dist/modules/constants.js +1 -1
  4. package/dist/modules/constraints/abstract.js +1 -1
  5. package/dist/modules/constraints/abstractoperator.js +1 -1
  6. package/dist/modules/constraints/andoperator.js +1 -1
  7. package/dist/modules/constraints/invalid.js +1 -1
  8. package/dist/modules/constraints/isarray.js +1 -1
  9. package/dist/modules/constraints/isobject.js +1 -1
  10. package/dist/modules/constraints/namespace.js +1 -1
  11. package/dist/modules/constraints/oroperator.js +1 -1
  12. package/dist/modules/constraints/valid.js +1 -1
  13. package/dist/modules/data/buildmap.js +2 -2
  14. package/dist/modules/data/buildtree.js +2 -0
  15. package/dist/modules/data/datasource/namespace.js +1 -1
  16. package/dist/modules/data/datasource/restapi/writeerror.js +1 -1
  17. package/dist/modules/data/datasource/restapi.js +1 -1
  18. package/dist/modules/data/datasource/storage/localstorage.js +1 -1
  19. package/dist/modules/data/datasource/storage/namespace.js +1 -1
  20. package/dist/modules/data/datasource/storage/sessionstorage.js +1 -1
  21. package/dist/modules/data/datasource/storage.js +1 -1
  22. package/dist/modules/data/datasource.js +1 -1
  23. package/dist/modules/data/diff.js +1 -1
  24. package/dist/modules/data/extend.js +1 -1
  25. package/dist/modules/data/namespace.js +1 -1
  26. package/dist/modules/data/pathfinder.js +1 -1
  27. package/dist/modules/data/pipe.js +1 -1
  28. package/dist/modules/data/transformer.js +1 -1
  29. package/dist/modules/dom/assembler.js +1 -1
  30. package/dist/modules/dom/attributes.js +1 -1
  31. package/dist/modules/dom/constants.js +1 -1
  32. package/dist/modules/dom/customcontrol.js +1 -1
  33. package/dist/modules/dom/customelement.js +1 -1
  34. package/dist/modules/dom/events.js +1 -1
  35. package/dist/modules/dom/focusmanager.js +1 -1
  36. package/dist/modules/dom/locale.js +1 -1
  37. package/dist/modules/dom/namespace.js +1 -1
  38. package/dist/modules/dom/resource/data.js +1 -1
  39. package/dist/modules/dom/resource/link/stylesheet.js +1 -1
  40. package/dist/modules/dom/resource/link.js +1 -1
  41. package/dist/modules/dom/resource/script.js +1 -1
  42. package/dist/modules/dom/resource.js +1 -1
  43. package/dist/modules/dom/resourcemanager.js +1 -1
  44. package/dist/modules/dom/template.js +1 -1
  45. package/dist/modules/dom/theme.js +1 -1
  46. package/dist/modules/dom/updater.js +2 -2
  47. package/dist/modules/dom/util.js +1 -1
  48. package/dist/modules/dom/worker/factory.js +1 -1
  49. package/dist/modules/i18n/formatter.js +2 -0
  50. package/dist/modules/i18n/locale.js +1 -1
  51. package/dist/modules/i18n/namespace.js +1 -1
  52. package/dist/modules/i18n/provider.js +1 -1
  53. package/dist/modules/i18n/providers/fetch.js +1 -1
  54. package/dist/modules/i18n/providers/namespace.js +1 -1
  55. package/dist/modules/i18n/translations.js +1 -1
  56. package/dist/modules/logging/handler/console.js +1 -1
  57. package/dist/modules/logging/handler/namespace.js +1 -1
  58. package/dist/modules/logging/handler.js +1 -1
  59. package/dist/modules/logging/logentry.js +1 -1
  60. package/dist/modules/logging/logger.js +1 -1
  61. package/dist/modules/logging/namespace.js +1 -1
  62. package/dist/modules/math/namespace.js +1 -1
  63. package/dist/modules/math/random.js +1 -1
  64. package/dist/modules/monster.js +1 -1
  65. package/dist/modules/namespace.js +1 -1
  66. package/dist/modules/text/formatter.js +2 -2
  67. package/dist/modules/text/namespace.js +1 -1
  68. package/dist/modules/types/base.js +1 -1
  69. package/dist/modules/types/basewithoptions.js +1 -1
  70. package/dist/modules/types/binary.js +1 -1
  71. package/dist/modules/types/dataurl.js +1 -1
  72. package/dist/modules/types/global.js +1 -1
  73. package/dist/modules/types/id.js +1 -1
  74. package/dist/modules/types/is.js +2 -2
  75. package/dist/modules/types/mediatype.js +1 -1
  76. package/dist/modules/types/namespace.js +1 -1
  77. package/dist/modules/types/node.js +2 -0
  78. package/dist/modules/types/nodelist.js +2 -0
  79. package/dist/modules/types/noderecursiveiterator.js +2 -0
  80. package/dist/modules/types/observer.js +1 -1
  81. package/dist/modules/types/observerlist.js +1 -1
  82. package/dist/modules/types/proxyobserver.js +1 -1
  83. package/dist/modules/types/queue.js +1 -1
  84. package/dist/modules/types/randomid.js +1 -1
  85. package/dist/modules/types/regex.js +2 -0
  86. package/dist/modules/types/stack.js +1 -1
  87. package/dist/modules/types/tokenlist.js +1 -1
  88. package/dist/modules/types/typeof.js +1 -1
  89. package/dist/modules/types/uniquequeue.js +1 -1
  90. package/dist/modules/types/uuid.js +1 -1
  91. package/dist/modules/types/validate.js +1 -1
  92. package/dist/modules/types/version.js +2 -2
  93. package/dist/modules/util/clone.js +1 -1
  94. package/dist/modules/util/comparator.js +1 -1
  95. package/dist/modules/util/freeze.js +1 -1
  96. package/dist/modules/util/namespace.js +1 -1
  97. package/dist/modules/util/processing.js +1 -1
  98. package/dist/modules/util/trimspaces.js +1 -1
  99. package/dist/monster.dev.js +620 -361
  100. package/dist/monster.dev.js.map +1 -1
  101. package/dist/monster.js +2 -2
  102. package/package.json +13 -2
  103. package/source/constraints/abstract.js +5 -0
  104. package/source/constraints/abstractoperator.js +5 -0
  105. package/source/constraints/andoperator.js +10 -5
  106. package/source/constraints/invalid.js +8 -3
  107. package/source/constraints/isarray.js +9 -4
  108. package/source/constraints/isobject.js +8 -3
  109. package/source/constraints/oroperator.js +10 -5
  110. package/source/constraints/valid.js +8 -3
  111. package/source/data/buildmap.js +25 -9
  112. package/source/data/buildtree.js +95 -0
  113. package/source/data/datasource/restapi.js +3 -3
  114. package/source/data/datasource/storage/localstorage.js +2 -2
  115. package/source/data/datasource/storage/sessionstorage.js +2 -2
  116. package/source/data/datasource/storage.js +3 -3
  117. package/source/data/datasource.js +3 -3
  118. package/source/data/diff.js +3 -3
  119. package/source/data/extend.js +2 -2
  120. package/source/data/pathfinder.js +4 -4
  121. package/source/data/pipe.js +3 -3
  122. package/source/data/transformer.js +3 -3
  123. package/source/dom/assembler.js +2 -2
  124. package/source/dom/attributes.js +24 -24
  125. package/source/dom/customcontrol.js +1 -1
  126. package/source/dom/customelement.js +1 -1
  127. package/source/dom/events.js +4 -4
  128. package/source/dom/focusmanager.js +6 -7
  129. package/source/dom/locale.js +8 -4
  130. package/source/dom/resource/data.js +2 -2
  131. package/source/dom/resource/link/stylesheet.js +2 -2
  132. package/source/dom/resource/link.js +2 -2
  133. package/source/dom/resource/script.js +2 -2
  134. package/source/dom/resource.js +2 -2
  135. package/source/dom/resourcemanager.js +2 -2
  136. package/source/dom/template.js +5 -5
  137. package/source/dom/theme.js +3 -3
  138. package/source/dom/updater.js +5 -5
  139. package/source/dom/util.js +6 -6
  140. package/source/dom/worker/factory.js +2 -2
  141. package/source/i18n/formatter.js +140 -0
  142. package/source/i18n/locale.js +6 -4
  143. package/source/i18n/provider.js +2 -2
  144. package/source/i18n/providers/fetch.js +18 -3
  145. package/source/i18n/translations.js +18 -9
  146. package/source/logging/handler/console.js +2 -2
  147. package/source/logging/handler.js +2 -2
  148. package/source/logging/logentry.js +2 -2
  149. package/source/logging/logger.js +2 -2
  150. package/source/math/random.js +2 -2
  151. package/source/namespace.js +1 -1
  152. package/source/text/formatter.js +190 -48
  153. package/source/types/base.js +2 -2
  154. package/source/types/basewithoptions.js +2 -2
  155. package/source/types/binary.js +4 -4
  156. package/source/types/dataurl.js +4 -4
  157. package/source/types/global.js +4 -4
  158. package/source/types/id.js +6 -3
  159. package/source/types/is.js +100 -82
  160. package/source/types/mediatype.js +4 -4
  161. package/source/types/node.js +179 -0
  162. package/source/types/nodelist.js +125 -0
  163. package/source/types/noderecursiveiterator.js +126 -0
  164. package/source/types/observer.js +3 -3
  165. package/source/types/observerlist.js +2 -2
  166. package/source/types/proxyobserver.js +5 -5
  167. package/source/types/queue.js +4 -4
  168. package/source/types/randomid.js +2 -2
  169. package/source/types/regex.js +49 -0
  170. package/source/types/stack.js +2 -2
  171. package/source/types/tokenlist.js +2 -2
  172. package/source/types/typeof.js +3 -3
  173. package/source/types/uniquequeue.js +2 -2
  174. package/source/types/uuid.js +2 -2
  175. package/source/types/validate.js +20 -20
  176. package/source/types/version.js +6 -6
  177. package/source/util/clone.js +2 -2
  178. package/source/util/comparator.js +3 -3
  179. package/source/util/freeze.js +2 -2
  180. package/source/util/processing.js +3 -3
  181. package/source/util/trimspaces.js +2 -2
  182. package/test/cases/data/buildtree.js +149 -0
  183. package/test/cases/dom/attributes.js +18 -14
  184. package/test/cases/dom/resource/link/stylesheet.js +1 -1
  185. package/test/cases/i18n/formatter.js +66 -0
  186. package/test/cases/monster.js +1 -1
  187. package/test/cases/text/formatter.js +36 -5
  188. package/test/cases/types/node.js +196 -0
  189. package/test/cases/types/nodelist.js +64 -0
  190. package/test/cases/types/noderecursiveiterator.js +54 -0
  191. package/test/cases/types/regex.js +32 -0
  192. package/test/util/jsdom.js +0 -1
  193. package/test/web/import.js +6 -0
  194. package/test/web/monster-dev.html +3 -3
  195. package/test/web/monster.html +2 -2
  196. package/test/web/test.html +2 -2
  197. package/test/web/tests.js +3 -3
@@ -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}
@@ -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.25.0/dist/modules/types/observer.js';
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.25.0/dist/modules/types/observer.js';
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.25.0/dist/modules/types/observer.js';
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.25.0/dist/modules/types/observerlist.js';
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.25.0/dist/modules/types/observerlist.js';
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>
@@ -18,7 +18,7 @@ import {extend} from "../data/extend.js";
18
18
  *
19
19
  * ```
20
20
  * <script type="module">
21
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.25.0/dist/modules/types/proxyobserver.js';
21
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/monster.js';
22
22
  * new Monster.Types.ProxyObserver()
23
23
  * </script>
24
24
  * ```
@@ -27,7 +27,7 @@ import {extend} from "../data/extend.js";
27
27
  *
28
28
  * ```
29
29
  * <script type="module">
30
- * import {ProxyObserver} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.25.0/dist/modules/types/proxyobserver.js';
30
+ * import {ProxyObserver} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/proxyobserver.js';
31
31
  * new ProxyObserver()
32
32
  * </script>
33
33
  * ```
@@ -38,9 +38,9 @@ import {extend} from "../data/extend.js";
38
38
  *
39
39
  * @example
40
40
  *
41
- * import {ProxyObserver} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.25.0/dist/modules/types/proxyobserver.js';
42
- * import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.25.0/dist/modules/types/observer.js';
43
- * import {isObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.25.0/dist/modules/types/is.js';
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';
44
44
  *
45
45
  * const o = new Observer(function () {
46
46
  * if (isObject(this) && this instanceof ProxyObserver) {
@@ -7,11 +7,11 @@ import {assignToNamespace, Monster} from '../namespace.js';
7
7
  import {Base} from './base.js';
8
8
 
9
9
  /**
10
- * You can call the method via the monster namespace `new Monster.Types.Queue()`.
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.25.0/dist/modules/types/queue.js';
14
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/monster.js';
15
15
  * new Monster.Types.Queue()
16
16
  * </script>
17
17
  * ```
@@ -20,14 +20,14 @@ import {Base} from './base.js';
20
20
  *
21
21
  * ```
22
22
  * <script type="module">
23
- * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.25.0/dist/modules/types/queue.js';
23
+ * import {Queue} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/queue.js';
24
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.25.0/dist/modules/types/queue.js';
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
  *
@@ -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.25.0/dist/modules/types/randomid.js';
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.25.0/dist/modules/types/randomid.js';
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
+ }
@@ -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.25.0/dist/modules/types/stack.js';
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.25.0/dist/modules/types/stack.js';
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,7 +18,7 @@ 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.25.0/dist/modules/types/tokenlist.js';
21
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/monster.js';
22
22
  * new Monster.Types.TokenList("myclass row")
23
23
  * </script>
24
24
  * ```
@@ -27,7 +27,7 @@ import {Base} from './base.js';
27
27
  *
28
28
  * ```
29
29
  * <script type="module">
30
- * import {TokenList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.25.0/dist/modules/types/tokenlist.js';
30
+ * import {TokenList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/tokenlist.js';
31
31
  * new TokenList("myclass row")
32
32
  * </script>
33
33
  * ```
@@ -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.25.0/dist/modules/types/typeof.js';
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.25.0/dist/modules/types/typeof.js';
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.25.0/dist/modules/types/typeof.js';
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,7 +13,7 @@ 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.25.0/dist/modules/types/uniquequeue.js';
16
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/monster.js';
17
17
  * new Monster.Types.UniqueQueue()
18
18
  * </script>
19
19
  * ```
@@ -22,7 +22,7 @@ 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.25.0/dist/modules/types/uniquequeue.js';
25
+ * import {UniqueQueue} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/uniquequeue.js';
26
26
  * new UniqueQueue()
27
27
  * </script>
28
28
  * ```
@@ -18,7 +18,7 @@ import {getGlobalObject} from "./global.js";
18
18
  *
19
19
  * ```
20
20
  * <script type="module">
21
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.25.0/dist/modules/types/uuid.js';
21
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/monster.js';
22
22
  * new Monster.Types.UUID()
23
23
  * </script>
24
24
  * ```
@@ -27,7 +27,7 @@ import {getGlobalObject} from "./global.js";
27
27
  *
28
28
  * ```
29
29
  * <script type="module">
30
- * import {Base} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.25.0/dist/modules/types/uuid.js';
30
+ * import {Base} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.26.0/dist/modules/types/uuid.js';
31
31
  * new UUID()
32
32
  * </script>
33
33
  * ```