@upyo/jmap 0.5.0-dev.168 → 0.5.0-dev.172
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 +10 -17
- package/dist/index.js +11 -18
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -92,13 +92,13 @@ async function uploadBlob(config, uploadUrl, accountId, blob, signal) {
|
|
|
92
92
|
for (const [key, value] of Object.entries(config.headers)) headers[key] = value;
|
|
93
93
|
const controller = new AbortController();
|
|
94
94
|
const timeoutId = setTimeout(() => controller.abort(), config.timeout);
|
|
95
|
-
const combinedSignal =
|
|
95
|
+
const combinedSignal = (0, __upyo_core.combineSignals)(controller.signal, signal);
|
|
96
96
|
try {
|
|
97
97
|
const response = await fetch(url, {
|
|
98
98
|
method: "POST",
|
|
99
99
|
headers,
|
|
100
100
|
body: blob,
|
|
101
|
-
signal: combinedSignal
|
|
101
|
+
signal: combinedSignal.signal
|
|
102
102
|
});
|
|
103
103
|
if (!response.ok) {
|
|
104
104
|
const body = await response.text();
|
|
@@ -107,23 +107,10 @@ async function uploadBlob(config, uploadUrl, accountId, blob, signal) {
|
|
|
107
107
|
const result = await response.json();
|
|
108
108
|
return result;
|
|
109
109
|
} finally {
|
|
110
|
+
combinedSignal.cleanup();
|
|
110
111
|
clearTimeout(timeoutId);
|
|
111
112
|
}
|
|
112
113
|
}
|
|
113
|
-
/**
|
|
114
|
-
* Combine multiple abort signals into one.
|
|
115
|
-
*/
|
|
116
|
-
function combineSignals(...signals) {
|
|
117
|
-
const controller = new AbortController();
|
|
118
|
-
for (const signal of signals) {
|
|
119
|
-
if (signal.aborted) {
|
|
120
|
-
controller.abort(signal.reason);
|
|
121
|
-
break;
|
|
122
|
-
}
|
|
123
|
-
signal.addEventListener("abort", () => controller.abort(signal.reason), { once: true });
|
|
124
|
-
}
|
|
125
|
-
return controller.signal;
|
|
126
|
-
}
|
|
127
114
|
|
|
128
115
|
//#endregion
|
|
129
116
|
//#region src/config.ts
|
|
@@ -203,7 +190,7 @@ var JmapHttpClient = class {
|
|
|
203
190
|
}
|
|
204
191
|
return await response.json();
|
|
205
192
|
} catch (error) {
|
|
206
|
-
if (error
|
|
193
|
+
if (isCallerAbort(error, signal)) throw error;
|
|
207
194
|
if (error instanceof JmapApiError && error.statusCode !== void 0) {
|
|
208
195
|
if (error.statusCode >= 400 && error.statusCode < 500) throw error;
|
|
209
196
|
}
|
|
@@ -263,6 +250,12 @@ var JmapHttpClient = class {
|
|
|
263
250
|
}
|
|
264
251
|
}
|
|
265
252
|
};
|
|
253
|
+
function isCallerAbort(error, signal) {
|
|
254
|
+
return signal?.aborted === true && (isAbortError(error) || error === signal.reason);
|
|
255
|
+
}
|
|
256
|
+
function isAbortError(error) {
|
|
257
|
+
return error instanceof Error && error.name === "AbortError";
|
|
258
|
+
}
|
|
266
259
|
|
|
267
260
|
//#endregion
|
|
268
261
|
//#region src/message-converter.ts
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createFailedReceipt, parseRetryAfter } from "@upyo/core";
|
|
1
|
+
import { combineSignals, createFailedReceipt, parseRetryAfter } from "@upyo/core";
|
|
2
2
|
|
|
3
3
|
//#region src/errors.ts
|
|
4
4
|
/**
|
|
@@ -69,13 +69,13 @@ async function uploadBlob(config, uploadUrl, accountId, blob, signal) {
|
|
|
69
69
|
for (const [key, value] of Object.entries(config.headers)) headers[key] = value;
|
|
70
70
|
const controller = new AbortController();
|
|
71
71
|
const timeoutId = setTimeout(() => controller.abort(), config.timeout);
|
|
72
|
-
const combinedSignal =
|
|
72
|
+
const combinedSignal = combineSignals(controller.signal, signal);
|
|
73
73
|
try {
|
|
74
74
|
const response = await fetch(url, {
|
|
75
75
|
method: "POST",
|
|
76
76
|
headers,
|
|
77
77
|
body: blob,
|
|
78
|
-
signal: combinedSignal
|
|
78
|
+
signal: combinedSignal.signal
|
|
79
79
|
});
|
|
80
80
|
if (!response.ok) {
|
|
81
81
|
const body = await response.text();
|
|
@@ -84,23 +84,10 @@ async function uploadBlob(config, uploadUrl, accountId, blob, signal) {
|
|
|
84
84
|
const result = await response.json();
|
|
85
85
|
return result;
|
|
86
86
|
} finally {
|
|
87
|
+
combinedSignal.cleanup();
|
|
87
88
|
clearTimeout(timeoutId);
|
|
88
89
|
}
|
|
89
90
|
}
|
|
90
|
-
/**
|
|
91
|
-
* Combine multiple abort signals into one.
|
|
92
|
-
*/
|
|
93
|
-
function combineSignals(...signals) {
|
|
94
|
-
const controller = new AbortController();
|
|
95
|
-
for (const signal of signals) {
|
|
96
|
-
if (signal.aborted) {
|
|
97
|
-
controller.abort(signal.reason);
|
|
98
|
-
break;
|
|
99
|
-
}
|
|
100
|
-
signal.addEventListener("abort", () => controller.abort(signal.reason), { once: true });
|
|
101
|
-
}
|
|
102
|
-
return controller.signal;
|
|
103
|
-
}
|
|
104
91
|
|
|
105
92
|
//#endregion
|
|
106
93
|
//#region src/config.ts
|
|
@@ -180,7 +167,7 @@ var JmapHttpClient = class {
|
|
|
180
167
|
}
|
|
181
168
|
return await response.json();
|
|
182
169
|
} catch (error) {
|
|
183
|
-
if (error
|
|
170
|
+
if (isCallerAbort(error, signal)) throw error;
|
|
184
171
|
if (error instanceof JmapApiError && error.statusCode !== void 0) {
|
|
185
172
|
if (error.statusCode >= 400 && error.statusCode < 500) throw error;
|
|
186
173
|
}
|
|
@@ -240,6 +227,12 @@ var JmapHttpClient = class {
|
|
|
240
227
|
}
|
|
241
228
|
}
|
|
242
229
|
};
|
|
230
|
+
function isCallerAbort(error, signal) {
|
|
231
|
+
return signal?.aborted === true && (isAbortError(error) || error === signal.reason);
|
|
232
|
+
}
|
|
233
|
+
function isAbortError(error) {
|
|
234
|
+
return error instanceof Error && error.name === "AbortError";
|
|
235
|
+
}
|
|
243
236
|
|
|
244
237
|
//#endregion
|
|
245
238
|
//#region src/message-converter.ts
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@upyo/jmap",
|
|
3
|
-
"version": "0.5.0-dev.
|
|
3
|
+
"version": "0.5.0-dev.172",
|
|
4
4
|
"description": "JMAP transport for Upyo email library",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"email",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
},
|
|
54
54
|
"sideEffects": false,
|
|
55
55
|
"peerDependencies": {
|
|
56
|
-
"@upyo/core": "0.5.0-dev.
|
|
56
|
+
"@upyo/core": "0.5.0-dev.172+1b1248e1"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"jmap-rfc-types": "^0.1.2",
|