modelence 0.9.0-dev.0 → 0.9.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/bin/modelence.js +3 -57
  2. package/dist/bin/modelence.js.map +1 -1
  3. package/dist/chunk-3S2FFBNS.js +2 -0
  4. package/dist/chunk-3S2FFBNS.js.map +1 -0
  5. package/dist/chunk-55J6XMHW.js +2 -0
  6. package/dist/chunk-55J6XMHW.js.map +1 -0
  7. package/dist/chunk-C3UESBRX.js +2 -0
  8. package/dist/chunk-C3UESBRX.js.map +1 -0
  9. package/dist/chunk-DO5TZLF5.js +2 -0
  10. package/dist/chunk-DO5TZLF5.js.map +1 -0
  11. package/dist/chunk-PB6WQQ4L.js +3 -0
  12. package/dist/chunk-PB6WQQ4L.js.map +1 -0
  13. package/dist/chunk-YOLALUSB.js +3 -0
  14. package/dist/chunk-YOLALUSB.js.map +1 -0
  15. package/dist/client.d.ts +133 -10
  16. package/dist/client.js +1 -14
  17. package/dist/client.js.map +1 -1
  18. package/dist/index-CwdohC5n.d.ts +15 -0
  19. package/dist/index.d.ts +31 -6
  20. package/dist/index.js +1 -2
  21. package/dist/index.js.map +1 -1
  22. package/dist/mongo.d.ts +3 -2
  23. package/dist/mongo.js +1 -2
  24. package/dist/mongo.js.map +1 -1
  25. package/dist/package-FGEKA4ES.js +2 -0
  26. package/dist/package-FGEKA4ES.js.map +1 -0
  27. package/dist/server.d.ts +537 -19
  28. package/dist/server.js +18 -15
  29. package/dist/server.js.map +1 -1
  30. package/dist/telemetry.d.ts +11 -2
  31. package/dist/telemetry.js +1 -1
  32. package/dist/telemetry.js.map +1 -1
  33. package/dist/types-BOFsm7A2.d.ts +155 -0
  34. package/dist/{data/store.d.ts → types-SXHKNPNY.d.ts} +196 -14
  35. package/dist/types.d.ts +7 -10
  36. package/dist/types.js +1 -1
  37. package/dist/types.js.map +1 -1
  38. package/package.json +6 -5
  39. package/dist/app/authConfig.d.ts +0 -68
  40. package/dist/app/authConfig.d.ts.map +0 -1
  41. package/dist/app/authConfig.js +0 -8
  42. package/dist/app/authConfig.js.map +0 -1
  43. package/dist/app/backendApi.d.ts +0 -29
  44. package/dist/app/backendApi.d.ts.map +0 -1
  45. package/dist/app/backendApi.js +0 -69
  46. package/dist/app/backendApi.js.map +0 -1
  47. package/dist/app/email.d.ts +0 -3
  48. package/dist/app/email.d.ts.map +0 -1
  49. package/dist/app/email.js +0 -8
  50. package/dist/app/email.js.map +0 -1
  51. package/dist/app/emailConfig.d.ts +0 -27
  52. package/dist/app/emailConfig.d.ts.map +0 -1
  53. package/dist/app/emailConfig.js +0 -8
  54. package/dist/app/emailConfig.js.map +0 -1
  55. package/dist/app/index.d.ts +0 -20
  56. package/dist/app/index.d.ts.map +0 -1
  57. package/dist/app/index.js +0 -258
  58. package/dist/app/index.js.map +0 -1
  59. package/dist/app/loggerProcess.d.ts +0 -5
  60. package/dist/app/loggerProcess.d.ts.map +0 -1
  61. package/dist/app/loggerProcess.js +0 -90
  62. package/dist/app/loggerProcess.js.map +0 -1
  63. package/dist/app/metrics.d.ts +0 -6
  64. package/dist/app/metrics.d.ts.map +0 -1
  65. package/dist/app/metrics.js +0 -92
  66. package/dist/app/metrics.js.map +0 -1
  67. package/dist/app/module.d.ts +0 -77
  68. package/dist/app/module.d.ts.map +0 -1
  69. package/dist/app/module.js +0 -46
  70. package/dist/app/module.js.map +0 -1
  71. package/dist/app/server.d.ts +0 -37
  72. package/dist/app/server.d.ts.map +0 -1
  73. package/dist/app/server.js +0 -198
  74. package/dist/app/server.js.map +0 -1
  75. package/dist/app/state.d.ts +0 -19
  76. package/dist/app/state.d.ts.map +0 -1
  77. package/dist/app/state.js +0 -27
  78. package/dist/app/state.js.map +0 -1
  79. package/dist/app/websocketConfig.d.ts +0 -7
  80. package/dist/app/websocketConfig.d.ts.map +0 -1
  81. package/dist/app/websocketConfig.js +0 -8
  82. package/dist/app/websocketConfig.js.map +0 -1
  83. package/dist/auth/client/index.d.ts +0 -69
  84. package/dist/auth/client/index.d.ts.map +0 -1
  85. package/dist/auth/client/index.js +0 -79
  86. package/dist/auth/client/index.js.map +0 -1
  87. package/dist/auth/db.d.ts +0 -176
  88. package/dist/auth/db.d.ts.map +0 -1
  89. package/dist/auth/db.js +0 -117
  90. package/dist/auth/db.js.map +0 -1
  91. package/dist/auth/deleteUser.d.ts +0 -5
  92. package/dist/auth/deleteUser.d.ts.map +0 -1
  93. package/dist/auth/deleteUser.js +0 -34
  94. package/dist/auth/deleteUser.js.map +0 -1
  95. package/dist/auth/disposableEmails.d.ts +0 -6
  96. package/dist/auth/disposableEmails.d.ts.map +0 -1
  97. package/dist/auth/disposableEmails.js +0 -47
  98. package/dist/auth/disposableEmails.js.map +0 -1
  99. package/dist/auth/index.d.ts +0 -7
  100. package/dist/auth/index.d.ts.map +0 -1
  101. package/dist/auth/index.js +0 -33
  102. package/dist/auth/index.js.map +0 -1
  103. package/dist/auth/login.d.ts +0 -9
  104. package/dist/auth/login.d.ts.map +0 -1
  105. package/dist/auth/login.js +0 -100
  106. package/dist/auth/login.js.map +0 -1
  107. package/dist/auth/password.d.ts +0 -14
  108. package/dist/auth/password.d.ts.map +0 -1
  109. package/dist/auth/password.js +0 -26
  110. package/dist/auth/password.js.map +0 -1
  111. package/dist/auth/profile.d.ts +0 -10
  112. package/dist/auth/profile.d.ts.map +0 -1
  113. package/dist/auth/profile.js +0 -13
  114. package/dist/auth/profile.js.map +0 -1
  115. package/dist/auth/providers/github.d.ts +0 -3
  116. package/dist/auth/providers/github.d.ts.map +0 -1
  117. package/dist/auth/providers/github.js +0 -122
  118. package/dist/auth/providers/github.js.map +0 -1
  119. package/dist/auth/providers/google.d.ts +0 -3
  120. package/dist/auth/providers/google.d.ts.map +0 -1
  121. package/dist/auth/providers/google.js +0 -108
  122. package/dist/auth/providers/google.js.map +0 -1
  123. package/dist/auth/providers/oauth-common.d.ts +0 -13
  124. package/dist/auth/providers/oauth-common.d.ts.map +0 -1
  125. package/dist/auth/providers/oauth-common.js +0 -109
  126. package/dist/auth/providers/oauth-common.js.map +0 -1
  127. package/dist/auth/resetPassword.d.ts +0 -10
  128. package/dist/auth/resetPassword.d.ts.map +0 -1
  129. package/dist/auth/resetPassword.js +0 -108
  130. package/dist/auth/resetPassword.js.map +0 -1
  131. package/dist/auth/role.d.ts +0 -8
  132. package/dist/auth/role.d.ts.map +0 -1
  133. package/dist/auth/role.js +0 -37
  134. package/dist/auth/role.js.map +0 -1
  135. package/dist/auth/session.d.ts +0 -24
  136. package/dist/auth/session.d.ts.map +0 -1
  137. package/dist/auth/session.js +0 -84
  138. package/dist/auth/session.js.map +0 -1
  139. package/dist/auth/signup.d.ts +0 -3
  140. package/dist/auth/signup.d.ts.map +0 -1
  141. package/dist/auth/signup.js +0 -89
  142. package/dist/auth/signup.js.map +0 -1
  143. package/dist/auth/templates/emailVerficationTemplate.d.ts +0 -6
  144. package/dist/auth/templates/emailVerficationTemplate.d.ts.map +0 -1
  145. package/dist/auth/templates/emailVerficationTemplate.js +0 -9
  146. package/dist/auth/templates/emailVerficationTemplate.js.map +0 -1
  147. package/dist/auth/types.d.ts +0 -22
  148. package/dist/auth/types.d.ts.map +0 -1
  149. package/dist/auth/types.js +0 -2
  150. package/dist/auth/types.js.map +0 -1
  151. package/dist/auth/user.d.ts +0 -5
  152. package/dist/auth/user.d.ts.map +0 -1
  153. package/dist/auth/user.js +0 -152
  154. package/dist/auth/user.js.map +0 -1
  155. package/dist/auth/validators.d.ts +0 -3
  156. package/dist/auth/validators.d.ts.map +0 -1
  157. package/dist/auth/validators.js +0 -8
  158. package/dist/auth/validators.js.map +0 -1
  159. package/dist/auth/verification.d.ts +0 -8
  160. package/dist/auth/verification.d.ts.map +0 -1
  161. package/dist/auth/verification.js +0 -94
  162. package/dist/auth/verification.js.map +0 -1
  163. package/dist/bin/auth.d.ts +0 -4
  164. package/dist/bin/auth.d.ts.map +0 -1
  165. package/dist/bin/auth.js +0 -48
  166. package/dist/bin/auth.js.map +0 -1
  167. package/dist/bin/build.d.ts +0 -2
  168. package/dist/bin/build.d.ts.map +0 -1
  169. package/dist/bin/build.js +0 -78
  170. package/dist/bin/build.js.map +0 -1
  171. package/dist/bin/config.d.ts +0 -11
  172. package/dist/bin/config.d.ts.map +0 -1
  173. package/dist/bin/config.js +0 -91
  174. package/dist/bin/config.js.map +0 -1
  175. package/dist/bin/deploy.d.ts +0 -6
  176. package/dist/bin/deploy.d.ts.map +0 -1
  177. package/dist/bin/deploy.js +0 -129
  178. package/dist/bin/deploy.js.map +0 -1
  179. package/dist/bin/dev.d.ts +0 -2
  180. package/dist/bin/dev.d.ts.map +0 -1
  181. package/dist/bin/dev.js +0 -14
  182. package/dist/bin/dev.js.map +0 -1
  183. package/dist/bin/modelence.d.ts +0 -3
  184. package/dist/bin/modelence.d.ts.map +0 -1
  185. package/dist/bin/setup.d.ts +0 -5
  186. package/dist/bin/setup.d.ts.map +0 -1
  187. package/dist/bin/setup.js +0 -91
  188. package/dist/bin/setup.js.map +0 -1
  189. package/dist/bin/start.d.ts +0 -2
  190. package/dist/bin/start.d.ts.map +0 -1
  191. package/dist/bin/start.js +0 -15
  192. package/dist/bin/start.js.map +0 -1
  193. package/dist/client/AppProvider.d.ts +0 -8
  194. package/dist/client/AppProvider.d.ts.map +0 -1
  195. package/dist/client/AppProvider.js +0 -31
  196. package/dist/client/AppProvider.js.map +0 -1
  197. package/dist/client/errorHandler.d.ts +0 -4
  198. package/dist/client/errorHandler.d.ts.map +0 -1
  199. package/dist/client/errorHandler.js +0 -10
  200. package/dist/client/errorHandler.js.map +0 -1
  201. package/dist/client/localStorage.d.ts +0 -3
  202. package/dist/client/localStorage.d.ts.map +0 -1
  203. package/dist/client/localStorage.js +0 -14
  204. package/dist/client/localStorage.js.map +0 -1
  205. package/dist/client/method.d.ts +0 -6
  206. package/dist/client/method.d.ts.map +0 -1
  207. package/dist/client/method.js +0 -52
  208. package/dist/client/method.js.map +0 -1
  209. package/dist/client/renderApp.d.ts +0 -9
  210. package/dist/client/renderApp.d.ts.map +0 -1
  211. package/dist/client/renderApp.js +0 -28
  212. package/dist/client/renderApp.js.map +0 -1
  213. package/dist/client/session.d.ts +0 -34
  214. package/dist/client/session.d.ts.map +0 -1
  215. package/dist/client/session.js +0 -83
  216. package/dist/client/session.js.map +0 -1
  217. package/dist/client.d.ts.map +0 -1
  218. package/dist/config/client.d.ts +0 -10
  219. package/dist/config/client.d.ts.map +0 -1
  220. package/dist/config/client.js +0 -14
  221. package/dist/config/client.js.map +0 -1
  222. package/dist/config/server.d.ts +0 -48
  223. package/dist/config/server.d.ts.map +0 -1
  224. package/dist/config/server.js +0 -85
  225. package/dist/config/server.js.map +0 -1
  226. package/dist/config/sync.d.ts +0 -2
  227. package/dist/config/sync.d.ts.map +0 -1
  228. package/dist/config/sync.js +0 -32
  229. package/dist/config/sync.js.map +0 -1
  230. package/dist/config/types.d.ts +0 -19
  231. package/dist/config/types.d.ts.map +0 -1
  232. package/dist/config/types.js +0 -2
  233. package/dist/config/types.js.map +0 -1
  234. package/dist/cron/jobs.d.ts +0 -13
  235. package/dist/cron/jobs.d.ts.map +0 -1
  236. package/dist/cron/jobs.js +0 -155
  237. package/dist/cron/jobs.js.map +0 -1
  238. package/dist/cron/types.d.ts +0 -29
  239. package/dist/cron/types.d.ts.map +0 -1
  240. package/dist/cron/types.js +0 -2
  241. package/dist/cron/types.js.map +0 -1
  242. package/dist/data/schemaSerializer.d.ts +0 -37
  243. package/dist/data/schemaSerializer.d.ts.map +0 -1
  244. package/dist/data/schemaSerializer.js +0 -104
  245. package/dist/data/schemaSerializer.js.map +0 -1
  246. package/dist/data/store.d.ts.map +0 -1
  247. package/dist/data/store.js +0 -501
  248. package/dist/data/store.js.map +0 -1
  249. package/dist/data/types.d.ts +0 -47
  250. package/dist/data/types.d.ts.map +0 -1
  251. package/dist/data/types.js +0 -35
  252. package/dist/data/types.js.map +0 -1
  253. package/dist/db/client.d.ts +0 -5
  254. package/dist/db/client.d.ts.map +0 -1
  255. package/dist/db/client.js +0 -41
  256. package/dist/db/client.js.map +0 -1
  257. package/dist/error.d.ts +0 -16
  258. package/dist/error.d.ts.map +0 -1
  259. package/dist/error.js +0 -24
  260. package/dist/error.js.map +0 -1
  261. package/dist/index.d.ts.map +0 -1
  262. package/dist/lock/db.d.ts +0 -19
  263. package/dist/lock/db.d.ts.map +0 -1
  264. package/dist/lock/db.js +0 -28
  265. package/dist/lock/db.js.map +0 -1
  266. package/dist/lock/helpers.d.ts +0 -28
  267. package/dist/lock/helpers.d.ts.map +0 -1
  268. package/dist/lock/helpers.js +0 -107
  269. package/dist/lock/helpers.js.map +0 -1
  270. package/dist/lock/index.d.ts +0 -4
  271. package/dist/lock/index.d.ts.map +0 -1
  272. package/dist/lock/index.js +0 -4
  273. package/dist/lock/index.js.map +0 -1
  274. package/dist/lock/module.d.ts +0 -7
  275. package/dist/lock/module.d.ts.map +0 -1
  276. package/dist/lock/module.js +0 -9
  277. package/dist/lock/module.js.map +0 -1
  278. package/dist/methods/index.d.ts +0 -7
  279. package/dist/methods/index.d.ts.map +0 -1
  280. package/dist/methods/index.js +0 -65
  281. package/dist/methods/index.js.map +0 -1
  282. package/dist/methods/serialize.d.ts +0 -15
  283. package/dist/methods/serialize.d.ts.map +0 -1
  284. package/dist/methods/serialize.js +0 -56
  285. package/dist/methods/serialize.js.map +0 -1
  286. package/dist/methods/types.d.ts +0 -37
  287. package/dist/methods/types.d.ts.map +0 -1
  288. package/dist/methods/types.js +0 -2
  289. package/dist/methods/types.js.map +0 -1
  290. package/dist/migration/db.d.ts +0 -17
  291. package/dist/migration/db.d.ts.map +0 -1
  292. package/dist/migration/db.js +0 -13
  293. package/dist/migration/db.js.map +0 -1
  294. package/dist/migration/index.d.ts +0 -11
  295. package/dist/migration/index.d.ts.map +0 -1
  296. package/dist/migration/index.js +0 -85
  297. package/dist/migration/index.js.map +0 -1
  298. package/dist/mongo.d.ts.map +0 -1
  299. package/dist/rate-limit/db.d.ts +0 -29
  300. package/dist/rate-limit/db.d.ts.map +0 -1
  301. package/dist/rate-limit/db.js +0 -25
  302. package/dist/rate-limit/db.js.map +0 -1
  303. package/dist/rate-limit/index.d.ts +0 -4
  304. package/dist/rate-limit/index.d.ts.map +0 -1
  305. package/dist/rate-limit/index.js +0 -6
  306. package/dist/rate-limit/index.js.map +0 -1
  307. package/dist/rate-limit/rules.d.ts +0 -22
  308. package/dist/rate-limit/rules.d.ts.map +0 -1
  309. package/dist/rate-limit/rules.js +0 -112
  310. package/dist/rate-limit/rules.js.map +0 -1
  311. package/dist/rate-limit/types.d.ts +0 -12
  312. package/dist/rate-limit/types.d.ts.map +0 -1
  313. package/dist/rate-limit/types.js +0 -2
  314. package/dist/rate-limit/types.js.map +0 -1
  315. package/dist/routes/handler.d.ts +0 -4
  316. package/dist/routes/handler.d.ts.map +0 -1
  317. package/dist/routes/handler.js +0 -66
  318. package/dist/routes/handler.js.map +0 -1
  319. package/dist/routes/types.d.ts +0 -45
  320. package/dist/routes/types.d.ts.map +0 -1
  321. package/dist/routes/types.js +0 -2
  322. package/dist/routes/types.js.map +0 -1
  323. package/dist/server.d.ts.map +0 -1
  324. package/dist/system/index.d.ts +0 -4
  325. package/dist/system/index.d.ts.map +0 -1
  326. package/dist/system/index.js +0 -21
  327. package/dist/system/index.js.map +0 -1
  328. package/dist/telemetry/index.d.ts +0 -11
  329. package/dist/telemetry/index.d.ts.map +0 -1
  330. package/dist/telemetry/index.js +0 -79
  331. package/dist/telemetry/index.js.map +0 -1
  332. package/dist/telemetry.d.ts.map +0 -1
  333. package/dist/time.d.ts +0 -8
  334. package/dist/time.d.ts.map +0 -1
  335. package/dist/time.js +0 -13
  336. package/dist/time.js.map +0 -1
  337. package/dist/types/email.d.ts +0 -25
  338. package/dist/types/email.d.ts.map +0 -1
  339. package/dist/types/email.js +0 -2
  340. package/dist/types/email.js.map +0 -1
  341. package/dist/types/index.d.ts +0 -14
  342. package/dist/types/index.d.ts.map +0 -1
  343. package/dist/types/index.js +0 -2
  344. package/dist/types/index.js.map +0 -1
  345. package/dist/types.d.ts.map +0 -1
  346. package/dist/utils/index.d.ts +0 -4
  347. package/dist/utils/index.d.ts.map +0 -1
  348. package/dist/utils/index.js +0 -15
  349. package/dist/utils/index.js.map +0 -1
  350. package/dist/viteServer.d.ts +0 -13
  351. package/dist/viteServer.d.ts.map +0 -1
  352. package/dist/viteServer.js +0 -132
  353. package/dist/viteServer.js.map +0 -1
  354. package/dist/websocket/client.d.ts +0 -9
  355. package/dist/websocket/client.d.ts.map +0 -1
  356. package/dist/websocket/client.js +0 -16
  357. package/dist/websocket/client.js.map +0 -1
  358. package/dist/websocket/clientChannel.d.ts +0 -9
  359. package/dist/websocket/clientChannel.d.ts.map +0 -1
  360. package/dist/websocket/clientChannel.js +0 -26
  361. package/dist/websocket/clientChannel.js.map +0 -1
  362. package/dist/websocket/serverChannel.d.ts +0 -14
  363. package/dist/websocket/serverChannel.d.ts.map +0 -1
  364. package/dist/websocket/serverChannel.js +0 -21
  365. package/dist/websocket/serverChannel.js.map +0 -1
  366. package/dist/websocket/socketio/client.d.ts +0 -4
  367. package/dist/websocket/socketio/client.d.ts.map +0 -1
  368. package/dist/websocket/socketio/client.js +0 -48
  369. package/dist/websocket/socketio/client.js.map +0 -1
  370. package/dist/websocket/socketio/server.d.ts +0 -10
  371. package/dist/websocket/socketio/server.d.ts.map +0 -1
  372. package/dist/websocket/socketio/server.js +0 -80
  373. package/dist/websocket/socketio/server.js.map +0 -1
  374. package/dist/websocket/types.d.ts +0 -45
  375. package/dist/websocket/types.d.ts.map +0 -1
  376. package/dist/websocket/types.js +0 -2
  377. package/dist/websocket/types.js.map +0 -1
@@ -1,501 +0,0 @@
1
- import { ObjectId, MongoError, } from 'mongodb';
2
- import { serializeModelSchema } from './schemaSerializer';
3
- /**
4
- * The Store class provides a type-safe interface for MongoDB collections with built-in schema validation and helper methods.
5
- *
6
- * @category Store
7
- * @typeParam TSchema - The document schema type
8
- * @typeParam TMethods - Custom methods that will be added to documents
9
- *
10
- * @example
11
- * ```ts
12
- * const dbTodos = new Store('todos', {
13
- * schema: {
14
- * title: schema.string(),
15
- * completed: schema.boolean(),
16
- * dueDate: schema.date().optional(),
17
- * userId: schema.userId(),
18
- * },
19
- * methods: {
20
- * isOverdue() {
21
- * return this.dueDate < new Date();
22
- * }
23
- * }
24
- * });
25
- * ```
26
- */
27
- export class Store {
28
- /**
29
- * Creates a new Store instance
30
- *
31
- * @param name - The collection name in MongoDB
32
- * @param options - Store configuration
33
- */
34
- constructor(name, options) {
35
- this.name = name;
36
- this.schema = options.schema;
37
- this.methods = options.methods;
38
- this.indexes = options.indexes;
39
- this.searchIndexes = options.searchIndexes || [];
40
- }
41
- getName() {
42
- return this.name;
43
- }
44
- /** @internal */
45
- getSchema() {
46
- return this.schema;
47
- }
48
- /** @internal */
49
- getSerializedSchema() {
50
- return serializeModelSchema(this.schema);
51
- }
52
- /**
53
- * Extends the store with additional schema fields, indexes, methods, and search indexes.
54
- * Returns a new Store instance with the extended schema and updated types.
55
- * Methods from the original store are preserved with updated type signatures.
56
- *
57
- * @param config - Additional schema fields, indexes, methods, and search indexes to add
58
- * @returns A new Store instance with the extended schema
59
- *
60
- * @example
61
- * ```ts
62
- * // Extend the users collection
63
- * export const dbUsers = baseUsersCollection.extend({
64
- * schema: {
65
- * firstName: schema.string(),
66
- * lastName: schema.string(),
67
- * companyId: schema.objectId().optional(),
68
- * },
69
- * indexes: [
70
- * { key: { companyId: 1 } },
71
- * { key: { lastName: 1, firstName: 1 } },
72
- * ],
73
- * methods: {
74
- * getFullName() {
75
- * return `${this.firstName} ${this.lastName}`;
76
- * }
77
- * }
78
- * });
79
- *
80
- * // Now fully typed with new fields
81
- * const user = await dbUsers.findOne({ firstName: 'John' });
82
- * console.log(user?.getFullName());
83
- * ```
84
- */
85
- extend(config) {
86
- const extendedSchema = {
87
- ...this.schema,
88
- ...(config.schema || {}),
89
- };
90
- const extendedIndexes = [...this.indexes, ...(config.indexes || [])];
91
- const extendedSearchIndexes = [...this.searchIndexes, ...(config.searchIndexes || [])];
92
- const combinedMethods = {
93
- ...(this.methods || {}),
94
- ...(config.methods || {}),
95
- };
96
- const extendedStore = new Store(this.name, {
97
- schema: extendedSchema,
98
- methods: combinedMethods,
99
- indexes: extendedIndexes,
100
- searchIndexes: extendedSearchIndexes,
101
- });
102
- if (this.client) {
103
- throw new Error(`Store.extend() must be called before startApp(). Store '${this.name}' has already been initialized and cannot be extended.`);
104
- }
105
- return extendedStore;
106
- }
107
- /** @internal */
108
- init(client) {
109
- if (this.collection) {
110
- throw new Error(`Collection ${this.name} is already initialized`);
111
- }
112
- this.client = client;
113
- this.collection = this.client.db().collection(this.name);
114
- }
115
- /** @internal */
116
- async createIndexes() {
117
- if (this.indexes.length > 0) {
118
- for (const index of this.indexes) {
119
- try {
120
- await this.requireCollection().createIndexes([index]);
121
- }
122
- catch (error) {
123
- if (error instanceof MongoError && error.code === 86 && index.name) {
124
- await this.requireCollection().dropIndex(index.name);
125
- await this.requireCollection().createIndexes([index]);
126
- }
127
- else {
128
- throw error;
129
- }
130
- }
131
- }
132
- }
133
- if (this.searchIndexes.length > 0) {
134
- for (const searchIndex of this.searchIndexes) {
135
- try {
136
- await this.requireCollection().createSearchIndexes([searchIndex]);
137
- }
138
- catch (error) {
139
- if (error instanceof MongoError && error.code === 68 && searchIndex.name) {
140
- await this.requireCollection().dropSearchIndex(searchIndex.name);
141
- await this.requireCollection().createSearchIndexes([searchIndex]);
142
- }
143
- else {
144
- throw error;
145
- }
146
- }
147
- }
148
- }
149
- }
150
- wrapDocument(document) {
151
- if (!this.methods) {
152
- return document;
153
- }
154
- const result = Object.create(null, Object.getOwnPropertyDescriptors({
155
- ...document,
156
- ...this.methods,
157
- }));
158
- return result;
159
- }
160
- /**
161
- * For convenience, to also allow directy passing a string or ObjectId as the selector
162
- */
163
- getSelector(selector) {
164
- if (typeof selector === 'string') {
165
- return { _id: new ObjectId(selector) };
166
- }
167
- if (selector instanceof ObjectId) {
168
- return { _id: selector };
169
- }
170
- return selector;
171
- }
172
- /** @internal */
173
- requireCollection() {
174
- if (!this.collection) {
175
- throw new Error(`Collection ${this.name} is not provisioned`);
176
- }
177
- return this.collection;
178
- }
179
- /** @internal */
180
- requireClient() {
181
- if (!this.client) {
182
- throw new Error(`Database is not connected`);
183
- }
184
- return this.client;
185
- }
186
- /**
187
- * Finds a single document matching the query
188
- *
189
- * @param query - Type-safe query filter. Only schema fields, MongoDB operators, and dot notation are allowed.
190
- * @param options - Find options
191
- * @returns The document, or null if not found
192
- *
193
- * @example
194
- * ```ts
195
- * // ✅ Valid queries:
196
- * await store.findOne({ name: 'John' })
197
- * await store.findOne({ age: { $gt: 18 } })
198
- * await store.findOne({ _id: new ObjectId('...') })
199
- * await store.findOne({ tags: { $in: ['typescript', 'mongodb'] } })
200
- * await store.findOne({ $or: [{ name: 'John' }, { name: 'Jane' }] })
201
- * await store.findOne({ 'emails.address': 'test@example.com' }) // dot notation
202
- *
203
- * // ❌ TypeScript error - 'id' is not in schema:
204
- * await store.findOne({ id: '123' })
205
- * ```
206
- */
207
- async findOne(query, options) {
208
- const document = await this.requireCollection().findOne(query, options);
209
- return document ? this.wrapDocument(document) : null;
210
- }
211
- async requireOne(query, options, errorHandler) {
212
- const result = await this.findOne(query, options);
213
- if (!result) {
214
- throw errorHandler ? errorHandler() : new Error(`Record not found in ${this.name}`);
215
- }
216
- return result;
217
- }
218
- find(query, options) {
219
- const cursor = this.requireCollection().find(query);
220
- if (options?.sort) {
221
- cursor.sort(options.sort);
222
- }
223
- if (options?.limit) {
224
- cursor.limit(options.limit);
225
- }
226
- if (options?.skip) {
227
- cursor.skip(options.skip);
228
- }
229
- return cursor;
230
- }
231
- /**
232
- * Fetches a single document by its ID
233
- *
234
- * @param id - The ID of the document to find
235
- * @returns The document, or null if not found
236
- */
237
- async findById(id) {
238
- const idSelector = typeof id === 'string' ? { _id: new ObjectId(id) } : { _id: id };
239
- return await this.findOne(idSelector);
240
- }
241
- /**
242
- * Fetches a single document by its ID, or throws an error if not found
243
- *
244
- * @param id - The ID of the document to find
245
- * @param errorHandler - Optional error handler to return a custom error if the document is not found
246
- * @returns The document
247
- */
248
- async requireById(id, errorHandler) {
249
- const result = await this.findById(id);
250
- if (!result) {
251
- throw errorHandler
252
- ? errorHandler()
253
- : new Error(`Record with id ${id} not found in ${this.name}`);
254
- }
255
- return result;
256
- }
257
- /**
258
- * Counts the number of documents that match a query
259
- *
260
- * @param query - The query to filter documents
261
- * @returns The number of documents that match the query
262
- */
263
- countDocuments(query) {
264
- return this.requireCollection().countDocuments(query);
265
- }
266
- /**
267
- * Fetches multiple documents, equivalent to Node.js MongoDB driver's `find` and `toArray` methods combined.
268
- *
269
- * @param query - The query to filter documents
270
- * @param options - Options
271
- * @returns The documents
272
- */
273
- async fetch(query, options) {
274
- const cursor = this.find(query, options);
275
- return (await cursor.toArray()).map(this.wrapDocument.bind(this));
276
- }
277
- /**
278
- * Inserts a single document
279
- *
280
- * @param document - The document to insert
281
- * @returns The result of the insert operation
282
- */
283
- async insertOne(document) {
284
- return await this.requireCollection().insertOne(document);
285
- }
286
- /**
287
- * Inserts multiple documents
288
- *
289
- * @param documents - The documents to insert
290
- * @returns The result of the insert operation
291
- */
292
- async insertMany(documents) {
293
- return await this.requireCollection().insertMany(documents);
294
- }
295
- /**
296
- * Updates a single document
297
- *
298
- * @param selector - The selector to find the document to update
299
- * @param update - The update to apply to the document
300
- * @returns The result of the update operation
301
- */
302
- async updateOne(selector, update) {
303
- return await this.requireCollection().updateOne(this.getSelector(selector), update);
304
- }
305
- /**
306
- * Updates a single document, or inserts it if it doesn't exist
307
- *
308
- * @param selector - The selector to find the document to update
309
- * @param update - The MongoDB modifier to apply to the document
310
- * @returns The result of the update operation
311
- */
312
- async upsertOne(selector, update) {
313
- return await this.requireCollection().updateOne(this.getSelector(selector), update, {
314
- upsert: true,
315
- });
316
- }
317
- /**
318
- * Updates multiple documents
319
- *
320
- * @param selector - The selector to find the documents to update
321
- * @param update - The MongoDB modifier to apply to the documents
322
- * @returns The result of the update operation
323
- */
324
- async updateMany(selector, update, options) {
325
- return await this.requireCollection().updateMany(selector, update, options);
326
- }
327
- /**
328
- * Updates multiple documents, or inserts them if they don't exist
329
- *
330
- * @param selector - The selector to find the documents to update
331
- * @param update - The MongoDB modifier to apply to the documents
332
- * @returns The result of the update operation
333
- */
334
- async upsertMany(selector, update) {
335
- return await this.requireCollection().updateMany(selector, update, {
336
- upsert: true,
337
- });
338
- }
339
- /**
340
- * Deletes a single document
341
- *
342
- * @param selector - The selector to find the document to delete
343
- * @returns The result of the delete operation
344
- */
345
- async deleteOne(selector) {
346
- return await this.requireCollection().deleteOne(selector);
347
- }
348
- /**
349
- * Deletes multiple documents
350
- *
351
- * @param selector - The selector to find the documents to delete
352
- * @returns The result of the delete operation
353
- */
354
- async deleteMany(selector) {
355
- return await this.requireCollection().deleteMany(selector);
356
- }
357
- /**
358
- * Aggregates documents using MongoDB's aggregation framework
359
- *
360
- * @param pipeline - The aggregation pipeline
361
- * @param options - Optional options
362
- * @returns The aggregation cursor
363
- */
364
- aggregate(pipeline, options) {
365
- return this.requireCollection().aggregate(pipeline, options);
366
- }
367
- /**
368
- * Performs a bulk write operation on the collection
369
- *
370
- * @param operations - The operations to perform
371
- * @returns The result of the bulk write operation
372
- */
373
- bulkWrite(operations) {
374
- return this.requireCollection().bulkWrite(operations);
375
- }
376
- /**
377
- * Returns the raw MongoDB database instance for advanced operations
378
- * @returns The MongoDB database instance
379
- * @throws Error if the store is not provisioned
380
- */
381
- getDatabase() {
382
- return this.requireClient().db();
383
- }
384
- /**
385
- * Returns the raw MongoDB collection instance for advanced operations
386
- * @returns The MongoDB collection instance
387
- * @throws Error if the store is not provisioned
388
- */
389
- rawCollection() {
390
- return this.requireCollection();
391
- }
392
- /**
393
- * Renames an existing collection to this store's name, used for migrations
394
- * @param oldName - The previous name of the collection
395
- * @throws Error if the old collection doesn't exist or if this store's collection already exists
396
- */
397
- async renameFrom(oldName, options) {
398
- const db = this.getDatabase();
399
- if (!this.collection || !db) {
400
- throw new Error(`Store ${this.name} is not provisioned`);
401
- }
402
- const oldCollections = await db.listCollections({ name: oldName }).toArray();
403
- if (oldCollections.length === 0) {
404
- throw new Error(`Collection ${oldName} not found`);
405
- }
406
- const newCollections = await db.listCollections({ name: this.name }).toArray();
407
- if (newCollections.length > 0) {
408
- throw new Error(`Collection ${this.name} already exists`);
409
- }
410
- const existingCollection = db.collection(oldName);
411
- await existingCollection.rename(this.name, options);
412
- }
413
- /**
414
- * Performs a vector similarity search using MongoDB Atlas Vector Search
415
- *
416
- * @param params - Vector search parameters
417
- * @param params.field - The field name containing the vector embeddings
418
- * @param params.embedding - The query vector to search for
419
- * @param params.numCandidates - Number of nearest neighbors to consider (default: 100)
420
- * @param params.limit - Maximum number of results to return (default: 10)
421
- * @param params.projection - Additional fields to include in the results
422
- * @param params.indexName - Name of index (default: field + VectorSearch)
423
- * @returns An aggregation cursor with search results and scores
424
- *
425
- * @example
426
- * ```ts
427
- * const results = await store.vectorSearch({
428
- * field: 'embedding',
429
- * embedding: [0.1, 0.2, 0.3, ...],
430
- * numCandidates: 100,
431
- * limit: 10,
432
- * projection: { title: 1, description: 1 }
433
- * });
434
- * ```
435
- */
436
- async vectorSearch({ field, embedding, numCandidates, limit, projection, indexName, }) {
437
- return this.aggregate([
438
- {
439
- $vectorSearch: {
440
- index: indexName || field + 'VectorSearch',
441
- path: field,
442
- queryVector: embedding,
443
- numCandidates: numCandidates || 100,
444
- limit: limit || 10,
445
- },
446
- },
447
- {
448
- $project: {
449
- _id: 1,
450
- score: { $meta: 'vectorSearchScore' },
451
- ...projection,
452
- },
453
- },
454
- ]);
455
- }
456
- /**
457
- * Creates a MongoDB Atlas Vector Search index definition
458
- *
459
- * @param params - Vector index parameters
460
- * @param params.field - The field name to create the vector index on
461
- * @param params.dimensions - The number of dimensions in the vector embeddings
462
- * @param params.similarity - The similarity metric to use (default: 'cosine')
463
- * @param params.indexName - Name of index (default: field + VectorSearch)
464
- * @returns A search index description object
465
- *
466
- * @example
467
- * ```ts
468
- * const store = new Store('documents', {
469
- * schema: {
470
- * title: schema.string(),
471
- * embedding: schema.array(schema.number()),
472
- * },
473
- * indexes: [],
474
- * searchIndexes: [
475
- * Store.vectorIndex({
476
- * field: 'embedding',
477
- * dimensions: 1536,
478
- * similarity: 'cosine'
479
- * })
480
- * ]
481
- * });
482
- * ```
483
- */
484
- static vectorIndex({ field, dimensions, similarity = 'cosine', indexName, }) {
485
- return {
486
- type: 'vectorSearch',
487
- name: indexName || field + 'VectorSearch',
488
- definition: {
489
- fields: [
490
- {
491
- type: 'vector',
492
- path: field,
493
- numDimensions: dimensions,
494
- similarity,
495
- },
496
- ],
497
- },
498
- };
499
- }
500
- }
501
- //# sourceMappingURL=store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/data/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAeL,QAAQ,EAMR,UAAU,GAEX,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAsG1D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAO,KAAK;IAyBhB;;;;;OAKG;IACH,YACE,IAAY,EACZ,OASC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;IACnD,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,gBAAgB;IAChB,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,gBAAgB;IAChB,mBAAmB;QACjB,OAAO,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,MAAM,CAOJ,MAKD;QAIC,MAAM,cAAc,GAAG;YACrB,GAAG,IAAI,CAAC,MAAM;YACd,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;SACI,CAAC;QAE/B,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;QACrE,MAAM,qBAAqB,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;QAKvF,MAAM,eAAe,GAAG;YACtB,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;YACvB,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;SACK,CAAC;QAEjC,MAAM,aAAa,GAAG,IAAI,KAAK,CAA6C,IAAI,CAAC,IAAI,EAAE;YACrF,MAAM,EAAE,cAAc;YACtB,OAAO,EAAE,eAAyD;YAClE,OAAO,EAAE,eAAe;YACxB,aAAa,EAAE,qBAAqB;SACrC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,2DAA2D,IAAI,CAAC,IAAI,wDAAwD,CAC7H,CAAC;QACJ,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,gBAAgB;IAChB,IAAI,CAAC,MAAmB;QACtB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,IAAI,yBAAyB,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,UAAU,CAAgB,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,aAAa;QACjB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjC,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBACxD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,KAAK,YAAY,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;wBACnE,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACrD,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;oBACxD,CAAC;yBAAM,CAAC;wBACN,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC7C,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,mBAAmB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;gBACpE,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,KAAK,YAAY,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;wBACzE,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;wBACjE,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,mBAAmB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;oBACpE,CAAC;yBAAM,CAAC;wBACN,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,QAAyB;QAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,QAAmC,CAAC;QAC7C,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAC1B,IAAI,EACJ,MAAM,CAAC,yBAAyB,CAAC;YAC/B,GAAG,QAAQ;YACX,GAAG,IAAI,CAAC,OAAO;SAChB,CAAC,CACH,CAAC;QAEF,OAAO,MAAsB,CAAC;IAChC,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,QAAwD;QAC1E,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,EAAE,GAAG,EAAE,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAA2B,CAAC;QAClE,CAAC;QAED,IAAI,QAAQ,YAAY,QAAQ,EAAE,CAAC;YACjC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAA2B,CAAC;QACpD,CAAC;QAED,OAAO,QAAiC,CAAC;IAC3C,CAAC;IAED,gBAAgB;IAChB,iBAAiB;QACf,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,IAAI,qBAAqB,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,gBAAgB;IAChB,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAK,CAAC,OAAO,CAAC,KAAiC,EAAE,OAAqB;QACpE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,OAAO,CACrD,KAA8B,EAC9B,OAAO,CACR,CAAC;QACF,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,UAAU,CACd,KAAiC,EACjC,OAAqB,EACrB,YAA0B;QAE1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,YAAY,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,uBAAuB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,IAAI,CACV,KAAiC,EACjC,OAA4D;QAE5D,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,KAA8B,CAAC,CAAC;QAC7E,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;YACnB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,EAAqB;QAClC,MAAM,UAAU,GAAG,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QACpF,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,UAAwC,CAAC,CAAC;IACtE,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CAAC,EAAqB,EAAE,YAA0B;QACjE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,YAAY;gBAChB,CAAC,CAAC,YAAY,EAAE;gBAChB,CAAC,CAAC,IAAI,KAAK,CAAC,kBAAkB,EAAE,iBAAiB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,KAAiC;QAC9C,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,cAAc,CAAC,KAA8B,CAAC,CAAC;IACjF,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CACT,KAAiC,EACjC,OAA4D;QAE5D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACzC,OAAO,CAAC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAS,CACb,QAA8D;QAE9D,OAAO,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CACd,SAAiE;QAEjE,OAAO,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,SAAS,CACb,QAAwD,EACxD,MAAmC;QAEnC,OAAO,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IACtF,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,SAAS,CACb,QAAwD,EACxD,MAAmC;QAEnC,OAAO,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE;YAClF,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,UAAU,CACd,QAAoC,EACpC,MAAmC,EACnC,OAAqC;QAErC,OAAO,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,UAAU,CAC9C,QAAiC,EACjC,MAAM,EACN,OAAO,CACR,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,UAAU,CACd,QAAoC,EACpC,MAAmC;QAEnC,OAAO,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,UAAU,CAAC,QAAiC,EAAE,MAAM,EAAE;YAC1F,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAS,CAAC,QAAoC;QAClD,OAAO,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,QAAiC,CAAC,CAAC;IACrF,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAC,QAAoC;QACnD,OAAO,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,UAAU,CAAC,QAAiC,CAAC,CAAC;IACtF,CAAC;IAED;;;;;;OAMG;IACH,SAAS,CAAC,QAAoB,EAAE,OAA0B;QACxD,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,UAAkD;QAC1D,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,OAAe,EAAE,OAAqC;QACrE,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAE9B,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,qBAAqB,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC7E,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,cAAc,OAAO,YAAY,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC/E,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,IAAI,iBAAiB,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,kBAAkB,GAAG,EAAE,CAAC,UAAU,CAAgB,OAAO,CAAC,CAAC;QAEjE,MAAM,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,KAAK,CAAC,YAAY,CAAC,EACjB,KAAK,EACL,SAAS,EACT,aAAa,EACb,KAAK,EACL,UAAU,EACV,SAAS,GAQV;QACC,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB;gBACE,aAAa,EAAE;oBACb,KAAK,EAAE,SAAS,IAAI,KAAK,GAAG,cAAc;oBAC1C,IAAI,EAAE,KAAK;oBACX,WAAW,EAAE,SAAS;oBACtB,aAAa,EAAE,aAAa,IAAI,GAAG;oBACnC,KAAK,EAAE,KAAK,IAAI,EAAE;iBACnB;aACF;YACD;gBACE,QAAQ,EAAE;oBACR,GAAG,EAAE,CAAC;oBACN,KAAK,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE;oBACrC,GAAG,UAAU;iBACd;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,MAAM,CAAC,WAAW,CAAC,EACjB,KAAK,EACL,UAAU,EACV,UAAU,GAAG,QAAQ,EACrB,SAAS,GAMV;QACC,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,SAAS,IAAI,KAAK,GAAG,cAAc;YACzC,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN;wBACE,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,KAAK;wBACX,aAAa,EAAE,UAAU;wBACzB,UAAU;qBACX;iBACF;aACF;SACF,CAAC;IACJ,CAAC;CACF"}
@@ -1,47 +0,0 @@
1
- import { ObjectId } from 'mongodb';
2
- import { z, ZodArray, ZodNumber } from 'zod';
3
- import { Store } from './store';
4
- type ObjectTypeDefinition = {
5
- [key: string]: SchemaTypeDefinition;
6
- };
7
- type SingularSchemaTypeDefinition = z.ZodType | ObjectTypeDefinition;
8
- type SchemaTypeDefinition = SingularSchemaTypeDefinition | Array<SingularSchemaTypeDefinition>;
9
- export type ModelSchema = {
10
- [key: string]: SchemaTypeDefinition;
11
- };
12
- export declare const schema: {
13
- readonly string: (params?: z.RawCreateParams & {
14
- coerce?: true;
15
- }) => z.ZodString;
16
- readonly number: (params?: z.RawCreateParams & {
17
- coerce?: boolean;
18
- }) => ZodNumber;
19
- readonly date: (params?: z.RawCreateParams & {
20
- coerce?: boolean;
21
- }) => z.ZodDate;
22
- readonly boolean: (params?: z.RawCreateParams & {
23
- coerce?: boolean;
24
- }) => z.ZodBoolean;
25
- readonly array: <El extends z.ZodTypeAny>(schema: El, params?: z.RawCreateParams) => ZodArray<El>;
26
- 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">>;
27
- readonly enum: {
28
- <U extends string, T extends Readonly<[U, ...U[]]>>(values: T, params?: z.RawCreateParams): z.ZodEnum<z.Writeable<T>>;
29
- <U extends string, T extends [U, ...U[]]>(values: T, params?: z.RawCreateParams): z.ZodEnum<T>;
30
- };
31
- readonly embedding: () => ZodArray<ZodNumber>;
32
- readonly objectId: () => z.ZodType<ObjectId>;
33
- readonly userId: () => z.ZodType<ObjectId>;
34
- readonly ref: <T extends ModelSchema>(_collection: string | Store<T, InferDocumentType<T>>) => z.ZodType<ObjectId>;
35
- readonly union: <Options extends Readonly<[z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]>>(types: Options, params?: z.RawCreateParams) => z.ZodUnion<Options>;
36
- readonly infer: <T extends SchemaTypeDefinition>(_schema: T) => InferDocumentType<T>;
37
- };
38
- export type InferDocumentType<T extends SchemaTypeDefinition> = {
39
- [K in keyof T as T[K] extends z.ZodOptional<z.ZodTypeAny> ? K : never]?: T[K] extends z.ZodType ? z.infer<T[K]> : never;
40
- } & {
41
- [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;
42
- };
43
- export declare namespace schema {
44
- type infer<T extends SchemaTypeDefinition> = InferDocumentType<T>;
45
- }
46
- export {};
47
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/data/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,KAAK,oBAAoB,GAAG;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,CAAC;CACrC,CAAC;AAEF,KAAK,4BAA4B,GAAG,CAAC,CAAC,OAAO,GAAG,oBAAoB,CAAC;AAErE,KAAK,oBAAoB,GAAG,4BAA4B,GAAG,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAE/F,MAAM,MAAM,WAAW,GAAG;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,CAAC;CACrC,CAAC;AAgBF,eAAO,MAAM,MAAM;;cA6C2u3C,CAAC;;;cAA2F,CAAC;;;cAAyV,CAAC;;;cAA/F,CAAC;;;;;;;;8BArCxk4C,QAAQ,CAAC,SAAS,CAAC;6BAGpB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;2BAGrB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;mBAGzB,CAAC,SAAS,WAAW,eACV,MAAM,GAAG,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,KACnD,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;;qBAIhB,CAAC,SAAS,oBAAoB,WAAW,CAAC,KAAG,iBAAiB,CAAC,CAAC,CAAC;CAG/D,CAAC;AAEX,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,oBAAoB,IAAI;KAC7D,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,GAC3F,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACb,KAAK;CACV,GAAG;KACD,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,GAC1F,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACb,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,MAAM,WAAW,SAAS,oBAAoB,CAAC,GAChE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,GACrC,CAAC,CAAC,CAAC,CAAC,SAAS,oBAAoB,GAC/B,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACvB,KAAK;CACd,CAAC;AAEF,yBAAiB,MAAM,CAAC;IACtB,KAAY,KAAK,CAAC,CAAC,SAAS,oBAAoB,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC;CAC1E"}
@@ -1,35 +0,0 @@
1
- import { ObjectId } from 'mongodb';
2
- import { z } from 'zod';
3
- const schemaString = z.string.bind(z);
4
- const schemaNumber = z.number.bind(z);
5
- const schemaDate = z.date.bind(z);
6
- const schemaBoolean = z.boolean.bind(z);
7
- const schemaArray = z.array.bind(z);
8
- const schemaObject = z.object.bind(z);
9
- const schemaEnum = z.enum.bind(z);
10
- export const schema = {
11
- string: schemaString,
12
- number: schemaNumber,
13
- date: schemaDate,
14
- boolean: schemaBoolean,
15
- array: schemaArray,
16
- object: schemaObject,
17
- enum: schemaEnum,
18
- embedding() {
19
- return z.array(z.number());
20
- },
21
- objectId() {
22
- return z.instanceof(ObjectId).describe('ObjectId');
23
- },
24
- userId() {
25
- return z.instanceof(ObjectId).describe('UserId');
26
- },
27
- ref(_collection) {
28
- return z.instanceof(ObjectId).describe('Ref');
29
- },
30
- union: z.union.bind(z),
31
- infer(_schema) {
32
- return {};
33
- },
34
- };
35
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/data/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,CAAC,EAAuB,MAAM,KAAK,CAAC;AAe7C,MAAM,YAAY,GAAoB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEvD,MAAM,YAAY,GAAoB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEvD,MAAM,UAAU,GAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEjD,MAAM,aAAa,GAAqB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAE1D,MAAM,WAAW,GAAmB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEpD,MAAM,YAAY,GAAoB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEvD,MAAM,UAAU,GAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEjD,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,aAAa;IACtB,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,UAAU;IAChB,SAAS;QACP,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7B,CAAC;IACD,QAAQ;QACN,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC;IACD,MAAM;QACJ,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IACD,GAAG,CACD,WAAoD;QAEpD,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IACD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACtB,KAAK,CAAiC,OAAU;QAC9C,OAAO,EAA0B,CAAC;IACpC,CAAC;CACO,CAAC"}
@@ -1,5 +0,0 @@
1
- import { MongoClient } from 'mongodb';
2
- export declare function connect(): Promise<MongoClient>;
3
- export declare function getMongodbUri(): string | undefined;
4
- export declare function getClient(): MongoClient | null;
5
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAKtC,wBAAsB,OAAO,yBAwB5B;AAED,wBAAgB,aAAa,uBAG5B;AAED,wBAAgB,SAAS,uBAExB"}
package/dist/db/client.js DELETED
@@ -1,41 +0,0 @@
1
- import { MongoClient } from 'mongodb';
2
- import { getConfig } from '../config/server';
3
- let client = null;
4
- export async function connect() {
5
- if (client)
6
- return client;
7
- const mongodbUri = getMongodbUri();
8
- if (!mongodbUri) {
9
- throw new Error('MongoDB URI is not set');
10
- }
11
- client = new MongoClient(mongodbUri, {
12
- maxPoolSize: 20,
13
- });
14
- try {
15
- // Connect the client to the server
16
- await client.connect();
17
- // Send a ping to confirm a successful connection
18
- await client.db('admin').command({ ping: 1 });
19
- console.log('Pinged your deployment. You successfully connected to MongoDB!');
20
- return client;
21
- }
22
- catch (err) {
23
- console.error(err);
24
- client = null;
25
- throw err;
26
- }
27
- }
28
- export function getMongodbUri() {
29
- const value = getConfig('_system.mongodbUri');
30
- return value ? String(value) : undefined;
31
- }
32
- export function getClient() {
33
- return client;
34
- }
35
- // export async function closeConnection() {
36
- // if (client) {
37
- // await client.close();
38
- // client = null;
39
- // }
40
- // }
41
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,IAAI,MAAM,GAAuB,IAAI,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,OAAO;IAC3B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,EAAE;QACnC,WAAW,EAAE,EAAE;KAChB,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,mCAAmC;QACnC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,iDAAiD;QACjD,MAAM,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;QAC9E,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,MAAM,GAAG,IAAI,CAAC;QACd,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,KAAK,GAAG,SAAS,CAAC,oBAAoB,CAAC,CAAC;IAC9C,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,4CAA4C;AAC5C,kBAAkB;AAClB,4BAA4B;AAC5B,qBAAqB;AACrB,MAAM;AACN,IAAI"}