elseware-nodejs 1.10.0 → 1.11.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/dist/index.cjs CHANGED
@@ -1,6 +1,5 @@
1
1
  'use strict';
2
2
 
3
- var dotenv = require('dotenv');
4
3
  var mongoose = require('mongoose');
5
4
  var crypto = require('crypto');
6
5
  var async_hooks = require('async_hooks');
@@ -16,7 +15,6 @@ var multer = require('multer');
16
15
 
17
16
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
18
17
 
19
- var dotenv__default = /*#__PURE__*/_interopDefault(dotenv);
20
18
  var mongoose__default = /*#__PURE__*/_interopDefault(mongoose);
21
19
  var fs3__default = /*#__PURE__*/_interopDefault(fs3);
22
20
  var cloudinaryModule__default = /*#__PURE__*/_interopDefault(cloudinaryModule);
@@ -27,138 +25,6 @@ var juice__default = /*#__PURE__*/_interopDefault(juice);
27
25
  var jwt__default = /*#__PURE__*/_interopDefault(jwt);
28
26
  var multer__default = /*#__PURE__*/_interopDefault(multer);
29
27
 
30
- // src/configs/env.ts
31
-
32
- // src/utils/errorToString.ts
33
- function errorToString(error) {
34
- if (error instanceof Error) {
35
- return `${error.name}: ${error.message}
36
- ${error.stack ?? ""}`;
37
- }
38
- if (typeof error === "object") {
39
- try {
40
- return JSON.stringify(error, null, 2);
41
- } catch {
42
- return "[Unserializable object]";
43
- }
44
- }
45
- return String(error);
46
- }
47
-
48
- // src/configs/logger.ts
49
- var Logger = class {
50
- timestamp = true;
51
- enabled = true;
52
- // Use to configure once at the root
53
- configure(options = {}) {
54
- this.timestamp = options.timestamp ?? this.timestamp;
55
- this.enabled = options.enabled ?? this.enabled;
56
- }
57
- format(msg) {
58
- if (!this.timestamp) return msg;
59
- return `[${(/* @__PURE__ */ new Date()).toISOString()}] ${msg}`;
60
- }
61
- output(msg) {
62
- if (!this.enabled) return;
63
- console.log(this.format(msg));
64
- }
65
- // Log Levels
66
- success(msg) {
67
- this.output(`\u2705 ${msg}`);
68
- }
69
- info(msg) {
70
- this.output(`\u{1F539} ${msg}`);
71
- }
72
- warning(msg) {
73
- this.output(`\u26A0\uFE0F ${msg}`);
74
- }
75
- danger(message, error) {
76
- if (error) {
77
- this.output(`\u274C ${message}
78
- ${errorToString(error)}`);
79
- } else {
80
- this.output(`\u274C ${message}`);
81
- }
82
- }
83
- log(msg) {
84
- this.output(`\u2022 ${msg}`);
85
- }
86
- };
87
- var logger = new Logger();
88
-
89
- // src/configs/env.ts
90
- dotenv__default.default.config({ quiet: true });
91
- function loadEnv(options) {
92
- const result = options.schema.safeParse(process.env);
93
- if (!result.success) {
94
- handleError(result.error);
95
- }
96
- logger.success("Env Configurations validated");
97
- const env = result.data;
98
- return options.transform ? options.transform(env) : env;
99
- }
100
- function handleError(error) {
101
- logger.danger("Env validation failed");
102
- const grouped = {};
103
- error.issues.forEach((err) => {
104
- const key = err.path.join(".") || "unknown";
105
- const rawValue = key !== "unknown" ? process.env[key] : void 0;
106
- const isSecret = key.toLowerCase().includes("secret");
107
- const safeValue = isSecret ? "***" : rawValue;
108
- const message = [
109
- `message: ${err.message}`,
110
- `code: ${err.code}`,
111
- rawValue !== void 0 ? `value: ${JSON.stringify(safeValue)}` : null
112
- ].filter(Boolean).join(" | ");
113
- if (!grouped[key]) grouped[key] = [];
114
- grouped[key].push(message);
115
- });
116
- Object.entries(grouped).forEach(([key, messages]) => {
117
- logger.info(key);
118
- messages.forEach((msg) => logger.log(` - ${msg}`));
119
- });
120
- logger.danger("Application startup aborted!");
121
- process.exit(1);
122
- }
123
-
124
- // src/configs/cors/allowedOrigins.ts
125
- function createAllowedOrigins(options = {}) {
126
- const { origins, defaults = ["http://localhost:3000"] } = options;
127
- let allowedOrigins = [];
128
- if (typeof origins === "string") {
129
- allowedOrigins = origins.split(",").map((origin) => origin.trim()).filter(Boolean);
130
- }
131
- if (Array.isArray(origins)) {
132
- allowedOrigins = origins.map((origin) => origin.trim()).filter(Boolean);
133
- }
134
- if (allowedOrigins.length === 0) {
135
- allowedOrigins = [...defaults];
136
- }
137
- return allowedOrigins;
138
- }
139
-
140
- // src/configs/cors/corsOptions.ts
141
- function createCorsOptions(allowedOrigins) {
142
- return {
143
- origin(origin, callback) {
144
- if (!origin || allowedOrigins.includes(origin)) {
145
- return callback(null, true);
146
- }
147
- return callback(new Error(`CORS blocked: ${origin} is not allowed`));
148
- },
149
- credentials: true,
150
- methods: ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"],
151
- allowedHeaders: [
152
- "Content-Type",
153
- "Authorization",
154
- "X-Requested-With",
155
- "Accept"
156
- ],
157
- exposedHeaders: ["Set-Cookie"],
158
- optionsSuccessStatus: 204
159
- };
160
- }
161
-
162
28
  // src/data-structures/array/CircularArray.ts
163
29
  var CircularArray = class {
164
30
  capacity;
@@ -4841,7 +4707,147 @@ var SegmentTree = class {
4841
4707
  }
4842
4708
  };
4843
4709
 
4844
- // src/database/DatabaseManager.ts
4710
+ // src/core/constants/defaultOrigins.ts
4711
+ var DEFAULT_ALLOWED_ORIGINS = ["http://localhost:3000"];
4712
+
4713
+ // src/infrastructure/cors/createAllowedOrigins.ts
4714
+ function createAllowedOrigins(options = {}) {
4715
+ const { origins, defaults = DEFAULT_ALLOWED_ORIGINS } = options;
4716
+ let allowedOrigins = [];
4717
+ if (typeof origins === "string") {
4718
+ allowedOrigins = origins.split(",").map((origin) => origin.trim()).filter(Boolean);
4719
+ }
4720
+ if (Array.isArray(origins)) {
4721
+ allowedOrigins = origins.map((origin) => origin.trim()).filter(Boolean);
4722
+ }
4723
+ if (allowedOrigins.length === 0) {
4724
+ allowedOrigins = [...defaults];
4725
+ }
4726
+ return allowedOrigins;
4727
+ }
4728
+
4729
+ // src/infrastructure/cors/createCorsOptions.ts
4730
+ function createCorsOptions(allowedOrigins) {
4731
+ return {
4732
+ origin(origin, callback) {
4733
+ if (!origin || allowedOrigins.includes(origin)) {
4734
+ return callback(null, true);
4735
+ }
4736
+ return callback(new Error(`CORS blocked: ${origin} is not allowed`));
4737
+ },
4738
+ credentials: true,
4739
+ methods: ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"],
4740
+ allowedHeaders: [
4741
+ "Content-Type",
4742
+ "Authorization",
4743
+ "X-Requested-With",
4744
+ "Accept"
4745
+ ],
4746
+ exposedHeaders: ["Set-Cookie"],
4747
+ optionsSuccessStatus: 204
4748
+ };
4749
+ }
4750
+
4751
+ // src/utils/errorToString.ts
4752
+ function errorToString(error) {
4753
+ if (error instanceof Error) {
4754
+ return `${error.name}: ${error.message}
4755
+ ${error.stack ?? ""}`;
4756
+ }
4757
+ if (typeof error === "object") {
4758
+ try {
4759
+ return JSON.stringify(error, null, 2);
4760
+ } catch {
4761
+ return "[Unserializable object]";
4762
+ }
4763
+ }
4764
+ return String(error);
4765
+ }
4766
+
4767
+ // src/core/logger/colors.ts
4768
+ var colors = {
4769
+ reset: "\x1B[0m",
4770
+ blue: "\x1B[34m",
4771
+ yellow: "\x1B[33m",
4772
+ red: "\x1B[31m",
4773
+ cyan: "\x1B[36m"
4774
+ };
4775
+
4776
+ // src/core/logger/Logger.ts
4777
+ var Logger = class {
4778
+ enabled = true;
4779
+ timestamp = true;
4780
+ colorsEnabled = true;
4781
+ minimumLevel = "INFO" /* INFO */;
4782
+ configure(options = {}) {
4783
+ this.enabled = options.enabled ?? this.enabled;
4784
+ this.timestamp = options.timestamp ?? this.timestamp;
4785
+ this.colorsEnabled = options.colors ?? this.colorsEnabled;
4786
+ this.minimumLevel = options.level ?? this.minimumLevel;
4787
+ }
4788
+ levelWeight(level) {
4789
+ switch (level) {
4790
+ case "DEBUG" /* DEBUG */:
4791
+ return 10;
4792
+ case "INFO" /* INFO */:
4793
+ return 20;
4794
+ case "WARN" /* WARN */:
4795
+ return 30;
4796
+ case "ERROR" /* ERROR */:
4797
+ return 40;
4798
+ }
4799
+ }
4800
+ shouldLog(level) {
4801
+ return this.levelWeight(level) >= this.levelWeight(this.minimumLevel);
4802
+ }
4803
+ formatLevel(level) {
4804
+ if (!this.colorsEnabled) {
4805
+ return level;
4806
+ }
4807
+ switch (level) {
4808
+ case "DEBUG" /* DEBUG */:
4809
+ return `${colors.cyan}${level}${colors.reset}`;
4810
+ case "INFO" /* INFO */:
4811
+ return `${colors.blue}${level}${colors.reset}`;
4812
+ case "WARN" /* WARN */:
4813
+ return `${colors.yellow}${level}${colors.reset}`;
4814
+ case "ERROR" /* ERROR */:
4815
+ return `${colors.red}${level}${colors.reset}`;
4816
+ }
4817
+ }
4818
+ write(level, message) {
4819
+ if (!this.enabled) {
4820
+ return;
4821
+ }
4822
+ if (!this.shouldLog(level)) {
4823
+ return;
4824
+ }
4825
+ const timestamp = this.timestamp ? `[${(/* @__PURE__ */ new Date()).toISOString()}] ` : "";
4826
+ console.log(`${timestamp}[${this.formatLevel(level)}] ${message}`);
4827
+ }
4828
+ debug(message) {
4829
+ this.write("DEBUG" /* DEBUG */, message);
4830
+ }
4831
+ info(message) {
4832
+ this.write("INFO" /* INFO */, message);
4833
+ }
4834
+ warn(message) {
4835
+ this.write("WARN" /* WARN */, message);
4836
+ }
4837
+ error(message, error) {
4838
+ if (error) {
4839
+ this.write("ERROR" /* ERROR */, `${message}
4840
+ ${errorToString(error)}`);
4841
+ return;
4842
+ }
4843
+ this.write("ERROR" /* ERROR */, message);
4844
+ }
4845
+ };
4846
+
4847
+ // src/core/logger/index.ts
4848
+ var logger = new Logger();
4849
+
4850
+ // src/infrastructure/database/DatabaseManager.ts
4845
4851
  var DatabaseManager = class {
4846
4852
  constructor(provider, options = {
4847
4853
  enableShutdownHooks: true
@@ -4852,21 +4858,21 @@ var DatabaseManager = class {
4852
4858
  async connect() {
4853
4859
  try {
4854
4860
  await this.provider.connect();
4855
- logger.success("Database connected successfully");
4861
+ logger.info("Database connected");
4856
4862
  if (this.options.enableShutdownHooks) {
4857
4863
  this.registerShutdownHooks();
4858
4864
  }
4859
4865
  } catch (error) {
4860
- logger.danger("Database connection failed", error);
4866
+ logger.error("Database connection failed", error);
4861
4867
  throw error;
4862
4868
  }
4863
4869
  }
4864
4870
  async disconnect() {
4865
4871
  try {
4866
4872
  await this.provider.disconnect();
4867
- logger.success("Database connection closed");
4873
+ logger.info("Database disconnected");
4868
4874
  } catch (error) {
4869
- logger.danger("Database disconnect failed", error);
4875
+ logger.error("Database disconnect failed", error);
4870
4876
  throw error;
4871
4877
  }
4872
4878
  }
@@ -4878,12 +4884,20 @@ var DatabaseManager = class {
4878
4884
  }
4879
4885
  registerShutdownHooks() {
4880
4886
  process.once("SIGINT", async () => {
4881
- await this.disconnect();
4882
- process.exit(0);
4887
+ logger.info("SIGINT received, shutting down database connection");
4888
+ try {
4889
+ await this.disconnect();
4890
+ } finally {
4891
+ process.exit(0);
4892
+ }
4883
4893
  });
4884
4894
  process.once("SIGTERM", async () => {
4885
- await this.disconnect();
4886
- process.exit(0);
4895
+ logger.info("SIGTERM received, shutting down database connection");
4896
+ try {
4897
+ await this.disconnect();
4898
+ } finally {
4899
+ process.exit(0);
4900
+ }
4887
4901
  });
4888
4902
  }
4889
4903
  };
@@ -4917,7 +4931,7 @@ var MongoDatabaseProvider = class {
4917
4931
  }
4918
4932
  };
4919
4933
 
4920
- // src/errors/appError.ts
4934
+ // src/core/errors/AppError.ts
4921
4935
  var AppError = class extends Error {
4922
4936
  statusCode;
4923
4937
  status;
@@ -4927,20 +4941,20 @@ var AppError = class extends Error {
4927
4941
  constructor(message, statusCode = 500, options) {
4928
4942
  super(message);
4929
4943
  this.statusCode = statusCode;
4930
- this.status = `${statusCode}`.startsWith("4") ? "fail" : "error";
4931
- this.isOperational = true;
4944
+ this.status = statusCode >= 400 && statusCode < 500 ? "fail" : "error";
4945
+ this.isOperational = options?.isOperational ?? true;
4932
4946
  this.code = options?.code;
4933
4947
  this.details = options?.details;
4934
4948
  Error.captureStackTrace(this, this.constructor);
4935
4949
  }
4936
4950
  };
4937
4951
 
4938
- // src/http/handlers/AsyncHandler.ts
4952
+ // src/infrastructure/http/handlers/AsyncHandler.ts
4939
4953
  var AsyncHandler = (fn) => (req, res, next) => {
4940
4954
  Promise.resolve(fn(req, res, next)).catch(next);
4941
4955
  };
4942
4956
 
4943
- // src/http/query/QueryConstants.ts
4957
+ // src/infrastructure/http/query/QueryConstants.ts
4944
4958
  var QUERY_RESERVED_FIELDS = [
4945
4959
  "page",
4946
4960
  "limit",
@@ -4965,7 +4979,7 @@ var SUPPORTED_OPERATORS = [
4965
4979
  "endsWith"
4966
4980
  ];
4967
4981
 
4968
- // src/http/query/ApiFeatures.ts
4982
+ // src/infrastructure/http/query/ApiFeatures.ts
4969
4983
  var ApiFeatures = class {
4970
4984
  static parse(query) {
4971
4985
  return {
@@ -5043,7 +5057,7 @@ var ApiFeatures = class {
5043
5057
  }
5044
5058
  };
5045
5059
 
5046
- // src/http/responses/ApiResponse.ts
5060
+ // src/infrastructure/http/responses/ApiResponse.ts
5047
5061
  var ApiResponse = class _ApiResponse {
5048
5062
  static send(res, options) {
5049
5063
  const {
@@ -5117,7 +5131,7 @@ var ApiResponse = class _ApiResponse {
5117
5131
  }
5118
5132
  };
5119
5133
 
5120
- // src/http/controllers/CrudControllerFactory.ts
5134
+ // src/infrastructure/http/controllers/CrudControllerFactory.ts
5121
5135
  var CrudControllerFactory = class {
5122
5136
  static create(repository, options = {}) {
5123
5137
  const resourceName = options.resourceName ?? "Resource";
@@ -5219,12 +5233,12 @@ var CrudControllerFactory = class {
5219
5233
  }
5220
5234
  };
5221
5235
 
5222
- // src/http/middleware/AuthMiddleware.ts
5236
+ // src/infrastructure/http/middleware/AuthMiddleware.ts
5223
5237
  var authMiddleware = (_req, _res, next) => {
5224
5238
  next();
5225
5239
  };
5226
5240
 
5227
- // src/http/middleware/ErrorMiddleware.ts
5241
+ // src/infrastructure/http/middleware/ErrorMiddleware.ts
5228
5242
  var handleCastError = (err) => new AppError(`Invalid ${err.path}: ${err.value}`, 400, {
5229
5243
  code: "INVALID_ID"
5230
5244
  });
@@ -5254,11 +5268,13 @@ var ErrorMiddleware = (isProduction = false) => (err, _req, res, _next) => {
5254
5268
  if (err instanceof AppError) {
5255
5269
  error = err;
5256
5270
  } else if (err instanceof Error) {
5257
- error = new AppError(err.message, 500);
5258
- error.isOperational = false;
5271
+ error = new AppError(err.message, 500, {
5272
+ isOperational: false
5273
+ });
5259
5274
  } else {
5260
- error = new AppError("Internal Server Error", 500);
5261
- error.isOperational = false;
5275
+ error = new AppError("Internal Server Error", 500, {
5276
+ isOperational: false
5277
+ });
5262
5278
  }
5263
5279
  if (err && err.name === "CastError") {
5264
5280
  error = handleCastError(err);
@@ -5278,9 +5294,9 @@ var ErrorMiddleware = (isProduction = false) => (err, _req, res, _next) => {
5278
5294
  error = handleJWTExpiredError();
5279
5295
  }
5280
5296
  if (!error.isOperational) {
5281
- logger.danger("Programming error", err);
5297
+ logger.error("Programming error", err);
5282
5298
  } else {
5283
- logger.danger("Operational error", {
5299
+ logger.error("Operational error", {
5284
5300
  message: error.message
5285
5301
  });
5286
5302
  }
@@ -5308,7 +5324,7 @@ var ErrorMiddleware = (isProduction = false) => (err, _req, res, _next) => {
5308
5324
  });
5309
5325
  };
5310
5326
 
5311
- // src/http/validation/Validator.ts
5327
+ // src/infrastructure/http/validation/Validator.ts
5312
5328
  var isJoiSchema = (schema) => {
5313
5329
  return typeof schema === "object" && schema !== null && "validate" in schema;
5314
5330
  };
@@ -5316,7 +5332,7 @@ var isZodSchema = (schema) => {
5316
5332
  return typeof schema === "object" && schema !== null && "safeParse" in schema;
5317
5333
  };
5318
5334
 
5319
- // src/http/validation/JoiValidator.ts
5335
+ // src/infrastructure/http/validation/JoiValidator.ts
5320
5336
  var JoiValidator = class {
5321
5337
  constructor(schema) {
5322
5338
  this.schema = schema;
@@ -5344,7 +5360,7 @@ var JoiValidator = class {
5344
5360
  }
5345
5361
  };
5346
5362
 
5347
- // src/http/validation/ZodValidator.ts
5363
+ // src/infrastructure/http/validation/ZodValidator.ts
5348
5364
  var ZodValidator = class {
5349
5365
  constructor(schema) {
5350
5366
  this.schema = schema;
@@ -5369,7 +5385,7 @@ var ZodValidator = class {
5369
5385
  }
5370
5386
  };
5371
5387
 
5372
- // src/http/middleware/ValidationMiddleware.ts
5388
+ // src/infrastructure/http/middleware/ValidationMiddleware.ts
5373
5389
  var validate = (schema) => (req, _res, next) => {
5374
5390
  let result;
5375
5391
  if (isJoiSchema(schema)) {
@@ -5391,7 +5407,7 @@ var validate = (schema) => (req, _res, next) => {
5391
5407
  next();
5392
5408
  };
5393
5409
 
5394
- // src/http/utils/PickFields.ts
5410
+ // src/infrastructure/http/utils/PickFields.ts
5395
5411
  function pickFields(obj, fields, options = {}) {
5396
5412
  const removeUndefined = options.removeUndefined ?? false;
5397
5413
  const removeNull = options.removeNull ?? false;
@@ -5453,7 +5469,27 @@ var RequestContext = class {
5453
5469
  }
5454
5470
  };
5455
5471
 
5456
- // src/networking/observability/TracingHeaders.ts
5472
+ // src/infrastructure/networking/middleware/RequestContextMiddleware.ts
5473
+ function createRequestContextMiddleware(options = {}) {
5474
+ const {
5475
+ correlationHeaderName = "X-Correlation-Id",
5476
+ exposeHeader = true
5477
+ } = options;
5478
+ return (req, res, next) => {
5479
+ const correlationId = req.header(correlationHeaderName) ?? CorrelationId.generate();
5480
+ if (exposeHeader) {
5481
+ res.setHeader(correlationHeaderName, correlationId);
5482
+ }
5483
+ RequestContext.run(
5484
+ {
5485
+ correlationId
5486
+ },
5487
+ () => next()
5488
+ );
5489
+ };
5490
+ }
5491
+
5492
+ // src/infrastructure/networking/observability/TracingHeaders.ts
5457
5493
  var TracingHeaders = class {
5458
5494
  static build() {
5459
5495
  const headers = {};
@@ -5477,7 +5513,7 @@ var TracingHeaders = class {
5477
5513
  }
5478
5514
  };
5479
5515
 
5480
- // src/networking/resilience/ExponentialBackoffRetryPolicy.ts
5516
+ // src/infrastructure/networking/resilience/ExponentialBackoffRetryPolicy.ts
5481
5517
  var ExponentialBackoffRetryPolicy = class {
5482
5518
  retries;
5483
5519
  baseDelay;
@@ -5496,7 +5532,7 @@ var ExponentialBackoffRetryPolicy = class {
5496
5532
  }
5497
5533
  };
5498
5534
 
5499
- // src/networking/resilience/FixedRetryPolicy.ts
5535
+ // src/infrastructure/networking/resilience/FixedRetryPolicy.ts
5500
5536
  var FixedRetryPolicy = class {
5501
5537
  retries;
5502
5538
  delay;
@@ -5512,7 +5548,7 @@ var FixedRetryPolicy = class {
5512
5548
  }
5513
5549
  };
5514
5550
 
5515
- // src/networking/security/BearerTokenStrategy.ts
5551
+ // src/infrastructure/networking/security/BearerTokenStrategy.ts
5516
5552
  var BearerTokenStrategy = class {
5517
5553
  constructor(tokenProvider) {
5518
5554
  this.tokenProvider = tokenProvider;
@@ -5525,7 +5561,7 @@ var BearerTokenStrategy = class {
5525
5561
  }
5526
5562
  };
5527
5563
 
5528
- // src/networking/security/StaticTokenProvider.ts
5564
+ // src/infrastructure/networking/security/StaticTokenProvider.ts
5529
5565
  var StaticTokenProvider = class {
5530
5566
  constructor(token) {
5531
5567
  this.token = token;
@@ -5535,7 +5571,7 @@ var StaticTokenProvider = class {
5535
5571
  }
5536
5572
  };
5537
5573
 
5538
- // src/networking/transport/HttpClient.ts
5574
+ // src/infrastructure/networking/transport/HttpClient.ts
5539
5575
  var HttpClient = class {
5540
5576
  baseUrl;
5541
5577
  timeout;
@@ -5613,7 +5649,7 @@ var HttpClient = class {
5613
5649
  lastError = error;
5614
5650
  if (this.retryPolicy.shouldRetry(attempt, error)) {
5615
5651
  const delay = this.retryPolicy.getDelay(attempt, error);
5616
- logger.warning(
5652
+ logger.warn(
5617
5653
  `[${this.serviceName}] retry ${attempt + 1} after ${delay}ms`
5618
5654
  );
5619
5655
  await this.sleep(delay);
@@ -5624,7 +5660,7 @@ var HttpClient = class {
5624
5660
  }
5625
5661
  }
5626
5662
  const correlationId = RequestContext.getCorrelationId();
5627
- logger.danger(
5663
+ logger.error(
5628
5664
  `[${this.serviceName}]` + (correlationId ? ` [${correlationId}]` : "") + ` request failed`,
5629
5665
  lastError
5630
5666
  );
@@ -5635,7 +5671,7 @@ var HttpClient = class {
5635
5671
  }
5636
5672
  };
5637
5673
 
5638
- // src/networking/services/ServiceClient.ts
5674
+ // src/infrastructure/networking/services/ServiceClient.ts
5639
5675
  var ServiceClient = class extends HttpClient {
5640
5676
  async getData(path2) {
5641
5677
  const response = await super.get(path2);
@@ -5659,7 +5695,7 @@ var ServiceClient = class extends HttpClient {
5659
5695
  }
5660
5696
  };
5661
5697
 
5662
- // src/networking/services/InternalServiceClient.ts
5698
+ // src/infrastructure/networking/services/InternalServiceClient.ts
5663
5699
  var InternalServiceClient = class extends ServiceClient {
5664
5700
  constructor(baseUrl, serviceToken, serviceName) {
5665
5701
  super(baseUrl, {
@@ -6098,7 +6134,7 @@ var JWTService = class {
6098
6134
  try {
6099
6135
  return jwt__default.default.verify(token, this.accessSecret);
6100
6136
  } catch (err) {
6101
- logger.danger("Access token verification failed:", err.message);
6137
+ logger.error("Access token verification failed:", err.message);
6102
6138
  return null;
6103
6139
  }
6104
6140
  }
@@ -6106,7 +6142,7 @@ var JWTService = class {
6106
6142
  try {
6107
6143
  return jwt__default.default.verify(token, this.refreshSecret);
6108
6144
  } catch (err) {
6109
- logger.danger("Refresh token verification failed:", err.message);
6145
+ logger.error("Refresh token verification failed:", err.message);
6110
6146
  return null;
6111
6147
  }
6112
6148
  }
@@ -6268,7 +6304,6 @@ exports.AdjacencyList = AdjacencyList;
6268
6304
  exports.AdjacencyMatrix = AdjacencyMatrix;
6269
6305
  exports.ApiFeatures = ApiFeatures;
6270
6306
  exports.ApiResponse = ApiResponse;
6271
- exports.AppError = AppError;
6272
6307
  exports.AsyncHandler = AsyncHandler;
6273
6308
  exports.AzureBlobStorageService = AzureBlobStorageService;
6274
6309
  exports.BPlusTree = BPlusTree;
@@ -6355,13 +6390,12 @@ exports.ZodValidator = ZodValidator;
6355
6390
  exports.authMiddleware = authMiddleware;
6356
6391
  exports.createAllowedOrigins = createAllowedOrigins;
6357
6392
  exports.createCorsOptions = createCorsOptions;
6393
+ exports.createRequestContextMiddleware = createRequestContextMiddleware;
6358
6394
  exports.days = days;
6359
6395
  exports.errorToString = errorToString;
6360
6396
  exports.hours = hours;
6361
6397
  exports.isJoiSchema = isJoiSchema;
6362
6398
  exports.isZodSchema = isZodSchema;
6363
- exports.loadEnv = loadEnv;
6364
- exports.logger = logger;
6365
6399
  exports.milliseconds = milliseconds;
6366
6400
  exports.minutes = minutes;
6367
6401
  exports.pickFields = pickFields;