cafe-utility 27.11.0 → 27.12.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 (3) hide show
  1. package/index.d.ts +4 -3
  2. package/index.js +38 -29
  3. package/package.json +1 -1
package/index.d.ts CHANGED
@@ -583,16 +583,17 @@ export declare class FixedPointNumber {
583
583
  value: bigint;
584
584
  scale: number;
585
585
  constructor(value: bigint | string | number, scale: number);
586
- static fromDecimalString(value: string, scale: number): FixedPointNumber;
586
+ static fromDecimalString(decimalString: string, scale: number): FixedPointNumber;
587
587
  add(other: FixedPointNumber): FixedPointNumber;
588
588
  subtract(other: FixedPointNumber): FixedPointNumber;
589
589
  multiply(factor: bigint): FixedPointNumber;
590
- divide(divisor: bigint): [FixedPointNumber, FixedPointNumber];
590
+ divmod(divisor: bigint): [FixedPointNumber, FixedPointNumber];
591
+ exchange(direction: '*' | '/', rate: FixedPointNumber, targetScale: number): FixedPointNumber;
591
592
  compare(other: FixedPointNumber): 1 | 0 | -1;
592
593
  toDecimalString(): string;
593
594
  toString(): string;
594
595
  toJSON(): string;
595
- assertCompatibility(other: FixedPointNumber): void;
596
+ assertSameScale(other: FixedPointNumber): void;
596
597
  }
597
598
  type Playbook<T> = {
598
599
  ttl: number;
package/index.js CHANGED
@@ -2315,16 +2315,16 @@ function keccakPermutate(n) {
2315
2315
  T = (n[5] << 30) | (n[4] >>> 2),
2316
2316
  S = (n[4] << 30) | (n[5] >>> 2),
2317
2317
  R = (n[6] << 28) | (n[7] >>> 4),
2318
- C = (n[7] << 28) | (n[6] >>> 4),
2319
- D = (n[8] << 27) | (n[9] >>> 5),
2320
- I = (n[9] << 27) | (n[8] >>> 5),
2321
- B = (n[11] << 4) | (n[10] >>> 28),
2322
- v = (n[10] << 4) | (n[11] >>> 28),
2318
+ D = (n[7] << 28) | (n[6] >>> 4),
2319
+ I = (n[8] << 27) | (n[9] >>> 5),
2320
+ C = (n[9] << 27) | (n[8] >>> 5),
2321
+ v = (n[11] << 4) | (n[10] >>> 28),
2322
+ B = (n[10] << 4) | (n[11] >>> 28),
2323
2323
  P = (n[13] << 12) | (n[12] >>> 20),
2324
2324
  U = (n[12] << 12) | (n[13] >>> 20),
2325
2325
  L = (n[14] << 6) | (n[15] >>> 26),
2326
- N = (n[15] << 6) | (n[14] >>> 26),
2327
- j = (n[17] << 23) | (n[16] >>> 9),
2326
+ j = (n[15] << 6) | (n[14] >>> 26),
2327
+ N = (n[17] << 23) | (n[16] >>> 9),
2328
2328
  z = (n[16] << 23) | (n[17] >>> 9),
2329
2329
  F = (n[18] << 20) | (n[19] >>> 12),
2330
2330
  q = (n[19] << 20) | (n[18] >>> 12),
@@ -2369,44 +2369,44 @@ function keccakPermutate(n) {
2369
2369
  (n[8] = yn ^ (~E & P)),
2370
2370
  (n[9] = xn ^ (~M & U)),
2371
2371
  (n[10] = R ^ (~F & H)),
2372
- (n[11] = C ^ (~q & W)),
2372
+ (n[11] = D ^ (~q & W)),
2373
2373
  (n[12] = F ^ (~H & en)),
2374
2374
  (n[13] = q ^ (~W & tn)),
2375
2375
  (n[14] = H ^ (~en & pn)),
2376
2376
  (n[15] = W ^ (~tn & mn)),
2377
2377
  (n[16] = en ^ (~pn & R)),
2378
- (n[17] = tn ^ (~mn & C)),
2378
+ (n[17] = tn ^ (~mn & D)),
2379
2379
  (n[18] = pn ^ (~R & F)),
2380
- (n[19] = mn ^ (~C & q)),
2380
+ (n[19] = mn ^ (~D & q)),
2381
2381
  (n[20] = O ^ (~L & Q)),
2382
- (n[21] = k ^ (~N & _)),
2382
+ (n[21] = k ^ (~j & _)),
2383
2383
  (n[22] = L ^ (~Q & sn)),
2384
- (n[23] = N ^ (~_ & fn)),
2384
+ (n[23] = j ^ (~_ & fn)),
2385
2385
  (n[24] = Q ^ (~sn & ln)),
2386
2386
  (n[25] = _ ^ (~fn & an)),
2387
2387
  (n[26] = sn ^ (~ln & O)),
2388
2388
  (n[27] = fn ^ (~an & k)),
2389
2389
  (n[28] = ln ^ (~O & L)),
2390
- (n[29] = an ^ (~k & N)),
2391
- (n[30] = D ^ (~B & V)),
2392
- (n[31] = I ^ (~v & J)),
2393
- (n[32] = B ^ (~V & rn)),
2394
- (n[33] = v ^ (~J & on)),
2390
+ (n[29] = an ^ (~k & j)),
2391
+ (n[30] = I ^ (~v & V)),
2392
+ (n[31] = C ^ (~B & J)),
2393
+ (n[32] = v ^ (~V & rn)),
2394
+ (n[33] = B ^ (~J & on)),
2395
2395
  (n[34] = V ^ (~rn & gn)),
2396
2396
  (n[35] = J ^ (~on & wn)),
2397
- (n[36] = rn ^ (~gn & D)),
2398
- (n[37] = on ^ (~wn & I)),
2399
- (n[38] = gn ^ (~D & B)),
2400
- (n[39] = wn ^ (~I & v)),
2401
- (n[40] = T ^ (~j & G)),
2397
+ (n[36] = rn ^ (~gn & I)),
2398
+ (n[37] = on ^ (~wn & C)),
2399
+ (n[38] = gn ^ (~I & v)),
2400
+ (n[39] = wn ^ (~C & B)),
2401
+ (n[40] = T ^ (~N & G)),
2402
2402
  (n[41] = S ^ (~z & Y)),
2403
- (n[42] = j ^ (~G & X)),
2403
+ (n[42] = N ^ (~G & X)),
2404
2404
  (n[43] = z ^ (~Y & nn)),
2405
2405
  (n[44] = G ^ (~X & hn)),
2406
2406
  (n[45] = Y ^ (~nn & dn)),
2407
2407
  (n[46] = X ^ (~hn & T)),
2408
2408
  (n[47] = nn ^ (~dn & S)),
2409
- (n[48] = hn ^ (~T & j)),
2409
+ (n[48] = hn ^ (~T & N)),
2410
2410
  (n[49] = dn ^ (~S & z)),
2411
2411
  (n[0] ^= IOTA_CONSTANTS[e * 2]),
2412
2412
  (n[1] ^= IOTA_CONSTANTS[e * 2 + 1])
@@ -2748,23 +2748,32 @@ class FixedPointNumber {
2748
2748
  return (o = (o || '').padEnd(t, '0').slice(0, t)), new FixedPointNumber(BigInt(r + o), t)
2749
2749
  }
2750
2750
  add(e) {
2751
- return this.assertCompatibility(e), new FixedPointNumber(this.value + e.value, this.scale)
2751
+ return this.assertSameScale(e), new FixedPointNumber(this.value + e.value, this.scale)
2752
2752
  }
2753
2753
  subtract(e) {
2754
- return this.assertCompatibility(e), new FixedPointNumber(this.value - e.value, this.scale)
2754
+ return this.assertSameScale(e), new FixedPointNumber(this.value - e.value, this.scale)
2755
2755
  }
2756
2756
  multiply(e) {
2757
2757
  return new FixedPointNumber(this.value * e, this.scale)
2758
2758
  }
2759
- divide(e) {
2759
+ divmod(e) {
2760
2760
  if (e === 0n) throw new Error('Division by zero is not allowed')
2761
2761
  const t = e * 10n ** BigInt(this.scale),
2762
2762
  r = (this.value / t) * 10n ** BigInt(this.scale),
2763
2763
  o = this.value % t
2764
2764
  return [new FixedPointNumber(r, this.scale), new FixedPointNumber(o, this.scale)]
2765
2765
  }
2766
+ exchange(e, t, r) {
2767
+ if (e === '*') {
2768
+ const i = (this.value * t.value) / 10n ** BigInt(this.scale)
2769
+ return new FixedPointNumber(i, r)
2770
+ }
2771
+ this.assertSameScale(t)
2772
+ const o = (this.value * 10n ** BigInt(r)) / t.value
2773
+ return new FixedPointNumber(o, r)
2774
+ }
2766
2775
  compare(e) {
2767
- return this.assertCompatibility(e), this.value > e.value ? 1 : this.value < e.value ? -1 : 0
2776
+ return this.assertSameScale(e), this.value > e.value ? 1 : this.value < e.value ? -1 : 0
2768
2777
  }
2769
2778
  toDecimalString() {
2770
2779
  if (this.scale === 0) return this.value.toString()
@@ -2779,7 +2788,7 @@ class FixedPointNumber {
2779
2788
  toJSON() {
2780
2789
  return this.toString()
2781
2790
  }
2782
- assertCompatibility(e) {
2791
+ assertSameScale(e) {
2783
2792
  if (this.scale !== e.scale) throw new Error(`Scale mismatch: expected ${this.scale}, but got ${e.scale}`)
2784
2793
  }
2785
2794
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cafe-utility",
3
- "version": "27.11.0",
3
+ "version": "27.12.0",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "exports": {