@morsehq-dev/sdk 0.5.0 → 0.6.0-rc.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.
- package/README.md +11 -10
- package/dist/anthropic/index.cjs +11 -11
- package/dist/anthropic/index.d.cts +1 -1
- package/dist/anthropic/index.d.ts +1 -1
- package/dist/anthropic/index.js +4 -4
- package/dist/anthropic-agent-sdk/index.cjs +44 -40
- package/dist/anthropic-agent-sdk/index.cjs.map +1 -1
- package/dist/anthropic-agent-sdk/index.d.cts +1 -1
- package/dist/anthropic-agent-sdk/index.d.ts +1 -1
- package/dist/anthropic-agent-sdk/index.js +10 -6
- package/dist/anthropic-agent-sdk/index.js.map +1 -1
- package/dist/browser/anthropic/index.cjs +11 -11
- package/dist/browser/anthropic/index.js +4 -4
- package/dist/browser/anthropic-agent-sdk/index.cjs +44 -40
- package/dist/browser/anthropic-agent-sdk/index.cjs.map +1 -1
- package/dist/browser/anthropic-agent-sdk/index.js +10 -6
- package/dist/browser/anthropic-agent-sdk/index.js.map +1 -1
- package/dist/browser/{chunk-ELQ4LGAS.cjs → chunk-33WDUUKZ.cjs} +18 -18
- package/dist/browser/{chunk-ELQ4LGAS.cjs.map → chunk-33WDUUKZ.cjs.map} +1 -1
- package/dist/browser/{chunk-TV7TRP5O.cjs → chunk-3I7IGP3P.cjs} +5 -5
- package/dist/browser/chunk-3I7IGP3P.cjs.map +1 -0
- package/dist/browser/{chunk-YYUDZTHI.js → chunk-3OYHDDOJ.js} +27 -5
- package/dist/browser/chunk-3OYHDDOJ.js.map +1 -0
- package/dist/browser/{chunk-6BNMYEMW.cjs → chunk-4IUHXUCJ.cjs} +49 -9
- package/dist/browser/chunk-4IUHXUCJ.cjs.map +1 -0
- package/dist/browser/{chunk-BUCIE3DR.js → chunk-5TYTCLKA.js} +4 -4
- package/dist/browser/{chunk-BUCIE3DR.js.map → chunk-5TYTCLKA.js.map} +1 -1
- package/dist/browser/{chunk-VIOT3AOP.js → chunk-6JHMFFPE.js} +3 -3
- package/dist/browser/chunk-6JHMFFPE.js.map +1 -0
- package/dist/browser/{chunk-BIP66M44.cjs → chunk-FKYI3N5N.cjs} +7 -7
- package/dist/browser/{chunk-BIP66M44.cjs.map → chunk-FKYI3N5N.cjs.map} +1 -1
- package/dist/browser/{chunk-NU74H55W.js → chunk-FPTUHYDJ.js} +3 -3
- package/dist/browser/{chunk-NU74H55W.js.map → chunk-FPTUHYDJ.js.map} +1 -1
- package/dist/browser/{chunk-52JTU4LH.cjs → chunk-IDKQZ4X5.cjs} +38 -15
- package/dist/browser/chunk-IDKQZ4X5.cjs.map +1 -0
- package/dist/browser/{chunk-2X64OY2L.cjs → chunk-LIP3XCTK.cjs} +12 -12
- package/dist/browser/{chunk-2X64OY2L.cjs.map → chunk-LIP3XCTK.cjs.map} +1 -1
- package/dist/browser/{chunk-T6Z6UIBN.js → chunk-OUQAH27A.js} +3 -3
- package/dist/browser/{chunk-T6Z6UIBN.js.map → chunk-OUQAH27A.js.map} +1 -1
- package/dist/browser/{chunk-4CMVMTFB.cjs → chunk-PSNZZBQJ.cjs} +6 -6
- package/dist/browser/{chunk-4CMVMTFB.cjs.map → chunk-PSNZZBQJ.cjs.map} +1 -1
- package/dist/browser/{chunk-6T6ZPOKZ.js → chunk-PXHTLCEU.js} +49 -10
- package/dist/browser/chunk-PXHTLCEU.js.map +1 -0
- package/dist/browser/{chunk-KZFG23MO.js → chunk-TRVACYUN.js} +5 -5
- package/dist/browser/{chunk-KZFG23MO.js.map → chunk-TRVACYUN.js.map} +1 -1
- package/dist/browser/index.cjs +189 -124
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +111 -46
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/integrations/pino.cjs +4 -4
- package/dist/browser/integrations/pino.js +3 -3
- package/dist/browser/langchain/index.cjs +28 -26
- package/dist/browser/langchain/index.cjs.map +1 -1
- package/dist/browser/langchain/index.js +13 -11
- package/dist/browser/langchain/index.js.map +1 -1
- package/dist/browser/langgraph/index.cjs +32 -30
- package/dist/browser/langgraph/index.cjs.map +1 -1
- package/dist/browser/langgraph/index.js +10 -8
- package/dist/browser/langgraph/index.js.map +1 -1
- package/dist/browser/openai/index.cjs +11 -11
- package/dist/browser/openai/index.js +2 -2
- package/dist/browser/openai-agents/index.cjs +63 -35
- package/dist/browser/openai-agents/index.cjs.map +1 -1
- package/dist/browser/openai-agents/index.js +33 -5
- package/dist/browser/openai-agents/index.js.map +1 -1
- package/dist/browser/vercel-ai/index.cjs +14 -14
- package/dist/browser/vercel-ai/index.js +3 -3
- package/dist/{chunk-KMBKZLXH.cjs → chunk-7DALGJL2.cjs} +100 -25
- package/dist/chunk-7DALGJL2.cjs.map +1 -0
- package/dist/{chunk-D5NTF54A.cjs → chunk-B7TGG62X.cjs} +12 -12
- package/dist/{chunk-D5NTF54A.cjs.map → chunk-B7TGG62X.cjs.map} +1 -1
- package/dist/{chunk-LPLL2OXI.cjs → chunk-COZFARLL.cjs} +5 -5
- package/dist/chunk-COZFARLL.cjs.map +1 -0
- package/dist/{chunk-GTPKPUAV.cjs → chunk-DXTNU2KT.cjs} +38 -15
- package/dist/chunk-DXTNU2KT.cjs.map +1 -0
- package/dist/{chunk-6FLGLD72.js → chunk-ERH3TNXZ.js} +3 -3
- package/dist/{chunk-6FLGLD72.js.map → chunk-ERH3TNXZ.js.map} +1 -1
- package/dist/{chunk-7HYFOHM3.cjs → chunk-ESJJXXB6.cjs} +6 -6
- package/dist/{chunk-7HYFOHM3.cjs.map → chunk-ESJJXXB6.cjs.map} +1 -1
- package/dist/{chunk-SUEBUMHL.cjs → chunk-ETRNCI5Z.cjs} +18 -18
- package/dist/{chunk-SUEBUMHL.cjs.map → chunk-ETRNCI5Z.cjs.map} +1 -1
- package/dist/{chunk-KWOSUW7B.js → chunk-GULJAURY.js} +27 -5
- package/dist/chunk-GULJAURY.js.map +1 -0
- package/dist/{chunk-ZIMGB7IT.js → chunk-HJV35HWL.js} +100 -26
- package/dist/chunk-HJV35HWL.js.map +1 -0
- package/dist/{chunk-3ONFIKKC.js → chunk-L7AD4KUD.js} +3 -3
- package/dist/chunk-L7AD4KUD.js.map +1 -0
- package/dist/{chunk-SFI36VWW.js → chunk-QBDTQTMN.js} +3 -3
- package/dist/{chunk-SFI36VWW.js.map → chunk-QBDTQTMN.js.map} +1 -1
- package/dist/{chunk-NMARCV3R.cjs → chunk-WG4H5JC6.cjs} +7 -7
- package/dist/{chunk-NMARCV3R.cjs.map → chunk-WG4H5JC6.cjs.map} +1 -1
- package/dist/{chunk-J5FEPM7L.js → chunk-XS4P7XPV.js} +5 -5
- package/dist/{chunk-J5FEPM7L.js.map → chunk-XS4P7XPV.js.map} +1 -1
- package/dist/{chunk-ZZSVPAXM.js → chunk-YVLEDBN7.js} +4 -4
- package/dist/{chunk-ZZSVPAXM.js.map → chunk-YVLEDBN7.js.map} +1 -1
- package/dist/index.cjs +199 -134
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -2
- package/dist/index.d.ts +13 -2
- package/dist/index.js +112 -47
- package/dist/index.js.map +1 -1
- package/dist/integrations/pino.cjs +4 -4
- package/dist/integrations/pino.js +3 -3
- package/dist/langchain/index.cjs +28 -26
- package/dist/langchain/index.cjs.map +1 -1
- package/dist/langchain/index.d.cts +3 -3
- package/dist/langchain/index.d.ts +3 -3
- package/dist/langchain/index.js +13 -11
- package/dist/langchain/index.js.map +1 -1
- package/dist/langgraph/index.cjs +32 -30
- package/dist/langgraph/index.cjs.map +1 -1
- package/dist/langgraph/index.d.cts +3 -3
- package/dist/langgraph/index.d.ts +3 -3
- package/dist/langgraph/index.js +10 -8
- package/dist/langgraph/index.js.map +1 -1
- package/dist/openai/index.cjs +11 -11
- package/dist/openai/index.js +2 -2
- package/dist/openai-agents/index.cjs +63 -35
- package/dist/openai-agents/index.cjs.map +1 -1
- package/dist/openai-agents/index.d.cts +13 -4
- package/dist/openai-agents/index.d.ts +13 -4
- package/dist/openai-agents/index.js +33 -5
- package/dist/openai-agents/index.js.map +1 -1
- package/dist/{spans-DZtMuBvc.d.cts → spans-CBMWNg2C.d.cts} +1 -0
- package/dist/{spans-DZtMuBvc.d.ts → spans-CBMWNg2C.d.ts} +1 -0
- package/dist/{tracing-J8ZgxVzU.d.ts → tracing-BMWTyexr.d.ts} +1 -1
- package/dist/{tracing-CNlre8TK.d.cts → tracing-Bh-cbvr6.d.cts} +1 -1
- package/dist/vercel-ai/index.cjs +14 -14
- package/dist/vercel-ai/index.js +3 -3
- package/package.json +1 -1
- package/dist/browser/chunk-52JTU4LH.cjs.map +0 -1
- package/dist/browser/chunk-6BNMYEMW.cjs.map +0 -1
- package/dist/browser/chunk-6T6ZPOKZ.js.map +0 -1
- package/dist/browser/chunk-TV7TRP5O.cjs.map +0 -1
- package/dist/browser/chunk-VIOT3AOP.js.map +0 -1
- package/dist/browser/chunk-YYUDZTHI.js.map +0 -1
- package/dist/chunk-3ONFIKKC.js.map +0 -1
- package/dist/chunk-GTPKPUAV.cjs.map +0 -1
- package/dist/chunk-KMBKZLXH.cjs.map +0 -1
- package/dist/chunk-KWOSUW7B.js.map +0 -1
- package/dist/chunk-LPLL2OXI.cjs.map +0 -1
- package/dist/chunk-ZIMGB7IT.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
3
|
-
import {
|
|
4
|
-
export {
|
|
5
|
-
import './chunk-
|
|
6
|
-
import { absorbErrorsSync, absorbErrorsAsync } from './chunk-
|
|
1
|
+
import { instrumentAnthropic } from './chunk-XS4P7XPV.js';
|
|
2
|
+
export { MAX_SEGMENT_CONTENT_BYTES, extractAnthropicSegments, instrumentAnthropic, isAnthropicWrapped, uninstallAnthropic, wrapAnthropic } from './chunk-XS4P7XPV.js';
|
|
3
|
+
import { _setEnsureInitialized } from './chunk-YVLEDBN7.js';
|
|
4
|
+
export { log } from './chunk-YVLEDBN7.js';
|
|
5
|
+
import './chunk-L7AD4KUD.js';
|
|
6
|
+
import { absorbErrorsSync, absorbErrorsAsync } from './chunk-ERH3TNXZ.js';
|
|
7
7
|
import './chunk-XTKMUJWI.js';
|
|
8
8
|
import './chunk-4JPZV2VZ.js';
|
|
9
|
-
import { init_env, init_otel_provider, init_redaction, init_diagnostics, init_tracing, init_spans, init_propagation, redactValue, generateTraceId, nowIso, SpanType, generateSpanId, buildTraceEntry, sendTrace, isDisabled, buildRedactionConfig, getApiKey, getFlushIntervalSeconds, setTransport, setRedactionConfig, setDiagnosticsClientConfig, isValidInternalSource, getInternalSource, setSource, getEngine, getMaxFieldBytes, getMaxBatchSize, getMaxQueueSize, getSampleRate, report, getEndpoint, DEFAULT_ENDPOINT, isAutoDetectDisabled, isDbCaptureEnabled, recordDrop, REASON_SHUTDOWN_DROP, REASON_QUEUE_FULL, setLevel, REASON_QUOTA_REJECTED,
|
|
10
|
-
export { W3C_TRACEPARENT_HEADER, extractTraceparent, formatTraceparent, injectIntoRequestInit, injectTraceparent } from './chunk-
|
|
9
|
+
import { init_env, init_otel_provider, init_redaction, init_diagnostics, init_tracing, init_spans, init_propagation, redactValue, generateTraceId, nowIso, SpanType, generateSpanId, buildTraceEntry, sendTrace, isDisabled, buildRedactionConfig, getApiKey, getFlushIntervalSeconds, setTransport, setRedactionConfig, setDiagnosticsClientConfig, isValidInternalSource, getInternalSource, setSource, getEngine, getMaxFieldBytes, getMaxBatchSize, getMaxQueueSize, getSampleRate, report, getEndpoint, DEFAULT_ENDPOINT, isAutoDetectDisabled, isDbCaptureEnabled, recordDrop, REASON_SHUTDOWN_DROP, REASON_QUEUE_FULL, REASON_ENCODE_FAILED, REASON_RETRY_EXHAUSTED, setLevel, REASON_QUOTA_REJECTED, REASON_AUTH_REJECTED, REASON_ENDPOINT_REJECTED, REASON_SEND_FAILED, runSync, runAsync, setContext, startSpan, spanSync, spanAsync, flushOnce, _resetForTesting2, _resetForTesting, getLastTrace, getActiveTraceState } from './chunk-HJV35HWL.js';
|
|
10
|
+
export { W3C_TRACEPARENT_HEADER, extractTraceparent, formatTraceparent, injectIntoRequestInit, injectTraceparent } from './chunk-HJV35HWL.js';
|
|
11
11
|
import { createRequire, Module } from 'module';
|
|
12
12
|
import { PgInstrumentation } from '@opentelemetry/instrumentation-pg';
|
|
13
13
|
import { MySQL2Instrumentation } from '@opentelemetry/instrumentation-mysql2';
|
|
@@ -285,8 +285,35 @@ init_redaction();
|
|
|
285
285
|
|
|
286
286
|
// src/_internal/transport.ts
|
|
287
287
|
init_diagnostics();
|
|
288
|
-
var SDK_VERSION = "0.
|
|
288
|
+
var SDK_VERSION = "0.6.0-rc.1" ;
|
|
289
289
|
var RETRY_AFTER_CAP_SECONDS = 30;
|
|
290
|
+
var MAX_SEND_ATTEMPTS = 3;
|
|
291
|
+
var BACKOFF_BASE_MS = 500;
|
|
292
|
+
var BACKOFF_MAX_MS = 1e4;
|
|
293
|
+
var DEFAULT_FLUSH_TIMEOUT_MS = 1e4;
|
|
294
|
+
function backoffDelayMs(attempt) {
|
|
295
|
+
const base = Math.min(BACKOFF_MAX_MS, BACKOFF_BASE_MS * 2 ** (attempt - 1));
|
|
296
|
+
return base * (0.5 + Math.random());
|
|
297
|
+
}
|
|
298
|
+
function dropReasonFor(attempt, closed, deadline) {
|
|
299
|
+
if (closed) return REASON_SHUTDOWN_DROP;
|
|
300
|
+
if (attempt === 1 && Date.now() >= deadline) return REASON_SEND_FAILED;
|
|
301
|
+
return REASON_RETRY_EXHAUSTED;
|
|
302
|
+
}
|
|
303
|
+
function withDeadline(promise, deadline) {
|
|
304
|
+
const remaining = Math.max(0, deadline - Date.now());
|
|
305
|
+
let timer;
|
|
306
|
+
return Promise.race([
|
|
307
|
+
promise,
|
|
308
|
+
new Promise((_, reject) => {
|
|
309
|
+
timer = setTimeout(() => reject(new Error("morse: flush deadline exceeded")), remaining);
|
|
310
|
+
})
|
|
311
|
+
]).finally(() => clearTimeout(timer));
|
|
312
|
+
}
|
|
313
|
+
function sleepUntil(ms, deadline) {
|
|
314
|
+
const remaining = Math.max(0, Math.min(ms, deadline - Date.now()));
|
|
315
|
+
return new Promise((resolve) => setTimeout(resolve, remaining));
|
|
316
|
+
}
|
|
290
317
|
function parseRetryAfter(value) {
|
|
291
318
|
if (!value) return null;
|
|
292
319
|
const seconds = Number(value);
|
|
@@ -364,6 +391,7 @@ var BatchTransport = class {
|
|
|
364
391
|
maxBatchSize;
|
|
365
392
|
maxQueueSize;
|
|
366
393
|
fetchTimeoutMs;
|
|
394
|
+
flushTimeoutMs;
|
|
367
395
|
fetchImpl;
|
|
368
396
|
queue = [];
|
|
369
397
|
timer = null;
|
|
@@ -377,6 +405,7 @@ var BatchTransport = class {
|
|
|
377
405
|
this.maxBatchSize = opts.maxBatchSize ?? 100;
|
|
378
406
|
this.maxQueueSize = opts.maxQueueSize ?? 1e4;
|
|
379
407
|
this.fetchTimeoutMs = opts.fetchTimeoutMs ?? 5e3;
|
|
408
|
+
this.flushTimeoutMs = opts.flushTimeoutMs ?? DEFAULT_FLUSH_TIMEOUT_MS;
|
|
380
409
|
this.fetchImpl = opts.fetchImpl ?? globalThis.fetch.bind(globalThis);
|
|
381
410
|
const intervalMs = Math.max(50, Math.round(this.flushIntervalSeconds * 1e3));
|
|
382
411
|
this.timer = setInterval(() => {
|
|
@@ -467,56 +496,92 @@ var BatchTransport = class {
|
|
|
467
496
|
await this.post(deriveLogsEndpoint(this.endpoint), { logs: logEntries });
|
|
468
497
|
}
|
|
469
498
|
}
|
|
470
|
-
async post(url, payload) {
|
|
471
|
-
|
|
472
|
-
const timeoutId = setTimeout(() => controller.abort(), this.fetchTimeoutMs);
|
|
499
|
+
async post(url, payload, deadline = Date.now() + this.flushTimeoutMs) {
|
|
500
|
+
let body;
|
|
473
501
|
try {
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
},
|
|
481
|
-
body: JSON.stringify(payload),
|
|
482
|
-
signal: controller.signal
|
|
502
|
+
body = JSON.stringify(payload);
|
|
503
|
+
} catch (err) {
|
|
504
|
+
recordDrop(REASON_ENCODE_FAILED, categoryOf(payload), countPayloadEntries(payload));
|
|
505
|
+
report(err, {
|
|
506
|
+
fingerprint: "morse.transport.post.encode",
|
|
507
|
+
extra: { endpoint_host: hostnameOf(url), sdk_version: SDK_VERSION }
|
|
483
508
|
});
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
509
|
+
return;
|
|
510
|
+
}
|
|
511
|
+
const droppedCount = countPayloadEntries(payload);
|
|
512
|
+
const droppedCategory = categoryOf(payload);
|
|
513
|
+
for (let attempt = 1; attempt <= MAX_SEND_ATTEMPTS; attempt++) {
|
|
514
|
+
const lastAttempt = attempt >= MAX_SEND_ATTEMPTS;
|
|
515
|
+
const outOfTime = Date.now() >= deadline;
|
|
516
|
+
if (outOfTime && attempt > 1) {
|
|
517
|
+
recordDrop(REASON_RETRY_EXHAUSTED, droppedCategory, droppedCount);
|
|
518
|
+
return;
|
|
490
519
|
}
|
|
491
|
-
|
|
520
|
+
const controller = new AbortController();
|
|
521
|
+
const timeoutId = setTimeout(() => controller.abort(), this.fetchTimeoutMs);
|
|
522
|
+
try {
|
|
523
|
+
const resp = await withDeadline(
|
|
524
|
+
this.fetchImpl(url, {
|
|
525
|
+
method: "POST",
|
|
526
|
+
headers: {
|
|
527
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
528
|
+
"Content-Type": "application/json",
|
|
529
|
+
"User-Agent": `morse-typescript/${SDK_VERSION}`
|
|
530
|
+
},
|
|
531
|
+
body,
|
|
532
|
+
signal: controller.signal
|
|
533
|
+
}),
|
|
534
|
+
deadline
|
|
535
|
+
);
|
|
536
|
+
setLevel(resp.headers.get("X-Morse-Diagnostics"));
|
|
537
|
+
if (resp.ok) return;
|
|
538
|
+
if (resp.status === 429) await recordQuotaState(resp);
|
|
492
539
|
let bodySnippet = "";
|
|
493
540
|
try {
|
|
494
|
-
|
|
495
|
-
bodySnippet = text.slice(0, 200);
|
|
541
|
+
bodySnippet = (await resp.text()).slice(0, 200);
|
|
496
542
|
} catch {
|
|
497
543
|
}
|
|
498
|
-
if (resp.status !== 429) {
|
|
499
|
-
recordDrop(REASON_RETRY_EXHAUSTED, droppedCategory, droppedCount);
|
|
500
|
-
}
|
|
501
544
|
report(new Error(`morse: batch POST returned ${resp.status} ${bodySnippet}`), {
|
|
502
545
|
fingerprint: "morse.transport.post.non_2xx",
|
|
503
|
-
extra: {
|
|
504
|
-
|
|
505
|
-
|
|
546
|
+
extra: { endpoint_host: hostnameOf(url), sdk_version: SDK_VERSION }
|
|
547
|
+
});
|
|
548
|
+
if (resp.status === 429) {
|
|
549
|
+
if (lastAttempt) {
|
|
550
|
+
recordDrop(REASON_QUOTA_REJECTED, droppedCategory, droppedCount);
|
|
551
|
+
return;
|
|
506
552
|
}
|
|
553
|
+
const retryAfter = parseRetryAfter(resp.headers.get("Retry-After"));
|
|
554
|
+
await sleepUntil((retryAfter ?? 0) * 1e3 + backoffDelayMs(attempt), deadline);
|
|
555
|
+
continue;
|
|
556
|
+
}
|
|
557
|
+
if (resp.status < 500) {
|
|
558
|
+
recordDrop(
|
|
559
|
+
resp.status === 401 || resp.status === 403 ? REASON_AUTH_REJECTED : REASON_ENDPOINT_REJECTED,
|
|
560
|
+
droppedCategory,
|
|
561
|
+
droppedCount
|
|
562
|
+
);
|
|
563
|
+
return;
|
|
564
|
+
}
|
|
565
|
+
if (lastAttempt || this.closed || Date.now() >= deadline) {
|
|
566
|
+
recordDrop(dropReasonFor(attempt, this.closed, deadline), droppedCategory, droppedCount);
|
|
567
|
+
return;
|
|
568
|
+
}
|
|
569
|
+
await sleepUntil(backoffDelayMs(attempt), deadline);
|
|
570
|
+
continue;
|
|
571
|
+
} catch (err) {
|
|
572
|
+
report(err, {
|
|
573
|
+
fingerprint: "morse.transport.post.network",
|
|
574
|
+
extra: { endpoint_host: hostnameOf(url), sdk_version: SDK_VERSION }
|
|
507
575
|
});
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
report(err, {
|
|
512
|
-
fingerprint: "morse.transport.post.network",
|
|
513
|
-
extra: {
|
|
514
|
-
endpoint_host: hostnameOf(url),
|
|
515
|
-
sdk_version: SDK_VERSION
|
|
576
|
+
if (lastAttempt || this.closed || Date.now() >= deadline) {
|
|
577
|
+
recordDrop(dropReasonFor(attempt, this.closed, deadline), droppedCategory, droppedCount);
|
|
578
|
+
return;
|
|
516
579
|
}
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
580
|
+
await sleepUntil(backoffDelayMs(attempt), deadline);
|
|
581
|
+
continue;
|
|
582
|
+
} finally {
|
|
583
|
+
clearTimeout(timeoutId);
|
|
584
|
+
}
|
|
520
585
|
}
|
|
521
586
|
}
|
|
522
587
|
};
|