ripple-binary-codec 1.0.2 → 1.0.3-mpt-beta
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 +3 -3
- package/dist/binary.d.ts +34 -20
- package/dist/binary.js +51 -34
- package/dist/binary.js.map +1 -1
- package/dist/coretypes.d.ts +9 -9
- package/dist/coretypes.js +33 -9
- package/dist/coretypes.js.map +1 -1
- package/dist/enums/bytes.d.ts +25 -0
- package/dist/enums/bytes.js +63 -0
- package/dist/enums/bytes.js.map +1 -0
- package/dist/enums/constants.d.ts +4 -0
- package/dist/enums/constants.js +8 -0
- package/dist/enums/constants.js.map +1 -0
- package/dist/enums/definitions.json +3066 -1760
- package/dist/enums/field.d.ts +28 -0
- package/dist/enums/field.js +58 -0
- package/dist/enums/field.js.map +1 -0
- package/dist/enums/index.d.ts +12 -46
- package/dist/enums/index.js +22 -110
- package/dist/enums/index.js.map +1 -1
- package/dist/enums/src/enums/definitions.json +3073 -0
- package/dist/enums/utils-renumber.js +20 -20
- package/dist/enums/utils-renumber.js.map +1 -1
- package/dist/enums/xrpl-definitions-base.d.ts +44 -0
- package/dist/enums/xrpl-definitions-base.js +59 -0
- package/dist/enums/xrpl-definitions-base.js.map +1 -0
- package/dist/enums/xrpl-definitions.d.ts +21 -0
- package/dist/enums/xrpl-definitions.js +29 -0
- package/dist/enums/xrpl-definitions.js.map +1 -0
- package/dist/hash-prefixes.d.ts +1 -2
- package/dist/hash-prefixes.js +7 -6
- package/dist/hash-prefixes.js.map +1 -1
- package/dist/hashes.d.ts +7 -8
- package/dist/hashes.js +23 -44
- package/dist/hashes.js.map +1 -1
- package/dist/index.d.ts +16 -17
- package/dist/index.js +65 -40
- package/dist/index.js.map +1 -1
- package/dist/ledger-hashes.d.ts +6 -3
- package/dist/ledger-hashes.js +40 -33
- package/dist/ledger-hashes.js.map +1 -1
- package/dist/quality.d.ts +3 -4
- package/dist/quality.js +20 -19
- package/dist/quality.js.map +1 -1
- package/dist/serdes/binary-parser.d.ts +8 -6
- package/dist/serdes/binary-parser.js +74 -64
- package/dist/serdes/binary-parser.js.map +1 -1
- package/dist/serdes/binary-serializer.d.ts +10 -11
- package/dist/serdes/binary-serializer.js +50 -48
- package/dist/serdes/binary-serializer.js.map +1 -1
- package/dist/shamap.d.ts +6 -7
- package/dist/shamap.js +74 -97
- package/dist/shamap.js.map +1 -1
- package/dist/src/binary.d.ts +90 -0
- package/dist/src/binary.js +128 -0
- package/dist/src/binary.js.map +1 -0
- package/dist/src/coretypes.d.ts +9 -0
- package/dist/src/coretypes.js +48 -0
- package/dist/src/coretypes.js.map +1 -0
- package/dist/src/enums/bytes.d.ts +25 -0
- package/dist/src/enums/bytes.js +63 -0
- package/dist/src/enums/bytes.js.map +1 -0
- package/dist/src/enums/constants.d.ts +4 -0
- package/dist/src/enums/constants.js +8 -0
- package/dist/src/enums/constants.js.map +1 -0
- package/dist/src/enums/definitions.json +3068 -0
- package/dist/src/enums/field.d.ts +28 -0
- package/dist/src/enums/field.js +58 -0
- package/dist/src/enums/field.js.map +1 -0
- package/dist/src/enums/index.d.ts +12 -0
- package/dist/src/enums/index.js +31 -0
- package/dist/src/enums/index.js.map +1 -0
- package/dist/src/enums/utils-renumber.d.ts +101 -0
- package/dist/src/enums/utils-renumber.js +127 -0
- package/dist/src/enums/utils-renumber.js.map +1 -0
- package/dist/src/enums/xrpl-definitions-base.d.ts +44 -0
- package/dist/src/enums/xrpl-definitions-base.js +59 -0
- package/dist/src/enums/xrpl-definitions-base.js.map +1 -0
- package/dist/src/enums/xrpl-definitions.d.ts +21 -0
- package/dist/src/enums/xrpl-definitions.js +29 -0
- package/dist/src/enums/xrpl-definitions.js.map +1 -0
- package/dist/src/hash-prefixes.d.ts +5 -0
- package/dist/src/hash-prefixes.js +41 -0
- package/dist/src/hash-prefixes.js.map +1 -0
- package/dist/src/hashes.d.ts +50 -0
- package/dist/src/hashes.js +76 -0
- package/dist/src/hashes.js.map +1 -0
- package/dist/src/index.d.ts +64 -0
- package/dist/src/index.js +123 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/ledger-hashes.d.ts +48 -0
- package/dist/src/ledger-hashes.js +141 -0
- package/dist/src/ledger-hashes.js.map +1 -0
- package/dist/src/quality.d.ts +21 -0
- package/dist/src/quality.js +42 -0
- package/dist/src/quality.js.map +1 -0
- package/dist/src/serdes/binary-parser.d.ts +100 -0
- package/dist/src/serdes/binary-parser.js +194 -0
- package/dist/src/serdes/binary-parser.js.map +1 -0
- package/dist/src/serdes/binary-serializer.d.ts +81 -0
- package/dist/src/serdes/binary-serializer.js +149 -0
- package/dist/src/serdes/binary-serializer.js.map +1 -0
- package/dist/src/shamap.d.ts +102 -0
- package/dist/src/shamap.js +172 -0
- package/dist/src/shamap.js.map +1 -0
- package/dist/src/types/account-id.d.ts +35 -0
- package/dist/src/types/account-id.js +69 -0
- package/dist/src/types/account-id.js.map +1 -0
- package/dist/src/types/amount.d.ts +91 -0
- package/dist/src/types/amount.js +289 -0
- package/dist/src/types/amount.js.map +1 -0
- package/dist/src/types/blob.d.ts +24 -0
- package/dist/src/types/blob.js +43 -0
- package/dist/src/types/blob.js.map +1 -0
- package/dist/src/types/currency.d.ts +28 -0
- package/dist/src/types/currency.js +127 -0
- package/dist/src/types/currency.js.map +1 -0
- package/dist/src/types/hash-128.d.ts +16 -0
- package/dist/src/types/hash-128.js +32 -0
- package/dist/src/types/hash-128.js.map +1 -0
- package/dist/src/types/hash-160.d.ts +10 -0
- package/dist/src/types/hash-160.js +19 -0
- package/dist/src/types/hash-160.js.map +1 -0
- package/dist/src/types/hash-192.d.ts +10 -0
- package/dist/src/types/hash-192.js +19 -0
- package/dist/src/types/hash-192.js.map +1 -0
- package/dist/src/types/hash-256.d.ts +10 -0
- package/dist/src/types/hash-256.js +16 -0
- package/dist/src/types/hash-256.js.map +1 -0
- package/dist/src/types/hash.d.ts +40 -0
- package/dist/src/types/hash.js +73 -0
- package/dist/src/types/hash.js.map +1 -0
- package/dist/src/types/index.d.ts +19 -0
- package/dist/src/types/index.js +64 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/types/issue.d.ts +38 -0
- package/dist/src/types/issue.js +81 -0
- package/dist/src/types/issue.js.map +1 -0
- package/dist/src/types/path-set.d.ts +36 -0
- package/dist/src/types/path-set.js +233 -0
- package/dist/src/types/path-set.js.map +1 -0
- package/dist/src/types/serialized-type.d.ts +70 -0
- package/dist/src/types/serialized-type.js +105 -0
- package/dist/src/types/serialized-type.js.map +1 -0
- package/dist/src/types/st-array.d.ts +31 -0
- package/dist/src/types/st-array.js +86 -0
- package/dist/src/types/st-array.js.map +1 -0
- package/dist/src/types/st-object.d.ts +32 -0
- package/dist/src/types/st-object.js +155 -0
- package/dist/src/types/st-object.js.map +1 -0
- package/dist/src/types/uint-16.d.ts +24 -0
- package/dist/src/types/uint-16.js +45 -0
- package/dist/src/types/uint-16.js.map +1 -0
- package/dist/src/types/uint-32.d.ts +24 -0
- package/dist/src/types/uint-32.js +50 -0
- package/dist/src/types/uint-32.js.map +1 -0
- package/dist/src/types/uint-64.d.ts +37 -0
- package/dist/src/types/uint-64.js +86 -0
- package/dist/src/types/uint-64.js.map +1 -0
- package/dist/src/types/uint-8.d.ts +24 -0
- package/dist/src/types/uint-8.js +46 -0
- package/dist/src/types/uint-8.js.map +1 -0
- package/dist/src/types/uint.d.ts +29 -0
- package/dist/src/types/uint.js +47 -0
- package/dist/src/types/uint.js.map +1 -0
- package/dist/src/types/vector-256.d.ts +30 -0
- package/dist/src/types/vector-256.js +73 -0
- package/dist/src/types/vector-256.js.map +1 -0
- package/dist/src/types/xchain-bridge.d.ts +44 -0
- package/dist/src/types/xchain-bridge.js +102 -0
- package/dist/src/types/xchain-bridge.js.map +1 -0
- package/dist/src/utils.d.ts +47 -0
- package/dist/src/utils.js +137 -0
- package/dist/src/utils.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/account-id.d.ts +2 -3
- package/dist/types/account-id.js +29 -37
- package/dist/types/account-id.js.map +1 -1
- package/dist/types/amount.d.ts +33 -10
- package/dist/types/amount.js +181 -101
- package/dist/types/amount.js.map +1 -1
- package/dist/types/blob.d.ts +3 -4
- package/dist/types/blob.js +16 -27
- package/dist/types/blob.js.map +1 -1
- package/dist/types/currency.d.ts +5 -13
- package/dist/types/currency.js +53 -66
- package/dist/types/currency.js.map +1 -1
- package/dist/types/hash-128.d.ts +8 -3
- package/dist/types/hash-128.js +23 -22
- package/dist/types/hash-128.js.map +1 -1
- package/dist/types/hash-160.d.ts +2 -3
- package/dist/types/hash-160.js +7 -24
- package/dist/types/hash-160.js.map +1 -1
- package/dist/types/hash-192.d.ts +10 -0
- package/dist/types/hash-192.js +19 -0
- package/dist/types/hash-192.js.map +1 -0
- package/dist/types/hash-256.d.ts +2 -3
- package/dist/types/hash-256.js +7 -22
- package/dist/types/hash-256.js.map +1 -1
- package/dist/types/hash.d.ts +4 -5
- package/dist/types/hash.js +25 -39
- package/dist/types/hash.js.map +1 -1
- package/dist/types/index.d.ts +19 -33
- package/dist/types/index.js +44 -24
- package/dist/types/index.js.map +1 -1
- package/dist/types/issue.d.ts +38 -0
- package/dist/types/issue.js +81 -0
- package/dist/types/issue.js.map +1 -0
- package/dist/types/path-set.d.ts +2 -2
- package/dist/types/path-set.js +73 -94
- package/dist/types/path-set.js.map +1 -1
- package/dist/types/serialized-type.d.ts +26 -18
- package/dist/types/serialized-type.js +50 -60
- package/dist/types/serialized-type.js.map +1 -1
- package/dist/types/st-array.d.ts +7 -4
- package/dist/types/st-array.js +36 -47
- package/dist/types/st-array.js.map +1 -1
- package/dist/types/st-object.d.ts +8 -5
- package/dist/types/st-object.js +73 -74
- package/dist/types/st-object.js.map +1 -1
- package/dist/types/uint-16.d.ts +3 -4
- package/dist/types/uint-16.js +20 -33
- package/dist/types/uint-16.js.map +1 -1
- package/dist/types/uint-32.d.ts +3 -4
- package/dist/types/uint-32.js +23 -36
- package/dist/types/uint-32.js.map +1 -1
- package/dist/types/uint-64.d.ts +5 -6
- package/dist/types/uint-64.js +44 -48
- package/dist/types/uint-64.js.map +1 -1
- package/dist/types/uint-8.d.ts +3 -4
- package/dist/types/uint-8.js +21 -33
- package/dist/types/uint-8.js.map +1 -1
- package/dist/types/uint.d.ts +5 -5
- package/dist/types/uint.js +17 -27
- package/dist/types/uint.js.map +1 -1
- package/dist/types/vector-256.d.ts +3 -4
- package/dist/types/vector-256.js +28 -45
- package/dist/types/vector-256.js.map +1 -1
- package/dist/types/xchain-bridge.d.ts +44 -0
- package/dist/types/xchain-bridge.js +102 -0
- package/dist/types/xchain-bridge.js.map +1 -0
- package/dist/utils.d.ts +47 -0
- package/dist/utils.js +137 -0
- package/dist/utils.js.map +1 -0
- package/package.json +23 -33
- package/src/README.md +5 -0
- package/src/binary.ts +194 -0
- package/src/coretypes.ts +31 -0
- package/src/enums/README.md +144 -0
- package/src/enums/bytes.ts +74 -0
- package/src/enums/constants.ts +4 -0
- package/src/enums/definitions.json +3073 -0
- package/src/enums/field.ts +84 -0
- package/src/enums/index.ts +34 -0
- package/src/enums/utils-renumber.ts +134 -0
- package/src/enums/xrpl-definitions-base.ts +111 -0
- package/src/enums/xrpl-definitions.ts +32 -0
- package/src/hash-prefixes.ts +40 -0
- package/src/hashes.ts +75 -0
- package/src/index.ts +153 -0
- package/src/ledger-hashes.ts +191 -0
- package/src/quality.ts +38 -0
- package/src/serdes/binary-parser.ts +228 -0
- package/src/serdes/binary-serializer.ts +166 -0
- package/src/shamap.ts +186 -0
- package/src/types/account-id.ts +86 -0
- package/src/types/amount.ts +362 -0
- package/src/types/blob.ts +46 -0
- package/src/types/currency.ts +140 -0
- package/src/types/hash-128.ts +33 -0
- package/src/types/hash-160.ts +19 -0
- package/src/types/hash-192.ts +19 -0
- package/src/types/hash-256.ts +15 -0
- package/src/types/hash.ts +83 -0
- package/src/types/index.ts +66 -0
- package/src/types/issue.ts +96 -0
- package/src/types/path-set.ts +290 -0
- package/src/types/serialized-type.ts +122 -0
- package/src/types/st-array.ts +113 -0
- package/src/types/st-object.ts +192 -0
- package/src/types/uint-16.ts +53 -0
- package/src/types/uint-32.ts +59 -0
- package/src/types/uint-64.ts +104 -0
- package/src/types/uint-8.ts +52 -0
- package/src/types/uint.ts +60 -0
- package/src/types/vector-256.ts +79 -0
- package/src/types/xchain-bridge.ts +128 -0
- package/src/utils.ts +152 -0
- package/HISTORY.md +0 -74
- package/test/amount.test.js +0 -43
- package/test/binary-json.test.js +0 -47
- package/test/binary-parser.test.js +0 -397
- package/test/binary-serializer.test.js +0 -248
- package/test/fixtures/account-tx-transactions.db +0 -0
- package/test/fixtures/codec-fixtures.json +0 -4466
- package/test/fixtures/data-driven-tests.json +0 -3721
- package/test/fixtures/delivermin-tx-binary.json +0 -1
- package/test/fixtures/delivermin-tx.json +0 -98
- package/test/fixtures/deposit-preauth-tx-binary.json +0 -1
- package/test/fixtures/deposit-preauth-tx-meta-binary.json +0 -1
- package/test/fixtures/deposit-preauth-tx.json +0 -58
- package/test/fixtures/escrow-cancel-binary.json +0 -1
- package/test/fixtures/escrow-cancel-tx.json +0 -6
- package/test/fixtures/escrow-create-binary.json +0 -1
- package/test/fixtures/escrow-create-tx.json +0 -10
- package/test/fixtures/escrow-finish-binary.json +0 -1
- package/test/fixtures/escrow-finish-meta-binary.json +0 -1
- package/test/fixtures/escrow-finish-tx.json +0 -95
- package/test/fixtures/ledger-full-38129.json +0 -1
- package/test/fixtures/ledger-full-40000.json +0 -1
- package/test/fixtures/negative-unl.json +0 -12
- package/test/fixtures/payment-channel-claim-binary.json +0 -1
- package/test/fixtures/payment-channel-claim-tx.json +0 -8
- package/test/fixtures/payment-channel-create-binary.json +0 -1
- package/test/fixtures/payment-channel-create-tx.json +0 -11
- package/test/fixtures/payment-channel-fund-binary.json +0 -1
- package/test/fixtures/payment-channel-fund-tx.json +0 -7
- package/test/fixtures/signerlistset-tx-binary.json +0 -1
- package/test/fixtures/signerlistset-tx-meta-binary.json +0 -1
- package/test/fixtures/signerlistset-tx.json +0 -94
- package/test/fixtures/x-codec-fixtures.json +0 -188
- package/test/hash.test.js +0 -82
- package/test/ledger.test.js +0 -29
- package/test/lower-case-hex.test.js +0 -45
- package/test/pseudo-transaction.test.js +0 -38
- package/test/quality.test.js +0 -15
- package/test/shamap.test.js +0 -88
- package/test/signing-data-encoding.test.js +0 -129
- package/test/tx-encode-decode.test.js +0 -80
- package/test/types.test.js +0 -34
- package/test/uint.test.js +0 -40
- package/test/utils.js +0 -29
- package/test/x-address.test.js +0 -147
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-256.js","sourceRoot":"","sources":["../../src/types/vector-256.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vector-256.js","sourceRoot":"","sources":["../../src/types/vector-256.ts"],"names":[],"mappings":";;;AAAA,uDAAkD;AAElD,yCAAoC;AACpC,mEAAuD;AACvD,mDAAoD;AAEpD;;GAEG;AACH,SAAS,SAAS,CAAC,GAAG;IACpB,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAA;AAC/E,CAAC;AAED;;GAEG;AACH,MAAM,SAAU,SAAQ,gCAAc;IACpC,YAAY,KAAiB;QAC3B,KAAK,CAAC,KAAK,CAAC,CAAA;IACd,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,MAAoB,EAAE,IAAa;QACnD,MAAM,SAAS,GAAG,IAAI,6BAAS,EAAE,CAAA;QACjC,MAAM,KAAK,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,MAAM,CAAC,IAAI,EAAE,CAAA;QACnC,MAAM,MAAM,GAAG,KAAK,GAAG,EAAE,CAAA;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/B,kBAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;SAClD;QACD,OAAO,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAA;IAC3C,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,IAAI,CAAsC,KAAQ;QACvD,IAAI,KAAK,YAAY,SAAS,EAAE;YAC9B,OAAO,KAAK,CAAA;SACb;QAED,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;YACpB,MAAM,SAAS,GAAG,IAAI,6BAAS,EAAE,CAAA;YACjC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACrB,kBAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;YAC3C,CAAC,CAAC,CAAA;YACF,OAAO,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAA;SAC1C;QAED,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAChE,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,KAAK,CAAC,EAAE;YACpC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;SAC/C;QAED,MAAM,MAAM,GAAkB,EAAE,CAAA;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;YAClD,MAAM,CAAC,IAAI,CAAC,IAAA,kBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;SACrD;QACD,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAEQ,8BAAS"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { BinaryParser } from '../serdes/binary-parser';
|
|
2
|
+
import { JsonObject, SerializedType } from './serialized-type';
|
|
3
|
+
import { IssueObject } from './issue';
|
|
4
|
+
/**
|
|
5
|
+
* Interface for JSON objects that represent cross-chain bridges
|
|
6
|
+
*/
|
|
7
|
+
interface XChainBridgeObject extends JsonObject {
|
|
8
|
+
LockingChainDoor: string;
|
|
9
|
+
LockingChainIssue: IssueObject | string;
|
|
10
|
+
IssuingChainDoor: string;
|
|
11
|
+
IssuingChainIssue: IssueObject | string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Class for serializing/deserializing XChainBridges
|
|
15
|
+
*/
|
|
16
|
+
declare class XChainBridge extends SerializedType {
|
|
17
|
+
static readonly ZERO_XCHAIN_BRIDGE: XChainBridge;
|
|
18
|
+
static readonly TYPE_ORDER: {
|
|
19
|
+
name: string;
|
|
20
|
+
type: typeof SerializedType;
|
|
21
|
+
}[];
|
|
22
|
+
constructor(bytes: Uint8Array);
|
|
23
|
+
/**
|
|
24
|
+
* Construct a cross-chain bridge from a JSON
|
|
25
|
+
*
|
|
26
|
+
* @param value XChainBridge or JSON to parse into an XChainBridge
|
|
27
|
+
* @returns An XChainBridge object
|
|
28
|
+
*/
|
|
29
|
+
static from<T extends XChainBridge | XChainBridgeObject>(value: T): XChainBridge;
|
|
30
|
+
/**
|
|
31
|
+
* Read an XChainBridge from a BinaryParser
|
|
32
|
+
*
|
|
33
|
+
* @param parser BinaryParser to read the XChainBridge from
|
|
34
|
+
* @returns An XChainBridge object
|
|
35
|
+
*/
|
|
36
|
+
static fromParser(parser: BinaryParser): XChainBridge;
|
|
37
|
+
/**
|
|
38
|
+
* Get the JSON representation of this XChainBridge
|
|
39
|
+
*
|
|
40
|
+
* @returns the JSON interpretation of this.bytes
|
|
41
|
+
*/
|
|
42
|
+
toJSON(): XChainBridgeObject;
|
|
43
|
+
}
|
|
44
|
+
export { XChainBridge, XChainBridgeObject };
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.XChainBridge = void 0;
|
|
4
|
+
const binary_parser_1 = require("../serdes/binary-parser");
|
|
5
|
+
const account_id_1 = require("./account-id");
|
|
6
|
+
const serialized_type_1 = require("./serialized-type");
|
|
7
|
+
const issue_1 = require("./issue");
|
|
8
|
+
const utils_1 = require("@xrplf/isomorphic/utils");
|
|
9
|
+
/**
|
|
10
|
+
* Type guard for XChainBridgeObject
|
|
11
|
+
*/
|
|
12
|
+
function isXChainBridgeObject(arg) {
|
|
13
|
+
const keys = Object.keys(arg).sort();
|
|
14
|
+
return (keys.length === 4 &&
|
|
15
|
+
keys[0] === 'IssuingChainDoor' &&
|
|
16
|
+
keys[1] === 'IssuingChainIssue' &&
|
|
17
|
+
keys[2] === 'LockingChainDoor' &&
|
|
18
|
+
keys[3] === 'LockingChainIssue');
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Class for serializing/deserializing XChainBridges
|
|
22
|
+
*/
|
|
23
|
+
class XChainBridge extends serialized_type_1.SerializedType {
|
|
24
|
+
constructor(bytes) {
|
|
25
|
+
super(bytes !== null && bytes !== void 0 ? bytes : XChainBridge.ZERO_XCHAIN_BRIDGE.bytes);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Construct a cross-chain bridge from a JSON
|
|
29
|
+
*
|
|
30
|
+
* @param value XChainBridge or JSON to parse into an XChainBridge
|
|
31
|
+
* @returns An XChainBridge object
|
|
32
|
+
*/
|
|
33
|
+
static from(value) {
|
|
34
|
+
if (value instanceof XChainBridge) {
|
|
35
|
+
return value;
|
|
36
|
+
}
|
|
37
|
+
if (!isXChainBridgeObject(value)) {
|
|
38
|
+
throw new Error('Invalid type to construct an XChainBridge');
|
|
39
|
+
}
|
|
40
|
+
const bytes = [];
|
|
41
|
+
this.TYPE_ORDER.forEach((item) => {
|
|
42
|
+
const { name, type } = item;
|
|
43
|
+
if (type === account_id_1.AccountID) {
|
|
44
|
+
bytes.push(Uint8Array.from([0x14]));
|
|
45
|
+
}
|
|
46
|
+
const object = type.from(value[name]);
|
|
47
|
+
bytes.push(object.toBytes());
|
|
48
|
+
});
|
|
49
|
+
return new XChainBridge((0, utils_1.concat)(bytes));
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Read an XChainBridge from a BinaryParser
|
|
53
|
+
*
|
|
54
|
+
* @param parser BinaryParser to read the XChainBridge from
|
|
55
|
+
* @returns An XChainBridge object
|
|
56
|
+
*/
|
|
57
|
+
static fromParser(parser) {
|
|
58
|
+
const bytes = [];
|
|
59
|
+
this.TYPE_ORDER.forEach((item) => {
|
|
60
|
+
const { type } = item;
|
|
61
|
+
if (type === account_id_1.AccountID) {
|
|
62
|
+
parser.skip(1);
|
|
63
|
+
bytes.push(Uint8Array.from([0x14]));
|
|
64
|
+
}
|
|
65
|
+
const object = type.fromParser(parser);
|
|
66
|
+
bytes.push(object.toBytes());
|
|
67
|
+
});
|
|
68
|
+
return new XChainBridge((0, utils_1.concat)(bytes));
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get the JSON representation of this XChainBridge
|
|
72
|
+
*
|
|
73
|
+
* @returns the JSON interpretation of this.bytes
|
|
74
|
+
*/
|
|
75
|
+
toJSON() {
|
|
76
|
+
const parser = new binary_parser_1.BinaryParser(this.toString());
|
|
77
|
+
const json = {};
|
|
78
|
+
XChainBridge.TYPE_ORDER.forEach((item) => {
|
|
79
|
+
const { name, type } = item;
|
|
80
|
+
if (type === account_id_1.AccountID) {
|
|
81
|
+
parser.skip(1);
|
|
82
|
+
}
|
|
83
|
+
const object = type.fromParser(parser).toJSON();
|
|
84
|
+
json[name] = object;
|
|
85
|
+
});
|
|
86
|
+
return json;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
exports.XChainBridge = XChainBridge;
|
|
90
|
+
XChainBridge.ZERO_XCHAIN_BRIDGE = new XChainBridge((0, utils_1.concat)([
|
|
91
|
+
Uint8Array.from([0x14]),
|
|
92
|
+
new Uint8Array(40),
|
|
93
|
+
Uint8Array.from([0x14]),
|
|
94
|
+
new Uint8Array(40),
|
|
95
|
+
]));
|
|
96
|
+
XChainBridge.TYPE_ORDER = [
|
|
97
|
+
{ name: 'LockingChainDoor', type: account_id_1.AccountID },
|
|
98
|
+
{ name: 'LockingChainIssue', type: issue_1.Issue },
|
|
99
|
+
{ name: 'IssuingChainDoor', type: account_id_1.AccountID },
|
|
100
|
+
{ name: 'IssuingChainIssue', type: issue_1.Issue },
|
|
101
|
+
];
|
|
102
|
+
//# sourceMappingURL=xchain-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xchain-bridge.js","sourceRoot":"","sources":["../../src/types/xchain-bridge.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import TypedArray = NodeJS.TypedArray;
|
|
3
|
+
/**
|
|
4
|
+
* Writes value to array at the specified offset. The value must be a valid unsigned 8-bit integer.
|
|
5
|
+
* @param array Uint8Array to be written to
|
|
6
|
+
* @param value Number to be written to array.
|
|
7
|
+
* @param offset plus the number of bytes written.
|
|
8
|
+
*/
|
|
9
|
+
export declare function writeUInt8(array: Uint8Array, value: number, offset: number): void;
|
|
10
|
+
/**
|
|
11
|
+
* Writes value to array at the specified offset as big-endian. The value must be a valid unsigned 16-bit integer.
|
|
12
|
+
* @param array Uint8Array to be written to
|
|
13
|
+
* @param value Number to be written to array.
|
|
14
|
+
* @param offset plus the number of bytes written.
|
|
15
|
+
*/
|
|
16
|
+
export declare function writeUInt16BE(array: Uint8Array, value: number, offset: number): void;
|
|
17
|
+
/**
|
|
18
|
+
* Writes value to array at the specified offset as big-endian. The value must be a valid unsigned 32-bit integer.
|
|
19
|
+
* @param array Uint8Array to be written to
|
|
20
|
+
* @param value Number to be written to array.
|
|
21
|
+
* @param offset plus the number of bytes written.
|
|
22
|
+
*/
|
|
23
|
+
export declare function writeUInt32BE(array: Uint8Array, value: number, offset: number): void;
|
|
24
|
+
/**
|
|
25
|
+
* Reads an unsigned, big-endian 16-bit integer from the array at the specified offset.
|
|
26
|
+
* @param array Uint8Array to read
|
|
27
|
+
* @param offset Number of bytes to skip before starting to read. Must satisfy 0 <= offset <= buf.length - 2
|
|
28
|
+
*/
|
|
29
|
+
export declare function readUInt16BE(array: Uint8Array, offset: number): string;
|
|
30
|
+
/**
|
|
31
|
+
* Reads an unsigned, big-endian 16-bit integer from the array at the specified offset.
|
|
32
|
+
* @param array Uint8Array to read
|
|
33
|
+
* @param offset Number of bytes to skip before starting to read. Must satisfy 0 <= offset <= buf.length - 4
|
|
34
|
+
*/
|
|
35
|
+
export declare function readUInt32BE(array: Uint8Array, offset: number): string;
|
|
36
|
+
/**
|
|
37
|
+
* Compares two Uint8Array or ArrayBuffers
|
|
38
|
+
* @param a first array to compare
|
|
39
|
+
* @param b second array to compare
|
|
40
|
+
*/
|
|
41
|
+
export declare function equal(a: Uint8Array | ArrayBuffer, b: Uint8Array | ArrayBuffer): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Compare two TypedArrays
|
|
44
|
+
* @param a first array to compare
|
|
45
|
+
* @param b second array to compare
|
|
46
|
+
*/
|
|
47
|
+
export declare function compare(a: TypedArray, b: TypedArray): 1 | -1 | 0;
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.compare = exports.equal = exports.readUInt32BE = exports.readUInt16BE = exports.writeUInt32BE = exports.writeUInt16BE = exports.writeUInt8 = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Writes value to array at the specified offset. The value must be a valid unsigned 8-bit integer.
|
|
6
|
+
* @param array Uint8Array to be written to
|
|
7
|
+
* @param value Number to be written to array.
|
|
8
|
+
* @param offset plus the number of bytes written.
|
|
9
|
+
*/
|
|
10
|
+
function writeUInt8(array, value, offset) {
|
|
11
|
+
value = Number(value);
|
|
12
|
+
array[offset] = value;
|
|
13
|
+
}
|
|
14
|
+
exports.writeUInt8 = writeUInt8;
|
|
15
|
+
/**
|
|
16
|
+
* Writes value to array at the specified offset as big-endian. The value must be a valid unsigned 16-bit integer.
|
|
17
|
+
* @param array Uint8Array to be written to
|
|
18
|
+
* @param value Number to be written to array.
|
|
19
|
+
* @param offset plus the number of bytes written.
|
|
20
|
+
*/
|
|
21
|
+
function writeUInt16BE(array, value, offset) {
|
|
22
|
+
value = Number(value);
|
|
23
|
+
array[offset] = value >>> 8;
|
|
24
|
+
array[offset + 1] = value;
|
|
25
|
+
}
|
|
26
|
+
exports.writeUInt16BE = writeUInt16BE;
|
|
27
|
+
/**
|
|
28
|
+
* Writes value to array at the specified offset as big-endian. The value must be a valid unsigned 32-bit integer.
|
|
29
|
+
* @param array Uint8Array to be written to
|
|
30
|
+
* @param value Number to be written to array.
|
|
31
|
+
* @param offset plus the number of bytes written.
|
|
32
|
+
*/
|
|
33
|
+
function writeUInt32BE(array, value, offset) {
|
|
34
|
+
array[offset] = (value >>> 24) & 0xff;
|
|
35
|
+
array[offset + 1] = (value >>> 16) & 0xff;
|
|
36
|
+
array[offset + 2] = (value >>> 8) & 0xff;
|
|
37
|
+
array[offset + 3] = value & 0xff;
|
|
38
|
+
}
|
|
39
|
+
exports.writeUInt32BE = writeUInt32BE;
|
|
40
|
+
/**
|
|
41
|
+
* Reads an unsigned, big-endian 16-bit integer from the array at the specified offset.
|
|
42
|
+
* @param array Uint8Array to read
|
|
43
|
+
* @param offset Number of bytes to skip before starting to read. Must satisfy 0 <= offset <= buf.length - 2
|
|
44
|
+
*/
|
|
45
|
+
function readUInt16BE(array, offset) {
|
|
46
|
+
return new DataView(array.buffer).getUint16(offset, false).toString(10);
|
|
47
|
+
}
|
|
48
|
+
exports.readUInt16BE = readUInt16BE;
|
|
49
|
+
/**
|
|
50
|
+
* Reads an unsigned, big-endian 16-bit integer from the array at the specified offset.
|
|
51
|
+
* @param array Uint8Array to read
|
|
52
|
+
* @param offset Number of bytes to skip before starting to read. Must satisfy 0 <= offset <= buf.length - 4
|
|
53
|
+
*/
|
|
54
|
+
function readUInt32BE(array, offset) {
|
|
55
|
+
return new DataView(array.buffer).getUint32(offset, false).toString(10);
|
|
56
|
+
}
|
|
57
|
+
exports.readUInt32BE = readUInt32BE;
|
|
58
|
+
/**
|
|
59
|
+
* Compares two Uint8Array or ArrayBuffers
|
|
60
|
+
* @param a first array to compare
|
|
61
|
+
* @param b second array to compare
|
|
62
|
+
*/
|
|
63
|
+
function equal(a, b) {
|
|
64
|
+
const aUInt = a instanceof ArrayBuffer ? new Uint8Array(a, 0) : a;
|
|
65
|
+
const bUInt = b instanceof ArrayBuffer ? new Uint8Array(b, 0) : b;
|
|
66
|
+
if (aUInt.byteLength != bUInt.byteLength)
|
|
67
|
+
return false;
|
|
68
|
+
if (aligned32(aUInt) && aligned32(bUInt))
|
|
69
|
+
return compare32(aUInt, bUInt) === 0;
|
|
70
|
+
if (aligned16(aUInt) && aligned16(bUInt))
|
|
71
|
+
return compare16(aUInt, bUInt) === 0;
|
|
72
|
+
return compare8(aUInt, bUInt) === 0;
|
|
73
|
+
}
|
|
74
|
+
exports.equal = equal;
|
|
75
|
+
/**
|
|
76
|
+
* Compares two 8 bit aligned arrays
|
|
77
|
+
* @param a first array to compare
|
|
78
|
+
* @param b second array to compare
|
|
79
|
+
*/
|
|
80
|
+
function compare8(a, b) {
|
|
81
|
+
const ua = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);
|
|
82
|
+
const ub = new Uint8Array(b.buffer, b.byteOffset, b.byteLength);
|
|
83
|
+
return compare(ua, ub);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Compares two 16 bit aligned arrays
|
|
87
|
+
* @param a first array to compare
|
|
88
|
+
* @param b second array to compare
|
|
89
|
+
*/
|
|
90
|
+
function compare16(a, b) {
|
|
91
|
+
const ua = new Uint16Array(a.buffer, a.byteOffset, a.byteLength / 2);
|
|
92
|
+
const ub = new Uint16Array(b.buffer, b.byteOffset, b.byteLength / 2);
|
|
93
|
+
return compare(ua, ub);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Compares two 32 bit aligned arrays
|
|
97
|
+
* @param a first array to compare
|
|
98
|
+
* @param b second array to compare
|
|
99
|
+
*/
|
|
100
|
+
function compare32(a, b) {
|
|
101
|
+
const ua = new Uint32Array(a.buffer, a.byteOffset, a.byteLength / 4);
|
|
102
|
+
const ub = new Uint32Array(b.buffer, b.byteOffset, b.byteLength / 4);
|
|
103
|
+
return compare(ua, ub);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Compare two TypedArrays
|
|
107
|
+
* @param a first array to compare
|
|
108
|
+
* @param b second array to compare
|
|
109
|
+
*/
|
|
110
|
+
function compare(a, b) {
|
|
111
|
+
if (a.byteLength !== b.byteLength) {
|
|
112
|
+
throw new Error('Cannot compare arrays of different length');
|
|
113
|
+
}
|
|
114
|
+
for (let i = 0; i < a.length - 1; i += 1) {
|
|
115
|
+
if (a[i] > b[i])
|
|
116
|
+
return 1;
|
|
117
|
+
if (a[i] < b[i])
|
|
118
|
+
return -1;
|
|
119
|
+
}
|
|
120
|
+
return 0;
|
|
121
|
+
}
|
|
122
|
+
exports.compare = compare;
|
|
123
|
+
/**
|
|
124
|
+
* Determine if TypedArray is 16 bit aligned
|
|
125
|
+
* @param array The array to check
|
|
126
|
+
*/
|
|
127
|
+
function aligned16(array) {
|
|
128
|
+
return array.byteOffset % 2 === 0 && array.byteLength % 2 === 0;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Determine if TypedArray is 32 bit aligned
|
|
132
|
+
* @param array The array to check
|
|
133
|
+
*/
|
|
134
|
+
function aligned32(array) {
|
|
135
|
+
return array.byteOffset % 4 === 0 && array.byteLength % 4 === 0;
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,57 +1,47 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ripple-binary-codec",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3-mpt-beta",
|
|
4
4
|
"description": "XRP Ledger binary codec",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist/*",
|
|
7
|
-
"
|
|
8
|
-
"test/*"
|
|
7
|
+
"src/*"
|
|
9
8
|
],
|
|
10
9
|
"main": "dist/",
|
|
11
10
|
"directories": {
|
|
12
11
|
"test": "test"
|
|
13
12
|
},
|
|
14
13
|
"dependencies": {
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"ripple-address-codec": "^
|
|
18
|
-
},
|
|
19
|
-
"devDependencies": {
|
|
20
|
-
"@types/jest": "^26.0.7",
|
|
21
|
-
"@types/node": "^14.0.10",
|
|
22
|
-
"@typescript-eslint/eslint-plugin": "^3.2.0",
|
|
23
|
-
"@typescript-eslint/parser": "^3.2.0",
|
|
24
|
-
"eslint": "^7.7.0",
|
|
25
|
-
"eslint-config-prettier": "^6.11.0",
|
|
26
|
-
"eslint-plugin-import": "^2.21.1",
|
|
27
|
-
"eslint-plugin-jest": "^23.20.0",
|
|
28
|
-
"eslint-plugin-mocha": "^7.0.1",
|
|
29
|
-
"eslint-plugin-prettier": "^3.1.3",
|
|
30
|
-
"jest": "^26.0.1",
|
|
31
|
-
"prettier": "^2.0.4",
|
|
32
|
-
"typescript": "^3.9.5"
|
|
14
|
+
"@xrplf/isomorphic": "^1.0.1",
|
|
15
|
+
"bignumber.js": "^9.0.0",
|
|
16
|
+
"ripple-address-codec": "^5.0.0"
|
|
33
17
|
},
|
|
34
18
|
"scripts": {
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
19
|
+
"build": "tsc --build tsconfig.build.json && copyfiles ./src/enums/definitions.json ./dist/enums/",
|
|
20
|
+
"clean": "rm -rf ./dist ./coverage ./test/testCompiledForWeb tsconfig.build.tsbuildinfo",
|
|
21
|
+
"prepublishOnly": "npm test",
|
|
22
|
+
"test": "npm run build && jest --verbose false --silent=false ./test/*.test.ts",
|
|
23
|
+
"test:browser": "npm run build && karma start ./karma.config.js",
|
|
38
24
|
"lint": "eslint . --ext .ts --ext .test.js"
|
|
39
25
|
},
|
|
26
|
+
"keywords": [
|
|
27
|
+
"ripple",
|
|
28
|
+
"xrp",
|
|
29
|
+
"xrp ledger",
|
|
30
|
+
"xrpl"
|
|
31
|
+
],
|
|
40
32
|
"repository": {
|
|
41
33
|
"type": "git",
|
|
42
|
-
"url": "git
|
|
34
|
+
"url": "git@github.com:XRPLF/xrpl.js.git"
|
|
43
35
|
},
|
|
44
36
|
"bugs": {
|
|
45
|
-
"url": "https://github.com/
|
|
37
|
+
"url": "https://github.com/XRPLF/xrpl.js/issues"
|
|
46
38
|
},
|
|
47
|
-
"homepage": "https://github.com/
|
|
39
|
+
"homepage": "https://github.com/XRPLF/xrpl.js/tree/main/packages/ripple-binary-codec#readme",
|
|
48
40
|
"license": "ISC",
|
|
49
41
|
"readmeFilename": "README.md",
|
|
50
|
-
"prettier":
|
|
51
|
-
"semi": true
|
|
52
|
-
},
|
|
42
|
+
"prettier": "@xrplf/prettier-config",
|
|
53
43
|
"engines": {
|
|
54
|
-
"node": ">=
|
|
55
|
-
|
|
56
|
-
|
|
44
|
+
"node": ">= 16"
|
|
45
|
+
},
|
|
46
|
+
"gitHead": "0ff8b47616b659385f07b43d508e81233809ca62"
|
|
57
47
|
}
|
package/src/README.md
ADDED
package/src/binary.ts
ADDED
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/* eslint-disable func-style */
|
|
2
|
+
|
|
3
|
+
import { bytesToHex } from '@xrplf/isomorphic/utils'
|
|
4
|
+
import { coreTypes } from './types'
|
|
5
|
+
import { BinaryParser } from './serdes/binary-parser'
|
|
6
|
+
import { AccountID } from './types/account-id'
|
|
7
|
+
import { HashPrefix } from './hash-prefixes'
|
|
8
|
+
import { BinarySerializer, BytesList } from './serdes/binary-serializer'
|
|
9
|
+
import { sha512Half, transactionID } from './hashes'
|
|
10
|
+
import {
|
|
11
|
+
type XrplDefinitionsBase,
|
|
12
|
+
DEFAULT_DEFINITIONS,
|
|
13
|
+
type FieldInstance,
|
|
14
|
+
} from './enums'
|
|
15
|
+
import { STObject } from './types/st-object'
|
|
16
|
+
import { JsonObject } from './types/serialized-type'
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Construct a BinaryParser
|
|
20
|
+
*
|
|
21
|
+
* @param bytes hex-string or Uint8Array to construct BinaryParser from
|
|
22
|
+
* @param definitions rippled definitions used to parse the values of transaction types and such.
|
|
23
|
+
* Can be customized for sidechains and amendments.
|
|
24
|
+
* @returns BinaryParser
|
|
25
|
+
*/
|
|
26
|
+
const makeParser = (
|
|
27
|
+
bytes: string | Uint8Array,
|
|
28
|
+
definitions?: XrplDefinitionsBase,
|
|
29
|
+
): BinaryParser =>
|
|
30
|
+
new BinaryParser(
|
|
31
|
+
bytes instanceof Uint8Array ? bytesToHex(bytes) : bytes,
|
|
32
|
+
definitions,
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Parse BinaryParser into JSON
|
|
37
|
+
*
|
|
38
|
+
* @param parser BinaryParser object
|
|
39
|
+
* @param definitions rippled definitions used to parse the values of transaction types and such.
|
|
40
|
+
* Can be customized for sidechains and amendments.
|
|
41
|
+
* @returns JSON for the bytes in the BinaryParser
|
|
42
|
+
*/
|
|
43
|
+
const readJSON = (
|
|
44
|
+
parser: BinaryParser,
|
|
45
|
+
definitions: XrplDefinitionsBase = DEFAULT_DEFINITIONS,
|
|
46
|
+
): JsonObject =>
|
|
47
|
+
(parser.readType(coreTypes.STObject) as STObject).toJSON(definitions)
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Parse a hex-string into its JSON interpretation
|
|
51
|
+
*
|
|
52
|
+
* @param bytes hex-string to parse into JSON
|
|
53
|
+
* @param definitions rippled definitions used to parse the values of transaction types and such.
|
|
54
|
+
* Can be customized for sidechains and amendments.
|
|
55
|
+
* @returns JSON
|
|
56
|
+
*/
|
|
57
|
+
const binaryToJSON = (
|
|
58
|
+
bytes: string,
|
|
59
|
+
definitions?: XrplDefinitionsBase,
|
|
60
|
+
): JsonObject => readJSON(makeParser(bytes, definitions), definitions)
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Interface for passing parameters to SerializeObject
|
|
64
|
+
*
|
|
65
|
+
* @field set signingFieldOnly to true if you want to serialize only signing fields
|
|
66
|
+
*/
|
|
67
|
+
interface OptionObject {
|
|
68
|
+
prefix?: Uint8Array
|
|
69
|
+
suffix?: Uint8Array
|
|
70
|
+
signingFieldsOnly?: boolean
|
|
71
|
+
definitions?: XrplDefinitionsBase
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Function to serialize JSON object representing a transaction
|
|
76
|
+
*
|
|
77
|
+
* @param object JSON object to serialize
|
|
78
|
+
* @param opts options for serializing, including optional prefix, suffix, signingFieldOnly, and definitions
|
|
79
|
+
* @returns A Uint8Array containing the serialized object
|
|
80
|
+
*/
|
|
81
|
+
function serializeObject(
|
|
82
|
+
object: JsonObject,
|
|
83
|
+
opts: OptionObject = {},
|
|
84
|
+
): Uint8Array {
|
|
85
|
+
const { prefix, suffix, signingFieldsOnly = false, definitions } = opts
|
|
86
|
+
const bytesList = new BytesList()
|
|
87
|
+
|
|
88
|
+
if (prefix) {
|
|
89
|
+
bytesList.put(prefix)
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const filter = signingFieldsOnly
|
|
93
|
+
? (f: FieldInstance): boolean => f.isSigningField
|
|
94
|
+
: undefined
|
|
95
|
+
;(coreTypes.STObject as typeof STObject)
|
|
96
|
+
.from(object, filter, definitions)
|
|
97
|
+
.toBytesSink(bytesList)
|
|
98
|
+
|
|
99
|
+
if (suffix) {
|
|
100
|
+
bytesList.put(suffix)
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return bytesList.toBytes()
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Serialize an object for signing
|
|
108
|
+
*
|
|
109
|
+
* @param transaction Transaction to serialize
|
|
110
|
+
* @param prefix Prefix bytes to put before the serialized object
|
|
111
|
+
* @param opts.definitions Custom rippled types to use instead of the default. Used for sidechains and amendments.
|
|
112
|
+
* @returns A Uint8Array with the serialized object
|
|
113
|
+
*/
|
|
114
|
+
function signingData(
|
|
115
|
+
transaction: JsonObject,
|
|
116
|
+
prefix: Uint8Array = HashPrefix.transactionSig,
|
|
117
|
+
opts: { definitions?: XrplDefinitionsBase } = {},
|
|
118
|
+
): Uint8Array {
|
|
119
|
+
return serializeObject(transaction, {
|
|
120
|
+
prefix,
|
|
121
|
+
signingFieldsOnly: true,
|
|
122
|
+
definitions: opts.definitions,
|
|
123
|
+
})
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Interface describing fields required for a Claim
|
|
128
|
+
*/
|
|
129
|
+
interface ClaimObject extends JsonObject {
|
|
130
|
+
channel: string
|
|
131
|
+
amount: string | number
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Serialize a signingClaim
|
|
136
|
+
*
|
|
137
|
+
* @param claim A claim object to serialize
|
|
138
|
+
* @param opts.definitions Custom rippled types to use instead of the default. Used for sidechains and amendments.
|
|
139
|
+
* @returns the serialized object with appropriate prefix
|
|
140
|
+
*/
|
|
141
|
+
function signingClaimData(claim: ClaimObject): Uint8Array {
|
|
142
|
+
const num = BigInt(String(claim.amount))
|
|
143
|
+
const prefix = HashPrefix.paymentChannelClaim
|
|
144
|
+
const channel = coreTypes.Hash256.from(claim.channel).toBytes()
|
|
145
|
+
const amount = coreTypes.UInt64.from(num).toBytes()
|
|
146
|
+
|
|
147
|
+
const bytesList = new BytesList()
|
|
148
|
+
|
|
149
|
+
bytesList.put(prefix)
|
|
150
|
+
bytesList.put(channel)
|
|
151
|
+
bytesList.put(amount)
|
|
152
|
+
return bytesList.toBytes()
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Serialize a transaction object for multiSigning
|
|
157
|
+
*
|
|
158
|
+
* @param transaction transaction to serialize
|
|
159
|
+
* @param signingAccount Account to sign the transaction with
|
|
160
|
+
* @param opts.definitions Custom rippled types to use instead of the default. Used for sidechains and amendments.
|
|
161
|
+
* @returns serialized transaction with appropriate prefix and suffix
|
|
162
|
+
*/
|
|
163
|
+
function multiSigningData(
|
|
164
|
+
transaction: JsonObject,
|
|
165
|
+
signingAccount: string | AccountID,
|
|
166
|
+
opts: { definitions: XrplDefinitionsBase } = {
|
|
167
|
+
definitions: DEFAULT_DEFINITIONS,
|
|
168
|
+
},
|
|
169
|
+
): Uint8Array {
|
|
170
|
+
const prefix = HashPrefix.transactionMultiSig
|
|
171
|
+
const suffix = coreTypes.AccountID.from(signingAccount).toBytes()
|
|
172
|
+
return serializeObject(transaction, {
|
|
173
|
+
prefix,
|
|
174
|
+
suffix,
|
|
175
|
+
signingFieldsOnly: true,
|
|
176
|
+
definitions: opts.definitions,
|
|
177
|
+
})
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export {
|
|
181
|
+
BinaryParser,
|
|
182
|
+
BinarySerializer,
|
|
183
|
+
BytesList,
|
|
184
|
+
ClaimObject,
|
|
185
|
+
makeParser,
|
|
186
|
+
serializeObject,
|
|
187
|
+
readJSON,
|
|
188
|
+
multiSigningData,
|
|
189
|
+
signingData,
|
|
190
|
+
signingClaimData,
|
|
191
|
+
binaryToJSON,
|
|
192
|
+
sha512Half,
|
|
193
|
+
transactionID,
|
|
194
|
+
}
|
package/src/coretypes.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DEFAULT_DEFINITIONS,
|
|
3
|
+
Field,
|
|
4
|
+
TransactionType,
|
|
5
|
+
LedgerEntryType,
|
|
6
|
+
Type,
|
|
7
|
+
TransactionResult,
|
|
8
|
+
} from './enums'
|
|
9
|
+
import * as types from './types'
|
|
10
|
+
import * as binary from './binary'
|
|
11
|
+
import { ShaMap } from './shamap'
|
|
12
|
+
import * as ledgerHashes from './ledger-hashes'
|
|
13
|
+
import * as hashes from './hashes'
|
|
14
|
+
import { quality } from './quality'
|
|
15
|
+
import { HashPrefix } from './hash-prefixes'
|
|
16
|
+
|
|
17
|
+
export {
|
|
18
|
+
hashes,
|
|
19
|
+
binary,
|
|
20
|
+
ledgerHashes,
|
|
21
|
+
DEFAULT_DEFINITIONS,
|
|
22
|
+
Field,
|
|
23
|
+
TransactionType,
|
|
24
|
+
LedgerEntryType,
|
|
25
|
+
Type,
|
|
26
|
+
TransactionResult,
|
|
27
|
+
quality,
|
|
28
|
+
HashPrefix,
|
|
29
|
+
ShaMap,
|
|
30
|
+
types,
|
|
31
|
+
}
|