@layerzerolabs/lz-serdes 3.0.2-initia.5 → 3.0.2
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/CHANGELOG.md +0 -11
- package/dist/index.cjs +6 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.mjs +6 -0
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -18
package/CHANGELOG.md
CHANGED
|
@@ -1,16 +1,5 @@
|
|
|
1
1
|
# @layerzerolabs/lz-serdes
|
|
2
2
|
|
|
3
|
-
## 3.0.2-initia.5
|
|
4
|
-
|
|
5
|
-
### Patch Changes
|
|
6
|
-
|
|
7
|
-
- Build new initia,aptos,bsc,movement snpashot images(initiad upgrade to 0.5.6)
|
|
8
|
-
- Updated dependencies
|
|
9
|
-
- @layerzerolabs/lz-core@3.0.2-initia.5
|
|
10
|
-
- @layerzerolabs/tron-utilities@3.0.2-initia.5
|
|
11
|
-
- @layerzerolabs/lz-utilities@3.0.2-initia.5
|
|
12
|
-
- @layerzerolabs/lz-aptos-sdk-v1@3.0.2-initia.5
|
|
13
|
-
|
|
14
3
|
## 3.0.2
|
|
15
4
|
|
|
16
5
|
### Patch Changes
|
package/dist/index.cjs
CHANGED
|
@@ -213,6 +213,12 @@ var Deserializer = class {
|
|
|
213
213
|
this.offset += length;
|
|
214
214
|
return bytes;
|
|
215
215
|
}
|
|
216
|
+
remaining() {
|
|
217
|
+
return this.buffer.byteLength - this.offset;
|
|
218
|
+
}
|
|
219
|
+
rewind(length) {
|
|
220
|
+
this.offset -= length;
|
|
221
|
+
}
|
|
216
222
|
/**
|
|
217
223
|
* Deserializes a string. UTF8 string is supported. Reads the string's bytes length "l" first,
|
|
218
224
|
* and then reads "l" bytes of content. Decodes the byte array into a string.
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/consts.ts","../src/serializer.ts","../src/deserializer.ts","../src/helper.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAOO,IAAM,gBAAuB;AAC7B,IAAM,iBAAyB;AAC/B,IAAM,iBAAyB;AAC/B,IAAM,kBAA0B;AAChC,IAAM,mBAA4B;AAClC,IAAM,mBAA4B;;;ACGlC,IAAM,aAAN,MAAiB;AAAA,EAMpB,YAAY,eAAe,MAAM;AAC7B,SAAK,eAAe;AACpB,SAAK,SAAS,IAAI,YAAY,EAAE;AAChC,SAAK,SAAS;AAAA,EAClB;AAAA,EAEQ,2BAA2B,OAAqB;AACpD,WAAO,KAAK,OAAO,aAAa,KAAK,SAAS,OAAO;AACjD,YAAM,YAAY,IAAI,YAAY,KAAK,OAAO,aAAa,CAAC;AAC5D,UAAI,WAAW,SAAS,EAAE,IAAI,IAAI,WAAW,KAAK,MAAM,CAAC;AACzD,WAAK,SAAS;AAAA,IAClB;AAAA,EACJ;AAAA,EAEU,UAAU,QAAqB;AACrC,SAAK,2BAA2B,OAAO,MAAM;AAC7C,QAAI,WAAW,KAAK,QAAQ,KAAK,MAAM,EAAE,IAAI,MAAM;AACnD,SAAK,UAAU,OAAO;AAAA,EAC1B;AAAA,EAEQ,sBACJ,IACA,aACA,OACI;AACJ,SAAK,2BAA2B,WAAW;AAC3C,UAAM,KAAK,IAAI,SAAS,KAAK,QAAQ,KAAK,MAAM;AAChD,OAAG,MAAM,IAAI,CAAC,GAAG,OAAO,KAAK,YAAY,CAAC;AAC1C,SAAK,UAAU;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,aAAa,OAAqB;AAC9B,UAAM,cAAc,IAAI,YAAY;AACpC,SAAK,eAAe,YAAY,OAAO,KAAK,CAAC;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,eAAe,OAAoB;AAC/B,QAAI,KAAK,cAAc;AACnB,WAAK,sBAAsB,MAAM,MAAM;AAAA,IAC3C,OAAO;AACH,WAAK,sBAAsB,MAAM,MAAM;AAAA,IAC3C;AACA,SAAK,UAAU,KAAK;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,oBAAoB,OAAoB;AACpC,SAAK,UAAU,KAAK;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,cAAc,OAAsB;AAChC,QAAI,OAAO,UAAU,WAAW;AAC5B,YAAM,IAAI,MAAM,6BAA6B;AAAA,IACjD;AACA,UAAM,YAAY,QAAQ,IAAI;AAC9B,SAAK,UAAU,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;AAAA,EAC9C;AAAA,EAQA,YAAY,OAAoB;AAC5B,SAAK,UAAU,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;AAAA,EAC1C;AAAA,EAiBA,aAAa,OAAqB;AAE9B,SAAK,sBAAsB,SAAS,UAAU,WAAW,GAAG,KAAK;AAAA,EACrE;AAAA,EAiBA,aAAa,OAAqB;AAE9B,SAAK,sBAAsB,SAAS,UAAU,WAAW,GAAG,KAAK;AAAA,EACrE;AAAA,EAiBA,aAAa,OAAwB;AACjC,UAAM,MAAM,OAAO,MAAM,SAAS,CAAC,IAAI,OAAO,cAAc;AAC5D,UAAM,OAAO,OAAO,MAAM,SAAS,CAAC,KAAK,OAAO,EAAE;AAElD,UAAM,QAAQ,KAAK,eAAe,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,GAAG;AAC1D,UAAM,QAAQ,CAAC,MAAM;AACjB,WAAK,aAAa,OAAO,CAAC,CAAC;AAAA,IAC/B,CAAC;AAAA,EACL;AAAA,EAQA,cAAc,OAAwB;AAClC,UAAM,MAAM,OAAO,MAAM,SAAS,CAAC,IAAI;AACvC,UAAM,OAAO,OAAO,MAAM,SAAS,CAAC,KAAK,OAAO,EAAE;AAElD,UAAM,QAAQ,KAAK,eAAe,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,GAAG;AAC1D,UAAM,QAAQ,CAAC,MAAM;AACjB,WAAK,aAAa,CAAC;AAAA,IACvB,CAAC;AAAA,EACL;AAAA,EAQA,cAAc,OAAwB;AAClC,UAAM,MAAM,OAAO,MAAM,SAAS,CAAC,IAAI;AACvC,UAAM,OAAO,OAAO,MAAM,SAAS,CAAC,KAAK,OAAO,GAAG;AAEnD,UAAM,QAAQ,KAAK,eAAe,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,GAAG;AAC1D,UAAM,QAAQ,CAAC,MAAM;AACjB,WAAK,cAAc,CAAC;AAAA,IACxB,CAAC;AAAA,EACL;AAAA,EAQA,sBAAsB,KAAmB;AACrC,QAAI,QAAQ;AACZ,UAAM,aAAa,CAAC;AACpB,WAAO,UAAU,MAAM,GAAG;AACtB,iBAAW,KAAM,QAAQ,MAAQ,GAAI;AACrC,iBAAW;AAAA,IACf;AACA,eAAW,KAAK,KAAK;AACrB,SAAK,UAAU,IAAI,WAAW,UAAU,CAAC;AAAA,EAC7C;AAAA,EAQA,sBAAsB,KAAmB;AACrC,QAAI,QAAQ;AACZ,UAAM,aAAsB,CAAC;AAE7B,eAAW,QAAQ,QAAQ,GAAI;AAC/B,WAAO,UAAU,MAAM,GAAG;AACtB,iBAAW;AACX,YAAM,OAAQ,QAAQ,MAAQ;AAC9B,iBAAW,QAAQ,IAAI;AAAA,IAC3B;AAEA,SAAK,UAAU,IAAI,WAAW,UAAU,CAAC;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAKA,WAAkB;AACd,WAAO,IAAI,WAAW,KAAK,MAAM,EAAE,MAAM,GAAG,KAAK,MAAM;AAAA,EAC3D;AACJ;AAhJI;AAAA,EADC,iBAAiB,GAAG,aAAa;AAAA,GAnGzB,WAoGT;AAmBA;AAAA,EADC,iBAAiB,GAAG,cAAc;AAAA,GAtH1B,WAuHT;AAoBA;AAAA,EADC,iBAAiB,GAAG,cAAc;AAAA,GA1I1B,WA2IT;AAoBA;AAAA,EADC,iBAAiB,OAAO,CAAC,GAAG,eAAe;AAAA,GA9JnC,WA+JT;AAgBA;AAAA,EADC,iBAAiB,OAAO,CAAC,GAAG,gBAAgB;AAAA,GA9KpC,WA+KT;AAgBA;AAAA,EADC,iBAAiB,OAAO,CAAC,GAAG,gBAAgB;AAAA,GA9LpC,WA+LT;AAgBA;AAAA,EADC,iBAAiB,GAAG,cAAc;AAAA,GA9M1B,WA+MT;AAiBA;AAAA,EADC,iBAAiB,GAAG,cAAc;AAAA,GA/N1B,WAgOT;AA4BJ,SAAS,iBAAsC,UAAa,UAAa,SAAkB;AACvF,SAAO,CAAC,QAAiB,aAAqB,eAAuD;AAEjG,UAAM,gBAAgB,WAAW;AAEjC,eAAW,QAAQ,SAAS,KAAK,OAAwB;AACrD,YAAM,cAAc,OAAO,MAAM,SAAS,CAAC;AAC3C,UAAI,cAAc,OAAO,SAAS,SAAS,CAAC,KAAK,cAAc,OAAO,SAAS,SAAS,CAAC,GAAG;AACxF,cAAM,IAAI,MAAM,WAAW,uBAAuB;AAAA,MACtD;AACA,oBAAc,MAAM,MAAM,CAAC,KAAK,CAAC;AAAA,IACrC;AACA,WAAO;AAAA,EAEX;AACJ;;;AClRO,IAAM,eAAN,MAAmB;AAAA,EAMtB,YAAY,MAAa,eAAe,MAAM;AAC1C,SAAK,eAAe;AAEpB,SAAK,SAAS,IAAI,YAAY,KAAK,MAAM;AACzC,QAAI,WAAW,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC;AACvC,SAAK,SAAS;AAAA,EAClB;AAAA,EAEQ,KAAK,QAA6B;AACtC,QAAI,KAAK,SAAS,SAAS,KAAK,OAAO,YAAY;AAC/C,YAAM,IAAI,MAAM,8BAA8B;AAAA,IAClD;AAEA,UAAM,QAAQ,KAAK,OAAO,MAAM,KAAK,QAAQ,KAAK,SAAS,MAAM;AACjE,SAAK,UAAU;AACf,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,iBAAyB;AACrB,UAAM,QAAQ,KAAK,iBAAiB;AACpC,UAAM,cAAc,IAAI,YAAY;AACpC,WAAO,YAAY,OAAO,KAAK;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,mBAA0B;AACtB,UAAM,MAAM,KAAK,eAAe,KAAK,wBAAwB,IAAI,KAAK,wBAAwB;AAE9F,WAAO,IAAI,WAAW,KAAK,KAAK,GAAG,CAAC;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,sBAAsB,KAAoB;AACtC,WAAO,IAAI,WAAW,KAAK,KAAK,GAAG,CAAC;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,kBAA2B;AACvB,UAAM,OAAO,IAAI,WAAW,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;AAC3C,QAAI,SAAS,KAAK,SAAS,GAAG;AAC1B,YAAM,IAAI,MAAM,uBAAuB;AAAA,IAC3C;AACA,WAAO,SAAS;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,gBAAuB;AACnB,WAAO,IAAI,SAAS,KAAK,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,iBAAyB;AACrB,WAAO,IAAI,SAAS,KAAK,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,KAAK,YAAY;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,iBAAyB;AACrB,WAAO,IAAI,SAAS,KAAK,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,KAAK,YAAY;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,iBAAyB;AACrB,UAAM,MAAM,KAAK,eAAe;AAChC,UAAM,OAAO,KAAK,eAAe;AAEjC,UAAM,SAAS,KAAK,eAAe,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,GAAG;AAC3D,WAAO,OAAQ,OAAO,OAAO,CAAC,CAAC,KAAK,OAAO,EAAE,IAAK,OAAO,OAAO,CAAC,CAAC,CAAC;AAAA,EACvE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,kBAA2B;AACvB,UAAM,MAAM,KAAK,eAAe;AAChC,UAAM,OAAO,KAAK,eAAe;AAEjC,UAAM,SAAS,KAAK,eAAe,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,GAAG;AAC3D,WAAO,OAAQ,OAAO,CAAC,KAAK,OAAO,EAAE,IAAK,OAAO,CAAC,CAAC;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,kBAA2B;AACvB,UAAM,MAAM,KAAK,gBAAgB;AACjC,UAAM,OAAO,KAAK,gBAAgB;AAElC,UAAM,SAAS,KAAK,eAAe,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,GAAG;AAC3D,WAAO,OAAQ,OAAO,CAAC,KAAK,OAAO,GAAG,IAAK,OAAO,CAAC,CAAC;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,0BAAkC;AAC9B,QAAI,QAAQ,OAAO,CAAC;AACpB,QAAI,QAAQ;AAEZ,WAAO,QAAQ,gBAAgB;AAC3B,YAAM,OAAO,KAAK,cAAc;AAChC,eAAS,OAAO,OAAO,GAAI,KAAK,OAAO,KAAK;AAE5C,WAAK,OAAO,SAAU,GAAG;AACrB;AAAA,MACJ;AACA,eAAS;AAAA,IACb;AAEA,QAAI,QAAQ,gBAAgB;AACxB,YAAM,IAAI,MAAM,qDAAqD;AAAA,IACzE;AAEA,WAAO,OAAO,KAAK;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,0BAAkC;AAC9B,QAAI,QAAQ,OAAO,CAAC;AAEpB,WAAO,QAAQ,gBAAgB;AAC3B,YAAM,OAAO,KAAK,cAAc;AAChC,eAAS,OAAO,OAAO,GAAI;AAE3B,WAAK,OAAO,SAAU,GAAG;AACrB;AAAA,MACJ;AACA,cAAQ,SAAS,OAAO,CAAC;AAAA,IAC7B;AAEA,QAAI,QAAQ,gBAAgB;AACxB,YAAM,IAAI,MAAM,qDAAqD;AAAA,IACzE;AAEA,WAAO,OAAO,KAAK;AAAA,EACvB;AACJ;;;ACtMO,SAAS,gBAAwC,OAAe,YAA8B;AACjG,aAAW,sBAAsB,MAAM,MAAM;AAC7C,QAAM,QAAQ,CAAC,SAAY;AACvB,SAAK,UAAU,UAAU;AAAA,EAC7B,CAAC;AACL;AAMO,SAAS,wBAAwB,OAAkB,MAAqB;AAC3E,QAAM,aAAa,IAAI,WAAW;AAClC,aAAW,sBAAsB,MAAM,MAAM;AAE7C,QAAM,IAAK,WAAsC,IAAI;AACrD,MAAI,OAAO,MAAM,YAAY;AACzB,UAAM,IAAI,MAAM,iBAAiB,IAAI,qCAAqC;AAAA,EAC9E;AAEA,QAAM,QAAQ,CAAC,SAAS;AACpB,MAAE,KAAK,YAAY,IAAI;AAAA,EAC3B,CAAC;AACD,SAAO,WAAW,SAAS;AAC/B;AAKO,SAAS,kBAAqB,cAA4B,KAA+B;AAC5F,QAAM,SAAS,aAAa,wBAAwB;AACpD,QAAM,OAAY,CAAC;AACnB,WAAS,IAAI,GAAG,IAAI,QAAQ,KAAK,GAAG;AAChC,SAAK,KAAK,IAAI,YAAY,YAAY,CAAC;AAAA,EAC3C;AACA,SAAO;AACX;AAEO,SAAS,WAAmC,OAAiB;AAChE,QAAM,aAAa,IAAI,WAAW;AAClC,QAAM,UAAU,UAAU;AAC1B,SAAO,WAAW,SAAS;AAC/B;AAEO,SAAS,mBAAmB,OAAyB;AACxD,QAAM,aAAa,IAAI,WAAW;AAClC,aAAW,aAAa,KAAK;AAC7B,SAAO,WAAW,SAAS;AAC/B;AAEO,SAAS,eAAe,OAAqB;AAChD,QAAM,aAAa,IAAI,WAAW;AAClC,aAAW,YAAY,KAAK;AAC5B,SAAO,WAAW,SAAS;AAC/B;AAEO,SAAS,gBAAgB,OAAsB;AAClD,QAAM,aAAa,IAAI,WAAW;AAClC,aAAW,aAAa,KAAK;AAC7B,SAAO,WAAW,SAAS;AAC/B;AAEO,SAAS,gBAAgB,OAAsB;AAClD,QAAM,aAAa,IAAI,WAAW;AAClC,aAAW,aAAa,KAAK;AAC7B,SAAO,WAAW,SAAS;AAC/B;AAEO,SAAS,iBAAiB,OAAyB;AACtD,QAAM,aAAa,IAAI,WAAW;AAClC,aAAW,cAAc,KAAK;AAC9B,SAAO,WAAW,SAAS;AAC/B;AAEO,SAAS,iBAAiB,OAAyB;AACtD,QAAM,aAAa,IAAI,WAAW;AAClC,aAAW,cAAc,KAAK;AAC9B,SAAO,WAAW,SAAS;AAC/B;AAEO,SAAS,iBAAiB,OAAuB;AACpD,QAAM,aAAa,IAAI,WAAW;AAClC,aAAW,cAAc,KAAK;AAC9B,SAAO,WAAW,SAAS;AAC/B;AAEO,SAAS,gBAAgB,OAAsB;AAClD,QAAM,aAAa,IAAI,WAAW;AAClC,aAAW,aAAa,KAAK;AAC7B,SAAO,WAAW,SAAS;AAC/B;AAEO,SAAS,kBAAkB,OAAqB;AACnD,QAAM,aAAa,IAAI,WAAW;AAClC,aAAW,eAAe,KAAK;AAC/B,SAAO,WAAW,SAAS;AAC/B;AAEO,SAAS,uBAAuB,OAAqB;AACxD,QAAM,aAAa,IAAI,WAAW;AAClC,aAAW,oBAAoB,KAAK;AACpC,SAAO,WAAW,SAAS;AAC/B","sourcesContent":["// Copyright © Aptos Foundation\n// Copyright © LayerZero Labs\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Uint128, Uint16, Uint256, Uint32, Uint64, Uint8 } from './types'\n\n// Upper bound values for uint8, uint16, uint64 and uint128\nexport const MAX_U8_NUMBER: Uint8 = 255\nexport const MAX_U16_NUMBER: Uint16 = 65535\nexport const MAX_U32_NUMBER: Uint32 = 4294967295\nexport const MAX_U64_BIG_INT: Uint64 = 18446744073709551615n\nexport const MAX_U128_BIG_INT: Uint128 = 340282366920938463463374607431768211455n\nexport const MAX_U256_BIG_INT: Uint256 = 115792089237316195423570985008687907853269984665640564039457584007913129639935n\n","// Copyright © Aptos Foundation\n// Copyright © LayerZero Labs\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable no-bitwise */\nimport {\n MAX_U128_BIG_INT,\n MAX_U16_NUMBER,\n MAX_U256_BIG_INT,\n MAX_U32_NUMBER,\n MAX_U64_BIG_INT,\n MAX_U8_NUMBER,\n} from './consts'\nimport { AnyNumber, Bytes, Uint16, Uint32, Uint8 } from './types'\n\nexport class Serializer {\n private buffer: ArrayBuffer\n\n private offset: number\n public readonly littleEndian: boolean\n\n constructor(littleEndian = true) {\n this.littleEndian = littleEndian\n this.buffer = new ArrayBuffer(64)\n this.offset = 0\n }\n\n private ensureBufferWillHandleSize(bytes: number): void {\n while (this.buffer.byteLength < this.offset + bytes) {\n const newBuffer = new ArrayBuffer(this.buffer.byteLength * 2)\n new Uint8Array(newBuffer).set(new Uint8Array(this.buffer))\n this.buffer = newBuffer\n }\n }\n\n protected serialize(values: Bytes): void {\n this.ensureBufferWillHandleSize(values.length)\n new Uint8Array(this.buffer, this.offset).set(values)\n this.offset += values.length\n }\n\n private serializeWithFunction(\n fn: (byteOffset: number, value: number, littleEndian?: boolean) => void,\n bytesLength: number,\n value: number\n ): void {\n this.ensureBufferWillHandleSize(bytesLength)\n const dv = new DataView(this.buffer, this.offset)\n fn.apply(dv, [0, value, this.littleEndian])\n this.offset += bytesLength\n }\n\n /**\n * Serializes a string. UTF8 string is supported. Serializes the string's bytes length \"l\" first,\n * and then serializes \"l\" bytes of the string content.\n *\n * layout for \"string\": string_length | string_content. string_length is the bytes length of\n * the string that is uleb128/ubeb128 encoded. string_length is a u32 integer.\n *\n * @example\n * ```ts\n * const serializer = new Serializer();\n * serializer.serializeStr(\"çå∞≠¢õß∂ƒ∫\");\n * assert(serializer.getBytes() === new Uint8Array([24, 0xc3, 0xa7, 0xc3, 0xa5, 0xe2, 0x88, 0x9e,\n * 0xe2, 0x89, 0xa0, 0xc2, 0xa2, 0xc3, 0xb5, 0xc3, 0x9f, 0xe2, 0x88, 0x82, 0xc6, 0x92, 0xe2, 0x88, 0xab]));\n * ```\n */\n serializeStr(value: string): void {\n const textEncoder = new TextEncoder()\n this.serializeBytes(textEncoder.encode(value))\n }\n\n /**\n * Serializes an array of bytes.\n *\n * layout for \"bytes\": bytes_length | bytes. bytes_length is the length of the bytes array that is\n * uleb128/ubeb128 encoded. bytes_length is a u32 integer.\n */\n serializeBytes(value: Bytes): void {\n if (this.littleEndian) {\n this.serializeU32AsUleb128(value.length)\n } else {\n this.serializeU32AsUbeb128(value.length)\n }\n this.serialize(value)\n }\n\n /**\n * Serializes an array of bytes with known length. Therefore length doesn't need to be\n * serialized to help deserialization. When deserializing, the number of\n * bytes to deserialize needs to be passed in.\n */\n serializeFixedBytes(value: Bytes): void {\n this.serialize(value)\n }\n\n /**\n * Serializes a boolean value.\n *\n * layout for \"boolean\": One byte. \"0x01\" for True and \"0x00\" for False.\n */\n serializeBool(value: boolean): void {\n if (typeof value !== 'boolean') {\n throw new Error('Value needs to be a boolean')\n }\n const byteValue = value ? 1 : 0\n this.serialize(new Uint8Array([byteValue]))\n }\n\n /**\n * Serializes a uint8 number.\n *\n * layout for \"uint8\": One byte. Binary format in little-endian representation.\n */\n @checkNumberRange(0, MAX_U8_NUMBER)\n serializeU8(value: Uint8): void {\n this.serialize(new Uint8Array([value]))\n }\n\n /**\n * Serializes a uint16 number.\n *\n * layout for \"uint16\": Two bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const serializer = new Serializer(true);\n * serializer.serializeU16(4660);\n * assert(serializer.getBytes() === new Uint8Array([0x34, 0x12]));\n * const serializer = new Serializer(false);\n * serializer.serializeU16(4660);\n * assert(serializer.getBytes() === new Uint8Array([0x12, 0x34]));\n * ```\n */\n @checkNumberRange(0, MAX_U16_NUMBER)\n serializeU16(value: Uint16): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.serializeWithFunction(DataView.prototype.setUint16, 2, value)\n }\n\n /**\n * Serializes a uint32 number.\n *\n * layout for \"uint32\": Four bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const serializer = new Serializer(true);\n * serializer.serializeU32(305419896);\n * assert(serializer.getBytes() === new Uint8Array([0x78, 0x56, 0x34, 0x12]));\n * const serializer = new Serializer(false);\n * serializer.serializeU32(305419896);\n * assert(serializer.getBytes() === new Uint8Array([0x12, 0x34, 0x56, 0x78]));\n * ```\n */\n @checkNumberRange(0, MAX_U32_NUMBER)\n serializeU32(value: Uint32): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.serializeWithFunction(DataView.prototype.setUint32, 4, value)\n }\n\n /**\n * Serializes a uint64 number.\n *\n * layout for \"uint64\": Eight bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const serializer = new Serializer(true);\n * serializer.serializeU64(1311768467750121216);\n * assert(serializer.getBytes() === new Uint8Array([0x00, 0xEF, 0xCD, 0xAB, 0x78, 0x56, 0x34, 0x12]));\n * const serializer = new Serializer(false);\n * serializer.serializeU64(1311768467750121216);\n * assert(serializer.getBytes() === new Uint8Array([0x12, 0x34, 0x56, 0x78, 0xAB, 0xCD, 0xEF, 0x00]));\n * ```\n */\n @checkNumberRange(BigInt(0), MAX_U64_BIG_INT)\n serializeU64(value: AnyNumber): void {\n const low = BigInt(value.toString()) & BigInt(MAX_U32_NUMBER)\n const high = BigInt(value.toString()) >> BigInt(32)\n\n const array = this.littleEndian ? [low, high] : [high, low]\n array.forEach((x) => {\n this.serializeU32(Number(x))\n })\n }\n\n /**\n * Serializes a uint128 number.\n *\n * layout for \"uint128\": Sixteen bytes. Binary format in little-endian representation.\n */\n @checkNumberRange(BigInt(0), MAX_U128_BIG_INT)\n serializeU128(value: AnyNumber): void {\n const low = BigInt(value.toString()) & MAX_U64_BIG_INT\n const high = BigInt(value.toString()) >> BigInt(64)\n\n const array = this.littleEndian ? [low, high] : [high, low]\n array.forEach((x) => {\n this.serializeU64(x)\n })\n }\n\n /**\n * Serializes a uint256 number.\n *\n * layout for \"uint256\": Sixteen bytes. Binary format in little-endian representation.\n */\n @checkNumberRange(BigInt(0), MAX_U256_BIG_INT)\n serializeU256(value: AnyNumber): void {\n const low = BigInt(value.toString()) & MAX_U128_BIG_INT\n const high = BigInt(value.toString()) >> BigInt(128)\n\n const array = this.littleEndian ? [low, high] : [high, low]\n array.forEach((x) => {\n this.serializeU128(x)\n })\n }\n\n /**\n * Serializes a uint32 number with uleb128.\n *\n * use uleb128 encoding in two cases: (1) lengths of variable-length sequences and (2) tags of enum values\n */\n @checkNumberRange(0, MAX_U32_NUMBER)\n serializeU32AsUleb128(val: Uint32): void {\n let value = val\n const valueArray = []\n while (value >>> 7 !== 0) {\n valueArray.push((value & 0x7f) | 0x80)\n value >>>= 7\n }\n valueArray.push(value)\n this.serialize(new Uint8Array(valueArray))\n }\n\n /**\n * Serializes a uint32 number with unsigned Variable-Length Big-Endian Encoding.\n *\n * use ubeb128 encoding in two cases: (1) lengths of variable-length sequences and (2) tags of enum values\n */\n @checkNumberRange(0, MAX_U32_NUMBER)\n serializeU32AsUbeb128(val: Uint32): void {\n let value = val\n const valueArray: Uint8[] = []\n\n valueArray.unshift(value & 0x7f)\n while (value >>> 7 !== 0) {\n value >>>= 7\n const byte = (value & 0x7f) | 0x80\n valueArray.unshift(byte)\n }\n\n this.serialize(new Uint8Array(valueArray))\n }\n\n /**\n * Returns the buffered bytes\n */\n getBytes(): Bytes {\n return new Uint8Array(this.buffer).slice(0, this.offset)\n }\n}\n\n/**\n * Creates a decorator to make sure the arg value of the decorated function is within a range.\n * @param minValue The arg value of decorated function must >= minValue\n * @param maxValue The arg value of decorated function must <= maxValue\n * @param message Error message\n */\nfunction checkNumberRange<T extends AnyNumber>(minValue: T, maxValue: T, message?: string) {\n return (target: unknown, propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor => {\n /* eslint-disable @typescript-eslint/no-unsafe-assignment */\n const childFunction = descriptor.value as (value: AnyNumber) => void\n // eslint-disable-next-line no-param-reassign\n descriptor.value = function deco(value: AnyNumber): void {\n const valueBigInt = BigInt(value.toString())\n if (valueBigInt > BigInt(maxValue.toString()) || valueBigInt < BigInt(minValue.toString())) {\n throw new Error(message ?? 'Value is out of range')\n }\n childFunction.apply(this, [value])\n }\n return descriptor\n /* eslint-enable @typescript-eslint/no-unsafe-assignment */\n }\n}\n","// Copyright © Aptos Foundation\n// Copyright © LayerZero Labs\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable no-bitwise */\nimport { MAX_U32_NUMBER } from './consts'\nimport { Bytes, Uint128, Uint16, Uint256, Uint32, Uint64, Uint8 } from './types'\n\nexport class Deserializer {\n private buffer: ArrayBuffer\n\n private offset: number\n public readonly littleEndian: boolean\n\n constructor(data: Bytes, littleEndian = true) {\n this.littleEndian = littleEndian\n // copies data to prevent outside mutation of buffer.\n this.buffer = new ArrayBuffer(data.length)\n new Uint8Array(this.buffer).set(data, 0)\n this.offset = 0\n }\n\n private read(length: number): ArrayBuffer {\n if (this.offset + length > this.buffer.byteLength) {\n throw new Error('Reached to the end of buffer')\n }\n\n const bytes = this.buffer.slice(this.offset, this.offset + length)\n this.offset += length\n return bytes\n }\n\n /**\n * Deserializes a string. UTF8 string is supported. Reads the string's bytes length \"l\" first,\n * and then reads \"l\" bytes of content. Decodes the byte array into a string.\n *\n * layout for \"string\": string_length | string_content. string_length is the bytes length of\n * the string that is uleb128/ubeb128 encoded. string_length is a u32 integer.\n *\n * @example\n * ```ts\n * const deserializer = new Deserializer(new Uint8Array([24, 0xc3, 0xa7, 0xc3, 0xa5, 0xe2, 0x88, 0x9e,\n * 0xe2, 0x89, 0xa0, 0xc2, 0xa2, 0xc3, 0xb5, 0xc3, 0x9f, 0xe2, 0x88, 0x82, 0xc6, 0x92, 0xe2, 0x88, 0xab]), true);\n * assert(deserializer.deserializeStr() === \"çå∞≠¢õß∂ƒ∫\");\n * ```\n */\n deserializeStr(): string {\n const value = this.deserializeBytes()\n const textDecoder = new TextDecoder()\n return textDecoder.decode(value)\n }\n\n /**\n * Deserializes an array of bytes.\n *\n * layout for \"bytes\": bytes_length | bytes. bytes_length is the length of the bytes array that is\n * uleb128/ubeb128 encoded. bytes_length is a u32 integer.\n */\n deserializeBytes(): Bytes {\n const len = this.littleEndian ? this.deserializeUleb128AsU32() : this.deserializeUbeb128AsU32()\n\n return new Uint8Array(this.read(len))\n }\n\n /**\n * Deserializes an array of bytes. The number of bytes to read is already known.\n *\n */\n deserializeFixedBytes(len: number): Bytes {\n return new Uint8Array(this.read(len))\n }\n\n /**\n * Deserializes a boolean value.\n *\n * layout for \"boolean\": One byte. \"0x01\" for True and \"0x00\" for False.\n */\n deserializeBool(): boolean {\n const bool = new Uint8Array(this.read(1))[0]\n if (bool !== 1 && bool !== 0) {\n throw new Error('Invalid boolean value')\n }\n return bool === 1\n }\n\n /**\n * Deserializes a uint8 number.\n *\n * layout for \"uint8\": One byte. Binary format in little-endian representation.\n */\n deserializeU8(): Uint8 {\n return new DataView(this.read(1)).getUint8(0)\n }\n\n /**\n * Deserializes a uint16 number.\n *\n * layout for \"uint16\": Two bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const deserializer = new Deserializer(new Uint8Array([0x34, 0x12]), true);\n * assert(deserializer.deserializeU16() === 4660);\n * const deserializer = new Deserializer(new Uint8Array([0x12, 0x34]), false);\n * assert(deserializer.deserializeU16() === 4660);\n * ```\n */\n deserializeU16(): Uint16 {\n return new DataView(this.read(2)).getUint16(0, this.littleEndian)\n }\n\n /**\n * Deserializes a uint32 number.\n *\n * layout for \"uint32\": Four bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const deserializer = new Deserializer(new Uint8Array([0x78, 0x56, 0x34, 0x12]), true);\n * assert(deserializer.deserializeU32() === 305419896);\n * const deserializer = new Deserializer(new Uint8Array([0x12, 0x34, 0x56, 0x78]), false);\n * assert(deserializer.deserializeU32() === 305419896);\n * ```\n */\n deserializeU32(): Uint32 {\n return new DataView(this.read(4)).getUint32(0, this.littleEndian)\n }\n\n /**\n * Deserializes a uint64 number.\n *\n * layout for \"uint64\": Eight bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const deserializer = new Deserializer(new Uint8Array([0x00, 0xEF, 0xCD, 0xAB, 0x78, 0x56, 0x34, 0x12]), true);\n * assert(deserializer.deserializeU64() === 1311768467750121216);\n * const deserializer = new Deserializer(new Uint8Array([0x12, 0x34, 0x56, 0x78, 0xAB, 0xCD, 0xEF, 0x00]), false);\n * assert(deserializer.deserializeU64() === 1311768467750121216);\n * ```\n */\n deserializeU64(): Uint64 {\n const low = this.deserializeU32()\n const high = this.deserializeU32()\n\n const values = this.littleEndian ? [low, high] : [high, low]\n return BigInt((BigInt(values[1]) << BigInt(32)) | BigInt(values[0]))\n }\n\n /**\n * Deserializes a uint128 number.\n *\n * layout for \"uint128\": Sixteen bytes. Binary format in little-endian representation.\n */\n deserializeU128(): Uint128 {\n const low = this.deserializeU64()\n const high = this.deserializeU64()\n\n const values = this.littleEndian ? [low, high] : [high, low]\n return BigInt((values[1] << BigInt(64)) | values[0])\n }\n\n /**\n * Deserializes a uint256 number.\n *\n * layout for \"uint256\": Thirty-two bytes. Binary format in little-endian representation.\n */\n deserializeU256(): Uint256 {\n const low = this.deserializeU128()\n const high = this.deserializeU128()\n\n const values = this.littleEndian ? [low, high] : [high, low]\n return BigInt((values[1] << BigInt(128)) | values[0])\n }\n\n /**\n * Deserializes a uleb128 encoded uint32 number.\n *\n * use uleb128 encoding in two cases: (1) lengths of variable-length sequences and (2) tags of enum values\n */\n deserializeUleb128AsU32(): Uint32 {\n let value = BigInt(0)\n let shift = 0\n\n while (value < MAX_U32_NUMBER) {\n const byte = this.deserializeU8()\n value |= BigInt(byte & 0x7f) << BigInt(shift)\n\n if ((byte & 0x80) === 0) {\n break\n }\n shift += 7\n }\n\n if (value > MAX_U32_NUMBER) {\n throw new Error('Overflow while parsing uleb128-encoded uint32 value')\n }\n\n return Number(value)\n }\n\n /**\n * Deserializes a unsigned Variable-Length Big-Endian Encoding encoded uint32 number.\n *\n * use ubeb128 encoding in two cases: (1) lengths of variable-length sequences and (2) tags of enum values\n */\n deserializeUbeb128AsU32(): Uint32 {\n let value = BigInt(0)\n\n while (value < MAX_U32_NUMBER) {\n const byte = this.deserializeU8()\n value |= BigInt(byte & 0x7f)\n\n if ((byte & 0x80) === 0) {\n break\n }\n value = value << BigInt(7)\n }\n\n if (value > MAX_U32_NUMBER) {\n throw new Error('Overflow while parsing ubeb128-encoded uint32 value')\n }\n\n return Number(value)\n }\n}\n","// Copyright © Aptos Foundation\n// Copyright © LayerZero Labs\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Deserializer } from './deserializer'\nimport { Serializer } from './serializer'\nimport { AnyNumber, Bytes, Seq, Uint16, Uint32, Uint8 } from './types'\n\ninterface Serializable {\n serialize(serializer: Serializer): void\n}\n\ninterface Deserializable<T> {\n deserialize(deserializer: Deserializer): T\n}\n\n// eslint-disable-next-line @typescript-eslint/consistent-indexed-object-style\ninterface ISerializer {\n [key: string]: (item: unknown) => void\n}\n\n/**\n * Serializes a vector values that are \"Serializable\".\n */\nexport function serializeVector<T extends Serializable>(value: Seq<T>, serializer: Serializer): void {\n serializer.serializeU32AsUleb128(value.length)\n value.forEach((item: T) => {\n item.serialize(serializer)\n })\n}\n\n/**\n * Serializes a vector with specified item serialization function.\n * Very dynamic function and bypasses static typechecking.\n */\nexport function serializeVectorWithFunc(value: unknown[], func: string): Bytes {\n const serializer = new Serializer()\n serializer.serializeU32AsUleb128(value.length)\n\n const f = (serializer as unknown as ISerializer)[func]\n if (typeof f !== 'function') {\n throw new Error(`The function '${func}' does not exist on the serializer.`)\n }\n\n value.forEach((item) => {\n f.call(serializer, item)\n })\n return serializer.getBytes()\n}\n\n/**\n * Deserializes a vector of values.\n */\nexport function deserializeVector<T>(deserializer: Deserializer, cls: Deserializable<T>): any[] {\n const length = deserializer.deserializeUleb128AsU32()\n const list: T[] = []\n for (let i = 0; i < length; i += 1) {\n list.push(cls.deserialize(deserializer))\n }\n return list\n}\n\nexport function bcsToBytes<T extends Serializable>(value: T): Bytes {\n const serializer = new Serializer()\n value.serialize(serializer)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeUint64(value: AnyNumber): Bytes {\n const serializer = new Serializer()\n serializer.serializeU64(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeU8(value: Uint8): Bytes {\n const serializer = new Serializer()\n serializer.serializeU8(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeU16(value: Uint16): Bytes {\n const serializer = new Serializer()\n serializer.serializeU16(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeU32(value: Uint32): Bytes {\n const serializer = new Serializer()\n serializer.serializeU32(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeU128(value: AnyNumber): Bytes {\n const serializer = new Serializer()\n serializer.serializeU128(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeU256(value: AnyNumber): Bytes {\n const serializer = new Serializer()\n serializer.serializeU256(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeBool(value: boolean): Bytes {\n const serializer = new Serializer()\n serializer.serializeBool(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeStr(value: string): Bytes {\n const serializer = new Serializer()\n serializer.serializeStr(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeBytes(value: Bytes): Bytes {\n const serializer = new Serializer()\n serializer.serializeBytes(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeFixedBytes(value: Bytes): Bytes {\n const serializer = new Serializer()\n serializer.serializeFixedBytes(value)\n return serializer.getBytes()\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/consts.ts","../src/serializer.ts","../src/deserializer.ts","../src/helper.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright © Aptos Foundation\n// Copyright © LayerZero Labs\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Uint128, Uint16, Uint256, Uint32, Uint64, Uint8 } from './types'\n\n// Upper bound values for uint8, uint16, uint64 and uint128\nexport const MAX_U8_NUMBER: Uint8 = 255\nexport const MAX_U16_NUMBER: Uint16 = 65535\nexport const MAX_U32_NUMBER: Uint32 = 4294967295\nexport const MAX_U64_BIG_INT: Uint64 = 18446744073709551615n\nexport const MAX_U128_BIG_INT: Uint128 = 340282366920938463463374607431768211455n\nexport const MAX_U256_BIG_INT: Uint256 = 115792089237316195423570985008687907853269984665640564039457584007913129639935n\n","// Copyright © Aptos Foundation\n// Copyright © LayerZero Labs\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable no-bitwise */\nimport {\n MAX_U128_BIG_INT,\n MAX_U16_NUMBER,\n MAX_U256_BIG_INT,\n MAX_U32_NUMBER,\n MAX_U64_BIG_INT,\n MAX_U8_NUMBER,\n} from './consts'\nimport { AnyNumber, Bytes, Uint16, Uint32, Uint8 } from './types'\n\nexport class Serializer {\n private buffer: ArrayBuffer\n\n private offset: number\n public readonly littleEndian: boolean\n\n constructor(littleEndian = true) {\n this.littleEndian = littleEndian\n this.buffer = new ArrayBuffer(64)\n this.offset = 0\n }\n\n private ensureBufferWillHandleSize(bytes: number): void {\n while (this.buffer.byteLength < this.offset + bytes) {\n const newBuffer = new ArrayBuffer(this.buffer.byteLength * 2)\n new Uint8Array(newBuffer).set(new Uint8Array(this.buffer))\n this.buffer = newBuffer\n }\n }\n\n protected serialize(values: Bytes): void {\n this.ensureBufferWillHandleSize(values.length)\n new Uint8Array(this.buffer, this.offset).set(values)\n this.offset += values.length\n }\n\n private serializeWithFunction(\n fn: (byteOffset: number, value: number, littleEndian?: boolean) => void,\n bytesLength: number,\n value: number\n ): void {\n this.ensureBufferWillHandleSize(bytesLength)\n const dv = new DataView(this.buffer, this.offset)\n fn.apply(dv, [0, value, this.littleEndian])\n this.offset += bytesLength\n }\n\n /**\n * Serializes a string. UTF8 string is supported. Serializes the string's bytes length \"l\" first,\n * and then serializes \"l\" bytes of the string content.\n *\n * layout for \"string\": string_length | string_content. string_length is the bytes length of\n * the string that is uleb128/ubeb128 encoded. string_length is a u32 integer.\n *\n * @example\n * ```ts\n * const serializer = new Serializer();\n * serializer.serializeStr(\"çå∞≠¢õß∂ƒ∫\");\n * assert(serializer.getBytes() === new Uint8Array([24, 0xc3, 0xa7, 0xc3, 0xa5, 0xe2, 0x88, 0x9e,\n * 0xe2, 0x89, 0xa0, 0xc2, 0xa2, 0xc3, 0xb5, 0xc3, 0x9f, 0xe2, 0x88, 0x82, 0xc6, 0x92, 0xe2, 0x88, 0xab]));\n * ```\n */\n serializeStr(value: string): void {\n const textEncoder = new TextEncoder()\n this.serializeBytes(textEncoder.encode(value))\n }\n\n /**\n * Serializes an array of bytes.\n *\n * layout for \"bytes\": bytes_length | bytes. bytes_length is the length of the bytes array that is\n * uleb128/ubeb128 encoded. bytes_length is a u32 integer.\n */\n serializeBytes(value: Bytes): void {\n if (this.littleEndian) {\n this.serializeU32AsUleb128(value.length)\n } else {\n this.serializeU32AsUbeb128(value.length)\n }\n this.serialize(value)\n }\n\n /**\n * Serializes an array of bytes with known length. Therefore length doesn't need to be\n * serialized to help deserialization. When deserializing, the number of\n * bytes to deserialize needs to be passed in.\n */\n serializeFixedBytes(value: Bytes): void {\n this.serialize(value)\n }\n\n /**\n * Serializes a boolean value.\n *\n * layout for \"boolean\": One byte. \"0x01\" for True and \"0x00\" for False.\n */\n serializeBool(value: boolean): void {\n if (typeof value !== 'boolean') {\n throw new Error('Value needs to be a boolean')\n }\n const byteValue = value ? 1 : 0\n this.serialize(new Uint8Array([byteValue]))\n }\n\n /**\n * Serializes a uint8 number.\n *\n * layout for \"uint8\": One byte. Binary format in little-endian representation.\n */\n @checkNumberRange(0, MAX_U8_NUMBER)\n serializeU8(value: Uint8): void {\n this.serialize(new Uint8Array([value]))\n }\n\n /**\n * Serializes a uint16 number.\n *\n * layout for \"uint16\": Two bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const serializer = new Serializer(true);\n * serializer.serializeU16(4660);\n * assert(serializer.getBytes() === new Uint8Array([0x34, 0x12]));\n * const serializer = new Serializer(false);\n * serializer.serializeU16(4660);\n * assert(serializer.getBytes() === new Uint8Array([0x12, 0x34]));\n * ```\n */\n @checkNumberRange(0, MAX_U16_NUMBER)\n serializeU16(value: Uint16): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.serializeWithFunction(DataView.prototype.setUint16, 2, value)\n }\n\n /**\n * Serializes a uint32 number.\n *\n * layout for \"uint32\": Four bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const serializer = new Serializer(true);\n * serializer.serializeU32(305419896);\n * assert(serializer.getBytes() === new Uint8Array([0x78, 0x56, 0x34, 0x12]));\n * const serializer = new Serializer(false);\n * serializer.serializeU32(305419896);\n * assert(serializer.getBytes() === new Uint8Array([0x12, 0x34, 0x56, 0x78]));\n * ```\n */\n @checkNumberRange(0, MAX_U32_NUMBER)\n serializeU32(value: Uint32): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.serializeWithFunction(DataView.prototype.setUint32, 4, value)\n }\n\n /**\n * Serializes a uint64 number.\n *\n * layout for \"uint64\": Eight bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const serializer = new Serializer(true);\n * serializer.serializeU64(1311768467750121216);\n * assert(serializer.getBytes() === new Uint8Array([0x00, 0xEF, 0xCD, 0xAB, 0x78, 0x56, 0x34, 0x12]));\n * const serializer = new Serializer(false);\n * serializer.serializeU64(1311768467750121216);\n * assert(serializer.getBytes() === new Uint8Array([0x12, 0x34, 0x56, 0x78, 0xAB, 0xCD, 0xEF, 0x00]));\n * ```\n */\n @checkNumberRange(BigInt(0), MAX_U64_BIG_INT)\n serializeU64(value: AnyNumber): void {\n const low = BigInt(value.toString()) & BigInt(MAX_U32_NUMBER)\n const high = BigInt(value.toString()) >> BigInt(32)\n\n const array = this.littleEndian ? [low, high] : [high, low]\n array.forEach((x) => {\n this.serializeU32(Number(x))\n })\n }\n\n /**\n * Serializes a uint128 number.\n *\n * layout for \"uint128\": Sixteen bytes. Binary format in little-endian representation.\n */\n @checkNumberRange(BigInt(0), MAX_U128_BIG_INT)\n serializeU128(value: AnyNumber): void {\n const low = BigInt(value.toString()) & MAX_U64_BIG_INT\n const high = BigInt(value.toString()) >> BigInt(64)\n\n const array = this.littleEndian ? [low, high] : [high, low]\n array.forEach((x) => {\n this.serializeU64(x)\n })\n }\n\n /**\n * Serializes a uint256 number.\n *\n * layout for \"uint256\": Sixteen bytes. Binary format in little-endian representation.\n */\n @checkNumberRange(BigInt(0), MAX_U256_BIG_INT)\n serializeU256(value: AnyNumber): void {\n const low = BigInt(value.toString()) & MAX_U128_BIG_INT\n const high = BigInt(value.toString()) >> BigInt(128)\n\n const array = this.littleEndian ? [low, high] : [high, low]\n array.forEach((x) => {\n this.serializeU128(x)\n })\n }\n\n /**\n * Serializes a uint32 number with uleb128.\n *\n * use uleb128 encoding in two cases: (1) lengths of variable-length sequences and (2) tags of enum values\n */\n @checkNumberRange(0, MAX_U32_NUMBER)\n serializeU32AsUleb128(val: Uint32): void {\n let value = val\n const valueArray = []\n while (value >>> 7 !== 0) {\n valueArray.push((value & 0x7f) | 0x80)\n value >>>= 7\n }\n valueArray.push(value)\n this.serialize(new Uint8Array(valueArray))\n }\n\n /**\n * Serializes a uint32 number with unsigned Variable-Length Big-Endian Encoding.\n *\n * use ubeb128 encoding in two cases: (1) lengths of variable-length sequences and (2) tags of enum values\n */\n @checkNumberRange(0, MAX_U32_NUMBER)\n serializeU32AsUbeb128(val: Uint32): void {\n let value = val\n const valueArray: Uint8[] = []\n\n valueArray.unshift(value & 0x7f)\n while (value >>> 7 !== 0) {\n value >>>= 7\n const byte = (value & 0x7f) | 0x80\n valueArray.unshift(byte)\n }\n\n this.serialize(new Uint8Array(valueArray))\n }\n\n /**\n * Returns the buffered bytes\n */\n getBytes(): Bytes {\n return new Uint8Array(this.buffer).slice(0, this.offset)\n }\n}\n\n/**\n * Creates a decorator to make sure the arg value of the decorated function is within a range.\n * @param minValue The arg value of decorated function must >= minValue\n * @param maxValue The arg value of decorated function must <= maxValue\n * @param message Error message\n */\nfunction checkNumberRange<T extends AnyNumber>(minValue: T, maxValue: T, message?: string) {\n return (target: unknown, propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor => {\n /* eslint-disable @typescript-eslint/no-unsafe-assignment */\n const childFunction = descriptor.value as (value: AnyNumber) => void\n // eslint-disable-next-line no-param-reassign\n descriptor.value = function deco(value: AnyNumber): void {\n const valueBigInt = BigInt(value.toString())\n if (valueBigInt > BigInt(maxValue.toString()) || valueBigInt < BigInt(minValue.toString())) {\n throw new Error(message ?? 'Value is out of range')\n }\n childFunction.apply(this, [value])\n }\n return descriptor\n /* eslint-enable @typescript-eslint/no-unsafe-assignment */\n }\n}\n","// Copyright © Aptos Foundation\n// Copyright © LayerZero Labs\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable no-bitwise */\nimport { MAX_U32_NUMBER } from './consts'\nimport { Bytes, Uint128, Uint16, Uint256, Uint32, Uint64, Uint8 } from './types'\n\nexport class Deserializer {\n private buffer: ArrayBuffer\n\n private offset: number\n public readonly littleEndian: boolean\n\n constructor(data: Bytes, littleEndian = true) {\n this.littleEndian = littleEndian\n // copies data to prevent outside mutation of buffer.\n this.buffer = new ArrayBuffer(data.length)\n new Uint8Array(this.buffer).set(data, 0)\n this.offset = 0\n }\n\n private read(length: number): ArrayBuffer {\n if (this.offset + length > this.buffer.byteLength) {\n throw new Error('Reached to the end of buffer')\n }\n\n const bytes = this.buffer.slice(this.offset, this.offset + length)\n this.offset += length\n return bytes\n }\n\n public remaining(): number {\n return this.buffer.byteLength - this.offset\n }\n\n public rewind(length: number): void {\n this.offset -= length\n }\n\n /**\n * Deserializes a string. UTF8 string is supported. Reads the string's bytes length \"l\" first,\n * and then reads \"l\" bytes of content. Decodes the byte array into a string.\n *\n * layout for \"string\": string_length | string_content. string_length is the bytes length of\n * the string that is uleb128/ubeb128 encoded. string_length is a u32 integer.\n *\n * @example\n * ```ts\n * const deserializer = new Deserializer(new Uint8Array([24, 0xc3, 0xa7, 0xc3, 0xa5, 0xe2, 0x88, 0x9e,\n * 0xe2, 0x89, 0xa0, 0xc2, 0xa2, 0xc3, 0xb5, 0xc3, 0x9f, 0xe2, 0x88, 0x82, 0xc6, 0x92, 0xe2, 0x88, 0xab]), true);\n * assert(deserializer.deserializeStr() === \"çå∞≠¢õß∂ƒ∫\");\n * ```\n */\n deserializeStr(): string {\n const value = this.deserializeBytes()\n const textDecoder = new TextDecoder()\n return textDecoder.decode(value)\n }\n\n /**\n * Deserializes an array of bytes.\n *\n * layout for \"bytes\": bytes_length | bytes. bytes_length is the length of the bytes array that is\n * uleb128/ubeb128 encoded. bytes_length is a u32 integer.\n */\n deserializeBytes(): Bytes {\n const len = this.littleEndian ? this.deserializeUleb128AsU32() : this.deserializeUbeb128AsU32()\n\n return new Uint8Array(this.read(len))\n }\n\n /**\n * Deserializes an array of bytes. The number of bytes to read is already known.\n *\n */\n deserializeFixedBytes(len: number): Bytes {\n return new Uint8Array(this.read(len))\n }\n\n /**\n * Deserializes a boolean value.\n *\n * layout for \"boolean\": One byte. \"0x01\" for True and \"0x00\" for False.\n */\n deserializeBool(): boolean {\n const bool = new Uint8Array(this.read(1))[0]\n if (bool !== 1 && bool !== 0) {\n throw new Error('Invalid boolean value')\n }\n return bool === 1\n }\n\n /**\n * Deserializes a uint8 number.\n *\n * layout for \"uint8\": One byte. Binary format in little-endian representation.\n */\n deserializeU8(): Uint8 {\n return new DataView(this.read(1)).getUint8(0)\n }\n\n /**\n * Deserializes a uint16 number.\n *\n * layout for \"uint16\": Two bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const deserializer = new Deserializer(new Uint8Array([0x34, 0x12]), true);\n * assert(deserializer.deserializeU16() === 4660);\n * const deserializer = new Deserializer(new Uint8Array([0x12, 0x34]), false);\n * assert(deserializer.deserializeU16() === 4660);\n * ```\n */\n deserializeU16(): Uint16 {\n return new DataView(this.read(2)).getUint16(0, this.littleEndian)\n }\n\n /**\n * Deserializes a uint32 number.\n *\n * layout for \"uint32\": Four bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const deserializer = new Deserializer(new Uint8Array([0x78, 0x56, 0x34, 0x12]), true);\n * assert(deserializer.deserializeU32() === 305419896);\n * const deserializer = new Deserializer(new Uint8Array([0x12, 0x34, 0x56, 0x78]), false);\n * assert(deserializer.deserializeU32() === 305419896);\n * ```\n */\n deserializeU32(): Uint32 {\n return new DataView(this.read(4)).getUint32(0, this.littleEndian)\n }\n\n /**\n * Deserializes a uint64 number.\n *\n * layout for \"uint64\": Eight bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const deserializer = new Deserializer(new Uint8Array([0x00, 0xEF, 0xCD, 0xAB, 0x78, 0x56, 0x34, 0x12]), true);\n * assert(deserializer.deserializeU64() === 1311768467750121216);\n * const deserializer = new Deserializer(new Uint8Array([0x12, 0x34, 0x56, 0x78, 0xAB, 0xCD, 0xEF, 0x00]), false);\n * assert(deserializer.deserializeU64() === 1311768467750121216);\n * ```\n */\n deserializeU64(): Uint64 {\n const low = this.deserializeU32()\n const high = this.deserializeU32()\n\n const values = this.littleEndian ? [low, high] : [high, low]\n return BigInt((BigInt(values[1]) << BigInt(32)) | BigInt(values[0]))\n }\n\n /**\n * Deserializes a uint128 number.\n *\n * layout for \"uint128\": Sixteen bytes. Binary format in little-endian representation.\n */\n deserializeU128(): Uint128 {\n const low = this.deserializeU64()\n const high = this.deserializeU64()\n\n const values = this.littleEndian ? [low, high] : [high, low]\n return BigInt((values[1] << BigInt(64)) | values[0])\n }\n\n /**\n * Deserializes a uint256 number.\n *\n * layout for \"uint256\": Thirty-two bytes. Binary format in little-endian representation.\n */\n deserializeU256(): Uint256 {\n const low = this.deserializeU128()\n const high = this.deserializeU128()\n\n const values = this.littleEndian ? [low, high] : [high, low]\n return BigInt((values[1] << BigInt(128)) | values[0])\n }\n\n /**\n * Deserializes a uleb128 encoded uint32 number.\n *\n * use uleb128 encoding in two cases: (1) lengths of variable-length sequences and (2) tags of enum values\n */\n deserializeUleb128AsU32(): Uint32 {\n let value = BigInt(0)\n let shift = 0\n\n while (value < MAX_U32_NUMBER) {\n const byte = this.deserializeU8()\n value |= BigInt(byte & 0x7f) << BigInt(shift)\n\n if ((byte & 0x80) === 0) {\n break\n }\n shift += 7\n }\n\n if (value > MAX_U32_NUMBER) {\n throw new Error('Overflow while parsing uleb128-encoded uint32 value')\n }\n\n return Number(value)\n }\n\n /**\n * Deserializes a unsigned Variable-Length Big-Endian Encoding encoded uint32 number.\n *\n * use ubeb128 encoding in two cases: (1) lengths of variable-length sequences and (2) tags of enum values\n */\n deserializeUbeb128AsU32(): Uint32 {\n let value = BigInt(0)\n\n while (value < MAX_U32_NUMBER) {\n const byte = this.deserializeU8()\n value |= BigInt(byte & 0x7f)\n\n if ((byte & 0x80) === 0) {\n break\n }\n value = value << BigInt(7)\n }\n\n if (value > MAX_U32_NUMBER) {\n throw new Error('Overflow while parsing ubeb128-encoded uint32 value')\n }\n\n return Number(value)\n }\n}\n","// Copyright © Aptos Foundation\n// Copyright © LayerZero Labs\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Deserializer } from './deserializer'\nimport { Serializer } from './serializer'\nimport { AnyNumber, Bytes, Seq, Uint16, Uint32, Uint8 } from './types'\n\ninterface Serializable {\n serialize(serializer: Serializer): void\n}\n\ninterface Deserializable<T> {\n deserialize(deserializer: Deserializer): T\n}\n\n// eslint-disable-next-line @typescript-eslint/consistent-indexed-object-style\ninterface ISerializer {\n [key: string]: (item: unknown) => void\n}\n\n/**\n * Serializes a vector values that are \"Serializable\".\n */\nexport function serializeVector<T extends Serializable>(value: Seq<T>, serializer: Serializer): void {\n serializer.serializeU32AsUleb128(value.length)\n value.forEach((item: T) => {\n item.serialize(serializer)\n })\n}\n\n/**\n * Serializes a vector with specified item serialization function.\n * Very dynamic function and bypasses static typechecking.\n */\nexport function serializeVectorWithFunc(value: unknown[], func: string): Bytes {\n const serializer = new Serializer()\n serializer.serializeU32AsUleb128(value.length)\n\n const f = (serializer as unknown as ISerializer)[func]\n if (typeof f !== 'function') {\n throw new Error(`The function '${func}' does not exist on the serializer.`)\n }\n\n value.forEach((item) => {\n f.call(serializer, item)\n })\n return serializer.getBytes()\n}\n\n/**\n * Deserializes a vector of values.\n */\nexport function deserializeVector<T>(deserializer: Deserializer, cls: Deserializable<T>): any[] {\n const length = deserializer.deserializeUleb128AsU32()\n const list: T[] = []\n for (let i = 0; i < length; i += 1) {\n list.push(cls.deserialize(deserializer))\n }\n return list\n}\n\nexport function bcsToBytes<T extends Serializable>(value: T): Bytes {\n const serializer = new Serializer()\n value.serialize(serializer)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeUint64(value: AnyNumber): Bytes {\n const serializer = new Serializer()\n serializer.serializeU64(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeU8(value: Uint8): Bytes {\n const serializer = new Serializer()\n serializer.serializeU8(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeU16(value: Uint16): Bytes {\n const serializer = new Serializer()\n serializer.serializeU16(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeU32(value: Uint32): Bytes {\n const serializer = new Serializer()\n serializer.serializeU32(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeU128(value: AnyNumber): Bytes {\n const serializer = new Serializer()\n serializer.serializeU128(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeU256(value: AnyNumber): Bytes {\n const serializer = new Serializer()\n serializer.serializeU256(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeBool(value: boolean): Bytes {\n const serializer = new Serializer()\n serializer.serializeBool(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeStr(value: string): Bytes {\n const serializer = new Serializer()\n serializer.serializeStr(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeBytes(value: Bytes): Bytes {\n const serializer = new Serializer()\n serializer.serializeBytes(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeFixedBytes(value: Bytes): Bytes {\n const serializer = new Serializer()\n serializer.serializeFixedBytes(value)\n return serializer.getBytes()\n}\n"]}
|
package/dist/index.d.mts
CHANGED
|
@@ -138,6 +138,8 @@ declare class Deserializer {
|
|
|
138
138
|
readonly littleEndian: boolean;
|
|
139
139
|
constructor(data: Bytes, littleEndian?: boolean);
|
|
140
140
|
private read;
|
|
141
|
+
remaining(): number;
|
|
142
|
+
rewind(length: number): void;
|
|
141
143
|
/**
|
|
142
144
|
* Deserializes a string. UTF8 string is supported. Reads the string's bytes length "l" first,
|
|
143
145
|
* and then reads "l" bytes of content. Decodes the byte array into a string.
|
package/dist/index.d.ts
CHANGED
|
@@ -138,6 +138,8 @@ declare class Deserializer {
|
|
|
138
138
|
readonly littleEndian: boolean;
|
|
139
139
|
constructor(data: Bytes, littleEndian?: boolean);
|
|
140
140
|
private read;
|
|
141
|
+
remaining(): number;
|
|
142
|
+
rewind(length: number): void;
|
|
141
143
|
/**
|
|
142
144
|
* Deserializes a string. UTF8 string is supported. Reads the string's bytes length "l" first,
|
|
143
145
|
* and then reads "l" bytes of content. Decodes the byte array into a string.
|
package/dist/index.mjs
CHANGED
|
@@ -211,6 +211,12 @@ var Deserializer = class {
|
|
|
211
211
|
this.offset += length;
|
|
212
212
|
return bytes;
|
|
213
213
|
}
|
|
214
|
+
remaining() {
|
|
215
|
+
return this.buffer.byteLength - this.offset;
|
|
216
|
+
}
|
|
217
|
+
rewind(length) {
|
|
218
|
+
this.offset -= length;
|
|
219
|
+
}
|
|
214
220
|
/**
|
|
215
221
|
* Deserializes a string. UTF8 string is supported. Reads the string's bytes length "l" first,
|
|
216
222
|
* and then reads "l" bytes of content. Decodes the byte array into a string.
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/consts.ts","../src/serializer.ts","../src/deserializer.ts","../src/helper.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright © Aptos Foundation\n// Copyright © LayerZero Labs\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Uint128, Uint16, Uint256, Uint32, Uint64, Uint8 } from './types'\n\n// Upper bound values for uint8, uint16, uint64 and uint128\nexport const MAX_U8_NUMBER: Uint8 = 255\nexport const MAX_U16_NUMBER: Uint16 = 65535\nexport const MAX_U32_NUMBER: Uint32 = 4294967295\nexport const MAX_U64_BIG_INT: Uint64 = 18446744073709551615n\nexport const MAX_U128_BIG_INT: Uint128 = 340282366920938463463374607431768211455n\nexport const MAX_U256_BIG_INT: Uint256 = 115792089237316195423570985008687907853269984665640564039457584007913129639935n\n","// Copyright © Aptos Foundation\n// Copyright © LayerZero Labs\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable no-bitwise */\nimport {\n MAX_U128_BIG_INT,\n MAX_U16_NUMBER,\n MAX_U256_BIG_INT,\n MAX_U32_NUMBER,\n MAX_U64_BIG_INT,\n MAX_U8_NUMBER,\n} from './consts'\nimport { AnyNumber, Bytes, Uint16, Uint32, Uint8 } from './types'\n\nexport class Serializer {\n private buffer: ArrayBuffer\n\n private offset: number\n public readonly littleEndian: boolean\n\n constructor(littleEndian = true) {\n this.littleEndian = littleEndian\n this.buffer = new ArrayBuffer(64)\n this.offset = 0\n }\n\n private ensureBufferWillHandleSize(bytes: number): void {\n while (this.buffer.byteLength < this.offset + bytes) {\n const newBuffer = new ArrayBuffer(this.buffer.byteLength * 2)\n new Uint8Array(newBuffer).set(new Uint8Array(this.buffer))\n this.buffer = newBuffer\n }\n }\n\n protected serialize(values: Bytes): void {\n this.ensureBufferWillHandleSize(values.length)\n new Uint8Array(this.buffer, this.offset).set(values)\n this.offset += values.length\n }\n\n private serializeWithFunction(\n fn: (byteOffset: number, value: number, littleEndian?: boolean) => void,\n bytesLength: number,\n value: number\n ): void {\n this.ensureBufferWillHandleSize(bytesLength)\n const dv = new DataView(this.buffer, this.offset)\n fn.apply(dv, [0, value, this.littleEndian])\n this.offset += bytesLength\n }\n\n /**\n * Serializes a string. UTF8 string is supported. Serializes the string's bytes length \"l\" first,\n * and then serializes \"l\" bytes of the string content.\n *\n * layout for \"string\": string_length | string_content. string_length is the bytes length of\n * the string that is uleb128/ubeb128 encoded. string_length is a u32 integer.\n *\n * @example\n * ```ts\n * const serializer = new Serializer();\n * serializer.serializeStr(\"çå∞≠¢õß∂ƒ∫\");\n * assert(serializer.getBytes() === new Uint8Array([24, 0xc3, 0xa7, 0xc3, 0xa5, 0xe2, 0x88, 0x9e,\n * 0xe2, 0x89, 0xa0, 0xc2, 0xa2, 0xc3, 0xb5, 0xc3, 0x9f, 0xe2, 0x88, 0x82, 0xc6, 0x92, 0xe2, 0x88, 0xab]));\n * ```\n */\n serializeStr(value: string): void {\n const textEncoder = new TextEncoder()\n this.serializeBytes(textEncoder.encode(value))\n }\n\n /**\n * Serializes an array of bytes.\n *\n * layout for \"bytes\": bytes_length | bytes. bytes_length is the length of the bytes array that is\n * uleb128/ubeb128 encoded. bytes_length is a u32 integer.\n */\n serializeBytes(value: Bytes): void {\n if (this.littleEndian) {\n this.serializeU32AsUleb128(value.length)\n } else {\n this.serializeU32AsUbeb128(value.length)\n }\n this.serialize(value)\n }\n\n /**\n * Serializes an array of bytes with known length. Therefore length doesn't need to be\n * serialized to help deserialization. When deserializing, the number of\n * bytes to deserialize needs to be passed in.\n */\n serializeFixedBytes(value: Bytes): void {\n this.serialize(value)\n }\n\n /**\n * Serializes a boolean value.\n *\n * layout for \"boolean\": One byte. \"0x01\" for True and \"0x00\" for False.\n */\n serializeBool(value: boolean): void {\n if (typeof value !== 'boolean') {\n throw new Error('Value needs to be a boolean')\n }\n const byteValue = value ? 1 : 0\n this.serialize(new Uint8Array([byteValue]))\n }\n\n /**\n * Serializes a uint8 number.\n *\n * layout for \"uint8\": One byte. Binary format in little-endian representation.\n */\n @checkNumberRange(0, MAX_U8_NUMBER)\n serializeU8(value: Uint8): void {\n this.serialize(new Uint8Array([value]))\n }\n\n /**\n * Serializes a uint16 number.\n *\n * layout for \"uint16\": Two bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const serializer = new Serializer(true);\n * serializer.serializeU16(4660);\n * assert(serializer.getBytes() === new Uint8Array([0x34, 0x12]));\n * const serializer = new Serializer(false);\n * serializer.serializeU16(4660);\n * assert(serializer.getBytes() === new Uint8Array([0x12, 0x34]));\n * ```\n */\n @checkNumberRange(0, MAX_U16_NUMBER)\n serializeU16(value: Uint16): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.serializeWithFunction(DataView.prototype.setUint16, 2, value)\n }\n\n /**\n * Serializes a uint32 number.\n *\n * layout for \"uint32\": Four bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const serializer = new Serializer(true);\n * serializer.serializeU32(305419896);\n * assert(serializer.getBytes() === new Uint8Array([0x78, 0x56, 0x34, 0x12]));\n * const serializer = new Serializer(false);\n * serializer.serializeU32(305419896);\n * assert(serializer.getBytes() === new Uint8Array([0x12, 0x34, 0x56, 0x78]));\n * ```\n */\n @checkNumberRange(0, MAX_U32_NUMBER)\n serializeU32(value: Uint32): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.serializeWithFunction(DataView.prototype.setUint32, 4, value)\n }\n\n /**\n * Serializes a uint64 number.\n *\n * layout for \"uint64\": Eight bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const serializer = new Serializer(true);\n * serializer.serializeU64(1311768467750121216);\n * assert(serializer.getBytes() === new Uint8Array([0x00, 0xEF, 0xCD, 0xAB, 0x78, 0x56, 0x34, 0x12]));\n * const serializer = new Serializer(false);\n * serializer.serializeU64(1311768467750121216);\n * assert(serializer.getBytes() === new Uint8Array([0x12, 0x34, 0x56, 0x78, 0xAB, 0xCD, 0xEF, 0x00]));\n * ```\n */\n @checkNumberRange(BigInt(0), MAX_U64_BIG_INT)\n serializeU64(value: AnyNumber): void {\n const low = BigInt(value.toString()) & BigInt(MAX_U32_NUMBER)\n const high = BigInt(value.toString()) >> BigInt(32)\n\n const array = this.littleEndian ? [low, high] : [high, low]\n array.forEach((x) => {\n this.serializeU32(Number(x))\n })\n }\n\n /**\n * Serializes a uint128 number.\n *\n * layout for \"uint128\": Sixteen bytes. Binary format in little-endian representation.\n */\n @checkNumberRange(BigInt(0), MAX_U128_BIG_INT)\n serializeU128(value: AnyNumber): void {\n const low = BigInt(value.toString()) & MAX_U64_BIG_INT\n const high = BigInt(value.toString()) >> BigInt(64)\n\n const array = this.littleEndian ? [low, high] : [high, low]\n array.forEach((x) => {\n this.serializeU64(x)\n })\n }\n\n /**\n * Serializes a uint256 number.\n *\n * layout for \"uint256\": Sixteen bytes. Binary format in little-endian representation.\n */\n @checkNumberRange(BigInt(0), MAX_U256_BIG_INT)\n serializeU256(value: AnyNumber): void {\n const low = BigInt(value.toString()) & MAX_U128_BIG_INT\n const high = BigInt(value.toString()) >> BigInt(128)\n\n const array = this.littleEndian ? [low, high] : [high, low]\n array.forEach((x) => {\n this.serializeU128(x)\n })\n }\n\n /**\n * Serializes a uint32 number with uleb128.\n *\n * use uleb128 encoding in two cases: (1) lengths of variable-length sequences and (2) tags of enum values\n */\n @checkNumberRange(0, MAX_U32_NUMBER)\n serializeU32AsUleb128(val: Uint32): void {\n let value = val\n const valueArray = []\n while (value >>> 7 !== 0) {\n valueArray.push((value & 0x7f) | 0x80)\n value >>>= 7\n }\n valueArray.push(value)\n this.serialize(new Uint8Array(valueArray))\n }\n\n /**\n * Serializes a uint32 number with unsigned Variable-Length Big-Endian Encoding.\n *\n * use ubeb128 encoding in two cases: (1) lengths of variable-length sequences and (2) tags of enum values\n */\n @checkNumberRange(0, MAX_U32_NUMBER)\n serializeU32AsUbeb128(val: Uint32): void {\n let value = val\n const valueArray: Uint8[] = []\n\n valueArray.unshift(value & 0x7f)\n while (value >>> 7 !== 0) {\n value >>>= 7\n const byte = (value & 0x7f) | 0x80\n valueArray.unshift(byte)\n }\n\n this.serialize(new Uint8Array(valueArray))\n }\n\n /**\n * Returns the buffered bytes\n */\n getBytes(): Bytes {\n return new Uint8Array(this.buffer).slice(0, this.offset)\n }\n}\n\n/**\n * Creates a decorator to make sure the arg value of the decorated function is within a range.\n * @param minValue The arg value of decorated function must >= minValue\n * @param maxValue The arg value of decorated function must <= maxValue\n * @param message Error message\n */\nfunction checkNumberRange<T extends AnyNumber>(minValue: T, maxValue: T, message?: string) {\n return (target: unknown, propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor => {\n /* eslint-disable @typescript-eslint/no-unsafe-assignment */\n const childFunction = descriptor.value as (value: AnyNumber) => void\n // eslint-disable-next-line no-param-reassign\n descriptor.value = function deco(value: AnyNumber): void {\n const valueBigInt = BigInt(value.toString())\n if (valueBigInt > BigInt(maxValue.toString()) || valueBigInt < BigInt(minValue.toString())) {\n throw new Error(message ?? 'Value is out of range')\n }\n childFunction.apply(this, [value])\n }\n return descriptor\n /* eslint-enable @typescript-eslint/no-unsafe-assignment */\n }\n}\n","// Copyright © Aptos Foundation\n// Copyright © LayerZero Labs\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable no-bitwise */\nimport { MAX_U32_NUMBER } from './consts'\nimport { Bytes, Uint128, Uint16, Uint256, Uint32, Uint64, Uint8 } from './types'\n\nexport class Deserializer {\n private buffer: ArrayBuffer\n\n private offset: number\n public readonly littleEndian: boolean\n\n constructor(data: Bytes, littleEndian = true) {\n this.littleEndian = littleEndian\n // copies data to prevent outside mutation of buffer.\n this.buffer = new ArrayBuffer(data.length)\n new Uint8Array(this.buffer).set(data, 0)\n this.offset = 0\n }\n\n private read(length: number): ArrayBuffer {\n if (this.offset + length > this.buffer.byteLength) {\n throw new Error('Reached to the end of buffer')\n }\n\n const bytes = this.buffer.slice(this.offset, this.offset + length)\n this.offset += length\n return bytes\n }\n\n /**\n * Deserializes a string. UTF8 string is supported. Reads the string's bytes length \"l\" first,\n * and then reads \"l\" bytes of content. Decodes the byte array into a string.\n *\n * layout for \"string\": string_length | string_content. string_length is the bytes length of\n * the string that is uleb128/ubeb128 encoded. string_length is a u32 integer.\n *\n * @example\n * ```ts\n * const deserializer = new Deserializer(new Uint8Array([24, 0xc3, 0xa7, 0xc3, 0xa5, 0xe2, 0x88, 0x9e,\n * 0xe2, 0x89, 0xa0, 0xc2, 0xa2, 0xc3, 0xb5, 0xc3, 0x9f, 0xe2, 0x88, 0x82, 0xc6, 0x92, 0xe2, 0x88, 0xab]), true);\n * assert(deserializer.deserializeStr() === \"çå∞≠¢õß∂ƒ∫\");\n * ```\n */\n deserializeStr(): string {\n const value = this.deserializeBytes()\n const textDecoder = new TextDecoder()\n return textDecoder.decode(value)\n }\n\n /**\n * Deserializes an array of bytes.\n *\n * layout for \"bytes\": bytes_length | bytes. bytes_length is the length of the bytes array that is\n * uleb128/ubeb128 encoded. bytes_length is a u32 integer.\n */\n deserializeBytes(): Bytes {\n const len = this.littleEndian ? this.deserializeUleb128AsU32() : this.deserializeUbeb128AsU32()\n\n return new Uint8Array(this.read(len))\n }\n\n /**\n * Deserializes an array of bytes. The number of bytes to read is already known.\n *\n */\n deserializeFixedBytes(len: number): Bytes {\n return new Uint8Array(this.read(len))\n }\n\n /**\n * Deserializes a boolean value.\n *\n * layout for \"boolean\": One byte. \"0x01\" for True and \"0x00\" for False.\n */\n deserializeBool(): boolean {\n const bool = new Uint8Array(this.read(1))[0]\n if (bool !== 1 && bool !== 0) {\n throw new Error('Invalid boolean value')\n }\n return bool === 1\n }\n\n /**\n * Deserializes a uint8 number.\n *\n * layout for \"uint8\": One byte. Binary format in little-endian representation.\n */\n deserializeU8(): Uint8 {\n return new DataView(this.read(1)).getUint8(0)\n }\n\n /**\n * Deserializes a uint16 number.\n *\n * layout for \"uint16\": Two bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const deserializer = new Deserializer(new Uint8Array([0x34, 0x12]), true);\n * assert(deserializer.deserializeU16() === 4660);\n * const deserializer = new Deserializer(new Uint8Array([0x12, 0x34]), false);\n * assert(deserializer.deserializeU16() === 4660);\n * ```\n */\n deserializeU16(): Uint16 {\n return new DataView(this.read(2)).getUint16(0, this.littleEndian)\n }\n\n /**\n * Deserializes a uint32 number.\n *\n * layout for \"uint32\": Four bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const deserializer = new Deserializer(new Uint8Array([0x78, 0x56, 0x34, 0x12]), true);\n * assert(deserializer.deserializeU32() === 305419896);\n * const deserializer = new Deserializer(new Uint8Array([0x12, 0x34, 0x56, 0x78]), false);\n * assert(deserializer.deserializeU32() === 305419896);\n * ```\n */\n deserializeU32(): Uint32 {\n return new DataView(this.read(4)).getUint32(0, this.littleEndian)\n }\n\n /**\n * Deserializes a uint64 number.\n *\n * layout for \"uint64\": Eight bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const deserializer = new Deserializer(new Uint8Array([0x00, 0xEF, 0xCD, 0xAB, 0x78, 0x56, 0x34, 0x12]), true);\n * assert(deserializer.deserializeU64() === 1311768467750121216);\n * const deserializer = new Deserializer(new Uint8Array([0x12, 0x34, 0x56, 0x78, 0xAB, 0xCD, 0xEF, 0x00]), false);\n * assert(deserializer.deserializeU64() === 1311768467750121216);\n * ```\n */\n deserializeU64(): Uint64 {\n const low = this.deserializeU32()\n const high = this.deserializeU32()\n\n const values = this.littleEndian ? [low, high] : [high, low]\n return BigInt((BigInt(values[1]) << BigInt(32)) | BigInt(values[0]))\n }\n\n /**\n * Deserializes a uint128 number.\n *\n * layout for \"uint128\": Sixteen bytes. Binary format in little-endian representation.\n */\n deserializeU128(): Uint128 {\n const low = this.deserializeU64()\n const high = this.deserializeU64()\n\n const values = this.littleEndian ? [low, high] : [high, low]\n return BigInt((values[1] << BigInt(64)) | values[0])\n }\n\n /**\n * Deserializes a uint256 number.\n *\n * layout for \"uint256\": Thirty-two bytes. Binary format in little-endian representation.\n */\n deserializeU256(): Uint256 {\n const low = this.deserializeU128()\n const high = this.deserializeU128()\n\n const values = this.littleEndian ? [low, high] : [high, low]\n return BigInt((values[1] << BigInt(128)) | values[0])\n }\n\n /**\n * Deserializes a uleb128 encoded uint32 number.\n *\n * use uleb128 encoding in two cases: (1) lengths of variable-length sequences and (2) tags of enum values\n */\n deserializeUleb128AsU32(): Uint32 {\n let value = BigInt(0)\n let shift = 0\n\n while (value < MAX_U32_NUMBER) {\n const byte = this.deserializeU8()\n value |= BigInt(byte & 0x7f) << BigInt(shift)\n\n if ((byte & 0x80) === 0) {\n break\n }\n shift += 7\n }\n\n if (value > MAX_U32_NUMBER) {\n throw new Error('Overflow while parsing uleb128-encoded uint32 value')\n }\n\n return Number(value)\n }\n\n /**\n * Deserializes a unsigned Variable-Length Big-Endian Encoding encoded uint32 number.\n *\n * use ubeb128 encoding in two cases: (1) lengths of variable-length sequences and (2) tags of enum values\n */\n deserializeUbeb128AsU32(): Uint32 {\n let value = BigInt(0)\n\n while (value < MAX_U32_NUMBER) {\n const byte = this.deserializeU8()\n value |= BigInt(byte & 0x7f)\n\n if ((byte & 0x80) === 0) {\n break\n }\n value = value << BigInt(7)\n }\n\n if (value > MAX_U32_NUMBER) {\n throw new Error('Overflow while parsing ubeb128-encoded uint32 value')\n }\n\n return Number(value)\n }\n}\n","// Copyright © Aptos Foundation\n// Copyright © LayerZero Labs\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Deserializer } from './deserializer'\nimport { Serializer } from './serializer'\nimport { AnyNumber, Bytes, Seq, Uint16, Uint32, Uint8 } from './types'\n\ninterface Serializable {\n serialize(serializer: Serializer): void\n}\n\ninterface Deserializable<T> {\n deserialize(deserializer: Deserializer): T\n}\n\n// eslint-disable-next-line @typescript-eslint/consistent-indexed-object-style\ninterface ISerializer {\n [key: string]: (item: unknown) => void\n}\n\n/**\n * Serializes a vector values that are \"Serializable\".\n */\nexport function serializeVector<T extends Serializable>(value: Seq<T>, serializer: Serializer): void {\n serializer.serializeU32AsUleb128(value.length)\n value.forEach((item: T) => {\n item.serialize(serializer)\n })\n}\n\n/**\n * Serializes a vector with specified item serialization function.\n * Very dynamic function and bypasses static typechecking.\n */\nexport function serializeVectorWithFunc(value: unknown[], func: string): Bytes {\n const serializer = new Serializer()\n serializer.serializeU32AsUleb128(value.length)\n\n const f = (serializer as unknown as ISerializer)[func]\n if (typeof f !== 'function') {\n throw new Error(`The function '${func}' does not exist on the serializer.`)\n }\n\n value.forEach((item) => {\n f.call(serializer, item)\n })\n return serializer.getBytes()\n}\n\n/**\n * Deserializes a vector of values.\n */\nexport function deserializeVector<T>(deserializer: Deserializer, cls: Deserializable<T>): any[] {\n const length = deserializer.deserializeUleb128AsU32()\n const list: T[] = []\n for (let i = 0; i < length; i += 1) {\n list.push(cls.deserialize(deserializer))\n }\n return list\n}\n\nexport function bcsToBytes<T extends Serializable>(value: T): Bytes {\n const serializer = new Serializer()\n value.serialize(serializer)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeUint64(value: AnyNumber): Bytes {\n const serializer = new Serializer()\n serializer.serializeU64(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeU8(value: Uint8): Bytes {\n const serializer = new Serializer()\n serializer.serializeU8(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeU16(value: Uint16): Bytes {\n const serializer = new Serializer()\n serializer.serializeU16(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeU32(value: Uint32): Bytes {\n const serializer = new Serializer()\n serializer.serializeU32(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeU128(value: AnyNumber): Bytes {\n const serializer = new Serializer()\n serializer.serializeU128(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeU256(value: AnyNumber): Bytes {\n const serializer = new Serializer()\n serializer.serializeU256(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeBool(value: boolean): Bytes {\n const serializer = new Serializer()\n serializer.serializeBool(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeStr(value: string): Bytes {\n const serializer = new Serializer()\n serializer.serializeStr(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeBytes(value: Bytes): Bytes {\n const serializer = new Serializer()\n serializer.serializeBytes(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeFixedBytes(value: Bytes): Bytes {\n const serializer = new Serializer()\n serializer.serializeFixedBytes(value)\n return serializer.getBytes()\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/consts.ts","../src/serializer.ts","../src/deserializer.ts","../src/helper.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright © Aptos Foundation\n// Copyright © LayerZero Labs\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Uint128, Uint16, Uint256, Uint32, Uint64, Uint8 } from './types'\n\n// Upper bound values for uint8, uint16, uint64 and uint128\nexport const MAX_U8_NUMBER: Uint8 = 255\nexport const MAX_U16_NUMBER: Uint16 = 65535\nexport const MAX_U32_NUMBER: Uint32 = 4294967295\nexport const MAX_U64_BIG_INT: Uint64 = 18446744073709551615n\nexport const MAX_U128_BIG_INT: Uint128 = 340282366920938463463374607431768211455n\nexport const MAX_U256_BIG_INT: Uint256 = 115792089237316195423570985008687907853269984665640564039457584007913129639935n\n","// Copyright © Aptos Foundation\n// Copyright © LayerZero Labs\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable no-bitwise */\nimport {\n MAX_U128_BIG_INT,\n MAX_U16_NUMBER,\n MAX_U256_BIG_INT,\n MAX_U32_NUMBER,\n MAX_U64_BIG_INT,\n MAX_U8_NUMBER,\n} from './consts'\nimport { AnyNumber, Bytes, Uint16, Uint32, Uint8 } from './types'\n\nexport class Serializer {\n private buffer: ArrayBuffer\n\n private offset: number\n public readonly littleEndian: boolean\n\n constructor(littleEndian = true) {\n this.littleEndian = littleEndian\n this.buffer = new ArrayBuffer(64)\n this.offset = 0\n }\n\n private ensureBufferWillHandleSize(bytes: number): void {\n while (this.buffer.byteLength < this.offset + bytes) {\n const newBuffer = new ArrayBuffer(this.buffer.byteLength * 2)\n new Uint8Array(newBuffer).set(new Uint8Array(this.buffer))\n this.buffer = newBuffer\n }\n }\n\n protected serialize(values: Bytes): void {\n this.ensureBufferWillHandleSize(values.length)\n new Uint8Array(this.buffer, this.offset).set(values)\n this.offset += values.length\n }\n\n private serializeWithFunction(\n fn: (byteOffset: number, value: number, littleEndian?: boolean) => void,\n bytesLength: number,\n value: number\n ): void {\n this.ensureBufferWillHandleSize(bytesLength)\n const dv = new DataView(this.buffer, this.offset)\n fn.apply(dv, [0, value, this.littleEndian])\n this.offset += bytesLength\n }\n\n /**\n * Serializes a string. UTF8 string is supported. Serializes the string's bytes length \"l\" first,\n * and then serializes \"l\" bytes of the string content.\n *\n * layout for \"string\": string_length | string_content. string_length is the bytes length of\n * the string that is uleb128/ubeb128 encoded. string_length is a u32 integer.\n *\n * @example\n * ```ts\n * const serializer = new Serializer();\n * serializer.serializeStr(\"çå∞≠¢õß∂ƒ∫\");\n * assert(serializer.getBytes() === new Uint8Array([24, 0xc3, 0xa7, 0xc3, 0xa5, 0xe2, 0x88, 0x9e,\n * 0xe2, 0x89, 0xa0, 0xc2, 0xa2, 0xc3, 0xb5, 0xc3, 0x9f, 0xe2, 0x88, 0x82, 0xc6, 0x92, 0xe2, 0x88, 0xab]));\n * ```\n */\n serializeStr(value: string): void {\n const textEncoder = new TextEncoder()\n this.serializeBytes(textEncoder.encode(value))\n }\n\n /**\n * Serializes an array of bytes.\n *\n * layout for \"bytes\": bytes_length | bytes. bytes_length is the length of the bytes array that is\n * uleb128/ubeb128 encoded. bytes_length is a u32 integer.\n */\n serializeBytes(value: Bytes): void {\n if (this.littleEndian) {\n this.serializeU32AsUleb128(value.length)\n } else {\n this.serializeU32AsUbeb128(value.length)\n }\n this.serialize(value)\n }\n\n /**\n * Serializes an array of bytes with known length. Therefore length doesn't need to be\n * serialized to help deserialization. When deserializing, the number of\n * bytes to deserialize needs to be passed in.\n */\n serializeFixedBytes(value: Bytes): void {\n this.serialize(value)\n }\n\n /**\n * Serializes a boolean value.\n *\n * layout for \"boolean\": One byte. \"0x01\" for True and \"0x00\" for False.\n */\n serializeBool(value: boolean): void {\n if (typeof value !== 'boolean') {\n throw new Error('Value needs to be a boolean')\n }\n const byteValue = value ? 1 : 0\n this.serialize(new Uint8Array([byteValue]))\n }\n\n /**\n * Serializes a uint8 number.\n *\n * layout for \"uint8\": One byte. Binary format in little-endian representation.\n */\n @checkNumberRange(0, MAX_U8_NUMBER)\n serializeU8(value: Uint8): void {\n this.serialize(new Uint8Array([value]))\n }\n\n /**\n * Serializes a uint16 number.\n *\n * layout for \"uint16\": Two bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const serializer = new Serializer(true);\n * serializer.serializeU16(4660);\n * assert(serializer.getBytes() === new Uint8Array([0x34, 0x12]));\n * const serializer = new Serializer(false);\n * serializer.serializeU16(4660);\n * assert(serializer.getBytes() === new Uint8Array([0x12, 0x34]));\n * ```\n */\n @checkNumberRange(0, MAX_U16_NUMBER)\n serializeU16(value: Uint16): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.serializeWithFunction(DataView.prototype.setUint16, 2, value)\n }\n\n /**\n * Serializes a uint32 number.\n *\n * layout for \"uint32\": Four bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const serializer = new Serializer(true);\n * serializer.serializeU32(305419896);\n * assert(serializer.getBytes() === new Uint8Array([0x78, 0x56, 0x34, 0x12]));\n * const serializer = new Serializer(false);\n * serializer.serializeU32(305419896);\n * assert(serializer.getBytes() === new Uint8Array([0x12, 0x34, 0x56, 0x78]));\n * ```\n */\n @checkNumberRange(0, MAX_U32_NUMBER)\n serializeU32(value: Uint32): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n this.serializeWithFunction(DataView.prototype.setUint32, 4, value)\n }\n\n /**\n * Serializes a uint64 number.\n *\n * layout for \"uint64\": Eight bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const serializer = new Serializer(true);\n * serializer.serializeU64(1311768467750121216);\n * assert(serializer.getBytes() === new Uint8Array([0x00, 0xEF, 0xCD, 0xAB, 0x78, 0x56, 0x34, 0x12]));\n * const serializer = new Serializer(false);\n * serializer.serializeU64(1311768467750121216);\n * assert(serializer.getBytes() === new Uint8Array([0x12, 0x34, 0x56, 0x78, 0xAB, 0xCD, 0xEF, 0x00]));\n * ```\n */\n @checkNumberRange(BigInt(0), MAX_U64_BIG_INT)\n serializeU64(value: AnyNumber): void {\n const low = BigInt(value.toString()) & BigInt(MAX_U32_NUMBER)\n const high = BigInt(value.toString()) >> BigInt(32)\n\n const array = this.littleEndian ? [low, high] : [high, low]\n array.forEach((x) => {\n this.serializeU32(Number(x))\n })\n }\n\n /**\n * Serializes a uint128 number.\n *\n * layout for \"uint128\": Sixteen bytes. Binary format in little-endian representation.\n */\n @checkNumberRange(BigInt(0), MAX_U128_BIG_INT)\n serializeU128(value: AnyNumber): void {\n const low = BigInt(value.toString()) & MAX_U64_BIG_INT\n const high = BigInt(value.toString()) >> BigInt(64)\n\n const array = this.littleEndian ? [low, high] : [high, low]\n array.forEach((x) => {\n this.serializeU64(x)\n })\n }\n\n /**\n * Serializes a uint256 number.\n *\n * layout for \"uint256\": Sixteen bytes. Binary format in little-endian representation.\n */\n @checkNumberRange(BigInt(0), MAX_U256_BIG_INT)\n serializeU256(value: AnyNumber): void {\n const low = BigInt(value.toString()) & MAX_U128_BIG_INT\n const high = BigInt(value.toString()) >> BigInt(128)\n\n const array = this.littleEndian ? [low, high] : [high, low]\n array.forEach((x) => {\n this.serializeU128(x)\n })\n }\n\n /**\n * Serializes a uint32 number with uleb128.\n *\n * use uleb128 encoding in two cases: (1) lengths of variable-length sequences and (2) tags of enum values\n */\n @checkNumberRange(0, MAX_U32_NUMBER)\n serializeU32AsUleb128(val: Uint32): void {\n let value = val\n const valueArray = []\n while (value >>> 7 !== 0) {\n valueArray.push((value & 0x7f) | 0x80)\n value >>>= 7\n }\n valueArray.push(value)\n this.serialize(new Uint8Array(valueArray))\n }\n\n /**\n * Serializes a uint32 number with unsigned Variable-Length Big-Endian Encoding.\n *\n * use ubeb128 encoding in two cases: (1) lengths of variable-length sequences and (2) tags of enum values\n */\n @checkNumberRange(0, MAX_U32_NUMBER)\n serializeU32AsUbeb128(val: Uint32): void {\n let value = val\n const valueArray: Uint8[] = []\n\n valueArray.unshift(value & 0x7f)\n while (value >>> 7 !== 0) {\n value >>>= 7\n const byte = (value & 0x7f) | 0x80\n valueArray.unshift(byte)\n }\n\n this.serialize(new Uint8Array(valueArray))\n }\n\n /**\n * Returns the buffered bytes\n */\n getBytes(): Bytes {\n return new Uint8Array(this.buffer).slice(0, this.offset)\n }\n}\n\n/**\n * Creates a decorator to make sure the arg value of the decorated function is within a range.\n * @param minValue The arg value of decorated function must >= minValue\n * @param maxValue The arg value of decorated function must <= maxValue\n * @param message Error message\n */\nfunction checkNumberRange<T extends AnyNumber>(minValue: T, maxValue: T, message?: string) {\n return (target: unknown, propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor => {\n /* eslint-disable @typescript-eslint/no-unsafe-assignment */\n const childFunction = descriptor.value as (value: AnyNumber) => void\n // eslint-disable-next-line no-param-reassign\n descriptor.value = function deco(value: AnyNumber): void {\n const valueBigInt = BigInt(value.toString())\n if (valueBigInt > BigInt(maxValue.toString()) || valueBigInt < BigInt(minValue.toString())) {\n throw new Error(message ?? 'Value is out of range')\n }\n childFunction.apply(this, [value])\n }\n return descriptor\n /* eslint-enable @typescript-eslint/no-unsafe-assignment */\n }\n}\n","// Copyright © Aptos Foundation\n// Copyright © LayerZero Labs\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable no-bitwise */\nimport { MAX_U32_NUMBER } from './consts'\nimport { Bytes, Uint128, Uint16, Uint256, Uint32, Uint64, Uint8 } from './types'\n\nexport class Deserializer {\n private buffer: ArrayBuffer\n\n private offset: number\n public readonly littleEndian: boolean\n\n constructor(data: Bytes, littleEndian = true) {\n this.littleEndian = littleEndian\n // copies data to prevent outside mutation of buffer.\n this.buffer = new ArrayBuffer(data.length)\n new Uint8Array(this.buffer).set(data, 0)\n this.offset = 0\n }\n\n private read(length: number): ArrayBuffer {\n if (this.offset + length > this.buffer.byteLength) {\n throw new Error('Reached to the end of buffer')\n }\n\n const bytes = this.buffer.slice(this.offset, this.offset + length)\n this.offset += length\n return bytes\n }\n\n public remaining(): number {\n return this.buffer.byteLength - this.offset\n }\n\n public rewind(length: number): void {\n this.offset -= length\n }\n\n /**\n * Deserializes a string. UTF8 string is supported. Reads the string's bytes length \"l\" first,\n * and then reads \"l\" bytes of content. Decodes the byte array into a string.\n *\n * layout for \"string\": string_length | string_content. string_length is the bytes length of\n * the string that is uleb128/ubeb128 encoded. string_length is a u32 integer.\n *\n * @example\n * ```ts\n * const deserializer = new Deserializer(new Uint8Array([24, 0xc3, 0xa7, 0xc3, 0xa5, 0xe2, 0x88, 0x9e,\n * 0xe2, 0x89, 0xa0, 0xc2, 0xa2, 0xc3, 0xb5, 0xc3, 0x9f, 0xe2, 0x88, 0x82, 0xc6, 0x92, 0xe2, 0x88, 0xab]), true);\n * assert(deserializer.deserializeStr() === \"çå∞≠¢õß∂ƒ∫\");\n * ```\n */\n deserializeStr(): string {\n const value = this.deserializeBytes()\n const textDecoder = new TextDecoder()\n return textDecoder.decode(value)\n }\n\n /**\n * Deserializes an array of bytes.\n *\n * layout for \"bytes\": bytes_length | bytes. bytes_length is the length of the bytes array that is\n * uleb128/ubeb128 encoded. bytes_length is a u32 integer.\n */\n deserializeBytes(): Bytes {\n const len = this.littleEndian ? this.deserializeUleb128AsU32() : this.deserializeUbeb128AsU32()\n\n return new Uint8Array(this.read(len))\n }\n\n /**\n * Deserializes an array of bytes. The number of bytes to read is already known.\n *\n */\n deserializeFixedBytes(len: number): Bytes {\n return new Uint8Array(this.read(len))\n }\n\n /**\n * Deserializes a boolean value.\n *\n * layout for \"boolean\": One byte. \"0x01\" for True and \"0x00\" for False.\n */\n deserializeBool(): boolean {\n const bool = new Uint8Array(this.read(1))[0]\n if (bool !== 1 && bool !== 0) {\n throw new Error('Invalid boolean value')\n }\n return bool === 1\n }\n\n /**\n * Deserializes a uint8 number.\n *\n * layout for \"uint8\": One byte. Binary format in little-endian representation.\n */\n deserializeU8(): Uint8 {\n return new DataView(this.read(1)).getUint8(0)\n }\n\n /**\n * Deserializes a uint16 number.\n *\n * layout for \"uint16\": Two bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const deserializer = new Deserializer(new Uint8Array([0x34, 0x12]), true);\n * assert(deserializer.deserializeU16() === 4660);\n * const deserializer = new Deserializer(new Uint8Array([0x12, 0x34]), false);\n * assert(deserializer.deserializeU16() === 4660);\n * ```\n */\n deserializeU16(): Uint16 {\n return new DataView(this.read(2)).getUint16(0, this.littleEndian)\n }\n\n /**\n * Deserializes a uint32 number.\n *\n * layout for \"uint32\": Four bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const deserializer = new Deserializer(new Uint8Array([0x78, 0x56, 0x34, 0x12]), true);\n * assert(deserializer.deserializeU32() === 305419896);\n * const deserializer = new Deserializer(new Uint8Array([0x12, 0x34, 0x56, 0x78]), false);\n * assert(deserializer.deserializeU32() === 305419896);\n * ```\n */\n deserializeU32(): Uint32 {\n return new DataView(this.read(4)).getUint32(0, this.littleEndian)\n }\n\n /**\n * Deserializes a uint64 number.\n *\n * layout for \"uint64\": Eight bytes. Binary format in little-endian representation.\n * @example\n * ```ts\n * const deserializer = new Deserializer(new Uint8Array([0x00, 0xEF, 0xCD, 0xAB, 0x78, 0x56, 0x34, 0x12]), true);\n * assert(deserializer.deserializeU64() === 1311768467750121216);\n * const deserializer = new Deserializer(new Uint8Array([0x12, 0x34, 0x56, 0x78, 0xAB, 0xCD, 0xEF, 0x00]), false);\n * assert(deserializer.deserializeU64() === 1311768467750121216);\n * ```\n */\n deserializeU64(): Uint64 {\n const low = this.deserializeU32()\n const high = this.deserializeU32()\n\n const values = this.littleEndian ? [low, high] : [high, low]\n return BigInt((BigInt(values[1]) << BigInt(32)) | BigInt(values[0]))\n }\n\n /**\n * Deserializes a uint128 number.\n *\n * layout for \"uint128\": Sixteen bytes. Binary format in little-endian representation.\n */\n deserializeU128(): Uint128 {\n const low = this.deserializeU64()\n const high = this.deserializeU64()\n\n const values = this.littleEndian ? [low, high] : [high, low]\n return BigInt((values[1] << BigInt(64)) | values[0])\n }\n\n /**\n * Deserializes a uint256 number.\n *\n * layout for \"uint256\": Thirty-two bytes. Binary format in little-endian representation.\n */\n deserializeU256(): Uint256 {\n const low = this.deserializeU128()\n const high = this.deserializeU128()\n\n const values = this.littleEndian ? [low, high] : [high, low]\n return BigInt((values[1] << BigInt(128)) | values[0])\n }\n\n /**\n * Deserializes a uleb128 encoded uint32 number.\n *\n * use uleb128 encoding in two cases: (1) lengths of variable-length sequences and (2) tags of enum values\n */\n deserializeUleb128AsU32(): Uint32 {\n let value = BigInt(0)\n let shift = 0\n\n while (value < MAX_U32_NUMBER) {\n const byte = this.deserializeU8()\n value |= BigInt(byte & 0x7f) << BigInt(shift)\n\n if ((byte & 0x80) === 0) {\n break\n }\n shift += 7\n }\n\n if (value > MAX_U32_NUMBER) {\n throw new Error('Overflow while parsing uleb128-encoded uint32 value')\n }\n\n return Number(value)\n }\n\n /**\n * Deserializes a unsigned Variable-Length Big-Endian Encoding encoded uint32 number.\n *\n * use ubeb128 encoding in two cases: (1) lengths of variable-length sequences and (2) tags of enum values\n */\n deserializeUbeb128AsU32(): Uint32 {\n let value = BigInt(0)\n\n while (value < MAX_U32_NUMBER) {\n const byte = this.deserializeU8()\n value |= BigInt(byte & 0x7f)\n\n if ((byte & 0x80) === 0) {\n break\n }\n value = value << BigInt(7)\n }\n\n if (value > MAX_U32_NUMBER) {\n throw new Error('Overflow while parsing ubeb128-encoded uint32 value')\n }\n\n return Number(value)\n }\n}\n","// Copyright © Aptos Foundation\n// Copyright © LayerZero Labs\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Deserializer } from './deserializer'\nimport { Serializer } from './serializer'\nimport { AnyNumber, Bytes, Seq, Uint16, Uint32, Uint8 } from './types'\n\ninterface Serializable {\n serialize(serializer: Serializer): void\n}\n\ninterface Deserializable<T> {\n deserialize(deserializer: Deserializer): T\n}\n\n// eslint-disable-next-line @typescript-eslint/consistent-indexed-object-style\ninterface ISerializer {\n [key: string]: (item: unknown) => void\n}\n\n/**\n * Serializes a vector values that are \"Serializable\".\n */\nexport function serializeVector<T extends Serializable>(value: Seq<T>, serializer: Serializer): void {\n serializer.serializeU32AsUleb128(value.length)\n value.forEach((item: T) => {\n item.serialize(serializer)\n })\n}\n\n/**\n * Serializes a vector with specified item serialization function.\n * Very dynamic function and bypasses static typechecking.\n */\nexport function serializeVectorWithFunc(value: unknown[], func: string): Bytes {\n const serializer = new Serializer()\n serializer.serializeU32AsUleb128(value.length)\n\n const f = (serializer as unknown as ISerializer)[func]\n if (typeof f !== 'function') {\n throw new Error(`The function '${func}' does not exist on the serializer.`)\n }\n\n value.forEach((item) => {\n f.call(serializer, item)\n })\n return serializer.getBytes()\n}\n\n/**\n * Deserializes a vector of values.\n */\nexport function deserializeVector<T>(deserializer: Deserializer, cls: Deserializable<T>): any[] {\n const length = deserializer.deserializeUleb128AsU32()\n const list: T[] = []\n for (let i = 0; i < length; i += 1) {\n list.push(cls.deserialize(deserializer))\n }\n return list\n}\n\nexport function bcsToBytes<T extends Serializable>(value: T): Bytes {\n const serializer = new Serializer()\n value.serialize(serializer)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeUint64(value: AnyNumber): Bytes {\n const serializer = new Serializer()\n serializer.serializeU64(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeU8(value: Uint8): Bytes {\n const serializer = new Serializer()\n serializer.serializeU8(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeU16(value: Uint16): Bytes {\n const serializer = new Serializer()\n serializer.serializeU16(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeU32(value: Uint32): Bytes {\n const serializer = new Serializer()\n serializer.serializeU32(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeU128(value: AnyNumber): Bytes {\n const serializer = new Serializer()\n serializer.serializeU128(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeU256(value: AnyNumber): Bytes {\n const serializer = new Serializer()\n serializer.serializeU256(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeBool(value: boolean): Bytes {\n const serializer = new Serializer()\n serializer.serializeBool(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeStr(value: string): Bytes {\n const serializer = new Serializer()\n serializer.serializeStr(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeBytes(value: Bytes): Bytes {\n const serializer = new Serializer()\n serializer.serializeBytes(value)\n return serializer.getBytes()\n}\n\nexport function bcsSerializeFixedBytes(value: Bytes): Bytes {\n const serializer = new Serializer()\n serializer.serializeFixedBytes(value)\n return serializer.getBytes()\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@layerzerolabs/lz-serdes",
|
|
3
|
-
"version": "3.0.2
|
|
3
|
+
"version": "3.0.2",
|
|
4
4
|
"description": "LayerZero Core Library",
|
|
5
5
|
"license": "BUSL-1.1",
|
|
6
6
|
"exports": {
|
|
@@ -23,26 +23,11 @@
|
|
|
23
23
|
"clean-prebuild": "rimraf dist",
|
|
24
24
|
"test": "$npm_execpath jest"
|
|
25
25
|
},
|
|
26
|
-
"dependencies": {
|
|
27
|
-
"@layerzerolabs/lz-aptos-sdk-v1": "^3.0.2-initia.5",
|
|
28
|
-
"@layerzerolabs/lz-core": "^3.0.2-initia.5",
|
|
29
|
-
"@layerzerolabs/lz-utilities": "^3.0.2-initia.5",
|
|
30
|
-
"@layerzerolabs/tron-utilities": "^3.0.2-initia.5",
|
|
31
|
-
"aptos": "^1.20.0",
|
|
32
|
-
"bip39": "^3.1.0",
|
|
33
|
-
"ed25519-hd-key": "^1.3.0",
|
|
34
|
-
"ethers": "^5.7.2",
|
|
35
|
-
"mem": "^8.1.1",
|
|
36
|
-
"tiny-invariant": "^1.3.1",
|
|
37
|
-
"tronweb": "^5.3.1"
|
|
38
|
-
},
|
|
39
26
|
"devDependencies": {
|
|
40
27
|
"@jest/globals": "^29.7.0",
|
|
41
|
-
"@layerzerolabs/
|
|
42
|
-
"@layerzerolabs/
|
|
43
|
-
"@layerzerolabs/typescript-config-next": "^3.0.2-initia.5",
|
|
28
|
+
"@layerzerolabs/tsup-config-next": "^3.0.2",
|
|
29
|
+
"@layerzerolabs/typescript-config-next": "^3.0.2",
|
|
44
30
|
"@types/jest": "^29.5.10",
|
|
45
|
-
"@types/tronweb": "npm:@layerzerolabs/tronweb-typescript@workspace:^",
|
|
46
31
|
"jest": "^29.7.0",
|
|
47
32
|
"jest-extended": "^4.0.2",
|
|
48
33
|
"rimraf": "^5.0.5",
|