@porulle/core 0.1.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 (864) hide show
  1. package/README.md +56 -0
  2. package/dist/adapters/console-email.d.ts +23 -0
  3. package/dist/adapters/console-email.d.ts.map +1 -0
  4. package/dist/adapters/console-email.js +38 -0
  5. package/dist/auth/access.d.ts +101 -0
  6. package/dist/auth/access.d.ts.map +1 -0
  7. package/dist/auth/access.js +128 -0
  8. package/dist/auth/auth-schema.d.ts +1475 -0
  9. package/dist/auth/auth-schema.d.ts.map +1 -0
  10. package/dist/auth/auth-schema.js +124 -0
  11. package/dist/auth/middleware.d.ts +5 -0
  12. package/dist/auth/middleware.d.ts.map +1 -0
  13. package/dist/auth/middleware.js +220 -0
  14. package/dist/auth/org.d.ts +28 -0
  15. package/dist/auth/org.d.ts.map +1 -0
  16. package/dist/auth/org.js +68 -0
  17. package/dist/auth/permissions.d.ts +4 -0
  18. package/dist/auth/permissions.d.ts.map +1 -0
  19. package/dist/auth/permissions.js +24 -0
  20. package/dist/auth/setup.d.ts +29 -0
  21. package/dist/auth/setup.d.ts.map +1 -0
  22. package/dist/auth/setup.js +137 -0
  23. package/dist/auth/strict-org-resolution.d.ts +4 -0
  24. package/dist/auth/strict-org-resolution.d.ts.map +1 -0
  25. package/dist/auth/strict-org-resolution.js +13 -0
  26. package/dist/auth/system-actor.d.ts +7 -0
  27. package/dist/auth/system-actor.d.ts.map +1 -0
  28. package/dist/auth/system-actor.js +17 -0
  29. package/dist/auth/types.d.ts +11 -0
  30. package/dist/auth/types.d.ts.map +1 -0
  31. package/dist/auth/types.js +1 -0
  32. package/dist/config/defaults.d.ts +3 -0
  33. package/dist/config/defaults.d.ts.map +1 -0
  34. package/dist/config/defaults.js +83 -0
  35. package/dist/config/define-config.d.ts +10 -0
  36. package/dist/config/define-config.d.ts.map +1 -0
  37. package/dist/config/define-config.js +64 -0
  38. package/dist/config/types.d.ts +412 -0
  39. package/dist/config/types.d.ts.map +1 -0
  40. package/dist/config/types.js +1 -0
  41. package/dist/drizzle.d.ts +28 -0
  42. package/dist/drizzle.d.ts.map +1 -0
  43. package/dist/drizzle.js +24 -0
  44. package/dist/generated/plugin-manifest.d.ts +45 -0
  45. package/dist/generated/plugin-manifest.d.ts.map +1 -0
  46. package/dist/generated/plugin-manifest.js +19 -0
  47. package/dist/hooks/checkout-completion.d.ts +58 -0
  48. package/dist/hooks/checkout-completion.d.ts.map +1 -0
  49. package/dist/hooks/checkout-completion.js +146 -0
  50. package/dist/hooks/checkout.d.ts +99 -0
  51. package/dist/hooks/checkout.d.ts.map +1 -0
  52. package/dist/hooks/checkout.js +331 -0
  53. package/dist/hooks/order-emails.d.ts +16 -0
  54. package/dist/hooks/order-emails.d.ts.map +1 -0
  55. package/dist/hooks/order-emails.js +44 -0
  56. package/dist/index.d.ts +79 -0
  57. package/dist/index.d.ts.map +1 -0
  58. package/dist/index.js +46 -0
  59. package/dist/interfaces/rest/customer-portal.d.ts +5 -0
  60. package/dist/interfaces/rest/customer-portal.d.ts.map +1 -0
  61. package/dist/interfaces/rest/customer-portal.js +206 -0
  62. package/dist/interfaces/rest/index.d.ts +5 -0
  63. package/dist/interfaces/rest/index.d.ts.map +1 -0
  64. package/dist/interfaces/rest/index.js +94 -0
  65. package/dist/interfaces/rest/router.d.ts +164 -0
  66. package/dist/interfaces/rest/router.d.ts.map +1 -0
  67. package/dist/interfaces/rest/router.js +259 -0
  68. package/dist/interfaces/rest/routes/admin/compensation-failures.d.ts +5 -0
  69. package/dist/interfaces/rest/routes/admin/compensation-failures.d.ts.map +1 -0
  70. package/dist/interfaces/rest/routes/admin/compensation-failures.js +114 -0
  71. package/dist/interfaces/rest/routes/admin/permissions.d.ts +5 -0
  72. package/dist/interfaces/rest/routes/admin/permissions.d.ts.map +1 -0
  73. package/dist/interfaces/rest/routes/admin/permissions.js +28 -0
  74. package/dist/interfaces/rest/routes/admin-jobs.d.ts +5 -0
  75. package/dist/interfaces/rest/routes/admin-jobs.d.ts.map +1 -0
  76. package/dist/interfaces/rest/routes/admin-jobs.js +48 -0
  77. package/dist/interfaces/rest/routes/audit.d.ts +5 -0
  78. package/dist/interfaces/rest/routes/audit.d.ts.map +1 -0
  79. package/dist/interfaces/rest/routes/audit.js +43 -0
  80. package/dist/interfaces/rest/routes/carts.d.ts +5 -0
  81. package/dist/interfaces/rest/routes/carts.d.ts.map +1 -0
  82. package/dist/interfaces/rest/routes/carts.js +61 -0
  83. package/dist/interfaces/rest/routes/catalog.d.ts +5 -0
  84. package/dist/interfaces/rest/routes/catalog.d.ts.map +1 -0
  85. package/dist/interfaces/rest/routes/catalog.js +269 -0
  86. package/dist/interfaces/rest/routes/checkout.d.ts +5 -0
  87. package/dist/interfaces/rest/routes/checkout.d.ts.map +1 -0
  88. package/dist/interfaces/rest/routes/checkout.js +220 -0
  89. package/dist/interfaces/rest/routes/customers.d.ts +5 -0
  90. package/dist/interfaces/rest/routes/customers.d.ts.map +1 -0
  91. package/dist/interfaces/rest/routes/customers.js +78 -0
  92. package/dist/interfaces/rest/routes/inventory.d.ts +5 -0
  93. package/dist/interfaces/rest/routes/inventory.d.ts.map +1 -0
  94. package/dist/interfaces/rest/routes/inventory.js +74 -0
  95. package/dist/interfaces/rest/routes/media.d.ts +5 -0
  96. package/dist/interfaces/rest/routes/media.d.ts.map +1 -0
  97. package/dist/interfaces/rest/routes/media.js +66 -0
  98. package/dist/interfaces/rest/routes/orders.d.ts +5 -0
  99. package/dist/interfaces/rest/routes/orders.d.ts.map +1 -0
  100. package/dist/interfaces/rest/routes/orders.js +64 -0
  101. package/dist/interfaces/rest/routes/payments.d.ts +5 -0
  102. package/dist/interfaces/rest/routes/payments.d.ts.map +1 -0
  103. package/dist/interfaces/rest/routes/payments.js +45 -0
  104. package/dist/interfaces/rest/routes/pricing.d.ts +5 -0
  105. package/dist/interfaces/rest/routes/pricing.d.ts.map +1 -0
  106. package/dist/interfaces/rest/routes/pricing.js +61 -0
  107. package/dist/interfaces/rest/routes/promotions.d.ts +5 -0
  108. package/dist/interfaces/rest/routes/promotions.d.ts.map +1 -0
  109. package/dist/interfaces/rest/routes/promotions.js +76 -0
  110. package/dist/interfaces/rest/routes/search.d.ts +5 -0
  111. package/dist/interfaces/rest/routes/search.d.ts.map +1 -0
  112. package/dist/interfaces/rest/routes/search.js +72 -0
  113. package/dist/interfaces/rest/routes/webhooks.d.ts +5 -0
  114. package/dist/interfaces/rest/routes/webhooks.d.ts.map +1 -0
  115. package/dist/interfaces/rest/routes/webhooks.js +39 -0
  116. package/dist/interfaces/rest/schemas/admin-jobs.d.ts +327 -0
  117. package/dist/interfaces/rest/schemas/admin-jobs.d.ts.map +1 -0
  118. package/dist/interfaces/rest/schemas/admin-jobs.js +37 -0
  119. package/dist/interfaces/rest/schemas/admin-permissions.d.ts +27 -0
  120. package/dist/interfaces/rest/schemas/admin-permissions.d.ts.map +1 -0
  121. package/dist/interfaces/rest/schemas/admin-permissions.js +25 -0
  122. package/dist/interfaces/rest/schemas/audit.d.ts +59 -0
  123. package/dist/interfaces/rest/schemas/audit.d.ts.map +1 -0
  124. package/dist/interfaces/rest/schemas/audit.js +43 -0
  125. package/dist/interfaces/rest/schemas/carts.d.ts +1456 -0
  126. package/dist/interfaces/rest/schemas/carts.d.ts.map +1 -0
  127. package/dist/interfaces/rest/schemas/carts.js +109 -0
  128. package/dist/interfaces/rest/schemas/catalog.d.ts +5452 -0
  129. package/dist/interfaces/rest/schemas/catalog.d.ts.map +1 -0
  130. package/dist/interfaces/rest/schemas/catalog.js +397 -0
  131. package/dist/interfaces/rest/schemas/checkout.d.ts +160 -0
  132. package/dist/interfaces/rest/schemas/checkout.d.ts.map +1 -0
  133. package/dist/interfaces/rest/schemas/checkout.js +60 -0
  134. package/dist/interfaces/rest/schemas/compensation-failures.d.ts +122 -0
  135. package/dist/interfaces/rest/schemas/compensation-failures.d.ts.map +1 -0
  136. package/dist/interfaces/rest/schemas/compensation-failures.js +84 -0
  137. package/dist/interfaces/rest/schemas/customer-portal.d.ts +2237 -0
  138. package/dist/interfaces/rest/schemas/customer-portal.d.ts.map +1 -0
  139. package/dist/interfaces/rest/schemas/customer-portal.js +177 -0
  140. package/dist/interfaces/rest/schemas/customers.d.ts +422 -0
  141. package/dist/interfaces/rest/schemas/customers.d.ts.map +1 -0
  142. package/dist/interfaces/rest/schemas/customers.js +150 -0
  143. package/dist/interfaces/rest/schemas/inventory.d.ts +561 -0
  144. package/dist/interfaces/rest/schemas/inventory.d.ts.map +1 -0
  145. package/dist/interfaces/rest/schemas/inventory.js +148 -0
  146. package/dist/interfaces/rest/schemas/media.d.ts +303 -0
  147. package/dist/interfaces/rest/schemas/media.d.ts.map +1 -0
  148. package/dist/interfaces/rest/schemas/media.js +69 -0
  149. package/dist/interfaces/rest/schemas/orders.d.ts +1877 -0
  150. package/dist/interfaces/rest/schemas/orders.d.ts.map +1 -0
  151. package/dist/interfaces/rest/schemas/orders.js +93 -0
  152. package/dist/interfaces/rest/schemas/pricing.d.ts +256 -0
  153. package/dist/interfaces/rest/schemas/pricing.d.ts.map +1 -0
  154. package/dist/interfaces/rest/schemas/pricing.js +72 -0
  155. package/dist/interfaces/rest/schemas/promotions.d.ts +374 -0
  156. package/dist/interfaces/rest/schemas/promotions.d.ts.map +1 -0
  157. package/dist/interfaces/rest/schemas/promotions.js +104 -0
  158. package/dist/interfaces/rest/schemas/responses.d.ts +4138 -0
  159. package/dist/interfaces/rest/schemas/responses.d.ts.map +1 -0
  160. package/dist/interfaces/rest/schemas/responses.js +74 -0
  161. package/dist/interfaces/rest/schemas/search.d.ts +247 -0
  162. package/dist/interfaces/rest/schemas/search.d.ts.map +1 -0
  163. package/dist/interfaces/rest/schemas/search.js +55 -0
  164. package/dist/interfaces/rest/schemas/shared.d.ts +95 -0
  165. package/dist/interfaces/rest/schemas/shared.d.ts.map +1 -0
  166. package/dist/interfaces/rest/schemas/shared.js +51 -0
  167. package/dist/interfaces/rest/schemas/webhooks.d.ts +221 -0
  168. package/dist/interfaces/rest/schemas/webhooks.d.ts.map +1 -0
  169. package/dist/interfaces/rest/schemas/webhooks.js +62 -0
  170. package/dist/interfaces/rest/utils.d.ts +45 -0
  171. package/dist/interfaces/rest/utils.d.ts.map +1 -0
  172. package/dist/interfaces/rest/utils.js +71 -0
  173. package/dist/interfaces/rest/webhook-router.d.ts +41 -0
  174. package/dist/interfaces/rest/webhook-router.d.ts.map +1 -0
  175. package/dist/interfaces/rest/webhook-router.js +36 -0
  176. package/dist/kernel/compensation/executor.d.ts +21 -0
  177. package/dist/kernel/compensation/executor.d.ts.map +1 -0
  178. package/dist/kernel/compensation/executor.js +80 -0
  179. package/dist/kernel/compensation/repository.d.ts +47 -0
  180. package/dist/kernel/compensation/repository.d.ts.map +1 -0
  181. package/dist/kernel/compensation/repository.js +93 -0
  182. package/dist/kernel/compensation/schema.d.ts +217 -0
  183. package/dist/kernel/compensation/schema.d.ts.map +1 -0
  184. package/dist/kernel/compensation/schema.js +29 -0
  185. package/dist/kernel/compensation/types.d.ts +29 -0
  186. package/dist/kernel/compensation/types.d.ts.map +1 -0
  187. package/dist/kernel/compensation/types.js +1 -0
  188. package/dist/kernel/database/adapter.d.ts +18 -0
  189. package/dist/kernel/database/adapter.d.ts.map +1 -0
  190. package/dist/kernel/database/adapter.js +3 -0
  191. package/dist/kernel/database/drizzle-db.d.ts +49 -0
  192. package/dist/kernel/database/drizzle-db.d.ts.map +1 -0
  193. package/dist/kernel/database/drizzle-db.js +20 -0
  194. package/dist/kernel/database/migrate.d.ts +38 -0
  195. package/dist/kernel/database/migrate.d.ts.map +1 -0
  196. package/dist/kernel/database/migrate.js +61 -0
  197. package/dist/kernel/database/plugin-db-context.d.ts +3 -0
  198. package/dist/kernel/database/plugin-db-context.d.ts.map +1 -0
  199. package/dist/kernel/database/plugin-db-context.js +8 -0
  200. package/dist/kernel/database/plugin-types.d.ts +32 -0
  201. package/dist/kernel/database/plugin-types.d.ts.map +1 -0
  202. package/dist/kernel/database/plugin-types.js +10 -0
  203. package/dist/kernel/database/schema.d.ts +26 -0
  204. package/dist/kernel/database/schema.d.ts.map +1 -0
  205. package/dist/kernel/database/schema.js +39 -0
  206. package/dist/kernel/database/scoped-db.d.ts +14 -0
  207. package/dist/kernel/database/scoped-db.d.ts.map +1 -0
  208. package/dist/kernel/database/scoped-db.js +103 -0
  209. package/dist/kernel/database/tx-context.d.ts +15 -0
  210. package/dist/kernel/database/tx-context.d.ts.map +1 -0
  211. package/dist/kernel/database/tx-context.js +19 -0
  212. package/dist/kernel/error-mapper.d.ts +14 -0
  213. package/dist/kernel/error-mapper.d.ts.map +1 -0
  214. package/dist/kernel/error-mapper.js +93 -0
  215. package/dist/kernel/errors.d.ts +43 -0
  216. package/dist/kernel/errors.d.ts.map +1 -0
  217. package/dist/kernel/errors.js +78 -0
  218. package/dist/kernel/factory/repository-factory.d.ts +71 -0
  219. package/dist/kernel/factory/repository-factory.d.ts.map +1 -0
  220. package/dist/kernel/factory/repository-factory.js +138 -0
  221. package/dist/kernel/hooks/create-context.d.ts +32 -0
  222. package/dist/kernel/hooks/create-context.d.ts.map +1 -0
  223. package/dist/kernel/hooks/create-context.js +23 -0
  224. package/dist/kernel/hooks/executor.d.ts +13 -0
  225. package/dist/kernel/hooks/executor.d.ts.map +1 -0
  226. package/dist/kernel/hooks/executor.js +56 -0
  227. package/dist/kernel/hooks/registry.d.ts +28 -0
  228. package/dist/kernel/hooks/registry.d.ts.map +1 -0
  229. package/dist/kernel/hooks/registry.js +58 -0
  230. package/dist/kernel/hooks/types.d.ts +40 -0
  231. package/dist/kernel/hooks/types.d.ts.map +1 -0
  232. package/dist/kernel/hooks/types.js +1 -0
  233. package/dist/kernel/http-error.d.ts +30 -0
  234. package/dist/kernel/http-error.d.ts.map +1 -0
  235. package/dist/kernel/http-error.js +35 -0
  236. package/dist/kernel/jobs/adapter.d.ts +25 -0
  237. package/dist/kernel/jobs/adapter.d.ts.map +1 -0
  238. package/dist/kernel/jobs/adapter.js +9 -0
  239. package/dist/kernel/jobs/builtin-job-tasks.d.ts +3 -0
  240. package/dist/kernel/jobs/builtin-job-tasks.d.ts.map +1 -0
  241. package/dist/kernel/jobs/builtin-job-tasks.js +6 -0
  242. package/dist/kernel/jobs/drizzle-adapter.d.ts +15 -0
  243. package/dist/kernel/jobs/drizzle-adapter.d.ts.map +1 -0
  244. package/dist/kernel/jobs/drizzle-adapter.js +46 -0
  245. package/dist/kernel/jobs/reaper.d.ts +12 -0
  246. package/dist/kernel/jobs/reaper.d.ts.map +1 -0
  247. package/dist/kernel/jobs/reaper.js +62 -0
  248. package/dist/kernel/jobs/runner.d.ts +24 -0
  249. package/dist/kernel/jobs/runner.d.ts.map +1 -0
  250. package/dist/kernel/jobs/runner.js +118 -0
  251. package/dist/kernel/jobs/schema.d.ts +280 -0
  252. package/dist/kernel/jobs/schema.d.ts.map +1 -0
  253. package/dist/kernel/jobs/schema.js +37 -0
  254. package/dist/kernel/jobs/types.d.ts +40 -0
  255. package/dist/kernel/jobs/types.d.ts.map +1 -0
  256. package/dist/kernel/jobs/types.js +4 -0
  257. package/dist/kernel/local-api.d.ts +104 -0
  258. package/dist/kernel/local-api.d.ts.map +1 -0
  259. package/dist/kernel/local-api.js +89 -0
  260. package/dist/kernel/module/define.d.ts +21 -0
  261. package/dist/kernel/module/define.d.ts.map +1 -0
  262. package/dist/kernel/module/define.js +3 -0
  263. package/dist/kernel/module/index.d.ts +4 -0
  264. package/dist/kernel/module/index.d.ts.map +1 -0
  265. package/dist/kernel/module/index.js +2 -0
  266. package/dist/kernel/module/topo-sort.d.ts +7 -0
  267. package/dist/kernel/module/topo-sort.d.ts.map +1 -0
  268. package/dist/kernel/module/topo-sort.js +89 -0
  269. package/dist/kernel/plugin/manifest.d.ts +84 -0
  270. package/dist/kernel/plugin/manifest.d.ts.map +1 -0
  271. package/dist/kernel/plugin/manifest.js +196 -0
  272. package/dist/kernel/query/executor.d.ts +21 -0
  273. package/dist/kernel/query/executor.d.ts.map +1 -0
  274. package/dist/kernel/query/executor.js +128 -0
  275. package/dist/kernel/query/registry.d.ts +33 -0
  276. package/dist/kernel/query/registry.d.ts.map +1 -0
  277. package/dist/kernel/query/registry.js +20 -0
  278. package/dist/kernel/result.d.ts +36 -0
  279. package/dist/kernel/result.d.ts.map +1 -0
  280. package/dist/kernel/result.js +16 -0
  281. package/dist/kernel/service-registry.d.ts +109 -0
  282. package/dist/kernel/service-registry.d.ts.map +1 -0
  283. package/dist/kernel/service-registry.js +26 -0
  284. package/dist/kernel/service-timing.d.ts +25 -0
  285. package/dist/kernel/service-timing.d.ts.map +1 -0
  286. package/dist/kernel/service-timing.js +62 -0
  287. package/dist/kernel/state-machine/machine.d.ts +24 -0
  288. package/dist/kernel/state-machine/machine.d.ts.map +1 -0
  289. package/dist/kernel/state-machine/machine.js +70 -0
  290. package/dist/modules/analytics/drizzle-adapter.d.ts +13 -0
  291. package/dist/modules/analytics/drizzle-adapter.d.ts.map +1 -0
  292. package/dist/modules/analytics/drizzle-adapter.js +358 -0
  293. package/dist/modules/analytics/hooks.d.ts +13 -0
  294. package/dist/modules/analytics/hooks.d.ts.map +1 -0
  295. package/dist/modules/analytics/hooks.js +12 -0
  296. package/dist/modules/analytics/models.d.ts +14 -0
  297. package/dist/modules/analytics/models.d.ts.map +1 -0
  298. package/dist/modules/analytics/models.js +118 -0
  299. package/dist/modules/analytics/module.d.ts +3 -0
  300. package/dist/modules/analytics/module.d.ts.map +1 -0
  301. package/dist/modules/analytics/module.js +18 -0
  302. package/dist/modules/analytics/repository/index.d.ts +5 -0
  303. package/dist/modules/analytics/repository/index.d.ts.map +1 -0
  304. package/dist/modules/analytics/repository/index.js +1 -0
  305. package/dist/modules/analytics/service.d.ts +45 -0
  306. package/dist/modules/analytics/service.d.ts.map +1 -0
  307. package/dist/modules/analytics/service.js +196 -0
  308. package/dist/modules/analytics/types.d.ts +119 -0
  309. package/dist/modules/analytics/types.d.ts.map +1 -0
  310. package/dist/modules/analytics/types.js +25 -0
  311. package/dist/modules/audit/hooks.d.ts +7 -0
  312. package/dist/modules/audit/hooks.d.ts.map +1 -0
  313. package/dist/modules/audit/hooks.js +67 -0
  314. package/dist/modules/audit/index.d.ts +2 -0
  315. package/dist/modules/audit/index.d.ts.map +1 -0
  316. package/dist/modules/audit/index.js +1 -0
  317. package/dist/modules/audit/module.d.ts +180 -0
  318. package/dist/modules/audit/module.d.ts.map +1 -0
  319. package/dist/modules/audit/module.js +8 -0
  320. package/dist/modules/audit/schema.d.ts +178 -0
  321. package/dist/modules/audit/schema.d.ts.map +1 -0
  322. package/dist/modules/audit/schema.js +21 -0
  323. package/dist/modules/audit/service.d.ts +38 -0
  324. package/dist/modules/audit/service.d.ts.map +1 -0
  325. package/dist/modules/audit/service.js +109 -0
  326. package/dist/modules/cart/access.d.ts +11 -0
  327. package/dist/modules/cart/access.d.ts.map +1 -0
  328. package/dist/modules/cart/access.js +18 -0
  329. package/dist/modules/cart/matcher.d.ts +20 -0
  330. package/dist/modules/cart/matcher.d.ts.map +1 -0
  331. package/dist/modules/cart/matcher.js +2 -0
  332. package/dist/modules/cart/module.d.ts +14 -0
  333. package/dist/modules/cart/module.d.ts.map +1 -0
  334. package/dist/modules/cart/module.js +17 -0
  335. package/dist/modules/cart/repository/index.d.ts +45 -0
  336. package/dist/modules/cart/repository/index.d.ts.map +1 -0
  337. package/dist/modules/cart/repository/index.js +158 -0
  338. package/dist/modules/cart/schema.d.ts +359 -0
  339. package/dist/modules/cart/schema.d.ts.map +1 -0
  340. package/dist/modules/cart/schema.js +40 -0
  341. package/dist/modules/cart/schemas.d.ts +29 -0
  342. package/dist/modules/cart/schemas.d.ts.map +1 -0
  343. package/dist/modules/cart/schemas.js +14 -0
  344. package/dist/modules/cart/service.d.ts +87 -0
  345. package/dist/modules/cart/service.d.ts.map +1 -0
  346. package/dist/modules/cart/service.js +454 -0
  347. package/dist/modules/catalog/brand-service.d.ts +18 -0
  348. package/dist/modules/catalog/brand-service.d.ts.map +1 -0
  349. package/dist/modules/catalog/brand-service.js +126 -0
  350. package/dist/modules/catalog/category-service.d.ts +17 -0
  351. package/dist/modules/catalog/category-service.d.ts.map +1 -0
  352. package/dist/modules/catalog/category-service.js +128 -0
  353. package/dist/modules/catalog/entity-service.d.ts +30 -0
  354. package/dist/modules/catalog/entity-service.d.ts.map +1 -0
  355. package/dist/modules/catalog/entity-service.js +481 -0
  356. package/dist/modules/catalog/module.d.ts +21 -0
  357. package/dist/modules/catalog/module.d.ts.map +1 -0
  358. package/dist/modules/catalog/module.js +28 -0
  359. package/dist/modules/catalog/repository/index.d.ts +106 -0
  360. package/dist/modules/catalog/repository/index.d.ts.map +1 -0
  361. package/dist/modules/catalog/repository/index.js +459 -0
  362. package/dist/modules/catalog/schema.d.ts +1193 -0
  363. package/dist/modules/catalog/schema.d.ts.map +1 -0
  364. package/dist/modules/catalog/schema.js +149 -0
  365. package/dist/modules/catalog/schemas.d.ts +81 -0
  366. package/dist/modules/catalog/schemas.d.ts.map +1 -0
  367. package/dist/modules/catalog/schemas.js +62 -0
  368. package/dist/modules/catalog/service.d.ts +167 -0
  369. package/dist/modules/catalog/service.d.ts.map +1 -0
  370. package/dist/modules/catalog/service.js +96 -0
  371. package/dist/modules/customers/index.d.ts +2 -0
  372. package/dist/modules/customers/index.d.ts.map +1 -0
  373. package/dist/modules/customers/index.js +1 -0
  374. package/dist/modules/customers/module.d.ts +563 -0
  375. package/dist/modules/customers/module.d.ts.map +1 -0
  376. package/dist/modules/customers/module.js +19 -0
  377. package/dist/modules/customers/repository/index.d.ts +47 -0
  378. package/dist/modules/customers/repository/index.d.ts.map +1 -0
  379. package/dist/modules/customers/repository/index.js +206 -0
  380. package/dist/modules/customers/schema.d.ts +560 -0
  381. package/dist/modules/customers/schema.d.ts.map +1 -0
  382. package/dist/modules/customers/schema.js +60 -0
  383. package/dist/modules/customers/service.d.ts +32 -0
  384. package/dist/modules/customers/service.d.ts.map +1 -0
  385. package/dist/modules/customers/service.js +132 -0
  386. package/dist/modules/fulfillment/module.d.ts +13 -0
  387. package/dist/modules/fulfillment/module.d.ts.map +1 -0
  388. package/dist/modules/fulfillment/module.js +22 -0
  389. package/dist/modules/fulfillment/repository/index.d.ts +63 -0
  390. package/dist/modules/fulfillment/repository/index.d.ts.map +1 -0
  391. package/dist/modules/fulfillment/repository/index.js +268 -0
  392. package/dist/modules/fulfillment/schema.d.ts +655 -0
  393. package/dist/modules/fulfillment/schema.d.ts.map +1 -0
  394. package/dist/modules/fulfillment/schema.js +83 -0
  395. package/dist/modules/fulfillment/service.d.ts +63 -0
  396. package/dist/modules/fulfillment/service.d.ts.map +1 -0
  397. package/dist/modules/fulfillment/service.js +351 -0
  398. package/dist/modules/fulfillment/types.d.ts +44 -0
  399. package/dist/modules/fulfillment/types.d.ts.map +1 -0
  400. package/dist/modules/fulfillment/types.js +1 -0
  401. package/dist/modules/inventory/module.d.ts +13 -0
  402. package/dist/modules/inventory/module.d.ts.map +1 -0
  403. package/dist/modules/inventory/module.js +20 -0
  404. package/dist/modules/inventory/repository/index.d.ts +96 -0
  405. package/dist/modules/inventory/repository/index.d.ts.map +1 -0
  406. package/dist/modules/inventory/repository/index.js +361 -0
  407. package/dist/modules/inventory/schema.d.ts +604 -0
  408. package/dist/modules/inventory/schema.d.ts.map +1 -0
  409. package/dist/modules/inventory/schema.js +78 -0
  410. package/dist/modules/inventory/schemas.d.ts +31 -0
  411. package/dist/modules/inventory/schemas.d.ts.map +1 -0
  412. package/dist/modules/inventory/schemas.js +28 -0
  413. package/dist/modules/inventory/service.d.ts +70 -0
  414. package/dist/modules/inventory/service.d.ts.map +1 -0
  415. package/dist/modules/inventory/service.js +284 -0
  416. package/dist/modules/media/adapter.d.ts +16 -0
  417. package/dist/modules/media/adapter.d.ts.map +1 -0
  418. package/dist/modules/media/adapter.js +1 -0
  419. package/dist/modules/media/index.d.ts +2 -0
  420. package/dist/modules/media/index.d.ts.map +1 -0
  421. package/dist/modules/media/index.js +1 -0
  422. package/dist/modules/media/module.d.ts +292 -0
  423. package/dist/modules/media/module.d.ts.map +1 -0
  424. package/dist/modules/media/module.js +22 -0
  425. package/dist/modules/media/repository/index.d.ts +35 -0
  426. package/dist/modules/media/repository/index.d.ts.map +1 -0
  427. package/dist/modules/media/repository/index.js +176 -0
  428. package/dist/modules/media/schema.d.ts +289 -0
  429. package/dist/modules/media/schema.d.ts.map +1 -0
  430. package/dist/modules/media/schema.js +35 -0
  431. package/dist/modules/media/service.d.ts +45 -0
  432. package/dist/modules/media/service.d.ts.map +1 -0
  433. package/dist/modules/media/service.js +149 -0
  434. package/dist/modules/orders/module.d.ts +25 -0
  435. package/dist/modules/orders/module.d.ts.map +1 -0
  436. package/dist/modules/orders/module.js +32 -0
  437. package/dist/modules/orders/repository/index.d.ts +48 -0
  438. package/dist/modules/orders/repository/index.d.ts.map +1 -0
  439. package/dist/modules/orders/repository/index.js +204 -0
  440. package/dist/modules/orders/schema.d.ts +689 -0
  441. package/dist/modules/orders/schema.d.ts.map +1 -0
  442. package/dist/modules/orders/schema.js +64 -0
  443. package/dist/modules/orders/sequences.d.ts +2 -0
  444. package/dist/modules/orders/sequences.d.ts.map +1 -0
  445. package/dist/modules/orders/sequences.js +5 -0
  446. package/dist/modules/orders/service.d.ts +81 -0
  447. package/dist/modules/orders/service.d.ts.map +1 -0
  448. package/dist/modules/orders/service.js +325 -0
  449. package/dist/modules/orders/stale-order-cleanup.d.ts +27 -0
  450. package/dist/modules/orders/stale-order-cleanup.d.ts.map +1 -0
  451. package/dist/modules/orders/stale-order-cleanup.js +55 -0
  452. package/dist/modules/organization/index.d.ts +2 -0
  453. package/dist/modules/organization/index.d.ts.map +1 -0
  454. package/dist/modules/organization/index.js +1 -0
  455. package/dist/modules/organization/module.d.ts +205 -0
  456. package/dist/modules/organization/module.d.ts.map +1 -0
  457. package/dist/modules/organization/module.js +8 -0
  458. package/dist/modules/organization/service.d.ts +53 -0
  459. package/dist/modules/organization/service.d.ts.map +1 -0
  460. package/dist/modules/organization/service.js +151 -0
  461. package/dist/modules/payments/adapter.d.ts +40 -0
  462. package/dist/modules/payments/adapter.d.ts.map +1 -0
  463. package/dist/modules/payments/adapter.js +1 -0
  464. package/dist/modules/payments/module.d.ts +3 -0
  465. package/dist/modules/payments/module.d.ts.map +1 -0
  466. package/dist/modules/payments/module.js +7 -0
  467. package/dist/modules/payments/repository/index.d.ts +5 -0
  468. package/dist/modules/payments/repository/index.d.ts.map +1 -0
  469. package/dist/modules/payments/repository/index.js +1 -0
  470. package/dist/modules/payments/service.d.ts +23 -0
  471. package/dist/modules/payments/service.d.ts.map +1 -0
  472. package/dist/modules/payments/service.js +72 -0
  473. package/dist/modules/pricing/index.d.ts +2 -0
  474. package/dist/modules/pricing/index.d.ts.map +1 -0
  475. package/dist/modules/pricing/index.js +1 -0
  476. package/dist/modules/pricing/module.d.ts +14 -0
  477. package/dist/modules/pricing/module.d.ts.map +1 -0
  478. package/dist/modules/pricing/module.js +16 -0
  479. package/dist/modules/pricing/repository/index.d.ts +34 -0
  480. package/dist/modules/pricing/repository/index.d.ts.map +1 -0
  481. package/dist/modules/pricing/repository/index.js +179 -0
  482. package/dist/modules/pricing/schema.d.ts +565 -0
  483. package/dist/modules/pricing/schema.d.ts.map +1 -0
  484. package/dist/modules/pricing/schema.js +57 -0
  485. package/dist/modules/pricing/schemas.d.ts +37 -0
  486. package/dist/modules/pricing/schemas.d.ts.map +1 -0
  487. package/dist/modules/pricing/schemas.js +30 -0
  488. package/dist/modules/pricing/service.d.ts +67 -0
  489. package/dist/modules/pricing/service.d.ts.map +1 -0
  490. package/dist/modules/pricing/service.js +329 -0
  491. package/dist/modules/promotions/module.d.ts +14 -0
  492. package/dist/modules/promotions/module.d.ts.map +1 -0
  493. package/dist/modules/promotions/module.js +18 -0
  494. package/dist/modules/promotions/repository/index.d.ts +41 -0
  495. package/dist/modules/promotions/repository/index.d.ts.map +1 -0
  496. package/dist/modules/promotions/repository/index.js +204 -0
  497. package/dist/modules/promotions/schema.d.ts +427 -0
  498. package/dist/modules/promotions/schema.d.ts.map +1 -0
  499. package/dist/modules/promotions/schema.js +52 -0
  500. package/dist/modules/promotions/schemas.d.ts +33 -0
  501. package/dist/modules/promotions/schemas.d.ts.map +1 -0
  502. package/dist/modules/promotions/schemas.js +32 -0
  503. package/dist/modules/promotions/service.d.ts +90 -0
  504. package/dist/modules/promotions/service.d.ts.map +1 -0
  505. package/dist/modules/promotions/service.js +387 -0
  506. package/dist/modules/search/adapter.d.ts +51 -0
  507. package/dist/modules/search/adapter.d.ts.map +1 -0
  508. package/dist/modules/search/adapter.js +1 -0
  509. package/dist/modules/search/hooks.d.ts +8 -0
  510. package/dist/modules/search/hooks.d.ts.map +1 -0
  511. package/dist/modules/search/hooks.js +6 -0
  512. package/dist/modules/search/module.d.ts +8 -0
  513. package/dist/modules/search/module.d.ts.map +1 -0
  514. package/dist/modules/search/module.js +17 -0
  515. package/dist/modules/search/repository/index.d.ts +5 -0
  516. package/dist/modules/search/repository/index.d.ts.map +1 -0
  517. package/dist/modules/search/repository/index.js +1 -0
  518. package/dist/modules/search/service.d.ts +24 -0
  519. package/dist/modules/search/service.d.ts.map +1 -0
  520. package/dist/modules/search/service.js +243 -0
  521. package/dist/modules/shipping/calculator.d.ts +42 -0
  522. package/dist/modules/shipping/calculator.d.ts.map +1 -0
  523. package/dist/modules/shipping/calculator.js +91 -0
  524. package/dist/modules/shipping/module.d.ts +8 -0
  525. package/dist/modules/shipping/module.d.ts.map +1 -0
  526. package/dist/modules/shipping/module.js +11 -0
  527. package/dist/modules/shipping/repository/index.d.ts +5 -0
  528. package/dist/modules/shipping/repository/index.d.ts.map +1 -0
  529. package/dist/modules/shipping/repository/index.js +1 -0
  530. package/dist/modules/shipping/service.d.ts +28 -0
  531. package/dist/modules/shipping/service.d.ts.map +1 -0
  532. package/dist/modules/shipping/service.js +20 -0
  533. package/dist/modules/tax/adapter.d.ts +58 -0
  534. package/dist/modules/tax/adapter.d.ts.map +1 -0
  535. package/dist/modules/tax/adapter.js +1 -0
  536. package/dist/modules/tax/module.d.ts +3 -0
  537. package/dist/modules/tax/module.d.ts.map +1 -0
  538. package/dist/modules/tax/module.js +9 -0
  539. package/dist/modules/tax/repository/index.d.ts +5 -0
  540. package/dist/modules/tax/repository/index.d.ts.map +1 -0
  541. package/dist/modules/tax/repository/index.js +1 -0
  542. package/dist/modules/tax/service.d.ts +19 -0
  543. package/dist/modules/tax/service.d.ts.map +1 -0
  544. package/dist/modules/tax/service.js +34 -0
  545. package/dist/modules/webhooks/hook.d.ts +13 -0
  546. package/dist/modules/webhooks/hook.d.ts.map +1 -0
  547. package/dist/modules/webhooks/hook.js +35 -0
  548. package/dist/modules/webhooks/index.d.ts +2 -0
  549. package/dist/modules/webhooks/index.d.ts.map +1 -0
  550. package/dist/modules/webhooks/index.js +1 -0
  551. package/dist/modules/webhooks/module.d.ts +403 -0
  552. package/dist/modules/webhooks/module.d.ts.map +1 -0
  553. package/dist/modules/webhooks/module.js +15 -0
  554. package/dist/modules/webhooks/repository/index.d.ts +40 -0
  555. package/dist/modules/webhooks/repository/index.d.ts.map +1 -0
  556. package/dist/modules/webhooks/repository/index.js +183 -0
  557. package/dist/modules/webhooks/schema.d.ts +404 -0
  558. package/dist/modules/webhooks/schema.d.ts.map +1 -0
  559. package/dist/modules/webhooks/schema.js +40 -0
  560. package/dist/modules/webhooks/service.d.ts +23 -0
  561. package/dist/modules/webhooks/service.d.ts.map +1 -0
  562. package/dist/modules/webhooks/service.js +94 -0
  563. package/dist/modules/webhooks/signing.d.ts +2 -0
  564. package/dist/modules/webhooks/signing.d.ts.map +1 -0
  565. package/dist/modules/webhooks/signing.js +5 -0
  566. package/dist/modules/webhooks/ssrf-guard.d.ts +19 -0
  567. package/dist/modules/webhooks/ssrf-guard.d.ts.map +1 -0
  568. package/dist/modules/webhooks/ssrf-guard.js +79 -0
  569. package/dist/modules/webhooks/tasks.d.ts +16 -0
  570. package/dist/modules/webhooks/tasks.d.ts.map +1 -0
  571. package/dist/modules/webhooks/tasks.js +42 -0
  572. package/dist/modules/webhooks/worker.d.ts +28 -0
  573. package/dist/modules/webhooks/worker.d.ts.map +1 -0
  574. package/dist/modules/webhooks/worker.js +133 -0
  575. package/dist/runtime/commerce.d.ts +110 -0
  576. package/dist/runtime/commerce.d.ts.map +1 -0
  577. package/dist/runtime/commerce.js +48 -0
  578. package/dist/runtime/kernel-modules.d.ts +1714 -0
  579. package/dist/runtime/kernel-modules.d.ts.map +1 -0
  580. package/dist/runtime/kernel-modules.js +62 -0
  581. package/dist/runtime/kernel-register-hooks.d.ts +4 -0
  582. package/dist/runtime/kernel-register-hooks.d.ts.map +1 -0
  583. package/dist/runtime/kernel-register-hooks.js +46 -0
  584. package/dist/runtime/kernel-types.d.ts +65 -0
  585. package/dist/runtime/kernel-types.d.ts.map +1 -0
  586. package/dist/runtime/kernel-types.js +36 -0
  587. package/dist/runtime/kernel.d.ts +6 -0
  588. package/dist/runtime/kernel.d.ts.map +1 -0
  589. package/dist/runtime/kernel.js +113 -0
  590. package/dist/runtime/logger.d.ts +11 -0
  591. package/dist/runtime/logger.d.ts.map +1 -0
  592. package/dist/runtime/logger.js +32 -0
  593. package/dist/runtime/server.d.ts +37 -0
  594. package/dist/runtime/server.d.ts.map +1 -0
  595. package/dist/runtime/server.js +398 -0
  596. package/dist/runtime/shutdown.d.ts +15 -0
  597. package/dist/runtime/shutdown.d.ts.map +1 -0
  598. package/dist/runtime/shutdown.js +34 -0
  599. package/dist/runtime/url-alias-rewrite.d.ts +3 -0
  600. package/dist/runtime/url-alias-rewrite.d.ts.map +1 -0
  601. package/dist/runtime/url-alias-rewrite.js +33 -0
  602. package/dist/test-utils/create-pglite-adapter.d.ts +32 -0
  603. package/dist/test-utils/create-pglite-adapter.d.ts.map +1 -0
  604. package/dist/test-utils/create-pglite-adapter.js +107 -0
  605. package/dist/test-utils/create-plugin-test-app.d.ts +50 -0
  606. package/dist/test-utils/create-plugin-test-app.d.ts.map +1 -0
  607. package/dist/test-utils/create-plugin-test-app.js +90 -0
  608. package/dist/test-utils/create-repository-test-harness.d.ts +8 -0
  609. package/dist/test-utils/create-repository-test-harness.d.ts.map +1 -0
  610. package/dist/test-utils/create-repository-test-harness.js +7 -0
  611. package/dist/test-utils/create-test-config.d.ts +18 -0
  612. package/dist/test-utils/create-test-config.d.ts.map +1 -0
  613. package/dist/test-utils/create-test-config.js +172 -0
  614. package/dist/test-utils/create-test-kernel.d.ts +3 -0
  615. package/dist/test-utils/create-test-kernel.d.ts.map +1 -0
  616. package/dist/test-utils/create-test-kernel.js +5 -0
  617. package/dist/test-utils/create-test-plugin-context.d.ts +38 -0
  618. package/dist/test-utils/create-test-plugin-context.d.ts.map +1 -0
  619. package/dist/test-utils/create-test-plugin-context.js +39 -0
  620. package/dist/test-utils/rest-api-test-utils.d.ts +64 -0
  621. package/dist/test-utils/rest-api-test-utils.d.ts.map +1 -0
  622. package/dist/test-utils/rest-api-test-utils.js +208 -0
  623. package/dist/test-utils/test-actors.d.ts +21 -0
  624. package/dist/test-utils/test-actors.d.ts.map +1 -0
  625. package/dist/test-utils/test-actors.js +64 -0
  626. package/dist/test-utils/typed-hooks.d.ts +44 -0
  627. package/dist/test-utils/typed-hooks.d.ts.map +1 -0
  628. package/dist/test-utils/typed-hooks.js +36 -0
  629. package/dist/testing.d.ts +15 -0
  630. package/dist/testing.d.ts.map +1 -0
  631. package/dist/testing.js +13 -0
  632. package/dist/types/commerce-types.d.ts +34 -0
  633. package/dist/types/commerce-types.d.ts.map +1 -0
  634. package/dist/types/commerce-types.js +1 -0
  635. package/dist/utils/agent-prompt.d.ts +2 -0
  636. package/dist/utils/agent-prompt.d.ts.map +1 -0
  637. package/dist/utils/agent-prompt.js +12 -0
  638. package/dist/utils/id.d.ts +2 -0
  639. package/dist/utils/id.d.ts.map +1 -0
  640. package/dist/utils/id.js +3 -0
  641. package/dist/utils/logger.d.ts +3 -0
  642. package/dist/utils/logger.d.ts.map +1 -0
  643. package/dist/utils/logger.js +16 -0
  644. package/dist/utils/pagination.d.ts +11 -0
  645. package/dist/utils/pagination.d.ts.map +1 -0
  646. package/dist/utils/pagination.js +15 -0
  647. package/package.json +89 -0
  648. package/src/adapters/console-email.ts +43 -0
  649. package/src/auth/access.ts +187 -0
  650. package/src/auth/auth-schema.ts +139 -0
  651. package/src/auth/middleware.ts +257 -0
  652. package/src/auth/org.ts +83 -0
  653. package/src/auth/permissions.ts +28 -0
  654. package/src/auth/setup.ts +187 -0
  655. package/src/auth/strict-org-resolution.ts +14 -0
  656. package/src/auth/system-actor.ts +19 -0
  657. package/src/auth/types.ts +10 -0
  658. package/src/config/defaults.ts +85 -0
  659. package/src/config/define-config.ts +81 -0
  660. package/src/config/types.ts +417 -0
  661. package/src/drizzle.ts +95 -0
  662. package/src/generated/plugin-capabilities.d.ts +19 -0
  663. package/src/generated/plugin-manifest.ts +22 -0
  664. package/src/generated/plugin-repositories.d.ts +19 -0
  665. package/src/hooks/checkout-completion.ts +285 -0
  666. package/src/hooks/checkout.ts +695 -0
  667. package/src/hooks/order-emails.ts +62 -0
  668. package/src/index.ts +213 -0
  669. package/src/interfaces/rest/customer-portal.ts +299 -0
  670. package/src/interfaces/rest/index.ts +105 -0
  671. package/src/interfaces/rest/router.ts +333 -0
  672. package/src/interfaces/rest/routes/admin/compensation-failures.ts +160 -0
  673. package/src/interfaces/rest/routes/admin/permissions.ts +37 -0
  674. package/src/interfaces/rest/routes/admin-jobs.ts +58 -0
  675. package/src/interfaces/rest/routes/audit.ts +50 -0
  676. package/src/interfaces/rest/routes/carts.ts +100 -0
  677. package/src/interfaces/rest/routes/catalog.ts +508 -0
  678. package/src/interfaces/rest/routes/checkout.ts +289 -0
  679. package/src/interfaces/rest/routes/customers.ts +100 -0
  680. package/src/interfaces/rest/routes/inventory.ts +93 -0
  681. package/src/interfaces/rest/routes/media.ts +87 -0
  682. package/src/interfaces/rest/routes/orders.ts +78 -0
  683. package/src/interfaces/rest/routes/payments.ts +60 -0
  684. package/src/interfaces/rest/routes/pricing.ts +78 -0
  685. package/src/interfaces/rest/routes/promotions.ts +96 -0
  686. package/src/interfaces/rest/routes/search.ts +81 -0
  687. package/src/interfaces/rest/routes/webhooks.ts +49 -0
  688. package/src/interfaces/rest/schemas/admin-jobs.ts +40 -0
  689. package/src/interfaces/rest/schemas/admin-permissions.ts +27 -0
  690. package/src/interfaces/rest/schemas/audit.ts +46 -0
  691. package/src/interfaces/rest/schemas/carts.ts +125 -0
  692. package/src/interfaces/rest/schemas/catalog.ts +450 -0
  693. package/src/interfaces/rest/schemas/checkout.ts +66 -0
  694. package/src/interfaces/rest/schemas/compensation-failures.ts +89 -0
  695. package/src/interfaces/rest/schemas/customer-portal.ts +195 -0
  696. package/src/interfaces/rest/schemas/customers.ts +155 -0
  697. package/src/interfaces/rest/schemas/inventory.ts +159 -0
  698. package/src/interfaces/rest/schemas/media.ts +75 -0
  699. package/src/interfaces/rest/schemas/orders.ts +104 -0
  700. package/src/interfaces/rest/schemas/pricing.ts +80 -0
  701. package/src/interfaces/rest/schemas/promotions.ts +116 -0
  702. package/src/interfaces/rest/schemas/responses.ts +96 -0
  703. package/src/interfaces/rest/schemas/search.ts +58 -0
  704. package/src/interfaces/rest/schemas/shared.ts +62 -0
  705. package/src/interfaces/rest/schemas/webhooks.ts +68 -0
  706. package/src/interfaces/rest/utils.ts +104 -0
  707. package/src/interfaces/rest/webhook-router.ts +50 -0
  708. package/src/kernel/compensation/executor.ts +123 -0
  709. package/src/kernel/compensation/repository.ts +157 -0
  710. package/src/kernel/compensation/schema.ts +45 -0
  711. package/src/kernel/compensation/types.ts +30 -0
  712. package/src/kernel/database/adapter.ts +21 -0
  713. package/src/kernel/database/drizzle-db.ts +56 -0
  714. package/src/kernel/database/migrate.ts +76 -0
  715. package/src/kernel/database/plugin-db-context.ts +14 -0
  716. package/src/kernel/database/plugin-types.ts +34 -0
  717. package/src/kernel/database/schema.ts +53 -0
  718. package/src/kernel/database/scoped-db.ts +112 -0
  719. package/src/kernel/database/tx-context.ts +46 -0
  720. package/src/kernel/error-mapper.ts +118 -0
  721. package/src/kernel/errors.ts +100 -0
  722. package/src/kernel/factory/repository-factory.ts +244 -0
  723. package/src/kernel/hooks/create-context.ts +52 -0
  724. package/src/kernel/hooks/executor.ts +95 -0
  725. package/src/kernel/hooks/registry.ts +74 -0
  726. package/src/kernel/hooks/types.ts +55 -0
  727. package/src/kernel/http-error.ts +44 -0
  728. package/src/kernel/jobs/adapter.ts +36 -0
  729. package/src/kernel/jobs/builtin-job-tasks.ts +17 -0
  730. package/src/kernel/jobs/drizzle-adapter.ts +65 -0
  731. package/src/kernel/jobs/reaper.ts +95 -0
  732. package/src/kernel/jobs/runner.ts +157 -0
  733. package/src/kernel/jobs/schema.ts +46 -0
  734. package/src/kernel/jobs/types.ts +42 -0
  735. package/src/kernel/local-api.ts +188 -0
  736. package/src/kernel/module/define.ts +36 -0
  737. package/src/kernel/module/index.ts +3 -0
  738. package/src/kernel/module/topo-sort.ts +99 -0
  739. package/src/kernel/plugin/manifest.ts +310 -0
  740. package/src/kernel/query/executor.ts +184 -0
  741. package/src/kernel/query/registry.ts +46 -0
  742. package/src/kernel/result.ts +33 -0
  743. package/src/kernel/service-registry.ts +76 -0
  744. package/src/kernel/service-timing.ts +89 -0
  745. package/src/kernel/state-machine/machine.ts +101 -0
  746. package/src/modules/analytics/drizzle-adapter.ts +426 -0
  747. package/src/modules/analytics/hooks.ts +11 -0
  748. package/src/modules/analytics/models.ts +125 -0
  749. package/src/modules/analytics/module.ts +25 -0
  750. package/src/modules/analytics/repository/index.ts +6 -0
  751. package/src/modules/analytics/service.ts +245 -0
  752. package/src/modules/analytics/types.ts +180 -0
  753. package/src/modules/audit/hooks.ts +78 -0
  754. package/src/modules/audit/index.ts +1 -0
  755. package/src/modules/audit/module.ts +11 -0
  756. package/src/modules/audit/schema.ts +33 -0
  757. package/src/modules/audit/service.ts +151 -0
  758. package/src/modules/cart/access.ts +27 -0
  759. package/src/modules/cart/matcher.ts +26 -0
  760. package/src/modules/cart/module.ts +32 -0
  761. package/src/modules/cart/repository/index.ts +234 -0
  762. package/src/modules/cart/schema.ts +42 -0
  763. package/src/modules/cart/schemas.ts +38 -0
  764. package/src/modules/cart/service.ts +710 -0
  765. package/src/modules/catalog/brand-service.ts +101 -0
  766. package/src/modules/catalog/category-service.ts +103 -0
  767. package/src/modules/catalog/entity-service.ts +469 -0
  768. package/src/modules/catalog/module.ts +65 -0
  769. package/src/modules/catalog/repository/index.ts +777 -0
  770. package/src/modules/catalog/schema.ts +203 -0
  771. package/src/modules/catalog/schemas.ts +104 -0
  772. package/src/modules/catalog/service.ts +392 -0
  773. package/src/modules/customers/index.ts +1 -0
  774. package/src/modules/customers/module.ts +27 -0
  775. package/src/modules/customers/repository/index.ts +327 -0
  776. package/src/modules/customers/schema.ts +64 -0
  777. package/src/modules/customers/service.ts +276 -0
  778. package/src/modules/fulfillment/module.ts +42 -0
  779. package/src/modules/fulfillment/repository/index.ts +426 -0
  780. package/src/modules/fulfillment/schema.ts +101 -0
  781. package/src/modules/fulfillment/service.ts +581 -0
  782. package/src/modules/fulfillment/types.ts +59 -0
  783. package/src/modules/inventory/module.ts +37 -0
  784. package/src/modules/inventory/repository/index.ts +677 -0
  785. package/src/modules/inventory/schema.ts +107 -0
  786. package/src/modules/inventory/schemas.ts +38 -0
  787. package/src/modules/inventory/service.ts +567 -0
  788. package/src/modules/media/adapter.ts +17 -0
  789. package/src/modules/media/index.ts +1 -0
  790. package/src/modules/media/module.ts +25 -0
  791. package/src/modules/media/repository/index.ts +274 -0
  792. package/src/modules/media/schema.ts +41 -0
  793. package/src/modules/media/service.ts +237 -0
  794. package/src/modules/orders/module.ts +66 -0
  795. package/src/modules/orders/repository/index.ts +290 -0
  796. package/src/modules/orders/schema.ts +67 -0
  797. package/src/modules/orders/sequences.ts +6 -0
  798. package/src/modules/orders/service.ts +639 -0
  799. package/src/modules/orders/stale-order-cleanup.ts +76 -0
  800. package/src/modules/organization/index.ts +1 -0
  801. package/src/modules/organization/module.ts +11 -0
  802. package/src/modules/organization/service.ts +191 -0
  803. package/src/modules/payments/adapter.ts +45 -0
  804. package/src/modules/payments/module.ts +14 -0
  805. package/src/modules/payments/repository/index.ts +6 -0
  806. package/src/modules/payments/service.ts +107 -0
  807. package/src/modules/pricing/index.ts +1 -0
  808. package/src/modules/pricing/module.ts +30 -0
  809. package/src/modules/pricing/repository/index.ts +305 -0
  810. package/src/modules/pricing/schema.ts +71 -0
  811. package/src/modules/pricing/schemas.ts +38 -0
  812. package/src/modules/pricing/service.ts +557 -0
  813. package/src/modules/promotions/module.ts +32 -0
  814. package/src/modules/promotions/repository/index.ts +325 -0
  815. package/src/modules/promotions/schema.ts +62 -0
  816. package/src/modules/promotions/schemas.ts +38 -0
  817. package/src/modules/promotions/service.ts +674 -0
  818. package/src/modules/search/adapter.ts +57 -0
  819. package/src/modules/search/hooks.ts +12 -0
  820. package/src/modules/search/module.ts +26 -0
  821. package/src/modules/search/repository/index.ts +6 -0
  822. package/src/modules/search/service.ts +341 -0
  823. package/src/modules/shipping/calculator.ts +188 -0
  824. package/src/modules/shipping/module.ts +23 -0
  825. package/src/modules/shipping/repository/index.ts +6 -0
  826. package/src/modules/shipping/service.ts +51 -0
  827. package/src/modules/tax/adapter.ts +60 -0
  828. package/src/modules/tax/module.ts +16 -0
  829. package/src/modules/tax/repository/index.ts +6 -0
  830. package/src/modules/tax/service.ts +53 -0
  831. package/src/modules/webhooks/hook.ts +41 -0
  832. package/src/modules/webhooks/index.ts +1 -0
  833. package/src/modules/webhooks/module.ts +22 -0
  834. package/src/modules/webhooks/repository/index.ts +304 -0
  835. package/src/modules/webhooks/schema.ts +56 -0
  836. package/src/modules/webhooks/service.ts +127 -0
  837. package/src/modules/webhooks/signing.ts +6 -0
  838. package/src/modules/webhooks/ssrf-guard.ts +71 -0
  839. package/src/modules/webhooks/tasks.ts +60 -0
  840. package/src/modules/webhooks/worker.ts +171 -0
  841. package/src/runtime/commerce.ts +158 -0
  842. package/src/runtime/kernel-modules.ts +66 -0
  843. package/src/runtime/kernel-register-hooks.ts +63 -0
  844. package/src/runtime/kernel-types.ts +109 -0
  845. package/src/runtime/kernel.ts +159 -0
  846. package/src/runtime/logger.ts +36 -0
  847. package/src/runtime/server.ts +470 -0
  848. package/src/runtime/shutdown.ts +43 -0
  849. package/src/runtime/url-alias-rewrite.ts +40 -0
  850. package/src/test-utils/create-pglite-adapter.ts +129 -0
  851. package/src/test-utils/create-plugin-test-app.ts +151 -0
  852. package/src/test-utils/create-repository-test-harness.ts +16 -0
  853. package/src/test-utils/create-test-config.ts +188 -0
  854. package/src/test-utils/create-test-kernel.ts +7 -0
  855. package/src/test-utils/create-test-plugin-context.ts +66 -0
  856. package/src/test-utils/rest-api-test-utils.ts +266 -0
  857. package/src/test-utils/test-actors.ts +70 -0
  858. package/src/test-utils/typed-hooks.ts +55 -0
  859. package/src/testing.ts +21 -0
  860. package/src/types/commerce-types.ts +34 -0
  861. package/src/utils/agent-prompt.ts +12 -0
  862. package/src/utils/id.ts +3 -0
  863. package/src/utils/logger.ts +18 -0
  864. package/src/utils/pagination.ts +22 -0
@@ -0,0 +1,104 @@
1
+ import type { Actor } from "../auth/types.js";
2
+ import type { Kernel } from "../runtime/kernel.js";
3
+ /**
4
+ * Proxy-based Local API — the Payload-style programmatic interface.
5
+ *
6
+ * Exposes services registered on `kernel.services` without hardcoding method
7
+ * signatures. Uses a Proxy to intercept property access and wrap each service
8
+ * method to auto-inject `actor` and `txCtx`.
9
+ *
10
+ * ## Usage in Next.js / TanStack Start / SvelteKit:
11
+ *
12
+ * ```typescript
13
+ * import { createCommerce } from "@porulle/core";
14
+ * import config from "./commerce.config.js";
15
+ *
16
+ * const commerce = await createCommerce(config);
17
+ *
18
+ * // Server action / loader — no HTTP round-trip
19
+ * const products = await commerce.api.catalog.list({ limit: 10 });
20
+ * const order = await commerce.api.orders.getById("order-123");
21
+ * ```
22
+ *
23
+ * Plugin services are NOT exposed on `commerce.api`. Plugins instantiate their
24
+ * own services inside `routes(ctx)` via `ctx.services`. A
25
+ * future enhancement (backlog B-03) will introduce plugin service registration
26
+ * into the typed `kernel.services` map.
27
+ *
28
+ * ## Usage from a hook:
29
+ *
30
+ * ```typescript
31
+ * const api = createLocalAPI(kernel, { actor, tx });
32
+ * const product = await api.catalog.getById("prod-123");
33
+ * ```
34
+ *
35
+ * ## How it works:
36
+ *
37
+ * 1. `api.catalog` → Proxy intercepts, finds `kernel.services.catalog`
38
+ * 2. `api.catalog.getById(id)` → Proxy intercepts method call
39
+ * 3. Wraps the call: `kernel.services.catalog.getById(id, actor, txCtx)`
40
+ * 4. Returns the result directly — no HTTP, no serialization
41
+ *
42
+ * The Proxy auto-appends `actor` and `txCtx` to every method call.
43
+ * Service methods that accept `(actor, ctx)` as the last two params
44
+ * get them injected automatically. Methods that don't accept them
45
+ * still work — extra args are harmlessly ignored by JavaScript.
46
+ */
47
+ /** Options for creating a local API instance */
48
+ export interface LocalAPIOptions {
49
+ actor?: Actor | null;
50
+ tx?: unknown;
51
+ requestId?: string;
52
+ }
53
+ /**
54
+ * Maps a service type to strip actor/txCtx params from each method.
55
+ * Plugin authors get clean autocomplete: `api.catalog.create(input)`
56
+ * instead of `api.catalog.create(input, actor, txCtx)`.
57
+ */
58
+ type CleanService<T> = {
59
+ [K in keyof T]: T[K] extends (...args: infer _A) => infer R ? (...args: unknown[]) => R : T[K];
60
+ };
61
+ /** The full local API type — all kernel services with cleaned signatures */
62
+ export type CommerceLocalAPI<TServices extends Record<string, unknown> = Kernel["services"]> = {
63
+ [K in keyof TServices]: TServices[K] extends Record<string, unknown> ? CleanService<TServices[K]> : TServices[K];
64
+ };
65
+ /**
66
+ * Create a proxy-based local API over kernel services.
67
+ * Every service method gets `actor` and `txCtx` auto-injected.
68
+ */
69
+ export declare function createLocalAPI(kernel: Kernel, options?: LocalAPIOptions): CommerceLocalAPI;
70
+ /**
71
+ * @deprecated Use `createLocalAPI(kernel, { actor, tx })` instead.
72
+ * Kept for backward compatibility with existing hook code.
73
+ */
74
+ export declare class LocalAPI {
75
+ private _proxy;
76
+ constructor(ctx: {
77
+ actor: Actor | null;
78
+ tx: unknown;
79
+ requestId: string;
80
+ }, kernel: Kernel);
81
+ get orders(): import("../modules/orders/service.js").OrderService;
82
+ get catalog(): import("../modules/catalog/service.js").CatalogServiceImpl;
83
+ get cart(): import("../modules/cart/service.js").CartService;
84
+ get inventory(): import("../modules/inventory/service.js").InventoryService;
85
+ get customers(): import("../modules/customers/service.js").CustomerService;
86
+ get pricing(): import("../modules/pricing/service.js").PricingService;
87
+ get promotions(): import("../modules/promotions/service.js").PromotionService;
88
+ get media(): import("../modules/media/service.js").MediaService;
89
+ get shipping(): import("../modules/shipping/service.js").ShippingService;
90
+ get search(): import("../modules/search/service.js").SearchService;
91
+ get webhooks(): import("../modules/webhooks/service.js").WebhookService & {
92
+ enqueueDelivery(payload: import("../runtime/kernel-types.js").WebhookDeliveryPayload): Promise<void>;
93
+ };
94
+ get fulfillment(): import("../modules/fulfillment/service.js").FulfillmentService;
95
+ get payments(): import("../modules/payments/service.js").PaymentsService;
96
+ get analytics(): import("../modules/analytics/service.js").AnalyticsService;
97
+ get tax(): import("../modules/tax/service.js").TaxService;
98
+ get audit(): import("../index.js").AuditService;
99
+ get organization(): import("../index.js").OrganizationService;
100
+ /** Resolve a service by name from `kernel.services`. */
101
+ service(name: string): unknown;
102
+ }
103
+ export {};
104
+ //# sourceMappingURL=local-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-api.d.ts","sourceRoot":"","sources":["../../src/kernel/local-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAIH,gDAAgD;AAChD,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,KAAK,YAAY,CAAC,CAAC,IAAI;KACpB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC,GACvD,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,GACzB,CAAC,CAAC,CAAC,CAAC;CACT,CAAC;AAEF,4EAA4E;AAC5E,MAAM,MAAM,gBAAgB,CAC1B,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,IAC5D;KACD,CAAC,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChE,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAC1B,SAAS,CAAC,CAAC,CAAC;CACjB,CAAC;AAMF;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,eAAoB,GAC5B,gBAAgB,CAsDlB;AAID;;;GAGG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAmB;gBAG/B,GAAG,EAAE;QAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;QAAC,EAAE,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAC5D,MAAM,EAAE,MAAM;IAShB,IAAI,MAAM,wDAAiC;IAC3C,IAAI,OAAO,+DAAkC;IAC7C,IAAI,IAAI,qDAA+B;IACvC,IAAI,SAAS,+DAAoC;IACjD,IAAI,SAAS,8DAAoC;IACjD,IAAI,OAAO,2DAAkC;IAC7C,IAAI,UAAU,gEAAqC;IACnD,IAAI,KAAK,uDAAgC;IACzC,IAAI,QAAQ,6DAAmC;IAC/C,IAAI,MAAM,yDAAiC;IAC3C,IAAI,QAAQ;;MAAmC;IAC/C,IAAI,WAAW,mEAAsC;IACrD,IAAI,QAAQ,6DAAmC;IAC/C,IAAI,SAAS,+DAAoC;IACjD,IAAI,GAAG,mDAA8B;IACrC,IAAI,KAAK,uCAAgC;IACzC,IAAI,YAAY,8CAAuC;IAEvD,wDAAwD;IACxD,OAAO,CAAC,IAAI,EAAE,MAAM;CAGrB"}
@@ -0,0 +1,89 @@
1
+ // ─── Implementation ─────────────────────────────────────────────────────────
2
+ const SERVICE_METHOD_CACHE = new WeakMap();
3
+ /**
4
+ * Create a proxy-based local API over kernel services.
5
+ * Every service method gets `actor` and `txCtx` auto-injected.
6
+ */
7
+ export function createLocalAPI(kernel, options = {}) {
8
+ const actor = options.actor ?? null;
9
+ const txCtx = options.tx != null
10
+ ? {
11
+ tx: options.tx,
12
+ actor,
13
+ requestId: options.requestId ?? crypto.randomUUID(),
14
+ }
15
+ : undefined;
16
+ // Top-level proxy: intercept service access (e.g., api.catalog, api.giftCards)
17
+ // The Proxy transforms method signatures at runtime (auto-injecting actor/txCtx),
18
+ // so the cast from Kernel["services"] to CommerceLocalAPI is safe.
19
+ return new Proxy(kernel.services, {
20
+ get(target, serviceName) {
21
+ const service = target[serviceName];
22
+ // Non-object services (e.g., email config) — return as-is
23
+ if (service == null || typeof service !== "object") {
24
+ return service;
25
+ }
26
+ // Method-level proxy: intercept method calls on the service
27
+ return new Proxy(service, {
28
+ get(svcTarget, methodName) {
29
+ const method = svcTarget[methodName];
30
+ if (typeof method !== "function") {
31
+ return method;
32
+ }
33
+ // Check cache to avoid re-creating wrapper functions
34
+ let methodCache = SERVICE_METHOD_CACHE.get(svcTarget);
35
+ if (!methodCache) {
36
+ methodCache = new Map();
37
+ SERVICE_METHOD_CACHE.set(svcTarget, methodCache);
38
+ }
39
+ const cacheKey = `${methodName}:${actor?.userId ?? "null"}`;
40
+ let cached = methodCache.get(cacheKey);
41
+ if (cached)
42
+ return cached;
43
+ // Create wrapped method that auto-injects actor + txCtx
44
+ cached = (...args) => {
45
+ return method.call(svcTarget, ...args, actor, txCtx);
46
+ };
47
+ methodCache.set(cacheKey, cached);
48
+ return cached;
49
+ },
50
+ });
51
+ },
52
+ });
53
+ }
54
+ // ─── Legacy Class API (backward compat) ─────────────────────────────────────
55
+ /**
56
+ * @deprecated Use `createLocalAPI(kernel, { actor, tx })` instead.
57
+ * Kept for backward compatibility with existing hook code.
58
+ */
59
+ export class LocalAPI {
60
+ _proxy;
61
+ constructor(ctx, kernel) {
62
+ this._proxy = createLocalAPI(kernel, {
63
+ actor: ctx.actor,
64
+ tx: ctx.tx,
65
+ requestId: ctx.requestId,
66
+ });
67
+ }
68
+ get orders() { return this._proxy.orders; }
69
+ get catalog() { return this._proxy.catalog; }
70
+ get cart() { return this._proxy.cart; }
71
+ get inventory() { return this._proxy.inventory; }
72
+ get customers() { return this._proxy.customers; }
73
+ get pricing() { return this._proxy.pricing; }
74
+ get promotions() { return this._proxy.promotions; }
75
+ get media() { return this._proxy.media; }
76
+ get shipping() { return this._proxy.shipping; }
77
+ get search() { return this._proxy.search; }
78
+ get webhooks() { return this._proxy.webhooks; }
79
+ get fulfillment() { return this._proxy.fulfillment; }
80
+ get payments() { return this._proxy.payments; }
81
+ get analytics() { return this._proxy.analytics; }
82
+ get tax() { return this._proxy.tax; }
83
+ get audit() { return this._proxy.audit; }
84
+ get organization() { return this._proxy.organization; }
85
+ /** Resolve a service by name from `kernel.services`. */
86
+ service(name) {
87
+ return this._proxy[name];
88
+ }
89
+ }
@@ -0,0 +1,21 @@
1
+ import type { DatabaseAdapter } from "../database/adapter.js";
2
+ import type { HookRegistry } from "../hooks/registry.js";
3
+ import type { Logger } from "../hooks/types.js";
4
+ export interface ModuleDeps<TDeps extends Record<string, unknown> = Record<string, unknown>> {
5
+ db: DatabaseAdapter;
6
+ hooks: HookRegistry;
7
+ services: TDeps;
8
+ config: unknown;
9
+ logger: Logger;
10
+ }
11
+ export interface AppModule<TSchema = unknown, TService = unknown, TDeps extends Record<string, unknown> = Record<string, unknown>> {
12
+ id: string;
13
+ schema: () => TSchema;
14
+ dependencies?: ReadonlyArray<keyof TDeps & string>;
15
+ service: (deps: ModuleDeps<TDeps>) => TService;
16
+ }
17
+ export type ServiceMap<TModules extends Record<string, AppModule>> = {
18
+ [K in keyof TModules]: TModules[K] extends AppModule<infer _TSchema, infer TService, infer _TDeps> ? TService : never;
19
+ };
20
+ export declare function defineModule<TSchema, TService, TDeps extends Record<string, unknown> = Record<string, unknown>>(manifest: AppModule<TSchema, TService, TDeps>): AppModule<TSchema, TService, TDeps>;
21
+ //# sourceMappingURL=define.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../../src/kernel/module/define.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,WAAW,UAAU,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzF,EAAE,EAAE,eAAe,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS,CACxB,OAAO,GAAG,OAAO,EACjB,QAAQ,GAAG,OAAO,EAClB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE/D,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,aAAa,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC;IACnD,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC;CAChD;AAED,MAAM,MAAM,UAAU,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI;KAClE,CAAC,IAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,QAAQ,EAAE,MAAM,QAAQ,EAAE,MAAM,MAAM,CAAC,GAC9F,QAAQ,GACR,KAAK;CACV,CAAC;AAEF,wBAAgB,YAAY,CAC1B,OAAO,EACP,QAAQ,EACR,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/D,QAAQ,EAAE,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAEpF"}
@@ -0,0 +1,3 @@
1
+ export function defineModule(manifest) {
2
+ return manifest;
3
+ }
@@ -0,0 +1,4 @@
1
+ export type { AppModule, ModuleDeps, ServiceMap } from "./define.js";
2
+ export { defineModule } from "./define.js";
3
+ export { ModuleCycleError, topoSortModules } from "./topo-sort.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kernel/module/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { defineModule } from "./define.js";
2
+ export { ModuleCycleError, topoSortModules } from "./topo-sort.js";
@@ -0,0 +1,7 @@
1
+ import type { AppModule } from "./define.js";
2
+ export declare class ModuleCycleError extends Error {
3
+ readonly cycle: string[];
4
+ constructor(cycle: string[]);
5
+ }
6
+ export declare function topoSortModules(modules: Record<string, AppModule>): string[];
7
+ //# sourceMappingURL=topo-sort.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topo-sort.d.ts","sourceRoot":"","sources":["../../../src/kernel/module/topo-sort.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;gBAEb,KAAK,EAAE,MAAM,EAAE;CAM5B;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,EAAE,CAiD5E"}
@@ -0,0 +1,89 @@
1
+ export class ModuleCycleError extends Error {
2
+ cycle;
3
+ constructor(cycle) {
4
+ const label = cycle.join(" → ");
5
+ super(`Module dependency cycle: ${label}`);
6
+ this.name = "ModuleCycleError";
7
+ this.cycle = cycle;
8
+ }
9
+ }
10
+ export function topoSortModules(modules) {
11
+ const keys = Object.keys(modules);
12
+ const keySet = new Set(keys);
13
+ for (const [id, mod] of Object.entries(modules)) {
14
+ for (const dep of mod.dependencies ?? []) {
15
+ const depKey = dep;
16
+ if (!keySet.has(depKey)) {
17
+ throw new Error(`Module "${id}" declares unknown dependency "${depKey}"`);
18
+ }
19
+ }
20
+ }
21
+ const remaining = new Map();
22
+ for (const k of keys) {
23
+ const mod = modules[k];
24
+ remaining.set(k, new Set((mod.dependencies ?? [])));
25
+ }
26
+ const waitingOn = new Map();
27
+ for (const m of keys) {
28
+ const mod = modules[m];
29
+ for (const d of (mod.dependencies ?? [])) {
30
+ const list = waitingOn.get(d);
31
+ if (list)
32
+ list.push(m);
33
+ else
34
+ waitingOn.set(d, [m]);
35
+ }
36
+ }
37
+ const order = [];
38
+ const queue = keys.filter((k) => remaining.get(k).size === 0);
39
+ while (queue.length > 0) {
40
+ const n = queue.shift();
41
+ order.push(n);
42
+ for (const m of waitingOn.get(n) ?? []) {
43
+ const set = remaining.get(m);
44
+ if (set.delete(n) && set.size === 0) {
45
+ queue.push(m);
46
+ }
47
+ }
48
+ }
49
+ if (order.length !== keys.length) {
50
+ const cycle = findCycleKeys(modules, keys);
51
+ throw new ModuleCycleError(cycle);
52
+ }
53
+ return order;
54
+ }
55
+ function findCycleKeys(modules, keys) {
56
+ const WHITE = 0;
57
+ const GRAY = 1;
58
+ const BLACK = 2;
59
+ const mark = new Map();
60
+ const stack = [];
61
+ function dfs(u) {
62
+ mark.set(u, GRAY);
63
+ stack.push(u);
64
+ const mod = modules[u];
65
+ for (const v of (mod.dependencies ?? [])) {
66
+ const mv = mark.get(v) ?? WHITE;
67
+ if (mv === WHITE) {
68
+ const found = dfs(v);
69
+ if (found)
70
+ return found;
71
+ }
72
+ else if (mv === GRAY) {
73
+ const idx = stack.indexOf(v);
74
+ return [...stack.slice(idx), v];
75
+ }
76
+ }
77
+ stack.pop();
78
+ mark.set(u, BLACK);
79
+ return null;
80
+ }
81
+ for (const k of keys) {
82
+ if ((mark.get(k) ?? WHITE) === WHITE) {
83
+ const found = dfs(k);
84
+ if (found)
85
+ return found;
86
+ }
87
+ }
88
+ throw new Error("topoSortModules: expected a cycle but DFS did not find one");
89
+ }
@@ -0,0 +1,84 @@
1
+ import type { RouteConfig } from "@hono/zod-openapi";
2
+ import type { PluginDb } from "../database/plugin-types.js";
3
+ import type { CommerceConfig, CommercePlugin, PluginPermission } from "../../config/types.js";
4
+ export interface PluginLogger {
5
+ info(message: string, data?: unknown): void;
6
+ warn(message: string, data?: unknown): void;
7
+ error(message: string, data?: unknown): void;
8
+ }
9
+ /**
10
+ * Plugin route registration. Supports two modes:
11
+ *
12
+ * 1. Legacy: { method, path, handler } — works, but invisible to OpenAPI spec.
13
+ * 2. OpenAPI: { openapi, handler } — validated by Zod, appears in /api/doc.
14
+ *
15
+ * Use mode 2 for any route that accepts a request body or returns structured data.
16
+ * Mode 1 is acceptable for simple routes (health checks, redirects, file serving).
17
+ */
18
+ export type PluginRouteRegistration = {
19
+ method: string;
20
+ path: string;
21
+ handler: (...args: unknown[]) => unknown;
22
+ } | {
23
+ openapi: RouteConfig;
24
+ handler: (...args: unknown[]) => unknown;
25
+ };
26
+ export interface PluginHookRegistration {
27
+ key: string;
28
+ handler: (...args: unknown[]) => unknown;
29
+ }
30
+ export interface PluginContext {
31
+ config: CommerceConfig;
32
+ services: Record<string, unknown>;
33
+ database: {
34
+ /** Tenant-scoped Drizzle handle (organization from the request actor). */
35
+ db: PluginDb;
36
+ /**
37
+ * Raw Drizzle handle — bypasses tenant scoping. Emits a rate-limited deprecation
38
+ * warning on each access (MT-4 escape hatch).
39
+ */
40
+ unscoped: PluginDb;
41
+ transaction<T>(fn: (tx: PluginDb) => Promise<T>): Promise<T>;
42
+ };
43
+ logger: PluginLogger;
44
+ }
45
+ export type { PluginPermission };
46
+ export interface CommercePluginManifest {
47
+ id: string;
48
+ version: string;
49
+ /**
50
+ * IDs of plugins that must be registered before this one.
51
+ * If any required plugin is missing at registration time,
52
+ * defineCommercePlugin will throw with a clear message.
53
+ */
54
+ requires?: string[];
55
+ /**
56
+ * Permission scopes this plugin introduces.
57
+ * Used by admin UIs to build role editors, and validated at boot time
58
+ * against .permission() calls in routes.
59
+ */
60
+ permissions?: PluginPermission[];
61
+ /**
62
+ * Returns Drizzle `pgTable` objects that this plugin needs.
63
+ * These are collected into `config.customSchemas[]` and merged with core
64
+ * schema by `buildSchema(config)`. Each key becomes a named export in the
65
+ * merged schema; names must not collide with core table exports.
66
+ */
67
+ schema?: () => Record<string, unknown>;
68
+ hooks?: () => PluginHookRegistration[];
69
+ routes?: (ctx: PluginContext) => PluginRouteRegistration[];
70
+ analyticsModels?: () => unknown[];
71
+ }
72
+ export declare const _registeredPlugins: Set<string>;
73
+ /** @internal — called by defineConfig() before applying plugins */
74
+ export declare function _resetRegisteredPlugins(): void;
75
+ /**
76
+ * Converts a plugin manifest into a config transform function.
77
+ *
78
+ * - `schema` → pushed into `config.customSchemas`
79
+ * - `hooks` → merged into `config.hooks` flat map
80
+ * - `routes` → chained onto `config.routes` (evaluated at boot with kernel)
81
+ * - `analyticsModels` → pushed into `config.analytics.models`
82
+ */
83
+ export declare function defineCommercePlugin(manifest: CommercePluginManifest): CommercePlugin;
84
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/kernel/plugin/manifest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAS5D,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAI/B,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9C;AAID;;;;;;;;GAQG;AACH,MAAM,MAAM,uBAAuB,GAC/B;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAA;CAAE,GAC1E;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAA;CAAE,CAAC;AAEvE,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;CAC1C;AAID,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,EAAE;QACR,0EAA0E;QAC1E,EAAE,EAAE,QAAQ,CAAC;QACb;;;WAGG;QACH,QAAQ,EAAE,QAAQ,CAAC;QACnB,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;KAC9D,CAAC;IACF,MAAM,EAAE,YAAY,CAAC;CACtB;AAqDD,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACjC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,sBAAsB,EAAE,CAAC;IACvC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,uBAAuB,EAAE,CAAC;IAC3D,eAAe,CAAC,EAAE,MAAM,OAAO,EAAE,CAAC;CACnC;AAKD,eAAO,MAAM,kBAAkB,aAAoB,CAAC;AAEpD,mEAAmE;AACnE,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,sBAAsB,GAC/B,cAAc,CAkJhB"}
@@ -0,0 +1,196 @@
1
+ import { resolveOrgId } from "../../auth/org.js";
2
+ import { createScopedDb } from "../database/scoped-db.js";
3
+ import { getPluginDatabaseScopeOrganizationId, runWithPluginDatabaseScope, } from "../database/plugin-db-context.js";
4
+ const UNSCOPED_WARN_COOLDOWN_MS = 60_000;
5
+ const UNSCOPED_WARN_EVERY_N = 100;
6
+ function createRateLimitedUnscopedAccessWarning(logger) {
7
+ let lastWarnAt = 0;
8
+ let accessCount = 0;
9
+ return () => {
10
+ accessCount += 1;
11
+ const now = Date.now();
12
+ if (accessCount % UNSCOPED_WARN_EVERY_N !== 0 && now - lastWarnAt < UNSCOPED_WARN_COOLDOWN_MS) {
13
+ return;
14
+ }
15
+ lastWarnAt = now;
16
+ logger.warn("[plugin:database] PluginContext.database.unscoped is deprecated (MT-4 escape hatch); prefer ctx.database.db for tenant-scoped access.");
17
+ };
18
+ }
19
+ function buildPluginContextDatabase(rawDb, transactionFn, commerceConfig, logger) {
20
+ const orgGetter = () => getPluginDatabaseScopeOrganizationId() ??
21
+ resolveOrgId(null, undefined, commerceConfig);
22
+ const scopedDb = createScopedDb(rawDb, orgGetter);
23
+ const warnUnscoped = createRateLimitedUnscopedAccessWarning(logger);
24
+ return {
25
+ get db() {
26
+ return scopedDb;
27
+ },
28
+ get unscoped() {
29
+ warnUnscoped();
30
+ return rawDb;
31
+ },
32
+ transaction: async (fn) => {
33
+ return transactionFn(async (tx) => {
34
+ const scopedTx = createScopedDb(tx, orgGetter);
35
+ return fn(scopedTx);
36
+ });
37
+ },
38
+ };
39
+ }
40
+ // ─── Plugin Dependency Tracking ──────────────────────────────────────
41
+ // Accumulates plugin IDs as they register during defineConfig().
42
+ // Reset at the start of each defineConfig() call.
43
+ export const _registeredPlugins = new Set();
44
+ /** @internal — called by defineConfig() before applying plugins */
45
+ export function _resetRegisteredPlugins() {
46
+ _registeredPlugins.clear();
47
+ }
48
+ /**
49
+ * Converts a plugin manifest into a config transform function.
50
+ *
51
+ * - `schema` → pushed into `config.customSchemas`
52
+ * - `hooks` → merged into `config.hooks` flat map
53
+ * - `routes` → chained onto `config.routes` (evaluated at boot with kernel)
54
+ * - `analyticsModels` → pushed into `config.analytics.models`
55
+ */
56
+ export function defineCommercePlugin(manifest) {
57
+ return (config) => {
58
+ // ── Dependency check ───────────────────────────────────────────
59
+ // In test/development, warn instead of throwing so plugins can be
60
+ // tested in isolation via createPluginTestApp() without installing
61
+ // all dependencies. In production, this is a hard error.
62
+ if (manifest.requires) {
63
+ for (const dep of manifest.requires) {
64
+ if (!_registeredPlugins.has(dep)) {
65
+ const msg = `Plugin "${manifest.id}" requires "${dep}" to be installed before it. Add ${dep}Plugin() before ${manifest.id}Plugin() in your config.plugins array.`;
66
+ if (process.env.NODE_ENV === "production") {
67
+ throw new Error(msg);
68
+ }
69
+ // Non-production: log warning but continue (allows isolated testing)
70
+ console.warn(`[plugin:${manifest.id}] WARNING: ${msg}`);
71
+ }
72
+ }
73
+ }
74
+ _registeredPlugins.add(manifest.id);
75
+ let result = { ...config };
76
+ if (manifest.permissions?.length) {
77
+ const withPlugin = manifest.permissions.map((p) => ({
78
+ ...p,
79
+ pluginId: manifest.id,
80
+ }));
81
+ result = {
82
+ ...result,
83
+ pluginPermissions: [...(result.pluginPermissions ?? []), ...withPlugin],
84
+ };
85
+ }
86
+ // 1. Schema — push into customSchemas for kernel to register
87
+ if (manifest.schema) {
88
+ const schemas = manifest.schema();
89
+ result = {
90
+ ...result,
91
+ customSchemas: [...(result.customSchemas ?? []), schemas],
92
+ };
93
+ }
94
+ // 2. Hooks — merge into flat hooks map (kernel registers at boot)
95
+ if (manifest.hooks) {
96
+ const registrations = manifest.hooks();
97
+ const hookMap = {
98
+ ...(result.hooks ?? {}),
99
+ };
100
+ for (const reg of registrations) {
101
+ hookMap[reg.key] = [...(hookMap[reg.key] ?? []), reg.handler];
102
+ }
103
+ result = { ...result, hooks: hookMap };
104
+ }
105
+ // 3. Routes — chain onto config.routes (deferred: needs kernel at boot)
106
+ if (manifest.routes) {
107
+ const existingRoutes = result.routes;
108
+ const pluginRoutes = manifest.routes;
109
+ result = {
110
+ ...result,
111
+ routes: (app, kernel) => {
112
+ existingRoutes?.(app, kernel);
113
+ const k = kernel;
114
+ // Narrow DatabaseAdapter<unknown> → PluginContext.database once here.
115
+ // All plugin code receives typed PluginDb — no casts downstream.
116
+ const regs = pluginRoutes({
117
+ config: k.config,
118
+ services: k.services,
119
+ database: buildPluginContextDatabase(k.database.db, k.database.transaction, k.config, k.logger),
120
+ logger: k.logger,
121
+ });
122
+ for (const route of regs) {
123
+ // ── Error boundary: wrap handler with plugin context ──
124
+ const originalHandler = route.handler;
125
+ const wrappedHandler = async (...args) => {
126
+ const c = args[0];
127
+ const actor = c?.get?.("actor");
128
+ const orgId = resolveOrgId(actor, undefined, k.config);
129
+ try {
130
+ return await runWithPluginDatabaseScope(orgId, async () => {
131
+ const out = originalHandler(...args);
132
+ return await Promise.resolve(out);
133
+ });
134
+ }
135
+ catch (err) {
136
+ // Try to extract logger from Hono context
137
+ const c = args[0];
138
+ const logger = c?.get?.("logger");
139
+ logger?.error?.({ err, plugin: manifest.id }, `[plugin:${manifest.id}] route handler error`);
140
+ throw err; // re-throw so global handler still catches
141
+ }
142
+ };
143
+ if ("openapi" in route) {
144
+ // OpenAPI route: validated by Zod, appears in /api/doc
145
+ // Hono type interop — OpenAPIHono.openapi() expects strict RouteConfig+Handler
146
+ // generics that can't be statically resolved for dynamic plugin routes.
147
+ // @ts-expect-error -- dynamic plugin routes cannot satisfy Hono's strict handler generics
148
+ app.openapi(route.openapi, wrappedHandler);
149
+ }
150
+ else {
151
+ // Legacy route: raw handler, invisible to OpenAPI spec.
152
+ // Explicit dispatch avoids casting Hono to a Record.
153
+ // Handler cast is a single `as any` (Hono's overloaded method
154
+ // signatures can't unify with our generic handler shape).
155
+ const h = wrappedHandler;
156
+ switch (route.method.toLowerCase()) {
157
+ case "get":
158
+ app.get(route.path, h);
159
+ break;
160
+ case "post":
161
+ app.post(route.path, h);
162
+ break;
163
+ case "put":
164
+ app.put(route.path, h);
165
+ break;
166
+ case "patch":
167
+ app.patch(route.path, h);
168
+ break;
169
+ case "delete":
170
+ app.delete(route.path, h);
171
+ break;
172
+ case "options":
173
+ app.options(route.path, h);
174
+ break;
175
+ default:
176
+ console.warn(`[plugin:${manifest.id}] unsupported HTTP method "${route.method}" for ${route.path}`);
177
+ }
178
+ }
179
+ }
180
+ },
181
+ };
182
+ }
183
+ // 4. Analytics models — push into config.analytics.models
184
+ if (manifest.analyticsModels) {
185
+ const models = manifest.analyticsModels();
186
+ result = {
187
+ ...result,
188
+ analytics: {
189
+ ...result.analytics,
190
+ models: [...(result.analytics?.models ?? []), ...models],
191
+ },
192
+ };
193
+ }
194
+ return result;
195
+ };
196
+ }
@@ -0,0 +1,21 @@
1
+ import type { QueryRegistry } from "./registry.js";
2
+ export interface QueryInput {
3
+ entity: string;
4
+ id?: string;
5
+ filters?: Record<string, unknown>;
6
+ include?: string[];
7
+ pagination?: {
8
+ limit?: number;
9
+ offset?: number;
10
+ };
11
+ }
12
+ export interface QueryResult<T = Record<string, unknown>> {
13
+ data: T[];
14
+ total?: number | undefined;
15
+ }
16
+ /**
17
+ * Executes a query against the registry, resolving includes via
18
+ * batched dataloader-style fetches (one WHERE IN per relation).
19
+ */
20
+ export declare function executeQuery<T = Record<string, unknown>>(registry: QueryRegistry, services: Record<string, unknown>, input: QueryInput): Promise<QueryResult<T>>;
21
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/kernel/query/executor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EAGd,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAClD;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5D,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAgDzB"}