@tinycloud/sdk-services 2.10.0 → 2.11.0-beta.10
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 +79 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +79 -7
- package/dist/index.js.map +1 -1
- package/dist/kv/index.cjs +79 -7
- package/dist/kv/index.cjs.map +1 -1
- package/dist/kv/index.js +79 -7
- package/dist/kv/index.js.map +1 -1
- package/package.json +7 -3
package/dist/kv/index.js
CHANGED
|
@@ -1192,6 +1192,7 @@ var KVService = class extends BaseService {
|
|
|
1192
1192
|
}
|
|
1193
1193
|
seen.add(path);
|
|
1194
1194
|
}
|
|
1195
|
+
let requestMayHaveDispatched = false;
|
|
1195
1196
|
try {
|
|
1196
1197
|
const body = new FormData();
|
|
1197
1198
|
for (let index = 0; index < items.length; index++) {
|
|
@@ -1209,14 +1210,31 @@ var KVService = class extends BaseService {
|
|
|
1209
1210
|
action: KVAction.PUT
|
|
1210
1211
|
}))
|
|
1211
1212
|
);
|
|
1212
|
-
const
|
|
1213
|
+
const url = `${this.host}/invoke`;
|
|
1214
|
+
const init = {
|
|
1213
1215
|
method: "POST",
|
|
1214
1216
|
headers,
|
|
1215
1217
|
body,
|
|
1216
1218
|
signal: this.combineSignals(options?.signal)
|
|
1217
|
-
}
|
|
1219
|
+
};
|
|
1220
|
+
const fetchFn = this.context.fetch;
|
|
1221
|
+
requestMayHaveDispatched = true;
|
|
1222
|
+
const response = await fetchFn(url, init);
|
|
1218
1223
|
if (!response.ok) {
|
|
1219
|
-
|
|
1224
|
+
let errorText;
|
|
1225
|
+
try {
|
|
1226
|
+
errorText = await response.text();
|
|
1227
|
+
} catch (textError) {
|
|
1228
|
+
const cause = textError instanceof Error ? textError : new Error(String(textError));
|
|
1229
|
+
return err(
|
|
1230
|
+
serviceError(
|
|
1231
|
+
ErrorCodes.KV_WRITE_FAILED,
|
|
1232
|
+
`Failed to batch put ${items.length} key(s): ${response.status} - <response body could not be read: ${cause.message}>`,
|
|
1233
|
+
"kv",
|
|
1234
|
+
{ cause, meta: { status: response.status, statusText: response.statusText } }
|
|
1235
|
+
)
|
|
1236
|
+
);
|
|
1237
|
+
}
|
|
1220
1238
|
if (response.status === 401 || response.status === 403) {
|
|
1221
1239
|
const { resource, action } = parseAuthError(errorText);
|
|
1222
1240
|
return err(authUnauthorizedError("kv", errorText, {
|
|
@@ -1242,19 +1260,73 @@ var KVService = class extends BaseService {
|
|
|
1242
1260
|
)
|
|
1243
1261
|
);
|
|
1244
1262
|
}
|
|
1245
|
-
|
|
1246
|
-
|
|
1263
|
+
let rawBody;
|
|
1264
|
+
try {
|
|
1265
|
+
rawBody = await response.json();
|
|
1266
|
+
} catch (jsonError) {
|
|
1267
|
+
const cause = jsonError instanceof Error ? jsonError : new Error(String(jsonError));
|
|
1268
|
+
return err(
|
|
1269
|
+
serviceError(
|
|
1270
|
+
ErrorCodes.NETWORK_ERROR,
|
|
1271
|
+
`KV batchPut response was not valid JSON: ${cause.message}`,
|
|
1272
|
+
"kv",
|
|
1273
|
+
{
|
|
1274
|
+
cause,
|
|
1275
|
+
meta: {
|
|
1276
|
+
requestMayHaveDispatched: true,
|
|
1277
|
+
responseReceived: true,
|
|
1278
|
+
status: response.status,
|
|
1279
|
+
outcome: "batch-unconfirmed"
|
|
1280
|
+
}
|
|
1281
|
+
}
|
|
1282
|
+
)
|
|
1283
|
+
);
|
|
1284
|
+
}
|
|
1285
|
+
const batchResponse = this.normalizeBatchPutResponse(rawBody);
|
|
1286
|
+
if (!batchResponse) {
|
|
1247
1287
|
return err(
|
|
1248
1288
|
serviceError(
|
|
1249
1289
|
ErrorCodes.NETWORK_ERROR,
|
|
1250
1290
|
"KV batchPut response did not include matching written keys and count",
|
|
1251
|
-
"kv"
|
|
1291
|
+
"kv",
|
|
1292
|
+
{
|
|
1293
|
+
meta: {
|
|
1294
|
+
requestMayHaveDispatched: true,
|
|
1295
|
+
responseReceived: true,
|
|
1296
|
+
status: response.status,
|
|
1297
|
+
outcome: "batch-unconfirmed"
|
|
1298
|
+
}
|
|
1299
|
+
}
|
|
1300
|
+
)
|
|
1301
|
+
);
|
|
1302
|
+
}
|
|
1303
|
+
const requestedPaths = new Set(paths);
|
|
1304
|
+
const writtenPaths = new Set(batchResponse.written);
|
|
1305
|
+
const matchesRequest = batchResponse.count === paths.length && batchResponse.written.length === paths.length && writtenPaths.size === paths.length && batchResponse.written.every((key) => requestedPaths.has(key));
|
|
1306
|
+
if (!matchesRequest) {
|
|
1307
|
+
return err(
|
|
1308
|
+
serviceError(
|
|
1309
|
+
ErrorCodes.NETWORK_ERROR,
|
|
1310
|
+
`KV batchPut response did not confirm all ${paths.length} requested key(s) were written`,
|
|
1311
|
+
"kv",
|
|
1312
|
+
{
|
|
1313
|
+
meta: {
|
|
1314
|
+
requestMayHaveDispatched: true,
|
|
1315
|
+
responseReceived: true,
|
|
1316
|
+
status: response.status,
|
|
1317
|
+
outcome: "batch-unconfirmed"
|
|
1318
|
+
}
|
|
1319
|
+
}
|
|
1252
1320
|
)
|
|
1253
1321
|
);
|
|
1254
1322
|
}
|
|
1255
1323
|
return ok(batchResponse);
|
|
1256
1324
|
} catch (error) {
|
|
1257
|
-
|
|
1325
|
+
const wrapped = wrapError("kv", error);
|
|
1326
|
+
return err({
|
|
1327
|
+
...wrapped,
|
|
1328
|
+
meta: { ...wrapped.meta, requestMayHaveDispatched }
|
|
1329
|
+
});
|
|
1258
1330
|
}
|
|
1259
1331
|
});
|
|
1260
1332
|
}
|