@porulle/core 0.10.8 → 0.13.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 (360) hide show
  1. package/dist/auth/auth-schema-guard.d.ts +2444 -0
  2. package/dist/auth/auth-schema-guard.d.ts.map +1 -0
  3. package/dist/auth/auth-schema-guard.js +113 -0
  4. package/dist/auth/auth-schema.d.ts +228 -0
  5. package/dist/auth/auth-schema.d.ts.map +1 -1
  6. package/dist/auth/auth-schema.js +24 -2
  7. package/dist/auth/middleware.d.ts +1 -0
  8. package/dist/auth/middleware.d.ts.map +1 -1
  9. package/dist/auth/middleware.js +13 -5
  10. package/dist/auth/org.d.ts +8 -2
  11. package/dist/auth/org.d.ts.map +1 -1
  12. package/dist/auth/org.js +12 -4
  13. package/dist/auth/organization-guard.d.ts +5 -0
  14. package/dist/auth/organization-guard.d.ts.map +1 -0
  15. package/dist/auth/organization-guard.js +124 -0
  16. package/dist/auth/permissions.d.ts +10 -0
  17. package/dist/auth/permissions.d.ts.map +1 -1
  18. package/dist/auth/permissions.js +31 -7
  19. package/dist/auth/role-authority.d.ts +44 -0
  20. package/dist/auth/role-authority.d.ts.map +1 -0
  21. package/dist/auth/role-authority.js +85 -0
  22. package/dist/auth/setup.d.ts.map +1 -1
  23. package/dist/auth/setup.js +17 -0
  24. package/dist/auth/strict-org-resolution.d.ts.map +1 -1
  25. package/dist/auth/strict-org-resolution.js +9 -1
  26. package/dist/auth/types.d.ts +1 -1
  27. package/dist/auth/types.d.ts.map +1 -1
  28. package/dist/config/defaults.d.ts.map +1 -1
  29. package/dist/config/defaults.js +2 -0
  30. package/dist/config/types.d.ts +33 -4
  31. package/dist/config/types.d.ts.map +1 -1
  32. package/dist/hooks/checkout.d.ts.map +1 -1
  33. package/dist/hooks/checkout.js +10 -9
  34. package/dist/index.d.ts +9 -6
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +5 -3
  37. package/dist/interfaces/rest/audit-middleware.d.ts.map +1 -1
  38. package/dist/interfaces/rest/audit-middleware.js +2 -0
  39. package/dist/interfaces/rest/customer-portal.d.ts.map +1 -1
  40. package/dist/interfaces/rest/customer-portal.js +9 -8
  41. package/dist/interfaces/rest/index.d.ts.map +1 -1
  42. package/dist/interfaces/rest/index.js +4 -0
  43. package/dist/interfaces/rest/route-coverage.d.ts +14 -0
  44. package/dist/interfaces/rest/route-coverage.d.ts.map +1 -0
  45. package/dist/interfaces/rest/route-coverage.js +81 -0
  46. package/dist/interfaces/rest/router.d.ts +7 -2
  47. package/dist/interfaces/rest/router.d.ts.map +1 -1
  48. package/dist/interfaces/rest/router.js +8 -4
  49. package/dist/interfaces/rest/routes/admin/compensation-failures.d.ts.map +1 -1
  50. package/dist/interfaces/rest/routes/admin/compensation-failures.js +7 -5
  51. package/dist/interfaces/rest/routes/admin/custom-field-proposals.d.ts +5 -0
  52. package/dist/interfaces/rest/routes/admin/custom-field-proposals.d.ts.map +1 -0
  53. package/dist/interfaces/rest/routes/admin/custom-field-proposals.js +22 -0
  54. package/dist/interfaces/rest/routes/admin/entity-field-definitions.d.ts +5 -0
  55. package/dist/interfaces/rest/routes/admin/entity-field-definitions.d.ts.map +1 -0
  56. package/dist/interfaces/rest/routes/admin/entity-field-definitions.js +39 -0
  57. package/dist/interfaces/rest/routes/admin/permissions.d.ts +1 -1
  58. package/dist/interfaces/rest/routes/admin/permissions.d.ts.map +1 -1
  59. package/dist/interfaces/rest/routes/admin/permissions.js +2 -0
  60. package/dist/interfaces/rest/routes/admin/staff.d.ts.map +1 -1
  61. package/dist/interfaces/rest/routes/admin/staff.js +126 -66
  62. package/dist/interfaces/rest/routes/admin-jobs.js +3 -3
  63. package/dist/interfaces/rest/routes/audit.js +3 -3
  64. package/dist/interfaces/rest/routes/carts.d.ts.map +1 -1
  65. package/dist/interfaces/rest/routes/carts.js +13 -10
  66. package/dist/interfaces/rest/routes/catalog.d.ts.map +1 -1
  67. package/dist/interfaces/rest/routes/catalog.js +47 -4
  68. package/dist/interfaces/rest/routes/checkout.d.ts.map +1 -1
  69. package/dist/interfaces/rest/routes/checkout.js +30 -35
  70. package/dist/interfaces/rest/routes/documents.d.ts.map +1 -1
  71. package/dist/interfaces/rest/routes/documents.js +10 -5
  72. package/dist/interfaces/rest/routes/inventory.d.ts.map +1 -1
  73. package/dist/interfaces/rest/routes/inventory.js +2 -0
  74. package/dist/interfaces/rest/routes/media.d.ts.map +1 -1
  75. package/dist/interfaces/rest/routes/media.js +7 -3
  76. package/dist/interfaces/rest/routes/orders.d.ts.map +1 -1
  77. package/dist/interfaces/rest/routes/orders.js +26 -8
  78. package/dist/interfaces/rest/routes/pricing.js +2 -2
  79. package/dist/interfaces/rest/routes/promotions.d.ts.map +1 -1
  80. package/dist/interfaces/rest/routes/promotions.js +13 -10
  81. package/dist/interfaces/rest/routes/search.d.ts.map +1 -1
  82. package/dist/interfaces/rest/routes/search.js +14 -1
  83. package/dist/interfaces/rest/schemas/admin-custom-field-proposals.d.ts +134 -0
  84. package/dist/interfaces/rest/schemas/admin-custom-field-proposals.d.ts.map +1 -0
  85. package/dist/interfaces/rest/schemas/admin-custom-field-proposals.js +26 -0
  86. package/dist/interfaces/rest/schemas/admin-entity-field-definitions.d.ts +592 -0
  87. package/dist/interfaces/rest/schemas/admin-entity-field-definitions.d.ts.map +1 -0
  88. package/dist/interfaces/rest/schemas/admin-entity-field-definitions.js +109 -0
  89. package/dist/interfaces/rest/schemas/carts.d.ts +7 -0
  90. package/dist/interfaces/rest/schemas/carts.d.ts.map +1 -1
  91. package/dist/interfaces/rest/schemas/catalog.d.ts +1364 -401
  92. package/dist/interfaces/rest/schemas/catalog.d.ts.map +1 -1
  93. package/dist/interfaces/rest/schemas/catalog.js +86 -0
  94. package/dist/interfaces/rest/schemas/customer-portal.d.ts +35 -0
  95. package/dist/interfaces/rest/schemas/customer-portal.d.ts.map +1 -1
  96. package/dist/interfaces/rest/schemas/orders.d.ts +204 -0
  97. package/dist/interfaces/rest/schemas/orders.d.ts.map +1 -1
  98. package/dist/interfaces/rest/schemas/pricing.d.ts +1 -0
  99. package/dist/interfaces/rest/schemas/pricing.d.ts.map +1 -1
  100. package/dist/interfaces/rest/schemas/responses.d.ts +71 -0
  101. package/dist/interfaces/rest/schemas/responses.d.ts.map +1 -1
  102. package/dist/interfaces/rest/schemas/search.d.ts +1 -0
  103. package/dist/interfaces/rest/schemas/search.d.ts.map +1 -1
  104. package/dist/interfaces/rest/schemas/search.js +1 -0
  105. package/dist/interfaces/rest/utils.d.ts +15 -0
  106. package/dist/interfaces/rest/utils.d.ts.map +1 -1
  107. package/dist/interfaces/rest/utils.js +45 -2
  108. package/dist/kernel/compensation/executor.js +2 -2
  109. package/dist/kernel/database/tx-context.d.ts +8 -0
  110. package/dist/kernel/database/tx-context.d.ts.map +1 -1
  111. package/dist/kernel/database/tx-context.js +13 -0
  112. package/dist/kernel/hooks/create-context.d.ts +2 -0
  113. package/dist/kernel/hooks/create-context.d.ts.map +1 -1
  114. package/dist/kernel/hooks/create-context.js +1 -0
  115. package/dist/kernel/hooks/types.d.ts +2 -0
  116. package/dist/kernel/hooks/types.d.ts.map +1 -1
  117. package/dist/kernel/plugin/manifest.d.ts.map +1 -1
  118. package/dist/kernel/plugin/manifest.js +9 -5
  119. package/dist/modules/analytics/service.js +2 -2
  120. package/dist/modules/audit/service.js +3 -3
  121. package/dist/modules/cart/repository/index.d.ts +13 -7
  122. package/dist/modules/cart/repository/index.d.ts.map +1 -1
  123. package/dist/modules/cart/repository/index.js +16 -10
  124. package/dist/modules/cart/schema.d.ts +17 -0
  125. package/dist/modules/cart/schema.d.ts.map +1 -1
  126. package/dist/modules/cart/schema.js +4 -0
  127. package/dist/modules/cart/service.d.ts +22 -9
  128. package/dist/modules/cart/service.d.ts.map +1 -1
  129. package/dist/modules/cart/service.js +57 -33
  130. package/dist/modules/catalog/brand-service.js +7 -7
  131. package/dist/modules/catalog/category-service.js +7 -7
  132. package/dist/modules/catalog/entity-service.d.ts +19 -10
  133. package/dist/modules/catalog/entity-service.d.ts.map +1 -1
  134. package/dist/modules/catalog/entity-service.js +180 -51
  135. package/dist/modules/catalog/module.d.ts +6 -1
  136. package/dist/modules/catalog/module.d.ts.map +1 -1
  137. package/dist/modules/catalog/module.js +6 -1
  138. package/dist/modules/catalog/ownership.d.ts +5 -0
  139. package/dist/modules/catalog/ownership.d.ts.map +1 -0
  140. package/dist/modules/catalog/ownership.js +11 -0
  141. package/dist/modules/catalog/read-policy.d.ts +9 -0
  142. package/dist/modules/catalog/read-policy.d.ts.map +1 -0
  143. package/dist/modules/catalog/read-policy.js +8 -0
  144. package/dist/modules/catalog/repository/index.d.ts +55 -3
  145. package/dist/modules/catalog/repository/index.d.ts.map +1 -1
  146. package/dist/modules/catalog/repository/index.js +335 -6
  147. package/dist/modules/catalog/revision.d.ts +4 -0
  148. package/dist/modules/catalog/revision.d.ts.map +1 -0
  149. package/dist/modules/catalog/revision.js +33 -0
  150. package/dist/modules/catalog/schema.d.ts +979 -110
  151. package/dist/modules/catalog/schema.d.ts.map +1 -1
  152. package/dist/modules/catalog/schema.js +112 -2
  153. package/dist/modules/catalog/schemas.d.ts +2 -0
  154. package/dist/modules/catalog/schemas.d.ts.map +1 -1
  155. package/dist/modules/catalog/schemas.js +2 -0
  156. package/dist/modules/catalog/service.d.ts +80 -15
  157. package/dist/modules/catalog/service.d.ts.map +1 -1
  158. package/dist/modules/catalog/service.js +522 -14
  159. package/dist/modules/channels/adapter.d.ts +85 -0
  160. package/dist/modules/channels/adapter.d.ts.map +1 -1
  161. package/dist/modules/channels/adapter.js +9 -1
  162. package/dist/modules/customers/module.d.ts.map +1 -1
  163. package/dist/modules/customers/module.js +1 -0
  164. package/dist/modules/customers/service.d.ts +2 -0
  165. package/dist/modules/customers/service.d.ts.map +1 -1
  166. package/dist/modules/customers/service.js +21 -20
  167. package/dist/modules/documents/module.d.ts.map +1 -1
  168. package/dist/modules/documents/module.js +1 -0
  169. package/dist/modules/documents/service.d.ts +18 -4
  170. package/dist/modules/documents/service.d.ts.map +1 -1
  171. package/dist/modules/documents/service.js +54 -16
  172. package/dist/modules/fulfillment/module.d.ts.map +1 -1
  173. package/dist/modules/fulfillment/module.js +1 -0
  174. package/dist/modules/fulfillment/service.d.ts +2 -0
  175. package/dist/modules/fulfillment/service.d.ts.map +1 -1
  176. package/dist/modules/fulfillment/service.js +15 -6
  177. package/dist/modules/inventory/service.d.ts.map +1 -1
  178. package/dist/modules/inventory/service.js +15 -14
  179. package/dist/modules/media/module.d.ts +68 -0
  180. package/dist/modules/media/module.d.ts.map +1 -1
  181. package/dist/modules/media/module.js +2 -0
  182. package/dist/modules/media/schema.d.ts +70 -0
  183. package/dist/modules/media/schema.d.ts.map +1 -1
  184. package/dist/modules/media/schema.js +20 -2
  185. package/dist/modules/media/service.d.ts +8 -1
  186. package/dist/modules/media/service.d.ts.map +1 -1
  187. package/dist/modules/media/service.js +71 -23
  188. package/dist/modules/orders/guest-access.d.ts +27 -0
  189. package/dist/modules/orders/guest-access.d.ts.map +1 -0
  190. package/dist/modules/orders/guest-access.js +46 -0
  191. package/dist/modules/orders/module.d.ts.map +1 -1
  192. package/dist/modules/orders/module.js +1 -0
  193. package/dist/modules/orders/quote.d.ts.map +1 -1
  194. package/dist/modules/orders/quote.js +1 -0
  195. package/dist/modules/orders/repository/index.d.ts +1 -1
  196. package/dist/modules/orders/repository/index.d.ts.map +1 -1
  197. package/dist/modules/orders/repository/index.js +2 -2
  198. package/dist/modules/orders/schema.d.ts +17 -0
  199. package/dist/modules/orders/schema.d.ts.map +1 -1
  200. package/dist/modules/orders/schema.js +5 -3
  201. package/dist/modules/orders/service.d.ts +16 -7
  202. package/dist/modules/orders/service.d.ts.map +1 -1
  203. package/dist/modules/orders/service.js +184 -55
  204. package/dist/modules/pricing/module.d.ts.map +1 -1
  205. package/dist/modules/pricing/module.js +1 -0
  206. package/dist/modules/pricing/schema.d.ts +17 -0
  207. package/dist/modules/pricing/schema.d.ts.map +1 -1
  208. package/dist/modules/pricing/schema.js +1 -0
  209. package/dist/modules/pricing/schemas.d.ts +1 -0
  210. package/dist/modules/pricing/schemas.d.ts.map +1 -1
  211. package/dist/modules/pricing/schemas.js +1 -0
  212. package/dist/modules/pricing/service.d.ts +2 -0
  213. package/dist/modules/pricing/service.d.ts.map +1 -1
  214. package/dist/modules/pricing/service.js +18 -12
  215. package/dist/modules/promotions/module.d.ts.map +1 -1
  216. package/dist/modules/promotions/module.js +1 -0
  217. package/dist/modules/promotions/service.d.ts +3 -0
  218. package/dist/modules/promotions/service.d.ts.map +1 -1
  219. package/dist/modules/promotions/service.js +19 -11
  220. package/dist/modules/search/adapter.d.ts +8 -0
  221. package/dist/modules/search/adapter.d.ts.map +1 -1
  222. package/dist/modules/search/module.d.ts.map +1 -1
  223. package/dist/modules/search/module.js +3 -0
  224. package/dist/modules/search/service.d.ts +5 -0
  225. package/dist/modules/search/service.d.ts.map +1 -1
  226. package/dist/modules/search/service.js +131 -11
  227. package/dist/modules/settings/module.d.ts.map +1 -1
  228. package/dist/modules/settings/module.js +1 -0
  229. package/dist/modules/settings/service.d.ts +3 -0
  230. package/dist/modules/settings/service.d.ts.map +1 -1
  231. package/dist/modules/settings/service.js +6 -4
  232. package/dist/modules/shipping/service.js +9 -9
  233. package/dist/modules/tax/module.d.ts.map +1 -1
  234. package/dist/modules/tax/module.js +1 -0
  235. package/dist/modules/tax/service.d.ts +3 -0
  236. package/dist/modules/tax/service.d.ts.map +1 -1
  237. package/dist/modules/tax/service.js +11 -9
  238. package/dist/modules/webhooks/hook.js +2 -2
  239. package/dist/modules/webhooks/module.d.ts.map +1 -1
  240. package/dist/modules/webhooks/module.js +1 -0
  241. package/dist/modules/webhooks/service.d.ts +2 -0
  242. package/dist/modules/webhooks/service.d.ts.map +1 -1
  243. package/dist/modules/webhooks/service.js +4 -4
  244. package/dist/runtime/kernel-modules.d.ts +73 -0
  245. package/dist/runtime/kernel-modules.d.ts.map +1 -1
  246. package/dist/runtime/server.d.ts.map +1 -1
  247. package/dist/runtime/server.js +10 -2
  248. package/dist/test-utils/create-pglite-adapter.d.ts.map +1 -1
  249. package/dist/test-utils/create-pglite-adapter.js +35 -13
  250. package/dist/test-utils/create-test-config.d.ts.map +1 -1
  251. package/dist/test-utils/create-test-config.js +4 -0
  252. package/dist/test-utils/rest-api-test-utils.d.ts.map +1 -1
  253. package/dist/test-utils/rest-api-test-utils.js +2 -0
  254. package/dist/test-utils/test-actors.js +2 -2
  255. package/dist/utils/id.d.ts +2 -0
  256. package/dist/utils/id.d.ts.map +1 -1
  257. package/dist/utils/id.js +11 -0
  258. package/package.json +6 -5
  259. package/src/auth/auth-schema-guard.ts +143 -0
  260. package/src/auth/auth-schema.ts +50 -19
  261. package/src/auth/middleware.ts +17 -5
  262. package/src/auth/org.ts +15 -3
  263. package/src/auth/organization-guard.ts +158 -0
  264. package/src/auth/permissions.ts +31 -8
  265. package/src/auth/role-authority.ts +107 -0
  266. package/src/auth/setup.ts +17 -0
  267. package/src/auth/strict-org-resolution.ts +7 -1
  268. package/src/auth/types.ts +1 -1
  269. package/src/config/defaults.ts +2 -0
  270. package/src/config/types.ts +32 -4
  271. package/src/hooks/checkout.ts +19 -12
  272. package/src/index.ts +30 -6
  273. package/src/interfaces/rest/audit-middleware.ts +2 -0
  274. package/src/interfaces/rest/customer-portal.ts +31 -24
  275. package/src/interfaces/rest/index.ts +4 -0
  276. package/src/interfaces/rest/route-coverage.ts +103 -0
  277. package/src/interfaces/rest/router.ts +16 -10
  278. package/src/interfaces/rest/routes/admin/compensation-failures.ts +8 -5
  279. package/src/interfaces/rest/routes/admin/custom-field-proposals.ts +37 -0
  280. package/src/interfaces/rest/routes/admin/entity-field-definitions.ts +89 -0
  281. package/src/interfaces/rest/routes/admin/permissions.ts +3 -1
  282. package/src/interfaces/rest/routes/admin/staff.ts +161 -72
  283. package/src/interfaces/rest/routes/admin-jobs.ts +3 -3
  284. package/src/interfaces/rest/routes/audit.ts +3 -3
  285. package/src/interfaces/rest/routes/carts.ts +17 -7
  286. package/src/interfaces/rest/routes/catalog.ts +96 -0
  287. package/src/interfaces/rest/routes/checkout.ts +41 -38
  288. package/src/interfaces/rest/routes/documents.ts +15 -1
  289. package/src/interfaces/rest/routes/inventory.ts +2 -0
  290. package/src/interfaces/rest/routes/media.ts +8 -3
  291. package/src/interfaces/rest/routes/orders.ts +27 -8
  292. package/src/interfaces/rest/routes/pricing.ts +2 -2
  293. package/src/interfaces/rest/routes/promotions.ts +12 -9
  294. package/src/interfaces/rest/routes/search.ts +19 -1
  295. package/src/interfaces/rest/schemas/admin-custom-field-proposals.ts +29 -0
  296. package/src/interfaces/rest/schemas/admin-entity-field-definitions.ts +120 -0
  297. package/src/interfaces/rest/schemas/catalog.ts +92 -0
  298. package/src/interfaces/rest/schemas/search.ts +2 -0
  299. package/src/interfaces/rest/utils.ts +61 -2
  300. package/src/kernel/compensation/executor.ts +2 -2
  301. package/src/kernel/database/tx-context.ts +25 -0
  302. package/src/kernel/hooks/create-context.ts +3 -0
  303. package/src/kernel/hooks/types.ts +2 -0
  304. package/src/kernel/plugin/manifest.ts +9 -5
  305. package/src/modules/analytics/service.ts +2 -2
  306. package/src/modules/audit/service.ts +3 -3
  307. package/src/modules/cart/repository/index.ts +22 -8
  308. package/src/modules/cart/schema.ts +4 -0
  309. package/src/modules/cart/service.ts +62 -27
  310. package/src/modules/catalog/brand-service.ts +7 -7
  311. package/src/modules/catalog/category-service.ts +7 -7
  312. package/src/modules/catalog/entity-service.ts +188 -53
  313. package/src/modules/catalog/module.ts +15 -0
  314. package/src/modules/catalog/ownership.ts +17 -0
  315. package/src/modules/catalog/read-policy.ts +16 -0
  316. package/src/modules/catalog/repository/index.ts +566 -4
  317. package/src/modules/catalog/revision.ts +35 -0
  318. package/src/modules/catalog/schema.ts +169 -1
  319. package/src/modules/catalog/schemas.ts +2 -0
  320. package/src/modules/catalog/service.ts +766 -26
  321. package/src/modules/channels/adapter.ts +107 -1
  322. package/src/modules/customers/module.ts +2 -0
  323. package/src/modules/customers/service.ts +23 -22
  324. package/src/modules/documents/module.ts +2 -0
  325. package/src/modules/documents/service.ts +74 -11
  326. package/src/modules/fulfillment/module.ts +2 -0
  327. package/src/modules/fulfillment/service.ts +17 -6
  328. package/src/modules/inventory/service.ts +15 -24
  329. package/src/modules/media/module.ts +2 -0
  330. package/src/modules/media/schema.ts +23 -2
  331. package/src/modules/media/service.ts +89 -28
  332. package/src/modules/orders/guest-access.ts +55 -0
  333. package/src/modules/orders/module.ts +1 -0
  334. package/src/modules/orders/quote.ts +1 -0
  335. package/src/modules/orders/repository/index.ts +2 -0
  336. package/src/modules/orders/schema.ts +5 -3
  337. package/src/modules/orders/service.ts +302 -52
  338. package/src/modules/pricing/module.ts +2 -0
  339. package/src/modules/pricing/schema.ts +1 -0
  340. package/src/modules/pricing/schemas.ts +1 -0
  341. package/src/modules/pricing/service.ts +21 -18
  342. package/src/modules/promotions/module.ts +2 -0
  343. package/src/modules/promotions/service.ts +25 -16
  344. package/src/modules/search/adapter.ts +8 -0
  345. package/src/modules/search/module.ts +3 -0
  346. package/src/modules/search/service.ts +142 -12
  347. package/src/modules/settings/module.ts +2 -0
  348. package/src/modules/settings/service.ts +8 -4
  349. package/src/modules/shipping/service.ts +9 -9
  350. package/src/modules/tax/module.ts +1 -0
  351. package/src/modules/tax/service.ts +13 -9
  352. package/src/modules/webhooks/hook.ts +2 -2
  353. package/src/modules/webhooks/module.ts +2 -0
  354. package/src/modules/webhooks/service.ts +6 -4
  355. package/src/runtime/server.ts +16 -2
  356. package/src/test-utils/create-pglite-adapter.ts +34 -12
  357. package/src/test-utils/create-test-config.ts +10 -6
  358. package/src/test-utils/rest-api-test-utils.ts +2 -0
  359. package/src/test-utils/test-actors.ts +2 -2
  360. package/src/utils/id.ts +20 -0
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { defineConfig } from "./config/define-config.js";
2
- export type { CommerceConfig, CommercePlugin, ApiKeyScopeDefinition, } from "./config/types.js";
2
+ export type { CommerceConfig, CommercePlugin, ApiKeyScopeDefinition, GuestOrderAccessStrategy, } from "./config/types.js";
3
3
  export { defineCommercePlugin } from "./kernel/plugin/manifest.js";
4
4
  export type { CommercePluginManifest, PluginContext, PluginHookRegistration, PluginLogger, PluginPermission, PluginRouteRegistration, } from "./kernel/plugin/manifest.js";
5
5
  export { router } from "./interfaces/rest/router.js";
@@ -15,12 +15,12 @@ export { setupGracefulShutdown } from "./runtime/shutdown.js";
15
15
  export { createKernel } from "./runtime/kernel.js";
16
16
  export type { Kernel } from "./runtime/kernel.js";
17
17
  export type { Actor } from "./auth/types.js";
18
- export { resolveOrgId, ensureDefaultOrg, DEFAULT_ORG_ID } from "./auth/org.js";
18
+ export { resolveOrgId, resolveOrgIdForCommerce, ensureDefaultOrg, DEFAULT_ORG_ID } from "./auth/org.js";
19
19
  export { createSystemActor } from "./auth/system-actor.js";
20
20
  export { OrganizationService } from "./modules/organization/service.js";
21
21
  export { createScopedDb } from "./kernel/database/scoped-db.js";
22
22
  export type { ScopedOrganizationId } from "./kernel/database/scoped-db.js";
23
- export { assertOwnership, assertPermission } from "./auth/permissions.js";
23
+ export { assertOwnership, assertPermission, requireUserId } from "./auth/permissions.js";
24
24
  export type { AccessResult, AccessContext, AccessFn, WhereClause } from "./auth/access.js";
25
25
  export { accessOR, accessAND, conditional, isAdmin, isAuthenticated, isDocumentOwner, publicAccess, denyAll, } from "./auth/access.js";
26
26
  export { HookRegistry } from "./kernel/hooks/registry.js";
@@ -55,13 +55,15 @@ export { mapErrorToStatus } from "./kernel/error-mapper.js";
55
55
  export { canTransition, assertTransition, orderStateMachine, extendOrderStateMachine, } from "./kernel/state-machine/machine.js";
56
56
  export type { PaymentAdapter, PaymentCapture, PaymentIntent, PaymentRefund, PaymentWebhookEvent, } from "./modules/payments/adapter.js";
57
57
  export { defineChannelConnector } from "./modules/channels/adapter.js";
58
- export type { ChannelCatalogItem, ChannelCatalogPage, ChannelCatalogVariant, ChannelConnector, ChannelConnectorCapabilities, ChannelInventoryLevel, ChannelOrderLine, ChannelOrderSlice, ChannelConnectorError, ChannelOrderStatus, ChannelPushOrderResult, ChannelRefundResult, ChannelReservation, ChannelStore, ChannelWebhookEvent, } from "./modules/channels/adapter.js";
58
+ export type { ChannelCatalogImage, ChannelCatalogItem, ChannelCatalogLocalizedAttributes, ChannelCatalogOptionType, ChannelCatalogPage, ChannelCatalogPrice, ChannelCatalogVariant, ChannelConnector, ChannelConnectorCapabilities, ChannelInventoryLevel, ChannelOrderLine, ChannelOrderSlice, ChannelConnectorError, ChannelPushCatalogField, ChannelPushCatalogImage, ChannelPushCatalogIntent, ChannelPushCatalogItem, ChannelPushCatalogItemOutcome, ChannelPushCatalogPreviousField, ChannelPushCatalogResult, ChannelPushCatalogVariant, ChannelOrderStatus, ChannelPushOrderResult, ChannelRefundResult, ChannelReservation, ChannelStore, ChannelWebhookEvent, } from "./modules/channels/adapter.js";
59
59
  export type { StorageAdapter } from "./modules/media/adapter.js";
60
60
  export { noopStorageAdapter } from "./modules/media/noop-adapter.js";
61
61
  export type { SearchAdapter, SearchDocument, SearchFilters, SearchHit, SearchQueryParams, SearchQueryResult, SearchSuggestParams, } from "./modules/search/adapter.js";
62
62
  export type { DatabaseAdapter } from "./kernel/database/adapter.js";
63
- export { createTxContext, reuseOrCreateTxContext, withTransaction, } from "./kernel/database/tx-context.js";
64
- export type { TxContext, WithTransactionOptions, } from "./kernel/database/tx-context.js";
63
+ export { isValidFieldPath, validateFieldPath } from "./modules/catalog/ownership.js";
64
+ export type { FieldPath, FieldOwner } from "./modules/catalog/ownership.js";
65
+ export type { TxContext, WithTransactionOptions, CatalogWriteContext, HookContextCarrier, } from "./kernel/database/tx-context.js";
66
+ export { createTxContext, reuseOrCreateTxContext, withTransaction, isWriteContextTransactional, resolveWriteContextHookContext, } from "./kernel/database/tx-context.js";
65
67
  export type { TaxAdapter, TaxAddress, TaxCalculationParams, TaxCalculationResult, TaxLineItem, TaxReportParams, TaxVoidParams, } from "./modules/tax/adapter.js";
66
68
  export { getSchema, buildSchema, getTableNames, getSchemaFiles, pushSchema, } from "./kernel/database/migrate.js";
67
69
  export { consoleEmailAdapter } from "./adapters/console-email.js";
@@ -83,6 +85,7 @@ export type { RelationDefinition, EntityDefinition, } from "./kernel/query/regis
83
85
  export type { QueryInput, QueryResult } from "./kernel/query/executor.js";
84
86
  export type { CommerceModuleTypes } from "./types/commerce-types.js";
85
87
  export { staleOrderCleanupTask } from "./modules/orders/stale-order-cleanup.js";
88
+ export { windowedGuestOrderAccess, defaultGuestOrderAccess, parseAccessWindow, } from "./modules/orders/guest-access.js";
86
89
  export { COMMERCE_AGENT_SYSTEM_PROMPT } from "./utils/agent-prompt.js";
87
90
  export { DrizzleAnalyticsAdapter } from "./modules/analytics/drizzle-adapter.js";
88
91
  export { BUILTIN_ANALYTICS_MODELS } from "./modules/analytics/models.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -9,11 +9,11 @@ export { createClientIpResolver } from "./runtime/client-ip.js";
9
9
  export { createLogger } from "./runtime/logger.js";
10
10
  export { setupGracefulShutdown } from "./runtime/shutdown.js";
11
11
  export { createKernel } from "./runtime/kernel.js";
12
- export { resolveOrgId, ensureDefaultOrg, DEFAULT_ORG_ID } from "./auth/org.js";
12
+ export { resolveOrgId, resolveOrgIdForCommerce, ensureDefaultOrg, DEFAULT_ORG_ID } from "./auth/org.js";
13
13
  export { createSystemActor } from "./auth/system-actor.js";
14
14
  export { OrganizationService } from "./modules/organization/service.js";
15
15
  export { createScopedDb } from "./kernel/database/scoped-db.js";
16
- export { assertOwnership, assertPermission } from "./auth/permissions.js";
16
+ export { assertOwnership, assertPermission, requireUserId } from "./auth/permissions.js";
17
17
  export { accessOR, accessAND, conditional, isAdmin, isAuthenticated, isDocumentOwner, publicAccess, denyAll, } from "./auth/access.js";
18
18
  export { HookRegistry } from "./kernel/hooks/registry.js";
19
19
  export { runBeforeHooks, runAfterHooks } from "./kernel/hooks/executor.js";
@@ -35,7 +35,8 @@ export { mapErrorToStatus } from "./kernel/error-mapper.js";
35
35
  export { canTransition, assertTransition, orderStateMachine, extendOrderStateMachine, } from "./kernel/state-machine/machine.js";
36
36
  export { defineChannelConnector } from "./modules/channels/adapter.js";
37
37
  export { noopStorageAdapter } from "./modules/media/noop-adapter.js";
38
- export { createTxContext, reuseOrCreateTxContext, withTransaction, } from "./kernel/database/tx-context.js";
38
+ export { isValidFieldPath, validateFieldPath } from "./modules/catalog/ownership.js";
39
+ export { createTxContext, reuseOrCreateTxContext, withTransaction, isWriteContextTransactional, resolveWriteContextHookContext, } from "./kernel/database/tx-context.js";
39
40
  export { getSchema, buildSchema, getTableNames, getSchemaFiles, pushSchema, } from "./kernel/database/migrate.js";
40
41
  export { consoleEmailAdapter } from "./adapters/console-email.js";
41
42
  export { promotionTypeEnum } from "./modules/promotions/schemas.js";
@@ -48,6 +49,7 @@ export { canAccessCart } from "./modules/cart/access.js";
48
49
  export { QueryRegistry } from "./kernel/query/registry.js";
49
50
  export { executeQuery } from "./kernel/query/executor.js";
50
51
  export { staleOrderCleanupTask } from "./modules/orders/stale-order-cleanup.js";
52
+ export { windowedGuestOrderAccess, defaultGuestOrderAccess, parseAccessWindow, } from "./modules/orders/guest-access.js";
51
53
  export { COMMERCE_AGENT_SYSTEM_PROMPT } from "./utils/agent-prompt.js";
52
54
  export { DrizzleAnalyticsAdapter } from "./modules/analytics/drizzle-adapter.js";
53
55
  export { BUILTIN_ANALYTICS_MODELS } from "./modules/analytics/models.js";
@@ -1 +1 @@
1
- {"version":3,"file":"audit-middleware.d.ts","sourceRoot":"","sources":["../../../src/interfaces/rest/audit-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAK9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAE5D;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,wCAAwC;IACxC,eAAe,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,SAAS,EAAE,OAAO,CAAC;CACpB;AAaD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAgDjE"}
1
+ {"version":3,"file":"audit-middleware.d.ts","sourceRoot":"","sources":["../../../src/interfaces/rest/audit-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAK9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAE5D;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,wCAAwC;IACxC,eAAe,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,SAAS,EAAE,OAAO,CAAC;CACpB;AAaD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAkDjE"}
@@ -66,12 +66,14 @@ export function auditMiddleware(kernel) {
66
66
  try {
67
67
  const requestId = c.get("requestId");
68
68
  const ctx = createHookContext({
69
+ // Anonymous audit records retain actor: null; organization comes from the deployment config.
69
70
  actor: c.get("actor") ?? null,
70
71
  ...(requestId ? { requestId } : {}),
71
72
  logger: kernel.logger,
72
73
  services: kernel.services,
73
74
  database: { db: kernel.database.db },
74
75
  origin: "rest",
76
+ commerceConfig: kernel.config,
75
77
  });
76
78
  await kernel.services.audit.record({ entityType, entityId, event, payload, ctx });
77
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"customer-portal.d.ts","sourceRoot":"","sources":["../../../src/interfaces/rest/customer-portal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAGtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAgBzC,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,gCAsRxD"}
1
+ {"version":3,"file":"customer-portal.d.ts","sourceRoot":"","sources":["../../../src/interfaces/rest/customer-portal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAGtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAkBzC,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,gCA2RxD"}
@@ -1,15 +1,16 @@
1
1
  import { OpenAPIHono } from "@hono/zod-openapi";
2
- import { assertPermission } from "../../auth/permissions.js";
2
+ import { assertPermission, requireUserId } from "../../auth/permissions.js";
3
3
  import { getProfileRoute, listAddressesRoute, listCustomerOrdersRoute, getCustomerOrderRoute, getOrderTrackingRoute, getOrderDownloadsRoute, listCoursesRoute, deleteAddressRoute, reorderRoute, updateProfileRoute, createAddressRoute, } from "./schemas/customer-portal.js";
4
- import { isUUID, mapErrorToStatus } from "./utils.js";
4
+ import { isUUID, mapErrorToStatus, markRoutePermissionGuard } from "./utils.js";
5
5
  export function createCustomerPortalRoutes(kernel) {
6
6
  const router = new OpenAPIHono();
7
- router.use("*", async (c, next) => {
8
- if (!c.get("actor")) {
7
+ router.use("*", markRoutePermissionGuard(async (c, next) => {
8
+ const actor = c.get("actor");
9
+ if (!actor?.userId) {
9
10
  return c.json({ error: { code: "FORBIDDEN", message: "Authentication required." } }, 401);
10
11
  }
11
12
  await next();
12
- });
13
+ }));
13
14
  /**
14
15
  * Resolves an actor whose userId is the customer profile UUID (not the Better Auth user ID).
15
16
  * Required so that `assertOwnership(actor, order.customerId)` compares UUIDs correctly,
@@ -71,9 +72,9 @@ export function createCustomerPortalRoutes(kernel) {
71
72
  page: Number.parseInt(c.req.query("page") ?? "1", 10),
72
73
  limit: Number.parseInt(c.req.query("limit") ?? "20", 10),
73
74
  ...(status !== undefined ? { status } : {}),
74
- });
75
+ }, actor);
75
76
  if (!result.ok)
76
- return c.json({ error: result.error }, 500);
77
+ return c.json({ error: result.error }, mapErrorToStatus(result.error));
77
78
  return c.json({ data: result.value.items, meta: result.value.pagination });
78
79
  });
79
80
  // @ts-expect-error -- openapi handler union return type
@@ -171,7 +172,7 @@ export function createCustomerPortalRoutes(kernel) {
171
172
  return c.json({ error: orderResult.error }, mapErrorToStatus(orderResult.error));
172
173
  }
173
174
  const cartResult = await kernel.services.cart.create({
174
- customerId: actor.userId,
175
+ customerId: requireUserId(actor),
175
176
  currency: orderResult.value.currency,
176
177
  }, actor);
177
178
  if (!cartResult.ok)
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interfaces/rest/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAwBzC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,gCAwF9C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interfaces/rest/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AA0BzC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,gCA0F9C"}
@@ -19,6 +19,8 @@ import { adminJobRoutes } from "./routes/admin-jobs.js";
19
19
  import { compensationFailureAdminRoutes } from "./routes/admin/compensation-failures.js";
20
20
  import { adminPermissionsRoutes } from "./routes/admin/permissions.js";
21
21
  import { adminStaffRoutes } from "./routes/admin/staff.js";
22
+ import { adminEntityFieldDefinitionRoutes } from "./routes/admin/entity-field-definitions.js";
23
+ import { adminCustomFieldProposalRoutes } from "./routes/admin/custom-field-proposals.js";
22
24
  import { customerRoutes } from "./routes/customers.js";
23
25
  import { documentRoutes } from "./routes/documents.js";
24
26
  import { settingsRoutes } from "./routes/settings.js";
@@ -88,6 +90,8 @@ export function createRestRoutes(kernel) {
88
90
  router.route("/admin", compensationFailureAdminRoutes(kernel));
89
91
  router.route("/admin", adminPermissionsRoutes(kernel));
90
92
  router.route("/admin", adminStaffRoutes(kernel));
93
+ router.route("/admin", adminEntityFieldDefinitionRoutes(kernel));
94
+ router.route("/admin", adminCustomFieldProposalRoutes(kernel));
91
95
  // API Reference (Scalar) — disabled in production unless config.exposeOpenApiSpec is true
92
96
  const exposeSpec = kernel.config.exposeOpenApiSpec ?? (process.env.NODE_ENV !== "production");
93
97
  if (exposeSpec) {
@@ -0,0 +1,14 @@
1
+ import type { RouterRoute } from "hono/types";
2
+ export type PublicRoute = {
3
+ method: string;
4
+ path: string;
5
+ justification: string;
6
+ };
7
+ export declare const PUBLIC_ROUTES: readonly PublicRoute[];
8
+ type RouteTableApp = {
9
+ routes: readonly RouterRoute[];
10
+ };
11
+ export declare function findUncoveredRoutes(app: RouteTableApp): string[];
12
+ export declare function assertRouteCoverage(app: RouteTableApp): void;
13
+ export {};
14
+ //# sourceMappingURL=route-coverage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-coverage.d.ts","sourceRoot":"","sources":["../../../src/interfaces/rest/route-coverage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAc/C,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;CAChC,CAAC;AA6CF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,EAAE,CAuBhE;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAK5D"}
@@ -0,0 +1,81 @@
1
+ import { isRoutePermissionGuard } from "./utils.js";
2
+ export const PUBLIC_ROUTES = [
3
+ { method: "GET", path: "/api/health", justification: "Load balancers need an unauthenticated liveness probe." },
4
+ { method: "GET", path: "/api/reference", justification: "The development API explorer is intentionally public when enabled." },
5
+ { method: "GET", path: "/api/doc", justification: "The generated OpenAPI document is public when documentation exposure is enabled." },
6
+ { method: "GET", path: "/api/doc-ext", justification: "The enriched OpenAPI document is public when documentation exposure is enabled." },
7
+ { method: "POST", path: "/api/carts", justification: "Anonymous storefront shoppers create secret-backed guest carts." },
8
+ { method: "GET", path: "/api/carts/:id", justification: "Guest cart reads require the cart secret; customer carts require ownership in the service." },
9
+ { method: "POST", path: "/api/carts/:id/items", justification: "Anonymous storefront shoppers add items to a secret-backed guest cart." },
10
+ { method: "PATCH", path: "/api/carts/:id/items/:itemId", justification: "Anonymous storefront shoppers change quantities in a secret-backed guest cart." },
11
+ { method: "DELETE", path: "/api/carts/:id/items/:itemId", justification: "Anonymous storefront shoppers remove items from a secret-backed guest cart." },
12
+ { method: "POST", path: "/api/checkout", justification: "Anonymous storefront checkout is authorized by the customer actor and cart/payment pipeline." },
13
+ { method: "GET", path: "/api/media/:id", justification: "Public media assets redirect to their configured public storage URL; signed URLs still require an actor in the handler." },
14
+ { method: "POST", path: "/api/promotions/validate", justification: "Storefront shoppers validate a promotion code before checkout; the route is rate-limited." },
15
+ { method: "POST", path: "/api/payments/webhook", justification: "The payment provider authenticates this endpoint with its signed webhook payload." },
16
+ ];
17
+ function hasPermissionGuard(handler, method, seen = new Set()) {
18
+ if (typeof handler !== "function" || seen.has(handler))
19
+ return false;
20
+ seen.add(handler);
21
+ if (isRoutePermissionGuard(handler, method))
22
+ return true;
23
+ const composed = handler.__COMPOSED_HANDLER;
24
+ return hasPermissionGuard(composed, method, seen);
25
+ }
26
+ function splitPath(path) {
27
+ return path.split("/").filter(Boolean);
28
+ }
29
+ function pathPatternCovers(pattern, target) {
30
+ const patternParts = splitPath(pattern);
31
+ const targetParts = splitPath(target);
32
+ const wildcardIndex = patternParts.indexOf("*");
33
+ if (wildcardIndex >= 0) {
34
+ if (wildcardIndex !== patternParts.length - 1 || targetParts.length < wildcardIndex)
35
+ return false;
36
+ }
37
+ else if (patternParts.length !== targetParts.length) {
38
+ return false;
39
+ }
40
+ return patternParts.every((part, index) => {
41
+ if (part === "*")
42
+ return true;
43
+ const targetPart = targetParts[index];
44
+ return part.startsWith(":") || part === targetPart;
45
+ });
46
+ }
47
+ function publicRouteCovers(route) {
48
+ return PUBLIC_ROUTES.some((publicRoute) => publicRoute.method === route.method && pathPatternCovers(publicRoute.path, route.path));
49
+ }
50
+ function routeKey(route) {
51
+ return `${route.method} ${route.path}`;
52
+ }
53
+ export function findUncoveredRoutes(app) {
54
+ const routes = app.routes;
55
+ const guardedRoutes = routes
56
+ .map((route, index) => ({ route, index }))
57
+ .filter(({ route }) => route.method === "ALL" && hasPermissionGuard(route.handler));
58
+ const endpoints = new Map();
59
+ for (const [index, route] of routes.entries()) {
60
+ if (route.method === "ALL")
61
+ continue;
62
+ const key = routeKey(route);
63
+ if (!endpoints.has(key))
64
+ endpoints.set(key, { route, index });
65
+ }
66
+ return [...endpoints.values()]
67
+ .filter(({ route, index }) => {
68
+ if (publicRouteCovers(route))
69
+ return false;
70
+ const directlyGuarded = hasPermissionGuard(route.handler, route.method);
71
+ const coveredByMiddleware = guardedRoutes.some(({ route: guard, index: guardIndex }) => guardIndex <= index && pathPatternCovers(guard.path, route.path) && hasPermissionGuard(guard.handler, route.method));
72
+ return !directlyGuarded && !coveredByMiddleware;
73
+ })
74
+ .map(({ route }) => routeKey(route));
75
+ }
76
+ export function assertRouteCoverage(app) {
77
+ const uncovered = findUncoveredRoutes(app);
78
+ if (uncovered.length > 0) {
79
+ throw new Error(`Unclassified routes: ${uncovered.join(", ")}`);
80
+ }
81
+ }
@@ -26,6 +26,7 @@
26
26
  * ```
27
27
  */
28
28
  import { z } from "@hono/zod-openapi";
29
+ import type { CommerceConfig } from "../../config/types.js";
29
30
  import type { PluginRouteRegistration } from "../../kernel/plugin/manifest.js";
30
31
  export interface RouteHandlerContext {
31
32
  /** Validated request body (from .input()). Undefined if no .input() was called. */
@@ -36,13 +37,13 @@ export interface RouteHandlerContext {
36
37
  params: Record<string, string>;
37
38
  /** Authenticated actor. Guaranteed non-null if .auth() or .permission() was called. */
38
39
  actor: {
39
- userId: string;
40
+ userId: string | null;
40
41
  role: string;
41
42
  permissions: string[];
42
43
  vendorId?: string | null;
43
44
  [key: string]: unknown;
44
45
  } | null;
45
- /** Resolved organization ID. Derived from actor.organizationId, falls back to DEFAULT_ORG_ID. */
46
+ /** Resolved organization ID. Derived from actor.organizationId or the deployment config. */
46
47
  orgId: string;
47
48
  /** Kernel services (orders, cart, inventory, etc.) */
48
49
  services: Record<string, unknown>;
@@ -69,6 +70,7 @@ declare class RouteChain {
69
70
  private _requireAuth;
70
71
  private _requiredPermission;
71
72
  constructor(method: string, fullPath: string, tag: string, routesList: PluginRouteRegistration[], pluginCtx?: {
73
+ config?: CommerceConfig;
72
74
  services: Record<string, unknown>;
73
75
  db: unknown;
74
76
  } | undefined);
@@ -116,6 +118,7 @@ declare class RouterImpl {
116
118
  private _prefix;
117
119
  private _pluginCtx;
118
120
  constructor(tag: string, prefix: string, pluginCtx?: {
121
+ config?: CommerceConfig;
119
122
  services?: Record<string, unknown>;
120
123
  database?: {
121
124
  db: unknown;
@@ -123,6 +126,7 @@ declare class RouterImpl {
123
126
  });
124
127
  /** @internal — used by RouteChain to wire plugin context into handlers */
125
128
  get pluginContext(): {
129
+ config?: CommerceConfig;
126
130
  services: Record<string, unknown>;
127
131
  db: unknown;
128
132
  } | undefined;
@@ -155,6 +159,7 @@ declare class RouterImpl {
155
159
  * ```
156
160
  */
157
161
  export declare function router(tag: string, prefix: string, ctx?: {
162
+ config?: CommerceConfig;
158
163
  services?: Record<string, unknown>;
159
164
  database?: {
160
165
  db: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/interfaces/rest/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/interfaces/rest/router.ts"],"names":[],"mappings":"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"}
@@ -27,9 +27,9 @@
27
27
  */
28
28
  import { createRoute, z } from "@hono/zod-openapi";
29
29
  import { ErrorSchema } from "./schemas/shared.js";
30
- import { mapErrorToResponse, mapErrorToStatus } from "./utils.js";
30
+ import { mapErrorToResponse, mapErrorToStatus, markRoutePermissionGuard } from "./utils.js";
31
31
  import { createScopedDb } from "../../kernel/database/scoped-db.js";
32
- import { resolveOrgId } from "../../auth/org.js";
32
+ import { resolveOrgIdForCommerce } from "../../auth/org.js";
33
33
  // ─── Shared OpenAPI Error Responses ──────────────────────────────────────────
34
34
  const errorResponses = {
35
35
  400: { content: { "application/json": { schema: ErrorSchema } }, description: "Bad request." },
@@ -166,7 +166,7 @@ class RouteChain {
166
166
  // Plugin route handlers receive a db that auto-filters queries
167
167
  // and auto-stamps inserts with the actor's organizationId.
168
168
  const rawDb = kernel?.db;
169
- const orgId = resolveOrgId(actor);
169
+ const orgId = resolveOrgIdForCommerce(actor, kernel?.config);
170
170
  const scopedDb = rawDb ? createScopedDb(rawDb, orgId) : rawDb;
171
171
  const handlerCtx = {
172
172
  input: inputSchema ? ctx.req.valid("json") : undefined,
@@ -198,7 +198,10 @@ class RouteChain {
198
198
  }
199
199
  }
200
200
  };
201
- this.routesList.push({ openapi: routeConfig, handler: honoHandler });
201
+ const registeredHandler = requireAuth || requiredPermission
202
+ ? markRoutePermissionGuard(honoHandler)
203
+ : honoHandler;
204
+ this.routesList.push({ openapi: routeConfig, handler: registeredHandler });
202
205
  }
203
206
  }
204
207
  // ─── Router ──────────────────────────────────────────────────────────────────
@@ -216,6 +219,7 @@ class RouterImpl {
216
219
  // If plugin context is provided, wire services + db for handler access
217
220
  if (pluginCtx) {
218
221
  this._pluginCtx = {
222
+ ...(pluginCtx.config !== undefined ? { config: pluginCtx.config } : {}),
219
223
  services: pluginCtx.services ?? {},
220
224
  db: pluginCtx.database?.db,
221
225
  };
@@ -1 +1 @@
1
- {"version":3,"file":"compensation-failures.d.ts","sourceRoot":"","sources":["../../../../../src/interfaces/rest/routes/admin/compensation-failures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAU5D,OAAO,EAAE,KAAK,MAAM,EAAwC,MAAM,gBAAgB,CAAC;AAuDnF,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,gCA6F5D"}
1
+ {"version":3,"file":"compensation-failures.d.ts","sourceRoot":"","sources":["../../../../../src/interfaces/rest/routes/admin/compensation-failures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAU5D,OAAO,EAAE,KAAK,MAAM,EAAqD,MAAM,gBAAgB,CAAC;AAuDhG,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,gCAgG5D"}
@@ -1,9 +1,9 @@
1
1
  import { OpenAPIHono } from "@hono/zod-openapi";
2
2
  import { assertPermission } from "../../../../auth/permissions.js";
3
- import { resolveOrgId } from "../../../../auth/org.js";
3
+ import { resolveOrgIdForCommerce } from "../../../../auth/org.js";
4
4
  import { CommerceValidationError } from "../../../../kernel/errors.js";
5
5
  import { listCompensationFailuresRoute, resolveCompensationFailureRoute, } from "../../schemas/compensation-failures.js";
6
- import { mapErrorToResponse, mapErrorToStatus } from "../../utils.js";
6
+ import { mapErrorToResponse, mapErrorToStatus, requirePerm } from "../../utils.js";
7
7
  function toIso(d) {
8
8
  if (d == null)
9
9
  return null;
@@ -45,11 +45,13 @@ function parseResolvedFilter(raw) {
45
45
  }
46
46
  export function compensationFailureAdminRoutes(kernel) {
47
47
  const router = new OpenAPIHono();
48
+ router.use("/compensation-failures", requirePerm("compensation:admin"));
49
+ router.use("/compensation-failures/*", requirePerm("compensation:admin"));
48
50
  // @ts-expect-error -- openapi handler union return type
49
51
  router.openapi(listCompensationFailuresRoute, async (c) => {
50
52
  const actor = c.get("actor");
51
53
  assertPermission(actor, "compensation:admin");
52
- const orgId = resolveOrgId(actor);
54
+ const orgId = resolveOrgIdForCommerce(actor, kernel.config);
53
55
  const resolvedParsed = parseResolvedFilter(c.req.query("resolved"));
54
56
  if (!resolvedParsed.ok) {
55
57
  return c.json(mapErrorToResponse(new CommerceValidationError('Query "resolved" must be true, false, or all.')), 422);
@@ -82,7 +84,7 @@ export function compensationFailureAdminRoutes(kernel) {
82
84
  router.openapi(resolveCompensationFailureRoute, async (c) => {
83
85
  const actor = c.get("actor");
84
86
  assertPermission(actor, "compensation:admin");
85
- const orgId = resolveOrgId(actor);
87
+ const orgId = resolveOrgIdForCommerce(actor, kernel.config);
86
88
  const id = c.req.param("id");
87
89
  const body = c.req.valid("json");
88
90
  const found = await kernel.services.compensationFailures.findById(id);
@@ -102,7 +104,7 @@ export function compensationFailureAdminRoutes(kernel) {
102
104
  const resolved = await kernel.services.compensationFailures.markResolved({
103
105
  id,
104
106
  organizationId: orgId,
105
- resolvedBy: actor.userId,
107
+ resolvedBy: actor.userId ?? "system",
106
108
  ...(body.notes !== undefined ? { notes: body.notes } : {}),
107
109
  });
108
110
  if (!resolved.ok) {
@@ -0,0 +1,5 @@
1
+ import { OpenAPIHono } from "@hono/zod-openapi";
2
+ import type { Kernel } from "../../../../runtime/kernel.js";
3
+ import { type AppEnv } from "../../utils.js";
4
+ export declare function adminCustomFieldProposalRoutes(kernel: Kernel): OpenAPIHono<AppEnv, {}, "/">;
5
+ //# sourceMappingURL=custom-field-proposals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-field-proposals.d.ts","sourceRoot":"","sources":["../../../../../src/interfaces/rest/routes/admin/custom-field-proposals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAK5D,OAAO,EACL,KAAK,MAAM,EAGZ,MAAM,gBAAgB,CAAC;AAExB,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,gCAwB5D"}
@@ -0,0 +1,22 @@
1
+ import { OpenAPIHono } from "@hono/zod-openapi";
2
+ import { resolveOrgIdForCommerce } from "../../../../auth/org.js";
3
+ import { listCustomFieldProposalsRoute, } from "../../schemas/admin-custom-field-proposals.js";
4
+ import { parsePagination, requirePerm, } from "../../utils.js";
5
+ export function adminCustomFieldProposalRoutes(kernel) {
6
+ const router = new OpenAPIHono();
7
+ router.use("/custom-field-proposals", requirePerm("catalog:update"));
8
+ router.openapi(listCustomFieldProposalsRoute, async (c) => {
9
+ const pagination = parsePagination(c.req.query());
10
+ const entityType = c.req.query("entityType");
11
+ const result = await kernel.services.catalog.repository.listProposedCustomFields(resolveOrgIdForCommerce(c.get("actor"), kernel.config), pagination, entityType !== undefined ? { entityType } : undefined);
12
+ return c.json({
13
+ data: {
14
+ items: result.items,
15
+ total: result.total,
16
+ page: pagination.page,
17
+ limit: pagination.limit,
18
+ },
19
+ });
20
+ });
21
+ return router;
22
+ }
@@ -0,0 +1,5 @@
1
+ import { OpenAPIHono } from "@hono/zod-openapi";
2
+ import type { Kernel } from "../../../../runtime/kernel.js";
3
+ import { type AppEnv } from "../../utils.js";
4
+ export declare function adminEntityFieldDefinitionRoutes(kernel: Kernel): OpenAPIHono<AppEnv, {}, "/">;
5
+ //# sourceMappingURL=entity-field-definitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-field-definitions.d.ts","sourceRoot":"","sources":["../../../../../src/interfaces/rest/routes/admin/entity-field-definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAW5D,OAAO,EACL,KAAK,MAAM,EAIZ,MAAM,gBAAgB,CAAC;AAExB,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,MAAM,gCAqE9D"}
@@ -0,0 +1,39 @@
1
+ import { OpenAPIHono } from "@hono/zod-openapi";
2
+ import { archiveEntityFieldDefinitionRoute, createEntityFieldDefinitionRoute, listEntityFieldDefinitionsRoute, updateEntityFieldDefinitionRoute, } from "../../schemas/admin-entity-field-definitions.js";
3
+ import { mapErrorToResponse, mapErrorToStatus, requirePerm, } from "../../utils.js";
4
+ export function adminEntityFieldDefinitionRoutes(kernel) {
5
+ const router = new OpenAPIHono();
6
+ router.use("/entity-field-definitions", requirePerm("catalog:update"));
7
+ router.use("/entity-field-definitions/:id", requirePerm("catalog:update"));
8
+ router.use("/entity-field-definitions/:id/archive", requirePerm("catalog:update"));
9
+ // @ts-expect-error -- openapi handler union return type
10
+ router.openapi(createEntityFieldDefinitionRoute, async (c) => {
11
+ const result = await kernel.services.catalog.createEntityFieldDefinition(c.req.valid("json"), c.get("actor"));
12
+ if (!result.ok)
13
+ return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
14
+ return c.json({ data: result.value }, 201);
15
+ });
16
+ // @ts-expect-error -- openapi handler union return type
17
+ router.openapi(listEntityFieldDefinitionsRoute, async (c) => {
18
+ const entityType = c.req.query("entityType");
19
+ const result = await kernel.services.catalog.listEntityFieldDefinitions(c.get("actor"), entityType);
20
+ if (!result.ok)
21
+ return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
22
+ return c.json({ data: result.value });
23
+ });
24
+ // @ts-expect-error -- openapi handler union return type
25
+ router.openapi(updateEntityFieldDefinitionRoute, async (c) => {
26
+ const result = await kernel.services.catalog.updateEntityFieldDefinition(c.req.param("id"), c.req.valid("json"), c.get("actor"));
27
+ if (!result.ok)
28
+ return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
29
+ return c.json({ data: result.value });
30
+ });
31
+ // @ts-expect-error -- openapi handler union return type
32
+ router.openapi(archiveEntityFieldDefinitionRoute, async (c) => {
33
+ const result = await kernel.services.catalog.archiveEntityFieldDefinition(c.req.param("id"), c.get("actor"));
34
+ if (!result.ok)
35
+ return c.json(mapErrorToResponse(result.error), mapErrorToStatus(result.error));
36
+ return c.json({ data: result.value });
37
+ });
38
+ return router;
39
+ }
@@ -1,5 +1,5 @@
1
1
  import { OpenAPIHono } from "@hono/zod-openapi";
2
2
  import type { Kernel } from "../../../../runtime/kernel.js";
3
- import type { AppEnv } from "../../utils.js";
3
+ import { type AppEnv } from "../../utils.js";
4
4
  export declare function adminPermissionsRoutes(kernel: Kernel): OpenAPIHono<AppEnv, {}, "/">;
5
5
  //# sourceMappingURL=permissions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../../../src/interfaces/rest/routes/admin/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAI5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAa7C,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,gCAkBpD"}
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../../../src/interfaces/rest/routes/admin/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAI5D,OAAO,EAAE,KAAK,MAAM,EAAe,MAAM,gBAAgB,CAAC;AAa1D,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,gCAoBpD"}
@@ -1,6 +1,7 @@
1
1
  import { OpenAPIHono } from "@hono/zod-openapi";
2
2
  import { assertPermission } from "../../../../auth/permissions.js";
3
3
  import { listAdminPermissionsRoute } from "../../schemas/admin-permissions.js";
4
+ import { requirePerm } from "../../utils.js";
4
5
  function flattenCoreRolePermissions(config) {
5
6
  const roles = config.auth?.roles ?? {};
6
7
  const set = new Set();
@@ -13,6 +14,7 @@ function flattenCoreRolePermissions(config) {
13
14
  }
14
15
  export function adminPermissionsRoutes(kernel) {
15
16
  const router = new OpenAPIHono();
17
+ router.use("/permissions", requirePerm("admin"));
16
18
  router.openapi(listAdminPermissionsRoute, (c) => {
17
19
  const actor = c.get("actor");
18
20
  assertPermission(actor, "admin");
@@ -1 +1 @@
1
- {"version":3,"file":"staff.d.ts","sourceRoot":"","sources":["../../../../../src/interfaces/rest/routes/admin/staff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAe5D,OAAO,EAAE,KAAK,MAAM,EAAe,MAAM,gBAAgB,CAAC;AAE1D;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,gCAyO9C"}
1
+ {"version":3,"file":"staff.d.ts","sourceRoot":"","sources":["../../../../../src/interfaces/rest/routes/admin/staff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAwB5D,OAAO,EAAE,KAAK,MAAM,EAAe,MAAM,gBAAgB,CAAC;AAE1D;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,gCAyT9C"}