mol_key 0.0.130 → 0.0.133

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mol_key",
3
- "version": "0.0.130",
3
+ "version": "0.0.133",
4
4
  "main": "node.js",
5
5
  "module": "node.esm.js",
6
6
  "browser": "web.js",
package/web.test.js CHANGED
@@ -272,6 +272,48 @@ var $;
272
272
  ;
273
273
  "use strict";
274
274
  var $;
275
+ (function ($_1) {
276
+ $mol_test({
277
+ 'FQN of anon function'($) {
278
+ const $$ = Object.assign($, { $mol_func_name_test: (() => () => { })() });
279
+ $mol_assert_equal($$.$mol_func_name_test.name, '');
280
+ $mol_assert_equal($$.$mol_func_name($$.$mol_func_name_test), '$mol_func_name_test');
281
+ $mol_assert_equal($$.$mol_func_name_test.name, '$mol_func_name_test');
282
+ },
283
+ });
284
+ })($ || ($ = {}));
285
+ //mol/func/name/name.test.ts
286
+ ;
287
+ "use strict";
288
+ var $;
289
+ (function ($) {
290
+ function $mol_func_name(func) {
291
+ let name = func.name;
292
+ if (name?.length > 1)
293
+ return name;
294
+ for (let key in this) {
295
+ try {
296
+ if (this[key] !== func)
297
+ continue;
298
+ name = key;
299
+ Object.defineProperty(func, 'name', { value: name });
300
+ break;
301
+ }
302
+ catch { }
303
+ }
304
+ return name;
305
+ }
306
+ $.$mol_func_name = $mol_func_name;
307
+ function $mol_func_name_from(target, source) {
308
+ Object.defineProperty(target, 'name', { value: source.name });
309
+ return target;
310
+ }
311
+ $.$mol_func_name_from = $mol_func_name_from;
312
+ })($ || ($ = {}));
313
+ //mol/func/name/name.ts
314
+ ;
315
+ "use strict";
316
+ var $;
275
317
  (function ($) {
276
318
  function $mol_dom_render_children(el, childNodes) {
277
319
  const node_set = new Set(childNodes);
@@ -458,28 +500,52 @@ var $;
458
500
  const Button = (props, target) => {
459
501
  return $mol_jsx("button", { title: props.hint }, target());
460
502
  };
461
- const dom = $mol_jsx(Button, { id: "/foo", hint: "click me" }, () => 'hey!');
462
- $mol_assert_equal(dom.outerHTML, '<button title="click me" id="/foo">hey!</button>');
503
+ const dom = $mol_jsx(Button, { id: "foo", hint: "click me" }, () => 'hey!');
504
+ $mol_assert_equal(dom.outerHTML, '<button id="foo" title="click me" class="Button">hey!</button>');
463
505
  },
464
506
  'Nested guid generation'() {
465
507
  const Foo = () => {
466
508
  return $mol_jsx("div", null,
467
- $mol_jsx(Bar, { id: "/bar" },
468
- $mol_jsx("img", { id: "/icon" })));
509
+ $mol_jsx(Bar, { id: "bar" },
510
+ $mol_jsx("img", { id: "icon" })));
469
511
  };
470
512
  const Bar = (props, icon) => {
471
- return $mol_jsx("span", null, icon);
513
+ return $mol_jsx("span", null,
514
+ icon,
515
+ $mol_jsx("i", { id: "label" }));
472
516
  };
473
- const dom = $mol_jsx(Foo, { id: "/foo" });
474
- $mol_assert_equal(dom.outerHTML, '<div id="/foo"><span id="/foo/bar"><img id="/foo/icon"></span></div>');
517
+ const dom = $mol_jsx(Foo, { id: "foo" });
518
+ $mol_assert_equal(dom.outerHTML, '<div id="foo" class="Foo"><span id="foo/bar" class="Foo_bar Bar"><img id="foo/icon" class="Foo_icon"><i id="foo/bar/label" class="Foo_bar_label Bar_label"></i></span></div>');
475
519
  },
476
520
  'Fail on non unique ids'() {
477
521
  const App = () => {
478
522
  return $mol_jsx("div", null,
479
- $mol_jsx("span", { id: "/bar" }),
480
- $mol_jsx("span", { id: "/bar" }));
523
+ $mol_jsx("span", { id: "bar" }),
524
+ $mol_jsx("span", { id: "bar" }));
525
+ };
526
+ $mol_assert_fail(() => $mol_jsx(App, { id: "foo" }), 'JSX already has tag with id "foo/bar"');
527
+ },
528
+ 'Owner based guid generationn'() {
529
+ const Foo = () => {
530
+ return $mol_jsx("div", null,
531
+ $mol_jsx(Bar, { id: "middle", icon: () => $mol_jsx("img", { id: "icon" }) }));
481
532
  };
482
- $mol_assert_fail(() => $mol_jsx(App, { id: "/foo" }), 'JSX already has tag with id "/bar"');
533
+ const Bar = (props) => {
534
+ return $mol_jsx("span", null, props.icon());
535
+ };
536
+ const dom = $mol_jsx(Foo, { id: "app" });
537
+ $mol_assert_equal(dom.outerHTML, '<div id="app" class="Foo"><span id="app/middle" class="Foo_middle Bar"><img id="app/icon" class="Foo_icon"></span></div>');
538
+ },
539
+ 'Fail on same ids from different caller'() {
540
+ const Foo = () => {
541
+ return $mol_jsx("div", null,
542
+ $mol_jsx("img", { id: "icon" }),
543
+ $mol_jsx(Bar, { id: "bar", icon: () => $mol_jsx("img", { id: "icon" }) }));
544
+ };
545
+ const Bar = (props) => {
546
+ return $mol_jsx("span", null, props.icon());
547
+ };
548
+ $mol_assert_fail(() => $mol_jsx(Foo, { id: "foo" }), 'JSX already has tag with id "foo/icon"');
483
549
  },
484
550
  });
485
551
  })($ || ($ = {}));
@@ -489,6 +555,7 @@ var $;
489
555
  var $;
490
556
  (function ($) {
491
557
  $.$mol_jsx_prefix = '';
558
+ $.$mol_jsx_crumbs = '';
492
559
  $.$mol_jsx_booked = null;
493
560
  $.$mol_jsx_document = {
494
561
  getElementById: () => null,
@@ -498,16 +565,45 @@ var $;
498
565
  $.$mol_jsx_frag = '';
499
566
  function $mol_jsx(Elem, props, ...childNodes) {
500
567
  const id = props && props.id || '';
568
+ const guid = id ? $.$mol_jsx_prefix ? $.$mol_jsx_prefix + '/' + id : id : $.$mol_jsx_prefix;
569
+ const crumbs_self = id ? $.$mol_jsx_crumbs.replace(/(\S+)/g, `$1_${id.replace(/\/.*/i, '')}`) : $.$mol_jsx_crumbs;
501
570
  if (Elem && $.$mol_jsx_booked) {
502
571
  if ($.$mol_jsx_booked.has(id)) {
503
- $mol_fail(new Error(`JSX already has tag with id ${JSON.stringify(id)}`));
572
+ $mol_fail(new Error(`JSX already has tag with id ${JSON.stringify(guid)}`));
504
573
  }
505
574
  else {
506
575
  $.$mol_jsx_booked.add(id);
507
576
  }
508
577
  }
509
- const guid = $.$mol_jsx_prefix + id;
510
578
  let node = guid ? $.$mol_jsx_document.getElementById(guid) : null;
579
+ if ($.$mol_jsx_prefix) {
580
+ const prefix_ext = $.$mol_jsx_prefix;
581
+ const booked_ext = $.$mol_jsx_booked;
582
+ const crumbs_ext = $.$mol_jsx_crumbs;
583
+ for (const field in props) {
584
+ const func = props[field];
585
+ if (typeof func !== 'function')
586
+ continue;
587
+ const wrapper = function (...args) {
588
+ const prefix = $.$mol_jsx_prefix;
589
+ const booked = $.$mol_jsx_booked;
590
+ const crumbs = $.$mol_jsx_crumbs;
591
+ try {
592
+ $.$mol_jsx_prefix = prefix_ext;
593
+ $.$mol_jsx_booked = booked_ext;
594
+ $.$mol_jsx_crumbs = crumbs_ext;
595
+ return func.call(this, ...args);
596
+ }
597
+ finally {
598
+ $.$mol_jsx_prefix = prefix;
599
+ $.$mol_jsx_booked = booked;
600
+ $.$mol_jsx_crumbs = crumbs;
601
+ }
602
+ };
603
+ $mol_func_name_from(wrapper, func);
604
+ props[field] = wrapper;
605
+ }
606
+ }
511
607
  if (typeof Elem !== 'string') {
512
608
  if ('prototype' in Elem) {
513
609
  const view = node && node[Elem] || new Elem;
@@ -516,6 +612,7 @@ var $;
516
612
  view.childNodes = childNodes;
517
613
  if (!view.ownerDocument)
518
614
  view.ownerDocument = $.$mol_jsx_document;
615
+ view.className = (crumbs_self ? crumbs_self + ' ' : '') + (Elem['name'] || Elem);
519
616
  node = view.valueOf();
520
617
  node[Elem] = view;
521
618
  return node;
@@ -523,14 +620,17 @@ var $;
523
620
  else {
524
621
  const prefix = $.$mol_jsx_prefix;
525
622
  const booked = $.$mol_jsx_booked;
623
+ const crumbs = $.$mol_jsx_crumbs;
526
624
  try {
527
625
  $.$mol_jsx_prefix = guid;
528
626
  $.$mol_jsx_booked = new Set;
627
+ $.$mol_jsx_crumbs = (crumbs_self ? crumbs_self + ' ' : '') + (Elem['name'] || Elem);
529
628
  return Elem(props, ...childNodes);
530
629
  }
531
630
  finally {
532
631
  $.$mol_jsx_prefix = prefix;
533
632
  $.$mol_jsx_booked = booked;
633
+ $.$mol_jsx_crumbs = crumbs;
534
634
  }
535
635
  }
536
636
  }
@@ -542,7 +642,11 @@ var $;
542
642
  $mol_dom_render_children(node, [].concat(...childNodes));
543
643
  if (!Elem)
544
644
  return node;
645
+ if (guid)
646
+ node.id = guid;
545
647
  for (const key in props) {
648
+ if (key === 'id')
649
+ continue;
546
650
  if (typeof props[key] === 'string') {
547
651
  ;
548
652
  node.setAttribute(key, props[key]);
@@ -559,8 +663,8 @@ var $;
559
663
  node[key] = props[key];
560
664
  }
561
665
  }
562
- if (guid)
563
- node.id = guid;
666
+ if ($.$mol_jsx_crumbs)
667
+ node.className = (props?.['class'] ? props['class'] + ' ' : '') + crumbs_self;
564
668
  return node;
565
669
  }
566
670
  $.$mol_jsx = $mol_jsx;
package/web.test.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../fail/mol/fail/fail.ts","../../fail/hidden/mol/fail/hidden/hidden.ts","../../test/mol/test/test.test.ts","../../test/mol/test/test.web.test.ts","../../dom/context/mol/dom/context/context.ts","../../dom/context/mol/dom/context/context.web.ts","../../dom/serialize/mol/dom/serialize/serialize.ts","../../assert/mol/assert/assert.test.ts","../../assert/mol/assert/assert.ts","../../dom/render/children/mol/dom/render/children/children.ts","../../type/error/error.ts","../../type/assert/assert.test.ts","../../type/assert/assert.ts","../../type/equals/equals.test.ts","../../type/equals/equals.ts","../../type/partial/deep/deep.test.ts","../../type/partial/deep/deep.ts","../../log3/mol/log3/log3.ts","../../type/keys/extract/extract.test.ts","../../type/keys/extract/extract.ts","../../log3/mol/log3/log3.test.ts","../../log3/mol/log3/log3.web.ts","../../jsx/mol/jsx/jsx.test.tsx","../../jsx/mol/jsx/jsx.ts","../../compare/deep/mol/compare/deep/deep.test.tsx","../../compare/deep/mol/compare/deep/deep.ts","../mol/key/key.test.tsx"],"names":[],"mappings":"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","file":"web.test.js","sourcesContent":["namespace $ {\n\n\texport function $mol_fail( error : any ) : never {\n\t\tthrow error\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_fail_hidden( error : any ) : never {\n\t\tthrow error /// Use 'Never Pause Here' breakpoint in DevTools or simply blackbox this script\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_test( set : { [ name : string ] : string | ( ( context : $ )=> void ) } ) {\n\t\t\n\t\tfor( let name in set ) {\n\n\t\t\tconst code = set[ name ]\n\t\t\tconst test = ( typeof code === 'string' ) ? new Function( '' , code ) as ()=> void : code\n\t\t\t\n\t\t\t$mol_test_all.push( test )\n\t\t}\n\n\t\t$mol_test_schedule()\n\t}\n\n\texport let $mol_test_mocks = [] as Array< ( context : $ )=> void >\n\n\texport const $mol_test_all = [] as Array< ( context : $ )=> any >\n\n\texport async function $mol_test_run() {\n\n\t\tfor( var test of $mol_test_all ) {\n\n\t\t\tlet context = Object.create( $$ )\n\t\t\tfor( let mock of $mol_test_mocks ) await mock( context )\n\t\t\t\n\t\t\tconst res = test( context )\n\t\t\tif( res instanceof Promise ) {\n\t\t\t\tawait new Promise( ( done, fail )=> {\n\t\t\t\t\tres.then( done, fail )\n\t\t\t\t\tsetTimeout( ()=> fail( new Error( 'Test timeout: ' + test.name ) ), 1000 )\n\t\t\t\t} )\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\t$$.$mol_log3_done({\n\t\t\tplace: '$mol_test',\n\t\t\tmessage: 'All tests passed',\n\t\t\tcount: $mol_test_all.length,\n\t\t})\n\t\t\n\t}\n\t\n\tlet scheduled = false\n\texport function $mol_test_schedule() {\n\n\t\tif( scheduled ) return\n\t\tscheduled = true\n\n\t\tsetTimeout( async ()=> {\n\t\t\t\n\t\t\tscheduled = false\n \t\t\t\n\t\t\ttry {\n\t\t\t\tawait $mol_test_run()\n\t\t\t} finally {\n\t\t\t\t$$.$mol_test_complete()\n\t\t\t}\n\t\t\t\n\t\t} , 0 )\n\t\t\n\t}\n\n\t$mol_test_mocks.push( context => {\n\t\tlet seed = 0\n\n\t\tcontext.Math = Object.create( Math )\n\t\tcontext.Math.random = ()=> Math.sin( seed++ )\n\n\t\tconst forbidden = [ 'XMLHttpRequest' , 'fetch' ]\n\n\t\tfor( let api of forbidden ) {\n\t\t\tcontext[ api ] = new Proxy( function(){} , {\n\t\t\t\tget() {\n\t\t\t\t\t$mol_fail_hidden( new Error( `${ api } is forbidden in tests` ) )\n\t\t\t\t} ,\n\t\t\t\tapply() {\n\t\t\t\t\t$mol_fail_hidden( new Error( `${ api } is forbidden in tests` ) )\n\t\t\t\t} ,\n\t\t\t} )\n\t\t}\n\t\t\n\t} )\n\n\t$mol_test({\n\n\t\t'mocked Math.random'( $ ) {\n\t\t\tconsole.assert( $.Math.random() === 0 )\n\t\t\tconsole.assert( $.Math.random() === Math.sin(1) )\n\t\t} ,\n\n\t\t'forbidden XMLHttpRequest'( $ ) {\n\t\t\ttry {\n\t\t\t\tconsole.assert( void new $.XMLHttpRequest )\n\t\t\t} catch( error: any ) {\n\t\t\t\tconsole.assert( error.message === 'XMLHttpRequest is forbidden in tests' )\n\t\t\t}\n\t\t} ,\n\n\t\t'forbidden fetch'( $ ) {\n\t\t\ttry {\n\t\t\t\tconsole.assert( void $.fetch('') )\n\t\t\t} catch( error: any ) {\n\t\t\t\tconsole.assert( error.message === 'fetch is forbidden in tests' )\n\t\t\t}\n\t\t} ,\n\n\t})\n\n}\n","namespace $ {\n\t\n\texport function $mol_test_complete() {\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport var $mol_dom_context : typeof globalThis\n\t\n}\n","namespace $ {\n\t\n\t$.$mol_dom_context = self as any\n\t\n}\n","namespace $ {\n\n\texport function $mol_dom_serialize(\n\t\tnode: Node\n\t) {\n\t\tconst serializer = new $mol_dom_context.XMLSerializer\n\t\treturn serializer.serializeToString( node )\n\t}\n\n}\n","namespace $ {\n\t$mol_test( {\n\t\t\n\t\t'must be false'() {\n\t\t\t$mol_assert_not( 0 )\n\t\t} ,\n\t\t\n\t\t'must be true'() {\n\t\t\t$mol_assert_ok( 1 )\n\t\t} ,\n\t\t\n\t\t'two must be equal'() {\n\t\t\t$mol_assert_equal( 2 , 2 )\n\t\t} ,\n\t\t\n\t\t'three must be equal'() {\n\t\t\t$mol_assert_equal( 2 , 2 , 2 )\n\t\t} ,\n\t\t\n\t\t'two must be unique'() {\n\t\t\t$mol_assert_unique( [ 3 ] , [ 3 ] )\n\t\t} ,\n\t\t\n\t\t'three must be unique'() {\n\t\t\t$mol_assert_unique( [ 3 ] , [ 3 ] , [ 3 ] )\n\t\t} ,\n\t\t\n\t\t'two must be alike'() {\n\t\t\t$mol_assert_like( [ 3 ] , [ 3 ] )\n\t\t} ,\n\t\t\n\t\t'three must be alike'() {\n\t\t\t$mol_assert_like( [ 3 ] , [ 3 ] , [ 3 ] )\n\t\t} ,\n\t\t\n\t} )\n}\n","namespace $ {\n\t\n\texport function $mol_assert_ok( value : any ) {\n\t\tif( value ) return\n\t\t$mol_fail( new Error( `${value} ≠ true` ) )\n\t}\n\t\n\texport function $mol_assert_not( value : any ) {\n\t\tif( !value ) return\n\t\t$mol_fail( new Error( `${value} ≠ false` ) )\n\t}\n\t\n\texport function $mol_assert_fail( handler : ()=> any , ErrorRight? : any ) {\n\t\t\n\t\tconst fail = $.$mol_fail\n\t\t\n\t\ttry {\n\t\t\t$.$mol_fail = $.$mol_fail_hidden\n\t\t\t\n\t\t\thandler()\n\n\t\t} catch( error: any ) {\n\t\t\t\n\t\t\tif( !ErrorRight ) return error\n\t\t\t\n\t\t\t$.$mol_fail = fail\n\n\t\t\tif( typeof ErrorRight === 'string' ) {\n\t\t\t\t$mol_assert_equal( error.message, ErrorRight )\n\t\t\t} else {\n\t\t\t\t$mol_assert_ok( error instanceof ErrorRight )\n\t\t\t}\n\t\t\t\n\t\t\treturn error\n\n\t\t} finally {\n\t\t\t$.$mol_fail = fail\n\t\t}\n\n\t\t$mol_fail( new Error( 'Not failed' ) )\n\t}\n\t\n\texport function $mol_assert_equal< Value >( ... args : [ Value, Value, ...Value[] ] ) {\n\t\tfor( let i = 0 ; i < args.length ; ++i ) {\n\t\t\tfor( let j = 0 ; j < args.length ; ++j ) {\n\t\t\t\tif( i === j ) continue\n\t\t\t\tif( Number.isNaN( args[i] as any as number ) && Number.isNaN( args[j] as any as number ) ) continue\n\t\t\t\tif( args[i] !== args[j] ) $mol_fail( new Error( `Not equal (${i+1}:${j+1})\\n${ args[i] }\\n${ args[j] }` ) )\n\t\t\t}\n\t\t}\n\t}\n\t\n\texport function $mol_assert_unique( ... args : [ any, any, ...any[] ] ) {\n\t\tfor( let i = 0 ; i < args.length ; ++i ) {\n\t\t\tfor( let j = 0 ; j < args.length ; ++j ) {\n\t\t\t\tif( i === j ) continue\n\t\t\t\tif( args[i] === args[j] || ( Number.isNaN( args[i] as any as number ) && Number.isNaN( args[j] as any as number ) ) ) {\n\t\t\t\t\t$mol_fail( new Error( `args[${ i }] = args[${ j }] = ${ args[i] }` ) )\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\texport function $mol_assert_like< Value >( head : Value, ... tail : Value[]) {\n\t\tfor( let [ index, value ] of Object.entries( tail ) ) {\n\n\t\t\tif( !$mol_compare_deep( value , head ) ) {\n\n\t\t\t\tconst print = ( val : any ) => {\n\t\t\t\t\t\n\t\t\t\t\tif( !val ) return val\n\t\t\t\t\tif( typeof val !== 'object' ) return val\n\t\t\t\t\tif( 'outerHTML' in val ) return val.outerHTML\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn JSON.stringify( val )\n\t\t\t\t\t} catch( error: any ) {\n\t\t\t\t\t\tconsole.error( error )\n\t\t\t\t\t\treturn val\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn $mol_fail( new Error( `Not like (1:${ + index + 2 })\\n${ print( head ) }\\n---\\n${ print( value ) }` ) )\n\n\t\t\t}\n\n\t\t}\n\t}\n\t\n\texport function $mol_assert_dom( left: Element, right: Element ) {\n\t\t$mol_assert_equal( $mol_dom_serialize( left ), $mol_dom_serialize( right ) )\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_dom_render_children (\n\t\tel : Element | DocumentFragment ,\n\t\tchildNodes : NodeList | Array< Node | string | null >\n\t) {\n\t\tconst node_set = new Set< Node | string | null >( childNodes )\n\t\t\n\t\tlet nextNode : Node | null = el.firstChild\n\t\tfor( let view of childNodes ) {\n\n\t\t\tif( view == null ) continue\n\n\t\t\tif( view instanceof $mol_dom_context.Node ) {\n\t\t\t\t\n\t\t\t\twhile( true ) {\n\t\t\t\t\tif( !nextNode ) {\n\t\t\t\t\t\tel.appendChild( view )\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tif( nextNode == view ) {\n\t\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t\t\tbreak\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif( node_set.has( nextNode ) ) {\n\t\t\t\t\t\t\tel.insertBefore( view , nextNode )\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst nn = nextNode.nextSibling\n\t\t\t\t\t\t\tel.removeChild( nextNode )\n\t\t\t\t\t\t\tnextNode = nn\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\tif( nextNode && nextNode.nodeName === '#text' ) {\n\t\t\t\t\tconst str = String( view )\n\t\t\t\t\tif( nextNode.nodeValue !== str ) nextNode.nodeValue = str\n\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t} else {\n\t\t\t\t\tconst textNode = $mol_dom_context.document.createTextNode( String( view ) )\n\t\t\t\t\tel.insertBefore( textNode , nextNode )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\twhile( nextNode ) {\n\t\t\tconst currNode = nextNode\n\t\t\tnextNode = currNode.nextSibling\n\t\t\tel.removeChild( currNode )\n\t\t}\n\t}\n\n}\n",null,null,null,null,null,null,null,"namespace $ {\n\n\t/** Logger event data */\n\texport type $mol_log3_event< Fields > = {\n\t\t[ key in string ] : unknown\n\t} & {\n\t\t\n\t\t/** Time of event creation */\n\t\ttime? : string\n\n\t\t/** Place of event creation */\n\t\tplace : unknown\n\n\t\t/** Short description of event */\n\t\tmessage : string\n\n\t} & Fields\n\n\t/** Logger function */\n\texport type $mol_log3_logger< Fields , Res = void > = (\n\t\tthis : $ ,\n\t\tevent : $mol_log3_event< Fields > ,\n\t)=> Res\n\n\t/** Log begin of some task */\n\texport declare let $mol_log3_come : $mol_log3_logger<{}>\n\t\n\t/** Log end of some task */\n\texport declare let $mol_log3_done : $mol_log3_logger<{}>\n\t\n\t/** Log error */\n\texport declare let $mol_log3_fail : $mol_log3_logger<{}>\n\t\n\t/** Log warning message */\n\texport declare let $mol_log3_warn : $mol_log3_logger<{ hint : string }>\n\t\n\t/** Log some generic event */\n\texport declare let $mol_log3_rise : $mol_log3_logger<{}>\n\n\t/** Log begin of log group, returns func to close group */\n\texport declare let $mol_log3_area : $mol_log3_logger< {} , ()=> void >\n\n\t/** Log begin of collapsed group only when some logged inside, returns func to close group */\n\texport function $mol_log3_area_lazy(\n\t\tthis : $ ,\n\t\tevent : $mol_log3_event<{}> ,\n\t) {\n\n\t\tconst self = this\n\t\tconst stack = self.$mol_log3_stack\n\n\t\tconst deep = stack.length\n\t\tlet logged = false\n\n\t\tstack.push( ()=> {\n\t\t\tlogged = true\n\t\t\tself.$mol_log3_area.call( self , event )\n\t\t} )\n\n\t\treturn ()=> {\n\t\t\tif( logged ) self.console.groupEnd()\n\t\t\tif( stack.length > deep ) stack.length = deep\n\t\t}\n\n\t}\n\n\texport let $mol_log3_stack = [] as ( ()=> void )[]\n\n}\n",null,null,"namespace $ {\n\n\t$mol_test_mocks.push( $ => {\n\t\t$.$mol_log3_come = ()=> {}\n\t\t$.$mol_log3_done = ()=> {}\n\t\t$.$mol_log3_fail = ()=> {}\n\t\t$.$mol_log3_warn = ()=> {}\n\t\t$.$mol_log3_rise = ()=> {}\n\t\t$.$mol_log3_area = ()=> ()=> {}\n\t} )\n\n}\n","namespace $ {\n\n\texport function $mol_log3_web_make(\n\t\tlevel : $mol_type_keys_extract< Console, Function >,\n\t\tcolor : string,\n\t) {\n\n\t\treturn function $mol_log3_logger(\n\t\t\tthis : $ ,\n\t\t\tevent : $mol_log3_event<{}> ,\n\t\t) {\n\n\t\t\tconst pending = this.$mol_log3_stack.pop()\n\t\t\tif( pending ) pending()\n\n\t\t\tlet tpl = '%c'\n\t\t\tconst chunks = Object.values( event )\n\n\t\t\tfor( let i = 0 ; i < chunks.length ; ++i ) {\n\t\t\t\ttpl += ( typeof chunks[i] === 'string' ) ? ' ⦙ %s' : ' ⦙ %o'\n\t\t\t}\n\t\n\t\t\tconst style = `color:${color};font-weight:bolder`\n\n\t\t\t;( this.console[ level ] as any )( tpl , style , ... chunks )\n\n\t\t\tconst self = this\n\t\t\treturn ()=> self.console.groupEnd()\n\n\t\t}\n\n\t}\n\n\t$.$mol_log3_come = $mol_log3_web_make( 'info' , 'royalblue' )\n\t$.$mol_log3_done = $mol_log3_web_make( 'info' , 'forestgreen' )\n\t$.$mol_log3_fail = $mol_log3_web_make( 'error' , 'orangered' )\n\t$.$mol_log3_warn = $mol_log3_web_make( 'warn' , 'goldenrod' )\n\t$.$mol_log3_rise = $mol_log3_web_make( 'log' , 'magenta' )\n\t$.$mol_log3_area = $mol_log3_web_make( 'group' , 'cyan' )\n\n}\n","/** @jsx $mol_jsx */\nnamespace $ {\n\t\n\t$mol_test({\n\t\t\n\t\t'Make empty div'() {\n\t\t\t$mol_assert_equal( (<div/>).outerHTML , '<div></div>' )\n\t\t} ,\n\t\t\n\t\t'Define native field'() {\n\t\t\t\n\t\t\tconst dom = <input value='123' /> as HTMLInputElement\n\t\t\t\n\t\t\t$mol_assert_equal( dom.outerHTML, '<input value=\"123\">' )\n\t\t\t$mol_assert_equal( dom.value, '123' )\n\n\t\t} ,\n\t\t\n\t\t'Define classes'() {\n\t\t\t\n\t\t\tconst dom = <div class={ 'foo bar' } />\n\t\t\t\n\t\t\t$mol_assert_equal( dom.outerHTML, '<div class=\"foo bar\"></div>' )\n\n\t\t} ,\n\t\t\n\t\t'Define styles'() {\n\t\t\t\n\t\t\tconst dom = <div style={{ color: 'red' }} />\n\t\t\t\n\t\t\t$mol_assert_equal( dom.outerHTML, '<div style=\"color: red;\"></div>' )\n\n\t\t} ,\n\t\t\n\t\t'Define dataset'() {\n\t\t\t\n\t\t\tconst dom = <div dataset={{ foo: 'bar' }} />\n\t\t\t\n\t\t\t$mol_assert_equal( dom.outerHTML, '<div data-foo=\"bar\"></div>' )\n\n\t\t} ,\n\t\t\n\t\t'Define attributes'() {\n\t\t\t\n\t\t\tconst dom = <div lang=\"ru\" hidden />\n\t\t\t\n\t\t\t$mol_assert_equal( dom.outerHTML, '<div lang=\"ru\" hidden=\"\"></div>' )\n\n\t\t} ,\n\t\t\n\t\t'Define child nodes'() {\n\n\t\t\tconst dom =\n\t\t\t\t<div>\n\t\t\t\t\thello\n\t\t\t\t\t<strong>world</strong>\n\t\t\t\t\t!\n\t\t\t\t</div>\n\t\t\t\n\t\t\t$mol_assert_equal( dom.outerHTML, '<div>hello<strong>world</strong>!</div>' )\n\n\t\t} ,\n\n\t\t'Function as component'() {\n\n\t\t\tconst Button = (\n\t\t\t\tprops: { hint: string },\n\t\t\t\ttarget: ()=> string,\n\t\t\t) => {\n\t\t\t\treturn <button title={ props.hint } >{ target() }</button>\n\t\t\t}\n\n\t\t\tconst dom = <Button id=\"/foo\" hint=\"click me\">{ ()=> 'hey!' }</Button>\n\n\t\t\t$mol_assert_equal( dom.outerHTML, '<button title=\"click me\" id=\"/foo\">hey!</button>' )\n\t\t\t\n\t\t} ,\n\t\t\n\t\t'Nested guid generation'() {\n\n\t\t\tconst Foo = ()=> {\n\t\t\t\treturn <div>\n\t\t\t\t\t<Bar id=\"/bar\">\n\t\t\t\t\t\t<img id=\"/icon\" />\n\t\t\t\t\t</Bar>\n\t\t\t\t</div>\n\t\t\t}\n\n\t\t\tconst Bar = ( props: {}, icon: Element )=> {\n\t\t\t\treturn <span>{ icon }</span>\n\t\t\t}\n\n\t\t\tconst dom = <Foo id=\"/foo\" />\n\n\t\t\t$mol_assert_equal( dom.outerHTML, '<div id=\"/foo\"><span id=\"/foo/bar\"><img id=\"/foo/icon\"></span></div>' )\n\t\t\t\n\t\t} ,\n\t\t\n\t\t'Fail on non unique ids'() {\n\n\t\t\tconst App = ()=> {\n\t\t\t\treturn <div>\n\t\t\t\t\t<span id=\"/bar\" />\n\t\t\t\t\t<span id=\"/bar\" />\n\t\t\t\t</div>\n\t\t\t}\n\n\t\t\t$mol_assert_fail( ()=> <App id=\"/foo\" />, 'JSX already has tag with id \"/bar\"' )\n\t\t\t\n\t\t} ,\n\t\t\n\t})\n\t\n}\n","namespace $ {\n\n\texport let $mol_jsx_prefix = ''\n\n\texport let $mol_jsx_booked = null as null | Set< string >\n\t\n\texport let $mol_jsx_document : $mol_jsx.JSX.ElementClass['ownerDocument'] = {\n\t\tgetElementById : ()=> null ,\n\t\tcreateElementNS : ( space: string, name : string )=> $mol_dom_context.document.createElementNS( space, name ) as any,\n\t\tcreateDocumentFragment : ()=> $mol_dom_context.document.createDocumentFragment(),\n\t}\n\t\n\texport const $mol_jsx_frag = ''\n\n\texport function $mol_jsx<\n\t\tProps extends $mol_jsx.JSX.IntrinsicAttributes,\n\t\tChildren extends Array< Node | string >\n\t>(\n\t\tElem : string\n\t\t\t| ( ( props : Props , ... children : Children ) => Element ) ,\n\t\tprops : Props ,\n\t\t... childNodes : Children\n\t) : Element | DocumentFragment {\n\n\t\tconst id = props && props.id || ''\n\n\t\tif( Elem && $mol_jsx_booked ) {\n\t\t\tif( $mol_jsx_booked.has( id ) ) {\n\t\t\t\t$mol_fail( new Error( `JSX already has tag with id ${ JSON.stringify( id ) }` ) )\n\t\t\t} else {\n\t\t\t\t$mol_jsx_booked.add( id )\n\t\t\t}\n\t\t}\n\n\t\tconst guid = $mol_jsx_prefix + id\n\n\t\tlet node: Element | DocumentFragment | null = guid ? $mol_jsx_document.getElementById( guid ) : null\n\n\t\tif( typeof Elem !== 'string' ) {\n\n\t\t\tif( 'prototype' in Elem ) {\n\n\t\t\t\tconst view = node && node[ Elem as any ] || new ( Elem as any )\n\t\t\t\t\n\t\t\t\tObject.assign( view , props )\n\t\t\t\tview[ Symbol.toStringTag ] = guid\n\t\t\t\t\n\t\t\t\tview.childNodes = childNodes\n\t\t\t\t\n\t\t\t\tif( !view.ownerDocument ) view.ownerDocument = $mol_jsx_document\n\t\t\t\t\n\t\t\t\tnode = view.valueOf()\n\t\t\t\t\n\t\t\t\tnode![ Elem as any ] = view\n\t\t\t\t\n\t\t\t\treturn node!\n\n\t\t\t} else {\n\n\t\t\t\tconst prefix = $mol_jsx_prefix\n\t\t\t\tconst booked = $mol_jsx_booked\n\t\t\t\t\n\t\t\t\ttry {\n\t\n\t\t\t\t\t$mol_jsx_prefix = guid\n\t\t\t\t\t$mol_jsx_booked = new Set\n\t\n\t\t\t\t\treturn ( Elem as any )( props , ... childNodes )\n\t\t\t\t\t\n\t\t\t\t} finally {\n\n\t\t\t\t\t$mol_jsx_prefix = prefix\n\t\t\t\t\t$mol_jsx_booked = booked\n\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\n\t\t}\n\n\t\tif( !node ) {\n\t\t\tnode = Elem\n\t\t\t\t? $mol_jsx_document.createElementNS( props?.xmlns ?? 'http://www.w3.org/1999/xhtml', Elem )\n\t\t\t\t: $mol_jsx_document.createDocumentFragment()\n\t\t}\n\n\t\t$mol_dom_render_children( node , ( [] as ( Node | string )[] ).concat( ... childNodes ) )\n\t\tif( !Elem ) return node\n\n\t\tfor( const key in props ) {\n\n\t\t\tif( typeof props[ key ] === 'string' ) {\n\n\t\t\t\t;( node as Element ).setAttribute( key , props[ key as any ] )\n\n\t\t\t} else if(\n\t\t\t\tprops[ key ] &&\n\t\t\t\ttypeof props[ key ] === 'object' &&\n\t\t\t\tReflect.getPrototypeOf( props[ key ] as any ) === Reflect.getPrototypeOf({})\n\t\t\t) {\n\n\t\t\t\tif( typeof node[ key as any ] === 'object' ) {\n\t\t\t\t\tObject.assign( ( node as any )[ key ] , props[ key ] )\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tnode[ key as any ] = props[ key ]\n\t\t\t\t\n\t\t\t}\n\n\t\t}\n\n\t\tif( guid ) ( node as Element ).id = guid\n\n\t\treturn node\n\n\t}\n\n\texport declare namespace $mol_jsx.JSX {\n\n\t\texport interface Element extends HTMLElement {\n\t\t\tclass?: string\n\t\t}\n\t\t\n\t\texport interface ElementClass {\n\t\t\tattributes : {}\n\t\t\townerDocument : Pick< Document , 'getElementById' | 'createElementNS' | 'createDocumentFragment' >\n\t\t\tchildNodes : Array< Node | string >\n\t\t\tvalueOf() : Element\n\t\t}\n\t\t\n\t\ttype OrString< Dict > = {\n\t\t\t[ key in keyof Dict ]: Dict[ key ] | string\n\t\t}\n\t\t\n\t\t/** Props for html elements */\n\t\texport type IntrinsicElements = {\n\t\t\t[ key in keyof ElementTagNameMap ]? : $.$mol_type_partial_deep< OrString<\n\t\t\t\t& Element\n\t\t\t\t& IntrinsicAttributes\n\t\t\t\t& ElementTagNameMap[ key ]\n\t\t\t> >\n\t\t}\n\t\t\n\t\t/** Additional undeclared props */\n\t\texport interface IntrinsicAttributes {\n\t\t\tid? : string\n\t\t\txmlns? : string\n\t\t}\n\t\t\n\t\texport interface ElementAttributesProperty {\n\t\t\tattributes : {\n\t\t\t}\n\t\t}\n\t\t\n\t\t// export type IntrinsicClassAttributes< Class > = $.$mol_type_partial_deep< Omit< Class , 'valueOf' > >\n\t\t\n\t\tinterface ElementChildrenAttribute {\n\t\t}\n\t\n\t}\n\n}\n","/** @jsx $mol_jsx */\nnamespace $ {\n\n\t$mol_test({\n\n\t\t'nulls & undefineds'() {\n\n\t\t\t$mol_assert_ok( $mol_compare_deep( null , null ) )\n\t\t\t$mol_assert_ok( $mol_compare_deep( undefined , undefined ) )\n\t\t\t\n\t\t\t$mol_assert_not( $mol_compare_deep( undefined , null ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( {} , null ) )\n\t\t\t\n\t\t} ,\n\n\t\t'number'() {\n\t\t\t\n\t\t\t$mol_assert_ok( $mol_compare_deep( 1 , 1 ) )\n\t\t\t$mol_assert_ok( $mol_compare_deep( Number.NaN , Number.NaN ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( 1 , 2 ) )\n\t\t\t\n\t\t\t$mol_assert_ok( $mol_compare_deep( Object( 1 ) , Object( 1 ) ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( Object( 1 ) , Object( 2 ) ) )\n\t\t\t\n\t\t} ,\n\n\t\t'POJO'() {\n\t\t\t$mol_assert_ok( $mol_compare_deep( {} , {} ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( { a : 1 } , { b : 2 } ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( { a : 1 } , { a : 2 } ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( {} , { a : undefined } ) )\n\t\t\t$mol_assert_ok( $mol_compare_deep( { a: 1, b: 2 } , { b: 2, a: 1 } ) )\n\t\t\t$mol_assert_ok( $mol_compare_deep( { a : { b : 1 } } , { a : { b : 1 } } ) )\n\t\t} ,\n\n\t\t'Array'() {\n\t\t\t$mol_assert_ok( $mol_compare_deep( [] , [] ) )\n\t\t\t$mol_assert_ok( $mol_compare_deep( [ 1 , [2] ] , [ 1 , [2] ] ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( [ 1 , 2 ] , [ 1 , 3 ] ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( [ 1 , 2 , ] , [ 1 , 3 , undefined ] ) )\n\t\t} ,\n\n\t\t'Non POJO are different'() {\n\t\t\t\n\t\t\tclass Thing extends Object {}\n\t\t\t$mol_assert_not( $mol_compare_deep( new Thing , new Thing ) )\n\t\t\t\n\t\t\t$mol_assert_not( $mol_compare_deep( ()=> 1 , ()=>1 ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( new RangeError( 'Test error' ) , new RangeError( 'Test error' ) ) )\n\t\t\t\n\t\t} ,\n\n\t\t'same POJOs with cyclic reference'() {\n\n\t\t\tconst a = { foo : {} }\n\t\t\ta['self'] = a\n\n\t\t\tconst b = { foo : {} }\n\t\t\tb['self'] = b\n\n\t\t\t$mol_assert_ok( $mol_compare_deep( a , b ) )\n\n\t\t} ,\n\n\t\t'Date'() {\n\t\t\t$mol_assert_ok( $mol_compare_deep( new Date( 12345 ) , new Date( 12345 ) ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( new Date( 12345 ) , new Date( 12346 ) ) )\n\t\t} ,\n\n\t\t'RegExp'() {\n\t\t\t$mol_assert_ok( $mol_compare_deep( /\\x22/mig , /\\x22/mig ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( /\\x22/mig , /\\x21/mig ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( /\\x22/mig , /\\x22/mg ) )\n\t\t} ,\n\n\t\t'Error'() {\n\t\t\t\n\t\t\t$mol_assert_not( $mol_compare_deep( new Error( 'xxx' ) , new Error( 'xxx' ) ) )\n\n\t\t\tconst fail = ( message: string )=> new Error( message )\n\t\t\t\n\t\t\t$mol_assert_ok( $mol_compare_deep(\n\t\t\t\t... [ 'xxx' , 'xxx' ].map( msg => new Error( msg ) ) as [ Error, Error ]\n\t\t\t) )\n\t\t\t\n\t\t\t$mol_assert_not( $mol_compare_deep(\n\t\t\t\t... [ 'xxx' , 'yyy' ].map( msg => new Error( msg ) ) as [ Error, Error ]\n\t\t\t) )\n\t\t\t\n\t\t} ,\n\n\t\t'Map'() {\n\t\t\t$mol_assert_ok( $mol_compare_deep( new Map , new Map ) )\n\t\t\t$mol_assert_ok( $mol_compare_deep( new Map([ [ 1 , [2] ] ]) , new Map([ [ 1 , [2] ] ]) ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( new Map([ [ 1 , 2 ] ]) , new Map([ [ 1 , 3 ] ]) ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( new Map([ [ [1] , 2 ] ]) , new Map([ [ [1] , 2 ] ]) ) )\n\t\t} ,\n\t\t\n\t\t'Set'() {\n\t\t\t$mol_assert_ok( $mol_compare_deep( new Set , new Set ) )\n\t\t\t$mol_assert_ok( $mol_compare_deep( new Set([ 1 , [2] ]) , new Set([ 1 , [2] ]) ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( new Set([ 1 ]) , new Set([ 2 ]) ) )\n\t\t} ,\n\t\t\n\t\t'Uint8Array'() {\n\t\t\t$mol_assert_ok( $mol_compare_deep( new Uint8Array , new Uint8Array ) )\n\t\t\t$mol_assert_ok( $mol_compare_deep( new Uint8Array([ 0 ]) , new Uint8Array([ 0 ]) ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( new Uint8Array([ 0 ]) , new Uint8Array([ 1 ]) ) )\n\t\t} ,\n\t\t\n\t\t'Custom comparator'() {\n\t\t\t\n\t\t\tclass User {\n\t\t\t\t\n\t\t\t\tconstructor(\n\t\t\t\t\treadonly name: string,\n\t\t\t\t\treadonly rand = Math.random(),\n\t\t\t\t) {}\n\t\t\t\t\n\t\t\t\t[ Symbol.toPrimitive ]( mode: 'default' | 'number' | 'string' ) {\n\t\t\t\t\treturn this.name\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t$mol_assert_ok( $mol_compare_deep( new User( 'Jin' ), new User( 'Jin' ) ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( new User( 'Jin' ), new User( 'John' ) ) )\n\t\t\t\n\t\t} ,\n\t\t\n\t})\n\n}\n","namespace $ {\n\n\texport let $mol_compare_deep_cache = new WeakMap< any , WeakMap< any , boolean > >()\n\t\n\t/**\n\t * Deeply compares two values. Returns true if equal.\n\t * Define `Symbol.toPrimitive` to customize.\n\t */\n\texport function $mol_compare_deep< Value >( left: Value, right: Value ): boolean {\n\n\t\tif( Object.is( left , right ) ) return true\n\n\t\tif( left === null ) return false\n\t\tif( right === null ) return false\n\n\t\tif( typeof left !== 'object' ) return false\n\t\tif( typeof right !== 'object' ) return false\n\n\t\tconst left_proto = Reflect.getPrototypeOf( left as any )\n\t\tconst right_proto = Reflect.getPrototypeOf( right as any )\n\t\t\n\t\tif( left_proto !== right_proto ) return false\n\n\t\tif( left instanceof Boolean ) return Object.is( left.valueOf(), right['valueOf']() )\n\t\tif( left instanceof Number ) return Object.is( left.valueOf(), right['valueOf']() )\n\t\tif( left instanceof String ) return Object.is( left.valueOf(), right['valueOf']() )\n\t\tif( left instanceof Date ) return Object.is( left.valueOf(), right['valueOf']() )\n\t\tif( left instanceof RegExp ) return left.source === right['source'] && left.flags === right['flags']\n\t\tif( left instanceof Error ) return left.stack === right['stack']\n\n\t\tlet left_cache = $mol_compare_deep_cache.get( left )\n\t\tif( left_cache ) {\n\n\t\t\tconst right_cache = left_cache.get( right )\n\t\t\tif( typeof right_cache === 'boolean' ) return right_cache\n\n\t\t} else {\n\t\t\t\n\t\t\tleft_cache = new WeakMap< any , boolean >([[ right, true ]])\n\t\t\t$mol_compare_deep_cache.set( left , left_cache )\n\n\t\t}\n\n\t\tlet result!: boolean\n\n\t\ttry {\n\t\t\t\n\t\t\tif( left_proto && !Reflect.getPrototypeOf( left_proto ) ) result = compare_pojo( left, right as any )\n\t\t\telse if( Array.isArray( left ) ) result = compare_array( left, right as any )\n\t\t\telse if( left instanceof Set ) result = compare_set( left, right as any )\n\t\t\telse if( left instanceof Map ) result = compare_map( left, right as any )\n\t\t\telse if( ArrayBuffer.isView( left ) ) result = compare_buffer( left, right as any )\n\t\t\telse if( Symbol.toPrimitive in left ) result = compare_primitive( left, right )\n\t\t\telse result = false\n\n\t\t} finally {\n\t\t\tleft_cache.set( right , result )\n\t\t}\n\t\t\n\t\treturn result\n\t}\n\n\tfunction compare_array< Value extends any[] >( left: Value, right: Value ): boolean {\n\t\t\n\t\tconst len = left.length\n\t\tif( len !== right.length ) return false\n\t\t\n\t\tfor( let i = 0; i < len; ++i ) {\n\t\t\tif( !$mol_compare_deep( left[i] , right[i] ) ) return false\n\t\t}\n\t\t\n\t\treturn true\n\t}\n\t\n\tfunction compare_buffer( left: ArrayBufferView, right: ArrayBufferView ): boolean {\n\t\t\n\t\tconst len = left.byteLength\n\t\tif( len !== right.byteLength ) return false\n\t\t\n\t\tfor( let i = 0; i < len; ++i ) {\n\t\t\tif( left[i] !== right[i] ) return false\n\t\t}\n\t\t\n\t\treturn true\n\t}\n\t\n\tfunction compare_iterator< Value extends IterableIterator<any> >(\n\t\tleft: Value,\n\t\tright: Value,\n\t\tcompare: ( left: any, right: any )=> boolean\n\t): boolean {\n\t\t\n\t\twhile( true ) {\n\n\t\t\tconst left_next = left.next()\n\t\t\tconst right_next = right.next()\n\n\t\t\tif( left_next.done !== right_next.done ) return false\n\t\t\tif( left_next.done ) break\n\n\t\t\tif( !compare( left_next.value , right_next.value ) ) return false\n\n\t\t}\n\n\t\treturn true\n\n\t}\n\t\n\tfunction compare_set< Value extends Set<any> >( left: Value, right: Value ): boolean {\n\t\tif( left.size !== right.size ) return false\n\t\treturn compare_iterator( left.values(), right.values(), $mol_compare_deep )\n\t}\n\t\n\tfunction compare_map< Key, Value >( left: Map< Key, Value > , right: Map< Key, Value > ): boolean {\n\t\tif( left.size !== right.size ) return false\n\t\treturn compare_iterator( left.keys(), right.keys(), Object.is )\n\t\t\t&& compare_iterator( left.values(), right.values(), $mol_compare_deep )\n\t}\n\t\n\tfunction compare_pojo( left: {}, right: {} ): boolean {\n\t\t\n\t\tconst left_keys = Object.getOwnPropertyNames( left )\n\t\tconst right_keys = Object.getOwnPropertyNames( right )\n\t\t\n\t\tif( left_keys.length !== right_keys.length ) return false\n\n\t\tfor( let key of left_keys ) {\n\t\t\tif( !$mol_compare_deep( left[ key ], Reflect.get( right, key ) ) ) return false\n\t\t}\n\n\t\treturn true\n\t}\n\t\n\tfunction compare_primitive( left: {}, right: {} ): boolean {\n\t\treturn Object.is(\n\t\t\tleft[ Symbol.toPrimitive ]( 'default' ),\n\t\t\tright[ Symbol.toPrimitive ]( 'default' ),\n\t\t)\n\t}\n\t\n}\n","/** @jsx $mol_jsx */\nnamespace $ {\n\t$mol_test({\n\t\t\n\t\t'Primitives'() {\n\t\t\t\n\t\t\t$mol_assert_equal( $mol_key( null ), 'null' )\n\t\t\t$mol_assert_equal( $mol_key( false ), 'false' )\n\t\t\t$mol_assert_equal( $mol_key( true ), 'true' )\n\t\t\t$mol_assert_equal( $mol_key( 0 ), '0' )\n\t\t\t$mol_assert_equal( $mol_key( '' ), '\"\"' )\n\t\t\t\n\t\t},\n\t\t\n\t\t'Array & POJO'() {\n\t\t\t\n\t\t\t$mol_assert_equal( $mol_key([ null ]), '[null]' )\n\t\t\t$mol_assert_equal( $mol_key({ foo: 0 }), '{\"foo\":0}' )\n\t\t\t$mol_assert_equal( $mol_key({ foo: [false] }), '{\"foo\":[false]}' )\n\t\t\t\n\t\t},\n\t\t\n\t\t'Function'() {\n\t\t\t\n\t\t\tconst func = ()=> {}\n\t\t\t$mol_assert_equal( $mol_key( func ), $mol_key( func ) )\n\t\t\t$mol_assert_unique( $mol_key( func ), $mol_key( ()=> {} ) )\n\t\t\t\n\t\t},\n\t\t\n\t\t'Objects'() {\n\t\t\t\n\t\t\tclass User {}\n\t\t\tconst jin = new User()\n\t\t\t\n\t\t\t$mol_assert_equal( $mol_key( jin ), $mol_key( jin ) )\n\t\t\t$mol_assert_unique( $mol_key( jin ), $mol_key( new User() ) )\n\t\t\t\n\t\t},\n\t\t\n\t\t'Elements'() {\n\t\t\t\n\t\t\tconst foo = <div>bar</div>\n\t\t\t\n\t\t\t$mol_assert_equal( $mol_key( foo ), $mol_key( foo ) )\n\t\t\t$mol_assert_unique( $mol_key( foo ), $mol_key( <div>bar</div> ) )\n\t\t\t\n\t\t},\n\t\t\n\t\t'Custom JSON representation'() {\n\t\t\t\n\t\t\tclass User {\n\t\t\t\tconstructor( public name: string, public age: number ) {}\n\t\t\t\ttoJSON() { return { name: this.name } }\n\t\t\t}\n\t\t\t\n\t\t\t$mol_assert_equal( $mol_key( new User( 'jin', 18 ) ), '{\"name\":\"jin\"}' )\n\t\t\t\n\t\t},\n\t\t\n\t\t'Special native classes'() {\n\t\t\t\n\t\t\t$mol_assert_equal( $mol_key( new Date( 'xyz' ) ), 'null' )\n\t\t\t$mol_assert_equal( $mol_key( new Date( '2001-01-02T03:04:05.678Z' ) ), '\"2001-01-02T03:04:05.678Z\"' )\n\t\t\t\n\t\t\t$mol_assert_equal( $mol_key( /./ ), '\"/./\"' )\n\t\t\t$mol_assert_equal( $mol_key( /\\./gimsu ), '\"/\\\\\\\\./gimsu\"' )\n\t\t\t\n\t\t},\n\t\t\n\t})\n}\n"]}
1
+ {"version":3,"sources":["../../fail/mol/fail/fail.ts","../../fail/hidden/mol/fail/hidden/hidden.ts","../../test/mol/test/test.test.ts","../../test/mol/test/test.web.test.ts","../../dom/context/mol/dom/context/context.ts","../../dom/context/mol/dom/context/context.web.ts","../../dom/serialize/mol/dom/serialize/serialize.ts","../../assert/mol/assert/assert.test.ts","../../assert/mol/assert/assert.ts","../../func/name/mol/func/name/name.test.ts","../../func/name/mol/func/name/name.ts","../../dom/render/children/mol/dom/render/children/children.ts","../../type/error/error.ts","../../type/assert/assert.test.ts","../../type/assert/assert.ts","../../type/equals/equals.test.ts","../../type/equals/equals.ts","../../type/partial/deep/deep.test.ts","../../type/partial/deep/deep.ts","../../log3/mol/log3/log3.ts","../../type/keys/extract/extract.test.ts","../../type/keys/extract/extract.ts","../../log3/mol/log3/log3.test.ts","../../log3/mol/log3/log3.web.ts","../../jsx/mol/jsx/jsx.test.tsx","../../jsx/mol/jsx/jsx.ts","../../compare/deep/mol/compare/deep/deep.test.tsx","../../compare/deep/mol/compare/deep/deep.ts","../mol/key/key.test.tsx"],"names":[],"mappings":"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","file":"web.test.js","sourcesContent":["namespace $ {\n\n\texport function $mol_fail( error : any ) : never {\n\t\tthrow error\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_fail_hidden( error : any ) : never {\n\t\tthrow error /// Use 'Never Pause Here' breakpoint in DevTools or simply blackbox this script\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_test( set : { [ name : string ] : string | ( ( context : $ )=> void ) } ) {\n\t\t\n\t\tfor( let name in set ) {\n\n\t\t\tconst code = set[ name ]\n\t\t\tconst test = ( typeof code === 'string' ) ? new Function( '' , code ) as ()=> void : code\n\t\t\t\n\t\t\t$mol_test_all.push( test )\n\t\t}\n\n\t\t$mol_test_schedule()\n\t}\n\n\texport let $mol_test_mocks = [] as Array< ( context : $ )=> void >\n\n\texport const $mol_test_all = [] as Array< ( context : $ )=> any >\n\n\texport async function $mol_test_run() {\n\n\t\tfor( var test of $mol_test_all ) {\n\n\t\t\tlet context = Object.create( $$ )\n\t\t\tfor( let mock of $mol_test_mocks ) await mock( context )\n\t\t\t\n\t\t\tconst res = test( context )\n\t\t\tif( res instanceof Promise ) {\n\t\t\t\tawait new Promise( ( done, fail )=> {\n\t\t\t\t\tres.then( done, fail )\n\t\t\t\t\tsetTimeout( ()=> fail( new Error( 'Test timeout: ' + test.name ) ), 1000 )\n\t\t\t\t} )\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\t$$.$mol_log3_done({\n\t\t\tplace: '$mol_test',\n\t\t\tmessage: 'All tests passed',\n\t\t\tcount: $mol_test_all.length,\n\t\t})\n\t\t\n\t}\n\t\n\tlet scheduled = false\n\texport function $mol_test_schedule() {\n\n\t\tif( scheduled ) return\n\t\tscheduled = true\n\n\t\tsetTimeout( async ()=> {\n\t\t\t\n\t\t\tscheduled = false\n \t\t\t\n\t\t\ttry {\n\t\t\t\tawait $mol_test_run()\n\t\t\t} finally {\n\t\t\t\t$$.$mol_test_complete()\n\t\t\t}\n\t\t\t\n\t\t} , 0 )\n\t\t\n\t}\n\n\t$mol_test_mocks.push( context => {\n\t\tlet seed = 0\n\n\t\tcontext.Math = Object.create( Math )\n\t\tcontext.Math.random = ()=> Math.sin( seed++ )\n\n\t\tconst forbidden = [ 'XMLHttpRequest' , 'fetch' ]\n\n\t\tfor( let api of forbidden ) {\n\t\t\tcontext[ api ] = new Proxy( function(){} , {\n\t\t\t\tget() {\n\t\t\t\t\t$mol_fail_hidden( new Error( `${ api } is forbidden in tests` ) )\n\t\t\t\t} ,\n\t\t\t\tapply() {\n\t\t\t\t\t$mol_fail_hidden( new Error( `${ api } is forbidden in tests` ) )\n\t\t\t\t} ,\n\t\t\t} )\n\t\t}\n\t\t\n\t} )\n\n\t$mol_test({\n\n\t\t'mocked Math.random'( $ ) {\n\t\t\tconsole.assert( $.Math.random() === 0 )\n\t\t\tconsole.assert( $.Math.random() === Math.sin(1) )\n\t\t} ,\n\n\t\t'forbidden XMLHttpRequest'( $ ) {\n\t\t\ttry {\n\t\t\t\tconsole.assert( void new $.XMLHttpRequest )\n\t\t\t} catch( error: any ) {\n\t\t\t\tconsole.assert( error.message === 'XMLHttpRequest is forbidden in tests' )\n\t\t\t}\n\t\t} ,\n\n\t\t'forbidden fetch'( $ ) {\n\t\t\ttry {\n\t\t\t\tconsole.assert( void $.fetch('') )\n\t\t\t} catch( error: any ) {\n\t\t\t\tconsole.assert( error.message === 'fetch is forbidden in tests' )\n\t\t\t}\n\t\t} ,\n\n\t})\n\n}\n","namespace $ {\n\t\n\texport function $mol_test_complete() {\n\t}\n\t\n}\n","namespace $ {\n\t\n\texport var $mol_dom_context : typeof globalThis\n\t\n}\n","namespace $ {\n\t\n\t$.$mol_dom_context = self as any\n\t\n}\n","namespace $ {\n\n\texport function $mol_dom_serialize(\n\t\tnode: Node\n\t) {\n\t\tconst serializer = new $mol_dom_context.XMLSerializer\n\t\treturn serializer.serializeToString( node )\n\t}\n\n}\n","namespace $ {\n\t$mol_test( {\n\t\t\n\t\t'must be false'() {\n\t\t\t$mol_assert_not( 0 )\n\t\t} ,\n\t\t\n\t\t'must be true'() {\n\t\t\t$mol_assert_ok( 1 )\n\t\t} ,\n\t\t\n\t\t'two must be equal'() {\n\t\t\t$mol_assert_equal( 2 , 2 )\n\t\t} ,\n\t\t\n\t\t'three must be equal'() {\n\t\t\t$mol_assert_equal( 2 , 2 , 2 )\n\t\t} ,\n\t\t\n\t\t'two must be unique'() {\n\t\t\t$mol_assert_unique( [ 3 ] , [ 3 ] )\n\t\t} ,\n\t\t\n\t\t'three must be unique'() {\n\t\t\t$mol_assert_unique( [ 3 ] , [ 3 ] , [ 3 ] )\n\t\t} ,\n\t\t\n\t\t'two must be alike'() {\n\t\t\t$mol_assert_like( [ 3 ] , [ 3 ] )\n\t\t} ,\n\t\t\n\t\t'three must be alike'() {\n\t\t\t$mol_assert_like( [ 3 ] , [ 3 ] , [ 3 ] )\n\t\t} ,\n\t\t\n\t} )\n}\n","namespace $ {\n\t\n\texport function $mol_assert_ok( value : any ) {\n\t\tif( value ) return\n\t\t$mol_fail( new Error( `${value} ≠ true` ) )\n\t}\n\t\n\texport function $mol_assert_not( value : any ) {\n\t\tif( !value ) return\n\t\t$mol_fail( new Error( `${value} ≠ false` ) )\n\t}\n\t\n\texport function $mol_assert_fail( handler : ()=> any , ErrorRight? : any ) {\n\t\t\n\t\tconst fail = $.$mol_fail\n\t\t\n\t\ttry {\n\t\t\t$.$mol_fail = $.$mol_fail_hidden\n\t\t\t\n\t\t\thandler()\n\n\t\t} catch( error: any ) {\n\t\t\t\n\t\t\tif( !ErrorRight ) return error\n\t\t\t\n\t\t\t$.$mol_fail = fail\n\n\t\t\tif( typeof ErrorRight === 'string' ) {\n\t\t\t\t$mol_assert_equal( error.message, ErrorRight )\n\t\t\t} else {\n\t\t\t\t$mol_assert_ok( error instanceof ErrorRight )\n\t\t\t}\n\t\t\t\n\t\t\treturn error\n\n\t\t} finally {\n\t\t\t$.$mol_fail = fail\n\t\t}\n\n\t\t$mol_fail( new Error( 'Not failed' ) )\n\t}\n\t\n\texport function $mol_assert_equal< Value >( ... args : [ Value, Value, ...Value[] ] ) {\n\t\tfor( let i = 0 ; i < args.length ; ++i ) {\n\t\t\tfor( let j = 0 ; j < args.length ; ++j ) {\n\t\t\t\tif( i === j ) continue\n\t\t\t\tif( Number.isNaN( args[i] as any as number ) && Number.isNaN( args[j] as any as number ) ) continue\n\t\t\t\tif( args[i] !== args[j] ) $mol_fail( new Error( `Not equal (${i+1}:${j+1})\\n${ args[i] }\\n${ args[j] }` ) )\n\t\t\t}\n\t\t}\n\t}\n\t\n\texport function $mol_assert_unique( ... args : [ any, any, ...any[] ] ) {\n\t\tfor( let i = 0 ; i < args.length ; ++i ) {\n\t\t\tfor( let j = 0 ; j < args.length ; ++j ) {\n\t\t\t\tif( i === j ) continue\n\t\t\t\tif( args[i] === args[j] || ( Number.isNaN( args[i] as any as number ) && Number.isNaN( args[j] as any as number ) ) ) {\n\t\t\t\t\t$mol_fail( new Error( `args[${ i }] = args[${ j }] = ${ args[i] }` ) )\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\texport function $mol_assert_like< Value >( head : Value, ... tail : Value[]) {\n\t\tfor( let [ index, value ] of Object.entries( tail ) ) {\n\n\t\t\tif( !$mol_compare_deep( value , head ) ) {\n\n\t\t\t\tconst print = ( val : any ) => {\n\t\t\t\t\t\n\t\t\t\t\tif( !val ) return val\n\t\t\t\t\tif( typeof val !== 'object' ) return val\n\t\t\t\t\tif( 'outerHTML' in val ) return val.outerHTML\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn JSON.stringify( val )\n\t\t\t\t\t} catch( error: any ) {\n\t\t\t\t\t\tconsole.error( error )\n\t\t\t\t\t\treturn val\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn $mol_fail( new Error( `Not like (1:${ + index + 2 })\\n${ print( head ) }\\n---\\n${ print( value ) }` ) )\n\n\t\t\t}\n\n\t\t}\n\t}\n\t\n\texport function $mol_assert_dom( left: Element, right: Element ) {\n\t\t$mol_assert_equal( $mol_dom_serialize( left ), $mol_dom_serialize( right ) )\n\t}\n\n}\n","namespace $ {\n\n\t$mol_test({\n\t\t\n\t\t'FQN of anon function'($) {\n\t\t\tconst $$ = Object.assign( $ , { $mol_func_name_test : ( ()=> ()=> {} )() } )\n\t\t\t$mol_assert_equal( $$.$mol_func_name_test.name , '' )\n\t\t\t$mol_assert_equal( $$.$mol_func_name( $$.$mol_func_name_test ) , '$mol_func_name_test' )\n\t\t\t$mol_assert_equal( $$.$mol_func_name_test.name , '$mol_func_name_test' )\n\t\t},\n\n\t})\n\n}\n","namespace $ {\n\t\n\texport function $mol_func_name( this : $ , func : Function ) : string {\n\t\t\n\t\tlet name = func.name\n\t\tif( name?.length > 1 ) return name\n\n\t\tfor( let key in this ) {\n\t\t\ttry {\n\t\t\t\tif( this[ key ] !== func ) continue\n\t\t\t\tname = key\n\t\t\t\tObject.defineProperty( func , 'name' , { value : name } )\n\t\t\t\tbreak\n\t\t\t} catch {}\n\t\t}\n\n\t\treturn name\n\t}\n\n\texport function $mol_func_name_from< Target extends Function >( target : Target , source : Function ) {\n\t\tObject.defineProperty( target , 'name' , { value : source.name } )\n\t\treturn target\n\t}\n\n}\n","namespace $ {\n\n\texport function $mol_dom_render_children (\n\t\tel : Element | DocumentFragment ,\n\t\tchildNodes : NodeList | Array< Node | string | null >\n\t) {\n\t\tconst node_set = new Set< Node | string | null >( childNodes )\n\t\t\n\t\tlet nextNode : Node | null = el.firstChild\n\t\tfor( let view of childNodes ) {\n\n\t\t\tif( view == null ) continue\n\n\t\t\tif( view instanceof $mol_dom_context.Node ) {\n\t\t\t\t\n\t\t\t\twhile( true ) {\n\t\t\t\t\tif( !nextNode ) {\n\t\t\t\t\t\tel.appendChild( view )\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tif( nextNode == view ) {\n\t\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t\t\tbreak\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif( node_set.has( nextNode ) ) {\n\t\t\t\t\t\t\tel.insertBefore( view , nextNode )\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst nn = nextNode.nextSibling\n\t\t\t\t\t\t\tel.removeChild( nextNode )\n\t\t\t\t\t\t\tnextNode = nn\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t} else {\n\t\t\t\tif( nextNode && nextNode.nodeName === '#text' ) {\n\t\t\t\t\tconst str = String( view )\n\t\t\t\t\tif( nextNode.nodeValue !== str ) nextNode.nodeValue = str\n\t\t\t\t\tnextNode = nextNode.nextSibling\n\t\t\t\t} else {\n\t\t\t\t\tconst textNode = $mol_dom_context.document.createTextNode( String( view ) )\n\t\t\t\t\tel.insertBefore( textNode , nextNode )\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\twhile( nextNode ) {\n\t\t\tconst currNode = nextNode\n\t\t\tnextNode = currNode.nextSibling\n\t\t\tel.removeChild( currNode )\n\t\t}\n\t}\n\n}\n",null,null,null,null,null,null,null,"namespace $ {\n\n\t/** Logger event data */\n\texport type $mol_log3_event< Fields > = {\n\t\t[ key in string ] : unknown\n\t} & {\n\t\t\n\t\t/** Time of event creation */\n\t\ttime? : string\n\n\t\t/** Place of event creation */\n\t\tplace : unknown\n\n\t\t/** Short description of event */\n\t\tmessage : string\n\n\t} & Fields\n\n\t/** Logger function */\n\texport type $mol_log3_logger< Fields , Res = void > = (\n\t\tthis : $ ,\n\t\tevent : $mol_log3_event< Fields > ,\n\t)=> Res\n\n\t/** Log begin of some task */\n\texport declare let $mol_log3_come : $mol_log3_logger<{}>\n\t\n\t/** Log end of some task */\n\texport declare let $mol_log3_done : $mol_log3_logger<{}>\n\t\n\t/** Log error */\n\texport declare let $mol_log3_fail : $mol_log3_logger<{}>\n\t\n\t/** Log warning message */\n\texport declare let $mol_log3_warn : $mol_log3_logger<{ hint : string }>\n\t\n\t/** Log some generic event */\n\texport declare let $mol_log3_rise : $mol_log3_logger<{}>\n\n\t/** Log begin of log group, returns func to close group */\n\texport declare let $mol_log3_area : $mol_log3_logger< {} , ()=> void >\n\n\t/** Log begin of collapsed group only when some logged inside, returns func to close group */\n\texport function $mol_log3_area_lazy(\n\t\tthis : $ ,\n\t\tevent : $mol_log3_event<{}> ,\n\t) {\n\n\t\tconst self = this\n\t\tconst stack = self.$mol_log3_stack\n\n\t\tconst deep = stack.length\n\t\tlet logged = false\n\n\t\tstack.push( ()=> {\n\t\t\tlogged = true\n\t\t\tself.$mol_log3_area.call( self , event )\n\t\t} )\n\n\t\treturn ()=> {\n\t\t\tif( logged ) self.console.groupEnd()\n\t\t\tif( stack.length > deep ) stack.length = deep\n\t\t}\n\n\t}\n\n\texport let $mol_log3_stack = [] as ( ()=> void )[]\n\n}\n",null,null,"namespace $ {\n\n\t$mol_test_mocks.push( $ => {\n\t\t$.$mol_log3_come = ()=> {}\n\t\t$.$mol_log3_done = ()=> {}\n\t\t$.$mol_log3_fail = ()=> {}\n\t\t$.$mol_log3_warn = ()=> {}\n\t\t$.$mol_log3_rise = ()=> {}\n\t\t$.$mol_log3_area = ()=> ()=> {}\n\t} )\n\n}\n","namespace $ {\n\n\texport function $mol_log3_web_make(\n\t\tlevel : $mol_type_keys_extract< Console, Function >,\n\t\tcolor : string,\n\t) {\n\n\t\treturn function $mol_log3_logger(\n\t\t\tthis : $ ,\n\t\t\tevent : $mol_log3_event<{}> ,\n\t\t) {\n\n\t\t\tconst pending = this.$mol_log3_stack.pop()\n\t\t\tif( pending ) pending()\n\n\t\t\tlet tpl = '%c'\n\t\t\tconst chunks = Object.values( event )\n\n\t\t\tfor( let i = 0 ; i < chunks.length ; ++i ) {\n\t\t\t\ttpl += ( typeof chunks[i] === 'string' ) ? ' ⦙ %s' : ' ⦙ %o'\n\t\t\t}\n\t\n\t\t\tconst style = `color:${color};font-weight:bolder`\n\n\t\t\t;( this.console[ level ] as any )( tpl , style , ... chunks )\n\n\t\t\tconst self = this\n\t\t\treturn ()=> self.console.groupEnd()\n\n\t\t}\n\n\t}\n\n\t$.$mol_log3_come = $mol_log3_web_make( 'info' , 'royalblue' )\n\t$.$mol_log3_done = $mol_log3_web_make( 'info' , 'forestgreen' )\n\t$.$mol_log3_fail = $mol_log3_web_make( 'error' , 'orangered' )\n\t$.$mol_log3_warn = $mol_log3_web_make( 'warn' , 'goldenrod' )\n\t$.$mol_log3_rise = $mol_log3_web_make( 'log' , 'magenta' )\n\t$.$mol_log3_area = $mol_log3_web_make( 'group' , 'cyan' )\n\n}\n","/** @jsx $mol_jsx */\nnamespace $ {\n\t\n\t$mol_test({\n\t\t\n\t\t'Make empty div'() {\n\t\t\t$mol_assert_equal( (<div/>).outerHTML , '<div></div>' )\n\t\t} ,\n\t\t\n\t\t'Define native field'() {\n\t\t\t\n\t\t\tconst dom = <input value='123' /> as HTMLInputElement\n\t\t\t\n\t\t\t$mol_assert_equal( dom.outerHTML, '<input value=\"123\">' )\n\t\t\t$mol_assert_equal( dom.value, '123' )\n\n\t\t} ,\n\t\t\n\t\t'Define classes'() {\n\t\t\t\n\t\t\tconst dom = <div class={ 'foo bar' } />\n\t\t\t\n\t\t\t$mol_assert_equal( dom.outerHTML, '<div class=\"foo bar\"></div>' )\n\n\t\t} ,\n\t\t\n\t\t'Define styles'() {\n\t\t\t\n\t\t\tconst dom = <div style={{ color: 'red' }} />\n\t\t\t\n\t\t\t$mol_assert_equal( dom.outerHTML, '<div style=\"color: red;\"></div>' )\n\n\t\t} ,\n\t\t\n\t\t'Define dataset'() {\n\t\t\t\n\t\t\tconst dom = <div dataset={{ foo: 'bar' }} />\n\t\t\t\n\t\t\t$mol_assert_equal( dom.outerHTML, '<div data-foo=\"bar\"></div>' )\n\n\t\t} ,\n\t\t\n\t\t'Define attributes'() {\n\t\t\t\n\t\t\tconst dom = <div lang=\"ru\" hidden />\n\t\t\t\n\t\t\t$mol_assert_equal( dom.outerHTML, '<div lang=\"ru\" hidden=\"\"></div>' )\n\n\t\t} ,\n\t\t\n\t\t'Define child nodes'() {\n\n\t\t\tconst dom =\n\t\t\t\t<div>\n\t\t\t\t\thello\n\t\t\t\t\t<strong>world</strong>\n\t\t\t\t\t!\n\t\t\t\t</div>\n\t\t\t\n\t\t\t$mol_assert_equal( dom.outerHTML, '<div>hello<strong>world</strong>!</div>' )\n\n\t\t} ,\n\n\t\t'Function as component'() {\n\n\t\t\tconst Button = (\n\t\t\t\tprops: { hint: string },\n\t\t\t\ttarget: ()=> string,\n\t\t\t) => {\n\t\t\t\treturn <button title={ props.hint } >{ target() }</button>\n\t\t\t}\n\n\t\t\tconst dom = <Button id=\"foo\" hint=\"click me\">{ ()=> 'hey!' }</Button>\n\n\t\t\t$mol_assert_equal( dom.outerHTML, '<button id=\"foo\" title=\"click me\" class=\"Button\">hey!</button>' )\n\t\t\t\n\t\t} ,\n\t\t\n\t\t'Nested guid generation'() {\n\n\t\t\tconst Foo = ()=> {\n\t\t\t\treturn <div>\n\t\t\t\t\t<Bar id=\"bar\">\n\t\t\t\t\t\t<img id=\"icon\" />\n\t\t\t\t\t</Bar>\n\t\t\t\t</div>\n\t\t\t}\n\n\t\t\tconst Bar = ( props: {}, icon: Element )=> {\n\t\t\t\treturn <span>{ icon }<i id=\"label\"/></span>\n\t\t\t}\n\n\t\t\tconst dom = <Foo id=\"foo\" />\n\n\t\t\t$mol_assert_equal( dom.outerHTML, '<div id=\"foo\" class=\"Foo\"><span id=\"foo/bar\" class=\"Foo_bar Bar\"><img id=\"foo/icon\" class=\"Foo_icon\"><i id=\"foo/bar/label\" class=\"Foo_bar_label Bar_label\"></i></span></div>' )\n\t\t\t\n\t\t} ,\n\t\t\n\t\t'Fail on non unique ids'() {\n\n\t\t\tconst App = ()=> {\n\t\t\t\treturn <div>\n\t\t\t\t\t<span id=\"bar\" />\n\t\t\t\t\t<span id=\"bar\" />\n\t\t\t\t</div>\n\t\t\t}\n\n\t\t\t$mol_assert_fail( ()=> <App id=\"foo\" />, 'JSX already has tag with id \"foo/bar\"' )\n\t\t\t\n\t\t} ,\n\t\t\n\t\t'Owner based guid generationn'() {\n\n\t\t\tconst Foo = ()=> {\n\t\t\t\treturn <div>\n\t\t\t\t\t<Bar id=\"middle\" icon={ ()=> <img id=\"icon\" /> } />\n\t\t\t\t</div>\n\t\t\t}\n\n\t\t\tconst Bar = ( props: { icon: ()=> Element } )=> {\n\t\t\t\treturn <span>{ props.icon() }</span>\n\t\t\t}\n\n\t\t\tconst dom = <Foo id=\"app\" />\n\n\t\t\t$mol_assert_equal( dom.outerHTML, '<div id=\"app\" class=\"Foo\"><span id=\"app/middle\" class=\"Foo_middle Bar\"><img id=\"app/icon\" class=\"Foo_icon\"></span></div>' )\n\t\t\t\n\t\t} ,\n\t\t\n\t\t'Fail on same ids from different caller'() {\n\n\t\t\tconst Foo = ()=> {\n\t\t\t\treturn <div>\n\t\t\t\t\t<img id=\"icon\" />\n\t\t\t\t\t<Bar id=\"bar\" icon={ ()=> <img id=\"icon\" /> } />\n\t\t\t\t</div>\n\t\t\t}\n\n\t\t\tconst Bar = ( props: { icon: ()=> Element } )=> {\n\t\t\t\treturn <span>{ props.icon() }</span>\n\t\t\t}\n\n\t\t\t$mol_assert_fail( ()=> <Foo id=\"foo\" />, 'JSX already has tag with id \"foo/icon\"' )\n\t\t\t\n\t\t} ,\n\t\t\n\t})\n\t\n}\n","namespace $ {\n\n\texport let $mol_jsx_prefix = ''\n\texport let $mol_jsx_crumbs = ''\n\n\texport let $mol_jsx_booked = null as null | Set< string >\n\t\n\texport let $mol_jsx_document : $mol_jsx.JSX.ElementClass['ownerDocument'] = {\n\t\tgetElementById : ()=> null ,\n\t\tcreateElementNS : ( space: string, name : string )=> $mol_dom_context.document.createElementNS( space, name ) as any,\n\t\tcreateDocumentFragment : ()=> $mol_dom_context.document.createDocumentFragment(),\n\t}\n\t\n\texport const $mol_jsx_frag = ''\n\n\texport function $mol_jsx<\n\t\tProps extends $mol_jsx.JSX.IntrinsicAttributes,\n\t\tChildren extends Array< Node | string >\n\t>(\n\t\tElem : string\n\t\t\t| ( ( props : Props , ... children : Children ) => Element ) ,\n\t\tprops : Props ,\n\t\t... childNodes : Children\n\t) : Element | DocumentFragment {\n\n\t\tconst id = props && props.id || ''\n\t\tconst guid = id ? $mol_jsx_prefix ? $mol_jsx_prefix + '/'+ id : id : $mol_jsx_prefix\n\t\tconst crumbs_self = id ? $mol_jsx_crumbs.replace( /(\\S+)/g, `$1_${ id.replace( /\\/.*/i, '' ) }` ) : $mol_jsx_crumbs\n\t\t\n\t\tif( Elem && $mol_jsx_booked ) {\n\t\t\tif( $mol_jsx_booked.has( id ) ) {\n\t\t\t\t$mol_fail( new Error( `JSX already has tag with id ${ JSON.stringify( guid ) }` ) )\n\t\t\t} else {\n\t\t\t\t$mol_jsx_booked.add( id )\n\t\t\t}\n\t\t}\n\n\t\tlet node: Element | DocumentFragment | null = guid ? $mol_jsx_document.getElementById( guid ) : null\n\n\t\tif( $mol_jsx_prefix ) {\n\t\t\t\n\t\t\tconst prefix_ext = $mol_jsx_prefix\n\t\t\tconst booked_ext = $mol_jsx_booked\n\t\t\tconst crumbs_ext = $mol_jsx_crumbs\n\t\t\t\n\t\t\tfor( const field in props ) {\n\t\t\t\t\n\t\t\t\tconst func = props[ field ]\n\t\t\t\tif( typeof func !== 'function' ) continue\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tconst wrapper = function( this: any, ... args: any[] ) {\n\t\t\t\t\t\n\t\t\t\t\tconst prefix = $mol_jsx_prefix\n\t\t\t\t\tconst booked = $mol_jsx_booked\n\t\t\t\t\tconst crumbs = $mol_jsx_crumbs\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\n\t\t\t\t\t\t$mol_jsx_prefix = prefix_ext\n\t\t\t\t\t\t$mol_jsx_booked = booked_ext\n\t\t\t\t\t\t$mol_jsx_crumbs = crumbs_ext\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn func.call( this, ... args )\n\t\t\t\t\t\t\n\t\t\t\t\t} finally {\n\t\t\t\t\t\t\n\t\t\t\t\t\t$mol_jsx_prefix = prefix\n\t\t\t\t\t\t$mol_jsx_booked = booked\n\t\t\t\t\t\t$mol_jsx_crumbs = crumbs\n\t\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t$mol_func_name_from( wrapper, func )\n\t\t\t\tprops[ field ] = wrapper as any\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\tif( typeof Elem !== 'string' ) {\n\n\t\t\tif( 'prototype' in Elem ) {\n\n\t\t\t\tconst view = node && node[ Elem as any ] || new ( Elem as any )\n\t\t\t\t\n\t\t\t\tObject.assign( view , props )\n\t\t\t\tview[ Symbol.toStringTag ] = guid\n\t\t\t\t\n\t\t\t\tview.childNodes = childNodes\n\t\t\t\t\n\t\t\t\tif( !view.ownerDocument ) view.ownerDocument = $mol_jsx_document\n\t\t\t\tview.className = ( crumbs_self ? crumbs_self + ' ' : '' ) + ( Elem['name'] || Elem )\n\t\t\t\t\n\t\t\t\tnode = view.valueOf()\n\t\t\t\t\n\t\t\t\tnode![ Elem as any ] = view\n\t\t\t\t\n\t\t\t\treturn node!\n\n\t\t\t} else {\n\n\t\t\t\tconst prefix = $mol_jsx_prefix\n\t\t\t\tconst booked = $mol_jsx_booked\n\t\t\t\tconst crumbs = $mol_jsx_crumbs\n\t\t\t\t\n\t\t\t\ttry {\n\t\n\t\t\t\t\t$mol_jsx_prefix = guid\n\t\t\t\t\t$mol_jsx_booked = new Set\n\t\t\t\t\t$mol_jsx_crumbs = ( crumbs_self ? crumbs_self + ' ' : '' ) + ( Elem['name'] || Elem )\n\t\n\t\t\t\t\treturn ( Elem as any )( props , ... childNodes )\n\t\t\t\t\t\n\t\t\t\t} finally {\n\n\t\t\t\t\t$mol_jsx_prefix = prefix\n\t\t\t\t\t$mol_jsx_booked = booked\n\t\t\t\t\t$mol_jsx_crumbs = crumbs\n\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\n\t\t}\n\n\t\tif( !node ) {\n\t\t\tnode = Elem\n\t\t\t\t? $mol_jsx_document.createElementNS( props?.xmlns ?? 'http://www.w3.org/1999/xhtml', Elem )\n\t\t\t\t: $mol_jsx_document.createDocumentFragment()\n\t\t}\n\n\t\t$mol_dom_render_children( node , ( [] as ( Node | string )[] ).concat( ... childNodes ) )\n\t\tif( !Elem ) return node\n\n\t\tif( guid ) ( node as Element ).id = guid\n\t\tfor( const key in props ) {\n\t\t\tif( key === 'id' ) continue\n\n\t\t\tif( typeof props[ key ] === 'string' ) {\n\n\t\t\t\t;( node as Element ).setAttribute( key , props[ key as any ] )\n\n\t\t\t} else if(\n\t\t\t\tprops[ key ] &&\n\t\t\t\ttypeof props[ key ] === 'object' &&\n\t\t\t\tReflect.getPrototypeOf( props[ key ] as any ) === Reflect.getPrototypeOf({})\n\t\t\t) {\n\n\t\t\t\tif( typeof node[ key as any ] === 'object' ) {\n\t\t\t\t\tObject.assign( ( node as any )[ key ] , props[ key ] )\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tnode[ key as any ] = props[ key ]\n\t\t\t\t\n\t\t\t}\n\n\t\t}\n\n\t\tif( $mol_jsx_crumbs ) ( node as Element ).className = ( props?.['class'] ? props['class'] + ' ' : '' ) + crumbs_self\n\n\t\treturn node\n\n\t}\n\n\texport declare namespace $mol_jsx.JSX {\n\n\t\texport interface Element extends HTMLElement {\n\t\t\tclass?: string\n\t\t}\n\t\t\n\t\texport interface ElementClass {\n\t\t\tattributes : {}\n\t\t\townerDocument : Pick< Document , 'getElementById' | 'createElementNS' | 'createDocumentFragment' >\n\t\t\tchildNodes : Array< Node | string >\n\t\t\tvalueOf() : Element\n\t\t}\n\t\t\n\t\ttype OrString< Dict > = {\n\t\t\t[ key in keyof Dict ]: Dict[ key ] | string\n\t\t}\n\t\t\n\t\t/** Props for html elements */\n\t\texport type IntrinsicElements = {\n\t\t\t[ key in keyof ElementTagNameMap ]? : $.$mol_type_partial_deep< OrString<\n\t\t\t\t& Element\n\t\t\t\t& IntrinsicAttributes\n\t\t\t\t& ElementTagNameMap[ key ]\n\t\t\t> >\n\t\t}\n\t\t\n\t\t/** Additional undeclared props */\n\t\texport interface IntrinsicAttributes {\n\t\t\tid? : string\n\t\t\txmlns? : string\n\t\t}\n\t\t\n\t\texport interface ElementAttributesProperty {\n\t\t\tattributes : {\n\t\t\t}\n\t\t}\n\t\t\n\t\t// export type IntrinsicClassAttributes< Class > = $.$mol_type_partial_deep< Omit< Class , 'valueOf' > >\n\t\t\n\t\tinterface ElementChildrenAttribute {\n\t\t}\n\t\n\t}\n\n}\n","/** @jsx $mol_jsx */\nnamespace $ {\n\n\t$mol_test({\n\n\t\t'nulls & undefineds'() {\n\n\t\t\t$mol_assert_ok( $mol_compare_deep( null , null ) )\n\t\t\t$mol_assert_ok( $mol_compare_deep( undefined , undefined ) )\n\t\t\t\n\t\t\t$mol_assert_not( $mol_compare_deep( undefined , null ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( {} , null ) )\n\t\t\t\n\t\t} ,\n\n\t\t'number'() {\n\t\t\t\n\t\t\t$mol_assert_ok( $mol_compare_deep( 1 , 1 ) )\n\t\t\t$mol_assert_ok( $mol_compare_deep( Number.NaN , Number.NaN ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( 1 , 2 ) )\n\t\t\t\n\t\t\t$mol_assert_ok( $mol_compare_deep( Object( 1 ) , Object( 1 ) ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( Object( 1 ) , Object( 2 ) ) )\n\t\t\t\n\t\t} ,\n\n\t\t'POJO'() {\n\t\t\t$mol_assert_ok( $mol_compare_deep( {} , {} ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( { a : 1 } , { b : 2 } ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( { a : 1 } , { a : 2 } ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( {} , { a : undefined } ) )\n\t\t\t$mol_assert_ok( $mol_compare_deep( { a: 1, b: 2 } , { b: 2, a: 1 } ) )\n\t\t\t$mol_assert_ok( $mol_compare_deep( { a : { b : 1 } } , { a : { b : 1 } } ) )\n\t\t} ,\n\n\t\t'Array'() {\n\t\t\t$mol_assert_ok( $mol_compare_deep( [] , [] ) )\n\t\t\t$mol_assert_ok( $mol_compare_deep( [ 1 , [2] ] , [ 1 , [2] ] ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( [ 1 , 2 ] , [ 1 , 3 ] ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( [ 1 , 2 , ] , [ 1 , 3 , undefined ] ) )\n\t\t} ,\n\n\t\t'Non POJO are different'() {\n\t\t\t\n\t\t\tclass Thing extends Object {}\n\t\t\t$mol_assert_not( $mol_compare_deep( new Thing , new Thing ) )\n\t\t\t\n\t\t\t$mol_assert_not( $mol_compare_deep( ()=> 1 , ()=>1 ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( new RangeError( 'Test error' ) , new RangeError( 'Test error' ) ) )\n\t\t\t\n\t\t} ,\n\n\t\t'same POJOs with cyclic reference'() {\n\n\t\t\tconst a = { foo : {} }\n\t\t\ta['self'] = a\n\n\t\t\tconst b = { foo : {} }\n\t\t\tb['self'] = b\n\n\t\t\t$mol_assert_ok( $mol_compare_deep( a , b ) )\n\n\t\t} ,\n\n\t\t'Date'() {\n\t\t\t$mol_assert_ok( $mol_compare_deep( new Date( 12345 ) , new Date( 12345 ) ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( new Date( 12345 ) , new Date( 12346 ) ) )\n\t\t} ,\n\n\t\t'RegExp'() {\n\t\t\t$mol_assert_ok( $mol_compare_deep( /\\x22/mig , /\\x22/mig ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( /\\x22/mig , /\\x21/mig ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( /\\x22/mig , /\\x22/mg ) )\n\t\t} ,\n\n\t\t'Error'() {\n\t\t\t\n\t\t\t$mol_assert_not( $mol_compare_deep( new Error( 'xxx' ) , new Error( 'xxx' ) ) )\n\n\t\t\tconst fail = ( message: string )=> new Error( message )\n\t\t\t\n\t\t\t$mol_assert_ok( $mol_compare_deep(\n\t\t\t\t... [ 'xxx' , 'xxx' ].map( msg => new Error( msg ) ) as [ Error, Error ]\n\t\t\t) )\n\t\t\t\n\t\t\t$mol_assert_not( $mol_compare_deep(\n\t\t\t\t... [ 'xxx' , 'yyy' ].map( msg => new Error( msg ) ) as [ Error, Error ]\n\t\t\t) )\n\t\t\t\n\t\t} ,\n\n\t\t'Map'() {\n\t\t\t$mol_assert_ok( $mol_compare_deep( new Map , new Map ) )\n\t\t\t$mol_assert_ok( $mol_compare_deep( new Map([ [ 1 , [2] ] ]) , new Map([ [ 1 , [2] ] ]) ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( new Map([ [ 1 , 2 ] ]) , new Map([ [ 1 , 3 ] ]) ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( new Map([ [ [1] , 2 ] ]) , new Map([ [ [1] , 2 ] ]) ) )\n\t\t} ,\n\t\t\n\t\t'Set'() {\n\t\t\t$mol_assert_ok( $mol_compare_deep( new Set , new Set ) )\n\t\t\t$mol_assert_ok( $mol_compare_deep( new Set([ 1 , [2] ]) , new Set([ 1 , [2] ]) ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( new Set([ 1 ]) , new Set([ 2 ]) ) )\n\t\t} ,\n\t\t\n\t\t'Uint8Array'() {\n\t\t\t$mol_assert_ok( $mol_compare_deep( new Uint8Array , new Uint8Array ) )\n\t\t\t$mol_assert_ok( $mol_compare_deep( new Uint8Array([ 0 ]) , new Uint8Array([ 0 ]) ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( new Uint8Array([ 0 ]) , new Uint8Array([ 1 ]) ) )\n\t\t} ,\n\t\t\n\t\t'Custom comparator'() {\n\t\t\t\n\t\t\tclass User {\n\t\t\t\t\n\t\t\t\tconstructor(\n\t\t\t\t\treadonly name: string,\n\t\t\t\t\treadonly rand = Math.random(),\n\t\t\t\t) {}\n\t\t\t\t\n\t\t\t\t[ Symbol.toPrimitive ]( mode: 'default' | 'number' | 'string' ) {\n\t\t\t\t\treturn this.name\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t$mol_assert_ok( $mol_compare_deep( new User( 'Jin' ), new User( 'Jin' ) ) )\n\t\t\t$mol_assert_not( $mol_compare_deep( new User( 'Jin' ), new User( 'John' ) ) )\n\t\t\t\n\t\t} ,\n\t\t\n\t})\n\n}\n","namespace $ {\n\n\texport let $mol_compare_deep_cache = new WeakMap< any , WeakMap< any , boolean > >()\n\t\n\t/**\n\t * Deeply compares two values. Returns true if equal.\n\t * Define `Symbol.toPrimitive` to customize.\n\t */\n\texport function $mol_compare_deep< Value >( left: Value, right: Value ): boolean {\n\n\t\tif( Object.is( left , right ) ) return true\n\n\t\tif( left === null ) return false\n\t\tif( right === null ) return false\n\n\t\tif( typeof left !== 'object' ) return false\n\t\tif( typeof right !== 'object' ) return false\n\n\t\tconst left_proto = Reflect.getPrototypeOf( left as any )\n\t\tconst right_proto = Reflect.getPrototypeOf( right as any )\n\t\t\n\t\tif( left_proto !== right_proto ) return false\n\n\t\tif( left instanceof Boolean ) return Object.is( left.valueOf(), right['valueOf']() )\n\t\tif( left instanceof Number ) return Object.is( left.valueOf(), right['valueOf']() )\n\t\tif( left instanceof String ) return Object.is( left.valueOf(), right['valueOf']() )\n\t\tif( left instanceof Date ) return Object.is( left.valueOf(), right['valueOf']() )\n\t\tif( left instanceof RegExp ) return left.source === right['source'] && left.flags === right['flags']\n\t\tif( left instanceof Error ) return left.stack === right['stack']\n\n\t\tlet left_cache = $mol_compare_deep_cache.get( left )\n\t\tif( left_cache ) {\n\n\t\t\tconst right_cache = left_cache.get( right )\n\t\t\tif( typeof right_cache === 'boolean' ) return right_cache\n\n\t\t} else {\n\t\t\t\n\t\t\tleft_cache = new WeakMap< any , boolean >([[ right, true ]])\n\t\t\t$mol_compare_deep_cache.set( left , left_cache )\n\n\t\t}\n\n\t\tlet result!: boolean\n\n\t\ttry {\n\t\t\t\n\t\t\tif( left_proto && !Reflect.getPrototypeOf( left_proto ) ) result = compare_pojo( left, right as any )\n\t\t\telse if( Array.isArray( left ) ) result = compare_array( left, right as any )\n\t\t\telse if( left instanceof Set ) result = compare_set( left, right as any )\n\t\t\telse if( left instanceof Map ) result = compare_map( left, right as any )\n\t\t\telse if( ArrayBuffer.isView( left ) ) result = compare_buffer( left, right as any )\n\t\t\telse if( Symbol.toPrimitive in left ) result = compare_primitive( left, right )\n\t\t\telse result = false\n\n\t\t} finally {\n\t\t\tleft_cache.set( right , result )\n\t\t}\n\t\t\n\t\treturn result\n\t}\n\n\tfunction compare_array< Value extends any[] >( left: Value, right: Value ): boolean {\n\t\t\n\t\tconst len = left.length\n\t\tif( len !== right.length ) return false\n\t\t\n\t\tfor( let i = 0; i < len; ++i ) {\n\t\t\tif( !$mol_compare_deep( left[i] , right[i] ) ) return false\n\t\t}\n\t\t\n\t\treturn true\n\t}\n\t\n\tfunction compare_buffer( left: ArrayBufferView, right: ArrayBufferView ): boolean {\n\t\t\n\t\tconst len = left.byteLength\n\t\tif( len !== right.byteLength ) return false\n\t\t\n\t\tfor( let i = 0; i < len; ++i ) {\n\t\t\tif( left[i] !== right[i] ) return false\n\t\t}\n\t\t\n\t\treturn true\n\t}\n\t\n\tfunction compare_iterator< Value extends IterableIterator<any> >(\n\t\tleft: Value,\n\t\tright: Value,\n\t\tcompare: ( left: any, right: any )=> boolean\n\t): boolean {\n\t\t\n\t\twhile( true ) {\n\n\t\t\tconst left_next = left.next()\n\t\t\tconst right_next = right.next()\n\n\t\t\tif( left_next.done !== right_next.done ) return false\n\t\t\tif( left_next.done ) break\n\n\t\t\tif( !compare( left_next.value , right_next.value ) ) return false\n\n\t\t}\n\n\t\treturn true\n\n\t}\n\t\n\tfunction compare_set< Value extends Set<any> >( left: Value, right: Value ): boolean {\n\t\tif( left.size !== right.size ) return false\n\t\treturn compare_iterator( left.values(), right.values(), $mol_compare_deep )\n\t}\n\t\n\tfunction compare_map< Key, Value >( left: Map< Key, Value > , right: Map< Key, Value > ): boolean {\n\t\tif( left.size !== right.size ) return false\n\t\treturn compare_iterator( left.keys(), right.keys(), Object.is )\n\t\t\t&& compare_iterator( left.values(), right.values(), $mol_compare_deep )\n\t}\n\t\n\tfunction compare_pojo( left: {}, right: {} ): boolean {\n\t\t\n\t\tconst left_keys = Object.getOwnPropertyNames( left )\n\t\tconst right_keys = Object.getOwnPropertyNames( right )\n\t\t\n\t\tif( left_keys.length !== right_keys.length ) return false\n\n\t\tfor( let key of left_keys ) {\n\t\t\tif( !$mol_compare_deep( left[ key ], Reflect.get( right, key ) ) ) return false\n\t\t}\n\n\t\treturn true\n\t}\n\t\n\tfunction compare_primitive( left: {}, right: {} ): boolean {\n\t\treturn Object.is(\n\t\t\tleft[ Symbol.toPrimitive ]( 'default' ),\n\t\t\tright[ Symbol.toPrimitive ]( 'default' ),\n\t\t)\n\t}\n\t\n}\n","/** @jsx $mol_jsx */\nnamespace $ {\n\t$mol_test({\n\t\t\n\t\t'Primitives'() {\n\t\t\t\n\t\t\t$mol_assert_equal( $mol_key( null ), 'null' )\n\t\t\t$mol_assert_equal( $mol_key( false ), 'false' )\n\t\t\t$mol_assert_equal( $mol_key( true ), 'true' )\n\t\t\t$mol_assert_equal( $mol_key( 0 ), '0' )\n\t\t\t$mol_assert_equal( $mol_key( '' ), '\"\"' )\n\t\t\t\n\t\t},\n\t\t\n\t\t'Array & POJO'() {\n\t\t\t\n\t\t\t$mol_assert_equal( $mol_key([ null ]), '[null]' )\n\t\t\t$mol_assert_equal( $mol_key({ foo: 0 }), '{\"foo\":0}' )\n\t\t\t$mol_assert_equal( $mol_key({ foo: [false] }), '{\"foo\":[false]}' )\n\t\t\t\n\t\t},\n\t\t\n\t\t'Function'() {\n\t\t\t\n\t\t\tconst func = ()=> {}\n\t\t\t$mol_assert_equal( $mol_key( func ), $mol_key( func ) )\n\t\t\t$mol_assert_unique( $mol_key( func ), $mol_key( ()=> {} ) )\n\t\t\t\n\t\t},\n\t\t\n\t\t'Objects'() {\n\t\t\t\n\t\t\tclass User {}\n\t\t\tconst jin = new User()\n\t\t\t\n\t\t\t$mol_assert_equal( $mol_key( jin ), $mol_key( jin ) )\n\t\t\t$mol_assert_unique( $mol_key( jin ), $mol_key( new User() ) )\n\t\t\t\n\t\t},\n\t\t\n\t\t'Elements'() {\n\t\t\t\n\t\t\tconst foo = <div>bar</div>\n\t\t\t\n\t\t\t$mol_assert_equal( $mol_key( foo ), $mol_key( foo ) )\n\t\t\t$mol_assert_unique( $mol_key( foo ), $mol_key( <div>bar</div> ) )\n\t\t\t\n\t\t},\n\t\t\n\t\t'Custom JSON representation'() {\n\t\t\t\n\t\t\tclass User {\n\t\t\t\tconstructor( public name: string, public age: number ) {}\n\t\t\t\ttoJSON() { return { name: this.name } }\n\t\t\t}\n\t\t\t\n\t\t\t$mol_assert_equal( $mol_key( new User( 'jin', 18 ) ), '{\"name\":\"jin\"}' )\n\t\t\t\n\t\t},\n\t\t\n\t\t'Special native classes'() {\n\t\t\t\n\t\t\t$mol_assert_equal( $mol_key( new Date( 'xyz' ) ), 'null' )\n\t\t\t$mol_assert_equal( $mol_key( new Date( '2001-01-02T03:04:05.678Z' ) ), '\"2001-01-02T03:04:05.678Z\"' )\n\t\t\t\n\t\t\t$mol_assert_equal( $mol_key( /./ ), '\"/./\"' )\n\t\t\t$mol_assert_equal( $mol_key( /\\./gimsu ), '\"/\\\\\\\\./gimsu\"' )\n\t\t\t\n\t\t},\n\t\t\n\t})\n}\n"]}