@carbonorm/carbonnode 6.0.17 → 6.0.18

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 (61) hide show
  1. package/dist/index.cjs.js +42 -6
  2. package/dist/index.cjs.js.map +1 -1
  3. package/dist/index.esm.js +42 -7
  4. package/dist/index.esm.js.map +1 -1
  5. package/dist/types/ormInterfaces.d.ts +1 -0
  6. package/dist/utils/cacheManager.d.ts +1 -0
  7. package/package.json +2 -2
  8. package/src/__tests__/httpExecutor.cacheEviction.test.ts +70 -0
  9. package/src/__tests__/sakila-db/C6.js +1 -1
  10. package/src/__tests__/sakila-db/C6.mysqldump.json +1 -1
  11. package/src/__tests__/sakila-db/C6.mysqldump.sql +1 -1
  12. package/src/__tests__/sakila-db/C6.ts +1 -1
  13. package/src/__tests__/sakila-db/sqlResponses/C6.actor.post.json +3 -3
  14. package/src/__tests__/sakila-db/sqlResponses/C6.actor.post.latest.json +3 -3
  15. package/src/__tests__/sakila-db/sqlResponses/C6.actor.put.json +1 -1
  16. package/src/__tests__/sakila-db/sqlResponses/C6.actor.put.lookup.json +3 -3
  17. package/src/__tests__/sakila-db/sqlResponses/C6.address.post.json +5 -5
  18. package/src/__tests__/sakila-db/sqlResponses/C6.address.post.latest.json +5 -5
  19. package/src/__tests__/sakila-db/sqlResponses/C6.address.put.json +1 -1
  20. package/src/__tests__/sakila-db/sqlResponses/C6.address.put.lookup.json +5 -5
  21. package/src/__tests__/sakila-db/sqlResponses/C6.category.post.json +2 -2
  22. package/src/__tests__/sakila-db/sqlResponses/C6.category.post.latest.json +2 -2
  23. package/src/__tests__/sakila-db/sqlResponses/C6.category.put.json +1 -1
  24. package/src/__tests__/sakila-db/sqlResponses/C6.category.put.lookup.json +2 -2
  25. package/src/__tests__/sakila-db/sqlResponses/C6.city.post.json +2 -2
  26. package/src/__tests__/sakila-db/sqlResponses/C6.city.post.latest.json +2 -2
  27. package/src/__tests__/sakila-db/sqlResponses/C6.city.put.json +1 -1
  28. package/src/__tests__/sakila-db/sqlResponses/C6.city.put.lookup.json +2 -2
  29. package/src/__tests__/sakila-db/sqlResponses/C6.country.post.json +2 -2
  30. package/src/__tests__/sakila-db/sqlResponses/C6.country.post.latest.json +2 -2
  31. package/src/__tests__/sakila-db/sqlResponses/C6.country.put.json +1 -1
  32. package/src/__tests__/sakila-db/sqlResponses/C6.country.put.lookup.json +2 -2
  33. package/src/__tests__/sakila-db/sqlResponses/C6.customer.post.json +5 -5
  34. package/src/__tests__/sakila-db/sqlResponses/C6.customer.post.latest.json +5 -5
  35. package/src/__tests__/sakila-db/sqlResponses/C6.customer.put.json +1 -1
  36. package/src/__tests__/sakila-db/sqlResponses/C6.customer.put.lookup.json +5 -5
  37. package/src/__tests__/sakila-db/sqlResponses/C6.film.post.json +2 -2
  38. package/src/__tests__/sakila-db/sqlResponses/C6.film.post.latest.json +2 -2
  39. package/src/__tests__/sakila-db/sqlResponses/C6.film.put.json +1 -1
  40. package/src/__tests__/sakila-db/sqlResponses/C6.film.put.lookup.json +2 -2
  41. package/src/__tests__/sakila-db/sqlResponses/C6.inventory.post.json +1 -1
  42. package/src/__tests__/sakila-db/sqlResponses/C6.inventory.post.latest.json +1 -1
  43. package/src/__tests__/sakila-db/sqlResponses/C6.inventory.put.json +1 -1
  44. package/src/__tests__/sakila-db/sqlResponses/C6.inventory.put.lookup.json +1 -1
  45. package/src/__tests__/sakila-db/sqlResponses/C6.language.post.json +2 -2
  46. package/src/__tests__/sakila-db/sqlResponses/C6.language.post.latest.json +2 -2
  47. package/src/__tests__/sakila-db/sqlResponses/C6.language.put.json +1 -1
  48. package/src/__tests__/sakila-db/sqlResponses/C6.language.put.lookup.json +2 -2
  49. package/src/__tests__/sakila-db/sqlResponses/C6.payment.post.json +2 -2
  50. package/src/__tests__/sakila-db/sqlResponses/C6.payment.post.latest.json +2 -2
  51. package/src/__tests__/sakila-db/sqlResponses/C6.payment.put.lookup.json +2 -2
  52. package/src/__tests__/sakila-db/sqlResponses/C6.rental.join.json +10 -10
  53. package/src/__tests__/sakila-db/sqlResponses/C6.rental.post.json +3 -3
  54. package/src/__tests__/sakila-db/sqlResponses/C6.rental.post.latest.json +3 -3
  55. package/src/__tests__/sakila-db/sqlResponses/C6.rental.put.json +1 -1
  56. package/src/__tests__/sakila-db/sqlResponses/C6.rental.put.lookup.json +3 -3
  57. package/src/__tests__/sqlExecutor.cacheEviction.test.ts +79 -0
  58. package/src/executors/HttpExecutor.ts +19 -3
  59. package/src/executors/SqlExecutor.ts +23 -5
  60. package/src/types/ormInterfaces.ts +4 -1
  61. package/src/utils/cacheManager.ts +9 -0
package/dist/index.cjs.js CHANGED
@@ -954,7 +954,7 @@ function colorSql(sql) {
954
954
  return s;
955
955
  }
956
956
 
957
- var version = "6.0.17";
957
+ var version = "6.0.18";
958
958
 
959
959
  var DEFAULT_STEP = 8;
960
960
  function parseSemver(version) {
@@ -1140,6 +1140,10 @@ function setCache(method, tableName, requestData, cacheEntry) {
1140
1140
  var key = makeCacheKey(method, tableName, requestData);
1141
1141
  apiRequestCache.set(key, cacheEntry);
1142
1142
  }
1143
+ function evictCacheEntry(method, tableName, requestData) {
1144
+ var key = makeCacheKey(method, tableName, requestData);
1145
+ return apiRequestCache.delete(key);
1146
+ }
1143
1147
 
1144
1148
  function sortAndSerializeQueryObject(tables, query) {
1145
1149
  var orderedQuery = Object.keys(query).sort().reduce(function (obj, key) {
@@ -1265,7 +1269,7 @@ var HttpExecutor = /** @class */ (function (_super) {
1265
1269
  }
1266
1270
  query = this.request;
1267
1271
  apiRequest = function () { return tslib.__awaiter(_this, void 0, void 0, function () {
1268
- var _a, debug, _b, cacheResults, dataInsertMultipleRows, success, _c, fetchDependencies, _d, error, cachingConfirmed, cacheRequestData, querySerialized, cachedRequest, apiResponse, restRequestUri, needsConditionOrPrimaryCheck, TABLES, primaryKeyList, primaryKeyFullyQualified, primaryKey, whereVal, whereIsEmpty, providedPrimary, primaryVal, axiosActiveRequest_1;
1272
+ var _a, debug, _b, cacheResults, dataInsertMultipleRows, success, _c, fetchDependencies, _d, error, cachingConfirmed, cacheRequestData, evictFromCache, querySerialized, cachedRequest, cachedData, apiResponse, restRequestUri, needsConditionOrPrimaryCheck, TABLES, primaryKeyList, primaryKeyFullyQualified, primaryKey, whereVal, whereIsEmpty, providedPrimary, primaryVal, axiosActiveRequest_1;
1269
1273
  var _e;
1270
1274
  var _this = this;
1271
1275
  var _f, _g, _h, _j, _k, _l;
@@ -1295,6 +1299,9 @@ var HttpExecutor = /** @class */ (function (_super) {
1295
1299
  query[C6.PAGINATION][C6.LIMIT] = query[C6.PAGINATION][C6.LIMIT] || 100;
1296
1300
  }
1297
1301
  cacheRequestData = JSON.parse(JSON.stringify(query !== null && query !== void 0 ? query : {}));
1302
+ evictFromCache = requestMethod === GET && cacheResults
1303
+ ? function () { return evictCacheEntry(requestMethod, tableName, cacheRequestData); }
1304
+ : undefined;
1298
1305
  querySerialized = sortAndSerializeQueryObject(tables, cacheRequestData !== null && cacheRequestData !== void 0 ? cacheRequestData : {});
1299
1306
  cachedRequest = false;
1300
1307
  if (cacheResults) {
@@ -1302,7 +1309,15 @@ var HttpExecutor = /** @class */ (function (_super) {
1302
1309
  }
1303
1310
  if (!cachedRequest) return [3 /*break*/, 2];
1304
1311
  return [4 /*yield*/, cachedRequest];
1305
- case 1: return [2 /*return*/, (_m.sent()).data];
1312
+ case 1:
1313
+ cachedData = (_m.sent()).data;
1314
+ if (evictFromCache
1315
+ && cachedData
1316
+ && typeof cachedData === "object"
1317
+ && Array.isArray(cachedData.rest)) {
1318
+ cachedData.evictFromCache = evictFromCache;
1319
+ }
1320
+ return [2 /*return*/, cachedData];
1306
1321
  case 2:
1307
1322
  if (cacheResults) {
1308
1323
  cachingConfirmed = true;
@@ -1493,7 +1508,7 @@ var HttpExecutor = /** @class */ (function (_super) {
1493
1508
  else {
1494
1509
  callback();
1495
1510
  }
1496
- if (!(C6.GET === requestMethod && this.isRestResponse(response))) return [3 /*break*/, 2];
1511
+ if (!(requestMethod === GET && this.isRestResponse(response))) return [3 /*break*/, 2];
1497
1512
  responseData_1 = response.data;
1498
1513
  pageLimit = (_a = query === null || query === void 0 ? void 0 : query[C6.PAGINATION]) === null || _a === void 0 ? void 0 : _a[C6.LIMIT];
1499
1514
  got = responseData_1.rest.length;
@@ -1504,6 +1519,9 @@ var HttpExecutor = /** @class */ (function (_super) {
1504
1519
  else {
1505
1520
  responseData_1.next = undefined; // short page => done
1506
1521
  }
1522
+ if (cachingConfirmed && evictFromCache) {
1523
+ responseData_1.evictFromCache = evictFromCache;
1524
+ }
1507
1525
  if (cachingConfirmed) {
1508
1526
  setCache(requestMethod, tableName, cacheRequestData, {
1509
1527
  requestArgumentsSerialized: querySerialized,
@@ -4070,7 +4088,7 @@ var SqlExecutor = /** @class */ (function (_super) {
4070
4088
  };
4071
4089
  SqlExecutor.prototype.runQuery = function () {
4072
4090
  return tslib.__awaiter(this, void 0, void 0, function () {
4073
- var method, tableName, logContext, cacheResults, cacheRequestData, requestArgumentsSerialized, cachedRequest, sqlExecution, sqlMethod, queryPromise, cacheRequest, cacheResponse;
4091
+ var method, tableName, logContext, cacheResults, cacheRequestData, requestArgumentsSerialized, evictFromCache, cachedRequest, cachedData, sqlExecution, sqlMethod, queryPromise, cacheRequest, cacheResponse;
4074
4092
  var _this = this;
4075
4093
  var _a, _b;
4076
4094
  return tslib.__generator(this, function (_c) {
@@ -4087,11 +4105,22 @@ var SqlExecutor = /** @class */ (function (_super) {
4087
4105
  requestArgumentsSerialized = cacheResults
4088
4106
  ? sortAndSerializeQueryObject(tableName, cacheRequestData !== null && cacheRequestData !== void 0 ? cacheRequestData : {})
4089
4107
  : undefined;
4108
+ evictFromCache = method === C6Constants.GET && cacheResults && cacheRequestData
4109
+ ? function () { return evictCacheEntry(method, tableName, cacheRequestData); }
4110
+ : undefined;
4090
4111
  if (!cacheResults) return [3 /*break*/, 2];
4091
4112
  cachedRequest = checkCache(method, tableName, cacheRequestData, logContext);
4092
4113
  if (!cachedRequest) return [3 /*break*/, 2];
4093
4114
  return [4 /*yield*/, cachedRequest];
4094
- case 1: return [2 /*return*/, (_c.sent()).data];
4115
+ case 1:
4116
+ cachedData = (_c.sent()).data;
4117
+ if (evictFromCache
4118
+ && cachedData
4119
+ && typeof cachedData === "object"
4120
+ && Array.isArray(cachedData.rest)) {
4121
+ cachedData.evictFromCache = evictFromCache;
4122
+ }
4123
+ return [2 /*return*/, cachedData];
4095
4124
  case 2:
4096
4125
  sqlExecution = this.buildSqlExecutionContext(method, tableName, logContext);
4097
4126
  sqlMethod = this.resolveSqlLogMethod(method, sqlExecution.sql);
@@ -4105,6 +4134,12 @@ var SqlExecutor = /** @class */ (function (_super) {
4105
4134
  case 3: return [2 /*return*/, _c.sent()];
4106
4135
  case 4:
4107
4136
  cacheRequest = queryPromise.then(function (data) {
4137
+ if (evictFromCache
4138
+ && data
4139
+ && typeof data === "object"
4140
+ && Array.isArray(data.rest)) {
4141
+ data.evictFromCache = evictFromCache;
4142
+ }
4108
4143
  return _this.createCacheResponseEnvelope(method, tableName, data);
4109
4144
  });
4110
4145
  setCache(method, tableName, cacheRequestData, {
@@ -4576,6 +4611,7 @@ exports.derivedTable = derivedTable;
4576
4611
  exports.determineRuntimeJsType = determineRuntimeJsType;
4577
4612
  exports.distSphere = distSphere;
4578
4613
  exports.error = error;
4614
+ exports.evictCacheEntry = evictCacheEntry;
4579
4615
  exports.extractSqlEntries = extractSqlEntries;
4580
4616
  exports.fieldEq = fieldEq;
4581
4617
  exports.getEnv = getEnv;