@palbase/web 7.3.2 → 7.3.4

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.
@@ -6,8 +6,8 @@ import {
6
6
  import {
7
7
  __configure,
8
8
  getRuntime
9
- } from "../chunk-TQAQR3OP.js";
10
- import "../chunk-HKZVA3I3.js";
9
+ } from "../chunk-PYJ3CMA2.js";
10
+ import "../chunk-RAP37ILS.js";
11
11
  import {
12
12
  environmentRefFromPublishableApiKey
13
13
  } from "../chunk-CFDU23TB.js";
@@ -180,6 +180,7 @@ function asPowChallenge(details) {
180
180
  return { id, prefix, difficulty };
181
181
  }
182
182
  var encoder = new TextEncoder();
183
+ var now = () => typeof performance !== "undefined" && typeof performance.now === "function" ? performance.now() : Date.now();
183
184
  function leadingZeroBits(hash) {
184
185
  let bits = 0;
185
186
  for (const byte of hash) {
@@ -195,13 +196,25 @@ var MAX_POW_DIFFICULTY = 24;
195
196
  function powBudget(difficulty) {
196
197
  return 8 * 2 ** difficulty;
197
198
  }
198
- async function solvePowChallenge(challenge, maxIterations = powBudget(challenge.difficulty)) {
199
+ var POW_DEADLINE_MS = 12e4;
200
+ async function solvePowChallenge(challenge, maxIterations = powBudget(challenge.difficulty), signal) {
199
201
  if (challenge.difficulty > MAX_POW_DIFFICULTY) {
200
202
  throw new Error(
201
203
  `proof-of-work: refusing difficulty ${challenge.difficulty}; this client attempts at most ${MAX_POW_DIFFICULTY}, which is the highest a Palbase stack issues`
202
204
  );
203
205
  }
206
+ const deadline = now() + POW_DEADLINE_MS;
204
207
  for (let nonce = 0; nonce < maxIterations; nonce++) {
208
+ if ((nonce & 1023) === 0) {
209
+ if (signal?.aborted) {
210
+ throw new DOMException("proof-of-work solve aborted", "AbortError");
211
+ }
212
+ if (now() > deadline) {
213
+ throw new Error(
214
+ `proof-of-work: gave up after ${POW_DEADLINE_MS / 1e3}s at difficulty ${challenge.difficulty} (${nonce} attempts)`
215
+ );
216
+ }
217
+ }
205
218
  const digest = await crypto.subtle.digest("SHA-256", encoder.encode(challenge.prefix + nonce));
206
219
  if (leadingZeroBits(new Uint8Array(digest)) >= challenge.difficulty) {
207
220
  return {
@@ -371,7 +384,7 @@ var HttpClient = class _HttpClient {
371
384
  if (attempt < MAX_RETRIES - 1) {
372
385
  const backoff = INITIAL_BACKOFF_MS * 2 ** attempt;
373
386
  await this.delay(backoff);
374
- return this.executeWithRetry(method, path, options, attempt + 1, earned);
387
+ return this.executeWithRetry(method, path, options, attempt + 1);
375
388
  }
376
389
  throw new PalbaseError(
377
390
  "network_error",
@@ -407,7 +420,7 @@ var HttpClient = class _HttpClient {
407
420
  path,
408
421
  options,
409
422
  attempt,
410
- await solvePowChallenge(challenge)
423
+ await solvePowChallenge(challenge, void 0, options?.signal)
411
424
  );
412
425
  }
413
426
  }
@@ -9373,7 +9386,7 @@ function defaultSessionStorage(key) {
9373
9386
  }
9374
9387
 
9375
9388
  // src/version.ts
9376
- var VERSION = "7.3.2";
9389
+ var VERSION = "7.3.4";
9377
9390
 
9378
9391
  // src/runtime.ts
9379
9392
  function buildRuntime(config) {