semola 0.5.2 → 0.5.3

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 (262) hide show
  1. package/README.md +88 -13
  2. package/dist/cron/builder/index.cjs +166 -0
  3. package/dist/cron/builder/index.d.cts +28 -0
  4. package/dist/cron/builder/index.d.cts.map +1 -0
  5. package/dist/cron/builder/index.d.mts +28 -0
  6. package/dist/cron/builder/index.d.mts.map +1 -0
  7. package/dist/cron/builder/index.mjs +163 -0
  8. package/dist/cron/builder/index.mjs.map +1 -0
  9. package/dist/cron/builder/types.cjs +27 -0
  10. package/dist/cron/builder/types.d.cts +79 -0
  11. package/dist/cron/builder/types.d.cts.map +1 -0
  12. package/dist/cron/builder/types.d.mts +79 -0
  13. package/dist/cron/builder/types.d.mts.map +1 -0
  14. package/dist/cron/builder/types.mjs +28 -0
  15. package/dist/cron/builder/types.mjs.map +1 -0
  16. package/dist/cron/core/index.cjs +308 -0
  17. package/dist/cron/core/index.d.cts +39 -0
  18. package/dist/cron/core/index.d.cts.map +1 -0
  19. package/dist/cron/core/index.d.mts +39 -0
  20. package/dist/cron/core/index.d.mts.map +1 -0
  21. package/dist/cron/core/index.mjs +310 -0
  22. package/dist/cron/core/index.mjs.map +1 -0
  23. package/dist/cron/{scanner.cjs → core/scanner.cjs} +2 -2
  24. package/dist/cron/{scanner.mjs → core/scanner.mjs} +2 -2
  25. package/dist/cron/core/scanner.mjs.map +1 -0
  26. package/dist/cron/{types.d.cts → core/types.d.cts} +1 -1
  27. package/dist/cron/core/types.d.cts.map +1 -0
  28. package/dist/cron/{types.d.mts → core/types.d.mts} +1 -1
  29. package/dist/cron/core/types.d.mts.map +1 -0
  30. package/dist/errors/types.d.cts +1 -1
  31. package/dist/errors/types.d.mts +1 -1
  32. package/dist/lib/cache/index.d.cts +3 -3
  33. package/dist/lib/cache/index.d.mts +3 -3
  34. package/dist/lib/cron/index.cjs +12 -275
  35. package/dist/lib/cron/index.d.cts +4 -39
  36. package/dist/lib/cron/index.d.mts +4 -39
  37. package/dist/lib/cron/index.mjs +4 -277
  38. package/dist/lib/errors/index.d.cts +2 -2
  39. package/dist/lib/errors/index.d.cts.map +1 -1
  40. package/dist/lib/errors/index.d.mts +2 -2
  41. package/dist/lib/errors/index.d.mts.map +1 -1
  42. package/dist/lib/errors/index.mjs.map +1 -1
  43. package/dist/lib/i18n/index.cjs +6 -1
  44. package/dist/lib/i18n/index.d.cts.map +1 -1
  45. package/dist/lib/i18n/index.d.mts.map +1 -1
  46. package/dist/lib/i18n/index.mjs +6 -1
  47. package/dist/lib/i18n/index.mjs.map +1 -1
  48. package/dist/lib/logging/index.cjs +18 -0
  49. package/dist/lib/logging/index.d.cts +7 -0
  50. package/dist/lib/logging/index.d.mts +7 -0
  51. package/dist/lib/logging/index.mjs +5 -0
  52. package/dist/lib/orm/index.cjs +20 -0
  53. package/dist/lib/orm/index.d.cts +7 -0
  54. package/dist/lib/orm/index.d.mts +7 -0
  55. package/dist/lib/orm/index.mjs +6 -0
  56. package/dist/lib/prompts/index.d.cts +8 -8
  57. package/dist/lib/prompts/index.d.mts +8 -8
  58. package/dist/lib/pubsub/index.cjs +82 -13
  59. package/dist/lib/pubsub/index.d.cts +14 -5
  60. package/dist/lib/pubsub/index.d.cts.map +1 -1
  61. package/dist/lib/pubsub/index.d.mts +14 -5
  62. package/dist/lib/pubsub/index.d.mts.map +1 -1
  63. package/dist/lib/pubsub/index.mjs +82 -13
  64. package/dist/lib/pubsub/index.mjs.map +1 -1
  65. package/dist/lib/queue/index.d.cts +2 -2
  66. package/dist/lib/queue/index.d.mts +2 -2
  67. package/dist/lib/workflow/index.cjs +534 -0
  68. package/dist/lib/workflow/index.d.cts +7 -0
  69. package/dist/lib/workflow/index.d.cts.map +1 -0
  70. package/dist/lib/workflow/index.d.mts +7 -0
  71. package/dist/lib/workflow/index.d.mts.map +1 -0
  72. package/dist/lib/workflow/index.mjs +535 -0
  73. package/dist/lib/workflow/index.mjs.map +1 -0
  74. package/dist/logging/core/index.cjs +99 -0
  75. package/dist/logging/core/index.d.cts +26 -0
  76. package/dist/logging/core/index.d.cts.map +1 -0
  77. package/dist/logging/core/index.d.mts +26 -0
  78. package/dist/logging/core/index.d.mts.map +1 -0
  79. package/dist/logging/core/index.mjs +99 -0
  80. package/dist/logging/core/index.mjs.map +1 -0
  81. package/dist/logging/core/types.cjs +10 -0
  82. package/dist/logging/core/types.d.cts +22 -0
  83. package/dist/logging/core/types.d.cts.map +1 -0
  84. package/dist/logging/core/types.d.mts +22 -0
  85. package/dist/logging/core/types.d.mts.map +1 -0
  86. package/dist/logging/core/types.mjs +12 -0
  87. package/dist/logging/core/types.mjs.map +1 -0
  88. package/dist/logging/formatter/index.cjs +119 -0
  89. package/dist/logging/formatter/index.d.cts +27 -0
  90. package/dist/logging/formatter/index.d.cts.map +1 -0
  91. package/dist/logging/formatter/index.d.mts +27 -0
  92. package/dist/logging/formatter/index.d.mts.map +1 -0
  93. package/dist/logging/formatter/index.mjs +115 -0
  94. package/dist/logging/formatter/index.mjs.map +1 -0
  95. package/dist/logging/formatter/types.d.cts +5 -0
  96. package/dist/logging/formatter/types.d.cts.map +1 -0
  97. package/dist/logging/formatter/types.d.mts +5 -0
  98. package/dist/logging/formatter/types.d.mts.map +1 -0
  99. package/dist/logging/provider/index.cjs +165 -0
  100. package/dist/logging/provider/index.d.cts +28 -0
  101. package/dist/logging/provider/index.d.cts.map +1 -0
  102. package/dist/logging/provider/index.d.mts +28 -0
  103. package/dist/logging/provider/index.d.mts.map +1 -0
  104. package/dist/logging/provider/index.mjs +165 -0
  105. package/dist/logging/provider/index.mjs.map +1 -0
  106. package/dist/logging/provider/types.d.cts +23 -0
  107. package/dist/logging/provider/types.d.cts.map +1 -0
  108. package/dist/logging/provider/types.d.mts +23 -0
  109. package/dist/logging/provider/types.d.mts.map +1 -0
  110. package/dist/orm/column.cjs +137 -0
  111. package/dist/orm/column.d.cts +121 -0
  112. package/dist/orm/column.d.cts.map +1 -0
  113. package/dist/orm/column.d.mts +121 -0
  114. package/dist/orm/column.d.mts.map +1 -0
  115. package/dist/orm/column.mjs +132 -0
  116. package/dist/orm/column.mjs.map +1 -0
  117. package/dist/orm/dialect/index.cjs +14 -0
  118. package/dist/orm/dialect/index.mjs +16 -0
  119. package/dist/orm/dialect/index.mjs.map +1 -0
  120. package/dist/orm/dialect/mysql.cjs +31 -0
  121. package/dist/orm/dialect/mysql.mjs +33 -0
  122. package/dist/orm/dialect/mysql.mjs.map +1 -0
  123. package/dist/orm/dialect/postgres.cjs +23 -0
  124. package/dist/orm/dialect/postgres.mjs +25 -0
  125. package/dist/orm/dialect/postgres.mjs.map +1 -0
  126. package/dist/orm/dialect/sqlite.cjs +31 -0
  127. package/dist/orm/dialect/sqlite.mjs +33 -0
  128. package/dist/orm/dialect/sqlite.mjs.map +1 -0
  129. package/dist/orm/dialect/utils.cjs +8 -0
  130. package/dist/orm/dialect/utils.mjs +10 -0
  131. package/dist/orm/dialect/utils.mjs.map +1 -0
  132. package/dist/orm/internal/table-columns.cjs +31 -0
  133. package/dist/orm/internal/table-columns.mjs +32 -0
  134. package/dist/orm/internal/table-columns.mjs.map +1 -0
  135. package/dist/orm/internal/table-lookup.cjs +35 -0
  136. package/dist/orm/internal/table-lookup.mjs +35 -0
  137. package/dist/orm/internal/table-lookup.mjs.map +1 -0
  138. package/dist/orm/internal/table-relations.cjs +28 -0
  139. package/dist/orm/internal/table-relations.mjs +29 -0
  140. package/dist/orm/internal/table-relations.mjs.map +1 -0
  141. package/dist/orm/migration/config.cjs +7 -0
  142. package/dist/orm/migration/config.d.cts +7 -0
  143. package/dist/orm/migration/config.d.cts.map +1 -0
  144. package/dist/orm/migration/config.d.mts +7 -0
  145. package/dist/orm/migration/config.d.mts.map +1 -0
  146. package/dist/orm/migration/config.mjs +8 -0
  147. package/dist/orm/migration/config.mjs.map +1 -0
  148. package/dist/orm/migration/types.d.cts +20 -0
  149. package/dist/orm/migration/types.d.cts.map +1 -0
  150. package/dist/orm/migration/types.d.mts +20 -0
  151. package/dist/orm/migration/types.d.mts.map +1 -0
  152. package/dist/orm/orm.cjs +41 -0
  153. package/dist/orm/orm.d.cts +18 -0
  154. package/dist/orm/orm.d.cts.map +1 -0
  155. package/dist/orm/orm.d.mts +18 -0
  156. package/dist/orm/orm.d.mts.map +1 -0
  157. package/dist/orm/orm.mjs +43 -0
  158. package/dist/orm/orm.mjs.map +1 -0
  159. package/dist/orm/relation.cjs +18 -0
  160. package/dist/orm/relation.d.cts +8 -0
  161. package/dist/orm/relation.d.cts.map +1 -0
  162. package/dist/orm/relation.d.mts +8 -0
  163. package/dist/orm/relation.d.mts.map +1 -0
  164. package/dist/orm/relation.mjs +19 -0
  165. package/dist/orm/relation.mjs.map +1 -0
  166. package/dist/orm/runtime/builders/mutations.cjs +29 -0
  167. package/dist/orm/runtime/builders/mutations.mjs +28 -0
  168. package/dist/orm/runtime/builders/mutations.mjs.map +1 -0
  169. package/dist/orm/runtime/builders/select.cjs +18 -0
  170. package/dist/orm/runtime/builders/select.mjs +19 -0
  171. package/dist/orm/runtime/builders/select.mjs.map +1 -0
  172. package/dist/orm/runtime/client.cjs +90 -0
  173. package/dist/orm/runtime/client.mjs +92 -0
  174. package/dist/orm/runtime/client.mjs.map +1 -0
  175. package/dist/orm/runtime/context.cjs +49 -0
  176. package/dist/orm/runtime/context.mjs +51 -0
  177. package/dist/orm/runtime/context.mjs.map +1 -0
  178. package/dist/orm/runtime/dialect/index.cjs +11 -0
  179. package/dist/orm/runtime/dialect/index.mjs +13 -0
  180. package/dist/orm/runtime/dialect/index.mjs.map +1 -0
  181. package/dist/orm/runtime/dialect/mysql.cjs +95 -0
  182. package/dist/orm/runtime/dialect/mysql.mjs +97 -0
  183. package/dist/orm/runtime/dialect/mysql.mjs.map +1 -0
  184. package/dist/orm/runtime/dialect/postgres.cjs +51 -0
  185. package/dist/orm/runtime/dialect/postgres.mjs +53 -0
  186. package/dist/orm/runtime/dialect/postgres.mjs.map +1 -0
  187. package/dist/orm/runtime/dialect/sqlite.cjs +4 -0
  188. package/dist/orm/runtime/dialect/sqlite.mjs +7 -0
  189. package/dist/orm/runtime/dialect/sqlite.mjs.map +1 -0
  190. package/dist/orm/runtime/errors.cjs +19 -0
  191. package/dist/orm/runtime/errors.mjs +21 -0
  192. package/dist/orm/runtime/errors.mjs.map +1 -0
  193. package/dist/orm/runtime/hydrate/many.cjs +46 -0
  194. package/dist/orm/runtime/hydrate/many.mjs +48 -0
  195. package/dist/orm/runtime/hydrate/many.mjs.map +1 -0
  196. package/dist/orm/runtime/hydrate/one.cjs +38 -0
  197. package/dist/orm/runtime/hydrate/one.mjs +40 -0
  198. package/dist/orm/runtime/hydrate/one.mjs.map +1 -0
  199. package/dist/orm/runtime/hydrate.cjs +49 -0
  200. package/dist/orm/runtime/hydrate.mjs +51 -0
  201. package/dist/orm/runtime/hydrate.mjs.map +1 -0
  202. package/dist/orm/runtime/rows.cjs +30 -0
  203. package/dist/orm/runtime/rows.mjs +31 -0
  204. package/dist/orm/runtime/rows.mjs.map +1 -0
  205. package/dist/orm/runtime/utils.cjs +27 -0
  206. package/dist/orm/runtime/utils.mjs +27 -0
  207. package/dist/orm/runtime/utils.mjs.map +1 -0
  208. package/dist/orm/sql/parse-array.cjs +64 -0
  209. package/dist/orm/sql/parse-array.mjs +66 -0
  210. package/dist/orm/sql/parse-array.mjs.map +1 -0
  211. package/dist/orm/sql/plan/select.cjs +36 -0
  212. package/dist/orm/sql/plan/select.mjs +38 -0
  213. package/dist/orm/sql/plan/select.mjs.map +1 -0
  214. package/dist/orm/sql/plan/where/operators.cjs +95 -0
  215. package/dist/orm/sql/plan/where/operators.mjs +97 -0
  216. package/dist/orm/sql/plan/where/operators.mjs.map +1 -0
  217. package/dist/orm/sql/plan/where.cjs +59 -0
  218. package/dist/orm/sql/plan/where.mjs +61 -0
  219. package/dist/orm/sql/plan/where.mjs.map +1 -0
  220. package/dist/orm/sql/serialize/clauses.cjs +36 -0
  221. package/dist/orm/sql/serialize/clauses.mjs +37 -0
  222. package/dist/orm/sql/serialize/clauses.mjs.map +1 -0
  223. package/dist/orm/sql/serialize/joins.cjs +31 -0
  224. package/dist/orm/sql/serialize/joins.mjs +33 -0
  225. package/dist/orm/sql/serialize/joins.mjs.map +1 -0
  226. package/dist/orm/sql/serialize/values.cjs +30 -0
  227. package/dist/orm/sql/serialize/values.mjs +32 -0
  228. package/dist/orm/sql/serialize/values.mjs.map +1 -0
  229. package/dist/orm/sql/serialize/where/predicate.cjs +73 -0
  230. package/dist/orm/sql/serialize/where/predicate.mjs +75 -0
  231. package/dist/orm/sql/serialize/where/predicate.mjs.map +1 -0
  232. package/dist/orm/sql/serialize/where/tree.cjs +26 -0
  233. package/dist/orm/sql/serialize/where/tree.mjs +28 -0
  234. package/dist/orm/sql/serialize/where/tree.mjs.map +1 -0
  235. package/dist/orm/sql/serialize/where.cjs +10 -0
  236. package/dist/orm/sql/serialize/where.mjs +12 -0
  237. package/dist/orm/sql/serialize/where.mjs.map +1 -0
  238. package/dist/orm/sql/serialize.cjs +24 -0
  239. package/dist/orm/sql/serialize.mjs +25 -0
  240. package/dist/orm/sql/serialize.mjs.map +1 -0
  241. package/dist/orm/table.cjs +12 -0
  242. package/dist/orm/table.d.cts +12 -0
  243. package/dist/orm/table.d.cts.map +1 -0
  244. package/dist/orm/table.d.mts +12 -0
  245. package/dist/orm/table.d.mts.map +1 -0
  246. package/dist/orm/table.mjs +14 -0
  247. package/dist/orm/table.mjs.map +1 -0
  248. package/dist/orm/types.d.cts +183 -0
  249. package/dist/orm/types.d.cts.map +1 -0
  250. package/dist/orm/types.d.mts +183 -0
  251. package/dist/orm/types.d.mts.map +1 -0
  252. package/dist/workflow/types.d.cts +83 -0
  253. package/dist/workflow/types.d.cts.map +1 -0
  254. package/dist/workflow/types.d.mts +83 -0
  255. package/dist/workflow/types.d.mts.map +1 -0
  256. package/package.json +29 -3
  257. package/dist/cron/scanner.mjs.map +0 -1
  258. package/dist/cron/types.d.cts.map +0 -1
  259. package/dist/cron/types.d.mts.map +0 -1
  260. package/dist/lib/cron/index.d.cts.map +0 -1
  261. package/dist/lib/cron/index.d.mts.map +0 -1
  262. package/dist/lib/cron/index.mjs.map +0 -1
@@ -0,0 +1,99 @@
1
+ const require_lib_errors_index = require("../../lib/errors/index.cjs");
2
+ const require_index = require("../formatter/index.cjs");
3
+ let node_path = require("node:path");
4
+ //#region src/lib/logging/core/index.ts
5
+ const PROVIDER_OPTION_DEFAULT = {
6
+ formatter: new require_index.BaseFormatter(),
7
+ level: "debug"
8
+ };
9
+ const STACK_FRAME_IDX = 1;
10
+ var StackData = class {
11
+ stack = [];
12
+ constructor(fn) {
13
+ const oldStackTrace = Error.prepareStackTrace;
14
+ const [stackTraceError] = require_lib_errors_index.mightThrowSync(() => {
15
+ Error.prepareStackTrace = (_, stack) => {
16
+ return stack.map((callSite) => {
17
+ return {
18
+ fileName: callSite.getFileName(),
19
+ column: callSite.getColumnNumber(),
20
+ row: callSite.getLineNumber(),
21
+ functionCall: callSite.getFunctionName()
22
+ };
23
+ });
24
+ };
25
+ Error.captureStackTrace(this, fn);
26
+ this.stack;
27
+ });
28
+ Error.prepareStackTrace = oldStackTrace;
29
+ if (stackTraceError) this.stack = [];
30
+ }
31
+ retrieveFrame() {
32
+ if (this.stack.length === 0) return void 0;
33
+ return this.stack[STACK_FRAME_IDX];
34
+ }
35
+ };
36
+ var AbstractLogger = class {
37
+ providers;
38
+ prefix;
39
+ constructor(prefix, providers) {
40
+ this.prefix = prefix;
41
+ this.providers = providers;
42
+ }
43
+ createLogData(level, msg, prefix) {
44
+ const logCall = new StackData(this.createLogData).retrieveFrame();
45
+ let logData = {
46
+ level,
47
+ msg,
48
+ prefix
49
+ };
50
+ if (!logCall) return logData;
51
+ const { column, fileName, functionCall, row } = logCall;
52
+ if (fileName) logData = {
53
+ ...logData,
54
+ fileName: (0, node_path.basename)(fileName)
55
+ };
56
+ if (column) logData = {
57
+ ...logData,
58
+ column: String(column)
59
+ };
60
+ if (row) logData = {
61
+ ...logData,
62
+ row: String(row)
63
+ };
64
+ if (functionCall) logData = {
65
+ ...logData,
66
+ method: functionCall
67
+ };
68
+ return logData;
69
+ }
70
+ };
71
+ var Logger = class extends AbstractLogger {
72
+ debug(msg) {
73
+ const data = this.createLogData("debug", msg, this.prefix);
74
+ this.run(data);
75
+ }
76
+ info(msg) {
77
+ const data = this.createLogData("info", msg, this.prefix);
78
+ this.run(data);
79
+ }
80
+ warning(msg) {
81
+ const data = this.createLogData("warning", msg, this.prefix);
82
+ this.run(data);
83
+ }
84
+ error(msg) {
85
+ const data = this.createLogData("error", msg, this.prefix);
86
+ this.run(data);
87
+ }
88
+ critical(msg) {
89
+ const data = this.createLogData("critical", msg, this.prefix);
90
+ this.run(data);
91
+ }
92
+ run(data) {
93
+ for (let i = 0; i < this.providers.length; i++) this.providers[i]?.execute(data);
94
+ }
95
+ };
96
+ //#endregion
97
+ exports.AbstractLogger = AbstractLogger;
98
+ exports.Logger = Logger;
99
+ exports.PROVIDER_OPTION_DEFAULT = PROVIDER_OPTION_DEFAULT;
@@ -0,0 +1,26 @@
1
+ import { LogDataType, LogLevelType, LogMessageType } from "./types.cjs";
2
+ import { LoggerProvider } from "../provider/index.cjs";
3
+
4
+ //#region src/lib/logging/core/index.d.ts
5
+ declare abstract class AbstractLogger {
6
+ protected providers: LoggerProvider[];
7
+ protected prefix: string;
8
+ constructor(prefix: string, providers: [LoggerProvider, ...LoggerProvider[]]);
9
+ abstract debug(msg: LogMessageType): void;
10
+ abstract info(msg: LogMessageType): void;
11
+ abstract warning(msg: LogMessageType): void;
12
+ abstract error(msg: LogMessageType): void;
13
+ abstract critical(msg: LogMessageType): void;
14
+ protected createLogData(level: LogLevelType, msg: LogMessageType, prefix: string): LogDataType;
15
+ }
16
+ declare class Logger extends AbstractLogger {
17
+ debug(msg: LogMessageType): void;
18
+ info(msg: LogMessageType): void;
19
+ warning(msg: LogMessageType): void;
20
+ error(msg: LogMessageType): void;
21
+ critical(msg: LogMessageType): void;
22
+ private run;
23
+ }
24
+ //#endregion
25
+ export { AbstractLogger, Logger };
26
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../../src/lib/logging/core/index.ts"],"mappings":";;;;uBAuDsB,cAAA;EAAA,UACV,SAAA,EAAW,cAAA;EAAA,UACX,MAAA;cAGR,MAAA,UACA,SAAA,GAAY,cAAA,KAAmB,cAAA;EAAA,SAMjB,KAAA,CAAM,GAAA,EAAK,cAAA;EAAA,SACX,IAAA,CAAK,GAAA,EAAK,cAAA;EAAA,SACV,OAAA,CAAQ,GAAA,EAAK,cAAA;EAAA,SACb,KAAA,CAAM,GAAA,EAAK,cAAA;EAAA,SACX,QAAA,CAAS,GAAA,EAAK,cAAA;EAAA,UAEpB,aAAA,CACR,KAAA,EAAO,YAAA,EACP,GAAA,EAAK,cAAA,EACL,MAAA,WACC,WAAA;AAAA;AAAA,cA+BQ,MAAA,SAAe,cAAA;EACnB,KAAA,CAAM,GAAA,EAAK,cAAA;EAKX,IAAA,CAAK,GAAA,EAAK,cAAA;EAKV,OAAA,CAAQ,GAAA,EAAK,cAAA;EAKb,KAAA,CAAM,GAAA,EAAK,cAAA;EAKX,QAAA,CAAS,GAAA,EAAK,cAAA;EAAA,QAKb,GAAA;AAAA"}
@@ -0,0 +1,26 @@
1
+ import { LogDataType, LogLevelType, LogMessageType } from "./types.mjs";
2
+ import { LoggerProvider } from "../provider/index.mjs";
3
+
4
+ //#region src/lib/logging/core/index.d.ts
5
+ declare abstract class AbstractLogger {
6
+ protected providers: LoggerProvider[];
7
+ protected prefix: string;
8
+ constructor(prefix: string, providers: [LoggerProvider, ...LoggerProvider[]]);
9
+ abstract debug(msg: LogMessageType): void;
10
+ abstract info(msg: LogMessageType): void;
11
+ abstract warning(msg: LogMessageType): void;
12
+ abstract error(msg: LogMessageType): void;
13
+ abstract critical(msg: LogMessageType): void;
14
+ protected createLogData(level: LogLevelType, msg: LogMessageType, prefix: string): LogDataType;
15
+ }
16
+ declare class Logger extends AbstractLogger {
17
+ debug(msg: LogMessageType): void;
18
+ info(msg: LogMessageType): void;
19
+ warning(msg: LogMessageType): void;
20
+ error(msg: LogMessageType): void;
21
+ critical(msg: LogMessageType): void;
22
+ private run;
23
+ }
24
+ //#endregion
25
+ export { AbstractLogger, Logger };
26
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../src/lib/logging/core/index.ts"],"mappings":";;;;uBAuDsB,cAAA;EAAA,UACV,SAAA,EAAW,cAAA;EAAA,UACX,MAAA;cAGR,MAAA,UACA,SAAA,GAAY,cAAA,KAAmB,cAAA;EAAA,SAMjB,KAAA,CAAM,GAAA,EAAK,cAAA;EAAA,SACX,IAAA,CAAK,GAAA,EAAK,cAAA;EAAA,SACV,OAAA,CAAQ,GAAA,EAAK,cAAA;EAAA,SACb,KAAA,CAAM,GAAA,EAAK,cAAA;EAAA,SACX,QAAA,CAAS,GAAA,EAAK,cAAA;EAAA,UAEpB,aAAA,CACR,KAAA,EAAO,YAAA,EACP,GAAA,EAAK,cAAA,EACL,MAAA,WACC,WAAA;AAAA;AAAA,cA+BQ,MAAA,SAAe,cAAA;EACnB,KAAA,CAAM,GAAA,EAAK,cAAA;EAKX,IAAA,CAAK,GAAA,EAAK,cAAA;EAKV,OAAA,CAAQ,GAAA,EAAK,cAAA;EAKb,KAAA,CAAM,GAAA,EAAK,cAAA;EAKX,QAAA,CAAS,GAAA,EAAK,cAAA;EAAA,QAKb,GAAA;AAAA"}
@@ -0,0 +1,99 @@
1
+ import { mightThrowSync } from "../../lib/errors/index.mjs";
2
+ import { BaseFormatter } from "../formatter/index.mjs";
3
+ import { basename } from "node:path";
4
+ //#region src/lib/logging/core/index.ts
5
+ const PROVIDER_OPTION_DEFAULT = {
6
+ formatter: new BaseFormatter(),
7
+ level: "debug"
8
+ };
9
+ const STACK_FRAME_IDX = 1;
10
+ var StackData = class {
11
+ stack = [];
12
+ constructor(fn) {
13
+ const oldStackTrace = Error.prepareStackTrace;
14
+ const [stackTraceError] = mightThrowSync(() => {
15
+ Error.prepareStackTrace = (_, stack) => {
16
+ return stack.map((callSite) => {
17
+ return {
18
+ fileName: callSite.getFileName(),
19
+ column: callSite.getColumnNumber(),
20
+ row: callSite.getLineNumber(),
21
+ functionCall: callSite.getFunctionName()
22
+ };
23
+ });
24
+ };
25
+ Error.captureStackTrace(this, fn);
26
+ this.stack;
27
+ });
28
+ Error.prepareStackTrace = oldStackTrace;
29
+ if (stackTraceError) this.stack = [];
30
+ }
31
+ retrieveFrame() {
32
+ if (this.stack.length === 0) return void 0;
33
+ return this.stack[STACK_FRAME_IDX];
34
+ }
35
+ };
36
+ var AbstractLogger = class {
37
+ providers;
38
+ prefix;
39
+ constructor(prefix, providers) {
40
+ this.prefix = prefix;
41
+ this.providers = providers;
42
+ }
43
+ createLogData(level, msg, prefix) {
44
+ const logCall = new StackData(this.createLogData).retrieveFrame();
45
+ let logData = {
46
+ level,
47
+ msg,
48
+ prefix
49
+ };
50
+ if (!logCall) return logData;
51
+ const { column, fileName, functionCall, row } = logCall;
52
+ if (fileName) logData = {
53
+ ...logData,
54
+ fileName: basename(fileName)
55
+ };
56
+ if (column) logData = {
57
+ ...logData,
58
+ column: String(column)
59
+ };
60
+ if (row) logData = {
61
+ ...logData,
62
+ row: String(row)
63
+ };
64
+ if (functionCall) logData = {
65
+ ...logData,
66
+ method: functionCall
67
+ };
68
+ return logData;
69
+ }
70
+ };
71
+ var Logger = class extends AbstractLogger {
72
+ debug(msg) {
73
+ const data = this.createLogData("debug", msg, this.prefix);
74
+ this.run(data);
75
+ }
76
+ info(msg) {
77
+ const data = this.createLogData("info", msg, this.prefix);
78
+ this.run(data);
79
+ }
80
+ warning(msg) {
81
+ const data = this.createLogData("warning", msg, this.prefix);
82
+ this.run(data);
83
+ }
84
+ error(msg) {
85
+ const data = this.createLogData("error", msg, this.prefix);
86
+ this.run(data);
87
+ }
88
+ critical(msg) {
89
+ const data = this.createLogData("critical", msg, this.prefix);
90
+ this.run(data);
91
+ }
92
+ run(data) {
93
+ for (let i = 0; i < this.providers.length; i++) this.providers[i]?.execute(data);
94
+ }
95
+ };
96
+ //#endregion
97
+ export { AbstractLogger, Logger, PROVIDER_OPTION_DEFAULT };
98
+
99
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/lib/logging/core/index.ts"],"sourcesContent":["import { basename } from \"node:path\";\nimport { mightThrowSync } from \"../../errors/index.js\";\nimport { BaseFormatter } from \"../formatter/index.js\";\nimport type { LoggerProvider } from \"../provider/index.js\";\nimport type { ProviderOptions } from \"../provider/types.js\";\nimport type { LogDataType, LogLevelType, LogMessageType } from \"./types.js\";\n\nexport const PROVIDER_OPTION_DEFAULT: ProviderOptions = {\n formatter: new BaseFormatter(),\n level: \"debug\",\n} as const;\n\nconst STACK_FRAME_IDX = 1;\n\nexport type StackTraceData = {\n fileName: string | null;\n column: number | null;\n row: number | null;\n functionCall: string | null;\n};\n\nexport class StackData {\n private stack: StackTraceData[] = [];\n\n public constructor(fn: Function) {\n const oldStackTrace = Error.prepareStackTrace;\n const [stackTraceError] = mightThrowSync(() => {\n Error.prepareStackTrace = (_, stack) => {\n return stack.map<StackTraceData>((callSite) => {\n return {\n fileName: callSite.getFileName(),\n column: callSite.getColumnNumber(),\n row: callSite.getLineNumber(),\n functionCall: callSite.getFunctionName(),\n };\n });\n };\n\n Error.captureStackTrace(this, fn);\n this.stack; // Invoke the getter for `stack`.\n });\n\n Error.prepareStackTrace = oldStackTrace;\n if (stackTraceError) this.stack = [];\n }\n\n public retrieveFrame() {\n if (this.stack.length === 0) return undefined;\n\n // Access the second stack frame because I need to ignore\n // a logging function's stack frame (e.g \"debug()\" and \"info()\")\n return this.stack[STACK_FRAME_IDX];\n }\n}\n\nexport abstract class AbstractLogger {\n protected providers: LoggerProvider[];\n protected prefix: string;\n\n public constructor(\n prefix: string,\n providers: [LoggerProvider, ...LoggerProvider[]],\n ) {\n this.prefix = prefix;\n this.providers = providers;\n }\n\n public abstract debug(msg: LogMessageType): void;\n public abstract info(msg: LogMessageType): void;\n public abstract warning(msg: LogMessageType): void;\n public abstract error(msg: LogMessageType): void;\n public abstract critical(msg: LogMessageType): void;\n\n protected createLogData(\n level: LogLevelType,\n msg: LogMessageType,\n prefix: string,\n ): LogDataType {\n const stack = new StackData(this.createLogData);\n const logCall = stack.retrieveFrame();\n let logData: LogDataType = { level, msg, prefix };\n\n if (!logCall) {\n return logData;\n }\n\n const { column, fileName, functionCall, row } = logCall;\n\n if (fileName) {\n logData = { ...logData, fileName: basename(fileName) };\n }\n\n if (column) {\n logData = { ...logData, column: String(column) };\n }\n\n if (row) {\n logData = { ...logData, row: String(row) };\n }\n\n if (functionCall) {\n logData = { ...logData, method: functionCall };\n }\n\n return logData;\n }\n}\n\nexport class Logger extends AbstractLogger {\n public debug(msg: LogMessageType) {\n const data = this.createLogData(\"debug\", msg, this.prefix);\n this.run(data);\n }\n\n public info(msg: LogMessageType) {\n const data = this.createLogData(\"info\", msg, this.prefix);\n this.run(data);\n }\n\n public warning(msg: LogMessageType) {\n const data = this.createLogData(\"warning\", msg, this.prefix);\n this.run(data);\n }\n\n public error(msg: LogMessageType) {\n const data = this.createLogData(\"error\", msg, this.prefix);\n this.run(data);\n }\n\n public critical(msg: LogMessageType) {\n const data = this.createLogData(\"critical\", msg, this.prefix);\n this.run(data);\n }\n\n private run(data: LogDataType) {\n for (let i = 0; i < this.providers.length; i++) {\n const provider = this.providers[i];\n provider?.execute(data);\n }\n }\n}\n"],"mappings":";;;;AAOA,MAAa,0BAA2C;CACtD,WAAW,IAAI,eAAe;CAC9B,OAAO;CACR;AAED,MAAM,kBAAkB;AASxB,IAAa,YAAb,MAAuB;CACrB,QAAkC,EAAE;CAEpC,YAAmB,IAAc;EAC/B,MAAM,gBAAgB,MAAM;EAC5B,MAAM,CAAC,mBAAmB,qBAAqB;AAC7C,SAAM,qBAAqB,GAAG,UAAU;AACtC,WAAO,MAAM,KAAqB,aAAa;AAC7C,YAAO;MACL,UAAU,SAAS,aAAa;MAChC,QAAQ,SAAS,iBAAiB;MAClC,KAAK,SAAS,eAAe;MAC7B,cAAc,SAAS,iBAAiB;MACzC;MACD;;AAGJ,SAAM,kBAAkB,MAAM,GAAG;AACjC,QAAK;IACL;AAEF,QAAM,oBAAoB;AAC1B,MAAI,gBAAiB,MAAK,QAAQ,EAAE;;CAGtC,gBAAuB;AACrB,MAAI,KAAK,MAAM,WAAW,EAAG,QAAO,KAAA;AAIpC,SAAO,KAAK,MAAM;;;AAItB,IAAsB,iBAAtB,MAAqC;CACnC;CACA;CAEA,YACE,QACA,WACA;AACA,OAAK,SAAS;AACd,OAAK,YAAY;;CASnB,cACE,OACA,KACA,QACa;EAEb,MAAM,UADQ,IAAI,UAAU,KAAK,cAAc,CACzB,eAAe;EACrC,IAAI,UAAuB;GAAE;GAAO;GAAK;GAAQ;AAEjD,MAAI,CAAC,QACH,QAAO;EAGT,MAAM,EAAE,QAAQ,UAAU,cAAc,QAAQ;AAEhD,MAAI,SACF,WAAU;GAAE,GAAG;GAAS,UAAU,SAAS,SAAS;GAAE;AAGxD,MAAI,OACF,WAAU;GAAE,GAAG;GAAS,QAAQ,OAAO,OAAO;GAAE;AAGlD,MAAI,IACF,WAAU;GAAE,GAAG;GAAS,KAAK,OAAO,IAAI;GAAE;AAG5C,MAAI,aACF,WAAU;GAAE,GAAG;GAAS,QAAQ;GAAc;AAGhD,SAAO;;;AAIX,IAAa,SAAb,cAA4B,eAAe;CACzC,MAAa,KAAqB;EAChC,MAAM,OAAO,KAAK,cAAc,SAAS,KAAK,KAAK,OAAO;AAC1D,OAAK,IAAI,KAAK;;CAGhB,KAAY,KAAqB;EAC/B,MAAM,OAAO,KAAK,cAAc,QAAQ,KAAK,KAAK,OAAO;AACzD,OAAK,IAAI,KAAK;;CAGhB,QAAe,KAAqB;EAClC,MAAM,OAAO,KAAK,cAAc,WAAW,KAAK,KAAK,OAAO;AAC5D,OAAK,IAAI,KAAK;;CAGhB,MAAa,KAAqB;EAChC,MAAM,OAAO,KAAK,cAAc,SAAS,KAAK,KAAK,OAAO;AAC1D,OAAK,IAAI,KAAK;;CAGhB,SAAgB,KAAqB;EACnC,MAAM,OAAO,KAAK,cAAc,YAAY,KAAK,KAAK,OAAO;AAC7D,OAAK,IAAI,KAAK;;CAGhB,IAAY,MAAmB;AAC7B,OAAK,IAAI,IAAI,GAAG,IAAI,KAAK,UAAU,QAAQ,IACxB,MAAK,UAAU,IACtB,QAAQ,KAAK"}
@@ -0,0 +1,10 @@
1
+ //#region src/lib/logging/core/types.ts
2
+ const LogLevel = {
3
+ debug: 10,
4
+ info: 20,
5
+ warning: 30,
6
+ error: 40,
7
+ critical: 50
8
+ };
9
+ //#endregion
10
+ exports.LogLevel = LogLevel;
@@ -0,0 +1,22 @@
1
+ //#region src/lib/logging/core/types.d.ts
2
+ declare const LogLevel: {
3
+ readonly debug: 10;
4
+ readonly info: 20;
5
+ readonly warning: 30;
6
+ readonly error: 40;
7
+ readonly critical: 50;
8
+ };
9
+ type LogLevelType = keyof typeof LogLevel;
10
+ type LogMessageType = string | object | number | boolean;
11
+ type LogDataType = {
12
+ prefix: string;
13
+ level: LogLevelType;
14
+ msg: LogMessageType;
15
+ row?: string;
16
+ column?: string;
17
+ fileName?: string;
18
+ method?: string;
19
+ };
20
+ //#endregion
21
+ export { LogDataType, LogLevel, LogLevelType, LogMessageType };
22
+ //# sourceMappingURL=types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.cts","names":[],"sources":["../../../src/lib/logging/core/types.ts"],"mappings":";cAAa,QAAA;EAAA;;;;;;KAQD,YAAA,gBAA4B,QAAA;AAAA,KAE5B,cAAA;AAAA,KAEA,WAAA;EACV,MAAA;EACA,KAAA,EAAO,YAAA;EACP,GAAA,EAAK,cAAA;EACL,GAAA;EACA,MAAA;EACA,QAAA;EACA,MAAA;AAAA"}
@@ -0,0 +1,22 @@
1
+ //#region src/lib/logging/core/types.d.ts
2
+ declare const LogLevel: {
3
+ readonly debug: 10;
4
+ readonly info: 20;
5
+ readonly warning: 30;
6
+ readonly error: 40;
7
+ readonly critical: 50;
8
+ };
9
+ type LogLevelType = keyof typeof LogLevel;
10
+ type LogMessageType = string | object | number | boolean;
11
+ type LogDataType = {
12
+ prefix: string;
13
+ level: LogLevelType;
14
+ msg: LogMessageType;
15
+ row?: string;
16
+ column?: string;
17
+ fileName?: string;
18
+ method?: string;
19
+ };
20
+ //#endregion
21
+ export { LogDataType, LogLevel, LogLevelType, LogMessageType };
22
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../../../src/lib/logging/core/types.ts"],"mappings":";cAAa,QAAA;EAAA;;;;;;KAQD,YAAA,gBAA4B,QAAA;AAAA,KAE5B,cAAA;AAAA,KAEA,WAAA;EACV,MAAA;EACA,KAAA,EAAO,YAAA;EACP,GAAA,EAAK,cAAA;EACL,GAAA;EACA,MAAA;EACA,QAAA;EACA,MAAA;AAAA"}
@@ -0,0 +1,12 @@
1
+ //#region src/lib/logging/core/types.ts
2
+ const LogLevel = {
3
+ debug: 10,
4
+ info: 20,
5
+ warning: 30,
6
+ error: 40,
7
+ critical: 50
8
+ };
9
+ //#endregion
10
+ export { LogLevel };
11
+
12
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.mjs","names":[],"sources":["../../../src/lib/logging/core/types.ts"],"sourcesContent":["export const LogLevel = {\n debug: 10,\n info: 20,\n warning: 30,\n error: 40,\n critical: 50,\n} as const;\n\nexport type LogLevelType = keyof typeof LogLevel;\n\nexport type LogMessageType = string | object | number | boolean;\n\nexport type LogDataType = {\n prefix: string;\n level: LogLevelType;\n msg: LogMessageType;\n row?: string;\n column?: string;\n fileName?: string;\n method?: string;\n};\n"],"mappings":";AAAA,MAAa,WAAW;CACtB,OAAO;CACP,MAAM;CACN,SAAS;CACT,OAAO;CACP,UAAU;CACX"}
@@ -0,0 +1,119 @@
1
+ //#region src/lib/logging/formatter/index.ts
2
+ var Formatter = class {
3
+ dateFmt;
4
+ constructor(dateFmt) {
5
+ this.dateFmt = dateFmt;
6
+ }
7
+ };
8
+ var BaseFormatter = class extends Formatter {
9
+ constructor(dateFmt = isoDateTimeFormat) {
10
+ super(dateFmt);
11
+ }
12
+ format(logData) {
13
+ let { prefix, level, msg, fileName, row, column, method } = logData;
14
+ const timestamp = this.dateFmt();
15
+ const levelType = level.toUpperCase();
16
+ if (typeof msg === "object") msg = JSON.stringify(msg);
17
+ const fileData = `${prefix}/${fileName}:${row}:${column}`;
18
+ let header = `[${levelType}]`;
19
+ if (method) header = `${header}\t[${method}]\t[${fileData}]`;
20
+ else header = `${header}\t[${fileData}]`;
21
+ return `${timestamp} ${header} : ${msg}`;
22
+ }
23
+ formatError(logData, error) {
24
+ const { prefix, fileName, row, column, method } = logData;
25
+ const timestamp = this.dateFmt();
26
+ const fileData = `${prefix}/${fileName}:${row}:${column}`;
27
+ let errorMsg = `Error name="${error.name}" Error message="${error.message}"`;
28
+ let header = "[ERROR]";
29
+ if (method) header = `${header}\t[${method}]\t[${fileData}]`;
30
+ else header = `${header}\t[${fileData}]`;
31
+ if (error.cause) errorMsg = `${errorMsg}\n\tError cause="${error.cause}"`;
32
+ if (error.stack) errorMsg = `${errorMsg}\n\tStack trace="${error.stack}"`;
33
+ return `${timestamp} ${header} : ${errorMsg}`;
34
+ }
35
+ };
36
+ var JSONFormatter = class extends Formatter {
37
+ constructor(dateFmt = isoDateTimeFormat) {
38
+ super(dateFmt);
39
+ }
40
+ format(logData) {
41
+ const { prefix, level, msg, fileName, row, column, method } = logData;
42
+ const timestamp = this.dateFmt();
43
+ const levelType = level.toUpperCase();
44
+ let position = {};
45
+ if (method) position = { method };
46
+ position = {
47
+ ...position,
48
+ fileName,
49
+ row,
50
+ column
51
+ };
52
+ return JSON.stringify({
53
+ timestamp,
54
+ level: levelType,
55
+ prefix,
56
+ position,
57
+ msg
58
+ });
59
+ }
60
+ formatError(logData, error) {
61
+ const { prefix, fileName, row, column, method } = logData;
62
+ const timestamp = this.dateFmt();
63
+ let errorMsg = {
64
+ errorName: error.name,
65
+ errorMessage: error.message
66
+ };
67
+ let position = {};
68
+ if (method) position = { method };
69
+ position = {
70
+ ...position,
71
+ fileName,
72
+ row,
73
+ column
74
+ };
75
+ if (error.cause) errorMsg = {
76
+ ...errorMsg,
77
+ errorCause: error.cause
78
+ };
79
+ if (error.stack) errorMsg = {
80
+ ...errorMsg,
81
+ stackTrace: error.stack
82
+ };
83
+ return JSON.stringify({
84
+ timestamp,
85
+ level: "ERROR",
86
+ prefix,
87
+ position,
88
+ msg: errorMsg
89
+ });
90
+ }
91
+ };
92
+ function isoDateTimeFormat() {
93
+ return (/* @__PURE__ */ new Date()).toISOString();
94
+ }
95
+ function isoDateFormat() {
96
+ const date = isoDateTimeFormat().split("T")[0];
97
+ if (!date) return "";
98
+ return date;
99
+ }
100
+ function dmyFormat() {
101
+ const isoDate = isoDateFormat();
102
+ if (!isoDate) return "";
103
+ const info = isoDate.split("-");
104
+ return `${info[2]}-${info[1]}-${info[0]}`;
105
+ }
106
+ function mdyFormat() {
107
+ const isoDate = isoDateFormat();
108
+ if (!isoDate) return "";
109
+ const info = isoDate.split("-");
110
+ return `${info[1]}-${info[2]}-${info[0]}`;
111
+ }
112
+ //#endregion
113
+ exports.BaseFormatter = BaseFormatter;
114
+ exports.Formatter = Formatter;
115
+ exports.JSONFormatter = JSONFormatter;
116
+ exports.dmyFormat = dmyFormat;
117
+ exports.isoDateFormat = isoDateFormat;
118
+ exports.isoDateTimeFormat = isoDateTimeFormat;
119
+ exports.mdyFormat = mdyFormat;
@@ -0,0 +1,27 @@
1
+ import { LogDataType } from "../core/types.cjs";
2
+ import { DateFmtFnType } from "./types.cjs";
3
+
4
+ //#region src/lib/logging/formatter/index.d.ts
5
+ declare abstract class Formatter {
6
+ protected dateFmt: DateFmtFnType;
7
+ constructor(dateFmt: DateFmtFnType);
8
+ abstract format(logData: LogDataType): string;
9
+ abstract formatError(logData: LogDataType, error: Error): string;
10
+ }
11
+ declare class BaseFormatter extends Formatter {
12
+ constructor(dateFmt?: DateFmtFnType);
13
+ format(logData: LogDataType): string;
14
+ formatError(logData: LogDataType, error: Error): string;
15
+ }
16
+ declare class JSONFormatter extends Formatter {
17
+ constructor(dateFmt?: DateFmtFnType);
18
+ format(logData: LogDataType): string;
19
+ formatError(logData: LogDataType, error: Error): string;
20
+ }
21
+ declare function isoDateTimeFormat(): string;
22
+ declare function isoDateFormat(): string;
23
+ declare function dmyFormat(): string;
24
+ declare function mdyFormat(): string;
25
+ //#endregion
26
+ export { BaseFormatter, Formatter, JSONFormatter, dmyFormat, isoDateFormat, isoDateTimeFormat, mdyFormat };
27
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../../src/lib/logging/formatter/index.ts"],"mappings":";;;;uBAGsB,SAAA;EAAA,UACV,OAAA,EAAS,aAAA;cAEA,OAAA,EAAS,aAAA;EAAA,SAIZ,MAAA,CAAO,OAAA,EAAS,WAAA;EAAA,SAChB,WAAA,CAAY,OAAA,EAAS,WAAA,EAAa,KAAA,EAAO,KAAA;AAAA;AAAA,cAG9C,aAAA,SAAsB,SAAA;cACd,OAAA,GAAS,aAAA;EAIrB,MAAA,CAAO,OAAA,EAAS,WAAA;EAoBhB,WAAA,CAAY,OAAA,EAAS,WAAA,EAAa,KAAA,EAAO,KAAA;AAAA;AAAA,cA0BrC,aAAA,SAAsB,SAAA;cACd,OAAA,GAAS,aAAA;EAIrB,MAAA,CAAO,OAAA,EAAS,WAAA;EAwBhB,WAAA,CAAY,OAAA,EAAS,WAAA,EAAa,KAAA,EAAO,KAAA;AAAA;AAAA,iBAmClC,iBAAA,CAAA;AAAA,iBAIA,aAAA,CAAA;AAAA,iBAOA,SAAA,CAAA;AAAA,iBASA,SAAA,CAAA"}
@@ -0,0 +1,27 @@
1
+ import { LogDataType } from "../core/types.mjs";
2
+ import { DateFmtFnType } from "./types.mjs";
3
+
4
+ //#region src/lib/logging/formatter/index.d.ts
5
+ declare abstract class Formatter {
6
+ protected dateFmt: DateFmtFnType;
7
+ constructor(dateFmt: DateFmtFnType);
8
+ abstract format(logData: LogDataType): string;
9
+ abstract formatError(logData: LogDataType, error: Error): string;
10
+ }
11
+ declare class BaseFormatter extends Formatter {
12
+ constructor(dateFmt?: DateFmtFnType);
13
+ format(logData: LogDataType): string;
14
+ formatError(logData: LogDataType, error: Error): string;
15
+ }
16
+ declare class JSONFormatter extends Formatter {
17
+ constructor(dateFmt?: DateFmtFnType);
18
+ format(logData: LogDataType): string;
19
+ formatError(logData: LogDataType, error: Error): string;
20
+ }
21
+ declare function isoDateTimeFormat(): string;
22
+ declare function isoDateFormat(): string;
23
+ declare function dmyFormat(): string;
24
+ declare function mdyFormat(): string;
25
+ //#endregion
26
+ export { BaseFormatter, Formatter, JSONFormatter, dmyFormat, isoDateFormat, isoDateTimeFormat, mdyFormat };
27
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../src/lib/logging/formatter/index.ts"],"mappings":";;;;uBAGsB,SAAA;EAAA,UACV,OAAA,EAAS,aAAA;cAEA,OAAA,EAAS,aAAA;EAAA,SAIZ,MAAA,CAAO,OAAA,EAAS,WAAA;EAAA,SAChB,WAAA,CAAY,OAAA,EAAS,WAAA,EAAa,KAAA,EAAO,KAAA;AAAA;AAAA,cAG9C,aAAA,SAAsB,SAAA;cACd,OAAA,GAAS,aAAA;EAIrB,MAAA,CAAO,OAAA,EAAS,WAAA;EAoBhB,WAAA,CAAY,OAAA,EAAS,WAAA,EAAa,KAAA,EAAO,KAAA;AAAA;AAAA,cA0BrC,aAAA,SAAsB,SAAA;cACd,OAAA,GAAS,aAAA;EAIrB,MAAA,CAAO,OAAA,EAAS,WAAA;EAwBhB,WAAA,CAAY,OAAA,EAAS,WAAA,EAAa,KAAA,EAAO,KAAA;AAAA;AAAA,iBAmClC,iBAAA,CAAA;AAAA,iBAIA,aAAA,CAAA;AAAA,iBAOA,SAAA,CAAA;AAAA,iBASA,SAAA,CAAA"}
@@ -0,0 +1,115 @@
1
+ //#region src/lib/logging/formatter/index.ts
2
+ var Formatter = class {
3
+ dateFmt;
4
+ constructor(dateFmt) {
5
+ this.dateFmt = dateFmt;
6
+ }
7
+ };
8
+ var BaseFormatter = class extends Formatter {
9
+ constructor(dateFmt = isoDateTimeFormat) {
10
+ super(dateFmt);
11
+ }
12
+ format(logData) {
13
+ let { prefix, level, msg, fileName, row, column, method } = logData;
14
+ const timestamp = this.dateFmt();
15
+ const levelType = level.toUpperCase();
16
+ if (typeof msg === "object") msg = JSON.stringify(msg);
17
+ const fileData = `${prefix}/${fileName}:${row}:${column}`;
18
+ let header = `[${levelType}]`;
19
+ if (method) header = `${header}\t[${method}]\t[${fileData}]`;
20
+ else header = `${header}\t[${fileData}]`;
21
+ return `${timestamp} ${header} : ${msg}`;
22
+ }
23
+ formatError(logData, error) {
24
+ const { prefix, fileName, row, column, method } = logData;
25
+ const timestamp = this.dateFmt();
26
+ const fileData = `${prefix}/${fileName}:${row}:${column}`;
27
+ let errorMsg = `Error name="${error.name}" Error message="${error.message}"`;
28
+ let header = "[ERROR]";
29
+ if (method) header = `${header}\t[${method}]\t[${fileData}]`;
30
+ else header = `${header}\t[${fileData}]`;
31
+ if (error.cause) errorMsg = `${errorMsg}\n\tError cause="${error.cause}"`;
32
+ if (error.stack) errorMsg = `${errorMsg}\n\tStack trace="${error.stack}"`;
33
+ return `${timestamp} ${header} : ${errorMsg}`;
34
+ }
35
+ };
36
+ var JSONFormatter = class extends Formatter {
37
+ constructor(dateFmt = isoDateTimeFormat) {
38
+ super(dateFmt);
39
+ }
40
+ format(logData) {
41
+ const { prefix, level, msg, fileName, row, column, method } = logData;
42
+ const timestamp = this.dateFmt();
43
+ const levelType = level.toUpperCase();
44
+ let position = {};
45
+ if (method) position = { method };
46
+ position = {
47
+ ...position,
48
+ fileName,
49
+ row,
50
+ column
51
+ };
52
+ return JSON.stringify({
53
+ timestamp,
54
+ level: levelType,
55
+ prefix,
56
+ position,
57
+ msg
58
+ });
59
+ }
60
+ formatError(logData, error) {
61
+ const { prefix, fileName, row, column, method } = logData;
62
+ const timestamp = this.dateFmt();
63
+ let errorMsg = {
64
+ errorName: error.name,
65
+ errorMessage: error.message
66
+ };
67
+ let position = {};
68
+ if (method) position = { method };
69
+ position = {
70
+ ...position,
71
+ fileName,
72
+ row,
73
+ column
74
+ };
75
+ if (error.cause) errorMsg = {
76
+ ...errorMsg,
77
+ errorCause: error.cause
78
+ };
79
+ if (error.stack) errorMsg = {
80
+ ...errorMsg,
81
+ stackTrace: error.stack
82
+ };
83
+ return JSON.stringify({
84
+ timestamp,
85
+ level: "ERROR",
86
+ prefix,
87
+ position,
88
+ msg: errorMsg
89
+ });
90
+ }
91
+ };
92
+ function isoDateTimeFormat() {
93
+ return (/* @__PURE__ */ new Date()).toISOString();
94
+ }
95
+ function isoDateFormat() {
96
+ const date = isoDateTimeFormat().split("T")[0];
97
+ if (!date) return "";
98
+ return date;
99
+ }
100
+ function dmyFormat() {
101
+ const isoDate = isoDateFormat();
102
+ if (!isoDate) return "";
103
+ const info = isoDate.split("-");
104
+ return `${info[2]}-${info[1]}-${info[0]}`;
105
+ }
106
+ function mdyFormat() {
107
+ const isoDate = isoDateFormat();
108
+ if (!isoDate) return "";
109
+ const info = isoDate.split("-");
110
+ return `${info[1]}-${info[2]}-${info[0]}`;
111
+ }
112
+ //#endregion
113
+ export { BaseFormatter, Formatter, JSONFormatter, dmyFormat, isoDateFormat, isoDateTimeFormat, mdyFormat };
114
+
115
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/lib/logging/formatter/index.ts"],"sourcesContent":["import type { LogDataType } from \"../core/types.js\";\nimport type { DateFmtFnType } from \"./types.js\";\n\nexport abstract class Formatter {\n protected dateFmt: DateFmtFnType;\n\n public constructor(dateFmt: DateFmtFnType) {\n this.dateFmt = dateFmt;\n }\n\n public abstract format(logData: LogDataType): string;\n public abstract formatError(logData: LogDataType, error: Error): string;\n}\n\nexport class BaseFormatter extends Formatter {\n public constructor(dateFmt: DateFmtFnType = isoDateTimeFormat) {\n super(dateFmt);\n }\n\n public format(logData: LogDataType): string {\n let { prefix, level, msg, fileName, row, column, method } = logData;\n const timestamp = this.dateFmt();\n const levelType = level.toUpperCase();\n if (typeof msg === \"object\") {\n msg = JSON.stringify(msg);\n }\n\n const fileData = `${prefix}/${fileName}:${row}:${column}`;\n let header = `[${levelType}]`;\n\n if (method) {\n header = `${header}\\t[${method}]\\t[${fileData}]`;\n } else {\n header = `${header}\\t[${fileData}]`;\n }\n\n return `${timestamp} ${header} : ${msg}`;\n }\n\n public formatError(logData: LogDataType, error: Error): string {\n const { prefix, fileName, row, column, method } = logData;\n const timestamp = this.dateFmt();\n\n const fileData = `${prefix}/${fileName}:${row}:${column}`;\n let errorMsg = `Error name=\"${error.name}\" Error message=\"${error.message}\"`;\n let header = \"[ERROR]\";\n\n if (method) {\n header = `${header}\\t[${method}]\\t[${fileData}]`;\n } else {\n header = `${header}\\t[${fileData}]`;\n }\n\n if (error.cause) {\n errorMsg = `${errorMsg}\\n\\tError cause=\"${error.cause}\"`;\n }\n\n if (error.stack) {\n errorMsg = `${errorMsg}\\n\\tStack trace=\"${error.stack}\"`;\n }\n\n return `${timestamp} ${header} : ${errorMsg}`;\n }\n}\n\nexport class JSONFormatter extends Formatter {\n public constructor(dateFmt: DateFmtFnType = isoDateTimeFormat) {\n super(dateFmt);\n }\n\n public format(logData: LogDataType): string {\n const { prefix, level, msg, fileName, row, column, method } = logData;\n const timestamp = this.dateFmt();\n const levelType = level.toUpperCase();\n\n let position: Record<string, string | undefined> = {};\n\n if (method) {\n position = { method };\n }\n\n position = { ...position, fileName, row, column };\n\n const data = {\n timestamp,\n level: levelType,\n prefix,\n position,\n msg,\n };\n\n return JSON.stringify(data);\n }\n\n public formatError(logData: LogDataType, error: Error): string {\n const { prefix, fileName, row, column, method } = logData;\n const timestamp = this.dateFmt();\n let errorMsg: Record<string, unknown> = {\n errorName: error.name,\n errorMessage: error.message,\n };\n let position: Record<string, string | undefined> = {};\n\n if (method) {\n position = { method };\n }\n\n position = { ...position, fileName, row, column };\n\n if (error.cause) {\n errorMsg = { ...errorMsg, errorCause: error.cause };\n }\n\n if (error.stack) {\n errorMsg = { ...errorMsg, stackTrace: error.stack };\n }\n\n const data = {\n timestamp,\n level: \"ERROR\",\n prefix,\n position,\n msg: errorMsg,\n };\n\n return JSON.stringify(data);\n }\n}\n\nexport function isoDateTimeFormat() {\n return new Date().toISOString();\n}\n\nexport function isoDateFormat() {\n const date = isoDateTimeFormat().split(\"T\")[0];\n if (!date) return \"\";\n\n return date;\n}\n\nexport function dmyFormat() {\n const isoDate = isoDateFormat();\n if (!isoDate) return \"\";\n\n const info = isoDate.split(\"-\");\n\n return `${info[2]}-${info[1]}-${info[0]}`;\n}\n\nexport function mdyFormat() {\n const isoDate = isoDateFormat();\n if (!isoDate) return \"\";\n\n const info = isoDate.split(\"-\");\n\n return `${info[1]}-${info[2]}-${info[0]}`;\n}\n"],"mappings":"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"}