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
|
@@ -364,20 +364,60 @@ var CERT_ERROR_CODES = /* @__PURE__ */ new Set([
|
|
|
364
364
|
"UNABLE_TO_GET_ISSUER_CERT_LOCALLY",
|
|
365
365
|
"CERT_REVOKED"
|
|
366
366
|
]);
|
|
367
|
+
var CRL_CODE_PATTERN = /(?:^|_)CRLS?(?:_|$)/;
|
|
368
|
+
var TRANSPORT_ERROR_CODES = /* @__PURE__ */ new Set([
|
|
369
|
+
"ENOTFOUND",
|
|
370
|
+
"EAI_AGAIN",
|
|
371
|
+
"ECONNREFUSED",
|
|
372
|
+
"ECONNRESET",
|
|
373
|
+
"ECONNABORTED",
|
|
374
|
+
"ETIMEDOUT",
|
|
375
|
+
"EPIPE",
|
|
376
|
+
"EHOSTUNREACH",
|
|
377
|
+
"EHOSTDOWN",
|
|
378
|
+
"ENETUNREACH",
|
|
379
|
+
"ENETDOWN",
|
|
380
|
+
"EADDRNOTAVAIL"
|
|
381
|
+
]);
|
|
382
|
+
var UNDICI_TRANSPORT_ERROR_PREFIX = "UND_ERR_";
|
|
367
383
|
function isTLSCertificateError(error) {
|
|
368
|
-
|
|
384
|
+
if (isTLSCertificateErrorSelf(error)) {
|
|
385
|
+
return true;
|
|
386
|
+
}
|
|
387
|
+
const cause = readMember(error, "cause");
|
|
388
|
+
return isErrorValue(cause) ? isTLSCertificateErrorSelf(cause) : false;
|
|
389
|
+
}
|
|
390
|
+
function isErrorValue(value) {
|
|
391
|
+
try {
|
|
392
|
+
return value instanceof Error;
|
|
393
|
+
} catch {
|
|
394
|
+
return false;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
function isTLSCertificateErrorSelf(error) {
|
|
398
|
+
const rawCode = readMember(error, "code");
|
|
399
|
+
const code = typeof rawCode === "string" ? rawCode : "";
|
|
369
400
|
if (CERT_ERROR_CODES.has(code)) {
|
|
370
401
|
return true;
|
|
371
402
|
}
|
|
372
|
-
if (
|
|
403
|
+
if (CRL_CODE_PATTERN.test(code)) {
|
|
373
404
|
return true;
|
|
374
405
|
}
|
|
375
406
|
if ((code.startsWith("ERR_TLS_") || code.startsWith("ERR_SSL_")) && code.includes("CERT")) {
|
|
376
407
|
return true;
|
|
377
408
|
}
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
409
|
+
if (TRANSPORT_ERROR_CODES.has(code) || code.startsWith(UNDICI_TRANSPORT_ERROR_PREFIX)) {
|
|
410
|
+
return false;
|
|
411
|
+
}
|
|
412
|
+
const message = readMember(error, "message");
|
|
413
|
+
return typeof message === "string" ? /certificate|self signed|unable to verify|altname/i.test(message) : false;
|
|
414
|
+
}
|
|
415
|
+
function readMember(error, key) {
|
|
416
|
+
try {
|
|
417
|
+
return error[key];
|
|
418
|
+
} catch {
|
|
419
|
+
return void 0;
|
|
420
|
+
}
|
|
381
421
|
}
|
|
382
422
|
|
|
383
423
|
// src/lib/http-client/adapters/node-adapter-utils.ts
|
|
@@ -508,7 +548,6 @@ var NodeAdapter = class {
|
|
|
508
548
|
let activeResponseStream;
|
|
509
549
|
let activeBufferedResponse;
|
|
510
550
|
let isStreamFactoryPending = false;
|
|
511
|
-
let uploadedBodyBytes = 0;
|
|
512
551
|
let didFireUpload100 = false;
|
|
513
552
|
const reportUploadProgress = (event) => {
|
|
514
553
|
if (didFireUpload100) {
|
|
@@ -517,7 +556,6 @@ var NodeAdapter = class {
|
|
|
517
556
|
if (event.progress === 1) {
|
|
518
557
|
didFireUpload100 = true;
|
|
519
558
|
}
|
|
520
|
-
uploadedBodyBytes = Math.max(uploadedBodyBytes, event.loaded);
|
|
521
559
|
request.onUploadProgress?.(event);
|
|
522
560
|
};
|
|
523
561
|
reportUploadProgress({ loaded: 0, total: 0, progress: 0 });
|
|
@@ -567,7 +605,7 @@ var NodeAdapter = class {
|
|
|
567
605
|
return;
|
|
568
606
|
}
|
|
569
607
|
if (writable === null || isStreamResponseCancel(writable)) {
|
|
570
|
-
const cancelReason = writable !== null ? writable
|
|
608
|
+
const cancelReason = writable !== null ? readObjectMember(writable, "reason") : void 0;
|
|
571
609
|
streamAbort.abort();
|
|
572
610
|
req.destroy();
|
|
573
611
|
const abortErr = new Error(
|
|
@@ -739,7 +777,7 @@ var NodeAdapter = class {
|
|
|
739
777
|
);
|
|
740
778
|
});
|
|
741
779
|
})().catch((error) => {
|
|
742
|
-
reject(
|
|
780
|
+
reject(normalizeError(error));
|
|
743
781
|
});
|
|
744
782
|
});
|
|
745
783
|
req.on("error", (error) => {
|
|
@@ -766,7 +804,7 @@ var NodeAdapter = class {
|
|
|
766
804
|
);
|
|
767
805
|
return;
|
|
768
806
|
}
|
|
769
|
-
const
|
|
807
|
+
const wasDefinitelyNotSent = isPreConnectionError(error);
|
|
770
808
|
resolveAdapterResponse(
|
|
771
809
|
resolve,
|
|
772
810
|
req,
|
|
@@ -775,7 +813,7 @@ var NodeAdapter = class {
|
|
|
775
813
|
{
|
|
776
814
|
status: 0,
|
|
777
815
|
isTransportError: true,
|
|
778
|
-
|
|
816
|
+
...wasDefinitelyNotSent ? { wasDefinitelyNotSent: true } : {},
|
|
779
817
|
headers: {},
|
|
780
818
|
body: null,
|
|
781
819
|
errorCause: error
|
|
@@ -866,12 +904,14 @@ var NodeAdapter = class {
|
|
|
866
904
|
request.requestURL,
|
|
867
905
|
request.headers,
|
|
868
906
|
{
|
|
907
|
+
// No isRetryable veto: that would stop retrying an idempotent
|
|
908
|
+
// PUT or DELETE. Delivery is unproven rather than disproven, so
|
|
909
|
+
// nothing is claimed and the client's method rule decides.
|
|
869
910
|
status: 0,
|
|
870
911
|
isTransportError: true,
|
|
871
|
-
isRetryable: false,
|
|
872
912
|
headers: {},
|
|
873
913
|
body: null,
|
|
874
|
-
errorCause:
|
|
914
|
+
errorCause: normalizeError(error)
|
|
875
915
|
}
|
|
876
916
|
);
|
|
877
917
|
});
|
|
@@ -888,12 +928,14 @@ var NodeAdapter = class {
|
|
|
888
928
|
request.requestURL,
|
|
889
929
|
request.headers,
|
|
890
930
|
{
|
|
931
|
+
// No isRetryable veto: that would stop retrying an idempotent
|
|
932
|
+
// PUT or DELETE. Delivery is unproven rather than disproven, so
|
|
933
|
+
// nothing is claimed and the client's method rule decides.
|
|
891
934
|
status: 0,
|
|
892
935
|
isTransportError: true,
|
|
893
|
-
isRetryable: false,
|
|
894
936
|
headers: {},
|
|
895
937
|
body: null,
|
|
896
|
-
errorCause:
|
|
938
|
+
errorCause: normalizeError(error)
|
|
897
939
|
}
|
|
898
940
|
);
|
|
899
941
|
});
|
|
@@ -963,7 +1005,7 @@ async function streamResponseBody(res, writable, totalBytes, onProgress) {
|
|
|
963
1005
|
} catch (error) {
|
|
964
1006
|
settle({
|
|
965
1007
|
code: "stream_write_error",
|
|
966
|
-
cause:
|
|
1008
|
+
cause: normalizeError(error)
|
|
967
1009
|
});
|
|
968
1010
|
return;
|
|
969
1011
|
}
|
|
@@ -994,7 +1036,7 @@ async function streamResponseBody(res, writable, totalBytes, onProgress) {
|
|
|
994
1036
|
} catch (error) {
|
|
995
1037
|
settle({
|
|
996
1038
|
code: "stream_write_error",
|
|
997
|
-
cause:
|
|
1039
|
+
cause: normalizeError(error)
|
|
998
1040
|
});
|
|
999
1041
|
}
|
|
1000
1042
|
};
|
|
@@ -1100,6 +1142,16 @@ function removeWritableListener(writable, event, listener) {
|
|
|
1100
1142
|
const removable = writable;
|
|
1101
1143
|
removable.off?.(event, listener);
|
|
1102
1144
|
}
|
|
1145
|
+
var PRE_CONNECTION_ERROR_CODES = /* @__PURE__ */ new Set([
|
|
1146
|
+
"ECONNREFUSED",
|
|
1147
|
+
"ENOTFOUND",
|
|
1148
|
+
"EAI_AGAIN",
|
|
1149
|
+
"EADDRNOTAVAIL"
|
|
1150
|
+
]);
|
|
1151
|
+
function isPreConnectionError(error) {
|
|
1152
|
+
const code = readObjectMember(error, "code");
|
|
1153
|
+
return typeof code === "string" && PRE_CONNECTION_ERROR_CODES.has(code);
|
|
1154
|
+
}
|
|
1103
1155
|
function makeResponseStreamError(message, cause) {
|
|
1104
1156
|
const error = new Error(message);
|
|
1105
1157
|
if (cause) {
|
|
@@ -1108,7 +1160,7 @@ function makeResponseStreamError(message, cause) {
|
|
|
1108
1160
|
return error;
|
|
1109
1161
|
}
|
|
1110
1162
|
function markStreamFactoryError(error, req, fallbackHeaders) {
|
|
1111
|
-
const normalized =
|
|
1163
|
+
const normalized = normalizeError(error);
|
|
1112
1164
|
const tagged = normalized;
|
|
1113
1165
|
tagged[NON_RETRYABLE_HTTP_CLIENT_CALLBACK_ERROR_FLAG] = true;
|
|
1114
1166
|
Object.assign(normalized, { [STREAM_FACTORY_ERROR_FLAG]: true });
|
|
@@ -1132,7 +1184,34 @@ function markResponseStreamAbortError(error, req, fallbackHeaders, status, heade
|
|
|
1132
1184
|
return error;
|
|
1133
1185
|
}
|
|
1134
1186
|
function isStreamResponseCancel(value) {
|
|
1135
|
-
return value
|
|
1187
|
+
return readObjectMember(value, "cancel") === true;
|
|
1188
|
+
}
|
|
1189
|
+
function readObjectMember(source, key) {
|
|
1190
|
+
if (source === null || typeof source !== "object" && typeof source !== "function") {
|
|
1191
|
+
return void 0;
|
|
1192
|
+
}
|
|
1193
|
+
try {
|
|
1194
|
+
return source[key];
|
|
1195
|
+
} catch {
|
|
1196
|
+
return void 0;
|
|
1197
|
+
}
|
|
1198
|
+
}
|
|
1199
|
+
function isErrorValue2(value) {
|
|
1200
|
+
try {
|
|
1201
|
+
return value instanceof Error;
|
|
1202
|
+
} catch {
|
|
1203
|
+
return false;
|
|
1204
|
+
}
|
|
1205
|
+
}
|
|
1206
|
+
function normalizeError(value) {
|
|
1207
|
+
if (isErrorValue2(value)) {
|
|
1208
|
+
return value;
|
|
1209
|
+
}
|
|
1210
|
+
try {
|
|
1211
|
+
return new Error(String(value));
|
|
1212
|
+
} catch {
|
|
1213
|
+
return new Error("Unknown error");
|
|
1214
|
+
}
|
|
1136
1215
|
}
|
|
1137
1216
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1138
1217
|
0 && (module.exports = {
|