@xeno-js/core 1.0.0 → 1.1.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
@@ -1504,30 +1504,30 @@ var init_logger_utils = __esm({
1504
1504
  */
1505
1505
  async addLogger(container, opts) {
1506
1506
  const loggerDependencies = [];
1507
- const { Guards: Guards46, LOG_LEVEL: LOG_LEVEL7, TOKENS: TOKENS4 } = await import("@xeno-js/shared");
1508
- if (!Guards46.isDefined(opts) || opts.console) {
1507
+ const { Guards: Guards47, LOG_LEVEL: LOG_LEVEL7, TOKENS: TOKENS5 } = await import("@xeno-js/shared");
1508
+ if (!Guards47.isDefined(opts) || opts.console) {
1509
1509
  const { ConsoleLogger: ConsoleLogger2 } = await Promise.resolve().then(() => (init_console_logger(), console_logger_exports));
1510
1510
  loggerDependencies.push(new ConsoleLogger2(opts?.level));
1511
1511
  }
1512
- if (Guards46.isDefined(opts)) {
1513
- if (Guards46.isDefined(opts.sentry.config)) {
1512
+ if (Guards47.isDefined(opts)) {
1513
+ if (Guards47.isDefined(opts.sentry.config)) {
1514
1514
  const { SentryLoggerFactory: SentryLoggerFactory2 } = await Promise.resolve().then(() => (init_sentry_logger_factory(), sentry_logger_factory_exports));
1515
1515
  loggerDependencies.push(new SentryLoggerFactory2().create(opts));
1516
1516
  }
1517
- if (Guards46.isDefined(opts.pino.config)) {
1517
+ if (Guards47.isDefined(opts.pino.config)) {
1518
1518
  const { PinoLoggerFactory: PinoLoggerFactory2 } = await Promise.resolve().then(() => (init_pino_logger_factory(), pino_logger_factory_exports));
1519
1519
  loggerDependencies.push(new PinoLoggerFactory2().create(opts));
1520
1520
  }
1521
- if (!Guards46.isNullOrEmpty(opts.customLoggers)) {
1521
+ if (!Guards47.isNullOrEmpty(opts.customLoggers)) {
1522
1522
  const customLoggers = opts.customLoggers;
1523
1523
  customLoggers.forEach((fn) => {
1524
- if (Guards46.isDefined(fn)) loggerDependencies.push(fn(container));
1524
+ if (Guards47.isDefined(fn)) loggerDependencies.push(fn(container));
1525
1525
  });
1526
1526
  }
1527
1527
  }
1528
1528
  const { BaseLogger } = await import("@xeno-js/shared");
1529
- container.addSingleton(TOKENS4.LOGGER, (c) => {
1530
- const context = c.resolve(TOKENS4.CONTEXT_ACCESSOR);
1529
+ container.addSingleton(TOKENS5.LOGGER, (c) => {
1530
+ const context = c.resolve(TOKENS5.CONTEXT_ACCESSOR);
1531
1531
  return new BaseLogger(context, opts?.level ?? LOG_LEVEL7.DEBUG, loggerDependencies);
1532
1532
  });
1533
1533
  }
@@ -1688,25 +1688,25 @@ var init_cache_utils = __esm({
1688
1688
  * @link https://github.com/xeno-js/xeno-js
1689
1689
  */
1690
1690
  async addCache(container, opts) {
1691
- const { Guards: Guards46, TOKENS: TOKENS4 } = await import("@xeno-js/shared");
1692
- if (!opts.inMemory && !Guards46.isDefined(opts.redis)) {
1691
+ const { Guards: Guards47, TOKENS: TOKENS5 } = await import("@xeno-js/shared");
1692
+ if (!opts.inMemory && !Guards47.isDefined(opts.redis)) {
1693
1693
  throw new Error(
1694
1694
  "No cache strategies are configured. Please provide at least one cache strategy."
1695
1695
  );
1696
1696
  }
1697
1697
  const { CacheKeyBuilder } = await import("@xeno-js/shared");
1698
1698
  container.addSingleton(
1699
- TOKENS4.CACHE_KEY_BUILDER,
1700
- (c) => new CacheKeyBuilder(c.resolve(TOKENS4.IDENTITY_ACCESSOR))
1699
+ TOKENS5.CACHE_KEY_BUILDER,
1700
+ (c) => new CacheKeyBuilder(c.resolve(TOKENS5.IDENTITY_ACCESSOR))
1701
1701
  );
1702
- if (opts.inMemory || !Guards46.isDefined(opts.redis)) {
1702
+ if (opts.inMemory || !Guards47.isDefined(opts.redis)) {
1703
1703
  const { InMemoryCacheExtended: InMemoryCacheExtended2 } = await Promise.resolve().then(() => (init_inmemory_cache(), inmemory_cache_exports));
1704
- container.addSingleton(TOKENS4.CACHE, () => new InMemoryCacheExtended2());
1704
+ container.addSingleton(TOKENS5.CACHE, () => new InMemoryCacheExtended2());
1705
1705
  return;
1706
1706
  }
1707
- if (Guards46.isDefined(opts.redis)) {
1707
+ if (Guards47.isDefined(opts.redis)) {
1708
1708
  const { RedisCacheFactory: RedisCacheFactory2 } = await Promise.resolve().then(() => (init_redis_cache_factory(), redis_cache_factory_exports));
1709
- container.addSingleton(TOKENS4.CACHE, () => {
1709
+ container.addSingleton(TOKENS5.CACHE, () => {
1710
1710
  const config = opts.redis;
1711
1711
  return new RedisCacheFactory2().create(config);
1712
1712
  });
@@ -1852,6 +1852,73 @@ var init_concurrency = __esm({
1852
1852
  }
1853
1853
  });
1854
1854
 
1855
+ // src/infrastructure/services/cookies/cookies.service.ts
1856
+ var import_shared44, CookieHandler;
1857
+ var init_cookies_service = __esm({
1858
+ "src/infrastructure/services/cookies/cookies.service.ts"() {
1859
+ "use strict";
1860
+ import_shared44 = require("@xeno-js/shared");
1861
+ CookieHandler = class {
1862
+ constructor(contextAccessor, _config, _cookieOpts) {
1863
+ this.contextAccessor = contextAccessor;
1864
+ this._config = _config;
1865
+ this._cookieOpts = _cookieOpts;
1866
+ }
1867
+ contextAccessor;
1868
+ _config;
1869
+ _cookieOpts;
1870
+ getAll() {
1871
+ const network = this.contextAccessor.getNetworkContext();
1872
+ const req = network?.transport?.req;
1873
+ if (!import_shared44.Guards.isDefined(req) || import_shared44.Guards.isNullOrEmpty(req.headers.get("cookie"))) return [];
1874
+ return req.headers.get("cookie")?.split(";").map((cookie) => {
1875
+ const [name, ...rest] = cookie.split("=");
1876
+ return { name: name.trim(), value: rest.join("=") };
1877
+ }) ?? [];
1878
+ }
1879
+ setAll(cookies) {
1880
+ const network = this.contextAccessor.getNetworkContext();
1881
+ const res = network?.transport?.res;
1882
+ if (!import_shared44.Guards.isDefined(res)) return;
1883
+ const serializedCookies = cookies.map((c) => this.serialize(c));
1884
+ const existingSetCookie = res.headers.getSetCookie();
1885
+ res.headers.delete("Set-Cookie");
1886
+ for (const cookie of [...existingSetCookie, ...serializedCookies]) {
1887
+ res.headers.append("Set-Cookie", cookie);
1888
+ }
1889
+ }
1890
+ serialize(cookie) {
1891
+ const safeName = encodeURIComponent(cookie.name);
1892
+ const safeValue = encodeURIComponent(cookie.value);
1893
+ let str = `${safeName}=${safeValue}`;
1894
+ const isProd = this._config.get("NODE_ENV") === "production";
1895
+ const defaultOptions = {
1896
+ path: this._cookieOpts.path,
1897
+ httpOnly: this._cookieOpts.httpOnly,
1898
+ secure: this._cookieOpts.secure ?? isProd,
1899
+ sameSite: this._cookieOpts.sameSite ?? "Lax"
1900
+ };
1901
+ const opts = { ...defaultOptions, ...cookie.options ?? {} };
1902
+ str += `; Path=${opts.path}`;
1903
+ if (import_shared44.Guards.isDefined(opts.maxAge)) str += `; Max-Age=${opts.maxAge}`;
1904
+ if (import_shared44.Guards.isDefined(opts.domain)) str += `; Domain=${opts.domain}`;
1905
+ if (import_shared44.Guards.isDefined(opts.sameSite)) str += `; SameSite=${opts.sameSite}`;
1906
+ if (opts.secure) str += `; Secure`;
1907
+ if (opts.httpOnly) str += `; HttpOnly`;
1908
+ return str;
1909
+ }
1910
+ };
1911
+ }
1912
+ });
1913
+
1914
+ // src/infrastructure/services/cookies/index.ts
1915
+ var init_cookies = __esm({
1916
+ "src/infrastructure/services/cookies/index.ts"() {
1917
+ "use strict";
1918
+ init_cookies_service();
1919
+ }
1920
+ });
1921
+
1855
1922
  // src/infrastructure/services/crypto/crypto.service.ts
1856
1923
  var EdgeCryptoService;
1857
1924
  var init_crypto_service = __esm({
@@ -1900,11 +1967,11 @@ var init_crypto = __esm({
1900
1967
  });
1901
1968
 
1902
1969
  // src/infrastructure/services/csrf/csrf-token.service.ts
1903
- var import_shared44, CsrfTokenService;
1970
+ var import_shared45, CsrfTokenService;
1904
1971
  var init_csrf_token_service = __esm({
1905
1972
  "src/infrastructure/services/csrf/csrf-token.service.ts"() {
1906
1973
  "use strict";
1907
- import_shared44 = require("@xeno-js/shared");
1974
+ import_shared45 = require("@xeno-js/shared");
1908
1975
  CsrfTokenService = class {
1909
1976
  constructor(_secret, _cryptoService) {
1910
1977
  this._secret = _secret;
@@ -1923,7 +1990,7 @@ var init_csrf_token_service = __esm({
1923
1990
  if (separatorIndex <= 0) return false;
1924
1991
  const nonce = token.slice(0, separatorIndex);
1925
1992
  const signature = token.slice(separatorIndex + 1);
1926
- if (import_shared44.Guards.isNullOrEmpty(nonce) || import_shared44.Guards.isNullOrEmpty(signature)) return false;
1993
+ if (import_shared45.Guards.isNullOrEmpty(nonce) || import_shared45.Guards.isNullOrEmpty(signature)) return false;
1927
1994
  const expected = await this._cryptoService.hmacSha256(this._secret, `${subject}.${nonce}`);
1928
1995
  const encoder = new TextEncoder();
1929
1996
  const actualBuffer = encoder.encode(signature);
@@ -1944,11 +2011,11 @@ var init_csrf = __esm({
1944
2011
  });
1945
2012
 
1946
2013
  // src/infrastructure/services/extractors/extract-bearer.extractor.ts
1947
- var import_shared45, BearerTokenExtractor;
2014
+ var import_shared46, BearerTokenExtractor;
1948
2015
  var init_extract_bearer_extractor = __esm({
1949
2016
  "src/infrastructure/services/extractors/extract-bearer.extractor.ts"() {
1950
2017
  "use strict";
1951
- import_shared45 = require("@xeno-js/shared");
2018
+ import_shared46 = require("@xeno-js/shared");
1952
2019
  BearerTokenExtractor = class {
1953
2020
  constructor(_cookiePrefix) {
1954
2021
  this._cookiePrefix = _cookiePrefix;
@@ -1956,14 +2023,14 @@ var init_extract_bearer_extractor = __esm({
1956
2023
  _cookiePrefix;
1957
2024
  extract(headers) {
1958
2025
  const authHeader = headers.get("Authorization");
1959
- if (import_shared45.Guards.isDefined(authHeader) && authHeader.toLowerCase().startsWith("bearer ")) {
2026
+ if (import_shared46.Guards.isDefined(authHeader) && authHeader.toLowerCase().startsWith("bearer ")) {
1960
2027
  return authHeader.substring(7);
1961
2028
  }
1962
2029
  const cookieHeader = headers.get("cookie");
1963
- if (import_shared45.Guards.isDefined(cookieHeader)) {
2030
+ if (import_shared46.Guards.isDefined(cookieHeader)) {
1964
2031
  const regex = new RegExp(`${this._cookiePrefix}=([^;]+)`);
1965
2032
  const match = regex.exec(cookieHeader);
1966
- if (!import_shared45.Guards.isNullOrEmpty(match) && import_shared45.Guards.isDefined(match[1])) {
2033
+ if (!import_shared46.Guards.isNullOrEmpty(match) && import_shared46.Guards.isDefined(match[1])) {
1967
2034
  return match[1].trim();
1968
2035
  }
1969
2036
  }
@@ -1974,44 +2041,44 @@ var init_extract_bearer_extractor = __esm({
1974
2041
  });
1975
2042
 
1976
2043
  // src/infrastructure/services/extractors/extract-ssr-bearer.extractor.ts
1977
- var import_shared46, SupabaseSsrTokenExtractor;
2044
+ var import_shared47, SupabaseSsrTokenExtractor;
1978
2045
  var init_extract_ssr_bearer_extractor = __esm({
1979
2046
  "src/infrastructure/services/extractors/extract-ssr-bearer.extractor.ts"() {
1980
2047
  "use strict";
1981
- import_shared46 = require("@xeno-js/shared");
2048
+ import_shared47 = require("@xeno-js/shared");
1982
2049
  SupabaseSsrTokenExtractor = class {
1983
2050
  extract(headers) {
1984
2051
  const authHeader = headers.get("authorization");
1985
- if (import_shared46.Guards.isDefined(authHeader) && authHeader.toLowerCase().startsWith("bearer ")) {
2052
+ if (import_shared47.Guards.isDefined(authHeader) && authHeader.toLowerCase().startsWith("bearer ")) {
1986
2053
  return authHeader.substring(7);
1987
2054
  }
1988
2055
  const cookieHeader = headers.get("cookie");
1989
- if (import_shared46.Guards.isNullOrEmpty(cookieHeader)) return void 0;
2056
+ if (import_shared47.Guards.isNullOrEmpty(cookieHeader)) return void 0;
1990
2057
  const cookies = cookieHeader.split(";").map((c) => c.trim());
1991
2058
  const tokenChunks = {};
1992
2059
  let unchunkedToken;
1993
2060
  for (const cookie of cookies) {
1994
2061
  const [name, ...rest] = cookie.split("=");
1995
- if (!import_shared46.Guards.isDefined(name) || import_shared46.Guards.isNullOrEmpty(rest)) continue;
2062
+ if (!import_shared47.Guards.isDefined(name) || import_shared47.Guards.isNullOrEmpty(rest)) continue;
1996
2063
  const value = decodeURIComponent(rest.join("="));
1997
- if (import_shared46.Guards.isDefined(/^sb-[a-z0-9]+-auth-token$/.exec(name))) {
2064
+ if (import_shared47.Guards.isDefined(/^sb-[a-z0-9]+-auth-token$/.exec(name))) {
1998
2065
  unchunkedToken = value;
1999
2066
  } else {
2000
2067
  const match = /^sb-[a-z0-9]+-auth-token\.(\d+)$/.exec(name);
2001
- if (import_shared46.Guards.isDefined(match)) tokenChunks[parseInt(match[1], 10)] = value;
2068
+ if (import_shared47.Guards.isDefined(match)) tokenChunks[parseInt(match[1], 10)] = value;
2002
2069
  }
2003
2070
  }
2004
2071
  let fullTokenString = unchunkedToken;
2005
- if (!import_shared46.Guards.isDefined(fullTokenString) && Object.keys(tokenChunks).length > 0) {
2072
+ if (!import_shared47.Guards.isDefined(fullTokenString) && Object.keys(tokenChunks).length > 0) {
2006
2073
  const indices = Object.keys(tokenChunks).map(Number).sort((a, b) => a - b);
2007
2074
  fullTokenString = indices.map((i) => tokenChunks[i]).join("");
2008
2075
  }
2009
- if (import_shared46.Guards.isNullOrEmpty(fullTokenString)) return void 0;
2076
+ if (import_shared47.Guards.isNullOrEmpty(fullTokenString)) return void 0;
2010
2077
  try {
2011
- const parsed = import_shared46.StringHelper.safeParse(fullTokenString);
2012
- if (import_shared46.Guards.isDefined(parsed) && import_shared46.Guards.isObject(parsed) && "access_token" in parsed) {
2078
+ const parsed = import_shared47.StringHelper.safeParse(fullTokenString);
2079
+ if (import_shared47.Guards.isDefined(parsed) && import_shared47.Guards.isObject(parsed) && "access_token" in parsed) {
2013
2080
  const accessToken = parsed["access_token"];
2014
- if (import_shared46.Guards.isString(accessToken)) return accessToken;
2081
+ if (import_shared47.Guards.isString(accessToken)) return accessToken;
2015
2082
  }
2016
2083
  } catch {
2017
2084
  return void 0;
@@ -2022,14 +2089,14 @@ var init_extract_ssr_bearer_extractor = __esm({
2022
2089
  });
2023
2090
 
2024
2091
  // src/infrastructure/services/extractors/http-cookie.extractor.ts
2025
- var import_shared47, HttpCookieExtractor;
2092
+ var import_shared48, HttpCookieExtractor;
2026
2093
  var init_http_cookie_extractor = __esm({
2027
2094
  "src/infrastructure/services/extractors/http-cookie.extractor.ts"() {
2028
2095
  "use strict";
2029
- import_shared47 = require("@xeno-js/shared");
2096
+ import_shared48 = require("@xeno-js/shared");
2030
2097
  HttpCookieExtractor = class {
2031
2098
  extract(cookie) {
2032
- if (!import_shared47.Guards.isDefined(cookie.header)) return void 0;
2099
+ if (!import_shared48.Guards.isDefined(cookie.header)) return void 0;
2033
2100
  for (const rawCookie of cookie.header.split(";")) {
2034
2101
  const separatorIndex = rawCookie.indexOf("=");
2035
2102
  if (separatorIndex <= 0) continue;
@@ -2049,11 +2116,11 @@ var init_http_cookie_extractor = __esm({
2049
2116
  });
2050
2117
 
2051
2118
  // src/infrastructure/services/extractors/http-header.extractor.ts
2052
- var import_shared48, HttpHeaderExtractor;
2119
+ var import_shared49, HttpHeaderExtractor;
2053
2120
  var init_http_header_extractor = __esm({
2054
2121
  "src/infrastructure/services/extractors/http-header.extractor.ts"() {
2055
2122
  "use strict";
2056
- import_shared48 = require("@xeno-js/shared");
2123
+ import_shared49 = require("@xeno-js/shared");
2057
2124
  HttpHeaderExtractor = class {
2058
2125
  /**
2059
2126
  * @description Constructor for HttpHeaderExtractor. It takes an instance of IServiceExtractor for extracting Bearer tokens, allowing for separation of concerns and adherence to the Single Responsibility Principle (SRP). This design enables the HttpHeaderExtractor to focus on general header extraction while delegating the specific logic of Bearer token extraction to a dedicated extractor, promoting code reusability and maintainability.
@@ -2075,11 +2142,11 @@ var init_http_header_extractor = __esm({
2075
2142
  _trustedIp;
2076
2143
  _cookieName;
2077
2144
  extract(headers) {
2078
- const correlationId = import_shared48.GuidHelper.parse(headers.get("x-correlation-id") ?? void 0);
2079
- const requestId = import_shared48.GuidHelper.parse(headers.get("x-request-id") ?? void 0);
2145
+ const correlationId = import_shared49.GuidHelper.parse(headers.get("x-correlation-id") ?? void 0);
2146
+ const requestId = import_shared49.GuidHelper.parse(headers.get("x-request-id") ?? void 0);
2080
2147
  const token = this._bearerExtractor.extract(headers);
2081
2148
  const clientIp = headers.get(this._trustedIp?.toLowerCase() ?? "x-forwarded-for") ?? headers.get("x-real-ip") ?? void 0;
2082
- const spanId = import_shared48.GuidHelper.parse(headers.get("x-span-id") ?? void 0);
2149
+ const spanId = import_shared49.GuidHelper.parse(headers.get("x-span-id") ?? void 0);
2083
2150
  const parentSpanId = headers.get("x-parent-span-id") ?? void 0;
2084
2151
  const acceptHeader = headers.get("accept");
2085
2152
  const contentTypeHeader = headers.get("content-type");
@@ -2096,9 +2163,9 @@ var init_http_header_extractor = __esm({
2096
2163
  name: this._cookieName
2097
2164
  });
2098
2165
  const origin = headers.get("origin") ?? void 0;
2099
- const cleanOrigin = import_shared48.HttpHelper.sanitizeOriginUrl(origin);
2166
+ const cleanOrigin = import_shared49.HttpHelper.sanitizeOriginUrl(origin);
2100
2167
  const referer = headers.get("referer") ?? void 0;
2101
- const cleanReferer = import_shared48.HttpHelper.sanitizeOriginUrl(referer);
2168
+ const cleanReferer = import_shared49.HttpHelper.sanitizeOriginUrl(referer);
2102
2169
  const accept = acceptHeader === "*/*" ? void 0 : acceptHeader;
2103
2170
  const formatIndicator = accept ?? contentTypeHeader ?? "application/json";
2104
2171
  const metadata = {
@@ -2117,10 +2184,10 @@ var init_http_header_extractor = __esm({
2117
2184
  referer: cleanReferer,
2118
2185
  sequence: {
2119
2186
  sequenceId,
2120
- position: import_shared48.Guards.isDefined(position) ? import_shared48.MathHelper.toNumber(position) : void 0,
2121
- size: import_shared48.Guards.isDefined(size) ? import_shared48.MathHelper.toNumber(size) : void 0
2187
+ position: import_shared49.Guards.isDefined(position) ? import_shared49.MathHelper.toNumber(position) : void 0,
2188
+ size: import_shared49.Guards.isDefined(size) ? import_shared49.MathHelper.toNumber(size) : void 0
2122
2189
  },
2123
- expiration: import_shared48.Guards.isDefined(expiration) ? import_shared48.MathHelper.toNumber(expiration) : void 0
2190
+ expiration: import_shared49.Guards.isDefined(expiration) ? import_shared49.MathHelper.toNumber(expiration) : void 0
2124
2191
  };
2125
2192
  return metadata;
2126
2193
  }
@@ -2140,18 +2207,18 @@ var init_extractors = __esm({
2140
2207
  });
2141
2208
 
2142
2209
  // src/infrastructure/services/resiliences/resilience.service.ts
2143
- var import_shared49, ServiceResilience;
2210
+ var import_shared50, ServiceResilience;
2144
2211
  var init_resilience_service = __esm({
2145
2212
  "src/infrastructure/services/resiliences/resilience.service.ts"() {
2146
2213
  "use strict";
2147
- import_shared49 = require("@xeno-js/shared");
2214
+ import_shared50 = require("@xeno-js/shared");
2148
2215
  ServiceResilience = class {
2149
2216
  constructor(policy) {
2150
2217
  this.policy = policy;
2151
2218
  }
2152
2219
  policy;
2153
2220
  async execute(operation, signal) {
2154
- import_shared49.AppError.throwIfAborted(signal, "ServiceResilience.execute");
2221
+ import_shared50.AppError.throwIfAborted(signal, "ServiceResilience.execute");
2155
2222
  return this.policy.execute(() => operation(), signal);
2156
2223
  }
2157
2224
  };
@@ -2167,11 +2234,11 @@ var init_resiliences = __esm({
2167
2234
  });
2168
2235
 
2169
2236
  // src/infrastructure/services/resolver/utils/socket.utils.ts
2170
- var import_shared50, SocketIpExtractor;
2237
+ var import_shared51, SocketIpExtractor;
2171
2238
  var init_socket_utils = __esm({
2172
2239
  "src/infrastructure/services/resolver/utils/socket.utils.ts"() {
2173
2240
  "use strict";
2174
- import_shared50 = require("@xeno-js/shared");
2241
+ import_shared51 = require("@xeno-js/shared");
2175
2242
  SocketIpExtractor = Object.freeze({
2176
2243
  /**
2177
2244
  * @description Extracts the IP address of the remote socket from an incoming request.
@@ -2179,7 +2246,7 @@ var init_socket_utils = __esm({
2179
2246
  * @returns The IP address of the remote socket, or undefined if not available.
2180
2247
  */
2181
2248
  extract(req) {
2182
- if (import_shared50.Guards.isDefined(req) && import_shared50.Guards.isObject(req)) {
2249
+ if (import_shared51.Guards.isDefined(req) && import_shared51.Guards.isObject(req)) {
2183
2250
  const candidate = req;
2184
2251
  return candidate.socket?.remoteAddress ?? candidate.connection?.remoteAddress;
2185
2252
  }
@@ -2198,11 +2265,11 @@ var init_utils = __esm({
2198
2265
  });
2199
2266
 
2200
2267
  // src/infrastructure/services/resolver/client-ip.resolver.ts
2201
- var import_shared51, ClientIpResolver;
2268
+ var import_shared52, ClientIpResolver;
2202
2269
  var init_client_ip_resolver = __esm({
2203
2270
  "src/infrastructure/services/resolver/client-ip.resolver.ts"() {
2204
2271
  "use strict";
2205
- import_shared51 = require("@xeno-js/shared");
2272
+ import_shared52 = require("@xeno-js/shared");
2206
2273
  init_utils();
2207
2274
  ClientIpResolver = class {
2208
2275
  constructor(_trustedProxies = []) {
@@ -2211,11 +2278,11 @@ var init_client_ip_resolver = __esm({
2211
2278
  _trustedProxies;
2212
2279
  resolve(req, clientIp) {
2213
2280
  const socketIp = SocketIpExtractor.extract(req);
2214
- if (!import_shared51.Guards.isDefined(socketIp))
2215
- return !import_shared51.Guards.isNullOrEmpty(clientIp) ? clientIp.split(",")[0].trim() : void 0;
2281
+ if (!import_shared52.Guards.isDefined(socketIp))
2282
+ return !import_shared52.Guards.isNullOrEmpty(clientIp) ? clientIp.split(",")[0].trim() : void 0;
2216
2283
  const isTrustedProxy = this._trustedProxies.includes(socketIp);
2217
2284
  if (!isTrustedProxy) return socketIp;
2218
- if (import_shared51.Guards.isDefined(clientIp)) return clientIp.split(",")[0].trim();
2285
+ if (import_shared52.Guards.isDefined(clientIp)) return clientIp.split(",")[0].trim();
2219
2286
  return socketIp;
2220
2287
  }
2221
2288
  };
@@ -2237,6 +2304,7 @@ __export(services_exports, {
2237
2304
  AllowOrigin: () => AllowOrigin,
2238
2305
  BearerTokenExtractor: () => BearerTokenExtractor,
2239
2306
  ClientIpResolver: () => ClientIpResolver,
2307
+ CookieHandler: () => CookieHandler,
2240
2308
  CsrfTokenService: () => CsrfTokenService,
2241
2309
  EdgeCryptoService: () => EdgeCryptoService,
2242
2310
  HttpCookieExtractor: () => HttpCookieExtractor,
@@ -2251,6 +2319,7 @@ var init_services = __esm({
2251
2319
  init_allow_methods();
2252
2320
  init_allow_origins();
2253
2321
  init_concurrency();
2322
+ init_cookies();
2254
2323
  init_crypto();
2255
2324
  init_csrf();
2256
2325
  init_extractors();
@@ -2278,13 +2347,13 @@ var init_allow_method_factory = __esm({
2278
2347
  });
2279
2348
 
2280
2349
  // src/infrastructure/factories/axios.factory.ts
2281
- var import_node_http, import_node_https, import_shared52, import_axios, NodeAxiosFactory;
2350
+ var import_node_http, import_node_https, import_shared53, import_axios, NodeAxiosFactory;
2282
2351
  var init_axios_factory = __esm({
2283
2352
  "src/infrastructure/factories/axios.factory.ts"() {
2284
2353
  "use strict";
2285
2354
  import_node_http = __toESM(require("http"), 1);
2286
2355
  import_node_https = __toESM(require("https"), 1);
2287
- import_shared52 = require("@xeno-js/shared");
2356
+ import_shared53 = require("@xeno-js/shared");
2288
2357
  import_axios = __toESM(require("axios"), 1);
2289
2358
  NodeAxiosFactory = class {
2290
2359
  create(config) {
@@ -2311,18 +2380,18 @@ var init_axios_factory = __esm({
2311
2380
  proxy: config.proxy,
2312
2381
  withCredentials: config.withCredentials
2313
2382
  });
2314
- return new import_shared52.AxiosHttpClient(axiosInstance);
2383
+ return new import_shared53.AxiosHttpClient(axiosInstance);
2315
2384
  }
2316
2385
  };
2317
2386
  }
2318
2387
  });
2319
2388
 
2320
2389
  // src/infrastructure/factories/cockatiel-resilience.factory.ts
2321
- var import_shared53, import_cockatiel, CockatielResilienceFactory;
2390
+ var import_shared54, import_cockatiel, CockatielResilienceFactory;
2322
2391
  var init_cockatiel_resilience_factory = __esm({
2323
2392
  "src/infrastructure/factories/cockatiel-resilience.factory.ts"() {
2324
2393
  "use strict";
2325
- import_shared53 = require("@xeno-js/shared");
2394
+ import_shared54 = require("@xeno-js/shared");
2326
2395
  import_cockatiel = require("cockatiel");
2327
2396
  init_resilience_service();
2328
2397
  CockatielResilienceFactory = class {
@@ -2332,36 +2401,36 @@ var init_cockatiel_resilience_factory = __esm({
2332
2401
  retry: {
2333
2402
  attempts: this.checkConfigValue(
2334
2403
  config.retry.attempts,
2335
- import_shared53.RESILIENCE_DEFAULTS.RETRY.ATTEMPTS,
2404
+ import_shared54.RESILIENCE_DEFAULTS.RETRY.ATTEMPTS,
2336
2405
  message
2337
2406
  ),
2338
2407
  baseDelayMs: this.checkConfigValue(
2339
2408
  config.retry.baseDelayMs,
2340
- import_shared53.RESILIENCE_DEFAULTS.RETRY.BASE_DELAY_MS,
2409
+ import_shared54.RESILIENCE_DEFAULTS.RETRY.BASE_DELAY_MS,
2341
2410
  message
2342
2411
  ),
2343
2412
  maxDelayMs: this.checkConfigValue(
2344
2413
  config.retry.maxDelayMs,
2345
- import_shared53.RESILIENCE_DEFAULTS.RETRY.MAX_DELAY_MS,
2414
+ import_shared54.RESILIENCE_DEFAULTS.RETRY.MAX_DELAY_MS,
2346
2415
  message
2347
2416
  )
2348
2417
  },
2349
2418
  circuitBreaker: {
2350
2419
  consecutiveFailures: this.checkConfigValue(
2351
2420
  config.circuitBreaker.consecutiveFailures,
2352
- import_shared53.RESILIENCE_DEFAULTS.CIRCUIT_BREAKER.CONSECUTIVE_FAILURES,
2421
+ import_shared54.RESILIENCE_DEFAULTS.CIRCUIT_BREAKER.CONSECUTIVE_FAILURES,
2353
2422
  message
2354
2423
  ),
2355
2424
  halfOpenTimeoutMs: this.checkConfigValue(
2356
2425
  config.circuitBreaker.halfOpenTimeoutMs,
2357
- import_shared53.RESILIENCE_DEFAULTS.CIRCUIT_BREAKER.HALF_OPEN_TIMEOUT_MS,
2426
+ import_shared54.RESILIENCE_DEFAULTS.CIRCUIT_BREAKER.HALF_OPEN_TIMEOUT_MS,
2358
2427
  message
2359
2428
  )
2360
2429
  },
2361
2430
  bulkhead: {
2362
2431
  maxConcurrent: this.checkConfigValue(
2363
2432
  config.bulkhead.maxConcurrent,
2364
- import_shared53.RESILIENCE_DEFAULTS.BULKHEAD.MAX_CONCURRENT,
2433
+ import_shared54.RESILIENCE_DEFAULTS.BULKHEAD.MAX_CONCURRENT,
2365
2434
  message
2366
2435
  )
2367
2436
  }
@@ -2387,13 +2456,13 @@ var init_cockatiel_resilience_factory = __esm({
2387
2456
  return new ServiceResilience((0, import_cockatiel.wrap)(bulkheadPolicy, circuitBreakerPolicy, retryPolicy));
2388
2457
  }
2389
2458
  isTransientError(error) {
2390
- if (!import_shared53.Guards.isDefined(error) || !import_shared53.Guards.isObject(error)) return false;
2459
+ if (!import_shared54.Guards.isDefined(error) || !import_shared54.Guards.isObject(error)) return false;
2391
2460
  let status;
2392
2461
  let isNetworkError = false;
2393
- if (error instanceof import_shared53.AppError) {
2462
+ if (error instanceof import_shared54.AppError) {
2394
2463
  status = error.status;
2395
2464
  const cause = error.cause;
2396
- if (import_shared53.Guards.isDefined(cause) && import_shared53.Guards.isString(cause.code)) {
2465
+ if (import_shared54.Guards.isDefined(cause) && import_shared54.Guards.isString(cause.code)) {
2397
2466
  isNetworkError = [
2398
2467
  "ECONNABORTED",
2399
2468
  "ECONNRESET",
@@ -2405,7 +2474,7 @@ var init_cockatiel_resilience_factory = __esm({
2405
2474
  } else {
2406
2475
  const err = error;
2407
2476
  status = err.status;
2408
- if (import_shared53.Guards.isString(err.code)) {
2477
+ if (import_shared54.Guards.isString(err.code)) {
2409
2478
  isNetworkError = [
2410
2479
  "ECONNABORTED",
2411
2480
  "ECONNRESET",
@@ -2416,30 +2485,30 @@ var init_cockatiel_resilience_factory = __esm({
2416
2485
  }
2417
2486
  }
2418
2487
  if (isNetworkError) return true;
2419
- if (import_shared53.Guards.isDefined(status)) return status === 408 || status >= 500 && status < 600;
2488
+ if (import_shared54.Guards.isDefined(status)) return status === 408 || status >= 500 && status < 600;
2420
2489
  return false;
2421
2490
  }
2422
2491
  isTransientAndIdempotent(error) {
2423
2492
  if (!this.isTransientError(error)) return false;
2424
2493
  let method;
2425
- if (error instanceof import_shared53.AppError) {
2494
+ if (error instanceof import_shared54.AppError) {
2426
2495
  const cause = error.cause;
2427
- if (import_shared53.Guards.isDefined(cause) && import_shared53.Guards.isDefined(cause.config) && import_shared53.Guards.isString(cause.config.method)) {
2496
+ if (import_shared54.Guards.isDefined(cause) && import_shared54.Guards.isDefined(cause.config) && import_shared54.Guards.isString(cause.config.method)) {
2428
2497
  method = cause.config.method.toUpperCase();
2429
2498
  }
2430
2499
  } else {
2431
2500
  const err = error;
2432
- if (import_shared53.Guards.isDefined(err.config) && import_shared53.Guards.isString(err.config.method)) {
2501
+ if (import_shared54.Guards.isDefined(err.config) && import_shared54.Guards.isString(err.config.method)) {
2433
2502
  method = err.config.method.toUpperCase();
2434
2503
  }
2435
2504
  }
2436
- if (import_shared53.Guards.isNullOrEmpty(method)) return false;
2505
+ if (import_shared54.Guards.isNullOrEmpty(method)) return false;
2437
2506
  const idempotentMethods = ["GET", "PUT", "DELETE", "HEAD", "OPTIONS"];
2438
2507
  return idempotentMethods.includes(method);
2439
2508
  }
2440
2509
  checkConfigValue(value, defaultValue, message) {
2441
- if (import_shared53.Guards.isDefined(value)) {
2442
- import_shared53.Guards.throwIfNegative(value, message);
2510
+ if (import_shared54.Guards.isDefined(value)) {
2511
+ import_shared54.Guards.throwIfNegative(value, message);
2443
2512
  return value;
2444
2513
  }
2445
2514
  return defaultValue;
@@ -2471,11 +2540,11 @@ var init_db_client_factory = __esm({
2471
2540
  });
2472
2541
 
2473
2542
  // src/infrastructure/context/request-context.ts
2474
- var import_shared54, NodeRequestContext;
2543
+ var import_shared55, NodeRequestContext;
2475
2544
  var init_request_context = __esm({
2476
2545
  "src/infrastructure/context/request-context.ts"() {
2477
2546
  "use strict";
2478
- import_shared54 = require("@xeno-js/shared");
2547
+ import_shared55 = require("@xeno-js/shared");
2479
2548
  NodeRequestContext = class {
2480
2549
  /**
2481
2550
  * @description Constructs a new instance of the NodeRequestContext class, which requires an instance of AsyncLocalStorage to manage the request context. The AsyncLocalStorage instance is used to create and access the context for each request, allowing for the storage of identity information and other relevant data that needs to be accessible across asynchronous operations. This constructor initializes the NodeRequestContext with the provided AsyncLocalStorage, enabling it to implement the methods defined in the IRequestContext interface for managing request-specific context data.
@@ -2503,7 +2572,7 @@ var init_request_context = __esm({
2503
2572
  }
2504
2573
  updateIdentity(identity) {
2505
2574
  const store = this._storage.getStore();
2506
- if (import_shared54.Guards.isDefined(store) && import_shared54.Guards.isDefined(store.context)) {
2575
+ if (import_shared55.Guards.isDefined(store) && import_shared55.Guards.isDefined(store.context)) {
2507
2576
  store.context = Object.freeze({
2508
2577
  ...store.context,
2509
2578
  identity: Object.freeze(identity)
@@ -2512,23 +2581,23 @@ var init_request_context = __esm({
2512
2581
  }
2513
2582
  getContext() {
2514
2583
  const store = this._storage.getStore();
2515
- if (!import_shared54.Guards.isDefined(store)) return void 0;
2584
+ if (!import_shared55.Guards.isDefined(store)) return void 0;
2516
2585
  const context = store.context;
2517
2586
  return Object.freeze(context);
2518
2587
  }
2519
2588
  getIdentity() {
2520
2589
  const store = this._storage.getStore();
2521
- if (!import_shared54.Guards.isDefined(store)) return void 0;
2590
+ if (!import_shared55.Guards.isDefined(store)) return void 0;
2522
2591
  return Object.freeze(store.context?.identity);
2523
2592
  }
2524
2593
  getScope() {
2525
2594
  const store = this._storage.getStore();
2526
- if (!import_shared54.Guards.isDefined(store)) return void 0;
2595
+ if (!import_shared55.Guards.isDefined(store)) return void 0;
2527
2596
  return store.scope;
2528
2597
  }
2529
2598
  getNetworkContext() {
2530
2599
  const store = this._storage.getStore();
2531
- if (!import_shared54.Guards.isDefined(store)) return void 0;
2600
+ if (!import_shared55.Guards.isDefined(store)) return void 0;
2532
2601
  return Object.freeze(store.context?.network);
2533
2602
  }
2534
2603
  };
@@ -2601,37 +2670,37 @@ var init_sql_light_db_client_factory = __esm({
2601
2670
  });
2602
2671
 
2603
2672
  // src/infrastructure/factories/supabase.factory.ts
2604
- var import_ssr, import_shared55, SupabaseServerAuthFactory;
2673
+ var import_ssr, import_shared56, SupabaseServerAuthFactory;
2605
2674
  var init_supabase_factory = __esm({
2606
2675
  "src/infrastructure/factories/supabase.factory.ts"() {
2607
2676
  "use strict";
2608
2677
  import_ssr = require("@supabase/ssr");
2609
- import_shared55 = require("@xeno-js/shared");
2678
+ import_shared56 = require("@xeno-js/shared");
2679
+ init_services();
2610
2680
  SupabaseServerAuthFactory = class {
2611
2681
  create({
2612
2682
  config,
2613
2683
  container
2614
2684
  }) {
2615
- if (!import_shared55.Guards.isDefined(config.ssrOpts)) {
2616
- throw new Error(
2617
- "ISsrCookieHandler is required for @supabase/ssr initialization., Please provide it in the config object."
2618
- );
2619
- }
2620
- const cookieService = config.ssrOpts(container);
2685
+ const cookieService = this._getCookieSsr(config.ssrOpts, container, config.cookieOpts);
2621
2686
  const client = (0, import_ssr.createServerClient)(config.url, config.key, {
2622
2687
  ...config.opts,
2623
- cookies: {
2624
- getAll() {
2625
- return cookieService.getAll();
2626
- },
2627
- setAll(cookiesToSet) {
2628
- cookieService.setAll(cookiesToSet);
2629
- }
2630
- }
2688
+ cookies: cookieService
2631
2689
  });
2632
- const mapper = new import_shared55.SupabaseClaimsMapper();
2633
- const sessionMapper = new import_shared55.SupabaseSessionMapper(mapper);
2634
- return new import_shared55.SupabaseAuthService(client, mapper, sessionMapper, config);
2690
+ const mapper = new import_shared56.SupabaseClaimsMapper();
2691
+ const sessionMapper = new import_shared56.SupabaseSessionMapper(mapper);
2692
+ return new import_shared56.SupabaseAuthService(client, mapper, sessionMapper, config);
2693
+ }
2694
+ _getCookieSsr(ssrOpts, container, config) {
2695
+ if (import_shared56.Guards.isDefined(ssrOpts)) {
2696
+ return ssrOpts(container);
2697
+ } else {
2698
+ return new CookieHandler(
2699
+ container.resolve(import_shared56.TOKENS.REQUEST_CONTEXT),
2700
+ container.resolve(import_shared56.TOKENS.CONFIGURATION_SERVICE),
2701
+ config
2702
+ );
2703
+ }
2635
2704
  }
2636
2705
  };
2637
2706
  }
@@ -2642,11 +2711,11 @@ var user_context_factory_exports = {};
2642
2711
  __export(user_context_factory_exports, {
2643
2712
  UserContextFactory: () => UserContextFactory
2644
2713
  });
2645
- var import_shared56, UserContextFactory;
2714
+ var import_shared57, UserContextFactory;
2646
2715
  var init_user_context_factory = __esm({
2647
2716
  "src/infrastructure/factories/user-context.factory.ts"() {
2648
2717
  "use strict";
2649
- import_shared56 = require("@xeno-js/shared");
2718
+ import_shared57 = require("@xeno-js/shared");
2650
2719
  UserContextFactory = class {
2651
2720
  /**
2652
2721
  * @description Constructs an instance of UserContextFactory.
@@ -2667,7 +2736,7 @@ var init_user_context_factory = __esm({
2667
2736
  tenantId: void 0
2668
2737
  };
2669
2738
  const identity = this._identityFactory.getIdentity();
2670
- if (import_shared56.Guards.isDefined(identity)) {
2739
+ if (import_shared57.Guards.isDefined(identity)) {
2671
2740
  output.userId = identity.userId;
2672
2741
  output.tenantId = identity.tenantId;
2673
2742
  }
@@ -2678,14 +2747,14 @@ var init_user_context_factory = __esm({
2678
2747
  });
2679
2748
 
2680
2749
  // src/infrastructure/factories/zod-validator.factory.ts
2681
- var import_shared57, ZodValidatorFactory;
2750
+ var import_shared58, ZodValidatorFactory;
2682
2751
  var init_zod_validator_factory = __esm({
2683
2752
  "src/infrastructure/factories/zod-validator.factory.ts"() {
2684
2753
  "use strict";
2685
- import_shared57 = require("@xeno-js/shared");
2754
+ import_shared58 = require("@xeno-js/shared");
2686
2755
  ZodValidatorFactory = class {
2687
2756
  create(opts) {
2688
- const validatorService = new import_shared57.ZodValidatorService(/* @__PURE__ */ new Map(), opts.logger);
2757
+ const validatorService = new import_shared58.ZodValidatorService(/* @__PURE__ */ new Map(), opts.logger);
2689
2758
  for (const [intentKey, schema] of Object.entries(opts.schemas)) {
2690
2759
  validatorService.addSchema(intentKey, schema);
2691
2760
  }
@@ -2753,28 +2822,28 @@ var init_auth_utils = __esm({
2753
2822
  * @link https://github.com/xeno-js/xeno-js
2754
2823
  */
2755
2824
  async addAuthZ(container, opts) {
2756
- const { TOKENS: TOKENS4 } = await import("@xeno-js/shared");
2825
+ const { TOKENS: TOKENS5 } = await import("@xeno-js/shared");
2757
2826
  const strategies = [];
2758
- const { Guards: Guards46 } = await import("@xeno-js/shared");
2759
- if (Guards46.isDefined(opts.policies)) {
2827
+ const { Guards: Guards47 } = await import("@xeno-js/shared");
2828
+ if (Guards47.isDefined(opts.policies)) {
2760
2829
  const { PolicyRegistry: PolicyRegistry2 } = await Promise.resolve().then(() => (init_application(), application_exports));
2761
2830
  const policyRegistry = opts.policies;
2762
2831
  const registryInstance = new PolicyRegistry2();
2763
- const ctxAccessor = container.resolve(TOKENS4.CONTEXT_ACCESSOR);
2832
+ const ctxAccessor = container.resolve(TOKENS5.CONTEXT_ACCESSOR);
2764
2833
  const Policies = /* @__PURE__ */ new Set();
2765
2834
  for (const [intent, policy] of Object.entries(policyRegistry)) {
2766
2835
  const intentLower = intent.toLowerCase();
2767
2836
  registryInstance.addPolicy(intentLower, policy);
2768
- if (!Guards46.isNullOrEmpty(policy.roles)) {
2837
+ if (!Guards47.isNullOrEmpty(policy.roles)) {
2769
2838
  Policies.add("roles");
2770
2839
  }
2771
- if (!Guards46.isNullOrEmpty(policy.permissions)) {
2840
+ if (!Guards47.isNullOrEmpty(policy.permissions)) {
2772
2841
  Policies.add("permissions");
2773
2842
  }
2774
- if (!Guards46.isNullOrEmpty(policy.userId)) {
2843
+ if (!Guards47.isNullOrEmpty(policy.userId)) {
2775
2844
  Policies.add("userId");
2776
2845
  }
2777
- if (!Guards46.isNullOrEmpty(policy.tenantId)) {
2846
+ if (!Guards47.isNullOrEmpty(policy.tenantId)) {
2778
2847
  Policies.add("tenantId");
2779
2848
  }
2780
2849
  }
@@ -2795,10 +2864,10 @@ var init_auth_utils = __esm({
2795
2864
  strategies.push(new TenantAuthorizationStrategy2(registryInstance, ctxAccessor));
2796
2865
  }
2797
2866
  }
2798
- if (!Guards46.isNullOrEmpty(opts.customAuthorizationStrategy)) {
2867
+ if (!Guards47.isNullOrEmpty(opts.customAuthorizationStrategy)) {
2799
2868
  const customStrategies = opts.customAuthorizationStrategy;
2800
2869
  customStrategies.forEach((strategyToken) => {
2801
- if (Guards46.isDefined(strategyToken)) {
2870
+ if (Guards47.isDefined(strategyToken)) {
2802
2871
  strategies.push(strategyToken(container));
2803
2872
  }
2804
2873
  });
@@ -2818,23 +2887,23 @@ var init_auth_utils = __esm({
2818
2887
  * @link https://github.com/xeno-js/xeno-js
2819
2888
  */
2820
2889
  async addAuthN(container, opts) {
2821
- const { Guards: Guards46, TOKENS: TOKENS4 } = await import("@xeno-js/shared");
2822
- if (Guards46.isDefined(opts.customAuth)) {
2890
+ const { Guards: Guards47, TOKENS: TOKENS5 } = await import("@xeno-js/shared");
2891
+ if (Guards47.isDefined(opts.customAuth)) {
2823
2892
  const authService = opts.customAuth.authExtendedService();
2824
- container.addScoped(TOKENS4.AUTH_SERVICE, () => {
2893
+ container.addScoped(TOKENS5.AUTH_SERVICE, () => {
2825
2894
  return authService;
2826
2895
  });
2827
- container.addSingleton(TOKENS4.BASE_AUTH_SERVICE, () => {
2896
+ container.addSingleton(TOKENS5.BASE_AUTH_SERVICE, () => {
2828
2897
  return authService;
2829
2898
  });
2830
2899
  } else {
2831
2900
  const { SupabaseServerAuthFactory: SupabaseServerAuthFactory2 } = await Promise.resolve().then(() => (init_factories(), factories_exports));
2832
2901
  const factory = new SupabaseServerAuthFactory2();
2833
2902
  const supabase = factory.create({ config: opts, container });
2834
- container.addScoped(TOKENS4.AUTH_SERVICE, () => {
2903
+ container.addScoped(TOKENS5.AUTH_SERVICE, () => {
2835
2904
  return supabase;
2836
2905
  });
2837
- container.addSingleton(TOKENS4.BASE_AUTH_SERVICE, () => {
2906
+ container.addSingleton(TOKENS5.BASE_AUTH_SERVICE, () => {
2838
2907
  return supabase;
2839
2908
  });
2840
2909
  }
@@ -2929,12 +2998,12 @@ var unit_of_work_exports = {};
2929
2998
  __export(unit_of_work_exports, {
2930
2999
  UnitOfWork: () => UnitOfWork
2931
3000
  });
2932
- var import_shared58, import_shared59, UnitOfWork;
3001
+ var import_shared59, import_shared60, UnitOfWork;
2933
3002
  var init_unit_of_work = __esm({
2934
3003
  "src/infrastructure/transaction/unit-of-work.ts"() {
2935
3004
  "use strict";
2936
- import_shared58 = require("@xeno-js/shared");
2937
3005
  import_shared59 = require("@xeno-js/shared");
3006
+ import_shared60 = require("@xeno-js/shared");
2938
3007
  UnitOfWork = class {
2939
3008
  /**
2940
3009
  * Creates an instance of UnitOfWork.
@@ -2953,7 +3022,7 @@ var init_unit_of_work = __esm({
2953
3022
  _dbContext;
2954
3023
  _ttx;
2955
3024
  async runInTransaction(callback, signal) {
2956
- import_shared58.AppError.throwIfAborted(signal, "UnitOfWork.runInTransaction");
3025
+ import_shared59.AppError.throwIfAborted(signal, "UnitOfWork.runInTransaction");
2957
3026
  return this._dbContext.transaction(async (tx) => {
2958
3027
  this._ttx.state = tx;
2959
3028
  try {
@@ -2965,9 +3034,9 @@ var init_unit_of_work = __esm({
2965
3034
  });
2966
3035
  }
2967
3036
  async dispose() {
2968
- if (import_shared59.Guards.isDefined(this._ttx.state)) {
3037
+ if (import_shared60.Guards.isDefined(this._ttx.state)) {
2969
3038
  try {
2970
- if (import_shared59.Guards.hasMethod(this._ttx.state, "rollback")) {
3039
+ if (import_shared60.Guards.hasMethod(this._ttx.state, "rollback")) {
2971
3040
  await this._ttx.state.rollback();
2972
3041
  }
2973
3042
  } finally {
@@ -2990,7 +3059,7 @@ var init_db_module = __esm({
2990
3059
  "use strict";
2991
3060
  DbModule = class {
2992
3061
  async configure(container, opts) {
2993
- const { Guards: Guards46, TOKENS: TOKENS4 } = await import("@xeno-js/shared");
3062
+ const { Guards: Guards47, TOKENS: TOKENS5 } = await import("@xeno-js/shared");
2994
3063
  const { DbUtils: DbUtils2 } = await Promise.resolve().then(() => (init_db_utils(), db_utils_exports));
2995
3064
  const db = opts.enableSqlLite ? await DbUtils2.addSqlLite(opts) : await DbUtils2.addDbClient(opts);
2996
3065
  const { TransactionState: TransactionState2 } = await Promise.resolve().then(() => (init_transaction_state(), transaction_state_exports));
@@ -2998,16 +3067,16 @@ var init_db_module = __esm({
2998
3067
  return new TransactionState2();
2999
3068
  });
3000
3069
  const { UnitOfWork: UnitOfWork2 } = await Promise.resolve().then(() => (init_unit_of_work(), unit_of_work_exports));
3001
- container.addScoped(TOKENS4.UNIT_OF_WORK, (c) => {
3070
+ container.addScoped(TOKENS5.UNIT_OF_WORK, (c) => {
3002
3071
  const ttx = c.resolve("TRANSACTION_STATE");
3003
3072
  return new UnitOfWork2(db, ttx);
3004
3073
  });
3005
- container.addScoped(TOKENS4.DB_CONTEXT, (c) => {
3074
+ container.addScoped(TOKENS5.DB_CONTEXT, (c) => {
3006
3075
  const ttx = c.resolve("TRANSACTION_STATE");
3007
3076
  return new Proxy(db, {
3008
3077
  get(_target, prop, receiver) {
3009
3078
  const activeState = ttx.state;
3010
- if (Guards46.isDefined(activeState)) {
3079
+ if (Guards47.isDefined(activeState)) {
3011
3080
  if (prop === "transaction") {
3012
3081
  return activeState.transaction.bind(activeState);
3013
3082
  }
@@ -3044,14 +3113,14 @@ var init_http_utils = __esm({
3044
3113
  */
3045
3114
  async addAxios(container, opts) {
3046
3115
  const { NodeAxiosFactory: NodeAxiosFactory2 } = await Promise.resolve().then(() => (init_factories(), factories_exports));
3047
- const { Guards: Guards46 } = await import("@xeno-js/shared");
3048
- if (!Guards46.isDefined(opts.token)) {
3116
+ const { Guards: Guards47 } = await import("@xeno-js/shared");
3117
+ if (!Guards47.isDefined(opts.token)) {
3049
3118
  throw new Error("HttpConfig.token is required and must be defined.");
3050
3119
  }
3051
3120
  container.addSingleton(opts.token, () => {
3052
3121
  const factory = new NodeAxiosFactory2();
3053
3122
  const instance = factory.create(opts.client);
3054
- if (!Guards46.hasMethod(instance, "get") || !Guards46.hasMethod(instance, "post") || !Guards46.hasMethod(instance, "put") || !Guards46.hasMethod(instance, "patch") || !Guards46.hasMethod(instance, "delete")) {
3123
+ if (!Guards47.hasMethod(instance, "get") || !Guards47.hasMethod(instance, "post") || !Guards47.hasMethod(instance, "put") || !Guards47.hasMethod(instance, "patch") || !Guards47.hasMethod(instance, "delete")) {
3055
3124
  throw new Error(
3056
3125
  "The created HTTP client instance does not implement the required methods of IHttpClient."
3057
3126
  );
@@ -3070,9 +3139,9 @@ var init_http_utils = __esm({
3070
3139
  * @link https://github.com/xeno-js/xeno-js
3071
3140
  */
3072
3141
  async addResilience(container, opts) {
3073
- const { TOKENS: TOKENS4 } = await import("@xeno-js/shared");
3142
+ const { TOKENS: TOKENS5 } = await import("@xeno-js/shared");
3074
3143
  const { CockatielResilienceFactory: CockatielResilienceFactory2 } = await Promise.resolve().then(() => (init_factories(), factories_exports));
3075
- container.addSingleton(TOKENS4.RESILIENCE_CLIENT, () => {
3144
+ container.addSingleton(TOKENS5.RESILIENCE_CLIENT, () => {
3076
3145
  const factory = new CockatielResilienceFactory2();
3077
3146
  return factory.create(opts);
3078
3147
  });
@@ -3121,22 +3190,22 @@ var init_validation_utils = __esm({
3121
3190
  * @link https://github.com/xeno-js/xeno-js
3122
3191
  */
3123
3192
  async addValidation(container, opts, logger) {
3124
- const { Guards: Guards46, TOKENS: TOKENS4 } = await import("@xeno-js/shared");
3125
- if (!Guards46.isDefined(opts.zod) && Guards46.isNullOrEmpty(opts.customValidationStrategy)) {
3193
+ const { Guards: Guards47, TOKENS: TOKENS5 } = await import("@xeno-js/shared");
3194
+ if (!Guards47.isDefined(opts.zod) && Guards47.isNullOrEmpty(opts.customValidationStrategy)) {
3126
3195
  return;
3127
3196
  }
3128
3197
  const validationStrategies = [];
3129
- if (Guards46.isDefined(opts.zod)) {
3198
+ if (Guards47.isDefined(opts.zod)) {
3130
3199
  const config = opts.zod;
3131
3200
  const { ZodValidatorFactory: ZodValidatorFactory2 } = await Promise.resolve().then(() => (init_factories(), factories_exports));
3132
3201
  const { SchemaValidationStrategy: SchemaValidationStrategy2 } = await Promise.resolve().then(() => (init_application(), application_exports));
3133
3202
  const validatorService = new ZodValidatorFactory2().create({ ...config, logger });
3134
- container.addSingleton(TOKENS4.VALIDATOR_SERVICE, () => validatorService);
3203
+ container.addSingleton(TOKENS5.VALIDATOR_SERVICE, () => validatorService);
3135
3204
  validationStrategies.push(new SchemaValidationStrategy2(validatorService));
3136
3205
  }
3137
- if (!Guards46.isNullOrEmpty(opts.customValidationStrategy)) {
3206
+ if (!Guards47.isNullOrEmpty(opts.customValidationStrategy)) {
3138
3207
  for (const strategyToken of opts.customValidationStrategy) {
3139
- if (Guards46.isDefined(strategyToken)) validationStrategies.push(strategyToken(container));
3208
+ if (Guards47.isDefined(strategyToken)) validationStrategies.push(strategyToken(container));
3140
3209
  }
3141
3210
  }
3142
3211
  const { ValidationPipeline: ValidationPipeline2 } = await Promise.resolve().then(() => (init_application(), application_exports));
@@ -3147,11 +3216,11 @@ var init_validation_utils = __esm({
3147
3216
  });
3148
3217
 
3149
3218
  // src/infrastructure/idempotency/idempotency-store.ts
3150
- var import_shared60, IdempotencyStore;
3219
+ var import_shared61, IdempotencyStore;
3151
3220
  var init_idempotency_store = __esm({
3152
3221
  "src/infrastructure/idempotency/idempotency-store.ts"() {
3153
3222
  "use strict";
3154
- import_shared60 = require("@xeno-js/shared");
3223
+ import_shared61 = require("@xeno-js/shared");
3155
3224
  IdempotencyStore = class {
3156
3225
  /**
3157
3226
  * @description Constructs a new instance of IdempotencyStore, accepting an instance of ICache for accessing the caching system and an instance of IIdentityAccessor for obtaining the user's identity context. The IdempotencyStore uses the caching system to manage locks and results of idempotent commands, ensuring that commands with the same ID are processed only once. The identity context is used to build contextual keys, allowing for more granular management of idempotent commands in multi-tenant scenarios.
@@ -3173,31 +3242,31 @@ var init_idempotency_store = __esm({
3173
3242
  async acquireLock(requestId, ttlSeconds) {
3174
3243
  const key = this._cacheKeyBuilder.buildContextualKey(`command:${requestId}`);
3175
3244
  return await this._cache.setIfAbsent(
3176
- `${import_shared60.IDEMPOTENCY_CONSTANTS.LOCK_KEY_PREFIX}${key}`,
3177
- import_shared60.IDEMPOTENCY_CONSTANTS.LOCKED_VALUE,
3245
+ `${import_shared61.IDEMPOTENCY_CONSTANTS.LOCK_KEY_PREFIX}${key}`,
3246
+ import_shared61.IDEMPOTENCY_CONSTANTS.LOCKED_VALUE,
3178
3247
  ttlSeconds
3179
3248
  );
3180
3249
  }
3181
3250
  async hasBeenProcessed(commandId) {
3182
3251
  const key = this._cacheKeyBuilder.buildContextualKey(`command:${commandId}`);
3183
- return await this._cache.has(`${import_shared60.IDEMPOTENCY_CONSTANTS.PROCESSED_KEY_PREFIX}${key}`);
3252
+ return await this._cache.has(`${import_shared61.IDEMPOTENCY_CONSTANTS.PROCESSED_KEY_PREFIX}${key}`);
3184
3253
  }
3185
3254
  async markAsProcessed(commandId, payload, ttlSeconds) {
3186
3255
  const key = this._cacheKeyBuilder.buildContextualKey(`command:${commandId}`);
3187
3256
  await this._cache.set(
3188
- `${import_shared60.IDEMPOTENCY_CONSTANTS.PROCESSED_KEY_PREFIX}${key}`,
3257
+ `${import_shared61.IDEMPOTENCY_CONSTANTS.PROCESSED_KEY_PREFIX}${key}`,
3189
3258
  payload,
3190
3259
  ttlSeconds
3191
3260
  );
3192
3261
  }
3193
3262
  async getPayload(commandId) {
3194
3263
  const key = this._cacheKeyBuilder.buildContextualKey(`command:${commandId}`);
3195
- const payload = await this._cache.get(`${import_shared60.IDEMPOTENCY_CONSTANTS.PROCESSED_KEY_PREFIX}${key}`);
3264
+ const payload = await this._cache.get(`${import_shared61.IDEMPOTENCY_CONSTANTS.PROCESSED_KEY_PREFIX}${key}`);
3196
3265
  return payload;
3197
3266
  }
3198
3267
  async releaseLock(commandId) {
3199
3268
  const key = this._cacheKeyBuilder.buildContextualKey(`command:${commandId}`);
3200
- await this._cache.remove(`${import_shared60.IDEMPOTENCY_CONSTANTS.LOCK_KEY_PREFIX}${key}`);
3269
+ await this._cache.remove(`${import_shared61.IDEMPOTENCY_CONSTANTS.LOCK_KEY_PREFIX}${key}`);
3201
3270
  }
3202
3271
  };
3203
3272
  }
@@ -3236,16 +3305,16 @@ var init_pipeline_utils = __esm({
3236
3305
  * @link https://github.com/xeno-js/xeno-js
3237
3306
  */
3238
3307
  async addCommand(container, opts) {
3239
- const { Guards: Guards46, TOKENS: TOKENS4 } = await import("@xeno-js/shared");
3308
+ const { Guards: Guards47, TOKENS: TOKENS5 } = await import("@xeno-js/shared");
3240
3309
  const pipelines = [];
3241
- if (Guards46.isDefined(opts.idempotency)) {
3310
+ if (Guards47.isDefined(opts.idempotency)) {
3242
3311
  const { IdempotencyStore: IdempotencyStore2 } = await Promise.resolve().then(() => (init_idempotency(), idempotency_exports));
3243
3312
  const imdStore = new IdempotencyStore2(
3244
- container.resolve(TOKENS4.CACHE),
3245
- container.resolve(TOKENS4.CACHE_KEY_BUILDER)
3313
+ container.resolve(TOKENS5.CACHE),
3314
+ container.resolve(TOKENS5.CACHE_KEY_BUILDER)
3246
3315
  );
3247
3316
  const { IdempotencyPipeline: IdempotencyPipeline2 } = await Promise.resolve().then(() => (init_application(), application_exports));
3248
- const requestContext = container.resolve(TOKENS4.NETWORK_CONTEXT_ACCESSOR);
3317
+ const requestContext = container.resolve(TOKENS5.NETWORK_CONTEXT_ACCESSOR);
3249
3318
  const config = opts.idempotency;
3250
3319
  pipelines.push(
3251
3320
  new IdempotencyPipeline2(
@@ -3256,7 +3325,7 @@ var init_pipeline_utils = __esm({
3256
3325
  )
3257
3326
  );
3258
3327
  }
3259
- if (Guards46.isDefined(opts.concurrency)) {
3328
+ if (Guards47.isDefined(opts.concurrency)) {
3260
3329
  const { ConcurrencyRetryPipeline: ConcurrencyRetryPipeline2 } = await Promise.resolve().then(() => (init_application(), application_exports));
3261
3330
  const config = opts.concurrency;
3262
3331
  pipelines.push(new ConcurrencyRetryPipeline2(config?.maxRetries, config?.delayConfig));
@@ -3274,12 +3343,12 @@ var init_pipeline_utils = __esm({
3274
3343
  * @link https://github.com/xeno-js/xeno-js
3275
3344
  */
3276
3345
  async addQuery(container) {
3277
- const { TOKENS: TOKENS4 } = await import("@xeno-js/shared");
3346
+ const { TOKENS: TOKENS5 } = await import("@xeno-js/shared");
3278
3347
  const { QueryCachingPipeline: QueryCachingPipeline2 } = await Promise.resolve().then(() => (init_application(), application_exports));
3279
3348
  return new QueryCachingPipeline2(
3280
- container.resolve(TOKENS4.CACHE),
3281
- container.resolve(TOKENS4.CACHE_KEY_BUILDER),
3282
- container.resolve(TOKENS4.LOGGER)
3349
+ container.resolve(TOKENS5.CACHE),
3350
+ container.resolve(TOKENS5.CACHE_KEY_BUILDER),
3351
+ container.resolve(TOKENS5.LOGGER)
3283
3352
  );
3284
3353
  }
3285
3354
  });
@@ -3297,11 +3366,11 @@ var init_cqrs_module = __esm({
3297
3366
  "use strict";
3298
3367
  CqrsModule = class {
3299
3368
  async configure(container, opts) {
3300
- const { TOKENS: TOKENS4 } = await import("@xeno-js/shared");
3301
- const logger = container.resolve(TOKENS4.LOGGER);
3369
+ const { TOKENS: TOKENS5 } = await import("@xeno-js/shared");
3370
+ const logger = container.resolve(TOKENS5.LOGGER);
3302
3371
  const { Mediator: Mediator2 } = await Promise.resolve().then(() => (init_application(), application_exports));
3303
- container.addSingleton(TOKENS4.MEDIATOR, (c) => {
3304
- const serviceScopeAccessor = c.resolve(TOKENS4.SERVICE_SCOPE_ACCESSOR);
3372
+ container.addSingleton(TOKENS5.MEDIATOR, (c) => {
3373
+ const serviceScopeAccessor = c.resolve(TOKENS5.SERVICE_SCOPE_ACCESSOR);
3305
3374
  return new Mediator2(serviceScopeAccessor);
3306
3375
  });
3307
3376
  const { ExceptionPipeline: ExceptionPipeline2 } = await Promise.resolve().then(() => (init_application(), application_exports));
@@ -3313,24 +3382,24 @@ var init_cqrs_module = __esm({
3313
3382
  new LoggingPipeline2(logger),
3314
3383
  new PerformancePipeline2(logger, thresholdMs)
3315
3384
  ];
3316
- const { Guards: Guards46 } = await import("@xeno-js/shared");
3317
- if (Guards46.isDefined(opts.authorization.policies) || Guards46.isDefined(opts.authorization.customAuthorizationStrategy)) {
3385
+ const { Guards: Guards47 } = await import("@xeno-js/shared");
3386
+ if (Guards47.isDefined(opts.authorization.policies) || Guards47.isDefined(opts.authorization.customAuthorizationStrategy)) {
3318
3387
  const { AuthUtils: AuthUtils2 } = await Promise.resolve().then(() => (init_auth_utils(), auth_utils_exports));
3319
3388
  const authPipelines = await AuthUtils2.addAuthZ(container, opts.authorization);
3320
3389
  pipelines.push(authPipelines);
3321
3390
  }
3322
- if (Guards46.isDefined(opts.validation.zod) || Guards46.isDefined(opts.validation.customValidationStrategy)) {
3391
+ if (Guards47.isDefined(opts.validation.zod) || Guards47.isDefined(opts.validation.customValidationStrategy)) {
3323
3392
  const { ValidationUtils: ValidationUtils2 } = await Promise.resolve().then(() => (init_validation_utils(), validation_utils_exports));
3324
3393
  const validationPipelines = await ValidationUtils2.addValidation(
3325
3394
  container,
3326
3395
  opts.validation,
3327
3396
  logger
3328
3397
  );
3329
- if (Guards46.isDefined(validationPipelines)) pipelines.push(validationPipelines);
3398
+ if (Guards47.isDefined(validationPipelines)) pipelines.push(validationPipelines);
3330
3399
  }
3331
3400
  const commandPipelines = [...pipelines];
3332
3401
  const queryPipelines = [...pipelines];
3333
- if (Guards46.isDefined(opts.commandBus.idempotency) || Guards46.isDefined(opts.commandBus.concurrency)) {
3402
+ if (Guards47.isDefined(opts.commandBus.idempotency) || Guards47.isDefined(opts.commandBus.concurrency)) {
3334
3403
  const { PipelineUtils: PipelineUtils2 } = await Promise.resolve().then(() => (init_pipeline_utils(), pipeline_utils_exports));
3335
3404
  const newCommandPipelines = await PipelineUtils2.addCommand(container, opts.commandBus);
3336
3405
  commandPipelines.push(...newCommandPipelines);
@@ -3341,10 +3410,10 @@ var init_cqrs_module = __esm({
3341
3410
  queryPipelines.push(newQueryPipelines);
3342
3411
  }
3343
3412
  const { CompositePipeline: CompositePipeline2 } = await Promise.resolve().then(() => (init_application(), application_exports));
3344
- container.addSingleton(TOKENS4.COMMAND_PIPELINES_BEHAVIOR, () => {
3413
+ container.addSingleton(TOKENS5.COMMAND_PIPELINES_BEHAVIOR, () => {
3345
3414
  return new CompositePipeline2(commandPipelines);
3346
3415
  });
3347
- container.addSingleton(TOKENS4.QUERY_PIPELINES_BEHAVIOR, () => {
3416
+ container.addSingleton(TOKENS5.QUERY_PIPELINES_BEHAVIOR, () => {
3348
3417
  return new CompositePipeline2(queryPipelines);
3349
3418
  });
3350
3419
  }
@@ -3353,11 +3422,11 @@ var init_cqrs_module = __esm({
3353
3422
  });
3354
3423
 
3355
3424
  // src/presentation/controllers/base.controller.ts
3356
- var import_shared61, BaseController;
3425
+ var import_shared62, BaseController;
3357
3426
  var init_base_controller = __esm({
3358
3427
  "src/presentation/controllers/base.controller.ts"() {
3359
3428
  "use strict";
3360
- import_shared61 = require("@xeno-js/shared");
3429
+ import_shared62 = require("@xeno-js/shared");
3361
3430
  BaseController = class {
3362
3431
  /**
3363
3432
  * Constructs a new instance of the BaseController class.
@@ -3389,7 +3458,7 @@ var init_base_controller = __esm({
3389
3458
  * @link https://github.com/xeno-js/xeno-js
3390
3459
  */
3391
3460
  ok(data, status = 200, meta = {}, headers = {}) {
3392
- return import_shared61.HttpHelper.success(data, status, meta, headers);
3461
+ return import_shared62.HttpHelper.success(data, status, meta, headers);
3393
3462
  }
3394
3463
  /**
3395
3464
  * Helper to automatically map a failed Result (from the CQRS pipeline)
@@ -3407,7 +3476,7 @@ var init_base_controller = __esm({
3407
3476
  fail(error, details = void 0, headers = {}) {
3408
3477
  const context = this._requestContext.getContext();
3409
3478
  const customHeaders = error["header"];
3410
- return import_shared61.HttpHelper.error(
3479
+ return import_shared62.HttpHelper.error(
3411
3480
  {
3412
3481
  success: false,
3413
3482
  error: {
@@ -3416,9 +3485,9 @@ var init_base_controller = __esm({
3416
3485
  path: context?.network.path,
3417
3486
  details: details ?? error.message
3418
3487
  },
3419
- correlationId: context?.tracing.correlationId ?? import_shared61.GuidHelper.generate(),
3420
- requestId: context?.network.requestId ?? import_shared61.GuidHelper.generate(),
3421
- spanId: context?.tracing.spanId ?? import_shared61.GuidHelper.generate(),
3488
+ correlationId: context?.tracing.correlationId ?? import_shared62.GuidHelper.generate(),
3489
+ requestId: context?.network.requestId ?? import_shared62.GuidHelper.generate(),
3490
+ spanId: context?.tracing.spanId ?? import_shared62.GuidHelper.generate(),
3422
3491
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
3423
3492
  },
3424
3493
  error.status,
@@ -3473,11 +3542,11 @@ var init_controllers = __esm({
3473
3542
  });
3474
3543
 
3475
3544
  // src/presentation/middlewares/allow-method.middleware.ts
3476
- var import_shared62, MethodCheckMiddleware;
3545
+ var import_shared63, MethodCheckMiddleware;
3477
3546
  var init_allow_method_middleware = __esm({
3478
3547
  "src/presentation/middlewares/allow-method.middleware.ts"() {
3479
3548
  "use strict";
3480
- import_shared62 = require("@xeno-js/shared");
3549
+ import_shared63 = require("@xeno-js/shared");
3481
3550
  MethodCheckMiddleware = class {
3482
3551
  constructor(_requestContext, _allowMethod) {
3483
3552
  this._requestContext = _requestContext;
@@ -3489,21 +3558,21 @@ var init_allow_method_middleware = __esm({
3489
3558
  const isAllowed = this._allowMethod.check(req.path, req.method);
3490
3559
  if (!isAllowed) {
3491
3560
  const { network, tracing } = this._requestContext.getContext() ?? {};
3492
- return import_shared62.HttpHelper.error(
3561
+ return import_shared63.HttpHelper.error(
3493
3562
  {
3494
3563
  success: false,
3495
3564
  error: {
3496
- code: import_shared62.ERROR_CODES.NOT_ALLOWED,
3497
- message: import_shared62.ERROR_CODE_MESSAGES[import_shared62.ERROR_CODES.NOT_ALLOWED],
3565
+ code: import_shared63.ERROR_CODES.NOT_ALLOWED,
3566
+ message: import_shared63.ERROR_CODE_MESSAGES[import_shared63.ERROR_CODES.NOT_ALLOWED],
3498
3567
  details: `Operation blocked by allow method middleware`,
3499
3568
  path: req.path
3500
3569
  },
3501
- correlationId: tracing?.correlationId ?? import_shared62.GuidHelper.generate(),
3502
- requestId: network?.requestId ?? import_shared62.GuidHelper.generate(),
3503
- spanId: tracing?.spanId ?? import_shared62.GuidHelper.generate(),
3570
+ correlationId: tracing?.correlationId ?? import_shared63.GuidHelper.generate(),
3571
+ requestId: network?.requestId ?? import_shared63.GuidHelper.generate(),
3572
+ spanId: tracing?.spanId ?? import_shared63.GuidHelper.generate(),
3504
3573
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
3505
3574
  },
3506
- import_shared62.STATUS_CODES.NOT_ALLOWED,
3575
+ import_shared63.STATUS_CODES.NOT_ALLOWED,
3507
3576
  {
3508
3577
  Allow: this._allowMethod.getMethods(req.path)
3509
3578
  }
@@ -3516,11 +3585,11 @@ var init_allow_method_middleware = __esm({
3516
3585
  });
3517
3586
 
3518
3587
  // src/presentation/middlewares/allow-origin.middleware.ts
3519
- var import_shared63, AllowOriginMiddleware;
3588
+ var import_shared64, AllowOriginMiddleware;
3520
3589
  var init_allow_origin_middleware = __esm({
3521
3590
  "src/presentation/middlewares/allow-origin.middleware.ts"() {
3522
3591
  "use strict";
3523
- import_shared63 = require("@xeno-js/shared");
3592
+ import_shared64 = require("@xeno-js/shared");
3524
3593
  AllowOriginMiddleware = class {
3525
3594
  constructor(_allowOrigin, _requestContext, _logger) {
3526
3595
  this._allowOrigin = _allowOrigin;
@@ -3535,21 +3604,21 @@ var init_allow_origin_middleware = __esm({
3535
3604
  const origin = network?.origin;
3536
3605
  if (!this._allowOrigin.isAllowed(origin)) {
3537
3606
  this._logger.warn(`Access denied by AllowOrigin policy for origin: ${origin ?? "unknown"}`);
3538
- return import_shared63.HttpHelper.error(
3607
+ return import_shared64.HttpHelper.error(
3539
3608
  {
3540
3609
  success: false,
3541
3610
  error: {
3542
- code: import_shared63.ERROR_CODES.FORBIDDEN,
3543
- message: import_shared63.ERROR_CODE_MESSAGES[import_shared63.ERROR_CODES.FORBIDDEN],
3611
+ code: import_shared64.ERROR_CODES.FORBIDDEN,
3612
+ message: import_shared64.ERROR_CODE_MESSAGES[import_shared64.ERROR_CODES.FORBIDDEN],
3544
3613
  details: `The origin '${origin ?? "unknown"}' is not allowed to access this resource.`,
3545
3614
  path: req.path
3546
3615
  },
3547
- correlationId: tracing?.correlationId ?? import_shared63.GuidHelper.generate(),
3548
- requestId: network?.requestId ?? import_shared63.GuidHelper.generate(),
3549
- spanId: tracing?.spanId ?? import_shared63.GuidHelper.generate(),
3616
+ correlationId: tracing?.correlationId ?? import_shared64.GuidHelper.generate(),
3617
+ requestId: network?.requestId ?? import_shared64.GuidHelper.generate(),
3618
+ spanId: tracing?.spanId ?? import_shared64.GuidHelper.generate(),
3550
3619
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
3551
3620
  },
3552
- import_shared63.STATUS_CODES.FORBIDDEN
3621
+ import_shared64.STATUS_CODES.FORBIDDEN
3553
3622
  );
3554
3623
  }
3555
3624
  return next();
@@ -3559,11 +3628,11 @@ var init_allow_origin_middleware = __esm({
3559
3628
  });
3560
3629
 
3561
3630
  // src/presentation/middlewares/auth.middleware.ts
3562
- var import_shared64, AuthenticationMiddleware;
3631
+ var import_shared65, AuthenticationMiddleware;
3563
3632
  var init_auth_middleware = __esm({
3564
3633
  "src/presentation/middlewares/auth.middleware.ts"() {
3565
3634
  "use strict";
3566
- import_shared64 = require("@xeno-js/shared");
3635
+ import_shared65 = require("@xeno-js/shared");
3567
3636
  AuthenticationMiddleware = class {
3568
3637
  constructor(_requestContext, _tokenExtractor, _gateKeeper, _logger) {
3569
3638
  this._requestContext = _requestContext;
@@ -3584,7 +3653,7 @@ var init_auth_middleware = __esm({
3584
3653
  `Authentication failed for request on path: ${req.path}. Code: ${error.code}. Error: ${error}`
3585
3654
  );
3586
3655
  const { network, tracing } = this._requestContext.getContext() ?? {};
3587
- return import_shared64.HttpHelper.error(
3656
+ return import_shared65.HttpHelper.error(
3588
3657
  {
3589
3658
  success: false,
3590
3659
  error: {
@@ -3593,12 +3662,12 @@ var init_auth_middleware = __esm({
3593
3662
  details: `[Authentication Error] Failed to authenticate request on path: ${req.path}`,
3594
3663
  path: req.path
3595
3664
  },
3596
- correlationId: tracing?.correlationId ?? import_shared64.GuidHelper.generate(),
3597
- requestId: network?.requestId ?? import_shared64.GuidHelper.generate(),
3598
- spanId: tracing?.spanId ?? import_shared64.GuidHelper.generate(),
3665
+ correlationId: tracing?.correlationId ?? import_shared65.GuidHelper.generate(),
3666
+ requestId: network?.requestId ?? import_shared65.GuidHelper.generate(),
3667
+ spanId: tracing?.spanId ?? import_shared65.GuidHelper.generate(),
3599
3668
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
3600
3669
  },
3601
- error.status ?? import_shared64.STATUS_CODES.UNAUTHORIZED,
3670
+ error.status ?? import_shared65.STATUS_CODES.UNAUTHORIZED,
3602
3671
  { "Content-Type": [network?.formatIndicator ?? "application/json"] }
3603
3672
  );
3604
3673
  }
@@ -3633,11 +3702,11 @@ var init_composite_middleware = __esm({
3633
3702
  });
3634
3703
 
3635
3704
  // src/presentation/middlewares/cors.middleware.ts
3636
- var import_shared65, CORSMiddleware;
3705
+ var import_shared66, CORSMiddleware;
3637
3706
  var init_cors_middleware = __esm({
3638
3707
  "src/presentation/middlewares/cors.middleware.ts"() {
3639
3708
  "use strict";
3640
- import_shared65 = require("@xeno-js/shared");
3709
+ import_shared66 = require("@xeno-js/shared");
3641
3710
  CORSMiddleware = class {
3642
3711
  constructor(_requestContext, _withCredentials = "false") {
3643
3712
  this._requestContext = _requestContext;
@@ -3649,7 +3718,7 @@ var init_cors_middleware = __esm({
3649
3718
  const { network } = this._requestContext.getContext() ?? {};
3650
3719
  const origin = network?.origin;
3651
3720
  const response = await next();
3652
- if (import_shared65.Guards.isDefined(origin))
3721
+ if (import_shared66.Guards.isDefined(origin))
3653
3722
  response.headers = {
3654
3723
  ...response.headers ?? {},
3655
3724
  "Access-Control-Allow-Origin": origin,
@@ -3663,11 +3732,11 @@ var init_cors_middleware = __esm({
3663
3732
  });
3664
3733
 
3665
3734
  // src/presentation/middlewares/csrf.middleware.ts
3666
- var import_shared66, CsrfMiddleware;
3735
+ var import_shared67, CsrfMiddleware;
3667
3736
  var init_csrf_middleware = __esm({
3668
3737
  "src/presentation/middlewares/csrf.middleware.ts"() {
3669
3738
  "use strict";
3670
- import_shared66 = require("@xeno-js/shared");
3739
+ import_shared67 = require("@xeno-js/shared");
3671
3740
  CsrfMiddleware = class {
3672
3741
  constructor(_requestContext, _csrfTokenService) {
3673
3742
  this._requestContext = _requestContext;
@@ -3682,64 +3751,64 @@ var init_csrf_middleware = __esm({
3682
3751
  const { network, tracing, identity } = this._requestContext.getContext() ?? {};
3683
3752
  const headerToken = network?.csrf;
3684
3753
  const cookieToken = network?.csrfCookie;
3685
- if (!import_shared66.Guards.isDefined(headerToken) || !import_shared66.Guards.isDefined(cookieToken)) {
3686
- return import_shared66.HttpHelper.error(
3754
+ if (!import_shared67.Guards.isDefined(headerToken) || !import_shared67.Guards.isDefined(cookieToken)) {
3755
+ return import_shared67.HttpHelper.error(
3687
3756
  {
3688
3757
  success: false,
3689
3758
  error: {
3690
- code: import_shared66.ERROR_CODES.FORBIDDEN,
3691
- message: import_shared66.ERROR_CODE_MESSAGES[import_shared66.ERROR_CODES.FORBIDDEN],
3759
+ code: import_shared67.ERROR_CODES.FORBIDDEN,
3760
+ message: import_shared67.ERROR_CODE_MESSAGES[import_shared67.ERROR_CODES.FORBIDDEN],
3692
3761
  details: "CSRF token missing",
3693
3762
  path: req.path
3694
3763
  },
3695
- correlationId: tracing?.correlationId ?? import_shared66.GuidHelper.generate(),
3696
- requestId: network?.requestId ?? import_shared66.GuidHelper.generate(),
3697
- spanId: tracing?.spanId ?? import_shared66.GuidHelper.generate(),
3764
+ correlationId: tracing?.correlationId ?? import_shared67.GuidHelper.generate(),
3765
+ requestId: network?.requestId ?? import_shared67.GuidHelper.generate(),
3766
+ spanId: tracing?.spanId ?? import_shared67.GuidHelper.generate(),
3698
3767
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
3699
3768
  },
3700
- import_shared66.STATUS_CODES.FORBIDDEN,
3769
+ import_shared67.STATUS_CODES.FORBIDDEN,
3701
3770
  {
3702
3771
  "Content-Type": [network?.formatIndicator ?? "application/json"]
3703
3772
  }
3704
3773
  );
3705
3774
  }
3706
3775
  if (headerToken !== cookieToken) {
3707
- return import_shared66.HttpHelper.error(
3776
+ return import_shared67.HttpHelper.error(
3708
3777
  {
3709
3778
  success: false,
3710
3779
  error: {
3711
- code: import_shared66.ERROR_CODES.FORBIDDEN,
3712
- message: import_shared66.ERROR_CODE_MESSAGES[import_shared66.ERROR_CODES.FORBIDDEN],
3780
+ code: import_shared67.ERROR_CODES.FORBIDDEN,
3781
+ message: import_shared67.ERROR_CODE_MESSAGES[import_shared67.ERROR_CODES.FORBIDDEN],
3713
3782
  details: "CSRF token mismatch",
3714
3783
  path: req.path
3715
3784
  },
3716
- correlationId: tracing?.correlationId ?? import_shared66.GuidHelper.generate(),
3717
- requestId: network?.requestId ?? import_shared66.GuidHelper.generate(),
3718
- spanId: tracing?.spanId ?? import_shared66.GuidHelper.generate(),
3785
+ correlationId: tracing?.correlationId ?? import_shared67.GuidHelper.generate(),
3786
+ requestId: network?.requestId ?? import_shared67.GuidHelper.generate(),
3787
+ spanId: tracing?.spanId ?? import_shared67.GuidHelper.generate(),
3719
3788
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
3720
3789
  },
3721
- import_shared66.STATUS_CODES.FORBIDDEN,
3790
+ import_shared67.STATUS_CODES.FORBIDDEN,
3722
3791
  {
3723
3792
  "Content-Type": [network?.formatIndicator ?? "application/json"]
3724
3793
  }
3725
3794
  );
3726
3795
  }
3727
- if (!import_shared66.Guards.isDefined(identity?.userId) || !await this._csrfTokenService.validate(headerToken, identity?.userId)) {
3728
- return import_shared66.HttpHelper.error(
3796
+ if (!import_shared67.Guards.isDefined(identity?.userId) || !await this._csrfTokenService.validate(headerToken, identity?.userId)) {
3797
+ return import_shared67.HttpHelper.error(
3729
3798
  {
3730
3799
  success: false,
3731
3800
  error: {
3732
- code: import_shared66.ERROR_CODES.FORBIDDEN,
3733
- message: import_shared66.ERROR_CODE_MESSAGES[import_shared66.ERROR_CODES.FORBIDDEN],
3801
+ code: import_shared67.ERROR_CODES.FORBIDDEN,
3802
+ message: import_shared67.ERROR_CODE_MESSAGES[import_shared67.ERROR_CODES.FORBIDDEN],
3734
3803
  details: "CSRF token invalid",
3735
3804
  path: req.path
3736
3805
  },
3737
- correlationId: tracing?.correlationId ?? import_shared66.GuidHelper.generate(),
3738
- requestId: network?.requestId ?? import_shared66.GuidHelper.generate(),
3739
- spanId: tracing?.spanId ?? import_shared66.GuidHelper.generate(),
3806
+ correlationId: tracing?.correlationId ?? import_shared67.GuidHelper.generate(),
3807
+ requestId: network?.requestId ?? import_shared67.GuidHelper.generate(),
3808
+ spanId: tracing?.spanId ?? import_shared67.GuidHelper.generate(),
3740
3809
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
3741
3810
  },
3742
- import_shared66.STATUS_CODES.FORBIDDEN,
3811
+ import_shared67.STATUS_CODES.FORBIDDEN,
3743
3812
  {
3744
3813
  "Content-Type": [network?.formatIndicator ?? "application/json"]
3745
3814
  }
@@ -3753,11 +3822,11 @@ var init_csrf_middleware = __esm({
3753
3822
  });
3754
3823
 
3755
3824
  // src/presentation/middlewares/csrf-cookie.middleware.ts
3756
- var import_shared67, CsrfCookieMiddleware;
3825
+ var import_shared68, CsrfCookieMiddleware;
3757
3826
  var init_csrf_cookie_middleware = __esm({
3758
3827
  "src/presentation/middlewares/csrf-cookie.middleware.ts"() {
3759
3828
  "use strict";
3760
- import_shared67 = require("@xeno-js/shared");
3829
+ import_shared68 = require("@xeno-js/shared");
3761
3830
  CsrfCookieMiddleware = class {
3762
3831
  constructor(_requestContext, _csrfTokenService, _csrf) {
3763
3832
  this._requestContext = _requestContext;
@@ -3772,8 +3841,8 @@ var init_csrf_cookie_middleware = __esm({
3772
3841
  const context = this._requestContext.getContext();
3773
3842
  const identity = context?.identity;
3774
3843
  const network = context?.network;
3775
- if (!import_shared67.Guards.isDefined(identity?.userId)) return response;
3776
- if (import_shared67.Guards.isDefined(network?.csrfCookie)) return response;
3844
+ if (!import_shared68.Guards.isDefined(identity?.userId)) return response;
3845
+ if (import_shared68.Guards.isDefined(network?.csrfCookie)) return response;
3777
3846
  const token = await this._csrfTokenService.generate(identity.userId);
3778
3847
  const cookieName = this._csrf.cookieName ?? "__Host-xeno-csrf";
3779
3848
  const maxAge = this._csrf.cookieMaxAgeSeconds ?? 3600;
@@ -3791,11 +3860,11 @@ var init_csrf_cookie_middleware = __esm({
3791
3860
  });
3792
3861
 
3793
3862
  // src/presentation/middlewares/options.middleware.ts
3794
- var import_shared68, OptionsMiddleware;
3863
+ var import_shared69, OptionsMiddleware;
3795
3864
  var init_options_middleware = __esm({
3796
3865
  "src/presentation/middlewares/options.middleware.ts"() {
3797
3866
  "use strict";
3798
- import_shared68 = require("@xeno-js/shared");
3867
+ import_shared69 = require("@xeno-js/shared");
3799
3868
  OptionsMiddleware = class {
3800
3869
  constructor(_requestContext, _alloewMethod, _allowHeaders = [], _withCredentials = "false") {
3801
3870
  this._requestContext = _requestContext;
@@ -3812,14 +3881,14 @@ var init_options_middleware = __esm({
3812
3881
  const network = this._requestContext.getNetworkContext();
3813
3882
  const origin = network?.origin;
3814
3883
  const headers = {};
3815
- if (import_shared68.Guards.isDefined(origin)) {
3884
+ if (import_shared69.Guards.isDefined(origin)) {
3816
3885
  headers["Access-Control-Allow-Origin"] = origin;
3817
3886
  headers["Access-Control-Allow-Credentials"] = this._withCredentials;
3818
3887
  headers["Vary"] = "Origin";
3819
3888
  }
3820
3889
  headers["Access-Control-Allow-Methods"] = this._alloewMethod.getMethods(req.path);
3821
3890
  headers["Access-Control-Allow-Headers"] = this._allowHeaders.join(", ");
3822
- return import_shared68.HttpHelper.success(null, import_shared68.STATUS_CODES.NO_CONTENT, {}, headers);
3891
+ return import_shared69.HttpHelper.success(null, import_shared69.STATUS_CODES.NO_CONTENT, {}, headers);
3823
3892
  }
3824
3893
  return await next();
3825
3894
  }
@@ -3828,11 +3897,11 @@ var init_options_middleware = __esm({
3828
3897
  });
3829
3898
 
3830
3899
  // src/presentation/middlewares/rate-limiter.middleware.ts
3831
- var import_shared69, RateLimitMiddleware;
3900
+ var import_shared70, RateLimitMiddleware;
3832
3901
  var init_rate_limiter_middleware = __esm({
3833
3902
  "src/presentation/middlewares/rate-limiter.middleware.ts"() {
3834
3903
  "use strict";
3835
- import_shared69 = require("@xeno-js/shared");
3904
+ import_shared70 = require("@xeno-js/shared");
3836
3905
  RateLimitMiddleware = class {
3837
3906
  constructor(_ctxAccessor, _cache, _keyBuilder, _logger, _opts) {
3838
3907
  this._ctxAccessor = _ctxAccessor;
@@ -3849,22 +3918,22 @@ var init_rate_limiter_middleware = __esm({
3849
3918
  async execute(req, _res, next) {
3850
3919
  const cacheKey = this._keyBuilder.buildRateLimitKey(req.path);
3851
3920
  const { network, tracing } = this._ctxAccessor.getContext() ?? {};
3852
- if (!import_shared69.Guards.isDefined(cacheKey))
3853
- return import_shared69.HttpHelper.error(
3921
+ if (!import_shared70.Guards.isDefined(cacheKey))
3922
+ return import_shared70.HttpHelper.error(
3854
3923
  {
3855
3924
  success: false,
3856
3925
  error: {
3857
- code: import_shared69.ERROR_CODES.SYSTEM_ERROR,
3858
- message: import_shared69.ERROR_CODE_MESSAGES[import_shared69.ERROR_CODES.SYSTEM_ERROR],
3926
+ code: import_shared70.ERROR_CODES.SYSTEM_ERROR,
3927
+ message: import_shared70.ERROR_CODE_MESSAGES[import_shared70.ERROR_CODES.SYSTEM_ERROR],
3859
3928
  details: `Bad Request: Unable to identify client context for rate limiting.`,
3860
3929
  path: req.path
3861
3930
  },
3862
- correlationId: tracing?.correlationId ?? import_shared69.GuidHelper.generate(),
3863
- requestId: network?.requestId ?? import_shared69.GuidHelper.generate(),
3864
- spanId: tracing?.spanId ?? import_shared69.GuidHelper.generate(),
3931
+ correlationId: tracing?.correlationId ?? import_shared70.GuidHelper.generate(),
3932
+ requestId: network?.requestId ?? import_shared70.GuidHelper.generate(),
3933
+ spanId: tracing?.spanId ?? import_shared70.GuidHelper.generate(),
3865
3934
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
3866
3935
  },
3867
- import_shared69.STATUS_CODES.SERVICE_UNAVAILABLE,
3936
+ import_shared70.STATUS_CODES.SERVICE_UNAVAILABLE,
3868
3937
  {
3869
3938
  "Content-Type": [network?.formatIndicator ?? "application/json"],
3870
3939
  "Retry-After": [String(this._opts.windowSeconds)]
@@ -3873,21 +3942,21 @@ var init_rate_limiter_middleware = __esm({
3873
3942
  const currentHits = await this._cache.increment(cacheKey, this._opts.windowSeconds);
3874
3943
  if (currentHits > this._opts.maxRequests) {
3875
3944
  this._logger.warn(`[RateLimit] key ${cacheKey} has been blocked on ${req.path}`);
3876
- return import_shared69.HttpHelper.error(
3945
+ return import_shared70.HttpHelper.error(
3877
3946
  {
3878
3947
  success: false,
3879
3948
  error: {
3880
- code: import_shared69.ERROR_CODES.TOO_MANY_REQUESTS,
3881
- message: import_shared69.ERROR_CODE_MESSAGES[import_shared69.ERROR_CODES.TOO_MANY_REQUESTS],
3949
+ code: import_shared70.ERROR_CODES.TOO_MANY_REQUESTS,
3950
+ message: import_shared70.ERROR_CODE_MESSAGES[import_shared70.ERROR_CODES.TOO_MANY_REQUESTS],
3882
3951
  details: `Rate limit exceeded.`,
3883
3952
  path: req.path
3884
3953
  },
3885
- correlationId: tracing?.correlationId ?? import_shared69.GuidHelper.generate(),
3886
- requestId: network?.requestId ?? import_shared69.GuidHelper.generate(),
3887
- spanId: tracing?.spanId ?? import_shared69.GuidHelper.generate(),
3954
+ correlationId: tracing?.correlationId ?? import_shared70.GuidHelper.generate(),
3955
+ requestId: network?.requestId ?? import_shared70.GuidHelper.generate(),
3956
+ spanId: tracing?.spanId ?? import_shared70.GuidHelper.generate(),
3888
3957
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
3889
3958
  },
3890
- import_shared69.STATUS_CODES.TOO_MANY_REQUESTS,
3959
+ import_shared70.STATUS_CODES.TOO_MANY_REQUESTS,
3891
3960
  {
3892
3961
  "Content-Type": [network?.formatIndicator ?? "application/json"],
3893
3962
  "Retry-After": [String(this._opts.windowSeconds)]
@@ -3902,8 +3971,8 @@ var init_rate_limiter_middleware = __esm({
3902
3971
 
3903
3972
  // src/presentation/mappers/context.mapper.ts
3904
3973
  function _buildMessagingContext(meta) {
3905
- const hasSequenceData = import_shared70.Guards.isDefined(meta.sequence?.sequenceId) || import_shared70.Guards.isDefined(meta.sequence?.position) || import_shared70.Guards.isDefined(meta.sequence?.size);
3906
- const hasMessagingData = hasSequenceData || import_shared70.Guards.isDefined(meta.expiration) || import_shared70.Guards.isDefined(meta.returnAddress);
3974
+ const hasSequenceData = import_shared71.Guards.isDefined(meta.sequence?.sequenceId) || import_shared71.Guards.isDefined(meta.sequence?.position) || import_shared71.Guards.isDefined(meta.sequence?.size);
3975
+ const hasMessagingData = hasSequenceData || import_shared71.Guards.isDefined(meta.expiration) || import_shared71.Guards.isDefined(meta.returnAddress);
3907
3976
  const messaging = hasMessagingData ? {
3908
3977
  returnAddress: meta.returnAddress,
3909
3978
  expiration: meta.expiration,
@@ -3911,11 +3980,11 @@ function _buildMessagingContext(meta) {
3911
3980
  } : void 0;
3912
3981
  return messaging;
3913
3982
  }
3914
- var import_shared70, ContextMapper;
3983
+ var import_shared71, ContextMapper;
3915
3984
  var init_context_mapper = __esm({
3916
3985
  "src/presentation/mappers/context.mapper.ts"() {
3917
3986
  "use strict";
3918
- import_shared70 = require("@xeno-js/shared");
3987
+ import_shared71 = require("@xeno-js/shared");
3919
3988
  ContextMapper = Object.freeze({
3920
3989
  /**
3921
3990
  * @description Maps to RequestContext. It extracts relevant information from the object, such as correlation ID, request ID, authentication token, client IP, user agent, format indicator, and messaging context (if available). The method constructs a RequestContext object that encapsulates all this information, providing a structured representation of the request context for further processing in the application.
@@ -3959,11 +4028,11 @@ var init_context_mapper = __esm({
3959
4028
  });
3960
4029
 
3961
4030
  // src/presentation/middlewares/request.middleware.ts
3962
- var import_shared71, RequestContextMiddleware;
4031
+ var import_shared72, RequestContextMiddleware;
3963
4032
  var init_request_middleware = __esm({
3964
4033
  "src/presentation/middlewares/request.middleware.ts"() {
3965
4034
  "use strict";
3966
- import_shared71 = require("@xeno-js/shared");
4035
+ import_shared72 = require("@xeno-js/shared");
3967
4036
  init_context_mapper();
3968
4037
  RequestContextMiddleware = class {
3969
4038
  /**
@@ -3988,8 +4057,8 @@ var init_request_middleware = __esm({
3988
4057
  _resolver;
3989
4058
  _logger;
3990
4059
  async execute(req, res, next) {
3991
- const correlationId = import_shared71.GuidHelper.generate();
3992
- const requestId = import_shared71.GuidHelper.generate();
4060
+ const correlationId = import_shared72.GuidHelper.generate();
4061
+ const requestId = import_shared72.GuidHelper.generate();
3993
4062
  const spanId = correlationId;
3994
4063
  const formatIndicator = "application/json";
3995
4064
  try {
@@ -4005,7 +4074,7 @@ var init_request_middleware = __esm({
4005
4074
  };
4006
4075
  const tmpContext = ContextMapper.map({
4007
4076
  metadata,
4008
- identity: import_shared71.GUEST,
4077
+ identity: import_shared72.GUEST,
4009
4078
  path: req.path,
4010
4079
  transport: { req, res }
4011
4080
  });
@@ -4017,12 +4086,12 @@ var init_request_middleware = __esm({
4017
4086
  return result;
4018
4087
  } catch (error) {
4019
4088
  this._logger.error("RequestContextMiddleware encountered an error", error);
4020
- return import_shared71.HttpHelper.error(
4089
+ return import_shared72.HttpHelper.error(
4021
4090
  {
4022
4091
  success: false,
4023
4092
  error: {
4024
- code: import_shared71.ERROR_CODES.SYSTEM_ERROR,
4025
- message: import_shared71.ERROR_CODE_MESSAGES[import_shared71.ERROR_CODES.SYSTEM_ERROR],
4093
+ code: import_shared72.ERROR_CODES.SYSTEM_ERROR,
4094
+ message: import_shared72.ERROR_CODE_MESSAGES[import_shared72.ERROR_CODES.SYSTEM_ERROR],
4026
4095
  details: `[Fatal System Error] Exception caught during request handling on path: ${req.path}`,
4027
4096
  path: req.path
4028
4097
  },
@@ -4031,7 +4100,7 @@ var init_request_middleware = __esm({
4031
4100
  spanId,
4032
4101
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
4033
4102
  },
4034
- import_shared71.STATUS_CODES.INTERNAL_SERVER_ERROR,
4103
+ import_shared72.STATUS_CODES.INTERNAL_SERVER_ERROR,
4035
4104
  { "Content-Type": [formatIndicator] }
4036
4105
  );
4037
4106
  }
@@ -4081,11 +4150,11 @@ var init_presentation = __esm({
4081
4150
  });
4082
4151
 
4083
4152
  // src/infrastructure/cache/rate-limit-key-builder.cache.ts
4084
- var import_shared72, RateLimitKeyBuilder;
4153
+ var import_shared73, RateLimitKeyBuilder;
4085
4154
  var init_rate_limit_key_builder_cache = __esm({
4086
4155
  "src/infrastructure/cache/rate-limit-key-builder.cache.ts"() {
4087
4156
  "use strict";
4088
- import_shared72 = require("@xeno-js/shared");
4157
+ import_shared73 = require("@xeno-js/shared");
4089
4158
  RateLimitKeyBuilder = class {
4090
4159
  constructor(_contextAccessor) {
4091
4160
  this._contextAccessor = _contextAccessor;
@@ -4096,12 +4165,12 @@ var init_rate_limit_key_builder_cache = __esm({
4096
4165
  const tenantId = ctx?.identity?.tenantId;
4097
4166
  const userId = ctx?.identity?.userId;
4098
4167
  const clientIp = ctx?.network?.clientIp;
4099
- if (!import_shared72.Guards.isNullOrEmpty(tenantId) && !import_shared72.Guards.isNullOrEmpty(userId))
4168
+ if (!import_shared73.Guards.isNullOrEmpty(tenantId) && !import_shared73.Guards.isNullOrEmpty(userId))
4100
4169
  return `ratelimit:tenant:${tenantId}:user:${userId}:${resource}`;
4101
- if (!import_shared72.Guards.isNullOrEmpty(tenantId) && !import_shared72.Guards.isNullOrEmpty(clientIp))
4170
+ if (!import_shared73.Guards.isNullOrEmpty(tenantId) && !import_shared73.Guards.isNullOrEmpty(clientIp))
4102
4171
  return `ratelimit:tenant:${tenantId}:ip:${clientIp}:${resource}`;
4103
- if (!import_shared72.Guards.isNullOrEmpty(userId)) return `ratelimit:user:${userId}:${resource}`;
4104
- if (!import_shared72.Guards.isNullOrEmpty(clientIp)) return `ratelimit:ip:${clientIp}:${resource}`;
4172
+ if (!import_shared73.Guards.isNullOrEmpty(userId)) return `ratelimit:user:${userId}:${resource}`;
4173
+ if (!import_shared73.Guards.isNullOrEmpty(clientIp)) return `ratelimit:ip:${clientIp}:${resource}`;
4105
4174
  return void 0;
4106
4175
  }
4107
4176
  };
@@ -4135,7 +4204,7 @@ var init_middleware_module = __esm({
4135
4204
  "use strict";
4136
4205
  MiddlewareModule = class {
4137
4206
  async configure(container, opts) {
4138
- const { Guards: Guards46, TOKENS: TOKENS4 } = await import("@xeno-js/shared");
4207
+ const { Guards: Guards47, TOKENS: TOKENS5 } = await import("@xeno-js/shared");
4139
4208
  const { HttpCookieExtractor: HttpCookieExtractor2 } = await Promise.resolve().then(() => (init_services(), services_exports));
4140
4209
  const { HttpHeaderExtractor: HttpHeaderExtractor2 } = await Promise.resolve().then(() => (init_services(), services_exports));
4141
4210
  const tokenExtractor = await this._getTokenExtractor(
@@ -4144,7 +4213,7 @@ var init_middleware_module = __esm({
4144
4213
  opts.customTokenExtractor
4145
4214
  );
4146
4215
  container.addSingleton(
4147
- TOKENS4.SERVICE_EXTRACTOR,
4216
+ TOKENS5.SERVICE_EXTRACTOR,
4148
4217
  () => new HttpHeaderExtractor2(
4149
4218
  tokenExtractor,
4150
4219
  new HttpCookieExtractor2(),
@@ -4154,18 +4223,18 @@ var init_middleware_module = __esm({
4154
4223
  );
4155
4224
  const { ClientIpResolver: ClientIpResolver2 } = await Promise.resolve().then(() => (init_services(), services_exports));
4156
4225
  const middlewares = [];
4157
- const requestContext = container.resolve(TOKENS4.REQUEST_CONTEXT);
4158
- const logger = container.resolve(TOKENS4.LOGGER);
4226
+ const requestContext = container.resolve(TOKENS5.REQUEST_CONTEXT);
4227
+ const logger = container.resolve(TOKENS5.LOGGER);
4159
4228
  const { RequestContextMiddleware: RequestContextMiddleware2 } = await Promise.resolve().then(() => (init_presentation(), presentation_exports));
4160
4229
  middlewares.push(
4161
4230
  new RequestContextMiddleware2(
4162
4231
  requestContext,
4163
- container.resolve(TOKENS4.SERVICE_EXTRACTOR),
4232
+ container.resolve(TOKENS5.SERVICE_EXTRACTOR),
4164
4233
  new ClientIpResolver2(opts.trustedProxies),
4165
4234
  logger
4166
4235
  )
4167
4236
  );
4168
- if (!Guards46.isNullOrEmpty(opts.allowOrigins)) {
4237
+ if (!Guards47.isNullOrEmpty(opts.allowOrigins)) {
4169
4238
  if (opts.withCredentials && opts.allowOrigins.includes("*"))
4170
4239
  throw new Error(
4171
4240
  "Wildcard CORS origin is not allowed when withCredentials is set to true in addHttpCore"
@@ -4191,7 +4260,7 @@ var init_middleware_module = __esm({
4191
4260
  const { CORSMiddleware: CORSMiddleware2 } = await Promise.resolve().then(() => (init_presentation(), presentation_exports));
4192
4261
  middlewares.push(new CORSMiddleware2(requestContext, withCredentials));
4193
4262
  }
4194
- if (Guards46.isDefined(opts.routeRegistry)) {
4263
+ if (Guards47.isDefined(opts.routeRegistry)) {
4195
4264
  const { MethodCheckMiddleware: MethodCheckMiddleware2 } = await Promise.resolve().then(() => (init_presentation(), presentation_exports));
4196
4265
  middlewares.push(new MethodCheckMiddleware2(requestContext, allowMethod));
4197
4266
  }
@@ -4213,31 +4282,31 @@ var init_middleware_module = __esm({
4213
4282
  new AuthenticationMiddleware2(
4214
4283
  requestContext,
4215
4284
  tokenExtractor,
4216
- new GateKeeper2(container.resolve(TOKENS4.BASE_AUTH_SERVICE), new ClaimsIdentityMapper2()),
4285
+ new GateKeeper2(container.resolve(TOKENS5.BASE_AUTH_SERVICE), new ClaimsIdentityMapper2()),
4217
4286
  logger
4218
4287
  )
4219
4288
  );
4220
4289
  }
4221
- if (Guards46.isDefined(opts.rateLimite.maxRequests) || Guards46.isDefined(opts.rateLimite.windowSeconds)) {
4290
+ if (Guards47.isDefined(opts.rateLimite.maxRequests) || Guards47.isDefined(opts.rateLimite.windowSeconds)) {
4222
4291
  const maxRequests = opts.rateLimite.maxRequests ?? 30;
4223
- Guards46.throwIfNegative(maxRequests, "MaxRequests must be positive");
4224
- Guards46.throwIfNotInteger(maxRequests, "MaxRequests must be an integer");
4292
+ Guards47.throwIfNegative(maxRequests, "MaxRequests must be positive");
4293
+ Guards47.throwIfNotInteger(maxRequests, "MaxRequests must be an integer");
4225
4294
  const windowSeconds = opts.rateLimite.windowSeconds ?? 30;
4226
- Guards46.throwIfNegative(windowSeconds, "WindowSeconds must be positive");
4227
- Guards46.throwIfNotInteger(windowSeconds, "WindowSeconds must be an integer");
4295
+ Guards47.throwIfNegative(windowSeconds, "WindowSeconds must be positive");
4296
+ Guards47.throwIfNotInteger(windowSeconds, "WindowSeconds must be an integer");
4228
4297
  const { RateLimitKeyBuilder: RateLimitKeyBuilder2 } = await Promise.resolve().then(() => (init_cache(), cache_exports));
4229
4298
  const { RateLimitMiddleware: RateLimitMiddleware2 } = await Promise.resolve().then(() => (init_presentation(), presentation_exports));
4230
4299
  middlewares.push(
4231
4300
  new RateLimitMiddleware2(
4232
4301
  requestContext,
4233
- container.resolve(TOKENS4.CACHE),
4302
+ container.resolve(TOKENS5.CACHE),
4234
4303
  new RateLimitKeyBuilder2(requestContext),
4235
4304
  logger,
4236
4305
  { maxRequests, windowSeconds }
4237
4306
  )
4238
4307
  );
4239
4308
  }
4240
- if (Guards46.isDefined(opts.csrf)) {
4309
+ if (Guards47.isDefined(opts.csrf)) {
4241
4310
  const csrf = opts.csrf;
4242
4311
  const { EdgeCryptoService: EdgeCryptoService2 } = await Promise.resolve().then(() => (init_services(), services_exports));
4243
4312
  container.addSingleton("CRYPTO_SERVICE", () => new EdgeCryptoService2());
@@ -4257,13 +4326,13 @@ var init_middleware_module = __esm({
4257
4326
  middlewares.push(new CsrfMiddleware2(requestContext, container.resolve("CSRF_TOKEN_SERVICE")));
4258
4327
  }
4259
4328
  const { CompositeMiddleware: CompositeMiddleware2 } = await Promise.resolve().then(() => (init_presentation(), presentation_exports));
4260
- container.addSingleton(TOKENS4.MIDDLEWARE, () => {
4329
+ container.addSingleton(TOKENS5.MIDDLEWARE, () => {
4261
4330
  return new CompositeMiddleware2(middlewares);
4262
4331
  });
4263
4332
  }
4264
4333
  async _getTokenExtractor(isSSR, cookieName, customTokenExtractor) {
4265
- const { Guards: Guards46 } = await import("@xeno-js/shared");
4266
- if (Guards46.isDefined(customTokenExtractor)) return customTokenExtractor();
4334
+ const { Guards: Guards47 } = await import("@xeno-js/shared");
4335
+ if (Guards47.isDefined(customTokenExtractor)) return customTokenExtractor();
4267
4336
  if (isSSR) {
4268
4337
  const { SupabaseSsrTokenExtractor: SupabaseSsrTokenExtractor2 } = await Promise.resolve().then(() => (init_services(), services_exports));
4269
4338
  return new SupabaseSsrTokenExtractor2();
@@ -4273,8 +4342,8 @@ var init_middleware_module = __esm({
4273
4342
  }
4274
4343
  }
4275
4344
  async _getAllowMethod(configure, opts) {
4276
- const { Guards: Guards46 } = await import("@xeno-js/shared");
4277
- if (!configure || !Guards46.isDefined(opts)) return void 0;
4345
+ const { Guards: Guards47 } = await import("@xeno-js/shared");
4346
+ if (!configure || !Guards47.isDefined(opts)) return void 0;
4278
4347
  const { AllowMethodFactory: AllowMethodFactory2 } = await Promise.resolve().then(() => (init_factories(), factories_exports));
4279
4348
  return new AllowMethodFactory2().create(opts);
4280
4349
  }
@@ -4293,17 +4362,17 @@ var init_context_module = __esm({
4293
4362
  "use strict";
4294
4363
  ContextModule = class {
4295
4364
  async configure(container) {
4296
- const { TOKENS: TOKENS4 } = await import("@xeno-js/shared");
4365
+ const { TOKENS: TOKENS5 } = await import("@xeno-js/shared");
4297
4366
  const { ServiceScopeFactory: ServiceScopeFactory2 } = await Promise.resolve().then(() => (init_service_scope_factory(), service_scope_factory_exports));
4298
4367
  const { NodeRequestContextFactory: NodeRequestContextFactory2 } = await Promise.resolve().then(() => (init_request_context_factory(), request_context_factory_exports));
4299
4368
  const requestContext = new NodeRequestContextFactory2(
4300
4369
  new ServiceScopeFactory2(container)
4301
4370
  ).create();
4302
- container.addSingleton(TOKENS4.REQUEST_CONTEXT, () => requestContext);
4303
- container.addSingleton(TOKENS4.CONTEXT_ACCESSOR, () => requestContext);
4304
- container.addSingleton(TOKENS4.IDENTITY_ACCESSOR, () => requestContext);
4305
- container.addSingleton(TOKENS4.SERVICE_SCOPE_ACCESSOR, () => requestContext);
4306
- container.addSingleton(TOKENS4.NETWORK_CONTEXT_ACCESSOR, () => requestContext);
4371
+ container.addSingleton(TOKENS5.REQUEST_CONTEXT, () => requestContext);
4372
+ container.addSingleton(TOKENS5.CONTEXT_ACCESSOR, () => requestContext);
4373
+ container.addSingleton(TOKENS5.IDENTITY_ACCESSOR, () => requestContext);
4374
+ container.addSingleton(TOKENS5.SERVICE_SCOPE_ACCESSOR, () => requestContext);
4375
+ container.addSingleton(TOKENS5.NETWORK_CONTEXT_ACCESSOR, () => requestContext);
4307
4376
  const { UserContextFactory: UserContextFactory2 } = await Promise.resolve().then(() => (init_user_context_factory(), user_context_factory_exports));
4308
4377
  container.addSingleton("USER_CONTEXT_FACTORY", () => {
4309
4378
  return new UserContextFactory2(requestContext);
@@ -4321,7 +4390,7 @@ __export(index_exports, {
4321
4390
  BaseController: () => BaseController,
4322
4391
  BaseHandler: () => BaseHandler,
4323
4392
  BasePostgresSqlDataSource: () => BasePostgresSqlDataSource,
4324
- BaseQuery: () => import_shared79.Query,
4393
+ BaseQuery: () => import_shared80.Query,
4325
4394
  BaseSqliteSqlDataSource: () => BaseSqliteSqlDataSource,
4326
4395
  ContainerUtils: () => ContainerUtils,
4327
4396
  ReadDao: () => ReadDao,
@@ -4333,7 +4402,7 @@ module.exports = __toCommonJS(index_exports);
4333
4402
  init_application();
4334
4403
 
4335
4404
  // src/infrastructure/builder/app.builder.ts
4336
- var import_shared73 = require("@xeno-js/shared");
4405
+ var import_shared74 = require("@xeno-js/shared");
4337
4406
 
4338
4407
  // src/infrastructure/configuration/configuration.ts
4339
4408
  var import_shared32 = require("@xeno-js/shared");
@@ -4612,13 +4681,14 @@ var AppBuilder = class {
4612
4681
  constructor(container) {
4613
4682
  this._container = container ?? new ServiceContainer();
4614
4683
  this._container.addSingleton(
4615
- import_shared73.TOKENS.CONFIGURATION_SERVICE,
4684
+ import_shared74.TOKENS.CONFIGURATION_SERVICE,
4616
4685
  () => new EnvironmentConfigurationService()
4617
4686
  );
4618
- this._configuration = this._container.resolve(import_shared73.TOKENS.CONFIGURATION_SERVICE);
4687
+ this._configuration = this._container.resolve(import_shared74.TOKENS.CONFIGURATION_SERVICE);
4619
4688
  this._middlewareConfig.allowOrigins?.push(
4620
4689
  this._configuration.get("APP_URL") ?? `http://localhost:${this._configuration.getNumber("PORT", 3e3)}`
4621
4690
  );
4691
+ this.addContext();
4622
4692
  }
4623
4693
  // --- Module Configurations ---
4624
4694
  _modules = [];
@@ -4664,7 +4734,13 @@ var AppBuilder = class {
4664
4734
  redirectTo: "",
4665
4735
  storageOpts: { type: "memory", cookieOpts: void 0, storage: void 0 },
4666
4736
  ssrOpts: void 0,
4667
- customAuth: void 0
4737
+ customAuth: void 0,
4738
+ cookieOpts: {
4739
+ path: "/",
4740
+ httpOnly: true,
4741
+ sameSite: "lax",
4742
+ secure: true
4743
+ }
4668
4744
  };
4669
4745
  _httpConfig = {
4670
4746
  dataSourceToken: void 0,
@@ -4685,7 +4761,7 @@ var AppBuilder = class {
4685
4761
  resilience: { retry: {}, circuitBreaker: {}, bulkhead: {} }
4686
4762
  };
4687
4763
  _loggerConfig = {
4688
- level: import_shared73.LOG_LEVEL.DEBUG,
4764
+ level: import_shared74.LOG_LEVEL.DEBUG,
4689
4765
  console: true,
4690
4766
  sentry: { config: void 0 },
4691
4767
  pino: { config: void 0 },
@@ -4743,7 +4819,7 @@ var AppBuilder = class {
4743
4819
  * @link https://github.com/xeno-js/xeno-js
4744
4820
  */
4745
4821
  addLogger(setupAction) {
4746
- if (import_shared73.Guards.isDefined(setupAction)) setupAction(this._loggerConfig, this._configuration);
4822
+ if (import_shared74.Guards.isDefined(setupAction)) setupAction(this._loggerConfig, this._configuration);
4747
4823
  if (this._isLoggerModuleQueued) return this;
4748
4824
  this._isLoggerModuleQueued = true;
4749
4825
  this._modules.push({
@@ -4768,7 +4844,7 @@ var AppBuilder = class {
4768
4844
  * @link https://github.com/xeno-js/xeno-js
4769
4845
  */
4770
4846
  addCache(setupAction) {
4771
- if (import_shared73.Guards.isDefined(setupAction)) setupAction(this._config, this._configuration);
4847
+ if (import_shared74.Guards.isDefined(setupAction)) setupAction(this._config, this._configuration);
4772
4848
  if (this._isCacheModuleQueued) return this;
4773
4849
  this._isCacheModuleQueued = true;
4774
4850
  this._modules.push({
@@ -4871,7 +4947,7 @@ var AppBuilder = class {
4871
4947
  * @link https://github.com/xeno-js/xeno-js
4872
4948
  */
4873
4949
  addPipeline(setupAction) {
4874
- if (import_shared73.Guards.isDefined(setupAction)) {
4950
+ if (import_shared74.Guards.isDefined(setupAction)) {
4875
4951
  setupAction(this._pipelineConfig, this._configuration);
4876
4952
  }
4877
4953
  this._queuePipelineModule();
@@ -4992,7 +5068,7 @@ var AppBuilder = class {
4992
5068
  console.error(`\u{1F449} Module: **${queued.name}**`);
4993
5069
  console.error(`\u{1F4DD} Reason: ${errorMessage}
4994
5070
  `);
4995
- if (error instanceof Error && import_shared73.Guards.isDefined(error.stack)) {
5071
+ if (error instanceof Error && import_shared74.Guards.isDefined(error.stack)) {
4996
5072
  console.error(error.stack);
4997
5073
  }
4998
5074
  throw new Error(`Bootstrap failed at [${queued.name}]: ${errorMessage}`, { cause: error });
@@ -5120,7 +5196,7 @@ var BaseSqliteSqlDataSource = class {
5120
5196
  };
5121
5197
 
5122
5198
  // src/infrastructure/datasources/remote.datasource.ts
5123
- var import_shared74 = require("@xeno-js/shared");
5199
+ var import_shared75 = require("@xeno-js/shared");
5124
5200
 
5125
5201
  // src/infrastructure/index.ts
5126
5202
  init_factories();
@@ -5148,8 +5224,8 @@ init_pipeline_utils();
5148
5224
  init_validation_utils();
5149
5225
 
5150
5226
  // src/infrastructure/repositories/read-dao.ts
5151
- var import_shared75 = require("@xeno-js/shared");
5152
5227
  var import_shared76 = require("@xeno-js/shared");
5228
+ var import_shared77 = require("@xeno-js/shared");
5153
5229
  var ReadDao = class {
5154
5230
  /**
5155
5231
  * Constructs a new ReadDao instance.
@@ -5169,23 +5245,23 @@ var ReadDao = class {
5169
5245
  _dataSource;
5170
5246
  _mapper;
5171
5247
  async findById(id, ctx, signal) {
5172
- import_shared75.AppError.throwIfAborted(signal, "ReadDao.findById");
5248
+ import_shared76.AppError.throwIfAborted(signal, "ReadDao.findById");
5173
5249
  const result = await this._dataSource.findById(id, ctx, signal);
5174
- if (import_shared76.Guards.isNullOrEmpty(result)) return import_shared75.Result.ok();
5250
+ if (import_shared77.Guards.isNullOrEmpty(result)) return import_shared76.Result.ok();
5175
5251
  const entity = this._mapper.toEntity(result);
5176
- return import_shared75.Result.ok(entity);
5252
+ return import_shared76.Result.ok(entity);
5177
5253
  }
5178
5254
  async findAll(ctx, signal) {
5179
- import_shared75.AppError.throwIfAborted(signal, "ReadDao.findAll");
5255
+ import_shared76.AppError.throwIfAborted(signal, "ReadDao.findAll");
5180
5256
  const results = await this._dataSource.findAll(ctx, signal);
5181
5257
  const entities = results.map((result) => this._mapper.toEntity(result));
5182
- return import_shared75.Result.ok(entities);
5258
+ return import_shared76.Result.ok(entities);
5183
5259
  }
5184
5260
  };
5185
5261
 
5186
5262
  // src/infrastructure/repositories/repository.ts
5187
- var import_shared77 = require("@xeno-js/shared");
5188
5263
  var import_shared78 = require("@xeno-js/shared");
5264
+ var import_shared79 = require("@xeno-js/shared");
5189
5265
  var Repository = class {
5190
5266
  /**
5191
5267
  * Constructs a new Repository instance.
@@ -5205,35 +5281,35 @@ var Repository = class {
5205
5281
  _dataSource;
5206
5282
  _mapper;
5207
5283
  async findById(id, ctx, signal) {
5208
- import_shared77.AppError.throwIfAborted(signal, "Repository.findById");
5284
+ import_shared78.AppError.throwIfAborted(signal, "Repository.findById");
5209
5285
  const result = await this._dataSource.findById(id, ctx, signal);
5210
- if (import_shared78.Guards.isNullOrEmpty(result)) return import_shared77.Result.ok();
5286
+ if (import_shared79.Guards.isNullOrEmpty(result)) return import_shared78.Result.ok();
5211
5287
  const entity = this._mapper.toEntity(result);
5212
- return import_shared77.Result.ok(entity);
5288
+ return import_shared78.Result.ok(entity);
5213
5289
  }
5214
5290
  async findAll(ctx, signal) {
5215
- import_shared77.AppError.throwIfAborted(signal, "Repository.findAll");
5291
+ import_shared78.AppError.throwIfAborted(signal, "Repository.findAll");
5216
5292
  const results = await this._dataSource.findAll(ctx, signal);
5217
5293
  const entities = results.map((result) => this._mapper.toEntity(result));
5218
- return import_shared77.Result.ok(entities);
5294
+ return import_shared78.Result.ok(entities);
5219
5295
  }
5220
5296
  async save(entity, signal) {
5221
5297
  const dto = this._mapper.toDto(entity);
5222
- import_shared77.AppError.throwIfAborted(signal, "Repository.save");
5298
+ import_shared78.AppError.throwIfAborted(signal, "Repository.save");
5223
5299
  await this._dataSource.insert(dto, signal);
5224
- return import_shared77.Result.ok();
5300
+ return import_shared78.Result.ok();
5225
5301
  }
5226
5302
  async delete(entity, ctx, signal) {
5227
5303
  const dto = this._mapper.toDto(entity);
5228
- import_shared77.AppError.throwIfAborted(signal, "Repository.delete");
5304
+ import_shared78.AppError.throwIfAborted(signal, "Repository.delete");
5229
5305
  await this._dataSource.delete(dto, ctx, signal);
5230
- return import_shared77.Result.ok();
5306
+ return import_shared78.Result.ok();
5231
5307
  }
5232
5308
  async update(id, entity, ctx, signal) {
5233
5309
  const dto = this._mapper.toPartialDto(entity);
5234
- import_shared77.AppError.throwIfAborted(signal, "Repository.update");
5310
+ import_shared78.AppError.throwIfAborted(signal, "Repository.update");
5235
5311
  await this._dataSource.update(id, dto, ctx, signal);
5236
- return import_shared77.Result.ok();
5312
+ return import_shared78.Result.ok();
5237
5313
  }
5238
5314
  };
5239
5315
 
@@ -5251,7 +5327,7 @@ __reExport(drizzle_types_exports, require("drizzle-orm"));
5251
5327
  __reExport(index_exports, drizzle_types_exports, module.exports);
5252
5328
  init_presentation();
5253
5329
  __reExport(index_exports, require("@xeno-js/shared"), module.exports);
5254
- var import_shared79 = require("@xeno-js/shared");
5330
+ var import_shared80 = require("@xeno-js/shared");
5255
5331
  // Annotate the CommonJS export names for ESM import in node:
5256
5332
  0 && (module.exports = {
5257
5333
  AppBuilder,