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