@schukai/monster 1.29.2 → 1.31.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 (194) hide show
  1. package/CHANGELOG +24 -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 -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 +2 -2
  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 +2 -2
  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 +2 -2
  27. package/dist/modules/data/pipe.js +1 -1
  28. package/dist/modules/data/transformer.js +2 -2
  29. package/dist/modules/dom/assembler.js +1 -1
  30. package/dist/modules/dom/attributes.js +2 -2
  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 +2 -2
  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/ready.js +2 -0
  39. package/dist/modules/dom/resource/data.js +1 -1
  40. package/dist/modules/dom/resource/link/stylesheet.js +1 -1
  41. package/dist/modules/dom/resource/link.js +1 -1
  42. package/dist/modules/dom/resource/script.js +1 -1
  43. package/dist/modules/dom/resource.js +1 -1
  44. package/dist/modules/dom/resourcemanager.js +2 -2
  45. package/dist/modules/dom/template.js +2 -2
  46. package/dist/modules/dom/theme.js +1 -1
  47. package/dist/modules/dom/updater.js +2 -2
  48. package/dist/modules/dom/util.js +1 -1
  49. package/dist/modules/dom/worker/factory.js +2 -2
  50. package/dist/modules/i18n/formatter.js +2 -2
  51. package/dist/modules/i18n/locale.js +1 -1
  52. package/dist/modules/i18n/namespace.js +1 -1
  53. package/dist/modules/i18n/provider.js +1 -1
  54. package/dist/modules/i18n/providers/fetch.js +1 -1
  55. package/dist/modules/i18n/providers/namespace.js +1 -1
  56. package/dist/modules/i18n/translations.js +1 -1
  57. package/dist/modules/logging/handler/console.js +1 -1
  58. package/dist/modules/logging/handler/namespace.js +1 -1
  59. package/dist/modules/logging/handler.js +1 -1
  60. package/dist/modules/logging/logentry.js +1 -1
  61. package/dist/modules/logging/logger.js +1 -1
  62. package/dist/modules/logging/namespace.js +1 -1
  63. package/dist/modules/math/namespace.js +1 -1
  64. package/dist/modules/math/random.js +2 -2
  65. package/dist/modules/monster.js +1 -1
  66. package/dist/modules/namespace.js +1 -1
  67. package/dist/modules/text/formatter.js +2 -2
  68. package/dist/modules/text/namespace.js +1 -1
  69. package/dist/modules/types/base.js +1 -1
  70. package/dist/modules/types/basewithoptions.js +2 -2
  71. package/dist/modules/types/binary.js +1 -1
  72. package/dist/modules/types/dataurl.js +2 -2
  73. package/dist/modules/types/global.js +1 -1
  74. package/dist/modules/types/id.js +2 -2
  75. package/dist/modules/types/is.js +1 -1
  76. package/dist/modules/types/mediatype.js +2 -2
  77. package/dist/modules/types/namespace.js +1 -1
  78. package/dist/modules/types/node.js +1 -1
  79. package/dist/modules/types/nodelist.js +1 -1
  80. package/dist/modules/types/noderecursiveiterator.js +1 -1
  81. package/dist/modules/types/observer.js +1 -1
  82. package/dist/modules/types/observerlist.js +1 -1
  83. package/dist/modules/types/proxyobserver.js +2 -2
  84. package/dist/modules/types/queue.js +1 -1
  85. package/dist/modules/types/randomid.js +1 -1
  86. package/dist/modules/types/regex.js +1 -1
  87. package/dist/modules/types/stack.js +1 -1
  88. package/dist/modules/types/tokenlist.js +1 -1
  89. package/dist/modules/types/typeof.js +1 -1
  90. package/dist/modules/types/uniquequeue.js +2 -2
  91. package/dist/modules/types/uuid.js +2 -2
  92. package/dist/modules/types/validate.js +1 -1
  93. package/dist/modules/types/version.js +2 -2
  94. package/dist/modules/util/clone.js +1 -1
  95. package/dist/modules/util/comparator.js +1 -1
  96. package/dist/modules/util/deadmansswitch.js +1 -1
  97. package/dist/modules/util/freeze.js +1 -1
  98. package/dist/modules/util/namespace.js +1 -1
  99. package/dist/modules/util/processing.js +1 -1
  100. package/dist/modules/util/trimspaces.js +2 -2
  101. package/dist/monster.dev.js +378 -260
  102. package/dist/monster.dev.js.map +1 -1
  103. package/dist/monster.js +2 -2
  104. package/package.json +1 -1
  105. package/source/constraints/andoperator.js +5 -5
  106. package/source/constraints/invalid.js +3 -3
  107. package/source/constraints/isarray.js +3 -3
  108. package/source/constraints/isobject.js +3 -3
  109. package/source/constraints/oroperator.js +5 -5
  110. package/source/constraints/valid.js +3 -3
  111. package/source/data/buildmap.js +12 -5
  112. package/source/data/buildtree.js +2 -2
  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 +5 -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 +26 -26
  125. package/source/dom/constants.js +11 -1
  126. package/source/dom/customcontrol.js +1 -1
  127. package/source/dom/customelement.js +125 -30
  128. package/source/dom/events.js +6 -6
  129. package/source/dom/focusmanager.js +2 -2
  130. package/source/dom/locale.js +2 -2
  131. package/source/dom/ready.js +81 -0
  132. package/source/dom/resource/data.js +2 -2
  133. package/source/dom/resource/link/stylesheet.js +2 -2
  134. package/source/dom/resource/link.js +2 -2
  135. package/source/dom/resource/script.js +2 -2
  136. package/source/dom/resource.js +2 -2
  137. package/source/dom/resourcemanager.js +2 -2
  138. package/source/dom/template.js +5 -5
  139. package/source/dom/theme.js +3 -3
  140. package/source/dom/updater.js +3 -3
  141. package/source/dom/util.js +6 -6
  142. package/source/dom/worker/factory.js +2 -2
  143. package/source/i18n/formatter.js +4 -4
  144. package/source/i18n/locale.js +4 -4
  145. package/source/i18n/provider.js +2 -2
  146. package/source/i18n/providers/fetch.js +3 -3
  147. package/source/i18n/translations.js +4 -4
  148. package/source/logging/handler/console.js +2 -2
  149. package/source/logging/handler.js +2 -2
  150. package/source/logging/logentry.js +2 -2
  151. package/source/logging/logger.js +2 -2
  152. package/source/math/random.js +2 -2
  153. package/source/namespace.js +9 -8
  154. package/source/text/formatter.js +3 -3
  155. package/source/types/base.js +2 -2
  156. package/source/types/basewithoptions.js +2 -2
  157. package/source/types/binary.js +4 -4
  158. package/source/types/dataurl.js +4 -4
  159. package/source/types/global.js +4 -4
  160. package/source/types/id.js +2 -2
  161. package/source/types/is.js +20 -20
  162. package/source/types/mediatype.js +4 -4
  163. package/source/types/node.js +2 -2
  164. package/source/types/nodelist.js +2 -2
  165. package/source/types/noderecursiveiterator.js +4 -4
  166. package/source/types/observer.js +3 -3
  167. package/source/types/observerlist.js +2 -2
  168. package/source/types/proxyobserver.js +5 -5
  169. package/source/types/queue.js +3 -3
  170. package/source/types/randomid.js +2 -2
  171. package/source/types/regex.js +2 -2
  172. package/source/types/stack.js +2 -2
  173. package/source/types/tokenlist.js +2 -2
  174. package/source/types/typeof.js +3 -3
  175. package/source/types/uniquequeue.js +2 -2
  176. package/source/types/uuid.js +2 -2
  177. package/source/types/validate.js +20 -20
  178. package/source/types/version.js +6 -6
  179. package/source/util/clone.js +2 -2
  180. package/source/util/comparator.js +3 -3
  181. package/source/util/deadmansswitch.js +3 -3
  182. package/source/util/freeze.js +2 -2
  183. package/source/util/processing.js +3 -3
  184. package/source/util/trimspaces.js +2 -2
  185. package/test/cases/dom/customelement.js +186 -5
  186. package/test/cases/dom/ready.js +42 -0
  187. package/test/cases/dom/resource/link.js +3 -5
  188. package/test/cases/monster.js +1 -1
  189. package/test/util/jsdom.js +1 -0
  190. package/test/web/import.js +1 -0
  191. package/test/web/monster-dev.html +3 -3
  192. package/test/web/monster.html +2 -2
  193. package/test/web/test.html +2 -2
  194. package/test/web/tests.js +7 -13
@@ -51,6 +51,7 @@ describe('DOM', function () {
51
51
  get defaults() {
52
52
 
53
53
  return Object.assign({}, super.defaults, {
54
+ demotest: undefined,
54
55
  templates: {
55
56
  main: '<h1></h1><article><p>test</p><div id="container"></div></article>'
56
57
  },
@@ -83,6 +84,28 @@ describe('DOM', function () {
83
84
  mocks.innerHTML = "";
84
85
  })
85
86
 
87
+ describe('CustomElement() with Config', function () {
88
+ it('should read config from tag', function () {
89
+
90
+ let mocks = document.getElementById('mocks');
91
+ mocks.innerHTML = `
92
+
93
+ <script id="config1" type="application/json">
94
+ {
95
+ "demotest":1425
96
+ }
97
+ </script>
98
+
99
+ <monster-testclass2 id="thisisatest" data-monster-options-selector="#config1">
100
+ </monster-testclass2>
101
+ `;
102
+
103
+ let monster = document.getElementById('thisisatest');
104
+ expect(monster.getOption('demotest')).is.eql(1425);
105
+
106
+ });
107
+ });
108
+
86
109
  describe('create', function () {
87
110
  it('should return custom-element object', function () {
88
111
  let d = new TestComponent();
@@ -210,7 +233,9 @@ describe('DOM', function () {
210
233
  /**
211
234
  * @link https://gitlab.schukai.com/oss/libraries/javascript/monster/-/issues/113
212
235
  */
213
- describe('Assign CSSStyle as Array', function () {
236
+ describe('Assign CSSStyle as Array with wrong type', function () {
237
+
238
+ const htmlTAG = 'monster-testclass-x1';
214
239
 
215
240
  let mocks, TestComponentX1;
216
241
  beforeEach(() => {
@@ -221,7 +246,7 @@ describe('DOM', function () {
221
246
 
222
247
  TestComponentX1 = class extends CustomElement {
223
248
  static getTag() {
224
- return "monster-testclass-x1"
249
+ return htmlTAG
225
250
  }
226
251
 
227
252
  static getCSSStyleSheet() {
@@ -247,13 +272,13 @@ describe('DOM', function () {
247
272
 
248
273
  })
249
274
 
250
- it("monster-testclassX1 should throw Exception", function (done) {
251
- let d = document.createElement('monster-testclass-x1');
275
+ it(htmlTAG + " should throw Exception", function (done) {
276
+ let d = document.createElement(htmlTAG);
252
277
 
253
278
  let div = document.getElementById('test1');
254
279
  div.append(d);
255
280
 
256
-
281
+
257
282
  expect(div).contain.html('data-monster-error="TypeError: value is not an instance of CSSStyleSheet"');
258
283
  done();
259
284
 
@@ -262,6 +287,162 @@ describe('DOM', function () {
262
287
 
263
288
  })
264
289
 
290
+
291
+ /**
292
+ * @link https://gitlab.schukai.com/oss/libraries/javascript/monster/-/issues/113
293
+ */
294
+ describe('Assign CSSStyle as Array and CSSStylesheet', function () {
295
+
296
+ const htmlTAG = 'monster-testclass-x113-2';
297
+
298
+ let mocks, TestComponentX113X2;
299
+ beforeEach(() => {
300
+
301
+ mocks = document.getElementById('mocks');
302
+ mocks.innerHTML = html1;
303
+
304
+ TestComponentX113X2 = class extends CustomElement {
305
+ static getTag() {
306
+ return htmlTAG
307
+ }
308
+
309
+ /**
310
+ * @return {Object}
311
+ */
312
+ get defaults() {
313
+ return Object.assign({}, super.defaults, {
314
+ templates: {main: '<h1>test</h1>'},
315
+ })
316
+ }
317
+
318
+
319
+ static getCSSStyleSheet() {
320
+
321
+ const s = (new CSSStyleSheet())
322
+ s.insertRule('a { color : red}');
323
+
324
+ return [s];
325
+ }
326
+ }
327
+
328
+ registerCustomElement(TestComponentX113X2)
329
+
330
+
331
+ })
332
+
333
+ it(htmlTAG + " should throw Exception 2", function (done) {
334
+ let d = document.createElement(htmlTAG);
335
+
336
+ let div = document.getElementById('test1');
337
+ div.append(d);
338
+
339
+ expect(d.shadowRoot.innerHTML).is.eq('<h1>test</h1>');
340
+ done();
341
+
342
+ })
343
+ })
344
+
345
+ /**
346
+ * @link https://gitlab.schukai.com/oss/libraries/javascript/monster/-/issues/113
347
+ */
348
+ describe('Assign CSSStyle as Array and CSS as string', function () {
349
+
350
+ const htmlTAG = 'monster-testclass-x113-21';
351
+
352
+ let mocks, TestComponentX113X22;
353
+ beforeEach(() => {
354
+
355
+ mocks = document.getElementById('mocks');
356
+ mocks.innerHTML = html1;
357
+
358
+ TestComponentX113X22 = class extends CustomElement {
359
+ static getTag() {
360
+ return htmlTAG
361
+ }
362
+
363
+ /**
364
+ * @return {Object}
365
+ */
366
+ get defaults() {
367
+ return Object.assign({}, super.defaults, {
368
+ templates: {main: '<h1>test</h1>'},
369
+ })
370
+ }
371
+
372
+
373
+ static getCSSStyleSheet() {
374
+ return 'a { color:red }';
375
+ }
376
+ }
377
+
378
+ registerCustomElement(TestComponentX113X22)
379
+
380
+
381
+ })
382
+
383
+ it(htmlTAG + " should eq <style>a { color:red }</style><h1>test</h1>", function (done) {
384
+ let d = document.createElement(htmlTAG);
385
+
386
+ let div = document.getElementById('test1');
387
+ div.append(d);
388
+
389
+
390
+ expect(d.shadowRoot.innerHTML).is.eq('<style>a { color:red }</style><h1>test</h1>');
391
+ done();
392
+
393
+ })
394
+ })
395
+ /**
396
+ * @link https://gitlab.schukai.com/oss/libraries/javascript/monster/-/issues/113
397
+ */
398
+ describe('Assign CSSStyle as Array and CSS as string', function () {
399
+
400
+ const htmlTAG = 'monster-testclass-x113-22';
401
+
402
+ let mocks, TestComponentX113X223;
403
+ beforeEach(() => {
404
+
405
+ mocks = document.getElementById('mocks');
406
+ mocks.innerHTML = html1;
407
+
408
+ TestComponentX113X223 = class extends CustomElement {
409
+ static getTag() {
410
+ return htmlTAG
411
+ }
412
+
413
+ /**
414
+ * @return {Object}
415
+ */
416
+ get defaults() {
417
+ return Object.assign({}, super.defaults, {
418
+ templates: {main: '<h1>test</h1>'},
419
+ })
420
+ }
421
+
422
+
423
+ static getCSSStyleSheet() {
424
+ return ['a { color:red }'];
425
+ }
426
+ }
427
+
428
+ registerCustomElement(TestComponentX113X223)
429
+
430
+
431
+ })
432
+
433
+ it(htmlTAG + " should eq <style>a { color:red }</style><h1>test</h1>", function (done) {
434
+ let d = document.createElement(htmlTAG);
435
+
436
+ let div = document.getElementById('test1');
437
+ div.append(d);
438
+
439
+
440
+ expect(d.shadowRoot.innerHTML).is.eq('<style>a { color:red }</style><h1>test</h1>');
441
+ done();
442
+
443
+ })
444
+ })
445
+
265
446
  describe('hasNode()', function () {
266
447
 
267
448
  let mocks;
@@ -0,0 +1,42 @@
1
+ 'use strict';
2
+
3
+
4
+ import {initJSDOM} from "../../util/jsdom.js";
5
+
6
+ let windowReady;
7
+ let domReady;
8
+
9
+ describe('Ready', function () {
10
+
11
+ before(function (done) {
12
+ initJSDOM().then(() => {
13
+
14
+ import("../../../source/dom/ready.js").then((m) => {
15
+ domReady = m['domReady'];
16
+ windowReady = m['windowReady'];
17
+ done()
18
+ });
19
+
20
+ });
21
+
22
+
23
+ })
24
+
25
+ describe('domReady', function () {
26
+
27
+ it('resolve promise', function (done) {
28
+ domReady.then(done).catch(e => done(e));
29
+ });
30
+
31
+ });
32
+
33
+ describe('windowReady', function () {
34
+
35
+ it('resolve promise', function (done) {
36
+ windowReady.then(done).catch(e => done(e));
37
+ });
38
+
39
+ });
40
+
41
+
42
+ });
@@ -12,15 +12,10 @@ let expect = chai.expect;
12
12
 
13
13
  chai.use(chaiDom);
14
14
 
15
- let html1 = `
16
-
17
- `;
18
15
 
19
16
 
20
17
  describe('Link', function () {
21
18
 
22
- let mutationobserver, addedNodes=[];
23
-
24
19
  before(function (done) {
25
20
  initJSDOM().then(() => {
26
21
  done()
@@ -36,6 +31,8 @@ describe('Link', function () {
36
31
  })
37
32
 
38
33
  describe('Link()', function () {
34
+ this.timeout(5000);
35
+
39
36
  it('connect().available()', function (done) {
40
37
 
41
38
  const link = new Link({
@@ -51,6 +48,7 @@ describe('Link', function () {
51
48
  });
52
49
 
53
50
  describe('External Link', () => {
51
+ this.timeout(5000);
54
52
 
55
53
  let id = new ID('link').toString();
56
54
  let link, url = 'https://monsterjs.org/assets/empty.css?' + id;
@@ -9,7 +9,7 @@ describe('Monster', function () {
9
9
  let monsterVersion
10
10
 
11
11
  /**#@+ dont touch, replaced by make with package.json version */
12
- monsterVersion = new Version('1.29.2')
12
+ monsterVersion = new Version('1.31.0')
13
13
  /**#@-*/
14
14
 
15
15
  let m = Monster.getVersion();
@@ -63,6 +63,7 @@ function initJSDOM(options) {
63
63
  'DocumentFragment',
64
64
  'DOMParser',
65
65
  'CSSStyleSheet',
66
+ 'HTMLScriptElement',
66
67
  'MutationObserver',
67
68
  'HTMLTemplateElement',
68
69
  'XMLSerializer',
@@ -13,6 +13,7 @@ import "../cases/dom/updater.js";
13
13
  import "../cases/dom/attributes.js";
14
14
  import "../cases/dom/template.js";
15
15
  import "../cases/dom/util.js";
16
+ import "../cases/dom/ready.js";
16
17
  import "../cases/dom/resourcemanager.js";
17
18
  import "../cases/dom/locale.js";
18
19
  import "../cases/dom/customcontrol.js";
@@ -10,13 +10,13 @@
10
10
  crossorigin="anonymous"
11
11
  referrerpolicy="no-referrer"></script>
12
12
 
13
- <script src="https://monsterjs.org/dist/1.29.2/dist/monster.dev.js"></script>
13
+ <script src="https://monsterjs.org/dist/1.31.0/dist/monster.dev.js"></script>
14
14
 
15
15
  </head>
16
16
  <body>
17
17
  <div id="headline" style="display: flex;align-items: center;justify-content: center;flex-direction: column;">
18
- <h1 style='margin-bottom: 0.1em;'>Monster 1.29.2</h1>
19
- <div id="lastupdate" style='font-size:0.7em'>last update Sa 22. Jan 09:08:33 CET 2022</div>
18
+ <h1 style='margin-bottom: 0.1em;'>Monster 1.31.0</h1>
19
+ <div id="lastupdate" style='font-size:0.7em'>last update Mo 7. Feb 15:11:34 CET 2022</div>
20
20
  </div>
21
21
  </body>
22
22
  </html>
@@ -14,8 +14,8 @@
14
14
  </head>
15
15
  <body>
16
16
  <div id="headline" style="display: flex;align-items: center;justify-content: center;flex-direction: column;">
17
- <h1 style='margin-bottom: 0.1em;'>Monster 1.29.2</h1>
18
- <div id="lastupdate" style='font-size:0.7em'>last update Sa 22. Jan 09:08:33 CET 2022</div>
17
+ <h1 style='margin-bottom: 0.1em;'>Monster 1.31.0</h1>
18
+ <div id="lastupdate" style='font-size:0.7em'>last update Mo 7. Feb 15:11:34 CET 2022</div>
19
19
  </div>
20
20
  </body>
21
21
  </html>
@@ -13,8 +13,8 @@
13
13
  </head>
14
14
  <body>
15
15
  <div id="headline" style="display: flex;align-items: center;justify-content: center;flex-direction: column;">
16
- <h1 style='margin-bottom: 0.1em;'>Monster 1.29.2</h1>
17
- <div id="lastupdate" style='font-size:0.7em'>last update Sa 22. Jan 09:08:33 CET 2022</div>
16
+ <h1 style='margin-bottom: 0.1em;'>Monster 1.31.0</h1>
17
+ <div id="lastupdate" style='font-size:0.7em'>last update Mo 7. Feb 15:11:34 CET 2022</div>
18
18
  </div>
19
19
  <div id="mocks"></div>
20
20
  <div id="mocha"></div>