@carbonorm/carbonnode 3.7.6 → 3.7.8

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.
Files changed (38) hide show
  1. package/README.md +2 -1
  2. package/dist/api/orm/builders/AggregateBuilder.d.ts +1 -0
  3. package/dist/api/types/ormInterfaces.d.ts +2 -2
  4. package/dist/api/utils/cacheManager.d.ts +1 -1
  5. package/dist/api/utils/normalizeSingularRequest.d.ts +10 -0
  6. package/dist/index.cjs.js +182 -32
  7. package/dist/index.cjs.js.map +1 -1
  8. package/dist/index.d.ts +1 -0
  9. package/dist/index.esm.js +183 -34
  10. package/dist/index.esm.js.map +1 -1
  11. package/package.json +11 -6
  12. package/scripts/assets/handlebars/C6.test.ts.handlebars +55 -80
  13. package/scripts/assets/handlebars/C6.ts.handlebars +28 -2
  14. package/scripts/generateRestBindings.cjs +17 -6
  15. package/scripts/generateRestBindings.ts +22 -8
  16. package/src/__tests__/fixtures/c6.fixture.ts +74 -0
  17. package/src/__tests__/normalizeSingularRequest.test.ts +105 -0
  18. package/src/__tests__/sakila-db/C6.js +1487 -0
  19. package/src/__tests__/sakila-db/C6.test.ts +63 -0
  20. package/src/__tests__/sakila-db/C6.ts +2206 -0
  21. package/src/__tests__/sakila-db/sakila-data.sql +46444 -0
  22. package/src/__tests__/sakila-db/sakila-schema.sql +686 -0
  23. package/src/__tests__/sakila-db/sakila.mwb +0 -0
  24. package/src/__tests__/sakila.generated.test.ts +46 -0
  25. package/src/__tests__/sqlBuilders.complex.test.ts +134 -0
  26. package/src/__tests__/sqlBuilders.test.ts +121 -0
  27. package/src/api/convertForRequestBody.ts +1 -1
  28. package/src/api/executors/HttpExecutor.ts +14 -3
  29. package/src/api/executors/SqlExecutor.ts +14 -1
  30. package/src/api/orm/builders/AggregateBuilder.ts +3 -0
  31. package/src/api/orm/builders/ConditionBuilder.ts +34 -11
  32. package/src/api/orm/builders/PaginationBuilder.ts +10 -4
  33. package/src/api/orm/queries/SelectQueryBuilder.ts +3 -0
  34. package/src/api/orm/queries/UpdateQueryBuilder.ts +2 -1
  35. package/src/api/types/ormInterfaces.ts +3 -4
  36. package/src/api/utils/cacheManager.ts +1 -1
  37. package/src/api/utils/normalizeSingularRequest.ts +144 -0
  38. package/src/index.ts +1 -0
package/dist/index.esm.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import axios from 'axios';
2
2
  import Qs from 'qs';
3
- import { __assign, __awaiter, __generator, __extends, __spreadArray } from 'tslib';
3
+ import { __assign, __awaiter, __generator, __spreadArray, __rest, __extends } from 'tslib';
4
4
  import { toast } from 'react-toastify';
5
5
  import namedPlaceholders from 'named-placeholders';
6
6
  import { Buffer as Buffer$1 } from 'buffer';
@@ -590,6 +590,102 @@ function removeInvalidKeys(request, c6Tables) {
590
590
  return intersection;
591
591
  }
592
592
 
593
+ /**
594
+ * Converts a singular T-shaped request into complex ORM format for GET/PUT/DELETE
595
+ * Enforces that all primary keys are present for singular syntax and that the table has PKs.
596
+ * Optionally accepts a previously removed primary key (key/value) to reconstruct WHERE.
597
+ */
598
+ function normalizeSingularRequest(requestMethod, request, restModel, removedPrimary) {
599
+ var _a, _b;
600
+ if (request == null || typeof request !== 'object')
601
+ return request;
602
+ var specialKeys = new Set([
603
+ C6Constants.SELECT,
604
+ C6Constants.UPDATE,
605
+ C6Constants.DELETE,
606
+ C6Constants.WHERE,
607
+ C6Constants.JOIN,
608
+ C6Constants.PAGINATION,
609
+ ]);
610
+ // Determine if the request is already complex (has any special key besides PAGINATION)
611
+ var keys = Object.keys(request);
612
+ var hasComplexKeys = keys.some(function (k) { return k !== C6Constants.PAGINATION && specialKeys.has(k); });
613
+ if (hasComplexKeys)
614
+ return request; // already complex
615
+ // We treat it as singular when it's not complex.
616
+ // For GET, PUT, DELETE only
617
+ if (!(requestMethod === C6Constants.GET || requestMethod === C6Constants.PUT || requestMethod === C6Constants.DELETE)) {
618
+ return request;
619
+ }
620
+ var pkShorts = Array.isArray(restModel.PRIMARY_SHORT) ? __spreadArray([], restModel.PRIMARY_SHORT, true) : [];
621
+ if (!pkShorts.length) {
622
+ // For GET requests, do not enforce primary key presence; treat as a collection query.
623
+ if (requestMethod === C6Constants.GET)
624
+ return request;
625
+ throw new Error("Table (".concat(restModel.TABLE_NAME, ") has no primary key; singular request syntax is not allowed."));
626
+ }
627
+ // Build pk map from request + possibly removed primary key
628
+ var pkValues = {};
629
+ for (var _i = 0, pkShorts_1 = pkShorts; _i < pkShorts_1.length; _i++) {
630
+ var pk = pkShorts_1[_i];
631
+ var fromRequest = request[pk];
632
+ if (fromRequest !== undefined && fromRequest !== null) {
633
+ pkValues[pk] = fromRequest;
634
+ continue;
635
+ }
636
+ if (removedPrimary && removedPrimary.key === pk) {
637
+ pkValues[pk] = removedPrimary.value;
638
+ continue;
639
+ }
640
+ }
641
+ var missing = pkShorts.filter(function (pk) { return !(pk in pkValues); });
642
+ if (missing.length) {
643
+ // For GET requests, if not all PKs are provided, treat as a collection query and leave as-is.
644
+ if (requestMethod === C6Constants.GET) {
645
+ return request;
646
+ }
647
+ throw new Error("Singular request requires all primary key(s) [".concat(pkShorts.join(', '), "] for table (").concat(restModel.TABLE_NAME, "). Missing: [").concat(missing.join(', '), "]"));
648
+ }
649
+ // Strip API metadata that should remain at root
650
+ var _c = request, dataInsertMultipleRows = _c.dataInsertMultipleRows, cacheResults = _c.cacheResults, fetchDependencies = _c.fetchDependencies, debug = _c.debug, success = _c.success, error = _c.error, rest = __rest(_c, ["dataInsertMultipleRows", "cacheResults", "fetchDependencies", "debug", "success", "error"]);
651
+ if (requestMethod === C6Constants.GET) {
652
+ var normalized_1 = {
653
+ WHERE: __assign({}, pkValues),
654
+ };
655
+ // Preserve pagination if any was added previously
656
+ if (request[C6Constants.PAGINATION]) {
657
+ normalized_1[C6Constants.PAGINATION] = request[C6Constants.PAGINATION];
658
+ }
659
+ return __assign(__assign({}, normalized_1), { dataInsertMultipleRows: dataInsertMultipleRows, cacheResults: cacheResults, fetchDependencies: fetchDependencies, debug: debug, success: success, error: error });
660
+ }
661
+ if (requestMethod === C6Constants.DELETE) {
662
+ var normalized_2 = (_a = {},
663
+ _a[C6Constants.DELETE] = true,
664
+ _a.WHERE = __assign({}, pkValues),
665
+ _a);
666
+ return __assign(__assign({}, normalized_2), { dataInsertMultipleRows: dataInsertMultipleRows, cacheResults: cacheResults, fetchDependencies: fetchDependencies, debug: debug, success: success, error: error });
667
+ }
668
+ // PUT
669
+ var updateBody = {};
670
+ for (var _d = 0, _e = Object.keys(rest); _d < _e.length; _d++) {
671
+ var k = _e[_d];
672
+ if (pkShorts.includes(k))
673
+ continue; // don't update PK columns
674
+ // Skip special request keys if any slipped through
675
+ if (specialKeys.has(k))
676
+ continue;
677
+ updateBody[k] = rest[k];
678
+ }
679
+ if (Object.keys(updateBody).length === 0) {
680
+ throw new Error("Singular PUT request for table (".concat(restModel.TABLE_NAME, ") must include at least one non-primary field to update."));
681
+ }
682
+ var normalized = (_b = {},
683
+ _b[C6Constants.UPDATE] = updateBody,
684
+ _b.WHERE = __assign({}, pkValues),
685
+ _b);
686
+ return __assign(__assign({}, normalized), { dataInsertMultipleRows: dataInsertMultipleRows, cacheResults: cacheResults, fetchDependencies: fetchDependencies, debug: debug, success: success, error: error });
687
+ }
688
+
593
689
  // do not remove entries from this array. It is used to track the progress of API requests.
594
690
  // position in array is important. Do not sort. To not add to begging.
595
691
  var apiRequestCache = [];
@@ -727,7 +823,7 @@ var HttpExecutor = /** @class */ (function (_super) {
727
823
  query[C6.PAGINATION][C6.LIMIT] = query[C6.PAGINATION][C6.LIMIT] || 100;
728
824
  }
729
825
  apiRequest = function () { return __awaiter(_this, void 0, void 0, function () {
730
- var _a, debug, _b, cacheResults, dataInsertMultipleRows, success, _c, fetchDependencies, _d, error, querySerialized, cacheResult, cachingConfirmed, cacheCheck, cacheCheck, addBackPK, apiResponse, returnGetNextPageFunction, restRequestUri, needsConditionOrPrimaryCheck, TABLES, primaryKey, removedPkValue_1, axiosActiveRequest;
826
+ var _a, debug, _b, cacheResults, dataInsertMultipleRows, success, _c, fetchDependencies, _d, error, querySerialized, cacheResult, cachingConfirmed, cacheCheck, cacheCheck, addBackPK, removedPrimaryKV, apiResponse, returnGetNextPageFunction, restRequestUri, needsConditionOrPrimaryCheck, TABLES, primaryKey, removedPkValue_1, axiosActiveRequest;
731
827
  var _e;
732
828
  var _this = this;
733
829
  var _f, _g, _h, _j, _k, _l;
@@ -847,6 +943,7 @@ var HttpExecutor = /** @class */ (function (_super) {
847
943
  && primaryKey in query) {
848
944
  restRequestUri += query[primaryKey] + '/';
849
945
  removedPkValue_1 = query[primaryKey];
946
+ removedPrimaryKV = { key: primaryKey, value: removedPkValue_1 };
850
947
  addBackPK = function () {
851
948
  query !== null && query !== void 0 ? query : (query = {});
852
949
  query[primaryKey] = removedPkValue_1;
@@ -875,9 +972,11 @@ var HttpExecutor = /** @class */ (function (_super) {
875
972
  var baseConfig = {
876
973
  withCredentials: withCredentials,
877
974
  };
975
+ // Normalize singular request (GET/PUT/DELETE) into complex ORM shape
976
+ var normalizedQuery = normalizeSingularRequest(requestMethod, query, restModel, removedPrimaryKV);
878
977
  switch (requestMethod) {
879
978
  case GET:
880
- return [__assign(__assign({}, baseConfig), { params: query })];
979
+ return [__assign(__assign({}, baseConfig), { params: normalizedQuery })];
881
980
  case POST:
882
981
  if (dataInsertMultipleRows !== undefined) {
883
982
  return [
@@ -887,9 +986,9 @@ var HttpExecutor = /** @class */ (function (_super) {
887
986
  }
888
987
  return [convert(query), baseConfig];
889
988
  case PUT:
890
- return [convert(query), baseConfig];
989
+ return [convert(normalizedQuery), baseConfig];
891
990
  case DELETE:
892
- return [__assign(__assign({}, baseConfig), { data: convert(query) })];
991
+ return [__assign(__assign({}, baseConfig), { data: convert(normalizedQuery) })];
893
992
  default:
894
993
  throw new Error("The request method (".concat(requestMethod, ") was not recognized."));
895
994
  }
@@ -1210,7 +1309,9 @@ function convertHexIfBinary(_col, val, columnDef) {
1210
1309
  var AggregateBuilder = /** @class */ (function (_super) {
1211
1310
  __extends(AggregateBuilder, _super);
1212
1311
  function AggregateBuilder() {
1213
- return _super !== null && _super.apply(this, arguments) || this;
1312
+ var _this = _super !== null && _super.apply(this, arguments) || this;
1313
+ _this.selectAliases = new Set();
1314
+ return _this;
1214
1315
  }
1215
1316
  AggregateBuilder.prototype.buildAggregateField = function (field) {
1216
1317
  var _this = this;
@@ -1238,6 +1339,7 @@ var AggregateBuilder = /** @class */ (function (_super) {
1238
1339
  expr = "".concat(F, "(").concat(argList, ")");
1239
1340
  }
1240
1341
  if (alias) {
1342
+ this.selectAliases.add(alias);
1241
1343
  expr += " AS ".concat(alias);
1242
1344
  }
1243
1345
  this.config.verbose && console.log("[SELECT] ".concat(expr));
@@ -1304,12 +1406,21 @@ var ConditionBuilder = /** @class */ (function (_super) {
1304
1406
  throw new Error("Method not implemented.");
1305
1407
  };
1306
1408
  ConditionBuilder.prototype.isTableReference = function (val) {
1307
- var _a, _b, _c;
1308
- if (typeof val !== 'string' || !val.includes('.'))
1409
+ var _a, _b, _c, _d;
1410
+ if (typeof val !== 'string')
1411
+ return false;
1412
+ // Support aggregate aliases (e.g., SELECT COUNT(x) AS cnt ... HAVING cnt > 1)
1413
+ if (!val.includes('.')) {
1414
+ var isIdentifier = /^[A-Za-z_][A-Za-z0-9_]*$/.test(val);
1415
+ // selectAliases is defined in AggregateBuilder
1416
+ if (isIdentifier && ((_a = this.selectAliases) === null || _a === void 0 ? void 0 : _a.has(val))) {
1417
+ return true;
1418
+ }
1309
1419
  return false;
1310
- var _d = val.split('.'), prefix = _d[0], column = _d[1];
1311
- var tableName = (_a = this.aliasMap[prefix]) !== null && _a !== void 0 ? _a : prefix;
1312
- var table = (_c = (_b = this.config.C6) === null || _b === void 0 ? void 0 : _b.TABLES) === null || _c === void 0 ? void 0 : _c[tableName];
1420
+ }
1421
+ var _e = val.split('.'), prefix = _e[0], column = _e[1];
1422
+ var tableName = (_b = this.aliasMap[prefix]) !== null && _b !== void 0 ? _b : prefix;
1423
+ var table = (_d = (_c = this.config.C6) === null || _c === void 0 ? void 0 : _c.TABLES) === null || _d === void 0 ? void 0 : _d[tableName];
1313
1424
  if (!table || !table.COLUMNS)
1314
1425
  return false;
1315
1426
  var fullKey = "".concat(tableName, ".").concat(column);
@@ -1322,8 +1433,14 @@ var ConditionBuilder = /** @class */ (function (_super) {
1322
1433
  }
1323
1434
  };
1324
1435
  ConditionBuilder.prototype.addParam = function (params, column, value) {
1325
- var _a, _b;
1326
- var columnDef = (_b = (_a = this.config.C6[column.split('.')[0]]) === null || _a === void 0 ? void 0 : _a.TYPE_VALIDATION) === null || _b === void 0 ? void 0 : _b[column];
1436
+ var _a, _b, _c;
1437
+ // Determine column definition from C6.TABLES to support type-aware conversions (e.g., BINARY hex -> Buffer)
1438
+ var columnDef;
1439
+ if (typeof column === 'string' && column.includes('.')) {
1440
+ var tableName = column.split('.', 2)[0];
1441
+ var table = (_b = (_a = this.config.C6) === null || _a === void 0 ? void 0 : _a.TABLES) === null || _b === void 0 ? void 0 : _b[tableName];
1442
+ columnDef = (_c = table === null || table === void 0 ? void 0 : table.TYPE_VALIDATION) === null || _c === void 0 ? void 0 : _c[column];
1443
+ }
1327
1444
  var val = convertHexIfBinary(column, value, columnDef);
1328
1445
  if (this.useNamedParams) {
1329
1446
  var key = "param".concat(Object.keys(params).length);
@@ -1367,7 +1484,7 @@ var ConditionBuilder = /** @class */ (function (_super) {
1367
1484
  var leftIsCol = _this.isColumnRef(column);
1368
1485
  var leftIsRef = _this.isTableReference(column);
1369
1486
  var rightIsCol = typeof value === 'string' && _this.isColumnRef(value);
1370
- if (!leftIsCol && !rightIsCol) {
1487
+ if (!leftIsCol && !leftIsRef && !rightIsCol) {
1371
1488
  throw new Error("Potential SQL injection detected: '".concat(column, " ").concat(op, " ").concat(value, "'"));
1372
1489
  }
1373
1490
  _this.validateOperator(op);
@@ -1434,21 +1551,22 @@ var ConditionBuilder = /** @class */ (function (_super) {
1434
1551
  var parts = [];
1435
1552
  var buildFromObject = function (obj, mode) {
1436
1553
  var subParts = [];
1437
- for (var _i = 0, _a = Object.entries(obj); _i < _a.length; _i++) {
1438
- var _b = _a[_i], k = _b[0], v = _b[1];
1439
- // numeric keys represent nested OR groups
1440
- if (!isNaN(Number(k))) {
1441
- var sub = _this.buildBooleanJoinedConditions(v, false, params);
1442
- if (sub)
1443
- subParts.push(sub);
1444
- continue;
1445
- }
1554
+ var entries = Object.entries(obj);
1555
+ var nonNumeric = entries.filter(function (_a) {
1556
+ var k = _a[0];
1557
+ return isNaN(Number(k));
1558
+ });
1559
+ var numeric = entries.filter(function (_a) {
1560
+ var k = _a[0];
1561
+ return !isNaN(Number(k));
1562
+ });
1563
+ var processEntry = function (k, v) {
1446
1564
  if (typeof v === 'object' && v !== null && Object.keys(v).length === 1) {
1447
- var _c = Object.entries(v)[0], op = _c[0], val = _c[1];
1565
+ var _a = Object.entries(v)[0], op = _a[0], val = _a[1];
1448
1566
  subParts.push(addCondition(k, op, val));
1449
1567
  }
1450
1568
  else if (Array.isArray(v) && v.length >= 2 && typeof v[0] === 'string') {
1451
- var _d = v, op = _d[0], val = _d[1];
1569
+ var _b = v, op = _b[0], val = _b[1];
1452
1570
  subParts.push(addCondition(k, op, val));
1453
1571
  }
1454
1572
  else if (typeof v === 'object' && v !== null) {
@@ -1459,6 +1577,18 @@ var ConditionBuilder = /** @class */ (function (_super) {
1459
1577
  else {
1460
1578
  subParts.push(addCondition(k, '=', v));
1461
1579
  }
1580
+ };
1581
+ // Process non-numeric keys first to preserve intuitive insertion order for params
1582
+ for (var _i = 0, nonNumeric_1 = nonNumeric; _i < nonNumeric_1.length; _i++) {
1583
+ var _a = nonNumeric_1[_i], k = _a[0], v = _a[1];
1584
+ processEntry(k, v);
1585
+ }
1586
+ // Then process numeric keys (treated as grouped OR conditions)
1587
+ for (var _b = 0, numeric_1 = numeric; _b < numeric_1.length; _b++) {
1588
+ var _c = numeric_1[_b]; _c[0]; var v = _c[1];
1589
+ var sub = _this.buildBooleanJoinedConditions(v, false, params);
1590
+ if (sub)
1591
+ subParts.push(sub);
1462
1592
  }
1463
1593
  return subParts.join(" ".concat(mode ? 'AND' : 'OR', " "));
1464
1594
  };
@@ -1595,13 +1725,12 @@ var PaginationBuilder = /** @class */ (function (_super) {
1595
1725
  */
1596
1726
  PaginationBuilder.prototype.buildPaginationClause = function (pagination) {
1597
1727
  var _this = this;
1598
- var _a;
1599
1728
  var sql = "";
1600
1729
  /* -------- ORDER BY -------- */
1601
1730
  if (pagination === null || pagination === void 0 ? void 0 : pagination[C6Constants.ORDER]) {
1602
1731
  var orderParts = [];
1603
- for (var _i = 0, _b = Object.entries(pagination[C6Constants.ORDER]); _i < _b.length; _i++) {
1604
- var _c = _b[_i], key = _c[0], val = _c[1];
1732
+ for (var _i = 0, _a = Object.entries(pagination[C6Constants.ORDER]); _i < _a.length; _i++) {
1733
+ var _b = _a[_i], key = _b[0], val = _b[1];
1605
1734
  // FUNCTION CALL: val is an array of args
1606
1735
  if (Array.isArray(val)) {
1607
1736
  var args = val
@@ -1620,9 +1749,16 @@ var PaginationBuilder = /** @class */ (function (_super) {
1620
1749
  /* -------- LIMIT / OFFSET -------- */
1621
1750
  if ((pagination === null || pagination === void 0 ? void 0 : pagination[C6Constants.LIMIT]) != null) {
1622
1751
  var lim = parseInt(pagination[C6Constants.LIMIT], 10);
1623
- var page = parseInt((_a = pagination[C6Constants.PAGE]) !== null && _a !== void 0 ? _a : 1, 10);
1624
- var offset = (page - 1) * lim;
1625
- sql += " LIMIT ".concat(offset, ", ").concat(lim);
1752
+ var pageRaw = pagination[C6Constants.PAGE];
1753
+ var pageParsed = parseInt(pageRaw !== null && pageRaw !== void 0 ? pageRaw : 1, 10);
1754
+ var page = isFinite(pageParsed) && pageParsed > 1 ? pageParsed : 1;
1755
+ if (page === 1) {
1756
+ sql += " LIMIT ".concat(lim);
1757
+ }
1758
+ else {
1759
+ var offset = (page - 1) * lim;
1760
+ sql += " LIMIT ".concat(offset, ", ").concat(lim);
1761
+ }
1626
1762
  }
1627
1763
  this.config.verbose && console.log("[PAGINATION] ".concat(sql.trim()));
1628
1764
  return sql;
@@ -1640,6 +1776,10 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1640
1776
  var _a;
1641
1777
  if (isSubSelect === void 0) { isSubSelect = false; }
1642
1778
  this.aliasMap = {};
1779
+ // reset any previously collected SELECT aliases (from AggregateBuilder)
1780
+ // @ts-ignore
1781
+ if (this.selectAliases && this.selectAliases.clear)
1782
+ this.selectAliases.clear();
1643
1783
  var args = this.request;
1644
1784
  this.initAlias(table, args.JOIN);
1645
1785
  var params = this.useNamedParams ? {} : [];
@@ -1693,9 +1833,10 @@ var UpdateQueryBuilder = /** @class */ (function (_super) {
1693
1833
  if (!(C6C.UPDATE in this.request)) {
1694
1834
  throw new Error("No update data provided in the request.");
1695
1835
  }
1696
- var setClauses = Object.entries(this.request[C6C.UPDATE]).map(function (_a) {
1836
+ var setClauses = Object.entries(this.request[C6C.UPDATE])
1837
+ .map(function (_a) {
1697
1838
  var col = _a[0], val = _a[1];
1698
- return _this.addParam(params, col, val);
1839
+ return "`".concat(col, "` = ").concat(_this.addParam(params, col, val));
1699
1840
  });
1700
1841
  sql += " SET ".concat(setClauses.join(', '));
1701
1842
  if (args.WHERE) {
@@ -1727,6 +1868,14 @@ var SqlExecutor = /** @class */ (function (_super) {
1727
1868
  case 0:
1728
1869
  TABLE_NAME = this.config.restModel.TABLE_NAME;
1729
1870
  method = this.config.requestMethod;
1871
+ // Normalize singular T-shaped requests into complex ORM shape (GET/PUT/DELETE)
1872
+ try {
1873
+ this.request = normalizeSingularRequest(method, this.request, this.config.restModel, undefined);
1874
+ }
1875
+ catch (e) {
1876
+ // Surface normalization errors early
1877
+ throw e;
1878
+ }
1730
1879
  this.config.verbose && console.log("[SQL EXECUTOR] \u25B6\uFE0F Executing ".concat(method, " on table \"").concat(TABLE_NAME, "\""));
1731
1880
  this.config.verbose && console.log("[SQL EXECUTOR] \uD83E\uDDE9 Request:", this.request);
1732
1881
  _a = method;
@@ -2091,5 +2240,5 @@ function isVerbose () {
2091
2240
  return ['true', '1', 'yes', 'on'].includes(envVerbose.toLowerCase());
2092
2241
  }
2093
2242
 
2094
- export { A, AggregateBuilder, C6C, C6Constants, ConditionBuilder, DELETE, DeleteQueryBuilder, Executor, ExpressHandler, F, GET, HttpExecutor, JoinBuilder, POST, PUT, PaginationBuilder, PostQueryBuilder, SelectQueryBuilder, SqlExecutor, TestRestfulResponse, UpdateQueryBuilder, apiRequestCache, axiosInstance, bbox, checkAllRequestsComplete, checkCache, clearCache, convertForRequestBody, convertHexIfBinary, determineRuntimeJsType, distSphere, eFetchDependencies, error, fieldEq, getEnvVar, getPrimaryKeyTypes, group, info, isLocal, isNode, isTest, isVerbose, onError, onSuccess, removeInvalidKeys, removePrefixIfExists, restOrm, restRequest, sortAndSerializeQueryObject, stContains, timeout, toastOptions, toastOptionsDevs, userCustomClearCache, warn };
2243
+ export { A, AggregateBuilder, C6C, C6Constants, ConditionBuilder, DELETE, DeleteQueryBuilder, Executor, ExpressHandler, F, GET, HttpExecutor, JoinBuilder, POST, PUT, PaginationBuilder, PostQueryBuilder, SelectQueryBuilder, SqlExecutor, TestRestfulResponse, UpdateQueryBuilder, apiRequestCache, axiosInstance, bbox, checkAllRequestsComplete, checkCache, clearCache, convertForRequestBody, convertHexIfBinary, determineRuntimeJsType, distSphere, eFetchDependencies, error, fieldEq, getEnvVar, getPrimaryKeyTypes, group, info, isLocal, isNode, isTest, isVerbose, normalizeSingularRequest, onError, onSuccess, removeInvalidKeys, removePrefixIfExists, restOrm, restRequest, sortAndSerializeQueryObject, stContains, timeout, toastOptions, toastOptionsDevs, userCustomClearCache, warn };
2095
2244
  //# sourceMappingURL=index.esm.js.map