@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
@@ -1,6 +1,6 @@
1
1
  import { OpenAPIHono } from "@hono/zod-openapi";
2
2
  import { listEntitiesRoute, getEntityRoute, getEntityAttributesRoute, listFieldOwnershipRoute, setFieldOwnershipRoute, listCategoriesRoute, listBrandsRoute, deleteEntityRoute, deleteCategoryRoute, deleteBrandRoute, removeEntityFromCategoryRoute, removeEntityFromBrandRoute, publishEntityRoute, archiveEntityRoute, discontinueEntityRoute, addEntityToCategoryRoute, addEntityToBrandRoute, createEntityRoute, updateEntityRoute, setEntityAttributesRoute, approveCustomFieldRoute, rejectCustomFieldRoute, createCategoryRoute, archiveCategoryRoute, restoreCategoryRoute, updateCategoryRoute, createBrandRoute, updateBrandRoute, createOptionTypeRoute, createOptionValueRoute, createVariantRoute, generateVariantsRoute, quickVariantRoute, bulkVariantsRoute, } from "../schemas/catalog.js";
3
- import { mapErrorToResponse, mapErrorToStatus, parseInclude, parsePagination, parseSort, requirePerm, } from "../utils.js";
3
+ import { errorBody, mapErrorToStatus, parseInclude, parsePagination, parseSort, requirePerm, } from "../utils.js";
4
4
  export function catalogRoutes(kernel) {
5
5
  const router = new OpenAPIHono();
6
6
  router.use("/entities/*", requirePerm("catalog:read"));
@@ -17,7 +17,7 @@ export function catalogRoutes(kernel) {
17
17
  router.openapi(listFieldOwnershipRoute, async (c) => {
18
18
  const result = await kernel.services.catalog.listFieldOwnership(c.req.param("id"), c.get("actor"), undefined, c.req.query("storeId"));
19
19
  if (!result.ok) {
20
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
20
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
21
21
  }
22
22
  return c.json({ data: result.value });
23
23
  });
@@ -26,7 +26,7 @@ export function catalogRoutes(kernel) {
26
26
  const body = c.req.valid("json");
27
27
  const result = await kernel.services.catalog.setFieldOwner(c.req.param("id"), body.fieldPath, body.storeId ?? null, body.owner, c.get("actor"), undefined, body.variantId ?? null);
28
28
  if (!result.ok) {
29
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
29
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
30
30
  }
31
31
  return c.json({ data: { updated: true } });
32
32
  });
@@ -57,7 +57,7 @@ export function catalogRoutes(kernel) {
57
57
  payload.sort = sort;
58
58
  const result = await kernel.services.catalog.list(payload, c.get("actor"));
59
59
  if (!result.ok) {
60
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
60
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
61
61
  }
62
62
  let withIncludes = result.value.items;
63
63
  if (include.size > 0) {
@@ -87,7 +87,7 @@ export function catalogRoutes(kernel) {
87
87
  }
88
88
  catch (error) {
89
89
  console.error("[catalog] List failed:", error instanceof Error ? error.message : error);
90
- return c.json(mapErrorToResponse(error), mapErrorToStatus(error));
90
+ return c.json(errorBody(error), mapErrorToStatus(error));
91
91
  }
92
92
  });
93
93
  // @ts-expect-error -- openapi handler union return type
@@ -112,20 +112,20 @@ export function catalogRoutes(kernel) {
112
112
  ? await kernel.services.catalog.getById(idOrSlug, includeOptions, actor)
113
113
  : await kernel.services.catalog.getBySlug(idOrSlug, includeOptions, actor);
114
114
  if (!result.ok) {
115
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
115
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
116
116
  }
117
117
  return c.json({ data: result.value });
118
118
  }
119
119
  catch (error) {
120
120
  console.error("[catalog] Get entity failed:", error instanceof Error ? error.message : error);
121
- return c.json(mapErrorToResponse(error), mapErrorToStatus(error));
121
+ return c.json(errorBody(error), mapErrorToStatus(error));
122
122
  }
123
123
  });
124
124
  // @ts-expect-error -- openapi handler union return type
125
125
  router.openapi(createEntityRoute, async (c) => {
126
126
  const result = await kernel.services.catalog.create(c.req.valid("json"), c.get("actor"));
127
127
  if (!result.ok) {
128
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
128
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
129
129
  }
130
130
  return c.json({ data: result.value }, 201);
131
131
  });
@@ -133,7 +133,7 @@ export function catalogRoutes(kernel) {
133
133
  router.openapi(updateEntityRoute, async (c) => {
134
134
  const result = await kernel.services.catalog.update(c.req.param("id"), c.req.valid("json"), c.get("actor"));
135
135
  if (!result.ok) {
136
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
136
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
137
137
  }
138
138
  return c.json({ data: result.value });
139
139
  });
@@ -141,7 +141,7 @@ export function catalogRoutes(kernel) {
141
141
  router.openapi(deleteEntityRoute, async (c) => {
142
142
  const result = await kernel.services.catalog.delete(c.req.param("id"), c.get("actor"));
143
143
  if (!result.ok) {
144
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
144
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
145
145
  }
146
146
  return c.json({ data: { deleted: true } });
147
147
  });
@@ -149,21 +149,21 @@ export function catalogRoutes(kernel) {
149
149
  router.openapi(publishEntityRoute, async (c) => {
150
150
  const result = await kernel.services.catalog.publish(c.req.param("id"), c.get("actor"));
151
151
  if (!result.ok)
152
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
152
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
153
153
  return c.json({ data: result.value });
154
154
  });
155
155
  // @ts-expect-error -- openapi handler union return type
156
156
  router.openapi(archiveEntityRoute, async (c) => {
157
157
  const result = await kernel.services.catalog.archive(c.req.param("id"), c.get("actor"));
158
158
  if (!result.ok)
159
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
159
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
160
160
  return c.json({ data: result.value });
161
161
  });
162
162
  // @ts-expect-error -- openapi handler union return type
163
163
  router.openapi(discontinueEntityRoute, async (c) => {
164
164
  const result = await kernel.services.catalog.discontinue(c.req.param("id"), c.get("actor"));
165
165
  if (!result.ok)
166
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
166
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
167
167
  return c.json({ data: result.value });
168
168
  });
169
169
  // @ts-expect-error -- openapi handler union return type
@@ -171,28 +171,28 @@ export function catalogRoutes(kernel) {
171
171
  const result = await kernel.services.catalog.setAttributes(c.req.param("id"), c.req.param("locale"), c.req.valid("json"), // Zod-validated; Hono returns Record<string, unknown>
172
172
  c.get("actor"));
173
173
  if (!result.ok)
174
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
174
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
175
175
  return c.json({ data: { updated: true } });
176
176
  });
177
177
  // @ts-expect-error -- openapi handler union return type
178
178
  router.openapi(approveCustomFieldRoute, async (c) => {
179
179
  const result = await kernel.services.catalog.approveCustomField(c.req.param("id"), c.req.param("fieldName"), c.req.query("locale") ?? "en", c.get("actor"));
180
180
  if (!result.ok)
181
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
181
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
182
182
  return c.json({ data: result.value });
183
183
  });
184
184
  // @ts-expect-error -- openapi handler union return type
185
185
  router.openapi(rejectCustomFieldRoute, async (c) => {
186
186
  const result = await kernel.services.catalog.rejectCustomField(c.req.param("id"), c.req.param("fieldName"), c.req.query("locale") ?? "en", c.get("actor"));
187
187
  if (!result.ok)
188
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
188
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
189
189
  return c.json({ data: result.value });
190
190
  });
191
191
  // @ts-expect-error -- openapi handler union return type
192
192
  router.openapi(getEntityAttributesRoute, async (c) => {
193
193
  const result = await kernel.services.catalog.getAttributes(c.req.param("id"), c.req.param("locale"), c.get("actor"));
194
194
  if (!result.ok)
195
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
195
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
196
196
  return c.json({ data: result.value });
197
197
  });
198
198
  // @ts-expect-error -- openapi handler union return type
@@ -200,119 +200,119 @@ export function catalogRoutes(kernel) {
200
200
  const includeArchived = c.req.query("includeArchived") === "true";
201
201
  const result = await kernel.services.catalog.listCategories({ actor: c.get("actor"), tx: null, requestId: "" }, { includeArchived });
202
202
  if (!result.ok)
203
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
203
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
204
204
  return c.json({ data: result.value });
205
205
  });
206
206
  // @ts-expect-error -- openapi handler union return type
207
207
  router.openapi(archiveCategoryRoute, async (c) => {
208
208
  const result = await kernel.services.catalog.archiveCategory(c.req.param("categoryId"), c.get("actor"));
209
209
  if (!result.ok)
210
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
210
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
211
211
  return c.json({ data: result.value });
212
212
  });
213
213
  // @ts-expect-error -- openapi handler union return type
214
214
  router.openapi(restoreCategoryRoute, async (c) => {
215
215
  const result = await kernel.services.catalog.restoreCategory(c.req.param("categoryId"), c.get("actor"));
216
216
  if (!result.ok)
217
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
217
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
218
218
  return c.json({ data: result.value });
219
219
  });
220
220
  // @ts-expect-error -- openapi handler union return type
221
221
  router.openapi(createCategoryRoute, async (c) => {
222
222
  const result = await kernel.services.catalog.createCategory(c.req.valid("json"), c.get("actor"));
223
223
  if (!result.ok)
224
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
224
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
225
225
  return c.json({ data: result.value }, 201);
226
226
  });
227
227
  // @ts-expect-error -- openapi handler union return type
228
228
  router.openapi(updateCategoryRoute, async (c) => {
229
229
  const result = await kernel.services.catalog.updateCategory(c.req.param("categoryId"), c.req.valid("json"), c.get("actor"));
230
230
  if (!result.ok)
231
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
231
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
232
232
  return c.json({ data: result.value });
233
233
  });
234
234
  // @ts-expect-error -- openapi handler union return type
235
235
  router.openapi(deleteCategoryRoute, async (c) => {
236
236
  const result = await kernel.services.catalog.deleteCategory(c.req.param("categoryId"), c.get("actor"));
237
237
  if (!result.ok)
238
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
238
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
239
239
  return c.json({ data: { deleted: true } });
240
240
  });
241
241
  // @ts-expect-error -- openapi handler union return type
242
242
  router.openapi(addEntityToCategoryRoute, async (c) => {
243
243
  const result = await kernel.services.catalog.addToCategory(c.req.param("id"), c.req.param("categoryId"), c.get("actor"));
244
244
  if (!result.ok)
245
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
245
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
246
246
  return c.json({ data: { linked: true } });
247
247
  });
248
248
  // @ts-expect-error -- openapi handler union return type
249
249
  router.openapi(removeEntityFromCategoryRoute, async (c) => {
250
250
  const result = await kernel.services.catalog.removeFromCategory(c.req.param("id"), c.req.param("categoryId"), c.get("actor"));
251
251
  if (!result.ok)
252
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
252
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
253
253
  return c.json({ data: { unlinked: true } });
254
254
  });
255
255
  // @ts-expect-error -- openapi handler union return type
256
256
  router.openapi(listBrandsRoute, async (c) => {
257
257
  const result = await kernel.services.catalog.listBrands({ actor: c.get("actor"), tx: null, requestId: "" });
258
258
  if (!result.ok)
259
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
259
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
260
260
  return c.json({ data: result.value });
261
261
  });
262
262
  // @ts-expect-error -- openapi handler union return type
263
263
  router.openapi(createBrandRoute, async (c) => {
264
264
  const result = await kernel.services.catalog.createBrand(c.req.valid("json"), c.get("actor"));
265
265
  if (!result.ok)
266
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
266
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
267
267
  return c.json({ data: result.value }, 201);
268
268
  });
269
269
  // @ts-expect-error -- openapi handler union return type
270
270
  router.openapi(updateBrandRoute, async (c) => {
271
271
  const result = await kernel.services.catalog.updateBrand(c.req.param("brandId"), c.req.valid("json"), c.get("actor"));
272
272
  if (!result.ok)
273
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
273
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
274
274
  return c.json({ data: result.value });
275
275
  });
276
276
  // @ts-expect-error -- openapi handler union return type
277
277
  router.openapi(deleteBrandRoute, async (c) => {
278
278
  const result = await kernel.services.catalog.deleteBrand(c.req.param("brandId"), c.get("actor"));
279
279
  if (!result.ok)
280
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
280
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
281
281
  return c.json({ data: { deleted: true } });
282
282
  });
283
283
  // @ts-expect-error -- openapi handler union return type
284
284
  router.openapi(addEntityToBrandRoute, async (c) => {
285
285
  const result = await kernel.services.catalog.addToBrand(c.req.param("id"), c.req.param("brandId"), c.get("actor"));
286
286
  if (!result.ok)
287
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
287
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
288
288
  return c.json({ data: { linked: true } });
289
289
  });
290
290
  // @ts-expect-error -- openapi handler union return type
291
291
  router.openapi(removeEntityFromBrandRoute, async (c) => {
292
292
  const result = await kernel.services.catalog.removeFromBrand(c.req.param("id"), c.req.param("brandId"), c.get("actor"));
293
293
  if (!result.ok)
294
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
294
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
295
295
  return c.json({ data: { unlinked: true } });
296
296
  });
297
297
  // @ts-expect-error -- openapi handler union return type
298
298
  router.openapi(createOptionTypeRoute, async (c) => {
299
299
  const result = await kernel.services.catalog.createOptionType({ ...c.req.valid("json"), entityId: c.req.param("id") }, c.get("actor"));
300
300
  if (!result.ok)
301
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
301
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
302
302
  return c.json({ data: result.value }, 201);
303
303
  });
304
304
  // @ts-expect-error -- openapi handler union return type
305
305
  router.openapi(createOptionValueRoute, async (c) => {
306
306
  const result = await kernel.services.catalog.createOptionValue({ ...c.req.valid("json"), optionTypeId: c.req.param("optionTypeId") }, c.get("actor"));
307
307
  if (!result.ok)
308
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
308
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
309
309
  return c.json({ data: result.value }, 201);
310
310
  });
311
311
  // @ts-expect-error -- openapi handler union return type
312
312
  router.openapi(createVariantRoute, async (c) => {
313
313
  const result = await kernel.services.catalog.createVariant({ ...c.req.valid("json"), entityId: c.req.param("id") }, c.get("actor"));
314
314
  if (!result.ok)
315
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
315
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
316
316
  return c.json({ data: result.value }, 201);
317
317
  });
318
318
  // @ts-expect-error -- openapi handler union return type
@@ -320,7 +320,7 @@ export function catalogRoutes(kernel) {
320
320
  const body = c.req.valid("json");
321
321
  const result = await kernel.services.catalog.quickCreateVariant(c.req.param("id"), body, c.get("actor"));
322
322
  if (!result.ok)
323
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
323
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
324
324
  return c.json({ data: result.value }, result.value.created ? 201 : 200);
325
325
  });
326
326
  // @ts-expect-error -- openapi handler union return type
@@ -328,7 +328,7 @@ export function catalogRoutes(kernel) {
328
328
  const body = c.req.valid("json");
329
329
  const result = await kernel.services.catalog.bulkCreateVariants(c.req.param("id"), body, c.get("actor"));
330
330
  if (!result.ok)
331
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
331
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
332
332
  return c.json({ data: result.value }, 201);
333
333
  });
334
334
  // @ts-expect-error -- openapi handler union return type
@@ -336,7 +336,7 @@ export function catalogRoutes(kernel) {
336
336
  const body = c.req.valid("json");
337
337
  const result = await kernel.services.catalog.generateVariants(c.req.param("id"), body, c.get("actor"));
338
338
  if (!result.ok)
339
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
339
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
340
340
  return c.json({ data: result.value }, 201);
341
341
  });
342
342
  return router;
@@ -1 +1 @@
1
- {"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/rest/routes/checkout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAoBzD,OAAO,EAAE,KAAK,MAAM,EAAwC,MAAM,aAAa,CAAC;AAMhF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAEpD;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,EAC1C,KAAK,EAAE,KAAK,GAAG,IAAI,EACnB,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAmC7B;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,gCAwV5C"}
1
+ {"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/rest/routes/checkout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAmBzD,OAAO,EAAE,KAAK,MAAM,EAA+B,MAAM,aAAa,CAAC;AAMvE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAEpD;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,EAC1C,KAAK,EAAE,KAAK,GAAG,IAAI,EACnB,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAmC7B;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,gCAuV5C"}
@@ -1,13 +1,13 @@
1
1
  import { OpenAPIHono } from "@hono/zod-openapi";
2
2
  import { checkoutRoute } from "../schemas/checkout.js";
3
- import { applyPromotionCodes, authorizePayment, calculateShipping, calculateTax, checkInventoryAvailability, completeCheckout, recordAnalyticsEvent, resolveCurrentPrices, validateCartNotEmpty, validatePaymentMethod, } from "../../../hooks/checkout.js";
3
+ import { applyPromotionCodes, authorizePayment, calculateShipping, calculateTax, checkInventoryAvailability, completeCheckout, resolveCurrentPrices, validateCartNotEmpty, validatePaymentMethod, } from "../../../hooks/checkout.js";
4
4
  import { runAfterHooks, runBeforeHooks } from "../../../kernel/hooks/executor.js";
5
5
  import { createHookContext } from "../../../kernel/hooks/create-context.js";
6
- import { mapErrorToResponse, mapErrorToStatus } from "../utils.js";
6
+ import { errorBody, mapErrorToStatus } from "../utils.js";
7
7
  import { isCommerceError } from "../../../kernel/errors.js";
8
8
  import { assertPermission } from "../../../auth/permissions.js";
9
9
  import { resolveOrgIdForCommerce } from "../../../auth/org.js";
10
- import { makeDeterministicId, makeId, makeIdempotencyScope } from "../../../utils/id.js";
10
+ import { makeDeterministicId, makeIdempotencyScope } from "../../../utils/id.js";
11
11
  /**
12
12
  * SEC-07 — resolve the customer profile a checkout order is attributed to.
13
13
  * A self-service actor may ONLY attribute the order to its own customer
@@ -60,7 +60,7 @@ export function checkoutRoutes(kernel) {
60
60
  router.openapi(checkoutRoute, async (c) => {
61
61
  const body = c.req.valid("json");
62
62
  const actor = c.get("actor");
63
- const cartSecret = c.req.header("x-cart-secret") ?? c.req.header("X-Cart-Secret") ?? undefined;
63
+ const cartSecret = c.req.header("x-cart-secret") ?? undefined;
64
64
  // Idempotent replay is authorized by the order service before payment runs.
65
65
  // This preflight only preserves the no-double-payment fast path; the create
66
66
  // primitive repeats the same binding for direct callers and race losers.
@@ -68,7 +68,7 @@ export function checkoutRoutes(kernel) {
68
68
  if (body.idempotencyKey) {
69
69
  replay = await kernel.services.orders.getByIdempotencyKey(body.idempotencyKey, actor, undefined, cartSecret);
70
70
  if (!replay.ok) {
71
- return c.json(mapErrorToResponse(replay.error), mapErrorToStatus(replay.error));
71
+ return c.json(errorBody(replay.error), mapErrorToStatus(replay.error));
72
72
  }
73
73
  if (replay.value)
74
74
  return c.json({ data: replay.value }, 201);
@@ -79,16 +79,16 @@ export function checkoutRoutes(kernel) {
79
79
  // internal cart-read path instead of carrying this credential inward.
80
80
  const cartAccess = await kernel.services.cart.getById(body.cartId, actor, undefined, cartSecret);
81
81
  if (!cartAccess.ok) {
82
- return c.json(mapErrorToResponse(cartAccess.error), mapErrorToStatus(cartAccess.error));
82
+ return c.json(errorBody(cartAccess.error), mapErrorToStatus(cartAccess.error));
83
83
  }
84
84
  const idempotencyScope = body.idempotencyKey
85
85
  ? await makeIdempotencyScope(actor, cartSecret, body.cartId)
86
86
  : undefined;
87
87
  const orderId = body.idempotencyKey
88
88
  ? await makeDeterministicId(`checkout:${resolveOrgIdForCommerce(actor, kernel.config)}:${idempotencyScope}:${body.idempotencyKey}`)
89
- : makeId();
89
+ : crypto.randomUUID();
90
90
  const checkoutData = {
91
- checkoutId: makeId(),
91
+ checkoutId: crypto.randomUUID(),
92
92
  orderId,
93
93
  cartId: body.cartId,
94
94
  currency: body.currency ?? "USD",
@@ -148,7 +148,6 @@ export function checkoutRoutes(kernel) {
148
148
  ];
149
149
  const afterHooks = [
150
150
  completeCheckout,
151
- recordAnalyticsEvent,
152
151
  ...kernel.hooks.resolve("checkout.afterCreate"),
153
152
  ];
154
153
  const context = createHookContext({
@@ -233,7 +232,7 @@ export function checkoutRoutes(kernel) {
233
232
  ...(cartSecret !== undefined ? { guestCredential: cartSecret } : {}),
234
233
  });
235
234
  if (!order.ok) {
236
- return c.json(mapErrorToResponse(order.error), mapErrorToStatus(order.error));
235
+ return c.json(errorBody(order.error), mapErrorToStatus(order.error));
237
236
  }
238
237
  if (order.ok && (processed.appliedPromotions?.length ?? 0) > 0) {
239
238
  pipelineStage = "record-promotion-usage";
@@ -1 +1 @@
1
- {"version":3,"file":"customers.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/rest/routes/customers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAazD,OAAO,EAAE,KAAK,MAAM,EAAoF,MAAM,aAAa,CAAC;AAE5H,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,gCAgJ5C"}
1
+ {"version":3,"file":"customers.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/rest/routes/customers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAazD,OAAO,EAAE,KAAK,MAAM,EAA2E,MAAM,aAAa,CAAC;AAEnH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,gCAgJ5C"}
@@ -1,6 +1,6 @@
1
1
  import { OpenAPIHono } from "@hono/zod-openapi";
2
2
  import { listCustomersRoute, createCustomerRoute, getCustomerRoute, updateCustomerRoute, getCustomerOrdersRoute, getCustomerAddressesRoute, listInteractionsRoute, createInteractionRoute, updateInteractionRoute, deleteInteractionRoute, } from "../schemas/customers.js";
3
- import { mapErrorToResponse, mapErrorToStatus, parsePagination, parseInclude, requirePerm } from "../utils.js";
3
+ import { errorBody, mapErrorToStatus, parsePagination, parseInclude, requirePerm } from "../utils.js";
4
4
  export function customerRoutes(kernel) {
5
5
  const router = new OpenAPIHono();
6
6
  // All customer admin routes require authentication + customers:read
@@ -12,7 +12,7 @@ export function customerRoutes(kernel) {
12
12
  const { page, limit } = parsePagination(c.req.query());
13
13
  const result = await kernel.services.customers.list(actor);
14
14
  if (!result.ok)
15
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
15
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
16
16
  const all = result.value;
17
17
  const total = all.length;
18
18
  const start = (page - 1) * limit;
@@ -29,7 +29,7 @@ export function customerRoutes(kernel) {
29
29
  const body = c.req.valid("json");
30
30
  const result = await kernel.services.customers.createWalkIn(body, c.get("actor"));
31
31
  if (!result.ok)
32
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
32
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
33
33
  return c.json({ data: result.value }, 201);
34
34
  });
35
35
  // @ts-expect-error -- openapi handler union return type
@@ -38,7 +38,7 @@ export function customerRoutes(kernel) {
38
38
  const actor = c.get("actor");
39
39
  const result = await kernel.services.customers.getById(id, actor);
40
40
  if (!result.ok)
41
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
41
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
42
42
  return c.json({ data: result.value });
43
43
  });
44
44
  // PATCH requires customers:update (checked in handler since middleware can't distinguish methods)
@@ -58,7 +58,7 @@ export function customerRoutes(kernel) {
58
58
  replaceMetadata,
59
59
  });
60
60
  if (!result.ok)
61
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
61
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
62
62
  return c.json({ data: result.value });
63
63
  });
64
64
  // @ts-expect-error -- openapi handler union return type
@@ -70,7 +70,7 @@ export function customerRoutes(kernel) {
70
70
  const includeTotals = parseInclude(c.req.query("include")).has("totals");
71
71
  const result = await kernel.services.orders.listByCustomer(id, { page, limit, ...(status ? { status } : {}), ...(includeTotals ? { includeTotals: true } : {}) }, actor);
72
72
  if (!result.ok)
73
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
73
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
74
74
  if (includeTotals) {
75
75
  // Wrapped shape: { data: { items, totals } } (+ pagination meta).
76
76
  return c.json({
@@ -88,10 +88,10 @@ export function customerRoutes(kernel) {
88
88
  // Get customer first, then use their userId for address lookup
89
89
  const customerResult = await kernel.services.customers.getById(id, actor);
90
90
  if (!customerResult.ok)
91
- return c.json(mapErrorToResponse(customerResult.error), mapErrorToStatus(customerResult.error));
91
+ return c.json(errorBody(customerResult.error), mapErrorToStatus(customerResult.error));
92
92
  const addressResult = await kernel.services.customers.getAddresses(customerResult.value.userId, actor);
93
93
  if (!addressResult.ok)
94
- return c.json(mapErrorToResponse(addressResult.error), mapErrorToStatus(addressResult.error));
94
+ return c.json(errorBody(addressResult.error), mapErrorToStatus(addressResult.error));
95
95
  return c.json({ data: addressResult.value });
96
96
  });
97
97
  // ─── Customer interactions (#3) ──────────────────────────────────────────
@@ -100,7 +100,7 @@ export function customerRoutes(kernel) {
100
100
  const { id } = c.req.valid("param");
101
101
  const result = await kernel.services.customers.listInteractions(id, c.get("actor"));
102
102
  if (!result.ok)
103
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
103
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
104
104
  return c.json({ data: result.value });
105
105
  });
106
106
  // @ts-expect-error -- openapi handler union return type
@@ -109,7 +109,7 @@ export function customerRoutes(kernel) {
109
109
  const body = c.req.valid("json");
110
110
  const result = await kernel.services.customers.createInteraction(id, body, c.get("actor"));
111
111
  if (!result.ok)
112
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
112
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
113
113
  return c.json({ data: result.value }, 201);
114
114
  });
115
115
  // @ts-expect-error -- openapi handler union return type
@@ -118,7 +118,7 @@ export function customerRoutes(kernel) {
118
118
  const body = c.req.valid("json");
119
119
  const result = await kernel.services.customers.updateInteraction(id, iid, body, c.get("actor"));
120
120
  if (!result.ok)
121
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
121
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
122
122
  return c.json({ data: result.value });
123
123
  });
124
124
  // @ts-expect-error -- openapi handler union return type
@@ -126,7 +126,7 @@ export function customerRoutes(kernel) {
126
126
  const { id, iid } = c.req.valid("param");
127
127
  const result = await kernel.services.customers.deleteInteraction(id, iid, c.get("actor"));
128
128
  if (!result.ok)
129
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
129
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
130
130
  return c.json({ data: { deleted: true } });
131
131
  });
132
132
  return router;
@@ -1 +1 @@
1
- {"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/rest/routes/documents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAOzD,OAAO,EAAE,KAAK,MAAM,EAAwD,MAAM,aAAa,CAAC;AAEhG;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,gCA2D5C"}
1
+ {"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/rest/routes/documents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAOzD,OAAO,EAAE,KAAK,MAAM,EAA+C,MAAM,aAAa,CAAC;AAEvF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,gCA2D5C"}
@@ -1,6 +1,6 @@
1
1
  import { OpenAPIHono } from "@hono/zod-openapi";
2
2
  import { emailInvoiceRoute, invoiceHtmlRoute, invoicePdfRoute, receiptHtmlRoute, } from "../schemas/documents.js";
3
- import { mapErrorToResponse, mapErrorToStatus, requireAnyPerm } from "../utils.js";
3
+ import { errorBody, mapErrorToStatus, requireAnyPerm } from "../utils.js";
4
4
  /**
5
5
  * Order document rendering (issue #47). Mounted under /orders. Access
6
6
  * control rides on OrderService.getById (orders:read, or orders:read:own
@@ -10,35 +10,35 @@ export function documentRoutes(kernel) {
10
10
  const router = new OpenAPIHono();
11
11
  router.use("/*", requireAnyPerm(["orders:read", "orders:read:own"]));
12
12
  router.openapi(invoicePdfRoute, async (c) => {
13
- const guestCredential = c.req.header("x-cart-secret") ?? c.req.header("X-Cart-Secret") ?? undefined;
13
+ const guestCredential = c.req.header("x-cart-secret") ?? undefined;
14
14
  const result = await kernel.services.documents.renderInvoicePdf(c.req.param("id"), c.get("actor"), undefined, guestCredential);
15
15
  if (!result.ok)
16
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
16
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
17
17
  return c.body(result.value.pdf.slice().buffer, 200, {
18
18
  "content-type": "application/pdf",
19
19
  "content-disposition": `inline; filename="invoice-${result.value.invoiceNumber}.pdf"`,
20
20
  });
21
21
  });
22
22
  router.openapi(invoiceHtmlRoute, async (c) => {
23
- const guestCredential = c.req.header("x-cart-secret") ?? c.req.header("X-Cart-Secret") ?? undefined;
23
+ const guestCredential = c.req.header("x-cart-secret") ?? undefined;
24
24
  const result = await kernel.services.documents.renderInvoiceHtml(c.req.param("id"), c.get("actor"), undefined, guestCredential);
25
25
  if (!result.ok)
26
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
26
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
27
27
  return c.html(result.value.html);
28
28
  });
29
29
  router.openapi(receiptHtmlRoute, async (c) => {
30
- const guestCredential = c.req.header("x-cart-secret") ?? c.req.header("X-Cart-Secret") ?? undefined;
30
+ const guestCredential = c.req.header("x-cart-secret") ?? undefined;
31
31
  const result = await kernel.services.documents.renderReceiptHtml(c.req.param("id"), c.get("actor"), undefined, guestCredential);
32
32
  if (!result.ok)
33
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
33
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
34
34
  return c.html(result.value.html);
35
35
  });
36
36
  // @ts-expect-error -- openapi handler union return type
37
37
  router.openapi(emailInvoiceRoute, async (c) => {
38
- const guestCredential = c.req.header("x-cart-secret") ?? c.req.header("X-Cart-Secret") ?? undefined;
38
+ const guestCredential = c.req.header("x-cart-secret") ?? undefined;
39
39
  const result = await kernel.services.documents.emailInvoice(c.req.param("id"), c.req.valid("json").to, c.get("actor"), undefined, guestCredential);
40
40
  if (!result.ok)
41
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
41
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
42
42
  return c.json({ data: result.value });
43
43
  });
44
44
  return router;
@@ -1 +1 @@
1
- {"version":3,"file":"inventory.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/rest/routes/inventory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAUzD,OAAO,EAAE,KAAK,MAAM,EAAqD,MAAM,aAAa,CAAC;AAE7F,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,gCAiG7C"}
1
+ {"version":3,"file":"inventory.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/rest/routes/inventory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAUzD,OAAO,EAAE,KAAK,MAAM,EAA4C,MAAM,aAAa,CAAC;AAEpF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,gCAiG7C"}
@@ -1,6 +1,6 @@
1
1
  import { OpenAPIHono } from "@hono/zod-openapi";
2
2
  import { inventoryAdjustRoute, inventoryReserveRoute, inventoryReleaseRoute, createWarehouseRoute, inventoryCheckRoute, listWarehousesRoute, listInventoryLevelsRoute, } from "../schemas/inventory.js";
3
- import { mapErrorToResponse, mapErrorToStatus, requirePerm } from "../utils.js";
3
+ import { errorBody, mapErrorToStatus, requirePerm } from "../utils.js";
4
4
  export function inventoryRoutes(kernel) {
5
5
  const router = new OpenAPIHono();
6
6
  // Inventory levels listing requires inventory:read
@@ -24,7 +24,7 @@ export function inventoryRoutes(kernel) {
24
24
  ...(entityId ? { entityId } : {}),
25
25
  }, actor);
26
26
  if (!result.ok)
27
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
27
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
28
28
  return c.json({ data: result.value });
29
29
  });
30
30
  // @ts-expect-error -- openapi handler union return type
@@ -35,7 +35,7 @@ export function inventoryRoutes(kernel) {
35
35
  .filter(Boolean);
36
36
  const result = await kernel.services.inventory.checkMultiple(entityIds, c.get("actor"));
37
37
  if (!result.ok)
38
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
38
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
39
39
  return c.json({ data: result.value });
40
40
  });
41
41
  // @ts-expect-error -- openapi handler union return type
@@ -43,7 +43,7 @@ export function inventoryRoutes(kernel) {
43
43
  const body = c.req.valid("json");
44
44
  const result = await kernel.services.inventory.adjustDetailed(body, c.get("actor"));
45
45
  if (!result.ok)
46
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
46
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
47
47
  const { level, before, after, delta, movementId } = result.value;
48
48
  // Additive: level fields (back-compat) plus before/after/delta/movementId.
49
49
  return c.json({ data: { ...level, before, after, delta, movementId } });
@@ -53,7 +53,7 @@ export function inventoryRoutes(kernel) {
53
53
  const body = c.req.valid("json");
54
54
  const result = await kernel.services.inventory.reserve(body, c.get("actor"));
55
55
  if (!result.ok)
56
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
56
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
57
57
  return c.json({ data: { reserved: true } });
58
58
  });
59
59
  // @ts-expect-error -- openapi handler union return type
@@ -61,7 +61,7 @@ export function inventoryRoutes(kernel) {
61
61
  const body = c.req.valid("json");
62
62
  const result = await kernel.services.inventory.release(body, c.get("actor"));
63
63
  if (!result.ok)
64
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
64
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
65
65
  return c.json({ data: { released: true } });
66
66
  });
67
67
  // @ts-expect-error -- openapi handler union return type
@@ -76,7 +76,7 @@ export function inventoryRoutes(kernel) {
76
76
  }
77
77
  const result = await kernel.services.inventory.createWarehouse(body, actor);
78
78
  if (!result.ok)
79
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
79
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
80
80
  return c.json({ data: result.value }, 201);
81
81
  });
82
82
  // @ts-expect-error -- openapi handler union return type
@@ -84,7 +84,7 @@ export function inventoryRoutes(kernel) {
84
84
  const actor = c.get("actor");
85
85
  const result = await kernel.services.inventory.listWarehouses(actor);
86
86
  if (!result.ok)
87
- return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
87
+ return c.json(errorBody(result.error), mapErrorToStatus(result.error));
88
88
  return c.json({ data: result.value });
89
89
  });
90
90
  return router;
@@ -1 +1 @@
1
- {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/rest/routes/media.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGzD,OAAO,EAAE,KAAK,MAAM,EAAwE,MAAM,aAAa,CAAC;AAEhH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,gCA4FzC"}
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/rest/routes/media.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGzD,OAAO,EAAE,KAAK,MAAM,EAA+D,MAAM,aAAa,CAAC;AAEvG,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,gCA4FzC"}