@wormhole-foundation/sdk-base 0.4.2-beta.2 → 0.4.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.
Files changed (155) hide show
  1. package/dist/cjs/constants/chains.d.ts +7 -15
  2. package/dist/cjs/constants/chains.d.ts.map +1 -1
  3. package/dist/cjs/constants/chains.js +0 -4
  4. package/dist/cjs/constants/chains.js.map +1 -1
  5. package/dist/cjs/constants/circle.d.ts +2 -2
  6. package/dist/cjs/constants/contracts/core.d.ts +1 -1
  7. package/dist/cjs/constants/contracts/core.d.ts.map +1 -1
  8. package/dist/cjs/constants/contracts/core.js +0 -1
  9. package/dist/cjs/constants/contracts/core.js.map +1 -1
  10. package/dist/cjs/constants/contracts/index.d.ts +2 -6
  11. package/dist/cjs/constants/contracts/index.d.ts.map +1 -1
  12. package/dist/cjs/constants/contracts/tokenBridgeRelayer.js.map +1 -1
  13. package/dist/cjs/constants/finality.d.ts +6 -10
  14. package/dist/cjs/constants/finality.d.ts.map +1 -1
  15. package/dist/cjs/constants/finality.js +4 -11
  16. package/dist/cjs/constants/finality.js.map +1 -1
  17. package/dist/cjs/constants/nativeChainIds.d.ts +3 -33
  18. package/dist/cjs/constants/nativeChainIds.d.ts.map +1 -1
  19. package/dist/cjs/constants/nativeChainIds.js +0 -18
  20. package/dist/cjs/constants/nativeChainIds.js.map +1 -1
  21. package/dist/cjs/constants/platforms.d.ts +3 -7
  22. package/dist/cjs/constants/platforms.d.ts.map +1 -1
  23. package/dist/cjs/constants/platforms.js +0 -4
  24. package/dist/cjs/constants/platforms.js.map +1 -1
  25. package/dist/cjs/constants/rpc.d.ts.map +1 -1
  26. package/dist/cjs/constants/rpc.js +0 -4
  27. package/dist/cjs/constants/rpc.js.map +1 -1
  28. package/dist/cjs/constants/tokens/mainnet.d.ts +0 -128
  29. package/dist/cjs/constants/tokens/mainnet.d.ts.map +1 -1
  30. package/dist/cjs/constants/tokens/mainnet.js +0 -116
  31. package/dist/cjs/constants/tokens/mainnet.js.map +1 -1
  32. package/dist/cjs/constants/tokens/mainnetDetails.d.ts +1 -12
  33. package/dist/cjs/constants/tokens/mainnetDetails.d.ts.map +1 -1
  34. package/dist/cjs/constants/tokens/mainnetDetails.js +0 -9
  35. package/dist/cjs/constants/tokens/mainnetDetails.js.map +1 -1
  36. package/dist/cjs/utils/amount.d.ts +0 -12
  37. package/dist/cjs/utils/amount.d.ts.map +1 -1
  38. package/dist/cjs/utils/amount.js +1 -19
  39. package/dist/cjs/utils/amount.js.map +1 -1
  40. package/dist/cjs/utils/layout/deserialize.d.ts +2 -6
  41. package/dist/cjs/utils/layout/deserialize.d.ts.map +1 -1
  42. package/dist/cjs/utils/layout/deserialize.js +86 -99
  43. package/dist/cjs/utils/layout/deserialize.js.map +1 -1
  44. package/dist/cjs/utils/layout/discriminate.d.ts +2 -2
  45. package/dist/cjs/utils/layout/discriminate.d.ts.map +1 -1
  46. package/dist/cjs/utils/layout/discriminate.js +29 -63
  47. package/dist/cjs/utils/layout/discriminate.js.map +1 -1
  48. package/dist/cjs/utils/layout/fixedDynamic.d.ts +10 -15
  49. package/dist/cjs/utils/layout/fixedDynamic.d.ts.map +1 -1
  50. package/dist/cjs/utils/layout/fixedDynamic.js +34 -46
  51. package/dist/cjs/utils/layout/fixedDynamic.js.map +1 -1
  52. package/dist/cjs/utils/layout/index.d.ts +2 -3
  53. package/dist/cjs/utils/layout/index.d.ts.map +1 -1
  54. package/dist/cjs/utils/layout/index.js +3 -6
  55. package/dist/cjs/utils/layout/index.js.map +1 -1
  56. package/dist/cjs/utils/layout/items.js +1 -1
  57. package/dist/cjs/utils/layout/items.js.map +1 -1
  58. package/dist/cjs/utils/layout/layout.d.ts +38 -46
  59. package/dist/cjs/utils/layout/layout.d.ts.map +1 -1
  60. package/dist/cjs/utils/layout/layout.js +7 -4
  61. package/dist/cjs/utils/layout/layout.js.map +1 -1
  62. package/dist/cjs/utils/layout/serialize.d.ts +3 -12
  63. package/dist/cjs/utils/layout/serialize.d.ts.map +1 -1
  64. package/dist/cjs/utils/layout/serialize.js +54 -82
  65. package/dist/cjs/utils/layout/serialize.js.map +1 -1
  66. package/dist/cjs/utils/layout/size.d.ts +1 -2
  67. package/dist/cjs/utils/layout/size.d.ts.map +1 -1
  68. package/dist/cjs/utils/layout/size.js +65 -100
  69. package/dist/cjs/utils/layout/size.js.map +1 -1
  70. package/dist/cjs/utils/layout/utils.d.ts +4 -46
  71. package/dist/cjs/utils/layout/utils.d.ts.map +1 -1
  72. package/dist/cjs/utils/layout/utils.js +20 -54
  73. package/dist/cjs/utils/layout/utils.js.map +1 -1
  74. package/dist/cjs/utils/metaprogramming.d.ts +0 -3
  75. package/dist/cjs/utils/metaprogramming.d.ts.map +1 -1
  76. package/dist/cjs/utils/metaprogramming.js.map +1 -1
  77. package/dist/esm/constants/chains.d.ts +7 -15
  78. package/dist/esm/constants/chains.d.ts.map +1 -1
  79. package/dist/esm/constants/chains.js +0 -4
  80. package/dist/esm/constants/chains.js.map +1 -1
  81. package/dist/esm/constants/circle.d.ts +2 -2
  82. package/dist/esm/constants/contracts/core.d.ts +1 -1
  83. package/dist/esm/constants/contracts/core.d.ts.map +1 -1
  84. package/dist/esm/constants/contracts/core.js +0 -1
  85. package/dist/esm/constants/contracts/core.js.map +1 -1
  86. package/dist/esm/constants/contracts/index.d.ts +2 -6
  87. package/dist/esm/constants/contracts/index.d.ts.map +1 -1
  88. package/dist/esm/constants/contracts/tokenBridgeRelayer.js.map +1 -1
  89. package/dist/esm/constants/finality.d.ts +6 -10
  90. package/dist/esm/constants/finality.d.ts.map +1 -1
  91. package/dist/esm/constants/finality.js +4 -11
  92. package/dist/esm/constants/finality.js.map +1 -1
  93. package/dist/esm/constants/nativeChainIds.d.ts +3 -33
  94. package/dist/esm/constants/nativeChainIds.d.ts.map +1 -1
  95. package/dist/esm/constants/nativeChainIds.js +0 -18
  96. package/dist/esm/constants/nativeChainIds.js.map +1 -1
  97. package/dist/esm/constants/platforms.d.ts +3 -7
  98. package/dist/esm/constants/platforms.d.ts.map +1 -1
  99. package/dist/esm/constants/platforms.js +0 -4
  100. package/dist/esm/constants/platforms.js.map +1 -1
  101. package/dist/esm/constants/rpc.d.ts.map +1 -1
  102. package/dist/esm/constants/rpc.js +0 -4
  103. package/dist/esm/constants/rpc.js.map +1 -1
  104. package/dist/esm/constants/tokens/mainnet.d.ts +0 -128
  105. package/dist/esm/constants/tokens/mainnet.d.ts.map +1 -1
  106. package/dist/esm/constants/tokens/mainnet.js +0 -116
  107. package/dist/esm/constants/tokens/mainnet.js.map +1 -1
  108. package/dist/esm/constants/tokens/mainnetDetails.d.ts +1 -12
  109. package/dist/esm/constants/tokens/mainnetDetails.d.ts.map +1 -1
  110. package/dist/esm/constants/tokens/mainnetDetails.js +0 -9
  111. package/dist/esm/constants/tokens/mainnetDetails.js.map +1 -1
  112. package/dist/esm/utils/amount.d.ts +0 -12
  113. package/dist/esm/utils/amount.d.ts.map +1 -1
  114. package/dist/esm/utils/amount.js +0 -16
  115. package/dist/esm/utils/amount.js.map +1 -1
  116. package/dist/esm/utils/layout/deserialize.d.ts +2 -6
  117. package/dist/esm/utils/layout/deserialize.d.ts.map +1 -1
  118. package/dist/esm/utils/layout/deserialize.js +88 -101
  119. package/dist/esm/utils/layout/deserialize.js.map +1 -1
  120. package/dist/esm/utils/layout/discriminate.d.ts +2 -2
  121. package/dist/esm/utils/layout/discriminate.d.ts.map +1 -1
  122. package/dist/esm/utils/layout/discriminate.js +28 -62
  123. package/dist/esm/utils/layout/discriminate.js.map +1 -1
  124. package/dist/esm/utils/layout/fixedDynamic.d.ts +10 -15
  125. package/dist/esm/utils/layout/fixedDynamic.d.ts.map +1 -1
  126. package/dist/esm/utils/layout/fixedDynamic.js +34 -46
  127. package/dist/esm/utils/layout/fixedDynamic.js.map +1 -1
  128. package/dist/esm/utils/layout/index.d.ts +2 -3
  129. package/dist/esm/utils/layout/index.d.ts.map +1 -1
  130. package/dist/esm/utils/layout/index.js +1 -2
  131. package/dist/esm/utils/layout/index.js.map +1 -1
  132. package/dist/esm/utils/layout/items.js +1 -1
  133. package/dist/esm/utils/layout/items.js.map +1 -1
  134. package/dist/esm/utils/layout/layout.d.ts +38 -46
  135. package/dist/esm/utils/layout/layout.d.ts.map +1 -1
  136. package/dist/esm/utils/layout/layout.js +3 -3
  137. package/dist/esm/utils/layout/layout.js.map +1 -1
  138. package/dist/esm/utils/layout/serialize.d.ts +3 -12
  139. package/dist/esm/utils/layout/serialize.d.ts.map +1 -1
  140. package/dist/esm/utils/layout/serialize.js +53 -80
  141. package/dist/esm/utils/layout/serialize.js.map +1 -1
  142. package/dist/esm/utils/layout/size.d.ts +1 -2
  143. package/dist/esm/utils/layout/size.d.ts.map +1 -1
  144. package/dist/esm/utils/layout/size.js +65 -99
  145. package/dist/esm/utils/layout/size.js.map +1 -1
  146. package/dist/esm/utils/layout/utils.d.ts +4 -46
  147. package/dist/esm/utils/layout/utils.d.ts.map +1 -1
  148. package/dist/esm/utils/layout/utils.js +17 -42
  149. package/dist/esm/utils/layout/utils.js.map +1 -1
  150. package/dist/esm/utils/metaprogramming.d.ts +0 -3
  151. package/dist/esm/utils/metaprogramming.d.ts.map +1 -1
  152. package/dist/esm/utils/metaprogramming.js.map +1 -1
  153. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  154. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  155. package/package.json +1 -1
@@ -1,57 +1,52 @@
1
- import { numberMaxSize, } from "./layout";
1
+ import { isNumType, isBytesType, numberMaxSize, } from "./layout";
2
2
  import { calcLayoutSize } from "./size";
3
- import { checkItemSize, checkBytesTypeEqual, checkNumEquals, findIdLayoutPair, isFixedBytesConversion, isLayoutItem, isNumType, isBytesType, } from "./utils";
4
- const cursorWrite = (cursor, bytes) => {
5
- cursor.bytes.set(bytes, cursor.offset);
6
- cursor.offset += bytes.length;
7
- };
3
+ import { checkUint8ArrayDeeplyEqual, checkUint8ArraySize, checkNumEquals, findIdLayoutPair } from "./utils";
8
4
  export function serializeLayout(layout, data, encoded, offset = 0) {
9
- const cursor = { bytes: encoded ?? new Uint8Array(calcLayoutSize(layout, data)), offset };
10
- internalSerializeLayout(layout, data, cursor);
11
- if (!encoded && cursor.offset !== cursor.bytes.length)
12
- throw new Error(`encoded data is shorter than expected: ${cursor.bytes.length} > ${cursor.offset}`);
13
- return (encoded ? cursor.offset : cursor.bytes);
5
+ return (internalSerializeLayout(layout, data, encoded, offset));
14
6
  }
15
7
  //see numberMaxSize comment in layout.ts
16
8
  const maxAllowedNumberVal = 2 ** (numberMaxSize * 8);
17
- export function serializeNum(val, size, cursor, endianness = "big", signed = false) {
9
+ export function serializeNum(encoded, offset, val, bytes, endianness = "big", signed = false) {
18
10
  if (!signed && val < 0)
19
11
  throw new Error(`Value ${val} is negative but unsigned`);
20
12
  if (typeof val === "number") {
21
13
  if (!Number.isInteger(val))
22
14
  throw new Error(`Value ${val} is not an integer`);
23
- if (size > numberMaxSize) {
15
+ if (bytes > numberMaxSize) {
24
16
  if (val >= maxAllowedNumberVal)
25
17
  throw new Error(`Value ${val} is too large to be safely converted into an integer`);
26
18
  if (signed && val <= -maxAllowedNumberVal)
27
19
  throw new Error(`Value ${val} is too small to be safely converted into an integer`);
28
20
  }
29
21
  }
30
- const bound = 2n ** BigInt(size * 8);
22
+ const bound = 2n ** BigInt(bytes * 8);
31
23
  if (val >= bound)
32
- throw new Error(`Value ${val} is too large for ${size} bytes`);
24
+ throw new Error(`Value ${val} is too large for ${bytes} bytes`);
33
25
  if (signed && val < -bound)
34
- throw new Error(`Value ${val} is too small for ${size} bytes`);
26
+ throw new Error(`Value ${val} is too small for ${bytes} bytes`);
35
27
  //correctly handles both signed and unsigned values
36
- for (let i = 0; i < size; ++i)
37
- cursor.bytes[cursor.offset + i] =
38
- Number((BigInt(val) >> BigInt(8 * (endianness === "big" ? size - i - 1 : i)) & 0xffn));
39
- cursor.offset += size;
28
+ for (let i = 0; i < bytes; ++i)
29
+ encoded[offset + i] =
30
+ Number((BigInt(val) >> BigInt(8 * (endianness === "big" ? bytes - i - 1 : i)) & 0xffn));
31
+ return offset + bytes;
40
32
  }
41
- function internalSerializeLayout(layout, data, cursor) {
42
- if (isLayoutItem(layout))
43
- serializeLayoutItem(layout, data, cursor);
44
- else
45
- for (const item of layout)
33
+ function internalSerializeLayout(layout, data, encoded, offset = 0) {
34
+ let ret = encoded ?? new Uint8Array(calcLayoutSize(layout, data));
35
+ if (Array.isArray(layout))
36
+ for (let i = 0; i < layout.length; ++i)
46
37
  try {
47
- serializeLayoutItem(item, data[item.name], cursor);
38
+ offset =
39
+ serializeLayoutItem(layout[i], data[layout[i].name], ret, offset);
48
40
  }
49
41
  catch (e) {
50
- e.message = `when serializing item '${item.name}': ${e.message}`;
42
+ e.message = `when serializing item '${layout[i].name}': ${e.message}`;
51
43
  throw e;
52
44
  }
45
+ else
46
+ offset = serializeLayoutItem(layout, data, ret, offset);
47
+ return encoded === undefined ? ret : offset;
53
48
  }
54
- function serializeLayoutItem(item, data, cursor) {
49
+ function serializeLayoutItem(item, data, encoded, offset) {
55
50
  switch (item.binary) {
56
51
  case "int":
57
52
  case "uint": {
@@ -66,78 +61,56 @@ function serializeLayoutItem(item, data, cursor) {
66
61
  return item.custom.from;
67
62
  return item.custom !== undefined ? item.custom.from(data) : data;
68
63
  })();
69
- serializeNum(value, item.size, cursor, item.endianness, item.binary === "int");
64
+ offset =
65
+ serializeNum(encoded, offset, value, item.size, item.endianness, item.binary === "int");
70
66
  break;
71
67
  }
72
68
  case "bytes": {
73
- const offset = cursor.offset;
74
- if ("lengthSize" in item && item.lengthSize !== undefined)
75
- cursor.offset += item.lengthSize;
76
- if ("layout" in item) {
77
- const { custom } = item;
78
- let layoutData;
79
- if (custom === undefined)
80
- layoutData = data;
81
- else if (typeof custom.from !== "function")
82
- layoutData = custom.from;
83
- else
84
- layoutData = custom.from(data);
85
- internalSerializeLayout(item.layout, layoutData, cursor);
86
- }
87
- else {
88
- const { custom } = item;
89
- if (isBytesType(custom)) {
69
+ const value = (() => {
70
+ if (isBytesType(item.custom)) {
90
71
  if (!("omit" in item && item.omit))
91
- checkBytesTypeEqual(custom, data);
92
- cursorWrite(cursor, custom);
72
+ checkUint8ArrayDeeplyEqual(item.custom, data);
73
+ return item.custom;
93
74
  }
94
- else if (isFixedBytesConversion(custom))
95
- //no proper way to deeply check equality of custom.to and data
96
- cursorWrite(cursor, custom.from);
97
- else
98
- cursorWrite(cursor, custom !== undefined ? custom.from(data) : data);
99
- }
100
- if ("lengthSize" in item && item.lengthSize !== undefined) {
101
- const itemSize = cursor.offset - offset - item.lengthSize;
102
- const curOffset = cursor.offset;
103
- cursor.offset = offset;
104
- serializeNum(itemSize, item.lengthSize, cursor, item.lengthEndianness);
105
- cursor.offset = curOffset;
106
- }
107
- else
108
- checkItemSize(item, cursor.offset - offset);
75
+ if (isBytesType(item?.custom?.from))
76
+ //no proper way to deeply check equality of item.custom.to and data in JS
77
+ return item.custom.from;
78
+ item = item;
79
+ const ret = item.custom !== undefined ? item.custom.from(data) : data;
80
+ if ("size" in item && item.size !== undefined)
81
+ checkUint8ArraySize(ret, item.size);
82
+ else if ("lengthSize" in item && item.lengthSize !== undefined)
83
+ offset =
84
+ serializeNum(encoded, offset, ret.length, item.lengthSize, item.lengthEndianness);
85
+ return ret;
86
+ })();
87
+ encoded.set(value, offset);
88
+ offset += value.length;
109
89
  break;
110
90
  }
111
91
  case "array": {
112
92
  if ("length" in item && item.length !== data.length)
113
93
  throw new Error(`array length mismatch: layout length: ${item.length}, data length: ${data.length}`);
114
94
  if ("lengthSize" in item && item.lengthSize !== undefined)
115
- serializeNum(data.length, item.lengthSize, cursor, item.lengthEndianness);
95
+ offset =
96
+ serializeNum(encoded, offset, data.length, item.lengthSize, item.lengthEndianness);
116
97
  for (let i = 0; i < data.length; ++i)
117
- internalSerializeLayout(item.layout, data[i], cursor);
98
+ offset = internalSerializeLayout(item.layout, data[i], encoded, offset);
99
+ break;
100
+ }
101
+ case "object": {
102
+ offset = internalSerializeLayout(item.layout, data, encoded, offset);
118
103
  break;
119
104
  }
120
105
  case "switch": {
121
106
  const [idOrConversionId, layout] = findIdLayoutPair(item, data);
122
107
  const idNum = (Array.isArray(idOrConversionId) ? idOrConversionId[0] : idOrConversionId);
123
- serializeNum(idNum, item.idSize, cursor, item.idEndianness);
124
- internalSerializeLayout(layout, data, cursor);
108
+ offset = serializeNum(encoded, offset, idNum, item.idSize, item.idEndianness);
109
+ offset = internalSerializeLayout(layout, data, encoded, offset);
125
110
  break;
126
111
  }
127
112
  }
113
+ return offset;
128
114
  }
129
115
  ;
130
- //slightly hacky, but the only way to ensure that we are actually deserializing the
131
- // right data without having to re-serialize the layout every time
132
- export function getCachedSerializedFrom(item) {
133
- const custom = item.custom;
134
- if (!("cachedSerializedFrom" in custom)) {
135
- custom.cachedSerializedFrom = serializeLayout(item.layout, custom.from);
136
- if ("size" in item &&
137
- item.size !== undefined &&
138
- item.size !== custom.cachedSerializedFrom.length)
139
- throw new Error(`Layout specification error: custom.from does not serialize to specified size`);
140
- }
141
- return custom.cachedSerializedFrom;
142
- }
143
116
  //# sourceMappingURL=serialize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../../../src/utils/layout/serialize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../../../src/utils/layout/serialize.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,SAAS,EACT,WAAW,EACX,aAAa,GACd,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,MAAM,UAAU,eAAe,CAC7B,MAAS,EACT,IAAqB,EACrB,OAAW,EACX,MAAM,GAAG,CAAC;IAEV,OAAO,CACL,uBAAuB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CACV,CAAC;AACjD,CAAC;AAED,wCAAwC;AACxC,MAAM,mBAAmB,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;AAErD,MAAM,UAAU,YAAY,CAC1B,OAAmB,EACnB,MAAc,EACd,GAAY,EACZ,KAAa,EACb,aAAyB,KAAK,EAC9B,SAAkB,KAAK;IAEvB,IAAI,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,SAAS,GAAG,2BAA2B,CAAC,CAAC;IAE3D,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC3B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,SAAS,GAAG,oBAAoB,CAAC,CAAC;QAEpD,IAAI,KAAK,GAAG,aAAa,EAAE;YACzB,IAAI,GAAG,IAAI,mBAAmB;gBAC5B,MAAM,IAAI,KAAK,CAAC,SAAS,GAAG,sDAAsD,CAAC,CAAC;YAEtF,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB;gBACvC,MAAM,IAAI,KAAK,CAAC,SAAS,GAAG,sDAAsD,CAAC,CAAC;SACvF;KACF;IAED,MAAM,KAAK,GAAG,EAAE,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;IACrC,IAAI,GAAG,IAAI,KAAK;QACd,MAAM,IAAI,KAAK,CAAC,SAAS,GAAG,qBAAqB,KAAK,QAAQ,CAAC,CAAC;IAElE,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK;QACxB,MAAM,IAAI,KAAK,CAAC,SAAS,GAAG,qBAAqB,KAAK,QAAQ,CAAC,CAAC;IAElE,mDAAmD;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;QAC5B,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YACjB,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAE5F,OAAO,MAAM,GAAG,KAAK,CAAC;AACxB,CAAC;AAcD,SAAS,uBAAuB,CAC9B,MAAc,EACd,IAAS,EACT,OAAoB,EACpB,MAAM,GAAG,CAAC;IAEV,IAAI,GAAG,GAAG,OAAO,IAAI,IAAI,UAAU,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAClE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACpC,IAAI;gBACF,MAAM;oBACJ,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAyB,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;aAC1F;YACD,OAAO,CAAM,EAAE;gBACb,CAAC,CAAC,OAAO,GAAG,0BAA0B,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;gBACtE,MAAM,CAAC,CAAC;aACT;;QAEH,MAAM,GAAG,mBAAmB,CAAC,MAAoB,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAExE,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9C,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAAgB,EAChB,IAAS,EACT,OAAmB,EACnB,MAAc;IAEd,QAAQ,IAAI,CAAC,MAAM,EAAE;QACnB,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC,CAAC;YACX,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE;gBAClB,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;oBAC1B,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;wBAChC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;oBACpC,OAAO,IAAI,CAAC,MAAM,CAAC;iBACpB;gBAED,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC;oBAC/B,yEAAyE;oBACzE,OAAO,IAAK,CAAC,MAAO,CAAC,IAAI,CAAC;gBAG5B,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAE,IAAI,CAAC,MAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACvF,CAAC,CAAC,EAAE,CAAC;YAEL,MAAM;gBACJ,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;YAC1F,MAAM;SACP;QACD,KAAK,OAAO,CAAC,CAAC;YACZ,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE;gBAClB,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;oBAC5B,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;wBAChC,0BAA0B,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;oBAChD,OAAO,IAAI,CAAC,MAAM,CAAC;iBACpB;gBAED,IAAI,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC;oBACjC,yEAAyE;oBACzE,OAAO,IAAK,CAAC,MAAO,CAAC,IAAI,CAAC;gBAE5B,IAAI,GAAG,IAC0E,CAAC;gBAClF,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACtE,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;oBAC3C,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;qBACjC,IAAI,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;oBAC5D,MAAM;wBACJ,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAEtF,OAAO,GAAG,CAAC;YACb,CAAC,CAAC,EAAE,CAAC;YAEL,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;YACvB,MAAM;SACP;QACD,KAAK,OAAO,CAAC,CAAC;YACZ,IAAI,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;gBACjD,MAAM,IAAI,KAAK,CACb,yCAAyC,IAAI,CAAC,MAAM,kBAAkB,IAAI,CAAC,MAAM,EAAE,CACpF,CAAC;YAEJ,IAAI,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;gBACvD,MAAM;oBACJ,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAEvF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClC,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAE1E,MAAM;SACP;QACD,KAAK,QAAQ,CAAC,CAAC;YACb,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACrE,MAAM;SACP;QACD,KAAK,QAAQ,CAAC,CAAC;YACb,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAChE,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;YACzF,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9E,MAAM,GAAG,uBAAuB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAChE,MAAM;SACP;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAAA,CAAC"}
@@ -1,4 +1,3 @@
1
1
  import { Layout, LayoutToType } from "./layout";
2
- export declare function calcStaticLayoutSize(layout: Layout): number | null;
3
- export declare function calcLayoutSize<const L extends Layout>(layout: L, data: LayoutToType<L>): number;
2
+ export declare function calcLayoutSize(layout: Layout, data?: LayoutToType<typeof layout>): number;
4
3
  //# sourceMappingURL=size.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"size.d.ts","sourceRoot":"","sources":["../../../../src/utils/layout/size.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EAEN,YAAY,EACb,MAAM,UAAU,CAAC;AA4IlB,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAElE;AAED,wBAAgB,cAAc,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAQ/F"}
1
+ {"version":3,"file":"size.d.ts","sourceRoot":"","sources":["../../../../src/utils/layout/size.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EAEN,YAAY,EAGb,MAAM,UAAU,CAAC;AAiGlB,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,YAAY,CAAC,OAAO,MAAM,CAAC,GACjC,MAAM,CAYR"}
@@ -1,122 +1,88 @@
1
- import { findIdLayoutPair, isBytesType, isLayoutItem, isFixedBytesConversion, checkItemSize, } from "./utils";
2
- function calcItemSize(item, data) {
1
+ import { isBytesType, } from "./layout";
2
+ import { findIdLayoutPair } from "./utils";
3
+ function staticCalcItemSize(item) {
3
4
  switch (item.binary) {
4
5
  case "int":
5
- case "uint":
6
+ case "uint": {
6
7
  return item.size;
8
+ }
7
9
  case "bytes": {
8
- //items only have a size or a lengthSize, never both
9
- const lengthSize = ("lengthSize" in item) ? item.lengthSize | 0 : 0;
10
- if ("layout" in item) {
11
- const layoutSize = internalCalcLayoutSize(item.layout, data);
12
- if (layoutSize === null)
13
- return ("size" in item) ? item.size ?? null : null;
14
- return lengthSize + checkItemSize(item, layoutSize);
15
- }
16
- const { custom } = item;
17
- if (isBytesType(custom))
18
- return lengthSize + custom.length; //assumed to equal item.size if it exists
19
- if (isFixedBytesConversion(custom))
20
- return lengthSize + custom.from.length; //assumed to equal item.size if it exists
21
- if (custom === undefined)
22
- return data ? lengthSize + checkItemSize(item, data.length) : null;
23
- return data !== undefined ? lengthSize + checkItemSize(item, custom.from(data).length) : null;
10
+ if ("size" in item && item.size !== undefined)
11
+ return item.size;
12
+ if (isBytesType(item.custom))
13
+ return item.custom.length;
14
+ if (isBytesType(item?.custom?.from))
15
+ return item.custom.from.length;
16
+ throw new Error("Cannot statically determine size of dynamic bytes");
24
17
  }
25
- case "array": {
26
- const length = "length" in item ? item.length : undefined;
27
- if (data === undefined) {
28
- if (length !== undefined) {
29
- const layoutSize = internalCalcLayoutSize(item.layout);
30
- if (layoutSize === null)
31
- return null;
32
- return length * layoutSize;
33
- }
34
- return null;
35
- }
36
- let size = 0;
37
- if (length !== undefined && length !== data.length)
38
- throw new Error(`array length mismatch: layout length: ${length}, data length: ${data.length}`);
39
- else if ("lengthSize" in item && item.lengthSize !== undefined)
40
- size += item.lengthSize;
41
- for (let i = 0; i < data.length; ++i) {
42
- const entrySize = internalCalcLayoutSize(item.layout, data[i]);
43
- if (entrySize === null)
44
- return null;
45
- size += entrySize;
46
- }
47
- return size;
18
+ case "array":
19
+ throw new Error("Cannot statically determine size of dynamic array");
20
+ case "object": {
21
+ return calcLayoutSize(item.layout);
48
22
  }
49
23
  case "switch": {
50
- if (data !== undefined) {
51
- const [_, layout] = findIdLayoutPair(item, data);
52
- const layoutSize = internalCalcLayoutSize(layout, data);
53
- return layoutSize !== null ? item.idSize + layoutSize : null;
54
- }
55
24
  let size = null;
25
+ if (item.layouts.length === 0)
26
+ throw new Error(`switch item has no layouts`);
56
27
  for (const [_, layout] of item.layouts) {
57
- const layoutSize = internalCalcLayoutSize(layout);
28
+ const layoutSize = calcLayoutSize(layout);
58
29
  if (size === null)
59
30
  size = layoutSize;
60
31
  else if (layoutSize !== size)
61
- return null;
32
+ throw new Error("Cannot statically determine size of switch item with different layout sizes");
62
33
  }
63
34
  return item.idSize + size;
64
35
  }
65
36
  }
66
37
  }
67
- function internalCalcLayoutSize(layout, data) {
68
- if (isLayoutItem(layout))
69
- return calcItemSize(layout, data);
70
- let size = 0;
71
- for (const item of layout) {
72
- let itemData;
73
- if (data)
74
- if (!("omit" in item) || !item.omit) {
75
- if (!(item.name in data))
76
- throw new Error(`missing data for layout item: ${item.name}`);
77
- itemData = data[item.name];
78
- }
79
- const itemSize = calcItemSize(item, itemData);
80
- if (itemSize === null) {
81
- if (data !== undefined)
82
- throw new Error(`coding error: couldn't calculate size for layout item: ${item.name}`);
83
- return null;
38
+ function calcItemSize(item, data) {
39
+ switch (item.binary) {
40
+ case "int":
41
+ case "uint": {
42
+ return item.size;
43
+ }
44
+ case "bytes": {
45
+ if ("size" in item && item.size !== undefined)
46
+ return item.size;
47
+ if (isBytesType(item.custom))
48
+ return item.custom.length;
49
+ if (isBytesType(item?.custom?.from))
50
+ return item.custom.from.length;
51
+ let size = 0;
52
+ if (item?.lengthSize !== undefined)
53
+ size += item.lengthSize;
54
+ return size + ((item.custom !== undefined)
55
+ ? item.custom.from(data)
56
+ : data).length;
57
+ }
58
+ case "array": {
59
+ const narrowedData = data;
60
+ let size = 0;
61
+ if ("length" in item && item.length !== narrowedData.length)
62
+ throw new Error(`array length mismatch: ` +
63
+ `layout length: ${item.length}, data length: ${narrowedData.length}`);
64
+ else if ("lengthSize" in item && item.lengthSize !== undefined)
65
+ size += item.lengthSize;
66
+ for (let i = 0; i < narrowedData.length; ++i)
67
+ size += calcLayoutSize(item.layout, narrowedData[i]);
68
+ return size;
69
+ }
70
+ case "object": {
71
+ return calcLayoutSize(item.layout, data);
72
+ }
73
+ case "switch": {
74
+ const [_, layout] = findIdLayoutPair(item, data);
75
+ return item.idSize + calcLayoutSize(layout, data);
84
76
  }
85
- size += itemSize;
86
77
  }
87
- return size;
88
- }
89
- //no way to use overloading here:
90
- // export function calcLayoutSize<const L extends Layout>(layout: L): number | null;
91
- // export function calcLayoutSize<const L extends Layout>(layout: L, data: LayoutToType<L>): number;
92
- // export function calcLayoutSize<const L extends Layout>(
93
- // layout: L,
94
- // data?: LayoutToType<L>
95
- // ): number | null; //impl
96
- //results in "instantiation too deep" error.
97
- //
98
- //Trying to pack everything into a single function definition means we either can't narrow the
99
- // return type correctly:
100
- // export function calcLayoutSize<const L extends Layout>(
101
- // layout: L,
102
- // data: LayoutToType<L>,
103
- // ): number | null;
104
- //or we have to make data overly permissive via:
105
- // export function calcLayoutSize<
106
- // L extends Layout,
107
- // const D extends LayoutToType<L> | undefined,
108
- // >(
109
- // layout: L,
110
- // data?: D, //data can now contain additional properties
111
- // ): undefined extends D ? number | null : number;
112
- //so we're stuck with having to use to separate names
113
- export function calcStaticLayoutSize(layout) {
114
- return internalCalcLayoutSize(layout);
115
78
  }
116
79
  export function calcLayoutSize(layout, data) {
117
- const size = internalCalcLayoutSize(layout, data);
118
- if (size === null)
119
- throw new Error(`coding error: couldn't calculate layout size for layout ${layout} with data ${data}`);
120
- return size;
80
+ return (Array.isArray(layout))
81
+ ? layout.reduce((acc, item) => acc + (data !== undefined
82
+ ? calcItemSize(item, data[item.name])
83
+ : staticCalcItemSize(item)), 0)
84
+ : data !== undefined
85
+ ? calcItemSize(layout, data)
86
+ : staticCalcItemSize(layout);
121
87
  }
122
88
  //# sourceMappingURL=size.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"size.js","sourceRoot":"","sources":["../../../../src/utils/layout/size.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"size.js","sourceRoot":"","sources":["../../../../src/utils/layout/size.ts"],"names":[],"mappings":"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"}
@@ -1,49 +1,7 @@
1
- import { Layout, LayoutItem, BytesLayoutItem, SwitchLayoutItem, FixedConversion, CustomConversion, NumType, BytesType, PrimitiveType } from "./layout";
2
- export declare const isNumType: (x: any) => x is NumType;
3
- export declare const isBytesType: (x: any) => x is Uint8Array;
4
- export declare const isPrimitiveType: (x: any) => x is PrimitiveType;
5
- export declare const isLayoutItem: (x: any) => x is LayoutItem;
6
- export declare const isLayout: (x: any) => x is Layout;
7
- export declare const isFixedUintConversion: (custom: any) => custom is FixedConversion<number, any> | FixedConversion<bigint, any>;
8
- export declare const isFixedBytesConversion: (custom: any) => custom is FixedConversion<Uint8Array, any>;
9
- export declare const isFixedPrimitiveConversion: (custom: any) => custom is FixedConversion<Uint8Array, any> | FixedConversion<number, any> | FixedConversion<bigint, any>;
10
- export type CustomizableBytes = undefined | Layout | Uint8Array | FixedConversion<Uint8Array, any> | CustomConversion<Uint8Array, any> | readonly [Layout, FixedConversion<any, any> | CustomConversion<any, any>];
11
- type CombineObjects<T, U> = {
12
- [K in keyof T | keyof U]: K extends keyof T ? T[K] : K extends keyof U ? U[K] : never;
13
- };
14
- type BytesBase = {
15
- readonly name: string;
16
- } & Omit<BytesLayoutItem, "binary" | "custom" | "layout">;
17
- type CustomizableBytesReturn<B extends BytesBase, P extends CustomizableBytes> = CombineObjects<B, P extends undefined ? {
18
- readonly binary: "bytes";
19
- } : P extends Layout ? {
20
- readonly binary: "bytes";
21
- readonly layout: P;
22
- } : P extends Uint8Array | FixedConversion<Uint8Array, infer To> | CustomConversion<Uint8Array, infer To> ? {
23
- readonly binary: "bytes";
24
- readonly custom: P;
25
- } : P extends readonly [
26
- Layout,
27
- FixedConversion<infer From, infer To> | CustomConversion<infer From, infer To>
28
- ] ? {
29
- readonly binary: "bytes";
30
- readonly layout: P[0];
31
- readonly custom: P[1];
32
- } : never>;
33
- export declare const customizableBytes: <const B extends BytesBase, const C extends CustomizableBytes>(base: B, spec?: C | undefined) => CustomizableBytesReturn<B, C>;
34
- export declare const checkSize: (layoutSize: number, dataSize: number) => number;
35
- export declare const checkItemSize: (item: any, dataSize: number) => number;
1
+ import { BytesLayoutItem, SwitchLayoutItem } from "./layout";
2
+ export declare const checkUint8ArraySize: (custom: Uint8Array, size: number) => void;
36
3
  export declare const checkNumEquals: (custom: number | bigint, data: number | bigint) => void;
37
- export declare const checkBytesTypeEqual: (custom: BytesType, data: BytesType, opts?: {
38
- customSlice?: number | readonly [
39
- number,
40
- number
41
- ];
42
- dataSlize?: number | readonly [
43
- number,
44
- number
45
- ];
46
- }) => void;
4
+ export declare const checkUint8ArrayDeeplyEqual: (custom: Uint8Array, data: Uint8Array) => void;
5
+ export declare function getBytesItemSize(bytesItem: BytesLayoutItem): number | null;
47
6
  export declare function findIdLayoutPair(item: SwitchLayoutItem, data: any): any;
48
- export {};
49
7
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/utils/layout/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/utils/layout/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAe,MAAM,UAAU,CAAC;AAE1E,eAAO,MAAM,mBAAmB,WAAY,UAAU,QAAQ,MAAM,KAAG,IAKtE,CAAA;AAED,eAAO,MAAM,cAAc,WAAY,MAAM,GAAG,MAAM,QAAQ,MAAM,GAAG,MAAM,KAAG,IAK/E,CAAA;AAED,eAAO,MAAM,0BAA0B,WAAY,UAAU,QAAQ,UAAU,KAAG,IAQjF,CAAA;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAW1E;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,OAKjE"}
@@ -1,52 +1,27 @@
1
- import { binaryLiterals, } from "./layout";
2
- export const isNumType = (x) => typeof x === "number" || typeof x === "bigint";
3
- export const isBytesType = (x) => x instanceof Uint8Array;
4
- export const isPrimitiveType = (x) => isNumType(x) || isBytesType(x);
5
- export const isLayoutItem = (x) => binaryLiterals.includes(x?.binary);
6
- export const isLayout = (x) => isLayoutItem(x) || Array.isArray(x) && x.every(isLayoutItem);
7
- const isFixedNumberConversion = (custom) => typeof custom?.from === "number";
8
- const isFixedBigintConversion = (custom) => typeof custom?.from === "bigint";
9
- export const isFixedUintConversion = (custom) => isFixedNumberConversion(custom) || isFixedBigintConversion(custom);
10
- export const isFixedBytesConversion = (custom) => isBytesType(custom?.from);
11
- export const isFixedPrimitiveConversion = (custom) => isFixedUintConversion(custom) || isFixedBytesConversion(custom);
12
- export const customizableBytes = (base, spec) => ({
13
- ...base,
14
- binary: "bytes",
15
- ...(() => {
16
- if (spec === undefined)
17
- return {};
18
- if (isLayout(spec))
19
- return { layout: spec };
20
- if (spec instanceof Uint8Array || isFixedBytesConversion(spec) || !Array.isArray(spec))
21
- return { custom: spec };
22
- return { layout: spec[0], custom: spec[1] };
23
- })()
24
- });
25
- export const checkSize = (layoutSize, dataSize) => {
26
- if (layoutSize !== dataSize)
27
- throw new Error(`size mismatch: layout size: ${layoutSize}, data size: ${dataSize}`);
28
- return dataSize;
1
+ import { isBytesType } from "./layout";
2
+ export const checkUint8ArraySize = (custom, size) => {
3
+ if (custom.length !== size)
4
+ throw new Error(`binary size mismatch: layout size: ${custom.length}, data size: ${size}`);
29
5
  };
30
- export const checkItemSize = (item, dataSize) => ("size" in item && item.size !== undefined) ? checkSize(item.size, dataSize) : dataSize;
31
6
  export const checkNumEquals = (custom, data) => {
32
7
  if (custom != data)
33
8
  throw new Error(`value mismatch: (constant) layout value: ${custom}, data value: ${data}`);
34
9
  };
35
- export const checkBytesTypeEqual = (custom, data, opts) => {
36
- const toSlice = (bytes, slice) => slice === undefined
37
- ? [0, bytes.length]
38
- : Array.isArray(slice)
39
- ? slice
40
- : [slice, bytes.length];
41
- const [customStart, customEnd] = toSlice(custom, opts?.customSlice);
42
- const [dataStart, dataEnd] = toSlice(data, opts?.dataSlize);
43
- const length = customEnd - customStart;
44
- checkSize(length, dataEnd - dataStart);
10
+ export const checkUint8ArrayDeeplyEqual = (custom, data) => {
11
+ checkUint8ArraySize(custom, data.length);
45
12
  for (let i = 0; i < custom.length; ++i)
46
- if (custom[i + customStart] !== data[i + dataStart])
47
- throw new Error(`binary data mismatch: ` +
48
- `layout value: ${custom}, offset: ${customStart}, data value: ${data}, offset: ${dataStart}`);
13
+ if (custom[i] !== data[i])
14
+ throw new Error(`binary data mismatch: layout value: ${custom}, data value: ${data}`);
49
15
  };
16
+ export function getBytesItemSize(bytesItem) {
17
+ if ("size" in bytesItem && bytesItem.size !== undefined)
18
+ return bytesItem.size;
19
+ if (isBytesType(bytesItem.custom))
20
+ return bytesItem.custom.length;
21
+ if (isBytesType(bytesItem?.custom?.from))
22
+ return bytesItem.custom.from.length;
23
+ return null;
24
+ }
50
25
  export function findIdLayoutPair(item, data) {
51
26
  const id = data[item.idTag ?? "id"];
52
27
  return item.layouts.find(([idOrConversionId]) => (Array.isArray(idOrConversionId) ? idOrConversionId[1] : idOrConversionId) == id);
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/utils/layout/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/utils/layout/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,WAAW,EAAE,MAAM,UAAU,CAAC;AAE1E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAAkB,EAAE,IAAY,EAAQ,EAAE;IAC5E,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI;QACxB,MAAM,IAAI,KAAK,CACb,sCAAsC,MAAM,CAAC,MAAM,gBAAgB,IAAI,EAAE,CAC1E,CAAC;AACN,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAuB,EAAE,IAAqB,EAAQ,EAAE;IACrF,IAAI,MAAM,IAAI,IAAI;QAChB,MAAM,IAAI,KAAK,CACb,4CAA4C,MAAM,iBAAiB,IAAI,EAAE,CAC1E,CAAC;AACN,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,MAAkB,EAAE,IAAgB,EAAQ,EAAE;IACvF,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,uCAAuC,MAAM,iBAAiB,IAAI,EAAE,CACrE,CAAC;AACR,CAAC,CAAA;AAED,MAAM,UAAU,gBAAgB,CAAC,SAA0B;IACzD,IAAI,MAAM,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS;QACrD,OAAO,SAAS,CAAC,IAAI,CAAC;IAExB,IAAI,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC;QAC/B,OAAO,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;IAEjC,IAAI,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC;QACtC,OAAO,SAAU,CAAC,MAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IAExC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAsB,EAAE,IAAS;IAChE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;IACpC,OAAQ,IAAI,CAAC,OAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,EAAE,CACzD,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAChF,CAAC;AACL,CAAC"}