@subsquid/evm-codec 0.3.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/codec.d.ts +57 -12
- package/lib/codec.d.ts.map +1 -1
- package/lib/codec.js.map +1 -1
- package/lib/codecs/array.d.ts +1 -3
- package/lib/codecs/array.d.ts.map +1 -1
- package/lib/codecs/array.js +13 -9
- package/lib/codecs/array.js.map +1 -1
- package/lib/codecs/primitives.d.ts +2 -17
- package/lib/codecs/primitives.d.ts.map +1 -1
- package/lib/codecs/primitives.js +46 -152
- package/lib/codecs/primitives.js.map +1 -1
- package/lib/codecs/struct.d.ts +16 -9
- package/lib/codecs/struct.d.ts.map +1 -1
- package/lib/codecs/struct.js +53 -40
- package/lib/codecs/struct.js.map +1 -1
- package/lib/dsl.d.ts +11 -0
- package/lib/dsl.d.ts.map +1 -0
- package/lib/dsl.js +33 -0
- package/lib/dsl.js.map +1 -0
- package/lib/index.d.ts +7 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +7 -6
- package/lib/index.js.map +1 -1
- package/lib/sink/bounds.d.ts +21 -0
- package/lib/sink/bounds.d.ts.map +1 -0
- package/lib/sink/bounds.js +24 -0
- package/lib/sink/bounds.js.map +1 -0
- package/lib/sink/bytes.d.ts +41 -0
- package/lib/sink/bytes.d.ts.map +1 -0
- package/lib/sink/bytes.js +261 -0
- package/lib/sink/bytes.js.map +1 -0
- package/lib/sink/hex.d.ts +33 -0
- package/lib/sink/hex.d.ts.map +1 -0
- package/lib/sink/hex.js +289 -0
- package/lib/sink/hex.js.map +1 -0
- package/lib/{src.d.ts → src/bytes.d.ts} +7 -5
- package/lib/src/bytes.d.ts.map +1 -0
- package/lib/src/bytes.js +161 -0
- package/lib/src/bytes.js.map +1 -0
- package/lib/src/hex.d.ts +33 -0
- package/lib/src/hex.d.ts.map +1 -0
- package/lib/src/hex.js +164 -0
- package/lib/src/hex.js.map +1 -0
- package/lib/util.d.ts +6 -0
- package/lib/util.d.ts.map +1 -0
- package/lib/util.js +20 -0
- package/lib/util.js.map +1 -0
- package/package.json +6 -8
- package/src/codec.ts +65 -19
- package/src/codecs/array.test.ts +87 -0
- package/src/codecs/array.ts +6 -11
- package/src/codecs/primitives.test.ts +27 -0
- package/src/codecs/primitives.ts +87 -208
- package/src/codecs/struct.test.ts +69 -0
- package/src/codecs/struct.ts +80 -61
- package/src/dsl.ts +16 -0
- package/src/index.ts +7 -4
- package/src/sink/bounds.ts +26 -0
- package/src/sink/bytes.test.ts +92 -0
- package/src/sink/bytes.ts +290 -0
- package/src/sink/hex.ts +311 -0
- package/src/src/bytes.test.ts +114 -0
- package/src/src/bytes.ts +187 -0
- package/src/src/hex.ts +191 -0
- package/src/util.ts +19 -0
- package/lib/safeToNumber.d.ts +0 -2
- package/lib/safeToNumber.d.ts.map +0 -1
- package/lib/safeToNumber.js +0 -11
- package/lib/safeToNumber.js.map +0 -1
- package/lib/sink.d.ts +0 -43
- package/lib/sink.d.ts.map +0 -1
- package/lib/sink.js +0 -215
- package/lib/sink.js.map +0 -1
- package/lib/src.d.ts.map +0 -1
- package/lib/src.js +0 -141
- package/lib/src.js.map +0 -1
- package/src/safeToNumber.ts +0 -6
- package/src/sink.ts +0 -241
- package/src/src.ts +0 -158
package/lib/codecs/struct.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.StructCodec = void 0;
|
|
4
|
+
const util_1 = require("../util");
|
|
4
5
|
function slotsCount(codecs) {
|
|
5
6
|
let count = 0;
|
|
6
7
|
for (const codec of codecs) {
|
|
@@ -9,57 +10,69 @@ function slotsCount(codecs) {
|
|
|
9
10
|
return count;
|
|
10
11
|
}
|
|
11
12
|
class StructCodec {
|
|
13
|
+
baseType = 'struct';
|
|
14
|
+
isDynamic;
|
|
15
|
+
slotsCount;
|
|
16
|
+
childrenSlotsCount;
|
|
17
|
+
components;
|
|
18
|
+
encodeInline;
|
|
19
|
+
decodeInline;
|
|
20
|
+
encode;
|
|
21
|
+
decode;
|
|
12
22
|
constructor(components) {
|
|
13
|
-
this.baseType = 'struct';
|
|
14
23
|
this.components = components;
|
|
15
|
-
const
|
|
24
|
+
const entries = Object.entries(components);
|
|
25
|
+
const codecs = entries.map(([, c]) => c);
|
|
16
26
|
this.isDynamic = codecs.some((codec) => codec.isDynamic);
|
|
17
27
|
this.childrenSlotsCount = slotsCount(codecs);
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
28
|
+
this.slotsCount = this.isDynamic ? 1 : this.childrenSlotsCount;
|
|
29
|
+
this.encodeInline = this.createEncode(entries, false);
|
|
30
|
+
this.decodeInline = this.createDecode(entries, false);
|
|
31
|
+
this.encode = this.isDynamic ? this.createEncode(entries, true) : this.encodeInline;
|
|
32
|
+
this.decode = this.isDynamic ? this.createDecode(entries, true) : this.decodeInline;
|
|
24
33
|
}
|
|
25
|
-
encode
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
34
|
+
// JIT-generates a straight-line encode function. Each child's encode is bound once
|
|
35
|
+
// at construction time to avoid property lookups on the hot path. When wrap=true
|
|
36
|
+
// and the struct is dynamic, openTail/closeTail bracket the field writes so the
|
|
37
|
+
// function can be used as a nested ABI field.
|
|
38
|
+
createEncode(entries, wrap) {
|
|
39
|
+
const closureNames = [];
|
|
40
|
+
const closureValues = [];
|
|
41
|
+
let body = '';
|
|
42
|
+
if (wrap && this.isDynamic) {
|
|
43
|
+
body += `sink.openTail(${this.childrenSlotsCount});`;
|
|
29
44
|
}
|
|
30
|
-
for (let i
|
|
31
|
-
|
|
32
|
-
|
|
45
|
+
for (let i = 0; i < entries.length; i++) {
|
|
46
|
+
const [key, child] = entries[i];
|
|
47
|
+
const name = `__e${i}`;
|
|
48
|
+
closureNames.push(name);
|
|
49
|
+
closureValues.push(child.encode.bind(child));
|
|
50
|
+
body += `${name}(sink, val${(0, util_1.propAccess)(key)});`;
|
|
33
51
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
sink.newStaticDataArea(this.childrenSlotsCount);
|
|
37
|
-
for (let i in this.components) {
|
|
38
|
-
let prop = this.components[i];
|
|
39
|
-
prop.encode(sink, val[i]);
|
|
52
|
+
if (wrap && this.isDynamic) {
|
|
53
|
+
body += 'sink.closeTail();';
|
|
40
54
|
}
|
|
41
|
-
sink
|
|
55
|
+
const fn = new Function(...closureNames, 'sink', 'val', body);
|
|
56
|
+
return fn.bind(null, ...closureValues);
|
|
42
57
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
58
|
+
createDecode(entries, wrap) {
|
|
59
|
+
const closureNames = [];
|
|
60
|
+
const closureValues = [];
|
|
61
|
+
let body = '';
|
|
62
|
+
if (wrap && this.isDynamic) {
|
|
63
|
+
body += 'src = src.slice(src.u32());';
|
|
46
64
|
}
|
|
47
|
-
|
|
48
|
-
for (let i
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
decodeDynamic(src) {
|
|
55
|
-
let result = {};
|
|
56
|
-
const offset = src.u32();
|
|
57
|
-
const tmpSrc = src.slice(offset);
|
|
58
|
-
for (let i in this.components) {
|
|
59
|
-
let prop = this.components[i];
|
|
60
|
-
result[i] = prop.decode(tmpSrc);
|
|
65
|
+
const fields = [];
|
|
66
|
+
for (let i = 0; i < entries.length; i++) {
|
|
67
|
+
const [key, child] = entries[i];
|
|
68
|
+
const name = `__d${i}`;
|
|
69
|
+
closureNames.push(name);
|
|
70
|
+
closureValues.push(child.decode.bind(child));
|
|
71
|
+
fields.push(`${(0, util_1.propName)(key)}:${name}(src)`);
|
|
61
72
|
}
|
|
62
|
-
return
|
|
73
|
+
body += `return {${fields.join(',')}};`;
|
|
74
|
+
const fn = new Function(...closureNames, 'src', body);
|
|
75
|
+
return fn.bind(null, ...closureValues);
|
|
63
76
|
}
|
|
64
77
|
}
|
|
65
78
|
exports.StructCodec = StructCodec;
|
package/lib/codecs/struct.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"struct.js","sourceRoot":"","sources":["../../src/codecs/struct.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"struct.js","sourceRoot":"","sources":["../../src/codecs/struct.ts"],"names":[],"mappings":"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"}
|
package/lib/dsl.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Codec, Struct } from './codec';
|
|
2
|
+
import { ArrayCodec, FixedSizeArrayCodec } from './codecs/array';
|
|
3
|
+
import { StructCodec } from './codecs/struct';
|
|
4
|
+
export * from './codecs/primitives';
|
|
5
|
+
export { ArrayCodec, FixedSizeArrayCodec } from './codecs/array';
|
|
6
|
+
export { StructCodec, type DecodedStruct, type EncodedStruct } from './codecs/struct';
|
|
7
|
+
export declare const fixedSizeArray: <TIn, TOut>(item: Codec<TIn, TOut>, size: number) => FixedSizeArrayCodec<TIn, TOut>;
|
|
8
|
+
export declare const array: <TIn, TOut>(item: Codec<TIn, TOut>) => ArrayCodec<TIn, TOut>;
|
|
9
|
+
export declare const struct: <const T extends Struct>(components: T) => StructCodec<T>;
|
|
10
|
+
export declare const tuple: <const T extends Struct>(components: T) => StructCodec<T>;
|
|
11
|
+
//# sourceMappingURL=dsl.d.ts.map
|
package/lib/dsl.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dsl.d.ts","sourceRoot":"","sources":["../src/dsl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,KAAK,EAAE,MAAM,EAAC,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAC,UAAU,EAAE,mBAAmB,EAAC,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAA;AAE3C,cAAc,qBAAqB,CAAA;AACnC,OAAO,EAAC,UAAU,EAAE,mBAAmB,EAAC,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAC,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAC,MAAM,iBAAiB,CAAA;AAEnF,eAAO,MAAM,cAAc,GAAI,GAAG,EAAE,IAAI,QAAQ,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,MAAM,KAAG,mBAAmB,CAAC,GAAG,EAAE,IAAI,CACvE,CAAA;AAEvC,eAAO,MAAM,KAAK,GAAI,GAAG,EAAE,IAAI,QAAQ,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAyB,CAAA;AAEvG,eAAO,MAAM,MAAM,SAAU,CAAC,SAAS,MAAM,cAAc,CAAC,KAAG,WAAW,CAAC,CAAC,CAAmC,CAAA;AAE/G,eAAO,MAAM,KAAK,SAFW,CAAC,SAAS,MAAM,cAAc,CAAC,KAAG,WAAW,CAAC,CAAC,CAEjD,CAAA"}
|
package/lib/dsl.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.tuple = exports.struct = exports.array = exports.fixedSizeArray = exports.StructCodec = exports.FixedSizeArrayCodec = exports.ArrayCodec = void 0;
|
|
18
|
+
const array_1 = require("./codecs/array");
|
|
19
|
+
const struct_1 = require("./codecs/struct");
|
|
20
|
+
__exportStar(require("./codecs/primitives"), exports);
|
|
21
|
+
var array_2 = require("./codecs/array");
|
|
22
|
+
Object.defineProperty(exports, "ArrayCodec", { enumerable: true, get: function () { return array_2.ArrayCodec; } });
|
|
23
|
+
Object.defineProperty(exports, "FixedSizeArrayCodec", { enumerable: true, get: function () { return array_2.FixedSizeArrayCodec; } });
|
|
24
|
+
var struct_2 = require("./codecs/struct");
|
|
25
|
+
Object.defineProperty(exports, "StructCodec", { enumerable: true, get: function () { return struct_2.StructCodec; } });
|
|
26
|
+
const fixedSizeArray = (item, size) => new array_1.FixedSizeArrayCodec(item, size);
|
|
27
|
+
exports.fixedSizeArray = fixedSizeArray;
|
|
28
|
+
const array = (item) => new array_1.ArrayCodec(item);
|
|
29
|
+
exports.array = array;
|
|
30
|
+
const struct = (components) => new struct_1.StructCodec(components);
|
|
31
|
+
exports.struct = struct;
|
|
32
|
+
exports.tuple = exports.struct;
|
|
33
|
+
//# sourceMappingURL=dsl.js.map
|
package/lib/dsl.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dsl.js","sourceRoot":"","sources":["../src/dsl.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,0CAA8D;AAC9D,4CAA2C;AAE3C,sDAAmC;AACnC,wCAA8D;AAAtD,mGAAA,UAAU,OAAA;AAAE,4GAAA,mBAAmB,OAAA;AACvC,0CAAmF;AAA3E,qGAAA,WAAW,OAAA;AAEZ,MAAM,cAAc,GAAG,CAAY,IAAsB,EAAE,IAAY,EAAkC,EAAE,CAC9G,IAAI,2BAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AAD1B,QAAA,cAAc,kBACY;AAEhC,MAAM,KAAK,GAAG,CAAY,IAAsB,EAAyB,EAAE,CAAC,IAAI,kBAAU,CAAC,IAAI,CAAC,CAAA;AAA1F,QAAA,KAAK,SAAqF;AAEhG,MAAM,MAAM,GAAG,CAAyB,UAAa,EAAkB,EAAE,CAAC,IAAI,oBAAW,CAAI,UAAU,CAAC,CAAA;AAAlG,QAAA,MAAM,UAA4F;AAElG,QAAA,KAAK,GAAG,cAAM,CAAA"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export * from './
|
|
1
|
+
export * from './codec';
|
|
2
|
+
export * from './dsl';
|
|
3
|
+
export * from './sink/bytes';
|
|
4
|
+
export * from './sink/hex';
|
|
5
|
+
export * from './src/bytes';
|
|
6
|
+
export * from './src/hex';
|
|
7
|
+
export * from './util';
|
|
5
8
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA;AACrB,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA"}
|
package/lib/index.js
CHANGED
|
@@ -14,10 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
__exportStar(require("./
|
|
17
|
+
__exportStar(require("./codec"), exports);
|
|
18
|
+
__exportStar(require("./dsl"), exports);
|
|
19
|
+
__exportStar(require("./sink/bytes"), exports);
|
|
20
|
+
__exportStar(require("./sink/hex"), exports);
|
|
21
|
+
__exportStar(require("./src/bytes"), exports);
|
|
22
|
+
__exportStar(require("./src/hex"), exports);
|
|
23
|
+
__exportStar(require("./util"), exports);
|
|
23
24
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB;AACvB,wCAAqB;AACrB,+CAA4B;AAC5B,6CAA0B;AAC1B,8CAA2B;AAC3B,4CAAyB;AACzB,yCAAsB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare const TEXT_ENCODER: TextEncoder;
|
|
2
|
+
export declare const U256_BASE: bigint;
|
|
3
|
+
export declare const U8_MAX = 255;
|
|
4
|
+
export declare const U16_MAX = 65535;
|
|
5
|
+
export declare const U32_MAX = 4294967295;
|
|
6
|
+
export declare const I8_MIN = -128;
|
|
7
|
+
export declare const I8_MAX = 127;
|
|
8
|
+
export declare const I16_MIN = -32768;
|
|
9
|
+
export declare const I16_MAX = 32767;
|
|
10
|
+
export declare const I32_MIN = -2147483648;
|
|
11
|
+
export declare const I32_MAX = 2147483647;
|
|
12
|
+
export declare const U64_MAX_BI = 18446744073709551615n;
|
|
13
|
+
export declare const I64_MIN_BI = -9223372036854775808n;
|
|
14
|
+
export declare const I64_MAX_BI = 9223372036854775806n;
|
|
15
|
+
export declare const U128_MAX_BI = 340282366920938463463374607431768211455n;
|
|
16
|
+
export declare const I128_MIN_BI = -170141183460469231731687303715884105728n;
|
|
17
|
+
export declare const I128_MAX_BI = 170141183460469231731687303715884105727n;
|
|
18
|
+
export declare const U256_MAX_BI = 115792089237316195423570985008687907853269984665640564039457584007913129639935n;
|
|
19
|
+
export declare const I256_MIN_BI = -57896044618658097711785492504343953926634992332820282019728792003956564819968n;
|
|
20
|
+
export declare const I256_MAX_BI = 57896044618658097711785492504343953926634992332820282019728792003956564819967n;
|
|
21
|
+
//# sourceMappingURL=bounds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bounds.d.ts","sourceRoot":"","sources":["../../src/sink/bounds.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,aAAoB,CAAA;AAE7C,eAAO,MAAM,SAAS,QAAa,CAAA;AAEnC,eAAO,MAAM,MAAM,MAAO,CAAA;AAC1B,eAAO,MAAM,OAAO,QAAS,CAAA;AAC7B,eAAO,MAAM,OAAO,aAAa,CAAA;AAEjC,eAAO,MAAM,MAAM,OAAQ,CAAA;AAC3B,eAAO,MAAM,MAAM,MAAO,CAAA;AAC1B,eAAO,MAAM,OAAO,SAAU,CAAA;AAC9B,eAAO,MAAM,OAAO,QAAS,CAAA;AAC7B,eAAO,MAAM,OAAO,cAAc,CAAA;AAClC,eAAO,MAAM,OAAO,aAAa,CAAA;AAEjC,eAAO,MAAM,UAAU,wBAAsB,CAAA;AAC7C,eAAO,MAAM,UAAU,wBAAuB,CAAA;AAC9C,eAAO,MAAM,UAAU,uBAAsB,CAAA;AAE7C,eAAO,MAAM,WAAW,2CAAsC,CAAA;AAC9D,eAAO,MAAM,WAAW,4CAAuC,CAAA;AAC/D,eAAO,MAAM,WAAW,2CAAsC,CAAA;AAE9D,eAAO,MAAM,WAAW,kFAAsE,CAAA;AAC9F,eAAO,MAAM,WAAW,kFAAuE,CAAA;AAC/F,eAAO,MAAM,WAAW,iFAAsE,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.I256_MAX_BI = exports.I256_MIN_BI = exports.U256_MAX_BI = exports.I128_MAX_BI = exports.I128_MIN_BI = exports.U128_MAX_BI = exports.I64_MAX_BI = exports.I64_MIN_BI = exports.U64_MAX_BI = exports.I32_MAX = exports.I32_MIN = exports.I16_MAX = exports.I16_MIN = exports.I8_MAX = exports.I8_MIN = exports.U32_MAX = exports.U16_MAX = exports.U8_MAX = exports.U256_BASE = exports.TEXT_ENCODER = void 0;
|
|
4
|
+
exports.TEXT_ENCODER = new TextEncoder();
|
|
5
|
+
exports.U256_BASE = 1n << 256n;
|
|
6
|
+
exports.U8_MAX = 0xff;
|
|
7
|
+
exports.U16_MAX = 0xffff;
|
|
8
|
+
exports.U32_MAX = 0xffffffff;
|
|
9
|
+
exports.I8_MIN = -0x80;
|
|
10
|
+
exports.I8_MAX = 0x7f;
|
|
11
|
+
exports.I16_MIN = -0x8000;
|
|
12
|
+
exports.I16_MAX = 0x7fff;
|
|
13
|
+
exports.I32_MIN = -0x80000000;
|
|
14
|
+
exports.I32_MAX = 0x7fffffff;
|
|
15
|
+
exports.U64_MAX_BI = 0xffffffffffffffffn;
|
|
16
|
+
exports.I64_MIN_BI = -0x8000000000000000n;
|
|
17
|
+
exports.I64_MAX_BI = 0x7ffffffffffffffen;
|
|
18
|
+
exports.U128_MAX_BI = 0xffffffffffffffffffffffffffffffffn;
|
|
19
|
+
exports.I128_MIN_BI = -0x80000000000000000000000000000000n;
|
|
20
|
+
exports.I128_MAX_BI = 0x7fffffffffffffffffffffffffffffffn;
|
|
21
|
+
exports.U256_MAX_BI = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn;
|
|
22
|
+
exports.I256_MIN_BI = -0x8000000000000000000000000000000000000000000000000000000000000000n;
|
|
23
|
+
exports.I256_MAX_BI = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn;
|
|
24
|
+
//# sourceMappingURL=bounds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bounds.js","sourceRoot":"","sources":["../../src/sink/bounds.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,IAAI,WAAW,EAAE,CAAA;AAEhC,QAAA,SAAS,GAAG,EAAE,IAAI,IAAI,CAAA;AAEtB,QAAA,MAAM,GAAG,IAAI,CAAA;AACb,QAAA,OAAO,GAAG,MAAM,CAAA;AAChB,QAAA,OAAO,GAAG,UAAU,CAAA;AAEpB,QAAA,MAAM,GAAG,CAAC,IAAI,CAAA;AACd,QAAA,MAAM,GAAG,IAAI,CAAA;AACb,QAAA,OAAO,GAAG,CAAC,MAAM,CAAA;AACjB,QAAA,OAAO,GAAG,MAAM,CAAA;AAChB,QAAA,OAAO,GAAG,CAAC,UAAU,CAAA;AACrB,QAAA,OAAO,GAAG,UAAU,CAAA;AAEpB,QAAA,UAAU,GAAG,mBAAmB,CAAA;AAChC,QAAA,UAAU,GAAG,CAAC,mBAAmB,CAAA;AACjC,QAAA,UAAU,GAAG,mBAAmB,CAAA;AAEhC,QAAA,WAAW,GAAG,mCAAmC,CAAA;AACjD,QAAA,WAAW,GAAG,CAAC,mCAAmC,CAAA;AAClD,QAAA,WAAW,GAAG,mCAAmC,CAAA;AAEjD,QAAA,WAAW,GAAG,mEAAmE,CAAA;AACjF,QAAA,WAAW,GAAG,CAAC,mEAAmE,CAAA;AAClF,QAAA,WAAW,GAAG,mEAAmE,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type Sink } from '../codec';
|
|
2
|
+
export declare class BytesSink implements Sink {
|
|
3
|
+
#private;
|
|
4
|
+
protected pos: number;
|
|
5
|
+
protected buf: Uint8Array;
|
|
6
|
+
protected view: DataView;
|
|
7
|
+
private stack;
|
|
8
|
+
constructor(fields: number, capacity?: number);
|
|
9
|
+
result(): Uint8Array;
|
|
10
|
+
toString(): string;
|
|
11
|
+
reserve(additional: number): void;
|
|
12
|
+
written(): Uint8Array;
|
|
13
|
+
mark(): number;
|
|
14
|
+
raw(val: Uint8Array | string): void;
|
|
15
|
+
utf8(val: string): void;
|
|
16
|
+
padFrom(pos: number): void;
|
|
17
|
+
size(): number;
|
|
18
|
+
protected allocate(cap: number): void;
|
|
19
|
+
u8(val: number): void;
|
|
20
|
+
i8(val: number): void;
|
|
21
|
+
u16(val: number): void;
|
|
22
|
+
i16(val: number): void;
|
|
23
|
+
u32(val: number): void;
|
|
24
|
+
i32(val: number): void;
|
|
25
|
+
u64(val: bigint): void;
|
|
26
|
+
i64(val: bigint): void;
|
|
27
|
+
private writeU64;
|
|
28
|
+
u128(val: bigint): void;
|
|
29
|
+
i128(val: bigint): void;
|
|
30
|
+
u256(val: bigint): void;
|
|
31
|
+
i256(val: bigint): void;
|
|
32
|
+
bytes(val: Uint8Array | string): void;
|
|
33
|
+
staticBytes(len: number, val: Uint8Array | string): void;
|
|
34
|
+
address(val: string): void;
|
|
35
|
+
string(val: string): void;
|
|
36
|
+
bool(val: boolean): void;
|
|
37
|
+
openTail(slotsCount?: number): void;
|
|
38
|
+
openArray(count: number): void;
|
|
39
|
+
closeTail(): void;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=bytes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bytes.d.ts","sourceRoot":"","sources":["../../src/sink/bytes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,IAAI,EAAC,MAAM,UAAU,CAAA;AAc7C,qBAAa,SAAU,YAAW,IAAI;;IAClC,SAAS,CAAC,GAAG,SAAI;IACjB,SAAS,CAAC,GAAG,EAAE,UAAU,CAAA;IACzB,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAA;IACxB,OAAO,CAAC,KAAK,CAA+E;gBAEhF,MAAM,EAAE,MAAM,EAAE,QAAQ,SAAO;IAW3C,MAAM,IAAI,UAAU;IAKpB,QAAQ;IAKR,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAMjC,OAAO,IAAI,UAAU;IAIrB,IAAI,IAAI,MAAM;IAId,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI;IAOnC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIvB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAS1B,IAAI;IAIJ,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAQrC,EAAE,CAAC,GAAG,EAAE,MAAM;IAQd,EAAE,CAAC,GAAG,EAAE,MAAM;IAKd,GAAG,CAAC,GAAG,EAAE,MAAM;IAQf,GAAG,CAAC,GAAG,EAAE,MAAM;IAKf,GAAG,CAAC,GAAG,EAAE,MAAM;IAaf,GAAG,CAAC,GAAG,EAAE,MAAM;IAKf,GAAG,CAAC,GAAG,EAAE,MAAM;IAQf,GAAG,CAAC,GAAG,EAAE,MAAM;IAKf,OAAO,CAAC,QAAQ;IAKhB,IAAI,CAAC,GAAG,EAAE,MAAM;IAQhB,IAAI,CAAC,GAAG,EAAE,MAAM;IAUhB,IAAI,CAAC,GAAG,EAAE,MAAM;IAOhB,IAAI,CAAC,GAAG,EAAE,MAAM;IAYhB,KAAK,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM;IAW9B,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM;IAoBjD,OAAO,CAAC,GAAG,EAAE,MAAM;IAanB,MAAM,CAAC,GAAG,EAAE,MAAM;IAIlB,IAAI,CAAC,GAAG,EAAE,OAAO;IAQjB,QAAQ,CAAC,UAAU,SAAI;IASvB,SAAS,CAAC,KAAK,EAAE,MAAM;IA8BvB,SAAS;CAMZ"}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.BytesSink = void 0;
|
|
7
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
8
|
+
const util_internal_hex_1 = require("@subsquid/util-internal-hex");
|
|
9
|
+
const codec_1 = require("../codec");
|
|
10
|
+
const bounds_1 = require("./bounds");
|
|
11
|
+
const U64_MASK = 0xffffffffffffffffn;
|
|
12
|
+
const U128_MASK = (1n << 128n) - 1n;
|
|
13
|
+
class BytesSink {
|
|
14
|
+
pos = 0;
|
|
15
|
+
buf;
|
|
16
|
+
view;
|
|
17
|
+
stack = [];
|
|
18
|
+
constructor(fields, capacity = 1280) {
|
|
19
|
+
this.stack.push({
|
|
20
|
+
start: 0,
|
|
21
|
+
jumpBackPtr: 0,
|
|
22
|
+
size: fields * codec_1.WORD_SIZE,
|
|
23
|
+
countWord: false,
|
|
24
|
+
});
|
|
25
|
+
this.buf = new Uint8Array(capacity);
|
|
26
|
+
this.view = new DataView(this.buf.buffer, this.buf.byteOffset, this.buf.byteLength);
|
|
27
|
+
}
|
|
28
|
+
result() {
|
|
29
|
+
(0, node_assert_1.default)(this.stack.length === 1, 'Cannot get result during dynamic encoding');
|
|
30
|
+
return this.buf.subarray(0, this.size());
|
|
31
|
+
}
|
|
32
|
+
toString() {
|
|
33
|
+
const size = this.size();
|
|
34
|
+
return (0, util_internal_hex_1.toHex)(this.buf, 0, size);
|
|
35
|
+
}
|
|
36
|
+
reserve(additional) {
|
|
37
|
+
if (this.buf.length - this.pos < additional) {
|
|
38
|
+
this.allocate(this.pos + additional);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
written() {
|
|
42
|
+
return this.buf.subarray(0, this.pos);
|
|
43
|
+
}
|
|
44
|
+
mark() {
|
|
45
|
+
return this.pos;
|
|
46
|
+
}
|
|
47
|
+
raw(val) {
|
|
48
|
+
const bytes = typeof val === 'string' ? this.#stringToBytes(val) : val;
|
|
49
|
+
this.reserve(bytes.length);
|
|
50
|
+
this.buf.set(bytes, this.pos);
|
|
51
|
+
this.pos += bytes.length;
|
|
52
|
+
}
|
|
53
|
+
utf8(val) {
|
|
54
|
+
this.raw(bounds_1.TEXT_ENCODER.encode(val));
|
|
55
|
+
}
|
|
56
|
+
padFrom(pos) {
|
|
57
|
+
const rem = (this.pos - pos) % codec_1.WORD_SIZE;
|
|
58
|
+
if (rem === 0)
|
|
59
|
+
return;
|
|
60
|
+
const pad = codec_1.WORD_SIZE - rem;
|
|
61
|
+
this.reserve(pad);
|
|
62
|
+
this.buf.fill(0, this.pos, this.pos + pad);
|
|
63
|
+
this.pos += pad;
|
|
64
|
+
}
|
|
65
|
+
size() {
|
|
66
|
+
return this.stack[this.stack.length - 1].size;
|
|
67
|
+
}
|
|
68
|
+
allocate(cap) {
|
|
69
|
+
cap = Math.max(cap, this.buf.length * 2);
|
|
70
|
+
const buf = new Uint8Array(cap);
|
|
71
|
+
buf.set(this.buf);
|
|
72
|
+
this.buf = buf;
|
|
73
|
+
this.view = new DataView(this.buf.buffer, this.buf.byteOffset, this.buf.byteLength);
|
|
74
|
+
}
|
|
75
|
+
u8(val) {
|
|
76
|
+
if (val < 0 || val > bounds_1.U8_MAX)
|
|
77
|
+
this.#oob(val, 'uint8', 0, bounds_1.U8_MAX);
|
|
78
|
+
this.reserve(codec_1.WORD_SIZE);
|
|
79
|
+
this.pos += codec_1.WORD_SIZE - 1;
|
|
80
|
+
this.view.setUint8(this.pos, val);
|
|
81
|
+
this.pos += 1;
|
|
82
|
+
}
|
|
83
|
+
i8(val) {
|
|
84
|
+
if (val < bounds_1.I8_MIN || val > bounds_1.I8_MAX)
|
|
85
|
+
this.#oob(val, 'int8', bounds_1.I8_MIN, bounds_1.I8_MAX);
|
|
86
|
+
this.#i256(BigInt(val));
|
|
87
|
+
}
|
|
88
|
+
u16(val) {
|
|
89
|
+
if (val < 0 || val > bounds_1.U16_MAX)
|
|
90
|
+
this.#oob(val, 'uint16', 0, bounds_1.U16_MAX);
|
|
91
|
+
this.reserve(codec_1.WORD_SIZE);
|
|
92
|
+
this.pos += codec_1.WORD_SIZE - 2;
|
|
93
|
+
this.view.setUint16(this.pos, val, false);
|
|
94
|
+
this.pos += 2;
|
|
95
|
+
}
|
|
96
|
+
i16(val) {
|
|
97
|
+
if (val < bounds_1.I16_MIN || val > bounds_1.I16_MAX)
|
|
98
|
+
this.#oob(val, 'int16', bounds_1.I16_MIN, bounds_1.I16_MAX);
|
|
99
|
+
this.#i256(BigInt(val));
|
|
100
|
+
}
|
|
101
|
+
u32(val) {
|
|
102
|
+
if (val < 0 || val > bounds_1.U32_MAX)
|
|
103
|
+
this.#oob(val, 'uint32', 0, bounds_1.U32_MAX);
|
|
104
|
+
this.reserve(codec_1.WORD_SIZE);
|
|
105
|
+
this.pos += codec_1.WORD_SIZE - 4;
|
|
106
|
+
this.view.setUint32(this.pos, val, false);
|
|
107
|
+
this.pos += 4;
|
|
108
|
+
}
|
|
109
|
+
#u32Raw(val) {
|
|
110
|
+
this.view.setUint32(this.pos + codec_1.WORD_SIZE - 4, val, false);
|
|
111
|
+
this.pos += codec_1.WORD_SIZE;
|
|
112
|
+
}
|
|
113
|
+
i32(val) {
|
|
114
|
+
if (val < bounds_1.I32_MIN || val > bounds_1.I32_MAX)
|
|
115
|
+
this.#oob(val, 'int32', bounds_1.I32_MIN, bounds_1.I32_MAX);
|
|
116
|
+
this.#i256(BigInt(val));
|
|
117
|
+
}
|
|
118
|
+
u64(val) {
|
|
119
|
+
if (val < 0n || val > bounds_1.U64_MAX_BI)
|
|
120
|
+
this.#oob(val, 'uint64', 0n, bounds_1.U64_MAX_BI);
|
|
121
|
+
this.reserve(codec_1.WORD_SIZE);
|
|
122
|
+
this.pos += codec_1.WORD_SIZE - 8;
|
|
123
|
+
this.view.setBigUint64(this.pos, val, false);
|
|
124
|
+
this.pos += 8;
|
|
125
|
+
}
|
|
126
|
+
i64(val) {
|
|
127
|
+
if (val < bounds_1.I64_MIN_BI || val > bounds_1.I64_MAX_BI)
|
|
128
|
+
this.#oob(val, 'int64', bounds_1.I64_MIN_BI, bounds_1.I64_MAX_BI);
|
|
129
|
+
this.#i256(val);
|
|
130
|
+
}
|
|
131
|
+
writeU64(val) {
|
|
132
|
+
this.view.setBigUint64(this.pos, val, false);
|
|
133
|
+
this.pos += 8;
|
|
134
|
+
}
|
|
135
|
+
u128(val) {
|
|
136
|
+
if (val < 0n || val > bounds_1.U128_MAX_BI)
|
|
137
|
+
this.#oob(val, 'uint128', 0n, bounds_1.U128_MAX_BI);
|
|
138
|
+
this.reserve(codec_1.WORD_SIZE);
|
|
139
|
+
this.pos += codec_1.WORD_SIZE - 16;
|
|
140
|
+
this.writeU64(val >> 64n);
|
|
141
|
+
this.writeU64(val & U64_MASK);
|
|
142
|
+
}
|
|
143
|
+
i128(val) {
|
|
144
|
+
if (val < bounds_1.I128_MIN_BI || val > bounds_1.I128_MAX_BI)
|
|
145
|
+
this.#oob(val, 'int128', bounds_1.I128_MIN_BI, bounds_1.I128_MAX_BI);
|
|
146
|
+
this.#i256(val);
|
|
147
|
+
}
|
|
148
|
+
#u128Raw(val) {
|
|
149
|
+
this.writeU64(val >> 64n);
|
|
150
|
+
this.writeU64(val & U64_MASK);
|
|
151
|
+
}
|
|
152
|
+
u256(val) {
|
|
153
|
+
if (val < 0n || val > bounds_1.U256_MAX_BI)
|
|
154
|
+
this.#oob(val, 'uint256', 0n, bounds_1.U256_MAX_BI);
|
|
155
|
+
this.reserve(codec_1.WORD_SIZE);
|
|
156
|
+
this.#u128Raw(val >> 128n);
|
|
157
|
+
this.#u128Raw(val & U128_MASK);
|
|
158
|
+
}
|
|
159
|
+
i256(val) {
|
|
160
|
+
if (val < bounds_1.I256_MIN_BI || val > bounds_1.I256_MAX_BI)
|
|
161
|
+
this.#oob(val, 'int256', bounds_1.I256_MIN_BI, bounds_1.I256_MAX_BI);
|
|
162
|
+
this.#i256(val);
|
|
163
|
+
}
|
|
164
|
+
#i256(val) {
|
|
165
|
+
const uval = val >= 0n ? val : val + bounds_1.U256_BASE;
|
|
166
|
+
this.reserve(codec_1.WORD_SIZE);
|
|
167
|
+
this.#u128Raw(uval >> 128n);
|
|
168
|
+
this.#u128Raw(uval & U128_MASK);
|
|
169
|
+
}
|
|
170
|
+
bytes(val) {
|
|
171
|
+
const bytes = typeof val === 'string' ? this.#stringToBytes(val) : val;
|
|
172
|
+
const size = bytes.length;
|
|
173
|
+
this.u32(size);
|
|
174
|
+
const reservedSize = Math.ceil(size / codec_1.WORD_SIZE) * codec_1.WORD_SIZE;
|
|
175
|
+
this.reserve(reservedSize);
|
|
176
|
+
this.buf.set(bytes, this.pos);
|
|
177
|
+
this.pos += reservedSize;
|
|
178
|
+
this.#increaseCurrentDataAreaSize(reservedSize + codec_1.WORD_SIZE);
|
|
179
|
+
}
|
|
180
|
+
staticBytes(len, val) {
|
|
181
|
+
if (len > 32) {
|
|
182
|
+
throw new Error(`bytes${len} is not a valid type`);
|
|
183
|
+
}
|
|
184
|
+
const bytes = typeof val === 'string' ? this.#stringToBytes(val) : val;
|
|
185
|
+
if (bytes.length > len) {
|
|
186
|
+
throw new Error(`invalid data size for bytes${len}`);
|
|
187
|
+
}
|
|
188
|
+
this.reserve(codec_1.WORD_SIZE);
|
|
189
|
+
this.buf.set(bytes, this.pos);
|
|
190
|
+
this.pos += codec_1.WORD_SIZE;
|
|
191
|
+
}
|
|
192
|
+
#stringToBytes(val) {
|
|
193
|
+
if (!(0, util_internal_hex_1.isHex)(val)) {
|
|
194
|
+
throw new Error(`Expected hex string or Uint8Array, got: ${val}`);
|
|
195
|
+
}
|
|
196
|
+
return (0, util_internal_hex_1.decodeHex)(val);
|
|
197
|
+
}
|
|
198
|
+
address(val) {
|
|
199
|
+
if (val.length === 42 && val.charCodeAt(0) === 0x30 && val.charCodeAt(1) === 0x78) {
|
|
200
|
+
this.reserve(codec_1.WORD_SIZE);
|
|
201
|
+
this.buf.fill(0, this.pos, this.pos + 12);
|
|
202
|
+
const view = Buffer.from(this.buf.buffer, this.buf.byteOffset + this.pos + 12, 20);
|
|
203
|
+
if (view.write(val.slice(2), 'hex') === 20) {
|
|
204
|
+
this.pos += codec_1.WORD_SIZE;
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
this.u256(BigInt(val));
|
|
209
|
+
}
|
|
210
|
+
string(val) {
|
|
211
|
+
this.bytes(bounds_1.TEXT_ENCODER.encode(val));
|
|
212
|
+
}
|
|
213
|
+
bool(val) {
|
|
214
|
+
this.u8(val ? 1 : 0);
|
|
215
|
+
}
|
|
216
|
+
#oob(val, typeName, min, max) {
|
|
217
|
+
throw new Error(`${val} is out of bounds for ${typeName}[${min}, ${max}]`);
|
|
218
|
+
}
|
|
219
|
+
openTail(slotsCount = 0) {
|
|
220
|
+
const offset = this.size();
|
|
221
|
+
this.reserve(codec_1.WORD_SIZE);
|
|
222
|
+
this.#u32Raw(offset);
|
|
223
|
+
const dataAreaStart = this.#currentDataAreaStart();
|
|
224
|
+
this.#pushDataArea(dataAreaStart + offset, slotsCount, false);
|
|
225
|
+
this.pos = dataAreaStart + offset;
|
|
226
|
+
}
|
|
227
|
+
openArray(count) {
|
|
228
|
+
const offset = this.size();
|
|
229
|
+
this.reserve(codec_1.WORD_SIZE);
|
|
230
|
+
this.#u32Raw(offset);
|
|
231
|
+
const dataAreaStart = this.#currentDataAreaStart();
|
|
232
|
+
this.#pushDataArea(dataAreaStart + offset + codec_1.WORD_SIZE, count, true);
|
|
233
|
+
this.pos = dataAreaStart + offset;
|
|
234
|
+
this.reserve(codec_1.WORD_SIZE);
|
|
235
|
+
this.#u32Raw(count);
|
|
236
|
+
}
|
|
237
|
+
#currentDataAreaStart() {
|
|
238
|
+
return this.stack[this.stack.length - 1].start;
|
|
239
|
+
}
|
|
240
|
+
#increaseCurrentDataAreaSize(amount) {
|
|
241
|
+
this.stack[this.stack.length - 1].size += amount;
|
|
242
|
+
}
|
|
243
|
+
#pushDataArea(dataAreaStart, slotsCount, countWord) {
|
|
244
|
+
const size = slotsCount * codec_1.WORD_SIZE;
|
|
245
|
+
this.reserve(dataAreaStart + size);
|
|
246
|
+
this.stack.push({
|
|
247
|
+
start: dataAreaStart,
|
|
248
|
+
jumpBackPtr: this.pos,
|
|
249
|
+
size,
|
|
250
|
+
countWord,
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
closeTail() {
|
|
254
|
+
(0, node_assert_1.default)(this.stack.length > 1, 'No dynamic encoding started');
|
|
255
|
+
const { jumpBackPtr, size, countWord } = this.stack.pop();
|
|
256
|
+
this.#increaseCurrentDataAreaSize(size + (countWord ? codec_1.WORD_SIZE : 0));
|
|
257
|
+
this.pos = jumpBackPtr;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
exports.BytesSink = BytesSink;
|
|
261
|
+
//# sourceMappingURL=bytes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../src/sink/bytes.ts"],"names":[],"mappings":"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"}
|