@subsquid/evm-codec 0.2.1 → 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.
Files changed (79) hide show
  1. package/lib/codec.d.ts +59 -12
  2. package/lib/codec.d.ts.map +1 -1
  3. package/lib/codec.js.map +1 -1
  4. package/lib/codecs/array.d.ts +3 -3
  5. package/lib/codecs/array.d.ts.map +1 -1
  6. package/lib/codecs/array.js +13 -7
  7. package/lib/codecs/array.js.map +1 -1
  8. package/lib/codecs/primitives.d.ts +2 -16
  9. package/lib/codecs/primitives.d.ts.map +1 -1
  10. package/lib/codecs/primitives.js +52 -141
  11. package/lib/codecs/primitives.js.map +1 -1
  12. package/lib/codecs/struct.d.ts +17 -9
  13. package/lib/codecs/struct.d.ts.map +1 -1
  14. package/lib/codecs/struct.js +53 -39
  15. package/lib/codecs/struct.js.map +1 -1
  16. package/lib/dsl.d.ts +11 -0
  17. package/lib/dsl.d.ts.map +1 -0
  18. package/lib/dsl.js +33 -0
  19. package/lib/dsl.js.map +1 -0
  20. package/lib/index.d.ts +7 -4
  21. package/lib/index.d.ts.map +1 -1
  22. package/lib/index.js +7 -6
  23. package/lib/index.js.map +1 -1
  24. package/lib/sink/bounds.d.ts +21 -0
  25. package/lib/sink/bounds.d.ts.map +1 -0
  26. package/lib/sink/bounds.js +24 -0
  27. package/lib/sink/bounds.js.map +1 -0
  28. package/lib/sink/bytes.d.ts +41 -0
  29. package/lib/sink/bytes.d.ts.map +1 -0
  30. package/lib/sink/bytes.js +261 -0
  31. package/lib/sink/bytes.js.map +1 -0
  32. package/lib/sink/hex.d.ts +33 -0
  33. package/lib/sink/hex.d.ts.map +1 -0
  34. package/lib/sink/hex.js +289 -0
  35. package/lib/sink/hex.js.map +1 -0
  36. package/lib/{src.d.ts → src/bytes.d.ts} +7 -5
  37. package/lib/src/bytes.d.ts.map +1 -0
  38. package/lib/src/bytes.js +161 -0
  39. package/lib/src/bytes.js.map +1 -0
  40. package/lib/src/hex.d.ts +33 -0
  41. package/lib/src/hex.d.ts.map +1 -0
  42. package/lib/src/hex.js +164 -0
  43. package/lib/src/hex.js.map +1 -0
  44. package/lib/util.d.ts +6 -0
  45. package/lib/util.d.ts.map +1 -0
  46. package/lib/util.js +20 -0
  47. package/lib/util.js.map +1 -0
  48. package/package.json +6 -8
  49. package/src/codec.ts +67 -18
  50. package/src/codecs/array.test.ts +87 -0
  51. package/src/codecs/array.ts +9 -12
  52. package/src/codecs/primitives.test.ts +27 -0
  53. package/src/codecs/primitives.ts +87 -191
  54. package/src/codecs/struct.test.ts +69 -0
  55. package/src/codecs/struct.ts +80 -60
  56. package/src/dsl.ts +16 -0
  57. package/src/index.ts +7 -4
  58. package/src/sink/bounds.ts +26 -0
  59. package/src/sink/bytes.test.ts +92 -0
  60. package/src/sink/bytes.ts +290 -0
  61. package/src/sink/hex.ts +311 -0
  62. package/src/src/bytes.test.ts +114 -0
  63. package/src/src/bytes.ts +187 -0
  64. package/src/src/hex.ts +191 -0
  65. package/src/util.ts +19 -0
  66. package/lib/safeToNumber.d.ts +0 -2
  67. package/lib/safeToNumber.d.ts.map +0 -1
  68. package/lib/safeToNumber.js +0 -11
  69. package/lib/safeToNumber.js.map +0 -1
  70. package/lib/sink.d.ts +0 -43
  71. package/lib/sink.d.ts.map +0 -1
  72. package/lib/sink.js +0 -215
  73. package/lib/sink.js.map +0 -1
  74. package/lib/src.d.ts.map +0 -1
  75. package/lib/src.js +0 -141
  76. package/lib/src.js.map +0 -1
  77. package/src/safeToNumber.ts +0 -6
  78. package/src/sink.ts +0 -241
  79. package/src/src.ts +0 -158
@@ -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,56 +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
23
  this.components = components;
14
- const codecs = Object.values(components);
24
+ const entries = Object.entries(components);
25
+ const codecs = entries.map(([, c]) => c);
15
26
  this.isDynamic = codecs.some((codec) => codec.isDynamic);
16
27
  this.childrenSlotsCount = slotsCount(codecs);
17
- if (this.isDynamic) {
18
- this.slotsCount = 1;
19
- }
20
- else {
21
- this.slotsCount = this.childrenSlotsCount;
22
- }
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;
23
33
  }
24
- encode(sink, val) {
25
- if (this.isDynamic) {
26
- this.encodeDynamic(sink, val);
27
- return;
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});`;
28
44
  }
29
- for (let i in this.components) {
30
- let prop = this.components[i];
31
- prop.encode(sink, val[i]);
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)});`;
32
51
  }
33
- }
34
- encodeDynamic(sink, val) {
35
- sink.newStaticDataArea(this.childrenSlotsCount);
36
- for (let i in this.components) {
37
- let prop = this.components[i];
38
- prop.encode(sink, val[i]);
52
+ if (wrap && this.isDynamic) {
53
+ body += 'sink.closeTail();';
39
54
  }
40
- sink.endCurrentDataArea();
55
+ const fn = new Function(...closureNames, 'sink', 'val', body);
56
+ return fn.bind(null, ...closureValues);
41
57
  }
42
- decode(src) {
43
- if (this.isDynamic) {
44
- return this.decodeDynamic(src);
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());';
45
64
  }
46
- let result = {};
47
- for (let i in this.components) {
48
- let prop = this.components[i];
49
- result[i] = prop.decode(src);
50
- }
51
- return result;
52
- }
53
- decodeDynamic(src) {
54
- let result = {};
55
- const offset = src.u32();
56
- const tmpSrc = src.slice(offset);
57
- for (let i in this.components) {
58
- let prop = this.components[i];
59
- 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)`);
60
72
  }
61
- return result;
73
+ body += `return {${fields.join(',')}};`;
74
+ const fn = new Function(...closureNames, 'src', body);
75
+ return fn.bind(null, ...closureValues);
62
76
  }
63
77
  }
64
78
  exports.StructCodec = StructCodec;
@@ -1 +1 @@
1
- {"version":3,"file":"struct.js","sourceRoot":"","sources":["../../src/codecs/struct.ts"],"names":[],"mappings":"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"}
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
@@ -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 { Src } from './src';
2
- export { Sink } from './sink';
3
- export type { Codec, Struct, DecodedStruct, EncodedStruct } from './codec';
4
- export * from './codecs/primitives';
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC1E,cAAc,qBAAqB,CAAA"}
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
- exports.Sink = exports.Src = void 0;
18
- var src_1 = require("./src");
19
- Object.defineProperty(exports, "Src", { enumerable: true, get: function () { return src_1.Src; } });
20
- var sink_1 = require("./sink");
21
- Object.defineProperty(exports, "Sink", { enumerable: true, get: function () { return sink_1.Sink; } });
22
- __exportStar(require("./codecs/primitives"), exports);
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":";;;;;;;;;;;;;;;;;AAAA,6BAA2B;AAAlB,0FAAA,GAAG,OAAA;AACZ,+BAA6B;AAApB,4FAAA,IAAI,OAAA;AAEb,sDAAmC"}
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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"}