lifecycleion 0.0.20 → 0.0.21
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 +39 -36
- package/dist/lib/event-emitter.cjs +195 -9
- package/dist/lib/event-emitter.cjs.map +1 -1
- package/dist/lib/event-emitter.js +195 -9
- package/dist/lib/event-emitter.js.map +1 -1
- package/dist/lib/global-event-target.cjs +217 -0
- package/dist/lib/global-event-target.cjs.map +1 -0
- package/dist/lib/global-event-target.d.cts +70 -0
- package/dist/lib/global-event-target.d.ts +70 -0
- package/dist/lib/global-event-target.js +189 -0
- package/dist/lib/global-event-target.js.map +1 -0
- package/dist/lib/http-client/index.cjs +554 -193
- package/dist/lib/http-client/index.cjs.map +1 -1
- package/dist/lib/http-client/index.d.cts +9 -3
- package/dist/lib/http-client/index.d.ts +9 -3
- package/dist/lib/http-client/index.js +554 -193
- package/dist/lib/http-client/index.js.map +1 -1
- package/dist/lib/http-client-mock/index.cjs +71 -10
- package/dist/lib/http-client-mock/index.cjs.map +1 -1
- package/dist/lib/http-client-mock/index.d.cts +50 -3
- package/dist/lib/http-client-mock/index.d.ts +50 -3
- package/dist/lib/http-client-mock/index.js +71 -10
- package/dist/lib/http-client-mock/index.js.map +1 -1
- package/dist/lib/http-client-node/index.cjs +98 -19
- package/dist/lib/http-client-node/index.cjs.map +1 -1
- package/dist/lib/http-client-node/index.d.cts +2 -2
- package/dist/lib/http-client-node/index.d.ts +2 -2
- package/dist/lib/http-client-node/index.js +98 -19
- package/dist/lib/http-client-node/index.js.map +1 -1
- package/dist/lib/http-client-xhr/index.cjs.map +1 -1
- package/dist/lib/http-client-xhr/index.d.cts +2 -2
- package/dist/lib/http-client-xhr/index.d.ts +2 -2
- package/dist/lib/http-client-xhr/index.js.map +1 -1
- package/dist/lib/lifecycle-manager/index.cjs +199 -13
- package/dist/lib/lifecycle-manager/index.cjs.map +1 -1
- package/dist/lib/lifecycle-manager/index.js +199 -13
- package/dist/lib/lifecycle-manager/index.js.map +1 -1
- package/dist/lib/logger/index.cjs +203 -21
- package/dist/lib/logger/index.cjs.map +1 -1
- package/dist/lib/logger/index.d.cts +5 -1
- package/dist/lib/logger/index.d.ts +5 -1
- package/dist/lib/logger/index.js +203 -21
- package/dist/lib/logger/index.js.map +1 -1
- package/dist/lib/lru-cache/index.cjs +195 -9
- package/dist/lib/lru-cache/index.cjs.map +1 -1
- package/dist/lib/lru-cache/index.js +195 -9
- package/dist/lib/lru-cache/index.js.map +1 -1
- package/dist/lib/process-signal-manager.cjs +199 -13
- package/dist/lib/process-signal-manager.cjs.map +1 -1
- package/dist/lib/process-signal-manager.js +199 -13
- package/dist/lib/process-signal-manager.js.map +1 -1
- package/dist/lib/promise-protected-resolver.cjs +195 -9
- package/dist/lib/promise-protected-resolver.cjs.map +1 -1
- package/dist/lib/promise-protected-resolver.js +195 -9
- package/dist/lib/promise-protected-resolver.js.map +1 -1
- package/dist/lib/retry-utils/index.cjs +195 -9
- package/dist/lib/retry-utils/index.cjs.map +1 -1
- package/dist/lib/retry-utils/index.js +195 -9
- package/dist/lib/retry-utils/index.js.map +1 -1
- package/dist/lib/safe-handle-callback.cjs +196 -18
- package/dist/lib/safe-handle-callback.cjs.map +1 -1
- package/dist/lib/safe-handle-callback.d.cts +14 -4
- package/dist/lib/safe-handle-callback.d.ts +14 -4
- package/dist/lib/safe-handle-callback.js +196 -18
- package/dist/lib/safe-handle-callback.js.map +1 -1
- package/dist/lib/single-event-observer.cjs +195 -9
- package/dist/lib/single-event-observer.cjs.map +1 -1
- package/dist/lib/single-event-observer.js +195 -9
- package/dist/lib/single-event-observer.js.map +1 -1
- package/dist/{types-6G59m8U9.d.cts → types-BFvpJPMt.d.cts} +71 -10
- package/dist/{types-CG10j6Lc.d.ts → types-BONtIhQ5.d.ts} +71 -10
- package/package.json +12 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { H as HTTPAdapter, A as AdapterType, a as AdapterRequest, b as AdapterResponse } from '../../types-
|
|
2
|
-
export { c as AdapterProgressEvent, d as HTTPMethod, S as StreamResponseCancel, e as StreamResponseContext, f as StreamResponseFactory, g as StreamResponseInfo, W as WritableLike } from '../../types-
|
|
1
|
+
import { H as HTTPAdapter, A as AdapterType, a as AdapterRequest, b as AdapterResponse } from '../../types-BFvpJPMt.cjs';
|
|
2
|
+
export { c as AdapterProgressEvent, d as HTTPMethod, S as StreamResponseCancel, e as StreamResponseContext, f as StreamResponseFactory, g as StreamResponseInfo, W as WritableLike } from '../../types-BFvpJPMt.cjs';
|
|
3
3
|
import '../../types-BW0vnSzd.cjs';
|
|
4
4
|
|
|
5
5
|
interface NodeAdapterConfig {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { H as HTTPAdapter, A as AdapterType, a as AdapterRequest, b as AdapterResponse } from '../../types-
|
|
2
|
-
export { c as AdapterProgressEvent, d as HTTPMethod, S as StreamResponseCancel, e as StreamResponseContext, f as StreamResponseFactory, g as StreamResponseInfo, W as WritableLike } from '../../types-
|
|
1
|
+
import { H as HTTPAdapter, A as AdapterType, a as AdapterRequest, b as AdapterResponse } from '../../types-BONtIhQ5.js';
|
|
2
|
+
export { c as AdapterProgressEvent, d as HTTPMethod, S as StreamResponseCancel, e as StreamResponseContext, f as StreamResponseFactory, g as StreamResponseInfo, W as WritableLike } from '../../types-BONtIhQ5.js';
|
|
3
3
|
import '../../types-BW0vnSzd.js';
|
|
4
4
|
|
|
5
5
|
interface NodeAdapterConfig {
|
|
@@ -328,20 +328,60 @@ var CERT_ERROR_CODES = /* @__PURE__ */ new Set([
|
|
|
328
328
|
"UNABLE_TO_GET_ISSUER_CERT_LOCALLY",
|
|
329
329
|
"CERT_REVOKED"
|
|
330
330
|
]);
|
|
331
|
+
var CRL_CODE_PATTERN = /(?:^|_)CRLS?(?:_|$)/;
|
|
332
|
+
var TRANSPORT_ERROR_CODES = /* @__PURE__ */ new Set([
|
|
333
|
+
"ENOTFOUND",
|
|
334
|
+
"EAI_AGAIN",
|
|
335
|
+
"ECONNREFUSED",
|
|
336
|
+
"ECONNRESET",
|
|
337
|
+
"ECONNABORTED",
|
|
338
|
+
"ETIMEDOUT",
|
|
339
|
+
"EPIPE",
|
|
340
|
+
"EHOSTUNREACH",
|
|
341
|
+
"EHOSTDOWN",
|
|
342
|
+
"ENETUNREACH",
|
|
343
|
+
"ENETDOWN",
|
|
344
|
+
"EADDRNOTAVAIL"
|
|
345
|
+
]);
|
|
346
|
+
var UNDICI_TRANSPORT_ERROR_PREFIX = "UND_ERR_";
|
|
331
347
|
function isTLSCertificateError(error) {
|
|
332
|
-
|
|
348
|
+
if (isTLSCertificateErrorSelf(error)) {
|
|
349
|
+
return true;
|
|
350
|
+
}
|
|
351
|
+
const cause = readMember(error, "cause");
|
|
352
|
+
return isErrorValue(cause) ? isTLSCertificateErrorSelf(cause) : false;
|
|
353
|
+
}
|
|
354
|
+
function isErrorValue(value) {
|
|
355
|
+
try {
|
|
356
|
+
return value instanceof Error;
|
|
357
|
+
} catch {
|
|
358
|
+
return false;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
function isTLSCertificateErrorSelf(error) {
|
|
362
|
+
const rawCode = readMember(error, "code");
|
|
363
|
+
const code = typeof rawCode === "string" ? rawCode : "";
|
|
333
364
|
if (CERT_ERROR_CODES.has(code)) {
|
|
334
365
|
return true;
|
|
335
366
|
}
|
|
336
|
-
if (
|
|
367
|
+
if (CRL_CODE_PATTERN.test(code)) {
|
|
337
368
|
return true;
|
|
338
369
|
}
|
|
339
370
|
if ((code.startsWith("ERR_TLS_") || code.startsWith("ERR_SSL_")) && code.includes("CERT")) {
|
|
340
371
|
return true;
|
|
341
372
|
}
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
373
|
+
if (TRANSPORT_ERROR_CODES.has(code) || code.startsWith(UNDICI_TRANSPORT_ERROR_PREFIX)) {
|
|
374
|
+
return false;
|
|
375
|
+
}
|
|
376
|
+
const message = readMember(error, "message");
|
|
377
|
+
return typeof message === "string" ? /certificate|self signed|unable to verify|altname/i.test(message) : false;
|
|
378
|
+
}
|
|
379
|
+
function readMember(error, key) {
|
|
380
|
+
try {
|
|
381
|
+
return error[key];
|
|
382
|
+
} catch {
|
|
383
|
+
return void 0;
|
|
384
|
+
}
|
|
345
385
|
}
|
|
346
386
|
|
|
347
387
|
// src/lib/http-client/adapters/node-adapter-utils.ts
|
|
@@ -472,7 +512,6 @@ var NodeAdapter = class {
|
|
|
472
512
|
let activeResponseStream;
|
|
473
513
|
let activeBufferedResponse;
|
|
474
514
|
let isStreamFactoryPending = false;
|
|
475
|
-
let uploadedBodyBytes = 0;
|
|
476
515
|
let didFireUpload100 = false;
|
|
477
516
|
const reportUploadProgress = (event) => {
|
|
478
517
|
if (didFireUpload100) {
|
|
@@ -481,7 +520,6 @@ var NodeAdapter = class {
|
|
|
481
520
|
if (event.progress === 1) {
|
|
482
521
|
didFireUpload100 = true;
|
|
483
522
|
}
|
|
484
|
-
uploadedBodyBytes = Math.max(uploadedBodyBytes, event.loaded);
|
|
485
523
|
request.onUploadProgress?.(event);
|
|
486
524
|
};
|
|
487
525
|
reportUploadProgress({ loaded: 0, total: 0, progress: 0 });
|
|
@@ -531,7 +569,7 @@ var NodeAdapter = class {
|
|
|
531
569
|
return;
|
|
532
570
|
}
|
|
533
571
|
if (writable === null || isStreamResponseCancel(writable)) {
|
|
534
|
-
const cancelReason = writable !== null ? writable
|
|
572
|
+
const cancelReason = writable !== null ? readObjectMember(writable, "reason") : void 0;
|
|
535
573
|
streamAbort.abort();
|
|
536
574
|
req.destroy();
|
|
537
575
|
const abortErr = new Error(
|
|
@@ -703,7 +741,7 @@ var NodeAdapter = class {
|
|
|
703
741
|
);
|
|
704
742
|
});
|
|
705
743
|
})().catch((error) => {
|
|
706
|
-
reject(
|
|
744
|
+
reject(normalizeError(error));
|
|
707
745
|
});
|
|
708
746
|
});
|
|
709
747
|
req.on("error", (error) => {
|
|
@@ -730,7 +768,7 @@ var NodeAdapter = class {
|
|
|
730
768
|
);
|
|
731
769
|
return;
|
|
732
770
|
}
|
|
733
|
-
const
|
|
771
|
+
const wasDefinitelyNotSent = isPreConnectionError(error);
|
|
734
772
|
resolveAdapterResponse(
|
|
735
773
|
resolve,
|
|
736
774
|
req,
|
|
@@ -739,7 +777,7 @@ var NodeAdapter = class {
|
|
|
739
777
|
{
|
|
740
778
|
status: 0,
|
|
741
779
|
isTransportError: true,
|
|
742
|
-
|
|
780
|
+
...wasDefinitelyNotSent ? { wasDefinitelyNotSent: true } : {},
|
|
743
781
|
headers: {},
|
|
744
782
|
body: null,
|
|
745
783
|
errorCause: error
|
|
@@ -830,12 +868,14 @@ var NodeAdapter = class {
|
|
|
830
868
|
request.requestURL,
|
|
831
869
|
request.headers,
|
|
832
870
|
{
|
|
871
|
+
// No isRetryable veto: that would stop retrying an idempotent
|
|
872
|
+
// PUT or DELETE. Delivery is unproven rather than disproven, so
|
|
873
|
+
// nothing is claimed and the client's method rule decides.
|
|
833
874
|
status: 0,
|
|
834
875
|
isTransportError: true,
|
|
835
|
-
isRetryable: false,
|
|
836
876
|
headers: {},
|
|
837
877
|
body: null,
|
|
838
|
-
errorCause:
|
|
878
|
+
errorCause: normalizeError(error)
|
|
839
879
|
}
|
|
840
880
|
);
|
|
841
881
|
});
|
|
@@ -852,12 +892,14 @@ var NodeAdapter = class {
|
|
|
852
892
|
request.requestURL,
|
|
853
893
|
request.headers,
|
|
854
894
|
{
|
|
895
|
+
// No isRetryable veto: that would stop retrying an idempotent
|
|
896
|
+
// PUT or DELETE. Delivery is unproven rather than disproven, so
|
|
897
|
+
// nothing is claimed and the client's method rule decides.
|
|
855
898
|
status: 0,
|
|
856
899
|
isTransportError: true,
|
|
857
|
-
isRetryable: false,
|
|
858
900
|
headers: {},
|
|
859
901
|
body: null,
|
|
860
|
-
errorCause:
|
|
902
|
+
errorCause: normalizeError(error)
|
|
861
903
|
}
|
|
862
904
|
);
|
|
863
905
|
});
|
|
@@ -927,7 +969,7 @@ async function streamResponseBody(res, writable, totalBytes, onProgress) {
|
|
|
927
969
|
} catch (error) {
|
|
928
970
|
settle({
|
|
929
971
|
code: "stream_write_error",
|
|
930
|
-
cause:
|
|
972
|
+
cause: normalizeError(error)
|
|
931
973
|
});
|
|
932
974
|
return;
|
|
933
975
|
}
|
|
@@ -958,7 +1000,7 @@ async function streamResponseBody(res, writable, totalBytes, onProgress) {
|
|
|
958
1000
|
} catch (error) {
|
|
959
1001
|
settle({
|
|
960
1002
|
code: "stream_write_error",
|
|
961
|
-
cause:
|
|
1003
|
+
cause: normalizeError(error)
|
|
962
1004
|
});
|
|
963
1005
|
}
|
|
964
1006
|
};
|
|
@@ -1064,6 +1106,16 @@ function removeWritableListener(writable, event, listener) {
|
|
|
1064
1106
|
const removable = writable;
|
|
1065
1107
|
removable.off?.(event, listener);
|
|
1066
1108
|
}
|
|
1109
|
+
var PRE_CONNECTION_ERROR_CODES = /* @__PURE__ */ new Set([
|
|
1110
|
+
"ECONNREFUSED",
|
|
1111
|
+
"ENOTFOUND",
|
|
1112
|
+
"EAI_AGAIN",
|
|
1113
|
+
"EADDRNOTAVAIL"
|
|
1114
|
+
]);
|
|
1115
|
+
function isPreConnectionError(error) {
|
|
1116
|
+
const code = readObjectMember(error, "code");
|
|
1117
|
+
return typeof code === "string" && PRE_CONNECTION_ERROR_CODES.has(code);
|
|
1118
|
+
}
|
|
1067
1119
|
function makeResponseStreamError(message, cause) {
|
|
1068
1120
|
const error = new Error(message);
|
|
1069
1121
|
if (cause) {
|
|
@@ -1072,7 +1124,7 @@ function makeResponseStreamError(message, cause) {
|
|
|
1072
1124
|
return error;
|
|
1073
1125
|
}
|
|
1074
1126
|
function markStreamFactoryError(error, req, fallbackHeaders) {
|
|
1075
|
-
const normalized =
|
|
1127
|
+
const normalized = normalizeError(error);
|
|
1076
1128
|
const tagged = normalized;
|
|
1077
1129
|
tagged[NON_RETRYABLE_HTTP_CLIENT_CALLBACK_ERROR_FLAG] = true;
|
|
1078
1130
|
Object.assign(normalized, { [STREAM_FACTORY_ERROR_FLAG]: true });
|
|
@@ -1096,7 +1148,34 @@ function markResponseStreamAbortError(error, req, fallbackHeaders, status, heade
|
|
|
1096
1148
|
return error;
|
|
1097
1149
|
}
|
|
1098
1150
|
function isStreamResponseCancel(value) {
|
|
1099
|
-
return value
|
|
1151
|
+
return readObjectMember(value, "cancel") === true;
|
|
1152
|
+
}
|
|
1153
|
+
function readObjectMember(source, key) {
|
|
1154
|
+
if (source === null || typeof source !== "object" && typeof source !== "function") {
|
|
1155
|
+
return void 0;
|
|
1156
|
+
}
|
|
1157
|
+
try {
|
|
1158
|
+
return source[key];
|
|
1159
|
+
} catch {
|
|
1160
|
+
return void 0;
|
|
1161
|
+
}
|
|
1162
|
+
}
|
|
1163
|
+
function isErrorValue2(value) {
|
|
1164
|
+
try {
|
|
1165
|
+
return value instanceof Error;
|
|
1166
|
+
} catch {
|
|
1167
|
+
return false;
|
|
1168
|
+
}
|
|
1169
|
+
}
|
|
1170
|
+
function normalizeError(value) {
|
|
1171
|
+
if (isErrorValue2(value)) {
|
|
1172
|
+
return value;
|
|
1173
|
+
}
|
|
1174
|
+
try {
|
|
1175
|
+
return new Error(String(value));
|
|
1176
|
+
} catch {
|
|
1177
|
+
return new Error("Unknown error");
|
|
1178
|
+
}
|
|
1100
1179
|
}
|
|
1101
1180
|
export {
|
|
1102
1181
|
NodeAdapter
|