@darajs/core 1.26.3 → 1.26.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.
@@ -1 +1 @@
1
- {"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../js/shared/interactivity/persistence.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,KAAK,UAAU,EAAqD,MAAM,QAAQ,CAAC;AAK5F,OAAO,EAAiC,KAAK,wBAAwB,EAAE,MAAM,OAAO,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAW,MAAM,YAAY,CAAC;AAMhE,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EAEtB,MAAM,SAAS,CAAC;AACjB,OAAO,EACH,KAAK,YAAY,EACjB,KAAK,YAAY,EAEjB,KAAK,gBAAgB,EAExB,MAAM,cAAc,CAAC;AAwRtB;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOjD;AA2DD,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,GAAG,KAAK,CAAC,SAAS,CAqF1F;AAED,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,GAAG,KAAK,CAAC,SAAS,CA6C3F;AAgGD,UAAU,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,gBAAgB,GAAG,gBAAgB;IACxE,CACI,QAAQ,EAAE,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,EACnC,aAAa,EAAE,yBAAyB,EACxC,QAAQ,EAAE,wBAAwB,EAClC,WAAW,EAAE,iBAAiB,GAC/B,UAAU,CAAC,CAAC,CAAC,CAAC;CACpB;AAGD,KAAK,YAAY,GAAG;IAChB,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,cAAc,CAAC;IAChC,gBAAgB,EAAE,eAAe,CAAC;CACrC,CAAC;AAGF,KAAK,YAAY,GAAG;KACf,CAAC,IAAI,MAAM,YAAY,GAAG;QACvB,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;KACxC;CACJ,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,YAgBpB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,SAAS,SAAS,gBAAgB,EAC3D,QAAQ,EAAE,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC,GACvC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,IAAI,CAS7B;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAQvF"}
1
+ {"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../js/shared/interactivity/persistence.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,KAAK,UAAU,EAAqD,MAAM,QAAQ,CAAC;AAK5F,OAAO,EAAiC,KAAK,wBAAwB,EAAE,MAAM,OAAO,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAW,MAAM,YAAY,CAAC;AAMhE,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EAEtB,MAAM,SAAS,CAAC;AACjB,OAAO,EACH,KAAK,YAAY,EACjB,KAAK,YAAY,EAEjB,KAAK,gBAAgB,EAExB,MAAM,cAAc,CAAC;AAsWtB;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOjD;AA2DD,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,GAAG,KAAK,CAAC,SAAS,CAqF1F;AAED,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,GAAG,KAAK,CAAC,SAAS,CA6C3F;AAgGD,UAAU,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,gBAAgB,GAAG,gBAAgB;IACxE,CACI,QAAQ,EAAE,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,EACnC,aAAa,EAAE,yBAAyB,EACxC,QAAQ,EAAE,wBAAwB,EAClC,WAAW,EAAE,iBAAiB,GAC/B,UAAU,CAAC,CAAC,CAAC,CAAC;CACpB;AAGD,KAAK,YAAY,GAAG;IAChB,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,cAAc,CAAC;IAChC,gBAAgB,EAAE,eAAe,CAAC;CACrC,CAAC;AAGF,KAAK,YAAY,GAAG;KACf,CAAC,IAAI,MAAM,YAAY,GAAG;QACvB,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;KACxC;CACJ,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,YAgBpB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,SAAS,SAAS,gBAAgB,EAC3D,QAAQ,EAAE,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC,GACvC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,IAAI,CAS7B;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAQvF"}
@@ -12,6 +12,7 @@ import { mixed } from '@recoiljs/refine';
12
12
  import { applyPatch } from 'fast-json-patch';
13
13
  import isEqual from 'lodash/isEqual';
14
14
  import mapValues from 'lodash/mapValues';
15
+ import PQueue from 'p-queue';
15
16
  import * as React from 'react';
16
17
  import { generatePath, useLocation, useMatches, useNavigate, useParams } from 'react-router';
17
18
  import { DefaultValue, useRecoilCallback } from 'recoil';
@@ -46,6 +47,33 @@ const STORE_SEQUENCE_MAP = new Map();
46
47
  * Global map to track the latest read value for each store, to prevent cyclic updates
47
48
  */
48
49
  const STORE_LATEST_VALUE_MAP = new Map();
50
+ /**
51
+ * Global set to track stores that are currently recovering from a sequence mismatch,
52
+ * preventing multiple concurrent full-state fetches for the same store.
53
+ */
54
+ const STORE_RECOVERY_IN_PROGRESS = new Set();
55
+ /**
56
+ * Queues patch applications per store to guarantee patches are applied in the order they arrive,
57
+ * even when individual applications are async (e.g. recovery fetches).
58
+ */
59
+ class PatchQueue {
60
+ constructor() {
61
+ this.queues = new Map();
62
+ }
63
+ getQueue(storeUid) {
64
+ let queue = this.queues.get(storeUid);
65
+ if (!queue) {
66
+ queue = new PQueue({ concurrency: 1 });
67
+ this.queues.set(storeUid, queue);
68
+ }
69
+ return queue;
70
+ }
71
+ enqueue(storeUid, patches, sequenceNumber, applyFn) {
72
+ const queue = this.getQueue(storeUid);
73
+ queue.add(() => applyFn(storeUid, patches, sequenceNumber));
74
+ }
75
+ }
76
+ const PATCH_QUEUE = new PatchQueue();
49
77
  /**
50
78
  * Shared item key used for the route matches store
51
79
  */
@@ -74,7 +102,7 @@ function BackendStoreSync({ children }) {
74
102
  // keep track of extras -> diff to send each set of extras as a separate request
75
103
  const extrasMap = new Map();
76
104
  Array.from(diff.entries())
77
- .filter(([itemKey, value]) => !STORE_LATEST_VALUE_MAP.has(itemKey) || STORE_LATEST_VALUE_MAP.get(itemKey) !== value)
105
+ .filter(([itemKey, value]) => !STORE_LATEST_VALUE_MAP.has(itemKey) || !isEqual(STORE_LATEST_VALUE_MAP.get(itemKey), value))
78
106
  .forEach(([itemKey, value]) => {
79
107
  STORE_LATEST_VALUE_MAP.set(itemKey, value);
80
108
  const extras = STORE_EXTRAS_MAP.get(itemKey);
@@ -104,9 +132,46 @@ function BackendStoreSync({ children }) {
104
132
  // Validate sequence number to ensure UI state is in sync with backend
105
133
  const expectedSequence = STORE_SEQUENCE_MAP.get(storeUid) || 0;
106
134
  if (sequenceNumber !== expectedSequence + 1) {
135
+ // Stale patch that arrived before a recovery updated the sequence — skip it
136
+ if (sequenceNumber <= expectedSequence) {
137
+ return;
138
+ }
107
139
  // eslint-disable-next-line no-console
108
- console.warn(`Sequence number mismatch for store ${storeUid}. Expected: ${expectedSequence + 1}, Got: ${sequenceNumber}. Rejecting patch.`);
109
- // Could trigger a full state refresh here in the future
140
+ console.warn(`Sequence number mismatch for store ${storeUid}. Expected: ${expectedSequence + 1}, Got: ${sequenceNumber}.`);
141
+ if (!STORE_RECOVERY_IN_PROGRESS.has(storeUid)) {
142
+ STORE_RECOVERY_IN_PROGRESS.add(storeUid);
143
+ // eslint-disable-next-line no-console
144
+ console.warn(`Fetching full state for store ${storeUid} to recover.`);
145
+ try {
146
+ const fullValue = yield getStoreValue(storeUid);
147
+ const variableUids = STORE_VARIABLE_MAP.get(storeUid);
148
+ if (variableUids) {
149
+ for (const variableUid of variableUids) {
150
+ const directAtom = atomRegistry.get(variableUid);
151
+ if (directAtom) {
152
+ set(directAtom, fullValue);
153
+ continue;
154
+ }
155
+ const atomFamily = atomFamilyRegistry.get(variableUid);
156
+ if (atomFamily) {
157
+ const familyMembers = atomFamilyMembersRegistry.get(atomFamily);
158
+ if (familyMembers) {
159
+ for (const [, atomInstance] of familyMembers) {
160
+ set(atomInstance, fullValue);
161
+ }
162
+ }
163
+ }
164
+ }
165
+ }
166
+ }
167
+ catch (e) {
168
+ // eslint-disable-next-line no-console
169
+ console.error(`Failed to recover store ${storeUid} after sequence mismatch:`, e);
170
+ }
171
+ finally {
172
+ STORE_RECOVERY_IN_PROGRESS.delete(storeUid);
173
+ }
174
+ }
110
175
  return;
111
176
  }
112
177
  // Update expected sequence number
@@ -189,10 +254,9 @@ function BackendStoreSync({ children }) {
189
254
  updateItem(message.store_uid, message.value);
190
255
  STORE_LATEST_VALUE_MAP.set(message.store_uid, message.value);
191
256
  });
192
- // Subscribe to patch updates
257
+ // Subscribe to patch updates — queued per store to preserve ordering
193
258
  const patchSub = client.backendStorePatchMessages$().subscribe((message) => {
194
- // Apply patches directly to atoms instead of going through RecoilSync
195
- applyPatchesToAtoms(message.store_uid, message.patches, message.sequence_number);
259
+ PATCH_QUEUE.enqueue(message.store_uid, message.patches, message.sequence_number, applyPatchesToAtoms);
196
260
  });
197
261
  return () => {
198
262
  valueSub.unsubscribe();
@@ -1 +1 @@
1
- {"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../../js/shared/interactivity/persistence.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../../js/shared/interactivity/persistence.tsx"],"names":[],"mappings":"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"}
@@ -71936,6 +71936,958 @@ ${String(error)}`;
71936
71936
  function cleanArgs(values, forceKeyOverride) {
71937
71937
  return values.map((val) => cleanValue(val, forceKeyOverride));
71938
71938
  }
71939
+ var eventemitter3 = { exports: {} };
71940
+ var hasRequiredEventemitter3;
71941
+ function requireEventemitter3() {
71942
+ if (hasRequiredEventemitter3) return eventemitter3.exports;
71943
+ hasRequiredEventemitter3 = 1;
71944
+ (function(module2) {
71945
+ var has = Object.prototype.hasOwnProperty, prefix = "~";
71946
+ function Events() {
71947
+ }
71948
+ if (Object.create) {
71949
+ Events.prototype = /* @__PURE__ */ Object.create(null);
71950
+ if (!new Events().__proto__) prefix = false;
71951
+ }
71952
+ function EE(fn, context, once) {
71953
+ this.fn = fn;
71954
+ this.context = context;
71955
+ this.once = once || false;
71956
+ }
71957
+ function addListener(emitter, event, fn, context, once) {
71958
+ if (typeof fn !== "function") {
71959
+ throw new TypeError("The listener must be a function");
71960
+ }
71961
+ var listener2 = new EE(fn, context || emitter, once), evt = prefix ? prefix + event : event;
71962
+ if (!emitter._events[evt]) emitter._events[evt] = listener2, emitter._eventsCount++;
71963
+ else if (!emitter._events[evt].fn) emitter._events[evt].push(listener2);
71964
+ else emitter._events[evt] = [emitter._events[evt], listener2];
71965
+ return emitter;
71966
+ }
71967
+ function clearEvent(emitter, evt) {
71968
+ if (--emitter._eventsCount === 0) emitter._events = new Events();
71969
+ else delete emitter._events[evt];
71970
+ }
71971
+ function EventEmitter2() {
71972
+ this._events = new Events();
71973
+ this._eventsCount = 0;
71974
+ }
71975
+ EventEmitter2.prototype.eventNames = function eventNames() {
71976
+ var names = [], events, name;
71977
+ if (this._eventsCount === 0) return names;
71978
+ for (name in events = this._events) {
71979
+ if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);
71980
+ }
71981
+ if (Object.getOwnPropertySymbols) {
71982
+ return names.concat(Object.getOwnPropertySymbols(events));
71983
+ }
71984
+ return names;
71985
+ };
71986
+ EventEmitter2.prototype.listeners = function listeners(event) {
71987
+ var evt = prefix ? prefix + event : event, handlers = this._events[evt];
71988
+ if (!handlers) return [];
71989
+ if (handlers.fn) return [handlers.fn];
71990
+ for (var i2 = 0, l2 = handlers.length, ee = new Array(l2); i2 < l2; i2++) {
71991
+ ee[i2] = handlers[i2].fn;
71992
+ }
71993
+ return ee;
71994
+ };
71995
+ EventEmitter2.prototype.listenerCount = function listenerCount(event) {
71996
+ var evt = prefix ? prefix + event : event, listeners = this._events[evt];
71997
+ if (!listeners) return 0;
71998
+ if (listeners.fn) return 1;
71999
+ return listeners.length;
72000
+ };
72001
+ EventEmitter2.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {
72002
+ var evt = prefix ? prefix + event : event;
72003
+ if (!this._events[evt]) return false;
72004
+ var listeners = this._events[evt], len = arguments.length, args, i2;
72005
+ if (listeners.fn) {
72006
+ if (listeners.once) this.removeListener(event, listeners.fn, void 0, true);
72007
+ switch (len) {
72008
+ case 1:
72009
+ return listeners.fn.call(listeners.context), true;
72010
+ case 2:
72011
+ return listeners.fn.call(listeners.context, a1), true;
72012
+ case 3:
72013
+ return listeners.fn.call(listeners.context, a1, a2), true;
72014
+ case 4:
72015
+ return listeners.fn.call(listeners.context, a1, a2, a3), true;
72016
+ case 5:
72017
+ return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;
72018
+ case 6:
72019
+ return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;
72020
+ }
72021
+ for (i2 = 1, args = new Array(len - 1); i2 < len; i2++) {
72022
+ args[i2 - 1] = arguments[i2];
72023
+ }
72024
+ listeners.fn.apply(listeners.context, args);
72025
+ } else {
72026
+ var length = listeners.length, j;
72027
+ for (i2 = 0; i2 < length; i2++) {
72028
+ if (listeners[i2].once) this.removeListener(event, listeners[i2].fn, void 0, true);
72029
+ switch (len) {
72030
+ case 1:
72031
+ listeners[i2].fn.call(listeners[i2].context);
72032
+ break;
72033
+ case 2:
72034
+ listeners[i2].fn.call(listeners[i2].context, a1);
72035
+ break;
72036
+ case 3:
72037
+ listeners[i2].fn.call(listeners[i2].context, a1, a2);
72038
+ break;
72039
+ case 4:
72040
+ listeners[i2].fn.call(listeners[i2].context, a1, a2, a3);
72041
+ break;
72042
+ default:
72043
+ if (!args) for (j = 1, args = new Array(len - 1); j < len; j++) {
72044
+ args[j - 1] = arguments[j];
72045
+ }
72046
+ listeners[i2].fn.apply(listeners[i2].context, args);
72047
+ }
72048
+ }
72049
+ }
72050
+ return true;
72051
+ };
72052
+ EventEmitter2.prototype.on = function on(event, fn, context) {
72053
+ return addListener(this, event, fn, context, false);
72054
+ };
72055
+ EventEmitter2.prototype.once = function once(event, fn, context) {
72056
+ return addListener(this, event, fn, context, true);
72057
+ };
72058
+ EventEmitter2.prototype.removeListener = function removeListener(event, fn, context, once) {
72059
+ var evt = prefix ? prefix + event : event;
72060
+ if (!this._events[evt]) return this;
72061
+ if (!fn) {
72062
+ clearEvent(this, evt);
72063
+ return this;
72064
+ }
72065
+ var listeners = this._events[evt];
72066
+ if (listeners.fn) {
72067
+ if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) {
72068
+ clearEvent(this, evt);
72069
+ }
72070
+ } else {
72071
+ for (var i2 = 0, events = [], length = listeners.length; i2 < length; i2++) {
72072
+ if (listeners[i2].fn !== fn || once && !listeners[i2].once || context && listeners[i2].context !== context) {
72073
+ events.push(listeners[i2]);
72074
+ }
72075
+ }
72076
+ if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;
72077
+ else clearEvent(this, evt);
72078
+ }
72079
+ return this;
72080
+ };
72081
+ EventEmitter2.prototype.removeAllListeners = function removeAllListeners(event) {
72082
+ var evt;
72083
+ if (event) {
72084
+ evt = prefix ? prefix + event : event;
72085
+ if (this._events[evt]) clearEvent(this, evt);
72086
+ } else {
72087
+ this._events = new Events();
72088
+ this._eventsCount = 0;
72089
+ }
72090
+ return this;
72091
+ };
72092
+ EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener;
72093
+ EventEmitter2.prototype.addListener = EventEmitter2.prototype.on;
72094
+ EventEmitter2.prefixed = prefix;
72095
+ EventEmitter2.EventEmitter = EventEmitter2;
72096
+ {
72097
+ module2.exports = EventEmitter2;
72098
+ }
72099
+ })(eventemitter3);
72100
+ return eventemitter3.exports;
72101
+ }
72102
+ var eventemitter3Exports = requireEventemitter3();
72103
+ const EventEmitter = /* @__PURE__ */ getDefaultExportFromCjs(eventemitter3Exports);
72104
+ class TimeoutError extends Error {
72105
+ name = "TimeoutError";
72106
+ constructor(message, options) {
72107
+ super(message, options);
72108
+ Error.captureStackTrace?.(this, TimeoutError);
72109
+ }
72110
+ }
72111
+ const getAbortedReason = (signal) => signal.reason ?? new DOMException("This operation was aborted.", "AbortError");
72112
+ function pTimeout(promise, options) {
72113
+ const {
72114
+ milliseconds,
72115
+ fallback,
72116
+ message,
72117
+ customTimers = { setTimeout, clearTimeout },
72118
+ signal
72119
+ } = options;
72120
+ let timer2;
72121
+ let abortHandler;
72122
+ const wrappedPromise = new Promise((resolve, reject) => {
72123
+ if (typeof milliseconds !== "number" || Math.sign(milliseconds) !== 1) {
72124
+ throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${milliseconds}\``);
72125
+ }
72126
+ if (signal?.aborted) {
72127
+ reject(getAbortedReason(signal));
72128
+ return;
72129
+ }
72130
+ if (signal) {
72131
+ abortHandler = () => {
72132
+ reject(getAbortedReason(signal));
72133
+ };
72134
+ signal.addEventListener("abort", abortHandler, { once: true });
72135
+ }
72136
+ promise.then(resolve, reject);
72137
+ if (milliseconds === Number.POSITIVE_INFINITY) {
72138
+ return;
72139
+ }
72140
+ const timeoutError = new TimeoutError();
72141
+ timer2 = customTimers.setTimeout.call(void 0, () => {
72142
+ if (fallback) {
72143
+ try {
72144
+ resolve(fallback());
72145
+ } catch (error) {
72146
+ reject(error);
72147
+ }
72148
+ return;
72149
+ }
72150
+ if (typeof promise.cancel === "function") {
72151
+ promise.cancel();
72152
+ }
72153
+ if (message === false) {
72154
+ resolve();
72155
+ } else if (message instanceof Error) {
72156
+ reject(message);
72157
+ } else {
72158
+ timeoutError.message = message ?? `Promise timed out after ${milliseconds} milliseconds`;
72159
+ reject(timeoutError);
72160
+ }
72161
+ }, milliseconds);
72162
+ });
72163
+ const cancelablePromise = wrappedPromise.finally(() => {
72164
+ cancelablePromise.clear();
72165
+ if (abortHandler && signal) {
72166
+ signal.removeEventListener("abort", abortHandler);
72167
+ }
72168
+ });
72169
+ cancelablePromise.clear = () => {
72170
+ customTimers.clearTimeout.call(void 0, timer2);
72171
+ timer2 = void 0;
72172
+ };
72173
+ return cancelablePromise;
72174
+ }
72175
+ function lowerBound(array2, value, comparator) {
72176
+ let first = 0;
72177
+ let count2 = array2.length;
72178
+ while (count2 > 0) {
72179
+ const step = Math.trunc(count2 / 2);
72180
+ let it2 = first + step;
72181
+ if (comparator(array2[it2], value) <= 0) {
72182
+ first = ++it2;
72183
+ count2 -= step + 1;
72184
+ } else {
72185
+ count2 = step;
72186
+ }
72187
+ }
72188
+ return first;
72189
+ }
72190
+ class PriorityQueue {
72191
+ #queue = [];
72192
+ enqueue(run2, options) {
72193
+ const { priority = 0, id } = options ?? {};
72194
+ const element = {
72195
+ priority,
72196
+ id,
72197
+ run: run2
72198
+ };
72199
+ if (this.size === 0 || this.#queue[this.size - 1].priority >= priority) {
72200
+ this.#queue.push(element);
72201
+ return;
72202
+ }
72203
+ const index2 = lowerBound(this.#queue, element, (a2, b2) => b2.priority - a2.priority);
72204
+ this.#queue.splice(index2, 0, element);
72205
+ }
72206
+ setPriority(id, priority) {
72207
+ const index2 = this.#queue.findIndex((element) => element.id === id);
72208
+ if (index2 === -1) {
72209
+ throw new ReferenceError(`No promise function with the id "${id}" exists in the queue.`);
72210
+ }
72211
+ const [item] = this.#queue.splice(index2, 1);
72212
+ this.enqueue(item.run, { priority, id });
72213
+ }
72214
+ dequeue() {
72215
+ const item = this.#queue.shift();
72216
+ return item?.run;
72217
+ }
72218
+ filter(options) {
72219
+ return this.#queue.filter((element) => element.priority === options.priority).map((element) => element.run);
72220
+ }
72221
+ get size() {
72222
+ return this.#queue.length;
72223
+ }
72224
+ }
72225
+ class PQueue extends EventEmitter {
72226
+ #carryoverIntervalCount;
72227
+ #isIntervalIgnored;
72228
+ #intervalCount = 0;
72229
+ #intervalCap;
72230
+ #rateLimitedInInterval = false;
72231
+ #rateLimitFlushScheduled = false;
72232
+ #interval;
72233
+ #intervalEnd = 0;
72234
+ #lastExecutionTime = 0;
72235
+ #intervalId;
72236
+ #timeoutId;
72237
+ #strict;
72238
+ // Circular buffer implementation for better performance
72239
+ #strictTicks = [];
72240
+ #strictTicksStartIndex = 0;
72241
+ #queue;
72242
+ #queueClass;
72243
+ #pending = 0;
72244
+ // The `!` is needed because of https://github.com/microsoft/TypeScript/issues/32194
72245
+ #concurrency;
72246
+ #isPaused;
72247
+ // Use to assign a unique identifier to a promise function, if not explicitly specified
72248
+ #idAssigner = 1n;
72249
+ // Track currently running tasks for debugging
72250
+ #runningTasks = /* @__PURE__ */ new Map();
72251
+ /**
72252
+ Get or set the default timeout for all tasks. Can be changed at runtime.
72253
+
72254
+ Operations will throw a `TimeoutError` if they don't complete within the specified time.
72255
+
72256
+ The timeout begins when the operation is dequeued and starts execution, not while it's waiting in the queue.
72257
+
72258
+ @example
72259
+ ```
72260
+ const queue = new PQueue({timeout: 5000});
72261
+
72262
+ // Change timeout for all future tasks
72263
+ queue.timeout = 10000;
72264
+ ```
72265
+ */
72266
+ timeout;
72267
+ constructor(options) {
72268
+ super();
72269
+ options = {
72270
+ carryoverIntervalCount: false,
72271
+ intervalCap: Number.POSITIVE_INFINITY,
72272
+ interval: 0,
72273
+ concurrency: Number.POSITIVE_INFINITY,
72274
+ autoStart: true,
72275
+ queueClass: PriorityQueue,
72276
+ strict: false,
72277
+ ...options
72278
+ };
72279
+ if (!(typeof options.intervalCap === "number" && options.intervalCap >= 1)) {
72280
+ throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${options.intervalCap?.toString() ?? ""}\` (${typeof options.intervalCap})`);
72281
+ }
72282
+ if (options.interval === void 0 || !(Number.isFinite(options.interval) && options.interval >= 0)) {
72283
+ throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${options.interval?.toString() ?? ""}\` (${typeof options.interval})`);
72284
+ }
72285
+ if (options.strict && options.interval === 0) {
72286
+ throw new TypeError("The `strict` option requires a non-zero `interval`");
72287
+ }
72288
+ if (options.strict && options.intervalCap === Number.POSITIVE_INFINITY) {
72289
+ throw new TypeError("The `strict` option requires a finite `intervalCap`");
72290
+ }
72291
+ this.#carryoverIntervalCount = options.carryoverIntervalCount ?? options.carryoverConcurrencyCount ?? false;
72292
+ this.#isIntervalIgnored = options.intervalCap === Number.POSITIVE_INFINITY || options.interval === 0;
72293
+ this.#intervalCap = options.intervalCap;
72294
+ this.#interval = options.interval;
72295
+ this.#strict = options.strict;
72296
+ this.#queue = new options.queueClass();
72297
+ this.#queueClass = options.queueClass;
72298
+ this.concurrency = options.concurrency;
72299
+ if (options.timeout !== void 0 && !(Number.isFinite(options.timeout) && options.timeout > 0)) {
72300
+ throw new TypeError(`Expected \`timeout\` to be a positive finite number, got \`${options.timeout}\` (${typeof options.timeout})`);
72301
+ }
72302
+ this.timeout = options.timeout;
72303
+ this.#isPaused = options.autoStart === false;
72304
+ this.#setupRateLimitTracking();
72305
+ }
72306
+ #cleanupStrictTicks(now2) {
72307
+ while (this.#strictTicksStartIndex < this.#strictTicks.length) {
72308
+ const oldestTick = this.#strictTicks[this.#strictTicksStartIndex];
72309
+ if (oldestTick !== void 0 && now2 - oldestTick >= this.#interval) {
72310
+ this.#strictTicksStartIndex++;
72311
+ } else {
72312
+ break;
72313
+ }
72314
+ }
72315
+ const shouldCompact = this.#strictTicksStartIndex > 100 && this.#strictTicksStartIndex > this.#strictTicks.length / 2 || this.#strictTicksStartIndex === this.#strictTicks.length;
72316
+ if (shouldCompact) {
72317
+ this.#strictTicks = this.#strictTicks.slice(this.#strictTicksStartIndex);
72318
+ this.#strictTicksStartIndex = 0;
72319
+ }
72320
+ }
72321
+ // Helper methods for interval consumption
72322
+ #consumeIntervalSlot(now2) {
72323
+ if (this.#strict) {
72324
+ this.#strictTicks.push(now2);
72325
+ } else {
72326
+ this.#intervalCount++;
72327
+ }
72328
+ }
72329
+ #rollbackIntervalSlot() {
72330
+ if (this.#strict) {
72331
+ if (this.#strictTicks.length > this.#strictTicksStartIndex) {
72332
+ this.#strictTicks.pop();
72333
+ }
72334
+ } else if (this.#intervalCount > 0) {
72335
+ this.#intervalCount--;
72336
+ }
72337
+ }
72338
+ #getActiveTicksCount() {
72339
+ return this.#strictTicks.length - this.#strictTicksStartIndex;
72340
+ }
72341
+ get #doesIntervalAllowAnother() {
72342
+ if (this.#isIntervalIgnored) {
72343
+ return true;
72344
+ }
72345
+ if (this.#strict) {
72346
+ return this.#getActiveTicksCount() < this.#intervalCap;
72347
+ }
72348
+ return this.#intervalCount < this.#intervalCap;
72349
+ }
72350
+ get #doesConcurrentAllowAnother() {
72351
+ return this.#pending < this.#concurrency;
72352
+ }
72353
+ #next() {
72354
+ this.#pending--;
72355
+ if (this.#pending === 0) {
72356
+ this.emit("pendingZero");
72357
+ }
72358
+ this.#tryToStartAnother();
72359
+ this.emit("next");
72360
+ }
72361
+ #onResumeInterval() {
72362
+ this.#timeoutId = void 0;
72363
+ this.#onInterval();
72364
+ this.#initializeIntervalIfNeeded();
72365
+ }
72366
+ #isIntervalPausedAt(now2) {
72367
+ if (this.#strict) {
72368
+ this.#cleanupStrictTicks(now2);
72369
+ const activeTicksCount = this.#getActiveTicksCount();
72370
+ if (activeTicksCount >= this.#intervalCap) {
72371
+ const oldestTick = this.#strictTicks[this.#strictTicksStartIndex];
72372
+ const delay2 = this.#interval - (now2 - oldestTick);
72373
+ this.#createIntervalTimeout(delay2);
72374
+ return true;
72375
+ }
72376
+ return false;
72377
+ }
72378
+ if (this.#intervalId === void 0) {
72379
+ const delay2 = this.#intervalEnd - now2;
72380
+ if (delay2 < 0) {
72381
+ if (this.#lastExecutionTime > 0) {
72382
+ const timeSinceLastExecution = now2 - this.#lastExecutionTime;
72383
+ if (timeSinceLastExecution < this.#interval) {
72384
+ this.#createIntervalTimeout(this.#interval - timeSinceLastExecution);
72385
+ return true;
72386
+ }
72387
+ }
72388
+ this.#intervalCount = this.#carryoverIntervalCount ? this.#pending : 0;
72389
+ } else {
72390
+ this.#createIntervalTimeout(delay2);
72391
+ return true;
72392
+ }
72393
+ }
72394
+ return false;
72395
+ }
72396
+ #createIntervalTimeout(delay2) {
72397
+ if (this.#timeoutId !== void 0) {
72398
+ return;
72399
+ }
72400
+ this.#timeoutId = setTimeout(() => {
72401
+ this.#onResumeInterval();
72402
+ }, delay2);
72403
+ }
72404
+ #clearIntervalTimer() {
72405
+ if (this.#intervalId) {
72406
+ clearInterval(this.#intervalId);
72407
+ this.#intervalId = void 0;
72408
+ }
72409
+ }
72410
+ #clearTimeoutTimer() {
72411
+ if (this.#timeoutId) {
72412
+ clearTimeout(this.#timeoutId);
72413
+ this.#timeoutId = void 0;
72414
+ }
72415
+ }
72416
+ #tryToStartAnother() {
72417
+ if (this.#queue.size === 0) {
72418
+ this.#clearIntervalTimer();
72419
+ this.emit("empty");
72420
+ if (this.#pending === 0) {
72421
+ this.#clearTimeoutTimer();
72422
+ if (this.#strict && this.#strictTicksStartIndex > 0) {
72423
+ const now2 = Date.now();
72424
+ this.#cleanupStrictTicks(now2);
72425
+ }
72426
+ this.emit("idle");
72427
+ }
72428
+ return false;
72429
+ }
72430
+ let taskStarted = false;
72431
+ if (!this.#isPaused) {
72432
+ const now2 = Date.now();
72433
+ const canInitializeInterval = !this.#isIntervalPausedAt(now2);
72434
+ if (this.#doesIntervalAllowAnother && this.#doesConcurrentAllowAnother) {
72435
+ const job = this.#queue.dequeue();
72436
+ if (!this.#isIntervalIgnored) {
72437
+ this.#consumeIntervalSlot(now2);
72438
+ this.#scheduleRateLimitUpdate();
72439
+ }
72440
+ this.emit("active");
72441
+ job();
72442
+ if (canInitializeInterval) {
72443
+ this.#initializeIntervalIfNeeded();
72444
+ }
72445
+ taskStarted = true;
72446
+ }
72447
+ }
72448
+ return taskStarted;
72449
+ }
72450
+ #initializeIntervalIfNeeded() {
72451
+ if (this.#isIntervalIgnored || this.#intervalId !== void 0) {
72452
+ return;
72453
+ }
72454
+ if (this.#strict) {
72455
+ return;
72456
+ }
72457
+ this.#intervalId = setInterval(() => {
72458
+ this.#onInterval();
72459
+ }, this.#interval);
72460
+ this.#intervalEnd = Date.now() + this.#interval;
72461
+ }
72462
+ #onInterval() {
72463
+ if (!this.#strict) {
72464
+ if (this.#intervalCount === 0 && this.#pending === 0 && this.#intervalId) {
72465
+ this.#clearIntervalTimer();
72466
+ }
72467
+ this.#intervalCount = this.#carryoverIntervalCount ? this.#pending : 0;
72468
+ }
72469
+ this.#processQueue();
72470
+ this.#scheduleRateLimitUpdate();
72471
+ }
72472
+ /**
72473
+ Executes all queued functions until it reaches the limit.
72474
+ */
72475
+ #processQueue() {
72476
+ while (this.#tryToStartAnother()) {
72477
+ }
72478
+ }
72479
+ get concurrency() {
72480
+ return this.#concurrency;
72481
+ }
72482
+ set concurrency(newConcurrency) {
72483
+ if (!(typeof newConcurrency === "number" && newConcurrency >= 1)) {
72484
+ throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${newConcurrency}\` (${typeof newConcurrency})`);
72485
+ }
72486
+ this.#concurrency = newConcurrency;
72487
+ this.#processQueue();
72488
+ }
72489
+ /**
72490
+ Updates the priority of a promise function by its id, affecting its execution order. Requires a defined concurrency limit to take effect.
72491
+
72492
+ For example, this can be used to prioritize a promise function to run earlier.
72493
+
72494
+ ```js
72495
+ import PQueue from 'p-queue';
72496
+
72497
+ const queue = new PQueue({concurrency: 1});
72498
+
72499
+ queue.add(async () => '🦄', {priority: 1});
72500
+ queue.add(async () => '🦀', {priority: 0, id: '🦀'});
72501
+ queue.add(async () => '🦄', {priority: 1});
72502
+ queue.add(async () => '🦄', {priority: 1});
72503
+
72504
+ queue.setPriority('🦀', 2);
72505
+ ```
72506
+
72507
+ In this case, the promise function with `id: '🦀'` runs second.
72508
+
72509
+ You can also deprioritize a promise function to delay its execution:
72510
+
72511
+ ```js
72512
+ import PQueue from 'p-queue';
72513
+
72514
+ const queue = new PQueue({concurrency: 1});
72515
+
72516
+ queue.add(async () => '🦄', {priority: 1});
72517
+ queue.add(async () => '🦀', {priority: 1, id: '🦀'});
72518
+ queue.add(async () => '🦄');
72519
+ queue.add(async () => '🦄', {priority: 0});
72520
+
72521
+ queue.setPriority('🦀', -1);
72522
+ ```
72523
+ Here, the promise function with `id: '🦀'` executes last.
72524
+ */
72525
+ setPriority(id, priority) {
72526
+ if (typeof priority !== "number" || !Number.isFinite(priority)) {
72527
+ throw new TypeError(`Expected \`priority\` to be a finite number, got \`${priority}\` (${typeof priority})`);
72528
+ }
72529
+ this.#queue.setPriority(id, priority);
72530
+ }
72531
+ async add(function_, options = {}) {
72532
+ options = {
72533
+ timeout: this.timeout,
72534
+ ...options,
72535
+ // Assign unique ID if not provided
72536
+ id: options.id ?? (this.#idAssigner++).toString()
72537
+ };
72538
+ return new Promise((resolve, reject) => {
72539
+ const taskSymbol = Symbol(`task-${options.id}`);
72540
+ this.#queue.enqueue(async () => {
72541
+ this.#pending++;
72542
+ this.#runningTasks.set(taskSymbol, {
72543
+ id: options.id,
72544
+ priority: options.priority ?? 0,
72545
+ // Match priority-queue default
72546
+ startTime: Date.now(),
72547
+ timeout: options.timeout
72548
+ });
72549
+ let eventListener;
72550
+ try {
72551
+ try {
72552
+ options.signal?.throwIfAborted();
72553
+ } catch (error) {
72554
+ this.#rollbackIntervalConsumption();
72555
+ this.#runningTasks.delete(taskSymbol);
72556
+ throw error;
72557
+ }
72558
+ this.#lastExecutionTime = Date.now();
72559
+ let operation = function_({ signal: options.signal });
72560
+ if (options.timeout) {
72561
+ operation = pTimeout(Promise.resolve(operation), {
72562
+ milliseconds: options.timeout,
72563
+ message: `Task timed out after ${options.timeout}ms (queue has ${this.#pending} running, ${this.#queue.size} waiting)`
72564
+ });
72565
+ }
72566
+ if (options.signal) {
72567
+ const { signal } = options;
72568
+ operation = Promise.race([operation, new Promise((_resolve, reject2) => {
72569
+ eventListener = () => {
72570
+ reject2(signal.reason);
72571
+ };
72572
+ signal.addEventListener("abort", eventListener, { once: true });
72573
+ })]);
72574
+ }
72575
+ const result = await operation;
72576
+ resolve(result);
72577
+ this.emit("completed", result);
72578
+ } catch (error) {
72579
+ reject(error);
72580
+ this.emit("error", error);
72581
+ } finally {
72582
+ if (eventListener) {
72583
+ options.signal?.removeEventListener("abort", eventListener);
72584
+ }
72585
+ this.#runningTasks.delete(taskSymbol);
72586
+ queueMicrotask(() => {
72587
+ this.#next();
72588
+ });
72589
+ }
72590
+ }, options);
72591
+ this.emit("add");
72592
+ this.#tryToStartAnother();
72593
+ });
72594
+ }
72595
+ async addAll(functions2, options) {
72596
+ return Promise.all(functions2.map(async (function_) => this.add(function_, options)));
72597
+ }
72598
+ /**
72599
+ Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.)
72600
+ */
72601
+ start() {
72602
+ if (!this.#isPaused) {
72603
+ return this;
72604
+ }
72605
+ this.#isPaused = false;
72606
+ this.#processQueue();
72607
+ return this;
72608
+ }
72609
+ /**
72610
+ Put queue execution on hold.
72611
+ */
72612
+ pause() {
72613
+ this.#isPaused = true;
72614
+ }
72615
+ /**
72616
+ Clear the queue.
72617
+ */
72618
+ clear() {
72619
+ this.#queue = new this.#queueClass();
72620
+ this.#clearIntervalTimer();
72621
+ this.#updateRateLimitState();
72622
+ this.emit("empty");
72623
+ if (this.#pending === 0) {
72624
+ this.#clearTimeoutTimer();
72625
+ this.emit("idle");
72626
+ }
72627
+ this.emit("next");
72628
+ }
72629
+ /**
72630
+ Can be called multiple times. Useful if you for example add additional items at a later time.
72631
+
72632
+ @returns A promise that settles when the queue becomes empty.
72633
+ */
72634
+ async onEmpty() {
72635
+ if (this.#queue.size === 0) {
72636
+ return;
72637
+ }
72638
+ await this.#onEvent("empty");
72639
+ }
72640
+ /**
72641
+ @returns A promise that settles when the queue size is less than the given limit: `queue.size < limit`.
72642
+
72643
+ If you want to avoid having the queue grow beyond a certain size you can `await queue.onSizeLessThan()` before adding a new item.
72644
+
72645
+ Note that this only limits the number of items waiting to start. There could still be up to `concurrency` jobs already running that this call does not include in its calculation.
72646
+ */
72647
+ async onSizeLessThan(limit) {
72648
+ if (this.#queue.size < limit) {
72649
+ return;
72650
+ }
72651
+ await this.#onEvent("next", () => this.#queue.size < limit);
72652
+ }
72653
+ /**
72654
+ The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet.
72655
+
72656
+ @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`.
72657
+ */
72658
+ async onIdle() {
72659
+ if (this.#pending === 0 && this.#queue.size === 0) {
72660
+ return;
72661
+ }
72662
+ await this.#onEvent("idle");
72663
+ }
72664
+ /**
72665
+ The difference with `.onIdle` is that `.onPendingZero` only waits for currently running tasks to finish, ignoring queued tasks.
72666
+
72667
+ @returns A promise that settles when all currently running tasks have completed; `queue.pending === 0`.
72668
+ */
72669
+ async onPendingZero() {
72670
+ if (this.#pending === 0) {
72671
+ return;
72672
+ }
72673
+ await this.#onEvent("pendingZero");
72674
+ }
72675
+ /**
72676
+ @returns A promise that settles when the queue becomes rate-limited due to intervalCap.
72677
+ */
72678
+ async onRateLimit() {
72679
+ if (this.isRateLimited) {
72680
+ return;
72681
+ }
72682
+ await this.#onEvent("rateLimit");
72683
+ }
72684
+ /**
72685
+ @returns A promise that settles when the queue is no longer rate-limited.
72686
+ */
72687
+ async onRateLimitCleared() {
72688
+ if (!this.isRateLimited) {
72689
+ return;
72690
+ }
72691
+ await this.#onEvent("rateLimitCleared");
72692
+ }
72693
+ /**
72694
+ @returns A promise that rejects when any task in the queue errors.
72695
+
72696
+ Use with `Promise.race([queue.onError(), queue.onIdle()])` to fail fast on the first error while still resolving normally when the queue goes idle.
72697
+
72698
+ Important: The promise returned by `add()` still rejects. You must handle each `add()` promise (for example, `.catch(() => {})`) to avoid unhandled rejections.
72699
+
72700
+ @example
72701
+ ```
72702
+ import PQueue from 'p-queue';
72703
+
72704
+ const queue = new PQueue({concurrency: 2});
72705
+
72706
+ queue.add(() => fetchData(1)).catch(() => {});
72707
+ queue.add(() => fetchData(2)).catch(() => {});
72708
+ queue.add(() => fetchData(3)).catch(() => {});
72709
+
72710
+ // Stop processing on first error
72711
+ try {
72712
+ await Promise.race([
72713
+ queue.onError(),
72714
+ queue.onIdle()
72715
+ ]);
72716
+ } catch (error) {
72717
+ queue.pause(); // Stop processing remaining tasks
72718
+ console.error('Queue failed:', error);
72719
+ }
72720
+ ```
72721
+ */
72722
+ // eslint-disable-next-line @typescript-eslint/promise-function-async
72723
+ onError() {
72724
+ return new Promise((_resolve, reject) => {
72725
+ const handleError = (error) => {
72726
+ this.off("error", handleError);
72727
+ reject(error);
72728
+ };
72729
+ this.on("error", handleError);
72730
+ });
72731
+ }
72732
+ async #onEvent(event, filter2) {
72733
+ return new Promise((resolve) => {
72734
+ const listener2 = () => {
72735
+ if (filter2 && !filter2()) {
72736
+ return;
72737
+ }
72738
+ this.off(event, listener2);
72739
+ resolve();
72740
+ };
72741
+ this.on(event, listener2);
72742
+ });
72743
+ }
72744
+ /**
72745
+ Size of the queue, the number of queued items waiting to run.
72746
+ */
72747
+ get size() {
72748
+ return this.#queue.size;
72749
+ }
72750
+ /**
72751
+ Size of the queue, filtered by the given options.
72752
+
72753
+ For example, this can be used to find the number of items remaining in the queue with a specific priority level.
72754
+ */
72755
+ sizeBy(options) {
72756
+ return this.#queue.filter(options).length;
72757
+ }
72758
+ /**
72759
+ Number of running items (no longer in the queue).
72760
+ */
72761
+ get pending() {
72762
+ return this.#pending;
72763
+ }
72764
+ /**
72765
+ Whether the queue is currently paused.
72766
+ */
72767
+ get isPaused() {
72768
+ return this.#isPaused;
72769
+ }
72770
+ #setupRateLimitTracking() {
72771
+ if (this.#isIntervalIgnored) {
72772
+ return;
72773
+ }
72774
+ this.on("add", () => {
72775
+ if (this.#queue.size > 0) {
72776
+ this.#scheduleRateLimitUpdate();
72777
+ }
72778
+ });
72779
+ this.on("next", () => {
72780
+ this.#scheduleRateLimitUpdate();
72781
+ });
72782
+ }
72783
+ #scheduleRateLimitUpdate() {
72784
+ if (this.#isIntervalIgnored || this.#rateLimitFlushScheduled) {
72785
+ return;
72786
+ }
72787
+ this.#rateLimitFlushScheduled = true;
72788
+ queueMicrotask(() => {
72789
+ this.#rateLimitFlushScheduled = false;
72790
+ this.#updateRateLimitState();
72791
+ });
72792
+ }
72793
+ #rollbackIntervalConsumption() {
72794
+ if (this.#isIntervalIgnored) {
72795
+ return;
72796
+ }
72797
+ this.#rollbackIntervalSlot();
72798
+ this.#scheduleRateLimitUpdate();
72799
+ }
72800
+ #updateRateLimitState() {
72801
+ const previous = this.#rateLimitedInInterval;
72802
+ if (this.#isIntervalIgnored || this.#queue.size === 0) {
72803
+ if (previous) {
72804
+ this.#rateLimitedInInterval = false;
72805
+ this.emit("rateLimitCleared");
72806
+ }
72807
+ return;
72808
+ }
72809
+ let count2;
72810
+ if (this.#strict) {
72811
+ const now2 = Date.now();
72812
+ this.#cleanupStrictTicks(now2);
72813
+ count2 = this.#getActiveTicksCount();
72814
+ } else {
72815
+ count2 = this.#intervalCount;
72816
+ }
72817
+ const shouldBeRateLimited = count2 >= this.#intervalCap;
72818
+ if (shouldBeRateLimited !== previous) {
72819
+ this.#rateLimitedInInterval = shouldBeRateLimited;
72820
+ this.emit(shouldBeRateLimited ? "rateLimit" : "rateLimitCleared");
72821
+ }
72822
+ }
72823
+ /**
72824
+ Whether the queue is currently rate-limited due to intervalCap.
72825
+ */
72826
+ get isRateLimited() {
72827
+ return this.#rateLimitedInInterval;
72828
+ }
72829
+ /**
72830
+ Whether the queue is saturated. Returns `true` when:
72831
+ - All concurrency slots are occupied and tasks are waiting, OR
72832
+ - The queue is rate-limited and tasks are waiting
72833
+
72834
+ Useful for detecting backpressure and potential hanging tasks.
72835
+
72836
+ ```js
72837
+ import PQueue from 'p-queue';
72838
+
72839
+ const queue = new PQueue({concurrency: 2});
72840
+
72841
+ // Backpressure handling
72842
+ if (queue.isSaturated) {
72843
+ console.log('Queue is saturated, waiting for capacity...');
72844
+ await queue.onSizeLessThan(queue.concurrency);
72845
+ }
72846
+
72847
+ // Monitoring for stuck tasks
72848
+ setInterval(() => {
72849
+ if (queue.isSaturated) {
72850
+ console.warn(`Queue saturated: ${queue.pending} running, ${queue.size} waiting`);
72851
+ }
72852
+ }, 60000);
72853
+ ```
72854
+ */
72855
+ get isSaturated() {
72856
+ return this.#pending === this.#concurrency && this.#queue.size > 0 || this.isRateLimited && this.#queue.size > 0;
72857
+ }
72858
+ /**
72859
+ The tasks currently being executed. Each task includes its `id`, `priority`, `startTime`, and `timeout` (if set).
72860
+
72861
+ Returns an array of task info objects.
72862
+
72863
+ ```js
72864
+ import PQueue from 'p-queue';
72865
+
72866
+ const queue = new PQueue({concurrency: 2});
72867
+
72868
+ // Add tasks with IDs for better debugging
72869
+ queue.add(() => fetchUser(123), {id: 'user-123'});
72870
+ queue.add(() => fetchPosts(456), {id: 'posts-456', priority: 1});
72871
+
72872
+ // Check what's running
72873
+ console.log(queue.runningTasks);
72874
+ // => [{
72875
+ // id: 'user-123',
72876
+ // priority: 0,
72877
+ // startTime: 1759253001716,
72878
+ // timeout: undefined
72879
+ // }, {
72880
+ // id: 'posts-456',
72881
+ // priority: 1,
72882
+ // startTime: 1759253001916,
72883
+ // timeout: undefined
72884
+ // }]
72885
+ ```
72886
+ */
72887
+ get runningTasks() {
72888
+ return [...this.#runningTasks.values()].map((task) => ({ ...task }));
72889
+ }
72890
+ }
71939
72891
  function cleanSessionCache(sessionIdentifier2) {
71940
72892
  for (const storage of [sessionStorage, localStorage]) {
71941
72893
  const keys = Object.keys(storage);
@@ -74757,6 +75709,25 @@ Inferred class string: "${iconClasses}."`
74757
75709
  const STORE_VARIABLE_MAP = /* @__PURE__ */ new Map();
74758
75710
  const STORE_SEQUENCE_MAP = /* @__PURE__ */ new Map();
74759
75711
  const STORE_LATEST_VALUE_MAP = /* @__PURE__ */ new Map();
75712
+ const STORE_RECOVERY_IN_PROGRESS = /* @__PURE__ */ new Set();
75713
+ class PatchQueue {
75714
+ constructor() {
75715
+ this.queues = /* @__PURE__ */ new Map();
75716
+ }
75717
+ getQueue(storeUid) {
75718
+ let queue = this.queues.get(storeUid);
75719
+ if (!queue) {
75720
+ queue = new PQueue({ concurrency: 1 });
75721
+ this.queues.set(storeUid, queue);
75722
+ }
75723
+ return queue;
75724
+ }
75725
+ enqueue(storeUid, patches, sequenceNumber, applyFn) {
75726
+ const queue = this.getQueue(storeUid);
75727
+ queue.add(() => applyFn(storeUid, patches, sequenceNumber));
75728
+ }
75729
+ }
75730
+ const PATCH_QUEUE = new PatchQueue();
74760
75731
  const ROUTE_MATCHES_KEY = "__route_matches";
74761
75732
  function BackendStoreSync({ children }) {
74762
75733
  const { client: client2 } = React__namespace.useContext(websocketCtx);
@@ -74774,7 +75745,7 @@ Inferred class string: "${iconClasses}."`
74774
75745
  async ({ diff }) => {
74775
75746
  const extrasMap = /* @__PURE__ */ new Map();
74776
75747
  Array.from(diff.entries()).filter(
74777
- ([itemKey, value]) => !STORE_LATEST_VALUE_MAP.has(itemKey) || STORE_LATEST_VALUE_MAP.get(itemKey) !== value
75748
+ ([itemKey, value]) => !STORE_LATEST_VALUE_MAP.has(itemKey) || !isEqual$4(STORE_LATEST_VALUE_MAP.get(itemKey), value)
74778
75749
  ).forEach(([itemKey, value]) => {
74779
75750
  STORE_LATEST_VALUE_MAP.set(itemKey, value);
74780
75751
  const extras = STORE_EXTRAS_MAP.get(itemKey);
@@ -74810,9 +75781,42 @@ Inferred class string: "${iconClasses}."`
74810
75781
  ({ snapshot, set: set2 }) => async (storeUid, patches, sequenceNumber) => {
74811
75782
  const expectedSequence = STORE_SEQUENCE_MAP.get(storeUid) || 0;
74812
75783
  if (sequenceNumber !== expectedSequence + 1) {
75784
+ if (sequenceNumber <= expectedSequence) {
75785
+ return;
75786
+ }
74813
75787
  console.warn(
74814
- `Sequence number mismatch for store ${storeUid}. Expected: ${expectedSequence + 1}, Got: ${sequenceNumber}. Rejecting patch.`
75788
+ `Sequence number mismatch for store ${storeUid}. Expected: ${expectedSequence + 1}, Got: ${sequenceNumber}.`
74815
75789
  );
75790
+ if (!STORE_RECOVERY_IN_PROGRESS.has(storeUid)) {
75791
+ STORE_RECOVERY_IN_PROGRESS.add(storeUid);
75792
+ console.warn(`Fetching full state for store ${storeUid} to recover.`);
75793
+ try {
75794
+ const fullValue = await getStoreValue(storeUid);
75795
+ const variableUids2 = STORE_VARIABLE_MAP.get(storeUid);
75796
+ if (variableUids2) {
75797
+ for (const variableUid of variableUids2) {
75798
+ const directAtom = atomRegistry.get(variableUid);
75799
+ if (directAtom) {
75800
+ set2(directAtom, fullValue);
75801
+ continue;
75802
+ }
75803
+ const atomFamily2 = atomFamilyRegistry.get(variableUid);
75804
+ if (atomFamily2) {
75805
+ const familyMembers = atomFamilyMembersRegistry.get(atomFamily2);
75806
+ if (familyMembers) {
75807
+ for (const [, atomInstance] of familyMembers) {
75808
+ set2(atomInstance, fullValue);
75809
+ }
75810
+ }
75811
+ }
75812
+ }
75813
+ }
75814
+ } catch (e2) {
75815
+ console.error(`Failed to recover store ${storeUid} after sequence mismatch:`, e2);
75816
+ } finally {
75817
+ STORE_RECOVERY_IN_PROGRESS.delete(storeUid);
75818
+ }
75819
+ }
74816
75820
  return;
74817
75821
  }
74818
75822
  STORE_SEQUENCE_MAP.set(storeUid, sequenceNumber);
@@ -74887,7 +75891,7 @@ Inferred class string: "${iconClasses}."`
74887
75891
  STORE_LATEST_VALUE_MAP.set(message.store_uid, message.value);
74888
75892
  });
74889
75893
  const patchSub = client2.backendStorePatchMessages$().subscribe((message) => {
74890
- applyPatchesToAtoms(message.store_uid, message.patches, message.sequence_number);
75894
+ PATCH_QUEUE.enqueue(message.store_uid, message.patches, message.sequence_number, applyPatchesToAtoms);
74891
75895
  });
74892
75896
  return () => {
74893
75897
  valueSub.unsubscribe();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@darajs/core",
3
- "version": "1.26.3",
3
+ "version": "1.26.4",
4
4
  "description": "Dara Framework core",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -39,9 +39,9 @@
39
39
  "@babel/preset-env": "^7.23.0",
40
40
  "@babel/preset-react": "^7.22.15",
41
41
  "@babel/preset-typescript": "^7.23.0",
42
- "@darajs/eslint-config": "1.26.3",
43
- "@darajs/prettier-config": "1.26.3",
44
- "@darajs/stylelint-config": "1.26.3",
42
+ "@darajs/eslint-config": "1.26.4",
43
+ "@darajs/prettier-config": "1.26.4",
44
+ "@darajs/stylelint-config": "1.26.4",
45
45
  "@rollup/plugin-inject": "^4.0.4",
46
46
  "@testing-library/dom": "^9.3.0",
47
47
  "@testing-library/jest-dom": "^6.0.0",
@@ -75,10 +75,10 @@
75
75
  "whatwg-fetch": "^3.6.20"
76
76
  },
77
77
  "dependencies": {
78
- "@darajs/styled-components": "1.26.3",
79
- "@darajs/ui-components": "1.26.3",
80
- "@darajs/ui-notifications": "1.26.3",
81
- "@darajs/ui-utils": "1.26.3",
78
+ "@darajs/styled-components": "1.26.4",
79
+ "@darajs/ui-components": "1.26.4",
80
+ "@darajs/ui-notifications": "1.26.4",
81
+ "@darajs/ui-utils": "1.26.4",
82
82
  "@fortawesome/fontawesome-free": "~6.4.0",
83
83
  "@microsoft/fetch-event-source": "^2.0.1",
84
84
  "@recoiljs/refine": "^0.1.1",
@@ -92,6 +92,7 @@
92
92
  "lodash": "^4.17.21",
93
93
  "nanoid": "^3.3.0",
94
94
  "nprogress": "^0.2.0",
95
+ "p-queue": "^9.1.0",
95
96
  "polished": "^4.1.1",
96
97
  "query-string": "^7.1.1",
97
98
  "react": "^18.2.0",
@@ -118,5 +119,5 @@
118
119
  "engines": {
119
120
  "node": ">=20.19.0"
120
121
  },
121
- "gitHead": "e5aa4ed5e571bab428e48cb18d9599a7caec0b7c"
122
+ "gitHead": "e4b348bf9f0a52311803c1a02fef59df316f1ec2"
122
123
  }