@mrxsys/mrx-core 2.11.1-1-and-275-20251023 → 2.12.0-1-and-289-20251215

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.
Files changed (210) hide show
  1. package/CHANGELOG.md +0 -0
  2. package/dist/{chunk-0d0zd2yg.js → chunk-037vwvd4.js} +2 -2
  3. package/dist/{chunk-jksb9ers.js → chunk-10w8mg8e.js} +1 -1
  4. package/dist/{chunk-dre2fgj0.js → chunk-2z8amjqt.js} +1 -1
  5. package/dist/{chunk-afyz8rg5.js → chunk-47yta3gd.js} +34 -22
  6. package/dist/chunk-4t7sy5qt.js +10 -0
  7. package/dist/chunk-642xajvx.js +59 -0
  8. package/dist/chunk-6hs00zfd.js +13 -0
  9. package/dist/chunk-8pw0syzf.js +9 -0
  10. package/dist/{chunk-eeb7yskp.js → chunk-awphtyzp.js} +4 -4
  11. package/dist/{chunk-8tffnbpn.js → chunk-ayyrgqyv.js} +1 -1
  12. package/dist/{chunk-12qzn7jw.js → chunk-dmsev7vs.js} +1 -1
  13. package/dist/{chunk-afd82epa.js → chunk-hnds0krm.js} +13 -13
  14. package/dist/{chunk-gtn1kn0z.js → chunk-hv6g22kf.js} +4 -4
  15. package/dist/chunk-hwfebx4x.js +11 -0
  16. package/dist/chunk-j7dyc5ks.js +101 -0
  17. package/dist/chunk-jz3wd472.js +23 -0
  18. package/dist/{chunk-fs3wm3p4.js → chunk-r7yr9p57.js} +6 -6
  19. package/dist/chunk-txazb0xn.js +27 -0
  20. package/dist/chunk-y5dtkmnp.js +8 -0
  21. package/dist/chunk-yrt0ffvf.js +9 -0
  22. package/dist/chunk-zn2nm5gg.js +9 -0
  23. package/dist/{chunk-7t524zqh.js → chunk-zv4ta4fb.js} +3 -3
  24. package/dist/errors/{base-error.d.ts → app-error.d.ts} +2 -1
  25. package/dist/errors/http-error.d.ts +2 -2
  26. package/dist/errors/index.d.ts +2 -1
  27. package/dist/errors/index.js +6 -4
  28. package/dist/errors/internal-error.d.ts +4 -0
  29. package/dist/modules/data/data.d.ts +5 -5
  30. package/dist/modules/data/enums/data-error-keys.d.ts +1 -1
  31. package/dist/modules/data/enums/index.js +1 -1
  32. package/dist/modules/data/index.js +3 -3
  33. package/dist/modules/database/enums/database-error-keys.d.ts +26 -26
  34. package/dist/modules/database/enums/index.js +1 -1
  35. package/dist/modules/database/enums/mssql-error-code.d.ts +23 -23
  36. package/dist/modules/database/index.js +5 -5
  37. package/dist/modules/database/mssql.d.ts +9 -9
  38. package/dist/modules/elysia/cache/cache.d.ts +1 -1
  39. package/dist/modules/elysia/cache/index.js +3 -3
  40. package/dist/modules/elysia/db-resolver/enums/db-resolver-error-keys.d.ts +1 -1
  41. package/dist/modules/elysia/db-resolver/enums/index.js +1 -1
  42. package/dist/modules/elysia/db-resolver/index.js +53 -10
  43. package/dist/modules/elysia/error/enums/error.keys.d.ts +4 -4
  44. package/dist/modules/elysia/error/enums/index.js +1 -1
  45. package/dist/modules/elysia/error/error.d.ts +5 -5
  46. package/dist/modules/elysia/error/index.js +14 -14
  47. package/dist/modules/elysia/microservice/enums/index.js +1 -1
  48. package/dist/modules/elysia/microservice/enums/microservice-success-keys.d.ts +2 -2
  49. package/dist/modules/elysia/microservice/index.js +1 -1
  50. package/dist/modules/elysia/rate-limit/enums/index.js +1 -1
  51. package/dist/modules/elysia/rate-limit/enums/rate-limit-error-keys.d.ts +1 -1
  52. package/dist/modules/elysia/rate-limit/index.js +7 -6
  53. package/dist/modules/elysia/rate-limit/rate-limit.d.ts +1 -1
  54. package/dist/modules/jwt/enums/index.js +2 -2
  55. package/dist/modules/jwt/enums/jwt-error-keys.d.ts +3 -3
  56. package/dist/modules/jwt/enums/parse-human-time-to-seconds-error-keys.d.ts +1 -1
  57. package/dist/modules/jwt/index.js +10 -12
  58. package/dist/modules/jwt/utils/index.js +3 -3
  59. package/dist/modules/jwt/utils/parse-human-time-to-seconds.d.ts +1 -1
  60. package/dist/modules/kv-store/bun-redis/index.js +25 -17
  61. package/dist/modules/kv-store/enums/index.js +1 -1
  62. package/dist/modules/kv-store/enums/kv-store-error-keys.d.ts +3 -3
  63. package/dist/modules/kv-store/ioredis/index.js +17 -17
  64. package/dist/modules/kv-store/memory/index.js +4 -98
  65. package/dist/modules/logger/enums/index.js +1 -1
  66. package/dist/modules/logger/enums/logger-error-keys.d.ts +7 -7
  67. package/dist/modules/logger/events/logger-events.d.ts +4 -4
  68. package/dist/modules/logger/index.js +91 -20
  69. package/dist/modules/logger/logger.d.ts +2 -2
  70. package/dist/modules/logger/sinks/console-logger.d.ts +1 -1
  71. package/dist/modules/logger/sinks/file-logger/enums/file-logger-error-keys.d.ts +1 -1
  72. package/dist/modules/logger/sinks/file-logger/file-logger.d.ts +3 -3
  73. package/dist/modules/logger/sinks/index.js +10 -11
  74. package/dist/modules/logger/types/logger-options.d.ts +1 -1
  75. package/dist/modules/logger/types/logger-sink.d.ts +1 -1
  76. package/dist/modules/logger/worker-logger.d.ts +1 -0
  77. package/dist/modules/mailer/enums/index.js +1 -1
  78. package/dist/modules/mailer/enums/mailer-error-keys.d.ts +3 -3
  79. package/dist/modules/mailer/index.js +6 -6
  80. package/dist/modules/mailer/smtp.d.ts +4 -4
  81. package/dist/modules/repository/index.js +4 -4
  82. package/dist/modules/repository/repository.d.ts +29 -13
  83. package/dist/modules/repository/types/filter.d.ts +2 -5
  84. package/dist/modules/repository/types/global-search.d.ts +12 -0
  85. package/dist/modules/repository/types/index.d.ts +2 -1
  86. package/dist/modules/repository/types/{order-by-item.d.ts → order-by.d.ts} +3 -3
  87. package/dist/modules/repository/types/query-options.d.ts +4 -5
  88. package/dist/modules/schema-builder/build-adaptive-where-clause-schema.d.ts +17 -0
  89. package/dist/modules/schema-builder/build-count-schema.d.ts +12 -0
  90. package/dist/modules/{elysia/crud/utils/create-delete-schema.d.ts → schema-builder/build-delete-schema.d.ts} +3 -3
  91. package/dist/modules/schema-builder/build-filters-schema.d.ts +12 -0
  92. package/dist/modules/schema-builder/build-find-schema.d.ts +12 -0
  93. package/dist/modules/schema-builder/build-global-search-schema.d.ts +12 -0
  94. package/dist/modules/schema-builder/build-insert-schema.d.ts +3 -0
  95. package/dist/modules/schema-builder/build-order-by-schema.d.ts +12 -0
  96. package/dist/modules/schema-builder/build-selected-fields.d.ts +12 -0
  97. package/dist/modules/schema-builder/build-update-one-schema.d.ts +12 -0
  98. package/dist/modules/schema-builder/build-update-schema.d.ts +12 -0
  99. package/dist/modules/schema-builder/clean-schema.d.ts +2 -0
  100. package/dist/modules/schema-builder/index.d.ts +12 -0
  101. package/dist/modules/schema-builder/index.js +232 -0
  102. package/dist/modules/schema-builder/types/adaptive-where-clause-schema.d.ts +34 -0
  103. package/dist/modules/{elysia/crud → schema-builder}/types/count-schema.d.ts +3 -3
  104. package/dist/modules/schema-builder/types/delete-schema.d.ts +12 -0
  105. package/dist/modules/schema-builder/types/filter-schema.d.ts +12 -0
  106. package/dist/modules/schema-builder/types/find-schema.d.ts +16 -0
  107. package/dist/modules/{elysia/crud/types/q-schema.d.ts → schema-builder/types/global-search-schema.d.ts} +1 -1
  108. package/dist/modules/schema-builder/types/index.d.ts +12 -0
  109. package/dist/modules/{elysia/crud → schema-builder}/types/insert-schema.d.ts +1 -1
  110. package/dist/modules/schema-builder/types/order-by-schema.d.ts +5 -0
  111. package/dist/modules/{elysia/crud → schema-builder}/types/update-schema.d.ts +4 -4
  112. package/dist/{shared → modules/schema-builder}/utils/flatten.d.ts +1 -1
  113. package/dist/modules/schema-builder/utils/index.d.ts +2 -0
  114. package/dist/modules/schema-builder/utils/index.js +9 -0
  115. package/dist/modules/singleton-manager/enums/index.js +1 -1
  116. package/dist/modules/singleton-manager/enums/singleton-manager-error-keys.d.ts +2 -2
  117. package/dist/modules/singleton-manager/index.js +3 -3
  118. package/dist/modules/singleton-manager/singleton-manager.d.ts +3 -3
  119. package/dist/modules/totp/enums/index.js +1 -1
  120. package/dist/modules/totp/enums/totp-error-keys.d.ts +5 -5
  121. package/dist/modules/totp/index.js +6 -6
  122. package/dist/modules/totp/otp-auth-uri.d.ts +1 -1
  123. package/dist/modules/totp/utils/base32.d.ts +1 -1
  124. package/dist/modules/totp/utils/generate-secret-bytes.d.ts +1 -1
  125. package/dist/modules/totp/utils/index.js +5 -5
  126. package/dist/shared/types/index.d.ts +0 -1
  127. package/dist/shared/utils/env.d.ts +1 -1
  128. package/dist/shared/utils/index.d.ts +0 -1
  129. package/dist/shared/utils/index.js +4 -8
  130. package/package.json +19 -22
  131. package/dist/chunk-441xs5k1.js +0 -53
  132. package/dist/chunk-4v86f7gp.js +0 -59
  133. package/dist/chunk-6w9ja96e.js +0 -9
  134. package/dist/chunk-9cgzhc50.js +0 -15
  135. package/dist/chunk-9d3zvgp6.js +0 -9
  136. package/dist/chunk-9dzsj7f2.js +0 -23
  137. package/dist/chunk-9r5anep5.js +0 -11
  138. package/dist/chunk-p14h6jfs.js +0 -365
  139. package/dist/chunk-pjv1ekwr.js +0 -284
  140. package/dist/chunk-rz5p4j3p.js +0 -13
  141. package/dist/chunk-spnh9dzk.js +0 -10
  142. package/dist/chunk-w7h898m3.js +0 -14
  143. package/dist/chunk-xhhj1gvj.js +0 -9
  144. package/dist/chunk-z0ct35ft.js +0 -8
  145. package/dist/errors/utils/index.d.ts +0 -1
  146. package/dist/errors/utils/index.js +0 -16
  147. package/dist/errors/utils/is-nowarajs-error.ts.d.ts +0 -4
  148. package/dist/modules/elysia/crud/crud-schema.d.ts +0 -18
  149. package/dist/modules/elysia/crud/crud.d.ts +0 -38
  150. package/dist/modules/elysia/crud/enums/crud-success-keys.d.ts +0 -10
  151. package/dist/modules/elysia/crud/enums/index.d.ts +0 -1
  152. package/dist/modules/elysia/crud/enums/index.js +0 -7
  153. package/dist/modules/elysia/crud/index.d.ts +0 -2
  154. package/dist/modules/elysia/crud/index.js +0 -153
  155. package/dist/modules/elysia/crud/operations/count.d.ts +0 -258
  156. package/dist/modules/elysia/crud/operations/delete.d.ts +0 -258
  157. package/dist/modules/elysia/crud/operations/deleteOne.d.ts +0 -258
  158. package/dist/modules/elysia/crud/operations/find.d.ts +0 -258
  159. package/dist/modules/elysia/crud/operations/findOne.d.ts +0 -258
  160. package/dist/modules/elysia/crud/operations/index.d.ts +0 -8
  161. package/dist/modules/elysia/crud/operations/index.js +0 -34
  162. package/dist/modules/elysia/crud/operations/insert.d.ts +0 -258
  163. package/dist/modules/elysia/crud/operations/update.d.ts +0 -268
  164. package/dist/modules/elysia/crud/operations/updateOne.d.ts +0 -268
  165. package/dist/modules/elysia/crud/operations/utils/get-db-injection.d.ts +0 -8
  166. package/dist/modules/elysia/crud/types/adaptive-where-clause-schema.d.ts +0 -31
  167. package/dist/modules/elysia/crud/types/count-response-200-schema.d.ts +0 -5
  168. package/dist/modules/elysia/crud/types/crud-operation-base.d.ts +0 -4
  169. package/dist/modules/elysia/crud/types/crud-operation-count.d.ts +0 -14
  170. package/dist/modules/elysia/crud/types/crud-operation-delete-one.d.ts +0 -14
  171. package/dist/modules/elysia/crud/types/crud-operation-delete.d.ts +0 -14
  172. package/dist/modules/elysia/crud/types/crud-operation-find-one.d.ts +0 -14
  173. package/dist/modules/elysia/crud/types/crud-operation-find.d.ts +0 -14
  174. package/dist/modules/elysia/crud/types/crud-operation-insert.d.ts +0 -14
  175. package/dist/modules/elysia/crud/types/crud-operation-update-one.d.ts +0 -16
  176. package/dist/modules/elysia/crud/types/crud-operation-update.d.ts +0 -14
  177. package/dist/modules/elysia/crud/types/crud-operations.d.ts +0 -19
  178. package/dist/modules/elysia/crud/types/crud-options.d.ts +0 -44
  179. package/dist/modules/elysia/crud/types/crud-schema-models-type.d.ts +0 -12
  180. package/dist/modules/elysia/crud/types/crud-schema-operations.d.ts +0 -10
  181. package/dist/modules/elysia/crud/types/crud-schema-options.d.ts +0 -13
  182. package/dist/modules/elysia/crud/types/delete-schema.d.ts +0 -12
  183. package/dist/modules/elysia/crud/types/filter-schema.d.ts +0 -9
  184. package/dist/modules/elysia/crud/types/find-schema.d.ts +0 -16
  185. package/dist/modules/elysia/crud/types/id-param-schema.d.ts +0 -4
  186. package/dist/modules/elysia/crud/types/index.d.ts +0 -29
  187. package/dist/modules/elysia/crud/types/order-schema.d.ts +0 -11
  188. package/dist/modules/elysia/crud/types/properties-schema.d.ts +0 -9
  189. package/dist/modules/elysia/crud/types/response-200-schema.d.ts +0 -11
  190. package/dist/modules/elysia/crud/utils/create-adaptive-where-clause-schema.d.ts +0 -17
  191. package/dist/modules/elysia/crud/utils/create-count-response-200-schema.d.ts +0 -8
  192. package/dist/modules/elysia/crud/utils/create-count-schema.d.ts +0 -12
  193. package/dist/modules/elysia/crud/utils/create-filters-schema.d.ts +0 -14
  194. package/dist/modules/elysia/crud/utils/create-find-schema.d.ts +0 -12
  195. package/dist/modules/elysia/crud/utils/create-id-param-schema.d.ts +0 -2
  196. package/dist/modules/elysia/crud/utils/create-insert-schema.d.ts +0 -8
  197. package/dist/modules/elysia/crud/utils/create-order-schema.d.ts +0 -12
  198. package/dist/modules/elysia/crud/utils/create-properties-schema.d.ts +0 -12
  199. package/dist/modules/elysia/crud/utils/create-q-schema.d.ts +0 -12
  200. package/dist/modules/elysia/crud/utils/create-response-200-schema.d.ts +0 -3
  201. package/dist/modules/elysia/crud/utils/create-selected-fields-schema.d.ts +0 -12
  202. package/dist/modules/elysia/crud/utils/create-update-one-schema.d.ts +0 -3
  203. package/dist/modules/elysia/crud/utils/create-update-schema.d.ts +0 -3
  204. package/dist/modules/elysia/crud/utils/index.d.ts +0 -16
  205. package/dist/modules/elysia/crud/utils/index.js +0 -41
  206. /package/dist/modules/{elysia/crud → schema-builder}/types/index.js +0 -0
  207. /package/dist/modules/{elysia/crud/types/selected-field-schema.d.ts → schema-builder/types/selected-fields-schema.d.ts} +0 -0
  208. /package/dist/{shared → modules/schema-builder}/types/tflatten.d.ts +0 -0
  209. /package/dist/modules/{elysia/crud → schema-builder}/types/update-one-schema.d.ts +0 -0
  210. /package/dist/modules/{elysia/crud → schema-builder}/utils/is-date-from-elysia-typebox.d.ts +0 -0
@@ -1,4 +1,4 @@
1
- import type { KvStore } from '../../../modules/kv-store/types';
1
+ import type { KvStore } from '../../../modules/kv-store/types/kv-store';
2
2
  import { Elysia, type HTTPHeaders, type StatusMap } from 'elysia';
3
3
  import type { RateLimitOptions } from './types/rate-limit-options';
4
4
  /**
@@ -1,10 +1,10 @@
1
1
  // @bun
2
2
  import {
3
3
  JWT_ERROR_KEYS
4
- } from "../../../chunk-9d3zvgp6.js";
4
+ } from "../../../chunk-zn2nm5gg.js";
5
5
  import {
6
6
  PARSE_HUMAN_TIME_TO_SECONDS_ERROR_KEYS
7
- } from "../../../chunk-12qzn7jw.js";
7
+ } from "../../../chunk-dmsev7vs.js";
8
8
  export {
9
9
  PARSE_HUMAN_TIME_TO_SECONDS_ERROR_KEYS,
10
10
  JWT_ERROR_KEYS
@@ -1,5 +1,5 @@
1
1
  export declare const JWT_ERROR_KEYS: {
2
- readonly JWT_EXPIRATION_PASSED: "mrx-core.jwt.error.expiration_passed";
3
- readonly JWT_SECRET_NOT_FOUND: "mrx-core.jwt.error.secret_not_found";
4
- readonly JWT_SIGN_ERROR: "mrx-core.jwt.error.sign_error";
2
+ readonly JWT_EXPIRATION_PASSED: "mrx.mrx-core.jwt.error.expiration_passed";
3
+ readonly JWT_SECRET_NOT_FOUND: "mrx.mrx-core.jwt.error.secret_not_found";
4
+ readonly JWT_SIGN_ERROR: "mrx.mrx-core.jwt.error.sign_error";
5
5
  };
@@ -1,3 +1,3 @@
1
1
  export declare const PARSE_HUMAN_TIME_TO_SECONDS_ERROR_KEYS: {
2
- readonly INVALID_TIME_EXPRESSION: "mrx-core.parse_human_time_to_seconds.error.invalid_time_expression";
2
+ readonly INVALID_TIME_EXPRESSION: "mrx.mrx-core.jwt.parse_human_time_to_seconds.error.invalid_time_expression";
3
3
  };
@@ -1,26 +1,24 @@
1
1
  // @bun
2
2
  import {
3
3
  JWT_ERROR_KEYS
4
- } from "../../chunk-9d3zvgp6.js";
4
+ } from "../../chunk-zn2nm5gg.js";
5
5
  import {
6
6
  parseHumanTimeToSeconds
7
- } from "../../chunk-eeb7yskp.js";
8
- import"../../chunk-12qzn7jw.js";
7
+ } from "../../chunk-awphtyzp.js";
8
+ import"../../chunk-dmsev7vs.js";
9
9
  import {
10
- HttpError
11
- } from "../../chunk-7t524zqh.js";
12
- import"../../chunk-sqts8vyk.js";
13
- import"../../chunk-9cgzhc50.js";
10
+ InternalError
11
+ } from "../../chunk-jz3wd472.js";
14
12
 
15
13
  // source/modules/jwt/jwt.ts
16
14
  import {
17
15
  SignJWT,
18
16
  jwtVerify
19
17
  } from "jose";
20
- var signJWT = (secret, payload, expiration = Math.floor(Date.now() / 1000) + 60 * 15) => {
21
- const exp = expiration instanceof Date ? Math.floor(expiration.getTime() / 1000) : typeof expiration === "number" ? expiration : Math.floor(Date.now() / 1000) + parseHumanTimeToSeconds(expiration);
18
+ var signJWT = (secret, payload, expiration = 60 * 15) => {
19
+ const exp = expiration instanceof Date ? Math.floor(expiration.getTime() / 1000) : typeof expiration === "number" ? Math.floor(Date.now() / 1000) + expiration : Math.floor(Date.now() / 1000) + parseHumanTimeToSeconds(expiration);
22
20
  if (exp <= Math.floor(Date.now() / 1000))
23
- throw new HttpError(JWT_ERROR_KEYS.JWT_EXPIRATION_PASSED, "BAD_REQUEST");
21
+ throw new InternalError(JWT_ERROR_KEYS.JWT_EXPIRATION_PASSED);
24
22
  const finalPayload = {
25
23
  iss: "Core-Issuer",
26
24
  sub: "",
@@ -32,10 +30,10 @@ var signJWT = (secret, payload, expiration = Math.floor(Date.now() / 1000) + 60
32
30
  ...payload
33
31
  };
34
32
  try {
35
- const jwt = new SignJWT(finalPayload).setProtectedHeader({ alg: "HS256", typ: "JWT" }).setIssuer(finalPayload.iss).setSubject(finalPayload.sub).setAudience(finalPayload.aud).setJti(finalPayload.jti).setNotBefore(finalPayload.nbf).setIssuedAt(finalPayload.iat).setExpirationTime(expiration).sign(new TextEncoder().encode(secret));
33
+ const jwt = new SignJWT(finalPayload).setProtectedHeader({ alg: "HS256", typ: "JWT" }).setIssuer(finalPayload.iss).setSubject(finalPayload.sub).setAudience(finalPayload.aud).setJti(finalPayload.jti).setNotBefore(finalPayload.nbf).setIssuedAt(finalPayload.iat).setExpirationTime(exp).sign(new TextEncoder().encode(secret));
36
34
  return jwt;
37
35
  } catch (error) {
38
- throw new HttpError(JWT_ERROR_KEYS.JWT_SIGN_ERROR, "INTERNAL_SERVER_ERROR", error);
36
+ throw new InternalError(JWT_ERROR_KEYS.JWT_SIGN_ERROR, error);
39
37
  }
40
38
  };
41
39
  var verifyJWT = async (token, secret) => {
@@ -1,9 +1,9 @@
1
1
  // @bun
2
2
  import {
3
3
  parseHumanTimeToSeconds
4
- } from "../../../chunk-eeb7yskp.js";
5
- import"../../../chunk-12qzn7jw.js";
6
- import"../../../chunk-9cgzhc50.js";
4
+ } from "../../../chunk-awphtyzp.js";
5
+ import"../../../chunk-dmsev7vs.js";
6
+ import"../../../chunk-jz3wd472.js";
7
7
  export {
8
8
  parseHumanTimeToSeconds
9
9
  };
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @param timeExpression - A string representing a time period (e.g., "2 hours", "30 minutes ago", "+1 day")
5
5
  *
6
- * @throws ({@link BaseError}) - If the time expression is invalid or contains an unknown unit
6
+ * @throws ({@link InternalError}) - If the time expression is invalid or contains an unknown unit
7
7
  *
8
8
  * @returns The time period in seconds (negative for past times)
9
9
  *
@@ -1,10 +1,10 @@
1
1
  // @bun
2
2
  import {
3
3
  KV_STORE_ERROR_KEYS
4
- } from "../../../chunk-xhhj1gvj.js";
4
+ } from "../../../chunk-8pw0syzf.js";
5
5
  import {
6
- BaseError
7
- } from "../../../chunk-9cgzhc50.js";
6
+ InternalError
7
+ } from "../../../chunk-jz3wd472.js";
8
8
 
9
9
  // source/modules/kv-store/bun-redis/bun-redis-store.ts
10
10
  var {RedisClient } = globalThis.Bun;
@@ -14,10 +14,18 @@ class BunRedisStore {
14
14
  this._client = new RedisClient(url, options);
15
15
  }
16
16
  async connect() {
17
- await this._client.connect();
17
+ try {
18
+ await this._client.connect();
19
+ } catch (e) {
20
+ throw new InternalError(KV_STORE_ERROR_KEYS.CONNECTION_FAILED, e);
21
+ }
18
22
  }
19
23
  close() {
20
- this._client.close();
24
+ try {
25
+ this._client.close();
26
+ } catch (e) {
27
+ throw new InternalError(KV_STORE_ERROR_KEYS.CLOSING_CONNECTION_FAILED, e);
28
+ }
21
29
  }
22
30
  async get(key) {
23
31
  const value = await this._client.get(key);
@@ -37,20 +45,20 @@ class BunRedisStore {
37
45
  await this._client.set(key, serialized);
38
46
  }
39
47
  async increment(key, amount) {
40
- let current = Number(await this._client.get(key));
41
- if (current !== null && isNaN(current))
42
- throw new BaseError(KV_STORE_ERROR_KEYS.NOT_INTEGER);
43
- current += amount ?? 1;
44
- await this._client.set(key, current.toString());
45
- return current;
48
+ try {
49
+ const number = await this._client.incrby(key, amount ?? 1);
50
+ return number;
51
+ } catch (e) {
52
+ throw new InternalError(KV_STORE_ERROR_KEYS.NOT_INTEGER, e);
53
+ }
46
54
  }
47
55
  async decrement(key, amount) {
48
- let current = Number(await this._client.get(key));
49
- if (current !== null && isNaN(current))
50
- throw new BaseError(KV_STORE_ERROR_KEYS.NOT_INTEGER);
51
- current -= amount ?? 1;
52
- await this._client.set(key, current.toString());
53
- return current;
56
+ try {
57
+ const number = await this._client.decrby(key, amount ?? 1);
58
+ return number;
59
+ } catch (e) {
60
+ throw new InternalError(KV_STORE_ERROR_KEYS.NOT_INTEGER, e);
61
+ }
54
62
  }
55
63
  async del(key) {
56
64
  const res = await this._client.del(key);
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  KV_STORE_ERROR_KEYS
4
- } from "../../../chunk-xhhj1gvj.js";
4
+ } from "../../../chunk-8pw0syzf.js";
5
5
  export {
6
6
  KV_STORE_ERROR_KEYS
7
7
  };
@@ -1,5 +1,5 @@
1
1
  export declare const KV_STORE_ERROR_KEYS: {
2
- readonly CLOSING_CONNECTION_FAILED: "mrx-core.kv-store.error.closing_connection_failed";
3
- readonly CONNECTION_FAILED: "mrx-core.kv-store.error.connection_failed";
4
- readonly NOT_INTEGER: "mrx-core.kv-store.error.not_integer";
2
+ readonly CLOSING_CONNECTION_FAILED: "mrx.mrx-core.kv-store.error.closing_connection_failed";
3
+ readonly CONNECTION_FAILED: "mrx.mrx-core.kv-store.error.connection_failed";
4
+ readonly NOT_INTEGER: "mrx.mrx-core.kv-store.error.not_integer";
5
5
  };
@@ -1,10 +1,10 @@
1
1
  // @bun
2
2
  import {
3
3
  KV_STORE_ERROR_KEYS
4
- } from "../../../chunk-xhhj1gvj.js";
4
+ } from "../../../chunk-8pw0syzf.js";
5
5
  import {
6
- BaseError
7
- } from "../../../chunk-9cgzhc50.js";
6
+ InternalError
7
+ } from "../../../chunk-jz3wd472.js";
8
8
 
9
9
  // source/modules/kv-store/ioredis/ioredis-store.ts
10
10
  import { Redis } from "ioredis";
@@ -20,14 +20,14 @@ class IoRedisStore {
20
20
  try {
21
21
  await this._client.connect();
22
22
  } catch (e) {
23
- throw new BaseError(KV_STORE_ERROR_KEYS.CONNECTION_FAILED, e);
23
+ throw new InternalError(KV_STORE_ERROR_KEYS.CONNECTION_FAILED, e);
24
24
  }
25
25
  }
26
26
  async close() {
27
27
  try {
28
28
  await this._client.quit();
29
29
  } catch (e) {
30
- throw new BaseError(KV_STORE_ERROR_KEYS.CLOSING_CONNECTION_FAILED, e);
30
+ throw new InternalError(KV_STORE_ERROR_KEYS.CLOSING_CONNECTION_FAILED, e);
31
31
  }
32
32
  }
33
33
  async get(key) {
@@ -48,20 +48,20 @@ class IoRedisStore {
48
48
  await this._client.set(key, serialized);
49
49
  }
50
50
  async increment(key, amount = 1) {
51
- const current = await this._client.get(key);
52
- if (current !== null && isNaN(Number(current)))
53
- throw new BaseError(KV_STORE_ERROR_KEYS.NOT_INTEGER);
54
- if (amount === 1)
55
- return this._client.incr(key);
56
- return this._client.incrby(key, amount);
51
+ try {
52
+ const number = await this._client.incrby(key, amount);
53
+ return number;
54
+ } catch (e) {
55
+ throw new InternalError(KV_STORE_ERROR_KEYS.NOT_INTEGER, e);
56
+ }
57
57
  }
58
58
  async decrement(key, amount = 1) {
59
- const current = await this._client.get(key);
60
- if (current !== null && isNaN(Number(current)))
61
- throw new BaseError(KV_STORE_ERROR_KEYS.NOT_INTEGER);
62
- if (amount === 1)
63
- return this._client.decr(key);
64
- return this._client.decrby(key, amount);
59
+ try {
60
+ const number = await this._client.decrby(key, amount);
61
+ return number;
62
+ } catch (e) {
63
+ throw new InternalError(KV_STORE_ERROR_KEYS.NOT_INTEGER, e);
64
+ }
65
65
  }
66
66
  async del(key) {
67
67
  const result = await this._client.del(key);
@@ -1,103 +1,9 @@
1
1
  // @bun
2
2
  import {
3
- KV_STORE_ERROR_KEYS
4
- } from "../../../chunk-xhhj1gvj.js";
5
- import {
6
- BaseError
7
- } from "../../../chunk-9cgzhc50.js";
8
-
9
- // source/modules/kv-store/memory/memory-store.ts
10
- class MemoryStore {
11
- _store = new Map;
12
- _cleanupInterval;
13
- _cleanupTimer = null;
14
- constructor(cleanupIntervalMs) {
15
- this._cleanupInterval = cleanupIntervalMs ?? 300000;
16
- this._startCleanup();
17
- }
18
- get(key) {
19
- const entry = this._store.get(key);
20
- if (!entry)
21
- return null;
22
- const now = Date.now();
23
- if (now > entry.expiresAt && entry.expiresAt !== -1) {
24
- this._store.delete(key);
25
- return null;
26
- }
27
- return entry.value;
28
- }
29
- set(key, value, ttlSec) {
30
- const expiresAt = ttlSec ? Date.now() + ttlSec * 1000 : -1;
31
- this._store.set(key, { value, expiresAt });
32
- }
33
- increment(key, amount = 1) {
34
- const current = this.get(key);
35
- const entry = this._store.get(key);
36
- if (current !== null && typeof current !== "number")
37
- throw new BaseError(KV_STORE_ERROR_KEYS.NOT_INTEGER);
38
- const currentValue = current ?? 0;
39
- const newValue = currentValue + amount;
40
- const expiresAt = entry ? entry.expiresAt : -1;
41
- this._store.set(key, { value: newValue, expiresAt });
42
- return newValue;
43
- }
44
- decrement(key, amount = 1) {
45
- const current = this.get(key);
46
- const entry = this._store.get(key);
47
- if (current !== null && typeof current !== "number")
48
- throw new BaseError(KV_STORE_ERROR_KEYS.NOT_INTEGER);
49
- const currentValue = current ?? 0;
50
- const newValue = currentValue - amount;
51
- const expiresAt = entry ? entry.expiresAt : -1;
52
- this._store.set(key, { value: newValue, expiresAt });
53
- return newValue;
54
- }
55
- del(key) {
56
- return this._store.delete(key);
57
- }
58
- expire(key, ttlSec) {
59
- const entry = this._store.get(key);
60
- if (!entry)
61
- return false;
62
- entry.expiresAt = Date.now() + ttlSec * 1000;
63
- return true;
64
- }
65
- ttl(key) {
66
- const entry = this._store.get(key);
67
- if (!entry)
68
- return -1;
69
- if (entry.expiresAt === -1)
70
- return -1;
71
- const remaining = entry.expiresAt - Date.now();
72
- return remaining > 0 ? Math.ceil(remaining / 1000) : -1;
73
- }
74
- clean() {
75
- const sizeBefore = this._store.size;
76
- this._store.clear();
77
- return sizeBefore;
78
- }
79
- _startCleanup() {
80
- if (this._cleanupTimer)
81
- return;
82
- this._cleanupTimer = setInterval(() => {
83
- this._removeExpiredEntries();
84
- }, this._cleanupInterval);
85
- }
86
- _removeExpiredEntries() {
87
- const now = Date.now();
88
- for (const [key, entry] of this._store.entries())
89
- if (entry.expiresAt !== -1 && now > entry.expiresAt)
90
- this._store.delete(key);
91
- }
92
- destroy() {
93
- if (this._cleanupTimer) {
94
- clearInterval(this._cleanupTimer);
95
- this._cleanupTimer = null;
96
- }
97
- this._store.clear();
98
- }
99
- }
3
+ MemoryStore
4
+ } from "../../../chunk-j7dyc5ks.js";
5
+ import"../../../chunk-8pw0syzf.js";
6
+ import"../../../chunk-jz3wd472.js";
100
7
  export {
101
8
  MemoryStore
102
9
  };
103
- export { MemoryStore };
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  LOGGER_ERROR_KEYS
4
- } from "../../../chunk-rz5p4j3p.js";
4
+ } from "../../../chunk-6hs00zfd.js";
5
5
  export {
6
6
  LOGGER_ERROR_KEYS
7
7
  };
@@ -1,9 +1,9 @@
1
1
  export declare const LOGGER_ERROR_KEYS: {
2
- readonly BEFORE_EXIT_CLOSE_ERROR: "mrx-core.logger.error.before_exit_close_error";
3
- readonly BEFORE_EXIT_FLUSH_ERROR: "mrx-core.logger.error.before_exit_flush_error";
4
- readonly NO_SINKS_PROVIDED: "mrx-core.logger.error.no_sinks_provided";
5
- readonly REGISTER_SINK_ERROR: "mrx-core.logger.error.register_sink_error";
6
- readonly SINK_ALREADY_ADDED: "mrx-core.logger.error.sink_already_added";
7
- readonly SINK_CLOSE_ERROR: "mrx-core.logger.error.sink_close_error";
8
- readonly SINK_LOG_ERROR: "mrx-core.logger.error.sink_log_error";
2
+ readonly BEFORE_EXIT_CLOSE_ERROR: "mrx.mrx-core.logger.error.before_exit_close_error";
3
+ readonly BEFORE_EXIT_FLUSH_ERROR: "mrx.mrx-core.logger.error.before_exit_flush_error";
4
+ readonly NO_SINKS_PROVIDED: "mrx.mrx-core.logger.error.no_sinks_provided";
5
+ readonly REGISTER_SINK_ERROR: "mrx.mrx-core.logger.error.register_sink_error";
6
+ readonly SINK_ALREADY_ADDED: "mrx.mrx-core.logger.error.sink_already_added";
7
+ readonly SINK_CLOSE_ERROR: "mrx.mrx-core.logger.error.sink_close_error";
8
+ readonly SINK_LOG_ERROR: "mrx.mrx-core.logger.error.sink_log_error";
9
9
  };
@@ -1,16 +1,16 @@
1
- import type { BaseError } from '../../../errors/base-error';
1
+ import type { InternalError } from '../../../errors/internal-error';
2
2
  export interface LoggerEvent {
3
- onBeforeExitError: [BaseError<{
3
+ onBeforeExitError: [InternalError<{
4
4
  error: Error;
5
5
  }>];
6
6
  registerSinkError: [
7
- BaseError<{
7
+ InternalError<{
8
8
  sinkName: string;
9
9
  error: Error;
10
10
  }>
11
11
  ];
12
12
  sinkError: [
13
- BaseError<{
13
+ InternalError<{
14
14
  sinkName: string;
15
15
  object?: unknown;
16
16
  error: Error;
@@ -1,13 +1,88 @@
1
1
  // @bun
2
+ import"../typed-event-emitter/index.js";
2
3
  import {
3
4
  LOGGER_ERROR_KEYS
4
- } from "../../chunk-rz5p4j3p.js";
5
+ } from "../../chunk-6hs00zfd.js";
5
6
  import {
6
7
  TypedEventEmitter
7
8
  } from "../../chunk-mvrxngm7.js";
8
9
  import {
9
- BaseError
10
- } from "../../chunk-9cgzhc50.js";
10
+ InternalError
11
+ } from "../../chunk-jz3wd472.js";
12
+
13
+ // source/modules/logger/worker-logger.ts
14
+ var workerFunction = () => {
15
+ const sinks = {};
16
+ const self = globalThis;
17
+ const processLogEntry = async (log) => {
18
+ await Promise.all(log.sinkNames.map(async (sinkName) => {
19
+ const sink = sinks[sinkName];
20
+ if (!sink)
21
+ return;
22
+ try {
23
+ await sink.log(log.level, log.timestamp, log.object);
24
+ } catch (error) {
25
+ self.postMessage({
26
+ type: "SINK_LOG_ERROR",
27
+ sinkName,
28
+ error,
29
+ object: log.object
30
+ });
31
+ }
32
+ }));
33
+ };
34
+ self.addEventListener("message", async (event) => {
35
+ switch (event.data.type) {
36
+ case "REGISTER_SINK": {
37
+ const {
38
+ sinkName,
39
+ sinkClassName,
40
+ sinkClassString,
41
+ sinkArgs
42
+ } = event.data;
43
+ try {
44
+ const factory = new Function("sinkArgs", `
45
+ ${sinkClassString}
46
+ return new ${sinkClassName}(...sinkArgs);
47
+ `);
48
+ sinks[sinkName] = factory(sinkArgs);
49
+ } catch (error) {
50
+ self.postMessage({
51
+ type: "REGISTER_SINK_ERROR",
52
+ sinkName,
53
+ error
54
+ });
55
+ }
56
+ break;
57
+ }
58
+ case "LOG_BATCH": {
59
+ const { logs } = event.data;
60
+ try {
61
+ for (const log of logs)
62
+ await processLogEntry(log);
63
+ } finally {
64
+ self.postMessage({ type: "BATCH_COMPLETE" });
65
+ }
66
+ break;
67
+ }
68
+ case "CLOSE": {
69
+ await Promise.all(Object.entries(sinks).map(async ([name, sink]) => {
70
+ try {
71
+ await sink.close?.();
72
+ } catch (error) {
73
+ self.postMessage({
74
+ type: "SINK_CLOSE_ERROR",
75
+ sinkName: name,
76
+ error
77
+ });
78
+ }
79
+ }));
80
+ self.postMessage({ type: "CLOSE_COMPLETE" });
81
+ break;
82
+ }
83
+ }
84
+ });
85
+ };
11
86
 
12
87
  // source/modules/logger/logger.ts
13
88
  class Logger extends TypedEventEmitter {
@@ -51,14 +126,14 @@ class Logger extends TypedEventEmitter {
51
126
  this._batchTimeout = batchTimeout;
52
127
  this._autoEnd = autoEnd;
53
128
  this._flushOnBeforeExit = flushOnBeforeExit;
54
- this._worker = new Worker(new URL("worker-logger.ts", import.meta.url).href, { type: "module" });
129
+ this._worker = new Worker(URL.createObjectURL(new Blob([`(${workerFunction.toString()})()`], { type: "application/javascript" })), { type: "module" });
55
130
  this._setupWorkerMessages();
56
131
  if (this._autoEnd)
57
132
  this._setupAutoEnd();
58
133
  }
59
134
  registerSink(sinkName, sinkConstructor, ...sinkArgs) {
60
135
  if (this._sinks[sinkName])
61
- throw new Error(LOGGER_ERROR_KEYS.SINK_ALREADY_ADDED);
136
+ throw new InternalError(LOGGER_ERROR_KEYS.SINK_ALREADY_ADDED);
62
137
  this._worker.postMessage({
63
138
  type: "REGISTER_SINK",
64
139
  sinkName,
@@ -70,19 +145,19 @@ class Logger extends TypedEventEmitter {
70
145
  this._sinkKeys.push(sinkName);
71
146
  return this;
72
147
  }
73
- error(object, sinkNames) {
148
+ error(object, sinkNames = this._sinkKeys) {
74
149
  this._enqueue("ERROR", object, sinkNames);
75
150
  }
76
- warn(object, sinkNames) {
151
+ warn(object, sinkNames = this._sinkKeys) {
77
152
  this._enqueue("WARN", object, sinkNames);
78
153
  }
79
- info(object, sinkNames) {
154
+ info(object, sinkNames = this._sinkKeys) {
80
155
  this._enqueue("INFO", object, sinkNames);
81
156
  }
82
- debug(object, sinkNames) {
157
+ debug(object, sinkNames = this._sinkKeys) {
83
158
  this._enqueue("DEBUG", object, sinkNames);
84
159
  }
85
- log(object, sinkNames = Object.keys(this._sinks)) {
160
+ log(object, sinkNames = this._sinkKeys) {
86
161
  this._enqueue("LOG", object, sinkNames);
87
162
  }
88
163
  async flush() {
@@ -105,7 +180,7 @@ class Logger extends TypedEventEmitter {
105
180
  }
106
181
  _enqueue(level, object, sinkNames) {
107
182
  if (this._sinkKeys.length === 0)
108
- throw new BaseError(LOGGER_ERROR_KEYS.NO_SINKS_PROVIDED, { level, object });
183
+ throw new InternalError(LOGGER_ERROR_KEYS.NO_SINKS_PROVIDED, { level, object });
109
184
  if (this._pendingLogs.length >= this._maxPendingLogs)
110
185
  return;
111
186
  this._pendingLogs.push({
@@ -168,14 +243,14 @@ class Logger extends TypedEventEmitter {
168
243
  }
169
244
  break;
170
245
  case "SINK_LOG_ERROR":
171
- this.emit("sinkError", new BaseError(LOGGER_ERROR_KEYS.SINK_LOG_ERROR, event.data));
246
+ this.emit("sinkError", new InternalError(LOGGER_ERROR_KEYS.SINK_LOG_ERROR, event.data));
172
247
  this._releaseBatch();
173
248
  break;
174
249
  case "SINK_CLOSE_ERROR":
175
- this.emit("sinkError", new BaseError(LOGGER_ERROR_KEYS.SINK_CLOSE_ERROR, event.data));
250
+ this.emit("sinkError", new InternalError(LOGGER_ERROR_KEYS.SINK_CLOSE_ERROR, event.data));
176
251
  break;
177
252
  case "REGISTER_SINK_ERROR":
178
- this.emit("registerSinkError", new BaseError(LOGGER_ERROR_KEYS.REGISTER_SINK_ERROR, event.data));
253
+ this.emit("registerSinkError", new InternalError(LOGGER_ERROR_KEYS.REGISTER_SINK_ERROR, event.data));
179
254
  break;
180
255
  case "CLOSE_COMPLETE":
181
256
  this._worker.terminate();
@@ -195,15 +270,11 @@ class Logger extends TypedEventEmitter {
195
270
  _handleBeforeExit = () => {
196
271
  if (this._flushOnBeforeExit)
197
272
  this.flush().then(() => this.close()).catch((error) => {
198
- this.emit("onBeforeExitError", new BaseError(LOGGER_ERROR_KEYS.BEFORE_EXIT_FLUSH_ERROR, {
199
- error: error instanceof Error ? error : new Error("Unknown error during logger flush on beforeExit")
200
- }));
273
+ this.emit("onBeforeExitError", new InternalError(LOGGER_ERROR_KEYS.BEFORE_EXIT_FLUSH_ERROR, { error }));
201
274
  });
202
275
  else
203
276
  this.close().catch((error) => {
204
- this.emit("onBeforeExitError", new BaseError(LOGGER_ERROR_KEYS.BEFORE_EXIT_CLOSE_ERROR, {
205
- error: error instanceof Error ? error : new Error("Unknown error during logger close on beforeExit")
206
- }));
277
+ this.emit("onBeforeExitError", new InternalError(LOGGER_ERROR_KEYS.BEFORE_EXIT_CLOSE_ERROR, { error }));
207
278
  });
208
279
  };
209
280
  }
@@ -1,4 +1,4 @@
1
- import { TypedEventEmitter } from '../../modules/typed-event-emitter/typed-event-emitter';
1
+ import { TypedEventEmitter } from '../../modules/typed-event-emitter';
2
2
  import type { LoggerEvent } from './events/logger-events';
3
3
  import type { LoggerOptions } from './types/logger-options';
4
4
  import type { LoggerSink } from './types/logger-sink';
@@ -104,7 +104,7 @@ export declare class Logger<TSinks extends SinkMap = {}> extends TypedEventEmitt
104
104
  * Logs a message at the WARN level to the specified sinks.
105
105
  *
106
106
  * @param object - The log message object
107
- * @param sinkNames - Optionnal array of sink names to log to; logs to all sinks if omitted
107
+ * @param sinkNames - Optional array of sink names to log to; logs to all sinks if omitted
108
108
  */
109
109
  warn<SNames extends (keyof TSinks)[] = (keyof TSinks)[]>(object: SinkBodiesIntersection<TSinks, SNames[number]>, sinkNames?: SNames): void;
110
110
  /**
@@ -4,5 +4,5 @@ import type { LoggerSink } from '../../../modules/logger/types/logger-sink';
4
4
  * ConsoleLoggerSink implements LoggerSink to provide logging functionality to the console.
5
5
  */
6
6
  export declare class ConsoleLoggerSink<TLogObject = unknown> implements LoggerSink<TLogObject> {
7
- log(level: LogLevels, timestamp: number, object: TLogObject): Promise<void>;
7
+ log(level: LogLevels, timestamp: number, object: TLogObject): void;
8
8
  }
@@ -1,3 +1,3 @@
1
1
  export declare const FILE_LOGGER_ERROR_KEYS: {
2
- readonly FAILED_TO_CLOSE_STREAM: "mrx-core.file_logger.error.failed_to_close_stream";
2
+ readonly FAILED_TO_CLOSE_STREAM: "nowarajs.logger.file_logger.error.failed_to_close_stream";
3
3
  };
@@ -12,9 +12,9 @@ export interface FileLoggerConfig {
12
12
  bufferSize?: number;
13
13
  }
14
14
  /**
15
- * FileLoggerSink implements LoggerSink to provide logging functionality to the file system.
16
- * Uses a WriteStream for efficient buffered writes (like Pino's sonic-boom).
17
- */
15
+ * FileLoggerSink implements LoggerSink to provide logging functionality to the file system.
16
+ * Uses a WriteStream for efficient buffered writes (like Pino's sonic-boom).
17
+ */
18
18
  export declare class FileLoggerSink<TLogObject = unknown> implements LoggerSink<TLogObject> {
19
19
  readonly config: FileLoggerConfig;
20
20
  private readonly _stream;