@balancy/wasm 1.0.39 → 1.0.41
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/Balancy.wasm +0 -0
- package/dist/index.cjs.js +120 -31
- package/dist/index.es.js +120 -31
- package/dist/index.umd.js +120 -31
- package/dist/node/index.cjs.js +120 -31
- package/dist/node/index.es.js +120 -31
- package/dist/node/index.umd.js +120 -31
- package/package.json +1 -1
package/dist/node/index.es.js
CHANGED
|
@@ -1198,17 +1198,18 @@ var Balancy = function() {
|
|
|
1198
1198
|
});
|
|
1199
1199
|
}
|
|
1200
1200
|
}
|
|
1201
|
-
function js_fetch(url, bLoadFile, method, headers, headersCount, body, successCallbackPtr, errorCallbackPtr, callbackPtr, binaryCallbackPtr) {
|
|
1201
|
+
function js_fetch(url, bLoadFile, method, headers, headersCount, body, successCallbackPtr, errorCallbackPtr, callbackPtr, binaryCallbackPtr, requestContextPtr) {
|
|
1202
|
+
var requestId = Date.now() + Math.random();
|
|
1202
1203
|
var urlString = "";
|
|
1203
1204
|
var methodString = "";
|
|
1204
1205
|
var bodyString = null;
|
|
1205
1206
|
try {
|
|
1206
1207
|
if (!url) {
|
|
1207
|
-
console.error("
|
|
1208
|
+
console.error("[ERROR] [Request ".concat(requestId, "] URL pointer is null"));
|
|
1208
1209
|
return;
|
|
1209
1210
|
}
|
|
1210
1211
|
if (!method) {
|
|
1211
|
-
console.error("
|
|
1212
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Method pointer is null"));
|
|
1212
1213
|
return;
|
|
1213
1214
|
}
|
|
1214
1215
|
urlString = UTF8ToString(url);
|
|
@@ -1217,51 +1218,80 @@ var Balancy = function() {
|
|
|
1217
1218
|
bodyString = UTF8ToString(body);
|
|
1218
1219
|
}
|
|
1219
1220
|
if (!urlString || urlString.length === 0) {
|
|
1220
|
-
console.error("
|
|
1221
|
+
console.error("[ERROR] [Request ".concat(requestId, "] URL is empty or invalid"));
|
|
1221
1222
|
return;
|
|
1222
1223
|
}
|
|
1223
1224
|
if (urlString.includes("\0") || urlString.includes("")) {
|
|
1224
|
-
console.error("
|
|
1225
|
+
console.error("[ERROR] [Request ".concat(requestId, "] URL contains invalid characters:"), urlString);
|
|
1225
1226
|
return;
|
|
1226
1227
|
}
|
|
1227
1228
|
} catch (error) {
|
|
1228
|
-
console.error("
|
|
1229
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Error reading strings from WASM memory:"), error);
|
|
1229
1230
|
return;
|
|
1230
1231
|
}
|
|
1231
|
-
var invokeErrorCallback = function(status, message
|
|
1232
|
-
|
|
1232
|
+
var invokeErrorCallback = function(status, message) {
|
|
1233
|
+
var details = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "";
|
|
1234
|
+
var fullMessage = "[Request ".concat(requestId, "] ").concat(bLoadFile ? "FILE LOAD" : "API REQUEST", " FAILED: ").concat(methodString, " ").concat(urlString).concat(details ? " - " + details : "");
|
|
1235
|
+
console.error("[ERROR] ".concat(fullMessage));
|
|
1236
|
+
console.error(" Status: ".concat(status));
|
|
1237
|
+
console.error(" Error: ".concat(message || "Unknown error"));
|
|
1238
|
+
if (bodyString) {
|
|
1239
|
+
console.error(" Request Body: ".concat(bodyString.length > 500 ? bodyString.substring(0, 500) + "..." : bodyString));
|
|
1240
|
+
}
|
|
1233
1241
|
try {
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1242
|
+
if (requestContextPtr) {
|
|
1243
|
+
Module._free(requestContextPtr);
|
|
1244
|
+
}
|
|
1245
|
+
if (!errorCallbackPtr || !callbackPtr) {
|
|
1246
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Invalid callback pointers: errorCallback=").concat(errorCallbackPtr, ", callback=").concat(callbackPtr));
|
|
1247
|
+
return;
|
|
1248
|
+
}
|
|
1249
|
+
var errorMessage = fullMessage + (message ? " - ".concat(message) : "");
|
|
1250
|
+
var errorLength = lengthBytesUTF8(errorMessage);
|
|
1251
|
+
if (errorLength <= 0 || errorLength > 1048576) {
|
|
1252
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Invalid error message length: ").concat(errorLength));
|
|
1253
|
+
return;
|
|
1254
|
+
}
|
|
1255
|
+
var errorPtr = Module._malloc(errorLength + 1);
|
|
1256
|
+
if (!errorPtr) {
|
|
1257
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Failed to allocate memory for error message"));
|
|
1258
|
+
return;
|
|
1259
|
+
}
|
|
1260
|
+
stringToUTF8(errorMessage, errorPtr, errorLength + 1);
|
|
1261
|
+
if (typeof Module["dynCall_viii"] !== "function") {
|
|
1262
|
+
console.error("[ERROR] [Request ".concat(requestId, "] dynCall_viii function not available"));
|
|
1263
|
+
Module._free(errorPtr);
|
|
1264
|
+
return;
|
|
1265
|
+
}
|
|
1238
1266
|
Module["dynCall_viii"](errorCallbackPtr, status, errorPtr, callbackPtr);
|
|
1239
1267
|
Module._free(errorPtr);
|
|
1240
1268
|
} catch (error) {
|
|
1241
|
-
console.error("
|
|
1269
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Error in error callback:"), error);
|
|
1242
1270
|
}
|
|
1243
1271
|
};
|
|
1244
1272
|
var headersObj = new Headers;
|
|
1245
1273
|
var ptrSize = Module.HEAPU32.BYTES_PER_ELEMENT;
|
|
1274
|
+
var headersLogged = [];
|
|
1246
1275
|
try {
|
|
1247
1276
|
for(var i = 0; i < headersCount; i += 2){
|
|
1248
1277
|
var keyPtr = getValue(headers + i * ptrSize, "*");
|
|
1249
1278
|
var valuePtr = getValue(headers + (i + 1) * ptrSize, "*");
|
|
1250
1279
|
if (!keyPtr || !valuePtr) {
|
|
1251
|
-
console.warn("
|
|
1280
|
+
console.warn("[WARN] [Request ".concat(requestId, "] Skipping invalid header pointer at index"), i);
|
|
1252
1281
|
continue;
|
|
1253
1282
|
}
|
|
1254
1283
|
var key = UTF8ToString(keyPtr);
|
|
1255
1284
|
var value = UTF8ToString(valuePtr);
|
|
1256
1285
|
if (!key || !value) {
|
|
1257
|
-
console.warn("
|
|
1286
|
+
console.warn("[WARN] [Request ".concat(requestId, "] Skipping empty header at index"), i);
|
|
1258
1287
|
continue;
|
|
1259
1288
|
}
|
|
1260
1289
|
headersObj.append(key, value);
|
|
1290
|
+
headersLogged.push("".concat(key, ": ").concat(value));
|
|
1261
1291
|
}
|
|
1262
1292
|
} catch (error) {
|
|
1263
|
-
console.error("
|
|
1264
|
-
invokeErrorCallback(-1, "Header processing error: " + error.message,
|
|
1293
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Error processing headers:"), error);
|
|
1294
|
+
invokeErrorCallback(-1, "Header processing error: " + error.message, "");
|
|
1265
1295
|
return;
|
|
1266
1296
|
}
|
|
1267
1297
|
var fetchOptions = {
|
|
@@ -1269,15 +1299,17 @@ var Balancy = function() {
|
|
|
1269
1299
|
headers: headersObj,
|
|
1270
1300
|
body: bodyString
|
|
1271
1301
|
};
|
|
1302
|
+
var startTime = performance.now();
|
|
1272
1303
|
fetch(urlString, fetchOptions).then(function(response) {
|
|
1304
|
+
performance.now() - startTime;
|
|
1273
1305
|
if (!response.ok) {
|
|
1274
|
-
console.
|
|
1306
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Response not OK, status: ").concat(response.status, " ").concat(response.statusText));
|
|
1275
1307
|
response.text().then(function(errorMessage) {
|
|
1276
|
-
console.
|
|
1277
|
-
invokeErrorCallback(response.status, errorMessage,
|
|
1308
|
+
console.error(" Response Body: ".concat(errorMessage));
|
|
1309
|
+
invokeErrorCallback(response.status, errorMessage, "HTTP ".concat(response.status, " ").concat(response.statusText));
|
|
1278
1310
|
}).catch(function() {
|
|
1279
|
-
console.
|
|
1280
|
-
invokeErrorCallback(response.status,
|
|
1311
|
+
console.error(" Failed to read error response body");
|
|
1312
|
+
invokeErrorCallback(response.status, "HTTP ".concat(response.status, " ").concat(response.statusText), "Could not read response body");
|
|
1281
1313
|
});
|
|
1282
1314
|
return;
|
|
1283
1315
|
}
|
|
@@ -1325,30 +1357,87 @@ var Balancy = function() {
|
|
|
1325
1357
|
if (isBinary) {
|
|
1326
1358
|
response.arrayBuffer().then(function(arrayBuffer) {
|
|
1327
1359
|
var dataSize = arrayBuffer.byteLength;
|
|
1360
|
+
if (dataSize <= 0 || dataSize > 104857600) {
|
|
1361
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Invalid binary data size: ").concat(dataSize));
|
|
1362
|
+
invokeErrorCallback(-1, "Invalid binary data size: ".concat(dataSize), "");
|
|
1363
|
+
return;
|
|
1364
|
+
}
|
|
1328
1365
|
var dataPtr = Module._malloc(dataSize);
|
|
1366
|
+
if (!dataPtr) {
|
|
1367
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Failed to allocate ").concat(dataSize, " bytes for binary data"));
|
|
1368
|
+
invokeErrorCallback(-1, "Memory allocation failed for binary data", "");
|
|
1369
|
+
return;
|
|
1370
|
+
}
|
|
1329
1371
|
var dataView = new Uint8Array(arrayBuffer);
|
|
1330
1372
|
Module.HEAPU8.set(dataView, dataPtr);
|
|
1331
|
-
|
|
1373
|
+
try {
|
|
1374
|
+
if (!binaryCallbackPtr || !callbackPtr) {
|
|
1375
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Invalid binary callback pointers: binary=").concat(binaryCallbackPtr, ", callback=").concat(callbackPtr));
|
|
1376
|
+
Module._free(dataPtr);
|
|
1377
|
+
return;
|
|
1378
|
+
}
|
|
1379
|
+
if (typeof Module["dynCall_viii"] !== "function") {
|
|
1380
|
+
console.error("[ERROR] [Request ".concat(requestId, "] dynCall_viii function not available for binary callback"));
|
|
1381
|
+
Module._free(dataPtr);
|
|
1382
|
+
return;
|
|
1383
|
+
}
|
|
1384
|
+
Module["dynCall_viii"](binaryCallbackPtr, dataPtr, dataSize, callbackPtr);
|
|
1385
|
+
if (requestContextPtr) {
|
|
1386
|
+
Module._free(requestContextPtr);
|
|
1387
|
+
}
|
|
1388
|
+
} catch (error) {
|
|
1389
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Error calling binary callback:"), error);
|
|
1390
|
+
invokeErrorCallback(-1, "Binary callback error: " + error.message, "");
|
|
1391
|
+
}
|
|
1332
1392
|
Module._free(dataPtr);
|
|
1333
1393
|
}).catch(function(error) {
|
|
1334
|
-
console.
|
|
1335
|
-
invokeErrorCallback(-1, error.message,
|
|
1394
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Error reading binary data:"), error);
|
|
1395
|
+
invokeErrorCallback(-1, error.message, "Failed to read binary response");
|
|
1336
1396
|
});
|
|
1337
1397
|
} else {
|
|
1338
1398
|
response.text().then(function(data) {
|
|
1339
1399
|
var dataLength = lengthBytesUTF8(data);
|
|
1400
|
+
if (dataLength <= 0 || dataLength > 104857600) {
|
|
1401
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Invalid text data size: ").concat(dataLength));
|
|
1402
|
+
invokeErrorCallback(-1, "Invalid text data size: ".concat(dataLength), "");
|
|
1403
|
+
return;
|
|
1404
|
+
}
|
|
1340
1405
|
var dataPtr = Module._malloc(dataLength + 1);
|
|
1341
|
-
|
|
1342
|
-
|
|
1406
|
+
if (!dataPtr) {
|
|
1407
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Failed to allocate ").concat(dataLength + 1, " bytes for text data"));
|
|
1408
|
+
invokeErrorCallback(-1, "Memory allocation failed for text data", "");
|
|
1409
|
+
return;
|
|
1410
|
+
}
|
|
1411
|
+
try {
|
|
1412
|
+
stringToUTF8(data, dataPtr, dataLength + 1);
|
|
1413
|
+
if (!successCallbackPtr || !callbackPtr) {
|
|
1414
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Invalid text callback pointers: success=").concat(successCallbackPtr, ", callback=").concat(callbackPtr));
|
|
1415
|
+
Module._free(dataPtr);
|
|
1416
|
+
return;
|
|
1417
|
+
}
|
|
1418
|
+
if (typeof Module["dynCall_viii"] !== "function") {
|
|
1419
|
+
console.error("[ERROR] [Request ".concat(requestId, "] dynCall_viii function not available for text callback"));
|
|
1420
|
+
Module._free(dataPtr);
|
|
1421
|
+
return;
|
|
1422
|
+
}
|
|
1423
|
+
Module["dynCall_viii"](successCallbackPtr, dataPtr, dataLength, callbackPtr);
|
|
1424
|
+
if (requestContextPtr) {
|
|
1425
|
+
Module._free(requestContextPtr);
|
|
1426
|
+
}
|
|
1427
|
+
} catch (error) {
|
|
1428
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Error calling text callback:"), error);
|
|
1429
|
+
invokeErrorCallback(-1, "Text callback error: " + error.message, "");
|
|
1430
|
+
}
|
|
1343
1431
|
Module._free(dataPtr);
|
|
1344
1432
|
}).catch(function(error) {
|
|
1345
|
-
console.
|
|
1346
|
-
invokeErrorCallback(-1, error.message,
|
|
1433
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Error reading text data:"), error);
|
|
1434
|
+
invokeErrorCallback(-1, error.message, "Failed to read text response");
|
|
1347
1435
|
});
|
|
1348
1436
|
}
|
|
1349
1437
|
}).catch(function(error) {
|
|
1350
|
-
|
|
1351
|
-
|
|
1438
|
+
var duration = performance.now() - startTime;
|
|
1439
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Fetch error after ").concat(duration.toFixed(2), "ms:"), error);
|
|
1440
|
+
invokeErrorCallback(-1, error.message, "Network fetch failed");
|
|
1352
1441
|
});
|
|
1353
1442
|
}
|
|
1354
1443
|
function js_call_typescript_bridge_send_ack(connectionId, ackId, responseData) {
|
package/dist/node/index.umd.js
CHANGED
|
@@ -1203,17 +1203,18 @@
|
|
|
1203
1203
|
});
|
|
1204
1204
|
}
|
|
1205
1205
|
}
|
|
1206
|
-
function js_fetch(url, bLoadFile, method, headers, headersCount, body, successCallbackPtr, errorCallbackPtr, callbackPtr, binaryCallbackPtr) {
|
|
1206
|
+
function js_fetch(url, bLoadFile, method, headers, headersCount, body, successCallbackPtr, errorCallbackPtr, callbackPtr, binaryCallbackPtr, requestContextPtr) {
|
|
1207
|
+
var requestId = Date.now() + Math.random();
|
|
1207
1208
|
var urlString = "";
|
|
1208
1209
|
var methodString = "";
|
|
1209
1210
|
var bodyString = null;
|
|
1210
1211
|
try {
|
|
1211
1212
|
if (!url) {
|
|
1212
|
-
console.error("
|
|
1213
|
+
console.error("[ERROR] [Request ".concat(requestId, "] URL pointer is null"));
|
|
1213
1214
|
return;
|
|
1214
1215
|
}
|
|
1215
1216
|
if (!method) {
|
|
1216
|
-
console.error("
|
|
1217
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Method pointer is null"));
|
|
1217
1218
|
return;
|
|
1218
1219
|
}
|
|
1219
1220
|
urlString = UTF8ToString(url);
|
|
@@ -1222,51 +1223,80 @@
|
|
|
1222
1223
|
bodyString = UTF8ToString(body);
|
|
1223
1224
|
}
|
|
1224
1225
|
if (!urlString || urlString.length === 0) {
|
|
1225
|
-
console.error("
|
|
1226
|
+
console.error("[ERROR] [Request ".concat(requestId, "] URL is empty or invalid"));
|
|
1226
1227
|
return;
|
|
1227
1228
|
}
|
|
1228
1229
|
if (urlString.includes("\0") || urlString.includes("")) {
|
|
1229
|
-
console.error("
|
|
1230
|
+
console.error("[ERROR] [Request ".concat(requestId, "] URL contains invalid characters:"), urlString);
|
|
1230
1231
|
return;
|
|
1231
1232
|
}
|
|
1232
1233
|
} catch (error) {
|
|
1233
|
-
console.error("
|
|
1234
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Error reading strings from WASM memory:"), error);
|
|
1234
1235
|
return;
|
|
1235
1236
|
}
|
|
1236
|
-
var invokeErrorCallback = function(status, message
|
|
1237
|
-
|
|
1237
|
+
var invokeErrorCallback = function(status, message) {
|
|
1238
|
+
var details = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "";
|
|
1239
|
+
var fullMessage = "[Request ".concat(requestId, "] ").concat(bLoadFile ? "FILE LOAD" : "API REQUEST", " FAILED: ").concat(methodString, " ").concat(urlString).concat(details ? " - " + details : "");
|
|
1240
|
+
console.error("[ERROR] ".concat(fullMessage));
|
|
1241
|
+
console.error(" Status: ".concat(status));
|
|
1242
|
+
console.error(" Error: ".concat(message || "Unknown error"));
|
|
1243
|
+
if (bodyString) {
|
|
1244
|
+
console.error(" Request Body: ".concat(bodyString.length > 500 ? bodyString.substring(0, 500) + "..." : bodyString));
|
|
1245
|
+
}
|
|
1238
1246
|
try {
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1247
|
+
if (requestContextPtr) {
|
|
1248
|
+
Module._free(requestContextPtr);
|
|
1249
|
+
}
|
|
1250
|
+
if (!errorCallbackPtr || !callbackPtr) {
|
|
1251
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Invalid callback pointers: errorCallback=").concat(errorCallbackPtr, ", callback=").concat(callbackPtr));
|
|
1252
|
+
return;
|
|
1253
|
+
}
|
|
1254
|
+
var errorMessage = fullMessage + (message ? " - ".concat(message) : "");
|
|
1255
|
+
var errorLength = lengthBytesUTF8(errorMessage);
|
|
1256
|
+
if (errorLength <= 0 || errorLength > 1048576) {
|
|
1257
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Invalid error message length: ").concat(errorLength));
|
|
1258
|
+
return;
|
|
1259
|
+
}
|
|
1260
|
+
var errorPtr = Module._malloc(errorLength + 1);
|
|
1261
|
+
if (!errorPtr) {
|
|
1262
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Failed to allocate memory for error message"));
|
|
1263
|
+
return;
|
|
1264
|
+
}
|
|
1265
|
+
stringToUTF8(errorMessage, errorPtr, errorLength + 1);
|
|
1266
|
+
if (typeof Module["dynCall_viii"] !== "function") {
|
|
1267
|
+
console.error("[ERROR] [Request ".concat(requestId, "] dynCall_viii function not available"));
|
|
1268
|
+
Module._free(errorPtr);
|
|
1269
|
+
return;
|
|
1270
|
+
}
|
|
1243
1271
|
Module["dynCall_viii"](errorCallbackPtr, status, errorPtr, callbackPtr);
|
|
1244
1272
|
Module._free(errorPtr);
|
|
1245
1273
|
} catch (error) {
|
|
1246
|
-
console.error("
|
|
1274
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Error in error callback:"), error);
|
|
1247
1275
|
}
|
|
1248
1276
|
};
|
|
1249
1277
|
var headersObj = new Headers;
|
|
1250
1278
|
var ptrSize = Module.HEAPU32.BYTES_PER_ELEMENT;
|
|
1279
|
+
var headersLogged = [];
|
|
1251
1280
|
try {
|
|
1252
1281
|
for(var i = 0; i < headersCount; i += 2){
|
|
1253
1282
|
var keyPtr = getValue(headers + i * ptrSize, "*");
|
|
1254
1283
|
var valuePtr = getValue(headers + (i + 1) * ptrSize, "*");
|
|
1255
1284
|
if (!keyPtr || !valuePtr) {
|
|
1256
|
-
console.warn("
|
|
1285
|
+
console.warn("[WARN] [Request ".concat(requestId, "] Skipping invalid header pointer at index"), i);
|
|
1257
1286
|
continue;
|
|
1258
1287
|
}
|
|
1259
1288
|
var key = UTF8ToString(keyPtr);
|
|
1260
1289
|
var value = UTF8ToString(valuePtr);
|
|
1261
1290
|
if (!key || !value) {
|
|
1262
|
-
console.warn("
|
|
1291
|
+
console.warn("[WARN] [Request ".concat(requestId, "] Skipping empty header at index"), i);
|
|
1263
1292
|
continue;
|
|
1264
1293
|
}
|
|
1265
1294
|
headersObj.append(key, value);
|
|
1295
|
+
headersLogged.push("".concat(key, ": ").concat(value));
|
|
1266
1296
|
}
|
|
1267
1297
|
} catch (error) {
|
|
1268
|
-
console.error("
|
|
1269
|
-
invokeErrorCallback(-1, "Header processing error: " + error.message,
|
|
1298
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Error processing headers:"), error);
|
|
1299
|
+
invokeErrorCallback(-1, "Header processing error: " + error.message, "");
|
|
1270
1300
|
return;
|
|
1271
1301
|
}
|
|
1272
1302
|
var fetchOptions = {
|
|
@@ -1274,15 +1304,17 @@
|
|
|
1274
1304
|
headers: headersObj,
|
|
1275
1305
|
body: bodyString
|
|
1276
1306
|
};
|
|
1307
|
+
var startTime = performance.now();
|
|
1277
1308
|
fetch(urlString, fetchOptions).then(function(response) {
|
|
1309
|
+
performance.now() - startTime;
|
|
1278
1310
|
if (!response.ok) {
|
|
1279
|
-
console.
|
|
1311
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Response not OK, status: ").concat(response.status, " ").concat(response.statusText));
|
|
1280
1312
|
response.text().then(function(errorMessage) {
|
|
1281
|
-
console.
|
|
1282
|
-
invokeErrorCallback(response.status, errorMessage,
|
|
1313
|
+
console.error(" Response Body: ".concat(errorMessage));
|
|
1314
|
+
invokeErrorCallback(response.status, errorMessage, "HTTP ".concat(response.status, " ").concat(response.statusText));
|
|
1283
1315
|
}).catch(function() {
|
|
1284
|
-
console.
|
|
1285
|
-
invokeErrorCallback(response.status,
|
|
1316
|
+
console.error(" Failed to read error response body");
|
|
1317
|
+
invokeErrorCallback(response.status, "HTTP ".concat(response.status, " ").concat(response.statusText), "Could not read response body");
|
|
1286
1318
|
});
|
|
1287
1319
|
return;
|
|
1288
1320
|
}
|
|
@@ -1330,30 +1362,87 @@
|
|
|
1330
1362
|
if (isBinary) {
|
|
1331
1363
|
response.arrayBuffer().then(function(arrayBuffer) {
|
|
1332
1364
|
var dataSize = arrayBuffer.byteLength;
|
|
1365
|
+
if (dataSize <= 0 || dataSize > 104857600) {
|
|
1366
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Invalid binary data size: ").concat(dataSize));
|
|
1367
|
+
invokeErrorCallback(-1, "Invalid binary data size: ".concat(dataSize), "");
|
|
1368
|
+
return;
|
|
1369
|
+
}
|
|
1333
1370
|
var dataPtr = Module._malloc(dataSize);
|
|
1371
|
+
if (!dataPtr) {
|
|
1372
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Failed to allocate ").concat(dataSize, " bytes for binary data"));
|
|
1373
|
+
invokeErrorCallback(-1, "Memory allocation failed for binary data", "");
|
|
1374
|
+
return;
|
|
1375
|
+
}
|
|
1334
1376
|
var dataView = new Uint8Array(arrayBuffer);
|
|
1335
1377
|
Module.HEAPU8.set(dataView, dataPtr);
|
|
1336
|
-
|
|
1378
|
+
try {
|
|
1379
|
+
if (!binaryCallbackPtr || !callbackPtr) {
|
|
1380
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Invalid binary callback pointers: binary=").concat(binaryCallbackPtr, ", callback=").concat(callbackPtr));
|
|
1381
|
+
Module._free(dataPtr);
|
|
1382
|
+
return;
|
|
1383
|
+
}
|
|
1384
|
+
if (typeof Module["dynCall_viii"] !== "function") {
|
|
1385
|
+
console.error("[ERROR] [Request ".concat(requestId, "] dynCall_viii function not available for binary callback"));
|
|
1386
|
+
Module._free(dataPtr);
|
|
1387
|
+
return;
|
|
1388
|
+
}
|
|
1389
|
+
Module["dynCall_viii"](binaryCallbackPtr, dataPtr, dataSize, callbackPtr);
|
|
1390
|
+
if (requestContextPtr) {
|
|
1391
|
+
Module._free(requestContextPtr);
|
|
1392
|
+
}
|
|
1393
|
+
} catch (error) {
|
|
1394
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Error calling binary callback:"), error);
|
|
1395
|
+
invokeErrorCallback(-1, "Binary callback error: " + error.message, "");
|
|
1396
|
+
}
|
|
1337
1397
|
Module._free(dataPtr);
|
|
1338
1398
|
}).catch(function(error) {
|
|
1339
|
-
console.
|
|
1340
|
-
invokeErrorCallback(-1, error.message,
|
|
1399
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Error reading binary data:"), error);
|
|
1400
|
+
invokeErrorCallback(-1, error.message, "Failed to read binary response");
|
|
1341
1401
|
});
|
|
1342
1402
|
} else {
|
|
1343
1403
|
response.text().then(function(data) {
|
|
1344
1404
|
var dataLength = lengthBytesUTF8(data);
|
|
1405
|
+
if (dataLength <= 0 || dataLength > 104857600) {
|
|
1406
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Invalid text data size: ").concat(dataLength));
|
|
1407
|
+
invokeErrorCallback(-1, "Invalid text data size: ".concat(dataLength), "");
|
|
1408
|
+
return;
|
|
1409
|
+
}
|
|
1345
1410
|
var dataPtr = Module._malloc(dataLength + 1);
|
|
1346
|
-
|
|
1347
|
-
|
|
1411
|
+
if (!dataPtr) {
|
|
1412
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Failed to allocate ").concat(dataLength + 1, " bytes for text data"));
|
|
1413
|
+
invokeErrorCallback(-1, "Memory allocation failed for text data", "");
|
|
1414
|
+
return;
|
|
1415
|
+
}
|
|
1416
|
+
try {
|
|
1417
|
+
stringToUTF8(data, dataPtr, dataLength + 1);
|
|
1418
|
+
if (!successCallbackPtr || !callbackPtr) {
|
|
1419
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Invalid text callback pointers: success=").concat(successCallbackPtr, ", callback=").concat(callbackPtr));
|
|
1420
|
+
Module._free(dataPtr);
|
|
1421
|
+
return;
|
|
1422
|
+
}
|
|
1423
|
+
if (typeof Module["dynCall_viii"] !== "function") {
|
|
1424
|
+
console.error("[ERROR] [Request ".concat(requestId, "] dynCall_viii function not available for text callback"));
|
|
1425
|
+
Module._free(dataPtr);
|
|
1426
|
+
return;
|
|
1427
|
+
}
|
|
1428
|
+
Module["dynCall_viii"](successCallbackPtr, dataPtr, dataLength, callbackPtr);
|
|
1429
|
+
if (requestContextPtr) {
|
|
1430
|
+
Module._free(requestContextPtr);
|
|
1431
|
+
}
|
|
1432
|
+
} catch (error) {
|
|
1433
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Error calling text callback:"), error);
|
|
1434
|
+
invokeErrorCallback(-1, "Text callback error: " + error.message, "");
|
|
1435
|
+
}
|
|
1348
1436
|
Module._free(dataPtr);
|
|
1349
1437
|
}).catch(function(error) {
|
|
1350
|
-
console.
|
|
1351
|
-
invokeErrorCallback(-1, error.message,
|
|
1438
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Error reading text data:"), error);
|
|
1439
|
+
invokeErrorCallback(-1, error.message, "Failed to read text response");
|
|
1352
1440
|
});
|
|
1353
1441
|
}
|
|
1354
1442
|
}).catch(function(error) {
|
|
1355
|
-
|
|
1356
|
-
|
|
1443
|
+
var duration = performance.now() - startTime;
|
|
1444
|
+
console.error("[ERROR] [Request ".concat(requestId, "] Fetch error after ").concat(duration.toFixed(2), "ms:"), error);
|
|
1445
|
+
invokeErrorCallback(-1, error.message, "Network fetch failed");
|
|
1357
1446
|
});
|
|
1358
1447
|
}
|
|
1359
1448
|
function js_call_typescript_bridge_send_ack(connectionId, ackId, responseData) {
|