snapreq 0.0.13 → 0.0.15

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/README.md CHANGED
@@ -167,6 +167,10 @@ connection.sendMessage({text: "hi"})
167
167
 
168
168
  Optional adapters: `networkMonitor` (gate reconnects on online state), `sessionStore` (persist the session id across reloads) and `deserialize` (a `(value) => value` transform applied inside `response.json()` so an app can re-hydrate its own wire format).
169
169
 
170
+ Session resumption uses only an ID retained from a previous connection or restored from `sessionStore`, never the ID just assigned to a fresh socket. This remains true when the socket's open event and first session frame arrive together. Every `connect()` caller waits for session readiness: on reconnect, the new socket's establishment frame alone does not release callers or queued subscriptions before `session-resumed` or `session-gone` arrives.
171
+
172
+ If the socket closes before session readiness, every caller waiting on that readiness generation rejects. A later connection has its own readiness outcome and is not poisoned by the earlier failure.
173
+
170
174
  ## Hermes Compose development
171
175
 
172
176
  The repository includes a task-isolated Node 24 development environment for
@@ -58,8 +58,8 @@ export default class SnapReqWebSocketClient {
58
58
  _sessionReadyPromise: Promise<void> | null;
59
59
  /** @type {(() => void) | null} */
60
60
  _resolveSessionReady: (() => void) | null;
61
- /** @type {unknown | null} */
62
- _sessionReadyError: unknown | null;
61
+ /** @type {((error: unknown) => void) | null} */
62
+ _rejectSessionReady: ((error: unknown) => void) | null;
63
63
  /** @type {{get: () => string | null | undefined | Promise<string | null | undefined>, set: (sessionId: string) => void | Promise<void>, clear: () => void | Promise<void>} | undefined} */
64
64
  _sessionStore: {
65
65
  get: () => string | null | undefined | Promise<string | null | undefined>;
@@ -85,6 +85,10 @@ export default class SnapReqWebSocketClient {
85
85
  _connectWaiters: number;
86
86
  /** @type {WeakSet<object>} - Sockets whose terminal lifecycle has already been processed. */
87
87
  _closedSockets: WeakSet<object>;
88
+ /** @type {WeakSet<object>} - Sockets closed through the client's explicit shutdown API. */
89
+ _clientClosingSockets: WeakSet<object>;
90
+ /** @type {Set<WebSocket>} - Failed sockets still waiting for their terminal close event. */
91
+ _closingSockets: Set<WebSocket>;
88
92
  socket: WebSocket;
89
93
  connectPromise: Promise<any>;
90
94
  /** @type {Map<string, {reject: (error: unknown) => void, resolve: (response: SnapReqWebSocketResponse) => void}>} */
@@ -244,6 +248,12 @@ export default class SnapReqWebSocketClient {
244
248
  waitForOnline?: boolean;
245
249
  resetReconnectState?: boolean;
246
250
  }): Promise<void>;
251
+ /**
252
+ * Starts closing a socket when needed and waits for its terminal event.
253
+ * @param {WebSocket} socket - Socket to close.
254
+ * @returns {Promise<void>} - Resolves once the socket is closed.
255
+ */
256
+ _closeSocketAndWait(socket: WebSocket): Promise<void>;
247
257
  /**
248
258
  * Closes the WebSocket and clears pending state.
249
259
  * @returns {Promise<void>} - Resolves once closed.
@@ -376,14 +386,20 @@ export default class SnapReqWebSocketClient {
376
386
  * @returns {void}
377
387
  */
378
388
  _stopSocketKeepalive(): void;
389
+ /**
390
+ * Permanently closes and removes every resumable connection and channel handle.
391
+ * @param {string} reason - Reason reported to each handle.
392
+ * @returns {void}
393
+ */
394
+ _closeSessionHandles(reason: string): void;
379
395
  /**
380
396
  * Processes one socket's terminal lifecycle exactly once.
381
- * @param {object} socket - Socket that closed or is being torn down.
397
+ * @param {WebSocket} socket - Socket that closed or is being torn down.
382
398
  * @param {unknown} [error] - Failure propagated to pending operations.
383
399
  * @param {boolean} [allowReconnect] - Whether this close may schedule reconnect.
384
400
  * @returns {void}
385
401
  */
386
- _handleSocketClose(socket: object, error?: unknown, allowReconnect?: boolean): void;
402
+ _handleSocketClose(socket: WebSocket, error?: unknown, allowReconnect?: boolean): void;
387
403
  onClose: (event: any) => void;
388
404
  /**
389
405
  * @param {Record<string, any>} payload - Payload data.
@@ -413,6 +429,8 @@ export default class SnapReqWebSocketClient {
413
429
  _persistSessionId(sessionId: string): void;
414
430
  /** @returns {void} */
415
431
  _clearPersistedSessionId(): void;
432
+ /** @returns {void} - Accepts a fresh session after ruling out a prior session to resume. */
433
+ _acceptEstablishedSession(): void;
416
434
  /** @returns {Promise<void>} - Resolves once the session is ready. */
417
435
  _waitForSessionReady(): Promise<void>;
418
436
  /** @returns {void} */
@@ -1 +1 @@
1
- {"version":3,"file":"websocket-client.d.ts","sourceRoot":"","sources":["../../src/websocket/websocket-client.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"websocket-client.d.ts","sourceRoot":"","sources":["../../src/websocket/websocket-client.js"],"names":[],"mappings":"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"}
@@ -135,15 +135,8 @@ export default class SnapReqWebSocketClient {
135
135
  else if (type === "session-established") {
136
136
  this._pendingSessionId = typeof message.sessionId === "string" ? message.sessionId : null;
137
137
  // First connect: cache sessionId for future resume attempts.
138
- if (!this._awaitingResume) {
139
- this._sessionId = this._pendingSessionId;
140
- if (this._sessionId) {
141
- this._persistSessionId(this._sessionId);
142
- }
143
- this._markSessionReady();
144
- this._sendPendingConnections();
145
- this._sendPendingChannelSubscriptions();
146
- }
138
+ if (!this._awaitingResume)
139
+ this._acceptEstablishedSession();
147
140
  }
148
141
  else if (type === "session-resumed") {
149
142
  this._awaitingResume = false;
@@ -245,8 +238,8 @@ export default class SnapReqWebSocketClient {
245
238
  this._sessionReadyPromise = null;
246
239
  /** @type {(() => void) | null} */
247
240
  this._resolveSessionReady = null;
248
- /** @type {unknown | null} */
249
- this._sessionReadyError = null;
241
+ /** @type {((error: unknown) => void) | null} */
242
+ this._rejectSessionReady = null;
250
243
  /** @type {{get: () => string | null | undefined | Promise<string | null | undefined>, set: (sessionId: string) => void | Promise<void>, clear: () => void | Promise<void>} | undefined} */
251
244
  this._sessionStore = sessionStore;
252
245
  /** @type {boolean} - true once the sessionStore has been consulted for a restored id. */
@@ -261,6 +254,10 @@ export default class SnapReqWebSocketClient {
261
254
  this._connectWaiters = 0;
262
255
  /** @type {WeakSet<object>} - Sockets whose terminal lifecycle has already been processed. */
263
256
  this._closedSockets = new WeakSet();
257
+ /** @type {WeakSet<object>} - Sockets closed through the client's explicit shutdown API. */
258
+ this._clientClosingSockets = new WeakSet();
259
+ /** @type {Set<WebSocket>} - Failed sockets still waiting for their terminal close event. */
260
+ this._closingSockets = new Set();
264
261
  }
265
262
  /** @returns {boolean} - Whether the socket is open. */
266
263
  isOpen() {
@@ -501,15 +498,21 @@ export default class SnapReqWebSocketClient {
501
498
  failedSocket.removeEventListener("message", this.onMessage);
502
499
  failedSocket.removeEventListener("close", this.onClose);
503
500
  this._stopSocketKeepalive();
504
- this._handleSocketClose(failedSocket, error, false);
505
- if (failedSocket.readyState !== failedSocket.CLOSED) {
506
- await new Promise((resolve) => {
507
- failedSocket.addEventListener("close", () => resolve(undefined), { once: true });
508
- failedSocket.close();
509
- });
501
+ this._closingSockets.add(failedSocket);
502
+ const failedSocketClose = this._closeSocketAndWait(failedSocket);
503
+ try {
504
+ this._handleSocketClose(failedSocket, error, false);
505
+ }
506
+ finally {
507
+ try {
508
+ await failedSocketClose;
509
+ }
510
+ finally {
511
+ this._closingSockets.delete(failedSocket);
512
+ if (this.socket === failedSocket)
513
+ this.socket = undefined;
514
+ }
510
515
  }
511
- if (this.socket === failedSocket)
512
- this.socket = undefined;
513
516
  }
514
517
  throw error;
515
518
  }
@@ -543,11 +546,18 @@ export default class SnapReqWebSocketClient {
543
546
  }
544
547
  if (this.socket && this.socket.readyState === this.socket.OPEN)
545
548
  return await this._waitForSessionReady();
546
- if (this.connectPromise)
547
- return this.connectPromise;
549
+ if (this.connectPromise) {
550
+ await this.connectPromise;
551
+ return await this._waitForSessionReady();
552
+ }
548
553
  this._resetSessionReadyState();
549
554
  this._waitingForOnline = false;
550
555
  this.connectionAttempts += 1;
556
+ // Capture resume intent before open and session-established can arrive in
557
+ // one transport turn. A newly established ID is never a resume candidate.
558
+ let resumeSessionId = this._sessionId;
559
+ const restoreSessionStore = !resumeSessionId && !this._sessionStoreRestored && this._sessionStore;
560
+ this._awaitingResume = Boolean(resumeSessionId || restoreSessionStore);
551
561
  this.connectPromise = new Promise((resolve, reject) => {
552
562
  this.socket = new this._WebSocket(this.url);
553
563
  const cleanup = () => {
@@ -578,11 +588,12 @@ export default class SnapReqWebSocketClient {
578
588
  await this.connectPromise;
579
589
  // Cold restore from external persistence (sessionStore) on the very first
580
590
  // connect: apps wire this up to survive a full page reload.
581
- if (!this._sessionId && !this._sessionStoreRestored && this._sessionStore) {
591
+ if (restoreSessionStore) {
582
592
  this._sessionStoreRestored = true;
583
593
  try {
584
- const storedId = await this._sessionStore.get();
594
+ const storedId = await restoreSessionStore.get();
585
595
  if (typeof storedId === "string" && storedId.length > 0) {
596
+ resumeSessionId = storedId;
586
597
  this._sessionId = storedId;
587
598
  }
588
599
  }
@@ -593,15 +604,20 @@ export default class SnapReqWebSocketClient {
593
604
  // If we have a cached sessionId from a prior connect, ask the server to
594
605
  // resume it. The server replies with either `session-resumed` (state
595
606
  // preserved) or `session-gone` (start fresh).
596
- if (this._sessionId) {
597
- this._awaitingResume = true;
598
- this._sendMessage({ type: "session-resume", sessionId: this._sessionId });
607
+ if (resumeSessionId) {
599
608
  // Fire onDisconnect on live handles so apps can pause UI work until
600
609
  // session-resumed / session-gone arrives.
601
610
  for (const connection of this._connections.values())
602
611
  connection._handleDisconnected();
603
612
  for (const subscription of this._channelSubscriptions.values())
604
613
  subscription._handleDisconnected();
614
+ this._sendMessage({ type: "session-resume", sessionId: resumeSessionId });
615
+ }
616
+ else if (restoreSessionStore) {
617
+ this._awaitingResume = false;
618
+ // Storage may resolve empty after establishment was buffered above.
619
+ if (this._pendingSessionId)
620
+ this._acceptEstablishedSession();
605
621
  }
606
622
  if (Object.keys(this._metadata).length > 0) {
607
623
  this._sendMessage({ type: "metadata", data: { ...this._metadata } });
@@ -609,6 +625,20 @@ export default class SnapReqWebSocketClient {
609
625
  await this._waitForSessionReady();
610
626
  this.disconnectedSince = null;
611
627
  }
628
+ /**
629
+ * Starts closing a socket when needed and waits for its terminal event.
630
+ * @param {WebSocket} socket - Socket to close.
631
+ * @returns {Promise<void>} - Resolves once the socket is closed.
632
+ */
633
+ async _closeSocketAndWait(socket) {
634
+ if (socket.readyState === socket.CLOSED)
635
+ return;
636
+ await new Promise((resolve) => {
637
+ socket.addEventListener("close", () => resolve(undefined), { once: true });
638
+ if (socket.readyState !== socket.CLOSING)
639
+ socket.close();
640
+ });
641
+ }
612
642
  /**
613
643
  * Closes the WebSocket and clears pending state.
614
644
  * @returns {Promise<void>} - Resolves once closed.
@@ -619,21 +649,41 @@ export default class SnapReqWebSocketClient {
619
649
  this._cancelPendingReconnect();
620
650
  this._teardownNetworkMonitorSubscription();
621
651
  this._stopSocketKeepalive();
622
- if (!this.socket)
652
+ const socket = this.socket;
653
+ const socketsToClose = new Set(this._closingSockets);
654
+ if (socket)
655
+ socketsToClose.add(socket);
656
+ if (!socket) {
657
+ this.connectPromise = undefined;
658
+ this._resetSessionReadyState();
659
+ }
660
+ if (!socket || this._closedSockets.has(socket) || socket.readyState === socket.CLOSED) {
661
+ let handleCloseError;
662
+ let handleCloseFailed = false;
663
+ try {
664
+ this._closeSessionHandles("client_close");
665
+ }
666
+ catch (error) {
667
+ handleCloseError = error;
668
+ handleCloseFailed = true;
669
+ }
670
+ await Promise.all([...socketsToClose].map((closingSocket) => this._closeSocketAndWait(closingSocket)));
671
+ if (socket && this.socket === socket) {
672
+ this.socket = undefined;
673
+ this.connectPromise = undefined;
674
+ this._resetSessionReadyState();
675
+ }
676
+ if (handleCloseFailed)
677
+ throw handleCloseError;
623
678
  return;
624
- if (this.socket.readyState === this.socket.CLOSED) {
679
+ }
680
+ this._clientClosingSockets.add(socket);
681
+ await Promise.all([...socketsToClose].map((closingSocket) => this._closeSocketAndWait(closingSocket)));
682
+ if (this.socket === socket) {
625
683
  this.socket = undefined;
626
684
  this.connectPromise = undefined;
627
685
  this._resetSessionReadyState();
628
- return;
629
686
  }
630
- await new Promise((resolve) => {
631
- this.socket?.addEventListener("close", () => resolve(undefined));
632
- this.socket?.close();
633
- });
634
- this.socket = undefined;
635
- this.connectPromise = undefined;
636
- this._resetSessionReadyState();
637
687
  }
638
688
  /**
639
689
  * Disables auto-reconnect and closes the WebSocket.
@@ -866,9 +916,47 @@ export default class SnapReqWebSocketClient {
866
916
  this._heartbeatTimer = null;
867
917
  }
868
918
  }
919
+ /**
920
+ * Permanently closes and removes every resumable connection and channel handle.
921
+ * @param {string} reason - Reason reported to each handle.
922
+ * @returns {void}
923
+ */
924
+ _closeSessionHandles(reason) {
925
+ const connections = [...this._connections.values()];
926
+ const channelSubscriptions = [...this._channelSubscriptions.values()];
927
+ let firstCallbackError;
928
+ let callbackFailed = false;
929
+ this._connections.clear();
930
+ this._channelSubscriptions.clear();
931
+ this._sessionId = null;
932
+ this._awaitingResume = false;
933
+ this._pendingSessionId = null;
934
+ for (const connection of connections) {
935
+ try {
936
+ connection._handleClosed(reason);
937
+ }
938
+ catch (error) {
939
+ if (!callbackFailed)
940
+ firstCallbackError = error;
941
+ callbackFailed = true;
942
+ }
943
+ }
944
+ for (const subscription of channelSubscriptions) {
945
+ try {
946
+ subscription._handleClosed(reason);
947
+ }
948
+ catch (error) {
949
+ if (!callbackFailed)
950
+ firstCallbackError = error;
951
+ callbackFailed = true;
952
+ }
953
+ }
954
+ if (callbackFailed)
955
+ throw firstCallbackError;
956
+ }
869
957
  /**
870
958
  * Processes one socket's terminal lifecycle exactly once.
871
- * @param {object} socket - Socket that closed or is being torn down.
959
+ * @param {WebSocket} socket - Socket that closed or is being torn down.
872
960
  * @param {unknown} [error] - Failure propagated to pending operations.
873
961
  * @param {boolean} [allowReconnect] - Whether this close may schedule reconnect.
874
962
  * @returns {void}
@@ -877,6 +965,8 @@ export default class SnapReqWebSocketClient {
877
965
  if (this._closedSockets.has(socket))
878
966
  return;
879
967
  this._closedSockets.add(socket);
968
+ const handleCloseReason = this._clientClosingSockets.has(socket) ? "client_close" : "session_destroyed";
969
+ this._clientClosingSockets.delete(socket);
880
970
  this._stopSocketKeepalive();
881
971
  this.disconnectedSince || (this.disconnectedSince = Date.now());
882
972
  this._resetSessionReadyState(error);
@@ -887,6 +977,11 @@ export default class SnapReqWebSocketClient {
887
977
  reject(error || new Error("Websocket closed before subscription acknowledgement"));
888
978
  this.listeners.delete(subscriptionKey);
889
979
  }
980
+ this.pendingRequests.clear();
981
+ this.pendingSubscriptions.clear();
982
+ this.connectPromise = undefined;
983
+ if (this.socket === socket && socket.readyState === socket.CLOSED)
984
+ this.socket = undefined;
890
985
  if (this._sessionId && this.autoReconnect) {
891
986
  // Session may resume when we reconnect — keep the handles alive and fire
892
987
  // onDisconnect so user code can pause UI work.
@@ -897,21 +992,8 @@ export default class SnapReqWebSocketClient {
897
992
  }
898
993
  else {
899
994
  // No resume path: tear down every live connection / channel sub.
900
- const connections = [...this._connections.values()];
901
- this._connections.clear();
902
- for (const connection of connections) {
903
- connection._handleClosed("session_destroyed");
904
- }
905
- const channelSubs = [...this._channelSubscriptions.values()];
906
- this._channelSubscriptions.clear();
907
- for (const subscription of channelSubs) {
908
- subscription._handleClosed("session_destroyed");
909
- }
910
- this._sessionId = null;
995
+ this._closeSessionHandles(handleCloseReason);
911
996
  }
912
- this.pendingRequests.clear();
913
- this.pendingSubscriptions.clear();
914
- this.connectPromise = undefined;
915
997
  if (!allowReconnect || !this.autoReconnect)
916
998
  return;
917
999
  void this._shouldWaitForOnline().then((shouldWaitForOnline) => {
@@ -1033,31 +1115,36 @@ export default class SnapReqWebSocketClient {
1033
1115
  this._debug("sessionStore.clear failed", error);
1034
1116
  }
1035
1117
  }
1118
+ /** @returns {void} - Accepts a fresh session after ruling out a prior session to resume. */
1119
+ _acceptEstablishedSession() {
1120
+ this._sessionId = this._pendingSessionId;
1121
+ if (this._sessionId)
1122
+ this._persistSessionId(this._sessionId);
1123
+ this._markSessionReady();
1124
+ this._sendPendingConnections();
1125
+ this._sendPendingChannelSubscriptions();
1126
+ }
1036
1127
  /** @returns {Promise<void>} - Resolves once the session is ready. */
1037
1128
  _waitForSessionReady() {
1038
1129
  if (this._sessionReady)
1039
1130
  return Promise.resolve();
1040
1131
  if (!this._sessionReadyPromise || !this._resolveSessionReady) {
1041
- this._sessionReadyPromise = new Promise((resolve) => {
1132
+ this._sessionReadyPromise = new Promise((resolve, reject) => {
1042
1133
  this._resolveSessionReady = resolve;
1134
+ this._rejectSessionReady = reject;
1043
1135
  });
1044
1136
  }
1045
- return this._sessionReadyPromise.then(() => {
1046
- if (this._sessionReadyError) {
1047
- const error = this._sessionReadyError;
1048
- this._sessionReadyError = null;
1049
- throw error;
1050
- }
1051
- });
1137
+ // The settled promise keeps this generation's outcome for every waiter.
1138
+ return this._sessionReadyPromise;
1052
1139
  }
1053
1140
  /** @returns {void} */
1054
1141
  _markSessionReady() {
1055
1142
  if (this._sessionReady)
1056
1143
  return;
1057
1144
  this._sessionReady = true;
1058
- this._sessionReadyError = null;
1059
1145
  this._resolveSessionReady?.();
1060
1146
  this._resolveSessionReady = null;
1147
+ this._rejectSessionReady = null;
1061
1148
  this._sessionReadyPromise = null;
1062
1149
  }
1063
1150
  /**
@@ -1067,10 +1154,10 @@ export default class SnapReqWebSocketClient {
1067
1154
  _resetSessionReadyState(error = new Error("Websocket session readiness was reset")) {
1068
1155
  this._sessionReady = false;
1069
1156
  this._pendingSessionId = null;
1070
- this._sessionReadyError = error;
1071
- this._resolveSessionReady?.();
1157
+ this._rejectSessionReady?.(error);
1072
1158
  this._sessionReadyPromise = null;
1073
1159
  this._resolveSessionReady = null;
1160
+ this._rejectSessionReady = null;
1074
1161
  }
1075
1162
  }
1076
1163
  /** A response to a request made over the WebSocket transport. */
@@ -1097,4 +1184,4 @@ export class SnapReqWebSocketResponse {
1097
1184
  return this._deserialize(JSON.parse(this.body));
1098
1185
  }
1099
1186
  }
1100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93ZWJzb2NrZXQvd2Vic29ja2V0LWNsaWVudC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTywwQkFBMEIsTUFBTSwyQkFBMkIsQ0FBQTtBQUNsRSxPQUFPLHVCQUF1QixNQUFNLHdCQUF3QixDQUFBO0FBQzVELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxlQUFlLENBQUE7QUFFM0MsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQTtBQUVoRTs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLHNCQUFzQjtJQVF6Qzs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxZQUFZLEVBQUMsYUFBYSxHQUFHLElBQUksRUFBRSxLQUFLLEdBQUcsS0FBSyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsR0FBRyxDQUFDLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsdUJBQXVCLEVBQUMsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQWlyQjdNOzs7V0FHRztRQUNILGNBQVMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3BCLE1BQU0sR0FBRyxHQUFHLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQTtZQUVsRixJQUFJLENBQUMsR0FBRztnQkFBRSxPQUFNO1lBRWhCLGtDQUFrQztZQUNsQyxJQUFJLE9BQU8sQ0FBQTtZQUVYLElBQUksQ0FBQztnQkFDSCxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUss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
1187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93ZWJzb2NrZXQvd2Vic29ja2V0LWNsaWVudC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTywwQkFBMEIsTUFBTSwyQkFBMkIsQ0FBQTtBQUNsRSxPQUFPLHVCQUF1QixNQUFNLHdCQUF3QixDQUFBO0FBQzVELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxlQUFlLENBQUE7QUFFM0MsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQTtBQUVoRTs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLHNCQUFzQjtJQVF6Qzs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxZQUFZLEVBQUMsYUFBYSxHQUFHLElBQUksRUFBRSxLQUFLLEdBQUcsS0FBSyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsR0FBRyxDQUFDLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsdUJBQXVCLEVBQUMsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQTh1QjdNOzs7V0FHRztRQUNILGNBQVMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3BCLE1BQU0sR0FBRyxHQUFHLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQTtZQUVsRixJQUFJLENBQUMsR0FBRztnQkFBRSxPQUFNO1lBRWhCLGtDQUFrQztZQUNsQyxJQUFJLE9BQU8sQ0FBQTtZQUVYLElBQUksQ0FBQztnQkFDSCxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUss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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "snapreq",
3
- "version": "0.0.13",
3
+ "version": "0.0.15",
4
4
  "description": "Cross-platform HTTP and WebSocket client with one API across Node, web, Expo and React Native",
5
5
  "type": "module",
6
6
  "main": "./build/snap-req.js",
@@ -21,12 +21,12 @@
21
21
  "scripts": {
22
22
  "all-checks": "npm run typecheck && npm run lint && npm run test",
23
23
  "build": "rm -rf build && tsc",
24
- "hermes:check": "node --test spec/hermes-compose-spec.js",
24
+ "hermes:check": "velocious-test spec/hermes-compose.spec.js",
25
25
  "lint": "npm run eslint && npm run typecheck",
26
26
  "prepare": "npm run build",
27
27
  "prepublishOnly": "npm run build",
28
28
  "release:patch": "release-patch",
29
- "test": "npm run build && node --test \"spec/**/*-spec.js\"",
29
+ "test": "npm run build && velocious-test",
30
30
  "typecheck": "tsc --noEmit",
31
31
  "eslint": "eslint src spec"
32
32
  },
@@ -45,6 +45,7 @@
45
45
  "awaitery": "1.0.19"
46
46
  },
47
47
  "devDependencies": {
48
+ "@velocious/testing": "0.0.0",
48
49
  "@eslint/js": "^10.0.1",
49
50
  "@kaspernj/hermes-compose": "0.0.0",
50
51
  "@types/node": "^26.0.1",