@porulle/core 0.63.0 → 0.65.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (463) hide show
  1. package/dist/adapters/email-render.d.ts +18 -0
  2. package/dist/adapters/email-render.d.ts.map +1 -0
  3. package/dist/adapters/email-render.js +37 -0
  4. package/dist/auth/actor.d.ts.map +1 -1
  5. package/dist/auth/actor.js +11 -0
  6. package/dist/auth/auth-failure.d.ts +0 -2
  7. package/dist/auth/auth-failure.d.ts.map +1 -1
  8. package/dist/auth/auth-failure.js +0 -4
  9. package/dist/auth/middleware.d.ts +0 -1
  10. package/dist/auth/middleware.d.ts.map +1 -1
  11. package/dist/auth/middleware.js +7 -6
  12. package/dist/auth/permissions.d.ts +2 -0
  13. package/dist/auth/permissions.d.ts.map +1 -1
  14. package/dist/auth/permissions.js +8 -6
  15. package/dist/auth/role-authority.d.ts +0 -1
  16. package/dist/auth/role-authority.d.ts.map +1 -1
  17. package/dist/auth/role-authority.js +1 -8
  18. package/dist/auth/setup.d.ts.map +1 -1
  19. package/dist/auth/setup.js +8 -0
  20. package/dist/auth/strict-org-resolution.d.ts +8 -1
  21. package/dist/auth/strict-org-resolution.d.ts.map +1 -1
  22. package/dist/auth/strict-org-resolution.js +9 -19
  23. package/dist/auth/system-actor.d.ts +3 -2
  24. package/dist/auth/system-actor.d.ts.map +1 -1
  25. package/dist/auth/system-actor.js +3 -3
  26. package/dist/config/defaults.d.ts.map +1 -1
  27. package/dist/config/defaults.js +3 -20
  28. package/dist/config/define-config.d.ts +2 -2
  29. package/dist/config/define-config.d.ts.map +1 -1
  30. package/dist/config/define-config.js +3 -2
  31. package/dist/config/types.d.ts +13 -3
  32. package/dist/config/types.d.ts.map +1 -1
  33. package/dist/hooks/checkout.d.ts +2 -15
  34. package/dist/hooks/checkout.d.ts.map +1 -1
  35. package/dist/hooks/checkout.js +2 -51
  36. package/dist/index.d.ts +11 -19
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +11 -12
  39. package/dist/interfaces/rest/router.js +3 -3
  40. package/dist/interfaces/rest/routes/admin/compensation-failures.d.ts.map +1 -1
  41. package/dist/interfaces/rest/routes/admin/compensation-failures.js +5 -5
  42. package/dist/interfaces/rest/routes/admin/entity-field-definitions.js +5 -5
  43. package/dist/interfaces/rest/routes/admin/staff.d.ts.map +1 -1
  44. package/dist/interfaces/rest/routes/admin/staff.js +2 -3
  45. package/dist/interfaces/rest/routes/analytics.d.ts.map +1 -1
  46. package/dist/interfaces/rest/routes/analytics.js +2 -2
  47. package/dist/interfaces/rest/routes/carts.d.ts.map +1 -1
  48. package/dist/interfaces/rest/routes/carts.js +12 -12
  49. package/dist/interfaces/rest/routes/catalog.js +37 -37
  50. package/dist/interfaces/rest/routes/checkout.d.ts.map +1 -1
  51. package/dist/interfaces/rest/routes/checkout.js +9 -10
  52. package/dist/interfaces/rest/routes/customers.d.ts.map +1 -1
  53. package/dist/interfaces/rest/routes/customers.js +12 -12
  54. package/dist/interfaces/rest/routes/documents.d.ts.map +1 -1
  55. package/dist/interfaces/rest/routes/documents.js +9 -9
  56. package/dist/interfaces/rest/routes/inventory.d.ts.map +1 -1
  57. package/dist/interfaces/rest/routes/inventory.js +8 -8
  58. package/dist/interfaces/rest/routes/media.d.ts.map +1 -1
  59. package/dist/interfaces/rest/routes/media.js +5 -5
  60. package/dist/interfaces/rest/routes/orders.d.ts.map +1 -1
  61. package/dist/interfaces/rest/routes/orders.js +32 -32
  62. package/dist/interfaces/rest/routes/payments.d.ts.map +1 -1
  63. package/dist/interfaces/rest/routes/payments.js +2 -2
  64. package/dist/interfaces/rest/routes/pricing.d.ts.map +1 -1
  65. package/dist/interfaces/rest/routes/pricing.js +8 -8
  66. package/dist/interfaces/rest/routes/promotions.d.ts.map +1 -1
  67. package/dist/interfaces/rest/routes/promotions.js +7 -7
  68. package/dist/interfaces/rest/routes/search.d.ts.map +1 -1
  69. package/dist/interfaces/rest/routes/search.js +3 -3
  70. package/dist/interfaces/rest/routes/settings.d.ts.map +1 -1
  71. package/dist/interfaces/rest/routes/settings.js +4 -4
  72. package/dist/interfaces/rest/routes/shipping.d.ts.map +1 -1
  73. package/dist/interfaces/rest/routes/shipping.js +9 -9
  74. package/dist/interfaces/rest/routes/tax.d.ts.map +1 -1
  75. package/dist/interfaces/rest/routes/tax.js +9 -9
  76. package/dist/interfaces/rest/routes/webhooks.d.ts.map +1 -1
  77. package/dist/interfaces/rest/routes/webhooks.js +4 -4
  78. package/dist/interfaces/rest/utils.d.ts +1 -1
  79. package/dist/interfaces/rest/utils.d.ts.map +1 -1
  80. package/dist/interfaces/rest/utils.js +4 -13
  81. package/dist/jobs.d.ts +1 -0
  82. package/dist/jobs.d.ts.map +1 -1
  83. package/dist/jobs.js +1 -0
  84. package/dist/kernel/database/adapter.d.ts +9 -0
  85. package/dist/kernel/database/adapter.d.ts.map +1 -1
  86. package/dist/kernel/database/adapter.js +1 -1
  87. package/dist/kernel/database/migrate.d.ts +0 -4
  88. package/dist/kernel/database/migrate.d.ts.map +1 -1
  89. package/dist/kernel/database/migrate.js +2 -14
  90. package/dist/kernel/database/pglite-transaction.d.ts +28 -0
  91. package/dist/kernel/database/pglite-transaction.d.ts.map +1 -0
  92. package/dist/kernel/database/pglite-transaction.js +52 -0
  93. package/dist/kernel/database/tx-context.d.ts +0 -1
  94. package/dist/kernel/database/tx-context.d.ts.map +1 -1
  95. package/dist/kernel/database/tx-context.js +2 -14
  96. package/dist/kernel/database/unique-violation.d.ts +3 -0
  97. package/dist/kernel/database/unique-violation.d.ts.map +1 -0
  98. package/dist/kernel/database/unique-violation.js +9 -0
  99. package/dist/kernel/error-mapper.d.ts.map +1 -1
  100. package/dist/kernel/error-mapper.js +1 -0
  101. package/dist/kernel/errors.d.ts +12 -0
  102. package/dist/kernel/errors.d.ts.map +1 -1
  103. package/dist/kernel/errors.js +16 -0
  104. package/dist/kernel/hooks/create-context.d.ts +18 -9
  105. package/dist/kernel/hooks/create-context.d.ts.map +1 -1
  106. package/dist/kernel/hooks/create-context.js +24 -3
  107. package/dist/kernel/hooks/registry.d.ts +0 -19
  108. package/dist/kernel/hooks/registry.d.ts.map +1 -1
  109. package/dist/kernel/hooks/registry.js +0 -32
  110. package/dist/kernel/jobs/drizzle-adapter.d.ts.map +1 -1
  111. package/dist/kernel/jobs/drizzle-adapter.js +3 -10
  112. package/dist/kernel/jobs/prepare-enqueue.d.ts +20 -0
  113. package/dist/kernel/jobs/prepare-enqueue.d.ts.map +1 -0
  114. package/dist/kernel/jobs/prepare-enqueue.js +24 -0
  115. package/dist/kernel/jobs/types.d.ts +0 -4
  116. package/dist/kernel/jobs/types.d.ts.map +1 -1
  117. package/dist/kernel/jobs/types.js +0 -4
  118. package/dist/kernel/local-api.d.ts +0 -33
  119. package/dist/kernel/local-api.d.ts.map +1 -1
  120. package/dist/kernel/local-api.js +0 -36
  121. package/dist/kernel/plugin/manifest.d.ts +3 -5
  122. package/dist/kernel/plugin/manifest.d.ts.map +1 -1
  123. package/dist/modules/analytics/service.d.ts +0 -6
  124. package/dist/modules/analytics/service.d.ts.map +1 -1
  125. package/dist/modules/analytics/service.js +0 -32
  126. package/dist/modules/cart/service.d.ts.map +1 -1
  127. package/dist/modules/cart/service.js +5 -17
  128. package/dist/modules/catalog/entity-service.d.ts.map +1 -1
  129. package/dist/modules/catalog/entity-service.js +9 -17
  130. package/dist/modules/catalog/import-service.d.ts.map +1 -1
  131. package/dist/modules/catalog/import-service.js +4 -13
  132. package/dist/modules/catalog/service.d.ts +1 -81
  133. package/dist/modules/catalog/service.d.ts.map +1 -1
  134. package/dist/modules/catalog/service.js +1 -8
  135. package/dist/modules/customers/service.d.ts.map +1 -1
  136. package/dist/modules/customers/service.js +5 -17
  137. package/dist/modules/documents/render.d.ts +0 -3
  138. package/dist/modules/documents/render.d.ts.map +1 -1
  139. package/dist/modules/documents/render.js +2 -17
  140. package/dist/modules/fulfillment/service.d.ts.map +1 -1
  141. package/dist/modules/fulfillment/service.js +8 -26
  142. package/dist/modules/inventory/service.d.ts.map +1 -1
  143. package/dist/modules/inventory/service.js +3 -20
  144. package/dist/modules/media/service.d.ts.map +1 -1
  145. package/dist/modules/media/service.js +2 -10
  146. package/dist/modules/orders/quote.d.ts.map +1 -1
  147. package/dist/modules/orders/quote.js +1 -2
  148. package/dist/modules/orders/service.d.ts.map +1 -1
  149. package/dist/modules/orders/service.js +4 -17
  150. package/dist/modules/pricing/service.d.ts.map +1 -1
  151. package/dist/modules/pricing/service.js +7 -18
  152. package/dist/modules/promotions/service.d.ts.map +1 -1
  153. package/dist/modules/promotions/service.js +4 -16
  154. package/dist/modules/tax/service.d.ts +1 -3
  155. package/dist/modules/tax/service.d.ts.map +1 -1
  156. package/dist/modules/tax/service.js +16 -52
  157. package/dist/modules/webhooks/hook.d.ts.map +1 -1
  158. package/dist/modules/webhooks/hook.js +3 -2
  159. package/dist/modules/webhooks/service.d.ts.map +1 -1
  160. package/dist/modules/webhooks/service.js +1 -50
  161. package/dist/runtime/commerce.d.ts.map +1 -1
  162. package/dist/runtime/commerce.js +4 -11
  163. package/dist/runtime/kernel-modules.d.ts +38 -1799
  164. package/dist/runtime/kernel-modules.d.ts.map +1 -1
  165. package/dist/runtime/kernel-modules.js +160 -66
  166. package/dist/runtime/kernel-types.d.ts +3 -15
  167. package/dist/runtime/kernel-types.d.ts.map +1 -1
  168. package/dist/runtime/kernel-types.js +0 -10
  169. package/dist/runtime/kernel.d.ts +2 -3
  170. package/dist/runtime/kernel.d.ts.map +1 -1
  171. package/dist/runtime/kernel.js +10 -51
  172. package/dist/runtime/server.d.ts +1 -1
  173. package/dist/runtime/server.d.ts.map +1 -1
  174. package/dist/test-utils/create-pglite-adapter.d.ts.map +1 -1
  175. package/dist/test-utils/create-pglite-adapter.js +5 -62
  176. package/dist/test-utils/create-plugin-test-app.d.ts.map +1 -1
  177. package/dist/test-utils/create-plugin-test-app.js +13 -32
  178. package/dist/test-utils/rest-api-test-utils.d.ts +0 -12
  179. package/dist/test-utils/rest-api-test-utils.d.ts.map +1 -1
  180. package/dist/test-utils/rest-api-test-utils.js +3 -70
  181. package/dist/test-utils/test-actors.d.ts +9 -0
  182. package/dist/test-utils/test-actors.d.ts.map +1 -1
  183. package/dist/test-utils/test-actors.js +62 -0
  184. package/dist/testing.d.ts +1 -4
  185. package/dist/testing.d.ts.map +1 -1
  186. package/dist/testing.js +1 -4
  187. package/dist/utils/escape-html.d.ts +3 -0
  188. package/dist/utils/escape-html.d.ts.map +1 -0
  189. package/dist/utils/escape-html.js +9 -0
  190. package/dist/utils/id.d.ts +0 -1
  191. package/dist/utils/id.d.ts.map +1 -1
  192. package/dist/utils/id.js +0 -3
  193. package/dist/utils/logger.d.ts +1 -1
  194. package/dist/utils/logger.d.ts.map +1 -1
  195. package/dist/utils/logger.js +1 -1
  196. package/dist/utils/money.d.ts +13 -0
  197. package/dist/utils/money.d.ts.map +1 -0
  198. package/dist/utils/money.js +58 -0
  199. package/package.json +5 -6
  200. package/src/adapters/email-render.ts +63 -0
  201. package/src/auth/actor.ts +14 -0
  202. package/src/auth/auth-failure.ts +0 -5
  203. package/src/auth/middleware.ts +7 -6
  204. package/src/auth/permissions.ts +12 -6
  205. package/src/auth/role-authority.ts +1 -10
  206. package/src/auth/setup.ts +11 -0
  207. package/src/auth/strict-org-resolution.ts +9 -16
  208. package/src/auth/system-actor.ts +3 -3
  209. package/src/config/defaults.ts +3 -20
  210. package/src/config/define-config.ts +5 -4
  211. package/src/config/types.ts +13 -2
  212. package/src/hooks/checkout.ts +2 -86
  213. package/src/index.ts +9 -36
  214. package/src/interfaces/rest/router.ts +3 -3
  215. package/src/interfaces/rest/routes/admin/compensation-failures.ts +5 -5
  216. package/src/interfaces/rest/routes/admin/entity-field-definitions.ts +5 -5
  217. package/src/interfaces/rest/routes/admin/staff.ts +2 -3
  218. package/src/interfaces/rest/routes/analytics.ts +2 -2
  219. package/src/interfaces/rest/routes/carts.ts +12 -12
  220. package/src/interfaces/rest/routes/catalog.ts +37 -37
  221. package/src/interfaces/rest/routes/checkout.ts +8 -10
  222. package/src/interfaces/rest/routes/customers.ts +12 -12
  223. package/src/interfaces/rest/routes/documents.ts +9 -9
  224. package/src/interfaces/rest/routes/inventory.ts +8 -8
  225. package/src/interfaces/rest/routes/media.ts +5 -5
  226. package/src/interfaces/rest/routes/orders.ts +32 -32
  227. package/src/interfaces/rest/routes/payments.ts +2 -2
  228. package/src/interfaces/rest/routes/pricing.ts +8 -8
  229. package/src/interfaces/rest/routes/promotions.ts +7 -7
  230. package/src/interfaces/rest/routes/search.ts +3 -3
  231. package/src/interfaces/rest/routes/settings.ts +4 -4
  232. package/src/interfaces/rest/routes/shipping.ts +9 -9
  233. package/src/interfaces/rest/routes/tax.ts +9 -9
  234. package/src/interfaces/rest/routes/webhooks.ts +4 -4
  235. package/src/interfaces/rest/utils.ts +4 -14
  236. package/src/jobs.ts +2 -1
  237. package/src/kernel/database/adapter.ts +1 -1
  238. package/src/kernel/database/migrate.ts +2 -17
  239. package/src/kernel/database/pglite-transaction.ts +61 -0
  240. package/src/kernel/database/tx-context.ts +2 -20
  241. package/src/kernel/database/unique-violation.ts +7 -0
  242. package/src/kernel/error-mapper.ts +1 -0
  243. package/src/kernel/errors.ts +18 -0
  244. package/src/kernel/hooks/create-context.ts +38 -8
  245. package/src/kernel/hooks/registry.ts +0 -37
  246. package/src/kernel/jobs/drizzle-adapter.ts +4 -15
  247. package/src/kernel/jobs/prepare-enqueue.ts +42 -0
  248. package/src/kernel/jobs/types.ts +0 -5
  249. package/src/kernel/local-api.ts +0 -44
  250. package/src/kernel/plugin/manifest.ts +3 -5
  251. package/src/modules/analytics/service.ts +0 -36
  252. package/src/modules/cart/service.ts +6 -29
  253. package/src/modules/catalog/entity-service.ts +9 -19
  254. package/src/modules/catalog/import-service.ts +4 -11
  255. package/src/modules/catalog/service.ts +2 -286
  256. package/src/modules/customers/service.ts +6 -27
  257. package/src/modules/documents/render.ts +2 -19
  258. package/src/modules/fulfillment/service.ts +8 -27
  259. package/src/modules/inventory/service.ts +3 -21
  260. package/src/modules/media/service.ts +2 -8
  261. package/src/modules/orders/quote.ts +1 -2
  262. package/src/modules/orders/service.ts +5 -30
  263. package/src/modules/pricing/service.ts +12 -30
  264. package/src/modules/promotions/service.ts +5 -28
  265. package/src/modules/tax/service.ts +20 -48
  266. package/src/modules/webhooks/hook.ts +3 -2
  267. package/src/modules/webhooks/service.ts +1 -42
  268. package/src/runtime/commerce.ts +4 -11
  269. package/src/runtime/kernel-modules.ts +191 -67
  270. package/src/runtime/kernel-types.ts +3 -26
  271. package/src/runtime/kernel.ts +11 -66
  272. package/src/runtime/server.ts +1 -3
  273. package/src/test-utils/create-pglite-adapter.ts +5 -67
  274. package/src/test-utils/create-plugin-test-app.ts +13 -52
  275. package/src/test-utils/rest-api-test-utils.ts +3 -70
  276. package/src/test-utils/test-actors.ts +66 -0
  277. package/src/testing.ts +1 -3
  278. package/src/utils/escape-html.ts +9 -0
  279. package/src/utils/id.ts +0 -4
  280. package/src/utils/logger.ts +1 -1
  281. package/src/utils/money.ts +62 -0
  282. package/dist/auth/access.d.ts +0 -101
  283. package/dist/auth/access.d.ts.map +0 -1
  284. package/dist/auth/access.js +0 -128
  285. package/dist/generated/plugin-manifest.d.ts +0 -51
  286. package/dist/generated/plugin-manifest.d.ts.map +0 -1
  287. package/dist/generated/plugin-manifest.js +0 -21
  288. package/dist/kernel/factory/repository-factory.d.ts +0 -71
  289. package/dist/kernel/factory/repository-factory.d.ts.map +0 -1
  290. package/dist/kernel/factory/repository-factory.js +0 -138
  291. package/dist/kernel/http-error.d.ts +0 -30
  292. package/dist/kernel/http-error.d.ts.map +0 -1
  293. package/dist/kernel/http-error.js +0 -35
  294. package/dist/kernel/jobs/builtin-job-tasks.d.ts +0 -3
  295. package/dist/kernel/jobs/builtin-job-tasks.d.ts.map +0 -1
  296. package/dist/kernel/jobs/builtin-job-tasks.js +0 -6
  297. package/dist/kernel/module/define.d.ts +0 -21
  298. package/dist/kernel/module/define.d.ts.map +0 -1
  299. package/dist/kernel/module/define.js +0 -3
  300. package/dist/kernel/module/index.d.ts +0 -4
  301. package/dist/kernel/module/index.d.ts.map +0 -1
  302. package/dist/kernel/module/index.js +0 -2
  303. package/dist/kernel/module/topo-sort.d.ts +0 -7
  304. package/dist/kernel/module/topo-sort.d.ts.map +0 -1
  305. package/dist/kernel/module/topo-sort.js +0 -89
  306. package/dist/kernel/query/executor.d.ts +0 -21
  307. package/dist/kernel/query/executor.d.ts.map +0 -1
  308. package/dist/kernel/query/executor.js +0 -128
  309. package/dist/kernel/query/registry.d.ts +0 -33
  310. package/dist/kernel/query/registry.d.ts.map +0 -1
  311. package/dist/kernel/query/registry.js +0 -20
  312. package/dist/kernel/service-registry.d.ts +0 -109
  313. package/dist/kernel/service-registry.d.ts.map +0 -1
  314. package/dist/kernel/service-registry.js +0 -26
  315. package/dist/modules/analytics/hooks.d.ts +0 -13
  316. package/dist/modules/analytics/hooks.d.ts.map +0 -1
  317. package/dist/modules/analytics/hooks.js +0 -12
  318. package/dist/modules/analytics/module.d.ts +0 -3
  319. package/dist/modules/analytics/module.d.ts.map +0 -1
  320. package/dist/modules/analytics/module.js +0 -24
  321. package/dist/modules/analytics/repository/index.d.ts +0 -5
  322. package/dist/modules/analytics/repository/index.d.ts.map +0 -1
  323. package/dist/modules/analytics/repository/index.js +0 -1
  324. package/dist/modules/audit/index.d.ts +0 -2
  325. package/dist/modules/audit/index.d.ts.map +0 -1
  326. package/dist/modules/audit/index.js +0 -1
  327. package/dist/modules/audit/module.d.ts +0 -180
  328. package/dist/modules/audit/module.d.ts.map +0 -1
  329. package/dist/modules/audit/module.js +0 -8
  330. package/dist/modules/cart/access.d.ts +0 -11
  331. package/dist/modules/cart/access.d.ts.map +0 -1
  332. package/dist/modules/cart/access.js +0 -18
  333. package/dist/modules/cart/module.d.ts +0 -14
  334. package/dist/modules/cart/module.d.ts.map +0 -1
  335. package/dist/modules/cart/module.js +0 -17
  336. package/dist/modules/catalog/module.d.ts +0 -26
  337. package/dist/modules/catalog/module.d.ts.map +0 -1
  338. package/dist/modules/catalog/module.js +0 -33
  339. package/dist/modules/customers/index.d.ts +0 -2
  340. package/dist/modules/customers/index.d.ts.map +0 -1
  341. package/dist/modules/customers/index.js +0 -1
  342. package/dist/modules/customers/module.d.ts +0 -563
  343. package/dist/modules/customers/module.d.ts.map +0 -1
  344. package/dist/modules/customers/module.js +0 -20
  345. package/dist/modules/documents/module.d.ts +0 -7
  346. package/dist/modules/documents/module.d.ts.map +0 -1
  347. package/dist/modules/documents/module.js +0 -13
  348. package/dist/modules/fulfillment/module.d.ts +0 -13
  349. package/dist/modules/fulfillment/module.d.ts.map +0 -1
  350. package/dist/modules/fulfillment/module.js +0 -23
  351. package/dist/modules/inventory/module.d.ts +0 -13
  352. package/dist/modules/inventory/module.d.ts.map +0 -1
  353. package/dist/modules/inventory/module.js +0 -20
  354. package/dist/modules/media/index.d.ts +0 -2
  355. package/dist/modules/media/index.d.ts.map +0 -1
  356. package/dist/modules/media/index.js +0 -1
  357. package/dist/modules/media/module.d.ts +0 -360
  358. package/dist/modules/media/module.d.ts.map +0 -1
  359. package/dist/modules/media/module.js +0 -24
  360. package/dist/modules/orders/module.d.ts +0 -25
  361. package/dist/modules/orders/module.d.ts.map +0 -1
  362. package/dist/modules/orders/module.js +0 -33
  363. package/dist/modules/organization/index.d.ts +0 -2
  364. package/dist/modules/organization/index.d.ts.map +0 -1
  365. package/dist/modules/organization/index.js +0 -1
  366. package/dist/modules/organization/module.d.ts +0 -205
  367. package/dist/modules/organization/module.d.ts.map +0 -1
  368. package/dist/modules/organization/module.js +0 -8
  369. package/dist/modules/payments/module.d.ts +0 -3
  370. package/dist/modules/payments/module.d.ts.map +0 -1
  371. package/dist/modules/payments/module.js +0 -7
  372. package/dist/modules/payments/repository/index.d.ts +0 -5
  373. package/dist/modules/payments/repository/index.d.ts.map +0 -1
  374. package/dist/modules/payments/repository/index.js +0 -1
  375. package/dist/modules/pricing/index.d.ts +0 -2
  376. package/dist/modules/pricing/index.d.ts.map +0 -1
  377. package/dist/modules/pricing/index.js +0 -1
  378. package/dist/modules/pricing/module.d.ts +0 -14
  379. package/dist/modules/pricing/module.d.ts.map +0 -1
  380. package/dist/modules/pricing/module.js +0 -17
  381. package/dist/modules/promotions/module.d.ts +0 -14
  382. package/dist/modules/promotions/module.d.ts.map +0 -1
  383. package/dist/modules/promotions/module.js +0 -19
  384. package/dist/modules/search/module.d.ts +0 -8
  385. package/dist/modules/search/module.d.ts.map +0 -1
  386. package/dist/modules/search/module.js +0 -22
  387. package/dist/modules/search/repository/index.d.ts +0 -5
  388. package/dist/modules/search/repository/index.d.ts.map +0 -1
  389. package/dist/modules/search/repository/index.js +0 -1
  390. package/dist/modules/settings/module.d.ts +0 -6
  391. package/dist/modules/settings/module.d.ts.map +0 -1
  392. package/dist/modules/settings/module.js +0 -12
  393. package/dist/modules/shipping/module.d.ts +0 -12
  394. package/dist/modules/shipping/module.d.ts.map +0 -1
  395. package/dist/modules/shipping/module.js +0 -14
  396. package/dist/modules/tax/module.d.ts +0 -7
  397. package/dist/modules/tax/module.d.ts.map +0 -1
  398. package/dist/modules/tax/module.js +0 -13
  399. package/dist/modules/webhooks/index.d.ts +0 -2
  400. package/dist/modules/webhooks/index.d.ts.map +0 -1
  401. package/dist/modules/webhooks/index.js +0 -1
  402. package/dist/modules/webhooks/module.d.ts +0 -403
  403. package/dist/modules/webhooks/module.d.ts.map +0 -1
  404. package/dist/modules/webhooks/module.js +0 -16
  405. package/dist/test-utils/create-repository-test-harness.d.ts +0 -8
  406. package/dist/test-utils/create-repository-test-harness.d.ts.map +0 -1
  407. package/dist/test-utils/create-repository-test-harness.js +0 -7
  408. package/dist/test-utils/create-test-plugin-context.d.ts +0 -38
  409. package/dist/test-utils/create-test-plugin-context.d.ts.map +0 -1
  410. package/dist/test-utils/create-test-plugin-context.js +0 -39
  411. package/dist/test-utils/typed-hooks.d.ts +0 -44
  412. package/dist/test-utils/typed-hooks.d.ts.map +0 -1
  413. package/dist/test-utils/typed-hooks.js +0 -36
  414. package/dist/types/commerce-types.d.ts +0 -34
  415. package/dist/types/commerce-types.d.ts.map +0 -1
  416. package/dist/types/commerce-types.js +0 -1
  417. package/src/auth/access.ts +0 -187
  418. package/src/generated/plugin-capabilities.d.ts +0 -21
  419. package/src/generated/plugin-manifest.ts +0 -24
  420. package/src/generated/plugin-repositories.d.ts +0 -21
  421. package/src/kernel/factory/repository-factory.ts +0 -244
  422. package/src/kernel/http-error.ts +0 -44
  423. package/src/kernel/jobs/builtin-job-tasks.ts +0 -17
  424. package/src/kernel/module/define.ts +0 -36
  425. package/src/kernel/module/index.ts +0 -3
  426. package/src/kernel/module/topo-sort.ts +0 -99
  427. package/src/kernel/query/executor.ts +0 -184
  428. package/src/kernel/query/registry.ts +0 -46
  429. package/src/kernel/service-registry.ts +0 -76
  430. package/src/modules/analytics/hooks.ts +0 -11
  431. package/src/modules/analytics/module.ts +0 -35
  432. package/src/modules/analytics/repository/index.ts +0 -5
  433. package/src/modules/audit/index.ts +0 -1
  434. package/src/modules/audit/module.ts +0 -11
  435. package/src/modules/cart/access.ts +0 -27
  436. package/src/modules/cart/module.ts +0 -32
  437. package/src/modules/catalog/module.ts +0 -80
  438. package/src/modules/customers/index.ts +0 -1
  439. package/src/modules/customers/module.ts +0 -29
  440. package/src/modules/documents/module.ts +0 -21
  441. package/src/modules/fulfillment/module.ts +0 -44
  442. package/src/modules/inventory/module.ts +0 -37
  443. package/src/modules/media/index.ts +0 -1
  444. package/src/modules/media/module.ts +0 -27
  445. package/src/modules/orders/module.ts +0 -67
  446. package/src/modules/organization/index.ts +0 -1
  447. package/src/modules/organization/module.ts +0 -11
  448. package/src/modules/payments/module.ts +0 -14
  449. package/src/modules/payments/repository/index.ts +0 -5
  450. package/src/modules/pricing/index.ts +0 -1
  451. package/src/modules/pricing/module.ts +0 -32
  452. package/src/modules/promotions/module.ts +0 -34
  453. package/src/modules/search/module.ts +0 -32
  454. package/src/modules/search/repository/index.ts +0 -5
  455. package/src/modules/settings/module.ts +0 -20
  456. package/src/modules/shipping/module.ts +0 -27
  457. package/src/modules/tax/module.ts +0 -21
  458. package/src/modules/webhooks/index.ts +0 -1
  459. package/src/modules/webhooks/module.ts +0 -24
  460. package/src/test-utils/create-repository-test-harness.ts +0 -16
  461. package/src/test-utils/create-test-plugin-context.ts +0 -66
  462. package/src/test-utils/typed-hooks.ts +0 -55
  463. package/src/types/commerce-types.ts +0 -34
@@ -53,7 +53,7 @@ import {
53
53
  } from "../schemas/catalog.js";
54
54
  import {
55
55
  type AppEnv,
56
- mapErrorToResponse,
56
+ errorBody,
57
57
  mapErrorToStatus,
58
58
  parseInclude,
59
59
  parsePagination,
@@ -86,7 +86,7 @@ export function catalogRoutes(kernel: Kernel) {
86
86
  );
87
87
  if (!result.ok) {
88
88
  return c.json(
89
- mapErrorToResponse(result.error),
89
+ errorBody(result.error),
90
90
  mapErrorToStatus(result.error),
91
91
  );
92
92
  }
@@ -112,7 +112,7 @@ export function catalogRoutes(kernel: Kernel) {
112
112
  );
113
113
  if (!result.ok) {
114
114
  return c.json(
115
- mapErrorToResponse(result.error),
115
+ errorBody(result.error),
116
116
  mapErrorToStatus(result.error),
117
117
  );
118
118
  }
@@ -145,7 +145,7 @@ export function catalogRoutes(kernel: Kernel) {
145
145
 
146
146
  if (!result.ok) {
147
147
  return c.json(
148
- mapErrorToResponse(result.error),
148
+ errorBody(result.error),
149
149
  mapErrorToStatus(result.error),
150
150
  );
151
151
  }
@@ -184,7 +184,7 @@ export function catalogRoutes(kernel: Kernel) {
184
184
  });
185
185
  } catch (error) {
186
186
  console.error("[catalog] List failed:", error instanceof Error ? error.message : error);
187
- return c.json(mapErrorToResponse(error), mapErrorToStatus(error));
187
+ return c.json(errorBody(error), mapErrorToStatus(error));
188
188
  }
189
189
  });
190
190
 
@@ -215,7 +215,7 @@ export function catalogRoutes(kernel: Kernel) {
215
215
 
216
216
  if (!result.ok) {
217
217
  return c.json(
218
- mapErrorToResponse(result.error),
218
+ errorBody(result.error),
219
219
  mapErrorToStatus(result.error),
220
220
  );
221
221
  }
@@ -223,7 +223,7 @@ export function catalogRoutes(kernel: Kernel) {
223
223
  return c.json({ data: result.value });
224
224
  } catch (error) {
225
225
  console.error("[catalog] Get entity failed:", error instanceof Error ? error.message : error);
226
- return c.json(mapErrorToResponse(error), mapErrorToStatus(error));
226
+ return c.json(errorBody(error), mapErrorToStatus(error));
227
227
  }
228
228
  });
229
229
 
@@ -235,7 +235,7 @@ export function catalogRoutes(kernel: Kernel) {
235
235
  );
236
236
  if (!result.ok) {
237
237
  return c.json(
238
- mapErrorToResponse(result.error),
238
+ errorBody(result.error),
239
239
  mapErrorToStatus(result.error),
240
240
  );
241
241
  }
@@ -251,7 +251,7 @@ export function catalogRoutes(kernel: Kernel) {
251
251
  );
252
252
  if (!result.ok) {
253
253
  return c.json(
254
- mapErrorToResponse(result.error),
254
+ errorBody(result.error),
255
255
  mapErrorToStatus(result.error),
256
256
  );
257
257
  }
@@ -266,7 +266,7 @@ export function catalogRoutes(kernel: Kernel) {
266
266
  );
267
267
  if (!result.ok) {
268
268
  return c.json(
269
- mapErrorToResponse(result.error),
269
+ errorBody(result.error),
270
270
  mapErrorToStatus(result.error),
271
271
  );
272
272
  }
@@ -281,7 +281,7 @@ export function catalogRoutes(kernel: Kernel) {
281
281
  );
282
282
  if (!result.ok)
283
283
  return c.json(
284
- mapErrorToResponse(result.error),
284
+ errorBody(result.error),
285
285
  mapErrorToStatus(result.error),
286
286
  );
287
287
  return c.json({ data: result.value });
@@ -295,7 +295,7 @@ export function catalogRoutes(kernel: Kernel) {
295
295
  );
296
296
  if (!result.ok)
297
297
  return c.json(
298
- mapErrorToResponse(result.error),
298
+ errorBody(result.error),
299
299
  mapErrorToStatus(result.error),
300
300
  );
301
301
  return c.json({ data: result.value });
@@ -309,7 +309,7 @@ export function catalogRoutes(kernel: Kernel) {
309
309
  );
310
310
  if (!result.ok)
311
311
  return c.json(
312
- mapErrorToResponse(result.error),
312
+ errorBody(result.error),
313
313
  mapErrorToStatus(result.error),
314
314
  );
315
315
  return c.json({ data: result.value });
@@ -325,7 +325,7 @@ export function catalogRoutes(kernel: Kernel) {
325
325
  );
326
326
  if (!result.ok)
327
327
  return c.json(
328
- mapErrorToResponse(result.error),
328
+ errorBody(result.error),
329
329
  mapErrorToStatus(result.error),
330
330
  );
331
331
  return c.json({ data: { updated: true } });
@@ -341,7 +341,7 @@ export function catalogRoutes(kernel: Kernel) {
341
341
  );
342
342
  if (!result.ok)
343
343
  return c.json(
344
- mapErrorToResponse(result.error),
344
+ errorBody(result.error),
345
345
  mapErrorToStatus(result.error),
346
346
  );
347
347
  return c.json({ data: result.value });
@@ -357,7 +357,7 @@ export function catalogRoutes(kernel: Kernel) {
357
357
  );
358
358
  if (!result.ok)
359
359
  return c.json(
360
- mapErrorToResponse(result.error),
360
+ errorBody(result.error),
361
361
  mapErrorToStatus(result.error),
362
362
  );
363
363
  return c.json({ data: result.value });
@@ -372,7 +372,7 @@ export function catalogRoutes(kernel: Kernel) {
372
372
  );
373
373
  if (!result.ok)
374
374
  return c.json(
375
- mapErrorToResponse(result.error),
375
+ errorBody(result.error),
376
376
  mapErrorToStatus(result.error),
377
377
  );
378
378
  return c.json({ data: result.value });
@@ -387,7 +387,7 @@ export function catalogRoutes(kernel: Kernel) {
387
387
  );
388
388
  if (!result.ok)
389
389
  return c.json(
390
- mapErrorToResponse(result.error),
390
+ errorBody(result.error),
391
391
  mapErrorToStatus(result.error),
392
392
  );
393
393
  return c.json({ data: result.value });
@@ -396,14 +396,14 @@ export function catalogRoutes(kernel: Kernel) {
396
396
  // @ts-expect-error -- openapi handler union return type
397
397
  router.openapi(archiveCategoryRoute, async (c) => {
398
398
  const result = await kernel.services.catalog.archiveCategory(c.req.param("categoryId"), c.get("actor"));
399
- if (!result.ok) return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
399
+ if (!result.ok) return c.json(errorBody(result.error), mapErrorToStatus(result.error));
400
400
  return c.json({ data: result.value });
401
401
  });
402
402
 
403
403
  // @ts-expect-error -- openapi handler union return type
404
404
  router.openapi(restoreCategoryRoute, async (c) => {
405
405
  const result = await kernel.services.catalog.restoreCategory(c.req.param("categoryId"), c.get("actor"));
406
- if (!result.ok) return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
406
+ if (!result.ok) return c.json(errorBody(result.error), mapErrorToStatus(result.error));
407
407
  return c.json({ data: result.value });
408
408
  });
409
409
 
@@ -415,7 +415,7 @@ export function catalogRoutes(kernel: Kernel) {
415
415
  );
416
416
  if (!result.ok)
417
417
  return c.json(
418
- mapErrorToResponse(result.error),
418
+ errorBody(result.error),
419
419
  mapErrorToStatus(result.error),
420
420
  );
421
421
  return c.json({ data: result.value }, 201);
@@ -430,7 +430,7 @@ export function catalogRoutes(kernel: Kernel) {
430
430
  );
431
431
  if (!result.ok)
432
432
  return c.json(
433
- mapErrorToResponse(result.error),
433
+ errorBody(result.error),
434
434
  mapErrorToStatus(result.error),
435
435
  );
436
436
  return c.json({ data: result.value });
@@ -444,7 +444,7 @@ export function catalogRoutes(kernel: Kernel) {
444
444
  );
445
445
  if (!result.ok)
446
446
  return c.json(
447
- mapErrorToResponse(result.error),
447
+ errorBody(result.error),
448
448
  mapErrorToStatus(result.error),
449
449
  );
450
450
  return c.json({ data: { deleted: true } });
@@ -459,7 +459,7 @@ export function catalogRoutes(kernel: Kernel) {
459
459
  );
460
460
  if (!result.ok)
461
461
  return c.json(
462
- mapErrorToResponse(result.error),
462
+ errorBody(result.error),
463
463
  mapErrorToStatus(result.error),
464
464
  );
465
465
  return c.json({ data: { linked: true } });
@@ -474,7 +474,7 @@ export function catalogRoutes(kernel: Kernel) {
474
474
  );
475
475
  if (!result.ok)
476
476
  return c.json(
477
- mapErrorToResponse(result.error),
477
+ errorBody(result.error),
478
478
  mapErrorToStatus(result.error),
479
479
  );
480
480
  return c.json({ data: { unlinked: true } });
@@ -485,7 +485,7 @@ export function catalogRoutes(kernel: Kernel) {
485
485
  const result = await kernel.services.catalog.listBrands({ actor: c.get("actor"), tx: null, requestId: "" });
486
486
  if (!result.ok)
487
487
  return c.json(
488
- mapErrorToResponse(result.error),
488
+ errorBody(result.error),
489
489
  mapErrorToStatus(result.error),
490
490
  );
491
491
  return c.json({ data: result.value });
@@ -499,7 +499,7 @@ export function catalogRoutes(kernel: Kernel) {
499
499
  );
500
500
  if (!result.ok)
501
501
  return c.json(
502
- mapErrorToResponse(result.error),
502
+ errorBody(result.error),
503
503
  mapErrorToStatus(result.error),
504
504
  );
505
505
  return c.json({ data: result.value }, 201);
@@ -514,7 +514,7 @@ export function catalogRoutes(kernel: Kernel) {
514
514
  );
515
515
  if (!result.ok)
516
516
  return c.json(
517
- mapErrorToResponse(result.error),
517
+ errorBody(result.error),
518
518
  mapErrorToStatus(result.error),
519
519
  );
520
520
  return c.json({ data: result.value });
@@ -528,7 +528,7 @@ export function catalogRoutes(kernel: Kernel) {
528
528
  );
529
529
  if (!result.ok)
530
530
  return c.json(
531
- mapErrorToResponse(result.error),
531
+ errorBody(result.error),
532
532
  mapErrorToStatus(result.error),
533
533
  );
534
534
  return c.json({ data: { deleted: true } });
@@ -543,7 +543,7 @@ export function catalogRoutes(kernel: Kernel) {
543
543
  );
544
544
  if (!result.ok)
545
545
  return c.json(
546
- mapErrorToResponse(result.error),
546
+ errorBody(result.error),
547
547
  mapErrorToStatus(result.error),
548
548
  );
549
549
  return c.json({ data: { linked: true } });
@@ -558,7 +558,7 @@ export function catalogRoutes(kernel: Kernel) {
558
558
  );
559
559
  if (!result.ok)
560
560
  return c.json(
561
- mapErrorToResponse(result.error),
561
+ errorBody(result.error),
562
562
  mapErrorToStatus(result.error),
563
563
  );
564
564
  return c.json({ data: { unlinked: true } });
@@ -572,7 +572,7 @@ export function catalogRoutes(kernel: Kernel) {
572
572
  );
573
573
  if (!result.ok)
574
574
  return c.json(
575
- mapErrorToResponse(result.error),
575
+ errorBody(result.error),
576
576
  mapErrorToStatus(result.error),
577
577
  );
578
578
  return c.json({ data: result.value }, 201);
@@ -586,7 +586,7 @@ export function catalogRoutes(kernel: Kernel) {
586
586
  );
587
587
  if (!result.ok)
588
588
  return c.json(
589
- mapErrorToResponse(result.error),
589
+ errorBody(result.error),
590
590
  mapErrorToStatus(result.error),
591
591
  );
592
592
  return c.json({ data: result.value }, 201);
@@ -600,7 +600,7 @@ export function catalogRoutes(kernel: Kernel) {
600
600
  );
601
601
  if (!result.ok)
602
602
  return c.json(
603
- mapErrorToResponse(result.error),
603
+ errorBody(result.error),
604
604
  mapErrorToStatus(result.error),
605
605
  );
606
606
  return c.json({ data: result.value }, 201);
@@ -616,7 +616,7 @@ export function catalogRoutes(kernel: Kernel) {
616
616
  );
617
617
  if (!result.ok)
618
618
  return c.json(
619
- mapErrorToResponse(result.error),
619
+ errorBody(result.error),
620
620
  mapErrorToStatus(result.error),
621
621
  );
622
622
  return c.json({ data: result.value }, result.value.created ? 201 : 200);
@@ -632,7 +632,7 @@ export function catalogRoutes(kernel: Kernel) {
632
632
  );
633
633
  if (!result.ok)
634
634
  return c.json(
635
- mapErrorToResponse(result.error),
635
+ errorBody(result.error),
636
636
  mapErrorToStatus(result.error),
637
637
  );
638
638
  return c.json({ data: result.value }, 201);
@@ -648,7 +648,7 @@ export function catalogRoutes(kernel: Kernel) {
648
648
  );
649
649
  if (!result.ok)
650
650
  return c.json(
651
- mapErrorToResponse(result.error),
651
+ errorBody(result.error),
652
652
  mapErrorToStatus(result.error),
653
653
  );
654
654
  return c.json({ data: result.value }, 201);
@@ -8,7 +8,6 @@ import {
8
8
  calculateTax,
9
9
  checkInventoryAvailability,
10
10
  completeCheckout,
11
- recordAnalyticsEvent,
12
11
  resolveCurrentPrices,
13
12
  validateCartNotEmpty,
14
13
  validatePaymentMethod,
@@ -19,11 +18,11 @@ import { runAfterHooks, runBeforeHooks } from "../../../kernel/hooks/executor.js
19
18
  import { createHookContext } from "../../../kernel/hooks/create-context.js";
20
19
  import type { AfterHook, BeforeHook, ServiceContainer } from "../../../kernel/hooks/types.js";
21
20
  import type { PluginDb } from "../../../kernel/database/plugin-types.js";
22
- import { type AppEnv, mapErrorToResponse, mapErrorToStatus } from "../utils.js";
21
+ import { type AppEnv, errorBody, mapErrorToStatus } from "../utils.js";
23
22
  import { isCommerceError } from "../../../kernel/errors.js";
24
23
  import { assertPermission } from "../../../auth/permissions.js";
25
24
  import { resolveOrgIdForCommerce } from "../../../auth/org.js";
26
- import { makeDeterministicId, makeId, makeIdempotencyScope } from "../../../utils/id.js";
25
+ import { makeDeterministicId, makeIdempotencyScope } from "../../../utils/id.js";
27
26
  import type { ShippingAddress } from "../../../modules/shipping/calculator.js";
28
27
  import type { Actor } from "../../../auth/types.js";
29
28
 
@@ -85,7 +84,7 @@ export function checkoutRoutes(kernel: Kernel) {
85
84
  const body = c.req.valid("json");
86
85
 
87
86
  const actor = c.get("actor");
88
- const cartSecret = c.req.header("x-cart-secret") ?? c.req.header("X-Cart-Secret") ?? undefined;
87
+ const cartSecret = c.req.header("x-cart-secret") ?? undefined;
89
88
 
90
89
  // Idempotent replay is authorized by the order service before payment runs.
91
90
  // This preflight only preserves the no-double-payment fast path; the create
@@ -99,7 +98,7 @@ export function checkoutRoutes(kernel: Kernel) {
99
98
  cartSecret,
100
99
  );
101
100
  if (!replay.ok) {
102
- return c.json(mapErrorToResponse(replay.error), mapErrorToStatus(replay.error));
101
+ return c.json(errorBody(replay.error), mapErrorToStatus(replay.error));
103
102
  }
104
103
  if (replay.value) return c.json({ data: replay.value }, 201);
105
104
  }
@@ -116,7 +115,7 @@ export function checkoutRoutes(kernel: Kernel) {
116
115
  );
117
116
  if (!cartAccess.ok) {
118
117
  return c.json(
119
- mapErrorToResponse(cartAccess.error),
118
+ errorBody(cartAccess.error),
120
119
  mapErrorToStatus(cartAccess.error),
121
120
  );
122
121
  }
@@ -127,9 +126,9 @@ export function checkoutRoutes(kernel: Kernel) {
127
126
  ? await makeDeterministicId(
128
127
  `checkout:${resolveOrgIdForCommerce(actor, kernel.config)}:${idempotencyScope}:${body.idempotencyKey}`,
129
128
  )
130
- : makeId();
129
+ : crypto.randomUUID();
131
130
  const checkoutData: CheckoutData = {
132
- checkoutId: makeId(),
131
+ checkoutId: crypto.randomUUID(),
133
132
  orderId,
134
133
  cartId: body.cartId,
135
134
  currency: body.currency ?? "USD",
@@ -192,7 +191,6 @@ export function checkoutRoutes(kernel: Kernel) {
192
191
 
193
192
  const afterHooks: AfterHook<OrderResult>[] = [
194
193
  completeCheckout,
195
- recordAnalyticsEvent,
196
194
  ...(kernel.hooks.resolve("checkout.afterCreate") as AfterHook<OrderResult>[]),
197
195
  ];
198
196
 
@@ -299,7 +297,7 @@ export function checkoutRoutes(kernel: Kernel) {
299
297
 
300
298
  if (!order.ok) {
301
299
  return c.json(
302
- mapErrorToResponse(order.error),
300
+ errorBody(order.error),
303
301
  mapErrorToStatus(order.error),
304
302
  );
305
303
  }
@@ -12,7 +12,7 @@ import {
12
12
  updateInteractionRoute,
13
13
  deleteInteractionRoute,
14
14
  } from "../schemas/customers.js";
15
- import { type AppEnv, mapErrorToResponse, mapErrorToStatus, parsePagination, parseInclude, requirePerm } from "../utils.js";
15
+ import { type AppEnv, errorBody, mapErrorToStatus, parsePagination, parseInclude, requirePerm } from "../utils.js";
16
16
 
17
17
  export function customerRoutes(kernel: Kernel) {
18
18
  const router = new OpenAPIHono<AppEnv>();
@@ -27,7 +27,7 @@ export function customerRoutes(kernel: Kernel) {
27
27
  const { page, limit } = parsePagination(c.req.query());
28
28
 
29
29
  const result = await kernel.services.customers.list(actor);
30
- if (!result.ok) return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
30
+ if (!result.ok) return c.json(errorBody(result.error), mapErrorToStatus(result.error));
31
31
 
32
32
  const all = result.value;
33
33
  const total = all.length;
@@ -46,7 +46,7 @@ export function customerRoutes(kernel: Kernel) {
46
46
  router.openapi(createCustomerRoute, async (c) => {
47
47
  const body = c.req.valid("json");
48
48
  const result = await kernel.services.customers.createWalkIn(body, c.get("actor"));
49
- if (!result.ok) return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
49
+ if (!result.ok) return c.json(errorBody(result.error), mapErrorToStatus(result.error));
50
50
  return c.json({ data: result.value }, 201);
51
51
  });
52
52
 
@@ -55,7 +55,7 @@ export function customerRoutes(kernel: Kernel) {
55
55
  const { id } = c.req.valid("param");
56
56
  const actor = c.get("actor");
57
57
  const result = await kernel.services.customers.getById(id, actor);
58
- if (!result.ok) return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
58
+ if (!result.ok) return c.json(errorBody(result.error), mapErrorToStatus(result.error));
59
59
  return c.json({ data: result.value });
60
60
  });
61
61
 
@@ -75,7 +75,7 @@ export function customerRoutes(kernel: Kernel) {
75
75
  const result = await kernel.services.customers.update(id, updates, actor, undefined, {
76
76
  replaceMetadata,
77
77
  });
78
- if (!result.ok) return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
78
+ if (!result.ok) return c.json(errorBody(result.error), mapErrorToStatus(result.error));
79
79
  return c.json({ data: result.value });
80
80
  });
81
81
 
@@ -92,7 +92,7 @@ export function customerRoutes(kernel: Kernel) {
92
92
  { page, limit, ...(status ? { status } : {}), ...(includeTotals ? { includeTotals: true } : {}) },
93
93
  actor,
94
94
  );
95
- if (!result.ok) return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
95
+ if (!result.ok) return c.json(errorBody(result.error), mapErrorToStatus(result.error));
96
96
  if (includeTotals) {
97
97
  // Wrapped shape: { data: { items, totals } } (+ pagination meta).
98
98
  return c.json({
@@ -111,13 +111,13 @@ export function customerRoutes(kernel: Kernel) {
111
111
 
112
112
  // Get customer first, then use their userId for address lookup
113
113
  const customerResult = await kernel.services.customers.getById(id, actor);
114
- if (!customerResult.ok) return c.json(mapErrorToResponse(customerResult.error), mapErrorToStatus(customerResult.error));
114
+ if (!customerResult.ok) return c.json(errorBody(customerResult.error), mapErrorToStatus(customerResult.error));
115
115
 
116
116
  const addressResult = await kernel.services.customers.getAddresses(
117
117
  customerResult.value.userId,
118
118
  actor,
119
119
  );
120
- if (!addressResult.ok) return c.json(mapErrorToResponse(addressResult.error), mapErrorToStatus(addressResult.error));
120
+ if (!addressResult.ok) return c.json(errorBody(addressResult.error), mapErrorToStatus(addressResult.error));
121
121
  return c.json({ data: addressResult.value });
122
122
  });
123
123
 
@@ -127,7 +127,7 @@ export function customerRoutes(kernel: Kernel) {
127
127
  router.openapi(listInteractionsRoute, async (c) => {
128
128
  const { id } = c.req.valid("param");
129
129
  const result = await kernel.services.customers.listInteractions(id, c.get("actor"));
130
- if (!result.ok) return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
130
+ if (!result.ok) return c.json(errorBody(result.error), mapErrorToStatus(result.error));
131
131
  return c.json({ data: result.value });
132
132
  });
133
133
 
@@ -136,7 +136,7 @@ export function customerRoutes(kernel: Kernel) {
136
136
  const { id } = c.req.valid("param");
137
137
  const body = c.req.valid("json");
138
138
  const result = await kernel.services.customers.createInteraction(id, body, c.get("actor"));
139
- if (!result.ok) return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
139
+ if (!result.ok) return c.json(errorBody(result.error), mapErrorToStatus(result.error));
140
140
  return c.json({ data: result.value }, 201);
141
141
  });
142
142
 
@@ -145,7 +145,7 @@ export function customerRoutes(kernel: Kernel) {
145
145
  const { id, iid } = c.req.valid("param");
146
146
  const body = c.req.valid("json");
147
147
  const result = await kernel.services.customers.updateInteraction(id, iid, body, c.get("actor"));
148
- if (!result.ok) return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
148
+ if (!result.ok) return c.json(errorBody(result.error), mapErrorToStatus(result.error));
149
149
  return c.json({ data: result.value });
150
150
  });
151
151
 
@@ -153,7 +153,7 @@ export function customerRoutes(kernel: Kernel) {
153
153
  router.openapi(deleteInteractionRoute, async (c) => {
154
154
  const { id, iid } = c.req.valid("param");
155
155
  const result = await kernel.services.customers.deleteInteraction(id, iid, c.get("actor"));
156
- if (!result.ok) return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
156
+ if (!result.ok) return c.json(errorBody(result.error), mapErrorToStatus(result.error));
157
157
  return c.json({ data: { deleted: true } });
158
158
  });
159
159
 
@@ -6,7 +6,7 @@ import {
6
6
  invoicePdfRoute,
7
7
  receiptHtmlRoute,
8
8
  } from "../schemas/documents.js";
9
- import { type AppEnv, mapErrorToResponse, mapErrorToStatus, requireAnyPerm } from "../utils.js";
9
+ import { type AppEnv, errorBody, mapErrorToStatus, requireAnyPerm } from "../utils.js";
10
10
 
11
11
  /**
12
12
  * Order document rendering (issue #47). Mounted under /orders. Access
@@ -19,14 +19,14 @@ export function documentRoutes(kernel: Kernel) {
19
19
  router.use("/*", requireAnyPerm(["orders:read", "orders:read:own"]));
20
20
 
21
21
  router.openapi(invoicePdfRoute, async (c) => {
22
- const guestCredential = c.req.header("x-cart-secret") ?? c.req.header("X-Cart-Secret") ?? undefined;
22
+ const guestCredential = c.req.header("x-cart-secret") ?? undefined;
23
23
  const result = await kernel.services.documents.renderInvoicePdf(
24
24
  c.req.param("id"),
25
25
  c.get("actor"),
26
26
  undefined,
27
27
  guestCredential,
28
28
  );
29
- if (!result.ok) return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
29
+ if (!result.ok) return c.json(errorBody(result.error), mapErrorToStatus(result.error));
30
30
  return c.body(result.value.pdf.slice().buffer as ArrayBuffer, 200, {
31
31
  "content-type": "application/pdf",
32
32
  "content-disposition": `inline; filename="invoice-${result.value.invoiceNumber}.pdf"`,
@@ -34,32 +34,32 @@ export function documentRoutes(kernel: Kernel) {
34
34
  });
35
35
 
36
36
  router.openapi(invoiceHtmlRoute, async (c) => {
37
- const guestCredential = c.req.header("x-cart-secret") ?? c.req.header("X-Cart-Secret") ?? undefined;
37
+ const guestCredential = c.req.header("x-cart-secret") ?? undefined;
38
38
  const result = await kernel.services.documents.renderInvoiceHtml(
39
39
  c.req.param("id"),
40
40
  c.get("actor"),
41
41
  undefined,
42
42
  guestCredential,
43
43
  );
44
- if (!result.ok) return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
44
+ if (!result.ok) return c.json(errorBody(result.error), mapErrorToStatus(result.error));
45
45
  return c.html(result.value.html);
46
46
  });
47
47
 
48
48
  router.openapi(receiptHtmlRoute, async (c) => {
49
- const guestCredential = c.req.header("x-cart-secret") ?? c.req.header("X-Cart-Secret") ?? undefined;
49
+ const guestCredential = c.req.header("x-cart-secret") ?? undefined;
50
50
  const result = await kernel.services.documents.renderReceiptHtml(
51
51
  c.req.param("id"),
52
52
  c.get("actor"),
53
53
  undefined,
54
54
  guestCredential,
55
55
  );
56
- if (!result.ok) return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
56
+ if (!result.ok) return c.json(errorBody(result.error), mapErrorToStatus(result.error));
57
57
  return c.html(result.value.html);
58
58
  });
59
59
 
60
60
  // @ts-expect-error -- openapi handler union return type
61
61
  router.openapi(emailInvoiceRoute, async (c) => {
62
- const guestCredential = c.req.header("x-cart-secret") ?? c.req.header("X-Cart-Secret") ?? undefined;
62
+ const guestCredential = c.req.header("x-cart-secret") ?? undefined;
63
63
  const result = await kernel.services.documents.emailInvoice(
64
64
  c.req.param("id"),
65
65
  c.req.valid("json").to,
@@ -67,7 +67,7 @@ export function documentRoutes(kernel: Kernel) {
67
67
  undefined,
68
68
  guestCredential,
69
69
  );
70
- if (!result.ok) return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
70
+ if (!result.ok) return c.json(errorBody(result.error), mapErrorToStatus(result.error));
71
71
  return c.json({ data: result.value });
72
72
  });
73
73
 
@@ -9,7 +9,7 @@ import {
9
9
  listWarehousesRoute,
10
10
  listInventoryLevelsRoute,
11
11
  } from "../schemas/inventory.js";
12
- import { type AppEnv, mapErrorToResponse, mapErrorToStatus, requirePerm } from "../utils.js";
12
+ import { type AppEnv, errorBody, mapErrorToStatus, requirePerm } from "../utils.js";
13
13
 
14
14
  export function inventoryRoutes(kernel: Kernel) {
15
15
  const router = new OpenAPIHono<AppEnv>();
@@ -39,7 +39,7 @@ export function inventoryRoutes(kernel: Kernel) {
39
39
  },
40
40
  actor,
41
41
  );
42
- if (!result.ok) return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
42
+ if (!result.ok) return c.json(errorBody(result.error), mapErrorToStatus(result.error));
43
43
  return c.json({ data: result.value });
44
44
  });
45
45
 
@@ -54,7 +54,7 @@ export function inventoryRoutes(kernel: Kernel) {
54
54
  entityIds,
55
55
  c.get("actor"),
56
56
  );
57
- if (!result.ok) return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
57
+ if (!result.ok) return c.json(errorBody(result.error), mapErrorToStatus(result.error));
58
58
  return c.json({ data: result.value });
59
59
  });
60
60
 
@@ -62,7 +62,7 @@ export function inventoryRoutes(kernel: Kernel) {
62
62
  router.openapi(inventoryAdjustRoute, async (c) => {
63
63
  const body = c.req.valid("json");
64
64
  const result = await kernel.services.inventory.adjustDetailed(body, c.get("actor"));
65
- if (!result.ok) return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
65
+ if (!result.ok) return c.json(errorBody(result.error), mapErrorToStatus(result.error));
66
66
  const { level, before, after, delta, movementId } = result.value;
67
67
  // Additive: level fields (back-compat) plus before/after/delta/movementId.
68
68
  return c.json({ data: { ...level, before, after, delta, movementId } });
@@ -72,7 +72,7 @@ export function inventoryRoutes(kernel: Kernel) {
72
72
  router.openapi(inventoryReserveRoute, async (c) => {
73
73
  const body = c.req.valid("json");
74
74
  const result = await kernel.services.inventory.reserve(body, c.get("actor"));
75
- if (!result.ok) return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
75
+ if (!result.ok) return c.json(errorBody(result.error), mapErrorToStatus(result.error));
76
76
  return c.json({ data: { reserved: true } });
77
77
  });
78
78
 
@@ -80,7 +80,7 @@ export function inventoryRoutes(kernel: Kernel) {
80
80
  router.openapi(inventoryReleaseRoute, async (c) => {
81
81
  const body = c.req.valid("json");
82
82
  const result = await kernel.services.inventory.release(body, c.get("actor"));
83
- if (!result.ok) return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
83
+ if (!result.ok) return c.json(errorBody(result.error), mapErrorToStatus(result.error));
84
84
  return c.json({ data: { released: true } });
85
85
  });
86
86
 
@@ -95,7 +95,7 @@ export function inventoryRoutes(kernel: Kernel) {
95
95
  return c.json({ error: { code: "FORBIDDEN", message: "Permission 'inventory:adjust' is required." } }, 403);
96
96
  }
97
97
  const result = await kernel.services.inventory.createWarehouse(body, actor);
98
- if (!result.ok) return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
98
+ if (!result.ok) return c.json(errorBody(result.error), mapErrorToStatus(result.error));
99
99
  return c.json({ data: result.value }, 201);
100
100
  });
101
101
 
@@ -103,7 +103,7 @@ export function inventoryRoutes(kernel: Kernel) {
103
103
  router.openapi(listWarehousesRoute, async (c) => {
104
104
  const actor = c.get("actor");
105
105
  const result = await kernel.services.inventory.listWarehouses(actor);
106
- if (!result.ok) return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
106
+ if (!result.ok) return c.json(errorBody(result.error), mapErrorToStatus(result.error));
107
107
  return c.json({ data: result.value });
108
108
  });
109
109