@catbee/utils 2.0.0-next.0 → 2.0.0-next.1
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/README.md +52 -16
- package/array/index.cjs +180 -71
- package/array/index.d.ts +293 -1
- package/array/index.mjs +171 -72
- package/async/index.cjs +92 -36
- package/async/index.d.ts +275 -1
- package/async/index.mjs +92 -36
- package/cache/index.cjs +1 -1
- package/cache/index.d.ts +155 -1
- package/cache/index.mjs +2 -2
- package/config/index.cjs +78 -64
- package/config/index.d.ts +64 -2
- package/config/index.mjs +76 -64
- package/context-store/index.d.ts +192 -1
- package/crypto/index.d.ts +163 -1
- package/date/index.cjs +46 -1
- package/date/index.d.ts +190 -1
- package/date/index.mjs +45 -2
- package/decorators/index.cjs +1156 -18
- package/decorators/index.d.ts +684 -1
- package/decorators/index.mjs +1156 -18
- package/dir/index.cjs +4 -3
- package/dir/index.d.ts +195 -1
- package/dir/index.mjs +4 -3
- package/env/index.cjs +10 -26
- package/env/index.d.ts +379 -1
- package/env/index.mjs +10 -26
- package/exception/index.d.ts +232 -1
- package/fs/index.cjs +70 -36
- package/fs/index.d.ts +205 -1
- package/fs/index.mjs +64 -34
- package/http-status-codes/index.d.ts +267 -1
- package/id/index.d.ts +37 -1
- package/index.cjs +3 -3
- package/index.d.ts +1 -1
- package/index.mjs +1 -1
- package/logger/index.cjs +11 -11
- package/logger/index.d.ts +189 -1
- package/logger/index.mjs +12 -12
- package/middleware/index.d.ts +103 -1
- package/obj/index.cjs +150 -162
- package/obj/index.d.ts +136 -1
- package/obj/index.mjs +150 -162
- package/package.json +11 -11
- package/performance/index.cjs +2 -2
- package/performance/index.d.ts +138 -1
- package/performance/index.mjs +2 -2
- package/request/index.cjs +1 -1
- package/request/index.d.ts +241 -2
- package/request/index.mjs +1 -1
- package/response/index.d.ts +318 -2
- package/server/index.cjs +27 -23
- package/server/index.d.ts +785 -4
- package/server/index.mjs +28 -23
- package/stream/index.d.ts +90 -1
- package/string/index.d.ts +102 -1
- package/type/index.cjs +1 -1
- package/type/index.d.ts +107 -1
- package/type/index.mjs +1 -1
- package/types/index.d.ts +774 -4
- package/url/index.cjs +2 -4
- package/url/index.d.ts +142 -1
- package/url/index.mjs +2 -4
- package/{validate → validation}/index.cjs +89 -42
- package/{validate/validate.utils.d.ts → validation/index.d.ts} +32 -23
- package/{validate → validation}/index.mjs +85 -42
- package/array/array.utils.d.ts +0 -191
- package/async/async.utils.d.ts +0 -296
- package/cache/cache.utils.d.ts +0 -176
- package/config/config.d.ts +0 -57
- package/context-store/context-store.utils.d.ts +0 -212
- package/crypto/crypto.utils.d.ts +0 -183
- package/date/date.utils.d.ts +0 -190
- package/decorators/decorators.utils.d.ts +0 -705
- package/dir/dir.utils.d.ts +0 -216
- package/env/env.utils.d.ts +0 -400
- package/exception/exception.utils.d.ts +0 -253
- package/fs/fs.utils.d.ts +0 -196
- package/http-status-codes/http-status-codes.d.ts +0 -289
- package/id/id.utils.d.ts +0 -59
- package/logger/logger.utils.d.ts +0 -210
- package/middleware/middleware.utils.d.ts +0 -123
- package/obj/obj.utils.d.ts +0 -156
- package/performance/performance.utils.d.ts +0 -159
- package/request/request.utils.d.ts +0 -109
- package/response/response.utils.d.ts +0 -186
- package/server/server.builder.d.ts +0 -531
- package/server/server.d.ts +0 -303
- package/stream/stream.utils.d.ts +0 -111
- package/string/string.utils.d.ts +0 -124
- package/type/type.utils.d.ts +0 -129
- package/types/api-response.d.ts +0 -175
- package/types/common.d.ts +0 -148
- package/types/config.d.ts +0 -88
- package/types/server.d.ts +0 -291
- package/url/url.utils.d.ts +0 -164
- package/validate/index.d.ts +0 -25
package/server/index.cjs
CHANGED
|
@@ -32,18 +32,17 @@ var middleware = require('@catbee/utils/middleware');
|
|
|
32
32
|
var env = require('@catbee/utils/env');
|
|
33
33
|
var logger = require('@catbee/utils/logger');
|
|
34
34
|
var exception = require('@catbee/utils/exception');
|
|
35
|
-
var fs$1 = require('fs');
|
|
36
35
|
var config = require('@catbee/utils/config');
|
|
37
36
|
var obj = require('@catbee/utils/obj');
|
|
38
37
|
var fs = require('@catbee/utils/fs');
|
|
39
|
-
var
|
|
38
|
+
var validation = require('@catbee/utils/validation');
|
|
40
39
|
var async = require('@catbee/utils/async');
|
|
40
|
+
var id = require('@catbee/utils/id');
|
|
41
41
|
|
|
42
42
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
43
43
|
|
|
44
44
|
var express__default = /*#__PURE__*/_interopDefault(express);
|
|
45
45
|
var https__default = /*#__PURE__*/_interopDefault(https);
|
|
46
|
-
var fs__default = /*#__PURE__*/_interopDefault(fs$1);
|
|
47
46
|
|
|
48
47
|
var __defProp = Object.defineProperty;
|
|
49
48
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
@@ -61,7 +60,7 @@ var ServerConfigBuilder = class {
|
|
|
61
60
|
* @throws {Error} If port is not an integer or is outside the valid range (1-65535)
|
|
62
61
|
*/
|
|
63
62
|
validatePort(port) {
|
|
64
|
-
if (!
|
|
63
|
+
if (!validation.isPort(port)) {
|
|
65
64
|
throw new Error(`Port must be a valid number between 1 and 65535, got: ${port}`);
|
|
66
65
|
}
|
|
67
66
|
}
|
|
@@ -506,7 +505,10 @@ var ServerConfigBuilder = class {
|
|
|
506
505
|
* ```
|
|
507
506
|
*/
|
|
508
507
|
withBodyParser(opts) {
|
|
509
|
-
this.config.bodyParser =
|
|
508
|
+
this.config.bodyParser = {
|
|
509
|
+
...this.config.bodyParser,
|
|
510
|
+
...opts
|
|
511
|
+
};
|
|
510
512
|
return this;
|
|
511
513
|
}
|
|
512
514
|
/**
|
|
@@ -649,7 +651,7 @@ var ServerConfigBuilder = class {
|
|
|
649
651
|
* ```
|
|
650
652
|
*/
|
|
651
653
|
build() {
|
|
652
|
-
const config$1 = obj.deepObjMerge({}, config.
|
|
654
|
+
const config$1 = obj.deepObjMerge({}, config.getCatbeeServerGlobalConfig(), this.config);
|
|
653
655
|
if (config$1.openApi?.enable && !config$1.openApi.filePath) {
|
|
654
656
|
throw new Error("OpenAPI is enabled but no filePath is specified");
|
|
655
657
|
}
|
|
@@ -659,7 +661,7 @@ var ServerConfigBuilder = class {
|
|
|
659
661
|
});
|
|
660
662
|
}
|
|
661
663
|
mergeConfig(key, value) {
|
|
662
|
-
const current =
|
|
664
|
+
const current = this.config[key] && typeof this.config[key] === "object" ? obj.deepClone(this.config[key]) : {};
|
|
663
665
|
this.config[key] = obj.deepObjMerge({}, current, value);
|
|
664
666
|
}
|
|
665
667
|
setEnabled(key, enable, overrides = {}) {
|
|
@@ -670,9 +672,11 @@ var ServerConfigBuilder = class {
|
|
|
670
672
|
return this;
|
|
671
673
|
}
|
|
672
674
|
};
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
675
|
+
var getDependencyErrorMessage = /* @__PURE__ */ __name((packageName, context) => {
|
|
676
|
+
const ctxPart = context ? `for ${context}` : "";
|
|
677
|
+
const spacer = ctxPart ? ` ${ctxPart}` : "";
|
|
678
|
+
return `Missing required dependency${spacer}: ${packageName}. Please install it to proceed.`;
|
|
679
|
+
}, "getDependencyErrorMessage");
|
|
676
680
|
var DependencyErrors = {
|
|
677
681
|
express: getDependencyErrorMessage("express"),
|
|
678
682
|
helmet: getDependencyErrorMessage("helmet"),
|
|
@@ -737,12 +741,12 @@ var ExpressServer = class {
|
|
|
737
741
|
* - Request tracing
|
|
738
742
|
*/
|
|
739
743
|
constructor(config$1, hooks = {}) {
|
|
740
|
-
if (this.
|
|
744
|
+
if (this.hasBuildMarker(config$1)) {
|
|
741
745
|
this.config = config$1;
|
|
742
746
|
} else {
|
|
743
|
-
this.config = obj.deepObjMerge({}, config.
|
|
747
|
+
this.config = obj.deepObjMerge({}, config.getCatbeeServerGlobalConfig(), config$1);
|
|
744
748
|
}
|
|
745
|
-
if (!
|
|
749
|
+
if (!validation.isPort(this.config.port)) {
|
|
746
750
|
const msg = `Port must be a valid number between 1 and 65535, got: ${this.config.port}`;
|
|
747
751
|
logger.getLogger().error(msg);
|
|
748
752
|
throw new Error(msg);
|
|
@@ -842,7 +846,7 @@ var ExpressServer = class {
|
|
|
842
846
|
async runHook(hook, ...args) {
|
|
843
847
|
try {
|
|
844
848
|
const fn = this.hooks[hook];
|
|
845
|
-
if (fn) await fn
|
|
849
|
+
if (fn) await fn(...args);
|
|
846
850
|
} catch (err) {
|
|
847
851
|
logger.getLogger().error({
|
|
848
852
|
err,
|
|
@@ -889,7 +893,7 @@ var ExpressServer = class {
|
|
|
889
893
|
this.app.use(middleware.requestId({
|
|
890
894
|
headerName: this.config.requestId?.headerName,
|
|
891
895
|
exposeHeader: this.config.requestId?.exposeHeader,
|
|
892
|
-
generator: this.config.requestId?.generator
|
|
896
|
+
generator: this.config.requestId?.generator || id.uuid
|
|
893
897
|
}));
|
|
894
898
|
this.app.use(middleware.setupRequestContext({
|
|
895
899
|
headerName: this.config.requestId?.headerName,
|
|
@@ -1053,7 +1057,7 @@ var ExpressServer = class {
|
|
|
1053
1057
|
}
|
|
1054
1058
|
this.app.use(openApiMountPath, apiReference({
|
|
1055
1059
|
spec: {
|
|
1056
|
-
content: await
|
|
1060
|
+
content: await fs.readFile(openApiFilePath, "utf8")
|
|
1057
1061
|
}
|
|
1058
1062
|
}));
|
|
1059
1063
|
if (this.config.openApi?.verbose) {
|
|
@@ -1117,7 +1121,7 @@ var ExpressServer = class {
|
|
|
1117
1121
|
const healthCheckPath = this.normalizePath(this.config.healthCheck?.path || "/healthz", this.config.healthCheck?.withGlobalPrefix);
|
|
1118
1122
|
this.app.get(healthCheckPath, async (_req, res) => {
|
|
1119
1123
|
try {
|
|
1120
|
-
if (!this.healthChecks.length || config.
|
|
1124
|
+
if (!this.healthChecks.length || config.getCatbeeServerGlobalConfig().skipHealthz) {
|
|
1121
1125
|
return res.status(httpStatusCodes.HttpStatusCodes.OK).json(new response.SuccessResponse("OK"));
|
|
1122
1126
|
}
|
|
1123
1127
|
const checkResults = await Promise.allSettled(this.healthChecks.map(async ({ name, check }) => {
|
|
@@ -1216,7 +1220,7 @@ var ExpressServer = class {
|
|
|
1216
1220
|
*/
|
|
1217
1221
|
async ready() {
|
|
1218
1222
|
try {
|
|
1219
|
-
if (!this.healthChecks.length || config.
|
|
1223
|
+
if (!this.healthChecks.length || config.getCatbeeServerGlobalConfig().skipHealthz) return true;
|
|
1220
1224
|
const checkResults = await Promise.allSettled(this.healthChecks.map(async ({ name, check }) => {
|
|
1221
1225
|
try {
|
|
1222
1226
|
const status = await Promise.resolve(check());
|
|
@@ -1305,11 +1309,11 @@ var ExpressServer = class {
|
|
|
1305
1309
|
if (this.config.https) {
|
|
1306
1310
|
const httpsOptions = {
|
|
1307
1311
|
...this.config.https,
|
|
1308
|
-
key:
|
|
1309
|
-
cert:
|
|
1312
|
+
key: fs.readFileSync(this.config.https.key),
|
|
1313
|
+
cert: fs.readFileSync(this.config.https.cert)
|
|
1310
1314
|
};
|
|
1311
1315
|
if (this.config.https.ca) {
|
|
1312
|
-
httpsOptions.ca =
|
|
1316
|
+
httpsOptions.ca = fs.readFileSync(this.config.https.ca);
|
|
1313
1317
|
}
|
|
1314
1318
|
if (this.config.https.passphrase) {
|
|
1315
1319
|
httpsOptions.passphrase = this.config.https.passphrase;
|
|
@@ -1534,7 +1538,7 @@ var ExpressServer = class {
|
|
|
1534
1538
|
/**
|
|
1535
1539
|
* Get server configuration
|
|
1536
1540
|
*
|
|
1537
|
-
* @return {*} {
|
|
1541
|
+
* @return {*} {CatbeeServerConfig}
|
|
1538
1542
|
*/
|
|
1539
1543
|
getConfig() {
|
|
1540
1544
|
return this.config;
|
|
@@ -1608,7 +1612,7 @@ var ExpressServer = class {
|
|
|
1608
1612
|
throw new Error(msg);
|
|
1609
1613
|
}
|
|
1610
1614
|
}
|
|
1611
|
-
|
|
1615
|
+
hasBuildMarker(config) {
|
|
1612
1616
|
if (config?.[BUILD_MARKER]) {
|
|
1613
1617
|
return true;
|
|
1614
1618
|
}
|