ecash-lib 1.2.2-rc9 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/README.md +2 -1
  2. package/dist/ecc.d.ts +12 -0
  3. package/dist/ecc.d.ts.map +1 -1
  4. package/dist/ecc.js +9 -47
  5. package/dist/ecc.js.map +1 -1
  6. package/dist/ffi/ecash_lib_wasm_bg_browser.wasm +0 -0
  7. package/dist/ffi/ecash_lib_wasm_bg_browser.wasm.d.ts +18 -4
  8. package/dist/ffi/ecash_lib_wasm_bg_nodejs.wasm +0 -0
  9. package/dist/ffi/ecash_lib_wasm_bg_nodejs.wasm.d.ts +18 -4
  10. package/dist/ffi/ecash_lib_wasm_browser.d.ts +95 -4
  11. package/dist/ffi/ecash_lib_wasm_browser.js +245 -14
  12. package/dist/ffi/ecash_lib_wasm_nodejs.d.ts +77 -0
  13. package/dist/ffi/ecash_lib_wasm_nodejs.js +247 -14
  14. package/dist/hash.d.ts +21 -1
  15. package/dist/hash.d.ts.map +1 -1
  16. package/dist/hash.js +16 -10
  17. package/dist/hash.js.map +1 -1
  18. package/dist/hdwallet.d.ts +33 -0
  19. package/dist/hdwallet.d.ts.map +1 -0
  20. package/dist/hdwallet.js +148 -0
  21. package/dist/hdwallet.js.map +1 -0
  22. package/dist/hmac.d.ts +13 -0
  23. package/dist/hmac.d.ts.map +1 -0
  24. package/dist/hmac.js +63 -0
  25. package/dist/hmac.js.map +1 -0
  26. package/dist/index.d.ts +3 -1
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +3 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/initBrowser.d.ts.map +1 -1
  31. package/dist/initBrowser.js +3 -0
  32. package/dist/initBrowser.js.map +1 -1
  33. package/dist/initNodeJs.d.ts.map +1 -1
  34. package/dist/initNodeJs.js +3 -0
  35. package/dist/initNodeJs.js.map +1 -1
  36. package/dist/io/bytes.d.ts +5 -3
  37. package/dist/io/bytes.d.ts.map +1 -1
  38. package/dist/io/bytes.js +15 -7
  39. package/dist/io/bytes.js.map +1 -1
  40. package/dist/io/writer.d.ts +4 -3
  41. package/dist/io/writer.d.ts.map +1 -1
  42. package/dist/io/writerbytes.d.ts +4 -3
  43. package/dist/io/writerbytes.d.ts.map +1 -1
  44. package/dist/io/writerbytes.js +7 -6
  45. package/dist/io/writerbytes.js.map +1 -1
  46. package/dist/io/writerlength.d.ts +4 -3
  47. package/dist/io/writerlength.d.ts.map +1 -1
  48. package/dist/io/writerlength.js +3 -3
  49. package/dist/io/writerlength.js.map +1 -1
  50. package/dist/mnemonic.d.ts +14 -0
  51. package/dist/mnemonic.d.ts.map +1 -0
  52. package/dist/mnemonic.js +123 -0
  53. package/dist/mnemonic.js.map +1 -0
  54. package/dist/pbkdf2.d.ts +11 -0
  55. package/dist/pbkdf2.d.ts.map +1 -0
  56. package/dist/pbkdf2.js +36 -0
  57. package/dist/pbkdf2.js.map +1 -0
  58. package/dist/script.d.ts +4 -0
  59. package/dist/script.d.ts.map +1 -1
  60. package/dist/script.js +6 -0
  61. package/dist/script.js.map +1 -1
  62. package/package.json +1 -1
  63. package/src/address/address.ts +346 -0
  64. package/src/address/legacyaddr.ts +129 -0
  65. package/src/consts.ts +8 -0
  66. package/src/ecc.ts +61 -0
  67. package/src/ffi/ecash_lib_wasm_bg_browser.wasm +0 -0
  68. package/src/ffi/ecash_lib_wasm_bg_browser.wasm.d.ts +32 -0
  69. package/src/ffi/ecash_lib_wasm_bg_nodejs.wasm +0 -0
  70. package/src/ffi/ecash_lib_wasm_bg_nodejs.wasm.d.ts +32 -0
  71. package/src/ffi/ecash_lib_wasm_browser.d.ts +183 -0
  72. package/src/ffi/ecash_lib_wasm_browser.js +571 -0
  73. package/src/ffi/ecash_lib_wasm_nodejs.d.ts +127 -0
  74. package/src/ffi/ecash_lib_wasm_nodejs.js +498 -0
  75. package/src/hash.ts +46 -0
  76. package/src/hdwallet.ts +181 -0
  77. package/src/hmac.ts +74 -0
  78. package/src/index.ts +29 -0
  79. package/src/indexBrowser.ts +6 -0
  80. package/src/indexNodeJs.ts +6 -0
  81. package/src/initBrowser.ts +21 -0
  82. package/src/initNodeJs.ts +20 -0
  83. package/src/io/bytes.ts +80 -0
  84. package/src/io/hex.ts +69 -0
  85. package/src/io/int.ts +6 -0
  86. package/src/io/str.ts +16 -0
  87. package/src/io/varsize.ts +49 -0
  88. package/src/io/writer.ts +20 -0
  89. package/src/io/writerbytes.ts +87 -0
  90. package/src/io/writerlength.ts +44 -0
  91. package/src/mnemonic.ts +153 -0
  92. package/src/op.ts +162 -0
  93. package/src/opcode.ts +154 -0
  94. package/src/pbkdf2.ts +52 -0
  95. package/src/script.ts +195 -0
  96. package/src/sigHashType.ts +190 -0
  97. package/src/test/testRunner.ts +209 -0
  98. package/src/token/alp.ts +146 -0
  99. package/src/token/common.ts +32 -0
  100. package/src/token/empp.ts +29 -0
  101. package/src/token/slp.ts +212 -0
  102. package/src/tx.ts +180 -0
  103. package/src/txBuilder.ts +262 -0
  104. package/src/unsignedTx.ts +359 -0
  105. package/tsconfig.json +2 -1
  106. package/wordlists/english.json +2053 -0
  107. package/.nyc_output/0fc40ca6-d52c-45eb-b31b-2601ce70b887.json +0 -1
  108. package/.nyc_output/ac5be6db-4e40-41f8-8b84-7598d4747e57.json +0 -1
  109. package/.nyc_output/b316d46f-5ea0-4e98-884a-bfbf9cc1d0f8.json +0 -1
  110. package/.nyc_output/f965566b-9422-4874-b45e-9eefda9c769c.json +0 -1
  111. package/.nyc_output/processinfo/0fc40ca6-d52c-45eb-b31b-2601ce70b887.json +0 -1
  112. package/.nyc_output/processinfo/ac5be6db-4e40-41f8-8b84-7598d4747e57.json +0 -1
  113. package/.nyc_output/processinfo/b316d46f-5ea0-4e98-884a-bfbf9cc1d0f8.json +0 -1
  114. package/.nyc_output/processinfo/f965566b-9422-4874-b45e-9eefda9c769c.json +0 -1
  115. package/.nyc_output/processinfo/index.json +0 -1
  116. package/dist/address/cashaddr.d.ts +0 -78
  117. package/dist/address/cashaddr.d.ts.map +0 -1
  118. package/dist/address/cashaddr.js +0 -543
  119. package/dist/address/cashaddr.js.map +0 -1
  120. package/dist/cashaddr/cashaddr.d.ts +0 -23
  121. package/dist/cashaddr/cashaddr.d.ts.map +0 -1
  122. package/dist/cashaddr/cashaddr.js +0 -325
  123. package/dist/cashaddr/cashaddr.js.map +0 -1
  124. package/global.d.ts +0 -64
  125. package/test.log +0 -82
package/dist/hmac.js ADDED
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ // Copyright (c) 2025 The Bitcoin developers
3
+ // Distributed under the MIT software license, see the accompanying
4
+ // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.hmacSha512 = exports.hmacSha256 = exports.Hmac = void 0;
7
+ const hash_1 = require("./hash");
8
+ class Hmac {
9
+ constructor(hashFactory, blockLength, key) {
10
+ this.oHash = hashFactory();
11
+ this.iHash = hashFactory();
12
+ const pad = new Uint8Array(blockLength);
13
+ if (key.length > blockLength) {
14
+ const hasher = hashFactory();
15
+ hasher.update(key);
16
+ key = hasher.finalize();
17
+ }
18
+ pad.set(key, 0);
19
+ for (let i = 0; i < pad.length; i++) {
20
+ pad[i] ^= 0x36;
21
+ }
22
+ this.iHash.update(pad);
23
+ for (let i = 0; i < pad.length; i++) {
24
+ pad[i] ^= 0x36 ^ 0x5c;
25
+ }
26
+ this.oHash.update(pad);
27
+ pad.fill(0);
28
+ }
29
+ update(data) {
30
+ this.iHash.update(data);
31
+ }
32
+ digest() {
33
+ this.oHash.update(this.iHash.finalize());
34
+ const hash = this.oHash.finalize();
35
+ this.iHash.free();
36
+ this.oHash.free();
37
+ return hash;
38
+ }
39
+ clone() {
40
+ const clone = Object.create(Object.getPrototypeOf(this), {});
41
+ clone.oHash = this.oHash.clone();
42
+ clone.iHash = this.iHash.clone();
43
+ return clone;
44
+ }
45
+ free() {
46
+ this.iHash.free();
47
+ this.oHash.free();
48
+ }
49
+ }
50
+ exports.Hmac = Hmac;
51
+ function hmacSha256(key, data) {
52
+ const hmac = new Hmac(hash_1.sha256Hasher, 64, key);
53
+ hmac.update(data);
54
+ return hmac.digest();
55
+ }
56
+ exports.hmacSha256 = hmacSha256;
57
+ function hmacSha512(key, data) {
58
+ const hmac = new Hmac(hash_1.sha512Hasher, 128, key);
59
+ hmac.update(data);
60
+ return hmac.digest();
61
+ }
62
+ exports.hmacSha512 = hmacSha512;
63
+ //# sourceMappingURL=hmac.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hmac.js","sourceRoot":"","sources":["../src/hmac.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,7 +4,9 @@ export * from './hash.js';
4
4
  export * from './op.js';
5
5
  export * from './opcode.js';
6
6
  export * from './script.js';
7
- export * from './address/address';
7
+ export * from './mnemonic.js';
8
+ export * from './hdwallet.js';
9
+ export * from './address/address.js';
8
10
  export * from './sigHashType.js';
9
11
  export * from './tx.js';
10
12
  export * from './txBuilder.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -23,7 +23,9 @@ __exportStar(require("./hash.js"), exports);
23
23
  __exportStar(require("./op.js"), exports);
24
24
  __exportStar(require("./opcode.js"), exports);
25
25
  __exportStar(require("./script.js"), exports);
26
- __exportStar(require("./address/address"), exports);
26
+ __exportStar(require("./mnemonic.js"), exports);
27
+ __exportStar(require("./hdwallet.js"), exports);
28
+ __exportStar(require("./address/address.js"), exports);
27
29
  __exportStar(require("./sigHashType.js"), exports);
28
30
  __exportStar(require("./tx.js"), exports);
29
31
  __exportStar(require("./txBuilder.js"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;;;;;;;;;;;;;;AAEtE,8CAA4B;AAC5B,2CAAyB;AACzB,4CAA0B;AAC1B,0CAAwB;AACxB,8CAA4B;AAC5B,8CAA4B;AAC5B,oDAAkC;AAClC,mDAAiC;AACjC,0CAAwB;AACxB,iDAA+B;AAC/B,kDAAgC;AAChC,gDAA8B;AAC9B,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B;AAC5B,kDAAgC;AAChC,iDAA+B;AAC/B,sDAAoC;AACpC,uDAAqC;AACrC,iDAA+B;AAC/B,oDAAkC;AAClC,kDAAgC;AAChC,iDAA+B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;;;;;;;;;;;;;;AAEtE,8CAA4B;AAC5B,2CAAyB;AACzB,4CAA0B;AAC1B,0CAAwB;AACxB,8CAA4B;AAC5B,8CAA4B;AAC5B,gDAA8B;AAC9B,gDAA8B;AAC9B,uDAAqC;AACrC,mDAAiC;AACjC,0CAAwB;AACxB,iDAA+B;AAC/B,kDAAgC;AAChC,gDAA8B;AAC9B,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B;AAC5B,kDAAgC;AAChC,iDAA+B;AAC/B,sDAAoC;AACpC,uDAAqC;AACrC,iDAA+B;AAC/B,oDAAkC;AAClC,kDAAgC;AAChC,iDAA+B"}
@@ -1 +1 @@
1
- {"version":3,"file":"initBrowser.d.ts","sourceRoot":"","sources":["../src/initBrowser.ts"],"names":[],"mappings":"AAQA,kDAAkD;AAClD,wBAAsB,QAAQ,kBAQ7B"}
1
+ {"version":3,"file":"initBrowser.d.ts","sourceRoot":"","sources":["../src/initBrowser.ts"],"names":[],"mappings":"AAQA,kDAAkD;AAClD,wBAAsB,QAAQ,kBAW7B"}
@@ -38,6 +38,9 @@ async function initWasm() {
38
38
  sha256: ffi.sha256,
39
39
  sha256d: ffi.sha256d,
40
40
  shaRmd160: ffi.shaRmd160,
41
+ sha512: ffi.sha512,
42
+ Sha256H: ffi.Sha256H,
43
+ Sha512H: ffi.Sha512H,
41
44
  });
42
45
  }
43
46
  exports.initWasm = initWasm;
@@ -1 +1 @@
1
- {"version":3,"file":"initBrowser.js","sourceRoot":"","sources":["../src/initBrowser.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtE,qCAAoC;AACpC,gIAAmE;AACnE,uCAAwC;AAExC,kDAAkD;AAC3C,KAAK,UAAU,QAAQ;IAC1B,MAAM,IAAA,mCAAU,GAAE,CAAC;IACnB,IAAA,iBAAQ,EAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,IAAA,qBAAW,EAAC;QACR,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,SAAS,EAAE,GAAG,CAAC,SAAS;KAC3B,CAAC,CAAC;AACP,CAAC;AARD,4BAQC"}
1
+ {"version":3,"file":"initBrowser.js","sourceRoot":"","sources":["../src/initBrowser.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtE,qCAAoC;AACpC,gIAAmE;AACnE,uCAAwC;AAExC,kDAAkD;AAC3C,KAAK,UAAU,QAAQ;IAC1B,MAAM,IAAA,mCAAU,GAAE,CAAC;IACnB,IAAA,iBAAQ,EAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,IAAA,qBAAW,EAAC;QACR,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,OAAO,EAAE,GAAG,CAAC,OAAO;KACvB,CAAC,CAAC;AACP,CAAC;AAXD,4BAWC"}
@@ -1 +1 @@
1
- {"version":3,"file":"initNodeJs.d.ts","sourceRoot":"","sources":["../src/initNodeJs.ts"],"names":[],"mappings":"AAQA,qDAAqD;AACrD,wBAAsB,QAAQ,kBAO7B"}
1
+ {"version":3,"file":"initNodeJs.d.ts","sourceRoot":"","sources":["../src/initNodeJs.ts"],"names":[],"mappings":"AAQA,qDAAqD;AACrD,wBAAsB,QAAQ,kBAU7B"}
@@ -37,6 +37,9 @@ async function initWasm() {
37
37
  sha256: ffi.sha256,
38
38
  sha256d: ffi.sha256d,
39
39
  shaRmd160: ffi.shaRmd160,
40
+ sha512: ffi.sha512,
41
+ Sha256H: ffi.Sha256H,
42
+ Sha512H: ffi.Sha512H,
40
43
  });
41
44
  }
42
45
  exports.initWasm = initWasm;
@@ -1 +1 @@
1
- {"version":3,"file":"initNodeJs.js","sourceRoot":"","sources":["../src/initNodeJs.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtE,qCAAoC;AACpC,oEAAsD;AACtD,uCAAwC;AAExC,qDAAqD;AAC9C,KAAK,UAAU,QAAQ;IAC1B,IAAA,iBAAQ,EAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,IAAA,qBAAW,EAAC;QACR,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,SAAS,EAAE,GAAG,CAAC,SAAS;KAC3B,CAAC,CAAC;AACP,CAAC;AAPD,4BAOC"}
1
+ {"version":3,"file":"initNodeJs.js","sourceRoot":"","sources":["../src/initNodeJs.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtE,qCAAoC;AACpC,oEAAsD;AACtD,uCAAwC;AAExC,qDAAqD;AAC9C,KAAK,UAAU,QAAQ;IAC1B,IAAA,iBAAQ,EAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,IAAA,qBAAW,EAAC;QACR,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,OAAO,EAAE,GAAG,CAAC,OAAO;KACvB,CAAC,CAAC;AACP,CAAC;AAVD,4BAUC"}
@@ -1,3 +1,5 @@
1
+ export type Endian = 'LE' | 'BE';
2
+ export declare function endianToBool(endian?: Endian): boolean;
1
3
  /** Reads ints/bytes from a Uint8Array. All integers are little-endian. */
2
4
  export declare class Bytes {
3
5
  data: Uint8Array;
@@ -8,11 +10,11 @@ export declare class Bytes {
8
10
  /** Read a single byte */
9
11
  readU8(): number;
10
12
  /** Read 2-byte little-endian integer (uint16_t) */
11
- readU16(): number;
13
+ readU16(endian?: Endian): number;
12
14
  /** Read 4-byte little-endian integer (uint32_t) */
13
- readU32(): number;
15
+ readU32(endian?: Endian): number;
14
16
  /** Read 8-byte little-endian integer (uint64_t) */
15
- readU64(): bigint;
17
+ readU64(endian?: Endian): bigint;
16
18
  /** Read the given number of bytes as array */
17
19
  readBytes(numBytes: number): Uint8Array;
18
20
  private ensureSize;
@@ -1 +1 @@
1
- {"version":3,"file":"bytes.d.ts","sourceRoot":"","sources":["../../src/io/bytes.ts"],"names":[],"mappings":"AAIA,0EAA0E;AAC1E,qBAAa,KAAK;IACP,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IAEnB,wDAAwD;gBACrC,IAAI,EAAE,UAAU;IAUnC,yBAAyB;IAClB,MAAM,IAAI,MAAM;IAOvB,mDAAmD;IAC5C,OAAO,IAAI,MAAM;IAOxB,mDAAmD;IAC5C,OAAO,IAAI,MAAM;IAOxB,mDAAmD;IAC5C,OAAO,IAAI,MAAM;IAOxB,8CAA8C;IACvC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU;IAO9C,OAAO,CAAC,UAAU;CAQrB"}
1
+ {"version":3,"file":"bytes.d.ts","sourceRoot":"","sources":["../../src/io/bytes.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjC,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAMrD;AAED,0EAA0E;AAC1E,qBAAa,KAAK;IACP,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IAEnB,wDAAwD;gBACrC,IAAI,EAAE,UAAU;IAUnC,yBAAyB;IAClB,MAAM,IAAI,MAAM;IAOvB,mDAAmD;IAC5C,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAOvC,mDAAmD;IAC5C,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAOvC,mDAAmD;IAC5C,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAOvC,8CAA8C;IACvC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU;IAO9C,OAAO,CAAC,UAAU;CAQrB"}
package/dist/io/bytes.js CHANGED
@@ -3,7 +3,15 @@
3
3
  // Distributed under the MIT software license, see the accompanying
4
4
  // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Bytes = void 0;
6
+ exports.Bytes = exports.endianToBool = void 0;
7
+ function endianToBool(endian) {
8
+ if (!endian) {
9
+ // By default, little endian
10
+ return true;
11
+ }
12
+ return endian === 'LE';
13
+ }
14
+ exports.endianToBool = endianToBool;
7
15
  /** Reads ints/bytes from a Uint8Array. All integers are little-endian. */
8
16
  class Bytes {
9
17
  /** Create a new Bytes that reads from the given data */
@@ -20,23 +28,23 @@ class Bytes {
20
28
  return result;
21
29
  }
22
30
  /** Read 2-byte little-endian integer (uint16_t) */
23
- readU16() {
31
+ readU16(endian) {
24
32
  this.ensureSize(2);
25
- const result = this.view.getUint16(this.idx, true);
33
+ const result = this.view.getUint16(this.idx, endianToBool(endian));
26
34
  this.idx += 2;
27
35
  return result;
28
36
  }
29
37
  /** Read 4-byte little-endian integer (uint32_t) */
30
- readU32() {
38
+ readU32(endian) {
31
39
  this.ensureSize(4);
32
- const result = this.view.getUint32(this.idx, true);
40
+ const result = this.view.getUint32(this.idx, endianToBool(endian));
33
41
  this.idx += 4;
34
42
  return result;
35
43
  }
36
44
  /** Read 8-byte little-endian integer (uint64_t) */
37
- readU64() {
45
+ readU64(endian) {
38
46
  this.ensureSize(8);
39
- const result = this.view.getBigUint64(this.idx, true);
47
+ const result = this.view.getBigUint64(this.idx, endianToBool(endian));
40
48
  this.idx += 8;
41
49
  return result;
42
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../src/io/bytes.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;AAEtE,0EAA0E;AAC1E,MAAa,KAAK;IAKd,wDAAwD;IACxD,YAAmB,IAAgB;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CACpB,IAAI,CAAC,IAAI,CAAC,MAAM,EAChB,IAAI,CAAC,IAAI,CAAC,UAAU,EACpB,IAAI,CAAC,IAAI,CAAC,UAAU,CACvB,CAAC;QACF,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,yBAAyB;IAClB,MAAM;QACT,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,mDAAmD;IAC5C,OAAO;QACV,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACd,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,mDAAmD;IAC5C,OAAO;QACV,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACd,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,mDAAmD;IAC5C,OAAO;QACV,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACd,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,8CAA8C;IACvC,SAAS,CAAC,QAAgB;QAC7B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC;QAC9D,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC;QACrB,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,UAAU,CAAC,UAAkB;QACjC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,UAAU,EAAE,CAAC;YAC3C,MAAM,CACF,mCAAmC,UAAU,gBAAgB;gBAC7D,kBAAkB,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,eAAe,CAC/D,CAAC;QACN,CAAC;IACL,CAAC;CACJ;AAhED,sBAgEC"}
1
+ {"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../src/io/bytes.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;AAItE,SAAgB,YAAY,CAAC,MAAe;IACxC,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,4BAA4B;QAC5B,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,KAAK,IAAI,CAAC;AAC3B,CAAC;AAND,oCAMC;AAED,0EAA0E;AAC1E,MAAa,KAAK;IAKd,wDAAwD;IACxD,YAAmB,IAAgB;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CACpB,IAAI,CAAC,IAAI,CAAC,MAAM,EAChB,IAAI,CAAC,IAAI,CAAC,UAAU,EACpB,IAAI,CAAC,IAAI,CAAC,UAAU,CACvB,CAAC;QACF,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,yBAAyB;IAClB,MAAM;QACT,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,mDAAmD;IAC5C,OAAO,CAAC,MAAe;QAC1B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACd,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,mDAAmD;IAC5C,OAAO,CAAC,MAAe;QAC1B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACd,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,mDAAmD;IAC5C,OAAO,CAAC,MAAe;QAC1B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACd,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,8CAA8C;IACvC,SAAS,CAAC,QAAgB;QAC7B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC;QAC9D,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC;QACrB,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,UAAU,CAAC,UAAkB;QACjC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,UAAU,EAAE,CAAC;YAC3C,MAAM,CACF,mCAAmC,UAAU,gBAAgB;gBAC7D,kBAAkB,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,eAAe,CAC/D,CAAC;QACN,CAAC;IACL,CAAC;CACJ;AAhED,sBAgEC"}
@@ -1,14 +1,15 @@
1
+ import { Endian } from './bytes.js';
1
2
  import { Int } from './int.js';
2
3
  /** Writer interface to abstract over writing Bitcoin objects */
3
4
  export interface Writer {
4
5
  /** Write a single byte */
5
6
  putU8(value: Int): void;
6
7
  /** Write a 2-byte little-endian integer (uint16_t) */
7
- putU16(value: Int): void;
8
+ putU16(value: Int, endian?: Endian): void;
8
9
  /** Write a 4-byte little-endian integer (uint32_t) */
9
- putU32(value: Int): void;
10
+ putU32(value: Int, endian?: Endian): void;
10
11
  /** Write an 8-byte little-endian integer (uint64_t) */
11
- putU64(value: Int): void;
12
+ putU64(value: Int, endian?: Endian): void;
12
13
  /** Write the given bytes */
13
14
  putBytes(bytes: Uint8Array): void;
14
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/io/writer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,gEAAgE;AAChE,MAAM,WAAW,MAAM;IACnB,0BAA0B;IAC1B,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IACxB,sDAAsD;IACtD,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IACzB,sDAAsD;IACtD,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IACzB,uDAAuD;IACvD,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IACzB,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;CACrC"}
1
+ {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/io/writer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,gEAAgE;AAChE,MAAM,WAAW,MAAM;IACnB,0BAA0B;IAC1B,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IACxB,sDAAsD;IACtD,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,sDAAsD;IACtD,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,uDAAuD;IACvD,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;CACrC"}
@@ -1,3 +1,4 @@
1
+ import { Endian } from './bytes.js';
1
2
  import { Int } from './int.js';
2
3
  import { Writer } from './writer.js';
3
4
  /**
@@ -15,11 +16,11 @@ export declare class WriterBytes implements Writer {
15
16
  /** Write a single byte */
16
17
  putU8(value: Int): void;
17
18
  /** Write a 2-byte little-endian integer (uint16_t) */
18
- putU16(value: Int): void;
19
+ putU16(value: Int, endian?: Endian): void;
19
20
  /** Write a 4-byte little-endian integer (uint32_t) */
20
- putU32(value: Int): void;
21
+ putU32(value: Int, endian?: Endian): void;
21
22
  /** Write an 8-byte little-endian integer (uint64_t) */
22
- putU64(value: Int): void;
23
+ putU64(value: Int, endian?: Endian): void;
23
24
  /** Write the given bytes */
24
25
  putBytes(bytes: Uint8Array): void;
25
26
  private ensureSize;
@@ -1 +1 @@
1
- {"version":3,"file":"writerbytes.d.ts","sourceRoot":"","sources":["../../src/io/writerbytes.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;;;IAKI;AACJ,qBAAa,WAAY,YAAW,MAAM;IAC/B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IAEnB,iEAAiE;gBAC9C,MAAM,EAAE,MAAM;IAUjC,0BAA0B;IACnB,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAS9B,sDAAsD;IAC/C,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAS/B,sDAAsD;IAC/C,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAS/B,uDAAuD;IAChD,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAS/B,4BAA4B;IACrB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAMxC,OAAO,CAAC,UAAU;CASrB"}
1
+ {"version":3,"file":"writerbytes.d.ts","sourceRoot":"","sources":["../../src/io/writerbytes.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAgB,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;;;IAKI;AACJ,qBAAa,WAAY,YAAW,MAAM;IAC/B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IAEnB,iEAAiE;gBAC9C,MAAM,EAAE,MAAM;IAUjC,0BAA0B;IACnB,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAS9B,sDAAsD;IAC/C,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAShD,sDAAsD;IAC/C,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAShD,uDAAuD;IAChD,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAShD,4BAA4B;IACrB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAMxC,OAAO,CAAC,UAAU;CASrB"}
@@ -4,6 +4,7 @@
4
4
  // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.WriterBytes = void 0;
7
+ const bytes_js_1 = require("./bytes.js");
7
8
  /**
8
9
  * Implementation of `Writer` which writes to an array of pre-allocated size.
9
10
  * It's intended to be used in unison with `WriterLength`, which first finds
@@ -27,30 +28,30 @@ class WriterBytes {
27
28
  this.idx++;
28
29
  }
29
30
  /** Write a 2-byte little-endian integer (uint16_t) */
30
- putU16(value) {
31
+ putU16(value, endian) {
31
32
  if (value < 0 || value > 0xffff) {
32
33
  throw new Error(`Cannot fit ${value} into a u16`);
33
34
  }
34
35
  this.ensureSize(2);
35
- this.view.setUint16(this.idx, Number(value), true);
36
+ this.view.setUint16(this.idx, Number(value), (0, bytes_js_1.endianToBool)(endian));
36
37
  this.idx += 2;
37
38
  }
38
39
  /** Write a 4-byte little-endian integer (uint32_t) */
39
- putU32(value) {
40
+ putU32(value, endian) {
40
41
  if (value < 0 || value > 0xffffffff) {
41
42
  throw new Error(`Cannot fit ${value} into a u32`);
42
43
  }
43
44
  this.ensureSize(4);
44
- this.view.setUint32(this.idx, Number(value), true);
45
+ this.view.setUint32(this.idx, Number(value), (0, bytes_js_1.endianToBool)(endian));
45
46
  this.idx += 4;
46
47
  }
47
48
  /** Write an 8-byte little-endian integer (uint64_t) */
48
- putU64(value) {
49
+ putU64(value, endian) {
49
50
  if (value < 0 || value > 0xffffffffffffffffn) {
50
51
  throw new Error(`Cannot fit ${value} into a u64`);
51
52
  }
52
53
  this.ensureSize(8);
53
- this.view.setBigUint64(this.idx, BigInt(value), true);
54
+ this.view.setBigUint64(this.idx, BigInt(value), (0, bytes_js_1.endianToBool)(endian));
54
55
  this.idx += 8;
55
56
  }
56
57
  /** Write the given bytes */
@@ -1 +1 @@
1
- {"version":3,"file":"writerbytes.js","sourceRoot":"","sources":["../../src/io/writerbytes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"writerbytes.js","sourceRoot":"","sources":["../../src/io/writerbytes.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { Endian } from './bytes.js';
1
2
  import { Int } from './int.js';
2
3
  import { Writer } from './writer.js';
3
4
  /**
@@ -10,11 +11,11 @@ export declare class WriterLength implements Writer {
10
11
  /** Write a single byte */
11
12
  putU8(_value: Int): void;
12
13
  /** Write a 2-byte little-endian integer (uint16_t) */
13
- putU16(_value: Int): void;
14
+ putU16(_value: Int, _endian?: Endian): void;
14
15
  /** Write a 4-byte little-endian integer (uint32_t) */
15
- putU32(_value: Int): void;
16
+ putU32(_value: Int, _endian?: Endian): void;
16
17
  /** Write an 8-byte little-endian integer (uint64_t) */
17
- putU64(_value: Int): void;
18
+ putU64(_value: Int, _endian?: Endian): void;
18
19
  /** Write the given bytes */
19
20
  putBytes(bytes: Uint8Array): void;
20
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"writerlength.d.ts","sourceRoot":"","sources":["../../src/io/writerlength.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;IAGI;AACJ,qBAAa,YAAa,YAAW,MAAM;IAChC,MAAM,EAAE,MAAM,CAAC;;IAMtB,0BAA0B;IACnB,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI;IAI/B,sDAAsD;IAC/C,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI;IAIhC,sDAAsD;IAC/C,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI;IAIhC,uDAAuD;IAChD,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI;IAIhC,4BAA4B;IACrB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAG3C"}
1
+ {"version":3,"file":"writerlength.d.ts","sourceRoot":"","sources":["../../src/io/writerlength.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;IAGI;AACJ,qBAAa,YAAa,YAAW,MAAM;IAChC,MAAM,EAAE,MAAM,CAAC;;IAMtB,0BAA0B;IACnB,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI;IAI/B,sDAAsD;IAC/C,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAIlD,sDAAsD;IAC/C,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAIlD,uDAAuD;IAChD,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAIlD,4BAA4B;IACrB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAG3C"}
@@ -17,15 +17,15 @@ class WriterLength {
17
17
  this.length++;
18
18
  }
19
19
  /** Write a 2-byte little-endian integer (uint16_t) */
20
- putU16(_value) {
20
+ putU16(_value, _endian) {
21
21
  this.length += 2;
22
22
  }
23
23
  /** Write a 4-byte little-endian integer (uint32_t) */
24
- putU32(_value) {
24
+ putU32(_value, _endian) {
25
25
  this.length += 4;
26
26
  }
27
27
  /** Write an 8-byte little-endian integer (uint64_t) */
28
- putU64(_value) {
28
+ putU64(_value, _endian) {
29
29
  this.length += 8;
30
30
  }
31
31
  /** Write the given bytes */
@@ -1 +1 @@
1
- {"version":3,"file":"writerlength.js","sourceRoot":"","sources":["../../src/io/writerlength.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;AAKtE;;;IAGI;AACJ,MAAa,YAAY;IAGrB;QACI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,0BAA0B;IACnB,KAAK,CAAC,MAAW;QACpB,IAAI,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;IAED,sDAAsD;IAC/C,MAAM,CAAC,MAAW;QACrB,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,sDAAsD;IAC/C,MAAM,CAAC,MAAW;QACrB,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,uDAAuD;IAChD,MAAM,CAAC,MAAW;QACrB,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,4BAA4B;IACrB,QAAQ,CAAC,KAAiB;QAC7B,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;IAChC,CAAC;CACJ;AA/BD,oCA+BC"}
1
+ {"version":3,"file":"writerlength.js","sourceRoot":"","sources":["../../src/io/writerlength.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;AAMtE;;;IAGI;AACJ,MAAa,YAAY;IAGrB;QACI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,0BAA0B;IACnB,KAAK,CAAC,MAAW;QACpB,IAAI,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;IAED,sDAAsD;IAC/C,MAAM,CAAC,MAAW,EAAE,OAAgB;QACvC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,sDAAsD;IAC/C,MAAM,CAAC,MAAW,EAAE,OAAgB;QACvC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,uDAAuD;IAChD,MAAM,CAAC,MAAW,EAAE,OAAgB;QACvC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,4BAA4B;IACrB,QAAQ,CAAC,KAAiB;QAC7B,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;IAChC,CAAC;CACJ;AA/BD,oCA+BC"}
@@ -0,0 +1,14 @@
1
+ /** Word list to generate a seed phrase. */
2
+ export interface WordList {
3
+ /** Word separator of the seed phrase (Japanese has \u3000 as space) */
4
+ separator: string;
5
+ /** Words in the word list to generate a mnemonic phrase */
6
+ words: string[];
7
+ }
8
+ /** Derive the mnemonic from entropy */
9
+ export declare function entropyToMnemonic(entropy: Uint8Array, wordlist: WordList): string;
10
+ /** Recover the entropy from the mnemonic */
11
+ export declare function mnemonicToEntropy(phrase: string, wordlist: string[]): Uint8Array;
12
+ /** Derive the seed bytes from the mnemonic */
13
+ export declare function mnemonicToSeed(phrase: string, password?: string): Uint8Array;
14
+ //# sourceMappingURL=mnemonic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mnemonic.d.ts","sourceRoot":"","sources":["../src/mnemonic.ts"],"names":[],"mappings":"AA2BA,2CAA2C;AAC3C,MAAM,WAAW,QAAQ;IACrB,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,uCAAuC;AACvC,wBAAgB,iBAAiB,CAC7B,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,QAAQ,GACnB,MAAM,CAkCR;AAED,4CAA4C;AAC5C,wBAAgB,iBAAiB,CAC7B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAAE,GACnB,UAAU,CA4DZ;AAED,8CAA8C;AAC9C,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAU5E"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ // Copyright (c) 2025 The Bitcoin developers
3
+ // Distributed under the MIT software license, see the accompanying
4
+ // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.mnemonicToSeed = exports.mnemonicToEntropy = exports.entropyToMnemonic = void 0;
7
+ const hash_1 = require("./hash");
8
+ const indexNodeJs_1 = require("./indexNodeJs");
9
+ const pbkdf2_1 = require("./pbkdf2");
10
+ const BITS_PER_BYTE = 8;
11
+ const BITS_PER_WORD = 11;
12
+ const BITS_PER_CHECKSUM_BIT = 32;
13
+ // Calculate how many bits there are in the mnemonic
14
+ function calcNumChecksumBits(numEntropyBytes) {
15
+ return (numEntropyBytes * BITS_PER_BYTE) / BITS_PER_CHECKSUM_BIT;
16
+ }
17
+ // Normalize according to unicode standard
18
+ function normalize(str) {
19
+ return (str || '').normalize('NFKD');
20
+ }
21
+ // Turn the password into a salt for seed generation
22
+ function salt(password) {
23
+ return 'mnemonic' + (password || '');
24
+ }
25
+ /** Derive the mnemonic from entropy */
26
+ function entropyToMnemonic(entropy, wordlist) {
27
+ if (entropy.length < 16 || entropy.length > 32) {
28
+ throw new TypeError('Entropy must be between 16 and 32 bytes long');
29
+ }
30
+ if (entropy.length % 4 !== 0) {
31
+ throw new TypeError('Entropy length must be divisible by 4');
32
+ }
33
+ const checksum = (0, hash_1.sha256)(entropy);
34
+ const data = new Uint8Array(entropy.length + checksum.length);
35
+ data.set(entropy, 0);
36
+ data.set(checksum, entropy.length);
37
+ let nextBits = 0;
38
+ let numBits = 0;
39
+ let numLeftoverBits = entropy.length * BITS_PER_BYTE + calcNumChecksumBits(entropy.length);
40
+ const words = [];
41
+ for (const byte of data) {
42
+ nextBits = (nextBits << BITS_PER_BYTE) | byte;
43
+ numBits += BITS_PER_BYTE;
44
+ if (numBits >= BITS_PER_WORD) {
45
+ const wordIdx = nextBits >> (numBits - BITS_PER_WORD);
46
+ words.push(wordlist.words[wordIdx]);
47
+ if (numLeftoverBits <= BITS_PER_WORD) {
48
+ break;
49
+ }
50
+ numBits -= BITS_PER_WORD;
51
+ numLeftoverBits -= BITS_PER_WORD;
52
+ nextBits &= 0x7ff >> (BITS_PER_WORD - numBits);
53
+ }
54
+ }
55
+ return words.join(wordlist.separator);
56
+ }
57
+ exports.entropyToMnemonic = entropyToMnemonic;
58
+ /** Recover the entropy from the mnemonic */
59
+ function mnemonicToEntropy(phrase, wordlist) {
60
+ const words = normalize(phrase).split(' ');
61
+ if (words.length < 12 || words.length > 24) {
62
+ throw new Error('Number of words in mnemonic phrase must be between 12 and 24');
63
+ }
64
+ if (words.length % 3 !== 0) {
65
+ throw new Error('Number of words in mnemonic phrase must be divisible by 3');
66
+ }
67
+ const wordIndices = words.map(word => {
68
+ const idx = wordlist.indexOf(word);
69
+ if (idx === -1) {
70
+ throw new Error('Invalid mnemonic phrase word: ' + word);
71
+ }
72
+ return idx;
73
+ });
74
+ const numEntropyBytes = (wordIndices.length / 3) * 4;
75
+ let nextBits = 0;
76
+ let numBits = 0;
77
+ let idx = 0;
78
+ const entropy = new Uint8Array(numEntropyBytes);
79
+ let checksum = 0;
80
+ for (const wordIdx of wordIndices) {
81
+ nextBits = (nextBits << BITS_PER_WORD) | wordIdx;
82
+ numBits += BITS_PER_WORD;
83
+ while (numBits >= BITS_PER_BYTE) {
84
+ const byte = nextBits >> (numBits - BITS_PER_BYTE);
85
+ if (idx < entropy.length) {
86
+ entropy[idx] = byte;
87
+ }
88
+ else {
89
+ checksum = (checksum << BITS_PER_BYTE) | byte;
90
+ }
91
+ idx++;
92
+ numBits -= BITS_PER_BYTE;
93
+ nextBits &= 0xffff >> (16 - numBits);
94
+ }
95
+ }
96
+ if (numBits != 0) {
97
+ checksum = (checksum << BITS_PER_BYTE) | nextBits;
98
+ }
99
+ const entropyHash = (0, hash_1.sha256)(entropy);
100
+ const numChecksumBits = calcNumChecksumBits(numEntropyBytes);
101
+ const expectedChecksum = entropyHash[0] >> (BITS_PER_BYTE - numChecksumBits);
102
+ if (checksum != expectedChecksum) {
103
+ const expected = expectedChecksum.toString(16);
104
+ const actual = checksum.toString(16);
105
+ throw new Error(`Invalid checksum: expected ${expected}, got ${actual}`);
106
+ }
107
+ return entropy;
108
+ }
109
+ exports.mnemonicToEntropy = mnemonicToEntropy;
110
+ /** Derive the seed bytes from the mnemonic */
111
+ function mnemonicToSeed(phrase, password) {
112
+ return (0, pbkdf2_1.pbkdf2)({
113
+ hashFactory: hash_1.sha512Hasher,
114
+ password: (0, indexNodeJs_1.strToBytes)(normalize(phrase)),
115
+ salt: (0, indexNodeJs_1.strToBytes)(salt(normalize(password))),
116
+ blockLength: 128,
117
+ outputLength: 64,
118
+ dkLen: 64,
119
+ iterations: 2048,
120
+ });
121
+ }
122
+ exports.mnemonicToSeed = mnemonicToSeed;
123
+ //# sourceMappingURL=mnemonic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mnemonic.js","sourceRoot":"","sources":["../src/mnemonic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Hasher } from './hash';
2
+ export declare function pbkdf2(params: {
3
+ hashFactory: () => Hasher;
4
+ password: Uint8Array;
5
+ salt: Uint8Array;
6
+ blockLength: number;
7
+ outputLength: number;
8
+ dkLen: number;
9
+ iterations: number;
10
+ }): Uint8Array;
11
+ //# sourceMappingURL=pbkdf2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pbkdf2.d.ts","sourceRoot":"","sources":["../src/pbkdf2.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,wBAAgB,MAAM,CAAC,MAAM,EAAE;IAC3B,WAAW,EAAE,MAAM,MAAM,CAAC;IAC1B,QAAQ,EAAE,UAAU,CAAC;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACtB,GAAG,UAAU,CAoCb"}
package/dist/pbkdf2.js ADDED
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ // Copyright (c) 2025 The Bitcoin developers
3
+ // Distributed under the MIT software license, see the accompanying
4
+ // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.pbkdf2 = void 0;
7
+ const hmac_1 = require("./hmac");
8
+ function pbkdf2(params) {
9
+ const arr = new Uint8Array(4);
10
+ const view = new DataView(arr.buffer, arr.byteOffset, arr.byteLength);
11
+ const result = new Uint8Array(params.dkLen);
12
+ const prf = new hmac_1.Hmac(params.hashFactory, params.blockLength, params.password);
13
+ const prfSalt = prf.clone();
14
+ prfSalt.update(params.salt);
15
+ for (let idx = 1, pos = 0; pos < params.dkLen; idx++, pos += params.outputLength) {
16
+ const ti = result.subarray(pos, pos + params.outputLength);
17
+ view.setInt32(0, idx, false);
18
+ const prfSaltClone = prfSalt.clone();
19
+ prfSaltClone.update(arr);
20
+ let u = prfSaltClone.digest();
21
+ ti.set(u.subarray(0, ti.length));
22
+ for (let ui = 1; ui < params.iterations; ui++) {
23
+ const prfClone = prf.clone();
24
+ prfClone.update(u);
25
+ u = prfClone.digest();
26
+ for (let i = 0; i < ti.length; i++) {
27
+ ti[i] ^= u[i];
28
+ }
29
+ }
30
+ }
31
+ prf.free();
32
+ prfSalt.free();
33
+ return result;
34
+ }
35
+ exports.pbkdf2 = pbkdf2;
36
+ //# sourceMappingURL=pbkdf2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pbkdf2.js","sourceRoot":"","sources":["../src/pbkdf2.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;AAGtE,iCAA8B;AAE9B,SAAgB,MAAM,CAAC,MAQtB;IACG,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,IAAI,WAAI,CAChB,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,QAAQ,CAClB,CAAC;IACF,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;IAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE5B,KACI,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EACpB,GAAG,GAAG,MAAM,CAAC,KAAK,EAClB,GAAG,EAAE,EAAE,GAAG,IAAI,MAAM,CAAC,YAAY,EACnC,CAAC;QACC,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QACrC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;QAC9B,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACjC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;YAC7B,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;YACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACL,CAAC;IACL,CAAC;IAED,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,OAAO,CAAC,IAAI,EAAE,CAAC;IACf,OAAO,MAAM,CAAC;AAClB,CAAC;AA5CD,wBA4CC"}
package/dist/script.d.ts CHANGED
@@ -44,6 +44,10 @@ export declare class Script {
44
44
  * Matches CScript::IsPayToScriptHash in /src/script/script.h.
45
45
  **/
46
46
  isP2sh(): boolean;
47
+ /**
48
+ * Return hex string of this Script's bytecode
49
+ */
50
+ toHex(): string;
47
51
  /** Build a P2SH script for the given script hash */
48
52
  static p2sh(scriptHash: Uint8Array): Script;
49
53
  /** Build a P2PKH script for the given public key hash */