@com-chain/jsc3l 2.0.1-rc.2 → 2.0.1-rc.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -2
- package/build/bcRead.d.ts +8 -10
- package/build/bcRead.js +162 -49
- package/build/bcRead.js.map +1 -1
- package/build/bcTransaction.d.ts +8 -2
- package/build/bcTransaction.js +141 -108
- package/build/bcTransaction.js.map +1 -1
- package/build/blockies.js.map +1 -1
- package/build/config/transactions.d.ts +44 -0
- package/build/config/transactions.js +29 -0
- package/build/config/transactions.js.map +1 -0
- package/build/connection.d.ts +1 -1
- package/build/connection.js +44 -13
- package/build/connection.js.map +1 -1
- package/build/customization.js +13 -6
- package/build/customization.js.map +1 -1
- package/build/ethereum/cipher.js +3 -3
- package/build/ethereum/cipher.js.map +1 -1
- package/build/ethereum/ethFuncs.js +37 -1
- package/build/ethereum/ethFuncs.js.map +1 -1
- package/build/ethereum/etherUnits.js +5 -5
- package/build/ethereum/etherUnits.js.map +1 -1
- package/build/ethereum/myetherwallet.d.ts +1 -2
- package/build/ethereum/myetherwallet.js.map +1 -1
- package/build/ethereum/uiFuncs.d.ts +1 -3
- package/build/ethereum/uiFuncs.js +13 -23
- package/build/ethereum/uiFuncs.js.map +1 -1
- package/build/exception.d.ts +8 -0
- package/build/exception.js +14 -0
- package/build/exception.js.map +1 -0
- package/build/index.d.ts +8 -5
- package/build/index.js +38 -19
- package/build/index.js.map +1 -1
- package/build/memo.js +6 -3
- package/build/memo.js.map +1 -1
- package/build/qr.d.ts +31 -6
- package/build/qr.js +32 -12
- package/build/qr.js.map +1 -1
- package/build/rest/ajaxReq.d.ts +3 -10
- package/build/rest/ajaxReq.js +16 -33
- package/build/rest/ajaxReq.js.map +1 -1
- package/build/rest/http.js +6 -1
- package/build/rest/http.js.map +1 -1
- package/build/rest/serializer.js.map +1 -1
- package/build/type.d.ts +4 -4
- package/build/utils.d.ts +15 -0
- package/build/utils.js +270 -0
- package/build/utils.js.map +1 -0
- package/build/wallet.d.ts +6 -8
- package/build/wallet.js +35 -39
- package/build/wallet.js.map +1 -1
- package/package.json +10 -5
- package/skip-prod-transpilation.ts +48 -0
- package/src/bcRead.ts +184 -63
- package/src/bcTransaction.ts +143 -114
- package/src/config/transactions.ts +30 -0
- package/src/connection.ts +42 -9
- package/src/customization.ts +17 -2
- package/src/ethereum/ethFuncs.ts +42 -1
- package/src/ethereum/etherUnits.ts +5 -5
- package/src/ethereum/uiFuncs.ts +16 -25
- package/src/exception.ts +16 -0
- package/src/index.ts +53 -27
- package/src/qr.ts +86 -12
- package/src/rest/ajaxReq.ts +18 -40
- package/src/utils.ts +300 -0
- package/src/wallet.ts +37 -48
- package/tests/environment.ts +27 -0
- package/tests/setup.ts +12 -0
- package/tsconfig.json +8 -2
- package/vitest.config.ts +14 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAW,SAAQ,KAAK;IACnC,YAAa,OAAO;QAClB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,YAAY,CAAA;IAC1B,CAAC;CACF;AAGD,MAAM,OAAO,wBAAyB,SAAQ,UAAU;IAEtD,YAAa,OAAO,EAAE,aAAa;QACjC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAA;QACtC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;IACpC,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IAE/C,YAAa,OAAO,EAAE,aAAa;QACjC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAA;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;IACpC,CAAC;CACF;AAGD,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;IACf,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACtB,CAAC;AAGD,MAAM,CAAC,IAAI,YAAY,GAAG,UAAU,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,GAAG,IAAI;IAE3E,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA,CAAE,2BAA2B;IAEzD,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;IACtC,MAAM,aAAa,GAAG,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAA;IAE9E,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACvB,IAAI,aAAa,IAAI,MAAM,EAAE,CAAC;YAC5B,KAAK,CAAC,EAAE,IAAI,MAAM,CAAA;YAClB,OAAO,KAAK,CAAA;QACd,CAAC;QACD,KAAK,CAAC,EAAE,IAAI,aAAa,CAAA;QACzB,MAAM,IAAI,aAAa,CAAA;QACvB,IAAI,CAAC,EAAE,IAAI,aAAa,CAAA;QACxB,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,UAAU,IAAI,aAAa,CAAA;QAC7B,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,IAAI,MAAM,CAAA;QACpB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;IACtB,MAAM,IAAI,IAAI,CAAC,IAAI,CAAA;IAEnB,IAAI,cAAc,GAAG,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAA;IACvC,MAAM,aAAa,GAAG,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,CAAA;IAC5F,IAAI,aAAa,IAAI,MAAM,EAAE,CAAC;QAC5B,KAAK,CAAC,EAAE,IAAI,MAAM,CAAA;QAClB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,IAAI,aAAa,CAAA;IACvB,IAAI,CAAC,EAAE,IAAI,aAAa,CAAA;IACxB,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,UAAU,IAAI,aAAa,CAAA;IAC7B,CAAC;IAED,cAAc,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAA;IACrC,IAAI,cAAc,IAAI,MAAM,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,iBAAiB,CACzB,4DAA4D,MAAM,IAAI,EACtE,MAAM,CACP,CAAA;IACH,CAAC;IAED,MAAM,IAAI,wBAAwB,CAChC,WAAW,MAAM,GAAG,cAAc,qBAAqB,EACvD,MAAM,GAAG,cAAc,CACxB,CAAA;AACH,CAAC,CAAA;AAGD,8BAA8B;AAC9B,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAA;IAExE,SAAS,SAAS,CAAE,gBAAqB,IAAI,EAAE,QAAa,IAAI;QAC9D,IAAI,GAAG,CAAA;QACP,IAAI,aAAa,EAAE,CAAC;YAClB,GAAG,GAAG,cAAc,KAAK,EAAE,CAAA;QAC7B,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,4BAA4B,CAAA;QACpC,CAAC;QACD,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;YAEjB,IAAI,gBAAgB,GAAG,YAAY,CAAA;YACnC,IAAI,aAAa,CAAA;YAEjB,SAAS,CAAC,GAAG,EAAE;gBAEb,IAAI,aAAa,EAAE,CAAC;oBAClB,YAAY,GAAG,UAAU,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,GAAG,IAAI;wBAChE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;wBAC9B,IAAI,CAAC,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;wBAChC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;wBACpC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;wBAClC,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;4BACxB,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;wBACxC,CAAC;wBACD,OAAO,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAA;oBAC7D,CAAC,CAAA;oBACD,aAAa,GAAG,UAAU,MAAM,EAAE,QAAQ;wBACxC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAA;wBAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;oBACpF,CAAC,CAAA;gBACH,CAAC;qBAAM,CAAC;oBACN,aAAa,GAAG,UAAU,MAAM,EAAE,QAAQ;wBACxC,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;oBACxC,CAAC,CAAA;gBACH,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,QAAQ,CAAC,GAAG,EAAE;gBACZ,YAAY,GAAG,gBAAgB,CAAA;YACjC,CAAC,CAAC,CAAA;YAGF,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;gBACxC,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;oBAC1C,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC3E,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;oBAC1C,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;yBACjD,OAAO,CAAC,8BAA8B,CAAC,CAAA;gBAC5C,CAAC,CAAC,CAAC;gBACH,UAAU;gBACV,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;oBAClE,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;gBACzE,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;oBAClE,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC3E,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;oBACpD,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;yBACjD,OAAO,CAAC,8BAA8B,CAAC,CAAA;gBAC5C,CAAC,CAAC,CAAC;gBACH,YAAY;gBACZ,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;oBAClE,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC3E,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;oBAClE,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC3E,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;oBACpD,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;yBACjD,OAAO,CAAC,8BAA8B,CAAC,CAAA;gBAC5C,CAAC,CAAC,CAAC;gBACH,mBAAmB;gBACnB,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;oBAClE,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC3E,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;oBACjF,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC5E,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;oBACjF,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC5E,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;oBACnE,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;yBAClD,OAAO,CAAC,8BAA8B,CAAC,CAAA;gBAC5C,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;oBACjF,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC5E,CAAC,CAAC,CAAC;gBACH,+BAA+B;gBAC/B,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;oBACnF,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC7E,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;oBACpE,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;yBACnD,OAAO,CAAC,8BAA8B,CAAC,CAAA;gBAC5C,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;gBACrC,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;oBAC1D,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAC,CAAC,CAAA;gBAC7E,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;oBAC1D,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAC,CAAC,CAAA;gBAC7E,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;oBAC1D,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;yBACpD,OAAO,CAAC,8BAA8B,CAAC,CAAA;gBAC5C,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;oBAC1D,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;yBACpD,OAAO,CAAC,8BAA8B,CAAC,CAAA;gBAC5C,CAAC,CAAC,CAAC;gBACH,UAAU;gBACV,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;oBAClF,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,EAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC5E,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;oBAClF,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC9E,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,8EAA8E,EAAE,GAAG,EAAE;oBACtF,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;yBACpD,OAAO,CAAC,6DAA6D,CAAC,CAAA;gBAC3E,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;oBACpE,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;yBACpD,OAAO,CAAC,8BAA8B,CAAC,CAAA;gBAC5C,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;oBACpE,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;yBACpD,OAAO,CAAC,8BAA8B,CAAC,CAAA;gBAC5C,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;oBACpE,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;yBACpD,OAAO,CAAC,8BAA8B,CAAC,CAAA;gBAC5C,CAAC,CAAC,CAAC;gBACH,YAAY;gBACZ,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;oBAClF,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC9E,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;oBAClF,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC9E,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;oBACpE,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;yBACpD,OAAO,CAAC,8BAA8B,CAAC,CAAA;gBAC5C,CAAC,CAAC,CAAC;gBACH,mBAAmB;gBACnB,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;oBAClF,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAC,CAAC,CAAA;gBAC7E,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,8EAA8E,EAAE,GAAG,EAAE;oBACtF,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;yBACpD,OAAO,CAAC,6DAA6D,CAAC,CAAA;gBAC3E,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,wFAAwF,EAAE,GAAG,EAAE;oBAChG,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAC,CAAC,CAAA;gBAC9E,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,4FAA4F,EAAE,GAAG,EAAE;oBACpG,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;yBACrD,OAAO,CAAC,6DAA6D,CAAC,CAAA;gBAC3E,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;oBAClF,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;yBACrD,OAAO,CAAC,8BAA8B,CAAC,CAAA;gBAC5C,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;oBAClF,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;yBACrD,OAAO,CAAC,8BAA8B,CAAC,CAAA;gBAC5C,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,wFAAwF,EAAE,GAAG,EAAE;oBAChG,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC/E,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,4FAA4F,EAAE,GAAG,EAAE;oBACpG,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;yBACrD,OAAO,CAAC,6DAA6D,CAAC,CAAA;gBAC3E,CAAC,CAAC,CAAC;gBACH,qEAAqE;gBACrE,EAAE,CAAC,uFAAuF,EAAE,GAAG,EAAE;oBAC/F,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC9E,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,uFAAuF,EAAE,GAAG,EAAE;oBAC/F,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC9E,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,uFAAuF,EAAE,GAAG,EAAE;oBAC/F,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC9E,CAAC,CAAC,CAAC;gBACH,+BAA+B;gBAC/B,EAAE,CAAC,0FAA0F,EAAE,GAAG,EAAE;oBAClG,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;gBAChF,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;oBACnF,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;yBACtD,OAAO,CAAC,8BAA8B,CAAC,CAAA;gBAC5C,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;oBACnF,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;yBACtD,OAAO,CAAC,8BAA8B,CAAC,CAAA;gBAC5C,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;oBACnF,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;yBACtD,OAAO,CAAC,6DAA6D,CAAC,CAAA;gBAC3E,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,SAAS,EAAE,CAAA;IACX,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;AAC7B,CAAC"}
|
package/build/wallet.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import AjaxReq from './rest/ajaxReq';
|
|
2
|
+
import { SignedQR } from './qr';
|
|
2
3
|
import Wallet from './ethereum/myetherwallet';
|
|
3
4
|
export default abstract class MessagingWalletAbstract extends Wallet {
|
|
4
5
|
abstract ajaxReq: AjaxReq;
|
|
@@ -21,15 +22,12 @@ export default abstract class MessagingWalletAbstract extends Wallet {
|
|
|
21
22
|
encryptWallet(password: any): {
|
|
22
23
|
[k: string]: any;
|
|
23
24
|
};
|
|
24
|
-
enrollAddress(
|
|
25
|
+
enrollAddress(id: any, token: any): any;
|
|
25
26
|
requestUnlock(): any;
|
|
26
27
|
static getWalletFromPrivKeyFile(jsonStr: any, password: any): Wallet;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
};
|
|
31
|
-
makeSignedQR(obj: any): {
|
|
32
|
-
signature: any;
|
|
33
|
-
qrContent: string;
|
|
28
|
+
makeSignedQRContent(obj: any, pubKey: string | null): SignedQR;
|
|
29
|
+
makeSignedQRFragments(obj: any, fragmentCount: number, pubKey: string | null): {
|
|
30
|
+
full: string;
|
|
34
31
|
};
|
|
32
|
+
checkSignedQRFromString(qrString: string): true | "InvalidFormat" | "InvalidSignature" | "NotForYou" | "Expired";
|
|
35
33
|
}
|
package/build/wallet.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { checkSignedQR, makeSignedQRContent, makeSignedQRFragments } from './qr';
|
|
2
2
|
import { shortenAddress, cipherMsg, decipherMsg } from './ethereum/cipher';
|
|
3
3
|
import Wallet from './ethereum/myetherwallet';
|
|
4
4
|
export default class MessagingWalletAbstract extends Wallet {
|
|
@@ -34,18 +34,18 @@ export default class MessagingWalletAbstract extends Wallet {
|
|
|
34
34
|
}
|
|
35
35
|
async ensureWalletMessageKey() {
|
|
36
36
|
const remoteKey = await this.ajaxReq.getMessageKey(this.getAddressString(), true);
|
|
37
|
-
const walletMessageKey = this
|
|
37
|
+
const walletMessageKey = this?.message_key;
|
|
38
38
|
if (typeof remoteKey.public_message_key !== 'undefined') {
|
|
39
39
|
this.message_key = {
|
|
40
40
|
pub: remoteKey.public_message_key,
|
|
41
41
|
priv: remoteKey.private_message_key,
|
|
42
42
|
};
|
|
43
|
-
if (
|
|
43
|
+
if (walletMessageKey?.pub !== remoteKey.public_message_key) {
|
|
44
44
|
return 'REPLACED_WITH_REMOTE';
|
|
45
45
|
}
|
|
46
46
|
return;
|
|
47
47
|
}
|
|
48
|
-
if (!
|
|
48
|
+
if (!walletMessageKey?.pub || !walletMessageKey?.priv) {
|
|
49
49
|
this.message_key = this.newMessageKey();
|
|
50
50
|
this.publishMessageKey();
|
|
51
51
|
return 'CREATED_NEW';
|
|
@@ -79,7 +79,7 @@ export default class MessagingWalletAbstract extends Wallet {
|
|
|
79
79
|
const newKey = Wallet.generate(false);
|
|
80
80
|
const mPub = newKey.getPublicKeyString();
|
|
81
81
|
const mPriv = newKey.getPrivateKeyString();
|
|
82
|
-
return { pub: mPub, priv: cipherMsg(
|
|
82
|
+
return { pub: mPub, priv: cipherMsg(this.getPublicKeyString(), mPriv) };
|
|
83
83
|
}
|
|
84
84
|
messageKeysFromCrypted(cipheredKey) {
|
|
85
85
|
// XXXvlab: here we are converting to hex and de-converting in decipherMsg...
|
|
@@ -99,8 +99,14 @@ export default class MessagingWalletAbstract extends Wallet {
|
|
|
99
99
|
message_key: this.message_key
|
|
100
100
|
});
|
|
101
101
|
}
|
|
102
|
-
enrollAddress(
|
|
103
|
-
return this.ajaxReq.
|
|
102
|
+
enrollAddress(id, token) {
|
|
103
|
+
return this.ajaxReq.enrollPost({
|
|
104
|
+
id,
|
|
105
|
+
token,
|
|
106
|
+
currency: this.currencyName,
|
|
107
|
+
// XXXvlab: Yes, typo is intentional here (in PHP API):
|
|
108
|
+
adresse: this.getAddressString(),
|
|
109
|
+
});
|
|
104
110
|
}
|
|
105
111
|
requestUnlock() {
|
|
106
112
|
return this.ajaxReq.requestUnlock(this.getAddressString(), this.unlockUrl);
|
|
@@ -124,40 +130,30 @@ export default class MessagingWalletAbstract extends Wallet {
|
|
|
124
130
|
}
|
|
125
131
|
}
|
|
126
132
|
//
|
|
127
|
-
// QR
|
|
133
|
+
// QR Code helpers
|
|
128
134
|
//
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
return this.makeSignedQR(objContent);
|
|
133
|
-
}
|
|
134
|
-
makeSignedQR(obj) {
|
|
135
|
-
// Values expected:
|
|
136
|
-
const { server, destinary, begin, end, viewbalance, viewoldtran, pub_key } = obj;
|
|
137
|
-
const formatDate = (date) => `${begin.getFullYear()}/${begin.getMonth()}/${begin.getDate()}`;
|
|
138
|
-
const objContent = Object.assign(obj, {
|
|
135
|
+
makeSignedQRContent(obj, pubKey) {
|
|
136
|
+
return makeSignedQRContent({
|
|
137
|
+
server: this.currencyName,
|
|
139
138
|
address: this.getAddressString(),
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
139
|
+
...obj,
|
|
140
|
+
...pubKey && {
|
|
141
|
+
message_key: cipherMsg(pubKey, this.messageKeysFromWallet())
|
|
142
|
+
},
|
|
143
|
+
}, this.privKey);
|
|
144
|
+
}
|
|
145
|
+
makeSignedQRFragments(obj, fragmentCount, pubKey) {
|
|
146
|
+
return makeSignedQRFragments(this.makeSignedQRContent(obj, pubKey), fragmentCount);
|
|
147
|
+
}
|
|
148
|
+
checkSignedQRFromString(qrString) {
|
|
149
|
+
let qrContent;
|
|
150
|
+
try {
|
|
151
|
+
qrContent = JSON.parse(qrString);
|
|
152
|
+
}
|
|
153
|
+
catch (e) {
|
|
154
|
+
return 'InvalidFormat';
|
|
155
|
+
}
|
|
156
|
+
return checkSignedQR(qrContent, this.getAddressString());
|
|
156
157
|
}
|
|
157
158
|
}
|
|
158
|
-
// // TODO: What to do with this validateEnrollment
|
|
159
|
-
// public static validateEnrollment (codeId, signature) {
|
|
160
|
-
// return this.ajaxReq.validateEnrollmentLetter(
|
|
161
|
-
// codeId, this.currencyName, signature)
|
|
162
|
-
// }
|
|
163
159
|
//# sourceMappingURL=wallet.js.map
|
package/build/wallet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@com-chain/jsc3l",
|
|
3
|
-
"version": "2.0.1-rc.
|
|
3
|
+
"version": "2.0.1-rc.20",
|
|
4
4
|
"description": "JavaScript Com-Chain Communication Library",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"scripts": {
|
|
7
|
-
"test": "
|
|
7
|
+
"test": "vitest run",
|
|
8
8
|
"build": "tsc",
|
|
9
9
|
"watch": "tsc -w"
|
|
10
10
|
},
|
|
@@ -25,15 +25,20 @@
|
|
|
25
25
|
"homepage": "https://github.com/com-chain/JSC3L#readme",
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@0k.io/prettier": "^0.0.1",
|
|
28
|
-
"@
|
|
28
|
+
"@babel/runtime": "^7.15.4",
|
|
29
|
+
"@types/node": "^20.14.5",
|
|
29
30
|
"@typescript-eslint/eslint-plugin": "^4.33.0",
|
|
30
31
|
"@typescript-eslint/parser": "^4.33.0",
|
|
32
|
+
"buffer": "^5.7.1",
|
|
31
33
|
"eslint": "^7.29.0",
|
|
32
34
|
"eslint-config-standard": "^16.0.3",
|
|
33
|
-
"
|
|
35
|
+
"jsdom": "^24.1.0",
|
|
36
|
+
"ts-node": "^10.9.2",
|
|
37
|
+
"ts-patch": "^3.2.1",
|
|
38
|
+
"typescript": "^5.5.3",
|
|
39
|
+
"vitest": "^1.6.0"
|
|
34
40
|
},
|
|
35
41
|
"dependencies": {
|
|
36
|
-
"@babel/runtime": "^7.15.4",
|
|
37
42
|
"bignumber.js": "^2.4.0",
|
|
38
43
|
"ethereumjs-tx": "^1.3.7",
|
|
39
44
|
"scryptsy": "^2.1.0",
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import * as ts from 'typescript'
|
|
2
|
+
import * as path from 'path'
|
|
3
|
+
|
|
4
|
+
import type { TransformerExtras, PluginConfig } from 'ts-patch'
|
|
5
|
+
|
|
6
|
+
export default function (
|
|
7
|
+
program: ts.Program,
|
|
8
|
+
pluginConfig: PluginConfig,
|
|
9
|
+
{ ts: tsInstance }: TransformerExtras
|
|
10
|
+
) {
|
|
11
|
+
return (ctx: ts.TransformationContext) => {
|
|
12
|
+
const { factory } = ctx
|
|
13
|
+
|
|
14
|
+
// Find the project root based on the tsconfig.json location
|
|
15
|
+
const configFilePath = program.getCompilerOptions()
|
|
16
|
+
.configFilePath as string
|
|
17
|
+
const projectRoot = configFilePath
|
|
18
|
+
? path.dirname(configFilePath)
|
|
19
|
+
: program.getCurrentDirectory()
|
|
20
|
+
|
|
21
|
+
function hasSkipComment(node: ts.Node): boolean {
|
|
22
|
+
const commentRanges =
|
|
23
|
+
tsInstance.getLeadingCommentRanges(node.getFullText(), 0) || []
|
|
24
|
+
return commentRanges.some((commentRange) => {
|
|
25
|
+
const comment = node
|
|
26
|
+
.getFullText()
|
|
27
|
+
.slice(commentRange.pos, commentRange.end)
|
|
28
|
+
return comment.includes('@skip-prod-transpilation')
|
|
29
|
+
})
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return (sourceFile: ts.SourceFile) => {
|
|
33
|
+
function visit(node: ts.Node): ts.Node {
|
|
34
|
+
if (hasSkipComment(node)) {
|
|
35
|
+
console.log(
|
|
36
|
+
`\x1b[0;30m${path.relative(projectRoot, sourceFile.fileName)
|
|
37
|
+
}\x1b[0m: skipped \x1b[0;37m${
|
|
38
|
+
ts.SyntaxKind[node.kind]
|
|
39
|
+
}\x1b[0m due to \x1b[0;36m@skip-prod-transpilation\x1b[0m directive`
|
|
40
|
+
)
|
|
41
|
+
return factory.createEmptyStatement()
|
|
42
|
+
}
|
|
43
|
+
return tsInstance.visitEachChild(node, visit, ctx)
|
|
44
|
+
}
|
|
45
|
+
return tsInstance.visitNode(sourceFile, visit)
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
package/src/bcRead.ts
CHANGED
|
@@ -4,17 +4,134 @@ import AjaxReq from './rest/ajaxReq'
|
|
|
4
4
|
import { getNakedAddress, padLeft, getDataObj } from './ethereum/ethFuncs'
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
function getNumber (data, ratio) {
|
|
8
|
-
const shortData = '0x' + data.slice(-12)
|
|
9
|
-
let a = parseInt(shortData, 16)
|
|
10
7
|
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
function decodeData (abiType: string, data: string): any {
|
|
9
|
+
if (data.startsWith('0x')) {
|
|
10
|
+
data = data.slice(2)
|
|
11
|
+
}
|
|
12
|
+
if (data.length === 0) {
|
|
13
|
+
return null
|
|
14
|
+
}
|
|
15
|
+
let dataBuffer: Buffer
|
|
16
|
+
try {
|
|
17
|
+
dataBuffer = Buffer.from(data, 'hex')
|
|
18
|
+
} catch (e) {
|
|
19
|
+
throw new Error(
|
|
20
|
+
'Invalid data provided: not an hex string')
|
|
21
|
+
}
|
|
22
|
+
if (dataBuffer.length % 32 !== 0) {
|
|
23
|
+
throw new Error(
|
|
24
|
+
'Invalid data provided: data length is not a multiple of 32')
|
|
25
|
+
}
|
|
26
|
+
const uintData = dataBuffer.readUIntBE(0, 32)
|
|
27
|
+
switch (abiType) {
|
|
28
|
+
case 'string':
|
|
29
|
+
const dataLocation = uintData
|
|
30
|
+
if (dataLocation % 32 !== 0) {
|
|
31
|
+
throw new Error(
|
|
32
|
+
'Invalid data provided while decoding string: ' +
|
|
33
|
+
'first 32byte word is not a valid address')
|
|
34
|
+
}
|
|
35
|
+
if (dataLocation + 64 > dataBuffer.length) {
|
|
36
|
+
throw new Error(
|
|
37
|
+
'Invalid data provided while decoding string: ' +
|
|
38
|
+
'not enough data to decode length and first word at given location')
|
|
39
|
+
}
|
|
40
|
+
const dataLength = dataBuffer.readUIntBE(dataLocation, 32)
|
|
41
|
+
const expectedLength = Math.ceil((dataLocation + 32 + dataLength) / 32) * 32
|
|
42
|
+
if (dataBuffer.length !== expectedLength) {
|
|
43
|
+
throw new Error(
|
|
44
|
+
'Invalid data provided while decoding string: ' +
|
|
45
|
+
'not enough data to decode advertised string')
|
|
46
|
+
}
|
|
47
|
+
const dataValue = dataBuffer.slice(dataLocation + 32, dataLocation + 32 + dataLength)
|
|
48
|
+
return dataValue.toString()
|
|
49
|
+
case 'uint':
|
|
50
|
+
case 'uint256':
|
|
51
|
+
return uintData
|
|
52
|
+
case 'number/100':
|
|
53
|
+
// Avoid passing through float and division by 100 to ensure format X...X.YY
|
|
54
|
+
let data_int = decodeData('number', data)
|
|
55
|
+
let sign = ""
|
|
56
|
+
if (data_int < 0) {
|
|
57
|
+
data_int = -data_int
|
|
58
|
+
sign = "-"
|
|
59
|
+
}
|
|
60
|
+
// garanteed >3 sized string representing uint
|
|
61
|
+
let data_str = data_int.toString().padStart(3, "0")
|
|
62
|
+
return `${sign}${data_str.slice(0,-2)}.${data_str.slice(-2)}`
|
|
63
|
+
case 'number':
|
|
64
|
+
// Using only 6 bytes, ignoring any upper bytes, this ensures
|
|
65
|
+
// javascript Number type is enough. What is decoded is signed
|
|
66
|
+
// int.
|
|
67
|
+
|
|
68
|
+
const shortData = '0x' + data.slice(-12)
|
|
69
|
+
let a = parseInt(shortData, 16)
|
|
70
|
+
|
|
71
|
+
if (a > 0x8000_0000_0000) {
|
|
72
|
+
a -= 0x1_0000_0000_0000
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return a
|
|
76
|
+
case 'bool':
|
|
77
|
+
return uintData === 1
|
|
78
|
+
default:
|
|
79
|
+
throw new Error(`Unsupported ABI type: ${abiType}`)
|
|
13
80
|
}
|
|
14
|
-
|
|
15
|
-
return a / ratio
|
|
16
81
|
}
|
|
17
82
|
|
|
83
|
+
/* @skip-prod-transpilation */
|
|
84
|
+
if (import.meta.vitest) {
|
|
85
|
+
const { it, expect, describe } = import.meta.vitest
|
|
86
|
+
describe('decode amounts', () => {
|
|
87
|
+
it('should decode "0x00...0000" to "0.00" (enforce full presence of digit and floating point)', () => {
|
|
88
|
+
expect(decodeData('number/100', '0x0000000000000000000000000000000000000000000000000000000000000000'))
|
|
89
|
+
.toBe('0.00')
|
|
90
|
+
});
|
|
91
|
+
it('should decode "0x00...0001" to "0.01"', () => {
|
|
92
|
+
expect(decodeData('number/100', '0x0000000000000000000000000000000000000000000000000000000000000001'))
|
|
93
|
+
.toBe('0.01')
|
|
94
|
+
});
|
|
95
|
+
it('should decode "0x00...0010" to "0.16"', () => {
|
|
96
|
+
expect(decodeData('number/100', '0x0000000000000000000000000000000000000000000000000000000000000010'))
|
|
97
|
+
.toBe('0.16')
|
|
98
|
+
});
|
|
99
|
+
it('should decode "0x00...1000" to "40.96"', () => {
|
|
100
|
+
expect(decodeData('number/100', '0x0000000000000000000000000000000000000000000000000000000000001000'))
|
|
101
|
+
.toBe('40.96')
|
|
102
|
+
});
|
|
103
|
+
it('should decode 0x00...01_0000_0000_0001 to "0.01" (ignore bytes > 6)', () => {
|
|
104
|
+
expect(decodeData('number/100', '0x0000000000000000000000000000000000000000000000000001000000000001'))
|
|
105
|
+
.toBe('0.01')
|
|
106
|
+
});
|
|
107
|
+
it('should decode 0x00...00_8000_0000_0000 to "1407374883553.28" (max positive number)', () => {
|
|
108
|
+
expect(decodeData('number/100', '0x0000000000000000000000000000000000000000000000000000800000000000'))
|
|
109
|
+
.toBe('1407374883553.28')
|
|
110
|
+
});
|
|
111
|
+
it('should decode 0x00...00_8000_0000_0001 to "-1407374883553.27" (lowest negative number)', () => {
|
|
112
|
+
expect(decodeData('number/100', '0x0000000000000000000000000000000000000000000000000000800000000001'))
|
|
113
|
+
.toBe('-1407374883553.27')
|
|
114
|
+
});
|
|
115
|
+
it('should decode 0x00...00_ffff_ffff_ffff to "-0.01" (max negative number)', () => {
|
|
116
|
+
expect(decodeData('number/100', '0x0000000000000000000000000000000000000000000000000000ffffffffffff'))
|
|
117
|
+
.toBe('-0.01')
|
|
118
|
+
});
|
|
119
|
+
it('should decode "0x00...019a" to "4.10" (enforce 2 digit after floating point)', () => {
|
|
120
|
+
expect(decodeData('number/100', '0x000000000000000000000000000000000000000000000000000000000000019a'))
|
|
121
|
+
.toBe('4.10')
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
describe('decode strings', () => {
|
|
125
|
+
it('should decode "0x00...020_0...0_" to "2.0"', () => {
|
|
126
|
+
expect(decodeData(
|
|
127
|
+
'string', '0x' +
|
|
128
|
+
'0000000000000000000000000000000000000000000000000000000000000020' + // data location
|
|
129
|
+
'0000000000000000000000000000000000000000000000000000000000000003' + // data length
|
|
130
|
+
'322e300000000000000000000000000000000000000000000000000000000000' // actual string
|
|
131
|
+
)).toBe('2.0')
|
|
132
|
+
})
|
|
133
|
+
})
|
|
134
|
+
}
|
|
18
135
|
|
|
19
136
|
export default abstract class BcReadAbstract {
|
|
20
137
|
|
|
@@ -22,86 +139,87 @@ export default abstract class BcReadAbstract {
|
|
|
22
139
|
abstract contracts: string[]
|
|
23
140
|
|
|
24
141
|
// Get Global status of the contract
|
|
25
|
-
|
|
142
|
+
getContractStatus () { return this.read(this.contracts[0], '0x8b3c7c69') }
|
|
26
143
|
// Get Global infos: Tax destinary Account
|
|
27
|
-
|
|
144
|
+
getTaxAccount () { return this.read(this.contracts[0], '0x4f2eabe0') }
|
|
28
145
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
return
|
|
146
|
+
async getVersion () {
|
|
147
|
+
const data = await this.read(this.contracts[0], '0x54fd4d50')
|
|
148
|
+
return decodeData('string', data as string)
|
|
32
149
|
}
|
|
33
150
|
|
|
34
151
|
|
|
35
152
|
// //////////////////////////////////////////////////////////////////////////
|
|
36
153
|
// Generic read function
|
|
37
154
|
|
|
38
|
-
async getAmount (address, walletAddress) {
|
|
39
|
-
const
|
|
40
|
-
this.contracts[0], address, [
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
async getAccInfo (address, walletAddress) {
|
|
46
|
-
return this.getInfo(this.contracts[0], address, walletAddress)
|
|
155
|
+
async getAmount (address, walletAddress, blockNb) {
|
|
156
|
+
const data = await this.read(
|
|
157
|
+
this.contracts[0], address, [
|
|
158
|
+
getNakedAddress(walletAddress)
|
|
159
|
+
], blockNb)
|
|
160
|
+
return decodeData('number/100', data)
|
|
47
161
|
}
|
|
48
162
|
|
|
49
|
-
|
|
50
|
-
const
|
|
51
|
-
|
|
163
|
+
async getAccInfo (address, walletAddress, blockNb) {
|
|
164
|
+
const data = await this.read(
|
|
165
|
+
this.contracts[0], address, [
|
|
166
|
+
getNakedAddress(walletAddress)
|
|
167
|
+
], blockNb)
|
|
168
|
+
return decodeData('number', data)
|
|
52
169
|
}
|
|
53
170
|
|
|
54
|
-
async
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
171
|
+
async read (contract: string, address: string, args?: any[],
|
|
172
|
+
blockNb: string | number = 'pending'): Promise<string> {
|
|
173
|
+
args = args || []
|
|
174
|
+
const ethCall = getDataObj(contract, address, args)
|
|
175
|
+
if (typeof blockNb !== 'string') {
|
|
176
|
+
blockNb = '0x' + new BigNumber(blockNb).toString(16)
|
|
177
|
+
}
|
|
178
|
+
try {
|
|
179
|
+
return (await this.ajaxReq.getEthCallAt(ethCall, blockNb)) as string
|
|
180
|
+
} catch (e) {
|
|
181
|
+
throw new Error(
|
|
182
|
+
`Failed read contract: ${contract}, fn: ${address}`
|
|
183
|
+
)
|
|
184
|
+
}
|
|
67
185
|
}
|
|
68
186
|
|
|
69
187
|
async getAmountForElement (
|
|
70
|
-
contract, functionAddress, callerAddress, elementAddress
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
[
|
|
188
|
+
contract, functionAddress, callerAddress, elementAddress,
|
|
189
|
+
blockNb: string | number = 'pending') {
|
|
190
|
+
const data = await this.read(
|
|
191
|
+
contract, functionAddress, [
|
|
74
192
|
getNakedAddress(callerAddress),
|
|
75
193
|
getNakedAddress(elementAddress)
|
|
76
|
-
])
|
|
77
|
-
|
|
78
|
-
return getNumber(data, 100.0).toString()
|
|
194
|
+
], blockNb)
|
|
195
|
+
return decodeData('number/100', data)
|
|
79
196
|
}
|
|
80
197
|
|
|
81
198
|
async getElementInList (
|
|
82
199
|
contract, mapFunctionAddress, amountFunctionAddress,
|
|
83
|
-
callerAddress, index, list, indMin
|
|
200
|
+
callerAddress, index, list, indMin,
|
|
201
|
+
blockNb: string | number = 'pending') {
|
|
84
202
|
|
|
85
203
|
if (index < indMin) return list
|
|
86
204
|
|
|
87
|
-
const
|
|
88
|
-
contract, mapFunctionAddress,
|
|
89
|
-
[
|
|
205
|
+
const data = await this.read(
|
|
206
|
+
contract, mapFunctionAddress, [
|
|
90
207
|
getNakedAddress(callerAddress),
|
|
91
208
|
padLeft(new BigNumber(index).toString(16), 64)
|
|
92
|
-
]
|
|
93
|
-
|
|
94
|
-
|
|
209
|
+
],
|
|
210
|
+
blockNb)
|
|
95
211
|
const amount = await this.getAmountForElement(
|
|
96
|
-
contract, amountFunctionAddress, callerAddress, data
|
|
212
|
+
contract, amountFunctionAddress, callerAddress, data,
|
|
213
|
+
blockNb)
|
|
97
214
|
|
|
98
|
-
const
|
|
99
|
-
const element = { address
|
|
215
|
+
const address = '0x' + data.substring(data.length - 40)
|
|
216
|
+
const element = { address, amount }
|
|
100
217
|
list.unshift(element)
|
|
101
218
|
return this.getElementInList(
|
|
102
219
|
contract, mapFunctionAddress,
|
|
103
220
|
amountFunctionAddress, callerAddress, index - 1, list,
|
|
104
|
-
indMin
|
|
221
|
+
indMin,
|
|
222
|
+
blockNb)
|
|
105
223
|
}
|
|
106
224
|
|
|
107
225
|
}
|
|
@@ -135,8 +253,8 @@ const fnHashes = [
|
|
|
135
253
|
fnHashes.forEach(({ fn, hashes }) => {
|
|
136
254
|
for (const fnName in hashes) {
|
|
137
255
|
const fnHash = hashes[fnName]
|
|
138
|
-
BcReadAbstract.prototype[fnName] = function (walletAddress) {
|
|
139
|
-
return this[fn](fnHash, walletAddress)
|
|
256
|
+
BcReadAbstract.prototype[fnName] = function (walletAddress, blockNb) {
|
|
257
|
+
return this[fn](fnHash, walletAddress, blockNb)
|
|
140
258
|
}
|
|
141
259
|
}
|
|
142
260
|
})
|
|
@@ -160,15 +278,17 @@ const ListFunction = {
|
|
|
160
278
|
for (const key in ListFunction) {
|
|
161
279
|
const configList = ListFunction[key]
|
|
162
280
|
BcReadAbstract.prototype[`get${key}List`] =
|
|
163
|
-
async function (walletAddress, indMin, indMax) {
|
|
281
|
+
async function (walletAddress, indMin, indMax, blockNb: string | number = 'pending') {
|
|
164
282
|
// Simple protection against ill inputs on indMin and indMax and to
|
|
165
283
|
// avoid unwanted infinite loops
|
|
166
284
|
indMax = indMax || 0
|
|
167
285
|
indMin = indMin || 0
|
|
168
|
-
const
|
|
169
|
-
this.contracts[1],
|
|
170
|
-
|
|
171
|
-
|
|
286
|
+
const data = await this.read(
|
|
287
|
+
this.contracts[1], `0x${configList.count}`, [
|
|
288
|
+
getNakedAddress(walletAddress)
|
|
289
|
+
],
|
|
290
|
+
blockNb)
|
|
291
|
+
const count = decodeData('number', data)
|
|
172
292
|
const list = []
|
|
173
293
|
const index = Math.min(count - 1, indMax)
|
|
174
294
|
return this.getElementInList(
|
|
@@ -178,7 +298,8 @@ for (const key in ListFunction) {
|
|
|
178
298
|
walletAddress,
|
|
179
299
|
index,
|
|
180
300
|
list,
|
|
181
|
-
indMin
|
|
301
|
+
indMin,
|
|
302
|
+
blockNb)
|
|
182
303
|
}
|
|
183
304
|
}
|
|
184
305
|
|