cojson 0.20.0 → 0.20.1

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 (66) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +12 -0
  3. package/dist/PeerState.d.ts +6 -1
  4. package/dist/PeerState.d.ts.map +1 -1
  5. package/dist/PeerState.js +18 -3
  6. package/dist/PeerState.js.map +1 -1
  7. package/dist/coValueCore/coValueCore.d.ts +3 -2
  8. package/dist/coValueCore/coValueCore.d.ts.map +1 -1
  9. package/dist/coValueCore/coValueCore.js +13 -19
  10. package/dist/coValueCore/coValueCore.js.map +1 -1
  11. package/dist/coValues/coList.d.ts +1 -0
  12. package/dist/coValues/coList.d.ts.map +1 -1
  13. package/dist/coValues/coList.js +3 -0
  14. package/dist/coValues/coList.js.map +1 -1
  15. package/dist/config.d.ts +2 -2
  16. package/dist/config.d.ts.map +1 -1
  17. package/dist/config.js +4 -4
  18. package/dist/config.js.map +1 -1
  19. package/dist/exports.d.ts +3 -3
  20. package/dist/exports.d.ts.map +1 -1
  21. package/dist/exports.js +2 -2
  22. package/dist/exports.js.map +1 -1
  23. package/dist/queue/LinkedList.d.ts +9 -3
  24. package/dist/queue/LinkedList.d.ts.map +1 -1
  25. package/dist/queue/LinkedList.js +30 -1
  26. package/dist/queue/LinkedList.js.map +1 -1
  27. package/dist/queue/OutgoingLoadQueue.d.ts +95 -0
  28. package/dist/queue/OutgoingLoadQueue.d.ts.map +1 -0
  29. package/dist/queue/OutgoingLoadQueue.js +240 -0
  30. package/dist/queue/OutgoingLoadQueue.js.map +1 -0
  31. package/dist/sync.d.ts.map +1 -1
  32. package/dist/sync.js +22 -32
  33. package/dist/sync.js.map +1 -1
  34. package/dist/tests/LinkedList.test.js +90 -0
  35. package/dist/tests/LinkedList.test.js.map +1 -1
  36. package/dist/tests/OutgoingLoadQueue.test.d.ts +2 -0
  37. package/dist/tests/OutgoingLoadQueue.test.d.ts.map +1 -0
  38. package/dist/tests/OutgoingLoadQueue.test.js +814 -0
  39. package/dist/tests/OutgoingLoadQueue.test.js.map +1 -0
  40. package/dist/tests/sync.concurrentLoad.test.d.ts +2 -0
  41. package/dist/tests/sync.concurrentLoad.test.d.ts.map +1 -0
  42. package/dist/tests/sync.concurrentLoad.test.js +481 -0
  43. package/dist/tests/sync.concurrentLoad.test.js.map +1 -0
  44. package/dist/tests/sync.storage.test.js +1 -1
  45. package/dist/tests/testStorage.d.ts.map +1 -1
  46. package/dist/tests/testStorage.js +3 -1
  47. package/dist/tests/testStorage.js.map +1 -1
  48. package/dist/tests/testUtils.d.ts +1 -0
  49. package/dist/tests/testUtils.d.ts.map +1 -1
  50. package/dist/tests/testUtils.js +2 -1
  51. package/dist/tests/testUtils.js.map +1 -1
  52. package/package.json +4 -4
  53. package/src/PeerState.ts +26 -3
  54. package/src/coValueCore/coValueCore.ts +15 -19
  55. package/src/coValues/coList.ts +4 -0
  56. package/src/config.ts +4 -4
  57. package/src/exports.ts +2 -2
  58. package/src/queue/LinkedList.ts +34 -4
  59. package/src/queue/OutgoingLoadQueue.ts +307 -0
  60. package/src/sync.ts +27 -35
  61. package/src/tests/LinkedList.test.ts +111 -0
  62. package/src/tests/OutgoingLoadQueue.test.ts +1129 -0
  63. package/src/tests/sync.concurrentLoad.test.ts +650 -0
  64. package/src/tests/sync.storage.test.ts +1 -1
  65. package/src/tests/testStorage.ts +3 -1
  66. package/src/tests/testUtils.ts +3 -1
package/dist/config.js CHANGED
@@ -13,8 +13,9 @@ export function setMaxRecommendedTxSize(size) {
13
13
  }
14
14
  export const CO_VALUE_LOADING_CONFIG = {
15
15
  MAX_RETRIES: 1,
16
- TIMEOUT: 30000,
16
+ TIMEOUT: 60000,
17
17
  RETRY_DELAY: 3000,
18
+ MAX_IN_FLIGHT_LOADS_PER_PEER: 1000,
18
19
  };
19
20
  export function setCoValueLoadingMaxRetries(maxRetries) {
20
21
  CO_VALUE_LOADING_CONFIG.MAX_RETRIES = maxRetries;
@@ -43,12 +44,11 @@ export function setGarbageCollectorInterval(interval) {
43
44
  }
44
45
  export const WEBSOCKET_CONFIG = {
45
46
  MAX_OUTGOING_MESSAGES_CHUNK_BYTES: 25000,
46
- OUTGOING_MESSAGES_CHUNK_DELAY: 5,
47
47
  };
48
48
  export function setMaxOutgoingMessagesChunkBytes(bytes) {
49
49
  WEBSOCKET_CONFIG.MAX_OUTGOING_MESSAGES_CHUNK_BYTES = bytes;
50
50
  }
51
- export function setOutgoingMessagesChunkDelay(delay) {
52
- WEBSOCKET_CONFIG.OUTGOING_MESSAGES_CHUNK_DELAY = delay;
51
+ export function setMaxInFlightLoadsPerPeer(limit) {
52
+ CO_VALUE_LOADING_CONFIG.MAX_IN_FLIGHT_LOADS_PER_PEER = limit;
53
53
  }
54
54
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,uBAAuB,EAAE,GAAG,GAAG,IAAI;CACpC,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,kBAAkB,CAAC,uBAAuB,GAAG,IAAI,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,KAAM;IACf,WAAW,EAAE,IAAI;CAClB,CAAC;AAEF,MAAM,UAAU,2BAA2B,CAAC,UAAkB;IAC5D,uBAAuB,CAAC,WAAW,GAAG,UAAU,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,uBAAuB,CAAC,OAAO,GAAG,OAAO,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAa;IACvD,uBAAuB,CAAC,WAAW,GAAG,KAAK,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,6BAA6B,EAAE,EAAE;CAClC,CAAC;AAEF,MAAM,UAAU,6BAA6B,CAAC,MAAc;IAC1D,qBAAqB,CAAC,6BAA6B,GAAG,MAAM,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,OAAO,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,aAAa;IACtC,QAAQ,EAAE,IAAI,GAAG,EAAE,GAAG,CAAC,EAAE,YAAY;CACtC,CAAC;AAEF,MAAM,UAAU,yBAAyB,CAAC,MAAc;IACtD,wBAAwB,CAAC,OAAO,GAAG,MAAM,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,QAAgB;IAC1D,wBAAwB,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,iCAAiC,EAAE,KAAM;IACzC,6BAA6B,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,UAAU,gCAAgC,CAAC,KAAa;IAC5D,gBAAgB,CAAC,iCAAiC,GAAG,KAAK,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAAa;IACzD,gBAAgB,CAAC,6BAA6B,GAAG,KAAK,CAAC;AACzD,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,uBAAuB,EAAE,GAAG,GAAG,IAAI;CACpC,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,kBAAkB,CAAC,uBAAuB,GAAG,IAAI,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,KAAM;IACf,WAAW,EAAE,IAAI;IACjB,4BAA4B,EAAE,IAAI;CACnC,CAAC;AAEF,MAAM,UAAU,2BAA2B,CAAC,UAAkB;IAC5D,uBAAuB,CAAC,WAAW,GAAG,UAAU,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,uBAAuB,CAAC,OAAO,GAAG,OAAO,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAa;IACvD,uBAAuB,CAAC,WAAW,GAAG,KAAK,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,6BAA6B,EAAE,EAAE;CAClC,CAAC;AAEF,MAAM,UAAU,6BAA6B,CAAC,MAAc;IAC1D,qBAAqB,CAAC,6BAA6B,GAAG,MAAM,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,OAAO,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,aAAa;IACtC,QAAQ,EAAE,IAAI,GAAG,EAAE,GAAG,CAAC,EAAE,YAAY;CACtC,CAAC;AAEF,MAAM,UAAU,yBAAyB,CAAC,MAAc;IACtD,wBAAwB,CAAC,OAAO,GAAG,MAAM,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,QAAgB;IAC1D,wBAAwB,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,iCAAiC,EAAE,KAAM;CAC1C,CAAC;AAEF,MAAM,UAAU,gCAAgC,CAAC,KAAa;IAC5D,gBAAgB,CAAC,iCAAiC,GAAG,KAAK,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAa;IACtD,uBAAuB,CAAC,4BAA4B,GAAG,KAAK,CAAC;AAC/D,CAAC"}
package/dist/exports.d.ts CHANGED
@@ -33,7 +33,7 @@ import { setSyncStateTrackingBatchDelay } from "./UnsyncedCoValuesTracker.js";
33
33
  import { emptyKnownState } from "./knownState.js";
34
34
  import { getContentMessageSize, getTransactionSize, knownStateFromContent } from "./coValueContentMessage.js";
35
35
  import { getDependedOnCoValuesFromRawData } from "./coValueCore/utils.js";
36
- import { setCoValueLoadingMaxRetries, setCoValueLoadingRetryDelay, setCoValueLoadingTimeout, setIncomingMessagesTimeBudget, setMaxOutgoingMessagesChunkBytes, setOutgoingMessagesChunkDelay, setMaxRecommendedTxSize } from "./config.js";
36
+ import { setCoValueLoadingMaxRetries, setCoValueLoadingRetryDelay, setCoValueLoadingTimeout, setIncomingMessagesTimeBudget, setMaxInFlightLoadsPerPeer, setMaxOutgoingMessagesChunkBytes, setMaxRecommendedTxSize } from "./config.js";
37
37
  import { LogLevel, logger } from "./logger.js";
38
38
  import { getPriorityFromHeader } from "./priority.js";
39
39
  import { getDependedOnCoValues } from "./storage/syncUtils.js";
@@ -69,6 +69,7 @@ export declare const cojsonInternals: {
69
69
  MAX_RETRIES: number;
70
70
  TIMEOUT: number;
71
71
  RETRY_DELAY: number;
72
+ MAX_IN_FLIGHT_LOADS_PER_PEER: number;
72
73
  };
73
74
  CO_VALUE_PRIORITY: {
74
75
  readonly HIGH: 0;
@@ -92,10 +93,9 @@ export declare const cojsonInternals: {
92
93
  canBeBranched: typeof canBeBranched;
93
94
  WEBSOCKET_CONFIG: {
94
95
  MAX_OUTGOING_MESSAGES_CHUNK_BYTES: number;
95
- OUTGOING_MESSAGES_CHUNK_DELAY: number;
96
96
  };
97
97
  setMaxOutgoingMessagesChunkBytes: typeof setMaxOutgoingMessagesChunkBytes;
98
- setOutgoingMessagesChunkDelay: typeof setOutgoingMessagesChunkDelay;
98
+ setMaxInFlightLoadsPerPeer: typeof setMaxInFlightLoadsPerPeer;
99
99
  };
100
100
  export { LocalNode, RawGroup, Role, EVERYONE, Everyone, RawCoMap, RawCoList, RawCoStream, RawBinaryCoStream, RawCoValue, RawCoID, CoID, AnyRawCoValue, RawAccount, RawAccountID, ControlledAccount, AccountMeta, RawAccountMigration, RawProfile as Profile, SessionID, Media, CoValueCore, ControlledAgent, JsonObject, JsonValue, Peer, BinaryStreamInfo, BinaryCoStreamMeta, AgentID, AgentSecret, InviteSecret, CryptoProvider, SyncMessage, isRawCoID, emptyKnownState, RawCoPlainText, stringifyOpID, logger, LogLevel, base64URLtoBytes, bytesToBase64url, hwrServerPeerSelector, isAccountRole, };
101
101
  export type { Value, DisconnectedError, CoValueUniqueness, Stringified, CoStreamItem, BinaryStreamItem, BinaryStreamStart, OpID, AccountRole, AvailableCoValueCore, PeerState, SyncWhen, CoValueHeader, };
@@ -1 +1 @@
1
- {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"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"}
package/dist/exports.js CHANGED
@@ -21,7 +21,7 @@ import { setSyncStateTrackingBatchDelay } from "./UnsyncedCoValuesTracker.js";
21
21
  import { emptyKnownState } from "./knownState.js";
22
22
  import { getContentMessageSize, getTransactionSize, knownStateFromContent, } from "./coValueContentMessage.js";
23
23
  import { getDependedOnCoValuesFromRawData } from "./coValueCore/utils.js";
24
- import { CO_VALUE_LOADING_CONFIG, TRANSACTION_CONFIG, WEBSOCKET_CONFIG, setCoValueLoadingMaxRetries, setCoValueLoadingRetryDelay, setCoValueLoadingTimeout, setIncomingMessagesTimeBudget, setMaxOutgoingMessagesChunkBytes, setOutgoingMessagesChunkDelay, setMaxRecommendedTxSize, } from "./config.js";
24
+ import { CO_VALUE_LOADING_CONFIG, TRANSACTION_CONFIG, WEBSOCKET_CONFIG, setCoValueLoadingMaxRetries, setCoValueLoadingRetryDelay, setCoValueLoadingTimeout, setIncomingMessagesTimeBudget, setMaxInFlightLoadsPerPeer, setMaxOutgoingMessagesChunkBytes, setMaxRecommendedTxSize, } from "./config.js";
25
25
  import { LogLevel, logger } from "./logger.js";
26
26
  import { CO_VALUE_PRIORITY, getPriorityFromHeader } from "./priority.js";
27
27
  import { getDependedOnCoValues } from "./storage/syncUtils.js";
@@ -68,7 +68,7 @@ export const cojsonInternals = {
68
68
  canBeBranched,
69
69
  WEBSOCKET_CONFIG,
70
70
  setMaxOutgoingMessagesChunkBytes,
71
- setOutgoingMessagesChunkDelay,
71
+ setMaxInFlightLoadsPerPeer,
72
72
  };
73
73
  export { LocalNode, RawGroup, EVERYONE, RawCoMap, RawCoList, RawCoStream, RawBinaryCoStream, RawAccount, ControlledAccount, RawProfile as Profile, CoValueCore, ControlledAgent, CryptoProvider, isRawCoID, emptyKnownState, RawCoPlainText, stringifyOpID, logger, LogLevel, base64URLtoBytes, bytesToBase64url, hwrServerPeerSelector, isAccountRole, };
74
74
  export * from "./storage/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"exports.js","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exports.js","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"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"}
@@ -6,8 +6,9 @@ type Tuple<T, N extends number, A extends unknown[] = []> = A extends {
6
6
  length: N;
7
7
  } ? A : Tuple<T, N, [...A, T]>;
8
8
  export type QueueTuple = Tuple<LinkedList<SyncMessage>, 3>;
9
- type LinkedListNode<T> = {
9
+ export type LinkedListNode<T> = {
10
10
  value: T;
11
+ prev: LinkedListNode<T> | undefined;
11
12
  next: LinkedListNode<T> | undefined;
12
13
  };
13
14
  /**
@@ -20,8 +21,13 @@ export declare class LinkedList<T> {
20
21
  head: LinkedListNode<T> | undefined;
21
22
  tail: LinkedListNode<T> | undefined;
22
23
  length: number;
23
- push(value: T): void;
24
+ push(value: T): LinkedListNode<T>;
24
25
  shift(): T | undefined;
26
+ /**
27
+ * Remove a specific node from the list in O(1) time.
28
+ * The node must be a valid node that was returned by push().
29
+ */
30
+ remove(node: LinkedListNode<T>): void;
25
31
  isEmpty(): boolean;
26
32
  }
27
33
  declare class QueueMeter {
@@ -32,6 +38,6 @@ declare class QueueMeter {
32
38
  pull(): void;
33
39
  push(): void;
34
40
  }
35
- export declare function meteredList<T>(type: "incoming" | "outgoing" | "storage-streaming", attrs?: Record<string, string | number>): LinkedList<T>;
41
+ export declare function meteredList<T>(type: "incoming" | "outgoing" | "storage-streaming" | "load-requests-queue", attrs?: Record<string, string | number>): LinkedList<T>;
36
42
  export {};
37
43
  //# sourceMappingURL=LinkedList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LinkedList.d.ts","sourceRoot":"","sources":["../../src/queue/LinkedList.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS;IACpE,MAAM,EAAE,CAAC,CAAC;CACX,GACG,CAAC,GACD,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3B,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3D,KAAK,cAAc,CAAC,CAAC,IAAI;IACvB,KAAK,EAAE,CAAC,CAAC;IACT,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CACrC,CAAC;AACF;;;GAGG;AAEH,qBAAa,UAAU,CAAC,CAAC;IACX,OAAO,CAAC,KAAK,CAAC;gBAAN,KAAK,CAAC,EAAE,UAAU,YAAA;IAEtC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAa;IAChD,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAa;IAChD,MAAM,SAAK;IAEX,IAAI,CAAC,KAAK,EAAE,CAAC;IAiBb,KAAK;IAoBL,OAAO;CAGR;AACD,cAAM,UAAU;IAMZ,OAAO,CAAC,KAAK,CAAC;IALhB,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,WAAW,CAAU;gBAG3B,MAAM,EAAE,MAAM,EACN,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,YAAA;IA0B1C,IAAI;IAIJ,IAAI;CAGZ;AACD,wBAAgB,WAAW,CAAC,CAAC,EAC3B,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,mBAAmB,EACnD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,iBAGxC"}
1
+ {"version":3,"file":"LinkedList.d.ts","sourceRoot":"","sources":["../../src/queue/LinkedList.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS;IACpE,MAAM,EAAE,CAAC,CAAC;CACX,GACG,CAAC,GACD,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3B,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3D,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC9B,KAAK,EAAE,CAAC,CAAC;IACT,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IACpC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CACrC,CAAC;AACF;;;GAGG;AAEH,qBAAa,UAAU,CAAC,CAAC;IACX,OAAO,CAAC,KAAK,CAAC;gBAAN,KAAK,CAAC,EAAE,UAAU,YAAA;IAEtC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAa;IAChD,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAa;IAChD,MAAM,SAAK;IAEX,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IAmBjC,KAAK;IAsBL;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAqBrC,OAAO;CAGR;AACD,cAAM,UAAU;IAMZ,OAAO,CAAC,KAAK,CAAC;IALhB,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,WAAW,CAAU;gBAG3B,MAAM,EAAE,MAAM,EACN,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,YAAA;IA0B1C,IAAI;IAIJ,IAAI;CAGZ;AACD,wBAAgB,WAAW,CAAC,CAAC,EAC3B,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,mBAAmB,GAAG,qBAAqB,EAC3E,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,iBAGxC"}
@@ -11,12 +11,13 @@ export class LinkedList {
11
11
  this.length = 0;
12
12
  }
13
13
  push(value) {
14
- const node = { value, next: undefined };
14
+ const node = { value, prev: undefined, next: undefined };
15
15
  if (this.head === undefined) {
16
16
  this.head = node;
17
17
  this.tail = node;
18
18
  }
19
19
  else if (this.tail) {
20
+ node.prev = this.tail;
20
21
  this.tail.next = node;
21
22
  this.tail = node;
22
23
  }
@@ -25,6 +26,7 @@ export class LinkedList {
25
26
  }
26
27
  this.length++;
27
28
  this.meter?.push();
29
+ return node;
28
30
  }
29
31
  shift() {
30
32
  if (!this.head) {
@@ -37,10 +39,37 @@ export class LinkedList {
37
39
  if (this.head === undefined) {
38
40
  this.tail = undefined;
39
41
  }
42
+ else {
43
+ this.head.prev = undefined;
44
+ }
40
45
  this.length--;
41
46
  this.meter?.pull();
42
47
  return value;
43
48
  }
49
+ /**
50
+ * Remove a specific node from the list in O(1) time.
51
+ * The node must be a valid node that was returned by push().
52
+ */
53
+ remove(node) {
54
+ if (node.prev) {
55
+ node.prev.next = node.next;
56
+ }
57
+ else {
58
+ // Node is the head
59
+ this.head = node.next;
60
+ }
61
+ if (node.next) {
62
+ node.next.prev = node.prev;
63
+ }
64
+ else {
65
+ // Node is the tail
66
+ this.tail = node.prev;
67
+ }
68
+ node.prev = undefined;
69
+ node.next = undefined;
70
+ this.length--;
71
+ this.meter?.pull();
72
+ }
44
73
  isEmpty() {
45
74
  return this.head === undefined;
46
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LinkedList.js","sourceRoot":"","sources":["../../src/queue/LinkedList.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LinkedList.js","sourceRoot":"","sources":["../../src/queue/LinkedList.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import { CoValueCore } from "../exports.js";
2
+ import type { PeerID } from "../sync.js";
3
+ /**
4
+ * Mode for enqueuing load requests:
5
+ * - "high-priority" (default): high priority, processed in order
6
+ * - "low-priority": processed after all high priority requests
7
+ * - "immediate": bypasses the queue entirely, executes immediately
8
+ */
9
+ export type LoadMode = "low-priority" | "immediate" | "high-priority";
10
+ /**
11
+ * A queue that manages outgoing load requests with throttling.
12
+ *
13
+ * Features:
14
+ * - Limits concurrent in-flight load requests per peer
15
+ * - FIFO order for pending requests
16
+ * - O(1) enqueue and dequeue operations using LinkedList
17
+ * - Manages timeouts for in-flight loads with a single timer
18
+ */
19
+ export declare class OutgoingLoadQueue {
20
+ private peerId;
21
+ private inFlightLoads;
22
+ private highPriorityPending;
23
+ private lowPriorityPending;
24
+ /**
25
+ * Tracks nodes in the low-priority queue by CoValue ID for O(1) upgrade lookup.
26
+ */
27
+ private lowPriorityNodes;
28
+ /**
29
+ * Tracks nodes in the high-priority queue by CoValue ID for O(1) immediate mode lookup.
30
+ */
31
+ private highPriorityNodes;
32
+ private timeoutHandle;
33
+ constructor(peerId: PeerID);
34
+ /**
35
+ * Check if we can send another load request.
36
+ */
37
+ private canSend;
38
+ /**
39
+ * Track that a load request has been sent.
40
+ */
41
+ private trackSent;
42
+ /**
43
+ * Schedule a timeout check if not already scheduled.
44
+ * Uses a single timer to check all in-flight loads.
45
+ */
46
+ private scheduleTimeoutCheck;
47
+ /**
48
+ * Check all in-flight loads for timeouts and handle them.
49
+ */
50
+ private checkTimeouts;
51
+ trackUpdate(coValue: CoValueCore): void;
52
+ /**
53
+ * Track that a load request has completed.
54
+ * Triggers processing of pending requests.
55
+ */
56
+ trackComplete(coValue: CoValueCore): void;
57
+ /**
58
+ * Enqueue a load request.
59
+ * Immediately processes the queue to send requests if capacity is available.
60
+ * Skips CoValues that are already in-flight or pending.
61
+ *
62
+ * @param coValue - The CoValue to load
63
+ * @param sendCallback - Callback to send the request when ready
64
+ * @param mode - Optional mode: "low-priority" for background loads, "immediate" to bypass queue
65
+ */
66
+ enqueue(value: CoValueCore, sendCallback: () => void, mode?: LoadMode): void;
67
+ private processing;
68
+ /**
69
+ * Process all pending load requests while capacity is available.
70
+ * High-priority requests are processed first, then low-priority.
71
+ */
72
+ private processQueue;
73
+ /**
74
+ * Clear all state. Called on disconnect.
75
+ * Clears the timeout and all pending/in-flight loads.
76
+ */
77
+ clear(): void;
78
+ /**
79
+ * Get the number of in-flight loads (for testing/debugging).
80
+ */
81
+ get inFlightCount(): number;
82
+ /**
83
+ * Get the number of pending loads (for testing/debugging).
84
+ */
85
+ get pendingCount(): number;
86
+ /**
87
+ * Get the number of high-priority pending loads (for testing/debugging).
88
+ */
89
+ get highPriorityPendingCount(): number;
90
+ /**
91
+ * Get the number of low-priority pending loads (for testing/debugging).
92
+ */
93
+ get lowPriorityPendingCount(): number;
94
+ }
95
+ //# sourceMappingURL=OutgoingLoadQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OutgoingLoadQueue.d.ts","sourceRoot":"","sources":["../../src/queue/OutgoingLoadQueue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAQzC;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,cAAc,GAAG,WAAW,GAAG,eAAe,CAAC;AAEtE;;;;;;;;GAQG;AACH,qBAAa,iBAAiB;IAsBhB,OAAO,CAAC,MAAM;IArB1B,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,mBAAmB,CAGzB;IACF,OAAO,CAAC,kBAAkB,CAGxB;IACF;;OAEG;IACH,OAAO,CAAC,gBAAgB,CACZ;IACZ;;OAEG;IACH,OAAO,CAAC,iBAAiB,CACb;IACZ,OAAO,CAAC,aAAa,CAA8C;gBAE/C,MAAM,EAAE,MAAM;IAElC;;OAEG;IACH,OAAO,CAAC,OAAO;IAOf;;OAEG;IACH,OAAO,CAAC,SAAS;IAMjB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAyCrB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IASvC;;;OAGG;IACH,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAczC;;;;;;;;OAQG;IACH,OAAO,CACL,KAAK,EAAE,WAAW,EAClB,YAAY,EAAE,MAAM,IAAI,EACxB,IAAI,GAAE,QAA0B,GAC/B,IAAI;IAsDP,OAAO,CAAC,UAAU,CAAS;IAC3B;;;OAGG;IACH,OAAO,CAAC,YAAY;IAiCpB;;;OAGG;IACH,KAAK,IAAI,IAAI;IAYb;;OAEG;IACH,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED;;OAEG;IACH,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;OAEG;IACH,IAAI,wBAAwB,IAAI,MAAM,CAErC;IAED;;OAEG;IACH,IAAI,uBAAuB,IAAI,MAAM,CAEpC;CACF"}
@@ -0,0 +1,240 @@
1
+ import { CO_VALUE_LOADING_CONFIG } from "../config.js";
2
+ import { logger } from "../logger.js";
3
+ import { LinkedList, meteredList } from "./LinkedList.js";
4
+ /**
5
+ * A queue that manages outgoing load requests with throttling.
6
+ *
7
+ * Features:
8
+ * - Limits concurrent in-flight load requests per peer
9
+ * - FIFO order for pending requests
10
+ * - O(1) enqueue and dequeue operations using LinkedList
11
+ * - Manages timeouts for in-flight loads with a single timer
12
+ */
13
+ export class OutgoingLoadQueue {
14
+ constructor(peerId) {
15
+ this.peerId = peerId;
16
+ this.inFlightLoads = new Map();
17
+ this.highPriorityPending = meteredList("load-requests-queue", { priority: "high" });
18
+ this.lowPriorityPending = meteredList("load-requests-queue", { priority: "low" });
19
+ /**
20
+ * Tracks nodes in the low-priority queue by CoValue ID for O(1) upgrade lookup.
21
+ */
22
+ this.lowPriorityNodes = new Map();
23
+ /**
24
+ * Tracks nodes in the high-priority queue by CoValue ID for O(1) immediate mode lookup.
25
+ */
26
+ this.highPriorityNodes = new Map();
27
+ this.timeoutHandle = null;
28
+ this.processing = false;
29
+ }
30
+ /**
31
+ * Check if we can send another load request.
32
+ */
33
+ canSend() {
34
+ return (this.inFlightLoads.size <
35
+ CO_VALUE_LOADING_CONFIG.MAX_IN_FLIGHT_LOADS_PER_PEER);
36
+ }
37
+ /**
38
+ * Track that a load request has been sent.
39
+ */
40
+ trackSent(coValue) {
41
+ const now = performance.now();
42
+ this.inFlightLoads.set(coValue, now);
43
+ this.scheduleTimeoutCheck(CO_VALUE_LOADING_CONFIG.TIMEOUT);
44
+ }
45
+ /**
46
+ * Schedule a timeout check if not already scheduled.
47
+ * Uses a single timer to check all in-flight loads.
48
+ */
49
+ scheduleTimeoutCheck(nextTimeout) {
50
+ if (this.timeoutHandle !== null) {
51
+ return;
52
+ }
53
+ this.timeoutHandle = setTimeout(() => {
54
+ this.timeoutHandle = null;
55
+ this.checkTimeouts();
56
+ }, nextTimeout);
57
+ }
58
+ /**
59
+ * Check all in-flight loads for timeouts and handle them.
60
+ */
61
+ checkTimeouts() {
62
+ const now = performance.now();
63
+ let nextTimeout;
64
+ for (const [coValue, sentAt] of this.inFlightLoads.entries()) {
65
+ const timeout = sentAt + CO_VALUE_LOADING_CONFIG.TIMEOUT;
66
+ if (now >= timeout) {
67
+ if (!coValue.isAvailable()) {
68
+ logger.warn("Load request timed out", {
69
+ id: coValue.id,
70
+ peerId: this.peerId,
71
+ });
72
+ coValue.markNotFoundInPeer(this.peerId);
73
+ }
74
+ else if (coValue.isStreaming()) {
75
+ logger.warn("Content streaming is taking more than " +
76
+ CO_VALUE_LOADING_CONFIG.TIMEOUT / 1000 +
77
+ "s", {
78
+ id: coValue.id,
79
+ peerId: this.peerId,
80
+ knownState: coValue.knownState().sessions,
81
+ streamingTarget: coValue.knownStateWithStreaming().sessions,
82
+ });
83
+ }
84
+ this.inFlightLoads.delete(coValue);
85
+ this.processQueue();
86
+ }
87
+ else {
88
+ nextTimeout = Math.min(nextTimeout ?? Infinity, timeout - now);
89
+ }
90
+ }
91
+ // Reschedule if there are still in-flight loads
92
+ if (nextTimeout) {
93
+ this.scheduleTimeoutCheck(nextTimeout);
94
+ }
95
+ }
96
+ trackUpdate(coValue) {
97
+ if (!this.inFlightLoads.has(coValue)) {
98
+ return;
99
+ }
100
+ // Refresh the timeout for the in-flight load
101
+ this.inFlightLoads.set(coValue, performance.now());
102
+ }
103
+ /**
104
+ * Track that a load request has completed.
105
+ * Triggers processing of pending requests.
106
+ */
107
+ trackComplete(coValue) {
108
+ if (!this.inFlightLoads.has(coValue)) {
109
+ return;
110
+ }
111
+ if (coValue.isStreaming()) {
112
+ // wait for the next chunk
113
+ return;
114
+ }
115
+ this.inFlightLoads.delete(coValue);
116
+ this.processQueue();
117
+ }
118
+ /**
119
+ * Enqueue a load request.
120
+ * Immediately processes the queue to send requests if capacity is available.
121
+ * Skips CoValues that are already in-flight or pending.
122
+ *
123
+ * @param coValue - The CoValue to load
124
+ * @param sendCallback - Callback to send the request when ready
125
+ * @param mode - Optional mode: "low-priority" for background loads, "immediate" to bypass queue
126
+ */
127
+ enqueue(value, sendCallback, mode = "high-priority") {
128
+ if (this.inFlightLoads.has(value)) {
129
+ return;
130
+ }
131
+ const lowPriorityNode = this.lowPriorityNodes.get(value.id);
132
+ const highPriorityNode = this.highPriorityNodes.get(value.id);
133
+ switch (mode) {
134
+ case "immediate":
135
+ // Upgrade any low-priority or high-priority requests to immediate priority
136
+ if (lowPriorityNode) {
137
+ this.lowPriorityPending.remove(lowPriorityNode);
138
+ this.lowPriorityNodes.delete(value.id);
139
+ }
140
+ if (highPriorityNode) {
141
+ this.highPriorityPending.remove(highPriorityNode);
142
+ this.highPriorityNodes.delete(value.id);
143
+ }
144
+ this.trackSent(value);
145
+ sendCallback();
146
+ break;
147
+ case "high-priority":
148
+ if (highPriorityNode) {
149
+ return;
150
+ }
151
+ // Upgrade any low-priority requests to high-priority
152
+ if (lowPriorityNode) {
153
+ this.lowPriorityPending.remove(lowPriorityNode);
154
+ this.lowPriorityNodes.delete(value.id);
155
+ }
156
+ this.highPriorityNodes.set(value.id, this.highPriorityPending.push({ value, sendCallback }));
157
+ this.processQueue();
158
+ break;
159
+ case "low-priority":
160
+ if (lowPriorityNode || highPriorityNode) {
161
+ return;
162
+ }
163
+ this.lowPriorityNodes.set(value.id, this.lowPriorityPending.push({ value, sendCallback }));
164
+ this.processQueue();
165
+ break;
166
+ }
167
+ }
168
+ /**
169
+ * Process all pending load requests while capacity is available.
170
+ * High-priority requests are processed first, then low-priority.
171
+ */
172
+ processQueue() {
173
+ if (this.processing || !this.canSend()) {
174
+ return;
175
+ }
176
+ this.processing = true;
177
+ while (this.canSend()) {
178
+ // Try high-priority first
179
+ let next = this.highPriorityPending.shift();
180
+ if (next) {
181
+ // Remove from the tracking map since we're processing it
182
+ this.highPriorityNodes.delete(next.value.id);
183
+ }
184
+ else {
185
+ // Fall back to low-priority if high-priority is empty
186
+ next = this.lowPriorityPending.shift();
187
+ if (next) {
188
+ // Remove from the tracking map since we're processing it
189
+ this.lowPriorityNodes.delete(next.value.id);
190
+ }
191
+ }
192
+ if (!next) {
193
+ break;
194
+ }
195
+ this.trackSent(next.value);
196
+ next.sendCallback();
197
+ }
198
+ this.processing = false;
199
+ }
200
+ /**
201
+ * Clear all state. Called on disconnect.
202
+ * Clears the timeout and all pending/in-flight loads.
203
+ */
204
+ clear() {
205
+ if (this.timeoutHandle !== null) {
206
+ clearTimeout(this.timeoutHandle);
207
+ this.timeoutHandle = null;
208
+ }
209
+ this.inFlightLoads.clear();
210
+ this.highPriorityPending = new LinkedList();
211
+ this.lowPriorityPending = new LinkedList();
212
+ this.highPriorityNodes.clear();
213
+ this.lowPriorityNodes.clear();
214
+ }
215
+ /**
216
+ * Get the number of in-flight loads (for testing/debugging).
217
+ */
218
+ get inFlightCount() {
219
+ return this.inFlightLoads.size;
220
+ }
221
+ /**
222
+ * Get the number of pending loads (for testing/debugging).
223
+ */
224
+ get pendingCount() {
225
+ return this.highPriorityPending.length + this.lowPriorityPending.length;
226
+ }
227
+ /**
228
+ * Get the number of high-priority pending loads (for testing/debugging).
229
+ */
230
+ get highPriorityPendingCount() {
231
+ return this.highPriorityPending.length;
232
+ }
233
+ /**
234
+ * Get the number of low-priority pending loads (for testing/debugging).
235
+ */
236
+ get lowPriorityPendingCount() {
237
+ return this.lowPriorityPending.length;
238
+ }
239
+ }
240
+ //# sourceMappingURL=OutgoingLoadQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OutgoingLoadQueue.js","sourceRoot":"","sources":["../../src/queue/OutgoingLoadQueue.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}