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,5 @@
1
+ //#region src/lib/logging/formatter/types.d.ts
2
+ type DateFmtFnType = () => string;
3
+ //#endregion
4
+ export { DateFmtFnType };
5
+ //# sourceMappingURL=types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.cts","names":[],"sources":["../../../src/lib/logging/formatter/types.ts"],"mappings":";KAAY,aAAA"}
@@ -0,0 +1,5 @@
1
+ //#region src/lib/logging/formatter/types.d.ts
2
+ type DateFmtFnType = () => string;
3
+ //#endregion
4
+ export { DateFmtFnType };
5
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../../../src/lib/logging/formatter/types.ts"],"mappings":";KAAY,aAAA"}
@@ -0,0 +1,165 @@
1
+ const require_lib_errors_index = require("../../lib/errors/index.cjs");
2
+ const require_index = require("../formatter/index.cjs");
3
+ const require_index$1 = require("../core/index.cjs");
4
+ const require_types = require("../core/types.cjs");
5
+ let node_path = require("node:path");
6
+ let node_fs = require("node:fs");
7
+ //#region src/lib/logging/provider/index.ts
8
+ const DEFAULT_MAX_SIZE = 4 * 1024;
9
+ const DurationUnit = {
10
+ hour: 1e3 * 60 * 60,
11
+ day: 1e3 * 60 * 60 * 24,
12
+ week: 1e3 * 60 * 60 * 24 * 7,
13
+ month: 1e3 * 60 * 60 * 24 * 7 * 4.345
14
+ };
15
+ var LoggerProvider = class {
16
+ options;
17
+ constructor(options = require_index$1.PROVIDER_OPTION_DEFAULT) {
18
+ this.options = {
19
+ ...require_index$1.PROVIDER_OPTION_DEFAULT,
20
+ ...options
21
+ };
22
+ }
23
+ getLogLevel() {
24
+ if (!this.options.level) return require_types.LogLevel.debug;
25
+ return require_types.LogLevel[this.options.level];
26
+ }
27
+ };
28
+ const FILE_PROVIDER_OPTION_DEFAULT = {
29
+ ...require_index$1.PROVIDER_OPTION_DEFAULT,
30
+ policy: { type: "size" }
31
+ };
32
+ var FileProvider = class extends LoggerProvider {
33
+ filePath;
34
+ counter;
35
+ file;
36
+ policy;
37
+ constructor(file, options = FILE_PROVIDER_OPTION_DEFAULT) {
38
+ super({
39
+ formatter: options.formatter ?? require_index$1.PROVIDER_OPTION_DEFAULT.formatter,
40
+ level: options.level ?? require_index$1.PROVIDER_OPTION_DEFAULT.level
41
+ });
42
+ this.policy = options.policy ?? FILE_PROVIDER_OPTION_DEFAULT.policy;
43
+ this.filePath = file;
44
+ this.counter = 0;
45
+ this.file = this.createNewFileName();
46
+ }
47
+ execute(data) {
48
+ if (this.getLogLevel() > require_types.LogLevel[data.level]) return;
49
+ const [error, formattedMessage] = require_lib_errors_index.mightThrowSync(() => {
50
+ if (this.isJSONFile()) return JSON.stringify({
51
+ timestamp: require_index.isoDateTimeFormat(),
52
+ level: data.level,
53
+ message: data.msg
54
+ });
55
+ const { formatter } = this.options;
56
+ return formatter?.format(data) ?? "";
57
+ });
58
+ const [fsError] = require_lib_errors_index.mightThrowSync(() => {
59
+ if (error && error instanceof Error) {
60
+ const { formatter } = this.options;
61
+ const errorMsg = formatter?.formatError(data, error);
62
+ (0, node_fs.appendFileSync)(this.file, `${errorMsg}\n`);
63
+ }
64
+ if (this.canRollFile()) {
65
+ this.counter += 1;
66
+ this.file = this.createNewFileName();
67
+ }
68
+ if (error || !formattedMessage) return;
69
+ (0, node_fs.appendFileSync)(this.file, `${formattedMessage}\n`);
70
+ });
71
+ if (fsError && fsError instanceof Error) throw fsError;
72
+ }
73
+ canRollFile() {
74
+ if (!this.policy) return false;
75
+ switch (this.policy.type) {
76
+ case "size":
77
+ if (this.policy.maxSize) return this.getFileSize() >= this.policy.maxSize;
78
+ return this.getFileSize() >= DEFAULT_MAX_SIZE;
79
+ case "time": {
80
+ if (!(0, node_fs.existsSync)(this.file)) return false;
81
+ const { duration, instant } = this.policy;
82
+ const { birthtime } = (0, node_fs.statSync)(this.file);
83
+ const creationTimeMs = birthtime.getTime();
84
+ const currenTimeMs = Date.now();
85
+ const diffMs = currenTimeMs - creationTimeMs;
86
+ switch (instant) {
87
+ case "hour": return Math.floor(diffMs / DurationUnit.hour) >= duration;
88
+ case "day": return Math.floor(diffMs / DurationUnit.day) >= duration;
89
+ case "week": return Math.floor(diffMs / DurationUnit.week) >= duration;
90
+ case "month": {
91
+ const currentDate = new Date(currenTimeMs);
92
+ const monthsDiff = (currentDate.getFullYear() - birthtime.getFullYear()) * 12 + (currentDate.getMonth() - birthtime.getMonth());
93
+ return (currentDate.getDate() >= birthtime.getDate() ? monthsDiff : monthsDiff - 1) >= duration;
94
+ }
95
+ }
96
+ }
97
+ }
98
+ }
99
+ getFileSize() {
100
+ if (!(0, node_fs.existsSync)(this.file)) return 0;
101
+ const [statError, size] = require_lib_errors_index.mightThrowSync(() => {
102
+ const { size } = (0, node_fs.statSync)(this.file);
103
+ return size;
104
+ });
105
+ if (statError && statError instanceof Error) return 0;
106
+ if (!size) return 0;
107
+ return size;
108
+ }
109
+ isJSONFile() {
110
+ return (0, node_path.extname)(this.filePath) === ".json";
111
+ }
112
+ createNewFileName() {
113
+ const fileName = (0, node_path.basename)(this.filePath);
114
+ const directory = (0, node_path.dirname)(this.filePath);
115
+ if (!(0, node_fs.existsSync)(directory)) (0, node_fs.mkdirSync)(directory, { recursive: true });
116
+ const fileInfo = fileName.split(".");
117
+ const extension = fileInfo.pop();
118
+ return (0, node_path.join)(directory, [
119
+ ...fileInfo,
120
+ this.counter,
121
+ extension
122
+ ].join("."));
123
+ }
124
+ };
125
+ var ConsoleProvider = class extends LoggerProvider {
126
+ execute(data) {
127
+ const level = this.getLogLevel();
128
+ const userLevel = require_types.LogLevel[data.level];
129
+ if (level > userLevel) return;
130
+ const [error, formattedMessage] = require_lib_errors_index.mightThrowSync(() => {
131
+ const { formatter } = this.options;
132
+ return formatter?.format(data) ?? "";
133
+ });
134
+ if (error && error instanceof Error) {
135
+ const { formatter } = this.options;
136
+ console.error(formatter?.formatError(data, error));
137
+ return;
138
+ }
139
+ if (!formattedMessage) return;
140
+ switch (userLevel) {
141
+ case require_types.LogLevel.debug:
142
+ console.debug(formattedMessage);
143
+ break;
144
+ case require_types.LogLevel.info:
145
+ console.info(formattedMessage);
146
+ break;
147
+ case require_types.LogLevel.warning:
148
+ console.warn(formattedMessage);
149
+ break;
150
+ case require_types.LogLevel.error:
151
+ console.error(formattedMessage);
152
+ break;
153
+ case require_types.LogLevel.critical:
154
+ console.error(formattedMessage);
155
+ break;
156
+ default:
157
+ console.debug(formattedMessage);
158
+ break;
159
+ }
160
+ }
161
+ };
162
+ //#endregion
163
+ exports.ConsoleProvider = ConsoleProvider;
164
+ exports.FileProvider = FileProvider;
165
+ exports.LoggerProvider = LoggerProvider;
@@ -0,0 +1,28 @@
1
+ import { LogDataType } from "../core/types.cjs";
2
+ import { FileProviderOptions, ProviderOptions } from "./types.cjs";
3
+
4
+ //#region src/lib/logging/provider/index.d.ts
5
+ declare abstract class LoggerProvider {
6
+ protected options: ProviderOptions;
7
+ constructor(options?: ProviderOptions);
8
+ abstract execute(data: LogDataType): void;
9
+ getLogLevel(): number;
10
+ }
11
+ declare class FileProvider extends LoggerProvider {
12
+ private readonly filePath;
13
+ private counter;
14
+ private file;
15
+ private policy?;
16
+ constructor(file: string, options?: FileProviderOptions);
17
+ execute(data: LogDataType): void;
18
+ private canRollFile;
19
+ private getFileSize;
20
+ private isJSONFile;
21
+ private createNewFileName;
22
+ }
23
+ declare class ConsoleProvider extends LoggerProvider {
24
+ execute(data: LogDataType): void;
25
+ }
26
+ //#endregion
27
+ export { ConsoleProvider, FileProvider, LoggerProvider };
28
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../../src/lib/logging/provider/index.ts"],"mappings":";;;;uBAuBsB,cAAA;EAAA,UACV,OAAA,EAAS,eAAA;cAEA,OAAA,GAAS,eAAA;EAAA,SAIZ,OAAA,CAAQ,IAAA,EAAM,WAAA;EAEvB,WAAA,CAAA;AAAA;AAAA,cAcI,YAAA,SAAqB,cAAA;EAAA,iBACf,QAAA;EAAA,QAET,OAAA;EAAA,QACA,IAAA;EAAA,QACA,MAAA;cAGN,IAAA,UACA,OAAA,GAAS,mBAAA;EAaJ,OAAA,CAAQ,IAAA,EAAM,WAAA;EAAA,QAuCb,WAAA;EAAA,QA6CA,WAAA;EAAA,QAmBA,UAAA;EAAA,QAIA,iBAAA;AAAA;AAAA,cAgBG,eAAA,SAAwB,cAAA;EAC5B,OAAA,CAAQ,IAAA,EAAM,WAAA;AAAA"}
@@ -0,0 +1,28 @@
1
+ import { LogDataType } from "../core/types.mjs";
2
+ import { FileProviderOptions, ProviderOptions } from "./types.mjs";
3
+
4
+ //#region src/lib/logging/provider/index.d.ts
5
+ declare abstract class LoggerProvider {
6
+ protected options: ProviderOptions;
7
+ constructor(options?: ProviderOptions);
8
+ abstract execute(data: LogDataType): void;
9
+ getLogLevel(): number;
10
+ }
11
+ declare class FileProvider extends LoggerProvider {
12
+ private readonly filePath;
13
+ private counter;
14
+ private file;
15
+ private policy?;
16
+ constructor(file: string, options?: FileProviderOptions);
17
+ execute(data: LogDataType): void;
18
+ private canRollFile;
19
+ private getFileSize;
20
+ private isJSONFile;
21
+ private createNewFileName;
22
+ }
23
+ declare class ConsoleProvider extends LoggerProvider {
24
+ execute(data: LogDataType): void;
25
+ }
26
+ //#endregion
27
+ export { ConsoleProvider, FileProvider, LoggerProvider };
28
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../src/lib/logging/provider/index.ts"],"mappings":";;;;uBAuBsB,cAAA;EAAA,UACV,OAAA,EAAS,eAAA;cAEA,OAAA,GAAS,eAAA;EAAA,SAIZ,OAAA,CAAQ,IAAA,EAAM,WAAA;EAEvB,WAAA,CAAA;AAAA;AAAA,cAcI,YAAA,SAAqB,cAAA;EAAA,iBACf,QAAA;EAAA,QAET,OAAA;EAAA,QACA,IAAA;EAAA,QACA,MAAA;cAGN,IAAA,UACA,OAAA,GAAS,mBAAA;EAaJ,OAAA,CAAQ,IAAA,EAAM,WAAA;EAAA,QAuCb,WAAA;EAAA,QA6CA,WAAA;EAAA,QAmBA,UAAA;EAAA,QAIA,iBAAA;AAAA;AAAA,cAgBG,eAAA,SAAwB,cAAA;EAC5B,OAAA,CAAQ,IAAA,EAAM,WAAA;AAAA"}
@@ -0,0 +1,165 @@
1
+ import { mightThrowSync } from "../../lib/errors/index.mjs";
2
+ import { isoDateTimeFormat } from "../formatter/index.mjs";
3
+ import { PROVIDER_OPTION_DEFAULT } from "../core/index.mjs";
4
+ import { LogLevel } from "../core/types.mjs";
5
+ import { basename, dirname, extname, join } from "node:path";
6
+ import { appendFileSync, existsSync, mkdirSync, statSync } from "node:fs";
7
+ //#region src/lib/logging/provider/index.ts
8
+ const DEFAULT_MAX_SIZE = 4 * 1024;
9
+ const DurationUnit = {
10
+ hour: 1e3 * 60 * 60,
11
+ day: 1e3 * 60 * 60 * 24,
12
+ week: 1e3 * 60 * 60 * 24 * 7,
13
+ month: 1e3 * 60 * 60 * 24 * 7 * 4.345
14
+ };
15
+ var LoggerProvider = class {
16
+ options;
17
+ constructor(options = PROVIDER_OPTION_DEFAULT) {
18
+ this.options = {
19
+ ...PROVIDER_OPTION_DEFAULT,
20
+ ...options
21
+ };
22
+ }
23
+ getLogLevel() {
24
+ if (!this.options.level) return LogLevel.debug;
25
+ return LogLevel[this.options.level];
26
+ }
27
+ };
28
+ const FILE_PROVIDER_OPTION_DEFAULT = {
29
+ ...PROVIDER_OPTION_DEFAULT,
30
+ policy: { type: "size" }
31
+ };
32
+ var FileProvider = class extends LoggerProvider {
33
+ filePath;
34
+ counter;
35
+ file;
36
+ policy;
37
+ constructor(file, options = FILE_PROVIDER_OPTION_DEFAULT) {
38
+ super({
39
+ formatter: options.formatter ?? PROVIDER_OPTION_DEFAULT.formatter,
40
+ level: options.level ?? PROVIDER_OPTION_DEFAULT.level
41
+ });
42
+ this.policy = options.policy ?? FILE_PROVIDER_OPTION_DEFAULT.policy;
43
+ this.filePath = file;
44
+ this.counter = 0;
45
+ this.file = this.createNewFileName();
46
+ }
47
+ execute(data) {
48
+ if (this.getLogLevel() > LogLevel[data.level]) return;
49
+ const [error, formattedMessage] = mightThrowSync(() => {
50
+ if (this.isJSONFile()) return JSON.stringify({
51
+ timestamp: isoDateTimeFormat(),
52
+ level: data.level,
53
+ message: data.msg
54
+ });
55
+ const { formatter } = this.options;
56
+ return formatter?.format(data) ?? "";
57
+ });
58
+ const [fsError] = mightThrowSync(() => {
59
+ if (error && error instanceof Error) {
60
+ const { formatter } = this.options;
61
+ const errorMsg = formatter?.formatError(data, error);
62
+ appendFileSync(this.file, `${errorMsg}\n`);
63
+ }
64
+ if (this.canRollFile()) {
65
+ this.counter += 1;
66
+ this.file = this.createNewFileName();
67
+ }
68
+ if (error || !formattedMessage) return;
69
+ appendFileSync(this.file, `${formattedMessage}\n`);
70
+ });
71
+ if (fsError && fsError instanceof Error) throw fsError;
72
+ }
73
+ canRollFile() {
74
+ if (!this.policy) return false;
75
+ switch (this.policy.type) {
76
+ case "size":
77
+ if (this.policy.maxSize) return this.getFileSize() >= this.policy.maxSize;
78
+ return this.getFileSize() >= DEFAULT_MAX_SIZE;
79
+ case "time": {
80
+ if (!existsSync(this.file)) return false;
81
+ const { duration, instant } = this.policy;
82
+ const { birthtime } = statSync(this.file);
83
+ const creationTimeMs = birthtime.getTime();
84
+ const currenTimeMs = Date.now();
85
+ const diffMs = currenTimeMs - creationTimeMs;
86
+ switch (instant) {
87
+ case "hour": return Math.floor(diffMs / DurationUnit.hour) >= duration;
88
+ case "day": return Math.floor(diffMs / DurationUnit.day) >= duration;
89
+ case "week": return Math.floor(diffMs / DurationUnit.week) >= duration;
90
+ case "month": {
91
+ const currentDate = new Date(currenTimeMs);
92
+ const monthsDiff = (currentDate.getFullYear() - birthtime.getFullYear()) * 12 + (currentDate.getMonth() - birthtime.getMonth());
93
+ return (currentDate.getDate() >= birthtime.getDate() ? monthsDiff : monthsDiff - 1) >= duration;
94
+ }
95
+ }
96
+ }
97
+ }
98
+ }
99
+ getFileSize() {
100
+ if (!existsSync(this.file)) return 0;
101
+ const [statError, size] = mightThrowSync(() => {
102
+ const { size } = statSync(this.file);
103
+ return size;
104
+ });
105
+ if (statError && statError instanceof Error) return 0;
106
+ if (!size) return 0;
107
+ return size;
108
+ }
109
+ isJSONFile() {
110
+ return extname(this.filePath) === ".json";
111
+ }
112
+ createNewFileName() {
113
+ const fileName = basename(this.filePath);
114
+ const directory = dirname(this.filePath);
115
+ if (!existsSync(directory)) mkdirSync(directory, { recursive: true });
116
+ const fileInfo = fileName.split(".");
117
+ const extension = fileInfo.pop();
118
+ return join(directory, [
119
+ ...fileInfo,
120
+ this.counter,
121
+ extension
122
+ ].join("."));
123
+ }
124
+ };
125
+ var ConsoleProvider = class extends LoggerProvider {
126
+ execute(data) {
127
+ const level = this.getLogLevel();
128
+ const userLevel = LogLevel[data.level];
129
+ if (level > userLevel) return;
130
+ const [error, formattedMessage] = mightThrowSync(() => {
131
+ const { formatter } = this.options;
132
+ return formatter?.format(data) ?? "";
133
+ });
134
+ if (error && error instanceof Error) {
135
+ const { formatter } = this.options;
136
+ console.error(formatter?.formatError(data, error));
137
+ return;
138
+ }
139
+ if (!formattedMessage) return;
140
+ switch (userLevel) {
141
+ case LogLevel.debug:
142
+ console.debug(formattedMessage);
143
+ break;
144
+ case LogLevel.info:
145
+ console.info(formattedMessage);
146
+ break;
147
+ case LogLevel.warning:
148
+ console.warn(formattedMessage);
149
+ break;
150
+ case LogLevel.error:
151
+ console.error(formattedMessage);
152
+ break;
153
+ case LogLevel.critical:
154
+ console.error(formattedMessage);
155
+ break;
156
+ default:
157
+ console.debug(formattedMessage);
158
+ break;
159
+ }
160
+ }
161
+ };
162
+ //#endregion
163
+ export { ConsoleProvider, FileProvider, LoggerProvider };
164
+
165
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/lib/logging/provider/index.ts"],"sourcesContent":["import { appendFileSync, existsSync, mkdirSync, statSync } from \"node:fs\";\nimport { basename, dirname, extname, join } from \"node:path\";\nimport { mightThrowSync } from \"../../errors/index.js\";\nimport { PROVIDER_OPTION_DEFAULT } from \"../core/index.js\";\n\nimport { type LogDataType, LogLevel } from \"../core/types.js\";\nimport { isoDateTimeFormat } from \"../formatter/index.js\";\nimport type {\n FileProviderOptions,\n ProviderOptions,\n SizeBasedPolicyType,\n TimeBasedPolicyType,\n} from \"./types.js\";\n\nconst DEFAULT_MAX_SIZE = 4 * 1024; // 4KB\n\nconst DurationUnit = {\n hour: 1000 * 60 * 60,\n day: 1000 * 60 * 60 * 24,\n week: 1000 * 60 * 60 * 24 * 7,\n month: 1000 * 60 * 60 * 24 * 7 * 4.345, // On average 1 month has 4,345 weeks\n} as const;\n\nexport abstract class LoggerProvider {\n protected options: ProviderOptions;\n\n public constructor(options: ProviderOptions = PROVIDER_OPTION_DEFAULT) {\n this.options = { ...PROVIDER_OPTION_DEFAULT, ...options };\n }\n\n public abstract execute(data: LogDataType): void;\n\n public getLogLevel(): number {\n if (!this.options.level) {\n return LogLevel.debug;\n }\n\n return LogLevel[this.options.level];\n }\n}\n\nconst FILE_PROVIDER_OPTION_DEFAULT: FileProviderOptions = {\n ...PROVIDER_OPTION_DEFAULT,\n policy: { type: \"size\" },\n} as const;\n\nexport class FileProvider extends LoggerProvider {\n private readonly filePath: string;\n\n private counter: number;\n private file: string;\n private policy?: SizeBasedPolicyType | TimeBasedPolicyType;\n\n public constructor(\n file: string,\n options: FileProviderOptions = FILE_PROVIDER_OPTION_DEFAULT,\n ) {\n super({\n formatter: options.formatter ?? PROVIDER_OPTION_DEFAULT.formatter,\n level: options.level ?? PROVIDER_OPTION_DEFAULT.level,\n });\n this.policy = options.policy ?? FILE_PROVIDER_OPTION_DEFAULT.policy;\n\n this.filePath = file;\n this.counter = 0;\n this.file = this.createNewFileName();\n }\n\n public execute(data: LogDataType): void {\n const level = this.getLogLevel();\n const userLevel = LogLevel[data.level];\n if (level > userLevel) return;\n\n const [error, formattedMessage] = mightThrowSync(() => {\n if (this.isJSONFile()) {\n return JSON.stringify({\n timestamp: isoDateTimeFormat(),\n level: data.level,\n message: data.msg,\n });\n }\n\n const { formatter } = this.options;\n return formatter?.format(data) ?? \"\";\n });\n\n const [fsError] = mightThrowSync(() => {\n if (error && error instanceof Error) {\n const { formatter } = this.options;\n const errorMsg = formatter?.formatError(data, error);\n appendFileSync(this.file, `${errorMsg}\\n`);\n }\n\n if (this.canRollFile()) {\n this.counter += 1;\n this.file = this.createNewFileName();\n }\n\n if (error || !formattedMessage) return;\n appendFileSync(this.file, `${formattedMessage}\\n`);\n });\n\n if (fsError && fsError instanceof Error) {\n throw fsError;\n }\n }\n\n private canRollFile() {\n if (!this.policy) return false;\n\n switch (this.policy.type) {\n case \"size\": {\n if (this.policy.maxSize) {\n return this.getFileSize() >= this.policy.maxSize;\n }\n\n return this.getFileSize() >= DEFAULT_MAX_SIZE;\n }\n case \"time\": {\n if (!existsSync(this.file)) return false;\n\n const { duration, instant } = this.policy;\n const { birthtime } = statSync(this.file);\n const creationTimeMs = birthtime.getTime();\n const currenTimeMs = Date.now();\n const diffMs = currenTimeMs - creationTimeMs;\n\n switch (instant) {\n case \"hour\":\n return Math.floor(diffMs / DurationUnit.hour) >= duration;\n case \"day\":\n return Math.floor(diffMs / DurationUnit.day) >= duration;\n case \"week\":\n return Math.floor(diffMs / DurationUnit.week) >= duration;\n case \"month\": {\n const currentDate = new Date(currenTimeMs);\n const monthsDiff =\n (currentDate.getFullYear() - birthtime.getFullYear()) * 12 +\n (currentDate.getMonth() - birthtime.getMonth());\n\n const adjustedDiff =\n currentDate.getDate() >= birthtime.getDate()\n ? monthsDiff\n : monthsDiff - 1;\n\n return adjustedDiff >= duration;\n }\n }\n }\n }\n }\n\n private getFileSize() {\n if (!existsSync(this.file)) {\n return 0;\n }\n\n const [statError, size] = mightThrowSync(() => {\n const { size } = statSync(this.file);\n return size;\n });\n\n if (statError && statError instanceof Error) {\n return 0;\n }\n\n if (!size) return 0;\n\n return size;\n }\n\n private isJSONFile() {\n return extname(this.filePath) === \".json\";\n }\n\n private createNewFileName() {\n const fileName = basename(this.filePath);\n const directory = dirname(this.filePath);\n\n if (!existsSync(directory)) {\n mkdirSync(directory, { recursive: true });\n }\n\n const fileInfo = fileName.split(\".\");\n const extension = fileInfo.pop();\n const newFileName = [...fileInfo, this.counter, extension].join(\".\");\n\n return join(directory, newFileName);\n }\n}\n\nexport class ConsoleProvider extends LoggerProvider {\n public execute(data: LogDataType): void {\n const level = this.getLogLevel();\n const userLevel = LogLevel[data.level];\n if (level > userLevel) return;\n\n const [error, formattedMessage] = mightThrowSync(() => {\n const { formatter } = this.options;\n return formatter?.format(data) ?? \"\";\n });\n\n // biome-ignore-start lint/suspicious/noConsole: function used for the correct\n // functionality of the logger\n if (error && error instanceof Error) {\n const { formatter } = this.options;\n console.error(formatter?.formatError(data, error));\n\n return;\n }\n\n if (!formattedMessage) return;\n\n switch (userLevel) {\n case LogLevel.debug:\n console.debug(formattedMessage);\n break;\n case LogLevel.info:\n console.info(formattedMessage);\n break;\n case LogLevel.warning:\n console.warn(formattedMessage);\n break;\n case LogLevel.error:\n console.error(formattedMessage);\n break;\n case LogLevel.critical:\n console.error(formattedMessage);\n break;\n default:\n console.debug(formattedMessage);\n break;\n }\n // biome-ignore-end lint/suspicious/noConsole: function used for the correct\n // functionality of the logger\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { LogLevelType } from "../core/types.cjs";
2
+ import { Formatter } from "../formatter/index.cjs";
3
+
4
+ //#region src/lib/logging/provider/types.d.ts
5
+ type ProviderOptions = {
6
+ level?: LogLevelType;
7
+ formatter?: Formatter;
8
+ };
9
+ interface SizeBasedPolicyType {
10
+ type: "size";
11
+ maxSize?: number;
12
+ }
13
+ interface TimeBasedPolicyType {
14
+ type: "time";
15
+ instant: "hour" | "day" | "week" | "month";
16
+ duration: number;
17
+ }
18
+ type FileProviderOptions = ProviderOptions & {
19
+ policy?: SizeBasedPolicyType | TimeBasedPolicyType;
20
+ };
21
+ //#endregion
22
+ export { FileProviderOptions, ProviderOptions, SizeBasedPolicyType, TimeBasedPolicyType };
23
+ //# sourceMappingURL=types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.cts","names":[],"sources":["../../../src/lib/logging/provider/types.ts"],"mappings":";;;;KAGY,eAAA;EACV,KAAA,GAAQ,YAAA;EACR,SAAA,GAAY,SAAA;AAAA;AAAA,UAGG,mBAAA;EACf,IAAA;EACA,OAAA;AAAA;AAAA,UAGe,mBAAA;EACf,IAAA;EACA,OAAA;EACA,QAAA;AAAA;AAAA,KAGU,mBAAA,GAAsB,eAAA;EAChC,MAAA,GAAS,mBAAA,GAAsB,mBAAA;AAAA"}
@@ -0,0 +1,23 @@
1
+ import { LogLevelType } from "../core/types.mjs";
2
+ import { Formatter } from "../formatter/index.mjs";
3
+
4
+ //#region src/lib/logging/provider/types.d.ts
5
+ type ProviderOptions = {
6
+ level?: LogLevelType;
7
+ formatter?: Formatter;
8
+ };
9
+ interface SizeBasedPolicyType {
10
+ type: "size";
11
+ maxSize?: number;
12
+ }
13
+ interface TimeBasedPolicyType {
14
+ type: "time";
15
+ instant: "hour" | "day" | "week" | "month";
16
+ duration: number;
17
+ }
18
+ type FileProviderOptions = ProviderOptions & {
19
+ policy?: SizeBasedPolicyType | TimeBasedPolicyType;
20
+ };
21
+ //#endregion
22
+ export { FileProviderOptions, ProviderOptions, SizeBasedPolicyType, TimeBasedPolicyType };
23
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../../../src/lib/logging/provider/types.ts"],"mappings":";;;;KAGY,eAAA;EACV,KAAA,GAAQ,YAAA;EACR,SAAA,GAAY,SAAA;AAAA;AAAA,UAGG,mBAAA;EACf,IAAA;EACA,OAAA;AAAA;AAAA,UAGe,mBAAA;EACf,IAAA;EACA,OAAA;EACA,QAAA;AAAA;AAAA,KAGU,mBAAA,GAAsB,eAAA;EAChC,MAAA,GAAS,mBAAA,GAAsB,mBAAA;AAAA"}
@@ -0,0 +1,137 @@
1
+ //#region src/lib/orm/column.ts
2
+ var ColumnDef = class ColumnDef {
3
+ constructor(kind, meta) {
4
+ this.kind = kind;
5
+ this.meta = meta;
6
+ }
7
+ primaryKey() {
8
+ return new ColumnDef(this.kind, {
9
+ ...this.meta,
10
+ isPrimaryKey: true,
11
+ isNotNull: true
12
+ });
13
+ }
14
+ asArray() {
15
+ return new ColumnDef(this.kind, {
16
+ ...this.meta,
17
+ isSqlArray: true
18
+ });
19
+ }
20
+ notNull() {
21
+ return new ColumnDef(this.kind, {
22
+ ...this.meta,
23
+ isNotNull: true
24
+ });
25
+ }
26
+ unique() {
27
+ return new ColumnDef(this.kind, {
28
+ ...this.meta,
29
+ isUnique: true
30
+ });
31
+ }
32
+ references(fn) {
33
+ return new ColumnDef(this.kind, {
34
+ ...this.meta,
35
+ references: fn
36
+ });
37
+ }
38
+ onDelete(action) {
39
+ return new ColumnDef(this.kind, {
40
+ ...this.meta,
41
+ onDeleteAction: action
42
+ });
43
+ }
44
+ default(value) {
45
+ return new ColumnDef(this.kind, {
46
+ ...this.meta,
47
+ hasDefault: true,
48
+ defaultKind: "value",
49
+ defaultValue: value,
50
+ defaultFn: null
51
+ });
52
+ }
53
+ defaultFn(fn) {
54
+ return new ColumnDef(this.kind, {
55
+ ...this.meta,
56
+ hasDefault: true,
57
+ defaultKind: "fn",
58
+ defaultValue: void 0,
59
+ defaultFn: fn
60
+ });
61
+ }
62
+ };
63
+ const defaultMeta = {
64
+ isSqlArray: false,
65
+ isPrimaryKey: false,
66
+ isNotNull: false,
67
+ isUnique: false,
68
+ isEnum: false,
69
+ enumValues: null,
70
+ enumName: null,
71
+ hasDefault: false,
72
+ defaultKind: null,
73
+ defaultValue: void 0,
74
+ defaultFn: null,
75
+ references: null,
76
+ onDeleteAction: null
77
+ };
78
+ function uuid(sqlName) {
79
+ return new ColumnDef("uuid", {
80
+ ...defaultMeta,
81
+ sqlName
82
+ });
83
+ }
84
+ function string(sqlName) {
85
+ return new ColumnDef("string", {
86
+ ...defaultMeta,
87
+ sqlName
88
+ });
89
+ }
90
+ function enumeration(sqlName, enumName, values) {
91
+ return new ColumnDef("enum", {
92
+ ...defaultMeta,
93
+ isEnum: true,
94
+ enumValues: values,
95
+ enumName,
96
+ sqlName
97
+ });
98
+ }
99
+ function number(sqlName) {
100
+ return new ColumnDef("number", {
101
+ ...defaultMeta,
102
+ sqlName
103
+ });
104
+ }
105
+ function boolean(sqlName) {
106
+ return new ColumnDef("boolean", {
107
+ ...defaultMeta,
108
+ sqlName
109
+ });
110
+ }
111
+ function date(sqlName) {
112
+ return new ColumnDef("date", {
113
+ ...defaultMeta,
114
+ sqlName
115
+ });
116
+ }
117
+ function json(sqlName) {
118
+ return new ColumnDef("json", {
119
+ ...defaultMeta,
120
+ sqlName
121
+ });
122
+ }
123
+ function jsonb(sqlName) {
124
+ return new ColumnDef("jsonb", {
125
+ ...defaultMeta,
126
+ sqlName
127
+ });
128
+ }
129
+ //#endregion
130
+ exports.boolean = boolean;
131
+ exports.date = date;
132
+ exports.enumeration = enumeration;
133
+ exports.json = json;
134
+ exports.jsonb = jsonb;
135
+ exports.number = number;
136
+ exports.string = string;
137
+ exports.uuid = uuid;