@porulle/core 0.11.0 → 0.14.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 (300) hide show
  1. package/dist/auth/actor.d.ts +10 -0
  2. package/dist/auth/actor.d.ts.map +1 -0
  3. package/dist/auth/actor.js +91 -0
  4. package/dist/auth/auth-schema-guard.d.ts +2444 -0
  5. package/dist/auth/auth-schema-guard.d.ts.map +1 -0
  6. package/dist/auth/auth-schema-guard.js +113 -0
  7. package/dist/auth/auth-schema.d.ts +228 -0
  8. package/dist/auth/auth-schema.d.ts.map +1 -1
  9. package/dist/auth/auth-schema.js +24 -2
  10. package/dist/auth/middleware.d.ts +1 -0
  11. package/dist/auth/middleware.d.ts.map +1 -1
  12. package/dist/auth/middleware.js +16 -92
  13. package/dist/auth/org.d.ts +8 -2
  14. package/dist/auth/org.d.ts.map +1 -1
  15. package/dist/auth/org.js +12 -4
  16. package/dist/auth/organization-guard.d.ts +5 -0
  17. package/dist/auth/organization-guard.d.ts.map +1 -0
  18. package/dist/auth/organization-guard.js +124 -0
  19. package/dist/auth/permissions.d.ts +10 -0
  20. package/dist/auth/permissions.d.ts.map +1 -1
  21. package/dist/auth/permissions.js +31 -7
  22. package/dist/auth/role-authority.d.ts +44 -0
  23. package/dist/auth/role-authority.d.ts.map +1 -0
  24. package/dist/auth/role-authority.js +85 -0
  25. package/dist/auth/setup.d.ts.map +1 -1
  26. package/dist/auth/setup.js +19 -1
  27. package/dist/auth/strict-org-resolution.d.ts.map +1 -1
  28. package/dist/auth/strict-org-resolution.js +9 -1
  29. package/dist/auth/types.d.ts +1 -1
  30. package/dist/auth/types.d.ts.map +1 -1
  31. package/dist/config/defaults.d.ts.map +1 -1
  32. package/dist/config/defaults.js +2 -0
  33. package/dist/config/types.d.ts +32 -4
  34. package/dist/config/types.d.ts.map +1 -1
  35. package/dist/hooks/checkout.d.ts.map +1 -1
  36. package/dist/hooks/checkout.js +10 -9
  37. package/dist/index.d.ts +7 -5
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +5 -3
  40. package/dist/interfaces/rest/audit-middleware.d.ts.map +1 -1
  41. package/dist/interfaces/rest/audit-middleware.js +2 -0
  42. package/dist/interfaces/rest/customer-portal.d.ts.map +1 -1
  43. package/dist/interfaces/rest/customer-portal.js +9 -8
  44. package/dist/interfaces/rest/route-coverage.d.ts +14 -0
  45. package/dist/interfaces/rest/route-coverage.d.ts.map +1 -0
  46. package/dist/interfaces/rest/route-coverage.js +81 -0
  47. package/dist/interfaces/rest/router.d.ts +7 -2
  48. package/dist/interfaces/rest/router.d.ts.map +1 -1
  49. package/dist/interfaces/rest/router.js +8 -4
  50. package/dist/interfaces/rest/routes/admin/compensation-failures.d.ts.map +1 -1
  51. package/dist/interfaces/rest/routes/admin/compensation-failures.js +7 -5
  52. package/dist/interfaces/rest/routes/admin/custom-field-proposals.js +2 -2
  53. package/dist/interfaces/rest/routes/admin/permissions.d.ts +1 -1
  54. package/dist/interfaces/rest/routes/admin/permissions.d.ts.map +1 -1
  55. package/dist/interfaces/rest/routes/admin/permissions.js +2 -0
  56. package/dist/interfaces/rest/routes/admin/staff.d.ts.map +1 -1
  57. package/dist/interfaces/rest/routes/admin/staff.js +126 -66
  58. package/dist/interfaces/rest/routes/admin-jobs.js +3 -3
  59. package/dist/interfaces/rest/routes/audit.js +3 -3
  60. package/dist/interfaces/rest/routes/carts.d.ts.map +1 -1
  61. package/dist/interfaces/rest/routes/carts.js +13 -10
  62. package/dist/interfaces/rest/routes/catalog.d.ts.map +1 -1
  63. package/dist/interfaces/rest/routes/catalog.js +10 -2
  64. package/dist/interfaces/rest/routes/checkout.d.ts.map +1 -1
  65. package/dist/interfaces/rest/routes/checkout.js +30 -35
  66. package/dist/interfaces/rest/routes/documents.d.ts.map +1 -1
  67. package/dist/interfaces/rest/routes/documents.js +10 -5
  68. package/dist/interfaces/rest/routes/inventory.d.ts.map +1 -1
  69. package/dist/interfaces/rest/routes/inventory.js +2 -0
  70. package/dist/interfaces/rest/routes/media.d.ts.map +1 -1
  71. package/dist/interfaces/rest/routes/media.js +7 -3
  72. package/dist/interfaces/rest/routes/orders.d.ts.map +1 -1
  73. package/dist/interfaces/rest/routes/orders.js +26 -8
  74. package/dist/interfaces/rest/routes/pricing.js +2 -2
  75. package/dist/interfaces/rest/routes/promotions.d.ts.map +1 -1
  76. package/dist/interfaces/rest/routes/promotions.js +13 -10
  77. package/dist/interfaces/rest/routes/search.d.ts.map +1 -1
  78. package/dist/interfaces/rest/routes/search.js +2 -1
  79. package/dist/interfaces/rest/schemas/carts.d.ts +7 -0
  80. package/dist/interfaces/rest/schemas/carts.d.ts.map +1 -1
  81. package/dist/interfaces/rest/schemas/customer-portal.d.ts +35 -0
  82. package/dist/interfaces/rest/schemas/customer-portal.d.ts.map +1 -1
  83. package/dist/interfaces/rest/schemas/orders.d.ts +204 -0
  84. package/dist/interfaces/rest/schemas/orders.d.ts.map +1 -1
  85. package/dist/interfaces/rest/schemas/responses.d.ts +71 -0
  86. package/dist/interfaces/rest/schemas/responses.d.ts.map +1 -1
  87. package/dist/interfaces/rest/utils.d.ts +15 -0
  88. package/dist/interfaces/rest/utils.d.ts.map +1 -1
  89. package/dist/interfaces/rest/utils.js +45 -2
  90. package/dist/kernel/compensation/executor.js +2 -2
  91. package/dist/kernel/database/plugin-types.d.ts +11 -0
  92. package/dist/kernel/database/plugin-types.d.ts.map +1 -1
  93. package/dist/kernel/database/scoped-db.d.ts +12 -0
  94. package/dist/kernel/database/scoped-db.d.ts.map +1 -1
  95. package/dist/kernel/database/scoped-db.js +12 -0
  96. package/dist/kernel/database/tx-context.d.ts +8 -0
  97. package/dist/kernel/database/tx-context.d.ts.map +1 -1
  98. package/dist/kernel/database/tx-context.js +13 -0
  99. package/dist/kernel/hooks/create-context.d.ts +2 -0
  100. package/dist/kernel/hooks/create-context.d.ts.map +1 -1
  101. package/dist/kernel/hooks/create-context.js +1 -0
  102. package/dist/kernel/hooks/types.d.ts +2 -0
  103. package/dist/kernel/hooks/types.d.ts.map +1 -1
  104. package/dist/kernel/plugin/manifest.d.ts.map +1 -1
  105. package/dist/kernel/plugin/manifest.js +9 -5
  106. package/dist/modules/analytics/service.js +2 -2
  107. package/dist/modules/audit/service.js +3 -3
  108. package/dist/modules/cart/repository/index.d.ts +13 -7
  109. package/dist/modules/cart/repository/index.d.ts.map +1 -1
  110. package/dist/modules/cart/repository/index.js +16 -10
  111. package/dist/modules/cart/schema.d.ts +17 -0
  112. package/dist/modules/cart/schema.d.ts.map +1 -1
  113. package/dist/modules/cart/schema.js +4 -0
  114. package/dist/modules/cart/service.d.ts +22 -9
  115. package/dist/modules/cart/service.d.ts.map +1 -1
  116. package/dist/modules/cart/service.js +57 -33
  117. package/dist/modules/catalog/brand-service.js +7 -7
  118. package/dist/modules/catalog/category-service.js +7 -7
  119. package/dist/modules/catalog/entity-service.d.ts +14 -7
  120. package/dist/modules/catalog/entity-service.d.ts.map +1 -1
  121. package/dist/modules/catalog/entity-service.js +109 -31
  122. package/dist/modules/catalog/read-policy.d.ts +9 -0
  123. package/dist/modules/catalog/read-policy.d.ts.map +1 -0
  124. package/dist/modules/catalog/read-policy.js +8 -0
  125. package/dist/modules/catalog/repository/index.d.ts +3 -2
  126. package/dist/modules/catalog/repository/index.d.ts.map +1 -1
  127. package/dist/modules/catalog/repository/index.js +14 -4
  128. package/dist/modules/catalog/service.d.ts +15 -13
  129. package/dist/modules/catalog/service.d.ts.map +1 -1
  130. package/dist/modules/catalog/service.js +25 -18
  131. package/dist/modules/customers/module.d.ts.map +1 -1
  132. package/dist/modules/customers/module.js +1 -0
  133. package/dist/modules/customers/service.d.ts +2 -0
  134. package/dist/modules/customers/service.d.ts.map +1 -1
  135. package/dist/modules/customers/service.js +21 -20
  136. package/dist/modules/documents/module.d.ts.map +1 -1
  137. package/dist/modules/documents/module.js +1 -0
  138. package/dist/modules/documents/service.d.ts +18 -4
  139. package/dist/modules/documents/service.d.ts.map +1 -1
  140. package/dist/modules/documents/service.js +54 -16
  141. package/dist/modules/fulfillment/module.d.ts.map +1 -1
  142. package/dist/modules/fulfillment/module.js +1 -0
  143. package/dist/modules/fulfillment/service.d.ts +2 -0
  144. package/dist/modules/fulfillment/service.d.ts.map +1 -1
  145. package/dist/modules/fulfillment/service.js +15 -6
  146. package/dist/modules/inventory/service.d.ts.map +1 -1
  147. package/dist/modules/inventory/service.js +15 -14
  148. package/dist/modules/media/service.js +6 -6
  149. package/dist/modules/orders/guest-access.d.ts +27 -0
  150. package/dist/modules/orders/guest-access.d.ts.map +1 -0
  151. package/dist/modules/orders/guest-access.js +46 -0
  152. package/dist/modules/orders/module.d.ts.map +1 -1
  153. package/dist/modules/orders/module.js +1 -0
  154. package/dist/modules/orders/quote.d.ts.map +1 -1
  155. package/dist/modules/orders/quote.js +1 -0
  156. package/dist/modules/orders/repository/index.d.ts +1 -1
  157. package/dist/modules/orders/repository/index.d.ts.map +1 -1
  158. package/dist/modules/orders/repository/index.js +2 -2
  159. package/dist/modules/orders/schema.d.ts +17 -0
  160. package/dist/modules/orders/schema.d.ts.map +1 -1
  161. package/dist/modules/orders/schema.js +5 -3
  162. package/dist/modules/orders/service.d.ts +16 -7
  163. package/dist/modules/orders/service.d.ts.map +1 -1
  164. package/dist/modules/orders/service.js +184 -55
  165. package/dist/modules/pricing/module.d.ts.map +1 -1
  166. package/dist/modules/pricing/module.js +1 -0
  167. package/dist/modules/pricing/service.d.ts +2 -0
  168. package/dist/modules/pricing/service.d.ts.map +1 -1
  169. package/dist/modules/pricing/service.js +12 -11
  170. package/dist/modules/promotions/module.d.ts.map +1 -1
  171. package/dist/modules/promotions/module.js +1 -0
  172. package/dist/modules/promotions/service.d.ts +3 -0
  173. package/dist/modules/promotions/service.d.ts.map +1 -1
  174. package/dist/modules/promotions/service.js +19 -11
  175. package/dist/modules/search/adapter.d.ts +11 -0
  176. package/dist/modules/search/adapter.d.ts.map +1 -1
  177. package/dist/modules/search/module.d.ts.map +1 -1
  178. package/dist/modules/search/module.js +4 -1
  179. package/dist/modules/search/service.d.ts +1 -0
  180. package/dist/modules/search/service.d.ts.map +1 -1
  181. package/dist/modules/search/service.js +57 -6
  182. package/dist/modules/settings/module.d.ts.map +1 -1
  183. package/dist/modules/settings/module.js +1 -0
  184. package/dist/modules/settings/service.d.ts +3 -0
  185. package/dist/modules/settings/service.d.ts.map +1 -1
  186. package/dist/modules/settings/service.js +6 -4
  187. package/dist/modules/shipping/service.js +9 -9
  188. package/dist/modules/tax/module.d.ts.map +1 -1
  189. package/dist/modules/tax/module.js +1 -0
  190. package/dist/modules/tax/service.d.ts +3 -0
  191. package/dist/modules/tax/service.d.ts.map +1 -1
  192. package/dist/modules/tax/service.js +11 -9
  193. package/dist/modules/webhooks/hook.js +2 -2
  194. package/dist/modules/webhooks/module.d.ts.map +1 -1
  195. package/dist/modules/webhooks/module.js +1 -0
  196. package/dist/modules/webhooks/service.d.ts +2 -0
  197. package/dist/modules/webhooks/service.d.ts.map +1 -1
  198. package/dist/modules/webhooks/service.js +4 -4
  199. package/dist/runtime/server.d.ts.map +1 -1
  200. package/dist/runtime/server.js +28 -2
  201. package/dist/test-utils/create-pglite-adapter.d.ts.map +1 -1
  202. package/dist/test-utils/create-pglite-adapter.js +35 -13
  203. package/dist/test-utils/create-test-config.d.ts.map +1 -1
  204. package/dist/test-utils/create-test-config.js +4 -0
  205. package/dist/test-utils/rest-api-test-utils.d.ts.map +1 -1
  206. package/dist/test-utils/rest-api-test-utils.js +2 -0
  207. package/dist/test-utils/test-actors.js +2 -2
  208. package/dist/utils/id.d.ts +2 -0
  209. package/dist/utils/id.d.ts.map +1 -1
  210. package/dist/utils/id.js +11 -0
  211. package/package.json +6 -5
  212. package/src/auth/actor.ts +110 -0
  213. package/src/auth/auth-schema-guard.ts +143 -0
  214. package/src/auth/auth-schema.ts +50 -19
  215. package/src/auth/middleware.ts +25 -101
  216. package/src/auth/org.ts +15 -3
  217. package/src/auth/organization-guard.ts +158 -0
  218. package/src/auth/permissions.ts +31 -8
  219. package/src/auth/role-authority.ts +107 -0
  220. package/src/auth/setup.ts +19 -1
  221. package/src/auth/strict-org-resolution.ts +7 -1
  222. package/src/auth/types.ts +1 -1
  223. package/src/config/defaults.ts +2 -0
  224. package/src/config/types.ts +31 -4
  225. package/src/hooks/checkout.ts +19 -12
  226. package/src/index.ts +21 -6
  227. package/src/interfaces/rest/audit-middleware.ts +2 -0
  228. package/src/interfaces/rest/customer-portal.ts +31 -24
  229. package/src/interfaces/rest/route-coverage.ts +103 -0
  230. package/src/interfaces/rest/router.ts +16 -10
  231. package/src/interfaces/rest/routes/admin/compensation-failures.ts +8 -5
  232. package/src/interfaces/rest/routes/admin/custom-field-proposals.ts +2 -2
  233. package/src/interfaces/rest/routes/admin/permissions.ts +3 -1
  234. package/src/interfaces/rest/routes/admin/staff.ts +161 -72
  235. package/src/interfaces/rest/routes/admin-jobs.ts +3 -3
  236. package/src/interfaces/rest/routes/audit.ts +3 -3
  237. package/src/interfaces/rest/routes/carts.ts +17 -7
  238. package/src/interfaces/rest/routes/catalog.ts +11 -0
  239. package/src/interfaces/rest/routes/checkout.ts +41 -38
  240. package/src/interfaces/rest/routes/documents.ts +15 -1
  241. package/src/interfaces/rest/routes/inventory.ts +2 -0
  242. package/src/interfaces/rest/routes/media.ts +8 -3
  243. package/src/interfaces/rest/routes/orders.ts +27 -8
  244. package/src/interfaces/rest/routes/pricing.ts +2 -2
  245. package/src/interfaces/rest/routes/promotions.ts +12 -9
  246. package/src/interfaces/rest/routes/search.ts +3 -1
  247. package/src/interfaces/rest/utils.ts +61 -2
  248. package/src/kernel/compensation/executor.ts +2 -2
  249. package/src/kernel/database/plugin-types.ts +11 -0
  250. package/src/kernel/database/scoped-db.ts +12 -0
  251. package/src/kernel/database/tx-context.ts +25 -0
  252. package/src/kernel/hooks/create-context.ts +3 -0
  253. package/src/kernel/hooks/types.ts +2 -0
  254. package/src/kernel/plugin/manifest.ts +9 -5
  255. package/src/modules/analytics/service.ts +2 -2
  256. package/src/modules/audit/service.ts +3 -3
  257. package/src/modules/cart/repository/index.ts +22 -8
  258. package/src/modules/cart/schema.ts +4 -0
  259. package/src/modules/cart/service.ts +62 -27
  260. package/src/modules/catalog/brand-service.ts +7 -7
  261. package/src/modules/catalog/category-service.ts +7 -7
  262. package/src/modules/catalog/entity-service.ts +117 -35
  263. package/src/modules/catalog/read-policy.ts +16 -0
  264. package/src/modules/catalog/repository/index.ts +19 -3
  265. package/src/modules/catalog/service.ts +46 -31
  266. package/src/modules/customers/module.ts +2 -0
  267. package/src/modules/customers/service.ts +23 -22
  268. package/src/modules/documents/module.ts +2 -0
  269. package/src/modules/documents/service.ts +74 -11
  270. package/src/modules/fulfillment/module.ts +2 -0
  271. package/src/modules/fulfillment/service.ts +17 -6
  272. package/src/modules/inventory/service.ts +15 -24
  273. package/src/modules/media/service.ts +6 -6
  274. package/src/modules/orders/guest-access.ts +55 -0
  275. package/src/modules/orders/module.ts +1 -0
  276. package/src/modules/orders/quote.ts +1 -0
  277. package/src/modules/orders/repository/index.ts +2 -0
  278. package/src/modules/orders/schema.ts +5 -3
  279. package/src/modules/orders/service.ts +302 -52
  280. package/src/modules/pricing/module.ts +2 -0
  281. package/src/modules/pricing/service.ts +14 -16
  282. package/src/modules/promotions/module.ts +2 -0
  283. package/src/modules/promotions/service.ts +25 -16
  284. package/src/modules/search/adapter.ts +9 -0
  285. package/src/modules/search/module.ts +5 -1
  286. package/src/modules/search/service.ts +55 -6
  287. package/src/modules/settings/module.ts +2 -0
  288. package/src/modules/settings/service.ts +8 -4
  289. package/src/modules/shipping/service.ts +9 -9
  290. package/src/modules/tax/module.ts +1 -0
  291. package/src/modules/tax/service.ts +13 -9
  292. package/src/modules/webhooks/hook.ts +2 -2
  293. package/src/modules/webhooks/module.ts +2 -0
  294. package/src/modules/webhooks/service.ts +6 -4
  295. package/src/runtime/server.ts +41 -2
  296. package/src/test-utils/create-pglite-adapter.ts +34 -12
  297. package/src/test-utils/create-test-config.ts +10 -6
  298. package/src/test-utils/rest-api-test-utils.ts +2 -0
  299. package/src/test-utils/test-actors.ts +2 -2
  300. package/src/utils/id.ts +20 -0
@@ -1,10 +1,11 @@
1
1
  import { OpenAPIHono } from "@hono/zod-openapi";
2
2
  import { attachMediaRoute, getMediaRoute, deleteMediaRoute } from "../schemas/media.js";
3
- import { mapErrorToResponse, mapErrorToStatus, requirePerm } from "../utils.js";
3
+ import { mapErrorToResponse, mapErrorToStatus, requireMethodPerm, requirePerm } from "../utils.js";
4
4
  export function mediaRoutes(kernel) {
5
5
  const router = new OpenAPIHono();
6
6
  // Upload requires authentication + media:write permission
7
7
  router.use("/upload", requirePerm("media:write"));
8
+ router.use("/:id", requireMethodPerm(["DELETE"], "media:write"));
8
9
  router.post("/upload", async (c) => {
9
10
  // No storage configured (the default no-op adapter) → media is disabled.
10
11
  if (kernel.config.storage?.providerId === "noop") {
@@ -32,11 +33,14 @@ export function mediaRoutes(kernel) {
32
33
  });
33
34
  router.openapi(getMediaRoute, async (c) => {
34
35
  const signed = c.req.query("signed") === "true";
36
+ const actor = c.get("actor");
37
+ if (!actor && !signed) {
38
+ return c.json({ error: { code: "NOT_FOUND", message: "Media not found." } }, 404);
39
+ }
35
40
  // Signed URLs require authentication
36
- if (signed && !c.get("actor")) {
41
+ if (signed && !actor) {
37
42
  return c.json({ error: { code: "UNAUTHORIZED", message: "Authentication required for signed URLs." } }, 401);
38
43
  }
39
- const actor = c.get("actor");
40
44
  const result = signed
41
45
  ? await kernel.services.media.getSignedUrl(c.req.param("id"), undefined, actor)
42
46
  : await kernel.services.media.getUrl(c.req.param("id"), actor);
@@ -1 +1 @@
1
- {"version":3,"file":"orders.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/rest/routes/orders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,KAAK,MAAM,EAAiE,MAAM,aAAa,CAAC;AAKzG,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,gCAkTzC"}
1
+ {"version":3,"file":"orders.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/rest/routes/orders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,KAAK,MAAM,EAAiH,MAAM,aAAa,CAAC;AAKzJ,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,gCAqUzC"}
@@ -1,10 +1,16 @@
1
1
  import { OpenAPIHono } from "@hono/zod-openapi";
2
2
  import { changeOrderStatusRoute, listOrdersRoute, orderLookupRoute, getOrderRoute, getOrderFulfillmentsRoute, createOrderRoute, quoteOrderRoute, refundOrderRoute, captureOrderRoute, createOrderFulfillmentRoute, addOrderLineItemRoute, updateOrderLineItemRoute, removeOrderLineItemRoute, refundOrderLinesRoute, undoOrderRefundRoute, listOrderRefundsRoute, refundCapStatusRoute, createOrderNoteRoute, listOrderNotesRoute, deleteOrderNoteRoute, orderTimelineRoute } from "../schemas/orders.js";
3
- import { isUUID, mapErrorToResponse, mapErrorToStatus, parsePagination } from "../utils.js";
3
+ import { isUUID, mapErrorToResponse, mapErrorToStatus, parsePagination, requireAnyPerm, requireMethodPerm, requirePerm } from "../utils.js";
4
4
  import { computeOrderPricing } from "../../../modules/orders/quote.js";
5
5
  import { assertPermission } from "../../../auth/permissions.js";
6
6
  export function orderRoutes(kernel) {
7
7
  const router = new OpenAPIHono();
8
+ router.use("/", requireMethodPerm(["GET"], "orders:read"));
9
+ router.use("/", requireMethodPerm(["POST"], "orders:create"));
10
+ router.use("/lookup", requirePerm("orders:read"));
11
+ router.use("/:idOrNumber", requireAnyPerm(["orders:read", "orders:read:own"]));
12
+ router.use("/:id/*", requireAnyPerm(["orders:read", "orders:read:own", "orders:update", "orders:manage"]));
13
+ router.use("/refunds/cap", requirePerm("orders:read"));
8
14
  // @ts-expect-error -- openapi handler union return type
9
15
  router.openapi(listOrdersRoute, async (c) => {
10
16
  const pagination = parsePagination(c.req.query());
@@ -48,9 +54,10 @@ export function orderRoutes(kernel) {
48
54
  // @ts-expect-error -- openapi handler union return type
49
55
  router.openapi(getOrderRoute, async (c) => {
50
56
  const idOrNumber = c.req.param("idOrNumber");
57
+ const guestCredential = c.req.header("x-cart-secret") ?? c.req.header("X-Cart-Secret") ?? undefined;
51
58
  const result = isUUID(idOrNumber)
52
- ? await kernel.services.orders.getById(idOrNumber, c.get("actor"))
53
- : await kernel.services.orders.getByNumber(idOrNumber, c.get("actor"));
59
+ ? await kernel.services.orders.getById(idOrNumber, c.get("actor"), undefined, guestCredential)
60
+ : await kernel.services.orders.getByNumber(idOrNumber, c.get("actor"), undefined, guestCredential);
54
61
  if (!result.ok)
55
62
  return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
56
63
  return c.json({ data: result.value });
@@ -58,13 +65,16 @@ export function orderRoutes(kernel) {
58
65
  // @ts-expect-error -- openapi handler union return type
59
66
  router.openapi(createOrderRoute, async (c) => {
60
67
  try {
61
- assertPermission(c.get("actor"), "orders:manage");
68
+ assertPermission(c.get("actor"), "orders:create");
62
69
  }
63
70
  catch (error) {
64
71
  return c.json(mapErrorToResponse(error), mapErrorToStatus(error));
65
72
  }
66
73
  const body = c.req.valid("json");
67
- const result = await kernel.services.orders.create(body, c.get("actor"));
74
+ const guestCredential = c.req.header("x-cart-secret") ?? c.req.header("X-Cart-Secret") ?? undefined;
75
+ const result = await kernel.services.orders.create(body, c.get("actor"), undefined, {
76
+ ...(guestCredential !== undefined ? { guestCredential } : {}),
77
+ });
68
78
  if (!result.ok)
69
79
  return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
70
80
  return c.json({ data: result.value }, 201);
@@ -216,8 +226,15 @@ export function orderRoutes(kernel) {
216
226
  router.openapi(createOrderFulfillmentRoute, async (c) => {
217
227
  const actor = c.get("actor");
218
228
  const orderId = c.req.param("id");
229
+ try {
230
+ assertPermission(actor, "orders:update");
231
+ }
232
+ catch (error) {
233
+ return c.json(mapErrorToResponse(error), mapErrorToStatus(error));
234
+ }
235
+ const guestCredential = c.req.header("x-cart-secret") ?? c.req.header("X-Cart-Secret") ?? undefined;
219
236
  // Verify the order exists and the actor has access before recording
220
- const orderResult = await kernel.services.orders.getById(orderId, actor);
237
+ const orderResult = await kernel.services.orders.getById(orderId, actor, undefined, guestCredential);
221
238
  if (!orderResult.ok)
222
239
  return c.json(mapErrorToResponse(orderResult.error), mapErrorToStatus(orderResult.error));
223
240
  const body = c.req.valid("json");
@@ -230,10 +247,11 @@ export function orderRoutes(kernel) {
230
247
  router.openapi(getOrderFulfillmentsRoute, async (c) => {
231
248
  const orderId = c.req.param("id");
232
249
  const actor = c.get("actor");
250
+ const guestCredential = c.req.header("x-cart-secret") ?? c.req.header("X-Cart-Secret") ?? undefined;
233
251
  // Verify the order exists and the actor has access before returning fulfillments
234
252
  const orderResult = isUUID(orderId)
235
- ? await kernel.services.orders.getById(orderId, actor)
236
- : await kernel.services.orders.getByNumber(orderId, actor);
253
+ ? await kernel.services.orders.getById(orderId, actor, undefined, guestCredential)
254
+ : await kernel.services.orders.getByNumber(orderId, actor, undefined, guestCredential);
237
255
  if (!orderResult.ok)
238
256
  return c.json(mapErrorToResponse(orderResult.error), mapErrorToStatus(orderResult.error));
239
257
  const result = await kernel.services.fulfillment.getByOrderId(orderResult.value.id);
@@ -1,5 +1,5 @@
1
1
  import { OpenAPIHono } from "@hono/zod-openapi";
2
- import { resolveOrgId } from "../../../auth/org.js";
2
+ import { resolveOrgIdForCommerce } from "../../../auth/org.js";
3
3
  import { CommerceValidationError } from "../../../kernel/errors.js";
4
4
  import { CatalogRepository } from "../../../modules/catalog/repository/index.js";
5
5
  import { setBasePriceRoute, createModifierRoute, listPricesRoute, listModifiersRoute, updateModifierRoute, deleteModifierRoute } from "../schemas/pricing.js";
@@ -80,7 +80,7 @@ export function pricingRoutes(kernel) {
80
80
  const input = c.req.valid("json");
81
81
  if (input.entityId) {
82
82
  const catalogRepo = new CatalogRepository(kernel.database.db);
83
- const orgId = resolveOrgId(actor);
83
+ const orgId = resolveOrgIdForCommerce(actor, kernel.config);
84
84
  const entity = await catalogRepo.findEntityById(input.entityId);
85
85
  if (!entity || entity.organizationId !== orgId) {
86
86
  return c.json(mapErrorToResponse(new CommerceValidationError("entityId does not belong to this organization.")), 422);
@@ -1 +1 @@
1
- {"version":3,"file":"promotions.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/rest/routes/promotions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGzD,OAAO,EAAE,KAAK,MAAM,EAAqD,MAAM,aAAa,CAAC;AAG7F,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,gCAiH7C"}
1
+ {"version":3,"file":"promotions.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/rest/routes/promotions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGzD,OAAO,EAAE,KAAK,MAAM,EAAwE,MAAM,aAAa,CAAC;AAIhH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,gCAmH7C"}
@@ -1,8 +1,9 @@
1
1
  import { OpenAPIHono } from "@hono/zod-openapi";
2
2
  import { rateLimiter } from "hono-rate-limiter";
3
3
  import { createPromotionRoute, updatePromotionRoute, validatePromotionRoute, deactivatePromotionRoute, listPromotionsRoute } from "../schemas/promotions.js";
4
- import { mapErrorToResponse, mapErrorToStatus, requirePerm } from "../utils.js";
5
- import { resolveOrgId } from "../../../auth/org.js";
4
+ import { mapErrorToResponse, mapErrorToStatus, requireMethodPerm, requirePerm } from "../utils.js";
5
+ import { resolveOrgIdForCommerce } from "../../../auth/org.js";
6
+ import { assertPermission } from "../../../auth/permissions.js";
6
7
  export function promotionRoutes(kernel) {
7
8
  const router = new OpenAPIHono();
8
9
  // Rate limit promo code validation — prevents brute-force code enumeration
@@ -45,7 +46,7 @@ export function promotionRoutes(kernel) {
45
46
  router.openapi(validatePromotionRoute, async (c) => {
46
47
  const payload = c.req.valid("json");
47
48
  const actor = c.get("actor");
48
- const orgId = resolveOrgId(actor);
49
+ const orgId = resolveOrgIdForCommerce(actor, kernel.config);
49
50
  // Apply (not just validate) so the response carries the authoritative
50
51
  // discount the cart would receive — the same computation checkout runs.
51
52
  // Returning only the promotion forces callers to re-derive the amount, which
@@ -66,18 +67,20 @@ export function promotionRoutes(kernel) {
66
67
  });
67
68
  // Guard inline (not via router.use("/:id")) because a "/:id" middleware
68
69
  // would also match single-segment routes like POST /validate.
69
- router.use("/:id", async (c, next) => {
70
- if (c.req.method !== "PATCH")
71
- return next();
72
- return requirePerm("promotions:manage")(c, next);
73
- });
70
+ router.use("/:id", requireMethodPerm(["PATCH"], "promotions:manage"));
74
71
  // @ts-expect-error -- openapi() enforces strict response typing but our handler
75
72
  // returns union responses (200 | 400 | 404 | 422). The route definition
76
73
  // documents the contract; the handler returns dynamic status.
77
74
  router.openapi(updatePromotionRoute, async (c) => {
78
75
  const body = c.req.valid("json");
79
76
  const actor = c.get("actor");
80
- const orgId = resolveOrgId(actor);
77
+ try {
78
+ assertPermission(actor, "promotions:manage");
79
+ }
80
+ catch (error) {
81
+ return c.json(mapErrorToResponse(error), mapErrorToStatus(error));
82
+ }
83
+ const orgId = resolveOrgIdForCommerce(actor, kernel.config);
81
84
  const result = await kernel.services.promotions.update(orgId, c.req.param("id"), body, actor);
82
85
  if (!result.ok) {
83
86
  return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
@@ -90,7 +93,7 @@ export function promotionRoutes(kernel) {
90
93
  // contract; the handler returns dynamic status.
91
94
  router.openapi(deactivatePromotionRoute, async (c) => {
92
95
  const actor = c.get("actor");
93
- const orgId = resolveOrgId(actor);
96
+ const orgId = resolveOrgIdForCommerce(actor, kernel.config);
94
97
  const result = await kernel.services.promotions.deactivate(orgId, c.req.param("id"));
95
98
  if (!result.ok) {
96
99
  return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/rest/routes/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,KAAK,MAAM,EAAwC,MAAM,aAAa,CAAC;AAIhF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,gCAyF1C"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/rest/routes/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,KAAK,MAAM,EAAqD,MAAM,aAAa,CAAC;AAI7F,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,gCA2F1C"}
@@ -1,9 +1,10 @@
1
1
  import { OpenAPIHono } from "@hono/zod-openapi";
2
2
  import { searchRoute, suggestRoute } from "../schemas/search.js";
3
- import { mapErrorToResponse, mapErrorToStatus } from "../utils.js";
3
+ import { mapErrorToResponse, mapErrorToStatus, requirePerm } from "../utils.js";
4
4
  const SAFE_ATTRIBUTE_NAME = /^[A-Za-z0-9_-]+$/;
5
5
  export function searchRoutes(kernel) {
6
6
  const router = new OpenAPIHono();
7
+ router.use("/*", requirePerm("catalog:read"));
7
8
  // @ts-expect-error -- openapi handler union return type
8
9
  router.openapi(searchRoute, async (c) => {
9
10
  try {
@@ -192,6 +192,7 @@ export declare const CartResponseSchema: z.ZodObject<{
192
192
  currency: z.ZodString;
193
193
  email: z.ZodNullable<z.ZodString>;
194
194
  secret: z.ZodNullable<z.ZodString>;
195
+ checkoutClaimToken: z.ZodNullable<z.ZodString>;
195
196
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
196
197
  expiresAt: z.ZodDate;
197
198
  createdAt: z.ZodDate;
@@ -514,6 +515,7 @@ export declare const listCartsRoute: {
514
515
  currency: z.ZodString;
515
516
  email: z.ZodNullable<z.ZodString>;
516
517
  secret: z.ZodNullable<z.ZodString>;
518
+ checkoutClaimToken: z.ZodNullable<z.ZodString>;
517
519
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
518
520
  expiresAt: z.ZodDate;
519
521
  createdAt: z.ZodDate;
@@ -834,6 +836,7 @@ export declare const recoverCartRoute: {
834
836
  currency: z.ZodString;
835
837
  email: z.ZodNullable<z.ZodString>;
836
838
  secret: z.ZodNullable<z.ZodString>;
839
+ checkoutClaimToken: z.ZodNullable<z.ZodString>;
837
840
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
838
841
  expiresAt: z.ZodDate;
839
842
  createdAt: z.ZodDate;
@@ -1153,6 +1156,7 @@ export declare const getCartRoute: {
1153
1156
  currency: z.ZodString;
1154
1157
  email: z.ZodNullable<z.ZodString>;
1155
1158
  secret: z.ZodNullable<z.ZodString>;
1159
+ checkoutClaimToken: z.ZodNullable<z.ZodString>;
1156
1160
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1157
1161
  expiresAt: z.ZodDate;
1158
1162
  createdAt: z.ZodDate;
@@ -1609,6 +1613,7 @@ export declare const createCartRoute: {
1609
1613
  currency: z.ZodString;
1610
1614
  email: z.ZodNullable<z.ZodString>;
1611
1615
  secret: z.ZodNullable<z.ZodString>;
1616
+ checkoutClaimToken: z.ZodNullable<z.ZodString>;
1612
1617
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1613
1618
  expiresAt: z.ZodDate;
1614
1619
  createdAt: z.ZodDate;
@@ -1940,6 +1945,7 @@ export declare const addCartItemRoute: {
1940
1945
  currency: z.ZodString;
1941
1946
  email: z.ZodNullable<z.ZodString>;
1942
1947
  secret: z.ZodNullable<z.ZodString>;
1948
+ checkoutClaimToken: z.ZodNullable<z.ZodString>;
1943
1949
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1944
1950
  expiresAt: z.ZodDate;
1945
1951
  createdAt: z.ZodDate;
@@ -2270,6 +2276,7 @@ export declare const updateCartItemQuantityRoute: {
2270
2276
  currency: z.ZodString;
2271
2277
  email: z.ZodNullable<z.ZodString>;
2272
2278
  secret: z.ZodNullable<z.ZodString>;
2279
+ checkoutClaimToken: z.ZodNullable<z.ZodString>;
2273
2280
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2274
2281
  expiresAt: z.ZodDate;
2275
2282
  createdAt: z.ZodDate;
@@ -1 +1 @@
1
- {"version":3,"file":"carts.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/rest/schemas/carts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"carts.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/rest/schemas/carts.ts"],"names":[],"mappings":"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"}
@@ -824,6 +824,23 @@ export declare const listCustomerOrdersRoute: {
824
824
  identity: undefined;
825
825
  generated: undefined;
826
826
  }, {}, {}>;
827
+ idempotencyScope: import("drizzle-orm/pg-core").PgColumn<{
828
+ name: "idempotency_scope";
829
+ tableName: "orders";
830
+ dataType: "string";
831
+ columnType: "PgText";
832
+ data: string;
833
+ driverParam: string;
834
+ notNull: false;
835
+ hasDefault: false;
836
+ isPrimaryKey: false;
837
+ isAutoincrement: false;
838
+ hasRuntimeDefault: false;
839
+ enumValues: [string, ...string[]];
840
+ baseColumn: never;
841
+ identity: undefined;
842
+ generated: undefined;
843
+ }, {}, {}>;
827
844
  metadata: import("drizzle-orm/pg-core").PgColumn<{
828
845
  name: "metadata";
829
846
  tableName: "orders";
@@ -1282,6 +1299,23 @@ export declare const getCustomerOrderRoute: {
1282
1299
  identity: undefined;
1283
1300
  generated: undefined;
1284
1301
  }, {}, {}>;
1302
+ idempotencyScope: import("drizzle-orm/pg-core").PgColumn<{
1303
+ name: "idempotency_scope";
1304
+ tableName: "orders";
1305
+ dataType: "string";
1306
+ columnType: "PgText";
1307
+ data: string;
1308
+ driverParam: string;
1309
+ notNull: false;
1310
+ hasDefault: false;
1311
+ isPrimaryKey: false;
1312
+ isAutoincrement: false;
1313
+ hasRuntimeDefault: false;
1314
+ enumValues: [string, ...string[]];
1315
+ baseColumn: never;
1316
+ identity: undefined;
1317
+ generated: undefined;
1318
+ }, {}, {}>;
1285
1319
  metadata: import("drizzle-orm/pg-core").PgColumn<{
1286
1320
  name: "metadata";
1287
1321
  tableName: "orders";
@@ -2066,6 +2100,7 @@ export declare const reorderRoute: {
2066
2100
  currency: z.ZodString;
2067
2101
  email: z.ZodNullable<z.ZodString>;
2068
2102
  secret: z.ZodNullable<z.ZodString>;
2103
+ checkoutClaimToken: z.ZodNullable<z.ZodString>;
2069
2104
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2070
2105
  expiresAt: z.ZodDate;
2071
2106
  createdAt: z.ZodDate;
@@ -1 +1 @@
1
- {"version":3,"file":"customer-portal.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/rest/schemas/customer-portal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"customer-portal.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/rest/schemas/customer-portal.ts"],"names":[],"mappings":"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"}