@bsv/sdk 1.2.17 → 1.2.18

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 (68) hide show
  1. package/dist/cjs/package.json +1 -1
  2. package/dist/cjs/src/primitives/BigNumber.js +85 -89
  3. package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
  4. package/dist/cjs/src/primitives/PublicKey.js +5 -2
  5. package/dist/cjs/src/primitives/PublicKey.js.map +1 -1
  6. package/dist/cjs/src/primitives/Random.js +3 -2
  7. package/dist/cjs/src/primitives/Random.js.map +1 -1
  8. package/dist/cjs/src/primitives/utils.js +71 -62
  9. package/dist/cjs/src/primitives/utils.js.map +1 -1
  10. package/dist/cjs/src/totp/totp.js +0 -1
  11. package/dist/cjs/src/totp/totp.js.map +1 -1
  12. package/dist/cjs/src/transaction/Beef.js +26 -40
  13. package/dist/cjs/src/transaction/Beef.js.map +1 -1
  14. package/dist/cjs/src/transaction/BeefParty.js +1 -1
  15. package/dist/cjs/src/transaction/BeefTx.js +75 -73
  16. package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
  17. package/dist/cjs/src/transaction/Transaction.js +70 -96
  18. package/dist/cjs/src/transaction/Transaction.js.map +1 -1
  19. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  20. package/dist/esm/src/primitives/BigNumber.js +85 -89
  21. package/dist/esm/src/primitives/BigNumber.js.map +1 -1
  22. package/dist/esm/src/primitives/PublicKey.js +5 -2
  23. package/dist/esm/src/primitives/PublicKey.js.map +1 -1
  24. package/dist/esm/src/primitives/Random.js +2 -2
  25. package/dist/esm/src/primitives/Random.js.map +1 -1
  26. package/dist/esm/src/primitives/utils.js +70 -61
  27. package/dist/esm/src/primitives/utils.js.map +1 -1
  28. package/dist/esm/src/totp/totp.js +0 -1
  29. package/dist/esm/src/totp/totp.js.map +1 -1
  30. package/dist/esm/src/transaction/Beef.js +25 -39
  31. package/dist/esm/src/transaction/Beef.js.map +1 -1
  32. package/dist/esm/src/transaction/BeefParty.js +1 -1
  33. package/dist/esm/src/transaction/BeefTx.js +76 -74
  34. package/dist/esm/src/transaction/BeefTx.js.map +1 -1
  35. package/dist/esm/src/transaction/Transaction.js +71 -97
  36. package/dist/esm/src/transaction/Transaction.js.map +1 -1
  37. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  38. package/dist/types/src/primitives/BigNumber.d.ts +24 -22
  39. package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
  40. package/dist/types/src/primitives/PublicKey.d.ts.map +1 -1
  41. package/dist/types/src/primitives/utils.d.ts +17 -17
  42. package/dist/types/src/primitives/utils.d.ts.map +1 -1
  43. package/dist/types/src/transaction/Beef.d.ts +9 -12
  44. package/dist/types/src/transaction/Beef.d.ts.map +1 -1
  45. package/dist/types/src/transaction/BeefParty.d.ts +1 -1
  46. package/dist/types/src/transaction/BeefTx.d.ts +5 -2
  47. package/dist/types/src/transaction/BeefTx.d.ts.map +1 -1
  48. package/dist/types/src/transaction/Transaction.d.ts +6 -0
  49. package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
  50. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  51. package/dist/umd/bundle.js +1 -1
  52. package/docs/compat.md +13 -11
  53. package/docs/primitives.md +152 -188
  54. package/docs/transaction.md +72 -75
  55. package/package.json +1 -1
  56. package/src/primitives/BigNumber.ts +111 -111
  57. package/src/primitives/PublicKey.ts +5 -2
  58. package/src/primitives/Random.ts +2 -2
  59. package/src/primitives/utils.ts +92 -77
  60. package/src/totp/totp.ts +0 -1
  61. package/src/transaction/Beef.ts +20 -43
  62. package/src/transaction/BeefParty.ts +1 -1
  63. package/src/transaction/BeefTx.ts +89 -57
  64. package/src/transaction/Transaction.ts +77 -100
  65. package/src/transaction/__tests/Beef.test.ts +9 -9
  66. package/src/transaction/__tests/Transaction.benchmarks.test.ts +1 -1
  67. package/src/transaction/__tests/Transaction.test.ts +3 -3
  68. package/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.ts +2 -2
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bsv/sdk",
3
- "version": "1.2.17",
3
+ "version": "1.2.18",
4
4
  "type": "commonjs",
5
5
  "description": "BSV Blockchain Software Development Kit",
6
6
  "files": [
@@ -91,10 +91,12 @@ class BigNumber {
91
91
  base = 10;
92
92
  }
93
93
  if (typeof number === 'number') {
94
- return this.initNumber(number, base, endian);
94
+ this.initNumber(number, base, endian);
95
+ return;
95
96
  }
96
97
  if (typeof number === 'object') {
97
- return this.initArray(number, endian);
98
+ this.initArray(number, endian);
99
+ return;
98
100
  }
99
101
  if (base === 'hex') {
100
102
  base = 16;
@@ -102,7 +104,7 @@ class BigNumber {
102
104
  this.assert(base === (base | 0) && base >= 2 && base <= 36);
103
105
  number = number.toString().replace(/\s+/g, '');
104
106
  let start = 0;
105
- if (number[0] === '-') {
107
+ if (number.startsWith('-')) {
106
108
  start++;
107
109
  this.negative = 1;
108
110
  }
@@ -159,7 +161,7 @@ class BigNumber {
159
161
  this.length = 2;
160
162
  }
161
163
  else {
162
- this.assert(number < 0x20000000000000, 'The number is larger than 2 ^ 53 (unsafe)');
164
+ this.assert(number <= 0x1FFFFFFFFFFFFF, 'The number is larger than 2 ^ 53 (unsafe)');
163
165
  this.words = [
164
166
  number & 0x3ffffff,
165
167
  (number / 0x4000000) & 0x3ffffff,
@@ -279,44 +281,33 @@ class BigNumber {
279
281
  * @return The current BigNumber instance.
280
282
  */
281
283
  parseHex(number, start, endian) {
282
- // Create possibly bigger array to ensure that it fits the number
284
+ // Initialize the words array
283
285
  this.length = Math.ceil((number.length - start) / 6);
284
- this.words = new Array(this.length);
285
- let i = 0;
286
- for (; i < this.length; i++) {
287
- this.words[i] = 0;
288
- }
286
+ this.words = new Array(this.length).fill(0);
289
287
  // 24-bits chunks
290
288
  let off = 0;
291
289
  let j = 0;
292
- let w;
290
+ const processHexByte = (i) => {
291
+ const w = this.parseHexByte(number, start, i) << off;
292
+ this.words[j] |= w & 0x3ffffff;
293
+ if (off >= 18) {
294
+ off -= 18;
295
+ j += 1;
296
+ this.words[j] |= w >>> 26;
297
+ }
298
+ else {
299
+ off += 8;
300
+ }
301
+ };
293
302
  if (endian === 'be') {
294
- for (i = number.length - 1; i >= start; i -= 2) {
295
- w = this.parseHexByte(number, start, i) << off;
296
- this.words[j] |= w & 0x3ffffff;
297
- if (off >= 18) {
298
- off -= 18;
299
- j += 1;
300
- this.words[j] |= w >>> 26;
301
- }
302
- else {
303
- off += 8;
304
- }
303
+ for (let i = number.length - 1; i >= start; i -= 2) {
304
+ processHexByte(i);
305
305
  }
306
306
  }
307
307
  else {
308
308
  const parseLength = number.length - start;
309
- for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {
310
- w = this.parseHexByte(number, start, i) << off;
311
- this.words[j] |= w & 0x3ffffff;
312
- if (off >= 18) {
313
- off -= 18;
314
- j += 1;
315
- this.words[j] |= w >>> 26;
316
- }
317
- else {
318
- off += 8;
319
- }
309
+ for (let i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {
310
+ processHexByte(i);
320
311
  }
321
312
  }
322
313
  return this.strip();
@@ -469,7 +460,7 @@ class BigNumber {
469
460
  * Increases the BigNumber length up to a certain size and initializes new elements with 0.
470
461
  *
471
462
  * @method expand
472
- * @param size - The desired size to grow the BigNumber length.
463
+ * @param {number} size - The desired size to grow the BigNumber length.
473
464
  * @returns The BigNumber instance after expansion.
474
465
  *
475
466
  * @example
@@ -543,69 +534,74 @@ class BigNumber {
543
534
  * bn.toString(16); // Converts the BigNumber to a hexadecimal string.
544
535
  */
545
536
  toString(base = 10, padding = 1) {
546
- let out;
547
537
  if (base === 16 || base === 'hex') {
548
- out = '';
549
- let off = 0;
550
- let carry = 0;
551
- for (let i = 0; i < this.length; i++) {
552
- const w = this.words[i];
553
- const word = (((w << off) | carry) & 0xffffff).toString(16);
554
- carry = (w >>> (24 - off)) & 0xffffff;
555
- off += 2;
556
- if (off >= 26) {
557
- off -= 26;
558
- i--;
559
- }
560
- if (carry !== 0 || i !== this.length - 1) {
561
- out = BigNumber.zeros[6 - word.length] + word + out;
562
- }
563
- else {
564
- out = word + out;
565
- }
566
- }
567
- if (carry !== 0) {
568
- out = carry.toString(16) + out;
569
- }
570
- if (padding === 0 && out === '0') {
571
- return '';
572
- }
573
- while (out.length % padding !== 0 && padding !== 0) {
574
- out = '0' + out;
575
- }
576
- if (this.negative !== 0) {
577
- out = '-' + out;
578
- }
579
- return out;
538
+ return this.toHexString(padding);
580
539
  }
581
540
  if (base === (base | 0) && base >= 2 && base <= 36) {
582
- const groupSize = BigNumber.groupSizes[base];
583
- const groupBase = BigNumber.groupBases[base];
584
- out = '';
585
- let c = this.clone();
586
- c.negative = 0;
587
- while (!c.isZero()) {
588
- const r = c.modrn(groupBase).toString(base);
589
- c = c.idivn(groupBase);
590
- if (!c.isZero()) {
591
- out = BigNumber.zeros[groupSize - r.length] + r + out;
592
- }
593
- else {
594
- out = r + out;
595
- }
541
+ return this.toBaseString(base, padding);
542
+ }
543
+ throw new Error('Base should be between 2 and 36');
544
+ }
545
+ toHexString(padding) {
546
+ let out = '';
547
+ let off = 0;
548
+ let carry = 0;
549
+ for (let i = 0; i < this.length; i++) {
550
+ const w = this.words[i];
551
+ const word = (((w << off) | carry) & 0xffffff).toString(16);
552
+ carry = (w >>> (24 - off)) & 0xffffff;
553
+ off += 2;
554
+ if (off >= 26) {
555
+ off -= 26;
556
+ i--;
596
557
  }
597
- if (this.isZero()) {
598
- out = '0' + out;
558
+ if (carry !== 0 || i !== this.length - 1) {
559
+ out = BigNumber.zeros[6 - word.length] + word + out;
599
560
  }
600
- while (out.length % padding !== 0) {
601
- out = '0' + out;
561
+ else {
562
+ out = word + out;
602
563
  }
603
- if (this.negative !== 0) {
604
- out = '-' + out;
564
+ }
565
+ if (carry !== 0) {
566
+ out = carry.toString(16) + out;
567
+ }
568
+ if (padding === 0 && out === '0') {
569
+ return '';
570
+ }
571
+ while (out.length % padding !== 0 && padding !== 0) {
572
+ out = '0' + out;
573
+ }
574
+ if (this.negative !== 0) {
575
+ out = '-' + out;
576
+ }
577
+ return out;
578
+ }
579
+ toBaseString(base, padding) {
580
+ const groupSize = BigNumber.groupSizes[base];
581
+ const groupBase = BigNumber.groupBases[base];
582
+ let out = '';
583
+ let c = this.clone();
584
+ c.negative = 0;
585
+ while (!c.isZero()) {
586
+ const r = c.modrn(groupBase).toString(base);
587
+ c = c.idivn(groupBase);
588
+ if (!c.isZero()) {
589
+ out = BigNumber.zeros[groupSize - r.length] + r + out;
590
+ }
591
+ else {
592
+ out = r + out;
605
593
  }
606
- return out;
607
594
  }
608
- throw new Error('Base should be between 2 and 36');
595
+ if (this.isZero()) {
596
+ out = '0' + out;
597
+ }
598
+ while (out.length % padding !== 0) {
599
+ out = '0' + out;
600
+ }
601
+ if (this.negative !== 0) {
602
+ out = '-' + out;
603
+ }
604
+ return out;
609
605
  }
610
606
  /**
611
607
  * Converts the BigNumber instance to a JavaScript number.