modelence 0.7.2 → 0.9.0-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (377) hide show
  1. package/dist/app/authConfig.d.ts +68 -0
  2. package/dist/app/authConfig.d.ts.map +1 -0
  3. package/dist/app/authConfig.js +8 -0
  4. package/dist/app/authConfig.js.map +1 -0
  5. package/dist/app/backendApi.d.ts +29 -0
  6. package/dist/app/backendApi.d.ts.map +1 -0
  7. package/dist/app/backendApi.js +69 -0
  8. package/dist/app/backendApi.js.map +1 -0
  9. package/dist/app/email.d.ts +3 -0
  10. package/dist/app/email.d.ts.map +1 -0
  11. package/dist/app/email.js +8 -0
  12. package/dist/app/email.js.map +1 -0
  13. package/dist/app/emailConfig.d.ts +27 -0
  14. package/dist/app/emailConfig.d.ts.map +1 -0
  15. package/dist/app/emailConfig.js +8 -0
  16. package/dist/app/emailConfig.js.map +1 -0
  17. package/dist/app/index.d.ts +20 -0
  18. package/dist/app/index.d.ts.map +1 -0
  19. package/dist/app/index.js +258 -0
  20. package/dist/app/index.js.map +1 -0
  21. package/dist/app/loggerProcess.d.ts +5 -0
  22. package/dist/app/loggerProcess.d.ts.map +1 -0
  23. package/dist/app/loggerProcess.js +90 -0
  24. package/dist/app/loggerProcess.js.map +1 -0
  25. package/dist/app/metrics.d.ts +6 -0
  26. package/dist/app/metrics.d.ts.map +1 -0
  27. package/dist/app/metrics.js +92 -0
  28. package/dist/app/metrics.js.map +1 -0
  29. package/dist/app/module.d.ts +77 -0
  30. package/dist/app/module.d.ts.map +1 -0
  31. package/dist/app/module.js +46 -0
  32. package/dist/app/module.js.map +1 -0
  33. package/dist/app/server.d.ts +37 -0
  34. package/dist/app/server.d.ts.map +1 -0
  35. package/dist/app/server.js +198 -0
  36. package/dist/app/server.js.map +1 -0
  37. package/dist/app/state.d.ts +19 -0
  38. package/dist/app/state.d.ts.map +1 -0
  39. package/dist/app/state.js +27 -0
  40. package/dist/app/state.js.map +1 -0
  41. package/dist/app/websocketConfig.d.ts +7 -0
  42. package/dist/app/websocketConfig.d.ts.map +1 -0
  43. package/dist/app/websocketConfig.js +8 -0
  44. package/dist/app/websocketConfig.js.map +1 -0
  45. package/dist/auth/client/index.d.ts +69 -0
  46. package/dist/auth/client/index.d.ts.map +1 -0
  47. package/dist/auth/client/index.js +79 -0
  48. package/dist/auth/client/index.js.map +1 -0
  49. package/dist/auth/db.d.ts +176 -0
  50. package/dist/auth/db.d.ts.map +1 -0
  51. package/dist/auth/db.js +117 -0
  52. package/dist/auth/db.js.map +1 -0
  53. package/dist/auth/deleteUser.d.ts +5 -0
  54. package/dist/auth/deleteUser.d.ts.map +1 -0
  55. package/dist/auth/deleteUser.js +34 -0
  56. package/dist/auth/deleteUser.js.map +1 -0
  57. package/dist/auth/disposableEmails.d.ts +6 -0
  58. package/dist/auth/disposableEmails.d.ts.map +1 -0
  59. package/dist/auth/disposableEmails.js +47 -0
  60. package/dist/auth/disposableEmails.js.map +1 -0
  61. package/dist/auth/index.d.ts +7 -0
  62. package/dist/auth/index.d.ts.map +1 -0
  63. package/dist/auth/index.js +33 -0
  64. package/dist/auth/index.js.map +1 -0
  65. package/dist/auth/login.d.ts +9 -0
  66. package/dist/auth/login.d.ts.map +1 -0
  67. package/dist/auth/login.js +100 -0
  68. package/dist/auth/login.js.map +1 -0
  69. package/dist/auth/password.d.ts +14 -0
  70. package/dist/auth/password.d.ts.map +1 -0
  71. package/dist/auth/password.js +26 -0
  72. package/dist/auth/password.js.map +1 -0
  73. package/dist/auth/profile.d.ts +10 -0
  74. package/dist/auth/profile.d.ts.map +1 -0
  75. package/dist/auth/profile.js +13 -0
  76. package/dist/auth/profile.js.map +1 -0
  77. package/dist/auth/providers/github.d.ts +3 -0
  78. package/dist/auth/providers/github.d.ts.map +1 -0
  79. package/dist/auth/providers/github.js +122 -0
  80. package/dist/auth/providers/github.js.map +1 -0
  81. package/dist/auth/providers/google.d.ts +3 -0
  82. package/dist/auth/providers/google.d.ts.map +1 -0
  83. package/dist/auth/providers/google.js +108 -0
  84. package/dist/auth/providers/google.js.map +1 -0
  85. package/dist/auth/providers/oauth-common.d.ts +13 -0
  86. package/dist/auth/providers/oauth-common.d.ts.map +1 -0
  87. package/dist/auth/providers/oauth-common.js +109 -0
  88. package/dist/auth/providers/oauth-common.js.map +1 -0
  89. package/dist/auth/resetPassword.d.ts +10 -0
  90. package/dist/auth/resetPassword.d.ts.map +1 -0
  91. package/dist/auth/resetPassword.js +108 -0
  92. package/dist/auth/resetPassword.js.map +1 -0
  93. package/dist/auth/role.d.ts +8 -0
  94. package/dist/auth/role.d.ts.map +1 -0
  95. package/dist/auth/role.js +37 -0
  96. package/dist/auth/role.js.map +1 -0
  97. package/dist/auth/session.d.ts +24 -0
  98. package/dist/auth/session.d.ts.map +1 -0
  99. package/dist/auth/session.js +84 -0
  100. package/dist/auth/session.js.map +1 -0
  101. package/dist/auth/signup.d.ts +3 -0
  102. package/dist/auth/signup.d.ts.map +1 -0
  103. package/dist/auth/signup.js +89 -0
  104. package/dist/auth/signup.js.map +1 -0
  105. package/dist/auth/templates/emailVerficationTemplate.d.ts +6 -0
  106. package/dist/auth/templates/emailVerficationTemplate.d.ts.map +1 -0
  107. package/dist/auth/templates/emailVerficationTemplate.js +9 -0
  108. package/dist/auth/templates/emailVerficationTemplate.js.map +1 -0
  109. package/dist/auth/types.d.ts +22 -0
  110. package/dist/auth/types.d.ts.map +1 -0
  111. package/dist/auth/types.js +2 -0
  112. package/dist/auth/types.js.map +1 -0
  113. package/dist/auth/user.d.ts +5 -0
  114. package/dist/auth/user.d.ts.map +1 -0
  115. package/dist/auth/user.js +152 -0
  116. package/dist/auth/user.js.map +1 -0
  117. package/dist/auth/validators.d.ts +3 -0
  118. package/dist/auth/validators.d.ts.map +1 -0
  119. package/dist/auth/validators.js +8 -0
  120. package/dist/auth/validators.js.map +1 -0
  121. package/dist/auth/verification.d.ts +8 -0
  122. package/dist/auth/verification.d.ts.map +1 -0
  123. package/dist/auth/verification.js +94 -0
  124. package/dist/auth/verification.js.map +1 -0
  125. package/dist/bin/auth.d.ts +4 -0
  126. package/dist/bin/auth.d.ts.map +1 -0
  127. package/dist/bin/auth.js +48 -0
  128. package/dist/bin/auth.js.map +1 -0
  129. package/dist/bin/build.d.ts +2 -0
  130. package/dist/bin/build.d.ts.map +1 -0
  131. package/dist/bin/build.js +78 -0
  132. package/dist/bin/build.js.map +1 -0
  133. package/dist/bin/config.d.ts +11 -0
  134. package/dist/bin/config.d.ts.map +1 -0
  135. package/dist/bin/config.js +91 -0
  136. package/dist/bin/config.js.map +1 -0
  137. package/dist/bin/deploy.d.ts +6 -0
  138. package/dist/bin/deploy.d.ts.map +1 -0
  139. package/dist/bin/deploy.js +129 -0
  140. package/dist/bin/deploy.js.map +1 -0
  141. package/dist/bin/dev.d.ts +2 -0
  142. package/dist/bin/dev.d.ts.map +1 -0
  143. package/dist/bin/dev.js +14 -0
  144. package/dist/bin/dev.js.map +1 -0
  145. package/dist/bin/modelence.d.ts +3 -0
  146. package/dist/bin/modelence.d.ts.map +1 -0
  147. package/dist/bin/modelence.js +57 -3
  148. package/dist/bin/modelence.js.map +1 -1
  149. package/dist/bin/setup.d.ts +5 -0
  150. package/dist/bin/setup.d.ts.map +1 -0
  151. package/dist/bin/setup.js +91 -0
  152. package/dist/bin/setup.js.map +1 -0
  153. package/dist/bin/start.d.ts +2 -0
  154. package/dist/bin/start.d.ts.map +1 -0
  155. package/dist/bin/start.js +15 -0
  156. package/dist/bin/start.js.map +1 -0
  157. package/dist/client/AppProvider.d.ts +8 -0
  158. package/dist/client/AppProvider.d.ts.map +1 -0
  159. package/dist/client/AppProvider.js +31 -0
  160. package/dist/client/AppProvider.js.map +1 -0
  161. package/dist/client/errorHandler.d.ts +4 -0
  162. package/dist/client/errorHandler.d.ts.map +1 -0
  163. package/dist/client/errorHandler.js +10 -0
  164. package/dist/client/errorHandler.js.map +1 -0
  165. package/dist/client/localStorage.d.ts +3 -0
  166. package/dist/client/localStorage.d.ts.map +1 -0
  167. package/dist/client/localStorage.js +14 -0
  168. package/dist/client/localStorage.js.map +1 -0
  169. package/dist/client/method.d.ts +6 -0
  170. package/dist/client/method.d.ts.map +1 -0
  171. package/dist/client/method.js +52 -0
  172. package/dist/client/method.js.map +1 -0
  173. package/dist/client/renderApp.d.ts +9 -0
  174. package/dist/client/renderApp.d.ts.map +1 -0
  175. package/dist/client/renderApp.js +28 -0
  176. package/dist/client/renderApp.js.map +1 -0
  177. package/dist/client/session.d.ts +34 -0
  178. package/dist/client/session.d.ts.map +1 -0
  179. package/dist/client/session.js +83 -0
  180. package/dist/client/session.js.map +1 -0
  181. package/dist/client.d.ts +10 -133
  182. package/dist/client.d.ts.map +1 -0
  183. package/dist/client.js +14 -1
  184. package/dist/client.js.map +1 -1
  185. package/dist/config/client.d.ts +10 -0
  186. package/dist/config/client.d.ts.map +1 -0
  187. package/dist/config/client.js +14 -0
  188. package/dist/config/client.js.map +1 -0
  189. package/dist/config/server.d.ts +48 -0
  190. package/dist/config/server.d.ts.map +1 -0
  191. package/dist/config/server.js +85 -0
  192. package/dist/config/server.js.map +1 -0
  193. package/dist/config/sync.d.ts +2 -0
  194. package/dist/config/sync.d.ts.map +1 -0
  195. package/dist/config/sync.js +32 -0
  196. package/dist/config/sync.js.map +1 -0
  197. package/dist/config/types.d.ts +19 -0
  198. package/dist/config/types.d.ts.map +1 -0
  199. package/dist/config/types.js +2 -0
  200. package/dist/config/types.js.map +1 -0
  201. package/dist/cron/jobs.d.ts +13 -0
  202. package/dist/cron/jobs.d.ts.map +1 -0
  203. package/dist/cron/jobs.js +155 -0
  204. package/dist/cron/jobs.js.map +1 -0
  205. package/dist/cron/types.d.ts +29 -0
  206. package/dist/cron/types.d.ts.map +1 -0
  207. package/dist/cron/types.js +2 -0
  208. package/dist/cron/types.js.map +1 -0
  209. package/dist/data/schemaSerializer.d.ts +37 -0
  210. package/dist/data/schemaSerializer.d.ts.map +1 -0
  211. package/dist/data/schemaSerializer.js +104 -0
  212. package/dist/data/schemaSerializer.js.map +1 -0
  213. package/dist/{types-WgRbQ-tj.d.ts → data/store.d.ts} +13 -231
  214. package/dist/data/store.d.ts.map +1 -0
  215. package/dist/data/store.js +501 -0
  216. package/dist/data/store.js.map +1 -0
  217. package/dist/data/types.d.ts +47 -0
  218. package/dist/data/types.d.ts.map +1 -0
  219. package/dist/data/types.js +35 -0
  220. package/dist/data/types.js.map +1 -0
  221. package/dist/db/client.d.ts +5 -0
  222. package/dist/db/client.d.ts.map +1 -0
  223. package/dist/db/client.js +41 -0
  224. package/dist/db/client.js.map +1 -0
  225. package/dist/error.d.ts +16 -0
  226. package/dist/error.d.ts.map +1 -0
  227. package/dist/error.js +24 -0
  228. package/dist/error.js.map +1 -0
  229. package/dist/index.d.ts +6 -31
  230. package/dist/index.d.ts.map +1 -0
  231. package/dist/index.js +2 -1
  232. package/dist/index.js.map +1 -1
  233. package/dist/lock/db.d.ts +19 -0
  234. package/dist/lock/db.d.ts.map +1 -0
  235. package/dist/lock/db.js +28 -0
  236. package/dist/lock/db.js.map +1 -0
  237. package/dist/lock/helpers.d.ts +28 -0
  238. package/dist/lock/helpers.d.ts.map +1 -0
  239. package/dist/lock/helpers.js +107 -0
  240. package/dist/lock/helpers.js.map +1 -0
  241. package/dist/lock/index.d.ts +4 -0
  242. package/dist/lock/index.d.ts.map +1 -0
  243. package/dist/lock/index.js +4 -0
  244. package/dist/lock/index.js.map +1 -0
  245. package/dist/lock/module.d.ts +7 -0
  246. package/dist/lock/module.d.ts.map +1 -0
  247. package/dist/lock/module.js +9 -0
  248. package/dist/lock/module.js.map +1 -0
  249. package/dist/methods/index.d.ts +7 -0
  250. package/dist/methods/index.d.ts.map +1 -0
  251. package/dist/methods/index.js +65 -0
  252. package/dist/methods/index.js.map +1 -0
  253. package/dist/methods/serialize.d.ts +15 -0
  254. package/dist/methods/serialize.d.ts.map +1 -0
  255. package/dist/methods/serialize.js +56 -0
  256. package/dist/methods/serialize.js.map +1 -0
  257. package/dist/methods/types.d.ts +37 -0
  258. package/dist/methods/types.d.ts.map +1 -0
  259. package/dist/methods/types.js +2 -0
  260. package/dist/methods/types.js.map +1 -0
  261. package/dist/migration/db.d.ts +17 -0
  262. package/dist/migration/db.d.ts.map +1 -0
  263. package/dist/migration/db.js +13 -0
  264. package/dist/migration/db.js.map +1 -0
  265. package/dist/migration/index.d.ts +11 -0
  266. package/dist/migration/index.d.ts.map +1 -0
  267. package/dist/migration/index.js +85 -0
  268. package/dist/migration/index.js.map +1 -0
  269. package/dist/mongo.d.ts +2 -3
  270. package/dist/mongo.d.ts.map +1 -0
  271. package/dist/mongo.js +2 -1
  272. package/dist/mongo.js.map +1 -1
  273. package/dist/rate-limit/db.d.ts +29 -0
  274. package/dist/rate-limit/db.d.ts.map +1 -0
  275. package/dist/rate-limit/db.js +25 -0
  276. package/dist/rate-limit/db.js.map +1 -0
  277. package/dist/rate-limit/index.d.ts +4 -0
  278. package/dist/rate-limit/index.d.ts.map +1 -0
  279. package/dist/rate-limit/index.js +6 -0
  280. package/dist/rate-limit/index.js.map +1 -0
  281. package/dist/rate-limit/rules.d.ts +22 -0
  282. package/dist/rate-limit/rules.d.ts.map +1 -0
  283. package/dist/rate-limit/rules.js +112 -0
  284. package/dist/rate-limit/rules.js.map +1 -0
  285. package/dist/rate-limit/types.d.ts +12 -0
  286. package/dist/rate-limit/types.d.ts.map +1 -0
  287. package/dist/rate-limit/types.js +2 -0
  288. package/dist/rate-limit/types.js.map +1 -0
  289. package/dist/routes/handler.d.ts +4 -0
  290. package/dist/routes/handler.d.ts.map +1 -0
  291. package/dist/routes/handler.js +66 -0
  292. package/dist/routes/handler.js.map +1 -0
  293. package/dist/routes/types.d.ts +45 -0
  294. package/dist/routes/types.d.ts.map +1 -0
  295. package/dist/routes/types.js +2 -0
  296. package/dist/routes/types.js.map +1 -0
  297. package/dist/server.d.ts +19 -551
  298. package/dist/server.d.ts.map +1 -0
  299. package/dist/server.js +15 -18
  300. package/dist/server.js.map +1 -1
  301. package/dist/system/index.d.ts +4 -0
  302. package/dist/system/index.d.ts.map +1 -0
  303. package/dist/system/index.js +21 -0
  304. package/dist/system/index.js.map +1 -0
  305. package/dist/telemetry/index.d.ts +11 -0
  306. package/dist/telemetry/index.d.ts.map +1 -0
  307. package/dist/telemetry/index.js +79 -0
  308. package/dist/telemetry/index.js.map +1 -0
  309. package/dist/telemetry.d.ts +2 -11
  310. package/dist/telemetry.d.ts.map +1 -0
  311. package/dist/telemetry.js +1 -1
  312. package/dist/telemetry.js.map +1 -1
  313. package/dist/time.d.ts +8 -0
  314. package/dist/time.d.ts.map +1 -0
  315. package/dist/time.js +13 -0
  316. package/dist/time.js.map +1 -0
  317. package/dist/types/email.d.ts +25 -0
  318. package/dist/types/email.d.ts.map +1 -0
  319. package/dist/types/email.js +2 -0
  320. package/dist/types/email.js.map +1 -0
  321. package/dist/types/index.d.ts +14 -0
  322. package/dist/types/index.d.ts.map +1 -0
  323. package/dist/types/index.js +2 -0
  324. package/dist/types/index.js.map +1 -0
  325. package/dist/types.d.ts +10 -7
  326. package/dist/types.d.ts.map +1 -0
  327. package/dist/types.js +1 -1
  328. package/dist/types.js.map +1 -1
  329. package/dist/utils/index.d.ts +4 -0
  330. package/dist/utils/index.d.ts.map +1 -0
  331. package/dist/utils/index.js +15 -0
  332. package/dist/utils/index.js.map +1 -0
  333. package/dist/viteServer.d.ts +13 -0
  334. package/dist/viteServer.d.ts.map +1 -0
  335. package/dist/viteServer.js +132 -0
  336. package/dist/viteServer.js.map +1 -0
  337. package/dist/websocket/client.d.ts +9 -0
  338. package/dist/websocket/client.d.ts.map +1 -0
  339. package/dist/websocket/client.js +16 -0
  340. package/dist/websocket/client.js.map +1 -0
  341. package/dist/websocket/clientChannel.d.ts +9 -0
  342. package/dist/websocket/clientChannel.d.ts.map +1 -0
  343. package/dist/websocket/clientChannel.js +26 -0
  344. package/dist/websocket/clientChannel.js.map +1 -0
  345. package/dist/websocket/serverChannel.d.ts +14 -0
  346. package/dist/websocket/serverChannel.d.ts.map +1 -0
  347. package/dist/websocket/serverChannel.js +21 -0
  348. package/dist/websocket/serverChannel.js.map +1 -0
  349. package/dist/websocket/socketio/client.d.ts +4 -0
  350. package/dist/websocket/socketio/client.d.ts.map +1 -0
  351. package/dist/websocket/socketio/client.js +48 -0
  352. package/dist/websocket/socketio/client.js.map +1 -0
  353. package/dist/websocket/socketio/server.d.ts +10 -0
  354. package/dist/websocket/socketio/server.d.ts.map +1 -0
  355. package/dist/websocket/socketio/server.js +80 -0
  356. package/dist/websocket/socketio/server.js.map +1 -0
  357. package/dist/websocket/types.d.ts +45 -0
  358. package/dist/websocket/types.d.ts.map +1 -0
  359. package/dist/websocket/types.js +2 -0
  360. package/dist/websocket/types.js.map +1 -0
  361. package/package.json +5 -6
  362. package/dist/chunk-3S2FFBNS.js +0 -2
  363. package/dist/chunk-3S2FFBNS.js.map +0 -1
  364. package/dist/chunk-55J6XMHW.js +0 -2
  365. package/dist/chunk-55J6XMHW.js.map +0 -1
  366. package/dist/chunk-C3UESBRX.js +0 -2
  367. package/dist/chunk-C3UESBRX.js.map +0 -1
  368. package/dist/chunk-DO5TZLF5.js +0 -2
  369. package/dist/chunk-DO5TZLF5.js.map +0 -1
  370. package/dist/chunk-KUL6YKKP.js +0 -3
  371. package/dist/chunk-KUL6YKKP.js.map +0 -1
  372. package/dist/chunk-PB6WQQ4L.js +0 -3
  373. package/dist/chunk-PB6WQQ4L.js.map +0 -1
  374. package/dist/index-CwdohC5n.d.ts +0 -15
  375. package/dist/package-IIELPLTY.js +0 -2
  376. package/dist/package-IIELPLTY.js.map +0 -1
  377. package/dist/types-Ds1ESQSs.d.ts +0 -106
@@ -0,0 +1,155 @@
1
+ // import { Worker, isMainThread, parentPort, workerData } from 'worker_threads';
2
+ import { time } from '../time';
3
+ import { startTransaction, captureError } from '../telemetry';
4
+ import { Module } from '../app/module';
5
+ import { schema } from '../data/types';
6
+ import { Store } from '../data/store';
7
+ import { acquireLock } from '../lock/helpers';
8
+ const DEFAULT_TIMEOUT = time.minutes(1);
9
+ const cronJobs = {};
10
+ let cronJobsInterval = null;
11
+ const cronJobsCollection = new Store('_modelenceCronJobs', {
12
+ schema: {
13
+ alias: schema.string(),
14
+ lastStartDate: schema.date().optional(),
15
+ },
16
+ indexes: [{ key: { alias: 1 }, unique: true, background: true }],
17
+ });
18
+ // TODO: allow changing interval and timeout with cron jobconfigs
19
+ export function defineCronJob(alias, { description = '', interval, timeout = DEFAULT_TIMEOUT, handler }) {
20
+ if (cronJobs[alias]) {
21
+ throw new Error(`Duplicate cron job declaration: '${alias}' already exists`);
22
+ }
23
+ if (cronJobsInterval) {
24
+ throw new Error(`Unable to add a cron job - cron jobs have already been initialized: [${alias}]`);
25
+ }
26
+ if (interval < time.seconds(5)) {
27
+ throw new Error(`Cron job interval should not be less than 5 second [${alias}]`);
28
+ }
29
+ if (timeout > time.days(1)) {
30
+ throw new Error(`Cron job timeout should not be longer than 1 day [${alias}]`);
31
+ }
32
+ cronJobs[alias] = {
33
+ alias,
34
+ params: { description, interval, timeout },
35
+ handler,
36
+ state: {
37
+ isRunning: false,
38
+ },
39
+ };
40
+ }
41
+ export async function startCronJobs() {
42
+ if (cronJobsInterval) {
43
+ throw new Error('Cron jobs already started');
44
+ }
45
+ const aliasList = Object.keys(cronJobs);
46
+ if (aliasList.length > 0) {
47
+ const aliasSelector = { alias: { $in: aliasList } };
48
+ const cronJobRecords = await cronJobsCollection.fetch(aliasSelector);
49
+ const now = Date.now();
50
+ cronJobRecords.forEach((record) => {
51
+ const job = cronJobs[record.alias];
52
+ if (!job) {
53
+ return;
54
+ }
55
+ job.state.scheduledRunTs = record.lastStartDate
56
+ ? record.lastStartDate.getTime() + job.params.interval
57
+ : now;
58
+ });
59
+ Object.values(cronJobs).forEach((job) => {
60
+ if (!job.state.scheduledRunTs) {
61
+ job.state.scheduledRunTs = now;
62
+ }
63
+ });
64
+ cronJobsInterval = setInterval(tickCronJobs, time.seconds(1));
65
+ }
66
+ }
67
+ async function tickCronJobs() {
68
+ const now = Date.now();
69
+ const ownsLock = await acquireLock('cron', {
70
+ successfulLockCacheDuration: time.seconds(10),
71
+ failedLockCacheDuration: time.seconds(30),
72
+ });
73
+ if (!ownsLock) {
74
+ return;
75
+ }
76
+ Object.values(cronJobs).forEach(async (job) => {
77
+ const { params, state } = job;
78
+ if (state.isRunning) {
79
+ if (state.startTs && state.startTs + params.timeout < now) {
80
+ // TODO: log cron trace timeout error
81
+ state.isRunning = false;
82
+ }
83
+ return;
84
+ }
85
+ // TODO: limit the number of jobs running concurrently
86
+ if (state.scheduledRunTs && state.scheduledRunTs <= now) {
87
+ await runCronJob(job);
88
+ }
89
+ });
90
+ }
91
+ async function runCronJob(job) {
92
+ const { alias, params, handler, state } = job;
93
+ state.isRunning = true;
94
+ state.startTs = Date.now();
95
+ await cronJobsCollection.updateOne({ alias }, {
96
+ $set: {
97
+ lastStartDate: new Date(state.startTs),
98
+ },
99
+ });
100
+ const transaction = startTransaction('cron', `cron:${alias}`);
101
+ // TODO: enforce job timeout
102
+ try {
103
+ await handler();
104
+ handleCronJobCompletion(state, params);
105
+ transaction.end('success');
106
+ }
107
+ catch (err) {
108
+ handleCronJobCompletion(state, params);
109
+ const error = err instanceof Error ? err : new Error(String(err));
110
+ captureError(error);
111
+ transaction.end('error');
112
+ console.error(`Error in cron job '${alias}':`, err);
113
+ }
114
+ }
115
+ function handleCronJobCompletion(state, params) {
116
+ state.scheduledRunTs = state.startTs ? state.startTs + params.interval : Date.now();
117
+ state.startTs = undefined;
118
+ state.isRunning = false;
119
+ }
120
+ export function getCronJobsMetadata() {
121
+ return Object.values(cronJobs).map(({ alias, params }) => ({
122
+ alias,
123
+ description: params.description,
124
+ interval: params.interval,
125
+ timeout: params.timeout,
126
+ }));
127
+ }
128
+ export default new Module('_system.cron', {
129
+ stores: [cronJobsCollection],
130
+ });
131
+ // const runCronJob = () => {
132
+ // const worker = new Worker(filePath, {
133
+ // workerData: {},
134
+ // execArgv: ['--loader', 'tsx'],
135
+ // });
136
+ // const timeoutId = setTimeout(() => {
137
+ // worker.terminate();
138
+ // console.error(`Cron job '${alias}' timed out after ${timeout}ms`);
139
+ // }, timeout);
140
+ // worker.on('message', (message) => {
141
+ // if (message === 'done') {
142
+ // clearTimeout(timeoutId);
143
+ // worker.terminate();
144
+ // }
145
+ // });
146
+ // worker.on('error', (err) => {
147
+ // clearTimeout(timeoutId);
148
+ // console.error(`Error in cron job '${alias}':`, err);
149
+ // });
150
+ // worker.on('exit', (code) => {
151
+ // console.error(`Cron job '${alias}' exited with code ${code}`);
152
+ // setTimeout(runCronJob, interval);
153
+ // });
154
+ // };
155
+ //# sourceMappingURL=jobs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../src/cron/jobs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ type CronJobHandler = () => Promise<void>;
2
+ export type CronJob = {
3
+ alias: string;
4
+ params: {
5
+ description: string;
6
+ interval: number;
7
+ timeout: number;
8
+ };
9
+ handler: CronJobHandler;
10
+ state: {
11
+ startTs?: number;
12
+ scheduledRunTs?: number;
13
+ isRunning: boolean;
14
+ };
15
+ };
16
+ export type CronJobInputParams = {
17
+ description?: string;
18
+ interval: number;
19
+ timeout?: number;
20
+ handler: CronJobHandler;
21
+ };
22
+ export type CronJobMetadata = {
23
+ alias: string;
24
+ description: string;
25
+ interval: number;
26
+ timeout: number;
27
+ };
28
+ export {};
29
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cron/types.ts"],"names":[],"mappings":"AAAA,KAAK,cAAc,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1C,MAAM,MAAM,OAAO,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,EAAE;QACL,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,cAAc,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cron/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ import { ModelSchema } from './types';
2
+ export interface SerializedModelSchema {
3
+ [key: string]: SerializedSchema | (SerializedSchema | SerializedModelSchema)[] | SerializedModelSchema | 'v2';
4
+ }
5
+ type BaseSerializedSchema = {
6
+ type: 'string';
7
+ } | {
8
+ type: 'number';
9
+ } | {
10
+ type: 'boolean';
11
+ } | {
12
+ type: 'date';
13
+ } | {
14
+ type: 'array';
15
+ items: SerializedSchema;
16
+ } | {
17
+ type: 'object';
18
+ items: Record<string, SerializedSchema>;
19
+ } | {
20
+ type: 'enum';
21
+ items: readonly string[];
22
+ } | {
23
+ type: 'union';
24
+ items: SerializedSchema[];
25
+ } | {
26
+ type: 'custom';
27
+ typeName: string;
28
+ };
29
+ type SerializedSchema = BaseSerializedSchema | (BaseSerializedSchema & {
30
+ optional: true;
31
+ });
32
+ /**
33
+ * Serializes a model schema to a JSON-serializable format
34
+ */
35
+ export declare function serializeModelSchema(schema: ModelSchema): SerializedModelSchema;
36
+ export {};
37
+ //# sourceMappingURL=schemaSerializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaSerializer.d.ts","sourceRoot":"","sources":["../../src/data/schemaSerializer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAMtC,MAAM,WAAW,qBAAqB;IACpC,CAAC,GAAG,EAAE,MAAM,GACR,gBAAgB,GAChB,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,EAAE,GAC5C,qBAAqB,GACrB,IAAI,CAAC;CACV;AAqCD,KAAK,oBAAoB,GACrB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,gBAAgB,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,gBAAgB,EAAE,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC,KAAK,gBAAgB,GAAG,oBAAoB,GAAG,CAAC,oBAAoB,GAAG;IAAE,QAAQ,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC;AAoF3F;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,qBAAqB,CAsB/E"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Serializes a Zod schema to a JSON-serializable format
3
+ */
4
+ function serializeZodSchema(zodType) {
5
+ const def = zodType._def;
6
+ if (def.typeName === 'ZodString') {
7
+ return { type: 'string' };
8
+ }
9
+ if (def.typeName === 'ZodNumber') {
10
+ return { type: 'number' };
11
+ }
12
+ if (def.typeName === 'ZodBoolean') {
13
+ return { type: 'boolean' };
14
+ }
15
+ if (def.typeName === 'ZodDate') {
16
+ return { type: 'date' };
17
+ }
18
+ if (def.typeName === 'ZodArray') {
19
+ const arrayDef = def;
20
+ return {
21
+ type: 'array',
22
+ items: serializeZodSchema(arrayDef.type),
23
+ };
24
+ }
25
+ if (def.typeName === 'ZodObject') {
26
+ const objectDef = def;
27
+ const shape = objectDef.shape();
28
+ const serializedShape = {};
29
+ for (const [key, value] of Object.entries(shape)) {
30
+ serializedShape[key] = serializeZodSchema(value);
31
+ }
32
+ return {
33
+ type: 'object',
34
+ items: serializedShape,
35
+ };
36
+ }
37
+ if (def.typeName === 'ZodOptional') {
38
+ const optionalDef = def;
39
+ return {
40
+ ...serializeZodSchema(optionalDef.innerType),
41
+ optional: true,
42
+ };
43
+ }
44
+ if (def.typeName === 'ZodNullable') {
45
+ const nullableDef = def;
46
+ return {
47
+ ...serializeZodSchema(nullableDef.innerType),
48
+ optional: true,
49
+ };
50
+ }
51
+ if (def.typeName === 'ZodEnum') {
52
+ const enumDef = def;
53
+ return {
54
+ type: 'enum',
55
+ items: enumDef.values,
56
+ };
57
+ }
58
+ if (def.typeName === 'ZodUnion') {
59
+ const unionDef = def;
60
+ return {
61
+ type: 'union',
62
+ items: unionDef.options.map(serializeZodSchema),
63
+ };
64
+ }
65
+ if (def.typeName === 'ZodEffects') {
66
+ // ZodEffects is used for z.instanceof(ObjectId), z.refine(), etc.
67
+ const effectsDef = def;
68
+ // Check description for custom types
69
+ if (effectsDef.description) {
70
+ return { type: 'custom', typeName: effectsDef.description };
71
+ }
72
+ // For other effects, try to serialize the underlying schema
73
+ return serializeZodSchema(effectsDef.schema);
74
+ }
75
+ // For custom types like ObjectId, ref, etc.
76
+ return { type: 'custom', typeName: def.typeName };
77
+ }
78
+ /**
79
+ * Serializes a model schema to a JSON-serializable format
80
+ */
81
+ export function serializeModelSchema(schema) {
82
+ const serialized = {};
83
+ for (const [key, value] of Object.entries(schema)) {
84
+ if (Array.isArray(value)) {
85
+ // Handle array of schema definitions
86
+ serialized[key] = value.map((item) => {
87
+ if (typeof item === 'object' && '_def' in item) {
88
+ return serializeZodSchema(item);
89
+ }
90
+ return serializeModelSchema(item);
91
+ });
92
+ }
93
+ else if (typeof value === 'object' && '_def' in value) {
94
+ // It's a Zod type
95
+ serialized[key] = serializeZodSchema(value);
96
+ }
97
+ else {
98
+ // It's a nested object definition
99
+ serialized[key] = serializeModelSchema(value);
100
+ }
101
+ }
102
+ return serialized;
103
+ }
104
+ //# sourceMappingURL=schemaSerializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaSerializer.js","sourceRoot":"","sources":["../../src/data/schemaSerializer.ts"],"names":[],"mappings":"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"}
@@ -1,142 +1,10 @@
1
- import './index-CwdohC5n.js';
2
- import { P as Permission, d as Session, e as UserInfo } from './types-Ds1ESQSs.js';
3
- import * as mongodb from 'mongodb';
4
- import { WithId, IndexDescription, SearchIndexDescription, MongoClient, Collection, FilterOperators, Document, FindOptions, ObjectId, OptionalUnlessRequiredId, InsertOneResult, InsertManyResult, UpdateFilter, UpdateResult, ClientSession, DeleteResult, AggregateOptions, AggregationCursor, AnyBulkWriteOperation, BulkWriteResult } from 'mongodb';
5
- import { z, ZodNumber, ZodArray } from 'zod';
6
- import { Request, Response, NextFunction } from 'express';
7
-
8
- type EmailAttachment = {
9
- filename: string;
10
- content: Buffer | string;
11
- contentType: string;
12
- };
13
- type EmailPayload = {
14
- from: string;
15
- to: string | string[];
16
- subject: string;
17
- html?: string;
18
- text?: string;
19
- cc?: string | string[];
20
- bcc?: string | string[];
21
- replyTo?: string | string[];
22
- headers?: Record<string, string>;
23
- attachments?: EmailAttachment[];
24
- } & ({
25
- html: string;
26
- } | {
27
- text: string;
28
- });
29
- interface EmailProvider {
30
- sendEmail(data: EmailPayload): Promise<void>;
31
- }
32
-
33
- type ClientInfo = {
34
- screenWidth: number;
35
- screenHeight: number;
36
- windowWidth: number;
37
- windowHeight: number;
38
- pixelRatio: number;
39
- orientation: string | null;
40
- };
41
- type ConnectionInfo = {
42
- ip?: string;
43
- userAgent?: string;
44
- acceptLanguage?: string;
45
- referrer?: string;
46
- baseUrl?: string;
47
- };
48
- type Context = {
49
- session: Session | null;
50
- user: UserInfo | null;
51
- roles: string[];
52
- clientInfo: ClientInfo;
53
- connectionInfo: ConnectionInfo;
54
- };
55
- type Args = Record<string, unknown>;
56
- type Handler<T = unknown> = (args: Args, context: Context) => Promise<T> | T;
57
- type MethodType = 'query' | 'mutation';
58
- type MethodDefinition<T = unknown> = {
59
- permissions?: Permission[];
60
- handler: Handler<T>;
61
- } | Handler<T>;
62
- type Method<T = unknown> = {
63
- type: MethodType;
64
- name: string;
65
- permissions: Permission[];
66
- handler: Handler<T>;
67
- };
68
-
69
- type RateLimitType = 'ip' | 'user';
70
- type RateLimitRule = {
71
- /** Logical action being limited, e.g. "signup" */
72
- bucket: string;
73
- /** Identifier type of the actor this rule applies to */
74
- type: RateLimitType;
75
- /** Time window size in milliseconds */
76
- window: number;
77
- /** Maximum allowed hits within the window */
78
- limit: number;
79
- };
80
-
81
- type CronJobHandler = () => Promise<void>;
82
- type CronJob = {
83
- alias: string;
84
- params: {
85
- description: string;
86
- interval: number;
87
- timeout: number;
88
- };
89
- handler: CronJobHandler;
90
- state: {
91
- startTs?: number;
92
- scheduledRunTs?: number;
93
- isRunning: boolean;
94
- };
95
- };
96
- type CronJobInputParams = {
97
- description?: string;
98
- interval: number;
99
- timeout?: number;
100
- handler: CronJobHandler;
101
- };
102
- type CronJobMetadata = {
103
- alias: string;
104
- description: string;
105
- interval: number;
106
- timeout: number;
107
- };
108
-
109
- interface SerializedModelSchema {
110
- [key: string]: SerializedSchema | (SerializedSchema | SerializedModelSchema)[] | SerializedModelSchema | 'v2';
111
- }
112
- type BaseSerializedSchema = {
113
- type: 'string';
114
- } | {
115
- type: 'number';
116
- } | {
117
- type: 'boolean';
118
- } | {
119
- type: 'date';
120
- } | {
121
- type: 'array';
122
- items: SerializedSchema;
123
- } | {
124
- type: 'object';
125
- items: Record<string, SerializedSchema>;
126
- } | {
127
- type: 'enum';
128
- items: readonly string[];
129
- } | {
130
- type: 'union';
131
- items: SerializedSchema[];
132
- } | {
133
- type: 'custom';
134
- typeName: string;
135
- };
136
- type SerializedSchema = BaseSerializedSchema | (BaseSerializedSchema & {
137
- optional: true;
138
- });
139
-
1
+ import { AggregateOptions, AggregationCursor, Collection, DeleteResult, Document, IndexDescription, InsertOneResult, MongoClient, UpdateResult, WithId, OptionalUnlessRequiredId, FindOptions, UpdateFilter, ObjectId, BulkWriteResult, AnyBulkWriteOperation, InsertManyResult, ClientSession, SearchIndexDescription, FilterOperators } from 'mongodb';
2
+ import { ModelSchema, InferDocumentType } from './types';
3
+ /**
4
+ * Helper type to match strings containing dots (for MongoDB dot notation)
5
+ * @internal
6
+ */
7
+ type DottedString = `${string}.${string}`;
140
8
  /**
141
9
  * Top-level query operators (logical and evaluation) - custom version without Document index signature
142
10
  * Based on MongoDB's RootFilterOperators but without the [key: string]: any from Document
@@ -198,7 +66,7 @@ type StrictRootFilterOperators<TSchema> = {
198
66
  * await dbUsers.findOne({ id: '123' });
199
67
  * ```
200
68
  */
201
- type TypedFilter<T> = {
69
+ export type TypedFilter<T> = {
202
70
  [K in keyof WithId<T>]?: WithId<T>[K] | FilterOperators<WithId<T>[K]>;
203
71
  } & StrictRootFilterOperators<T> & {
204
72
  [K: DottedString]: any;
@@ -235,7 +103,7 @@ type PreserveMethodsForExtendedSchema<TBaseMethods extends Record<string, (...ar
235
103
  * });
236
104
  * ```
237
105
  */
238
- declare class Store<TSchema extends ModelSchema, TMethods extends Record<string, (this: WithId<InferDocumentType<TSchema>> & TMethods, ...args: any[]) => any>> {
106
+ export declare class Store<TSchema extends ModelSchema, TMethods extends Record<string, (this: WithId<InferDocumentType<TSchema>> & TMethods, ...args: any[]) => any>> {
239
107
  /** @internal */
240
108
  readonly _type: InferDocumentType<TSchema>;
241
109
  /** @internal */
@@ -270,7 +138,7 @@ declare class Store<TSchema extends ModelSchema, TMethods extends Record<string,
270
138
  /** @internal */
271
139
  getSchema(): TSchema;
272
140
  /** @internal */
273
- getSerializedSchema(): SerializedModelSchema;
141
+ getSerializedSchema(): import("./schemaSerializer").SerializedModelSchema;
274
142
  /**
275
143
  * Extends the store with additional schema fields, indexes, methods, and search indexes.
276
144
  * Returns a new Store instance with the extended schema and updated types.
@@ -463,7 +331,7 @@ declare class Store<TSchema extends ModelSchema, TMethods extends Record<string,
463
331
  * @returns The MongoDB database instance
464
332
  * @throws Error if the store is not provisioned
465
333
  */
466
- getDatabase(): mongodb.Db;
334
+ getDatabase(): import("mongodb").Db;
467
335
  /**
468
336
  * Returns the raw MongoDB collection instance for advanced operations
469
337
  * @returns The MongoDB collection instance
@@ -555,91 +423,5 @@ declare class Store<TSchema extends ModelSchema, TMethods extends Record<string,
555
423
  };
556
424
  };
557
425
  }
558
-
559
- type ObjectTypeDefinition = {
560
- [key: string]: SchemaTypeDefinition;
561
- };
562
- type SingularSchemaTypeDefinition = z.ZodType | ObjectTypeDefinition;
563
- type SchemaTypeDefinition = SingularSchemaTypeDefinition | Array<SingularSchemaTypeDefinition>;
564
- type ModelSchema = {
565
- [key: string]: SchemaTypeDefinition;
566
- };
567
- type InferDocumentType<T extends SchemaTypeDefinition> = {
568
- [K in keyof T as T[K] extends z.ZodOptional<z.ZodTypeAny> ? K : never]?: T[K] extends z.ZodType ? z.infer<T[K]> : never;
569
- } & {
570
- [K in keyof T as T[K] extends z.ZodOptional<z.ZodTypeAny> ? never : K]: T[K] extends z.ZodType ? z.infer<T[K]> : T[K] extends Array<infer ElementType extends SchemaTypeDefinition> ? Array<InferDocumentType<ElementType>> : T[K] extends ObjectTypeDefinition ? InferDocumentType<T[K]> : never;
571
- };
572
- declare const schema: {
573
- readonly string: (params?: z.RawCreateParams & {
574
- coerce?: true;
575
- }) => z.ZodString;
576
- readonly number: (params?: z.RawCreateParams & {
577
- coerce?: boolean;
578
- }) => ZodNumber;
579
- readonly date: (params?: z.RawCreateParams & {
580
- coerce?: boolean;
581
- }) => z.ZodDate;
582
- readonly boolean: (params?: z.RawCreateParams & {
583
- coerce?: boolean;
584
- }) => z.ZodBoolean;
585
- readonly array: <El extends z.ZodTypeAny>(schema: El, params?: z.RawCreateParams) => ZodArray<El>;
586
- readonly object: <Shape extends z.ZodRawShape>(shape: Shape, params?: z.RawCreateParams) => z.ZodObject<Shape, "strip", z.ZodTypeAny, z.objectOutputType<Shape, z.ZodTypeAny, "strip">, z.objectInputType<Shape, z.ZodTypeAny, "strip">>;
587
- readonly enum: {
588
- <U extends string, T extends Readonly<[U, ...U[]]>>(values: T, params?: z.RawCreateParams): z.ZodEnum<z.Writeable<T>>;
589
- <U extends string, T extends [U, ...U[]]>(values: T, params?: z.RawCreateParams): z.ZodEnum<T>;
590
- };
591
- readonly embedding: () => ZodArray<ZodNumber>;
592
- readonly objectId: () => z.ZodType<ObjectId>;
593
- readonly userId: () => z.ZodType<ObjectId>;
594
- readonly ref: <T extends ModelSchema>(_collection: string | Store<T, InferDocumentType<T>>) => z.ZodType<ObjectId>;
595
- readonly union: <Options extends Readonly<[z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]>>(types: Options, params?: z.RawCreateParams) => z.ZodUnion<Options>;
596
- readonly infer: <T extends SchemaTypeDefinition>(_schema: T) => InferDocumentType<T>;
597
- };
598
- declare namespace schema {
599
- type infer<T extends SchemaTypeDefinition> = InferDocumentType<T>;
600
- }
601
-
602
- type HttpMethod = 'get' | 'post' | 'put' | 'delete' | 'patch' | 'options' | 'head' | 'all' | 'use';
603
- type RouteParams<T = unknown> = {
604
- query: Record<string, string>;
605
- body: T;
606
- params: Record<string, string>;
607
- headers: Record<string, string>;
608
- cookies: Record<string, string>;
609
- rawBody?: Buffer;
610
- req: Request;
611
- res: Response;
612
- next: NextFunction;
613
- };
614
- type RouteResponse<T = unknown> = {
615
- data?: T;
616
- status?: number;
617
- headers?: Record<string, string>;
618
- redirect?: string;
619
- } | null;
620
- type RouteHandler<T = unknown> = (params: RouteParams, context: Pick<Context, 'session' | 'user'>) => Promise<RouteResponse<T>> | RouteResponse<T>;
621
- type RouteHandlers = {
622
- [key in HttpMethod]?: RouteHandler;
623
- };
624
- type BodyConfig = {
625
- json?: boolean | {
626
- limit?: string;
627
- };
628
- urlencoded?: boolean | {
629
- limit?: string;
630
- extended?: boolean;
631
- };
632
- raw?: boolean | {
633
- limit?: string;
634
- type?: string | string[];
635
- };
636
- };
637
- type RouteDefinition = {
638
- path: string;
639
- handlers: RouteHandlers;
640
- errorHandler?: RouteHandler;
641
- body?: BodyConfig;
642
- };
643
- type ExpressHandler = (req: Request, res: Response) => Promise<void> | void;
644
-
645
- export { type Args as A, type BodyConfig as B, type CronJobInputParams as C, type EmailProvider as E, type HttpMethod as H, type InferDocumentType as I, type MethodDefinition as M, type RouteDefinition as R, Store as S, type RateLimitRule as a, type ConnectionInfo as b, type RateLimitType as c, type EmailPayload as d, type RouteHandler as e, type RouteParams as f, type RouteResponse as g, type EmailAttachment as h, type ClientInfo as i, type Context as j, type Handler as k, type MethodType as l, type Method as m, type CronJob as n, type CronJobMetadata as o, type ModelSchema as p, type RouteHandlers as q, type ExpressHandler as r, schema as s };
426
+ export {};
427
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/data/store.ts"],"names":[],"mappings":"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"}