cafe-utility 26.6.1 → 26.8.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.
package/index.d.ts CHANGED
@@ -512,6 +512,13 @@ declare function commonPrefix(one: Uint8Array, other: Uint8Array): Uint8Array;
512
512
  declare function setBit(bytes: Uint8Array, index: number, value: 0 | 1): void;
513
513
  declare function getBit(bytes: Uint8Array, index: number): 0 | 1;
514
514
  declare function binaryIndexOf(array: Uint8Array, value: Uint8Array, start?: number): number;
515
+ declare function binaryEquals(a: Uint8Array, b: Uint8Array): boolean;
516
+ declare function privateKeyToPublicKey(privateKey: bigint): [bigint, bigint];
517
+ declare function publicKeyToAddress(publicKey: [bigint, bigint]): Uint8Array;
518
+ declare function signMessage(message: Uint8Array, privateKey: bigint, nonce?: bigint): [bigint, bigint, 27n | 28n];
519
+ declare function signHash(hash: bigint, privateKey: bigint, nonce?: bigint): [bigint, bigint, 27n | 28n];
520
+ declare function recoverPublicKey(message: Uint8Array, r: bigint, s: bigint, v: 27n | 28n): [bigint, bigint];
521
+ declare function verifySignature(message: Uint8Array, publicKey: [bigint, bigint], r: bigint, s: bigint): boolean;
515
522
  interface Uint8ArrayIO {
516
523
  max: () => number;
517
524
  }
@@ -625,6 +632,15 @@ export declare const Binary: {
625
632
  setBit: typeof setBit;
626
633
  getBit: typeof getBit;
627
634
  indexOf: typeof binaryIndexOf;
635
+ equals: typeof binaryEquals;
636
+ };
637
+ export declare const Elliptic: {
638
+ privateKeyToPublicKey: typeof privateKeyToPublicKey;
639
+ publicKeyToAddress: typeof publicKeyToAddress;
640
+ signMessage: typeof signMessage;
641
+ signHash: typeof signHash;
642
+ verifySignature: typeof verifySignature;
643
+ recoverPublicKey: typeof recoverPublicKey;
628
644
  };
629
645
  export declare const Random: {
630
646
  intBetween: typeof intBetween;
package/index.js CHANGED
@@ -12,6 +12,7 @@ Object.defineProperty(exports, '__esModule', { value: !0 }),
12
12
  exports.System =
13
13
  exports.Arrays =
14
14
  exports.Random =
15
+ exports.Elliptic =
15
16
  exports.Binary =
16
17
  exports.AsyncQueue =
17
18
  exports.PubSubChannel =
@@ -2133,7 +2134,10 @@ function uint64ToNumber(n, e) {
2133
2134
  function numberToUint256(n, e) {
2134
2135
  const r = new Uint8Array(32)
2135
2136
  let o = n
2136
- if (e === 'LE') for (let i = 0; i < 32; i++) return (r[i] = Number(o & 0xffn)), (o >>= 8n), r
2137
+ if (e === 'LE') {
2138
+ for (let i = 0; i < 32; i++) (r[i] = Number(o & 0xffn)), (o >>= 8n)
2139
+ return r
2140
+ }
2137
2141
  for (let i = 32 - 1; i >= 0; i--) (r[i] = Number(o & 0xffn)), (o >>= 8n)
2138
2142
  return r
2139
2143
  }
@@ -2183,24 +2187,24 @@ function keccakPermutate(n) {
2183
2187
  An = (s << 1) | (u >>> 31),
2184
2188
  m = t ^ $n,
2185
2189
  g = r ^ An,
2186
- Mn = (c << 1) | (f >>> 31),
2187
- On = (f << 1) | (c >>> 31),
2188
- y = o ^ Mn,
2189
- w = i ^ On,
2190
- En = (l << 1) | (a >>> 31),
2190
+ En = (c << 1) | (f >>> 31),
2191
+ Mn = (f << 1) | (c >>> 31),
2192
+ w = o ^ En,
2193
+ y = i ^ Mn,
2194
+ On = (l << 1) | (a >>> 31),
2191
2195
  Tn = (a << 1) | (l >>> 31),
2192
- x = u ^ En,
2196
+ x = u ^ On,
2193
2197
  b = s ^ Tn,
2194
2198
  kn = (t << 1) | (r >>> 31),
2195
- Dn = (r << 1) | (t >>> 31),
2199
+ Sn = (r << 1) | (t >>> 31),
2196
2200
  $ = c ^ kn,
2197
- A = f ^ Dn
2201
+ A = f ^ Sn
2198
2202
  ;(n[0] ^= p),
2199
2203
  (n[1] ^= d),
2200
2204
  (n[2] ^= m),
2201
2205
  (n[3] ^= g),
2202
- (n[4] ^= y),
2203
- (n[5] ^= w),
2206
+ (n[4] ^= w),
2207
+ (n[5] ^= y),
2204
2208
  (n[6] ^= x),
2205
2209
  (n[7] ^= b),
2206
2210
  (n[8] ^= $),
@@ -2209,8 +2213,8 @@ function keccakPermutate(n) {
2209
2213
  (n[11] ^= d),
2210
2214
  (n[12] ^= m),
2211
2215
  (n[13] ^= g),
2212
- (n[14] ^= y),
2213
- (n[15] ^= w),
2216
+ (n[14] ^= w),
2217
+ (n[15] ^= y),
2214
2218
  (n[16] ^= x),
2215
2219
  (n[17] ^= b),
2216
2220
  (n[18] ^= $),
@@ -2219,8 +2223,8 @@ function keccakPermutate(n) {
2219
2223
  (n[21] ^= d),
2220
2224
  (n[22] ^= m),
2221
2225
  (n[23] ^= g),
2222
- (n[24] ^= y),
2223
- (n[25] ^= w),
2226
+ (n[24] ^= w),
2227
+ (n[25] ^= y),
2224
2228
  (n[26] ^= x),
2225
2229
  (n[27] ^= b),
2226
2230
  (n[28] ^= $),
@@ -2229,8 +2233,8 @@ function keccakPermutate(n) {
2229
2233
  (n[31] ^= d),
2230
2234
  (n[32] ^= m),
2231
2235
  (n[33] ^= g),
2232
- (n[34] ^= y),
2233
- (n[35] ^= w),
2236
+ (n[34] ^= w),
2237
+ (n[35] ^= y),
2234
2238
  (n[36] ^= x),
2235
2239
  (n[37] ^= b),
2236
2240
  (n[38] ^= $),
@@ -2239,39 +2243,39 @@ function keccakPermutate(n) {
2239
2243
  (n[41] ^= d),
2240
2244
  (n[42] ^= m),
2241
2245
  (n[43] ^= g),
2242
- (n[44] ^= y),
2243
- (n[45] ^= w),
2246
+ (n[44] ^= w),
2247
+ (n[45] ^= y),
2244
2248
  (n[46] ^= x),
2245
2249
  (n[47] ^= b),
2246
2250
  (n[48] ^= $),
2247
2251
  (n[49] ^= A)
2248
- const M = n[0],
2249
- O = n[1],
2250
- E = (n[2] << 1) | (n[3] >>> 31),
2252
+ const E = n[0],
2253
+ M = n[1],
2254
+ O = (n[2] << 1) | (n[3] >>> 31),
2251
2255
  T = (n[3] << 1) | (n[2] >>> 31),
2252
2256
  k = (n[5] << 30) | (n[4] >>> 2),
2253
- D = (n[4] << 30) | (n[5] >>> 2),
2257
+ S = (n[4] << 30) | (n[5] >>> 2),
2254
2258
  R = (n[6] << 28) | (n[7] >>> 4),
2255
- S = (n[7] << 28) | (n[6] >>> 4),
2256
- C = (n[8] << 27) | (n[9] >>> 5),
2257
- I = (n[9] << 27) | (n[8] >>> 5),
2258
- L = (n[11] << 4) | (n[10] >>> 28),
2259
- P = (n[10] << 4) | (n[11] >>> 28),
2260
- B = (n[13] << 12) | (n[12] >>> 20),
2259
+ D = (n[7] << 28) | (n[6] >>> 4),
2260
+ I = (n[8] << 27) | (n[9] >>> 5),
2261
+ C = (n[9] << 27) | (n[8] >>> 5),
2262
+ P = (n[11] << 4) | (n[10] >>> 28),
2263
+ B = (n[10] << 4) | (n[11] >>> 28),
2264
+ L = (n[13] << 12) | (n[12] >>> 20),
2261
2265
  N = (n[12] << 12) | (n[13] >>> 20),
2262
2266
  j = (n[14] << 6) | (n[15] >>> 26),
2263
2267
  U = (n[15] << 6) | (n[14] >>> 26),
2264
- F = (n[17] << 23) | (n[16] >>> 9),
2265
- z = (n[16] << 23) | (n[17] >>> 9),
2268
+ z = (n[17] << 23) | (n[16] >>> 9),
2269
+ F = (n[16] << 23) | (n[17] >>> 9),
2266
2270
  q = (n[18] << 20) | (n[19] >>> 12),
2267
- W = (n[19] << 20) | (n[18] >>> 12),
2271
+ v = (n[19] << 20) | (n[18] >>> 12),
2268
2272
  H = (n[20] << 3) | (n[21] >>> 29),
2269
- V = (n[21] << 3) | (n[20] >>> 29),
2270
- v = (n[22] << 10) | (n[23] >>> 22),
2271
- J = (n[23] << 10) | (n[22] >>> 22),
2272
- K = (n[25] << 11) | (n[24] >>> 21),
2273
- Z = (n[24] << 11) | (n[25] >>> 21),
2274
- _ = (n[26] << 25) | (n[27] >>> 7),
2273
+ W = (n[21] << 3) | (n[20] >>> 29),
2274
+ V = (n[22] << 10) | (n[23] >>> 22),
2275
+ _ = (n[23] << 10) | (n[22] >>> 22),
2276
+ J = (n[25] << 11) | (n[24] >>> 21),
2277
+ K = (n[24] << 11) | (n[25] >>> 21),
2278
+ Z = (n[26] << 25) | (n[27] >>> 7),
2275
2279
  Q = (n[27] << 25) | (n[26] >>> 7),
2276
2280
  G = (n[29] << 7) | (n[28] >>> 25),
2277
2281
  Y = (n[28] << 7) | (n[29] >>> 25),
@@ -2292,59 +2296,59 @@ function keccakPermutate(n) {
2292
2296
  dn = (n[45] << 29) | (n[44] >>> 3),
2293
2297
  mn = (n[44] << 29) | (n[45] >>> 3),
2294
2298
  gn = (n[47] << 24) | (n[46] >>> 8),
2295
- yn = (n[46] << 24) | (n[47] >>> 8),
2296
- wn = (n[48] << 14) | (n[49] >>> 18),
2299
+ wn = (n[46] << 24) | (n[47] >>> 8),
2300
+ yn = (n[48] << 14) | (n[49] >>> 18),
2297
2301
  xn = (n[49] << 14) | (n[48] >>> 18)
2298
- ;(n[0] = M ^ (~B & K)),
2299
- (n[1] = O ^ (~N & Z)),
2300
- (n[2] = B ^ (~K & un)),
2301
- (n[3] = N ^ (~Z & cn)),
2302
- (n[4] = K ^ (~un & wn)),
2303
- (n[5] = Z ^ (~cn & xn)),
2304
- (n[6] = un ^ (~wn & M)),
2305
- (n[7] = cn ^ (~xn & O)),
2306
- (n[8] = wn ^ (~M & B)),
2307
- (n[9] = xn ^ (~O & N)),
2302
+ ;(n[0] = E ^ (~L & J)),
2303
+ (n[1] = M ^ (~N & K)),
2304
+ (n[2] = L ^ (~J & un)),
2305
+ (n[3] = N ^ (~K & cn)),
2306
+ (n[4] = J ^ (~un & yn)),
2307
+ (n[5] = K ^ (~cn & xn)),
2308
+ (n[6] = un ^ (~yn & E)),
2309
+ (n[7] = cn ^ (~xn & M)),
2310
+ (n[8] = yn ^ (~E & L)),
2311
+ (n[9] = xn ^ (~M & N)),
2308
2312
  (n[10] = R ^ (~q & H)),
2309
- (n[11] = S ^ (~W & V)),
2313
+ (n[11] = D ^ (~v & W)),
2310
2314
  (n[12] = q ^ (~H & en)),
2311
- (n[13] = W ^ (~V & tn)),
2315
+ (n[13] = v ^ (~W & tn)),
2312
2316
  (n[14] = H ^ (~en & dn)),
2313
- (n[15] = V ^ (~tn & mn)),
2317
+ (n[15] = W ^ (~tn & mn)),
2314
2318
  (n[16] = en ^ (~dn & R)),
2315
- (n[17] = tn ^ (~mn & S)),
2319
+ (n[17] = tn ^ (~mn & D)),
2316
2320
  (n[18] = dn ^ (~R & q)),
2317
- (n[19] = mn ^ (~S & W)),
2318
- (n[20] = E ^ (~j & _)),
2321
+ (n[19] = mn ^ (~D & v)),
2322
+ (n[20] = O ^ (~j & Z)),
2319
2323
  (n[21] = T ^ (~U & Q)),
2320
- (n[22] = j ^ (~_ & sn)),
2324
+ (n[22] = j ^ (~Z & sn)),
2321
2325
  (n[23] = U ^ (~Q & fn)),
2322
- (n[24] = _ ^ (~sn & ln)),
2326
+ (n[24] = Z ^ (~sn & ln)),
2323
2327
  (n[25] = Q ^ (~fn & an)),
2324
- (n[26] = sn ^ (~ln & E)),
2328
+ (n[26] = sn ^ (~ln & O)),
2325
2329
  (n[27] = fn ^ (~an & T)),
2326
- (n[28] = ln ^ (~E & j)),
2330
+ (n[28] = ln ^ (~O & j)),
2327
2331
  (n[29] = an ^ (~T & U)),
2328
- (n[30] = C ^ (~L & v)),
2329
- (n[31] = I ^ (~P & J)),
2330
- (n[32] = L ^ (~v & rn)),
2331
- (n[33] = P ^ (~J & on)),
2332
- (n[34] = v ^ (~rn & gn)),
2333
- (n[35] = J ^ (~on & yn)),
2334
- (n[36] = rn ^ (~gn & C)),
2335
- (n[37] = on ^ (~yn & I)),
2336
- (n[38] = gn ^ (~C & L)),
2337
- (n[39] = yn ^ (~I & P)),
2338
- (n[40] = k ^ (~F & G)),
2339
- (n[41] = D ^ (~z & Y)),
2340
- (n[42] = F ^ (~G & X)),
2341
- (n[43] = z ^ (~Y & nn)),
2332
+ (n[30] = I ^ (~P & V)),
2333
+ (n[31] = C ^ (~B & _)),
2334
+ (n[32] = P ^ (~V & rn)),
2335
+ (n[33] = B ^ (~_ & on)),
2336
+ (n[34] = V ^ (~rn & gn)),
2337
+ (n[35] = _ ^ (~on & wn)),
2338
+ (n[36] = rn ^ (~gn & I)),
2339
+ (n[37] = on ^ (~wn & C)),
2340
+ (n[38] = gn ^ (~I & P)),
2341
+ (n[39] = wn ^ (~C & B)),
2342
+ (n[40] = k ^ (~z & G)),
2343
+ (n[41] = S ^ (~F & Y)),
2344
+ (n[42] = z ^ (~G & X)),
2345
+ (n[43] = F ^ (~Y & nn)),
2342
2346
  (n[44] = G ^ (~X & hn)),
2343
2347
  (n[45] = Y ^ (~nn & pn)),
2344
2348
  (n[46] = X ^ (~hn & k)),
2345
- (n[47] = nn ^ (~pn & D)),
2346
- (n[48] = hn ^ (~k & F)),
2347
- (n[49] = pn ^ (~D & z)),
2349
+ (n[47] = nn ^ (~pn & S)),
2350
+ (n[48] = hn ^ (~k & z)),
2351
+ (n[49] = pn ^ (~S & F)),
2348
2352
  (n[0] ^= IOTA_CONSTANTS[e * 2]),
2349
2353
  (n[1] ^= IOTA_CONSTANTS[e * 2 + 1])
2350
2354
  }
@@ -2448,6 +2452,119 @@ function binaryIndexOf(n, e, t = 0) {
2448
2452
  for (let o = 0; o < e.length && n[r + o] === e[o]; o++) if (o === e.length - 1) return r
2449
2453
  return -1
2450
2454
  }
2455
+ function binaryEquals(n, e) {
2456
+ if (n.length !== e.length) return !1
2457
+ for (let t = 0; t < n.length; t++) if (n[t] !== e[t]) return !1
2458
+ return !0
2459
+ }
2460
+ function mod(n, e) {
2461
+ return ((n % e) + e) % e
2462
+ }
2463
+ function modInverse(n, e) {
2464
+ n = mod(n, e)
2465
+ let [t, r] = [0n, 1n],
2466
+ [o, i] = [e, n]
2467
+ for (; i !== 0n; ) {
2468
+ const u = o / i
2469
+ ;([t, r] = [r, t - u * r]), ([o, i] = [i, o - u * i])
2470
+ }
2471
+ if (o > 1n) throw new Error('a is not invertible')
2472
+ return t < 0n && (t += e), t
2473
+ }
2474
+ function modPow(n, e, t) {
2475
+ let r = 1n
2476
+ for (n = mod(n, t); e > 0; ) e % 2n === 1n && (r = mod(r * n, t)), (n = mod(n * n, t)), (e = e / 2n)
2477
+ return r
2478
+ }
2479
+ function modSqrt(n, e) {
2480
+ return mod(n, e) === 0n ? 0n : e % 4n === 3n ? modPow(n, (e + 1n) / 4n, e) : null
2481
+ }
2482
+ const SECP256K1_P = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2fn,
2483
+ SECP256K1_N = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141n,
2484
+ SECP256K1_X = 0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798n,
2485
+ SECP256K1_Y = 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8n
2486
+ function ellipticDouble(n, e, t) {
2487
+ if (e === 0n) return [0n, 0n]
2488
+ const r = mod(3n * n * n * modInverse(2n * e, t), t),
2489
+ o = mod(r * r - 2n * n, t),
2490
+ i = mod(r * (n - o) - e, t)
2491
+ return [o, i]
2492
+ }
2493
+ function ellipticAdd(n, e, t, r, o) {
2494
+ if (n === 0n && e === 0n) return [t, r]
2495
+ if (t === 0n && r === 0n) return [n, e]
2496
+ if (n === t && e === mod(-r, o)) return [0n, 0n]
2497
+ if (n === t && e === r) return ellipticDouble(n, e, o)
2498
+ const i = mod((r - e) * modInverse(t - n, o), o),
2499
+ u = mod(i * i - n - t, o),
2500
+ s = mod(i * (n - u) - e, o)
2501
+ return [u, s]
2502
+ }
2503
+ function privateKeyToPublicKey(n) {
2504
+ if (n <= 0n || n >= SECP256K1_N) throw new Error('Invalid private key')
2505
+ return doubleAndAdd(SECP256K1_X, SECP256K1_Y, n, SECP256K1_P)
2506
+ }
2507
+ function publicKeyToAddress(n) {
2508
+ const e = new Uint8Array(20),
2509
+ t = keccak256(concatBytes(numberToUint256(n[0], 'BE'), numberToUint256(n[1], 'BE')))
2510
+ return e.set(t.subarray(12)), e
2511
+ }
2512
+ function doubleAndAdd(n, e, t, r) {
2513
+ let o = [0n, 0n],
2514
+ i = [n, e]
2515
+ const u = t.toString(2)
2516
+ for (const s of u)
2517
+ s === '0'
2518
+ ? ((i = ellipticAdd(o[0], o[1], i[0], i[1], r)), (o = ellipticDouble(o[0], o[1], r)))
2519
+ : ((o = ellipticAdd(o[0], o[1], i[0], i[1], r)), (i = ellipticDouble(i[0], i[1], r)))
2520
+ return o
2521
+ }
2522
+ function signMessage(n, e, t) {
2523
+ return signHash(uint256ToNumber(keccak256(n), 'BE'), e, t)
2524
+ }
2525
+ function signHash(n, e, t) {
2526
+ if (e <= 0n || e >= SECP256K1_N) throw new Error('Invalid private key')
2527
+ if (
2528
+ (t ||
2529
+ (t = mod(
2530
+ uint256ToNumber(
2531
+ keccak256(concatBytes(keccak256(numberToUint256(e, 'BE')), numberToUint256(n, 'BE'))),
2532
+ 'BE'
2533
+ ),
2534
+ SECP256K1_N
2535
+ )),
2536
+ t <= 0n || t >= SECP256K1_N)
2537
+ )
2538
+ throw new Error('Invalid nonce')
2539
+ const r = mod(n, SECP256K1_N),
2540
+ o = doubleAndAdd(SECP256K1_X, SECP256K1_Y, t, SECP256K1_P),
2541
+ i = mod(o[0], SECP256K1_N)
2542
+ let u = mod((r + mod(i, SECP256K1_N) * e) * modInverse(t, SECP256K1_N), SECP256K1_N)
2543
+ if (i === 0n || u === 0n) throw new Error('Invalid r or s value')
2544
+ let s = o[1] % 2n === 0n ? 27n : 28n
2545
+ return u > SECP256K1_N / 2n && ((u = SECP256K1_N - u), (s = s === 27n ? 28n : 27n)), [i, u, s]
2546
+ }
2547
+ function recoverPublicKey(n, e, t, r) {
2548
+ const o = modSqrt(mod(e ** 3n + 7n, SECP256K1_P), SECP256K1_P)
2549
+ if (!o) throw new Error('Invalid r: does not correspond to a valid curve point')
2550
+ const i = r === 27n ? 0n : 1n,
2551
+ u = o % 2n === i ? o : SECP256K1_P - o,
2552
+ s = mod(uint256ToNumber(keccak256(n), 'BE'), SECP256K1_N),
2553
+ c = doubleAndAdd(e, u, t, SECP256K1_P),
2554
+ f = doubleAndAdd(SECP256K1_X, SECP256K1_Y, s, SECP256K1_P),
2555
+ l = ellipticAdd(c[0], c[1], f[0], mod(-f[1], SECP256K1_P), SECP256K1_P)
2556
+ return doubleAndAdd(l[0], l[1], modInverse(e, SECP256K1_N), SECP256K1_P)
2557
+ }
2558
+ function verifySignature(n, e, t, r) {
2559
+ const o = mod(uint256ToNumber(keccak256(n), 'BE'), SECP256K1_N),
2560
+ i = modInverse(r, SECP256K1_N),
2561
+ u = mod(o * i, SECP256K1_N),
2562
+ s = mod(t * i, SECP256K1_N),
2563
+ c = doubleAndAdd(SECP256K1_X, SECP256K1_Y, u, SECP256K1_P),
2564
+ f = doubleAndAdd(e[0], e[1], s, SECP256K1_P),
2565
+ l = ellipticAdd(c[0], c[1], f[0], f[1], SECP256K1_P)
2566
+ return t === mod(l[0], SECP256K1_N)
2567
+ }
2451
2568
  class Uint8ArrayReader {
2452
2569
  constructor(e) {
2453
2570
  ;(this.cursor = 0), (this.buffer = e)
@@ -2807,7 +2924,16 @@ class AsyncQueue {
2807
2924
  commonPrefix,
2808
2925
  setBit,
2809
2926
  getBit,
2810
- indexOf: binaryIndexOf
2927
+ indexOf: binaryIndexOf,
2928
+ equals: binaryEquals
2929
+ }),
2930
+ (exports.Elliptic = {
2931
+ privateKeyToPublicKey,
2932
+ publicKeyToAddress,
2933
+ signMessage,
2934
+ signHash,
2935
+ verifySignature,
2936
+ recoverPublicKey
2811
2937
  }),
2812
2938
  (exports.Random = {
2813
2939
  intBetween,
package/module.mjs CHANGED
@@ -5,6 +5,7 @@ export const Assertions = utility.Assertions
5
5
  export const Binary = utility.Binary
6
6
  export const Cache = utility.Cache
7
7
  export const Dates = utility.Dates
8
+ export const Elliptic = utility.Elliptic
8
9
  export const Numbers = utility.Numbers
9
10
  export const Objects = utility.Objects
10
11
  export const Pagination = utility.Pagination
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cafe-utility",
3
- "version": "26.6.1",
3
+ "version": "26.8.0",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "exports": {