@carbonorm/carbonnode 6.0.17 → 6.0.19
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.js +58 -7
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +58 -8
- package/dist/index.esm.js.map +1 -1
- package/dist/types/ormInterfaces.d.ts +1 -0
- package/dist/utils/cacheManager.d.ts +1 -0
- package/dist/utils/logSql.d.ts +1 -1
- package/package.json +2 -2
- package/src/__tests__/cacheManager.test.ts +27 -1
- package/src/__tests__/httpExecutor.cacheEviction.test.ts +70 -0
- package/src/__tests__/logSql.test.ts +16 -0
- package/src/__tests__/sakila-db/C6.js +1 -1
- package/src/__tests__/sakila-db/C6.mysqldump.json +1 -1
- package/src/__tests__/sakila-db/C6.mysqldump.sql +1 -1
- package/src/__tests__/sakila-db/C6.ts +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.actor.post.json +3 -3
- package/src/__tests__/sakila-db/sqlResponses/C6.actor.post.latest.json +3 -3
- package/src/__tests__/sakila-db/sqlResponses/C6.actor.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.actor.put.lookup.json +3 -3
- package/src/__tests__/sakila-db/sqlResponses/C6.address.post.json +5 -5
- package/src/__tests__/sakila-db/sqlResponses/C6.address.post.latest.json +5 -5
- package/src/__tests__/sakila-db/sqlResponses/C6.address.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.address.put.lookup.json +5 -5
- package/src/__tests__/sakila-db/sqlResponses/C6.category.post.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.category.post.latest.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.category.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.category.put.lookup.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.city.post.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.city.post.latest.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.city.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.city.put.lookup.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.country.post.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.country.post.latest.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.country.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.country.put.lookup.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.customer.post.json +5 -5
- package/src/__tests__/sakila-db/sqlResponses/C6.customer.post.latest.json +5 -5
- package/src/__tests__/sakila-db/sqlResponses/C6.customer.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.customer.put.lookup.json +5 -5
- package/src/__tests__/sakila-db/sqlResponses/C6.film.post.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.film.post.latest.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.film.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.film.put.lookup.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.inventory.post.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.inventory.post.latest.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.inventory.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.inventory.put.lookup.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.language.post.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.language.post.latest.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.language.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.language.put.lookup.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.payment.post.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.payment.post.latest.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.payment.put.lookup.json +2 -2
- package/src/__tests__/sakila-db/sqlResponses/C6.rental.join.json +10 -10
- package/src/__tests__/sakila-db/sqlResponses/C6.rental.post.json +3 -3
- package/src/__tests__/sakila-db/sqlResponses/C6.rental.post.latest.json +3 -3
- package/src/__tests__/sakila-db/sqlResponses/C6.rental.put.json +1 -1
- package/src/__tests__/sakila-db/sqlResponses/C6.rental.put.lookup.json +3 -3
- package/src/__tests__/sqlExecutor.cacheEviction.test.ts +79 -0
- package/src/executors/HttpExecutor.ts +19 -3
- package/src/executors/SqlExecutor.ts +23 -5
- package/src/types/ormInterfaces.ts +4 -1
- package/src/utils/cacheManager.ts +25 -1
- package/src/utils/logSql.ts +3 -1
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.
|
|
957
|
+
var version = "6.0.19";
|
|
958
958
|
|
|
959
959
|
var DEFAULT_STEP = 8;
|
|
960
960
|
function parseSemver(version) {
|
|
@@ -1040,6 +1040,8 @@ var cacheLabel = function (cacheStatus) {
|
|
|
1040
1040
|
switch (cacheStatus) {
|
|
1041
1041
|
case "hit":
|
|
1042
1042
|
return "".concat(C.METHOD_COLORS.SELECT, "[CACHE HIT]").concat(C.RESET);
|
|
1043
|
+
case "evicted":
|
|
1044
|
+
return "".concat(C.WARN, "[CACHE EVICTED]").concat(C.RESET);
|
|
1043
1045
|
case "ignored":
|
|
1044
1046
|
return "".concat(C.WARN, "[CACHE IGNORED]").concat(C.RESET);
|
|
1045
1047
|
default:
|
|
@@ -1117,7 +1119,6 @@ function checkCache(method, tableName, requestData, logContext) {
|
|
|
1117
1119
|
var key = makeCacheKey(method, tableName, requestData);
|
|
1118
1120
|
var cached = apiRequestCache.get(key);
|
|
1119
1121
|
if (!cached) {
|
|
1120
|
-
console.log('apiRequestCache.size', apiRequestCache.size);
|
|
1121
1122
|
return false;
|
|
1122
1123
|
}
|
|
1123
1124
|
if (shouldLog(exports.LogLevel.INFO, logContext)) {
|
|
@@ -1140,6 +1141,24 @@ function setCache(method, tableName, requestData, cacheEntry) {
|
|
|
1140
1141
|
var key = makeCacheKey(method, tableName, requestData);
|
|
1141
1142
|
apiRequestCache.set(key, cacheEntry);
|
|
1142
1143
|
}
|
|
1144
|
+
function evictCacheEntry(method, tableName, requestData, logContext) {
|
|
1145
|
+
var _a, _b, _c, _d, _e;
|
|
1146
|
+
var key = makeCacheKey(method, tableName, requestData);
|
|
1147
|
+
var cached = apiRequestCache.get(key);
|
|
1148
|
+
var deleted = apiRequestCache.delete(key);
|
|
1149
|
+
if (deleted && shouldLog(exports.LogLevel.INFO, logContext)) {
|
|
1150
|
+
var sql = (_d = (_c = (_b = (_a = cached === null || cached === void 0 ? void 0 : cached.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.sql) === null || _c === void 0 ? void 0 : _c.sql) !== null && _d !== void 0 ? _d : "";
|
|
1151
|
+
var sqlMethod = ((_e = sql.trim().split(/\s+/, 1)[0]) === null || _e === void 0 ? void 0 : _e.toUpperCase()) || method;
|
|
1152
|
+
logSql({
|
|
1153
|
+
allowListStatus: "not verified",
|
|
1154
|
+
cacheStatus: "evicted",
|
|
1155
|
+
context: logContext,
|
|
1156
|
+
method: sqlMethod,
|
|
1157
|
+
sql: sql,
|
|
1158
|
+
});
|
|
1159
|
+
}
|
|
1160
|
+
return deleted;
|
|
1161
|
+
}
|
|
1143
1162
|
|
|
1144
1163
|
function sortAndSerializeQueryObject(tables, query) {
|
|
1145
1164
|
var orderedQuery = Object.keys(query).sort().reduce(function (obj, key) {
|
|
@@ -1265,7 +1284,7 @@ var HttpExecutor = /** @class */ (function (_super) {
|
|
|
1265
1284
|
}
|
|
1266
1285
|
query = this.request;
|
|
1267
1286
|
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;
|
|
1287
|
+
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
1288
|
var _e;
|
|
1270
1289
|
var _this = this;
|
|
1271
1290
|
var _f, _g, _h, _j, _k, _l;
|
|
@@ -1295,6 +1314,9 @@ var HttpExecutor = /** @class */ (function (_super) {
|
|
|
1295
1314
|
query[C6.PAGINATION][C6.LIMIT] = query[C6.PAGINATION][C6.LIMIT] || 100;
|
|
1296
1315
|
}
|
|
1297
1316
|
cacheRequestData = JSON.parse(JSON.stringify(query !== null && query !== void 0 ? query : {}));
|
|
1317
|
+
evictFromCache = requestMethod === GET && cacheResults
|
|
1318
|
+
? function () { return evictCacheEntry(requestMethod, tableName, cacheRequestData, logContext); }
|
|
1319
|
+
: undefined;
|
|
1298
1320
|
querySerialized = sortAndSerializeQueryObject(tables, cacheRequestData !== null && cacheRequestData !== void 0 ? cacheRequestData : {});
|
|
1299
1321
|
cachedRequest = false;
|
|
1300
1322
|
if (cacheResults) {
|
|
@@ -1302,7 +1324,15 @@ var HttpExecutor = /** @class */ (function (_super) {
|
|
|
1302
1324
|
}
|
|
1303
1325
|
if (!cachedRequest) return [3 /*break*/, 2];
|
|
1304
1326
|
return [4 /*yield*/, cachedRequest];
|
|
1305
|
-
case 1:
|
|
1327
|
+
case 1:
|
|
1328
|
+
cachedData = (_m.sent()).data;
|
|
1329
|
+
if (evictFromCache
|
|
1330
|
+
&& cachedData
|
|
1331
|
+
&& typeof cachedData === "object"
|
|
1332
|
+
&& Array.isArray(cachedData.rest)) {
|
|
1333
|
+
cachedData.evictFromCache = evictFromCache;
|
|
1334
|
+
}
|
|
1335
|
+
return [2 /*return*/, cachedData];
|
|
1306
1336
|
case 2:
|
|
1307
1337
|
if (cacheResults) {
|
|
1308
1338
|
cachingConfirmed = true;
|
|
@@ -1493,7 +1523,7 @@ var HttpExecutor = /** @class */ (function (_super) {
|
|
|
1493
1523
|
else {
|
|
1494
1524
|
callback();
|
|
1495
1525
|
}
|
|
1496
|
-
if (!(
|
|
1526
|
+
if (!(requestMethod === GET && this.isRestResponse(response))) return [3 /*break*/, 2];
|
|
1497
1527
|
responseData_1 = response.data;
|
|
1498
1528
|
pageLimit = (_a = query === null || query === void 0 ? void 0 : query[C6.PAGINATION]) === null || _a === void 0 ? void 0 : _a[C6.LIMIT];
|
|
1499
1529
|
got = responseData_1.rest.length;
|
|
@@ -1504,6 +1534,9 @@ var HttpExecutor = /** @class */ (function (_super) {
|
|
|
1504
1534
|
else {
|
|
1505
1535
|
responseData_1.next = undefined; // short page => done
|
|
1506
1536
|
}
|
|
1537
|
+
if (cachingConfirmed && evictFromCache) {
|
|
1538
|
+
responseData_1.evictFromCache = evictFromCache;
|
|
1539
|
+
}
|
|
1507
1540
|
if (cachingConfirmed) {
|
|
1508
1541
|
setCache(requestMethod, tableName, cacheRequestData, {
|
|
1509
1542
|
requestArgumentsSerialized: querySerialized,
|
|
@@ -4070,7 +4103,7 @@ var SqlExecutor = /** @class */ (function (_super) {
|
|
|
4070
4103
|
};
|
|
4071
4104
|
SqlExecutor.prototype.runQuery = function () {
|
|
4072
4105
|
return tslib.__awaiter(this, void 0, void 0, function () {
|
|
4073
|
-
var method, tableName, logContext, cacheResults, cacheRequestData, requestArgumentsSerialized, cachedRequest, sqlExecution, sqlMethod, queryPromise, cacheRequest, cacheResponse;
|
|
4106
|
+
var method, tableName, logContext, cacheResults, cacheRequestData, requestArgumentsSerialized, evictFromCache, cachedRequest, cachedData, sqlExecution, sqlMethod, queryPromise, cacheRequest, cacheResponse;
|
|
4074
4107
|
var _this = this;
|
|
4075
4108
|
var _a, _b;
|
|
4076
4109
|
return tslib.__generator(this, function (_c) {
|
|
@@ -4087,11 +4120,22 @@ var SqlExecutor = /** @class */ (function (_super) {
|
|
|
4087
4120
|
requestArgumentsSerialized = cacheResults
|
|
4088
4121
|
? sortAndSerializeQueryObject(tableName, cacheRequestData !== null && cacheRequestData !== void 0 ? cacheRequestData : {})
|
|
4089
4122
|
: undefined;
|
|
4123
|
+
evictFromCache = method === C6Constants.GET && cacheResults && cacheRequestData
|
|
4124
|
+
? function () { return evictCacheEntry(method, tableName, cacheRequestData, logContext); }
|
|
4125
|
+
: undefined;
|
|
4090
4126
|
if (!cacheResults) return [3 /*break*/, 2];
|
|
4091
4127
|
cachedRequest = checkCache(method, tableName, cacheRequestData, logContext);
|
|
4092
4128
|
if (!cachedRequest) return [3 /*break*/, 2];
|
|
4093
4129
|
return [4 /*yield*/, cachedRequest];
|
|
4094
|
-
case 1:
|
|
4130
|
+
case 1:
|
|
4131
|
+
cachedData = (_c.sent()).data;
|
|
4132
|
+
if (evictFromCache
|
|
4133
|
+
&& cachedData
|
|
4134
|
+
&& typeof cachedData === "object"
|
|
4135
|
+
&& Array.isArray(cachedData.rest)) {
|
|
4136
|
+
cachedData.evictFromCache = evictFromCache;
|
|
4137
|
+
}
|
|
4138
|
+
return [2 /*return*/, cachedData];
|
|
4095
4139
|
case 2:
|
|
4096
4140
|
sqlExecution = this.buildSqlExecutionContext(method, tableName, logContext);
|
|
4097
4141
|
sqlMethod = this.resolveSqlLogMethod(method, sqlExecution.sql);
|
|
@@ -4105,6 +4149,12 @@ var SqlExecutor = /** @class */ (function (_super) {
|
|
|
4105
4149
|
case 3: return [2 /*return*/, _c.sent()];
|
|
4106
4150
|
case 4:
|
|
4107
4151
|
cacheRequest = queryPromise.then(function (data) {
|
|
4152
|
+
if (evictFromCache
|
|
4153
|
+
&& data
|
|
4154
|
+
&& typeof data === "object"
|
|
4155
|
+
&& Array.isArray(data.rest)) {
|
|
4156
|
+
data.evictFromCache = evictFromCache;
|
|
4157
|
+
}
|
|
4108
4158
|
return _this.createCacheResponseEnvelope(method, tableName, data);
|
|
4109
4159
|
});
|
|
4110
4160
|
setCache(method, tableName, cacheRequestData, {
|
|
@@ -4576,6 +4626,7 @@ exports.derivedTable = derivedTable;
|
|
|
4576
4626
|
exports.determineRuntimeJsType = determineRuntimeJsType;
|
|
4577
4627
|
exports.distSphere = distSphere;
|
|
4578
4628
|
exports.error = error;
|
|
4629
|
+
exports.evictCacheEntry = evictCacheEntry;
|
|
4579
4630
|
exports.extractSqlEntries = extractSqlEntries;
|
|
4580
4631
|
exports.fieldEq = fieldEq;
|
|
4581
4632
|
exports.getEnv = getEnv;
|