@schukai/monster 1.29.2 → 1.31.0

Sign up to get free protection for your applications and to get access to all the features.
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>