mol_vary 0.0.1 → 0.0.3
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/README.md +10 -11
- package/node.d.ts +4 -1
- package/node.d.ts.map +1 -1
- package/node.deps.json +1 -1
- package/node.js +20 -8
- package/node.js.map +1 -1
- package/node.mjs +20 -8
- package/node.test.js +21 -9
- package/node.test.js.map +1 -1
- package/package.json +1 -1
- package/web.d.ts +4 -1
- package/web.d.ts.map +1 -1
- package/web.deps.json +1 -1
- package/web.js +20 -8
- package/web.js.map +1 -1
- package/web.mjs +20 -8
- package/web.test.js +1 -1
- package/web.test.js.map +1 -1
package/README.md
CHANGED
|
@@ -7,15 +7,14 @@
|
|
|
7
7
|
- **Total deduplication**: equal strucrures are stored as links to first entry.
|
|
8
8
|
- **Intergated schema**: schema always stored with data.
|
|
9
9
|
- **Structural typing**: data mapped to classes by schema.
|
|
10
|
-
- **Direct Acyclic Graph model**: same
|
|
10
|
+
- **Direct Acyclic Graph model**: same structures may have different placements without cost.
|
|
11
11
|
|
|
12
12
|
## Comparison
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
| Size | 1x | 2x | 2x | 4x
|
|
14
|
+
[Benchmark](https://perf.js.hyoo.ru/#!bench=j1peaq_k376h9) results:
|
|
15
|
+
|
|
16
|
+
### Chrome 140
|
|
17
|
+

|
|
19
18
|
|
|
20
19
|
## API
|
|
21
20
|
|
|
@@ -47,11 +46,11 @@ class Foo {
|
|
|
47
46
|
|
|
48
47
|
}
|
|
49
48
|
|
|
50
|
-
$mol_vary.
|
|
51
|
-
( a = 0, b = 0 )=> new Foo( a, b ),
|
|
52
|
-
foo => [
|
|
53
|
-
[ 'a', 'b' ],
|
|
54
|
-
[ foo.a, foo.b ],
|
|
49
|
+
$mol_vary.type(
|
|
50
|
+
( a = 0, b = 0 )=> new Foo( a, b ), // factory
|
|
51
|
+
foo => [ // extractor
|
|
52
|
+
[ 'a', 'b' ], // keys
|
|
53
|
+
[ foo.a, foo.b ], // vals
|
|
55
54
|
],
|
|
56
55
|
)
|
|
57
56
|
```
|
package/node.d.ts
CHANGED
|
@@ -71,6 +71,9 @@ declare namespace $ {
|
|
|
71
71
|
fp64 = 95
|
|
72
72
|
}
|
|
73
73
|
class $mol_vary extends DataView<ArrayBuffer> {
|
|
74
|
+
static buffer: Uint8Array<ArrayBuffer>;
|
|
75
|
+
static buffer_view: $mol_vary;
|
|
76
|
+
static allocate(size: number): void;
|
|
74
77
|
static pack(data: unknown): Uint8Array<ArrayBuffer>;
|
|
75
78
|
static take(buf: Uint8Array<ArrayBuffer>): unknown;
|
|
76
79
|
tlen(pos: number, tip: keyof typeof $mol_vary_tip, len: number): number;
|
|
@@ -86,7 +89,7 @@ declare namespace $ {
|
|
|
86
89
|
static lean(val: object): readonly [keys: readonly any[], vals: readonly any[]];
|
|
87
90
|
static leanes: Map<object, (val: any) => readonly [keys: readonly any[], vals: readonly any[]]>;
|
|
88
91
|
static riches: Map<string, (...vals: readonly any[]) => object>;
|
|
89
|
-
static
|
|
92
|
+
static type<const Instance extends object, const Keys extends readonly any[], const Vals extends readonly any[]>(rich: ((...vals: Vals) => Instance) | (() => Instance), lean: (obj: Instance) => readonly [Keys, Vals]): void;
|
|
90
93
|
}
|
|
91
94
|
}
|
|
92
95
|
|
package/node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../mam.d.ts","../../fail/fail.d.ts","../../hash/numbers/number.d.ts","../../bigint/encode/encode.d.ts","../../hash/string/string.d.ts","../../charset/encode/encode.d.ts","../../charset/encoding/encoding.d.ts","../../charset/decode/decode.d.ts","../vary.d.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACfA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sourcesContent":[null,null,null,null,null,null,null,null,null]}
|
|
1
|
+
{"version":3,"sources":["../../../mam.d.ts","../../fail/fail.d.ts","../../hash/numbers/number.d.ts","../../bigint/encode/encode.d.ts","../../hash/string/string.d.ts","../../charset/encode/encode.d.ts","../../charset/encoding/encoding.d.ts","../../charset/decode/decode.d.ts","../vary.d.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACfA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;ACLA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sourcesContent":[null,null,null,null,null,null,null,null,null]}
|
package/node.deps.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"files":["mam.ts","LICENSE","README.md","mam.jam.js","tsfmt.json","package.json","tsconfig.json","lang.lang.tree","meta.lang.tree","sandbox.config.json","mol/CNAME","mol/LICENSE","mol/readme.md","mol/mol.meta.tree","mol/CONTRIBUTING.md","mol/CODE_OF_CONDUCT.md","mol/fail/fail.ts","mol/hash/numbers/number.ts","mol/bigint/encode/encode.ts","mol/hash/string/string.ts","mol/charset/encode/encode.ts","mol/charset/encoding/encoding.ts","mol/charset/decode/decode.ts","mol/vary/vary.ts","mol/vary/readme.md"],"mods":{},"deps_in":{"mol":{"mol/vary":-999,"mol/fail":-999,"mol/hash":-999,"mol/bigint":-999,"mol/charset":-999},"":{"mol":-999},"mol/fail":{"mol/vary":-3},"mol/hash/numbers":{"mol/vary":-6,"mol/hash/string":-2},"mol/hash":{"mol/hash/numbers":-999,"mol/hash/string":-999},"mol/bigint/encode":{"mol/vary":-6},"mol/bigint":{"mol/bigint/encode":-999},"mol/hash/string":{"mol/vary":-6},"mol/charset/encode":{"mol/vary":-6},"mol/charset":{"mol/charset/encode":-999,"mol/charset/decode":-999,"mol/charset/encoding":-999},"mol/charset/decode":{"mol/vary":-4},"mol/charset/encoding":{"mol/charset/decode":-1}},"deps_out":{"mol/vary":{"mol":-999,"mol/fail":-3,"mol/hash/numbers":-6,"mol/bigint/encode":-6,"mol/hash/string":-6,"mol/charset/encode":-6,"mol/charset/decode":-4},"mol":{"":-999},"mol/fail":{"mol":-999},"mol/hash/numbers":{"mol/hash":-999},"mol/hash":{"mol":-999},"mol/bigint/encode":{"mol/bigint":-999},"mol/bigint":{"mol":-999},"mol/hash/string":{"mol/hash":-999,"mol/hash/numbers":-2},"mol/charset/encode":{"mol/charset":-999},"mol/charset":{"mol":-999},"mol/charset/decode":{"mol/charset":-999,"mol/charset/encoding":-1},"mol/charset/encoding":{"mol/charset":-999}},"sloc":{"ts":
|
|
1
|
+
{"files":["mam.ts","LICENSE","README.md","mam.jam.js","tsfmt.json","package.json","tsconfig.json","lang.lang.tree","meta.lang.tree","sandbox.config.json","mol/CNAME","mol/LICENSE","mol/readme.md","mol/mol.meta.tree","mol/CONTRIBUTING.md","mol/CODE_OF_CONDUCT.md","mol/fail/fail.ts","mol/hash/numbers/number.ts","mol/bigint/encode/encode.ts","mol/hash/string/string.ts","mol/charset/encode/encode.ts","mol/charset/encoding/encoding.ts","mol/charset/decode/decode.ts","mol/vary/vary.ts","mol/vary/readme.md"],"mods":{},"deps_in":{"mol":{"mol/vary":-999,"mol/fail":-999,"mol/hash":-999,"mol/bigint":-999,"mol/charset":-999},"":{"mol":-999},"mol/fail":{"mol/vary":-3},"mol/hash/numbers":{"mol/vary":-6,"mol/hash/string":-2},"mol/hash":{"mol/hash/numbers":-999,"mol/hash/string":-999},"mol/bigint/encode":{"mol/vary":-6},"mol/bigint":{"mol/bigint/encode":-999},"mol/hash/string":{"mol/vary":-6},"mol/charset/encode":{"mol/vary":-6},"mol/charset":{"mol/charset/encode":-999,"mol/charset/decode":-999,"mol/charset/encoding":-999},"mol/charset/decode":{"mol/vary":-4},"mol/charset/encoding":{"mol/charset/decode":-1}},"deps_out":{"mol/vary":{"mol":-999,"mol/fail":-3,"mol/hash/numbers":-6,"mol/bigint/encode":-6,"mol/hash/string":-6,"mol/charset/encode":-6,"mol/charset/decode":-4},"mol":{"":-999},"mol/fail":{"mol":-999},"mol/hash/numbers":{"mol/hash":-999},"mol/hash":{"mol":-999},"mol/bigint/encode":{"mol/bigint":-999},"mol/bigint":{"mol":-999},"mol/hash/string":{"mol/hash":-999,"mol/hash/numbers":-2},"mol/charset/encode":{"mol/charset":-999},"mol/charset":{"mol":-999},"mol/charset/decode":{"mol/charset":-999,"mol/charset/encoding":-1},"mol/charset/encoding":{"mol/charset":-999}},"sloc":{"ts":684,"LICENSE":113,"md":504,"js":9,"json":82,"tree":41,"CNAME":1},"deps":{"mol/vary":{"..":-999,"/mol/vary/tip":-1,"/mol/vary/len":-1,"/mol/vary/spec":-1,"/mol/vary/tip/spec":-2,"/mol/fail":-3,"/mol/vary":-1,"/mol/hash/numbers":-6,"/mol/bigint/encode":-6,"/mol/vary/tip/sint":-5,"/mol/hash/string":-6,"/mol/vary/tip/text":-6,"/mol/vary/spec/none":-6,"/mol/vary/tip/blob":-6,"/mol/vary/tip/list":-6,"/mol/charset/encode/size":-6,"/mol/vary/spec/both":-6,"/mol/vary/spec/true":-6,"/mol/vary/spec/fake":-6,"/mol/charset/encode/to":-6,"/mol/vary/spec/fp32":-5,"/mol/vary/spec/fp64":-5,"/mol/charset/decode":-4,"/mol/vary/tip/uint":-5,"/mol/vary/type":-1},"mol":{"..":-999},"":{},"mol/fail":{"..":-999,"/mol/fail":-1},"mol/hash/numbers":{"..":-999,"/mol/hash/numbers":-1},"mol/hash":{"..":-999},"mol/bigint/encode":{"..":-999,"/mol/bigint/encode":-1},"mol/bigint":{"..":-999},"mol/hash/string":{"..":-999,"/mol/hash/string":-1,"/mol/hash/numbers":-2},"mol/charset/encode":{"..":-999,"/mol/charset/encode":-1,"/mol/charset/encode/to":-1,"/mol/charset/encode/size":-1},"mol/charset":{"..":-999},"mol/charset/decode":{"..":-999,"/mol/charset/encoding":-1,"/mol/charset/decode":-1},"mol/charset/encoding":{"..":-999,"/mol/charset/encoding":-1}}}
|
package/node.js
CHANGED
|
@@ -84,7 +84,10 @@ var $;
|
|
|
84
84
|
var $;
|
|
85
85
|
(function ($) {
|
|
86
86
|
function $mol_hash_string(str, seed = 0) {
|
|
87
|
-
|
|
87
|
+
let nums = new Array(str.length);
|
|
88
|
+
for (let i = 0; i < str.length; ++i)
|
|
89
|
+
nums[i] = str.charCodeAt(i);
|
|
90
|
+
return $mol_hash_numbers(nums);
|
|
88
91
|
}
|
|
89
92
|
$.$mol_hash_string = $mol_hash_string;
|
|
90
93
|
})($ || ($ = {}));
|
|
@@ -225,6 +228,14 @@ var $;
|
|
|
225
228
|
}
|
|
226
229
|
}
|
|
227
230
|
class $mol_vary extends DataView {
|
|
231
|
+
static buffer = new Uint8Array(4096);
|
|
232
|
+
static buffer_view = new this(this.buffer.buffer);
|
|
233
|
+
static allocate(size) {
|
|
234
|
+
if (this.buffer.byteLength > size)
|
|
235
|
+
return;
|
|
236
|
+
this.buffer = new Uint8Array(Math.ceil(size / 4096) * 4096);
|
|
237
|
+
this.buffer_view = new this(this.buffer.buffer);
|
|
238
|
+
}
|
|
228
239
|
static pack(data) {
|
|
229
240
|
const leaned = new WeakMap();
|
|
230
241
|
const lean = (val) => {
|
|
@@ -266,7 +277,7 @@ var $;
|
|
|
266
277
|
res = $mol_hash_numbers(val.map(hash), $mol_vary_tip.list);
|
|
267
278
|
else {
|
|
268
279
|
const [keys, vals] = lean(val);
|
|
269
|
-
res = $mol_hash_numbers(
|
|
280
|
+
res = $mol_hash_numbers(vals.map(hash), hash(keys));
|
|
270
281
|
}
|
|
271
282
|
hashes.set(val, res);
|
|
272
283
|
return res;
|
|
@@ -354,8 +365,9 @@ var $;
|
|
|
354
365
|
$mol_fail(new Error(`Unsupported type`));
|
|
355
366
|
};
|
|
356
367
|
calc(data);
|
|
357
|
-
|
|
358
|
-
const
|
|
368
|
+
this.allocate(size);
|
|
369
|
+
const buf = this.buffer;
|
|
370
|
+
const pack = this.buffer_view;
|
|
359
371
|
const embedded = new Set();
|
|
360
372
|
let pos = 0;
|
|
361
373
|
const dump = (val) => {
|
|
@@ -477,7 +489,7 @@ var $;
|
|
|
477
489
|
$mol_fail(new Error(`Unsupported type`));
|
|
478
490
|
};
|
|
479
491
|
dump(data);
|
|
480
|
-
return buf;
|
|
492
|
+
return buf.slice(0, size);
|
|
481
493
|
}
|
|
482
494
|
static take(buf) {
|
|
483
495
|
const pack = new $mol_vary(buf.buffer, buf.byteOffset, buf.byteLength);
|
|
@@ -746,7 +758,7 @@ var $;
|
|
|
746
758
|
}
|
|
747
759
|
static leanes = new Map();
|
|
748
760
|
static riches = new Map();
|
|
749
|
-
static
|
|
761
|
+
static type(rich, lean) {
|
|
750
762
|
const obj = rich();
|
|
751
763
|
const proto = Reflect.getPrototypeOf(obj);
|
|
752
764
|
const [keys, vals] = lean(obj);
|
|
@@ -756,11 +768,11 @@ var $;
|
|
|
756
768
|
}
|
|
757
769
|
}
|
|
758
770
|
$.$mol_vary = $mol_vary;
|
|
759
|
-
$mol_vary.
|
|
771
|
+
$mol_vary.type((keys = [], vals = []) => new Map(keys.map((k, i) => [k, vals[i]])), obj => [
|
|
760
772
|
['keys', 'vals'],
|
|
761
773
|
[[...obj.keys()], [...obj.values()]],
|
|
762
774
|
]);
|
|
763
|
-
$mol_vary.
|
|
775
|
+
$mol_vary.type((vals = []) => new Set(vals), obj => [
|
|
764
776
|
['vals'],
|
|
765
777
|
[[...obj.values()]],
|
|
766
778
|
]);
|
package/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["-","../../../mam.ts","../../../mol/fail/fail.ts","../../../mol/hash/numbers/number.ts","../../../mol/bigint/encode/encode.ts","../../../mol/hash/string/string.ts","../../../mol/charset/encode/encode.ts","../../../mol/charset/decode/decode.ts","../../../mol/vary/vary.ts"],"names":[],"mappings":"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","sourcesContent":[null,"Error.stackTraceLimit = 50;\n\ndeclare let _$_: { new(): {} } & typeof globalThis\ndeclare class $ extends _$_ {}\n\nnamespace $ {\n\texport type $ = typeof $$\n\texport declare class $$ extends $ {\n\t\tstatic $: $\n\t}\n\tnamespace $$ {\n\t\texport type $$ = $\n\t}\n}\n\nmodule.exports = $\n","namespace $ {\n\n\texport function $mol_fail( error : any ) : never {\n\t\tthrow error\n\t}\n\n}\n","namespace $ {\n\n\t/**\n\t * 48-bit streamable array hash function\n\t * Based on cyrb53: https://stackoverflow.com/a/52171480\n\t */\n\texport function $mol_hash_numbers( buff: ArrayLike< number >, seed = 0 ) {\n\t\t\n\t\tlet h1 = 0xdeadbeef ^ seed\n\t\tlet h2 = 0x41c6ce57 ^ seed\n\t\t\n\t\tfor( let i = 0; i < buff.length; ++i ) {\n\t\t\tconst item = buff[i]\n\t\t\th1 = Math.imul( h1 ^ item, 2654435761 )\n\t\t\th2 = Math.imul( h2 ^ item, 1597334677 )\n\t\t}\n\t\t\n\t\th1 = Math.imul( h1 ^ ( h1 >>> 16 ), 2246822507 ) ^ Math.imul( h2 ^ ( h2 >>> 13 ), 3266489909 )\n\t\th2 = Math.imul( h2 ^ ( h2 >>> 16 ), 2246822507 ) ^ Math.imul( h1 ^ ( h1 >>> 13 ), 3266489909 )\n\t\t\n\t\treturn 4294967296 * ( ( ( 1 << 16 ) - 1 ) & h2 ) + ( h1 >>> 0 )\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_bigint_encode( num: bigint ) {\n\n\t\tconst minus = num < 0n ? 255 : 0;\n\t\tnum = minus ? -num - 1n : num\n\t\t\n\t\tconst bytes = [] as number[]\n\t\tdo {\n\t\t\t\n\t\t\tlet byte = minus ^ Number( num % 256n )\n\t\t\tbytes.push( byte )\n\t\t\t\n\t\t\tif( num >>= 8n ) continue\n\t\t\t\n\t\t\tif(( minus & 128 )!==( byte & 128 ))\n\t\t\t\tbytes.push( minus )\n\t\t\t\n\t\t\tbreak\n\t\t\t\n\t\t} while( num )\n\t\n\t\treturn new Uint8Array(bytes);\n\t}\n\t\n}\n","namespace $ {\n\n\t/**\n\t * 48-bit streamable string hash function\n\t * Based on cyrb53: https://stackoverflow.com/a/52171480\n\t */\n\texport function $mol_hash_string( str: string, seed = 0 ) {\n\t\treturn $mol_hash_numbers( [ ... str ].map( ch => ch.codePointAt(0)! ) )\n\t}\n\n}\n","namespace $ {\n\n\tlet buf = new Uint8Array( 2**12 ) // 4KB Mem Page\n\t\n\texport function $mol_charset_encode( str: string ) {\n\t\tconst capacity = str.length * 3\n\t\tif( buf.byteLength < capacity ) buf = new Uint8Array( capacity )\n\t\treturn buf.slice( 0, $mol_charset_encode_to( str, buf ) )\n\t}\n\n\texport function $mol_charset_encode_to( str: string, buf: Uint8Array< ArrayBuffer >, from = 0 ) {\n\n\t\tlet pos = from\n\n\t\tfor( let i = 0; i < str.length; i++ ) {\n\t\t\t\n\t\t\tlet code = str.charCodeAt( i )\n\t\t\t\n\t\t\tif( code < 0x80 ) { // ASCII - 1 octet\n\t\t\t\t\n\t\t\t\tbuf[ pos ++ ] = code\n\t\t\t\t\n\t\t\t} else if( code < 0x800 ) { // 2 octet\n\t\t\t\t\n\t\t\t\tbuf[ pos ++ ] = 0xc0 | ( code >> 6 )\n\t\t\t\tbuf[ pos ++ ] = 0x80 | ( code & 0x3f )\n\t\t\t\t\n\t\t\t} else if( code < 0xd800 || code >= 0xe000 ) { // 3 octet\n\t\t\t\t\n\t\t\t\tbuf[ pos ++ ] = 0xe0 | ( code >> 12 )\n\t\t\t\tbuf[ pos ++ ] = 0x80 | ( ( code >> 6 ) & 0x3f )\n\t\t\t\tbuf[ pos ++ ] = 0x80 | ( code & 0x3f )\n\t\t\t\t\n\t\t\t} else { // surrogate pair\n\t\t\t\t\n\t\t\t\tconst point = ( ( code - 0xd800 ) << 10 ) + str.charCodeAt( ++ i ) + 0x2400\n\t\t\t\t\n\t\t\t\tbuf[ pos ++ ] = 0xf0 | ( point >> 18 )\n\t\t\t\tbuf[ pos ++ ] = 0x80 | ( ( point >> 12 ) & 0x3f )\n\t\t\t\tbuf[ pos ++ ] = 0x80 | ( ( point >> 6 ) & 0x3f )\n\t\t\t\tbuf[ pos ++ ] = 0x80 | ( point & 0x3f )\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\treturn pos - from\n\t}\n\n\texport function $mol_charset_encode_size( str: string ) {\n\n\t\tlet size = 0\n\n\t\tfor( let i = 0; i < str.length; i++ ) {\n\t\t\t\n\t\t\tlet code = str.charCodeAt( i )\n\t\t\t\n\t\t\tif( code < 0x80 ) size += 1\n\t\t\telse if( code < 0x800 ) size += 2\n\t\t\telse if( code < 0xd800 || code >= 0xe000 ) size += 3\n\t\t\telse size += 4\n\t\t\t\n\t\t}\n\n\t\treturn size\n\t}\n\n}\n","namespace $ {\n\n\tconst decoders = {} as { [ key in $mol_charset_encoding ]?: TextDecoder }\n\n\texport function $mol_charset_decode(\n\t\tbuffer: AllowSharedBufferSource,\n\t\tencoding: $mol_charset_encoding = 'utf8',\n\t) {\n\t\t\n\t\tlet decoder = decoders[ encoding ]\n\t\tif( !decoder ) decoder = decoders[ encoding ] = new TextDecoder( encoding )\n\t\t\n\t\treturn decoder.decode( buffer )\n\t}\n\n}\n","namespace $ {\n\t\n\texport enum $mol_vary_tip {\n\t\tuint = 0b000 << 5,\n\t\tlink = 0b001 << 5,\n\t\tspec = 0b010 << 5,\n\t\tlist = 0b011 << 5,\n\t\ttext = 0b100 << 5,\n\t\tblob = 0b101 << 5,\n\t\ttupl = 0b110 << 5,\n\t\tsint = 0b111 << 5,\n\t}\n\t\n\texport const $mol_vary_len = {\n\t\t1: 28,\n\t\t2: 29,\n\t\t4: 30,\n\t\t8: 31,\n\t} as const\n\t\n\texport enum $mol_vary_spec {\n\t\tnone = 'N'.charCodeAt(0),\n\t\ttrue = 'T'.charCodeAt(0),\n\t\tfake = 'F'.charCodeAt(0),\n\t\tboth = 'B'.charCodeAt(0),\n\t\tfp16 = $mol_vary_tip.spec | 29,\n\t\tfp32 = $mol_vary_tip.spec | 30,\n\t\tfp64 = $mol_vary_tip.spec | 31,\n\t}\n\t\n\tfunction num_len( num: number | bigint ) {\n\t\t\n\t\tif( typeof num === 'number' && !Number.isInteger( num ) ) return 8\n\t\t\n\t\tif( num < 0 ) {\n\t\t\t\n\t\t\tif( num >= -28 ) return 0\n\t\t\tif( num >= -(2**7) ) return 1\n\t\t\tif( num >= -(2**15) ) return 2\n\t\t\tif( num >= -(2**31) ) return 4\n\t\t\tif( num >= -(2n**63n) ) return 8\n\t\t\t\n\t\t\t$mol_fail( new Error( `Too low numb ${ num }` ) )\n\t\t\t\n\t\t} else {\n\t\t\t\n\t\t\tif( num < 28 ) return 0\n\t\t\tif( num < 2**8 ) return 1\n\t\t\tif( num < 2**16 ) return 2\n\t\t\tif( num < 2**32 ) return 4\n\t\t\tif( num < 2n**64n ) return 8\n\t\t\t\n\t\t\t$mol_fail( new Error( `Too high numb ${ num }` ) )\n\t\t\t\n\t\t}\n\t\t\n\t}\n\t\n\t/** VaryPack - simple fast compact data binarization format. */\n\texport class $mol_vary extends DataView< ArrayBuffer > {\n\t\t\n\t\t/** Packs any data to Uint8Array with deduplication. */\n\t\tstatic pack( data: unknown ) {\n\t\t\t\n\t\t\tconst leaned = new WeakMap< object, readonly[ keys: readonly any[], vals: readonly any[] ] >()\n\t\t\tconst lean = ( val: object ): readonly[ keys: readonly any[], vals: readonly any[] ] => {\n\t\t\t\t\n\t\t\t\tlet tupl = leaned.get( val )\n\t\t\t\tif( tupl ) return tupl\n\t\t\t\t\n\t\t\t\tleaned.set( val, tupl = this.lean( val ) )\n\t\t\t\treturn tupl\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tconst hashes = new Map< unknown, number >()\n\t\t\t/** Recursive hash for deduplication */\n\t\t\tconst hash = ( val: unknown ): number => {\n\t\t\t\t\n\t\t\t\tswitch( typeof val ) {\n\t\t\t\t\t\n\t\t\t\t\tcase 'undefined':\n\t\t\t\t\t\treturn 0\n\t\t\t\t\t\n\t\t\t\t\tcase 'number':\n\t\t\t\t\tcase 'boolean':\n\t\t\t\t\t\treturn Number( val )\n\t\t\t\t\t\n\t\t\t\t\tcase 'number':\n\t\t\t\t\t\treturn val\n\t\t\t\t\t\n\t\t\t\t\tcase 'bigint':\n\t\t\t\t\t\treturn $mol_hash_numbers( $mol_bigint_encode( val ), $mol_vary_tip.sint )\n\t\t\t\t\t\n\t\t\t\t\tcase 'string': {\n\t\t\t\t\t\tlet res = hashes.get( val )\n\t\t\t\t\t\tif( res != null ) return res\n\t\t\t\t\t\tres = $mol_hash_string( val, $mol_vary_tip.text )\n\t\t\t\t\t\thashes.set( val, res )\n\t\t\t\t\t\treturn res\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcase 'object': {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( !val ) return $mol_vary_spec.none\n\t\t\t\t\t\n\t\t\t\t\t\tlet res = hashes.get( val )\n\t\t\t\t\t\tif( res != null ) return res\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( ArrayBuffer.isView( val ) ) res = $mol_hash_numbers( new Uint8Array( val.buffer, val.byteOffset, val.byteLength ), $mol_vary_tip.blob )\n\t\t\t\t\t\telse if( Array.isArray( val ) ) res = $mol_hash_numbers( val.map( hash ), $mol_vary_tip.list )\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tconst [ keys, vals ] = lean( val )\n\t\t\t\t\t\t\tres = $mol_hash_numbers( [ hash( keys ), ... vals.map( hash ) ], $mol_vary_tip.tupl )\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\thashes.set( val, res )\n\t\t\t\t\t\treturn res\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t$mol_fail( new Error( `Unsupported type` ) )\n\t\t\t}\n\t\t\t\n\t\t\tlet size = 0\n\t\t\tconst offsets = new Map< number /*hash*/, number >()\n\t\t\tconst sizes = new Map< string, number >()\n\t\t\tconst stream = [] as unknown[]\n\t\t\t\n\t\t\t/** Reserve size for embedding first entry or link to existen one.*/\n\t\t\tconst dedup = ( val: unknown, len: number )=> {\n\t\t\t\t\n\t\t\t\tconst key = hash( val )\n\t\t\t\tlet offset = offsets.get( key )\n\t\t\t\t\n\t\t\t\tif( offset === undefined ) { // embed first\n\t\t\t\t\t\n\t\t\t\t\toffsets.set( key, offset = stream.length )\n\t\t\t\t\tstream.push( val )\n\t\t\t\t\tsize += len\n\t\t\t\t\t\n\t\t\t\t\treturn true\n\t\t\t\t\t\n\t\t\t\t} else { // link to exists\n\t\t\t\t\t\n\t\t\t\t\tsize += 1 + num_len( offset )\n\t\t\t\t\treturn false\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t/** Recursive calculates required buffer size. */\n\t\t\tconst calc = ( val: unknown )=> {\n\t\t\t\t\n\t\t\t\tif( val == null ) {\n\t\t\t\t\tsize += 1\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tswitch( typeof val ) {\n\t\t\t\t\t\n\t\t\t\t\tcase 'boolean':\n\t\t\t\t\t\tsize += 1\n\t\t\t\t\t\treturn true\n\t\t\t\t\t\n\t\t\t\t\tcase 'number':\n\t\t\t\t\tcase 'bigint':\n\t\t\t\t\t\tsize += 1 + num_len( val )\n\t\t\t\t\t\treturn true\n\t\t\t\t\t\n\t\t\t\t\tcase 'string': {\n\t\t\t\t\t\t\n\t\t\t\t\t\tlet len = sizes.get( val )\n\t\t\t\t\t\tif( len == null ) sizes.set( val, len = $mol_charset_encode_size( val ) )\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( !len ) { // always embed redundant\n\t\t\t\t\t\t\tsize += 1\n\t\t\t\t\t\t\treturn true\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn dedup( val, 1 + num_len( len ) + len )\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcase 'object': {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( ArrayBuffer.isView( val ) ) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif( !val.byteLength ) { // always embed redundant\n\t\t\t\t\t\t\t\tsize += 2\n\t\t\t\t\t\t\t\treturn true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn dedup( val, 2 + num_len( val.byteLength ) + val.byteLength )\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( Array.isArray( val ) ) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif( !val.length ) { // always embed redundant\n\t\t\t\t\t\t\t\tsize += 1\n\t\t\t\t\t\t\t\treturn true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tconst key = hash( val )\n\t\t\t\t\t\t\tlet offset = offsets.get( key )\n\t\t\t\t\t\t\tif( offset === undefined ) {\n\t\t\t\t\t\t\t\tfor( const item of val ) calc( item )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn dedup( val, 1 + num_len( val.length ) )\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst [ keys, vals ] = lean( val )\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( !vals.length ) { // always embed redundant\n\t\t\t\t\t\t\tsize += 2\n\t\t\t\t\t\t\treturn true\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tconst key = hash( val )\n\t\t\t\t\t\tlet offset = offsets.get( key )\n\t\t\t\t\t\tif( offset === undefined ) {\n\t\t\t\t\t\t\tcalc( keys )\n\t\t\t\t\t\t\tfor( const item of vals ) calc( item )\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\treturn dedup( val, 1 + num_len( vals.length ) )\n\t\t\t\t\t\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_fail( new Error( `Unsupported type` ) )\n\t\t\t}\n\t\t\t\n\t\t\tcalc( data )\n\t\t\t\n\t\t\tconst buf = new Uint8Array( size )\n\t\t\tconst pack = new this( buf.buffer )\n\t\t\tconst embedded = new Set< number >()\n\t\t\t\n\t\t\tlet pos = 0\n\t\t\t/** Recursive fills buffer with data. */\n\t\t\tconst dump = ( val: unknown )=> {\n\t\t\t\t\n\t\t\t\tif( pos >= size ) $mol_fail( new Error( 'Wrong buffer length', { cause: buf } ) )\n\t\t\t\t\n\t\t\t\tswitch( typeof val ) {\n\t\t\t\t\t\n\t\t\t\t\tcase 'undefined': {\n\t\t\t\t\t\tpack.tlen( pos, 'spec', $mol_vary_spec.both )\n\t\t\t\t\t\tpos += 1\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcase 'boolean': {\n\t\t\t\t\t\t\n\t\t\t\t\t\tpack.tlen( pos, 'spec', val ? $mol_vary_spec.true : $mol_vary_spec.fake )\n\t\t\t\t\t\tpos += 1\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcase 'number': {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( !Number.isInteger( val ) ) {\n\t\t\t\t\t\t\tpos += pack.tfp( pos, 'spec', val )\n\t\t\t\t\t\t} else if( val < 0 ) {\n\t\t\t\t\t\t\tpos += pack.tint( pos, 'sint', val )\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpos += pack.tnat( pos, 'uint', val )\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\tcase 'bigint': {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( val < 0 ) {\n\t\t\t\t\t\t\tpos += pack.tint( pos, 'sint', val )\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpos += pack.tnat( pos, 'uint', val )\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcase 'string': {\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst key = hash( val )\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( embedded.has( key ) ) {\n\t\t\t\t\t\t\tpos += pack.tnat( pos, 'link', offsets.get( key )! )\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tpos += pack.tnat( pos, 'text', sizes.get( val )! )\n\t\t\t\t\t\tpos += $mol_charset_encode_to( val, buf, pos )\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( val.length ) embedded.add( key )\n\t\t\t\t\t\treturn\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcase 'object': {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( !val ) {\n\t\t\t\t\t\t\tpack.tlen( pos, 'spec', $mol_vary_spec.none )\n\t\t\t\t\t\t\tpos += 1\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\tif( ArrayBuffer.isView( val ) ) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tconst key = hash( val )\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif( embedded.has( key ) ) {\n\t\t\t\t\t\t\t\tpos += pack.tnat( pos, 'link', offsets.get( key )! )\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tpos += pack.tnat( pos, 'blob', val.byteLength )\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif( val instanceof Uint8Array ) pos += pack.tlen( pos, 'uint', $mol_vary_len[1] )\n\t\t\t\t\t\t\telse if( val instanceof Uint16Array ) pos += pack.tlen( pos, 'uint', $mol_vary_len[2] )\n\t\t\t\t\t\t\telse if( val instanceof Uint32Array ) pos += pack.tlen( pos, 'uint', $mol_vary_len[4] )\n\t\t\t\t\t\t\telse if( val instanceof BigUint64Array ) pos += pack.tlen( pos, 'uint', $mol_vary_len[8] )\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\telse if( val instanceof Int8Array ) pos += pack.tlen( pos, 'sint', ~$mol_vary_len[1] )\n\t\t\t\t\t\t\telse if( val instanceof Int16Array ) pos += pack.tlen( pos, 'sint', ~$mol_vary_len[2] )\n\t\t\t\t\t\t\telse if( val instanceof Int32Array ) pos += pack.tlen( pos, 'sint', ~$mol_vary_len[4] )\n\t\t\t\t\t\t\telse if( val instanceof BigInt64Array ) pos += pack.tlen( pos, 'sint', ~$mol_vary_len[8] )\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// else if( val instanceof Float16Array ) pos += pack.tlen( pos, 'spec', $mol_vary_spec.fp16 )\n\t\t\t\t\t\t\telse if( val instanceof Float32Array ) pos += pack.tlen( pos, 'spec', $mol_vary_spec.fp32 )\n\t\t\t\t\t\t\telse if( val instanceof Float64Array ) pos += pack.tlen( pos, 'spec', $mol_vary_spec.fp64 )\n\t\t\t\t\t\t\n\t\t\t\t\t\t\telse $mol_fail( new Error( `Unsupported type` ) )\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tbuf.set( new Uint8Array( val.buffer, val.byteOffset, val.byteLength ), pos )\n\t\t\t\t\t\t\tpos += val.byteLength\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif( val.byteLength ) embedded.add( key )\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( Array.isArray( val ) ) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tconst key = hash( val )\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif( embedded.has( key ) ) {\n\t\t\t\t\t\t\t\tpos += pack.tnat( pos, 'link', offsets.get( key )! )\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tpos += pack.tnat( pos, 'list', val.length )\n\t\t\t\t\t\t\tfor( const item of val ) dump( item )\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tif( val.length ) embedded.add( key )\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst key = hash( val )\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( embedded.has( key ) ) {\n\t\t\t\t\t\t\tpos += pack.tnat( pos, 'link', offsets.get( key )! )\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst [ keys, vals ] = lean( val )\n\t\t\t\t\t\n\t\t\t\t\t\tpos += pack.tnat( pos, 'tupl', vals.length )\n\t\t\t\t\t\tdump( keys )\n\t\t\t\t\t\tfor( const item of vals ) dump( item )\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tif( vals.length ) embedded.add( key )\n\t\t\t\t\t\treturn\n\t\t\t\t\t\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_fail( new Error( `Unsupported type` ) )\n\t\t\t}\n\t\t\t\n\t\t\tdump( data )\n\t\t\t\n\t\t\treturn buf\n\t\t\t\n\t\t}\n\t\t\n\t\t/** Parses buffer to rich runtime structures. */\n\t\tstatic take( buf: Uint8Array< ArrayBuffer > ): unknown {\n\t\t\t\n\t\t\tconst pack = new $mol_vary( buf.buffer, buf.byteOffset, buf.byteLength )\n\t\t\tconst stream = [] as unknown[]\n\t\t\tlet pos = 0;\n\t\t\t\n\t\t\tconst read_unum = ()=> {\n\t\t\t\tconst num = pack.unum( pos )\n\t\t\t\tpos += 1 + pack.ulen( pos )\n\t\t\t\treturn num\n\t\t\t}\n\t\t\t\n\t\t\tconst read_snum = ()=> {\n\t\t\t\tconst num = pack.snum( pos )\n\t\t\t\tpos += 1 + pack.slen( pos )\n\t\t\t\treturn num\n\t\t\t}\n\t\t\t\n\t\t\tconst read_text = ()=> {\n\t\t\t\tconst len = read_unum() as number\n\t\t\t\tconst bin = new Uint8Array( buf.buffer, pack.byteOffset + pos, len )\n\t\t\t\tpos += len\n\t\t\t\tconst text = $mol_charset_decode( bin )\n\t\t\t\tif( text.length ) stream.push( text )\n\t\t\t\treturn text\n\t\t\t}\n\t\t\t\n\t\t\tconst read_buffer = ( len: number, TypedArray: new( buf: ArrayBuffer )=> ArrayBufferView< ArrayBuffer > )=> {\n\t\t\t\tconst bin = new TypedArray( buf.slice( pos, pos + len ).buffer )\n\t\t\t\tpos += len\n\t\t\t\tif( len ) stream.push( bin )\n\t\t\t\treturn bin\n\t\t\t}\n\t\t\t\n\t\t\tconst read_blob = ()=> {\n\t\t\t\t\n\t\t\t\tconst len = read_unum() as number\n\t\t\t\tconst kind = pack.getUint8( pos ++ )\n\t\t\t\t\n\t\t\t\tswitch( kind ) {\n\t\t\t\t\t\n\t\t\t\t\tcase $mol_vary_tip.uint | $mol_vary_len[1]: return read_buffer( len, Uint8Array )\n\t\t\t\t\tcase $mol_vary_tip.uint | $mol_vary_len[2]: return read_buffer( len, Uint16Array )\n\t\t\t\t\tcase $mol_vary_tip.uint | $mol_vary_len[4]: return read_buffer( len, Uint32Array )\n\t\t\t\t\tcase $mol_vary_tip.uint | $mol_vary_len[8]: return read_buffer( len, BigUint64Array )\n\t\t\t\t\t\n\t\t\t\t\tcase $mol_vary_tip.sint | ~$mol_vary_len[1] + 256: return read_buffer( len, Int8Array )\n\t\t\t\t\tcase $mol_vary_tip.sint | ~$mol_vary_len[2] + 256: return read_buffer( len, Int16Array )\n\t\t\t\t\tcase $mol_vary_tip.sint | ~$mol_vary_len[4] + 256: return read_buffer( len, Int32Array )\n\t\t\t\t\tcase $mol_vary_tip.sint | ~$mol_vary_len[8] + 256: return read_buffer( len, BigInt64Array )\n\t\t\t\t\t\n\t\t\t\t\t// case $mol_vary_tip.spec | $mol_vary_spec.fp16: return read_buffer( len, Float16Array )\n\t\t\t\t\tcase $mol_vary_tip.spec | $mol_vary_spec.fp32: return read_buffer( len, Float32Array )\n\t\t\t\t\tcase $mol_vary_tip.spec | $mol_vary_spec.fp64: return read_buffer( len, Float64Array )\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t$mol_fail( new Error( 'Unsupported blob kind', { cause: { kind } } ) )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tconst read_list = ()=> {\n\t\t\t\tconst len = read_unum() as number\n\t\t\t\tconst list = [] as any[]\n\t\t\t\tfor( let i = 0; i < len; ++i ) list.push( read_vary() )\n\t\t\t\tif( len ) stream.push( list )\n\t\t\t\treturn list\n\t\t\t}\n\t\t\t\n\t\t\tconst read_link = ()=> {\n\t\t\t\tconst index = read_unum() as number\n\t\t\t\tif( index >= stream.length ) $mol_fail( new Error( 'Too large index', { cause: { index, exists: stream.length } } ) )\n\t\t\t\treturn stream[ index ]\n\t\t\t}\n\t\t\t\n\t\t\tconst read_tupl = ()=> {\n\t\t\t\t\n\t\t\t\tconst len = read_unum() as number\n\t\t\t\t\n\t\t\t\tconst keys = pack.tip( pos ) === 'link' ? read_link() : read_list()\n\t\t\t\tif( !Array.isArray( keys ) ) $mol_fail( new Error( 'Wrong tupl shape type', { cause: { type: typeof keys } } ) )\n\t\t\t\t\n\t\t\t\tconst vals = Array.from( { length: len }, ()=> read_vary() )\n\t\t\t\t\n\t\t\t\tconst obj = this.rich( keys, vals )\n\t\t\t\tif( vals.length ) stream.push( obj )\n\t\t\t\t\n\t\t\t\treturn obj\n\t\t\t}\n\t\t\t\n\t\t\tconst read_spec = ()=> {\n\t\t\t\t\n\t\t\t\tconst kind = pack.getUint8( pos )\n\t\t\t\tconst spec = $mol_vary_spec[ kind ] as keyof typeof $mol_vary_spec \n\t\t\t\t\n\t\t\t\tswitch( spec ) {\n\t\t\t\t\t\n\t\t\t\t\tcase 'none':\n\t\t\t\t\t\t++ pos\n\t\t\t\t\t\treturn null\n\t\t\t\t\t\n\t\t\t\t\tcase 'fake':\n\t\t\t\t\t\t++ pos\n\t\t\t\t\t\treturn false\n\t\t\t\t\t\n\t\t\t\t\tcase 'true':\n\t\t\t\t\t\t++ pos\n\t\t\t\t\t\treturn true\n\t\t\t\t\t\n\t\t\t\t\tcase 'both':\n\t\t\t\t\t\t++ pos\n\t\t\t\t\t\treturn undefined\n\t\t\t\t\t\n\t\t\t\t\tcase 'fp16': {\n\t\t\t\t\t\tconst val = pack.getFloat16( pos + 1, true )\n\t\t\t\t\t\tpos += 3\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\tcase 'fp32': {\n\t\t\t\t\t\tconst val = pack.getFloat32( pos + 1, true )\n\t\t\t\t\t\tpos += 5\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\tcase 'fp64': {\n\t\t\t\t\t\tconst val = pack.getFloat64( pos + 1, true )\n\t\t\t\t\t\tpos += 9\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\tdefault:\n\t\t\t\t\t\t$mol_fail( new Error( 'Unsupported spec', { cause: { kind } } ) )\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tconst read_vary = ()=> {\n\t\t\t\t\n\t\t\t\tconst tip = pack.tip( pos )\n\t\t\t\t\n\t\t\t\tswitch( tip ) {\n\t\t\t\t\t\n\t\t\t\t\tcase 'uint': return read_unum()\n\t\t\t\t\tcase 'sint': return read_snum()\n\t\t\t\t\tcase 'link': return read_link()\n\t\t\t\t\tcase 'text': return read_text()\n\t\t\t\t\tcase 'list': return read_list()\n\t\t\t\t\tcase 'blob': return read_blob()\n\t\t\t\t\tcase 'tupl': return read_tupl()\n\t\t\t\t\tcase 'spec': return read_spec()\n\t\t\t\t\t\n\t\t\t\t\tdefault: $mol_fail( new Error( 'Unsupported tip', { cause: { tip } } ) )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\treturn read_vary()\n\t\t}\n\t\t\n\t\ttlen( pos: number, tip: keyof typeof $mol_vary_tip, len: number ) {\n\t\t\tthis.setUint8( pos, $mol_vary_tip[ tip ] | len )\n\t\t\treturn 1\n\t\t}\n\t\t\n\t\ttnat( pos: number, tip: keyof typeof $mol_vary_tip, num: number | bigint ) {\n\t\t\t\n\t\t\tconst len = num_len( num )\n\t\t\tthis.tlen( pos, tip, len ? $mol_vary_len[ len ] : Number( num ) )\n\t\t\t\n\t\t\tswitch( len ) {\n\t\t\t\tcase 0: break\n\t\t\t\tcase 1: this.setUint8( pos + 1, Number( num ) ); break\n\t\t\t\tcase 2: this.setUint16( pos + 1, Number( num ), true ); break\n\t\t\t\tcase 4: this.setUint32( pos + 1, Number( num ), true ); break\n\t\t\t\tcase 8: this.setBigUint64( pos + 1, BigInt( num ), true ); break\n\t\t\t\tdefault: $mol_fail( new Error( 'Unsupported uint len', { cause: { len } } ) )\n\t\t\t}\n\n\t\t\treturn 1 + len\n\t\t}\n\t\t\n\t\ttint( pos: number, tip: keyof typeof $mol_vary_tip, num: number | bigint ) {\n\t\t\t\n\t\t\tconst len = num_len( num )\n\t\t\tthis.tlen( pos, tip, len ? - $mol_vary_len[ len ] -1 : Number( num ) )\n\t\t\t\n\t\t\tswitch( len ) {\n\t\t\t\tcase 0: break\n\t\t\t\tcase 1: this.setInt8( pos + 1, Number( num ) ); break\n\t\t\t\tcase 2: this.setInt16( pos + 1, Number( num ), true ); break\n\t\t\t\tcase 4: this.setInt32( pos + 1, Number( num ), true ); break\n\t\t\t\tcase 8: this.setBigInt64( pos + 1, BigInt( num ), true ); break\n\t\t\t\tdefault: $mol_fail( new Error( 'Unsupported sint len', { cause: { len } } ) )\n\t\t\t}\n\n\t\t\treturn 1 + len\n\t\t}\n\t\t\n\t\ttfp( pos: number, tip: keyof typeof $mol_vary_tip, num: number ) {\n\t\t\t\n\t\t\tconst len = num_len( num )\n\t\t\tthis.tlen( pos, tip, len ? $mol_vary_len[ len ] : Number( num ) )\n\t\t\t\n\t\t\tswitch( len ) {\n\t\t\t\tcase 2: this.setFloat16( pos + 1, num, true ); break\n\t\t\t\tcase 4: this.setFloat32( pos + 1, num, true ); break\n\t\t\t\tcase 8: this.setFloat64( pos + 1, num, true ); break\n\t\t\t\tdefault: $mol_fail( new Error( 'Unsupported fp len', { cause: { len } } ) )\n\t\t\t}\n\n\t\t\treturn 1 + len\n\t\t}\n\t\t\n\t\ttip( pos: number ) {\n\t\t\treturn $mol_vary_tip[ this.getUint8( pos ) & 0b111_00000 ] as keyof typeof $mol_vary_tip\n\t\t}\n\t\t\n\t\tulen( pos: number ) {\n\t\t\tconst num = this.getUint8( pos ) & 0b11111\n\t\t\tif( num < 28 ) return 0\n\t\t\tswitch( num ) {\n\t\t\t\tcase 28: return 1\n\t\t\t\tcase 29: return 2\n\t\t\t\tcase 30: return 4\n\t\t\t\tcase 31: return 8\n\t\t\t\tdefault: $mol_fail( new Error( 'Impossible!' ) )\n\t\t\t}\n\t\t}\n\t\t\n\t\tslen( pos: number ) {\n\t\t\tconst num = this.getInt8( pos )\n\t\t\tif( num > -29 ) return 0\n\t\t\tswitch( num ) {\n\t\t\t\tcase -29: return 1\n\t\t\t\tcase -30: return 2\n\t\t\t\tcase -31: return 4\n\t\t\t\tcase -32: return 8\n\t\t\t\tdefault: $mol_fail( new Error( 'Impossible!' ) )\n\t\t\t}\n\t\t}\n\t\t\n\t\tunum( pos: number ) {\n\t\t\tconst num = this.getUint8( pos ) & 0b11111\n\t\t\tif( num < 28 ) return num\n\t\t\tswitch( num ) {\n\t\t\t\tcase 28: return this.getUint8( pos + 1 )\n\t\t\t\tcase 29: return this.getUint16( pos + 1, true )\n\t\t\t\tcase 30: return this.getUint32( pos + 1, true )\n\t\t\t\tcase 31:\n\t\t\t\t\tconst val = this.getBigUint64( pos + 1, true )\n\t\t\t\t\tif( val > Number.MAX_SAFE_INTEGER ) return val\n\t\t\t\t\treturn Number( val )\n\t\t\t\tdefault: $mol_fail( new Error( 'Unsupported len', { cause: { num } } ) )\n\t\t\t}\n\t\t}\n\t\t\n\t\tsnum( pos: number ) {\n\t\t\tconst num = this.getInt8( pos )\n\t\t\tif( num > -29 ) return num\n\t\t\tswitch( num ) {\n\t\t\t\tcase -29: return this.getInt8( pos + 1 )\n\t\t\t\tcase -30: return this.getInt16( pos + 1, true )\n\t\t\t\tcase -31: return this.getInt32( pos + 1, true )\n\t\t\t\tcase -32:\n\t\t\t\t\tconst val = this.getBigInt64( pos + 1, true )\n\t\t\t\t\tif( val > Number.MAX_SAFE_INTEGER ) return val\n\t\t\t\t\tif( val < Number.MIN_SAFE_INTEGER ) return val\n\t\t\t\t\treturn Number( val )\n\t\t\t\tdefault: $mol_fail( new Error( 'Unsupported len', { cause: { num } } ) )\n\t\t\t}\n\t\t}\n\t\t\n\t\t/** Converts internal keys&vals to high level object. */\n\t\tstatic rich( keys: any[], vals: any[] ): object {\n\t\t\t\n\t\t\tconst shape = JSON.stringify([ keys, vals.map( v => typeof v ) ])\n\t\t\tconst rich = this.riches.get( shape )\n\t\t\tif( rich ) return rich( ... vals )\n\t\t\t\n\t\t\tconst pairs = keys.map( ( key, index ) => [ key, vals[ index ] ] )\n\t\t\tconst obj = Object.fromEntries( pairs )\n\t\t\t\n\t\t\treturn obj\n\t\t}\n\t\t \n\t\t/** Converts high level object to internal keys&vals representation. */\n\t\tstatic lean( val: object ): readonly[ keys: readonly any[], vals: readonly any[] ] {\n\t\t\t\n\t\t\tconst proto = Reflect.getPrototypeOf( val )!\n\t\t\tconst lean = this.leanes.get( proto )\n\t\t\tif( lean ) return lean( val )\n\t\t\t\n\t\t\treturn [ Object.keys( val ), Object.values( val ) ]\n\t\t}\n\t\t\n\t\tstatic leanes = new Map< object, ( val: any )=> readonly[ keys: readonly any[], vals: readonly any[] ] >()\n\t\tstatic riches = new Map< string/*shape*/, ( ... vals: readonly any[] )=> object >()\n\t\t\n\t\t/** Adds custom types support. */\n\t\tstatic register<\n\t\t\tconst Instance extends object,\n\t\t\tconst Keys extends readonly any[],\n\t\t\tconst Vals extends readonly any[],\n\t\t>(\n\t\t\trich: ( ( ... vals: Vals )=> Instance ) | ( ()=> Instance ),\n\t\t\tlean: ( obj: Instance )=> readonly[ Keys, Vals ],\n\t\t) {\n\t\t\t\n\t\t\tconst obj = rich()\n\t\t\tconst proto = Reflect.getPrototypeOf( obj )!\n\t\t\t\n\t\t\tconst [ keys, vals ] = lean( obj )\n\t\t\tconst shape = JSON.stringify( [ keys, vals.map( v => typeof v ) ] )\n\t\t\t\n\t\t\tthis.leanes.set( proto, lean )\n\t\t\tthis.riches.set( shape, rich )\n\t\t}\n\t\t\n\t}\n\t\n\t/** Native Map support */\n\t$mol_vary.register(\n\t\t( keys = [] as readonly any[], vals = [] as readonly any[] )=> new Map( keys.map( ( k, i )=> [ k, vals[i] ] ) ),\n\t\tobj => [\n\t\t\t[ 'keys', 'vals' ],\n\t\t\t[ [ ... obj.keys() ], [ ... obj.values() ] ],\n\t\t],\n\t)\n\t\n\t/** Native Set support */\n\t$mol_vary.register(\n\t\t( vals = [] as readonly any[] )=> new Set( vals ),\n\t\tobj => [\n\t\t\t[ 'vals' ],\n\t\t\t[ [ ... obj.values() ] ],\n\t\t],\n\t)\n\t\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["-","../../../mam.ts","../../../mol/fail/fail.ts","../../../mol/hash/numbers/number.ts","../../../mol/bigint/encode/encode.ts","../../../mol/hash/string/string.ts","../../../mol/charset/encode/encode.ts","../../../mol/charset/decode/decode.ts","../../../mol/vary/vary.ts"],"names":[],"mappings":"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","sourcesContent":[null,"Error.stackTraceLimit = 50;\n\ndeclare let _$_: { new(): {} } & typeof globalThis\ndeclare class $ extends _$_ {}\n\nnamespace $ {\n\texport type $ = typeof $$\n\texport declare class $$ extends $ {\n\t\tstatic $: $\n\t}\n\tnamespace $$ {\n\t\texport type $$ = $\n\t}\n}\n\nmodule.exports = $\n","namespace $ {\n\n\texport function $mol_fail( error : any ) : never {\n\t\tthrow error\n\t}\n\n}\n","namespace $ {\n\n\t/**\n\t * 48-bit streamable array hash function\n\t * Based on cyrb53: https://stackoverflow.com/a/52171480\n\t */\n\texport function $mol_hash_numbers( buff: ArrayLike< number >, seed = 0 ) {\n\t\t\n\t\tlet h1 = 0xdeadbeef ^ seed\n\t\tlet h2 = 0x41c6ce57 ^ seed\n\t\t\n\t\tfor( let i = 0; i < buff.length; ++i ) {\n\t\t\tconst item = buff[i]\n\t\t\th1 = Math.imul( h1 ^ item, 2654435761 )\n\t\t\th2 = Math.imul( h2 ^ item, 1597334677 )\n\t\t}\n\t\t\n\t\th1 = Math.imul( h1 ^ ( h1 >>> 16 ), 2246822507 ) ^ Math.imul( h2 ^ ( h2 >>> 13 ), 3266489909 )\n\t\th2 = Math.imul( h2 ^ ( h2 >>> 16 ), 2246822507 ) ^ Math.imul( h1 ^ ( h1 >>> 13 ), 3266489909 )\n\t\t\n\t\treturn 4294967296 * ( ( ( 1 << 16 ) - 1 ) & h2 ) + ( h1 >>> 0 )\n\t}\n\n}\n","namespace $ {\n\t\n\texport function $mol_bigint_encode( num: bigint ) {\n\n\t\tconst minus = num < 0n ? 255 : 0;\n\t\tnum = minus ? -num - 1n : num\n\t\t\n\t\tconst bytes = [] as number[]\n\t\tdo {\n\t\t\t\n\t\t\tlet byte = minus ^ Number( num % 256n )\n\t\t\tbytes.push( byte )\n\t\t\t\n\t\t\tif( num >>= 8n ) continue\n\t\t\t\n\t\t\tif(( minus & 128 )!==( byte & 128 ))\n\t\t\t\tbytes.push( minus )\n\t\t\t\n\t\t\tbreak\n\t\t\t\n\t\t} while( num )\n\t\n\t\treturn new Uint8Array(bytes);\n\t}\n\t\n}\n","namespace $ {\n\n\t/**\n\t * 48-bit streamable string hash function\n\t * Based on cyrb53: https://stackoverflow.com/a/52171480\n\t */\n\texport function $mol_hash_string( str: string, seed = 0 ) {\n\t\tlet nums = new Array( str.length )\n\t\tfor( let i = 0; i < str.length; ++i ) nums[i] = str.charCodeAt(i)\n\t\treturn $mol_hash_numbers( nums )\n\t}\n\n}\n","namespace $ {\n\n\tlet buf = new Uint8Array( 2**12 ) // 4KB Mem Page\n\t\n\texport function $mol_charset_encode( str: string ) {\n\t\tconst capacity = str.length * 3\n\t\tif( buf.byteLength < capacity ) buf = new Uint8Array( capacity )\n\t\treturn buf.slice( 0, $mol_charset_encode_to( str, buf ) )\n\t}\n\n\texport function $mol_charset_encode_to( str: string, buf: Uint8Array< ArrayBuffer >, from = 0 ) {\n\n\t\tlet pos = from\n\n\t\tfor( let i = 0; i < str.length; i++ ) {\n\t\t\t\n\t\t\tlet code = str.charCodeAt( i )\n\t\t\t\n\t\t\tif( code < 0x80 ) { // ASCII - 1 octet\n\t\t\t\t\n\t\t\t\tbuf[ pos ++ ] = code\n\t\t\t\t\n\t\t\t} else if( code < 0x800 ) { // 2 octet\n\t\t\t\t\n\t\t\t\tbuf[ pos ++ ] = 0xc0 | ( code >> 6 )\n\t\t\t\tbuf[ pos ++ ] = 0x80 | ( code & 0x3f )\n\t\t\t\t\n\t\t\t} else if( code < 0xd800 || code >= 0xe000 ) { // 3 octet\n\t\t\t\t\n\t\t\t\tbuf[ pos ++ ] = 0xe0 | ( code >> 12 )\n\t\t\t\tbuf[ pos ++ ] = 0x80 | ( ( code >> 6 ) & 0x3f )\n\t\t\t\tbuf[ pos ++ ] = 0x80 | ( code & 0x3f )\n\t\t\t\t\n\t\t\t} else { // surrogate pair\n\t\t\t\t\n\t\t\t\tconst point = ( ( code - 0xd800 ) << 10 ) + str.charCodeAt( ++ i ) + 0x2400\n\t\t\t\t\n\t\t\t\tbuf[ pos ++ ] = 0xf0 | ( point >> 18 )\n\t\t\t\tbuf[ pos ++ ] = 0x80 | ( ( point >> 12 ) & 0x3f )\n\t\t\t\tbuf[ pos ++ ] = 0x80 | ( ( point >> 6 ) & 0x3f )\n\t\t\t\tbuf[ pos ++ ] = 0x80 | ( point & 0x3f )\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t}\n\n\t\treturn pos - from\n\t}\n\n\texport function $mol_charset_encode_size( str: string ) {\n\n\t\tlet size = 0\n\n\t\tfor( let i = 0; i < str.length; i++ ) {\n\t\t\t\n\t\t\tlet code = str.charCodeAt( i )\n\t\t\t\n\t\t\tif( code < 0x80 ) size += 1\n\t\t\telse if( code < 0x800 ) size += 2\n\t\t\telse if( code < 0xd800 || code >= 0xe000 ) size += 3\n\t\t\telse size += 4\n\t\t\t\n\t\t}\n\n\t\treturn size\n\t}\n\n}\n","namespace $ {\n\n\tconst decoders = {} as { [ key in $mol_charset_encoding ]?: TextDecoder }\n\n\texport function $mol_charset_decode(\n\t\tbuffer: AllowSharedBufferSource,\n\t\tencoding: $mol_charset_encoding = 'utf8',\n\t) {\n\t\t\n\t\tlet decoder = decoders[ encoding ]\n\t\tif( !decoder ) decoder = decoders[ encoding ] = new TextDecoder( encoding )\n\t\t\n\t\treturn decoder.decode( buffer )\n\t}\n\n}\n","namespace $ {\n\t\n\texport enum $mol_vary_tip {\n\t\tuint = 0b000 << 5,\n\t\tlink = 0b001 << 5,\n\t\tspec = 0b010 << 5,\n\t\tlist = 0b011 << 5,\n\t\ttext = 0b100 << 5,\n\t\tblob = 0b101 << 5,\n\t\ttupl = 0b110 << 5,\n\t\tsint = 0b111 << 5,\n\t}\n\t\n\texport const $mol_vary_len = {\n\t\t1: 28,\n\t\t2: 29,\n\t\t4: 30,\n\t\t8: 31,\n\t} as const\n\t\n\texport enum $mol_vary_spec {\n\t\tnone = 'N'.charCodeAt(0),\n\t\ttrue = 'T'.charCodeAt(0),\n\t\tfake = 'F'.charCodeAt(0),\n\t\tboth = 'B'.charCodeAt(0),\n\t\tfp16 = $mol_vary_tip.spec | 29,\n\t\tfp32 = $mol_vary_tip.spec | 30,\n\t\tfp64 = $mol_vary_tip.spec | 31,\n\t}\n\t\n\tfunction num_len( num: number | bigint ) {\n\t\t\n\t\tif( typeof num === 'number' && !Number.isInteger( num ) ) return 8\n\t\t\n\t\tif( num < 0 ) {\n\t\t\t\n\t\t\tif( num >= -28 ) return 0\n\t\t\tif( num >= -(2**7) ) return 1\n\t\t\tif( num >= -(2**15) ) return 2\n\t\t\tif( num >= -(2**31) ) return 4\n\t\t\tif( num >= -(2n**63n) ) return 8\n\t\t\t\n\t\t\t$mol_fail( new Error( `Too low numb ${ num }` ) )\n\t\t\t\n\t\t} else {\n\t\t\t\n\t\t\tif( num < 28 ) return 0\n\t\t\tif( num < 2**8 ) return 1\n\t\t\tif( num < 2**16 ) return 2\n\t\t\tif( num < 2**32 ) return 4\n\t\t\tif( num < 2n**64n ) return 8\n\t\t\t\n\t\t\t$mol_fail( new Error( `Too high numb ${ num }` ) )\n\t\t\t\n\t\t}\n\t\t\n\t}\n\t\n\t/** VaryPack - simple fast compact data binarization format. */\n\texport class $mol_vary extends DataView< ArrayBuffer > {\n\t\t\n\t\tstatic buffer = new Uint8Array( 4096 )\n\t\tstatic buffer_view = new this( this.buffer.buffer )\n\t\t\n\t\tstatic allocate( size: number ) {\n\t\t\tif( this.buffer.byteLength > size ) return\n\t\t\tthis.buffer = new Uint8Array( Math.ceil( size / 4096 ) * 4096 )\n\t\t\tthis.buffer_view = new this( this.buffer.buffer )\n\t\t}\n\t\t\n\t\t/** Packs any data to Uint8Array with deduplication. */\n\t\tstatic pack( data: unknown ) {\n\t\t\t\n\t\t\tconst leaned = new WeakMap< object, readonly[ keys: readonly any[], vals: readonly any[] ] >()\n\t\t\tconst lean = ( val: object ): readonly[ keys: readonly any[], vals: readonly any[] ] => {\n\t\t\t\t\n\t\t\t\tlet tupl = leaned.get( val )\n\t\t\t\tif( tupl ) return tupl\n\t\t\t\t\n\t\t\t\tleaned.set( val, tupl = this.lean( val ) )\n\t\t\t\treturn tupl\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tconst hashes = new Map< unknown, number >()\n\t\t\t/** Recursive hash for deduplication */\n\t\t\tconst hash = ( val: unknown ): number => {\n\t\t\t\t\n\t\t\t\tswitch( typeof val ) {\n\t\t\t\t\t\n\t\t\t\t\tcase 'undefined':\n\t\t\t\t\t\treturn 0\n\t\t\t\t\t\n\t\t\t\t\tcase 'number':\n\t\t\t\t\tcase 'boolean':\n\t\t\t\t\t\treturn Number( val )\n\t\t\t\t\t\n\t\t\t\t\tcase 'number':\n\t\t\t\t\t\treturn val\n\t\t\t\t\t\n\t\t\t\t\tcase 'bigint':\n\t\t\t\t\t\treturn $mol_hash_numbers( $mol_bigint_encode( val ), $mol_vary_tip.sint )\n\t\t\t\t\t\n\t\t\t\t\tcase 'string': {\n\t\t\t\t\t\tlet res = hashes.get( val )\n\t\t\t\t\t\tif( res != null ) return res\n\t\t\t\t\t\tres = $mol_hash_string( val, $mol_vary_tip.text )\n\t\t\t\t\t\thashes.set( val, res )\n\t\t\t\t\t\treturn res\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcase 'object': {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( !val ) return $mol_vary_spec.none\n\t\t\t\t\t\n\t\t\t\t\t\tlet res = hashes.get( val )\n\t\t\t\t\t\tif( res != null ) return res\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( ArrayBuffer.isView( val ) ) res = $mol_hash_numbers( new Uint8Array( val.buffer, val.byteOffset, val.byteLength ), $mol_vary_tip.blob )\n\t\t\t\t\t\telse if( Array.isArray( val ) ) res = $mol_hash_numbers( val.map( hash ), $mol_vary_tip.list )\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tconst [ keys, vals ] = lean( val )\n\t\t\t\t\t\t\tres = $mol_hash_numbers( vals.map( hash ), hash( keys ) )\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\thashes.set( val, res )\n\t\t\t\t\t\treturn res\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t$mol_fail( new Error( `Unsupported type` ) )\n\t\t\t}\n\t\t\t\n\t\t\tlet size = 0\n\t\t\tconst offsets = new Map< number /*hash*/, number >()\n\t\t\tconst sizes = new Map< string, number >()\n\t\t\tconst stream = [] as unknown[]\n\t\t\t\n\t\t\t/** Reserve size for embedding first entry or link to existen one.*/\n\t\t\tconst dedup = ( val: unknown, len: number )=> {\n\t\t\t\t\n\t\t\t\tconst key = hash( val )\n\t\t\t\tlet offset = offsets.get( key )\n\t\t\t\t\n\t\t\t\tif( offset === undefined ) { // embed first\n\t\t\t\t\t\n\t\t\t\t\toffsets.set( key, offset = stream.length )\n\t\t\t\t\tstream.push( val )\n\t\t\t\t\tsize += len\n\t\t\t\t\t\n\t\t\t\t\treturn true\n\t\t\t\t\t\n\t\t\t\t} else { // link to exists\n\t\t\t\t\t\n\t\t\t\t\tsize += 1 + num_len( offset )\n\t\t\t\t\treturn false\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t/** Recursive calculates required buffer size. */\n\t\t\tconst calc = ( val: unknown )=> {\n\t\t\t\t\n\t\t\t\tif( val == null ) {\n\t\t\t\t\tsize += 1\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tswitch( typeof val ) {\n\t\t\t\t\t\n\t\t\t\t\tcase 'boolean':\n\t\t\t\t\t\tsize += 1\n\t\t\t\t\t\treturn true\n\t\t\t\t\t\n\t\t\t\t\tcase 'number':\n\t\t\t\t\tcase 'bigint':\n\t\t\t\t\t\tsize += 1 + num_len( val )\n\t\t\t\t\t\treturn true\n\t\t\t\t\t\n\t\t\t\t\tcase 'string': {\n\t\t\t\t\t\t\n\t\t\t\t\t\tlet len = sizes.get( val )\n\t\t\t\t\t\tif( len == null ) sizes.set( val, len = $mol_charset_encode_size( val ) )\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( !len ) { // always embed redundant\n\t\t\t\t\t\t\tsize += 1\n\t\t\t\t\t\t\treturn true\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn dedup( val, 1 + num_len( len ) + len )\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcase 'object': {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( ArrayBuffer.isView( val ) ) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif( !val.byteLength ) { // always embed redundant\n\t\t\t\t\t\t\t\tsize += 2\n\t\t\t\t\t\t\t\treturn true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn dedup( val, 2 + num_len( val.byteLength ) + val.byteLength )\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( Array.isArray( val ) ) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif( !val.length ) { // always embed redundant\n\t\t\t\t\t\t\t\tsize += 1\n\t\t\t\t\t\t\t\treturn true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tconst key = hash( val )\n\t\t\t\t\t\t\tlet offset = offsets.get( key )\n\t\t\t\t\t\t\tif( offset === undefined ) {\n\t\t\t\t\t\t\t\tfor( const item of val ) calc( item )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn dedup( val, 1 + num_len( val.length ) )\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst [ keys, vals ] = lean( val )\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( !vals.length ) { // always embed redundant\n\t\t\t\t\t\t\tsize += 2\n\t\t\t\t\t\t\treturn true\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tconst key = hash( val )\n\t\t\t\t\t\tlet offset = offsets.get( key )\n\t\t\t\t\t\tif( offset === undefined ) {\n\t\t\t\t\t\t\tcalc( keys )\n\t\t\t\t\t\t\tfor( const item of vals ) calc( item )\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\treturn dedup( val, 1 + num_len( vals.length ) )\n\t\t\t\t\t\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_fail( new Error( `Unsupported type` ) )\n\t\t\t}\n\t\t\t\n\t\t\tcalc( data )\n\t\t\t\n\t\t\tthis.allocate( size )\n\t\t\tconst buf = this.buffer\n\t\t\tconst pack = this.buffer_view\n\t\t\tconst embedded = new Set< number >()\n\t\t\t\n\t\t\tlet pos = 0\n\t\t\t/** Recursive fills buffer with data. */\n\t\t\tconst dump = ( val: unknown )=> {\n\t\t\t\t\n\t\t\t\tif( pos >= size ) $mol_fail( new Error( 'Wrong buffer length', { cause: buf } ) )\n\t\t\t\t\n\t\t\t\tswitch( typeof val ) {\n\t\t\t\t\t\n\t\t\t\t\tcase 'undefined': {\n\t\t\t\t\t\tpack.tlen( pos, 'spec', $mol_vary_spec.both )\n\t\t\t\t\t\tpos += 1\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcase 'boolean': {\n\t\t\t\t\t\t\n\t\t\t\t\t\tpack.tlen( pos, 'spec', val ? $mol_vary_spec.true : $mol_vary_spec.fake )\n\t\t\t\t\t\tpos += 1\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcase 'number': {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( !Number.isInteger( val ) ) {\n\t\t\t\t\t\t\tpos += pack.tfp( pos, 'spec', val )\n\t\t\t\t\t\t} else if( val < 0 ) {\n\t\t\t\t\t\t\tpos += pack.tint( pos, 'sint', val )\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpos += pack.tnat( pos, 'uint', val )\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\tcase 'bigint': {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( val < 0 ) {\n\t\t\t\t\t\t\tpos += pack.tint( pos, 'sint', val )\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpos += pack.tnat( pos, 'uint', val )\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcase 'string': {\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst key = hash( val )\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( embedded.has( key ) ) {\n\t\t\t\t\t\t\tpos += pack.tnat( pos, 'link', offsets.get( key )! )\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tpos += pack.tnat( pos, 'text', sizes.get( val )! )\n\t\t\t\t\t\tpos += $mol_charset_encode_to( val, buf, pos )\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( val.length ) embedded.add( key )\n\t\t\t\t\t\treturn\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcase 'object': {\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( !val ) {\n\t\t\t\t\t\t\tpack.tlen( pos, 'spec', $mol_vary_spec.none )\n\t\t\t\t\t\t\tpos += 1\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\tif( ArrayBuffer.isView( val ) ) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tconst key = hash( val )\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif( embedded.has( key ) ) {\n\t\t\t\t\t\t\t\tpos += pack.tnat( pos, 'link', offsets.get( key )! )\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tpos += pack.tnat( pos, 'blob', val.byteLength )\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif( val instanceof Uint8Array ) pos += pack.tlen( pos, 'uint', $mol_vary_len[1] )\n\t\t\t\t\t\t\telse if( val instanceof Uint16Array ) pos += pack.tlen( pos, 'uint', $mol_vary_len[2] )\n\t\t\t\t\t\t\telse if( val instanceof Uint32Array ) pos += pack.tlen( pos, 'uint', $mol_vary_len[4] )\n\t\t\t\t\t\t\telse if( val instanceof BigUint64Array ) pos += pack.tlen( pos, 'uint', $mol_vary_len[8] )\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\telse if( val instanceof Int8Array ) pos += pack.tlen( pos, 'sint', ~$mol_vary_len[1] )\n\t\t\t\t\t\t\telse if( val instanceof Int16Array ) pos += pack.tlen( pos, 'sint', ~$mol_vary_len[2] )\n\t\t\t\t\t\t\telse if( val instanceof Int32Array ) pos += pack.tlen( pos, 'sint', ~$mol_vary_len[4] )\n\t\t\t\t\t\t\telse if( val instanceof BigInt64Array ) pos += pack.tlen( pos, 'sint', ~$mol_vary_len[8] )\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// else if( val instanceof Float16Array ) pos += pack.tlen( pos, 'spec', $mol_vary_spec.fp16 )\n\t\t\t\t\t\t\telse if( val instanceof Float32Array ) pos += pack.tlen( pos, 'spec', $mol_vary_spec.fp32 )\n\t\t\t\t\t\t\telse if( val instanceof Float64Array ) pos += pack.tlen( pos, 'spec', $mol_vary_spec.fp64 )\n\t\t\t\t\t\t\n\t\t\t\t\t\t\telse $mol_fail( new Error( `Unsupported type` ) )\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tbuf.set( new Uint8Array( val.buffer, val.byteOffset, val.byteLength ), pos )\n\t\t\t\t\t\t\tpos += val.byteLength\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif( val.byteLength ) embedded.add( key )\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( Array.isArray( val ) ) {\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tconst key = hash( val )\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif( embedded.has( key ) ) {\n\t\t\t\t\t\t\t\tpos += pack.tnat( pos, 'link', offsets.get( key )! )\n\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tpos += pack.tnat( pos, 'list', val.length )\n\t\t\t\t\t\t\tfor( const item of val ) dump( item )\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tif( val.length ) embedded.add( key )\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst key = hash( val )\n\t\t\t\t\t\t\n\t\t\t\t\t\tif( embedded.has( key ) ) {\n\t\t\t\t\t\t\tpos += pack.tnat( pos, 'link', offsets.get( key )! )\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst [ keys, vals ] = lean( val )\n\t\t\t\t\t\n\t\t\t\t\t\tpos += pack.tnat( pos, 'tupl', vals.length )\n\t\t\t\t\t\tdump( keys )\n\t\t\t\t\t\tfor( const item of vals ) dump( item )\n\t\t\t\t\t\t\t\n\t\t\t\t\t\tif( vals.length ) embedded.add( key )\n\t\t\t\t\t\treturn\n\t\t\t\t\t\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_fail( new Error( `Unsupported type` ) )\n\t\t\t}\n\t\t\t\n\t\t\tdump( data )\n\t\t\t\n\t\t\treturn buf.slice( 0, size )\n\t\t\t\n\t\t}\n\t\t\n\t\t/** Parses buffer to rich runtime structures. */\n\t\tstatic take( buf: Uint8Array< ArrayBuffer > ): unknown {\n\t\t\t\n\t\t\tconst pack = new $mol_vary( buf.buffer, buf.byteOffset, buf.byteLength )\n\t\t\tconst stream = [] as unknown[]\n\t\t\tlet pos = 0;\n\t\t\t\n\t\t\tconst read_unum = ()=> {\n\t\t\t\tconst num = pack.unum( pos )\n\t\t\t\tpos += 1 + pack.ulen( pos )\n\t\t\t\treturn num\n\t\t\t}\n\t\t\t\n\t\t\tconst read_snum = ()=> {\n\t\t\t\tconst num = pack.snum( pos )\n\t\t\t\tpos += 1 + pack.slen( pos )\n\t\t\t\treturn num\n\t\t\t}\n\t\t\t\n\t\t\tconst read_text = ()=> {\n\t\t\t\tconst len = read_unum() as number\n\t\t\t\tconst bin = new Uint8Array( buf.buffer, pack.byteOffset + pos, len )\n\t\t\t\tpos += len\n\t\t\t\tconst text = $mol_charset_decode( bin )\n\t\t\t\tif( text.length ) stream.push( text )\n\t\t\t\treturn text\n\t\t\t}\n\t\t\t\n\t\t\tconst read_buffer = ( len: number, TypedArray: new( buf: ArrayBuffer )=> ArrayBufferView< ArrayBuffer > )=> {\n\t\t\t\tconst bin = new TypedArray( buf.slice( pos, pos + len ).buffer )\n\t\t\t\tpos += len\n\t\t\t\tif( len ) stream.push( bin )\n\t\t\t\treturn bin\n\t\t\t}\n\t\t\t\n\t\t\tconst read_blob = ()=> {\n\t\t\t\t\n\t\t\t\tconst len = read_unum() as number\n\t\t\t\tconst kind = pack.getUint8( pos ++ )\n\t\t\t\t\n\t\t\t\tswitch( kind ) {\n\t\t\t\t\t\n\t\t\t\t\tcase $mol_vary_tip.uint | $mol_vary_len[1]: return read_buffer( len, Uint8Array )\n\t\t\t\t\tcase $mol_vary_tip.uint | $mol_vary_len[2]: return read_buffer( len, Uint16Array )\n\t\t\t\t\tcase $mol_vary_tip.uint | $mol_vary_len[4]: return read_buffer( len, Uint32Array )\n\t\t\t\t\tcase $mol_vary_tip.uint | $mol_vary_len[8]: return read_buffer( len, BigUint64Array )\n\t\t\t\t\t\n\t\t\t\t\tcase $mol_vary_tip.sint | ~$mol_vary_len[1] + 256: return read_buffer( len, Int8Array )\n\t\t\t\t\tcase $mol_vary_tip.sint | ~$mol_vary_len[2] + 256: return read_buffer( len, Int16Array )\n\t\t\t\t\tcase $mol_vary_tip.sint | ~$mol_vary_len[4] + 256: return read_buffer( len, Int32Array )\n\t\t\t\t\tcase $mol_vary_tip.sint | ~$mol_vary_len[8] + 256: return read_buffer( len, BigInt64Array )\n\t\t\t\t\t\n\t\t\t\t\t// case $mol_vary_tip.spec | $mol_vary_spec.fp16: return read_buffer( len, Float16Array )\n\t\t\t\t\tcase $mol_vary_tip.spec | $mol_vary_spec.fp32: return read_buffer( len, Float32Array )\n\t\t\t\t\tcase $mol_vary_tip.spec | $mol_vary_spec.fp64: return read_buffer( len, Float64Array )\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t$mol_fail( new Error( 'Unsupported blob kind', { cause: { kind } } ) )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tconst read_list = ()=> {\n\t\t\t\tconst len = read_unum() as number\n\t\t\t\tconst list = [] as any[]\n\t\t\t\tfor( let i = 0; i < len; ++i ) list.push( read_vary() )\n\t\t\t\tif( len ) stream.push( list )\n\t\t\t\treturn list\n\t\t\t}\n\t\t\t\n\t\t\tconst read_link = ()=> {\n\t\t\t\tconst index = read_unum() as number\n\t\t\t\tif( index >= stream.length ) $mol_fail( new Error( 'Too large index', { cause: { index, exists: stream.length } } ) )\n\t\t\t\treturn stream[ index ]\n\t\t\t}\n\t\t\t\n\t\t\tconst read_tupl = ()=> {\n\t\t\t\t\n\t\t\t\tconst len = read_unum() as number\n\t\t\t\t\n\t\t\t\tconst keys = pack.tip( pos ) === 'link' ? read_link() : read_list()\n\t\t\t\tif( !Array.isArray( keys ) ) $mol_fail( new Error( 'Wrong tupl shape type', { cause: { type: typeof keys } } ) )\n\t\t\t\t\n\t\t\t\tconst vals = Array.from( { length: len }, ()=> read_vary() )\n\t\t\t\t\n\t\t\t\tconst obj = this.rich( keys, vals )\n\t\t\t\tif( vals.length ) stream.push( obj )\n\t\t\t\t\n\t\t\t\treturn obj\n\t\t\t}\n\t\t\t\n\t\t\tconst read_spec = ()=> {\n\t\t\t\t\n\t\t\t\tconst kind = pack.getUint8( pos )\n\t\t\t\tconst spec = $mol_vary_spec[ kind ] as keyof typeof $mol_vary_spec \n\t\t\t\t\n\t\t\t\tswitch( spec ) {\n\t\t\t\t\t\n\t\t\t\t\tcase 'none':\n\t\t\t\t\t\t++ pos\n\t\t\t\t\t\treturn null\n\t\t\t\t\t\n\t\t\t\t\tcase 'fake':\n\t\t\t\t\t\t++ pos\n\t\t\t\t\t\treturn false\n\t\t\t\t\t\n\t\t\t\t\tcase 'true':\n\t\t\t\t\t\t++ pos\n\t\t\t\t\t\treturn true\n\t\t\t\t\t\n\t\t\t\t\tcase 'both':\n\t\t\t\t\t\t++ pos\n\t\t\t\t\t\treturn undefined\n\t\t\t\t\t\n\t\t\t\t\tcase 'fp16': {\n\t\t\t\t\t\tconst val = pack.getFloat16( pos + 1, true )\n\t\t\t\t\t\tpos += 3\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\tcase 'fp32': {\n\t\t\t\t\t\tconst val = pack.getFloat32( pos + 1, true )\n\t\t\t\t\t\tpos += 5\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\tcase 'fp64': {\n\t\t\t\t\t\tconst val = pack.getFloat64( pos + 1, true )\n\t\t\t\t\t\tpos += 9\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\tdefault:\n\t\t\t\t\t\t$mol_fail( new Error( 'Unsupported spec', { cause: { kind } } ) )\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\tconst read_vary = ()=> {\n\t\t\t\t\n\t\t\t\tconst tip = pack.tip( pos )\n\t\t\t\t\n\t\t\t\tswitch( tip ) {\n\t\t\t\t\t\n\t\t\t\t\tcase 'uint': return read_unum()\n\t\t\t\t\tcase 'sint': return read_snum()\n\t\t\t\t\tcase 'link': return read_link()\n\t\t\t\t\tcase 'text': return read_text()\n\t\t\t\t\tcase 'list': return read_list()\n\t\t\t\t\tcase 'blob': return read_blob()\n\t\t\t\t\tcase 'tupl': return read_tupl()\n\t\t\t\t\tcase 'spec': return read_spec()\n\t\t\t\t\t\n\t\t\t\t\tdefault: $mol_fail( new Error( 'Unsupported tip', { cause: { tip } } ) )\n\t\t\t\t}\n\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\treturn read_vary()\n\t\t}\n\t\t\n\t\ttlen( pos: number, tip: keyof typeof $mol_vary_tip, len: number ) {\n\t\t\tthis.setUint8( pos, $mol_vary_tip[ tip ] | len )\n\t\t\treturn 1\n\t\t}\n\t\t\n\t\ttnat( pos: number, tip: keyof typeof $mol_vary_tip, num: number | bigint ) {\n\t\t\t\n\t\t\tconst len = num_len( num )\n\t\t\tthis.tlen( pos, tip, len ? $mol_vary_len[ len ] : Number( num ) )\n\t\t\t\n\t\t\tswitch( len ) {\n\t\t\t\tcase 0: break\n\t\t\t\tcase 1: this.setUint8( pos + 1, Number( num ) ); break\n\t\t\t\tcase 2: this.setUint16( pos + 1, Number( num ), true ); break\n\t\t\t\tcase 4: this.setUint32( pos + 1, Number( num ), true ); break\n\t\t\t\tcase 8: this.setBigUint64( pos + 1, BigInt( num ), true ); break\n\t\t\t\tdefault: $mol_fail( new Error( 'Unsupported uint len', { cause: { len } } ) )\n\t\t\t}\n\n\t\t\treturn 1 + len\n\t\t}\n\t\t\n\t\ttint( pos: number, tip: keyof typeof $mol_vary_tip, num: number | bigint ) {\n\t\t\t\n\t\t\tconst len = num_len( num )\n\t\t\tthis.tlen( pos, tip, len ? - $mol_vary_len[ len ] -1 : Number( num ) )\n\t\t\t\n\t\t\tswitch( len ) {\n\t\t\t\tcase 0: break\n\t\t\t\tcase 1: this.setInt8( pos + 1, Number( num ) ); break\n\t\t\t\tcase 2: this.setInt16( pos + 1, Number( num ), true ); break\n\t\t\t\tcase 4: this.setInt32( pos + 1, Number( num ), true ); break\n\t\t\t\tcase 8: this.setBigInt64( pos + 1, BigInt( num ), true ); break\n\t\t\t\tdefault: $mol_fail( new Error( 'Unsupported sint len', { cause: { len } } ) )\n\t\t\t}\n\n\t\t\treturn 1 + len\n\t\t}\n\t\t\n\t\ttfp( pos: number, tip: keyof typeof $mol_vary_tip, num: number ) {\n\t\t\t\n\t\t\tconst len = num_len( num )\n\t\t\tthis.tlen( pos, tip, len ? $mol_vary_len[ len ] : Number( num ) )\n\t\t\t\n\t\t\tswitch( len ) {\n\t\t\t\tcase 2: this.setFloat16( pos + 1, num, true ); break\n\t\t\t\tcase 4: this.setFloat32( pos + 1, num, true ); break\n\t\t\t\tcase 8: this.setFloat64( pos + 1, num, true ); break\n\t\t\t\tdefault: $mol_fail( new Error( 'Unsupported fp len', { cause: { len } } ) )\n\t\t\t}\n\n\t\t\treturn 1 + len\n\t\t}\n\t\t\n\t\ttip( pos: number ) {\n\t\t\treturn $mol_vary_tip[ this.getUint8( pos ) & 0b111_00000 ] as keyof typeof $mol_vary_tip\n\t\t}\n\t\t\n\t\tulen( pos: number ) {\n\t\t\tconst num = this.getUint8( pos ) & 0b11111\n\t\t\tif( num < 28 ) return 0\n\t\t\tswitch( num ) {\n\t\t\t\tcase 28: return 1\n\t\t\t\tcase 29: return 2\n\t\t\t\tcase 30: return 4\n\t\t\t\tcase 31: return 8\n\t\t\t\tdefault: $mol_fail( new Error( 'Impossible!' ) )\n\t\t\t}\n\t\t}\n\t\t\n\t\tslen( pos: number ) {\n\t\t\tconst num = this.getInt8( pos )\n\t\t\tif( num > -29 ) return 0\n\t\t\tswitch( num ) {\n\t\t\t\tcase -29: return 1\n\t\t\t\tcase -30: return 2\n\t\t\t\tcase -31: return 4\n\t\t\t\tcase -32: return 8\n\t\t\t\tdefault: $mol_fail( new Error( 'Impossible!' ) )\n\t\t\t}\n\t\t}\n\t\t\n\t\tunum( pos: number ) {\n\t\t\tconst num = this.getUint8( pos ) & 0b11111\n\t\t\tif( num < 28 ) return num\n\t\t\tswitch( num ) {\n\t\t\t\tcase 28: return this.getUint8( pos + 1 )\n\t\t\t\tcase 29: return this.getUint16( pos + 1, true )\n\t\t\t\tcase 30: return this.getUint32( pos + 1, true )\n\t\t\t\tcase 31:\n\t\t\t\t\tconst val = this.getBigUint64( pos + 1, true )\n\t\t\t\t\tif( val > Number.MAX_SAFE_INTEGER ) return val\n\t\t\t\t\treturn Number( val )\n\t\t\t\tdefault: $mol_fail( new Error( 'Unsupported len', { cause: { num } } ) )\n\t\t\t}\n\t\t}\n\t\t\n\t\tsnum( pos: number ) {\n\t\t\tconst num = this.getInt8( pos )\n\t\t\tif( num > -29 ) return num\n\t\t\tswitch( num ) {\n\t\t\t\tcase -29: return this.getInt8( pos + 1 )\n\t\t\t\tcase -30: return this.getInt16( pos + 1, true )\n\t\t\t\tcase -31: return this.getInt32( pos + 1, true )\n\t\t\t\tcase -32:\n\t\t\t\t\tconst val = this.getBigInt64( pos + 1, true )\n\t\t\t\t\tif( val > Number.MAX_SAFE_INTEGER ) return val\n\t\t\t\t\tif( val < Number.MIN_SAFE_INTEGER ) return val\n\t\t\t\t\treturn Number( val )\n\t\t\t\tdefault: $mol_fail( new Error( 'Unsupported len', { cause: { num } } ) )\n\t\t\t}\n\t\t}\n\t\t\n\t\t/** Converts internal keys&vals to high level object. */\n\t\tstatic rich( keys: any[], vals: any[] ): object {\n\t\t\t\n\t\t\tconst shape = JSON.stringify([ keys, vals.map( v => typeof v ) ])\n\t\t\tconst rich = this.riches.get( shape )\n\t\t\tif( rich ) return rich( ... vals )\n\t\t\t\n\t\t\tconst pairs = keys.map( ( key, index ) => [ key, vals[ index ] ] )\n\t\t\tconst obj = Object.fromEntries( pairs )\n\t\t\t\n\t\t\treturn obj\n\t\t}\n\t\t \n\t\t/** Converts high level object to internal keys&vals representation. */\n\t\tstatic lean( val: object ): readonly[ keys: readonly any[], vals: readonly any[] ] {\n\t\t\t\n\t\t\tconst proto = Reflect.getPrototypeOf( val )!\n\t\t\tconst lean = this.leanes.get( proto )\n\t\t\tif( lean ) return lean( val )\n\t\t\t\n\t\t\treturn [ Object.keys( val ), Object.values( val ) ]\n\t\t}\n\t\t\n\t\tstatic leanes = new Map< object, ( val: any )=> readonly[ keys: readonly any[], vals: readonly any[] ] >()\n\t\tstatic riches = new Map< string/*shape*/, ( ... vals: readonly any[] )=> object >()\n\t\t\n\t\t/** Adds custom types support. */\n\t\tstatic type<\n\t\t\tconst Instance extends object,\n\t\t\tconst Keys extends readonly any[],\n\t\t\tconst Vals extends readonly any[],\n\t\t>(\n\t\t\trich: ( ( ... vals: Vals )=> Instance ) | ( ()=> Instance ),\n\t\t\tlean: ( obj: Instance )=> readonly[ Keys, Vals ],\n\t\t) {\n\t\t\t\n\t\t\tconst obj = rich()\n\t\t\tconst proto = Reflect.getPrototypeOf( obj )!\n\t\t\t\n\t\t\tconst [ keys, vals ] = lean( obj )\n\t\t\tconst shape = JSON.stringify( [ keys, vals.map( v => typeof v ) ] )\n\t\t\t\n\t\t\tthis.leanes.set( proto, lean )\n\t\t\tthis.riches.set( shape, rich )\n\t\t}\n\t\t\n\t}\n\t\n\t/** Native Map support */\n\t$mol_vary.type(\n\t\t( keys = [] as readonly any[], vals = [] as readonly any[] )=> new Map( keys.map( ( k, i )=> [ k, vals[i] ] ) ),\n\t\tobj => [\n\t\t\t[ 'keys', 'vals' ],\n\t\t\t[ [ ... obj.keys() ], [ ... obj.values() ] ],\n\t\t],\n\t)\n\t\n\t/** Native Set support */\n\t$mol_vary.type(\n\t\t( vals = [] as readonly any[] )=> new Set( vals ),\n\t\tobj => [\n\t\t\t[ 'vals' ],\n\t\t\t[ [ ... obj.values() ] ],\n\t\t],\n\t)\n\t\n\t// /** Native Date support */\n\t// $mol_vary.type(\n\t// \t( ts = 0 )=> new Date( ts * 1000 ),\n\t// \tobj => [\n\t// \t\t[ 'unix_time' ],\n\t// \t\t[ obj.valueOf() / 1000 ],\n\t// \t],\n\t// )\n\t\n}\n"]}
|
package/node.mjs
CHANGED
|
@@ -84,7 +84,10 @@ var $;
|
|
|
84
84
|
var $;
|
|
85
85
|
(function ($) {
|
|
86
86
|
function $mol_hash_string(str, seed = 0) {
|
|
87
|
-
|
|
87
|
+
let nums = new Array(str.length);
|
|
88
|
+
for (let i = 0; i < str.length; ++i)
|
|
89
|
+
nums[i] = str.charCodeAt(i);
|
|
90
|
+
return $mol_hash_numbers(nums);
|
|
88
91
|
}
|
|
89
92
|
$.$mol_hash_string = $mol_hash_string;
|
|
90
93
|
})($ || ($ = {}));
|
|
@@ -225,6 +228,14 @@ var $;
|
|
|
225
228
|
}
|
|
226
229
|
}
|
|
227
230
|
class $mol_vary extends DataView {
|
|
231
|
+
static buffer = new Uint8Array(4096);
|
|
232
|
+
static buffer_view = new this(this.buffer.buffer);
|
|
233
|
+
static allocate(size) {
|
|
234
|
+
if (this.buffer.byteLength > size)
|
|
235
|
+
return;
|
|
236
|
+
this.buffer = new Uint8Array(Math.ceil(size / 4096) * 4096);
|
|
237
|
+
this.buffer_view = new this(this.buffer.buffer);
|
|
238
|
+
}
|
|
228
239
|
static pack(data) {
|
|
229
240
|
const leaned = new WeakMap();
|
|
230
241
|
const lean = (val) => {
|
|
@@ -266,7 +277,7 @@ var $;
|
|
|
266
277
|
res = $mol_hash_numbers(val.map(hash), $mol_vary_tip.list);
|
|
267
278
|
else {
|
|
268
279
|
const [keys, vals] = lean(val);
|
|
269
|
-
res = $mol_hash_numbers(
|
|
280
|
+
res = $mol_hash_numbers(vals.map(hash), hash(keys));
|
|
270
281
|
}
|
|
271
282
|
hashes.set(val, res);
|
|
272
283
|
return res;
|
|
@@ -354,8 +365,9 @@ var $;
|
|
|
354
365
|
$mol_fail(new Error(`Unsupported type`));
|
|
355
366
|
};
|
|
356
367
|
calc(data);
|
|
357
|
-
|
|
358
|
-
const
|
|
368
|
+
this.allocate(size);
|
|
369
|
+
const buf = this.buffer;
|
|
370
|
+
const pack = this.buffer_view;
|
|
359
371
|
const embedded = new Set();
|
|
360
372
|
let pos = 0;
|
|
361
373
|
const dump = (val) => {
|
|
@@ -477,7 +489,7 @@ var $;
|
|
|
477
489
|
$mol_fail(new Error(`Unsupported type`));
|
|
478
490
|
};
|
|
479
491
|
dump(data);
|
|
480
|
-
return buf;
|
|
492
|
+
return buf.slice(0, size);
|
|
481
493
|
}
|
|
482
494
|
static take(buf) {
|
|
483
495
|
const pack = new $mol_vary(buf.buffer, buf.byteOffset, buf.byteLength);
|
|
@@ -746,7 +758,7 @@ var $;
|
|
|
746
758
|
}
|
|
747
759
|
static leanes = new Map();
|
|
748
760
|
static riches = new Map();
|
|
749
|
-
static
|
|
761
|
+
static type(rich, lean) {
|
|
750
762
|
const obj = rich();
|
|
751
763
|
const proto = Reflect.getPrototypeOf(obj);
|
|
752
764
|
const [keys, vals] = lean(obj);
|
|
@@ -756,11 +768,11 @@ var $;
|
|
|
756
768
|
}
|
|
757
769
|
}
|
|
758
770
|
$.$mol_vary = $mol_vary;
|
|
759
|
-
$mol_vary.
|
|
771
|
+
$mol_vary.type((keys = [], vals = []) => new Map(keys.map((k, i) => [k, vals[i]])), obj => [
|
|
760
772
|
['keys', 'vals'],
|
|
761
773
|
[[...obj.keys()], [...obj.values()]],
|
|
762
774
|
]);
|
|
763
|
-
$mol_vary.
|
|
775
|
+
$mol_vary.type((vals = []) => new Set(vals), obj => [
|
|
764
776
|
['vals'],
|
|
765
777
|
[[...obj.values()]],
|
|
766
778
|
]);
|
package/node.test.js
CHANGED
|
@@ -75,7 +75,10 @@ var $;
|
|
|
75
75
|
var $;
|
|
76
76
|
(function ($) {
|
|
77
77
|
function $mol_hash_string(str, seed = 0) {
|
|
78
|
-
|
|
78
|
+
let nums = new Array(str.length);
|
|
79
|
+
for (let i = 0; i < str.length; ++i)
|
|
80
|
+
nums[i] = str.charCodeAt(i);
|
|
81
|
+
return $mol_hash_numbers(nums);
|
|
79
82
|
}
|
|
80
83
|
$.$mol_hash_string = $mol_hash_string;
|
|
81
84
|
})($ || ($ = {}));
|
|
@@ -216,6 +219,14 @@ var $;
|
|
|
216
219
|
}
|
|
217
220
|
}
|
|
218
221
|
class $mol_vary extends DataView {
|
|
222
|
+
static buffer = new Uint8Array(4096);
|
|
223
|
+
static buffer_view = new this(this.buffer.buffer);
|
|
224
|
+
static allocate(size) {
|
|
225
|
+
if (this.buffer.byteLength > size)
|
|
226
|
+
return;
|
|
227
|
+
this.buffer = new Uint8Array(Math.ceil(size / 4096) * 4096);
|
|
228
|
+
this.buffer_view = new this(this.buffer.buffer);
|
|
229
|
+
}
|
|
219
230
|
static pack(data) {
|
|
220
231
|
const leaned = new WeakMap();
|
|
221
232
|
const lean = (val) => {
|
|
@@ -257,7 +268,7 @@ var $;
|
|
|
257
268
|
res = $mol_hash_numbers(val.map(hash), $mol_vary_tip.list);
|
|
258
269
|
else {
|
|
259
270
|
const [keys, vals] = lean(val);
|
|
260
|
-
res = $mol_hash_numbers(
|
|
271
|
+
res = $mol_hash_numbers(vals.map(hash), hash(keys));
|
|
261
272
|
}
|
|
262
273
|
hashes.set(val, res);
|
|
263
274
|
return res;
|
|
@@ -345,8 +356,9 @@ var $;
|
|
|
345
356
|
$mol_fail(new Error(`Unsupported type`));
|
|
346
357
|
};
|
|
347
358
|
calc(data);
|
|
348
|
-
|
|
349
|
-
const
|
|
359
|
+
this.allocate(size);
|
|
360
|
+
const buf = this.buffer;
|
|
361
|
+
const pack = this.buffer_view;
|
|
350
362
|
const embedded = new Set();
|
|
351
363
|
let pos = 0;
|
|
352
364
|
const dump = (val) => {
|
|
@@ -468,7 +480,7 @@ var $;
|
|
|
468
480
|
$mol_fail(new Error(`Unsupported type`));
|
|
469
481
|
};
|
|
470
482
|
dump(data);
|
|
471
|
-
return buf;
|
|
483
|
+
return buf.slice(0, size);
|
|
472
484
|
}
|
|
473
485
|
static take(buf) {
|
|
474
486
|
const pack = new $mol_vary(buf.buffer, buf.byteOffset, buf.byteLength);
|
|
@@ -737,7 +749,7 @@ var $;
|
|
|
737
749
|
}
|
|
738
750
|
static leanes = new Map();
|
|
739
751
|
static riches = new Map();
|
|
740
|
-
static
|
|
752
|
+
static type(rich, lean) {
|
|
741
753
|
const obj = rich();
|
|
742
754
|
const proto = Reflect.getPrototypeOf(obj);
|
|
743
755
|
const [keys, vals] = lean(obj);
|
|
@@ -747,11 +759,11 @@ var $;
|
|
|
747
759
|
}
|
|
748
760
|
}
|
|
749
761
|
$.$mol_vary = $mol_vary;
|
|
750
|
-
$mol_vary.
|
|
762
|
+
$mol_vary.type((keys = [], vals = []) => new Map(keys.map((k, i) => [k, vals[i]])), obj => [
|
|
751
763
|
['keys', 'vals'],
|
|
752
764
|
[[...obj.keys()], [...obj.values()]],
|
|
753
765
|
]);
|
|
754
|
-
$mol_vary.
|
|
766
|
+
$mol_vary.type((vals = []) => new Set(vals), obj => [
|
|
755
767
|
['vals'],
|
|
756
768
|
[[...obj.values()]],
|
|
757
769
|
]);
|
|
@@ -5039,7 +5051,7 @@ var $;
|
|
|
5039
5051
|
return [this.a, this.b].values();
|
|
5040
5052
|
}
|
|
5041
5053
|
}
|
|
5042
|
-
$mol_vary.
|
|
5054
|
+
$mol_vary.type((a = 0, b = 0) => new Foo(a, b), foo => [
|
|
5043
5055
|
['a', 'b'],
|
|
5044
5056
|
[foo.a, foo.b],
|
|
5045
5057
|
]);
|