@carbonorm/carbonnode 6.0.5 → 6.0.7
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 +169 -21
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.esm.js +166 -21
- package/dist/index.esm.js.map +1 -1
- package/dist/utils/colorSql.d.ts +1 -0
- package/dist/variables/getEnv.d.ts +10 -0
- package/dist/variables/isTest.d.ts +1 -1
- package/package.json +2 -1
- 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.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__/sqlBuilders.test.ts +21 -1
- package/src/api/restRequest.ts +10 -1
- package/src/executors/HttpExecutor.ts +1 -1
- package/src/executors/SqlExecutor.ts +22 -15
- package/src/index.ts +3 -1
- package/src/orm/queries/SelectQueryBuilder.ts +14 -1
- package/src/utils/colorSql.ts +112 -0
- package/src/variables/getEnv.ts +71 -0
- package/src/variables/isLocal.ts +2 -2
- package/src/variables/isTest.ts +4 -4
- package/src/variables/isVerbose.ts +2 -3
- package/dist/variables/getEnvVar.d.ts +0 -1
- package/src/variables/getEnvVar.ts +0 -15
package/dist/index.cjs.js
CHANGED
|
@@ -434,24 +434,70 @@ var isNode = function () {
|
|
|
434
434
|
return typeof process !== 'undefined' && !!((_a = process.versions) === null || _a === void 0 ? void 0 : _a.node);
|
|
435
435
|
};
|
|
436
436
|
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
437
|
+
/** biome-ignore-all lint/suspicious/noExplicitAny: working with global browser objects */
|
|
438
|
+
function getRuntimeEnv(key) {
|
|
439
|
+
var _a;
|
|
440
|
+
return typeof window !== "undefined" && ((_a = window.__ENV__) === null || _a === void 0 ? void 0 : _a[key]);
|
|
441
|
+
}
|
|
442
|
+
// Do not import anything here
|
|
443
|
+
function getViteEnv(key) {
|
|
444
|
+
var _a;
|
|
445
|
+
// @ts-expect-error
|
|
446
|
+
return typeof ({ url: (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs.js', document.baseURI).href)) }) !== "undefined" && ((_a = undefined) === null || _a === void 0 ? void 0 : _a[key]);
|
|
447
|
+
}
|
|
448
|
+
function getEnv(key, fallback) {
|
|
449
|
+
var _a;
|
|
450
|
+
try {
|
|
451
|
+
var viteEnv = getViteEnv(key);
|
|
452
|
+
if (viteEnv !== undefined)
|
|
453
|
+
return viteEnv;
|
|
444
454
|
}
|
|
445
|
-
|
|
446
|
-
|
|
455
|
+
catch (_b) { }
|
|
456
|
+
var runtimeEnv = getRuntimeEnv(key);
|
|
457
|
+
if (runtimeEnv !== undefined)
|
|
458
|
+
return runtimeEnv;
|
|
459
|
+
if (typeof process !== "undefined" && ((_a = process.env) === null || _a === void 0 ? void 0 : _a[key]) !== undefined) {
|
|
447
460
|
return process.env[key];
|
|
448
461
|
}
|
|
449
|
-
|
|
462
|
+
if (fallback !== undefined)
|
|
463
|
+
return fallback;
|
|
464
|
+
throw new Error("Missing environment variable: ".concat(key));
|
|
465
|
+
}
|
|
466
|
+
function getEnvBool(key, fallback) {
|
|
467
|
+
if (fallback === void 0) { fallback = false; }
|
|
468
|
+
var raw = getEnv(key, fallback);
|
|
469
|
+
var v = String(raw).trim().toLowerCase();
|
|
470
|
+
return (v === "true" ||
|
|
471
|
+
v === "1" ||
|
|
472
|
+
v === "yes" ||
|
|
473
|
+
v === "y" ||
|
|
474
|
+
v === "on" ||
|
|
475
|
+
v === "enabled");
|
|
476
|
+
}
|
|
477
|
+
function getEnvDebug(key, fallback) {
|
|
478
|
+
var _a;
|
|
479
|
+
try {
|
|
480
|
+
var viteEnv = getViteEnv(key);
|
|
481
|
+
if (viteEnv !== undefined) {
|
|
482
|
+
return { key: key, value: viteEnv, source: "vite" };
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
catch (_b) { }
|
|
486
|
+
var runtimeEnv = getRuntimeEnv(key);
|
|
487
|
+
if (runtimeEnv !== undefined) {
|
|
488
|
+
return { key: key, value: runtimeEnv, source: "runtime" };
|
|
489
|
+
}
|
|
490
|
+
if (typeof process !== "undefined" && ((_a = process.env) === null || _a === void 0 ? void 0 : _a[key]) !== undefined) {
|
|
491
|
+
return { key: key, value: process.env[key], source: "process" };
|
|
492
|
+
}
|
|
493
|
+
if (fallback !== undefined) {
|
|
494
|
+
return { key: key, value: fallback, source: "fallback" };
|
|
495
|
+
}
|
|
496
|
+
return { key: key, value: undefined, source: "missing" };
|
|
450
497
|
}
|
|
451
498
|
|
|
452
499
|
function isVerbose () {
|
|
453
|
-
|
|
454
|
-
return ['true', '1', 'yes', 'on'].includes(envVerbose.toLowerCase());
|
|
500
|
+
return getEnvBool('VERBOSE', false) || getEnvBool('REACT_APP_VERBOSE', false) || getEnvBool('VITE_VERBOSE', false);
|
|
455
501
|
}
|
|
456
502
|
|
|
457
503
|
/**
|
|
@@ -467,13 +513,21 @@ function restRequest(configX) {
|
|
|
467
513
|
case 0:
|
|
468
514
|
config = typeof configX === "function" ? configX() : configX;
|
|
469
515
|
(_a = config.verbose) !== null && _a !== void 0 ? _a : (config.verbose = isVerbose()); // Default to env-driven verbosity if not set
|
|
470
|
-
if (!
|
|
516
|
+
if (!config.mysqlPool && !config.axios) {
|
|
517
|
+
throw new Error("No execution method available: neither mysqlPool nor axios instance provided in config.");
|
|
518
|
+
}
|
|
519
|
+
if (!config.mysqlPool) return [3 /*break*/, 2];
|
|
520
|
+
config.verbose && console.log("Using SQL Executor");
|
|
471
521
|
return [4 /*yield*/, Promise.resolve().then(function () { return SqlExecutor$1; })];
|
|
472
522
|
case 1:
|
|
473
523
|
SqlExecutor = (_b.sent()).SqlExecutor;
|
|
474
524
|
executor = new SqlExecutor(config, request);
|
|
475
525
|
return [2 /*return*/, executor.execute()];
|
|
476
|
-
case 2:
|
|
526
|
+
case 2:
|
|
527
|
+
config.verbose && console.log("Using HTTP Executor", {
|
|
528
|
+
isNode: isNode(),
|
|
529
|
+
});
|
|
530
|
+
return [4 /*yield*/, Promise.resolve().then(function () { return HttpExecutor$1; })];
|
|
477
531
|
case 3:
|
|
478
532
|
HttpExecutor = (_b.sent()).HttpExecutor;
|
|
479
533
|
http = new HttpExecutor(config, request);
|
|
@@ -563,13 +617,13 @@ var Executor = /** @class */ (function () {
|
|
|
563
617
|
}());
|
|
564
618
|
|
|
565
619
|
function isLocal () {
|
|
566
|
-
return
|
|
620
|
+
return getEnv('NODE_ENV', '') === 'development';
|
|
567
621
|
}
|
|
568
622
|
|
|
569
623
|
function isTest () {
|
|
570
|
-
return
|
|
571
|
-
||
|
|
572
|
-
||
|
|
624
|
+
return getEnv('JEST_WORKER_ID', null) || getEnv('NODE_ENV', "") === 'test'
|
|
625
|
+
|| getEnvBool('REACT_APP_TEST', false) || getEnvBool('VITE_TEST', false)
|
|
626
|
+
|| getEnv('MODE', '') === 'test' || getEnvBool('VITE_TEST_MODE', false);
|
|
573
627
|
}
|
|
574
628
|
|
|
575
629
|
exports.eFetchDependencies = void 0;
|
|
@@ -1279,7 +1333,7 @@ var HttpExecutor = /** @class */ (function (_super) {
|
|
|
1279
1333
|
console.error(throwableError);
|
|
1280
1334
|
console.trace();
|
|
1281
1335
|
console.groupEnd();
|
|
1282
|
-
throw
|
|
1336
|
+
throw throwableError;
|
|
1283
1337
|
}
|
|
1284
1338
|
return [2 /*return*/];
|
|
1285
1339
|
}
|
|
@@ -2671,6 +2725,89 @@ var PaginationBuilder = /** @class */ (function (_super) {
|
|
|
2671
2725
|
return PaginationBuilder;
|
|
2672
2726
|
}(JoinBuilder));
|
|
2673
2727
|
|
|
2728
|
+
/* eslint-disable no-control-regex */
|
|
2729
|
+
var RESET = "\x1b[0m";
|
|
2730
|
+
var C$1 = {
|
|
2731
|
+
KEYWORD: "\x1b[94m", // blue
|
|
2732
|
+
LIMIT: "\x1b[93m", // yellow
|
|
2733
|
+
NUMBER: "\x1b[92m", // green
|
|
2734
|
+
DIM: "\x1b[90m", // gray
|
|
2735
|
+
};
|
|
2736
|
+
/* ---------- ANSI helpers ---------- */
|
|
2737
|
+
var ansi256 = function (n) { return "\u001B[38;5;".concat(n, "m"); };
|
|
2738
|
+
/* ---------- hashing ---------- */
|
|
2739
|
+
function hashString(str) {
|
|
2740
|
+
var hash = 0;
|
|
2741
|
+
for (var i = 0; i < str.length; i++) {
|
|
2742
|
+
hash = (hash * 31 + str.charCodeAt(i)) | 0;
|
|
2743
|
+
}
|
|
2744
|
+
return Math.abs(hash);
|
|
2745
|
+
}
|
|
2746
|
+
/* ---------- table color ---------- */
|
|
2747
|
+
function tableRGB(tableName) {
|
|
2748
|
+
var name = tableName.replace(/[`"]/g, "").toLowerCase();
|
|
2749
|
+
var hash = hashString(name);
|
|
2750
|
+
// Stable hue bucket by first letter
|
|
2751
|
+
var first = name.charCodeAt(0) || 97;
|
|
2752
|
+
var hueBase = (first - 97) % 6;
|
|
2753
|
+
var r = (hueBase + (hash % 3)) % 6;
|
|
2754
|
+
var g = (hash >> 3) % 6;
|
|
2755
|
+
var b = (hash >> 6) % 6;
|
|
2756
|
+
return [r, g, Math.max(2, b)]; // avoid muddy dark blues
|
|
2757
|
+
}
|
|
2758
|
+
function tableColor(table) {
|
|
2759
|
+
var _a = tableRGB(table), r = _a[0], g = _a[1], b = _a[2];
|
|
2760
|
+
return ansi256(16 + 36 * r + 6 * g + b);
|
|
2761
|
+
}
|
|
2762
|
+
/* ---------- column color (same hue, lighter) ---------- */
|
|
2763
|
+
function columnColorFromTable(table) {
|
|
2764
|
+
var _a = tableRGB(table), r = _a[0], g = _a[1], b = _a[2];
|
|
2765
|
+
// Lift toward white, preserve hue
|
|
2766
|
+
var lr = Math.min(5, r + 1);
|
|
2767
|
+
var lg = Math.min(5, g + 1);
|
|
2768
|
+
var lb = Math.min(5, b + 2);
|
|
2769
|
+
return ansi256(16 + 36 * lr + 6 * lg + lb);
|
|
2770
|
+
}
|
|
2771
|
+
/* ---------- bind collapsing ---------- */
|
|
2772
|
+
/**
|
|
2773
|
+
* ?, ?, ?, ?, ?, ? → ? ×6
|
|
2774
|
+
* triggers at 4+
|
|
2775
|
+
*/
|
|
2776
|
+
function collapseBinds(sql) {
|
|
2777
|
+
return sql.replace(/(\?\s*,\s*){3,}\?/g, function (match) {
|
|
2778
|
+
var count = match.split("?").length - 1;
|
|
2779
|
+
return "".concat(C$1.DIM, "? \u00D7").concat(count).concat(RESET);
|
|
2780
|
+
});
|
|
2781
|
+
}
|
|
2782
|
+
/* ---------- main formatter ---------- */
|
|
2783
|
+
function colorSql(sql) {
|
|
2784
|
+
var s = sql.trim();
|
|
2785
|
+
/* 1️⃣ collapse bind noise */
|
|
2786
|
+
s = collapseBinds(s);
|
|
2787
|
+
/* 2️⃣ table.column coloring (core visual grouping) */
|
|
2788
|
+
s = s.replace(/\b(`?\w+`?)\.(\w+)\b/g, function (_, table, column) {
|
|
2789
|
+
return "".concat(tableColor(table)).concat(table).concat(RESET, ".") +
|
|
2790
|
+
"".concat(columnColorFromTable(table)).concat(column).concat(RESET);
|
|
2791
|
+
});
|
|
2792
|
+
/* 3️⃣ FROM / JOIN tables */
|
|
2793
|
+
s = s.replace(/\b(FROM|JOIN|UPDATE|INTO)\s+(`[^`]+`|\w+)/gi, function (_, kw, table) {
|
|
2794
|
+
return "".concat(C$1.KEYWORD).concat(kw).concat(RESET, " ").concat(tableColor(table)).concat(table).concat(RESET);
|
|
2795
|
+
});
|
|
2796
|
+
/* 4️⃣ SQL keywords */
|
|
2797
|
+
s = s.replace(/\b(SELECT|WHERE|AND|OR|ON|IN|BETWEEN|EXISTS|ORDER BY)\b/gi, "".concat(C$1.KEYWORD, "$1").concat(RESET));
|
|
2798
|
+
/* 5️⃣ LIMIT */
|
|
2799
|
+
s = s.replace(/\bLIMIT\s+(\d+)/gi, "".concat(C$1.LIMIT, "LIMIT").concat(RESET, " ").concat(C$1.NUMBER, "$1").concat(RESET));
|
|
2800
|
+
return s;
|
|
2801
|
+
}
|
|
2802
|
+
|
|
2803
|
+
var version = "6.0.7";
|
|
2804
|
+
|
|
2805
|
+
var C = {
|
|
2806
|
+
SSR: "\x1b[95m", // bright magenta
|
|
2807
|
+
HTTP: "\x1b[94m", // bright blue
|
|
2808
|
+
SQL: "\x1b[96m", // bright cyan (your SELECT teal)
|
|
2809
|
+
RESET: "\x1b[0m",
|
|
2810
|
+
};
|
|
2674
2811
|
var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
2675
2812
|
tslib.__extends(SelectQueryBuilder, _super);
|
|
2676
2813
|
function SelectQueryBuilder() {
|
|
@@ -2722,7 +2859,8 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
2722
2859
|
else if (!isSubSelect) {
|
|
2723
2860
|
sql += " LIMIT 100";
|
|
2724
2861
|
}
|
|
2725
|
-
|
|
2862
|
+
var preText = getEnvBool("SSR", false) ? "".concat(C.SSR, "[SSR]").concat(C.RESET, " ") : "".concat(C.HTTP, "[API]").concat(C.RESET, " ");
|
|
2863
|
+
console.log("[".concat(version, "] ").concat(preText).concat(C.SQL, "[SELECT]").concat(C.RESET, " ").concat(colorSql(sql)));
|
|
2726
2864
|
return { sql: sql, params: params };
|
|
2727
2865
|
};
|
|
2728
2866
|
return SelectQueryBuilder;
|
|
@@ -3127,6 +3265,13 @@ var SqlExecutor = /** @class */ (function (_super) {
|
|
|
3127
3265
|
case 1: return [4 /*yield*/, this.runQuery()];
|
|
3128
3266
|
case 2:
|
|
3129
3267
|
rest = _b.sent();
|
|
3268
|
+
if (this.config.reactBootstrap) {
|
|
3269
|
+
this.config.reactBootstrap.updateRestfulObjectArrays({
|
|
3270
|
+
dataOrCallback: rest.rest,
|
|
3271
|
+
stateKey: this.config.restModel.TABLE_NAME,
|
|
3272
|
+
uniqueObjectId: this.config.restModel.PRIMARY_SHORT,
|
|
3273
|
+
});
|
|
3274
|
+
}
|
|
3130
3275
|
return [2 /*return*/, rest];
|
|
3131
3276
|
case 3: return [4 /*yield*/, this.runQuery()];
|
|
3132
3277
|
case 4:
|
|
@@ -3772,6 +3917,7 @@ exports.checkAllRequestsComplete = checkAllRequestsComplete;
|
|
|
3772
3917
|
exports.checkCache = checkCache;
|
|
3773
3918
|
exports.clearCache = clearCache;
|
|
3774
3919
|
exports.collectSqlAllowListEntries = collectSqlAllowListEntries;
|
|
3920
|
+
exports.colorSql = colorSql;
|
|
3775
3921
|
exports.compileSqlAllowList = compileSqlAllowList;
|
|
3776
3922
|
exports.convertForRequestBody = convertForRequestBody;
|
|
3777
3923
|
exports.convertHexIfBinary = convertHexIfBinary;
|
|
@@ -3781,7 +3927,9 @@ exports.distSphere = distSphere;
|
|
|
3781
3927
|
exports.error = error;
|
|
3782
3928
|
exports.extractSqlEntries = extractSqlEntries;
|
|
3783
3929
|
exports.fieldEq = fieldEq;
|
|
3784
|
-
exports.
|
|
3930
|
+
exports.getEnv = getEnv;
|
|
3931
|
+
exports.getEnvBool = getEnvBool;
|
|
3932
|
+
exports.getEnvDebug = getEnvDebug;
|
|
3785
3933
|
exports.getPrimaryKeyTypes = getPrimaryKeyTypes;
|
|
3786
3934
|
exports.group = group;
|
|
3787
3935
|
exports.info = info;
|