@unifiedcommerce/core 0.4.2 → 0.4.4

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 (563) hide show
  1. package/dist/interfaces/rest/index.d.ts.map +1 -1
  2. package/dist/interfaces/rest/index.js +4 -17
  3. package/dist/runtime/server.d.ts.map +1 -1
  4. package/dist/runtime/server.js +33 -0
  5. package/package.json +1 -1
  6. package/src/interfaces/rest/index.ts +4 -18
  7. package/src/runtime/server.ts +33 -0
  8. package/dist/adapters/console-email.d.ts +0 -23
  9. package/dist/adapters/console-email.d.ts.map +0 -1
  10. package/dist/adapters/console-email.js +0 -38
  11. package/dist/auth/access.d.ts +0 -101
  12. package/dist/auth/access.d.ts.map +0 -1
  13. package/dist/auth/access.js +0 -128
  14. package/dist/auth/auth-schema.d.ts +0 -1475
  15. package/dist/auth/auth-schema.d.ts.map +0 -1
  16. package/dist/auth/auth-schema.js +0 -124
  17. package/dist/auth/middleware.d.ts +0 -5
  18. package/dist/auth/middleware.d.ts.map +0 -1
  19. package/dist/auth/middleware.js +0 -141
  20. package/dist/auth/org.d.ts +0 -22
  21. package/dist/auth/org.d.ts.map +0 -1
  22. package/dist/auth/org.js +0 -36
  23. package/dist/auth/permissions.d.ts +0 -4
  24. package/dist/auth/permissions.d.ts.map +0 -1
  25. package/dist/auth/permissions.js +0 -24
  26. package/dist/auth/setup.d.ts +0 -29
  27. package/dist/auth/setup.d.ts.map +0 -1
  28. package/dist/auth/setup.js +0 -117
  29. package/dist/auth/system-actor.d.ts +0 -7
  30. package/dist/auth/system-actor.d.ts.map +0 -1
  31. package/dist/auth/system-actor.js +0 -17
  32. package/dist/auth/types.d.ts +0 -11
  33. package/dist/auth/types.d.ts.map +0 -1
  34. package/dist/auth/types.js +0 -1
  35. package/dist/config/defaults.d.ts +0 -3
  36. package/dist/config/defaults.d.ts.map +0 -1
  37. package/dist/config/defaults.js +0 -80
  38. package/dist/config/define-config.d.ts +0 -9
  39. package/dist/config/define-config.d.ts.map +0 -1
  40. package/dist/config/define-config.js +0 -44
  41. package/dist/config/types.d.ts +0 -327
  42. package/dist/config/types.d.ts.map +0 -1
  43. package/dist/config/types.js +0 -1
  44. package/dist/generated/plugin-manifest.d.ts +0 -48
  45. package/dist/generated/plugin-manifest.d.ts.map +0 -1
  46. package/dist/generated/plugin-manifest.js +0 -20
  47. package/dist/hooks/checkout-completion.d.ts +0 -58
  48. package/dist/hooks/checkout-completion.d.ts.map +0 -1
  49. package/dist/hooks/checkout-completion.js +0 -137
  50. package/dist/hooks/checkout.d.ts +0 -99
  51. package/dist/hooks/checkout.d.ts.map +0 -1
  52. package/dist/hooks/checkout.js +0 -317
  53. package/dist/hooks/order-emails.d.ts +0 -16
  54. package/dist/hooks/order-emails.d.ts.map +0 -1
  55. package/dist/hooks/order-emails.js +0 -44
  56. package/dist/index.d.ts +0 -77
  57. package/dist/index.d.ts.map +0 -1
  58. package/dist/index.js +0 -45
  59. package/dist/interfaces/mcp/agent-prompt.d.ts +0 -16
  60. package/dist/interfaces/mcp/agent-prompt.d.ts.map +0 -1
  61. package/dist/interfaces/mcp/agent-prompt.js +0 -172
  62. package/dist/interfaces/mcp/context-enrichment.d.ts +0 -39
  63. package/dist/interfaces/mcp/context-enrichment.d.ts.map +0 -1
  64. package/dist/interfaces/mcp/context-enrichment.js +0 -119
  65. package/dist/interfaces/mcp/server.d.ts +0 -5
  66. package/dist/interfaces/mcp/server.d.ts.map +0 -1
  67. package/dist/interfaces/mcp/server.js +0 -30
  68. package/dist/interfaces/mcp/tool-builder.d.ts +0 -120
  69. package/dist/interfaces/mcp/tool-builder.d.ts.map +0 -1
  70. package/dist/interfaces/mcp/tool-builder.js +0 -224
  71. package/dist/interfaces/mcp/tools/analytics.d.ts +0 -42
  72. package/dist/interfaces/mcp/tools/analytics.d.ts.map +0 -1
  73. package/dist/interfaces/mcp/tools/analytics.js +0 -70
  74. package/dist/interfaces/mcp/tools/cart.d.ts +0 -14
  75. package/dist/interfaces/mcp/tools/cart.d.ts.map +0 -1
  76. package/dist/interfaces/mcp/tools/cart.js +0 -47
  77. package/dist/interfaces/mcp/tools/catalog.d.ts +0 -53
  78. package/dist/interfaces/mcp/tools/catalog.d.ts.map +0 -1
  79. package/dist/interfaces/mcp/tools/catalog.js +0 -284
  80. package/dist/interfaces/mcp/tools/index.d.ts +0 -3
  81. package/dist/interfaces/mcp/tools/index.d.ts.map +0 -1
  82. package/dist/interfaces/mcp/tools/index.js +0 -20
  83. package/dist/interfaces/mcp/tools/inventory.d.ts +0 -27
  84. package/dist/interfaces/mcp/tools/inventory.d.ts.map +0 -1
  85. package/dist/interfaces/mcp/tools/inventory.js +0 -143
  86. package/dist/interfaces/mcp/tools/orders.d.ts +0 -18
  87. package/dist/interfaces/mcp/tools/orders.d.ts.map +0 -1
  88. package/dist/interfaces/mcp/tools/orders.js +0 -82
  89. package/dist/interfaces/mcp/tools/pricing.d.ts +0 -29
  90. package/dist/interfaces/mcp/tools/pricing.d.ts.map +0 -1
  91. package/dist/interfaces/mcp/tools/pricing.js +0 -90
  92. package/dist/interfaces/mcp/tools/promotions.d.ts +0 -44
  93. package/dist/interfaces/mcp/tools/promotions.d.ts.map +0 -1
  94. package/dist/interfaces/mcp/tools/promotions.js +0 -109
  95. package/dist/interfaces/mcp/tools/registry.d.ts +0 -32
  96. package/dist/interfaces/mcp/tools/registry.d.ts.map +0 -1
  97. package/dist/interfaces/mcp/tools/registry.js +0 -55
  98. package/dist/interfaces/mcp/tools/search.d.ts +0 -14
  99. package/dist/interfaces/mcp/tools/search.d.ts.map +0 -1
  100. package/dist/interfaces/mcp/tools/search.js +0 -39
  101. package/dist/interfaces/mcp/tools/webhooks.d.ts +0 -15
  102. package/dist/interfaces/mcp/tools/webhooks.d.ts.map +0 -1
  103. package/dist/interfaces/mcp/tools/webhooks.js +0 -48
  104. package/dist/interfaces/mcp/transport.d.ts +0 -20
  105. package/dist/interfaces/mcp/transport.d.ts.map +0 -1
  106. package/dist/interfaces/mcp/transport.js +0 -99
  107. package/dist/interfaces/rest/customer-portal.d.ts +0 -5
  108. package/dist/interfaces/rest/customer-portal.d.ts.map +0 -1
  109. package/dist/interfaces/rest/customer-portal.js +0 -206
  110. package/dist/interfaces/rest/router.d.ts +0 -164
  111. package/dist/interfaces/rest/router.d.ts.map +0 -1
  112. package/dist/interfaces/rest/router.js +0 -259
  113. package/dist/interfaces/rest/routes/admin-jobs.d.ts +0 -5
  114. package/dist/interfaces/rest/routes/admin-jobs.d.ts.map +0 -1
  115. package/dist/interfaces/rest/routes/admin-jobs.js +0 -48
  116. package/dist/interfaces/rest/routes/audit.d.ts +0 -5
  117. package/dist/interfaces/rest/routes/audit.d.ts.map +0 -1
  118. package/dist/interfaces/rest/routes/audit.js +0 -43
  119. package/dist/interfaces/rest/routes/carts.d.ts +0 -5
  120. package/dist/interfaces/rest/routes/carts.d.ts.map +0 -1
  121. package/dist/interfaces/rest/routes/carts.js +0 -55
  122. package/dist/interfaces/rest/routes/catalog.d.ts +0 -5
  123. package/dist/interfaces/rest/routes/catalog.d.ts.map +0 -1
  124. package/dist/interfaces/rest/routes/catalog.js +0 -256
  125. package/dist/interfaces/rest/routes/checkout.d.ts +0 -5
  126. package/dist/interfaces/rest/routes/checkout.d.ts.map +0 -1
  127. package/dist/interfaces/rest/routes/checkout.js +0 -216
  128. package/dist/interfaces/rest/routes/customers.d.ts +0 -5
  129. package/dist/interfaces/rest/routes/customers.d.ts.map +0 -1
  130. package/dist/interfaces/rest/routes/customers.js +0 -74
  131. package/dist/interfaces/rest/routes/entity-aliases.d.ts +0 -18
  132. package/dist/interfaces/rest/routes/entity-aliases.d.ts.map +0 -1
  133. package/dist/interfaces/rest/routes/entity-aliases.js +0 -39
  134. package/dist/interfaces/rest/routes/inventory.d.ts +0 -5
  135. package/dist/interfaces/rest/routes/inventory.d.ts.map +0 -1
  136. package/dist/interfaces/rest/routes/inventory.js +0 -72
  137. package/dist/interfaces/rest/routes/media.d.ts +0 -5
  138. package/dist/interfaces/rest/routes/media.d.ts.map +0 -1
  139. package/dist/interfaces/rest/routes/media.js +0 -65
  140. package/dist/interfaces/rest/routes/orders.d.ts +0 -5
  141. package/dist/interfaces/rest/routes/orders.d.ts.map +0 -1
  142. package/dist/interfaces/rest/routes/orders.js +0 -64
  143. package/dist/interfaces/rest/routes/payments.d.ts +0 -5
  144. package/dist/interfaces/rest/routes/payments.d.ts.map +0 -1
  145. package/dist/interfaces/rest/routes/payments.js +0 -45
  146. package/dist/interfaces/rest/routes/pricing.d.ts +0 -5
  147. package/dist/interfaces/rest/routes/pricing.d.ts.map +0 -1
  148. package/dist/interfaces/rest/routes/pricing.js +0 -48
  149. package/dist/interfaces/rest/routes/promotions.d.ts +0 -5
  150. package/dist/interfaces/rest/routes/promotions.d.ts.map +0 -1
  151. package/dist/interfaces/rest/routes/promotions.js +0 -76
  152. package/dist/interfaces/rest/routes/search.d.ts +0 -5
  153. package/dist/interfaces/rest/routes/search.d.ts.map +0 -1
  154. package/dist/interfaces/rest/routes/search.js +0 -60
  155. package/dist/interfaces/rest/routes/webhooks.d.ts +0 -5
  156. package/dist/interfaces/rest/routes/webhooks.d.ts.map +0 -1
  157. package/dist/interfaces/rest/routes/webhooks.js +0 -39
  158. package/dist/interfaces/rest/schemas/admin-jobs.d.ts +0 -327
  159. package/dist/interfaces/rest/schemas/admin-jobs.d.ts.map +0 -1
  160. package/dist/interfaces/rest/schemas/admin-jobs.js +0 -37
  161. package/dist/interfaces/rest/schemas/audit.d.ts +0 -59
  162. package/dist/interfaces/rest/schemas/audit.d.ts.map +0 -1
  163. package/dist/interfaces/rest/schemas/audit.js +0 -43
  164. package/dist/interfaces/rest/schemas/carts.d.ts +0 -1456
  165. package/dist/interfaces/rest/schemas/carts.d.ts.map +0 -1
  166. package/dist/interfaces/rest/schemas/carts.js +0 -109
  167. package/dist/interfaces/rest/schemas/catalog.d.ts +0 -5452
  168. package/dist/interfaces/rest/schemas/catalog.d.ts.map +0 -1
  169. package/dist/interfaces/rest/schemas/catalog.js +0 -397
  170. package/dist/interfaces/rest/schemas/checkout.d.ts +0 -160
  171. package/dist/interfaces/rest/schemas/checkout.d.ts.map +0 -1
  172. package/dist/interfaces/rest/schemas/checkout.js +0 -60
  173. package/dist/interfaces/rest/schemas/customer-portal.d.ts +0 -2203
  174. package/dist/interfaces/rest/schemas/customer-portal.d.ts.map +0 -1
  175. package/dist/interfaces/rest/schemas/customer-portal.js +0 -177
  176. package/dist/interfaces/rest/schemas/customers.d.ts +0 -422
  177. package/dist/interfaces/rest/schemas/customers.d.ts.map +0 -1
  178. package/dist/interfaces/rest/schemas/customers.js +0 -150
  179. package/dist/interfaces/rest/schemas/inventory.d.ts +0 -561
  180. package/dist/interfaces/rest/schemas/inventory.d.ts.map +0 -1
  181. package/dist/interfaces/rest/schemas/inventory.js +0 -148
  182. package/dist/interfaces/rest/schemas/media.d.ts +0 -303
  183. package/dist/interfaces/rest/schemas/media.d.ts.map +0 -1
  184. package/dist/interfaces/rest/schemas/media.js +0 -69
  185. package/dist/interfaces/rest/schemas/orders.d.ts +0 -1792
  186. package/dist/interfaces/rest/schemas/orders.d.ts.map +0 -1
  187. package/dist/interfaces/rest/schemas/orders.js +0 -93
  188. package/dist/interfaces/rest/schemas/pricing.d.ts +0 -256
  189. package/dist/interfaces/rest/schemas/pricing.d.ts.map +0 -1
  190. package/dist/interfaces/rest/schemas/pricing.js +0 -72
  191. package/dist/interfaces/rest/schemas/promotions.d.ts +0 -363
  192. package/dist/interfaces/rest/schemas/promotions.d.ts.map +0 -1
  193. package/dist/interfaces/rest/schemas/promotions.js +0 -98
  194. package/dist/interfaces/rest/schemas/responses.d.ts +0 -4086
  195. package/dist/interfaces/rest/schemas/responses.d.ts.map +0 -1
  196. package/dist/interfaces/rest/schemas/responses.js +0 -74
  197. package/dist/interfaces/rest/schemas/search.d.ts +0 -247
  198. package/dist/interfaces/rest/schemas/search.d.ts.map +0 -1
  199. package/dist/interfaces/rest/schemas/search.js +0 -55
  200. package/dist/interfaces/rest/schemas/shared.d.ts +0 -95
  201. package/dist/interfaces/rest/schemas/shared.d.ts.map +0 -1
  202. package/dist/interfaces/rest/schemas/shared.js +0 -51
  203. package/dist/interfaces/rest/schemas/webhooks.d.ts +0 -221
  204. package/dist/interfaces/rest/schemas/webhooks.d.ts.map +0 -1
  205. package/dist/interfaces/rest/schemas/webhooks.js +0 -62
  206. package/dist/interfaces/rest/utils.d.ts +0 -45
  207. package/dist/interfaces/rest/utils.d.ts.map +0 -1
  208. package/dist/interfaces/rest/utils.js +0 -71
  209. package/dist/interfaces/rest/webhook-router.d.ts +0 -41
  210. package/dist/interfaces/rest/webhook-router.d.ts.map +0 -1
  211. package/dist/interfaces/rest/webhook-router.js +0 -36
  212. package/dist/kernel/compensation/executor.d.ts +0 -21
  213. package/dist/kernel/compensation/executor.d.ts.map +0 -1
  214. package/dist/kernel/compensation/executor.js +0 -36
  215. package/dist/kernel/compensation/types.d.ts +0 -25
  216. package/dist/kernel/compensation/types.d.ts.map +0 -1
  217. package/dist/kernel/compensation/types.js +0 -1
  218. package/dist/kernel/database/adapter.d.ts +0 -18
  219. package/dist/kernel/database/adapter.d.ts.map +0 -1
  220. package/dist/kernel/database/adapter.js +0 -3
  221. package/dist/kernel/database/drizzle-db.d.ts +0 -49
  222. package/dist/kernel/database/drizzle-db.d.ts.map +0 -1
  223. package/dist/kernel/database/drizzle-db.js +0 -20
  224. package/dist/kernel/database/migrate.d.ts +0 -38
  225. package/dist/kernel/database/migrate.d.ts.map +0 -1
  226. package/dist/kernel/database/migrate.js +0 -61
  227. package/dist/kernel/database/plugin-types.d.ts +0 -32
  228. package/dist/kernel/database/plugin-types.d.ts.map +0 -1
  229. package/dist/kernel/database/plugin-types.js +0 -10
  230. package/dist/kernel/database/schema.d.ts +0 -24
  231. package/dist/kernel/database/schema.d.ts.map +0 -1
  232. package/dist/kernel/database/schema.js +0 -36
  233. package/dist/kernel/database/scoped-db.d.ts +0 -20
  234. package/dist/kernel/database/scoped-db.d.ts.map +0 -1
  235. package/dist/kernel/database/scoped-db.js +0 -62
  236. package/dist/kernel/database/tx-context.d.ts +0 -15
  237. package/dist/kernel/database/tx-context.d.ts.map +0 -1
  238. package/dist/kernel/database/tx-context.js +0 -19
  239. package/dist/kernel/error-mapper.d.ts +0 -3
  240. package/dist/kernel/error-mapper.d.ts.map +0 -1
  241. package/dist/kernel/error-mapper.js +0 -12
  242. package/dist/kernel/errors.d.ts +0 -38
  243. package/dist/kernel/errors.d.ts.map +0 -1
  244. package/dist/kernel/errors.js +0 -69
  245. package/dist/kernel/factory/repository-factory.d.ts +0 -71
  246. package/dist/kernel/factory/repository-factory.d.ts.map +0 -1
  247. package/dist/kernel/factory/repository-factory.js +0 -138
  248. package/dist/kernel/hooks/create-context.d.ts +0 -25
  249. package/dist/kernel/hooks/create-context.d.ts.map +0 -1
  250. package/dist/kernel/hooks/create-context.js +0 -22
  251. package/dist/kernel/hooks/executor.d.ts +0 -12
  252. package/dist/kernel/hooks/executor.d.ts.map +0 -1
  253. package/dist/kernel/hooks/executor.js +0 -50
  254. package/dist/kernel/hooks/registry.d.ts +0 -28
  255. package/dist/kernel/hooks/registry.d.ts.map +0 -1
  256. package/dist/kernel/hooks/registry.js +0 -58
  257. package/dist/kernel/hooks/types.d.ts +0 -37
  258. package/dist/kernel/hooks/types.d.ts.map +0 -1
  259. package/dist/kernel/hooks/types.js +0 -1
  260. package/dist/kernel/http-error.d.ts +0 -30
  261. package/dist/kernel/http-error.d.ts.map +0 -1
  262. package/dist/kernel/http-error.js +0 -35
  263. package/dist/kernel/jobs/adapter.d.ts +0 -25
  264. package/dist/kernel/jobs/adapter.d.ts.map +0 -1
  265. package/dist/kernel/jobs/adapter.js +0 -9
  266. package/dist/kernel/jobs/drizzle-adapter.d.ts +0 -15
  267. package/dist/kernel/jobs/drizzle-adapter.d.ts.map +0 -1
  268. package/dist/kernel/jobs/drizzle-adapter.js +0 -42
  269. package/dist/kernel/jobs/runner.d.ts +0 -24
  270. package/dist/kernel/jobs/runner.d.ts.map +0 -1
  271. package/dist/kernel/jobs/runner.js +0 -114
  272. package/dist/kernel/jobs/schema.d.ts +0 -280
  273. package/dist/kernel/jobs/schema.d.ts.map +0 -1
  274. package/dist/kernel/jobs/schema.js +0 -37
  275. package/dist/kernel/jobs/types.d.ts +0 -30
  276. package/dist/kernel/jobs/types.d.ts.map +0 -1
  277. package/dist/kernel/jobs/types.js +0 -1
  278. package/dist/kernel/local-api.d.ts +0 -103
  279. package/dist/kernel/local-api.d.ts.map +0 -1
  280. package/dist/kernel/local-api.js +0 -89
  281. package/dist/kernel/plugin/manifest.d.ts +0 -90
  282. package/dist/kernel/plugin/manifest.d.ts.map +0 -1
  283. package/dist/kernel/plugin/manifest.js +0 -169
  284. package/dist/kernel/query/executor.d.ts +0 -21
  285. package/dist/kernel/query/executor.d.ts.map +0 -1
  286. package/dist/kernel/query/executor.js +0 -128
  287. package/dist/kernel/query/registry.d.ts +0 -33
  288. package/dist/kernel/query/registry.d.ts.map +0 -1
  289. package/dist/kernel/query/registry.js +0 -20
  290. package/dist/kernel/result.d.ts +0 -36
  291. package/dist/kernel/result.d.ts.map +0 -1
  292. package/dist/kernel/result.js +0 -16
  293. package/dist/kernel/schema/extra-columns.d.ts +0 -23
  294. package/dist/kernel/schema/extra-columns.d.ts.map +0 -1
  295. package/dist/kernel/schema/extra-columns.js +0 -10
  296. package/dist/kernel/service-registry.d.ts +0 -109
  297. package/dist/kernel/service-registry.d.ts.map +0 -1
  298. package/dist/kernel/service-registry.js +0 -26
  299. package/dist/kernel/service-timing.d.ts +0 -25
  300. package/dist/kernel/service-timing.d.ts.map +0 -1
  301. package/dist/kernel/service-timing.js +0 -62
  302. package/dist/kernel/state-machine/machine.d.ts +0 -24
  303. package/dist/kernel/state-machine/machine.d.ts.map +0 -1
  304. package/dist/kernel/state-machine/machine.js +0 -70
  305. package/dist/modules/analytics/drizzle-adapter.d.ts +0 -13
  306. package/dist/modules/analytics/drizzle-adapter.d.ts.map +0 -1
  307. package/dist/modules/analytics/drizzle-adapter.js +0 -358
  308. package/dist/modules/analytics/hooks.d.ts +0 -13
  309. package/dist/modules/analytics/hooks.d.ts.map +0 -1
  310. package/dist/modules/analytics/hooks.js +0 -12
  311. package/dist/modules/analytics/models.d.ts +0 -14
  312. package/dist/modules/analytics/models.d.ts.map +0 -1
  313. package/dist/modules/analytics/models.js +0 -118
  314. package/dist/modules/analytics/repository/index.d.ts +0 -5
  315. package/dist/modules/analytics/repository/index.d.ts.map +0 -1
  316. package/dist/modules/analytics/repository/index.js +0 -1
  317. package/dist/modules/analytics/service.d.ts +0 -45
  318. package/dist/modules/analytics/service.d.ts.map +0 -1
  319. package/dist/modules/analytics/service.js +0 -196
  320. package/dist/modules/analytics/types.d.ts +0 -119
  321. package/dist/modules/analytics/types.d.ts.map +0 -1
  322. package/dist/modules/analytics/types.js +0 -25
  323. package/dist/modules/audit/hooks.d.ts +0 -7
  324. package/dist/modules/audit/hooks.d.ts.map +0 -1
  325. package/dist/modules/audit/hooks.js +0 -67
  326. package/dist/modules/audit/schema.d.ts +0 -178
  327. package/dist/modules/audit/schema.d.ts.map +0 -1
  328. package/dist/modules/audit/schema.js +0 -21
  329. package/dist/modules/audit/service.d.ts +0 -38
  330. package/dist/modules/audit/service.d.ts.map +0 -1
  331. package/dist/modules/audit/service.js +0 -109
  332. package/dist/modules/cart/access.d.ts +0 -11
  333. package/dist/modules/cart/access.d.ts.map +0 -1
  334. package/dist/modules/cart/access.js +0 -18
  335. package/dist/modules/cart/matcher.d.ts +0 -20
  336. package/dist/modules/cart/matcher.d.ts.map +0 -1
  337. package/dist/modules/cart/matcher.js +0 -2
  338. package/dist/modules/cart/repository/index.d.ts +0 -45
  339. package/dist/modules/cart/repository/index.d.ts.map +0 -1
  340. package/dist/modules/cart/repository/index.js +0 -158
  341. package/dist/modules/cart/schema.d.ts +0 -359
  342. package/dist/modules/cart/schema.d.ts.map +0 -1
  343. package/dist/modules/cart/schema.js +0 -40
  344. package/dist/modules/cart/schemas.d.ts +0 -29
  345. package/dist/modules/cart/schemas.d.ts.map +0 -1
  346. package/dist/modules/cart/schemas.js +0 -14
  347. package/dist/modules/cart/service.d.ts +0 -63
  348. package/dist/modules/cart/service.d.ts.map +0 -1
  349. package/dist/modules/cart/service.js +0 -339
  350. package/dist/modules/catalog/repository/index.d.ts +0 -106
  351. package/dist/modules/catalog/repository/index.d.ts.map +0 -1
  352. package/dist/modules/catalog/repository/index.js +0 -455
  353. package/dist/modules/catalog/schema.d.ts +0 -1193
  354. package/dist/modules/catalog/schema.d.ts.map +0 -1
  355. package/dist/modules/catalog/schema.js +0 -149
  356. package/dist/modules/catalog/schemas.d.ts +0 -81
  357. package/dist/modules/catalog/schemas.d.ts.map +0 -1
  358. package/dist/modules/catalog/schemas.js +0 -62
  359. package/dist/modules/catalog/service.d.ts +0 -160
  360. package/dist/modules/catalog/service.d.ts.map +0 -1
  361. package/dist/modules/catalog/service.js +0 -759
  362. package/dist/modules/customers/repository/index.d.ts +0 -47
  363. package/dist/modules/customers/repository/index.d.ts.map +0 -1
  364. package/dist/modules/customers/repository/index.js +0 -206
  365. package/dist/modules/customers/schema.d.ts +0 -560
  366. package/dist/modules/customers/schema.d.ts.map +0 -1
  367. package/dist/modules/customers/schema.js +0 -60
  368. package/dist/modules/customers/service.d.ts +0 -27
  369. package/dist/modules/customers/service.d.ts.map +0 -1
  370. package/dist/modules/customers/service.js +0 -106
  371. package/dist/modules/fulfillment/repository/index.d.ts +0 -63
  372. package/dist/modules/fulfillment/repository/index.d.ts.map +0 -1
  373. package/dist/modules/fulfillment/repository/index.js +0 -268
  374. package/dist/modules/fulfillment/schema.d.ts +0 -655
  375. package/dist/modules/fulfillment/schema.d.ts.map +0 -1
  376. package/dist/modules/fulfillment/schema.js +0 -83
  377. package/dist/modules/fulfillment/service.d.ts +0 -58
  378. package/dist/modules/fulfillment/service.d.ts.map +0 -1
  379. package/dist/modules/fulfillment/service.js +0 -338
  380. package/dist/modules/fulfillment/types.d.ts +0 -44
  381. package/dist/modules/fulfillment/types.d.ts.map +0 -1
  382. package/dist/modules/fulfillment/types.js +0 -1
  383. package/dist/modules/inventory/repository/index.d.ts +0 -81
  384. package/dist/modules/inventory/repository/index.d.ts.map +0 -1
  385. package/dist/modules/inventory/repository/index.js +0 -310
  386. package/dist/modules/inventory/schema.d.ts +0 -570
  387. package/dist/modules/inventory/schema.d.ts.map +0 -1
  388. package/dist/modules/inventory/schema.js +0 -69
  389. package/dist/modules/inventory/schemas.d.ts +0 -31
  390. package/dist/modules/inventory/schemas.d.ts.map +0 -1
  391. package/dist/modules/inventory/schemas.js +0 -28
  392. package/dist/modules/inventory/service.d.ts +0 -69
  393. package/dist/modules/inventory/service.d.ts.map +0 -1
  394. package/dist/modules/inventory/service.js +0 -283
  395. package/dist/modules/media/adapter.d.ts +0 -16
  396. package/dist/modules/media/adapter.d.ts.map +0 -1
  397. package/dist/modules/media/adapter.js +0 -1
  398. package/dist/modules/media/repository/index.d.ts +0 -35
  399. package/dist/modules/media/repository/index.d.ts.map +0 -1
  400. package/dist/modules/media/repository/index.js +0 -176
  401. package/dist/modules/media/schema.d.ts +0 -289
  402. package/dist/modules/media/schema.d.ts.map +0 -1
  403. package/dist/modules/media/schema.js +0 -35
  404. package/dist/modules/media/service.d.ts +0 -42
  405. package/dist/modules/media/service.d.ts.map +0 -1
  406. package/dist/modules/media/service.js +0 -89
  407. package/dist/modules/orders/repository/index.d.ts +0 -48
  408. package/dist/modules/orders/repository/index.d.ts.map +0 -1
  409. package/dist/modules/orders/repository/index.js +0 -199
  410. package/dist/modules/orders/schema.d.ts +0 -672
  411. package/dist/modules/orders/schema.d.ts.map +0 -1
  412. package/dist/modules/orders/schema.js +0 -63
  413. package/dist/modules/orders/service.d.ts +0 -85
  414. package/dist/modules/orders/service.d.ts.map +0 -1
  415. package/dist/modules/orders/service.js +0 -313
  416. package/dist/modules/orders/stale-order-cleanup.d.ts +0 -27
  417. package/dist/modules/orders/stale-order-cleanup.d.ts.map +0 -1
  418. package/dist/modules/orders/stale-order-cleanup.js +0 -55
  419. package/dist/modules/organization/service.d.ts +0 -53
  420. package/dist/modules/organization/service.d.ts.map +0 -1
  421. package/dist/modules/organization/service.js +0 -151
  422. package/dist/modules/payments/adapter.d.ts +0 -42
  423. package/dist/modules/payments/adapter.d.ts.map +0 -1
  424. package/dist/modules/payments/adapter.js +0 -1
  425. package/dist/modules/payments/repository/index.d.ts +0 -5
  426. package/dist/modules/payments/repository/index.d.ts.map +0 -1
  427. package/dist/modules/payments/repository/index.js +0 -1
  428. package/dist/modules/payments/service.d.ts +0 -23
  429. package/dist/modules/payments/service.d.ts.map +0 -1
  430. package/dist/modules/payments/service.js +0 -72
  431. package/dist/modules/pricing/repository/index.d.ts +0 -34
  432. package/dist/modules/pricing/repository/index.d.ts.map +0 -1
  433. package/dist/modules/pricing/repository/index.js +0 -176
  434. package/dist/modules/pricing/schema.d.ts +0 -565
  435. package/dist/modules/pricing/schema.d.ts.map +0 -1
  436. package/dist/modules/pricing/schema.js +0 -57
  437. package/dist/modules/pricing/schemas.d.ts +0 -37
  438. package/dist/modules/pricing/schemas.d.ts.map +0 -1
  439. package/dist/modules/pricing/schemas.js +0 -30
  440. package/dist/modules/pricing/service.d.ts +0 -62
  441. package/dist/modules/pricing/service.d.ts.map +0 -1
  442. package/dist/modules/pricing/service.js +0 -308
  443. package/dist/modules/promotions/repository/index.d.ts +0 -41
  444. package/dist/modules/promotions/repository/index.d.ts.map +0 -1
  445. package/dist/modules/promotions/repository/index.js +0 -204
  446. package/dist/modules/promotions/schema.d.ts +0 -427
  447. package/dist/modules/promotions/schema.d.ts.map +0 -1
  448. package/dist/modules/promotions/schema.js +0 -52
  449. package/dist/modules/promotions/schemas.d.ts +0 -33
  450. package/dist/modules/promotions/schemas.d.ts.map +0 -1
  451. package/dist/modules/promotions/schemas.js +0 -32
  452. package/dist/modules/promotions/service.d.ts +0 -80
  453. package/dist/modules/promotions/service.d.ts.map +0 -1
  454. package/dist/modules/promotions/service.js +0 -347
  455. package/dist/modules/search/adapter.d.ts +0 -51
  456. package/dist/modules/search/adapter.d.ts.map +0 -1
  457. package/dist/modules/search/adapter.js +0 -1
  458. package/dist/modules/search/hooks.d.ts +0 -8
  459. package/dist/modules/search/hooks.d.ts.map +0 -1
  460. package/dist/modules/search/hooks.js +0 -6
  461. package/dist/modules/search/repository/index.d.ts +0 -5
  462. package/dist/modules/search/repository/index.d.ts.map +0 -1
  463. package/dist/modules/search/repository/index.js +0 -1
  464. package/dist/modules/search/service.d.ts +0 -24
  465. package/dist/modules/search/service.d.ts.map +0 -1
  466. package/dist/modules/search/service.js +0 -217
  467. package/dist/modules/shipping/calculator.d.ts +0 -42
  468. package/dist/modules/shipping/calculator.d.ts.map +0 -1
  469. package/dist/modules/shipping/calculator.js +0 -91
  470. package/dist/modules/shipping/repository/index.d.ts +0 -5
  471. package/dist/modules/shipping/repository/index.d.ts.map +0 -1
  472. package/dist/modules/shipping/repository/index.js +0 -1
  473. package/dist/modules/shipping/service.d.ts +0 -28
  474. package/dist/modules/shipping/service.d.ts.map +0 -1
  475. package/dist/modules/shipping/service.js +0 -20
  476. package/dist/modules/tax/adapter.d.ts +0 -58
  477. package/dist/modules/tax/adapter.d.ts.map +0 -1
  478. package/dist/modules/tax/adapter.js +0 -1
  479. package/dist/modules/tax/repository/index.d.ts +0 -5
  480. package/dist/modules/tax/repository/index.d.ts.map +0 -1
  481. package/dist/modules/tax/repository/index.js +0 -1
  482. package/dist/modules/tax/service.d.ts +0 -19
  483. package/dist/modules/tax/service.d.ts.map +0 -1
  484. package/dist/modules/tax/service.js +0 -34
  485. package/dist/modules/webhooks/hook.d.ts +0 -13
  486. package/dist/modules/webhooks/hook.d.ts.map +0 -1
  487. package/dist/modules/webhooks/hook.js +0 -29
  488. package/dist/modules/webhooks/repository/index.d.ts +0 -40
  489. package/dist/modules/webhooks/repository/index.d.ts.map +0 -1
  490. package/dist/modules/webhooks/repository/index.js +0 -175
  491. package/dist/modules/webhooks/schema.d.ts +0 -404
  492. package/dist/modules/webhooks/schema.d.ts.map +0 -1
  493. package/dist/modules/webhooks/schema.js +0 -40
  494. package/dist/modules/webhooks/service.d.ts +0 -23
  495. package/dist/modules/webhooks/service.d.ts.map +0 -1
  496. package/dist/modules/webhooks/service.js +0 -92
  497. package/dist/modules/webhooks/signing.d.ts +0 -2
  498. package/dist/modules/webhooks/signing.d.ts.map +0 -1
  499. package/dist/modules/webhooks/signing.js +0 -5
  500. package/dist/modules/webhooks/ssrf-guard.d.ts +0 -19
  501. package/dist/modules/webhooks/ssrf-guard.d.ts.map +0 -1
  502. package/dist/modules/webhooks/ssrf-guard.js +0 -79
  503. package/dist/modules/webhooks/tasks.d.ts +0 -16
  504. package/dist/modules/webhooks/tasks.d.ts.map +0 -1
  505. package/dist/modules/webhooks/tasks.js +0 -35
  506. package/dist/modules/webhooks/worker.d.ts +0 -21
  507. package/dist/modules/webhooks/worker.d.ts.map +0 -1
  508. package/dist/modules/webhooks/worker.js +0 -113
  509. package/dist/runtime/commerce.d.ts +0 -110
  510. package/dist/runtime/commerce.d.ts.map +0 -1
  511. package/dist/runtime/commerce.js +0 -37
  512. package/dist/runtime/kernel.d.ts +0 -71
  513. package/dist/runtime/kernel.d.ts.map +0 -1
  514. package/dist/runtime/kernel.js +0 -306
  515. package/dist/runtime/logger.d.ts +0 -11
  516. package/dist/runtime/logger.d.ts.map +0 -1
  517. package/dist/runtime/logger.js +0 -32
  518. package/dist/runtime/shutdown.d.ts +0 -15
  519. package/dist/runtime/shutdown.d.ts.map +0 -1
  520. package/dist/runtime/shutdown.js +0 -34
  521. package/dist/test-utils/create-pglite-adapter.d.ts +0 -32
  522. package/dist/test-utils/create-pglite-adapter.d.ts.map +0 -1
  523. package/dist/test-utils/create-pglite-adapter.js +0 -107
  524. package/dist/test-utils/create-plugin-test-app.d.ts +0 -50
  525. package/dist/test-utils/create-plugin-test-app.d.ts.map +0 -1
  526. package/dist/test-utils/create-plugin-test-app.js +0 -74
  527. package/dist/test-utils/create-repository-test-harness.d.ts +0 -8
  528. package/dist/test-utils/create-repository-test-harness.d.ts.map +0 -1
  529. package/dist/test-utils/create-repository-test-harness.js +0 -7
  530. package/dist/test-utils/create-test-config.d.ts +0 -18
  531. package/dist/test-utils/create-test-config.d.ts.map +0 -1
  532. package/dist/test-utils/create-test-config.js +0 -172
  533. package/dist/test-utils/create-test-kernel.d.ts +0 -3
  534. package/dist/test-utils/create-test-kernel.d.ts.map +0 -1
  535. package/dist/test-utils/create-test-kernel.js +0 -5
  536. package/dist/test-utils/create-test-plugin-context.d.ts +0 -42
  537. package/dist/test-utils/create-test-plugin-context.d.ts.map +0 -1
  538. package/dist/test-utils/create-test-plugin-context.js +0 -46
  539. package/dist/test-utils/rest-api-test-utils.d.ts +0 -64
  540. package/dist/test-utils/rest-api-test-utils.d.ts.map +0 -1
  541. package/dist/test-utils/rest-api-test-utils.js +0 -207
  542. package/dist/test-utils/test-actors.d.ts +0 -15
  543. package/dist/test-utils/test-actors.d.ts.map +0 -1
  544. package/dist/test-utils/test-actors.js +0 -57
  545. package/dist/test-utils/typed-hooks.d.ts +0 -43
  546. package/dist/test-utils/typed-hooks.d.ts.map +0 -1
  547. package/dist/test-utils/typed-hooks.js +0 -35
  548. package/dist/testing.d.ts +0 -14
  549. package/dist/testing.d.ts.map +0 -1
  550. package/dist/testing.js +0 -13
  551. package/dist/tsconfig.tsbuildinfo +0 -1
  552. package/dist/types/commerce-types.d.ts +0 -34
  553. package/dist/types/commerce-types.d.ts.map +0 -1
  554. package/dist/types/commerce-types.js +0 -1
  555. package/dist/utils/id.d.ts +0 -2
  556. package/dist/utils/id.d.ts.map +0 -1
  557. package/dist/utils/id.js +0 -3
  558. package/dist/utils/logger.d.ts +0 -3
  559. package/dist/utils/logger.d.ts.map +0 -1
  560. package/dist/utils/logger.js +0 -16
  561. package/dist/utils/pagination.d.ts +0 -11
  562. package/dist/utils/pagination.d.ts.map +0 -1
  563. package/dist/utils/pagination.js +0 -15
@@ -1,137 +0,0 @@
1
- import { Ok, Err } from "../kernel/result.js";
2
- import { CommerceValidationError } from "../kernel/errors.js";
3
- /**
4
- * Step 1: Reserve inventory.
5
- *
6
- * Output: the list of reservations created.
7
- * Compensate: release each reservation.
8
- *
9
- * Inventory reservation runs BEFORE payment capture. This is deliberate:
10
- * if stock is unavailable, we should find out before charging the customer.
11
- * The compensation for this step releases the reserved quantities.
12
- */
13
- export const reserveInventoryStep = {
14
- id: "reserve-inventory",
15
- async run(data, ctx) {
16
- const inventory = ctx.hook.services.inventory;
17
- const reservations = [];
18
- const performedBy = ctx.hook.actor?.userId ?? "system";
19
- for (const item of data.lineItems) {
20
- const result = await inventory.reserve({
21
- entityId: item.entityId,
22
- ...(item.variantId != null ? { variantId: item.variantId } : {}),
23
- quantity: item.quantity,
24
- orderId: data.checkoutId,
25
- performedBy,
26
- });
27
- if (!result.ok) {
28
- return Err(new CommerceValidationError(`Inventory reservation failed for ${item.title ?? item.entityId}: ${result.error?.message ?? "unknown"}`));
29
- }
30
- reservations.push({
31
- entityId: item.entityId,
32
- variantId: item.variantId,
33
- quantity: item.quantity,
34
- orderId: data.checkoutId,
35
- });
36
- }
37
- return Ok(reservations);
38
- },
39
- async compensate(reservations, ctx) {
40
- const inventory = ctx.hook.services.inventory;
41
- const performedBy = ctx.hook.actor?.userId ?? "system";
42
- for (const r of reservations) {
43
- await inventory.release({
44
- entityId: r.entityId,
45
- ...(r.variantId != null ? { variantId: r.variantId } : {}),
46
- quantity: r.quantity,
47
- orderId: r.orderId,
48
- performedBy,
49
- });
50
- }
51
- },
52
- };
53
- /**
54
- * Step 2: Capture payment.
55
- *
56
- * Output: the captured payment intent ID and amount.
57
- * Compensate: issue a full refund via the payments service.
58
- *
59
- * Runs AFTER inventory reservation. If capture fails, inventory reservations
60
- * are released by the compensation chain. If capture succeeds but a later step
61
- * fails, a refund is issued.
62
- */
63
- export const capturePaymentStep = {
64
- id: "capture-payment",
65
- async run(data, ctx) {
66
- if (!data.paymentIntentId) {
67
- return Err(new CommerceValidationError("No authorized payment intent to capture."));
68
- }
69
- const payments = ctx.hook.services.payments;
70
- const result = await payments.capture(data.paymentIntentId);
71
- if (!result.ok) {
72
- return Err(new CommerceValidationError(`Payment capture failed: ${result.error?.message ?? "unknown"}`));
73
- }
74
- return Ok({ paymentIntentId: data.paymentIntentId, amount: data.total });
75
- },
76
- async compensate({ paymentIntentId, amount }, ctx) {
77
- const payments = ctx.hook.services.payments;
78
- await payments.refund(paymentIntentId, amount, "Checkout compensation: downstream step failed after payment capture");
79
- },
80
- };
81
- /**
82
- * Step 3: Initiate fulfillment.
83
- *
84
- * Output: the order ID (for logging).
85
- * No compensate: fulfillment initiation is best-effort and idempotent.
86
- * A failed fulfillment should be retried through the job queue, not
87
- * compensated by rolling back the entire checkout.
88
- */
89
- export const initiateFulfillmentStep = {
90
- id: "initiate-fulfillment",
91
- async run(data, ctx) {
92
- const fulfillment = ctx.hook.services.fulfillment;
93
- try {
94
- await fulfillment.fulfillOrder(data.checkoutId, ctx.hook.actor);
95
- }
96
- catch (error) {
97
- // Fulfillment initiation failure should not fail the checkout.
98
- // The order is paid and inventory is reserved — fulfillment can be retried.
99
- ctx.hook.logger.warn(`Fulfillment initiation failed for order ${data.checkoutId}. Will need manual retry.`, { error });
100
- }
101
- return Ok({ orderId: data.checkoutId });
102
- },
103
- // No compensate — fulfillment is best-effort at this stage
104
- };
105
- /**
106
- * Step 4: Send confirmation email.
107
- *
108
- * Output: void (best-effort).
109
- * No compensate: you cannot unsend an email.
110
- */
111
- export const sendConfirmationStep = {
112
- id: "send-confirmation",
113
- async run(data, ctx) {
114
- const customers = ctx.hook.services.customers;
115
- const email = ctx.hook.services.email;
116
- if (!data.customerId || !email?.send) {
117
- return Ok({ sent: false });
118
- }
119
- try {
120
- const customer = await customers.getByUserId(data.customerId, ctx.hook.actor);
121
- if (customer.ok && customer.value?.email) {
122
- await email.send({
123
- template: "order-confirmation",
124
- to: customer.value.email,
125
- data: { orderId: data.checkoutId, total: data.total, currency: data.currency },
126
- });
127
- return Ok({ sent: true });
128
- }
129
- }
130
- catch (error) {
131
- // Email failure should not fail checkout
132
- ctx.hook.logger.warn(`Confirmation email failed for order ${data.checkoutId}.`, { error });
133
- }
134
- return Ok({ sent: false });
135
- },
136
- // No compensate — cannot unsend an email
137
- };
@@ -1,99 +0,0 @@
1
- import type { AfterHook, BeforeHook } from "../kernel/hooks/types.js";
2
- import type { ShippingAddress } from "../modules/shipping/calculator.js";
3
- import type { AppliedPromotion } from "../modules/promotions/service.js";
4
- export interface OrderResult {
5
- id: string;
6
- status?: string | undefined;
7
- customerId?: string | null | undefined;
8
- currency: string;
9
- subtotal?: number | undefined;
10
- discountTotal?: number | undefined;
11
- taxTotal?: number | undefined;
12
- shippingTotal?: number | undefined;
13
- grandTotal?: number | undefined;
14
- metadata?: Record<string, unknown> | null | undefined;
15
- lineItems?: Array<{
16
- entityId: string;
17
- entityType?: string | undefined;
18
- title?: string | undefined;
19
- variantId?: string | null | undefined;
20
- quantity: number;
21
- unitPrice?: number | undefined;
22
- totalPrice?: number | undefined;
23
- }> | undefined;
24
- }
25
- export interface CheckoutLineItem {
26
- id?: string;
27
- entityId: string;
28
- entityType?: string;
29
- title?: string;
30
- variantId?: string;
31
- quantity: number;
32
- resolvedUnitPrice?: number;
33
- resolvedTotal?: number;
34
- discountAmount?: number;
35
- taxAmount?: number;
36
- priceBreakdown?: Array<{
37
- label: string;
38
- amountBefore: number;
39
- delta: number;
40
- amountAfter: number;
41
- }>;
42
- }
43
- export interface CheckoutData {
44
- checkoutId: string;
45
- cartId: string;
46
- customerId?: string;
47
- customerGroupIds?: string[];
48
- currency: string;
49
- paymentMethodId: string;
50
- lineItems: CheckoutLineItem[];
51
- subtotal: number;
52
- discountTotal: number;
53
- taxTotal: number;
54
- shippingTotal: number;
55
- total: number;
56
- promotionCodes?: string[];
57
- paymentIntentId?: string;
58
- paymentClientSecret?: string | undefined;
59
- shippingAddress?: ShippingAddress;
60
- appliedPromotions?: AppliedPromotion[];
61
- freeShipping?: boolean;
62
- taxTransactionId?: string;
63
- metadata?: Record<string, unknown>;
64
- }
65
- export declare const validateCartNotEmpty: BeforeHook<CheckoutData>;
66
- export declare const resolveCurrentPrices: BeforeHook<CheckoutData>;
67
- export declare const checkInventoryAvailability: BeforeHook<CheckoutData>;
68
- export declare const applyPromotionCodes: BeforeHook<CheckoutData>;
69
- export declare const calculateTax: BeforeHook<CheckoutData>;
70
- export declare const calculateShipping: BeforeHook<CheckoutData>;
71
- export declare const validatePaymentMethod: BeforeHook<CheckoutData>;
72
- export declare const authorizePayment: BeforeHook<CheckoutData>;
73
- export declare const capturePayment: AfterHook<OrderResult>;
74
- export declare const reserveInventory: AfterHook<OrderResult>;
75
- export declare const initiateFulfillment: AfterHook<OrderResult>;
76
- export declare const sendConfirmation: AfterHook<OrderResult>;
77
- /**
78
- * Analytics event recording — no-op since RFC-006.
79
- *
80
- * The DrizzleAnalyticsAdapter queries source tables (orders, inventory)
81
- * directly via SQL. No separate event recording is needed.
82
- * Kept as an export for backwards compatibility with checkout route.
83
- */
84
- export declare const recordAnalyticsEvent: AfterHook<OrderResult>;
85
- /**
86
- * Replaces the separate capturePayment and reserveInventory AfterHooks
87
- * with a single compensation chain that can roll back completed steps
88
- * if any step fails.
89
- *
90
- * Order of steps:
91
- * 1. Reserve inventory — if this fails, no money is charged
92
- * 2. Capture payment — if this fails, inventory reservations are released
93
- * 3. Initiate fulfillment — best-effort, does not fail the chain
94
- * 4. Send confirmation — best-effort, does not fail the chain
95
- *
96
- * Both failure modes leave the system in a consistent state.
97
- */
98
- export declare const completeCheckout: AfterHook<OrderResult>;
99
- //# sourceMappingURL=checkout.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/hooks/checkout.ts"],"names":[],"mappings":"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"}
@@ -1,317 +0,0 @@
1
- import { CommerceValidationError } from "../kernel/errors.js";
2
- import { runCompensationChain } from "../kernel/compensation/executor.js";
3
- import { reserveInventoryStep, capturePaymentStep, initiateFulfillmentStep, sendConfirmationStep, } from "./checkout-completion.js";
4
- function recalculateTotals(data) {
5
- data.total = Math.max(0, data.subtotal - data.discountTotal + data.taxTotal + data.shippingTotal);
6
- }
7
- export const validateCartNotEmpty = async ({ data, context, }) => {
8
- const cartService = context.services.cart;
9
- const catalogService = context.services.catalog;
10
- // M1 fix: Atomically claim the cart for checkout (active → checking_out).
11
- // If a concurrent request already claimed it, this returns Err and we fail fast.
12
- const claimed = await cartService.claimForCheckout(data.cartId, context.tx);
13
- if (!claimed.ok) {
14
- throw new CommerceValidationError("Cart is not available for checkout. It may have already been checked out by a concurrent request.");
15
- }
16
- const cart = await cartService.getById(data.cartId, context.actor);
17
- if (!cart.ok || cart.value.lineItems.length === 0) {
18
- throw new CommerceValidationError("Cannot checkout an empty cart.");
19
- }
20
- // Cross-org guard: prevent org B from checking out org A's cart
21
- const actorOrgId = context.actor?.organizationId ?? "org_default";
22
- if (cart.value.organizationId && cart.value.organizationId !== actorOrgId) {
23
- throw new CommerceValidationError("Cart does not belong to this organization.");
24
- }
25
- // Reject expired carts
26
- if (cart.value.expiresAt) {
27
- const expiry = cart.value.expiresAt instanceof Date ? cart.value.expiresAt : new Date(cart.value.expiresAt);
28
- if (expiry.getTime() < Date.now()) {
29
- throw new CommerceValidationError("Cart has expired. Please create a new cart.");
30
- }
31
- }
32
- // Enrich line items with entity title and type from catalog (in parallel)
33
- data.lineItems = await Promise.all(cart.value.lineItems.map(async (item) => {
34
- const entity = await catalogService.getById(item.entityId, {
35
- includeAttributes: true,
36
- });
37
- const title = entity.ok
38
- ? (entity.value.attributes?.[0]?.title ?? item.entityId)
39
- : item.entityId;
40
- const entityType = entity.ok ? entity.value.type : "product";
41
- return {
42
- id: item.id,
43
- entityId: item.entityId,
44
- entityType,
45
- title,
46
- quantity: item.quantity,
47
- // Use != null to exclude both null (DB value) and undefined
48
- ...(item.variantId != null ? { variantId: item.variantId } : {}),
49
- };
50
- }));
51
- return data;
52
- };
53
- export const resolveCurrentPrices = async ({ data, context, }) => {
54
- const pricing = context.services.pricing;
55
- for (const item of data.lineItems) {
56
- const price = await pricing.resolve({
57
- entityId: item.entityId,
58
- currency: data.currency,
59
- quantity: item.quantity,
60
- ...(item.variantId !== undefined ? { variantId: item.variantId } : {}),
61
- ...(data.customerId !== undefined ? { customerId: data.customerId } : {}),
62
- ...(data.customerGroupIds !== undefined
63
- ? { customerGroupIds: data.customerGroupIds }
64
- : {}),
65
- });
66
- if (!price.ok) {
67
- throw new CommerceValidationError(`Cannot resolve price for ${item.entityId}.`);
68
- }
69
- item.resolvedUnitPrice = price.value.finalAmount;
70
- item.resolvedTotal = price.value.finalAmount * item.quantity;
71
- item.priceBreakdown = price.value.breakdown;
72
- item.discountAmount = 0;
73
- item.taxAmount = 0;
74
- }
75
- data.subtotal = data.lineItems.reduce((sum, item) => sum + (item.resolvedTotal ?? 0), 0);
76
- recalculateTotals(data);
77
- return data;
78
- };
79
- export const checkInventoryAvailability = async ({ data, context, }) => {
80
- const inventory = context.services.inventory;
81
- for (const item of data.lineItems) {
82
- const available = await inventory.getAvailable(item.entityId, item.variantId, context.tx);
83
- if (!available.ok || (available.value ?? 0) < item.quantity) {
84
- throw new CommerceValidationError(`Insufficient stock for ${item.title ?? item.entityId}. Available: ${available.ok ? (available.value ?? 0) : 0}, requested: ${item.quantity}.`);
85
- }
86
- }
87
- return data;
88
- };
89
- export const applyPromotionCodes = async ({ data, context, }) => {
90
- const promotions = context.services.promotions;
91
- const result = await promotions.applyPromotions({
92
- orgId: context.actor?.organizationId ?? "org_default",
93
- cartId: data.cartId,
94
- currency: data.currency,
95
- subtotal: data.subtotal,
96
- lineItems: data.lineItems.map((lineItem) => ({
97
- entityId: lineItem.entityId,
98
- entityType: lineItem.entityType ?? "product",
99
- quantity: lineItem.quantity,
100
- unitPrice: lineItem.resolvedUnitPrice ?? 0,
101
- totalPrice: lineItem.resolvedTotal ?? 0,
102
- })),
103
- ...(data.customerId !== undefined ? { customerId: data.customerId } : {}),
104
- ...(data.customerGroupIds !== undefined
105
- ? { customerGroupIds: data.customerGroupIds }
106
- : {}),
107
- ...(data.promotionCodes !== undefined
108
- ? { promotionCodes: data.promotionCodes }
109
- : {}),
110
- });
111
- if (!result.ok) {
112
- throw new CommerceValidationError(`Promotion application failed: ${result.error.message}`);
113
- }
114
- data.discountTotal = result.value.totalDiscount;
115
- data.appliedPromotions = result.value.applied;
116
- data.freeShipping = result.value.freeShipping;
117
- recalculateTotals(data);
118
- return data;
119
- };
120
- export const calculateTax = async ({ data, context, }) => {
121
- const tax = context.services.tax;
122
- const calculated = await tax.calculate({
123
- currency: data.currency,
124
- shippingAmount: data.shippingTotal,
125
- lineItems: data.lineItems.map((lineItem) => ({
126
- id: lineItem.id ?? `${lineItem.entityId}:${lineItem.variantId ?? "_"}`,
127
- entityId: lineItem.entityId,
128
- description: lineItem.title ?? lineItem.entityId,
129
- quantity: lineItem.quantity,
130
- unitPrice: lineItem.resolvedUnitPrice ?? 0,
131
- ...(lineItem.discountAmount !== undefined
132
- ? { discount: lineItem.discountAmount }
133
- : {}),
134
- })),
135
- ...(data.customerId !== undefined ? { customerId: data.customerId } : {}),
136
- ...(data.shippingAddress !== undefined
137
- ? { toAddress: data.shippingAddress }
138
- : {}),
139
- });
140
- if (!calculated.ok) {
141
- throw new CommerceValidationError(`Tax calculation failed: ${calculated.error.message}`);
142
- }
143
- data.taxTotal = Math.max(0, Math.round(calculated.value.amountToCollect));
144
- recalculateTotals(data);
145
- return data;
146
- };
147
- export const calculateShipping = async ({ data, context, }) => {
148
- const shippingService = context.services.shipping;
149
- const shipping = await shippingService.calculate({
150
- lineItems: data.lineItems.map((lineItem) => ({
151
- entityId: lineItem.entityId,
152
- quantity: lineItem.quantity,
153
- resolvedTotal: lineItem.resolvedTotal ?? 0,
154
- ...(lineItem.variantId !== undefined
155
- ? { variantId: lineItem.variantId }
156
- : {}),
157
- })),
158
- subtotalAfterDiscount: Math.max(0, data.subtotal - data.discountTotal),
159
- currency: data.currency,
160
- ...(data.shippingAddress !== undefined
161
- ? { address: data.shippingAddress }
162
- : {}),
163
- ...(data.freeShipping !== undefined
164
- ? { isFreeShipping: data.freeShipping }
165
- : {}),
166
- });
167
- if (!shipping.ok) {
168
- throw new CommerceValidationError(`Shipping calculation failed: ${shipping.error.message}`);
169
- }
170
- data.shippingTotal = shipping.value.amount;
171
- recalculateTotals(data);
172
- return data;
173
- };
174
- export const validatePaymentMethod = async ({ data, context, }) => {
175
- if (!data.paymentMethodId) {
176
- throw new CommerceValidationError("Payment method is required.");
177
- }
178
- // H1 fix: Validate paymentMethodId against registered adapters
179
- const payments = context.services.payments;
180
- if (payments.registeredProviderIds &&
181
- payments.registeredProviderIds.length > 0 &&
182
- !payments.registeredProviderIds.includes(data.paymentMethodId)) {
183
- throw new CommerceValidationError(`Unknown payment method "${data.paymentMethodId}". ` +
184
- `Available methods: [${payments.registeredProviderIds.join(", ")}].`);
185
- }
186
- return data;
187
- };
188
- export const authorizePayment = async ({ data, context, }) => {
189
- const payments = context.services.payments;
190
- const authorized = await payments.authorize({
191
- amount: data.total,
192
- currency: data.currency,
193
- paymentMethodId: data.paymentMethodId,
194
- metadata: {
195
- checkoutId: data.checkoutId,
196
- cartId: data.cartId,
197
- },
198
- ...(data.customerId !== undefined ? { customerId: data.customerId } : {}),
199
- });
200
- if (!authorized.ok || !authorized.value) {
201
- throw new CommerceValidationError(`Payment authorization failed: ${authorized.error?.message ?? "Unknown payment error."}`);
202
- }
203
- data.paymentIntentId = authorized.value.id;
204
- data.paymentClientSecret = authorized.value.clientSecret ?? undefined;
205
- context.context.paymentIntentId = authorized.value.id;
206
- return data;
207
- };
208
- export const capturePayment = async ({ context }) => {
209
- const payments = context.services.payments;
210
- const paymentIntentId = context.context.paymentIntentId;
211
- const paymentMethodId = context.context.paymentMethodId;
212
- if (!paymentIntentId)
213
- return;
214
- await payments.capture(paymentIntentId, undefined, paymentMethodId);
215
- };
216
- export const reserveInventory = async ({ result, context }) => {
217
- const inventory = context.services.inventory;
218
- for (const lineItem of result.lineItems ?? []) {
219
- await inventory.reserve({
220
- entityId: lineItem.entityId,
221
- ...(lineItem.variantId != null ? { variantId: lineItem.variantId } : {}),
222
- quantity: lineItem.quantity,
223
- orderId: result.id,
224
- performedBy: context.actor?.userId ?? "system",
225
- });
226
- }
227
- };
228
- export const initiateFulfillment = async ({ result, context, }) => {
229
- const fulfillment = context.services.fulfillment;
230
- await fulfillment.fulfillOrder(result.id, context.actor);
231
- };
232
- export const sendConfirmation = async ({ result, context }) => {
233
- const customers = context.services.customers;
234
- const email = context.services.email;
235
- if (!result.customerId || !email?.send)
236
- return;
237
- const customer = await customers.getByUserId(result.customerId, context.actor);
238
- if (!customer.ok || !customer.value?.email)
239
- return;
240
- await email.send({
241
- template: "order-confirmation",
242
- to: customer.value.email,
243
- data: { order: result },
244
- });
245
- };
246
- /**
247
- * Analytics event recording — no-op since RFC-006.
248
- *
249
- * The DrizzleAnalyticsAdapter queries source tables (orders, inventory)
250
- * directly via SQL. No separate event recording is needed.
251
- * Kept as an export for backwards compatibility with checkout route.
252
- */
253
- export const recordAnalyticsEvent = async () => {
254
- // No-op: source tables ARE the analytics events (RFC-006)
255
- };
256
- /**
257
- * Replaces the separate capturePayment and reserveInventory AfterHooks
258
- * with a single compensation chain that can roll back completed steps
259
- * if any step fails.
260
- *
261
- * Order of steps:
262
- * 1. Reserve inventory — if this fails, no money is charged
263
- * 2. Capture payment — if this fails, inventory reservations are released
264
- * 3. Initiate fulfillment — best-effort, does not fail the chain
265
- * 4. Send confirmation — best-effort, does not fail the chain
266
- *
267
- * Both failure modes leave the system in a consistent state.
268
- */
269
- export const completeCheckout = async ({ result: order, context, }) => {
270
- const paymentIntentId = context.context.paymentIntentId;
271
- const checkoutData = {
272
- checkoutId: order.id,
273
- cartId: order.metadata?.cartId ?? "",
274
- ...(order.customerId != null ? { customerId: order.customerId } : {}),
275
- currency: order.currency,
276
- paymentMethodId: context.context.paymentMethodId ?? "",
277
- lineItems: (order.lineItems ?? []).map((li) => ({
278
- id: li.entityId,
279
- entityId: li.entityId,
280
- ...(li.entityType != null ? { entityType: li.entityType } : {}),
281
- title: li.title ?? li.entityId,
282
- ...(li.variantId != null ? { variantId: li.variantId } : {}),
283
- quantity: li.quantity,
284
- ...(li.unitPrice != null ? { resolvedUnitPrice: li.unitPrice } : {}),
285
- ...(li.totalPrice != null ? { resolvedTotal: li.totalPrice } : {}),
286
- })),
287
- subtotal: order.subtotal ?? 0,
288
- discountTotal: order.discountTotal ?? 0,
289
- taxTotal: order.taxTotal ?? 0,
290
- shippingTotal: order.shippingTotal ?? 0,
291
- total: order.grandTotal ?? 0,
292
- ...(paymentIntentId != null ? { paymentIntentId } : {}),
293
- };
294
- const compensationCtx = {
295
- tx: context.tx ?? null,
296
- hook: context,
297
- };
298
- const chainResult = await runCompensationChain([
299
- reserveInventoryStep,
300
- capturePaymentStep,
301
- initiateFulfillmentStep,
302
- sendConfirmationStep,
303
- ], checkoutData, compensationCtx);
304
- if (!chainResult.ok) {
305
- // Mark order as failed if compensation chain did not succeed
306
- const orders = context.services.orders;
307
- if (orders.changeStatus) {
308
- try {
309
- await orders.changeStatus({ orderId: order.id, newStatus: "cancelled" }, context.actor);
310
- }
311
- catch (statusError) {
312
- context.logger.error(`Failed to update order ${order.id} status to cancelled after checkout failure.`, { statusError });
313
- }
314
- }
315
- throw chainResult.error;
316
- }
317
- };
@@ -1,16 +0,0 @@
1
- /**
2
- * Order lifecycle email notifications.
3
- *
4
- * Sends emails on status changes: confirmed, fulfilled, cancelled, refunded.
5
- * Registered as an orders.afterStatusChange hook.
6
- */
7
- import type { AfterHook } from "../kernel/hooks/types.js";
8
- interface StatusChangeResult {
9
- orderId: string;
10
- customerId?: string | null;
11
- newStatus: string;
12
- previousStatus: string;
13
- }
14
- export declare const sendOrderStatusEmail: AfterHook<StatusChangeResult>;
15
- export {};
16
- //# sourceMappingURL=order-emails.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"order-emails.d.ts","sourceRoot":"","sources":["../../src/hooks/order-emails.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,oBAAoB,EAAE,SAAS,CAAC,kBAAkB,CA6C9D,CAAC"}
@@ -1,44 +0,0 @@
1
- /**
2
- * Order lifecycle email notifications.
3
- *
4
- * Sends emails on status changes: confirmed, fulfilled, cancelled, refunded.
5
- * Registered as an orders.afterStatusChange hook.
6
- */
7
- export const sendOrderStatusEmail = async ({ result, context, }) => {
8
- const email = context.services.email;
9
- if (!email?.send)
10
- return;
11
- // Only send for customer-facing status changes
12
- const notifiableStatuses = ["confirmed", "processing", "fulfilled", "cancelled", "refunded"];
13
- if (!notifiableStatuses.includes(result.newStatus))
14
- return;
15
- // Look up customer email
16
- const customerId = result.customerId;
17
- if (!customerId)
18
- return;
19
- const customers = context.services.customers;
20
- if (!customers)
21
- return;
22
- try {
23
- const customer = await customers.getByUserId(customerId, context.actor);
24
- if (!customer.ok || !customer.value?.email)
25
- return;
26
- await email.send({
27
- template: "order-status-change",
28
- to: customer.value.email,
29
- data: {
30
- orderId: result.orderId,
31
- newStatus: result.newStatus,
32
- previousStatus: result.previousStatus,
33
- },
34
- });
35
- }
36
- catch (err) {
37
- // Email failure must not break the order flow
38
- context.logger.warn("Order status email failed", {
39
- orderId: result.orderId,
40
- newStatus: result.newStatus,
41
- error: err instanceof Error ? err.message : String(err),
42
- });
43
- }
44
- };