@carbonorm/carbonnode 6.0.6 → 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 +159 -28
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.esm.js +156 -28
- 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 +9 -10
- package/src/executors/HttpExecutor.ts +1 -1
- 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,22 +513,20 @@ 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 (!
|
|
471
|
-
|
|
472
|
-
console.log("Using SQL Executor");
|
|
516
|
+
if (!config.mysqlPool && !config.axios) {
|
|
517
|
+
throw new Error("No execution method available: neither mysqlPool nor axios instance provided in config.");
|
|
473
518
|
}
|
|
519
|
+
if (!config.mysqlPool) return [3 /*break*/, 2];
|
|
520
|
+
config.verbose && console.log("Using SQL Executor");
|
|
474
521
|
return [4 /*yield*/, Promise.resolve().then(function () { return SqlExecutor$1; })];
|
|
475
522
|
case 1:
|
|
476
523
|
SqlExecutor = (_b.sent()).SqlExecutor;
|
|
477
524
|
executor = new SqlExecutor(config, request);
|
|
478
525
|
return [2 /*return*/, executor.execute()];
|
|
479
526
|
case 2:
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
hasPool: !!config.mysqlPool
|
|
484
|
-
});
|
|
485
|
-
}
|
|
527
|
+
config.verbose && console.log("Using HTTP Executor", {
|
|
528
|
+
isNode: isNode(),
|
|
529
|
+
});
|
|
486
530
|
return [4 /*yield*/, Promise.resolve().then(function () { return HttpExecutor$1; })];
|
|
487
531
|
case 3:
|
|
488
532
|
HttpExecutor = (_b.sent()).HttpExecutor;
|
|
@@ -573,13 +617,13 @@ var Executor = /** @class */ (function () {
|
|
|
573
617
|
}());
|
|
574
618
|
|
|
575
619
|
function isLocal () {
|
|
576
|
-
return
|
|
620
|
+
return getEnv('NODE_ENV', '') === 'development';
|
|
577
621
|
}
|
|
578
622
|
|
|
579
623
|
function isTest () {
|
|
580
|
-
return
|
|
581
|
-
||
|
|
582
|
-
||
|
|
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);
|
|
583
627
|
}
|
|
584
628
|
|
|
585
629
|
exports.eFetchDependencies = void 0;
|
|
@@ -1289,7 +1333,7 @@ var HttpExecutor = /** @class */ (function (_super) {
|
|
|
1289
1333
|
console.error(throwableError);
|
|
1290
1334
|
console.trace();
|
|
1291
1335
|
console.groupEnd();
|
|
1292
|
-
throw
|
|
1336
|
+
throw throwableError;
|
|
1293
1337
|
}
|
|
1294
1338
|
return [2 /*return*/];
|
|
1295
1339
|
}
|
|
@@ -2681,6 +2725,89 @@ var PaginationBuilder = /** @class */ (function (_super) {
|
|
|
2681
2725
|
return PaginationBuilder;
|
|
2682
2726
|
}(JoinBuilder));
|
|
2683
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
|
+
};
|
|
2684
2811
|
var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
2685
2812
|
tslib.__extends(SelectQueryBuilder, _super);
|
|
2686
2813
|
function SelectQueryBuilder() {
|
|
@@ -2732,7 +2859,8 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
2732
2859
|
else if (!isSubSelect) {
|
|
2733
2860
|
sql += " LIMIT 100";
|
|
2734
2861
|
}
|
|
2735
|
-
|
|
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)));
|
|
2736
2864
|
return { sql: sql, params: params };
|
|
2737
2865
|
};
|
|
2738
2866
|
return SelectQueryBuilder;
|
|
@@ -3789,6 +3917,7 @@ exports.checkAllRequestsComplete = checkAllRequestsComplete;
|
|
|
3789
3917
|
exports.checkCache = checkCache;
|
|
3790
3918
|
exports.clearCache = clearCache;
|
|
3791
3919
|
exports.collectSqlAllowListEntries = collectSqlAllowListEntries;
|
|
3920
|
+
exports.colorSql = colorSql;
|
|
3792
3921
|
exports.compileSqlAllowList = compileSqlAllowList;
|
|
3793
3922
|
exports.convertForRequestBody = convertForRequestBody;
|
|
3794
3923
|
exports.convertHexIfBinary = convertHexIfBinary;
|
|
@@ -3798,7 +3927,9 @@ exports.distSphere = distSphere;
|
|
|
3798
3927
|
exports.error = error;
|
|
3799
3928
|
exports.extractSqlEntries = extractSqlEntries;
|
|
3800
3929
|
exports.fieldEq = fieldEq;
|
|
3801
|
-
exports.
|
|
3930
|
+
exports.getEnv = getEnv;
|
|
3931
|
+
exports.getEnvBool = getEnvBool;
|
|
3932
|
+
exports.getEnvDebug = getEnvDebug;
|
|
3802
3933
|
exports.getPrimaryKeyTypes = getPrimaryKeyTypes;
|
|
3803
3934
|
exports.group = group;
|
|
3804
3935
|
exports.info = info;
|