@cyberskill/shared 3.12.0 → 3.14.0

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 (254) hide show
  1. package/dist/config/commitlint/index.d.ts +5 -1
  2. package/dist/{src/config → config}/config.type.d.ts +1 -1
  3. package/dist/{src/config → config}/config.util.d.ts +1 -1
  4. package/dist/{src/config → config}/env/env.util.d.ts +5 -0
  5. package/dist/config/env/env.util.js +20 -16
  6. package/dist/config/env/env.util.js.map +1 -1
  7. package/dist/config/env/index.d.ts +3 -1
  8. package/dist/config/env/index.js +2 -2
  9. package/dist/config/eslint/index.d.ts +1198 -1
  10. package/dist/config/graphql-codegen/index.d.ts +2 -1
  11. package/dist/config/index.d.ts +2 -1
  12. package/dist/config/lint-staged/index.d.ts +5 -1
  13. package/dist/config/storybook/index.d.ts +2 -1
  14. package/dist/config/vitest/index.d.ts +3 -1
  15. package/dist/config/vitest/vitest.e2e.d.ts +20 -1
  16. package/dist/config/vitest/vitest.e2e.js +4 -4
  17. package/dist/config/vitest/vitest.e2e.js.map +1 -1
  18. package/dist/config/vitest/vitest.unit.d.ts +22 -1
  19. package/dist/config/vitest/vitest.unit.js +5 -5
  20. package/dist/config/vitest/vitest.unit.js.map +1 -1
  21. package/dist/config/vitest/vitest.unit.setup.js +10 -0
  22. package/dist/config/vitest/vitest.unit.setup.js.map +1 -0
  23. package/dist/constant/index.d.ts +5 -1
  24. package/dist/node/apollo-server/apollo-server.type.d.ts +20 -0
  25. package/dist/{src/node → node}/apollo-server/apollo-server.util.d.ts +1 -0
  26. package/dist/node/apollo-server/apollo-server.util.js +40 -16
  27. package/dist/node/apollo-server/apollo-server.util.js.map +1 -1
  28. package/dist/node/apollo-server/index.d.ts +2 -1
  29. package/dist/node/cli/index.d.ts +2 -1
  30. package/dist/node/cli/index.js +26 -28
  31. package/dist/node/cli/index.js.map +1 -1
  32. package/dist/{src/node → node}/command/command.util.d.ts +5 -0
  33. package/dist/node/command/command.util.js +49 -48
  34. package/dist/node/command/command.util.js.map +1 -1
  35. package/dist/node/command/index.d.ts +2 -1
  36. package/dist/node/command/index.js +2 -2
  37. package/dist/{src/node → node}/express/express.type.d.ts +11 -0
  38. package/dist/{src/node → node}/express/express.util.d.ts +34 -6
  39. package/dist/node/express/express.util.js +81 -56
  40. package/dist/node/express/express.util.js.map +1 -1
  41. package/dist/node/express/index.d.ts +2 -1
  42. package/dist/node/express/index.js +2 -2
  43. package/dist/node/fs/index.d.ts +2 -1
  44. package/dist/node/log/index.d.ts +2 -1
  45. package/dist/node/log/log.type.d.ts +46 -0
  46. package/dist/node/log/log.type.js.map +1 -1
  47. package/dist/{src/node → node}/log/log.util.d.ts +1 -1
  48. package/dist/node/log/log.util.js +25 -11
  49. package/dist/node/log/log.util.js.map +1 -1
  50. package/dist/node/mongo/index.d.ts +7 -1
  51. package/dist/node/mongo/index.js +7 -8
  52. package/dist/{src/node → node}/mongo/mongo.constant.d.ts +5 -0
  53. package/dist/node/mongo/mongo.constant.js +2 -2
  54. package/dist/node/mongo/mongo.constant.js.map +1 -1
  55. package/dist/{src/node → node}/mongo/mongo.controller.helpers.d.ts +1 -1
  56. package/dist/{src/node → node}/mongo/mongo.controller.mongoose.d.ts +4 -1
  57. package/dist/node/mongo/mongo.controller.mongoose.js +41 -55
  58. package/dist/node/mongo/mongo.controller.mongoose.js.map +1 -1
  59. package/dist/{src/node → node}/mongo/mongo.controller.native.d.ts +30 -3
  60. package/dist/node/mongo/mongo.controller.native.js +31 -14
  61. package/dist/node/mongo/mongo.controller.native.js.map +1 -1
  62. package/dist/{src/node → node}/mongo/mongo.controller.type.d.ts +1 -1
  63. package/dist/{src/node → node}/mongo/mongo.type.d.ts +3 -1
  64. package/dist/{src/node → node}/mongo/mongo.util.d.ts +1 -0
  65. package/dist/node/mongo/mongo.util.js +38 -17
  66. package/dist/node/mongo/mongo.util.js.map +1 -1
  67. package/dist/node/package/index.d.ts +2 -1
  68. package/dist/{src/node → node}/package/package.util.d.ts +1 -1
  69. package/dist/node/package/package.util.js +47 -47
  70. package/dist/node/path/index.d.ts +2 -1
  71. package/dist/node/path/index.js +2 -2
  72. package/dist/{src/node → node}/path/path.constant.d.ts +4 -0
  73. package/dist/node/path/path.constant.js +75 -72
  74. package/dist/node/path/path.constant.js.map +1 -1
  75. package/dist/node/storage/index.d.ts +3 -1
  76. package/dist/{src/node → node}/storage/storage.util.d.ts +50 -1
  77. package/dist/node/storage/storage.util.js +79 -54
  78. package/dist/node/storage/storage.util.js.map +1 -1
  79. package/dist/node/upload/index.d.ts +3 -1
  80. package/dist/{src/node → node}/upload/upload.type.d.ts +2 -0
  81. package/dist/node/upload/upload.type.js.map +1 -1
  82. package/dist/{src/node → node}/upload/upload.util.d.ts +2 -1
  83. package/dist/node/upload/upload.util.js +62 -52
  84. package/dist/node/upload/upload.util.js.map +1 -1
  85. package/dist/node/ws/index.d.ts +2 -1
  86. package/dist/{src/node → node}/ws/ws.util.d.ts +7 -0
  87. package/dist/node/ws/ws.util.js +20 -19
  88. package/dist/node/ws/ws.util.js.map +1 -1
  89. package/dist/react/apollo-client/apollo-client.component.js.map +1 -1
  90. package/dist/{src/react → react}/apollo-client/apollo-client.type.d.ts +3 -1
  91. package/dist/react/apollo-client/apollo-client.util.js +6 -6
  92. package/dist/react/apollo-client/apollo-client.util.js.map +1 -1
  93. package/dist/react/apollo-client/index.d.ts +9 -1
  94. package/dist/react/apollo-client/links/index.d.ts +1 -1
  95. package/dist/react/apollo-client-nextjs/apollo-client-nextjs.rsc.d.ts +16 -1
  96. package/dist/react/apollo-client-nextjs/index.d.ts +2 -1
  97. package/dist/react/apollo-error/apollo-error.component.js +1 -1
  98. package/dist/react/apollo-error/apollo-error.component.js.map +1 -1
  99. package/dist/react/apollo-error/apollo-error.util.js.map +1 -1
  100. package/dist/react/apollo-error/index.d.ts +6 -1
  101. package/dist/react/i18next/i18next.server.d.ts +17 -0
  102. package/dist/react/i18next/i18next.server.js +9 -0
  103. package/dist/react/i18next/i18next.server.js.map +1 -0
  104. package/dist/react/i18next/index.d.ts +2 -1
  105. package/dist/react/loading/index.d.ts +5 -1
  106. package/dist/{src/react → react}/loading/loading.provider.d.ts +1 -1
  107. package/dist/react/log/index.d.ts +2 -1
  108. package/dist/react/log/log.type.d.ts +1 -0
  109. package/dist/{src/react → react}/log/log.util.d.ts +1 -1
  110. package/dist/react/next-intl/index.d.ts +6 -1
  111. package/dist/{src/react → react}/next-intl/next-intl.hoc.d.ts +5 -9
  112. package/dist/react/next-intl/next-intl.hoc.js +14 -10
  113. package/dist/react/next-intl/next-intl.hoc.js.map +1 -1
  114. package/dist/react/next-intl/next-intl.server.d.ts +10 -0
  115. package/dist/react/next-intl/next-intl.server.js +7 -0
  116. package/dist/react/next-intl/next-intl.server.js.map +1 -0
  117. package/dist/{src/react → react}/next-intl/next-intl.type.d.ts +1 -1
  118. package/dist/react/storage/index.d.ts +2 -1
  119. package/dist/{src/react → react}/storage/storage.hook.d.ts +1 -1
  120. package/dist/{src/react → react}/storage/storage.util.d.ts +34 -1
  121. package/dist/react/storage/storage.util.js +30 -5
  122. package/dist/react/storage/storage.util.js.map +1 -1
  123. package/dist/react/toast/index.d.ts +1 -1
  124. package/dist/react/userback/index.d.ts +2 -1
  125. package/dist/react/userback/userback.component.js.map +1 -1
  126. package/dist/{src/typescript → typescript}/common.type.d.ts +4 -0
  127. package/dist/typescript/common.type.js +2 -2
  128. package/dist/typescript/common.type.js.map +1 -1
  129. package/dist/typescript/index.d.ts +5 -1
  130. package/dist/typescript/index.js +2 -2
  131. package/dist/util/common/index.d.ts +5 -1
  132. package/dist/util/index.d.ts +9 -1
  133. package/dist/util/log/index.d.ts +2 -1
  134. package/dist/{src/util → util}/log/log.util.d.ts +1 -1
  135. package/dist/util/object/index.d.ts +4 -1
  136. package/dist/util/object/object.util.js +29 -18
  137. package/dist/util/object/object.util.js.map +1 -1
  138. package/dist/util/serializer/index.d.ts +2 -1
  139. package/dist/{src/util → util}/serializer/serializer.util.d.ts +8 -0
  140. package/dist/util/serializer/serializer.util.js +51 -64
  141. package/dist/util/serializer/serializer.util.js.map +1 -1
  142. package/dist/util/storage/storage-envelope.d.ts +25 -0
  143. package/dist/util/storage/storage-envelope.js +18 -0
  144. package/dist/util/storage/storage-envelope.js.map +1 -0
  145. package/dist/util/string/index.d.ts +5 -1
  146. package/dist/util/validate/index.d.ts +4 -1
  147. package/package.json +33 -12
  148. package/dist/node/mongo/mongo.type.js +0 -8
  149. package/dist/node/mongo/mongo.type.js.map +0 -1
  150. package/dist/node_modules/.pnpm/vitest@4.1.2_@types_node@25.5.0_jsdom@29.0.1_@noble_hashes@1.8.0__vite@8.0.3_@types_nod_0827261ede788764a5d99ac6bdf44bde/node_modules/vitest/dist/config.js +0 -8
  151. package/dist/node_modules/.pnpm/vitest@4.1.2_@types_node@25.5.0_jsdom@29.0.1_@noble_hashes@1.8.0__vite@8.0.3_@types_nod_0827261ede788764a5d99ac6bdf44bde/node_modules/vitest/dist/config.js.map +0 -1
  152. package/dist/src/config/commitlint/index.d.ts +0 -5
  153. package/dist/src/config/env/index.d.ts +0 -3
  154. package/dist/src/config/eslint/index.d.ts +0 -1198
  155. package/dist/src/config/graphql-codegen/index.d.ts +0 -2
  156. package/dist/src/config/index.d.ts +0 -2
  157. package/dist/src/config/lint-staged/index.d.ts +0 -5
  158. package/dist/src/config/storybook/index.d.ts +0 -2
  159. package/dist/src/config/vitest/index.d.ts +0 -3
  160. package/dist/src/config/vitest/vitest.e2e.d.ts +0 -20
  161. package/dist/src/config/vitest/vitest.unit.d.ts +0 -22
  162. package/dist/src/constant/index.d.ts +0 -5
  163. package/dist/src/node/apollo-server/apollo-server.type.d.ts +0 -8
  164. package/dist/src/node/apollo-server/index.d.ts +0 -2
  165. package/dist/src/node/cli/index.d.ts +0 -2
  166. package/dist/src/node/command/index.d.ts +0 -2
  167. package/dist/src/node/express/index.d.ts +0 -2
  168. package/dist/src/node/fs/index.d.ts +0 -2
  169. package/dist/src/node/log/index.d.ts +0 -2
  170. package/dist/src/node/log/log.type.d.ts +0 -29
  171. package/dist/src/node/mongo/index.d.ts +0 -6
  172. package/dist/src/node/package/index.d.ts +0 -2
  173. package/dist/src/node/path/index.d.ts +0 -2
  174. package/dist/src/node/storage/index.d.ts +0 -3
  175. package/dist/src/node/upload/index.d.ts +0 -3
  176. package/dist/src/node/ws/index.d.ts +0 -2
  177. package/dist/src/react/apollo-client/index.d.ts +0 -9
  178. package/dist/src/react/apollo-client/links/index.d.ts +0 -1
  179. package/dist/src/react/apollo-client-nextjs/apollo-client-nextjs.rsc.d.ts +0 -16
  180. package/dist/src/react/apollo-client-nextjs/index.d.ts +0 -2
  181. package/dist/src/react/apollo-error/index.d.ts +0 -6
  182. package/dist/src/react/i18next/index.d.ts +0 -2
  183. package/dist/src/react/loading/index.d.ts +0 -5
  184. package/dist/src/react/log/index.d.ts +0 -2
  185. package/dist/src/react/log/log.type.d.ts +0 -1
  186. package/dist/src/react/next-intl/index.d.ts +0 -6
  187. package/dist/src/react/storage/index.d.ts +0 -2
  188. package/dist/src/react/toast/index.d.ts +0 -1
  189. package/dist/src/react/userback/index.d.ts +0 -2
  190. package/dist/src/typescript/index.d.ts +0 -5
  191. package/dist/src/util/common/index.d.ts +0 -5
  192. package/dist/src/util/index.d.ts +0 -9
  193. package/dist/src/util/log/index.d.ts +0 -2
  194. package/dist/src/util/object/index.d.ts +0 -4
  195. package/dist/src/util/serializer/index.d.ts +0 -2
  196. package/dist/src/util/string/index.d.ts +0 -5
  197. package/dist/src/util/validate/index.d.ts +0 -4
  198. /package/dist/{src/config → config}/env/env.constant.d.ts +0 -0
  199. /package/dist/{src/config → config}/env/env.type.d.ts +0 -0
  200. /package/dist/{src/config → config}/graphql-codegen/graphql-codegen.type.d.ts +0 -0
  201. /package/dist/{src/config → config}/graphql-codegen/graphql-codegen.util.d.ts +0 -0
  202. /package/dist/{src/config → config}/storybook/storybook.main.d.ts +0 -0
  203. /package/dist/{src/config → config}/storybook/storybook.preview.d.ts +0 -0
  204. /package/dist/{src/config → config}/vitest/vitest.unit.setup.d.ts +0 -0
  205. /package/dist/{src/constant → constant}/common.d.ts +0 -0
  206. /package/dist/{src/constant → constant}/response-status.d.ts +0 -0
  207. /package/dist/{src/node → node}/command/command.type.d.ts +0 -0
  208. /package/dist/{src/node → node}/fs/fs.type.d.ts +0 -0
  209. /package/dist/{src/node → node}/fs/fs.util.d.ts +0 -0
  210. /package/dist/{src/node → node}/mongo/mongo.controller.d.ts +0 -0
  211. /package/dist/{src/node → node}/mongo/mongo.dynamic-populate.d.ts +0 -0
  212. /package/dist/{src/node → node}/mongo/mongo.internal-types.d.ts +0 -0
  213. /package/dist/{src/node → node}/mongo/mongo.populate.d.ts +0 -0
  214. /package/dist/{src/node → node}/package/package.type.d.ts +0 -0
  215. /package/dist/{src/node → node}/path/path.util.d.ts +0 -0
  216. /package/dist/{src/node → node}/storage/storage.constant.d.ts +0 -0
  217. /package/dist/{src/node → node}/storage/storage.type.d.ts +0 -0
  218. /package/dist/{src/node → node}/upload/upload.constant.d.ts +0 -0
  219. /package/dist/{src/node → node}/ws/ws.type.d.ts +0 -0
  220. /package/dist/{src/react → react}/apollo-client/apollo-client.component.d.ts +0 -0
  221. /package/dist/{src/react → react}/apollo-client/apollo-client.constant.d.ts +0 -0
  222. /package/dist/{src/react → react}/apollo-client/apollo-client.context.d.ts +0 -0
  223. /package/dist/{src/react → react}/apollo-client/apollo-client.hook.d.ts +0 -0
  224. /package/dist/{src/react → react}/apollo-client/apollo-client.util.d.ts +0 -0
  225. /package/dist/{src/react → react}/apollo-client/links/upload.d.ts +0 -0
  226. /package/dist/{src/react → react}/apollo-client-nextjs/apollo-client-nextjs.component.d.ts +0 -0
  227. /package/dist/{src/react → react}/apollo-client-nextjs/apollo-client-nextjs.util.d.ts +0 -0
  228. /package/dist/{src/react → react}/apollo-error/apollo-error.component.d.ts +0 -0
  229. /package/dist/{src/react → react}/apollo-error/apollo-error.context.d.ts +0 -0
  230. /package/dist/{src/react → react}/apollo-error/apollo-error.hook.d.ts +0 -0
  231. /package/dist/{src/react → react}/apollo-error/apollo-error.provider.d.ts +0 -0
  232. /package/dist/{src/react → react}/apollo-error/apollo-error.type.d.ts +0 -0
  233. /package/dist/{src/react → react}/apollo-error/apollo-error.util.d.ts +0 -0
  234. /package/dist/{src/react → react}/i18next/i18next.hook.d.ts +0 -0
  235. /package/dist/{src/react → react}/i18next/i18next.util.d.ts +0 -0
  236. /package/dist/{src/react → react}/loading/loading.component.d.ts +0 -0
  237. /package/dist/{src/react → react}/loading/loading.context.d.ts +0 -0
  238. /package/dist/{src/react → react}/loading/loading.hook.d.ts +0 -0
  239. /package/dist/{src/react → react}/loading/loading.type.d.ts +0 -0
  240. /package/dist/{src/react → react}/next-intl/next-intl.constant.d.ts +0 -0
  241. /package/dist/{src/react → react}/next-intl/next-intl.context.d.ts +0 -0
  242. /package/dist/{src/react → react}/next-intl/next-intl.hook.d.ts +0 -0
  243. /package/dist/{src/react → react}/next-intl/next-intl.provider.d.ts +0 -0
  244. /package/dist/{src/react → react}/userback/userback.component.d.ts +0 -0
  245. /package/dist/{src/react → react}/userback/userback.type.d.ts +0 -0
  246. /package/dist/{src/typescript → typescript}/react.type.d.ts +0 -0
  247. /package/dist/{src/util → util}/common/common.type.d.ts +0 -0
  248. /package/dist/{src/util → util}/common/common.util.d.ts +0 -0
  249. /package/dist/{src/util → util}/log/log.type.d.ts +0 -0
  250. /package/dist/{src/util → util}/object/object.util.d.ts +0 -0
  251. /package/dist/{src/util → util}/serializer/serializer.type.d.ts +0 -0
  252. /package/dist/{src/util → util}/string/string.type.d.ts +0 -0
  253. /package/dist/{src/util → util}/string/string.util.d.ts +0 -0
  254. /package/dist/{src/util → util}/validate/validate.util.d.ts +0 -0
@@ -1 +1,2 @@
1
- export {}
1
+ export * from './fs.type.js';
2
+ export * from './fs.util.js';
@@ -1 +1,2 @@
1
- export {}
1
+ export * from './log.type.js';
2
+ export * from './log.util.js';
@@ -0,0 +1,46 @@
1
+ import { I_Log as I_LogCommon } from '../../typescript/index.js';
2
+ export type { I_CatchErrorOptions } from '../../util/log/index.js';
3
+ /**
4
+ * Enum representing the type of issues for logging and error handling.
5
+ * - Error: Represents an error issue.
6
+ * - Warning: Represents a warning issue.
7
+ */
8
+ export declare enum E_IssueType {
9
+ Error = "error",
10
+ Warning = "warning"
11
+ }
12
+ export interface I_IssueEntry {
13
+ type: E_IssueType;
14
+ file: string;
15
+ message: string;
16
+ position?: string;
17
+ rule?: string;
18
+ }
19
+ export interface I_ThrowError {
20
+ message?: string;
21
+ status?: {
22
+ CODE: string | number;
23
+ MESSAGE: string;
24
+ };
25
+ type?: 'graphql' | 'rest';
26
+ }
27
+ export interface I_Log extends I_LogCommon {
28
+ printBoxedLog: (title: string, issues: I_IssueEntry[], color?: string) => void;
29
+ /**
30
+ * Creates a context-aware logger that prefixes all messages with a correlation ID.
31
+ * Useful for distributed tracing across CyberSkill services.
32
+ *
33
+ * @param correlationId - A UUID correlation ID. If not provided, a new UUID is generated.
34
+ * @returns A logger with standard methods that prefix output with the correlation ID.
35
+ */
36
+ withContext: (correlationId?: string) => {
37
+ correlationId: string;
38
+ fatal: (...args: unknown[]) => void;
39
+ error: (...args: unknown[]) => void;
40
+ warn: (...args: unknown[]) => void;
41
+ log: (...args: unknown[]) => void;
42
+ info: (...args: unknown[]) => void;
43
+ success: (...args: unknown[]) => void;
44
+ debug: (...args: unknown[]) => void;
45
+ };
46
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"log.type.js","names":[],"sources":["../../../src/node/log/log.type.ts"],"sourcesContent":["import type { I_Log as I_LogCommon } from '#typescript/index.js';\n\nexport type { I_CatchErrorOptions } from '#util/log/index.js';\n\n/**\n * Enum representing the type of issues for logging and error handling.\n * - Error: Represents an error issue.\n * - Warning: Represents a warning issue.\n */\nexport enum E_IssueType {\n Error = 'error',\n Warning = 'warning',\n}\n\nexport interface I_IssueEntry {\n type: E_IssueType;\n file: string;\n message: string;\n position?: string;\n rule?: string;\n}\n\nexport interface I_ThrowError {\n message?: string;\n status?: {\n CODE: string | number;\n MESSAGE: string;\n };\n type?: 'graphql' | 'rest';\n}\n\nexport interface I_Log extends I_LogCommon {\n printBoxedLog: (\n title: string,\n issues: I_IssueEntry[],\n color?: string,\n ) => void;\n}\n"],"mappings":";AASA,IAAY,IAAL,yBAAA,GAAA;QACH,EAAA,QAAA,SACA,EAAA,UAAA;KACH"}
1
+ {"version":3,"file":"log.type.js","names":[],"sources":["../../../src/node/log/log.type.ts"],"sourcesContent":["import type { I_Log as I_LogCommon } from '#typescript/index.js';\n\nexport type { I_CatchErrorOptions } from '#util/log/index.js';\n\n/**\n * Enum representing the type of issues for logging and error handling.\n * - Error: Represents an error issue.\n * - Warning: Represents a warning issue.\n */\nexport enum E_IssueType {\n Error = 'error',\n Warning = 'warning',\n}\n\nexport interface I_IssueEntry {\n type: E_IssueType;\n file: string;\n message: string;\n position?: string;\n rule?: string;\n}\n\nexport interface I_ThrowError {\n message?: string;\n status?: {\n CODE: string | number;\n MESSAGE: string;\n };\n type?: 'graphql' | 'rest';\n}\n\nexport interface I_Log extends I_LogCommon {\n printBoxedLog: (\n title: string,\n issues: I_IssueEntry[],\n color?: string,\n ) => void;\n /**\n * Creates a context-aware logger that prefixes all messages with a correlation ID.\n * Useful for distributed tracing across CyberSkill services.\n *\n * @param correlationId - A UUID correlation ID. If not provided, a new UUID is generated.\n * @returns A logger with standard methods that prefix output with the correlation ID.\n */\n withContext: (correlationId?: string) => {\n correlationId: string;\n fatal: (...args: unknown[]) => void;\n error: (...args: unknown[]) => void;\n warn: (...args: unknown[]) => void;\n log: (...args: unknown[]) => void;\n info: (...args: unknown[]) => void;\n success: (...args: unknown[]) => void;\n debug: (...args: unknown[]) => void;\n };\n}\n"],"mappings":";AASA,IAAY,IAAL,yBAAA,GAAA;QACH,EAAA,QAAA,SACA,EAAA,UAAA;KACH"}
@@ -1,4 +1,4 @@
1
- import { I_Return } from '../../../typescript/index.js';
1
+ import { I_Return } from '../../typescript/index.js';
2
2
  import { I_CatchErrorOptions, I_Log, I_ThrowError } from './log.type.js';
3
3
  /**
4
4
  * Throws a standardized error with optional status information and type specification.
@@ -4,20 +4,21 @@ import { getEnv as n } from "../../config/env/env.util.js";
4
4
  import { GraphQLError as r } from "graphql";
5
5
  import i from "chalk";
6
6
  import a from "consola";
7
+ import { randomUUID as o } from "node:crypto";
7
8
  //#region src/node/log/log.util.ts
8
- var o = !1;
9
- function s() {
10
- o || (o = !0, n().DEBUG || (a.level = 4));
9
+ var s = !1;
10
+ function c() {
11
+ s || (s = !0, n().DEBUG || (a.level = 4));
11
12
  }
12
- function c({ message: t, status: n = e.INTERNAL_SERVER_ERROR, type: i = "graphql" }) {
13
+ function l({ message: t, status: n = e.INTERNAL_SERVER_ERROR, type: i = "graphql" }) {
13
14
  let a = t ?? n.MESSAGE ?? "Internal server error";
14
15
  throw i === "graphql" ? new r(a, { extensions: { code: n.CODE } }) : Error(a);
15
16
  }
16
- function l(e) {
17
+ function u(e) {
17
18
  let t = i[e];
18
19
  return typeof t == "function" ? t : i.green;
19
20
  }
20
- var u = {
21
+ var d = {
21
22
  silent: a.silent,
22
23
  level: a.level,
23
24
  fatal: a.fatal,
@@ -39,16 +40,29 @@ var u = {
39
40
  }
40
41
  t.forEach(({ file: e, position: t, rule: r, message: o }) => {
41
42
  let s = `${e}${t ? `:${t}` : ""}`;
42
- a.log(`${i.gray("File:")} ${i.blue(s)}`), r && a.log(` ${l(n)("Rule:")} ${r}`), a.log(` ${l(n)("Message:")} ${o}`);
43
- }), a.box(l(n)(`${e} : ${t.length}`)), a.log(i.gray("─".repeat(40)));
43
+ a.log(`${i.gray("File:")} ${i.blue(s)}`), r && a.log(` ${u(n)("Rule:")} ${r}`), a.log(` ${u(n)("Message:")} ${o}`);
44
+ }), a.box(u(n)(`${e} : ${t.length}`)), a.log(i.gray("─".repeat(40)));
45
+ },
46
+ withContext(e) {
47
+ let t = e ?? o(), n = i.gray(`[${t}]`), r = (e) => (...t) => e(n, ...t);
48
+ return {
49
+ correlationId: t,
50
+ fatal: r(a.fatal),
51
+ error: r(a.error),
52
+ warn: r(a.warn),
53
+ log: r(a.log),
54
+ info: r(a.info),
55
+ success: r(a.success),
56
+ debug: r(a.debug)
57
+ };
44
58
  }
45
59
  };
46
- function d(e, n) {
60
+ function f(e, n) {
47
61
  return t(e, n, (e) => {
48
- s(), u.error(e);
62
+ c(), d.error(e);
49
63
  });
50
64
  }
51
65
  //#endregion
52
- export { d as catchError, u as log, c as throwError };
66
+ export { f as catchError, d as log, l as throwError };
53
67
 
54
68
  //# sourceMappingURL=log.util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"log.util.js","names":[],"sources":["../../../src/node/log/log.util.ts"],"sourcesContent":["import type { ChalkInstance } from 'chalk';\n\nimport chalk from 'chalk';\nimport consola from 'consola';\nimport { GraphQLError } from 'graphql';\n\nimport type { I_Return } from '#typescript/index.js';\n\nimport { getEnv } from '#config/env/index.js';\nimport { RESPONSE_STATUS } from '#constant/index.js';\nimport { baseCatchError } from '#util/log/index.js';\n\nimport type { I_CatchErrorOptions, I_IssueEntry, I_Log, I_ThrowError } from './log.type.js';\n\nlet _logLevelConfigured = false;\n\n/**\n * Lazily configures the consola log level based on the DEBUG environment variable.\n * Only runs once on first invocation to avoid repeated env loading.\n */\nfunction ensureLogLevel() {\n if (!_logLevelConfigured) {\n _logLevelConfigured = true;\n const env = getEnv();\n\n if (!env.DEBUG) {\n consola.level = 4;\n }\n }\n}\n\n/**\n * Throws a standardized error with optional status information and type specification.\n * This function creates and throws errors that can be either GraphQL errors (with extensions)\n * or standard JavaScript errors, depending on the specified type.\n *\n * @param options - Error configuration including message, status information, and error type.\n * @param options.message - The error message to display.\n * @param options.status - The response status information (defaults to INTERNAL_SERVER_ERROR).\n * @param options.type - The type of error to throw ('graphql' or 'rest', defaults to 'graphql').\n * @throws {GraphQLError} When type is 'graphql', throws a GraphQL error with extensions.\n * @throws {Error} When type is 'rest' or unspecified, throws a standard JavaScript error.\n */\nexport function throwError({\n message,\n status = RESPONSE_STATUS.INTERNAL_SERVER_ERROR,\n type = 'graphql',\n}: I_ThrowError): never {\n const responseMessage\n = message ?? status.MESSAGE ?? 'Internal server error';\n\n if (type === 'graphql') {\n throw new GraphQLError(responseMessage, {\n extensions: { code: status.CODE },\n });\n }\n\n throw new Error(responseMessage);\n}\n\n/**\n * Gets a chalk color instance by keyword name.\n * This function safely retrieves a chalk color function by name, falling back to green\n * if the specified color is not available or invalid.\n *\n * @param color - The color keyword to get the chalk instance for.\n * @returns A chalk instance for the specified color, or green as fallback.\n */\nfunction chalkKeyword(color: string): ChalkInstance {\n const chalkColor = chalk[color as keyof typeof chalk];\n\n return typeof chalkColor === 'function' ? (chalkColor as ChalkInstance) : chalk.green;\n}\n\n/**\n * Enhanced logging interface that extends consola with custom functionality.\n * This object provides all standard consola logging methods plus additional features\n * like boxed log printing for structured error/warning display.\n */\nexport const log: I_Log = {\n silent: consola.silent,\n level: consola.level,\n fatal: consola.fatal,\n error: consola.error,\n warn: consola.warn,\n log: consola.log,\n info: consola.info,\n success: consola.success,\n ready: consola.ready,\n start: consola.start,\n box: consola.box,\n debug: consola.debug,\n trace: consola.trace,\n verbose: consola.verbose,\n /**\n * Prints a boxed log with structured issue information.\n * This method displays issues (errors or warnings) in a formatted box with:\n * - File paths and line/column positions\n * - Rule violations (if applicable)\n * - Error/warning messages\n * - Color-coded output based on issue type\n *\n * @param title - The title to display in the box header.\n * @param issues - An array of issue entries to display.\n * @param color - The color to use for highlighting (defaults to 'red').\n */\n printBoxedLog(title: string, issues: I_IssueEntry[], color = 'red') {\n if (!issues?.length) {\n consola.box(chalk.green(title));\n return;\n }\n\n issues.forEach(({ file, position, rule, message }) => {\n const positionSuffix = position ? `:${position}` : '';\n const filePath = `${file}${positionSuffix}`;\n consola.log(`${chalk.gray('File:')} ${chalk.blue(filePath)}`);\n\n if (rule) {\n consola.log(` ${chalkKeyword(color)('Rule:')} ${rule}`);\n }\n\n consola.log(` ${chalkKeyword(color)('Message:')} ${message}`);\n });\n\n consola.box(chalkKeyword(color)(`${title} : ${issues.length}`));\n\n consola.log(chalk.gray('─'.repeat(40)));\n },\n};\n\n/**\n * Catches and handles errors with configurable behavior.\n * Delegates to the shared `baseCatchError` implementation, adding Node-specific\n * log-level configuration via `ensureLogLevel()` before logging.\n *\n * @param errorInput - The error to catch and handle.\n * @param options - Configuration options for error handling behavior.\n * @returns Either the specified return value or a standardized error response object.\n */\nexport function catchError<T = unknown>(errorInput: unknown, options: I_CatchErrorOptions & { returnValue: T }): T;\nexport function catchError<T = unknown>(errorInput: unknown, options?: I_CatchErrorOptions): I_Return<T>;\nexport function catchError<T = unknown>(errorInput: unknown, options?: I_CatchErrorOptions): I_Return<T> | T {\n return baseCatchError<T>(errorInput, options, (message) => {\n ensureLogLevel();\n log.error(message);\n });\n}\n"],"mappings":";;;;;;;AAcA,IAAI,IAAsB;AAM1B,SAAS,IAAiB;AACtB,CAAK,MACD,IAAsB,IACV,GAAQ,CAEX,UACL,EAAQ,QAAQ;;AAiB5B,SAAgB,EAAW,EACvB,YACA,YAAS,EAAgB,uBACzB,UAAO,aACa;CACpB,IAAM,IACA,KAAW,EAAO,WAAW;AAQnC,OANI,MAAS,YACH,IAAI,EAAa,GAAiB,EACpC,YAAY,EAAE,MAAM,EAAO,MAAM,EACpC,CAAC,GAGI,MAAM,EAAgB;;AAWpC,SAAS,EAAa,GAA8B;CAChD,IAAM,IAAa,EAAM;AAEzB,QAAO,OAAO,KAAe,aAAc,IAA+B,EAAM;;AAQpF,IAAa,IAAa;CACtB,QAAQ,EAAQ;CAChB,OAAO,EAAQ;CACf,OAAO,EAAQ;CACf,OAAO,EAAQ;CACf,MAAM,EAAQ;CACd,KAAK,EAAQ;CACb,MAAM,EAAQ;CACd,SAAS,EAAQ;CACjB,OAAO,EAAQ;CACf,OAAO,EAAQ;CACf,KAAK,EAAQ;CACb,OAAO,EAAQ;CACf,OAAO,EAAQ;CACf,SAAS,EAAQ;CAajB,cAAc,GAAe,GAAwB,IAAQ,OAAO;AAChE,MAAI,CAAC,GAAQ,QAAQ;AACjB,KAAQ,IAAI,EAAM,MAAM,EAAM,CAAC;AAC/B;;AAiBJ,EAdA,EAAO,SAAS,EAAE,SAAM,aAAU,SAAM,iBAAc;GAElD,IAAM,IAAW,GAAG,IADG,IAAW,IAAI,MAAa;AAQnD,GANA,EAAQ,IAAI,GAAG,EAAM,KAAK,QAAQ,CAAC,GAAG,EAAM,KAAK,EAAS,GAAG,EAEzD,KACA,EAAQ,IAAI,MAAM,EAAa,EAAM,CAAC,QAAQ,CAAC,GAAG,IAAO,EAG7D,EAAQ,IAAI,MAAM,EAAa,EAAM,CAAC,WAAW,CAAC,GAAG,IAAU;IACjE,EAEF,EAAQ,IAAI,EAAa,EAAM,CAAC,GAAG,EAAM,KAAK,EAAO,SAAS,CAAC,EAE/D,EAAQ,IAAI,EAAM,KAAK,IAAI,OAAO,GAAG,CAAC,CAAC;;CAE9C;AAaD,SAAgB,EAAwB,GAAqB,GAAgD;AACzG,QAAO,EAAkB,GAAY,IAAU,MAAY;AAEvD,EADA,GAAgB,EAChB,EAAI,MAAM,EAAQ;GACpB"}
1
+ {"version":3,"file":"log.util.js","names":[],"sources":["../../../src/node/log/log.util.ts"],"sourcesContent":["import type { ChalkInstance } from 'chalk';\n\nimport chalk from 'chalk';\nimport consola from 'consola';\nimport { GraphQLError } from 'graphql';\nimport { randomUUID } from 'node:crypto';\n\nimport type { I_Return } from '#typescript/index.js';\n\nimport { getEnv } from '#config/env/index.js';\nimport { RESPONSE_STATUS } from '#constant/index.js';\nimport { baseCatchError } from '#util/log/index.js';\n\nimport type { I_CatchErrorOptions, I_IssueEntry, I_Log, I_ThrowError } from './log.type.js';\n\nlet _logLevelConfigured = false;\n\n/**\n * Lazily configures the consola log level based on the DEBUG environment variable.\n * Only runs once on first invocation to avoid repeated env loading.\n */\nfunction ensureLogLevel() {\n if (!_logLevelConfigured) {\n _logLevelConfigured = true;\n const env = getEnv();\n\n if (!env.DEBUG) {\n consola.level = 4;\n }\n }\n}\n\n/**\n * Throws a standardized error with optional status information and type specification.\n * This function creates and throws errors that can be either GraphQL errors (with extensions)\n * or standard JavaScript errors, depending on the specified type.\n *\n * @param options - Error configuration including message, status information, and error type.\n * @param options.message - The error message to display.\n * @param options.status - The response status information (defaults to INTERNAL_SERVER_ERROR).\n * @param options.type - The type of error to throw ('graphql' or 'rest', defaults to 'graphql').\n * @throws {GraphQLError} When type is 'graphql', throws a GraphQL error with extensions.\n * @throws {Error} When type is 'rest' or unspecified, throws a standard JavaScript error.\n */\nexport function throwError({\n message,\n status = RESPONSE_STATUS.INTERNAL_SERVER_ERROR,\n type = 'graphql',\n}: I_ThrowError): never {\n const responseMessage\n = message ?? status.MESSAGE ?? 'Internal server error';\n\n if (type === 'graphql') {\n throw new GraphQLError(responseMessage, {\n extensions: { code: status.CODE },\n });\n }\n\n throw new Error(responseMessage);\n}\n\n/**\n * Gets a chalk color instance by keyword name.\n * This function safely retrieves a chalk color function by name, falling back to green\n * if the specified color is not available or invalid.\n *\n * @param color - The color keyword to get the chalk instance for.\n * @returns A chalk instance for the specified color, or green as fallback.\n */\nfunction chalkKeyword(color: string): ChalkInstance {\n const chalkColor = chalk[color as keyof typeof chalk];\n\n return typeof chalkColor === 'function' ? (chalkColor as ChalkInstance) : chalk.green;\n}\n\n/**\n * Enhanced logging interface that extends consola with custom functionality.\n * This object provides all standard consola logging methods plus additional features\n * like boxed log printing for structured error/warning display.\n */\nexport const log: I_Log = {\n silent: consola.silent,\n level: consola.level,\n fatal: consola.fatal,\n error: consola.error,\n warn: consola.warn,\n log: consola.log,\n info: consola.info,\n success: consola.success,\n ready: consola.ready,\n start: consola.start,\n box: consola.box,\n debug: consola.debug,\n trace: consola.trace,\n verbose: consola.verbose,\n /**\n * Prints a boxed log with structured issue information.\n * This method displays issues (errors or warnings) in a formatted box with:\n * - File paths and line/column positions\n * - Rule violations (if applicable)\n * - Error/warning messages\n * - Color-coded output based on issue type\n *\n * @param title - The title to display in the box header.\n * @param issues - An array of issue entries to display.\n * @param color - The color to use for highlighting (defaults to 'red').\n */\n printBoxedLog(title: string, issues: I_IssueEntry[], color = 'red') {\n if (!issues?.length) {\n consola.box(chalk.green(title));\n return;\n }\n\n issues.forEach(({ file, position, rule, message }) => {\n const positionSuffix = position ? `:${position}` : '';\n const filePath = `${file}${positionSuffix}`;\n consola.log(`${chalk.gray('File:')} ${chalk.blue(filePath)}`);\n\n if (rule) {\n consola.log(` ${chalkKeyword(color)('Rule:')} ${rule}`);\n }\n\n consola.log(` ${chalkKeyword(color)('Message:')} ${message}`);\n });\n\n consola.box(chalkKeyword(color)(`${title} : ${issues.length}`));\n\n consola.log(chalk.gray('─'.repeat(40)));\n },\n /**\n * Creates a context-aware logger that prefixes all messages with a correlation ID.\n * Useful for distributed tracing across CyberSkill services.\n *\n * @param correlationId - A UUID correlation ID. If not provided, a new UUID is generated.\n * @returns A logger object with all standard methods that prefix output with the correlation ID.\n */\n withContext(correlationId?: string) {\n const id = correlationId ?? randomUUID();\n const prefix = chalk.gray(`[${id}]`);\n\n const withPrefix = (fn: (...args: unknown[]) => void) => {\n return (...args: unknown[]) => fn(prefix, ...args);\n };\n\n return {\n correlationId: id,\n fatal: withPrefix(consola.fatal),\n error: withPrefix(consola.error),\n warn: withPrefix(consola.warn),\n log: withPrefix(consola.log),\n info: withPrefix(consola.info),\n success: withPrefix(consola.success),\n debug: withPrefix(consola.debug),\n };\n },\n};\n\n/**\n * Catches and handles errors with configurable behavior.\n * Delegates to the shared `baseCatchError` implementation, adding Node-specific\n * log-level configuration via `ensureLogLevel()` before logging.\n *\n * @param errorInput - The error to catch and handle.\n * @param options - Configuration options for error handling behavior.\n * @returns Either the specified return value or a standardized error response object.\n */\nexport function catchError<T = unknown>(errorInput: unknown, options: I_CatchErrorOptions & { returnValue: T }): T;\nexport function catchError<T = unknown>(errorInput: unknown, options?: I_CatchErrorOptions): I_Return<T>;\nexport function catchError<T = unknown>(errorInput: unknown, options?: I_CatchErrorOptions): I_Return<T> | T {\n return baseCatchError<T>(errorInput, options, (message) => {\n ensureLogLevel();\n log.error(message);\n });\n}\n"],"mappings":";;;;;;;;AAeA,IAAI,IAAsB;AAM1B,SAAS,IAAiB;AACtB,CAAK,MACD,IAAsB,IACV,GAAQ,CAEX,UACL,EAAQ,QAAQ;;AAiB5B,SAAgB,EAAW,EACvB,YACA,YAAS,EAAgB,uBACzB,UAAO,aACa;CACpB,IAAM,IACA,KAAW,EAAO,WAAW;AAQnC,OANI,MAAS,YACH,IAAI,EAAa,GAAiB,EACpC,YAAY,EAAE,MAAM,EAAO,MAAM,EACpC,CAAC,GAGI,MAAM,EAAgB;;AAWpC,SAAS,EAAa,GAA8B;CAChD,IAAM,IAAa,EAAM;AAEzB,QAAO,OAAO,KAAe,aAAc,IAA+B,EAAM;;AAQpF,IAAa,IAAa;CACtB,QAAQ,EAAQ;CAChB,OAAO,EAAQ;CACf,OAAO,EAAQ;CACf,OAAO,EAAQ;CACf,MAAM,EAAQ;CACd,KAAK,EAAQ;CACb,MAAM,EAAQ;CACd,SAAS,EAAQ;CACjB,OAAO,EAAQ;CACf,OAAO,EAAQ;CACf,KAAK,EAAQ;CACb,OAAO,EAAQ;CACf,OAAO,EAAQ;CACf,SAAS,EAAQ;CAajB,cAAc,GAAe,GAAwB,IAAQ,OAAO;AAChE,MAAI,CAAC,GAAQ,QAAQ;AACjB,KAAQ,IAAI,EAAM,MAAM,EAAM,CAAC;AAC/B;;AAiBJ,EAdA,EAAO,SAAS,EAAE,SAAM,aAAU,SAAM,iBAAc;GAElD,IAAM,IAAW,GAAG,IADG,IAAW,IAAI,MAAa;AAQnD,GANA,EAAQ,IAAI,GAAG,EAAM,KAAK,QAAQ,CAAC,GAAG,EAAM,KAAK,EAAS,GAAG,EAEzD,KACA,EAAQ,IAAI,MAAM,EAAa,EAAM,CAAC,QAAQ,CAAC,GAAG,IAAO,EAG7D,EAAQ,IAAI,MAAM,EAAa,EAAM,CAAC,WAAW,CAAC,GAAG,IAAU;IACjE,EAEF,EAAQ,IAAI,EAAa,EAAM,CAAC,GAAG,EAAM,KAAK,EAAO,SAAS,CAAC,EAE/D,EAAQ,IAAI,EAAM,KAAK,IAAI,OAAO,GAAG,CAAC,CAAC;;CAS3C,YAAY,GAAwB;EAChC,IAAM,IAAK,KAAiB,GAAY,EAClC,IAAS,EAAM,KAAK,IAAI,EAAG,GAAG,EAE9B,KAAc,OACR,GAAG,MAAoB,EAAG,GAAQ,GAAG,EAAK;AAGtD,SAAO;GACH,eAAe;GACf,OAAO,EAAW,EAAQ,MAAM;GAChC,OAAO,EAAW,EAAQ,MAAM;GAChC,MAAM,EAAW,EAAQ,KAAK;GAC9B,KAAK,EAAW,EAAQ,IAAI;GAC5B,MAAM,EAAW,EAAQ,KAAK;GAC9B,SAAS,EAAW,EAAQ,QAAQ;GACpC,OAAO,EAAW,EAAQ,MAAM;GACnC;;CAER;AAaD,SAAgB,EAAwB,GAAqB,GAAgD;AACzG,QAAO,EAAkB,GAAY,IAAU,MAAY;AAEvD,EADA,GAAgB,EAChB,EAAI,MAAM,EAAQ;GACpB"}
@@ -1 +1,7 @@
1
- export {}
1
+ export * from './mongo.constant.js';
2
+ export * from './mongo.controller.js';
3
+ export type * from './mongo.controller.type.js';
4
+ export * from './mongo.dynamic-populate.js';
5
+ export * from './mongo.populate.js';
6
+ export type * from './mongo.type.js';
7
+ export * from './mongo.util.js';
@@ -1,8 +1,7 @@
1
- import { MONGO_MIGRATE_OPTIONS as e, MONGO_SLUG_MAX_ATTEMPTS as t } from "./mongo.constant.js";
2
- import { convertEnumToModelName as n, mongo as r } from "./mongo.util.js";
3
- import { applyNestedPopulate as i } from "./mongo.populate.js";
4
- import { filterDynamicVirtualsFromPopulate as a, isMongooseDoc as o, populateDynamicVirtuals as s, remapDynamicPopulate as c } from "./mongo.dynamic-populate.js";
5
- import { MongooseController as l } from "./mongo.controller.mongoose.js";
6
- import { MongoController as u } from "./mongo.controller.native.js";
7
- import { C_Collection as d, C_Db as f, C_Document as p, C_Model as m } from "./mongo.type.js";
8
- export { d as C_Collection, f as C_Db, p as C_Document, m as C_Model, e as MONGO_MIGRATE_OPTIONS, t as MONGO_SLUG_MAX_ATTEMPTS, u as MongoController, l as MongooseController, i as applyNestedPopulate, n as convertEnumToModelName, a as filterDynamicVirtualsFromPopulate, o as isMongooseDoc, r as mongo, s as populateDynamicVirtuals, c as remapDynamicPopulate };
1
+ import { MONGO_MAX_TIME_MS as e, MONGO_MIGRATE_OPTIONS as t, MONGO_SLUG_MAX_ATTEMPTS as n } from "./mongo.constant.js";
2
+ import { convertEnumToModelName as r, mongo as i } from "./mongo.util.js";
3
+ import { applyNestedPopulate as a } from "./mongo.populate.js";
4
+ import { filterDynamicVirtualsFromPopulate as o, isMongooseDoc as s, populateDynamicVirtuals as c, remapDynamicPopulate as l } from "./mongo.dynamic-populate.js";
5
+ import { MongooseController as u } from "./mongo.controller.mongoose.js";
6
+ import { MongoController as d, createMongoController as f } from "./mongo.controller.native.js";
7
+ export { e as MONGO_MAX_TIME_MS, t as MONGO_MIGRATE_OPTIONS, n as MONGO_SLUG_MAX_ATTEMPTS, d as MongoController, u as MongooseController, a as applyNestedPopulate, r as convertEnumToModelName, f as createMongoController, o as filterDynamicVirtualsFromPopulate, s as isMongooseDoc, i as mongo, c as populateDynamicVirtuals, l as remapDynamicPopulate };
@@ -10,3 +10,8 @@ export declare const MONGO_MIGRATE_OPTIONS = "MONGO_MIGRATE_OPTIONS";
10
10
  * before giving up and returning a fallback slug.
11
11
  */
12
12
  export declare const MONGO_SLUG_MAX_ATTEMPTS = 100;
13
+ /**
14
+ * Default maxTimeMS for MongoDB queries.
15
+ * This constant defines the default maximum execution time for MongoDB queries.
16
+ */
17
+ export declare const MONGO_MAX_TIME_MS = 30000;
@@ -1,6 +1,6 @@
1
1
  //#region src/node/mongo/mongo.constant.ts
2
- var e = "MONGO_MIGRATE_OPTIONS", t = 100;
2
+ var e = "MONGO_MIGRATE_OPTIONS", t = 100, n = 3e4;
3
3
  //#endregion
4
- export { e as MONGO_MIGRATE_OPTIONS, t as MONGO_SLUG_MAX_ATTEMPTS };
4
+ export { n as MONGO_MAX_TIME_MS, e as MONGO_MIGRATE_OPTIONS, t as MONGO_SLUG_MAX_ATTEMPTS };
5
5
 
6
6
  //# sourceMappingURL=mongo.constant.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mongo.constant.js","names":[],"sources":["../../../src/node/mongo/mongo.constant.ts"],"sourcesContent":["/**\n * Environment variable key for MongoDB migration options.\n * This constant defines the environment variable name that can be used to configure\n * MongoDB migration settings and options for database schema management.\n */\nexport const MONGO_MIGRATE_OPTIONS = 'MONGO_MIGRATE_OPTIONS';\n\n/**\n * Maximum number of attempts to generate a unique slug.\n * This constant defines the maximum number of attempts to generate a unique slug\n * before giving up and returning a fallback slug.\n */\nexport const MONGO_SLUG_MAX_ATTEMPTS = 100;\n"],"mappings":";AAKA,IAAa,IAAwB,yBAOxB,IAA0B"}
1
+ {"version":3,"file":"mongo.constant.js","names":[],"sources":["../../../src/node/mongo/mongo.constant.ts"],"sourcesContent":["/**\n * Environment variable key for MongoDB migration options.\n * This constant defines the environment variable name that can be used to configure\n * MongoDB migration settings and options for database schema management.\n */\nexport const MONGO_MIGRATE_OPTIONS = 'MONGO_MIGRATE_OPTIONS';\n\n/**\n * Maximum number of attempts to generate a unique slug.\n * This constant defines the maximum number of attempts to generate a unique slug\n * before giving up and returning a fallback slug.\n */\nexport const MONGO_SLUG_MAX_ATTEMPTS = 100;\n\n/**\n * Default maxTimeMS for MongoDB queries.\n * This constant defines the default maximum execution time for MongoDB queries.\n */\nexport const MONGO_MAX_TIME_MS = 30_000;\n"],"mappings":";AAKA,IAAa,IAAwB,yBAOxB,IAA0B,KAM1B,IAAoB"}
@@ -1,4 +1,4 @@
1
- import { I_Return } from '../../../typescript/index.js';
1
+ import { I_Return } from '../../typescript/index.js';
2
2
  /**
3
3
  * Shared helper functions for MongoDB controllers.
4
4
  *
@@ -1,4 +1,4 @@
1
- import { I_Return } from '../../../typescript/index.js';
1
+ import { I_Return } from '../../typescript/index.js';
2
2
  import { C_Document, I_DeleteOptionsExtended, I_ExtendedModel, I_Input_CheckSlug, I_Input_CreateSlug, I_Input_GenerateSlug, I_PaginateOptionsWithPopulate, I_UpdateOptionsExtended, T_AggregatePaginateResult, T_DeleteResult, T_Input_Populate, T_InsertManyOptions, T_PaginateResult, T_PipelineStage, T_ProjectionType, T_QueryFilter, T_QueryOptions, T_UpdateQuery, T_UpdateResult } from './mongo.type.js';
3
3
  /**
4
4
  * Mongoose controller for database operations with advanced features.
@@ -8,15 +8,18 @@ import { C_Document, I_DeleteOptionsExtended, I_ExtendedModel, I_Input_CheckSlug
8
8
  export declare class MongooseController<T extends Partial<C_Document>> {
9
9
  private model;
10
10
  private defaultLimit;
11
+ private defaultProjection;
11
12
  /**
12
13
  * Creates a new Mongoose controller instance.
13
14
  *
14
15
  * @param model - The Mongoose model to operate on.
15
16
  * @param options - Optional configuration for the controller.
16
17
  * @param options.defaultLimit - Maximum documents returned by findAll when no limit is specified (default: 1,000).
18
+ * @param options.defaultProjection - Default projection to apply to findOne and findAll queries.
17
19
  */
18
20
  constructor(model: I_ExtendedModel<T>, options?: {
19
21
  defaultLimit?: number;
22
+ defaultProjection?: T_ProjectionType<T>;
20
23
  });
21
24
  /**
22
25
  * Gets the model name for logging and error messages.
@@ -3,16 +3,18 @@ import { RESPONSE_STATUS as t } from "../../constant/response-status.js";
3
3
  import { normalizeMongoFilter as n } from "../../util/object/object.util.js";
4
4
  import { generateRandomString as r, generateShortId as i, generateSlug as a } from "../../util/string/string.util.js";
5
5
  import { catchError as o, log as s } from "../log/log.util.js";
6
- import "./mongo.constant.js";
7
- import { filterDynamicVirtualsFromPopulate as c, populateDynamicVirtuals as l } from "./mongo.dynamic-populate.js";
6
+ import { MONGO_MAX_TIME_MS as c } from "./mongo.constant.js";
7
+ import { wrapNotFound as l } from "./mongo.controller.helpers.js";
8
+ import { filterDynamicVirtualsFromPopulate as u, populateDynamicVirtuals as d } from "./mongo.dynamic-populate.js";
8
9
  //#region src/node/mongo/mongo.controller.mongoose.ts
9
- function u(e) {
10
+ function f(e) {
10
11
  return e?.toObject?.() ?? e;
11
12
  }
12
- var d = class {
13
+ var p = class {
13
14
  defaultLimit;
15
+ defaultProjection;
14
16
  constructor(e, t) {
15
- this.model = e, this.defaultLimit = t?.defaultLimit ?? 1e3;
17
+ this.model = e, this.defaultLimit = t?.defaultLimit ?? 1e3, this.defaultProjection = t?.defaultProjection ?? {};
16
18
  }
17
19
  getModelName() {
18
20
  return this.model.modelName;
@@ -33,36 +35,32 @@ var d = class {
33
35
  }
34
36
  async populateDynamic(e, t) {
35
37
  let n = this.getDynamicVirtuals();
36
- return n && n.length > 0 && e.length > 0 ? await l(this.model.base, e, n, t, void 0, this.model) : e;
38
+ return n && n.length > 0 && e.length > 0 ? await d(this.model.base, e, n, t, void 0, this.model) : e;
37
39
  }
38
- async findOne(e = {}, r = {}, i = {}, a) {
40
+ async findOne(e = {}, t = {}, r = {}, i) {
39
41
  try {
40
- let o = n(e), s = this.model.findOne(o, r, i).maxTimeMS(3e4).lean(), l = c(a, this.getDynamicVirtuals());
41
- l && s.populate(l);
42
- let d = await s.exec();
42
+ let a = n(e), o = this.model.findOne(a, Object.keys(t).length > 0 ? t : Object.keys(this.defaultProjection).length > 0 ? this.defaultProjection : t, r).maxTimeMS(c).lean(), s = u(i, this.getDynamicVirtuals());
43
+ s && o.populate(s);
44
+ let d = await o.exec();
43
45
  return d ? {
44
46
  success: !0,
45
- result: u(await this.populateDynamicVirtualsForDocument(d, a))
46
- } : {
47
- success: !1,
48
- message: `No ${this.getModelName()} found.`,
49
- code: t.NOT_FOUND.CODE
50
- };
47
+ result: f(await this.populateDynamicVirtualsForDocument(d, i))
48
+ } : l(this.getModelName());
51
49
  } catch (e) {
52
50
  return o(e);
53
51
  }
54
52
  }
55
53
  async findAll(e = {}, t = {}, r = {}, i) {
56
54
  try {
57
- let a = n(e), o = this.model.find(a, t, r).maxTimeMS(3e4).lean();
55
+ let a = n(e), o = this.model.find(a, Object.keys(t).length > 0 ? t : Object.keys(this.defaultProjection).length > 0 ? this.defaultProjection : t, r).maxTimeMS(c).lean();
58
56
  r.limit || o.limit(this.defaultLimit);
59
- let l = c(i, this.getDynamicVirtuals());
57
+ let l = u(i, this.getDynamicVirtuals());
60
58
  l && o.populate(l);
61
- let d = await o.exec(), f = await this.populateDynamicVirtualsForDocuments(d, i), p = f.length === this.defaultLimit && !r.limit;
62
- return p && s.warn(`[${this.getModelName()}] findAll returned exactly ${this.defaultLimit} documents (the default limit). Results may be truncated. Consider using pagination or setting an explicit limit.`), {
59
+ let d = await o.exec(), p = await this.populateDynamicVirtualsForDocuments(d, i), m = p.length === this.defaultLimit && !r.limit;
60
+ return m && s.warn(`[${this.getModelName()}] findAll returned exactly ${this.defaultLimit} documents (the default limit). Results may be truncated. Consider using pagination or setting an explicit limit.`), {
63
61
  success: !0,
64
- result: f.map((e) => u(e)),
65
- truncated: p
62
+ result: p.map((e) => f(e)),
63
+ truncated: m
66
64
  };
67
65
  } catch (e) {
68
66
  return o(e);
@@ -71,7 +69,7 @@ var d = class {
71
69
  async findPaging(e = {}, t = {}) {
72
70
  try {
73
71
  let r = n(e), i = this.getDynamicVirtuals(), a = { ...t };
74
- t.populate && (a.populate = c(t.populate, i));
72
+ t.populate && (a.populate = u(t.populate, i));
75
73
  let o = await this.model.paginate(r, a);
76
74
  if (i && i.length > 0) {
77
75
  let e = await this.populateDynamicVirtualsForDocuments(o.docs, t.populate);
@@ -79,7 +77,7 @@ var d = class {
79
77
  success: !0,
80
78
  result: {
81
79
  ...o,
82
- docs: e.map((e) => u(e))
80
+ docs: e.map((e) => f(e))
83
81
  }
84
82
  };
85
83
  }
@@ -87,7 +85,7 @@ var d = class {
87
85
  success: !0,
88
86
  result: {
89
87
  ...o,
90
- docs: o.docs.map((e) => u(e))
88
+ docs: o.docs.map((e) => f(e))
91
89
  }
92
90
  };
93
91
  } catch (e) {
@@ -97,13 +95,13 @@ var d = class {
97
95
  async findPagingAggregate(e, t = {}) {
98
96
  try {
99
97
  let n = this.getDynamicVirtuals(), r = { ...t };
100
- t.populate && (r.populate = c(t.populate, n));
98
+ t.populate && (r.populate = u(t.populate, n));
101
99
  let i = await this.model.aggregatePaginate(this.model.aggregate(e), r), a = await this.populateDynamicVirtualsForDocuments(i.docs, t.populate);
102
100
  return {
103
101
  success: !0,
104
102
  result: {
105
103
  ...i,
106
- docs: a.map((e) => u(e))
104
+ docs: a.map((e) => f(e))
107
105
  }
108
106
  };
109
107
  } catch (e) {
@@ -142,20 +140,16 @@ var d = class {
142
140
  return o(e);
143
141
  }
144
142
  }
145
- async updateOne(e = {}, r = {}, i = {}) {
143
+ async updateOne(e = {}, t = {}, r = {}) {
146
144
  try {
147
- let a = n(e), o = await this.model.findOneAndUpdate(a, r, {
145
+ let i = n(e), a = await this.model.findOneAndUpdate(i, t, {
148
146
  new: !0,
149
- ...i
147
+ ...r
150
148
  }).exec();
151
- return o ? {
149
+ return a ? {
152
150
  success: !0,
153
- result: o?.toObject?.() ?? o
154
- } : {
155
- success: !1,
156
- message: `Failed to update ${this.getModelName()}.`,
157
- code: t.NOT_FOUND.CODE
158
- };
151
+ result: a?.toObject?.() ?? a
152
+ } : l(this.getModelName());
159
153
  } catch (e) {
160
154
  return o(e);
161
155
  }
@@ -171,31 +165,23 @@ var d = class {
171
165
  return o(e);
172
166
  }
173
167
  }
174
- async deleteOne(e = {}, r = {}) {
168
+ async deleteOne(e = {}, t = {}) {
175
169
  try {
176
- let i = n(e), a = await this.model.findOneAndDelete(i, r).exec();
177
- return a ? {
170
+ let r = n(e), i = await this.model.findOneAndDelete(r, t).exec();
171
+ return i ? {
178
172
  success: !0,
179
- result: a?.toObject?.() ?? a
180
- } : {
181
- success: !1,
182
- message: `No ${this.getModelName()} found to delete.`,
183
- code: t.NOT_FOUND.CODE
184
- };
173
+ result: i?.toObject?.() ?? i
174
+ } : l(this.getModelName());
185
175
  } catch (e) {
186
176
  return o(e);
187
177
  }
188
178
  }
189
- async deleteMany(e = {}, r = {}) {
179
+ async deleteMany(e = {}, t = {}) {
190
180
  try {
191
- let i = n(e), a = await this.model.deleteMany(i, r).exec();
192
- return a.deletedCount === 0 ? {
193
- success: !1,
194
- message: "No documents found to delete.",
195
- code: t.NOT_FOUND.CODE
196
- } : {
181
+ let r = n(e), i = await this.model.deleteMany(r, t).exec();
182
+ return i.deletedCount === 0 ? l("documents") : {
197
183
  success: !0,
198
- result: a
184
+ result: i
199
185
  };
200
186
  } catch (e) {
201
187
  return o(e);
@@ -326,6 +312,6 @@ var d = class {
326
312
  }
327
313
  };
328
314
  //#endregion
329
- export { d as MongooseController };
315
+ export { p as MongooseController };
330
316
 
331
317
  //# sourceMappingURL=mongo.controller.mongoose.js.map