@thru/replay 0.2.4 → 0.2.5
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/dist/index.cjs +21 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +21 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -588,7 +588,10 @@ var ReplayStream = class {
|
|
|
588
588
|
};
|
|
589
589
|
async function safeClose(pump) {
|
|
590
590
|
try {
|
|
591
|
-
await
|
|
591
|
+
await Promise.race([
|
|
592
|
+
pump.close(),
|
|
593
|
+
new Promise((resolve) => setTimeout(resolve, 5e3))
|
|
594
|
+
]);
|
|
592
595
|
} catch {
|
|
593
596
|
}
|
|
594
597
|
}
|
|
@@ -1075,6 +1078,7 @@ async function* createAccountsByOwnerReplay(options) {
|
|
|
1075
1078
|
const streamBuffer = [];
|
|
1076
1079
|
let streamDone = false;
|
|
1077
1080
|
let streamError = null;
|
|
1081
|
+
let lastActivityTime = Date.now();
|
|
1078
1082
|
try {
|
|
1079
1083
|
cleanupTimer = setInterval(() => {
|
|
1080
1084
|
assembler.cleanup();
|
|
@@ -1084,6 +1088,7 @@ async function* createAccountsByOwnerReplay(options) {
|
|
|
1084
1088
|
const streamProcessor = (async () => {
|
|
1085
1089
|
try {
|
|
1086
1090
|
for await (const response of stream) {
|
|
1091
|
+
lastActivityTime = Date.now();
|
|
1087
1092
|
const event = processResponseMulti(response, assembler);
|
|
1088
1093
|
if (event) {
|
|
1089
1094
|
if (event.type === "account") {
|
|
@@ -1173,6 +1178,7 @@ async function* createAccountsByOwnerReplay(options) {
|
|
|
1173
1178
|
let retryAttempt = 0;
|
|
1174
1179
|
let currentStream = stream;
|
|
1175
1180
|
let currentStreamProcessor = streamProcessor;
|
|
1181
|
+
lastActivityTime = Date.now();
|
|
1176
1182
|
const createStreamProcessor = () => {
|
|
1177
1183
|
if (clientFactory) {
|
|
1178
1184
|
try {
|
|
@@ -1188,6 +1194,7 @@ async function* createAccountsByOwnerReplay(options) {
|
|
|
1188
1194
|
try {
|
|
1189
1195
|
for await (const response of newStream) {
|
|
1190
1196
|
retryAttempt = 0;
|
|
1197
|
+
lastActivityTime = Date.now();
|
|
1191
1198
|
const event = processResponseMulti(response, assembler);
|
|
1192
1199
|
if (event) {
|
|
1193
1200
|
if (event.type === "account") {
|
|
@@ -1208,7 +1215,18 @@ async function* createAccountsByOwnerReplay(options) {
|
|
|
1208
1215
|
return { stream: newStream, processor: newProcessor };
|
|
1209
1216
|
};
|
|
1210
1217
|
while (true) {
|
|
1218
|
+
const hadEvents = streamBuffer.length > 0;
|
|
1211
1219
|
yield* yieldStreamBuffer();
|
|
1220
|
+
if (hadEvents) {
|
|
1221
|
+
lastActivityTime = Date.now();
|
|
1222
|
+
}
|
|
1223
|
+
if (!streamDone && Date.now() - lastActivityTime > retryConfig.connectionTimeoutMs) {
|
|
1224
|
+
logger.warn(
|
|
1225
|
+
`[account-stream] no activity for ${retryConfig.connectionTimeoutMs}ms; forcing reconnection`
|
|
1226
|
+
);
|
|
1227
|
+
streamDone = true;
|
|
1228
|
+
streamError = new Error(`Operation timed out after ${retryConfig.connectionTimeoutMs}ms`);
|
|
1229
|
+
}
|
|
1212
1230
|
if (streamDone) {
|
|
1213
1231
|
if (streamError) {
|
|
1214
1232
|
const backoffMs = calculateBackoff(retryAttempt, retryConfig);
|
|
@@ -1220,6 +1238,7 @@ async function* createAccountsByOwnerReplay(options) {
|
|
|
1220
1238
|
streamDone = false;
|
|
1221
1239
|
streamError = null;
|
|
1222
1240
|
streamBuffer.length = 0;
|
|
1241
|
+
lastActivityTime = Date.now();
|
|
1223
1242
|
const { stream: newStream, processor: newProcessor } = createStreamProcessor();
|
|
1224
1243
|
currentStream = newStream;
|
|
1225
1244
|
currentStreamProcessor = newProcessor;
|
|
@@ -1227,6 +1246,7 @@ async function* createAccountsByOwnerReplay(options) {
|
|
|
1227
1246
|
} else {
|
|
1228
1247
|
logger.warn("[account-stream] stream ended unexpectedly; reconnecting...");
|
|
1229
1248
|
streamDone = false;
|
|
1249
|
+
lastActivityTime = Date.now();
|
|
1230
1250
|
const { stream: newStream, processor: newProcessor } = createStreamProcessor();
|
|
1231
1251
|
currentStream = newStream;
|
|
1232
1252
|
currentStreamProcessor = newProcessor;
|