@mantajs/core 0.1.7 → 0.2.0-beta.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 (566) hide show
  1. package/dist/adapters/auth-mock.d.ts +44 -0
  2. package/dist/adapters/auth-mock.d.ts.map +1 -0
  3. package/dist/adapters/auth-mock.js +160 -0
  4. package/dist/adapters/auth-mock.js.map +1 -0
  5. package/dist/adapters/cache-memory.d.ts +11 -0
  6. package/dist/adapters/cache-memory.d.ts.map +1 -0
  7. package/dist/adapters/cache-memory.js +32 -0
  8. package/dist/adapters/cache-memory.js.map +1 -0
  9. package/dist/adapters/database-memory.d.ts +24 -0
  10. package/dist/adapters/database-memory.d.ts.map +1 -0
  11. package/dist/adapters/database-memory.js +141 -0
  12. package/dist/adapters/database-memory.js.map +1 -0
  13. package/dist/adapters/eventbus-memory.d.ts +37 -0
  14. package/dist/adapters/eventbus-memory.d.ts.map +1 -0
  15. package/dist/adapters/eventbus-memory.js +166 -0
  16. package/dist/adapters/eventbus-memory.js.map +1 -0
  17. package/dist/adapters/file-memory.d.ts +24 -0
  18. package/dist/adapters/file-memory.d.ts.map +1 -0
  19. package/dist/adapters/file-memory.js +77 -0
  20. package/dist/adapters/file-memory.js.map +1 -0
  21. package/dist/adapters/http-memory.d.ts +23 -0
  22. package/dist/adapters/http-memory.d.ts.map +1 -0
  23. package/dist/adapters/http-memory.js +149 -0
  24. package/dist/adapters/http-memory.js.map +1 -0
  25. package/dist/adapters/index.d.ts +14 -0
  26. package/dist/adapters/index.d.ts.map +1 -0
  27. package/dist/adapters/index.js +15 -0
  28. package/dist/adapters/index.js.map +1 -0
  29. package/dist/adapters/job-scheduler-memory.d.ts +20 -0
  30. package/dist/adapters/job-scheduler-memory.d.ts.map +1 -0
  31. package/dist/adapters/job-scheduler-memory.js +103 -0
  32. package/dist/adapters/job-scheduler-memory.js.map +1 -0
  33. package/dist/adapters/locking-memory.d.ts +20 -0
  34. package/dist/adapters/locking-memory.d.ts.map +1 -0
  35. package/dist/adapters/locking-memory.js +85 -0
  36. package/dist/adapters/locking-memory.js.map +1 -0
  37. package/dist/adapters/logger-test.d.ts +30 -0
  38. package/dist/adapters/logger-test.d.ts.map +1 -0
  39. package/dist/adapters/logger-test.js +77 -0
  40. package/dist/adapters/logger-test.js.map +1 -0
  41. package/dist/adapters/notification-memory.d.ts +27 -0
  42. package/dist/adapters/notification-memory.d.ts.map +1 -0
  43. package/dist/adapters/notification-memory.js +69 -0
  44. package/dist/adapters/notification-memory.js.map +1 -0
  45. package/dist/adapters/relational-query-memory.d.ts +47 -0
  46. package/dist/adapters/relational-query-memory.d.ts.map +1 -0
  47. package/dist/adapters/relational-query-memory.js +263 -0
  48. package/dist/adapters/relational-query-memory.js.map +1 -0
  49. package/dist/adapters/repository-factory-memory.d.ts +17 -0
  50. package/dist/adapters/repository-factory-memory.d.ts.map +1 -0
  51. package/dist/adapters/repository-factory-memory.js +32 -0
  52. package/dist/adapters/repository-factory-memory.js.map +1 -0
  53. package/dist/adapters/repository-memory.d.ts +30 -0
  54. package/dist/adapters/repository-memory.d.ts.map +1 -0
  55. package/dist/adapters/repository-memory.js +183 -0
  56. package/dist/adapters/repository-memory.js.map +1 -0
  57. package/dist/ai/index.d.ts +53 -0
  58. package/dist/ai/index.d.ts.map +1 -0
  59. package/dist/ai/index.js +48 -0
  60. package/dist/ai/index.js.map +1 -0
  61. package/dist/app/index.d.ts +97 -0
  62. package/dist/app/index.d.ts.map +1 -0
  63. package/dist/app/index.js +217 -0
  64. package/dist/app/index.js.map +1 -0
  65. package/dist/app/request-context.d.ts +35 -0
  66. package/dist/app/request-context.d.ts.map +1 -0
  67. package/dist/app/request-context.js +32 -0
  68. package/dist/app/request-context.js.map +1 -0
  69. package/dist/auth/auth-module-service.d.ts +62 -0
  70. package/dist/auth/auth-module-service.d.ts.map +1 -0
  71. package/dist/auth/auth-module-service.js +210 -0
  72. package/dist/auth/auth-module-service.js.map +1 -0
  73. package/dist/auth/index.d.ts +7 -0
  74. package/dist/auth/index.d.ts.map +1 -0
  75. package/dist/auth/index.js +5 -0
  76. package/dist/auth/index.js.map +1 -0
  77. package/dist/auth/middleware.d.ts +19 -0
  78. package/dist/auth/middleware.d.ts.map +1 -0
  79. package/dist/auth/middleware.js +61 -0
  80. package/dist/auth/middleware.js.map +1 -0
  81. package/dist/auth/models/auth-identity.d.ts +11 -0
  82. package/dist/auth/models/auth-identity.d.ts.map +1 -0
  83. package/dist/auth/models/auth-identity.js +12 -0
  84. package/dist/auth/models/auth-identity.js.map +1 -0
  85. package/dist/auth/providers/emailpass.d.ts +7 -0
  86. package/dist/auth/providers/emailpass.d.ts.map +1 -0
  87. package/dist/auth/providers/emailpass.js +94 -0
  88. package/dist/auth/providers/emailpass.js.map +1 -0
  89. package/dist/auth/providers/types.d.ts +66 -0
  90. package/dist/auth/providers/types.d.ts.map +1 -0
  91. package/dist/auth/providers/types.js +3 -0
  92. package/dist/auth/providers/types.js.map +1 -0
  93. package/dist/auth/types.d.ts +36 -0
  94. package/dist/auth/types.d.ts.map +1 -0
  95. package/dist/auth/types.js +3 -0
  96. package/dist/auth/types.js.map +1 -0
  97. package/dist/command/define-command-graph.d.ts +63 -0
  98. package/dist/command/define-command-graph.d.ts.map +1 -0
  99. package/dist/command/define-command-graph.js +80 -0
  100. package/dist/command/define-command-graph.js.map +1 -0
  101. package/dist/command/dml-to-zod.d.ts +34 -0
  102. package/dist/command/dml-to-zod.d.ts.map +1 -0
  103. package/dist/command/dml-to-zod.js +140 -0
  104. package/dist/command/dml-to-zod.js.map +1 -0
  105. package/dist/command/generate-entity-commands.d.ts +68 -0
  106. package/dist/command/generate-entity-commands.d.ts.map +1 -0
  107. package/dist/command/generate-entity-commands.js +350 -0
  108. package/dist/command/generate-entity-commands.js.map +1 -0
  109. package/dist/command/index.d.ts +54 -0
  110. package/dist/command/index.d.ts.map +1 -0
  111. package/dist/command/index.js +338 -0
  112. package/dist/command/index.js.map +1 -0
  113. package/dist/command/types.d.ts +131 -0
  114. package/dist/command/types.d.ts.map +1 -0
  115. package/dist/command/types.js +2 -0
  116. package/dist/command/types.js.map +1 -0
  117. package/dist/config/built-in-presets.d.ts +20 -0
  118. package/dist/config/built-in-presets.d.ts.map +1 -0
  119. package/dist/config/built-in-presets.js +70 -0
  120. package/dist/config/built-in-presets.js.map +1 -0
  121. package/dist/config/config-manager.d.ts +117 -0
  122. package/dist/config/config-manager.d.ts.map +1 -0
  123. package/dist/config/config-manager.js +245 -0
  124. package/dist/config/config-manager.js.map +1 -0
  125. package/dist/config/define-config.d.ts +20 -0
  126. package/dist/config/define-config.d.ts.map +1 -0
  127. package/dist/config/define-config.js +64 -0
  128. package/dist/config/define-config.js.map +1 -0
  129. package/dist/config/feature-flags.d.ts +48 -0
  130. package/dist/config/feature-flags.d.ts.map +1 -0
  131. package/dist/config/feature-flags.js +97 -0
  132. package/dist/config/feature-flags.js.map +1 -0
  133. package/dist/config/index.d.ts +9 -0
  134. package/dist/config/index.d.ts.map +1 -0
  135. package/dist/config/index.js +8 -0
  136. package/dist/config/index.js.map +1 -0
  137. package/dist/config/presets.d.ts +38 -0
  138. package/dist/config/presets.d.ts.map +1 -0
  139. package/dist/config/presets.js +29 -0
  140. package/dist/config/presets.js.map +1 -0
  141. package/dist/config/types.d.ts +707 -0
  142. package/dist/config/types.d.ts.map +1 -0
  143. package/dist/config/types.js +112 -0
  144. package/dist/config/types.js.map +1 -0
  145. package/dist/context/index.d.ts +95 -0
  146. package/dist/context/index.d.ts.map +1 -0
  147. package/dist/context/index.js +26 -0
  148. package/dist/context/index.js.map +1 -0
  149. package/dist/context/registry.d.ts +32 -0
  150. package/dist/context/registry.d.ts.map +1 -0
  151. package/dist/context/registry.js +142 -0
  152. package/dist/context/registry.js.map +1 -0
  153. package/dist/db/index.d.ts +2 -0
  154. package/dist/db/index.d.ts.map +1 -0
  155. package/dist/db/index.js +4 -0
  156. package/dist/db/index.js.map +1 -0
  157. package/dist/db/schema.d.ts +839 -0
  158. package/dist/db/schema.d.ts.map +1 -0
  159. package/dist/db/schema.js +106 -0
  160. package/dist/db/schema.js.map +1 -0
  161. package/dist/dml/entity.d.ts +132 -0
  162. package/dist/dml/entity.d.ts.map +1 -0
  163. package/dist/dml/entity.js +110 -0
  164. package/dist/dml/entity.js.map +1 -0
  165. package/dist/dml/from-zod.d.ts +13 -0
  166. package/dist/dml/from-zod.d.ts.map +1 -0
  167. package/dist/dml/from-zod.js +81 -0
  168. package/dist/dml/from-zod.js.map +1 -0
  169. package/dist/dml/generator/index.d.ts +62 -0
  170. package/dist/dml/generator/index.d.ts.map +1 -0
  171. package/dist/dml/generator/index.js +208 -0
  172. package/dist/dml/generator/index.js.map +1 -0
  173. package/dist/dml/index.d.ts +11 -0
  174. package/dist/dml/index.d.ts.map +1 -0
  175. package/dist/dml/index.js +13 -0
  176. package/dist/dml/index.js.map +1 -0
  177. package/dist/dml/infer.d.ts +36 -0
  178. package/dist/dml/infer.d.ts.map +1 -0
  179. package/dist/dml/infer.js +5 -0
  180. package/dist/dml/infer.js.map +1 -0
  181. package/dist/dml/model.d.ts +58 -0
  182. package/dist/dml/model.d.ts.map +1 -0
  183. package/dist/dml/model.js +95 -0
  184. package/dist/dml/model.js.map +1 -0
  185. package/dist/dml/modifiers.d.ts +9 -0
  186. package/dist/dml/modifiers.d.ts.map +1 -0
  187. package/dist/dml/modifiers.js +25 -0
  188. package/dist/dml/modifiers.js.map +1 -0
  189. package/dist/dml/properties/array.d.ts +7 -0
  190. package/dist/dml/properties/array.d.ts.map +1 -0
  191. package/dist/dml/properties/array.js +5 -0
  192. package/dist/dml/properties/array.js.map +1 -0
  193. package/dist/dml/properties/autoincrement.d.ts +7 -0
  194. package/dist/dml/properties/autoincrement.d.ts.map +1 -0
  195. package/dist/dml/properties/autoincrement.js +5 -0
  196. package/dist/dml/properties/autoincrement.js.map +1 -0
  197. package/dist/dml/properties/base.d.ts +124 -0
  198. package/dist/dml/properties/base.d.ts.map +1 -0
  199. package/dist/dml/properties/base.js +76 -0
  200. package/dist/dml/properties/base.js.map +1 -0
  201. package/dist/dml/properties/big-number.d.ts +7 -0
  202. package/dist/dml/properties/big-number.d.ts.map +1 -0
  203. package/dist/dml/properties/big-number.js +5 -0
  204. package/dist/dml/properties/big-number.js.map +1 -0
  205. package/dist/dml/properties/boolean.d.ts +7 -0
  206. package/dist/dml/properties/boolean.d.ts.map +1 -0
  207. package/dist/dml/properties/boolean.js +5 -0
  208. package/dist/dml/properties/boolean.js.map +1 -0
  209. package/dist/dml/properties/computed.d.ts +9 -0
  210. package/dist/dml/properties/computed.d.ts.map +1 -0
  211. package/dist/dml/properties/computed.js +22 -0
  212. package/dist/dml/properties/computed.js.map +1 -0
  213. package/dist/dml/properties/date-time.d.ts +7 -0
  214. package/dist/dml/properties/date-time.d.ts.map +1 -0
  215. package/dist/dml/properties/date-time.js +5 -0
  216. package/dist/dml/properties/date-time.js.map +1 -0
  217. package/dist/dml/properties/enum.d.ts +12 -0
  218. package/dist/dml/properties/enum.d.ts.map +1 -0
  219. package/dist/dml/properties/enum.js +14 -0
  220. package/dist/dml/properties/enum.js.map +1 -0
  221. package/dist/dml/properties/float.d.ts +7 -0
  222. package/dist/dml/properties/float.d.ts.map +1 -0
  223. package/dist/dml/properties/float.js +5 -0
  224. package/dist/dml/properties/float.js.map +1 -0
  225. package/dist/dml/properties/index.d.ts +15 -0
  226. package/dist/dml/properties/index.d.ts.map +1 -0
  227. package/dist/dml/properties/index.js +15 -0
  228. package/dist/dml/properties/index.js.map +1 -0
  229. package/dist/dml/properties/json.d.ts +7 -0
  230. package/dist/dml/properties/json.d.ts.map +1 -0
  231. package/dist/dml/properties/json.js +6 -0
  232. package/dist/dml/properties/json.js.map +1 -0
  233. package/dist/dml/properties/nullable.d.ts +23 -0
  234. package/dist/dml/properties/nullable.d.ts.map +1 -0
  235. package/dist/dml/properties/nullable.js +46 -0
  236. package/dist/dml/properties/nullable.js.map +1 -0
  237. package/dist/dml/properties/number.d.ts +10 -0
  238. package/dist/dml/properties/number.d.ts.map +1 -0
  239. package/dist/dml/properties/number.js +13 -0
  240. package/dist/dml/properties/number.js.map +1 -0
  241. package/dist/dml/properties/primary-key.d.ts +14 -0
  242. package/dist/dml/properties/primary-key.d.ts.map +1 -0
  243. package/dist/dml/properties/primary-key.js +23 -0
  244. package/dist/dml/properties/primary-key.js.map +1 -0
  245. package/dist/dml/properties/text.d.ts +15 -0
  246. package/dist/dml/properties/text.d.ts.map +1 -0
  247. package/dist/dml/properties/text.js +19 -0
  248. package/dist/dml/properties/text.js.map +1 -0
  249. package/dist/dml/relations/belongs-to.d.ts +20 -0
  250. package/dist/dml/relations/belongs-to.d.ts.map +1 -0
  251. package/dist/dml/relations/belongs-to.js +29 -0
  252. package/dist/dml/relations/belongs-to.js.map +1 -0
  253. package/dist/dml/relations/has-many.d.ts +16 -0
  254. package/dist/dml/relations/has-many.d.ts.map +1 -0
  255. package/dist/dml/relations/has-many.js +25 -0
  256. package/dist/dml/relations/has-many.js.map +1 -0
  257. package/dist/dml/relations/has-one.d.ts +26 -0
  258. package/dist/dml/relations/has-one.d.ts.map +1 -0
  259. package/dist/dml/relations/has-one.js +46 -0
  260. package/dist/dml/relations/has-one.js.map +1 -0
  261. package/dist/dml/relations/many-to-many.d.ts +9 -0
  262. package/dist/dml/relations/many-to-many.d.ts.map +1 -0
  263. package/dist/dml/relations/many-to-many.js +11 -0
  264. package/dist/dml/relations/many-to-many.js.map +1 -0
  265. package/dist/errors/manta-error.d.ts +68 -0
  266. package/dist/errors/manta-error.d.ts.map +1 -0
  267. package/dist/errors/manta-error.js +80 -0
  268. package/dist/errors/manta-error.js.map +1 -0
  269. package/dist/events/index.d.ts +3 -0
  270. package/dist/events/index.d.ts.map +1 -0
  271. package/dist/events/index.js +3 -0
  272. package/dist/events/index.js.map +1 -0
  273. package/dist/events/message-aggregator.d.ts +25 -0
  274. package/dist/events/message-aggregator.d.ts.map +1 -0
  275. package/dist/events/message-aggregator.js +35 -0
  276. package/dist/events/message-aggregator.js.map +1 -0
  277. package/dist/events/types.d.ts +42 -0
  278. package/dist/events/types.d.ts.map +1 -0
  279. package/dist/events/types.js +3 -0
  280. package/dist/events/types.js.map +1 -0
  281. package/dist/index.d.ts +55 -0
  282. package/dist/index.d.ts.map +1 -0
  283. package/dist/index.js +53 -0
  284. package/dist/index.js.map +1 -0
  285. package/dist/job/index.d.ts +52 -0
  286. package/dist/job/index.d.ts.map +1 -0
  287. package/dist/job/index.js +31 -0
  288. package/dist/job/index.js.map +1 -0
  289. package/dist/link/index.d.ts +97 -0
  290. package/dist/link/index.d.ts.map +1 -0
  291. package/dist/link/index.js +185 -0
  292. package/dist/link/index.js.map +1 -0
  293. package/dist/middleware/define-middleware.d.ts +54 -0
  294. package/dist/middleware/define-middleware.d.ts.map +1 -0
  295. package/dist/middleware/define-middleware.js +40 -0
  296. package/dist/middleware/define-middleware.js.map +1 -0
  297. package/dist/middleware/index.d.ts +56 -0
  298. package/dist/middleware/index.d.ts.map +1 -0
  299. package/dist/middleware/index.js +50 -0
  300. package/dist/middleware/index.js.map +1 -0
  301. package/dist/module/index.d.ts +56 -0
  302. package/dist/module/index.d.ts.map +1 -0
  303. package/dist/module/index.js +52 -0
  304. package/dist/module/index.js.map +1 -0
  305. package/dist/module/versioning.d.ts +27 -0
  306. package/dist/module/versioning.d.ts.map +1 -0
  307. package/dist/module/versioning.js +64 -0
  308. package/dist/module/versioning.js.map +1 -0
  309. package/dist/naming.d.ts +39 -0
  310. package/dist/naming.d.ts.map +1 -0
  311. package/dist/naming.js +95 -0
  312. package/dist/naming.js.map +1 -0
  313. package/dist/ports/analytics.d.ts +7 -0
  314. package/dist/ports/analytics.d.ts.map +1 -0
  315. package/dist/ports/analytics.js +3 -0
  316. package/dist/ports/analytics.js.map +1 -0
  317. package/dist/ports/auth.d.ts +27 -0
  318. package/dist/ports/auth.d.ts.map +1 -0
  319. package/dist/ports/auth.js +3 -0
  320. package/dist/ports/auth.js.map +1 -0
  321. package/dist/ports/cache.d.ts +35 -0
  322. package/dist/ports/cache.d.ts.map +1 -0
  323. package/dist/ports/cache.js +3 -0
  324. package/dist/ports/cache.js.map +1 -0
  325. package/dist/ports/database.d.ts +40 -0
  326. package/dist/ports/database.d.ts.map +1 -0
  327. package/dist/ports/database.js +3 -0
  328. package/dist/ports/database.js.map +1 -0
  329. package/dist/ports/event-bus.d.ts +85 -0
  330. package/dist/ports/event-bus.d.ts.map +1 -0
  331. package/dist/ports/event-bus.js +3 -0
  332. package/dist/ports/event-bus.js.map +1 -0
  333. package/dist/ports/file.d.ts +62 -0
  334. package/dist/ports/file.d.ts.map +1 -0
  335. package/dist/ports/file.js +3 -0
  336. package/dist/ports/file.js.map +1 -0
  337. package/dist/ports/http.d.ts +20 -0
  338. package/dist/ports/http.d.ts.map +1 -0
  339. package/dist/ports/http.js +3 -0
  340. package/dist/ports/http.js.map +1 -0
  341. package/dist/ports/in-memory-progress-channel.d.ts +9 -0
  342. package/dist/ports/in-memory-progress-channel.d.ts.map +1 -0
  343. package/dist/ports/in-memory-progress-channel.js +19 -0
  344. package/dist/ports/in-memory-progress-channel.js.map +1 -0
  345. package/dist/ports/in-memory-queue.d.ts +24 -0
  346. package/dist/ports/in-memory-queue.d.ts.map +1 -0
  347. package/dist/ports/in-memory-queue.js +63 -0
  348. package/dist/ports/in-memory-queue.js.map +1 -0
  349. package/dist/ports/index.d.ts +27 -0
  350. package/dist/ports/index.d.ts.map +1 -0
  351. package/dist/ports/index.js +6 -0
  352. package/dist/ports/index.js.map +1 -0
  353. package/dist/ports/job-scheduler.d.ts +42 -0
  354. package/dist/ports/job-scheduler.d.ts.map +1 -0
  355. package/dist/ports/job-scheduler.js +3 -0
  356. package/dist/ports/job-scheduler.js.map +1 -0
  357. package/dist/ports/locking.d.ts +43 -0
  358. package/dist/ports/locking.d.ts.map +1 -0
  359. package/dist/ports/locking.js +3 -0
  360. package/dist/ports/locking.js.map +1 -0
  361. package/dist/ports/logger.d.ts +65 -0
  362. package/dist/ports/logger.d.ts.map +1 -0
  363. package/dist/ports/logger.js +3 -0
  364. package/dist/ports/logger.js.map +1 -0
  365. package/dist/ports/notification.d.ts +71 -0
  366. package/dist/ports/notification.d.ts.map +1 -0
  367. package/dist/ports/notification.js +3 -0
  368. package/dist/ports/notification.js.map +1 -0
  369. package/dist/ports/progress-channel.d.ts +46 -0
  370. package/dist/ports/progress-channel.d.ts.map +1 -0
  371. package/dist/ports/progress-channel.js +6 -0
  372. package/dist/ports/progress-channel.js.map +1 -0
  373. package/dist/ports/queue.d.ts +21 -0
  374. package/dist/ports/queue.d.ts.map +1 -0
  375. package/dist/ports/queue.js +15 -0
  376. package/dist/ports/queue.js.map +1 -0
  377. package/dist/ports/relational-query.d.ts +37 -0
  378. package/dist/ports/relational-query.d.ts.map +1 -0
  379. package/dist/ports/relational-query.js +3 -0
  380. package/dist/ports/relational-query.js.map +1 -0
  381. package/dist/ports/repository-factory.d.ts +21 -0
  382. package/dist/ports/repository-factory.d.ts.map +1 -0
  383. package/dist/ports/repository-factory.js +4 -0
  384. package/dist/ports/repository-factory.js.map +1 -0
  385. package/dist/ports/repository.d.ts +73 -0
  386. package/dist/ports/repository.d.ts.map +1 -0
  387. package/dist/ports/repository.js +3 -0
  388. package/dist/ports/repository.js.map +1 -0
  389. package/dist/ports/schema-generator.d.ts +15 -0
  390. package/dist/ports/schema-generator.d.ts.map +1 -0
  391. package/dist/ports/schema-generator.js +4 -0
  392. package/dist/ports/schema-generator.js.map +1 -0
  393. package/dist/ports/search.d.ts +7 -0
  394. package/dist/ports/search.d.ts.map +1 -0
  395. package/dist/ports/search.js +3 -0
  396. package/dist/ports/search.js.map +1 -0
  397. package/dist/ports/types.d.ts +112 -0
  398. package/dist/ports/types.d.ts.map +1 -0
  399. package/dist/ports/types.js +26 -0
  400. package/dist/ports/types.js.map +1 -0
  401. package/dist/ports/workflow-store.d.ts +111 -0
  402. package/dist/ports/workflow-store.d.ts.map +1 -0
  403. package/dist/ports/workflow-store.js +5 -0
  404. package/dist/ports/workflow-store.js.map +1 -0
  405. package/dist/query/define-query-graph.d.ts +55 -0
  406. package/dist/query/define-query-graph.d.ts.map +1 -0
  407. package/dist/query/define-query-graph.js +59 -0
  408. package/dist/query/define-query-graph.js.map +1 -0
  409. package/dist/query/define-query.d.ts +79 -0
  410. package/dist/query/define-query.d.ts.map +1 -0
  411. package/dist/query/define-query.js +77 -0
  412. package/dist/query/define-query.js.map +1 -0
  413. package/dist/query/extend-query-graph.d.ts +36 -0
  414. package/dist/query/extend-query-graph.d.ts.map +1 -0
  415. package/dist/query/extend-query-graph.js +34 -0
  416. package/dist/query/extend-query-graph.js.map +1 -0
  417. package/dist/query/index.d.ts +181 -0
  418. package/dist/query/index.d.ts.map +1 -0
  419. package/dist/query/index.js +288 -0
  420. package/dist/query/index.js.map +1 -0
  421. package/dist/service/define.d.ts +97 -0
  422. package/dist/service/define.d.ts.map +1 -0
  423. package/dist/service/define.js +45 -0
  424. package/dist/service/define.js.map +1 -0
  425. package/dist/service/index.d.ts +52 -0
  426. package/dist/service/index.d.ts.map +1 -0
  427. package/dist/service/index.js +281 -0
  428. package/dist/service/index.js.map +1 -0
  429. package/dist/service/instantiate.d.ts +15 -0
  430. package/dist/service/instantiate.d.ts.map +1 -0
  431. package/dist/service/instantiate.js +143 -0
  432. package/dist/service/instantiate.js.map +1 -0
  433. package/dist/service/snapshot-repository.d.ts +31 -0
  434. package/dist/service/snapshot-repository.d.ts.map +1 -0
  435. package/dist/service/snapshot-repository.js +114 -0
  436. package/dist/service/snapshot-repository.js.map +1 -0
  437. package/dist/service/types.d.ts +39 -0
  438. package/dist/service/types.d.ts.map +1 -0
  439. package/dist/service/types.js +3 -0
  440. package/dist/service/types.js.map +1 -0
  441. package/dist/strict-mode/index.d.ts +42 -0
  442. package/dist/strict-mode/index.d.ts.map +1 -0
  443. package/dist/strict-mode/index.js +84 -0
  444. package/dist/strict-mode/index.js.map +1 -0
  445. package/dist/subscriber/index.d.ts +117 -0
  446. package/dist/subscriber/index.d.ts.map +1 -0
  447. package/dist/subscriber/index.js +76 -0
  448. package/dist/subscriber/index.js.map +1 -0
  449. package/dist/testing/relational-query-suite.d.ts +22 -0
  450. package/dist/testing/relational-query-suite.d.ts.map +1 -0
  451. package/dist/testing/relational-query-suite.js +233 -0
  452. package/dist/testing/relational-query-suite.js.map +1 -0
  453. package/dist/user/auto-routes.d.ts +32 -0
  454. package/dist/user/auto-routes.d.ts.map +1 -0
  455. package/dist/user/auto-routes.js +424 -0
  456. package/dist/user/auto-routes.js.map +1 -0
  457. package/dist/user/define-user.d.ts +54 -0
  458. package/dist/user/define-user.d.ts.map +1 -0
  459. package/dist/user/define-user.js +103 -0
  460. package/dist/user/define-user.js.map +1 -0
  461. package/dist/user/index.d.ts +7 -0
  462. package/dist/user/index.d.ts.map +1 -0
  463. package/dist/user/index.js +5 -0
  464. package/dist/user/index.js.map +1 -0
  465. package/dist/user/models/user.d.ts +15 -0
  466. package/dist/user/models/user.d.ts.map +1 -0
  467. package/dist/user/models/user.js +16 -0
  468. package/dist/user/models/user.js.map +1 -0
  469. package/dist/user/user-module-service.d.ts +55 -0
  470. package/dist/user/user-module-service.d.ts.map +1 -0
  471. package/dist/user/user-module-service.js +100 -0
  472. package/dist/user/user-module-service.js.map +1 -0
  473. package/dist/workflows/ai-step.d.ts +2 -0
  474. package/dist/workflows/ai-step.d.ts.map +1 -0
  475. package/dist/workflows/ai-step.js +54 -0
  476. package/dist/workflows/ai-step.js.map +1 -0
  477. package/dist/workflows/create-step.d.ts +16 -0
  478. package/dist/workflows/create-step.d.ts.map +1 -0
  479. package/dist/workflows/create-step.js +194 -0
  480. package/dist/workflows/create-step.js.map +1 -0
  481. package/dist/workflows/create-workflow.d.ts +16 -0
  482. package/dist/workflows/create-workflow.d.ts.map +1 -0
  483. package/dist/workflows/create-workflow.js +21 -0
  484. package/dist/workflows/create-workflow.js.map +1 -0
  485. package/dist/workflows/define-workflow.d.ts +55 -0
  486. package/dist/workflows/define-workflow.d.ts.map +1 -0
  487. package/dist/workflows/define-workflow.js +72 -0
  488. package/dist/workflows/define-workflow.js.map +1 -0
  489. package/dist/workflows/emit-event-step.d.ts +17 -0
  490. package/dist/workflows/emit-event-step.d.ts.map +1 -0
  491. package/dist/workflows/emit-event-step.js +46 -0
  492. package/dist/workflows/emit-event-step.js.map +1 -0
  493. package/dist/workflows/for-each.d.ts +6 -0
  494. package/dist/workflows/for-each.d.ts.map +1 -0
  495. package/dist/workflows/for-each.js +79 -0
  496. package/dist/workflows/for-each.js.map +1 -0
  497. package/dist/workflows/index.d.ts +15 -0
  498. package/dist/workflows/index.d.ts.map +1 -0
  499. package/dist/workflows/index.js +12 -0
  500. package/dist/workflows/index.js.map +1 -0
  501. package/dist/workflows/manager.d.ts +99 -0
  502. package/dist/workflows/manager.d.ts.map +1 -0
  503. package/dist/workflows/manager.js +450 -0
  504. package/dist/workflows/manager.js.map +1 -0
  505. package/dist/workflows/orphan-reaper.d.ts +50 -0
  506. package/dist/workflows/orphan-reaper.d.ts.map +1 -0
  507. package/dist/workflows/orphan-reaper.js +69 -0
  508. package/dist/workflows/orphan-reaper.js.map +1 -0
  509. package/dist/workflows/progress-helper.d.ts +20 -0
  510. package/dist/workflows/progress-helper.d.ts.map +1 -0
  511. package/dist/workflows/progress-helper.js +48 -0
  512. package/dist/workflows/progress-helper.js.map +1 -0
  513. package/dist/workflows/step.d.ts +103 -0
  514. package/dist/workflows/step.d.ts.map +1 -0
  515. package/dist/workflows/step.js +949 -0
  516. package/dist/workflows/step.js.map +1 -0
  517. package/dist/workflows/types.d.ts +215 -0
  518. package/dist/workflows/types.d.ts.map +1 -0
  519. package/dist/workflows/types.js +9 -0
  520. package/dist/workflows/types.js.map +1 -0
  521. package/dist/workflows/yield.d.ts +12 -0
  522. package/dist/workflows/yield.d.ts.map +1 -0
  523. package/dist/workflows/yield.js +29 -0
  524. package/dist/workflows/yield.js.map +1 -0
  525. package/docs/00-overview.md +254 -0
  526. package/docs/01-getting-started.md +224 -0
  527. package/docs/02-models.md +163 -0
  528. package/docs/03-services.md +208 -0
  529. package/docs/04-users.md +165 -0
  530. package/docs/05-commands.md +501 -0
  531. package/docs/06-queries.md +342 -0
  532. package/docs/07-events.md +248 -0
  533. package/docs/08-links.md +182 -0
  534. package/docs/09-agents.md +142 -0
  535. package/docs/10-spa.md +327 -0
  536. package/docs/11-config.md +481 -0
  537. package/docs/12-constraints.md +183 -0
  538. package/docs/13-testing.md +345 -0
  539. package/docs/14-adapters.md +204 -0
  540. package/docs/15-hosts.md +163 -0
  541. package/docs/16-reference.md +274 -0
  542. package/docs/17-dashboard.md +619 -0
  543. package/docs/AGENT.md +501 -0
  544. package/package.json +49 -52
  545. package/.medusa/server/src/admin/index.js +0 -5493
  546. package/.medusa/server/src/admin/index.mjs +0 -5491
  547. package/.medusa/server/src/api/admin/companies/[id]/route.js +0 -39
  548. package/.medusa/server/src/api/admin/companies/middlewares.js +0 -41
  549. package/.medusa/server/src/api/admin/companies/route.js +0 -37
  550. package/.medusa/server/src/api/admin/companies/validators.js +0 -29
  551. package/.medusa/server/src/api/admin/employees/middlewares.js +0 -15
  552. package/.medusa/server/src/api/admin/employees/route.js +0 -21
  553. package/.medusa/server/src/api/middlewares.js +0 -9
  554. package/.medusa/server/src/index.js +0 -5
  555. package/.medusa/server/src/modules/company/index.js +0 -13
  556. package/.medusa/server/src/modules/company/migrations/Migration20260126141741.js +0 -26
  557. package/.medusa/server/src/modules/company/models/company.js +0 -24
  558. package/.medusa/server/src/modules/company/models/employee.js +0 -15
  559. package/.medusa/server/src/modules/company/models/index.js +0 -11
  560. package/.medusa/server/src/modules/company/service.js +0 -11
  561. package/.medusa/server/src/workflows/create-company.js +0 -10
  562. package/.medusa/server/src/workflows/delete-company.js +0 -10
  563. package/.medusa/server/src/workflows/steps/create-company.js +0 -16
  564. package/.medusa/server/src/workflows/steps/delete-company.js +0 -30
  565. package/.medusa/server/src/workflows/steps/update-company.js +0 -30
  566. package/.medusa/server/src/workflows/update-company.js +0 -10
@@ -0,0 +1,111 @@
1
+ export type WorkflowStatus = 'pending' | 'running' | 'paused' | 'succeeded' | 'failed' | 'cancelled';
2
+ export type StepStatus = 'pending' | 'running' | 'paused' | 'succeeded' | 'failed' | 'cancelled' | 'compensated';
3
+ export interface StepState {
4
+ name: string;
5
+ status: StepStatus;
6
+ started_at?: Date;
7
+ completed_at?: Date;
8
+ error?: {
9
+ message: string;
10
+ code?: string;
11
+ };
12
+ /**
13
+ * Resume state written by `ctx.yield(state)`. Populated only when the step
14
+ * is paused mid-execution; consumed by the next invocation's handler via
15
+ * `ctx.resumeState` on resume, and cleared on successful completion.
16
+ */
17
+ resume_state?: unknown;
18
+ }
19
+ export interface WorkflowError {
20
+ message: string;
21
+ code?: string;
22
+ stack?: string;
23
+ }
24
+ export interface WorkflowRun {
25
+ id: string;
26
+ command_name: string;
27
+ status: WorkflowStatus;
28
+ steps: StepState[];
29
+ input: unknown;
30
+ output?: unknown;
31
+ error?: WorkflowError;
32
+ started_at: Date;
33
+ completed_at?: Date;
34
+ cancel_requested_at?: Date;
35
+ }
36
+ export interface NewWorkflowRun {
37
+ id: string;
38
+ command_name: string;
39
+ steps: StepState[];
40
+ input: unknown;
41
+ }
42
+ /**
43
+ * Durable workflow run store contract.
44
+ * Adapters: DrizzleWorkflowStore (Postgres).
45
+ *
46
+ * Writes only happen on state transitions (workflow started, step state change,
47
+ * workflow terminal). In-flight progress is NOT stored here — see IProgressChannelPort.
48
+ */
49
+ export interface IWorkflowStorePort {
50
+ /**
51
+ * Insert a new run in status='pending' with the initial steps array.
52
+ * Throws if a run with the same id already exists.
53
+ */
54
+ create(run: NewWorkflowRun): Promise<void>;
55
+ /**
56
+ * Patch the matching step (by name) within the steps array.
57
+ * Preserves other steps. Undefined fields in `patch` are not overwritten.
58
+ *
59
+ * **Append-on-miss semantics** — if no step with `stepName` exists in the current
60
+ * `steps` array, the adapter MUST append a new `StepState { name: stepName, ...patch }`
61
+ * rather than throw. This is required because:
62
+ * 1. Some steps (e.g. dynamically-named loop iterations) are discovered at runtime
63
+ * after the initial `create()` call that seeded the steps array.
64
+ * 2. Parallel DAG branches may add steps outside the originally-declared order.
65
+ * 3. It makes the method idempotent and safe for retries.
66
+ *
67
+ * Adapters whose storage requires an explicit "insert if missing" branch (Postgres
68
+ * JSONB with array ops, Mongo with $push, etc.) must handle this internally.
69
+ * See DrizzleWorkflowStore for the reference implementation.
70
+ */
71
+ updateStep(runId: string, stepName: string, patch: Partial<StepState>): Promise<void>;
72
+ /**
73
+ * Transition the overall workflow status. Optional terminal fields
74
+ * (output, error, completed_at) are written atomically with the status.
75
+ */
76
+ updateStatus(runId: string, status: WorkflowStatus, fields?: {
77
+ output?: unknown;
78
+ error?: WorkflowError;
79
+ completed_at?: Date;
80
+ }): Promise<void>;
81
+ /**
82
+ * Request cancellation of a running workflow.
83
+ * Sets `cancel_requested_at = now()` once. Idempotent — no-op if the run
84
+ * is already terminal (succeeded/failed/cancelled) or already cancel-requested.
85
+ */
86
+ requestCancel(runId: string): Promise<void>;
87
+ /**
88
+ * Fetch a run by id. Returns null if not found.
89
+ */
90
+ get(runId: string): Promise<WorkflowRun | null>;
91
+ /**
92
+ * List runs in a pre-terminal state ('pending' or 'running') with
93
+ * heartbeat_at older than the threshold. Used by the orphan-reaper job on
94
+ * serverless hosts (WP-F04): the host is no longer alive so the reaper
95
+ * flips the run to failed. Covers both statuses because workflows live as
96
+ * 'pending' from create() through every step until a terminal updateStatus;
97
+ * a crash before the first step leaves the row frozen at 'pending'.
98
+ */
99
+ listOrphans(opts: {
100
+ olderThan: Date;
101
+ limit?: number;
102
+ }): Promise<WorkflowRun[]>;
103
+ /**
104
+ * Mark a run as failed because its host disappeared (WP-F04). Sets status='failed',
105
+ * error, and completed_at. Idempotent on terminal rows — a row already
106
+ * succeeded/failed/cancelled is not touched. Flips both 'pending' and
107
+ * 'running' (see listOrphans for the rationale).
108
+ */
109
+ markOrphanFailed(runId: string, error: WorkflowError): Promise<void>;
110
+ }
111
+ //# sourceMappingURL=workflow-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-store.d.ts","sourceRoot":"","sources":["../../src/ports/workflow-store.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAA;AAEpG,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,aAAa,CAAA;AAEhH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,UAAU,CAAA;IAClB,UAAU,CAAC,EAAE,IAAI,CAAA;IACjB,YAAY,CAAC,EAAE,IAAI,CAAA;IACnB,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1C;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,cAAc,CAAA;IACtB,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,UAAU,EAAE,IAAI,CAAA;IAChB,YAAY,CAAC,EAAE,IAAI,CAAA;IACnB,mBAAmB,CAAC,EAAE,IAAI,CAAA;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,KAAK,EAAE,OAAO,CAAA;CACf;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE1C;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAErF;;;OAGG;IACH,YAAY,CACV,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,cAAc,EACtB,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,aAAa,CAAC;QAAC,YAAY,CAAC,EAAE,IAAI,CAAA;KAAE,GACxE,OAAO,CAAC,IAAI,CAAC,CAAA;IAEhB;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE3C;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;IAE/C;;;;;;;OAOG;IACH,WAAW,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;IAE9E;;;;;OAKG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACrE"}
@@ -0,0 +1,5 @@
1
+ // IWorkflowStorePort interface — durable store for workflow runs.
2
+ // Powers the `/admin/_runs/:runId` page, `useCommand` polling, and cancellation.
3
+ // See WORKFLOW_PROGRESS.md §5.1 and §9.1 for the full design.
4
+ export {};
5
+ //# sourceMappingURL=workflow-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-store.js","sourceRoot":"","sources":["../../src/ports/workflow-store.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,iFAAiF;AACjF,8DAA8D"}
@@ -0,0 +1,55 @@
1
+ import type { AuthContext } from '../auth/types';
2
+ /**
3
+ * Entity name for graph access — autocompletes from codegen.
4
+ */
5
+ type EntityNameArg = keyof MantaGeneratedEntities | (string & {});
6
+ /**
7
+ * Per-entity access rule:
8
+ * - `true` — all rows, no filter
9
+ * - `(auth) => filters` — row-level filter based on authenticated user
10
+ */
11
+ export type EntityAccessRule = true | ((auth: AuthContext) => Record<string, unknown>);
12
+ /**
13
+ * Entity access map — defines which entities are accessible and how rows are scoped.
14
+ */
15
+ export type EntityAccessMap = Record<string, EntityAccessRule>;
16
+ /**
17
+ * Query graph definition — controls entity + row-level access for graph queries.
18
+ */
19
+ export interface QueryGraphDefinition {
20
+ __type: 'query-graph';
21
+ /** '*' = wildcard (all entities, all rows). Otherwise per-entity rules. */
22
+ access: '*' | EntityAccessMap;
23
+ }
24
+ /**
25
+ * Define query graph access for a context.
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * // src/queries/admin/graph.ts — full access (admin/AI)
30
+ * export default defineQueryGraph('*')
31
+ *
32
+ * // src/queries/store/graph.ts — scoped access
33
+ * export default defineQueryGraph({
34
+ * product: true, // all products
35
+ * category: true, // all categories
36
+ * order: (auth) => ({ customer_id: auth.id }), // only MY orders
37
+ * customer: (auth) => ({ id: auth.id }), // only MY profile
38
+ * })
39
+ * ```
40
+ */
41
+ export declare function defineQueryGraph(access: '*'): QueryGraphDefinition;
42
+ export declare function defineQueryGraph(access: Record<EntityNameArg, EntityAccessRule>): QueryGraphDefinition;
43
+ /**
44
+ * Check if an entity is allowed by the query graph definition.
45
+ */
46
+ export declare function isEntityAllowed(def: QueryGraphDefinition, entity: string): boolean;
47
+ /**
48
+ * Get the row-level filter for an entity, given the auth context.
49
+ * Returns undefined if no filter (wildcard or `true` rule).
50
+ * Returns the filter record if a scope function is defined.
51
+ * Returns null if entity is not allowed.
52
+ */
53
+ export declare function getEntityFilter(def: QueryGraphDefinition, entity: string, auth: AuthContext | null): Record<string, unknown> | undefined | null;
54
+ export {};
55
+ //# sourceMappingURL=define-query-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-query-graph.d.ts","sourceRoot":"","sources":["../../src/query/define-query-graph.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAGhD;;GAEG;AACH,KAAK,aAAa,GAAG,MAAM,sBAAsB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAEjE;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,WAAW,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAEtF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;AAE9D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,aAAa,CAAA;IACrB,2EAA2E;IAC3E,MAAM,EAAE,GAAG,GAAG,eAAe,CAAA;CAC9B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,GAAG,oBAAoB,CAAA;AACnE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,oBAAoB,CAAA;AAevG;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAGlF;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,oBAAoB,EACzB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,WAAW,GAAG,IAAI,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,CAO5C"}
@@ -0,0 +1,59 @@
1
+ // defineQueryGraph — Expose the query graph for a context with row-level scoping.
2
+ //
3
+ // Three modes:
4
+ // defineQueryGraph('*') → wildcard, full access (admin/AI)
5
+ // defineQueryGraph({ product: true, order: (auth) => ({ customer_id: auth.id }) })
6
+ // → scoped per entity
7
+ // No defineQueryGraph = no graph query access → useGraphQuery errors in SDK
8
+ //
9
+ // Usage:
10
+ // // src/queries/admin/graph.ts — full access
11
+ // export default defineQueryGraph('*')
12
+ //
13
+ // // src/queries/store/graph.ts — scoped access with row-level filters
14
+ // export default defineQueryGraph({
15
+ // product: true,
16
+ // category: true,
17
+ // order: (auth) => ({ customer_id: auth.id }),
18
+ // customer: (auth) => ({ id: auth.id }),
19
+ // })
20
+ import { MantaError } from '../errors/manta-error';
21
+ export function defineQueryGraph(access) {
22
+ if (access !== '*' && (typeof access !== 'object' || access === null)) {
23
+ throw new MantaError('INVALID_DATA', 'defineQueryGraph() requires "*" or an entity access map');
24
+ }
25
+ if (typeof access === 'object' && Object.keys(access).length === 0) {
26
+ throw new MantaError('INVALID_DATA', 'defineQueryGraph() entity map cannot be empty. Use "*" for full access.');
27
+ }
28
+ return {
29
+ __type: 'query-graph',
30
+ access,
31
+ };
32
+ }
33
+ /**
34
+ * Check if an entity is allowed by the query graph definition.
35
+ */
36
+ export function isEntityAllowed(def, entity) {
37
+ if (def.access === '*')
38
+ return true;
39
+ return entity in def.access;
40
+ }
41
+ /**
42
+ * Get the row-level filter for an entity, given the auth context.
43
+ * Returns undefined if no filter (wildcard or `true` rule).
44
+ * Returns the filter record if a scope function is defined.
45
+ * Returns null if entity is not allowed.
46
+ */
47
+ export function getEntityFilter(def, entity, auth) {
48
+ if (def.access === '*')
49
+ return undefined; // no filter
50
+ const rule = def.access[entity];
51
+ if (rule === undefined)
52
+ return null; // not allowed
53
+ if (rule === true)
54
+ return undefined; // all rows
55
+ if (!auth)
56
+ return null; // scoped entity but no auth → blocked
57
+ return rule(auth);
58
+ }
59
+ //# sourceMappingURL=define-query-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-query-graph.js","sourceRoot":"","sources":["../../src/query/define-query-graph.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,EAAE;AACF,eAAe;AACf,0FAA0F;AAC1F,qFAAqF;AACrF,2EAA2E;AAC3E,sFAAsF;AACtF,EAAE;AACF,SAAS;AACT,gDAAgD;AAChD,yCAAyC;AACzC,EAAE;AACF,yEAAyE;AACzE,sCAAsC;AACtC,qBAAqB;AACrB,sBAAsB;AACtB,mDAAmD;AACnD,6CAA6C;AAC7C,OAAO;AAGP,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AA+ClD,MAAM,UAAU,gBAAgB,CAAC,MAAqD;IACpF,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,UAAU,CAAC,cAAc,EAAE,yDAAyD,CAAC,CAAA;IACjG,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,UAAU,CAAC,cAAc,EAAE,yEAAyE,CAAC,CAAA;IACjH,CAAC;IAED,OAAO;QACL,MAAM,EAAE,aAAa;QACrB,MAAM;KACP,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,GAAyB,EAAE,MAAc;IACvE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,CAAA;IACnC,OAAO,MAAM,IAAI,GAAG,CAAC,MAAM,CAAA;AAC7B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,GAAyB,EACzB,MAAc,EACd,IAAwB;IAExB,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,SAAS,CAAA,CAAC,YAAY;IACrD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC/B,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA,CAAC,cAAc;IAClD,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,SAAS,CAAA,CAAC,WAAW;IAC/C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA,CAAC,sCAAsC;IAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,CAAA;AACnB,CAAC"}
@@ -0,0 +1,79 @@
1
+ import type { z } from 'zod';
2
+ import type { AuthContext } from '../auth/types';
3
+ import type { ILoggerPort } from '../ports/logger';
4
+ import type { QueryService } from './index';
5
+ /**
6
+ * Query handler context — what the developer receives in the handler.
7
+ */
8
+ export interface QueryHandlerContext {
9
+ /** QueryService for cross-module graph queries. */
10
+ query: QueryService;
11
+ /** Structured logger. */
12
+ log: ILoggerPort;
13
+ /** Authenticated user context (null if public route). */
14
+ auth: AuthContext | null;
15
+ /** Raw request headers. */
16
+ headers: Record<string, string | undefined>;
17
+ }
18
+ /**
19
+ * What the developer writes — a query config with a handler.
20
+ */
21
+ export interface QueryConfig<TInput = unknown, TOutput = unknown> {
22
+ name: string;
23
+ description: string;
24
+ input: z.ZodType<TInput>;
25
+ handler: (input: TInput, context: QueryHandlerContext) => Promise<TOutput>;
26
+ }
27
+ /**
28
+ * Internal query definition — handler receives raw context. Used by bootstrap/registry.
29
+ */
30
+ export interface QueryDefinition<TInput = unknown, TOutput = unknown> {
31
+ name: string;
32
+ description: string;
33
+ input: z.ZodType<TInput>;
34
+ handler: (input: TInput, context: QueryHandlerContext) => Promise<TOutput>;
35
+ __type: 'query';
36
+ }
37
+ /**
38
+ * Define a query (CQRS read side).
39
+ *
40
+ * Queries are read-only, side-effect-free operations exposed as GET endpoints.
41
+ * They receive the QueryService for cross-module graph queries, or can access
42
+ * module services directly through the app.
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * // src/queries/admin/list-products.ts
47
+ * import { defineQuery } from '@mantajs/core'
48
+ * import { z } from 'zod'
49
+ *
50
+ * export default defineQuery({
51
+ * name: 'list-products',
52
+ * description: 'List products with filtering and pagination',
53
+ * input: z.object({
54
+ * status: z.enum(['draft', 'active', 'archived']).optional(),
55
+ * limit: z.number().default(20),
56
+ * offset: z.number().default(0),
57
+ * }),
58
+ * handler: async (input, { query }) => {
59
+ * return query.graph({
60
+ * entity: 'product',
61
+ * filters: input.status ? { status: input.status } : undefined,
62
+ * pagination: { limit: input.limit, offset: input.offset },
63
+ * })
64
+ * },
65
+ * })
66
+ * ```
67
+ */
68
+ export declare function defineQuery<TInput, TOutput>(config: QueryConfig<TInput, TOutput>): QueryDefinition<TInput, TOutput>;
69
+ /**
70
+ * Registry for query definitions — analogous to CommandRegistry.
71
+ */
72
+ export declare class QueryRegistry {
73
+ private _entries;
74
+ register(def: QueryDefinition): void;
75
+ get(name: string): QueryDefinition | undefined;
76
+ list(): QueryDefinition[];
77
+ _reset(): void;
78
+ }
79
+ //# sourceMappingURL=define-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-query.d.ts","sourceRoot":"","sources":["../../src/query/define-query.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,mDAAmD;IACnD,KAAK,EAAE,YAAY,CAAA;IACnB,yBAAyB;IACzB,GAAG,EAAE,WAAW,CAAA;IAChB,yDAAyD;IACzD,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;IACxB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IAC9D,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACxB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAC3E;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IAClE,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACxB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1E,MAAM,EAAE,OAAO,CAAA;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CA8BnH;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAqC;IAErD,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAOpC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI9C,IAAI,IAAI,eAAe,EAAE;IAIzB,MAAM,IAAI,IAAI;CAGf"}
@@ -0,0 +1,77 @@
1
+ // SPEC-V2 — defineQuery() + QueryRegistry
2
+ // CQRS read side. Parallels defineCommand but for GET endpoints.
3
+ import { MantaError } from '../errors/manta-error';
4
+ /**
5
+ * Define a query (CQRS read side).
6
+ *
7
+ * Queries are read-only, side-effect-free operations exposed as GET endpoints.
8
+ * They receive the QueryService for cross-module graph queries, or can access
9
+ * module services directly through the app.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * // src/queries/admin/list-products.ts
14
+ * import { defineQuery } from '@mantajs/core'
15
+ * import { z } from 'zod'
16
+ *
17
+ * export default defineQuery({
18
+ * name: 'list-products',
19
+ * description: 'List products with filtering and pagination',
20
+ * input: z.object({
21
+ * status: z.enum(['draft', 'active', 'archived']).optional(),
22
+ * limit: z.number().default(20),
23
+ * offset: z.number().default(0),
24
+ * }),
25
+ * handler: async (input, { query }) => {
26
+ * return query.graph({
27
+ * entity: 'product',
28
+ * filters: input.status ? { status: input.status } : undefined,
29
+ * pagination: { limit: input.limit, offset: input.offset },
30
+ * })
31
+ * },
32
+ * })
33
+ * ```
34
+ */
35
+ export function defineQuery(config) {
36
+ if (!config.name) {
37
+ throw new MantaError('INVALID_DATA', 'Query name is required. Usage: defineQuery({ name: "list-products", description: "...", input: z.object({...}), handler: async (input, { query }) => {...} })');
38
+ }
39
+ if (!config.description) {
40
+ throw new MantaError('INVALID_DATA', `Query "${config.name}" requires a description.`);
41
+ }
42
+ if (!config.input) {
43
+ throw new MantaError('INVALID_DATA', `Query "${config.name}" requires an input Zod schema. Use z.object({}) for queries with no parameters.`);
44
+ }
45
+ if (typeof config.handler !== 'function') {
46
+ throw new MantaError('INVALID_DATA', `Query "${config.name}" handler must be an async function: handler: async (input, { query }) => {...}`);
47
+ }
48
+ return {
49
+ name: config.name,
50
+ description: config.description,
51
+ input: config.input,
52
+ handler: config.handler,
53
+ __type: 'query',
54
+ };
55
+ }
56
+ /**
57
+ * Registry for query definitions — analogous to CommandRegistry.
58
+ */
59
+ export class QueryRegistry {
60
+ _entries = new Map();
61
+ register(def) {
62
+ if (this._entries.has(def.name)) {
63
+ throw new MantaError('DUPLICATE_ERROR', `Query "${def.name}" is already registered`);
64
+ }
65
+ this._entries.set(def.name, def);
66
+ }
67
+ get(name) {
68
+ return this._entries.get(name);
69
+ }
70
+ list() {
71
+ return [...this._entries.values()];
72
+ }
73
+ _reset() {
74
+ this._entries.clear();
75
+ }
76
+ }
77
+ //# sourceMappingURL=define-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-query.js","sourceRoot":"","sources":["../../src/query/define-query.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,iEAAiE;AAIjE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAuClD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,WAAW,CAAkB,MAAoC;IAC/E,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,UAAU,CAClB,cAAc,EACd,+JAA+J,CAChK,CAAA;IACH,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,IAAI,UAAU,CAAC,cAAc,EAAE,UAAU,MAAM,CAAC,IAAI,2BAA2B,CAAC,CAAA;IACxF,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,UAAU,CAClB,cAAc,EACd,UAAU,MAAM,CAAC,IAAI,kFAAkF,CACxG,CAAA;IACH,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QACzC,MAAM,IAAI,UAAU,CAClB,cAAc,EACd,UAAU,MAAM,CAAC,IAAI,iFAAiF,CACvG,CAAA;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,OAAO;KAChB,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,aAAa;IAChB,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAA;IAErD,QAAQ,CAAC,GAAoB;QAC3B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,UAAU,GAAG,CAAC,IAAI,yBAAyB,CAAC,CAAA;QACtF,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAClC,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IACpC,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IACvB,CAAC;CACF"}
@@ -0,0 +1,36 @@
1
+ import type { ILoggerPort } from '../ports/logger';
2
+ import type { GraphQueryConfig } from './index';
3
+ /**
4
+ * Context passed to an extension's resolver.
5
+ */
6
+ export interface QueryGraphExtensionContext {
7
+ /** MantaApp instance — used to resolve plugin config and other infra */
8
+ app: any;
9
+ logger: ILoggerPort;
10
+ }
11
+ /**
12
+ * Extension resolver — receives a Manta query graph config, returns normalized rows.
13
+ */
14
+ export type QueryGraphExtensionResolver = (query: GraphQueryConfig, ctx: QueryGraphExtensionContext) => Promise<Record<string, unknown>[]>;
15
+ /**
16
+ * Definition of a query graph extension — what a module exports from `query-graph.ts`.
17
+ */
18
+ export interface QueryGraphExtensionDefinition {
19
+ __type: 'query-extension';
20
+ /** Entity names this extension is responsible for resolving. */
21
+ owns: string[];
22
+ /** Resolver function — called by the query engine when any of the owned entities are queried. */
23
+ resolve: QueryGraphExtensionResolver;
24
+ /**
25
+ * Optional: filters supported by entity. Filters not in this list will throw a clear error
26
+ * so the caller (or AI) can adapt. Omit to mean "all filters accepted" (use at own risk).
27
+ */
28
+ supportedFilters?: Record<string, string[]>;
29
+ /** Module name that registered this extension (populated at bootstrap) */
30
+ __module?: string;
31
+ }
32
+ /**
33
+ * Declare that a module extends the query graph with resolvers for a set of external entities.
34
+ */
35
+ export declare function extendQueryGraph(config: Omit<QueryGraphExtensionDefinition, '__type'>): QueryGraphExtensionDefinition;
36
+ //# sourceMappingURL=extend-query-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extend-query-graph.d.ts","sourceRoot":"","sources":["../../src/query/extend-query-graph.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,wEAAwE;IAExE,GAAG,EAAE,GAAG,CAAA;IACR,MAAM,EAAE,WAAW,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,CACxC,KAAK,EAAE,gBAAgB,EACvB,GAAG,EAAE,0BAA0B,KAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;AAEvC;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,iBAAiB,CAAA;IACzB,gEAAgE;IAChE,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,iGAAiG;IACjG,OAAO,EAAE,2BAA2B,CAAA;IACpC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IAC3C,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,6BAA6B,EAAE,QAAQ,CAAC,GAAG,6BAA6B,CAerH"}
@@ -0,0 +1,34 @@
1
+ // extendQueryGraph — Extend the query graph with a custom resolver for external entities.
2
+ //
3
+ // Used by modules that own entities living in an external system (PostHog, Stripe, etc.).
4
+ // The module declares which entities it owns and provides a resolver that translates
5
+ // a Manta query graph into calls to the external backend.
6
+ //
7
+ // Unlike defineQueryGraph (which controls access per-context), extendQueryGraph ADDS
8
+ // new resolution paths to the query engine itself.
9
+ //
10
+ // Example (in modules/posthog/queries/graph.ts):
11
+ // export default extendQueryGraph({
12
+ // owns: ['posthogEvent', 'posthogPerson', 'posthogInsight'],
13
+ // async resolve(query, ctx) {
14
+ // // translate query → HogQL, fetch, return normalized rows
15
+ // },
16
+ // })
17
+ /**
18
+ * Declare that a module extends the query graph with resolvers for a set of external entities.
19
+ */
20
+ export function extendQueryGraph(config) {
21
+ if (!Array.isArray(config.owns) || config.owns.length === 0) {
22
+ throw new Error('extendQueryGraph() requires a non-empty `owns` array listing the entity names this extension resolves.');
23
+ }
24
+ if (typeof config.resolve !== 'function') {
25
+ throw new Error('extendQueryGraph() requires a `resolve` function: async (query, ctx) => rows[]');
26
+ }
27
+ return {
28
+ __type: 'query-extension',
29
+ owns: config.owns,
30
+ resolve: config.resolve,
31
+ ...(config.supportedFilters ? { supportedFilters: config.supportedFilters } : {}),
32
+ };
33
+ }
34
+ //# sourceMappingURL=extend-query-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extend-query-graph.js","sourceRoot":"","sources":["../../src/query/extend-query-graph.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,EAAE;AACF,0FAA0F;AAC1F,qFAAqF;AACrF,0DAA0D;AAC1D,EAAE;AACF,qFAAqF;AACrF,mDAAmD;AACnD,EAAE;AACF,iDAAiD;AACjD,sCAAsC;AACtC,iEAAiE;AACjE,kCAAkC;AAClC,kEAAkE;AAClE,SAAS;AACT,OAAO;AAyCP;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAqD;IACpF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CACb,wGAAwG,CACzG,CAAA;IACH,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAA;IACnG,CAAC;IACD,OAAO;QACL,MAAM,EAAE,iBAAiB;QACzB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClF,CAAA;AACH,CAAC"}