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
@@ -1,276 +1,13 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_lib_errors_index = require("../errors/index.cjs");
3
- const require_scanner = require("../../cron/scanner.cjs");
4
- //#region src/lib/cron/index.ts
5
- const RETRY_DELAY_MS = 3600 * 1e3;
6
- const ALIASES = {
7
- "@yearly": "0 0 1 1 *",
8
- "@monthly": "0 0 1 * *",
9
- "@weekly": "0 0 * * 0",
10
- "@daily": "0 0 * * *",
11
- "@hourly": "0 * * * *",
12
- "@minutely": "* * * * *"
13
- };
14
- const CronSecondRange = {
15
- min: 0,
16
- max: 59
17
- };
18
- const CronMinuteRange = {
19
- min: 0,
20
- max: 59
21
- };
22
- const CronHourRange = {
23
- min: 0,
24
- max: 23
25
- };
26
- const CronDayRange = {
27
- min: 1,
28
- max: 31
29
- };
30
- const CronMonthRange = {
31
- min: 1,
32
- max: 12
33
- };
34
- const CronDayOfWeekRange = {
35
- min: 0,
36
- max: 6
37
- };
38
- var Cron = class {
39
- options;
40
- status = "idle";
41
- timeoutId = null;
42
- second = Array(CronSecondRange.max + 1).fill(0);
43
- minute = Array(CronMinuteRange.max + 1).fill(0);
44
- hour = Array(CronHourRange.max + 1).fill(0);
45
- day = Array(CronDayRange.max + 1).fill(0);
46
- month = Array(CronMonthRange.max + 1).fill(0);
47
- dayOfWeek = Array(CronDayOfWeekRange.max + 1).fill(0);
48
- hasSeconds;
49
- _dayWildcard = false;
50
- _dowWildcard = false;
51
- fillRange(values, min, max) {
52
- for (let i = min; i <= max; i++) values[i] = 1;
53
- }
54
- handleStep(part, values, min, max) {
55
- const [rangePart, stepStr] = part.split("/");
56
- if (!rangePart) return require_lib_errors_index.err("InvalidValueError", `'${rangePart}' is empty`);
57
- if (!stepStr) return require_lib_errors_index.err("InvalidValueError", `'${stepStr}' is empty`);
58
- const step = Number(stepStr);
59
- if (!Number.isInteger(step)) return require_lib_errors_index.err("InvalidValueError", `'${step}' is not a valid number`);
60
- if (step <= 0) return require_lib_errors_index.err("OutOfBoundError", `Expected ${step} > 0`);
61
- if (rangePart === "*") {
62
- for (let i = min; i <= max; i += step) values[i] = 1;
63
- return require_lib_errors_index.ok(true);
64
- }
65
- if (rangePart.includes("-")) return this.handleStepRange(rangePart, step, values, min, max);
66
- return this.handleStepSingle(rangePart, step, values, min, max);
67
- }
68
- handleStepRange(range, step, values, min, max) {
69
- const [startStr, endStr] = range.split("-");
70
- if (!endStr) return require_lib_errors_index.err("InvalidValueError", `'${endStr}' is empty`);
71
- let start = min;
72
- if (startStr && startStr.length > 0) start = Number(startStr);
73
- const end = Number(endStr);
74
- if (!Number.isInteger(start)) return require_lib_errors_index.err("InvalidValueError", `'${start}' is not a valid number`);
75
- if (!Number.isInteger(end)) return require_lib_errors_index.err("InvalidValueError", `'${end}' is not a valid number`);
76
- if (start < min) return require_lib_errors_index.err("OutOfBoundError", `Expected ${start} >= ${min}`);
77
- if (end > max) return require_lib_errors_index.err("OutOfBoundError", `Expected ${end} <= ${max}`);
78
- if (start > end) return require_lib_errors_index.err("OutOfBoundError", `Expected ${start} <= ${end}`);
79
- for (let i = start; i <= end; i += step) values[i] = 1;
80
- return require_lib_errors_index.ok(true);
81
- }
82
- handleStepSingle(value, step, values, min, max) {
83
- const start = Number(value);
84
- if (!Number.isInteger(start)) return require_lib_errors_index.err("InvalidValueError", `'${start}' is not a valid number`);
85
- if (start < min) return require_lib_errors_index.err("OutOfBoundError", `Expected ${start} >= ${min}`);
86
- if (start > max) return require_lib_errors_index.err("OutOfBoundError", `Expected ${start} <= ${max}`);
87
- for (let i = start; i <= max; i += step) values[i] = 1;
88
- return require_lib_errors_index.ok(true);
89
- }
90
- handleRange(part, values, min, max) {
91
- const [startStr, endStr] = part.split("-");
92
- if (!startStr) return require_lib_errors_index.err("InvalidValueError", `'${startStr}' is empty`);
93
- if (!endStr) return require_lib_errors_index.err("InvalidValueError", `'${endStr}' is empty`);
94
- const start = Number(startStr);
95
- const end = Number(endStr);
96
- if (!Number.isInteger(start)) return require_lib_errors_index.err("InvalidValueError", `'${start}' is not a valid number`);
97
- if (!Number.isInteger(end)) return require_lib_errors_index.err("InvalidValueError", `'${end}' is not a valid number`);
98
- if (start < min) return require_lib_errors_index.err("OutOfBoundError", `Expected ${start} >= ${min}`);
99
- if (end > max) return require_lib_errors_index.err("OutOfBoundError", `Expected ${end} <= ${max}`);
100
- if (start > end) return require_lib_errors_index.err("OutOfBoundError", `Expected ${start} <= ${end}`);
101
- for (let i = start; i <= end; i++) values[i] = 1;
102
- return require_lib_errors_index.ok(true);
103
- }
104
- handleNumber(value, values, min, max) {
105
- const n = Number(value);
106
- if (!Number.isInteger(n)) return require_lib_errors_index.err("InvalidValueError", `'${value}' is not a valid number`);
107
- if (n < min) return require_lib_errors_index.err("OutOfBoundError", `Expected ${n} >= ${min}`);
108
- if (n > max) return require_lib_errors_index.err("OutOfBoundError", `Expected ${n} <= ${max}`);
109
- values[n] = 1;
110
- return require_lib_errors_index.ok(true);
111
- }
112
- constructor(options) {
113
- this.options = options;
114
- const expr = this.resolveAlias(options.schedule);
115
- const [error, tokens] = new require_scanner.Scanner(expr).scan();
116
- if (error) throw new Error(`${error.type}: ${error.message}`);
117
- this.hasSeconds = expr.trim().split(/\s+/).length === require_scanner.FieldAmount.max;
118
- const [parsingError, _] = this.parse(tokens);
119
- if (parsingError) throw new Error(`${parsingError.type}: ${parsingError.message}`);
120
- }
121
- resolveAlias(schedule) {
122
- return ALIASES[schedule] || schedule;
123
- }
124
- parse(tokens) {
125
- for (let i = 0; i < tokens.length; i++) {
126
- const token = tokens[i];
127
- if (!token) return require_lib_errors_index.err("InvalidValueError", "Undefined token");
128
- const tokenType = token.getTokenType();
129
- switch (token.getField()) {
130
- case "second": {
131
- const [error, _] = this.handleField(token, this.second, CronSecondRange.min, CronSecondRange.max);
132
- if (error) return require_lib_errors_index.err(error.type, `${error.message} in field '${token.getField()}'`);
133
- break;
134
- }
135
- case "minute": {
136
- const [error, _] = this.handleField(token, this.minute, CronMinuteRange.min, CronMinuteRange.max);
137
- if (error) return require_lib_errors_index.err(error.type, `${error.message} in field '${token.getField()}'`);
138
- break;
139
- }
140
- case "hour": {
141
- const [error, _] = this.handleField(token, this.hour, CronHourRange.min, CronHourRange.max);
142
- if (error) return require_lib_errors_index.err(error.type, `${error.message} in field '${token.getField()}'`);
143
- break;
144
- }
145
- case "day": {
146
- if (tokenType === "any") this._dayWildcard = true;
147
- const [error, _] = this.handleField(token, this.day, CronDayRange.min, CronDayRange.max);
148
- if (error) return require_lib_errors_index.err(error.type, `${error.message} in field '${token.getField()}'`);
149
- break;
150
- }
151
- case "month": {
152
- const [error, _] = this.handleField(token, this.month, CronMonthRange.min, CronMonthRange.max);
153
- if (error) return require_lib_errors_index.err(error.type, `${error.message} in field '${token.getField()}'`);
154
- break;
155
- }
156
- case "weekday": {
157
- if (tokenType === "any") this._dowWildcard = true;
158
- const [error, _] = this.handleField(token, this.dayOfWeek, CronDayOfWeekRange.min, CronDayOfWeekRange.max);
159
- if (error) return require_lib_errors_index.err(error.type, `${error.message} in field '${token.getField()}'`);
160
- break;
161
- }
162
- default: return require_lib_errors_index.err("InvalidValueError", `Invalid field '${token.getField()}'`);
163
- }
164
- }
165
- return require_lib_errors_index.ok(true);
166
- }
167
- handleField(token, field, min, max) {
168
- switch (token.getTokenType()) {
169
- case "any":
170
- this.fillRange(field, min, max);
171
- break;
172
- case "number": {
173
- const [error, _] = this.handleNumber(token.getComponent(), field, min, max);
174
- if (error) return require_lib_errors_index.err(error.type, error.message);
175
- break;
176
- }
177
- case "range": {
178
- const component = token.getComponent();
179
- const [error, _] = this.handleRange(component, field, min, max);
180
- if (error) return require_lib_errors_index.err(error.type, error.message);
181
- break;
182
- }
183
- case "step": {
184
- const component = token.getComponent();
185
- const [error, _] = this.handleStep(component, field, min, max);
186
- if (error) return require_lib_errors_index.err(error.type, error.message);
187
- break;
188
- }
189
- default: return require_lib_errors_index.err("InvalidValueError", `Invalid token type '${token.getTokenType()}'`);
190
- }
191
- return require_lib_errors_index.ok(true);
192
- }
193
- matches(date) {
194
- const s = date.getSeconds();
195
- const m = date.getMinutes();
196
- const h = date.getHours();
197
- const d = date.getDate();
198
- const mon = date.getMonth();
199
- const dow = date.getDay();
200
- const isSecondMatch = this.hasSeconds ? this.second[s] === 1 : true;
201
- const isMinuteMatch = this.minute[m] === 1;
202
- const isHourMatch = this.hour[h] === 1;
203
- const isMonthMatch = this.month[mon + 1] === 1;
204
- let isDayOrDowMatch;
205
- if (!this._dayWildcard && !this._dowWildcard) isDayOrDowMatch = this.day[d] === 1 || this.dayOfWeek[dow] === 1;
206
- else isDayOrDowMatch = this.day[d] === 1 && this.dayOfWeek[dow] === 1;
207
- return isSecondMatch && isMinuteMatch && isHourMatch && isDayOrDowMatch && isMonthMatch;
208
- }
209
- getNextRun() {
210
- const date = /* @__PURE__ */ new Date(/* @__PURE__ */ new Date());
211
- if (this.hasSeconds) {
212
- date.setMilliseconds(0);
213
- date.setSeconds(date.getSeconds() + 1);
214
- } else {
215
- date.setSeconds(0, 0);
216
- date.setMinutes(date.getMinutes() + 1);
217
- }
218
- const maxIterations = this.hasSeconds ? 366 * 4 * 24 * 3600 : 366 * 4 * 24 * 60;
219
- for (let i = 0; i < maxIterations; i++) {
220
- if (this.matches(date)) {
221
- if (date > /* @__PURE__ */ new Date()) return new Date(date);
222
- }
223
- if (this.hasSeconds) date.setSeconds(date.getSeconds() + 1);
224
- else date.setMinutes(date.getMinutes() + 1);
225
- }
226
- return null;
227
- }
228
- start() {
229
- if (this.status !== "idle") return;
230
- this.status = "running";
231
- this.next();
232
- }
233
- stop() {
234
- this.status = "idle";
235
- if (this.timeoutId) {
236
- clearTimeout(this.timeoutId);
237
- this.timeoutId = null;
238
- }
239
- }
240
- pause() {
241
- if (this.status !== "running") return;
242
- this.status = "paused";
243
- if (this.timeoutId) {
244
- clearTimeout(this.timeoutId);
245
- this.timeoutId = null;
246
- }
247
- }
248
- resume() {
249
- if (this.status !== "paused") return;
250
- this.status = "running";
251
- this.next();
252
- }
253
- getStatus() {
254
- return this.status;
255
- }
256
- next() {
257
- if (this.status !== "running") return;
258
- const nextRun = this.getNextRun();
259
- if (!nextRun) {
260
- this.timeoutId = setTimeout(() => this.next(), RETRY_DELAY_MS);
261
- return;
262
- }
263
- const delay = nextRun.getTime() - Date.now();
264
- this.timeoutId = setTimeout(() => {
265
- this.run();
266
- }, Math.max(0, delay));
267
- }
268
- async run() {
269
- if (this.status !== "running") return;
270
- const handlerResult = this.options.handler();
271
- await require_lib_errors_index.mightThrow(Promise.resolve(handlerResult));
272
- if (this.status === "running") this.next();
273
- }
274
- };
275
- //#endregion
276
- exports.Cron = Cron;
2
+ const require_index = require("../../cron/builder/index.cjs");
3
+ const require_types = require("../../cron/builder/types.cjs");
4
+ const require_index$1 = require("../../cron/core/index.cjs");
5
+ exports.Cron = require_index$1.Cron;
6
+ exports.Month = require_types.Month;
7
+ exports.WeekDay = require_types.WeekDay;
8
+ exports.any = require_index.any;
9
+ exports.cronJobBuilder = require_index.cronJobBuilder;
10
+ exports.list = require_index.list;
11
+ exports.number = require_index.number;
12
+ exports.range = require_index.range;
13
+ exports.step = require_index.step;
@@ -1,39 +1,4 @@
1
- import { CronOptions, CronStatus } from "../../cron/types.cjs";
2
-
3
- //#region src/lib/cron/index.d.ts
4
- declare class Cron {
5
- private options;
6
- private status;
7
- private timeoutId;
8
- private second;
9
- private minute;
10
- private hour;
11
- private day;
12
- private month;
13
- private dayOfWeek;
14
- private hasSeconds;
15
- private _dayWildcard;
16
- private _dowWildcard;
17
- private fillRange;
18
- private handleStep;
19
- private handleStepRange;
20
- private handleStepSingle;
21
- private handleRange;
22
- private handleNumber;
23
- constructor(options: CronOptions);
24
- private resolveAlias;
25
- private parse;
26
- private handleField;
27
- matches(date: Date): boolean;
28
- getNextRun(): Date | null;
29
- start(): void;
30
- stop(): void;
31
- pause(): void;
32
- resume(): void;
33
- getStatus(): CronStatus;
34
- private next;
35
- private run;
36
- }
37
- //#endregion
38
- export { Cron };
39
- //# sourceMappingURL=index.d.cts.map
1
+ import { Month, WeekDay } from "../../cron/builder/types.cjs";
2
+ import { any, cronJobBuilder, list, number, range, step } from "../../cron/builder/index.cjs";
3
+ import { Cron } from "../../cron/core/index.cjs";
4
+ export { Cron, Month, WeekDay, any, cronJobBuilder, list, number, range, step };
@@ -1,39 +1,4 @@
1
- import { CronOptions, CronStatus } from "../../cron/types.mjs";
2
-
3
- //#region src/lib/cron/index.d.ts
4
- declare class Cron {
5
- private options;
6
- private status;
7
- private timeoutId;
8
- private second;
9
- private minute;
10
- private hour;
11
- private day;
12
- private month;
13
- private dayOfWeek;
14
- private hasSeconds;
15
- private _dayWildcard;
16
- private _dowWildcard;
17
- private fillRange;
18
- private handleStep;
19
- private handleStepRange;
20
- private handleStepSingle;
21
- private handleRange;
22
- private handleNumber;
23
- constructor(options: CronOptions);
24
- private resolveAlias;
25
- private parse;
26
- private handleField;
27
- matches(date: Date): boolean;
28
- getNextRun(): Date | null;
29
- start(): void;
30
- stop(): void;
31
- pause(): void;
32
- resume(): void;
33
- getStatus(): CronStatus;
34
- private next;
35
- private run;
36
- }
37
- //#endregion
38
- export { Cron };
39
- //# sourceMappingURL=index.d.mts.map
1
+ import { Month, WeekDay } from "../../cron/builder/types.mjs";
2
+ import { any, cronJobBuilder, list, number, range, step } from "../../cron/builder/index.mjs";
3
+ import { Cron } from "../../cron/core/index.mjs";
4
+ export { Cron, Month, WeekDay, any, cronJobBuilder, list, number, range, step };
@@ -1,277 +1,4 @@
1
- import { err, mightThrow, ok } from "../errors/index.mjs";
2
- import { FieldAmount, Scanner } from "../../cron/scanner.mjs";
3
- //#region src/lib/cron/index.ts
4
- const RETRY_DELAY_MS = 3600 * 1e3;
5
- const ALIASES = {
6
- "@yearly": "0 0 1 1 *",
7
- "@monthly": "0 0 1 * *",
8
- "@weekly": "0 0 * * 0",
9
- "@daily": "0 0 * * *",
10
- "@hourly": "0 * * * *",
11
- "@minutely": "* * * * *"
12
- };
13
- const CronSecondRange = {
14
- min: 0,
15
- max: 59
16
- };
17
- const CronMinuteRange = {
18
- min: 0,
19
- max: 59
20
- };
21
- const CronHourRange = {
22
- min: 0,
23
- max: 23
24
- };
25
- const CronDayRange = {
26
- min: 1,
27
- max: 31
28
- };
29
- const CronMonthRange = {
30
- min: 1,
31
- max: 12
32
- };
33
- const CronDayOfWeekRange = {
34
- min: 0,
35
- max: 6
36
- };
37
- var Cron = class {
38
- options;
39
- status = "idle";
40
- timeoutId = null;
41
- second = Array(CronSecondRange.max + 1).fill(0);
42
- minute = Array(CronMinuteRange.max + 1).fill(0);
43
- hour = Array(CronHourRange.max + 1).fill(0);
44
- day = Array(CronDayRange.max + 1).fill(0);
45
- month = Array(CronMonthRange.max + 1).fill(0);
46
- dayOfWeek = Array(CronDayOfWeekRange.max + 1).fill(0);
47
- hasSeconds;
48
- _dayWildcard = false;
49
- _dowWildcard = false;
50
- fillRange(values, min, max) {
51
- for (let i = min; i <= max; i++) values[i] = 1;
52
- }
53
- handleStep(part, values, min, max) {
54
- const [rangePart, stepStr] = part.split("/");
55
- if (!rangePart) return err("InvalidValueError", `'${rangePart}' is empty`);
56
- if (!stepStr) return err("InvalidValueError", `'${stepStr}' is empty`);
57
- const step = Number(stepStr);
58
- if (!Number.isInteger(step)) return err("InvalidValueError", `'${step}' is not a valid number`);
59
- if (step <= 0) return err("OutOfBoundError", `Expected ${step} > 0`);
60
- if (rangePart === "*") {
61
- for (let i = min; i <= max; i += step) values[i] = 1;
62
- return ok(true);
63
- }
64
- if (rangePart.includes("-")) return this.handleStepRange(rangePart, step, values, min, max);
65
- return this.handleStepSingle(rangePart, step, values, min, max);
66
- }
67
- handleStepRange(range, step, values, min, max) {
68
- const [startStr, endStr] = range.split("-");
69
- if (!endStr) return err("InvalidValueError", `'${endStr}' is empty`);
70
- let start = min;
71
- if (startStr && startStr.length > 0) start = Number(startStr);
72
- const end = Number(endStr);
73
- if (!Number.isInteger(start)) return err("InvalidValueError", `'${start}' is not a valid number`);
74
- if (!Number.isInteger(end)) return err("InvalidValueError", `'${end}' is not a valid number`);
75
- if (start < min) return err("OutOfBoundError", `Expected ${start} >= ${min}`);
76
- if (end > max) return err("OutOfBoundError", `Expected ${end} <= ${max}`);
77
- if (start > end) return err("OutOfBoundError", `Expected ${start} <= ${end}`);
78
- for (let i = start; i <= end; i += step) values[i] = 1;
79
- return ok(true);
80
- }
81
- handleStepSingle(value, step, values, min, max) {
82
- const start = Number(value);
83
- if (!Number.isInteger(start)) return err("InvalidValueError", `'${start}' is not a valid number`);
84
- if (start < min) return err("OutOfBoundError", `Expected ${start} >= ${min}`);
85
- if (start > max) return err("OutOfBoundError", `Expected ${start} <= ${max}`);
86
- for (let i = start; i <= max; i += step) values[i] = 1;
87
- return ok(true);
88
- }
89
- handleRange(part, values, min, max) {
90
- const [startStr, endStr] = part.split("-");
91
- if (!startStr) return err("InvalidValueError", `'${startStr}' is empty`);
92
- if (!endStr) return err("InvalidValueError", `'${endStr}' is empty`);
93
- const start = Number(startStr);
94
- const end = Number(endStr);
95
- if (!Number.isInteger(start)) return err("InvalidValueError", `'${start}' is not a valid number`);
96
- if (!Number.isInteger(end)) return err("InvalidValueError", `'${end}' is not a valid number`);
97
- if (start < min) return err("OutOfBoundError", `Expected ${start} >= ${min}`);
98
- if (end > max) return err("OutOfBoundError", `Expected ${end} <= ${max}`);
99
- if (start > end) return err("OutOfBoundError", `Expected ${start} <= ${end}`);
100
- for (let i = start; i <= end; i++) values[i] = 1;
101
- return ok(true);
102
- }
103
- handleNumber(value, values, min, max) {
104
- const n = Number(value);
105
- if (!Number.isInteger(n)) return err("InvalidValueError", `'${value}' is not a valid number`);
106
- if (n < min) return err("OutOfBoundError", `Expected ${n} >= ${min}`);
107
- if (n > max) return err("OutOfBoundError", `Expected ${n} <= ${max}`);
108
- values[n] = 1;
109
- return ok(true);
110
- }
111
- constructor(options) {
112
- this.options = options;
113
- const expr = this.resolveAlias(options.schedule);
114
- const [error, tokens] = new Scanner(expr).scan();
115
- if (error) throw new Error(`${error.type}: ${error.message}`);
116
- this.hasSeconds = expr.trim().split(/\s+/).length === FieldAmount.max;
117
- const [parsingError, _] = this.parse(tokens);
118
- if (parsingError) throw new Error(`${parsingError.type}: ${parsingError.message}`);
119
- }
120
- resolveAlias(schedule) {
121
- return ALIASES[schedule] || schedule;
122
- }
123
- parse(tokens) {
124
- for (let i = 0; i < tokens.length; i++) {
125
- const token = tokens[i];
126
- if (!token) return err("InvalidValueError", "Undefined token");
127
- const tokenType = token.getTokenType();
128
- switch (token.getField()) {
129
- case "second": {
130
- const [error, _] = this.handleField(token, this.second, CronSecondRange.min, CronSecondRange.max);
131
- if (error) return err(error.type, `${error.message} in field '${token.getField()}'`);
132
- break;
133
- }
134
- case "minute": {
135
- const [error, _] = this.handleField(token, this.minute, CronMinuteRange.min, CronMinuteRange.max);
136
- if (error) return err(error.type, `${error.message} in field '${token.getField()}'`);
137
- break;
138
- }
139
- case "hour": {
140
- const [error, _] = this.handleField(token, this.hour, CronHourRange.min, CronHourRange.max);
141
- if (error) return err(error.type, `${error.message} in field '${token.getField()}'`);
142
- break;
143
- }
144
- case "day": {
145
- if (tokenType === "any") this._dayWildcard = true;
146
- const [error, _] = this.handleField(token, this.day, CronDayRange.min, CronDayRange.max);
147
- if (error) return err(error.type, `${error.message} in field '${token.getField()}'`);
148
- break;
149
- }
150
- case "month": {
151
- const [error, _] = this.handleField(token, this.month, CronMonthRange.min, CronMonthRange.max);
152
- if (error) return err(error.type, `${error.message} in field '${token.getField()}'`);
153
- break;
154
- }
155
- case "weekday": {
156
- if (tokenType === "any") this._dowWildcard = true;
157
- const [error, _] = this.handleField(token, this.dayOfWeek, CronDayOfWeekRange.min, CronDayOfWeekRange.max);
158
- if (error) return err(error.type, `${error.message} in field '${token.getField()}'`);
159
- break;
160
- }
161
- default: return err("InvalidValueError", `Invalid field '${token.getField()}'`);
162
- }
163
- }
164
- return ok(true);
165
- }
166
- handleField(token, field, min, max) {
167
- switch (token.getTokenType()) {
168
- case "any":
169
- this.fillRange(field, min, max);
170
- break;
171
- case "number": {
172
- const [error, _] = this.handleNumber(token.getComponent(), field, min, max);
173
- if (error) return err(error.type, error.message);
174
- break;
175
- }
176
- case "range": {
177
- const component = token.getComponent();
178
- const [error, _] = this.handleRange(component, field, min, max);
179
- if (error) return err(error.type, error.message);
180
- break;
181
- }
182
- case "step": {
183
- const component = token.getComponent();
184
- const [error, _] = this.handleStep(component, field, min, max);
185
- if (error) return err(error.type, error.message);
186
- break;
187
- }
188
- default: return err("InvalidValueError", `Invalid token type '${token.getTokenType()}'`);
189
- }
190
- return ok(true);
191
- }
192
- matches(date) {
193
- const s = date.getSeconds();
194
- const m = date.getMinutes();
195
- const h = date.getHours();
196
- const d = date.getDate();
197
- const mon = date.getMonth();
198
- const dow = date.getDay();
199
- const isSecondMatch = this.hasSeconds ? this.second[s] === 1 : true;
200
- const isMinuteMatch = this.minute[m] === 1;
201
- const isHourMatch = this.hour[h] === 1;
202
- const isMonthMatch = this.month[mon + 1] === 1;
203
- let isDayOrDowMatch;
204
- if (!this._dayWildcard && !this._dowWildcard) isDayOrDowMatch = this.day[d] === 1 || this.dayOfWeek[dow] === 1;
205
- else isDayOrDowMatch = this.day[d] === 1 && this.dayOfWeek[dow] === 1;
206
- return isSecondMatch && isMinuteMatch && isHourMatch && isDayOrDowMatch && isMonthMatch;
207
- }
208
- getNextRun() {
209
- const date = /* @__PURE__ */ new Date(/* @__PURE__ */ new Date());
210
- if (this.hasSeconds) {
211
- date.setMilliseconds(0);
212
- date.setSeconds(date.getSeconds() + 1);
213
- } else {
214
- date.setSeconds(0, 0);
215
- date.setMinutes(date.getMinutes() + 1);
216
- }
217
- const maxIterations = this.hasSeconds ? 366 * 4 * 24 * 3600 : 366 * 4 * 24 * 60;
218
- for (let i = 0; i < maxIterations; i++) {
219
- if (this.matches(date)) {
220
- if (date > /* @__PURE__ */ new Date()) return new Date(date);
221
- }
222
- if (this.hasSeconds) date.setSeconds(date.getSeconds() + 1);
223
- else date.setMinutes(date.getMinutes() + 1);
224
- }
225
- return null;
226
- }
227
- start() {
228
- if (this.status !== "idle") return;
229
- this.status = "running";
230
- this.next();
231
- }
232
- stop() {
233
- this.status = "idle";
234
- if (this.timeoutId) {
235
- clearTimeout(this.timeoutId);
236
- this.timeoutId = null;
237
- }
238
- }
239
- pause() {
240
- if (this.status !== "running") return;
241
- this.status = "paused";
242
- if (this.timeoutId) {
243
- clearTimeout(this.timeoutId);
244
- this.timeoutId = null;
245
- }
246
- }
247
- resume() {
248
- if (this.status !== "paused") return;
249
- this.status = "running";
250
- this.next();
251
- }
252
- getStatus() {
253
- return this.status;
254
- }
255
- next() {
256
- if (this.status !== "running") return;
257
- const nextRun = this.getNextRun();
258
- if (!nextRun) {
259
- this.timeoutId = setTimeout(() => this.next(), RETRY_DELAY_MS);
260
- return;
261
- }
262
- const delay = nextRun.getTime() - Date.now();
263
- this.timeoutId = setTimeout(() => {
264
- this.run();
265
- }, Math.max(0, delay));
266
- }
267
- async run() {
268
- if (this.status !== "running") return;
269
- const handlerResult = this.options.handler();
270
- await mightThrow(Promise.resolve(handlerResult));
271
- if (this.status === "running") this.next();
272
- }
273
- };
274
- //#endregion
275
- export { Cron };
276
-
277
- //# sourceMappingURL=index.mjs.map
1
+ import { any, cronJobBuilder, list, number, range, step } from "../../cron/builder/index.mjs";
2
+ import { Month, WeekDay } from "../../cron/builder/types.mjs";
3
+ import { Cron } from "../../cron/core/index.mjs";
4
+ export { Cron, Month, WeekDay, any, cronJobBuilder, list, number, range, step };
@@ -6,8 +6,8 @@ declare const err: <T extends CommonError>(type: T, message: string) => readonly
6
6
  readonly type: T;
7
7
  readonly message: string;
8
8
  }, null];
9
- declare const mightThrowSync: <T>(fn: () => T) => readonly [unknown, null] | readonly [null, T];
10
- declare const mightThrow: <T>(promise: Promise<T>) => Promise<readonly [null, Awaited<T>] | readonly [unknown, null]>;
9
+ declare const mightThrowSync: <T, E = Error>(fn: () => T) => readonly [null, T] | readonly [E, null];
10
+ declare const mightThrow: <T, E = Error>(promise: Promise<T>) => Promise<readonly [null, T] | readonly [E, null]>;
11
11
  //#endregion
12
12
  export { err, mightThrow, mightThrowSync, ok };
13
13
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../../../src/lib/errors/index.ts"],"mappings":";;;cAEa,EAAA,MAAS,IAAA,EAAM,CAAA,qBAAC,CAAA;AAAA,cAIhB,GAAA,aAAiB,WAAA,EAAa,IAAA,EAAM,CAAA,EAAG,OAAA;EAAA;;;cAIvC,cAAA,MAAqB,EAAA,QAAU,CAAA,gDAAC,CAAA;AAAA,cAShC,UAAA,MAAuB,OAAA,EAAS,OAAA,CAAQ,CAAA,MAAE,OAAA,iBAAA,OAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../../src/lib/errors/index.ts"],"mappings":";;;cAEa,EAAA,MAAS,IAAA,EAAM,CAAA,qBAAC,CAAA;AAAA,cAIhB,GAAA,aAAiB,WAAA,EAAa,IAAA,EAAM,CAAA,EAAG,OAAA;EAAA;;;cAIvC,cAAA,UAAyB,KAAA,EACpC,EAAA,QAAU,CAAA,qBACO,CAAA,cAAe,CAAA;AAAA,cASrB,UAAA,UAA2B,KAAA,EACtC,OAAA,EAAS,OAAA,CAAQ,CAAA,MAChB,OAAA,iBAAwB,CAAA,cAAe,CAAA"}
@@ -6,8 +6,8 @@ declare const err: <T extends CommonError>(type: T, message: string) => readonly
6
6
  readonly type: T;
7
7
  readonly message: string;
8
8
  }, null];
9
- declare const mightThrowSync: <T>(fn: () => T) => readonly [unknown, null] | readonly [null, T];
10
- declare const mightThrow: <T>(promise: Promise<T>) => Promise<readonly [null, Awaited<T>] | readonly [unknown, null]>;
9
+ declare const mightThrowSync: <T, E = Error>(fn: () => T) => readonly [null, T] | readonly [E, null];
10
+ declare const mightThrow: <T, E = Error>(promise: Promise<T>) => Promise<readonly [null, T] | readonly [E, null]>;
11
11
  //#endregion
12
12
  export { err, mightThrow, mightThrowSync, ok };
13
13
  //# sourceMappingURL=index.d.mts.map