@schukai/monster 1.27.0 → 1.28.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 (189) hide show
  1. package/CHANGELOG +11 -1
  2. package/README.md +4 -4
  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 -2
  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 +2 -2
  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 +1 -1
  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 +1 -1
  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 +1 -1
  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 -2
  78. package/dist/modules/types/nodelist.js +2 -2
  79. package/dist/modules/types/noderecursiveiterator.js +2 -2
  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 +1 -1
  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 +246 -231
  100. package/dist/monster.dev.js.map +1 -1
  101. package/dist/monster.js +2 -2
  102. package/package.json +1 -1
  103. package/source/constraints/andoperator.js +5 -5
  104. package/source/constraints/invalid.js +3 -3
  105. package/source/constraints/isarray.js +3 -3
  106. package/source/constraints/isobject.js +3 -3
  107. package/source/constraints/oroperator.js +5 -5
  108. package/source/constraints/valid.js +3 -3
  109. package/source/data/buildmap.js +8 -10
  110. package/source/data/buildtree.js +51 -17
  111. package/source/data/datasource/restapi.js +3 -3
  112. package/source/data/datasource/storage/localstorage.js +2 -2
  113. package/source/data/datasource/storage/sessionstorage.js +2 -2
  114. package/source/data/datasource/storage.js +3 -3
  115. package/source/data/datasource.js +3 -3
  116. package/source/data/diff.js +3 -3
  117. package/source/data/extend.js +2 -2
  118. package/source/data/pathfinder.js +4 -4
  119. package/source/data/pipe.js +3 -3
  120. package/source/data/transformer.js +3 -3
  121. package/source/dom/assembler.js +2 -2
  122. package/source/dom/attributes.js +26 -26
  123. package/source/dom/constants.js +9 -1
  124. package/source/dom/customcontrol.js +1 -1
  125. package/source/dom/customelement.js +1 -1
  126. package/source/dom/events.js +4 -4
  127. package/source/dom/focusmanager.js +2 -2
  128. package/source/dom/locale.js +2 -2
  129. package/source/dom/resource/data.js +2 -2
  130. package/source/dom/resource/link/stylesheet.js +2 -2
  131. package/source/dom/resource/link.js +2 -2
  132. package/source/dom/resource/script.js +2 -2
  133. package/source/dom/resource.js +2 -2
  134. package/source/dom/resourcemanager.js +2 -2
  135. package/source/dom/template.js +5 -5
  136. package/source/dom/theme.js +3 -3
  137. package/source/dom/updater.js +25 -13
  138. package/source/dom/util.js +6 -6
  139. package/source/dom/worker/factory.js +2 -2
  140. package/source/i18n/formatter.js +4 -4
  141. package/source/i18n/locale.js +4 -4
  142. package/source/i18n/provider.js +2 -2
  143. package/source/i18n/providers/fetch.js +3 -3
  144. package/source/i18n/translations.js +4 -4
  145. package/source/logging/handler/console.js +2 -2
  146. package/source/logging/handler.js +2 -2
  147. package/source/logging/logentry.js +2 -2
  148. package/source/logging/logger.js +2 -2
  149. package/source/math/random.js +2 -2
  150. package/source/namespace.js +1 -1
  151. package/source/text/formatter.js +3 -3
  152. package/source/types/base.js +2 -2
  153. package/source/types/basewithoptions.js +2 -2
  154. package/source/types/binary.js +4 -4
  155. package/source/types/dataurl.js +4 -4
  156. package/source/types/global.js +4 -4
  157. package/source/types/id.js +2 -2
  158. package/source/types/is.js +20 -20
  159. package/source/types/mediatype.js +4 -4
  160. package/source/types/node.js +33 -2
  161. package/source/types/nodelist.js +9 -5
  162. package/source/types/noderecursiveiterator.js +29 -7
  163. package/source/types/observer.js +3 -3
  164. package/source/types/observerlist.js +2 -2
  165. package/source/types/proxyobserver.js +5 -5
  166. package/source/types/queue.js +3 -3
  167. package/source/types/randomid.js +2 -2
  168. package/source/types/regex.js +2 -2
  169. package/source/types/stack.js +2 -2
  170. package/source/types/tokenlist.js +2 -2
  171. package/source/types/typeof.js +3 -3
  172. package/source/types/uniquequeue.js +2 -2
  173. package/source/types/uuid.js +2 -2
  174. package/source/types/validate.js +20 -20
  175. package/source/types/version.js +6 -6
  176. package/source/util/clone.js +2 -2
  177. package/source/util/comparator.js +3 -3
  178. package/source/util/freeze.js +2 -2
  179. package/source/util/processing.js +3 -3
  180. package/source/util/trimspaces.js +2 -2
  181. package/test/cases/data/buildtree.js +84 -21
  182. package/test/cases/monster.js +1 -1
  183. package/test/cases/types/node.js +57 -1
  184. package/test/cases/types/nodelist.js +7 -0
  185. package/test/cases/types/noderecursiveiterator.js +21 -0
  186. package/test/web/monster-dev.html +3 -3
  187. package/test/web/monster.html +2 -2
  188. package/test/web/test.html +3 -3
  189. package/test/web/tests.js +2 -2
@@ -15,7 +15,7 @@ import {assignToNamespace, Monster} from '../namespace.js';
15
15
  *
16
16
  * ```
17
17
  * <script type="module">
18
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/monster.js';
18
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/monster.js';
19
19
  * Monster.Types.isIterable(null) // ↦ false
20
20
  * Monster.Types.isIterable('hello') // ↦ true
21
21
  * Monster.Types.isIterable([]) // ↦ true
@@ -26,7 +26,7 @@ import {assignToNamespace, Monster} from '../namespace.js';
26
26
  *
27
27
  * ```
28
28
  * <script type="module">
29
- * import {isIterable} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/types/is.js';
29
+ * import {isIterable} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/modules/types/is.js';
30
30
  * isIterable(null) // ↦ false
31
31
  * isIterable('hello') // ↦ true
32
32
  * isIterable([]) // ↦ true
@@ -55,7 +55,7 @@ function isIterable(value) {
55
55
  *
56
56
  * ```
57
57
  * <script type="module">
58
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/monster.js';
58
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/monster.js';
59
59
  * Monster.Types.isPrimitive('2') // ↦ false
60
60
  * Monster.Types.isPrimitive([]) // ↦ true
61
61
  * </script>
@@ -65,7 +65,7 @@ function isIterable(value) {
65
65
  *
66
66
  * ```
67
67
  * <script type="module">
68
- * import {isPrimitive} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/types/is.js';
68
+ * import {isPrimitive} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/modules/types/is.js';
69
69
  * isPrimitive('2')) // ↦ true
70
70
  * isPrimitive([])) // ↦ false
71
71
  * </script>
@@ -102,7 +102,7 @@ function isPrimitive(value) {
102
102
  *
103
103
  * ```
104
104
  * <script type="module">
105
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/monster.js';
105
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/monster.js';
106
106
  * Monster.Types.isSymbol('2') // ↦ false
107
107
  * Monster.Types.isSymbol(Symbol('test') // ↦ true
108
108
  * </script>
@@ -112,7 +112,7 @@ function isPrimitive(value) {
112
112
  *
113
113
  * ```
114
114
  * <script type="module">
115
- * import {isSymbol} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/types/is.js';
115
+ * import {isSymbol} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/modules/types/is.js';
116
116
  * isSymbol(Symbol('a'))) // ↦ true
117
117
  * isSymbol([]) // ↦ false
118
118
  * </script>
@@ -137,7 +137,7 @@ function isSymbol(value) {
137
137
  *
138
138
  * ```
139
139
  * <script type="module">
140
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/monster.js';
140
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/monster.js';
141
141
  * Monster.Types.isBoolean('2') // ↦ false
142
142
  * Monster.Types.isBoolean([]) // ↦ false
143
143
  * Monster.Types.isBoolean(true) // ↦ true
@@ -148,7 +148,7 @@ function isSymbol(value) {
148
148
  *
149
149
  * ```
150
150
  * <script type="module">
151
- * import {isBoolean} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/types/is.js';
151
+ * import {isBoolean} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/modules/types/is.js';
152
152
  * isBoolean('2')) // ↦ false
153
153
  * isBoolean([])) // ↦ false
154
154
  * isBoolean(2>4)) // ↦ true
@@ -179,7 +179,7 @@ function isBoolean(value) {
179
179
  *
180
180
  * ```
181
181
  * <script type="module">
182
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/monster.js';
182
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/monster.js';
183
183
  * Monster.Types.isString('2') // ↦ true
184
184
  * Monster.Types.isString([]) // ↦ false
185
185
  * </script>
@@ -189,7 +189,7 @@ function isBoolean(value) {
189
189
  *
190
190
  * ```
191
191
  * <script type="module">
192
- * import {isString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/types/is.js';
192
+ * import {isString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/modules/types/is.js';
193
193
  * isString('2')) // ↦ true
194
194
  * isString([])) // ↦ false
195
195
  * </script>
@@ -217,7 +217,7 @@ function isString(value) {
217
217
  *
218
218
  * ```
219
219
  * <script type="module">
220
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/monster.js';
220
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/monster.js';
221
221
  * Monster.Types.isObject('2') // ↦ false
222
222
  * Monster.Types.isObject([]) // ↦ false
223
223
  * Monster.Types.isObject({}) // ↦ true
@@ -228,7 +228,7 @@ function isString(value) {
228
228
  *
229
229
  * ```
230
230
  * <script type="module">
231
- * import {isObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/types/is.js';
231
+ * import {isObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/modules/types/is.js';
232
232
  * isObject('2')) // ↦ false
233
233
  * isObject([])) // ↦ false
234
234
  * </script>
@@ -261,7 +261,7 @@ function isObject(value) {
261
261
  *
262
262
  * ```
263
263
  * <script type="module">
264
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/monster.js';
264
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/monster.js';
265
265
  * Monster.Types.isInstance('2') // ↦ false
266
266
  * Monster.Types.isInstance([]) // ↦ false
267
267
  * Monster.Types.isInstance({}) // ↦ true
@@ -272,7 +272,7 @@ function isObject(value) {
272
272
  *
273
273
  * ```
274
274
  * <script type="module">
275
- * import {isInstance} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/types/is.js';
275
+ * import {isInstance} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/modules/types/is.js';
276
276
  * isInstance('2')) // ↦ false
277
277
  * isInstance([])) // ↦ false
278
278
  * </script>
@@ -303,7 +303,7 @@ function isInstance(value, instance) {
303
303
  *
304
304
  * ```
305
305
  * <script type="module">
306
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/monster.js';
306
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/monster.js';
307
307
  * Monster.Types.isArray('2') // ↦ false
308
308
  * Monster.Types.isArray([]) // ↦ true
309
309
  * </script>
@@ -313,7 +313,7 @@ function isInstance(value, instance) {
313
313
  *
314
314
  * ```
315
315
  * <script type="module">
316
- * import {isArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/types/is.js';
316
+ * import {isArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/modules/types/is.js';
317
317
  * isArray('2')) // ↦ false
318
318
  * isArray([])) // ↦ true
319
319
  * </script>
@@ -339,7 +339,7 @@ function isArray(value) {
339
339
  *
340
340
  * ```
341
341
  * <script type="module">
342
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/monster.js';
342
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/monster.js';
343
343
  * Monster.Types.isFunction(()=>{}) // ↦ true
344
344
  * Monster.Types.isFunction('2') // ↦ false
345
345
  * Monster.Types.isFunction([]) // ↦ false
@@ -350,7 +350,7 @@ function isArray(value) {
350
350
  *
351
351
  * ```
352
352
  * <script type="module">
353
- * import {isFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/types/is.js';
353
+ * import {isFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/modules/types/is.js';
354
354
  * isFunction(()=>{}) // ↦ true
355
355
  * isFunction('2')) // ↦ false
356
356
  * isFunction([])) // ↦ false
@@ -384,7 +384,7 @@ function isFunction(value) {
384
384
  *
385
385
  * ```
386
386
  * <script type="module">
387
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/monster.js';
387
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/monster.js';
388
388
  * Monster.Types.isInteger(()=>{}) // ↦ true
389
389
  * Monster.Types.isInteger('2') // ↦ false
390
390
  * Monster.Types.isInteger(2) // ↦ true
@@ -395,7 +395,7 @@ function isFunction(value) {
395
395
  *
396
396
  * ```
397
397
  * <script type="module">
398
- * import {isInteger} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/types/is.js';
398
+ * import {isInteger} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/modules/types/is.js';
399
399
  * isInteger(()=>{}) // ↦ true
400
400
  * isInteger('2')) // ↦ false
401
401
  * isInteger(2)) // ↦ true
@@ -28,7 +28,7 @@ const internal = Symbol('internal');
28
28
  *
29
29
  * ```
30
30
  * <script type="module">
31
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/monster.js';
31
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/monster.js';
32
32
  * console.log(new Monster.Types.MediaType())
33
33
  * </script>
34
34
  * ```
@@ -37,7 +37,7 @@ const internal = Symbol('internal');
37
37
  *
38
38
  * ```
39
39
  * <script type="module">
40
- * import {MediaType} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/types/mediatype.js';
40
+ * import {MediaType} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/modules/types/mediatype.js';
41
41
  * console.log(new MediaType())
42
42
  * </script>
43
43
  * ```
@@ -137,7 +137,7 @@ class MediaType extends Base {
137
137
  *
138
138
  * ```
139
139
  * <script type="module">
140
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/monster.js';
140
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/monster.js';
141
141
  * console.log(Monster.Types.parseMediaType())
142
142
  * </script>
143
143
  * ```
@@ -146,7 +146,7 @@ class MediaType extends Base {
146
146
  *
147
147
  * ```
148
148
  * <script type="module">
149
- * import {parseMediaType} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/types/dataurl.js';
149
+ * import {parseMediaType} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/modules/types/dataurl.js';
150
150
  * console.log(parseMediaType())
151
151
  * </script>
152
152
  * ```
@@ -7,6 +7,7 @@
7
7
 
8
8
  import {assignToNamespace, Monster} from '../namespace.js';
9
9
  import {Base} from './base.js';
10
+ import {isPrimitive} from "./is.js";
10
11
  import {NodeList} from './nodelist.js';
11
12
  import {validateInstance} from './validate.js';
12
13
 
@@ -28,7 +29,7 @@ const treeStructureSymbol = Symbol('treeStructure');
28
29
  *
29
30
  * ```
30
31
  * <script type="module">
31
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/monster.js';
32
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/monster.js';
32
33
  * new Monster.Types.Node()
33
34
  * </script>
34
35
  * ```
@@ -37,7 +38,7 @@ const treeStructureSymbol = Symbol('treeStructure');
37
38
  *
38
39
  * ```
39
40
  * <script type="module">
40
- * import {Node} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/types/node.js';
41
+ * import {Node} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/modules/types/node.js';
41
42
  * new Node()
42
43
  * </script>
43
44
  * ```
@@ -152,6 +153,36 @@ class Node extends Base {
152
153
  return this[treeStructureSymbol].childNodes.has(validateInstance(node, Node));
153
154
  }
154
155
 
156
+ /**
157
+ * @since 1.28.0
158
+ * @return {string}
159
+ */
160
+ toString() {
161
+
162
+ let parts = [];
163
+ if (this[internalValueSymbol]) {
164
+ let label = this[internalValueSymbol];
165
+ if (!isPrimitive(label)) label = JSON.stringify(this[internalValueSymbol])
166
+
167
+ parts.push( label);
168
+ }
169
+
170
+ if (!this.hasChildNodes()) {
171
+ return parts.join("\n");
172
+ }
173
+
174
+ let count = this.childNodes.length,
175
+ counter = 0;
176
+
177
+ for (const node of this.childNodes) {
178
+ counter++;
179
+ const prefix = (count === counter ? '└' : '├').padStart(2 * node.level, ' |');
180
+ parts.push(prefix + node.toString());
181
+ }
182
+
183
+ return parts.join("\n");
184
+ }
185
+
155
186
  }
156
187
 
157
188
  /**
@@ -13,7 +13,7 @@ import {validateInstance} from "./validate.js";
13
13
  *
14
14
  * ```
15
15
  * <script type="module">
16
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/monster.js';
16
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/monster.js';
17
17
  * new Monster.Types.NodeList()
18
18
  * </script>
19
19
  * ```
@@ -22,7 +22,7 @@ import {validateInstance} from "./validate.js";
22
22
  *
23
23
  * ```
24
24
  * <script type="module">
25
- * import {NodeList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/types/nodelist.js';
25
+ * import {NodeList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/modules/types/nodelist.js';
26
26
  * new NodeList()
27
27
  * </script>
28
28
  * ```
@@ -54,8 +54,6 @@ class NodeList extends Set {
54
54
  } else {
55
55
  throw new Error('invalid value type');
56
56
  }
57
-
58
-
59
57
  }
60
58
 
61
59
  /**
@@ -112,7 +110,13 @@ class NodeList extends Set {
112
110
  * @returns {NodeList}
113
111
  */
114
112
  toString() {
115
- return this.toArray().toString();
113
+ let parts = [];
114
+
115
+ for(const node of this.toArray()) {
116
+ parts.push(node.toString())
117
+ }
118
+
119
+ return parts.join("\n");
116
120
  }
117
121
 
118
122
  get length() {
@@ -8,16 +8,24 @@
8
8
  import {internalSymbol} from "../constants.js";
9
9
  import {assignToNamespace, Monster} from '../namespace.js';
10
10
  import {Base} from './base.js';
11
- import {validateInstance} from "./validate.js";
11
+ import {isInstance} from "./is.js";
12
12
  import {Node} from "./node.js";
13
+ import {NodeList} from "./nodelist.js";
14
+ import {validateInstance} from "./validate.js";
15
+
13
16
 
17
+ /**
18
+ * @private
19
+ * @type {symbol}
20
+ */
21
+ const isNodeListSymbol = Symbol('isNodeList');
14
22
 
15
23
  /**
16
24
  * You can create the instance via the monster namespace `new Monster.Types.NodeRecursiveIterator()`.
17
25
  *
18
26
  * ```
19
27
  * <script type="module">
20
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/monster.js';
28
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/monster.js';
21
29
  * new Monster.Types.NodeRecursiveIterator()
22
30
  * </script>
23
31
  * ```
@@ -26,14 +34,14 @@ import {Node} from "./node.js";
26
34
  *
27
35
  * ```
28
36
  * <script type="module">
29
- * import {NodeRecursiveIterator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/types/noderecursiveiterator.js';
37
+ * import {NodeRecursiveIterator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/modules/types/noderecursiveiterator.js';
30
38
  * new NodeRecursiveIterator()
31
39
  * </script>
32
40
  * ```
33
41
  *
34
42
  * @example
35
- * import {Node} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/types/node.js';
36
- * import {NodeRecursiveIterator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/types/noderecursiveiterator.js';
43
+ * import {Node} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/modules/types/node.js';
44
+ * import {NodeRecursiveIterator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/modules/types/noderecursiveiterator.js';
37
45
  *
38
46
  * const node =new Node('1')
39
47
  *
@@ -77,6 +85,17 @@ class NodeRecursiveIterator extends Base {
77
85
  */
78
86
  constructor(node) {
79
87
  super();
88
+
89
+ this[isNodeListSymbol] = false;
90
+
91
+ // iterator is a nodelist
92
+ if (isInstance(node, NodeList)) {
93
+ let children = node;
94
+ node = new Node();
95
+ node.childNodes = children;
96
+ this[isNodeListSymbol] = true;
97
+ }
98
+
80
99
  this[internalSymbol] = validateInstance(node, Node);
81
100
  }
82
101
 
@@ -94,8 +113,11 @@ class NodeRecursiveIterator extends Base {
94
113
  if (this[internalSymbol] === undefined) {
95
114
  return;
96
115
  }
97
-
98
- yield this[internalSymbol];
116
+
117
+ // iterator is a nodelist and the main node is only a placeholder
118
+ if (this[isNodeListSymbol] !== true) {
119
+ yield this[internalSymbol];
120
+ }
99
121
 
100
122
  if (this[internalSymbol].hasChildNodes()) {
101
123
  let childNodes = this[internalSymbol].childNodes;
@@ -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.27.0/dist/monster.js';
20
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.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.27.0/dist/modules/types/observer.js';
29
+ * import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.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.27.0/dist/modules/types/observer.js';
63
+ * import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.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.27.0/dist/monster.js';
19
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.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.27.0/dist/modules/types/observerlist.js';
29
+ * import {ObserverList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.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.27.0/dist/monster.js';
21
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.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.27.0/dist/modules/types/proxyobserver.js';
30
+ * import {ProxyObserver} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.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.27.0/dist/modules/types/proxyobserver.js';
42
- * import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/types/observer.js';
43
- * import {isObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/types/is.js';
41
+ * import {ProxyObserver} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/modules/types/proxyobserver.js';
42
+ * import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/modules/types/observer.js';
43
+ * import {isObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/modules/types/is.js';
44
44
  *
45
45
  * const o = new Observer(function () {
46
46
  * if (isObject(this) && this instanceof ProxyObserver) {
@@ -11,7 +11,7 @@ import {Base} from './base.js';
11
11
  *
12
12
  * ```
13
13
  * <script type="module">
14
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/monster.js';
14
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.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 {Queue} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/types/queue.js';
23
+ * import {Queue} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.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.27.0/dist/modules/types/queue.js';
30
+ * import {Queue} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.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.27.0/dist/monster.js';
22
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.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.27.0/dist/modules/types/randomid.js';
31
+ * import {RandomID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/modules/types/randomid.js';
32
32
  * console.log(new RandomID())
33
33
  * </script>
34
34
  * ```
@@ -15,7 +15,7 @@ import {validateString} from "./validate.js";
15
15
  *
16
16
  * ```
17
17
  * <script type="module">
18
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/monster.js';
18
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/monster.js';
19
19
  * Monster.Types.escapeString()
20
20
  * </script>
21
21
  * ```
@@ -24,7 +24,7 @@ import {validateString} from "./validate.js";
24
24
  *
25
25
  * ```
26
26
  * <script type="module">
27
- * import {escapeString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.27.0/dist/modules/types/validate.js';
27
+ * import {escapeString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/modules/types/validate.js';
28
28
  * escapeString()
29
29
  * </script>
30
30
  * ```
@@ -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.27.0/dist/monster.js';
15
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.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.27.0/dist/modules/types/stack.js';
24
+ * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.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.27.0/dist/monster.js';
21
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.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.27.0/dist/modules/types/tokenlist.js';
30
+ * import {TokenList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.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.27.0/dist/monster.js';
17
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.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.27.0/dist/modules/types/typeof.js';
26
+ * import {typeOf} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.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.27.0/dist/modules/types/typeof.js';
33
+ * import {typeOf} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.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.27.0/dist/monster.js';
16
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.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.27.0/dist/modules/types/uniquequeue.js';
25
+ * import {UniqueQueue} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.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.27.0/dist/monster.js';
21
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.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.27.0/dist/modules/types/uuid.js';
30
+ * import {Base} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.28.0/dist/modules/types/uuid.js';
31
31
  * new UUID()
32
32
  * </script>
33
33
  * ```