@unifiedcommerce/core 0.0.1

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 (749) hide show
  1. package/dist/adapters/console-email.d.ts +23 -0
  2. package/dist/adapters/console-email.d.ts.map +1 -0
  3. package/dist/adapters/console-email.js +38 -0
  4. package/dist/auth/access.d.ts +101 -0
  5. package/dist/auth/access.d.ts.map +1 -0
  6. package/dist/auth/access.js +128 -0
  7. package/dist/auth/auth-schema.d.ts +1383 -0
  8. package/dist/auth/auth-schema.d.ts.map +1 -0
  9. package/dist/auth/auth-schema.js +117 -0
  10. package/dist/auth/middleware.d.ts +5 -0
  11. package/dist/auth/middleware.d.ts.map +1 -0
  12. package/dist/auth/middleware.js +91 -0
  13. package/dist/auth/org.d.ts +22 -0
  14. package/dist/auth/org.d.ts.map +1 -0
  15. package/dist/auth/org.js +36 -0
  16. package/dist/auth/permissions.d.ts +4 -0
  17. package/dist/auth/permissions.d.ts.map +1 -0
  18. package/dist/auth/permissions.js +24 -0
  19. package/dist/auth/pos.d.ts +3 -0
  20. package/dist/auth/pos.d.ts.map +1 -0
  21. package/dist/auth/pos.js +62 -0
  22. package/dist/auth/setup.d.ts +31 -0
  23. package/dist/auth/setup.d.ts.map +1 -0
  24. package/dist/auth/setup.js +106 -0
  25. package/dist/auth/system-actor.d.ts +7 -0
  26. package/dist/auth/system-actor.d.ts.map +1 -0
  27. package/dist/auth/system-actor.js +17 -0
  28. package/dist/auth/types.d.ts +11 -0
  29. package/dist/auth/types.d.ts.map +1 -0
  30. package/dist/auth/types.js +1 -0
  31. package/dist/config/defaults.d.ts +3 -0
  32. package/dist/config/defaults.d.ts.map +1 -0
  33. package/dist/config/defaults.js +80 -0
  34. package/dist/config/define-config.d.ts +9 -0
  35. package/dist/config/define-config.d.ts.map +1 -0
  36. package/dist/config/define-config.js +44 -0
  37. package/dist/config/types.d.ts +299 -0
  38. package/dist/config/types.d.ts.map +1 -0
  39. package/dist/config/types.js +1 -0
  40. package/dist/generated/plugin-manifest.d.ts +48 -0
  41. package/dist/generated/plugin-manifest.d.ts.map +1 -0
  42. package/dist/generated/plugin-manifest.js +20 -0
  43. package/dist/hooks/checkout-completion.d.ts +58 -0
  44. package/dist/hooks/checkout-completion.d.ts.map +1 -0
  45. package/dist/hooks/checkout-completion.js +137 -0
  46. package/dist/hooks/checkout.d.ts +99 -0
  47. package/dist/hooks/checkout.d.ts.map +1 -0
  48. package/dist/hooks/checkout.js +317 -0
  49. package/dist/hooks/order-emails.d.ts +16 -0
  50. package/dist/hooks/order-emails.d.ts.map +1 -0
  51. package/dist/hooks/order-emails.js +44 -0
  52. package/dist/index.d.ts +82 -0
  53. package/dist/index.d.ts.map +1 -0
  54. package/dist/index.js +13381 -0
  55. package/dist/index.js.map +156 -0
  56. package/dist/interfaces/graphql/index.d.ts +4 -0
  57. package/dist/interfaces/graphql/index.d.ts.map +1 -0
  58. package/dist/interfaces/graphql/index.js +415 -0
  59. package/dist/interfaces/mcp/agent-prompt.d.ts +16 -0
  60. package/dist/interfaces/mcp/agent-prompt.d.ts.map +1 -0
  61. package/dist/interfaces/mcp/agent-prompt.js +172 -0
  62. package/dist/interfaces/mcp/context-enrichment.d.ts +39 -0
  63. package/dist/interfaces/mcp/context-enrichment.d.ts.map +1 -0
  64. package/dist/interfaces/mcp/context-enrichment.js +119 -0
  65. package/dist/interfaces/mcp/server.d.ts +7 -0
  66. package/dist/interfaces/mcp/server.d.ts.map +1 -0
  67. package/dist/interfaces/mcp/server.js +515 -0
  68. package/dist/interfaces/mcp/transport.d.ts +5 -0
  69. package/dist/interfaces/mcp/transport.d.ts.map +1 -0
  70. package/dist/interfaces/mcp/transport.js +52 -0
  71. package/dist/interfaces/rest/customer-portal.d.ts +5 -0
  72. package/dist/interfaces/rest/customer-portal.d.ts.map +1 -0
  73. package/dist/interfaces/rest/customer-portal.js +206 -0
  74. package/dist/interfaces/rest/index.d.ts +5 -0
  75. package/dist/interfaces/rest/index.d.ts.map +1 -0
  76. package/dist/interfaces/rest/index.js +68 -0
  77. package/dist/interfaces/rest/router.d.ts +164 -0
  78. package/dist/interfaces/rest/router.d.ts.map +1 -0
  79. package/dist/interfaces/rest/router.js +259 -0
  80. package/dist/interfaces/rest/routes/admin-jobs.d.ts +5 -0
  81. package/dist/interfaces/rest/routes/admin-jobs.d.ts.map +1 -0
  82. package/dist/interfaces/rest/routes/admin-jobs.js +48 -0
  83. package/dist/interfaces/rest/routes/audit.d.ts +5 -0
  84. package/dist/interfaces/rest/routes/audit.d.ts.map +1 -0
  85. package/dist/interfaces/rest/routes/audit.js +43 -0
  86. package/dist/interfaces/rest/routes/carts.d.ts +5 -0
  87. package/dist/interfaces/rest/routes/carts.d.ts.map +1 -0
  88. package/dist/interfaces/rest/routes/carts.js +55 -0
  89. package/dist/interfaces/rest/routes/catalog.d.ts +5 -0
  90. package/dist/interfaces/rest/routes/catalog.d.ts.map +1 -0
  91. package/dist/interfaces/rest/routes/catalog.js +256 -0
  92. package/dist/interfaces/rest/routes/checkout.d.ts +5 -0
  93. package/dist/interfaces/rest/routes/checkout.d.ts.map +1 -0
  94. package/dist/interfaces/rest/routes/checkout.js +216 -0
  95. package/dist/interfaces/rest/routes/inventory.d.ts +5 -0
  96. package/dist/interfaces/rest/routes/inventory.d.ts.map +1 -0
  97. package/dist/interfaces/rest/routes/inventory.js +59 -0
  98. package/dist/interfaces/rest/routes/media.d.ts +5 -0
  99. package/dist/interfaces/rest/routes/media.d.ts.map +1 -0
  100. package/dist/interfaces/rest/routes/media.js +65 -0
  101. package/dist/interfaces/rest/routes/orders.d.ts +5 -0
  102. package/dist/interfaces/rest/routes/orders.d.ts.map +1 -0
  103. package/dist/interfaces/rest/routes/orders.js +64 -0
  104. package/dist/interfaces/rest/routes/payments.d.ts +5 -0
  105. package/dist/interfaces/rest/routes/payments.d.ts.map +1 -0
  106. package/dist/interfaces/rest/routes/payments.js +45 -0
  107. package/dist/interfaces/rest/routes/pricing.d.ts +5 -0
  108. package/dist/interfaces/rest/routes/pricing.d.ts.map +1 -0
  109. package/dist/interfaces/rest/routes/pricing.js +48 -0
  110. package/dist/interfaces/rest/routes/promotions.d.ts +5 -0
  111. package/dist/interfaces/rest/routes/promotions.d.ts.map +1 -0
  112. package/dist/interfaces/rest/routes/promotions.js +75 -0
  113. package/dist/interfaces/rest/routes/search.d.ts +5 -0
  114. package/dist/interfaces/rest/routes/search.d.ts.map +1 -0
  115. package/dist/interfaces/rest/routes/search.js +60 -0
  116. package/dist/interfaces/rest/routes/webhooks.d.ts +5 -0
  117. package/dist/interfaces/rest/routes/webhooks.d.ts.map +1 -0
  118. package/dist/interfaces/rest/routes/webhooks.js +39 -0
  119. package/dist/interfaces/rest/schemas/admin-jobs.d.ts +327 -0
  120. package/dist/interfaces/rest/schemas/admin-jobs.d.ts.map +1 -0
  121. package/dist/interfaces/rest/schemas/admin-jobs.js +37 -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 +1446 -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 +5416 -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/customer-portal.d.ts +2197 -0
  135. package/dist/interfaces/rest/schemas/customer-portal.d.ts.map +1 -0
  136. package/dist/interfaces/rest/schemas/customer-portal.js +177 -0
  137. package/dist/interfaces/rest/schemas/inventory.d.ts +469 -0
  138. package/dist/interfaces/rest/schemas/inventory.d.ts.map +1 -0
  139. package/dist/interfaces/rest/schemas/inventory.js +128 -0
  140. package/dist/interfaces/rest/schemas/media.d.ts +303 -0
  141. package/dist/interfaces/rest/schemas/media.d.ts.map +1 -0
  142. package/dist/interfaces/rest/schemas/media.js +69 -0
  143. package/dist/interfaces/rest/schemas/orders.d.ts +1782 -0
  144. package/dist/interfaces/rest/schemas/orders.d.ts.map +1 -0
  145. package/dist/interfaces/rest/schemas/orders.js +93 -0
  146. package/dist/interfaces/rest/schemas/pricing.d.ts +256 -0
  147. package/dist/interfaces/rest/schemas/pricing.d.ts.map +1 -0
  148. package/dist/interfaces/rest/schemas/pricing.js +72 -0
  149. package/dist/interfaces/rest/schemas/promotions.d.ts +363 -0
  150. package/dist/interfaces/rest/schemas/promotions.d.ts.map +1 -0
  151. package/dist/interfaces/rest/schemas/promotions.js +98 -0
  152. package/dist/interfaces/rest/schemas/responses.d.ts +4062 -0
  153. package/dist/interfaces/rest/schemas/responses.d.ts.map +1 -0
  154. package/dist/interfaces/rest/schemas/responses.js +63 -0
  155. package/dist/interfaces/rest/schemas/search.d.ts +245 -0
  156. package/dist/interfaces/rest/schemas/search.d.ts.map +1 -0
  157. package/dist/interfaces/rest/schemas/search.js +55 -0
  158. package/dist/interfaces/rest/schemas/shared.d.ts +95 -0
  159. package/dist/interfaces/rest/schemas/shared.d.ts.map +1 -0
  160. package/dist/interfaces/rest/schemas/shared.js +51 -0
  161. package/dist/interfaces/rest/schemas/webhooks.d.ts +221 -0
  162. package/dist/interfaces/rest/schemas/webhooks.d.ts.map +1 -0
  163. package/dist/interfaces/rest/schemas/webhooks.js +62 -0
  164. package/dist/interfaces/rest/utils.d.ts +45 -0
  165. package/dist/interfaces/rest/utils.d.ts.map +1 -0
  166. package/dist/interfaces/rest/utils.js +71 -0
  167. package/dist/interfaces/rest/webhook-router.d.ts +41 -0
  168. package/dist/interfaces/rest/webhook-router.d.ts.map +1 -0
  169. package/dist/interfaces/rest/webhook-router.js +36 -0
  170. package/dist/kernel/compensation/executor.d.ts +21 -0
  171. package/dist/kernel/compensation/executor.d.ts.map +1 -0
  172. package/dist/kernel/compensation/executor.js +36 -0
  173. package/dist/kernel/compensation/types.d.ts +25 -0
  174. package/dist/kernel/compensation/types.d.ts.map +1 -0
  175. package/dist/kernel/compensation/types.js +1 -0
  176. package/dist/kernel/database/adapter.d.ts +10 -0
  177. package/dist/kernel/database/adapter.d.ts.map +1 -0
  178. package/dist/kernel/database/adapter.js +3 -0
  179. package/dist/kernel/database/drizzle-db.d.ts +49 -0
  180. package/dist/kernel/database/drizzle-db.d.ts.map +1 -0
  181. package/dist/kernel/database/drizzle-db.js +20 -0
  182. package/dist/kernel/database/migrate.d.ts +38 -0
  183. package/dist/kernel/database/migrate.d.ts.map +1 -0
  184. package/dist/kernel/database/migrate.js +61 -0
  185. package/dist/kernel/database/plugin-types.d.ts +32 -0
  186. package/dist/kernel/database/plugin-types.d.ts.map +1 -0
  187. package/dist/kernel/database/plugin-types.js +10 -0
  188. package/dist/kernel/database/schema.d.ts +24 -0
  189. package/dist/kernel/database/schema.d.ts.map +1 -0
  190. package/dist/kernel/database/schema.js +36 -0
  191. package/dist/kernel/database/scoped-db.d.ts +20 -0
  192. package/dist/kernel/database/scoped-db.d.ts.map +1 -0
  193. package/dist/kernel/database/scoped-db.js +62 -0
  194. package/dist/kernel/database/tx-context.d.ts +15 -0
  195. package/dist/kernel/database/tx-context.d.ts.map +1 -0
  196. package/dist/kernel/database/tx-context.js +19 -0
  197. package/dist/kernel/error-mapper.d.ts +3 -0
  198. package/dist/kernel/error-mapper.d.ts.map +1 -0
  199. package/dist/kernel/error-mapper.js +12 -0
  200. package/dist/kernel/errors.d.ts +38 -0
  201. package/dist/kernel/errors.d.ts.map +1 -0
  202. package/dist/kernel/errors.js +69 -0
  203. package/dist/kernel/factory/in-memory-repository-factory.d.ts +20 -0
  204. package/dist/kernel/factory/in-memory-repository-factory.d.ts.map +1 -0
  205. package/dist/kernel/factory/in-memory-repository-factory.js +83 -0
  206. package/dist/kernel/factory/repository-factory.d.ts +71 -0
  207. package/dist/kernel/factory/repository-factory.d.ts.map +1 -0
  208. package/dist/kernel/factory/repository-factory.js +136 -0
  209. package/dist/kernel/hooks/create-context.d.ts +25 -0
  210. package/dist/kernel/hooks/create-context.d.ts.map +1 -0
  211. package/dist/kernel/hooks/create-context.js +22 -0
  212. package/dist/kernel/hooks/executor.d.ts +12 -0
  213. package/dist/kernel/hooks/executor.d.ts.map +1 -0
  214. package/dist/kernel/hooks/executor.js +50 -0
  215. package/dist/kernel/hooks/registry.d.ts +28 -0
  216. package/dist/kernel/hooks/registry.d.ts.map +1 -0
  217. package/dist/kernel/hooks/registry.js +58 -0
  218. package/dist/kernel/hooks/types.d.ts +37 -0
  219. package/dist/kernel/hooks/types.d.ts.map +1 -0
  220. package/dist/kernel/hooks/types.js +1 -0
  221. package/dist/kernel/http-error.d.ts +30 -0
  222. package/dist/kernel/http-error.d.ts.map +1 -0
  223. package/dist/kernel/http-error.js +35 -0
  224. package/dist/kernel/jobs/adapter.d.ts +25 -0
  225. package/dist/kernel/jobs/adapter.d.ts.map +1 -0
  226. package/dist/kernel/jobs/adapter.js +9 -0
  227. package/dist/kernel/jobs/drizzle-adapter.d.ts +15 -0
  228. package/dist/kernel/jobs/drizzle-adapter.d.ts.map +1 -0
  229. package/dist/kernel/jobs/drizzle-adapter.js +42 -0
  230. package/dist/kernel/jobs/runner.d.ts +24 -0
  231. package/dist/kernel/jobs/runner.d.ts.map +1 -0
  232. package/dist/kernel/jobs/runner.js +114 -0
  233. package/dist/kernel/jobs/schema.d.ts +280 -0
  234. package/dist/kernel/jobs/schema.d.ts.map +1 -0
  235. package/dist/kernel/jobs/schema.js +37 -0
  236. package/dist/kernel/jobs/types.d.ts +30 -0
  237. package/dist/kernel/jobs/types.d.ts.map +1 -0
  238. package/dist/kernel/jobs/types.js +1 -0
  239. package/dist/kernel/local-api.d.ts +103 -0
  240. package/dist/kernel/local-api.d.ts.map +1 -0
  241. package/dist/kernel/local-api.js +87 -0
  242. package/dist/kernel/plugin/capability-registry.d.ts +9 -0
  243. package/dist/kernel/plugin/capability-registry.d.ts.map +1 -0
  244. package/dist/kernel/plugin/capability-registry.js +28 -0
  245. package/dist/kernel/plugin/dependency-graph.d.ts +6 -0
  246. package/dist/kernel/plugin/dependency-graph.d.ts.map +1 -0
  247. package/dist/kernel/plugin/dependency-graph.js +55 -0
  248. package/dist/kernel/plugin/manifest.d.ts +90 -0
  249. package/dist/kernel/plugin/manifest.d.ts.map +1 -0
  250. package/dist/kernel/plugin/manifest.js +140 -0
  251. package/dist/kernel/query/executor.d.ts +21 -0
  252. package/dist/kernel/query/executor.d.ts.map +1 -0
  253. package/dist/kernel/query/executor.js +128 -0
  254. package/dist/kernel/query/registry.d.ts +33 -0
  255. package/dist/kernel/query/registry.d.ts.map +1 -0
  256. package/dist/kernel/query/registry.js +20 -0
  257. package/dist/kernel/result.d.ts +36 -0
  258. package/dist/kernel/result.d.ts.map +1 -0
  259. package/dist/kernel/result.js +16 -0
  260. package/dist/kernel/schema/extra-columns.d.ts +23 -0
  261. package/dist/kernel/schema/extra-columns.d.ts.map +1 -0
  262. package/dist/kernel/schema/extra-columns.js +10 -0
  263. package/dist/kernel/service-registry.d.ts +109 -0
  264. package/dist/kernel/service-registry.d.ts.map +1 -0
  265. package/dist/kernel/service-registry.js +26 -0
  266. package/dist/kernel/service-timing.d.ts +25 -0
  267. package/dist/kernel/service-timing.d.ts.map +1 -0
  268. package/dist/kernel/service-timing.js +62 -0
  269. package/dist/kernel/state-machine/machine.d.ts +24 -0
  270. package/dist/kernel/state-machine/machine.d.ts.map +1 -0
  271. package/dist/kernel/state-machine/machine.js +70 -0
  272. package/dist/modules/analytics/cubes.d.ts +19 -0
  273. package/dist/modules/analytics/cubes.d.ts.map +1 -0
  274. package/dist/modules/analytics/cubes.js +187 -0
  275. package/dist/modules/analytics/drizzle-adapter.d.ts +13 -0
  276. package/dist/modules/analytics/drizzle-adapter.d.ts.map +1 -0
  277. package/dist/modules/analytics/drizzle-adapter.js +358 -0
  278. package/dist/modules/analytics/hooks.d.ts +13 -0
  279. package/dist/modules/analytics/hooks.d.ts.map +1 -0
  280. package/dist/modules/analytics/hooks.js +12 -0
  281. package/dist/modules/analytics/models.d.ts +14 -0
  282. package/dist/modules/analytics/models.d.ts.map +1 -0
  283. package/dist/modules/analytics/models.js +118 -0
  284. package/dist/modules/analytics/repository/index.d.ts +5 -0
  285. package/dist/modules/analytics/repository/index.d.ts.map +1 -0
  286. package/dist/modules/analytics/repository/index.js +1 -0
  287. package/dist/modules/analytics/service.d.ts +45 -0
  288. package/dist/modules/analytics/service.d.ts.map +1 -0
  289. package/dist/modules/analytics/service.js +196 -0
  290. package/dist/modules/analytics/types.d.ts +119 -0
  291. package/dist/modules/analytics/types.d.ts.map +1 -0
  292. package/dist/modules/analytics/types.js +25 -0
  293. package/dist/modules/audit/hooks.d.ts +7 -0
  294. package/dist/modules/audit/hooks.d.ts.map +1 -0
  295. package/dist/modules/audit/hooks.js +67 -0
  296. package/dist/modules/audit/schema.d.ts +178 -0
  297. package/dist/modules/audit/schema.d.ts.map +1 -0
  298. package/dist/modules/audit/schema.js +21 -0
  299. package/dist/modules/audit/service.d.ts +38 -0
  300. package/dist/modules/audit/service.d.ts.map +1 -0
  301. package/dist/modules/audit/service.js +109 -0
  302. package/dist/modules/cart/access.d.ts +11 -0
  303. package/dist/modules/cart/access.d.ts.map +1 -0
  304. package/dist/modules/cart/access.js +18 -0
  305. package/dist/modules/cart/matcher.d.ts +20 -0
  306. package/dist/modules/cart/matcher.d.ts.map +1 -0
  307. package/dist/modules/cart/matcher.js +2 -0
  308. package/dist/modules/cart/repository/in-memory.d.ts +30 -0
  309. package/dist/modules/cart/repository/in-memory.d.ts.map +1 -0
  310. package/dist/modules/cart/repository/in-memory.js +159 -0
  311. package/dist/modules/cart/repository/index.d.ts +45 -0
  312. package/dist/modules/cart/repository/index.d.ts.map +1 -0
  313. package/dist/modules/cart/repository/index.js +158 -0
  314. package/dist/modules/cart/schema.d.ts +359 -0
  315. package/dist/modules/cart/schema.d.ts.map +1 -0
  316. package/dist/modules/cart/schema.js +40 -0
  317. package/dist/modules/cart/schemas.d.ts +29 -0
  318. package/dist/modules/cart/schemas.d.ts.map +1 -0
  319. package/dist/modules/cart/schemas.js +14 -0
  320. package/dist/modules/cart/service.d.ts +63 -0
  321. package/dist/modules/cart/service.d.ts.map +1 -0
  322. package/dist/modules/cart/service.js +339 -0
  323. package/dist/modules/catalog/repository/in-memory.d.ts +82 -0
  324. package/dist/modules/catalog/repository/in-memory.d.ts.map +1 -0
  325. package/dist/modules/catalog/repository/in-memory.js +444 -0
  326. package/dist/modules/catalog/repository/index.d.ts +106 -0
  327. package/dist/modules/catalog/repository/index.d.ts.map +1 -0
  328. package/dist/modules/catalog/repository/index.js +455 -0
  329. package/dist/modules/catalog/schema.d.ts +1193 -0
  330. package/dist/modules/catalog/schema.d.ts.map +1 -0
  331. package/dist/modules/catalog/schema.js +149 -0
  332. package/dist/modules/catalog/schemas.d.ts +81 -0
  333. package/dist/modules/catalog/schemas.d.ts.map +1 -0
  334. package/dist/modules/catalog/schemas.js +62 -0
  335. package/dist/modules/catalog/service.d.ts +160 -0
  336. package/dist/modules/catalog/service.d.ts.map +1 -0
  337. package/dist/modules/catalog/service.js +759 -0
  338. package/dist/modules/customers/repository/in-memory.d.ts +37 -0
  339. package/dist/modules/customers/repository/in-memory.d.ts.map +1 -0
  340. package/dist/modules/customers/repository/in-memory.js +278 -0
  341. package/dist/modules/customers/repository/index.d.ts +47 -0
  342. package/dist/modules/customers/repository/index.d.ts.map +1 -0
  343. package/dist/modules/customers/repository/index.js +206 -0
  344. package/dist/modules/customers/schema.d.ts +560 -0
  345. package/dist/modules/customers/schema.d.ts.map +1 -0
  346. package/dist/modules/customers/schema.js +60 -0
  347. package/dist/modules/customers/service.d.ts +25 -0
  348. package/dist/modules/customers/service.d.ts.map +1 -0
  349. package/dist/modules/customers/service.js +91 -0
  350. package/dist/modules/fulfillment/repository/in-memory.d.ts +53 -0
  351. package/dist/modules/fulfillment/repository/in-memory.d.ts.map +1 -0
  352. package/dist/modules/fulfillment/repository/in-memory.js +327 -0
  353. package/dist/modules/fulfillment/repository/index.d.ts +63 -0
  354. package/dist/modules/fulfillment/repository/index.d.ts.map +1 -0
  355. package/dist/modules/fulfillment/repository/index.js +268 -0
  356. package/dist/modules/fulfillment/schema.d.ts +655 -0
  357. package/dist/modules/fulfillment/schema.d.ts.map +1 -0
  358. package/dist/modules/fulfillment/schema.js +83 -0
  359. package/dist/modules/fulfillment/service.d.ts +58 -0
  360. package/dist/modules/fulfillment/service.d.ts.map +1 -0
  361. package/dist/modules/fulfillment/service.js +338 -0
  362. package/dist/modules/fulfillment/types.d.ts +44 -0
  363. package/dist/modules/fulfillment/types.d.ts.map +1 -0
  364. package/dist/modules/fulfillment/types.js +1 -0
  365. package/dist/modules/inventory/repository/in-memory.d.ts +51 -0
  366. package/dist/modules/inventory/repository/in-memory.d.ts.map +1 -0
  367. package/dist/modules/inventory/repository/in-memory.js +281 -0
  368. package/dist/modules/inventory/repository/index.d.ts +81 -0
  369. package/dist/modules/inventory/repository/index.d.ts.map +1 -0
  370. package/dist/modules/inventory/repository/index.js +310 -0
  371. package/dist/modules/inventory/schema.d.ts +570 -0
  372. package/dist/modules/inventory/schema.d.ts.map +1 -0
  373. package/dist/modules/inventory/schema.js +69 -0
  374. package/dist/modules/inventory/schemas.d.ts +31 -0
  375. package/dist/modules/inventory/schemas.d.ts.map +1 -0
  376. package/dist/modules/inventory/schemas.js +28 -0
  377. package/dist/modules/inventory/service.d.ts +65 -0
  378. package/dist/modules/inventory/service.d.ts.map +1 -0
  379. package/dist/modules/inventory/service.js +271 -0
  380. package/dist/modules/media/adapter.d.ts +16 -0
  381. package/dist/modules/media/adapter.d.ts.map +1 -0
  382. package/dist/modules/media/adapter.js +1 -0
  383. package/dist/modules/media/repository/in-memory.d.ts +26 -0
  384. package/dist/modules/media/repository/in-memory.d.ts.map +1 -0
  385. package/dist/modules/media/repository/in-memory.js +145 -0
  386. package/dist/modules/media/repository/index.d.ts +35 -0
  387. package/dist/modules/media/repository/index.d.ts.map +1 -0
  388. package/dist/modules/media/repository/index.js +176 -0
  389. package/dist/modules/media/schema.d.ts +289 -0
  390. package/dist/modules/media/schema.d.ts.map +1 -0
  391. package/dist/modules/media/schema.js +35 -0
  392. package/dist/modules/media/service.d.ts +42 -0
  393. package/dist/modules/media/service.d.ts.map +1 -0
  394. package/dist/modules/media/service.js +89 -0
  395. package/dist/modules/orders/repository/in-memory.d.ts +40 -0
  396. package/dist/modules/orders/repository/in-memory.d.ts.map +1 -0
  397. package/dist/modules/orders/repository/in-memory.js +245 -0
  398. package/dist/modules/orders/repository/index.d.ts +48 -0
  399. package/dist/modules/orders/repository/index.d.ts.map +1 -0
  400. package/dist/modules/orders/repository/index.js +199 -0
  401. package/dist/modules/orders/schema.d.ts +672 -0
  402. package/dist/modules/orders/schema.d.ts.map +1 -0
  403. package/dist/modules/orders/schema.js +63 -0
  404. package/dist/modules/orders/service.d.ts +85 -0
  405. package/dist/modules/orders/service.d.ts.map +1 -0
  406. package/dist/modules/orders/service.js +313 -0
  407. package/dist/modules/orders/stale-order-cleanup.d.ts +27 -0
  408. package/dist/modules/orders/stale-order-cleanup.d.ts.map +1 -0
  409. package/dist/modules/orders/stale-order-cleanup.js +55 -0
  410. package/dist/modules/organization/service.d.ts +53 -0
  411. package/dist/modules/organization/service.d.ts.map +1 -0
  412. package/dist/modules/organization/service.js +151 -0
  413. package/dist/modules/payments/adapter.d.ts +42 -0
  414. package/dist/modules/payments/adapter.d.ts.map +1 -0
  415. package/dist/modules/payments/adapter.js +1 -0
  416. package/dist/modules/payments/repository/index.d.ts +5 -0
  417. package/dist/modules/payments/repository/index.d.ts.map +1 -0
  418. package/dist/modules/payments/repository/index.js +1 -0
  419. package/dist/modules/payments/service.d.ts +23 -0
  420. package/dist/modules/payments/service.d.ts.map +1 -0
  421. package/dist/modules/payments/service.js +72 -0
  422. package/dist/modules/pricing/repository/in-memory.d.ts +25 -0
  423. package/dist/modules/pricing/repository/in-memory.d.ts.map +1 -0
  424. package/dist/modules/pricing/repository/in-memory.js +288 -0
  425. package/dist/modules/pricing/repository/index.d.ts +34 -0
  426. package/dist/modules/pricing/repository/index.d.ts.map +1 -0
  427. package/dist/modules/pricing/repository/index.js +176 -0
  428. package/dist/modules/pricing/schema.d.ts +565 -0
  429. package/dist/modules/pricing/schema.d.ts.map +1 -0
  430. package/dist/modules/pricing/schema.js +57 -0
  431. package/dist/modules/pricing/schemas.d.ts +37 -0
  432. package/dist/modules/pricing/schemas.d.ts.map +1 -0
  433. package/dist/modules/pricing/schemas.js +30 -0
  434. package/dist/modules/pricing/service.d.ts +62 -0
  435. package/dist/modules/pricing/service.d.ts.map +1 -0
  436. package/dist/modules/pricing/service.js +308 -0
  437. package/dist/modules/promotions/repository/in-memory.d.ts +32 -0
  438. package/dist/modules/promotions/repository/in-memory.d.ts.map +1 -0
  439. package/dist/modules/promotions/repository/in-memory.js +227 -0
  440. package/dist/modules/promotions/repository/index.d.ts +41 -0
  441. package/dist/modules/promotions/repository/index.d.ts.map +1 -0
  442. package/dist/modules/promotions/repository/index.js +204 -0
  443. package/dist/modules/promotions/schema.d.ts +427 -0
  444. package/dist/modules/promotions/schema.d.ts.map +1 -0
  445. package/dist/modules/promotions/schema.js +52 -0
  446. package/dist/modules/promotions/schemas.d.ts +33 -0
  447. package/dist/modules/promotions/schemas.d.ts.map +1 -0
  448. package/dist/modules/promotions/schemas.js +32 -0
  449. package/dist/modules/promotions/service.d.ts +80 -0
  450. package/dist/modules/promotions/service.d.ts.map +1 -0
  451. package/dist/modules/promotions/service.js +347 -0
  452. package/dist/modules/search/adapter.d.ts +51 -0
  453. package/dist/modules/search/adapter.d.ts.map +1 -0
  454. package/dist/modules/search/adapter.js +1 -0
  455. package/dist/modules/search/hooks.d.ts +8 -0
  456. package/dist/modules/search/hooks.d.ts.map +1 -0
  457. package/dist/modules/search/hooks.js +6 -0
  458. package/dist/modules/search/repository/index.d.ts +5 -0
  459. package/dist/modules/search/repository/index.d.ts.map +1 -0
  460. package/dist/modules/search/repository/index.js +1 -0
  461. package/dist/modules/search/service.d.ts +24 -0
  462. package/dist/modules/search/service.d.ts.map +1 -0
  463. package/dist/modules/search/service.js +217 -0
  464. package/dist/modules/shipping/calculator.d.ts +42 -0
  465. package/dist/modules/shipping/calculator.d.ts.map +1 -0
  466. package/dist/modules/shipping/calculator.js +91 -0
  467. package/dist/modules/shipping/repository/index.d.ts +5 -0
  468. package/dist/modules/shipping/repository/index.d.ts.map +1 -0
  469. package/dist/modules/shipping/repository/index.js +1 -0
  470. package/dist/modules/shipping/service.d.ts +28 -0
  471. package/dist/modules/shipping/service.d.ts.map +1 -0
  472. package/dist/modules/shipping/service.js +20 -0
  473. package/dist/modules/tax/adapter.d.ts +58 -0
  474. package/dist/modules/tax/adapter.d.ts.map +1 -0
  475. package/dist/modules/tax/adapter.js +1 -0
  476. package/dist/modules/tax/repository/index.d.ts +5 -0
  477. package/dist/modules/tax/repository/index.d.ts.map +1 -0
  478. package/dist/modules/tax/repository/index.js +1 -0
  479. package/dist/modules/tax/service.d.ts +19 -0
  480. package/dist/modules/tax/service.d.ts.map +1 -0
  481. package/dist/modules/tax/service.js +34 -0
  482. package/dist/modules/webhooks/hook.d.ts +13 -0
  483. package/dist/modules/webhooks/hook.d.ts.map +1 -0
  484. package/dist/modules/webhooks/hook.js +29 -0
  485. package/dist/modules/webhooks/repository/in-memory.d.ts +31 -0
  486. package/dist/modules/webhooks/repository/in-memory.d.ts.map +1 -0
  487. package/dist/modules/webhooks/repository/in-memory.js +187 -0
  488. package/dist/modules/webhooks/repository/index.d.ts +40 -0
  489. package/dist/modules/webhooks/repository/index.d.ts.map +1 -0
  490. package/dist/modules/webhooks/repository/index.js +175 -0
  491. package/dist/modules/webhooks/schema.d.ts +404 -0
  492. package/dist/modules/webhooks/schema.d.ts.map +1 -0
  493. package/dist/modules/webhooks/schema.js +40 -0
  494. package/dist/modules/webhooks/service.d.ts +23 -0
  495. package/dist/modules/webhooks/service.d.ts.map +1 -0
  496. package/dist/modules/webhooks/service.js +92 -0
  497. package/dist/modules/webhooks/signing.d.ts +2 -0
  498. package/dist/modules/webhooks/signing.d.ts.map +1 -0
  499. package/dist/modules/webhooks/signing.js +5 -0
  500. package/dist/modules/webhooks/ssrf-guard.d.ts +19 -0
  501. package/dist/modules/webhooks/ssrf-guard.d.ts.map +1 -0
  502. package/dist/modules/webhooks/ssrf-guard.js +79 -0
  503. package/dist/modules/webhooks/tasks.d.ts +16 -0
  504. package/dist/modules/webhooks/tasks.d.ts.map +1 -0
  505. package/dist/modules/webhooks/tasks.js +35 -0
  506. package/dist/modules/webhooks/worker.d.ts +21 -0
  507. package/dist/modules/webhooks/worker.d.ts.map +1 -0
  508. package/dist/modules/webhooks/worker.js +113 -0
  509. package/dist/runtime/commerce.d.ts +110 -0
  510. package/dist/runtime/commerce.d.ts.map +1 -0
  511. package/dist/runtime/commerce.js +37 -0
  512. package/dist/runtime/kernel.d.ts +72 -0
  513. package/dist/runtime/kernel.d.ts.map +1 -0
  514. package/dist/runtime/kernel.js +298 -0
  515. package/dist/runtime/logger.d.ts +11 -0
  516. package/dist/runtime/logger.d.ts.map +1 -0
  517. package/dist/runtime/logger.js +32 -0
  518. package/dist/runtime/server.d.ts +28 -0
  519. package/dist/runtime/server.d.ts.map +1 -0
  520. package/dist/runtime/server.js +277 -0
  521. package/dist/runtime/shutdown.d.ts +15 -0
  522. package/dist/runtime/shutdown.d.ts.map +1 -0
  523. package/dist/runtime/shutdown.js +34 -0
  524. package/dist/runtime/state-manager.d.ts +14 -0
  525. package/dist/runtime/state-manager.d.ts.map +1 -0
  526. package/dist/runtime/state-manager.js +84 -0
  527. package/dist/runtime/state-repository.d.ts +13 -0
  528. package/dist/runtime/state-repository.d.ts.map +1 -0
  529. package/dist/runtime/state-repository.js +160 -0
  530. package/dist/runtime/state.d.ts +382 -0
  531. package/dist/runtime/state.d.ts.map +1 -0
  532. package/dist/runtime/state.js +37 -0
  533. package/dist/runtime/store.d.ts +382 -0
  534. package/dist/runtime/store.d.ts.map +1 -0
  535. package/dist/runtime/store.js +37 -0
  536. package/dist/test-utils/create-pglite-adapter.d.ts +32 -0
  537. package/dist/test-utils/create-pglite-adapter.d.ts.map +1 -0
  538. package/dist/test-utils/create-pglite-adapter.js +106 -0
  539. package/dist/test-utils/create-plugin-test-app.d.ts +50 -0
  540. package/dist/test-utils/create-plugin-test-app.d.ts.map +1 -0
  541. package/dist/test-utils/create-plugin-test-app.js +74 -0
  542. package/dist/test-utils/create-repository-test-harness.d.ts +8 -0
  543. package/dist/test-utils/create-repository-test-harness.d.ts.map +1 -0
  544. package/dist/test-utils/create-repository-test-harness.js +7 -0
  545. package/dist/test-utils/create-test-config.d.ts +18 -0
  546. package/dist/test-utils/create-test-config.d.ts.map +1 -0
  547. package/dist/test-utils/create-test-config.js +174 -0
  548. package/dist/test-utils/create-test-kernel.d.ts +3 -0
  549. package/dist/test-utils/create-test-kernel.d.ts.map +1 -0
  550. package/dist/test-utils/create-test-kernel.js +5 -0
  551. package/dist/test-utils/create-test-plugin-context.d.ts +42 -0
  552. package/dist/test-utils/create-test-plugin-context.d.ts.map +1 -0
  553. package/dist/test-utils/create-test-plugin-context.js +46 -0
  554. package/dist/test-utils/rest-api-test-utils.d.ts +64 -0
  555. package/dist/test-utils/rest-api-test-utils.d.ts.map +1 -0
  556. package/dist/test-utils/rest-api-test-utils.js +207 -0
  557. package/dist/test-utils/test-actors.d.ts +15 -0
  558. package/dist/test-utils/test-actors.d.ts.map +1 -0
  559. package/dist/test-utils/test-actors.js +57 -0
  560. package/dist/test-utils/typed-hooks.d.ts +43 -0
  561. package/dist/test-utils/typed-hooks.d.ts.map +1 -0
  562. package/dist/test-utils/typed-hooks.js +35 -0
  563. package/dist/tsconfig.tsbuildinfo +1 -0
  564. package/dist/types/commerce-types.d.ts +34 -0
  565. package/dist/types/commerce-types.d.ts.map +1 -0
  566. package/dist/types/commerce-types.js +1 -0
  567. package/dist/utils/id.d.ts +2 -0
  568. package/dist/utils/id.d.ts.map +1 -0
  569. package/dist/utils/id.js +3 -0
  570. package/dist/utils/logger.d.ts +3 -0
  571. package/dist/utils/logger.d.ts.map +1 -0
  572. package/dist/utils/logger.js +16 -0
  573. package/dist/utils/pagination.d.ts +11 -0
  574. package/dist/utils/pagination.d.ts.map +1 -0
  575. package/dist/utils/pagination.js +15 -0
  576. package/package.json +63 -0
  577. package/src/adapters/console-email.ts +43 -0
  578. package/src/auth/access.ts +187 -0
  579. package/src/auth/auth-schema.ts +131 -0
  580. package/src/auth/middleware.ts +115 -0
  581. package/src/auth/org.ts +41 -0
  582. package/src/auth/permissions.ts +28 -0
  583. package/src/auth/setup.ts +160 -0
  584. package/src/auth/system-actor.ts +19 -0
  585. package/src/auth/types.ts +10 -0
  586. package/src/config/defaults.ts +82 -0
  587. package/src/config/define-config.ts +53 -0
  588. package/src/config/types.ts +299 -0
  589. package/src/generated/plugin-capabilities.d.ts +20 -0
  590. package/src/generated/plugin-manifest.ts +23 -0
  591. package/src/generated/plugin-repositories.d.ts +20 -0
  592. package/src/hooks/checkout-completion.ts +262 -0
  593. package/src/hooks/checkout.ts +677 -0
  594. package/src/hooks/order-emails.ts +62 -0
  595. package/src/index.ts +214 -0
  596. package/src/interfaces/mcp/agent-prompt.ts +174 -0
  597. package/src/interfaces/mcp/context-enrichment.ts +177 -0
  598. package/src/interfaces/mcp/server.ts +617 -0
  599. package/src/interfaces/mcp/transport.ts +68 -0
  600. package/src/interfaces/rest/customer-portal.ts +299 -0
  601. package/src/interfaces/rest/index.ts +74 -0
  602. package/src/interfaces/rest/router.ts +334 -0
  603. package/src/interfaces/rest/routes/admin-jobs.ts +58 -0
  604. package/src/interfaces/rest/routes/audit.ts +50 -0
  605. package/src/interfaces/rest/routes/carts.ts +89 -0
  606. package/src/interfaces/rest/routes/catalog.ts +493 -0
  607. package/src/interfaces/rest/routes/checkout.ts +283 -0
  608. package/src/interfaces/rest/routes/inventory.ts +70 -0
  609. package/src/interfaces/rest/routes/media.ts +86 -0
  610. package/src/interfaces/rest/routes/orders.ts +78 -0
  611. package/src/interfaces/rest/routes/payments.ts +60 -0
  612. package/src/interfaces/rest/routes/pricing.ts +57 -0
  613. package/src/interfaces/rest/routes/promotions.ts +92 -0
  614. package/src/interfaces/rest/routes/search.ts +71 -0
  615. package/src/interfaces/rest/routes/webhooks.ts +46 -0
  616. package/src/interfaces/rest/schemas/admin-jobs.ts +40 -0
  617. package/src/interfaces/rest/schemas/audit.ts +46 -0
  618. package/src/interfaces/rest/schemas/carts.ts +125 -0
  619. package/src/interfaces/rest/schemas/catalog.ts +450 -0
  620. package/src/interfaces/rest/schemas/checkout.ts +66 -0
  621. package/src/interfaces/rest/schemas/customer-portal.ts +195 -0
  622. package/src/interfaces/rest/schemas/inventory.ts +138 -0
  623. package/src/interfaces/rest/schemas/media.ts +75 -0
  624. package/src/interfaces/rest/schemas/orders.ts +104 -0
  625. package/src/interfaces/rest/schemas/pricing.ts +80 -0
  626. package/src/interfaces/rest/schemas/promotions.ts +110 -0
  627. package/src/interfaces/rest/schemas/responses.ts +85 -0
  628. package/src/interfaces/rest/schemas/search.ts +58 -0
  629. package/src/interfaces/rest/schemas/shared.ts +62 -0
  630. package/src/interfaces/rest/schemas/webhooks.ts +68 -0
  631. package/src/interfaces/rest/utils.ts +104 -0
  632. package/src/interfaces/rest/webhook-router.ts +50 -0
  633. package/src/kernel/compensation/executor.ts +61 -0
  634. package/src/kernel/compensation/types.ts +26 -0
  635. package/src/kernel/database/adapter.ts +13 -0
  636. package/src/kernel/database/drizzle-db.ts +56 -0
  637. package/src/kernel/database/migrate.ts +76 -0
  638. package/src/kernel/database/plugin-types.ts +34 -0
  639. package/src/kernel/database/schema.ts +49 -0
  640. package/src/kernel/database/scoped-db.ts +68 -0
  641. package/src/kernel/database/tx-context.ts +46 -0
  642. package/src/kernel/error-mapper.ts +15 -0
  643. package/src/kernel/errors.ts +89 -0
  644. package/src/kernel/factory/repository-factory.ts +242 -0
  645. package/src/kernel/hooks/create-context.ts +43 -0
  646. package/src/kernel/hooks/executor.ts +88 -0
  647. package/src/kernel/hooks/registry.ts +74 -0
  648. package/src/kernel/hooks/types.ts +52 -0
  649. package/src/kernel/http-error.ts +44 -0
  650. package/src/kernel/jobs/adapter.ts +36 -0
  651. package/src/kernel/jobs/drizzle-adapter.ts +58 -0
  652. package/src/kernel/jobs/runner.ts +153 -0
  653. package/src/kernel/jobs/schema.ts +46 -0
  654. package/src/kernel/jobs/types.ts +30 -0
  655. package/src/kernel/local-api.ts +185 -0
  656. package/src/kernel/plugin/manifest.ts +253 -0
  657. package/src/kernel/query/executor.ts +184 -0
  658. package/src/kernel/query/registry.ts +46 -0
  659. package/src/kernel/result.ts +33 -0
  660. package/src/kernel/schema/extra-columns.ts +37 -0
  661. package/src/kernel/service-registry.ts +76 -0
  662. package/src/kernel/service-timing.ts +89 -0
  663. package/src/kernel/state-machine/machine.ts +101 -0
  664. package/src/modules/analytics/drizzle-adapter.ts +426 -0
  665. package/src/modules/analytics/hooks.ts +11 -0
  666. package/src/modules/analytics/models.ts +125 -0
  667. package/src/modules/analytics/repository/index.ts +6 -0
  668. package/src/modules/analytics/service.ts +245 -0
  669. package/src/modules/analytics/types.ts +180 -0
  670. package/src/modules/audit/hooks.ts +78 -0
  671. package/src/modules/audit/schema.ts +33 -0
  672. package/src/modules/audit/service.ts +151 -0
  673. package/src/modules/cart/access.ts +27 -0
  674. package/src/modules/cart/matcher.ts +26 -0
  675. package/src/modules/cart/repository/index.ts +234 -0
  676. package/src/modules/cart/schema.ts +42 -0
  677. package/src/modules/cart/schemas.ts +38 -0
  678. package/src/modules/cart/service.ts +541 -0
  679. package/src/modules/catalog/repository/index.ts +772 -0
  680. package/src/modules/catalog/schema.ts +203 -0
  681. package/src/modules/catalog/schemas.ts +104 -0
  682. package/src/modules/catalog/service.ts +1544 -0
  683. package/src/modules/customers/repository/index.ts +327 -0
  684. package/src/modules/customers/schema.ts +64 -0
  685. package/src/modules/customers/service.ts +171 -0
  686. package/src/modules/fulfillment/repository/index.ts +426 -0
  687. package/src/modules/fulfillment/schema.ts +101 -0
  688. package/src/modules/fulfillment/service.ts +555 -0
  689. package/src/modules/fulfillment/types.ts +59 -0
  690. package/src/modules/inventory/repository/index.ts +509 -0
  691. package/src/modules/inventory/schema.ts +94 -0
  692. package/src/modules/inventory/schemas.ts +38 -0
  693. package/src/modules/inventory/service.ts +490 -0
  694. package/src/modules/media/adapter.ts +17 -0
  695. package/src/modules/media/repository/index.ts +274 -0
  696. package/src/modules/media/schema.ts +41 -0
  697. package/src/modules/media/service.ts +151 -0
  698. package/src/modules/orders/repository/index.ts +287 -0
  699. package/src/modules/orders/schema.ts +66 -0
  700. package/src/modules/orders/service.ts +619 -0
  701. package/src/modules/orders/stale-order-cleanup.ts +76 -0
  702. package/src/modules/organization/service.ts +191 -0
  703. package/src/modules/payments/adapter.ts +47 -0
  704. package/src/modules/payments/repository/index.ts +6 -0
  705. package/src/modules/payments/service.ts +107 -0
  706. package/src/modules/pricing/repository/index.ts +291 -0
  707. package/src/modules/pricing/schema.ts +71 -0
  708. package/src/modules/pricing/schemas.ts +38 -0
  709. package/src/modules/pricing/service.ts +494 -0
  710. package/src/modules/promotions/repository/index.ts +325 -0
  711. package/src/modules/promotions/schema.ts +62 -0
  712. package/src/modules/promotions/schemas.ts +38 -0
  713. package/src/modules/promotions/service.ts +598 -0
  714. package/src/modules/search/adapter.ts +57 -0
  715. package/src/modules/search/hooks.ts +12 -0
  716. package/src/modules/search/repository/index.ts +6 -0
  717. package/src/modules/search/service.ts +315 -0
  718. package/src/modules/shipping/calculator.ts +188 -0
  719. package/src/modules/shipping/repository/index.ts +6 -0
  720. package/src/modules/shipping/service.ts +51 -0
  721. package/src/modules/tax/adapter.ts +60 -0
  722. package/src/modules/tax/repository/index.ts +6 -0
  723. package/src/modules/tax/service.ts +53 -0
  724. package/src/modules/webhooks/hook.ts +34 -0
  725. package/src/modules/webhooks/repository/index.ts +278 -0
  726. package/src/modules/webhooks/schema.ts +56 -0
  727. package/src/modules/webhooks/service.ts +117 -0
  728. package/src/modules/webhooks/signing.ts +6 -0
  729. package/src/modules/webhooks/ssrf-guard.ts +71 -0
  730. package/src/modules/webhooks/tasks.ts +52 -0
  731. package/src/modules/webhooks/worker.ts +134 -0
  732. package/src/runtime/commerce.ts +145 -0
  733. package/src/runtime/kernel.ts +419 -0
  734. package/src/runtime/logger.ts +36 -0
  735. package/src/runtime/server.ts +345 -0
  736. package/src/runtime/shutdown.ts +43 -0
  737. package/src/test-utils/create-pglite-adapter.ts +129 -0
  738. package/src/test-utils/create-plugin-test-app.ts +128 -0
  739. package/src/test-utils/create-repository-test-harness.ts +16 -0
  740. package/src/test-utils/create-test-config.ts +190 -0
  741. package/src/test-utils/create-test-kernel.ts +7 -0
  742. package/src/test-utils/create-test-plugin-context.ts +75 -0
  743. package/src/test-utils/rest-api-test-utils.ts +265 -0
  744. package/src/test-utils/test-actors.ts +62 -0
  745. package/src/test-utils/typed-hooks.ts +54 -0
  746. package/src/types/commerce-types.ts +34 -0
  747. package/src/utils/id.ts +3 -0
  748. package/src/utils/logger.ts +18 -0
  749. package/src/utils/pagination.ts +22 -0
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Drizzle Database Type Definitions
3
+ *
4
+ * This module provides type-safe, driver-agnostic database access for
5
+ * PostgreSQL repositories.
6
+ *
7
+ * We use `PgDatabase` from `drizzle-orm/pg-core` — the base class that all
8
+ * PostgreSQL drivers extend (postgres-js, pglite, node-postgres, bun-sql).
9
+ * This means:
10
+ *
11
+ * - Repositories accept any PG driver without casts
12
+ * - PGlite in tests and postgres-js in production use the same type
13
+ * - Row types are fully inferred from pgTable schema definitions
14
+ * - No coupling to any specific driver package
15
+ */
16
+ import * as schema from "./schema";
17
+ /**
18
+ * Re-export schema for convenience
19
+ */
20
+ export { schema };
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Programmatic database schema management.
3
+ *
4
+ * For npm consumers who don't have access to the raw .ts schema files,
5
+ * this module provides:
6
+ *
7
+ * 1. `getSchemaFiles()` — returns schema module paths for use in drizzle.config.ts
8
+ * 2. `getSchema()` — returns the combined Drizzle schema object
9
+ * 3. `pushSchema()` — programmatic push (creates tables if not exist)
10
+ *
11
+ * Usage in consumer's drizzle.config.ts:
12
+ *
13
+ * import { getSchema } from "@unifiedcommerce/core";
14
+ * import { defineConfig } from "drizzle-kit";
15
+ *
16
+ * export default defineConfig({
17
+ * dialect: "postgresql",
18
+ * schema: getSchema(),
19
+ * dbCredentials: { url: process.env.DATABASE_URL! },
20
+ * });
21
+ */
22
+ import type { CommerceConfig } from "../../config/types";
23
+ import * as schema from "./schema";
24
+ /**
25
+ * Returns the combined Drizzle schema object with all table definitions.
26
+ * Use this in your own drizzle.config.ts or for programmatic schema inspection.
27
+ */
28
+ export declare function getSchema(): typeof schema;
29
+ /**
30
+ * Returns core schema merged with all plugin schemas from `config.customSchemas[]`.
31
+ * Throws if a plugin table name collides with a core table name.
32
+ */
33
+ export declare function buildSchema(config?: CommerceConfig): Record<string, unknown>;
34
+ /**
35
+ * Returns a list of all schema table names defined by the commerce engine.
36
+ */
37
+ export declare function getTableNames(): string[];
38
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../src/kernel/database/migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AAEnC;;;GAGG;AACH,wBAAgB,SAAS,kBAExB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAwB5E;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,EAAE,CASxC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Programmatic database schema management.
3
+ *
4
+ * For npm consumers who don't have access to the raw .ts schema files,
5
+ * this module provides:
6
+ *
7
+ * 1. `getSchemaFiles()` — returns schema module paths for use in drizzle.config.ts
8
+ * 2. `getSchema()` — returns the combined Drizzle schema object
9
+ * 3. `pushSchema()` — programmatic push (creates tables if not exist)
10
+ *
11
+ * Usage in consumer's drizzle.config.ts:
12
+ *
13
+ * import { getSchema } from "@unifiedcommerce/core";
14
+ * import { defineConfig } from "drizzle-kit";
15
+ *
16
+ * export default defineConfig({
17
+ * dialect: "postgresql",
18
+ * schema: getSchema(),
19
+ * dbCredentials: { url: process.env.DATABASE_URL! },
20
+ * });
21
+ */
22
+ import * as schema from "./schema";
23
+ /**
24
+ * Returns the combined Drizzle schema object with all table definitions.
25
+ * Use this in your own drizzle.config.ts or for programmatic schema inspection.
26
+ */
27
+ export function getSchema() {
28
+ return schema;
29
+ }
30
+ /**
31
+ * Returns core schema merged with all plugin schemas from `config.customSchemas[]`.
32
+ * Throws if a plugin table name collides with a core table name.
33
+ */
34
+ export function buildSchema(config) {
35
+ const merged = { ...schema };
36
+ if (!config?.customSchemas?.length)
37
+ return merged;
38
+ const coreKeys = new Set(Object.keys(schema));
39
+ for (const pluginSchema of config.customSchemas) {
40
+ for (const [key, value] of Object.entries(pluginSchema)) {
41
+ if (coreKeys.has(key)) {
42
+ throw new Error(`Plugin schema name collision: "${key}" already exists in core schema`);
43
+ }
44
+ if (key in merged) {
45
+ throw new Error(`Plugin schema name collision: "${key}" is defined by multiple plugins`);
46
+ }
47
+ merged[key] = value;
48
+ }
49
+ }
50
+ return merged;
51
+ }
52
+ /**
53
+ * Returns a list of all schema table names defined by the commerce engine.
54
+ */
55
+ export function getTableNames() {
56
+ return Object.entries(schema)
57
+ .filter(([_, value]) => value != null &&
58
+ typeof value === "object" &&
59
+ "getSQL" in value)
60
+ .map(([key]) => key);
61
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Canonical database types for plugin service constructors.
3
+ *
4
+ * Replaces the copy-pasted type definitions in every plugin's types.ts:
5
+ * type Db = PgDatabase<PgQueryResultHKT, Record<string, unknown>>
6
+ *
7
+ * Import from core instead:
8
+ * import type { PluginDb, PluginTxFn } from "@unifiedcommerce/core";
9
+ */
10
+ import type { PgDatabase, PgQueryResultHKT } from "drizzle-orm/pg-core";
11
+ /**
12
+ * Database instance type for plugin services.
13
+ * This is the Drizzle PgDatabase with an opaque schema record.
14
+ */
15
+ export type PluginDb = PgDatabase<PgQueryResultHKT, Record<string, unknown>>;
16
+ /**
17
+ * Transaction function type for plugin services that need
18
+ * transactional guarantees (e.g., POS transaction complete,
19
+ * gift card debit, inventory reservation).
20
+ *
21
+ * Usage:
22
+ * constructor(private db: PluginDb, private txFn: PluginTxFn) {}
23
+ *
24
+ * async doWork() {
25
+ * return this.txFn(async (tx) => {
26
+ * await tx.insert(...).values(...);
27
+ * await tx.update(...).set(...);
28
+ * });
29
+ * }
30
+ */
31
+ export type PluginTxFn = <T>(fn: (tx: PluginDb) => Promise<T>) => Promise<T>;
32
+ //# sourceMappingURL=plugin-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-types.d.ts","sourceRoot":"","sources":["../../../src/kernel/database/plugin-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAExE;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE7E;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Canonical database types for plugin service constructors.
3
+ *
4
+ * Replaces the copy-pasted type definitions in every plugin's types.ts:
5
+ * type Db = PgDatabase<PgQueryResultHKT, Record<string, unknown>>
6
+ *
7
+ * Import from core instead:
8
+ * import type { PluginDb, PluginTxFn } from "@unifiedcommerce/core";
9
+ */
10
+ export {};
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Combined schema barrel for Drizzle.
3
+ *
4
+ * Single source of truth for all core table definitions. Both drizzle-kit
5
+ * (via drizzle.config.ts) and the TypeScript type system consume this file.
6
+ *
7
+ * Drizzle-kit resolves re-exports, so pointing the config schema option
8
+ * at this one file discovers every core table. Plugin schemas live in
9
+ * their own packages and are referenced via glob patterns.
10
+ */
11
+ export * from "../../auth/auth-schema";
12
+ export * from "../../modules/catalog/schema";
13
+ export * from "../../modules/inventory/schema";
14
+ export * from "../../modules/cart/schema";
15
+ export * from "../../modules/orders/schema";
16
+ export * from "../../modules/customers/schema";
17
+ export * from "../../modules/pricing/schema";
18
+ export * from "../../modules/promotions/schema";
19
+ export * from "../../modules/media/schema";
20
+ export * from "../../modules/webhooks/schema";
21
+ export * from "../../modules/fulfillment/schema";
22
+ export * from "../jobs/schema";
23
+ export * from "../../modules/audit/schema";
24
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/kernel/database/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,cAAc,wBAAwB,CAAC;AAGvC,cAAc,8BAA8B,CAAC;AAG7C,cAAc,gCAAgC,CAAC;AAG/C,cAAc,2BAA2B,CAAC;AAG1C,cAAc,6BAA6B,CAAC;AAG5C,cAAc,gCAAgC,CAAC;AAG/C,cAAc,8BAA8B,CAAC;AAG7C,cAAc,iCAAiC,CAAC;AAGhD,cAAc,4BAA4B,CAAC;AAG3C,cAAc,+BAA+B,CAAC;AAG9C,cAAc,kCAAkC,CAAC;AAGjD,cAAc,gBAAgB,CAAC;AAG/B,cAAc,4BAA4B,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Combined schema barrel for Drizzle.
3
+ *
4
+ * Single source of truth for all core table definitions. Both drizzle-kit
5
+ * (via drizzle.config.ts) and the TypeScript type system consume this file.
6
+ *
7
+ * Drizzle-kit resolves re-exports, so pointing the config schema option
8
+ * at this one file discovers every core table. Plugin schemas live in
9
+ * their own packages and are referenced via glob patterns.
10
+ */
11
+ // Auth (Better Auth generated tables)
12
+ export * from "../../auth/auth-schema";
13
+ // Catalog module
14
+ export * from "../../modules/catalog/schema";
15
+ // Inventory module
16
+ export * from "../../modules/inventory/schema";
17
+ // Cart module
18
+ export * from "../../modules/cart/schema";
19
+ // Orders module
20
+ export * from "../../modules/orders/schema";
21
+ // Customers module
22
+ export * from "../../modules/customers/schema";
23
+ // Pricing module
24
+ export * from "../../modules/pricing/schema";
25
+ // Promotions module
26
+ export * from "../../modules/promotions/schema";
27
+ // Media module
28
+ export * from "../../modules/media/schema";
29
+ // Webhooks module
30
+ export * from "../../modules/webhooks/schema";
31
+ // Fulfillment module
32
+ export * from "../../modules/fulfillment/schema";
33
+ // Jobs (kernel)
34
+ export * from "../jobs/schema";
35
+ // Audit module
36
+ export * from "../../modules/audit/schema";
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Scoped DB Proxy
3
+ *
4
+ * Wraps a Drizzle PgDatabase instance so that INSERT operations on
5
+ * org-scoped tables automatically include the actor's organizationId.
6
+ *
7
+ * Plugin route handlers receive this scoped db via the router() builder.
8
+ * They write normal Drizzle inserts without ever mentioning organizationId:
9
+ *
10
+ * const [card] = await db.insert(giftCards)
11
+ * .values({ code: "ABC", balance: 5000 })
12
+ * .returning();
13
+ * // organizationId is auto-set from the actor context
14
+ *
15
+ * SELECT/UPDATE/DELETE scoping is handled at the repository/service layer
16
+ * via resolveOrgId(). The proxy focuses on INSERT auto-stamping because
17
+ * that is the operation most commonly forgotten by plugin developers.
18
+ */
19
+ export declare function createScopedDb<TDb>(rawDb: TDb, organizationId: string): TDb;
20
+ //# sourceMappingURL=scoped-db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoped-db.d.ts","sourceRoot":"","sources":["../../../src/kernel/database/scoped-db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAUH,wBAAgB,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,GAAG,GAAG,CAwC3E"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Scoped DB Proxy
3
+ *
4
+ * Wraps a Drizzle PgDatabase instance so that INSERT operations on
5
+ * org-scoped tables automatically include the actor's organizationId.
6
+ *
7
+ * Plugin route handlers receive this scoped db via the router() builder.
8
+ * They write normal Drizzle inserts without ever mentioning organizationId:
9
+ *
10
+ * const [card] = await db.insert(giftCards)
11
+ * .values({ code: "ABC", balance: 5000 })
12
+ * .returning();
13
+ * // organizationId is auto-set from the actor context
14
+ *
15
+ * SELECT/UPDATE/DELETE scoping is handled at the repository/service layer
16
+ * via resolveOrgId(). The proxy focuses on INSERT auto-stamping because
17
+ * that is the operation most commonly forgotten by plugin developers.
18
+ */
19
+ import { getTableColumns } from "drizzle-orm";
20
+ function isOrgScoped(table) {
21
+ const columns = getTableColumns(table);
22
+ return "organizationId" in columns;
23
+ }
24
+ export function createScopedDb(rawDb, organizationId) {
25
+ if (!rawDb || typeof rawDb !== "object")
26
+ return rawDb;
27
+ return new Proxy(rawDb, {
28
+ get(target, prop, receiver) {
29
+ const value = Reflect.get(target, prop, receiver);
30
+ if (prop === "insert" && typeof value === "function") {
31
+ return (table) => {
32
+ const builder = value.call(target, table);
33
+ if (!isOrgScoped(table))
34
+ return builder;
35
+ // Wrap .values() to auto-inject organizationId
36
+ const originalValues = builder.values;
37
+ if (typeof originalValues !== "function")
38
+ return builder;
39
+ return new Proxy(builder, {
40
+ get(t, p, r) {
41
+ if (p === "values") {
42
+ return (data) => {
43
+ const stamp = (row) => ({
44
+ ...row,
45
+ organizationId,
46
+ });
47
+ const stamped = Array.isArray(data)
48
+ ? data.map(stamp)
49
+ : stamp(data);
50
+ return originalValues.call(t, stamped);
51
+ };
52
+ }
53
+ const v = Reflect.get(t, p, r);
54
+ return typeof v === "function" ? v.bind(t) : v;
55
+ },
56
+ });
57
+ };
58
+ }
59
+ return typeof value === "function" ? value.bind(target) : value;
60
+ },
61
+ });
62
+ }
@@ -0,0 +1,15 @@
1
+ import type { Actor } from "../../auth/types";
2
+ import type { DatabaseAdapter } from "./adapter";
3
+ export interface TxContext<TTx = unknown> {
4
+ tx: TTx;
5
+ actor: Actor | null;
6
+ requestId: string;
7
+ }
8
+ export interface WithTransactionOptions {
9
+ actor: Actor | null;
10
+ requestId?: string;
11
+ }
12
+ export declare function createTxContext<TTx>(tx: TTx, options: WithTransactionOptions): TxContext<TTx>;
13
+ export declare function withTransaction<TDb, TTx, TResult>(database: DatabaseAdapter<TDb, TTx>, options: WithTransactionOptions, fn: (ctx: TxContext<TTx>) => Promise<TResult>): Promise<TResult>;
14
+ export declare function reuseOrCreateTxContext<TTx>(tx: TTx, options: WithTransactionOptions, existing?: TxContext<TTx> | null): TxContext<TTx>;
15
+ //# sourceMappingURL=tx-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx-context.d.ts","sourceRoot":"","sources":["../../../src/kernel/database/tx-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,MAAM,WAAW,SAAS,CAAC,GAAG,GAAG,OAAO;IACtC,EAAE,EAAE,GAAG,CAAC;IACR,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,eAAe,CAAC,GAAG,EACjC,EAAE,EAAE,GAAG,EACP,OAAO,EAAE,sBAAsB,GAC9B,SAAS,CAAC,GAAG,CAAC,CAMhB;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EACrD,QAAQ,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,EACnC,OAAO,EAAE,sBAAsB,EAC/B,EAAE,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,GAC5C,OAAO,CAAC,OAAO,CAAC,CAIlB;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EACxC,EAAE,EAAE,GAAG,EACP,OAAO,EAAE,sBAAsB,EAC/B,QAAQ,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,GAC/B,SAAS,CAAC,GAAG,CAAC,CAKhB"}
@@ -0,0 +1,19 @@
1
+ import { randomUUID } from "node:crypto";
2
+ export function createTxContext(tx, options) {
3
+ return {
4
+ tx,
5
+ actor: options.actor,
6
+ requestId: options.requestId ?? randomUUID(),
7
+ };
8
+ }
9
+ export async function withTransaction(database, options, fn) {
10
+ return database.transaction(async (tx) => {
11
+ return fn(createTxContext(tx, options));
12
+ });
13
+ }
14
+ export function reuseOrCreateTxContext(tx, options, existing) {
15
+ if (existing) {
16
+ return existing;
17
+ }
18
+ return createTxContext(tx, options);
19
+ }
@@ -0,0 +1,3 @@
1
+ import type { ContentfulStatusCode } from "hono/utils/http-status";
2
+ export declare function mapErrorToStatus(error: unknown): ContentfulStatusCode;
3
+ //# sourceMappingURL=error-mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-mapper.d.ts","sourceRoot":"","sources":["../../src/kernel/error-mapper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAUnE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAGrE"}
@@ -0,0 +1,12 @@
1
+ import { toCommerceError } from "./errors";
2
+ const statusByCode = {
3
+ NOT_FOUND: 404,
4
+ VALIDATION_FAILED: 422,
5
+ FORBIDDEN: 403,
6
+ CONFLICT: 409,
7
+ INVALID_TRANSITION: 422,
8
+ };
9
+ export function mapErrorToStatus(error) {
10
+ const normalized = toCommerceError(error);
11
+ return statusByCode[normalized.code] ?? 500;
12
+ }
@@ -0,0 +1,38 @@
1
+ export interface CommerceError {
2
+ code: string;
3
+ message: string;
4
+ details?: unknown;
5
+ }
6
+ export interface FieldError {
7
+ field: string;
8
+ message: string;
9
+ }
10
+ export declare class CommerceNotFoundError extends Error implements CommerceError {
11
+ details?: unknown | undefined;
12
+ code: "NOT_FOUND";
13
+ constructor(message: string, details?: unknown | undefined);
14
+ }
15
+ export declare class CommerceValidationError extends Error implements CommerceError {
16
+ fieldErrors?: FieldError[] | undefined;
17
+ details?: unknown | undefined;
18
+ code: "VALIDATION_FAILED";
19
+ constructor(message: string, fieldErrors?: FieldError[] | undefined, details?: unknown | undefined);
20
+ }
21
+ export declare class CommerceForbiddenError extends Error implements CommerceError {
22
+ details?: unknown | undefined;
23
+ code: "FORBIDDEN";
24
+ constructor(message: string, details?: unknown | undefined);
25
+ }
26
+ export declare class CommerceConflictError extends Error implements CommerceError {
27
+ details?: unknown | undefined;
28
+ code: "CONFLICT";
29
+ constructor(message: string, details?: unknown | undefined);
30
+ }
31
+ export declare class CommerceInvalidTransitionError extends Error implements CommerceError {
32
+ details?: unknown | undefined;
33
+ code: "INVALID_TRANSITION";
34
+ constructor(message: string, details?: unknown | undefined);
35
+ }
36
+ export declare function isCommerceError(value: unknown): value is CommerceError;
37
+ export declare function toCommerceError(error: unknown): CommerceError;
38
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/kernel/errors.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,qBAAsB,SAAQ,KAAM,YAAW,aAAa;IAI9D,OAAO,CAAC,EAAE,OAAO;IAH1B,IAAI,EAAG,WAAW,CAAU;gBAE1B,OAAO,EAAE,MAAM,EACR,OAAO,CAAC,EAAE,OAAO,YAAA;CAK3B;AAED,qBAAa,uBAAwB,SAAQ,KAAM,YAAW,aAAa;IAIhE,WAAW,CAAC,EAAE,UAAU,EAAE;IAC1B,OAAO,CAAC,EAAE,OAAO;IAJ1B,IAAI,EAAG,mBAAmB,CAAU;gBAElC,OAAO,EAAE,MAAM,EACR,WAAW,CAAC,EAAE,UAAU,EAAE,YAAA,EAC1B,OAAO,CAAC,EAAE,OAAO,YAAA;CAK3B;AAED,qBAAa,sBAAuB,SAAQ,KAAM,YAAW,aAAa;IAI/D,OAAO,CAAC,EAAE,OAAO;IAH1B,IAAI,EAAG,WAAW,CAAU;gBAE1B,OAAO,EAAE,MAAM,EACR,OAAO,CAAC,EAAE,OAAO,YAAA;CAK3B;AAED,qBAAa,qBAAsB,SAAQ,KAAM,YAAW,aAAa;IAI9D,OAAO,CAAC,EAAE,OAAO;IAH1B,IAAI,EAAG,UAAU,CAAU;gBAEzB,OAAO,EAAE,MAAM,EACR,OAAO,CAAC,EAAE,OAAO,YAAA;CAK3B;AAED,qBAAa,8BAA+B,SAAQ,KAAM,YAAW,aAAa;IAIvE,OAAO,CAAC,EAAE,OAAO;IAH1B,IAAI,EAAG,oBAAoB,CAAU;gBAEnC,OAAO,EAAE,MAAM,EACR,OAAO,CAAC,EAAE,OAAO,YAAA;CAK3B;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAGtE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAgB7D"}
@@ -0,0 +1,69 @@
1
+ export class CommerceNotFoundError extends Error {
2
+ details;
3
+ code = "NOT_FOUND";
4
+ constructor(message, details) {
5
+ super(message);
6
+ this.details = details;
7
+ this.name = "CommerceNotFoundError";
8
+ }
9
+ }
10
+ export class CommerceValidationError extends Error {
11
+ fieldErrors;
12
+ details;
13
+ code = "VALIDATION_FAILED";
14
+ constructor(message, fieldErrors, details) {
15
+ super(message);
16
+ this.fieldErrors = fieldErrors;
17
+ this.details = details;
18
+ this.name = "CommerceValidationError";
19
+ }
20
+ }
21
+ export class CommerceForbiddenError extends Error {
22
+ details;
23
+ code = "FORBIDDEN";
24
+ constructor(message, details) {
25
+ super(message);
26
+ this.details = details;
27
+ this.name = "CommerceForbiddenError";
28
+ }
29
+ }
30
+ export class CommerceConflictError extends Error {
31
+ details;
32
+ code = "CONFLICT";
33
+ constructor(message, details) {
34
+ super(message);
35
+ this.details = details;
36
+ this.name = "CommerceConflictError";
37
+ }
38
+ }
39
+ export class CommerceInvalidTransitionError extends Error {
40
+ details;
41
+ code = "INVALID_TRANSITION";
42
+ constructor(message, details) {
43
+ super(message);
44
+ this.details = details;
45
+ this.name = "CommerceInvalidTransitionError";
46
+ }
47
+ }
48
+ export function isCommerceError(value) {
49
+ if (!value || typeof value !== "object")
50
+ return false;
51
+ return "code" in value && "message" in value;
52
+ }
53
+ export function toCommerceError(error) {
54
+ if (isCommerceError(error)) {
55
+ return error;
56
+ }
57
+ if (error instanceof Error) {
58
+ return {
59
+ code: "INTERNAL_ERROR",
60
+ message: error.message,
61
+ details: { name: error.name },
62
+ };
63
+ }
64
+ return {
65
+ code: "INTERNAL_ERROR",
66
+ message: "Unexpected server error",
67
+ details: error,
68
+ };
69
+ }
@@ -0,0 +1,20 @@
1
+ import type { BaseRepository } from "./repository-factory";
2
+ /**
3
+ * Creates an in-memory implementation of BaseRepository for testing.
4
+ *
5
+ * Data is stored in a Map<string, TRow>. The `_store` property is exposed
6
+ * for test assertions (e.g., checking store size, seeding data).
7
+ *
8
+ * Usage:
9
+ * ```typescript
10
+ * const repo = createInMemoryRepository<Promotion, PromotionInsert>()
11
+ * await repo.create({ id: "promo-1", name: "Summer Sale", ... })
12
+ * const found = await repo.findById("promo-1")
13
+ * ```
14
+ */
15
+ export declare function createInMemoryRepository<TRow extends {
16
+ id: string;
17
+ }, TInsert>(): BaseRepository<TRow, TInsert> & {
18
+ _store: Map<string, TRow>;
19
+ };
20
+ //# sourceMappingURL=in-memory-repository-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-repository-factory.d.ts","sourceRoot":"","sources":["../../../src/kernel/factory/in-memory-repository-factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAwB,MAAM,sBAAsB,CAAC;AAEjF;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAC3B,OAAO,KACJ,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG;IAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;CAAE,CAoFjE"}
@@ -0,0 +1,83 @@
1
+ import { CommerceNotFoundError } from "../errors";
2
+ /**
3
+ * Creates an in-memory implementation of BaseRepository for testing.
4
+ *
5
+ * Data is stored in a Map<string, TRow>. The `_store` property is exposed
6
+ * for test assertions (e.g., checking store size, seeding data).
7
+ *
8
+ * Usage:
9
+ * ```typescript
10
+ * const repo = createInMemoryRepository<Promotion, PromotionInsert>()
11
+ * await repo.create({ id: "promo-1", name: "Summer Sale", ... })
12
+ * const found = await repo.findById("promo-1")
13
+ * ```
14
+ */
15
+ export function createInMemoryRepository() {
16
+ const store = new Map();
17
+ function generateId() {
18
+ // Use crypto.randomUUID when available, fall back to timestamp-based
19
+ if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function") {
20
+ return crypto.randomUUID();
21
+ }
22
+ return `mem-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
23
+ }
24
+ function applyFilters(rows, filters) {
25
+ if (!filters)
26
+ return rows;
27
+ return rows.filter((row) => Object.entries(filters).every(([key, value]) => value === undefined || row[key] === value));
28
+ }
29
+ function applyPagination(rows, options) {
30
+ if (!options)
31
+ return rows;
32
+ const offset = options.offset ?? 0;
33
+ const sliced = rows.slice(offset);
34
+ if (options.limit !== undefined) {
35
+ return sliced.slice(0, options.limit);
36
+ }
37
+ return sliced;
38
+ }
39
+ const repo = {
40
+ _store: store,
41
+ async findById(id) {
42
+ return store.get(id);
43
+ },
44
+ async findMany(filters, options) {
45
+ const all = Array.from(store.values());
46
+ const filtered = applyFilters(all, filters);
47
+ return applyPagination(filtered, options);
48
+ },
49
+ async findAndCount(filters, options) {
50
+ const all = Array.from(store.values());
51
+ const filtered = applyFilters(all, filters);
52
+ const paginated = applyPagination(filtered, options);
53
+ return { rows: paginated, total: filtered.length };
54
+ },
55
+ async create(data) {
56
+ const id = data.id ??
57
+ generateId();
58
+ const row = { ...data, id };
59
+ store.set(id, row);
60
+ return row;
61
+ },
62
+ async createMany(data) {
63
+ const results = [];
64
+ for (const d of data) {
65
+ results.push(await repo.create(d));
66
+ }
67
+ return results;
68
+ },
69
+ async update(id, data) {
70
+ const existing = store.get(id);
71
+ if (!existing) {
72
+ throw new CommerceNotFoundError(`Record ${id} not found.`);
73
+ }
74
+ const updated = { ...existing, ...data };
75
+ store.set(id, updated);
76
+ return updated;
77
+ },
78
+ async delete(id) {
79
+ store.delete(id);
80
+ },
81
+ };
82
+ return repo;
83
+ }