@unifiedcommerce/core 0.0.1 → 0.0.2

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 (554) hide show
  1. package/dist/auth/access.d.ts +1 -1
  2. package/dist/auth/access.d.ts.map +1 -1
  3. package/dist/auth/auth-schema.js +3 -3
  4. package/dist/auth/middleware.d.ts +2 -2
  5. package/dist/auth/middleware.d.ts.map +1 -1
  6. package/dist/auth/middleware.js +37 -10
  7. package/dist/auth/org.js +1 -1
  8. package/dist/auth/permissions.d.ts +1 -1
  9. package/dist/auth/permissions.d.ts.map +1 -1
  10. package/dist/auth/permissions.js +1 -1
  11. package/dist/auth/setup.d.ts +19 -10
  12. package/dist/auth/setup.d.ts.map +1 -1
  13. package/dist/auth/setup.js +3 -4
  14. package/dist/auth/system-actor.d.ts +1 -1
  15. package/dist/auth/system-actor.d.ts.map +1 -1
  16. package/dist/auth/system-actor.js +1 -1
  17. package/dist/config/defaults.d.ts +1 -1
  18. package/dist/config/defaults.d.ts.map +1 -1
  19. package/dist/config/define-config.d.ts +1 -1
  20. package/dist/config/define-config.d.ts.map +1 -1
  21. package/dist/config/define-config.js +2 -2
  22. package/dist/config/types.d.ts +11 -11
  23. package/dist/config/types.d.ts.map +1 -1
  24. package/dist/hooks/checkout-completion.d.ts +2 -2
  25. package/dist/hooks/checkout-completion.d.ts.map +1 -1
  26. package/dist/hooks/checkout-completion.js +2 -2
  27. package/dist/hooks/checkout.d.ts +3 -3
  28. package/dist/hooks/checkout.d.ts.map +1 -1
  29. package/dist/hooks/checkout.js +3 -3
  30. package/dist/hooks/order-emails.d.ts +1 -1
  31. package/dist/hooks/order-emails.d.ts.map +1 -1
  32. package/dist/index.d.ts +81 -81
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +50 -13381
  35. package/dist/interfaces/mcp/context-enrichment.d.ts +2 -2
  36. package/dist/interfaces/mcp/context-enrichment.d.ts.map +1 -1
  37. package/dist/interfaces/mcp/context-enrichment.js +1 -1
  38. package/dist/interfaces/mcp/server.d.ts +2 -2
  39. package/dist/interfaces/mcp/server.d.ts.map +1 -1
  40. package/dist/interfaces/mcp/server.js +3 -3
  41. package/dist/interfaces/mcp/transport.d.ts +2 -2
  42. package/dist/interfaces/mcp/transport.d.ts.map +1 -1
  43. package/dist/interfaces/mcp/transport.js +1 -1
  44. package/dist/interfaces/rest/customer-portal.d.ts +2 -2
  45. package/dist/interfaces/rest/customer-portal.d.ts.map +1 -1
  46. package/dist/interfaces/rest/customer-portal.js +3 -3
  47. package/dist/interfaces/rest/index.d.ts +2 -2
  48. package/dist/interfaces/rest/index.d.ts.map +1 -1
  49. package/dist/interfaces/rest/index.js +13 -13
  50. package/dist/interfaces/rest/router.d.ts +1 -1
  51. package/dist/interfaces/rest/router.d.ts.map +1 -1
  52. package/dist/interfaces/rest/router.js +4 -4
  53. package/dist/interfaces/rest/routes/admin-jobs.d.ts +2 -2
  54. package/dist/interfaces/rest/routes/admin-jobs.d.ts.map +1 -1
  55. package/dist/interfaces/rest/routes/admin-jobs.js +4 -4
  56. package/dist/interfaces/rest/routes/audit.d.ts +2 -2
  57. package/dist/interfaces/rest/routes/audit.d.ts.map +1 -1
  58. package/dist/interfaces/rest/routes/audit.js +3 -3
  59. package/dist/interfaces/rest/routes/carts.d.ts +2 -2
  60. package/dist/interfaces/rest/routes/carts.d.ts.map +1 -1
  61. package/dist/interfaces/rest/routes/carts.js +2 -2
  62. package/dist/interfaces/rest/routes/catalog.d.ts +2 -2
  63. package/dist/interfaces/rest/routes/catalog.d.ts.map +1 -1
  64. package/dist/interfaces/rest/routes/catalog.js +2 -2
  65. package/dist/interfaces/rest/routes/checkout.d.ts +2 -2
  66. package/dist/interfaces/rest/routes/checkout.d.ts.map +1 -1
  67. package/dist/interfaces/rest/routes/checkout.js +7 -7
  68. package/dist/interfaces/rest/routes/inventory.d.ts +2 -2
  69. package/dist/interfaces/rest/routes/inventory.d.ts.map +1 -1
  70. package/dist/interfaces/rest/routes/inventory.js +2 -2
  71. package/dist/interfaces/rest/routes/media.d.ts +2 -2
  72. package/dist/interfaces/rest/routes/media.d.ts.map +1 -1
  73. package/dist/interfaces/rest/routes/media.js +2 -2
  74. package/dist/interfaces/rest/routes/orders.d.ts +2 -2
  75. package/dist/interfaces/rest/routes/orders.d.ts.map +1 -1
  76. package/dist/interfaces/rest/routes/orders.js +2 -2
  77. package/dist/interfaces/rest/routes/payments.d.ts +2 -2
  78. package/dist/interfaces/rest/routes/payments.d.ts.map +1 -1
  79. package/dist/interfaces/rest/routes/payments.js +2 -2
  80. package/dist/interfaces/rest/routes/pricing.d.ts +2 -2
  81. package/dist/interfaces/rest/routes/pricing.d.ts.map +1 -1
  82. package/dist/interfaces/rest/routes/pricing.js +2 -2
  83. package/dist/interfaces/rest/routes/promotions.d.ts +2 -2
  84. package/dist/interfaces/rest/routes/promotions.d.ts.map +1 -1
  85. package/dist/interfaces/rest/routes/promotions.js +3 -3
  86. package/dist/interfaces/rest/routes/search.d.ts +2 -2
  87. package/dist/interfaces/rest/routes/search.d.ts.map +1 -1
  88. package/dist/interfaces/rest/routes/search.js +2 -2
  89. package/dist/interfaces/rest/routes/webhooks.d.ts +2 -2
  90. package/dist/interfaces/rest/routes/webhooks.d.ts.map +1 -1
  91. package/dist/interfaces/rest/routes/webhooks.js +2 -2
  92. package/dist/interfaces/rest/schemas/admin-jobs.js +1 -1
  93. package/dist/interfaces/rest/schemas/carts.d.ts +1 -1
  94. package/dist/interfaces/rest/schemas/carts.d.ts.map +1 -1
  95. package/dist/interfaces/rest/schemas/carts.js +3 -3
  96. package/dist/interfaces/rest/schemas/catalog.js +3 -3
  97. package/dist/interfaces/rest/schemas/checkout.js +1 -1
  98. package/dist/interfaces/rest/schemas/customer-portal.js +2 -2
  99. package/dist/interfaces/rest/schemas/inventory.d.ts +1 -1
  100. package/dist/interfaces/rest/schemas/inventory.d.ts.map +1 -1
  101. package/dist/interfaces/rest/schemas/inventory.js +2 -2
  102. package/dist/interfaces/rest/schemas/media.js +1 -1
  103. package/dist/interfaces/rest/schemas/orders.js +2 -2
  104. package/dist/interfaces/rest/schemas/pricing.d.ts +1 -1
  105. package/dist/interfaces/rest/schemas/pricing.d.ts.map +1 -1
  106. package/dist/interfaces/rest/schemas/pricing.js +2 -2
  107. package/dist/interfaces/rest/schemas/promotions.d.ts +1 -1
  108. package/dist/interfaces/rest/schemas/promotions.d.ts.map +1 -1
  109. package/dist/interfaces/rest/schemas/promotions.js +2 -2
  110. package/dist/interfaces/rest/schemas/responses.js +5 -5
  111. package/dist/interfaces/rest/schemas/search.js +1 -1
  112. package/dist/interfaces/rest/schemas/webhooks.js +1 -1
  113. package/dist/interfaces/rest/utils.d.ts +2 -2
  114. package/dist/interfaces/rest/utils.d.ts.map +1 -1
  115. package/dist/interfaces/rest/utils.js +2 -2
  116. package/dist/interfaces/rest/webhook-router.d.ts +1 -1
  117. package/dist/interfaces/rest/webhook-router.d.ts.map +1 -1
  118. package/dist/kernel/compensation/executor.d.ts +2 -2
  119. package/dist/kernel/compensation/executor.d.ts.map +1 -1
  120. package/dist/kernel/compensation/types.d.ts +3 -3
  121. package/dist/kernel/compensation/types.d.ts.map +1 -1
  122. package/dist/kernel/database/drizzle-db.d.ts +1 -1
  123. package/dist/kernel/database/drizzle-db.d.ts.map +1 -1
  124. package/dist/kernel/database/drizzle-db.js +1 -1
  125. package/dist/kernel/database/migrate.d.ts +2 -2
  126. package/dist/kernel/database/migrate.d.ts.map +1 -1
  127. package/dist/kernel/database/migrate.js +1 -1
  128. package/dist/kernel/database/schema.d.ts +13 -13
  129. package/dist/kernel/database/schema.d.ts.map +1 -1
  130. package/dist/kernel/database/schema.js +13 -13
  131. package/dist/kernel/database/tx-context.d.ts +2 -2
  132. package/dist/kernel/database/tx-context.d.ts.map +1 -1
  133. package/dist/kernel/error-mapper.js +1 -1
  134. package/dist/kernel/factory/repository-factory.d.ts +2 -2
  135. package/dist/kernel/factory/repository-factory.d.ts.map +1 -1
  136. package/dist/kernel/factory/repository-factory.js +1 -1
  137. package/dist/kernel/hooks/create-context.d.ts +4 -4
  138. package/dist/kernel/hooks/create-context.d.ts.map +1 -1
  139. package/dist/kernel/hooks/create-context.js +1 -1
  140. package/dist/kernel/hooks/executor.d.ts +1 -1
  141. package/dist/kernel/hooks/executor.d.ts.map +1 -1
  142. package/dist/kernel/hooks/types.d.ts +3 -3
  143. package/dist/kernel/hooks/types.d.ts.map +1 -1
  144. package/dist/kernel/http-error.d.ts +1 -1
  145. package/dist/kernel/http-error.d.ts.map +1 -1
  146. package/dist/kernel/jobs/drizzle-adapter.d.ts +3 -3
  147. package/dist/kernel/jobs/drizzle-adapter.d.ts.map +1 -1
  148. package/dist/kernel/jobs/drizzle-adapter.js +2 -2
  149. package/dist/kernel/jobs/runner.d.ts +3 -3
  150. package/dist/kernel/jobs/runner.d.ts.map +1 -1
  151. package/dist/kernel/jobs/runner.js +1 -1
  152. package/dist/kernel/jobs/schema.js +1 -1
  153. package/dist/kernel/jobs/types.d.ts +2 -2
  154. package/dist/kernel/jobs/types.d.ts.map +1 -1
  155. package/dist/kernel/local-api.d.ts +21 -21
  156. package/dist/kernel/local-api.d.ts.map +1 -1
  157. package/dist/kernel/plugin/manifest.d.ts +1 -1
  158. package/dist/kernel/plugin/manifest.d.ts.map +1 -1
  159. package/dist/kernel/query/executor.d.ts +1 -1
  160. package/dist/kernel/query/executor.d.ts.map +1 -1
  161. package/dist/kernel/query/executor.js +1 -1
  162. package/dist/kernel/result.d.ts +1 -1
  163. package/dist/kernel/result.d.ts.map +1 -1
  164. package/dist/kernel/state-machine/machine.js +1 -1
  165. package/dist/modules/analytics/drizzle-adapter.d.ts +3 -3
  166. package/dist/modules/analytics/drizzle-adapter.d.ts.map +1 -1
  167. package/dist/modules/analytics/drizzle-adapter.js +2 -2
  168. package/dist/modules/analytics/models.d.ts +1 -1
  169. package/dist/modules/analytics/models.d.ts.map +1 -1
  170. package/dist/modules/analytics/repository/index.d.ts +1 -1
  171. package/dist/modules/analytics/repository/index.d.ts.map +1 -1
  172. package/dist/modules/analytics/service.d.ts +4 -4
  173. package/dist/modules/analytics/service.d.ts.map +1 -1
  174. package/dist/modules/analytics/service.js +2 -2
  175. package/dist/modules/analytics/types.d.ts +1 -1
  176. package/dist/modules/analytics/types.d.ts.map +1 -1
  177. package/dist/modules/audit/hooks.d.ts +1 -1
  178. package/dist/modules/audit/hooks.d.ts.map +1 -1
  179. package/dist/modules/audit/schema.js +1 -1
  180. package/dist/modules/audit/service.d.ts +4 -4
  181. package/dist/modules/audit/service.d.ts.map +1 -1
  182. package/dist/modules/audit/service.js +2 -2
  183. package/dist/modules/cart/access.d.ts +2 -2
  184. package/dist/modules/cart/access.d.ts.map +1 -1
  185. package/dist/modules/cart/matcher.d.ts +1 -1
  186. package/dist/modules/cart/matcher.d.ts.map +1 -1
  187. package/dist/modules/cart/repository/index.d.ts +3 -3
  188. package/dist/modules/cart/repository/index.d.ts.map +1 -1
  189. package/dist/modules/cart/repository/index.js +1 -1
  190. package/dist/modules/cart/schema.js +2 -2
  191. package/dist/modules/cart/service.d.ts +10 -10
  192. package/dist/modules/cart/service.d.ts.map +1 -1
  193. package/dist/modules/cart/service.js +8 -8
  194. package/dist/modules/catalog/repository/index.d.ts +3 -3
  195. package/dist/modules/catalog/repository/index.d.ts.map +1 -1
  196. package/dist/modules/catalog/repository/index.js +1 -1
  197. package/dist/modules/catalog/schema.js +1 -1
  198. package/dist/modules/catalog/service.d.ts +9 -9
  199. package/dist/modules/catalog/service.d.ts.map +1 -1
  200. package/dist/modules/catalog/service.js +8 -8
  201. package/dist/modules/customers/repository/index.d.ts +3 -3
  202. package/dist/modules/customers/repository/index.d.ts.map +1 -1
  203. package/dist/modules/customers/repository/index.js +1 -1
  204. package/dist/modules/customers/schema.js +1 -1
  205. package/dist/modules/customers/service.d.ts +4 -4
  206. package/dist/modules/customers/service.d.ts.map +1 -1
  207. package/dist/modules/customers/service.js +3 -3
  208. package/dist/modules/fulfillment/repository/index.d.ts +3 -3
  209. package/dist/modules/fulfillment/repository/index.d.ts.map +1 -1
  210. package/dist/modules/fulfillment/repository/index.js +1 -1
  211. package/dist/modules/fulfillment/schema.js +2 -2
  212. package/dist/modules/fulfillment/service.d.ts +6 -6
  213. package/dist/modules/fulfillment/service.d.ts.map +1 -1
  214. package/dist/modules/fulfillment/service.js +4 -4
  215. package/dist/modules/fulfillment/types.d.ts +2 -2
  216. package/dist/modules/fulfillment/types.d.ts.map +1 -1
  217. package/dist/modules/inventory/repository/index.d.ts +3 -3
  218. package/dist/modules/inventory/repository/index.d.ts.map +1 -1
  219. package/dist/modules/inventory/repository/index.js +1 -1
  220. package/dist/modules/inventory/schema.js +2 -2
  221. package/dist/modules/inventory/service.d.ts +9 -9
  222. package/dist/modules/inventory/service.d.ts.map +1 -1
  223. package/dist/modules/inventory/service.js +8 -8
  224. package/dist/modules/media/adapter.d.ts +1 -1
  225. package/dist/modules/media/adapter.d.ts.map +1 -1
  226. package/dist/modules/media/repository/index.d.ts +3 -3
  227. package/dist/modules/media/repository/index.d.ts.map +1 -1
  228. package/dist/modules/media/repository/index.js +1 -1
  229. package/dist/modules/media/schema.js +2 -2
  230. package/dist/modules/media/service.d.ts +6 -6
  231. package/dist/modules/media/service.d.ts.map +1 -1
  232. package/dist/modules/media/service.js +4 -4
  233. package/dist/modules/orders/repository/index.d.ts +3 -3
  234. package/dist/modules/orders/repository/index.d.ts.map +1 -1
  235. package/dist/modules/orders/repository/index.js +1 -1
  236. package/dist/modules/orders/schema.js +2 -2
  237. package/dist/modules/orders/service.d.ts +8 -8
  238. package/dist/modules/orders/service.d.ts.map +1 -1
  239. package/dist/modules/orders/service.js +9 -9
  240. package/dist/modules/orders/stale-order-cleanup.d.ts +1 -1
  241. package/dist/modules/orders/stale-order-cleanup.d.ts.map +1 -1
  242. package/dist/modules/orders/stale-order-cleanup.js +1 -1
  243. package/dist/modules/organization/service.d.ts +1 -1
  244. package/dist/modules/organization/service.d.ts.map +1 -1
  245. package/dist/modules/organization/service.js +1 -1
  246. package/dist/modules/payments/adapter.d.ts +1 -1
  247. package/dist/modules/payments/adapter.d.ts.map +1 -1
  248. package/dist/modules/payments/repository/index.d.ts +1 -1
  249. package/dist/modules/payments/repository/index.d.ts.map +1 -1
  250. package/dist/modules/payments/service.d.ts +3 -3
  251. package/dist/modules/payments/service.d.ts.map +1 -1
  252. package/dist/modules/payments/service.js +2 -2
  253. package/dist/modules/pricing/repository/index.d.ts +3 -3
  254. package/dist/modules/pricing/repository/index.d.ts.map +1 -1
  255. package/dist/modules/pricing/repository/index.js +1 -1
  256. package/dist/modules/pricing/schema.js +2 -2
  257. package/dist/modules/pricing/service.d.ts +7 -7
  258. package/dist/modules/pricing/service.d.ts.map +1 -1
  259. package/dist/modules/pricing/service.js +3 -3
  260. package/dist/modules/promotions/repository/index.d.ts +3 -3
  261. package/dist/modules/promotions/repository/index.d.ts.map +1 -1
  262. package/dist/modules/promotions/repository/index.js +1 -1
  263. package/dist/modules/promotions/schema.js +1 -1
  264. package/dist/modules/promotions/service.d.ts +8 -8
  265. package/dist/modules/promotions/service.d.ts.map +1 -1
  266. package/dist/modules/promotions/service.js +3 -3
  267. package/dist/modules/search/adapter.d.ts +1 -1
  268. package/dist/modules/search/adapter.d.ts.map +1 -1
  269. package/dist/modules/search/hooks.d.ts +1 -1
  270. package/dist/modules/search/hooks.d.ts.map +1 -1
  271. package/dist/modules/search/repository/index.d.ts +1 -1
  272. package/dist/modules/search/repository/index.d.ts.map +1 -1
  273. package/dist/modules/search/service.d.ts +4 -4
  274. package/dist/modules/search/service.d.ts.map +1 -1
  275. package/dist/modules/search/service.js +2 -2
  276. package/dist/modules/shipping/calculator.d.ts +3 -3
  277. package/dist/modules/shipping/calculator.d.ts.map +1 -1
  278. package/dist/modules/shipping/repository/index.d.ts +1 -1
  279. package/dist/modules/shipping/repository/index.d.ts.map +1 -1
  280. package/dist/modules/shipping/service.d.ts +5 -5
  281. package/dist/modules/shipping/service.d.ts.map +1 -1
  282. package/dist/modules/shipping/service.js +2 -2
  283. package/dist/modules/tax/adapter.d.ts +1 -1
  284. package/dist/modules/tax/adapter.d.ts.map +1 -1
  285. package/dist/modules/tax/repository/index.d.ts +1 -1
  286. package/dist/modules/tax/repository/index.d.ts.map +1 -1
  287. package/dist/modules/tax/service.d.ts +2 -2
  288. package/dist/modules/tax/service.d.ts.map +1 -1
  289. package/dist/modules/tax/service.js +2 -2
  290. package/dist/modules/webhooks/hook.d.ts +1 -1
  291. package/dist/modules/webhooks/hook.d.ts.map +1 -1
  292. package/dist/modules/webhooks/repository/index.d.ts +3 -3
  293. package/dist/modules/webhooks/repository/index.d.ts.map +1 -1
  294. package/dist/modules/webhooks/repository/index.js +1 -1
  295. package/dist/modules/webhooks/schema.js +1 -1
  296. package/dist/modules/webhooks/service.d.ts +4 -4
  297. package/dist/modules/webhooks/service.d.ts.map +1 -1
  298. package/dist/modules/webhooks/service.js +3 -3
  299. package/dist/modules/webhooks/tasks.d.ts +1 -1
  300. package/dist/modules/webhooks/tasks.d.ts.map +1 -1
  301. package/dist/modules/webhooks/tasks.js +1 -1
  302. package/dist/modules/webhooks/worker.d.ts +1 -1
  303. package/dist/modules/webhooks/worker.d.ts.map +1 -1
  304. package/dist/modules/webhooks/worker.js +2 -2
  305. package/dist/runtime/commerce.d.ts +9 -9
  306. package/dist/runtime/commerce.d.ts.map +1 -1
  307. package/dist/runtime/commerce.js +5 -5
  308. package/dist/runtime/kernel.d.ts +21 -21
  309. package/dist/runtime/kernel.d.ts.map +1 -1
  310. package/dist/runtime/kernel.js +41 -41
  311. package/dist/runtime/logger.d.ts +1 -1
  312. package/dist/runtime/logger.d.ts.map +1 -1
  313. package/dist/runtime/server.d.ts +6 -6
  314. package/dist/runtime/server.d.ts.map +1 -1
  315. package/dist/runtime/server.js +8 -6
  316. package/dist/runtime/shutdown.d.ts +1 -1
  317. package/dist/runtime/shutdown.d.ts.map +1 -1
  318. package/dist/test-utils/create-pglite-adapter.d.ts +2 -2
  319. package/dist/test-utils/create-pglite-adapter.d.ts.map +1 -1
  320. package/dist/test-utils/create-pglite-adapter.js +3 -3
  321. package/dist/test-utils/create-plugin-test-app.d.ts +3 -3
  322. package/dist/test-utils/create-plugin-test-app.d.ts.map +1 -1
  323. package/dist/test-utils/create-plugin-test-app.js +4 -4
  324. package/dist/test-utils/create-repository-test-harness.d.ts +2 -2
  325. package/dist/test-utils/create-repository-test-harness.d.ts.map +1 -1
  326. package/dist/test-utils/create-repository-test-harness.js +2 -2
  327. package/dist/test-utils/create-test-config.d.ts +1 -1
  328. package/dist/test-utils/create-test-config.d.ts.map +1 -1
  329. package/dist/test-utils/create-test-config.js +4 -4
  330. package/dist/test-utils/create-test-kernel.d.ts +2 -2
  331. package/dist/test-utils/create-test-kernel.d.ts.map +1 -1
  332. package/dist/test-utils/create-test-kernel.js +2 -2
  333. package/dist/test-utils/create-test-plugin-context.d.ts +2 -2
  334. package/dist/test-utils/create-test-plugin-context.d.ts.map +1 -1
  335. package/dist/test-utils/create-test-plugin-context.js +3 -3
  336. package/dist/test-utils/rest-api-test-utils.d.ts +4 -4
  337. package/dist/test-utils/rest-api-test-utils.d.ts.map +1 -1
  338. package/dist/test-utils/rest-api-test-utils.js +8 -8
  339. package/dist/test-utils/test-actors.d.ts +1 -1
  340. package/dist/test-utils/test-actors.d.ts.map +1 -1
  341. package/dist/test-utils/typed-hooks.d.ts +2 -2
  342. package/dist/test-utils/typed-hooks.d.ts.map +1 -1
  343. package/dist/types/commerce-types.d.ts +5 -5
  344. package/dist/types/commerce-types.d.ts.map +1 -1
  345. package/dist/utils/logger.d.ts +1 -1
  346. package/dist/utils/logger.d.ts.map +1 -1
  347. package/package.json +17 -9
  348. package/src/auth/access.ts +1 -1
  349. package/src/auth/auth-schema.ts +3 -3
  350. package/src/auth/middleware.ts +43 -14
  351. package/src/auth/org.ts +1 -1
  352. package/src/auth/permissions.ts +2 -2
  353. package/src/auth/setup.ts +18 -14
  354. package/src/auth/system-actor.ts +2 -2
  355. package/src/config/defaults.ts +1 -1
  356. package/src/config/define-config.ts +3 -3
  357. package/src/config/types.ts +11 -11
  358. package/src/hooks/checkout-completion.ts +4 -4
  359. package/src/hooks/checkout.ts +8 -8
  360. package/src/hooks/order-emails.ts +1 -1
  361. package/src/index.ts +83 -83
  362. package/src/interfaces/mcp/context-enrichment.ts +3 -3
  363. package/src/interfaces/mcp/server.ts +6 -6
  364. package/src/interfaces/mcp/transport.ts +3 -3
  365. package/src/interfaces/rest/customer-portal.ts +6 -6
  366. package/src/interfaces/rest/index.ts +15 -15
  367. package/src/interfaces/rest/router.ts +5 -5
  368. package/src/interfaces/rest/routes/admin-jobs.ts +5 -5
  369. package/src/interfaces/rest/routes/audit.ts +4 -4
  370. package/src/interfaces/rest/routes/carts.ts +4 -4
  371. package/src/interfaces/rest/routes/catalog.ts +5 -5
  372. package/src/interfaces/rest/routes/checkout.ts +11 -11
  373. package/src/interfaces/rest/routes/inventory.ts +3 -3
  374. package/src/interfaces/rest/routes/media.ts +4 -4
  375. package/src/interfaces/rest/routes/orders.ts +3 -3
  376. package/src/interfaces/rest/routes/payments.ts +3 -3
  377. package/src/interfaces/rest/routes/pricing.ts +3 -3
  378. package/src/interfaces/rest/routes/promotions.ts +4 -4
  379. package/src/interfaces/rest/routes/search.ts +3 -3
  380. package/src/interfaces/rest/routes/webhooks.ts +3 -3
  381. package/src/interfaces/rest/schemas/admin-jobs.ts +1 -1
  382. package/src/interfaces/rest/schemas/carts.ts +3 -3
  383. package/src/interfaces/rest/schemas/catalog.ts +3 -3
  384. package/src/interfaces/rest/schemas/checkout.ts +1 -1
  385. package/src/interfaces/rest/schemas/customer-portal.ts +2 -2
  386. package/src/interfaces/rest/schemas/inventory.ts +2 -2
  387. package/src/interfaces/rest/schemas/media.ts +1 -1
  388. package/src/interfaces/rest/schemas/orders.ts +2 -2
  389. package/src/interfaces/rest/schemas/pricing.ts +2 -2
  390. package/src/interfaces/rest/schemas/promotions.ts +2 -2
  391. package/src/interfaces/rest/schemas/responses.ts +5 -5
  392. package/src/interfaces/rest/schemas/search.ts +1 -1
  393. package/src/interfaces/rest/schemas/webhooks.ts +1 -1
  394. package/src/interfaces/rest/utils.ts +4 -4
  395. package/src/interfaces/rest/webhook-router.ts +1 -1
  396. package/src/kernel/compensation/executor.ts +2 -2
  397. package/src/kernel/compensation/types.ts +3 -3
  398. package/src/kernel/database/drizzle-db.ts +1 -1
  399. package/src/kernel/database/migrate.ts +2 -2
  400. package/src/kernel/database/schema.ts +13 -13
  401. package/src/kernel/database/tx-context.ts +2 -2
  402. package/src/kernel/error-mapper.ts +1 -1
  403. package/src/kernel/factory/repository-factory.ts +3 -3
  404. package/src/kernel/hooks/create-context.ts +5 -5
  405. package/src/kernel/hooks/executor.ts +1 -1
  406. package/src/kernel/hooks/types.ts +3 -3
  407. package/src/kernel/http-error.ts +1 -1
  408. package/src/kernel/jobs/drizzle-adapter.ts +5 -5
  409. package/src/kernel/jobs/runner.ts +4 -4
  410. package/src/kernel/jobs/schema.ts +1 -1
  411. package/src/kernel/jobs/types.ts +2 -2
  412. package/src/kernel/local-api.ts +4 -4
  413. package/src/kernel/plugin/manifest.ts +1 -1
  414. package/src/kernel/query/executor.ts +2 -2
  415. package/src/kernel/result.ts +1 -1
  416. package/src/kernel/state-machine/machine.ts +1 -1
  417. package/src/modules/analytics/drizzle-adapter.ts +4 -4
  418. package/src/modules/analytics/models.ts +1 -1
  419. package/src/modules/analytics/repository/index.ts +1 -1
  420. package/src/modules/analytics/service.ts +5 -5
  421. package/src/modules/analytics/types.ts +1 -1
  422. package/src/modules/audit/hooks.ts +3 -3
  423. package/src/modules/audit/schema.ts +1 -1
  424. package/src/modules/audit/service.ts +5 -5
  425. package/src/modules/cart/access.ts +2 -2
  426. package/src/modules/cart/matcher.ts +1 -1
  427. package/src/modules/cart/repository/index.ts +3 -3
  428. package/src/modules/cart/schema.ts +2 -2
  429. package/src/modules/cart/service.ts +17 -17
  430. package/src/modules/catalog/repository/index.ts +3 -3
  431. package/src/modules/catalog/schema.ts +1 -1
  432. package/src/modules/catalog/service.ts +16 -16
  433. package/src/modules/customers/repository/index.ts +3 -3
  434. package/src/modules/customers/schema.ts +1 -1
  435. package/src/modules/customers/service.ts +6 -6
  436. package/src/modules/fulfillment/repository/index.ts +3 -3
  437. package/src/modules/fulfillment/schema.ts +2 -2
  438. package/src/modules/fulfillment/service.ts +9 -9
  439. package/src/modules/fulfillment/types.ts +2 -2
  440. package/src/modules/inventory/repository/index.ts +3 -3
  441. package/src/modules/inventory/schema.ts +2 -2
  442. package/src/modules/inventory/service.ts +16 -16
  443. package/src/modules/media/adapter.ts +1 -1
  444. package/src/modules/media/repository/index.ts +3 -3
  445. package/src/modules/media/schema.ts +2 -2
  446. package/src/modules/media/service.ts +9 -9
  447. package/src/modules/orders/repository/index.ts +3 -3
  448. package/src/modules/orders/schema.ts +2 -2
  449. package/src/modules/orders/service.ts +15 -15
  450. package/src/modules/orders/stale-order-cleanup.ts +2 -2
  451. package/src/modules/organization/service.ts +2 -2
  452. package/src/modules/payments/adapter.ts +1 -1
  453. package/src/modules/payments/repository/index.ts +1 -1
  454. package/src/modules/payments/service.ts +3 -3
  455. package/src/modules/pricing/repository/index.ts +3 -3
  456. package/src/modules/pricing/schema.ts +2 -2
  457. package/src/modules/pricing/service.ts +9 -9
  458. package/src/modules/promotions/repository/index.ts +3 -3
  459. package/src/modules/promotions/schema.ts +1 -1
  460. package/src/modules/promotions/service.ts +10 -10
  461. package/src/modules/search/adapter.ts +1 -1
  462. package/src/modules/search/hooks.ts +2 -2
  463. package/src/modules/search/repository/index.ts +1 -1
  464. package/src/modules/search/service.ts +5 -5
  465. package/src/modules/shipping/calculator.ts +3 -3
  466. package/src/modules/shipping/repository/index.ts +1 -1
  467. package/src/modules/shipping/service.ts +5 -5
  468. package/src/modules/tax/adapter.ts +1 -1
  469. package/src/modules/tax/repository/index.ts +1 -1
  470. package/src/modules/tax/service.ts +3 -3
  471. package/src/modules/webhooks/hook.ts +1 -1
  472. package/src/modules/webhooks/repository/index.ts +3 -3
  473. package/src/modules/webhooks/schema.ts +1 -1
  474. package/src/modules/webhooks/service.ts +6 -6
  475. package/src/modules/webhooks/tasks.ts +3 -3
  476. package/src/modules/webhooks/worker.ts +3 -3
  477. package/src/runtime/commerce.ts +11 -11
  478. package/src/runtime/kernel.ts +45 -45
  479. package/src/runtime/logger.ts +1 -1
  480. package/src/runtime/server.ts +17 -13
  481. package/src/runtime/shutdown.ts +1 -1
  482. package/src/test-utils/create-pglite-adapter.ts +5 -5
  483. package/src/test-utils/create-plugin-test-app.ts +7 -7
  484. package/src/test-utils/create-repository-test-harness.ts +3 -3
  485. package/src/test-utils/create-test-config.ts +6 -6
  486. package/src/test-utils/create-test-kernel.ts +3 -3
  487. package/src/test-utils/create-test-plugin-context.ts +4 -4
  488. package/src/test-utils/rest-api-test-utils.ts +11 -11
  489. package/src/test-utils/test-actors.ts +1 -1
  490. package/src/test-utils/typed-hooks.ts +2 -2
  491. package/src/types/commerce-types.ts +5 -5
  492. package/src/utils/logger.ts +1 -1
  493. package/dist/auth/pos.d.ts +0 -3
  494. package/dist/auth/pos.d.ts.map +0 -1
  495. package/dist/auth/pos.js +0 -62
  496. package/dist/index.js.map +0 -156
  497. package/dist/interfaces/graphql/index.d.ts +0 -4
  498. package/dist/interfaces/graphql/index.d.ts.map +0 -1
  499. package/dist/interfaces/graphql/index.js +0 -415
  500. package/dist/kernel/factory/in-memory-repository-factory.d.ts +0 -20
  501. package/dist/kernel/factory/in-memory-repository-factory.d.ts.map +0 -1
  502. package/dist/kernel/factory/in-memory-repository-factory.js +0 -83
  503. package/dist/kernel/plugin/capability-registry.d.ts +0 -9
  504. package/dist/kernel/plugin/capability-registry.d.ts.map +0 -1
  505. package/dist/kernel/plugin/capability-registry.js +0 -28
  506. package/dist/kernel/plugin/dependency-graph.d.ts +0 -6
  507. package/dist/kernel/plugin/dependency-graph.d.ts.map +0 -1
  508. package/dist/kernel/plugin/dependency-graph.js +0 -55
  509. package/dist/modules/analytics/cubes.d.ts +0 -19
  510. package/dist/modules/analytics/cubes.d.ts.map +0 -1
  511. package/dist/modules/analytics/cubes.js +0 -187
  512. package/dist/modules/cart/repository/in-memory.d.ts +0 -30
  513. package/dist/modules/cart/repository/in-memory.d.ts.map +0 -1
  514. package/dist/modules/cart/repository/in-memory.js +0 -159
  515. package/dist/modules/catalog/repository/in-memory.d.ts +0 -82
  516. package/dist/modules/catalog/repository/in-memory.d.ts.map +0 -1
  517. package/dist/modules/catalog/repository/in-memory.js +0 -444
  518. package/dist/modules/customers/repository/in-memory.d.ts +0 -37
  519. package/dist/modules/customers/repository/in-memory.d.ts.map +0 -1
  520. package/dist/modules/customers/repository/in-memory.js +0 -278
  521. package/dist/modules/fulfillment/repository/in-memory.d.ts +0 -53
  522. package/dist/modules/fulfillment/repository/in-memory.d.ts.map +0 -1
  523. package/dist/modules/fulfillment/repository/in-memory.js +0 -327
  524. package/dist/modules/inventory/repository/in-memory.d.ts +0 -51
  525. package/dist/modules/inventory/repository/in-memory.d.ts.map +0 -1
  526. package/dist/modules/inventory/repository/in-memory.js +0 -281
  527. package/dist/modules/media/repository/in-memory.d.ts +0 -26
  528. package/dist/modules/media/repository/in-memory.d.ts.map +0 -1
  529. package/dist/modules/media/repository/in-memory.js +0 -145
  530. package/dist/modules/orders/repository/in-memory.d.ts +0 -40
  531. package/dist/modules/orders/repository/in-memory.d.ts.map +0 -1
  532. package/dist/modules/orders/repository/in-memory.js +0 -245
  533. package/dist/modules/pricing/repository/in-memory.d.ts +0 -25
  534. package/dist/modules/pricing/repository/in-memory.d.ts.map +0 -1
  535. package/dist/modules/pricing/repository/in-memory.js +0 -288
  536. package/dist/modules/promotions/repository/in-memory.d.ts +0 -32
  537. package/dist/modules/promotions/repository/in-memory.d.ts.map +0 -1
  538. package/dist/modules/promotions/repository/in-memory.js +0 -227
  539. package/dist/modules/webhooks/repository/in-memory.d.ts +0 -31
  540. package/dist/modules/webhooks/repository/in-memory.d.ts.map +0 -1
  541. package/dist/modules/webhooks/repository/in-memory.js +0 -187
  542. package/dist/runtime/state-manager.d.ts +0 -14
  543. package/dist/runtime/state-manager.d.ts.map +0 -1
  544. package/dist/runtime/state-manager.js +0 -84
  545. package/dist/runtime/state-repository.d.ts +0 -13
  546. package/dist/runtime/state-repository.d.ts.map +0 -1
  547. package/dist/runtime/state-repository.js +0 -160
  548. package/dist/runtime/state.d.ts +0 -382
  549. package/dist/runtime/state.d.ts.map +0 -1
  550. package/dist/runtime/state.js +0 -37
  551. package/dist/runtime/store.d.ts +0 -382
  552. package/dist/runtime/store.d.ts.map +0 -1
  553. package/dist/runtime/store.js +0 -37
  554. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,278 +0,0 @@
1
- function makeId() {
2
- return crypto.randomUUID();
3
- }
4
- /**
5
- * In-memory implementation of CustomersRepository for testing.
6
- */
7
- export class InMemoryCustomersRepository {
8
- customers = new Map();
9
- customerByUserId = new Map();
10
- addresses = new Map();
11
- groups = new Map();
12
- groupMembers = new Map(); // customerId -> Set<groupId>
13
- // ─────────────────────────────────────────────────────────────────────────────
14
- // Customers
15
- // ─────────────────────────────────────────────────────────────────────────────
16
- async findById(id, _ctx) {
17
- return this.customers.get(id);
18
- }
19
- async findByUserId(userId, _ctx) {
20
- const customerId = this.customerByUserId.get(userId);
21
- return customerId ? this.customers.get(customerId) : undefined;
22
- }
23
- async findByEmail(email, _ctx) {
24
- return [...this.customers.values()].find((c) => c.email === email);
25
- }
26
- async findByPosPin(hashedPin, _ctx) {
27
- return [...this.customers.values()].find((c) => c.posOperatorPin === hashedPin);
28
- }
29
- async findAll(_ctx) {
30
- return [...this.customers.values()];
31
- }
32
- async create(data, _ctx) {
33
- // Enforce unique userId constraint
34
- if (this.customerByUserId.has(data.userId)) {
35
- throw new Error(`Customer with userId "${data.userId}" already exists.`);
36
- }
37
- // Enforce unique email constraint
38
- if (data.email != null) {
39
- const emailDuplicate = [...this.customers.values()].find((c) => c.email === data.email);
40
- if (emailDuplicate) {
41
- throw new Error(`Customer with email "${data.email}" already exists.`);
42
- }
43
- }
44
- const now = new Date();
45
- const customer = {
46
- id: data.id ?? makeId(),
47
- userId: data.userId,
48
- email: data.email === undefined ? null : data.email,
49
- firstName: data.firstName === undefined ? null : data.firstName,
50
- lastName: data.lastName === undefined ? null : data.lastName,
51
- phone: data.phone === undefined ? null : data.phone,
52
- posOperatorPin: data.posOperatorPin === undefined ? null : data.posOperatorPin,
53
- metadata: data.metadata === undefined ? null : data.metadata,
54
- createdAt: now,
55
- updatedAt: now,
56
- };
57
- this.customers.set(customer.id, customer);
58
- this.customerByUserId.set(customer.userId, customer.id);
59
- this.addresses.set(customer.id, []);
60
- return customer;
61
- }
62
- async update(id, data, _ctx) {
63
- const existing = this.customers.get(id);
64
- if (!existing)
65
- return undefined;
66
- const updated = {
67
- id: existing.id,
68
- userId: data.userId !== undefined ? data.userId : existing.userId,
69
- email: data.email !== undefined
70
- ? data.email === undefined
71
- ? null
72
- : data.email
73
- : existing.email,
74
- firstName: data.firstName !== undefined
75
- ? data.firstName === undefined
76
- ? null
77
- : data.firstName
78
- : existing.firstName,
79
- lastName: data.lastName !== undefined
80
- ? data.lastName === undefined
81
- ? null
82
- : data.lastName
83
- : existing.lastName,
84
- phone: data.phone !== undefined
85
- ? data.phone === undefined
86
- ? null
87
- : data.phone
88
- : existing.phone,
89
- posOperatorPin: data.posOperatorPin !== undefined
90
- ? data.posOperatorPin === undefined
91
- ? null
92
- : data.posOperatorPin
93
- : existing.posOperatorPin,
94
- metadata: data.metadata !== undefined
95
- ? data.metadata === undefined
96
- ? null
97
- : data.metadata
98
- : existing.metadata,
99
- createdAt: existing.createdAt,
100
- updatedAt: new Date(),
101
- };
102
- this.customers.set(id, updated);
103
- return updated;
104
- }
105
- async delete(id, _ctx) {
106
- const customer = this.customers.get(id);
107
- if (!customer)
108
- return false;
109
- this.customerByUserId.delete(customer.userId);
110
- this.addresses.delete(id);
111
- this.groupMembers.delete(id);
112
- return this.customers.delete(id);
113
- }
114
- // ─────────────────────────────────────────────────────────────────────────────
115
- // Customer Addresses
116
- // ─────────────────────────────────────────────────────────────────────────────
117
- async findAddressById(id, _ctx) {
118
- for (const addresses of this.addresses.values()) {
119
- const found = addresses.find((a) => a.id === id);
120
- if (found)
121
- return found;
122
- }
123
- return undefined;
124
- }
125
- async findAddressesByCustomerId(customerId, _ctx) {
126
- return this.addresses.get(customerId) ?? [];
127
- }
128
- async findDefaultAddress(customerId, type, _ctx) {
129
- const addresses = this.addresses.get(customerId) ?? [];
130
- return addresses.find((a) => a.type === type && a.isDefault);
131
- }
132
- async createAddress(data, _ctx) {
133
- const address = {
134
- id: data.id ?? makeId(),
135
- customerId: data.customerId,
136
- type: data.type,
137
- isDefault: data.isDefault ?? false,
138
- firstName: data.firstName,
139
- lastName: data.lastName,
140
- line1: data.line1,
141
- line2: data.line2 === undefined ? null : data.line2,
142
- city: data.city,
143
- state: data.state === undefined ? null : data.state,
144
- postalCode: data.postalCode === undefined ? null : data.postalCode,
145
- country: data.country,
146
- phone: data.phone === undefined ? null : data.phone,
147
- };
148
- const addresses = this.addresses.get(data.customerId) ?? [];
149
- addresses.push(address);
150
- this.addresses.set(data.customerId, addresses);
151
- return address;
152
- }
153
- async updateAddress(id, data, _ctx) {
154
- for (const [_customerId, addresses] of this.addresses.entries()) {
155
- const idx = addresses.findIndex((a) => a.id === id);
156
- if (idx !== -1) {
157
- const existing = addresses[idx];
158
- const updated = {
159
- id: existing.id,
160
- customerId: data.customerId !== undefined
161
- ? data.customerId
162
- : existing.customerId,
163
- type: data.type !== undefined ? data.type : existing.type,
164
- isDefault: data.isDefault !== undefined ? data.isDefault : existing.isDefault,
165
- firstName: data.firstName !== undefined ? data.firstName : existing.firstName,
166
- lastName: data.lastName !== undefined ? data.lastName : existing.lastName,
167
- line1: data.line1 !== undefined ? data.line1 : existing.line1,
168
- line2: data.line2 !== undefined
169
- ? data.line2 === undefined
170
- ? null
171
- : data.line2
172
- : existing.line2,
173
- city: data.city !== undefined ? data.city : existing.city,
174
- state: data.state !== undefined
175
- ? data.state === undefined
176
- ? null
177
- : data.state
178
- : existing.state,
179
- postalCode: data.postalCode !== undefined
180
- ? data.postalCode === undefined
181
- ? null
182
- : data.postalCode
183
- : existing.postalCode,
184
- country: data.country !== undefined ? data.country : existing.country,
185
- phone: data.phone !== undefined
186
- ? data.phone === undefined
187
- ? null
188
- : data.phone
189
- : existing.phone,
190
- };
191
- addresses[idx] = updated;
192
- return updated;
193
- }
194
- }
195
- return undefined;
196
- }
197
- async deleteAddress(id, _ctx) {
198
- for (const [customerId, addresses] of this.addresses.entries()) {
199
- const idx = addresses.findIndex((a) => a.id === id);
200
- if (idx !== -1) {
201
- addresses.splice(idx, 1);
202
- return true;
203
- }
204
- }
205
- return false;
206
- }
207
- async deleteAddressesByCustomerId(customerId, _ctx) {
208
- this.addresses.set(customerId, []);
209
- }
210
- // ─────────────────────────────────────────────────────────────────────────────
211
- // Customer Groups
212
- // ─────────────────────────────────────────────────────────────────────────────
213
- async findGroupById(id, _ctx) {
214
- return this.groups.get(id);
215
- }
216
- async findGroupByName(name, _ctx) {
217
- return [...this.groups.values()].find((g) => g.name === name);
218
- }
219
- async findAllGroups(_ctx) {
220
- return [...this.groups.values()];
221
- }
222
- async createGroup(data, _ctx) {
223
- const duplicate = [...this.groups.values()].find((g) => g.name === data.name);
224
- if (duplicate) {
225
- throw new Error(`Customer group with name "${data.name}" already exists.`);
226
- }
227
- const group = {
228
- id: data.id ?? makeId(),
229
- name: data.name,
230
- description: data.description ?? null,
231
- metadata: data.metadata ?? null,
232
- };
233
- this.groups.set(group.id, group);
234
- return group;
235
- }
236
- async updateGroup(id, data, _ctx) {
237
- const existing = this.groups.get(id);
238
- if (!existing)
239
- return undefined;
240
- const updated = {
241
- id: existing.id,
242
- name: data.name !== undefined ? data.name : existing.name,
243
- description: data.description !== undefined
244
- ? data.description === undefined
245
- ? null
246
- : data.description
247
- : existing.description,
248
- metadata: data.metadata !== undefined
249
- ? data.metadata === undefined
250
- ? null
251
- : data.metadata
252
- : existing.metadata,
253
- };
254
- this.groups.set(id, updated);
255
- return updated;
256
- }
257
- async deleteGroup(id, _ctx) {
258
- return this.groups.delete(id);
259
- }
260
- // ─────────────────────────────────────────────────────────────────────────────
261
- // Customer Group Members
262
- // ─────────────────────────────────────────────────────────────────────────────
263
- async findGroupsByCustomerId(customerId, _ctx) {
264
- return [...(this.groupMembers.get(customerId) ?? [])];
265
- }
266
- async addToGroup(customerId, groupId, _ctx) {
267
- if (!this.groupMembers.has(customerId)) {
268
- this.groupMembers.set(customerId, new Set());
269
- }
270
- this.groupMembers.get(customerId).add(groupId);
271
- }
272
- async removeFromGroup(customerId, groupId, _ctx) {
273
- const groups = this.groupMembers.get(customerId);
274
- if (!groups)
275
- return false;
276
- return groups.delete(groupId);
277
- }
278
- }
@@ -1,53 +0,0 @@
1
- import type { TxContext } from "../../../kernel/database/tx-context";
2
- import type { FulfillmentRecord, FulfillmentRecordInsert, FulfillmentLineItem, FulfillmentLineItemInsert, FulfillmentEvent, FulfillmentEventInsert } from "./index";
3
- /**
4
- * In-memory implementation of FulfillmentRepository for testing.
5
- * Provides the same interface as the Drizzle-based repository but stores data in memory.
6
- */
7
- export declare class InMemoryFulfillmentRepository {
8
- private fulfillments;
9
- private lineItems;
10
- private events;
11
- findById(id: string, _ctx?: TxContext): Promise<FulfillmentRecord | undefined>;
12
- findByOrderId(orderId: string, _ctx?: TxContext): Promise<FulfillmentRecord[]>;
13
- findByCustomerId(customerId: string, _ctx?: TxContext): Promise<FulfillmentRecord[]>;
14
- findByStatus(status: string, _ctx?: TxContext): Promise<FulfillmentRecord[]>;
15
- findByType(type: string, _ctx?: TxContext): Promise<FulfillmentRecord[]>;
16
- findByOrderIdAndStatus(orderId: string, status: string, _ctx?: TxContext): Promise<FulfillmentRecord[]>;
17
- findActiveAccessGrants(customerId: string, _ctx?: TxContext): Promise<FulfillmentRecord[]>;
18
- findAll(options?: {
19
- limit?: number;
20
- offset?: number;
21
- }, _ctx?: TxContext): Promise<FulfillmentRecord[]>;
22
- create(data: FulfillmentRecordInsert, _ctx?: TxContext): Promise<FulfillmentRecord>;
23
- update(id: string, data: Partial<Omit<FulfillmentRecordInsert, "id">>, _ctx?: TxContext): Promise<FulfillmentRecord | undefined>;
24
- updateStatus(id: string, status: string, _ctx?: TxContext): Promise<FulfillmentRecord | undefined>;
25
- delete(id: string, _ctx?: TxContext): Promise<boolean>;
26
- incrementDownloadCount(id: string, _ctx?: TxContext): Promise<FulfillmentRecord | undefined>;
27
- isDownloadAllowed(id: string, _ctx?: TxContext): Promise<boolean>;
28
- deactivateAccessGrant(id: string, _ctx?: TxContext): Promise<FulfillmentRecord | undefined>;
29
- activateAccessGrant(id: string, _ctx?: TxContext): Promise<FulfillmentRecord | undefined>;
30
- isAccessGrantActive(id: string, _ctx?: TxContext): Promise<boolean>;
31
- findLineItemsByFulfillmentId(fulfillmentId: string, _ctx?: TxContext): Promise<FulfillmentLineItem[]>;
32
- findLineItemsByOrderLineItemId(orderLineItemId: string, _ctx?: TxContext): Promise<FulfillmentLineItem[]>;
33
- createLineItem(data: FulfillmentLineItemInsert, _ctx?: TxContext): Promise<FulfillmentLineItem>;
34
- createLineItems(data: FulfillmentLineItemInsert[], _ctx?: TxContext): Promise<FulfillmentLineItem[]>;
35
- deleteLineItemsByFulfillmentId(fulfillmentId: string, _ctx?: TxContext): Promise<void>;
36
- findEventsByFulfillmentId(fulfillmentId: string, _ctx?: TxContext): Promise<FulfillmentEvent[]>;
37
- createEvent(data: FulfillmentEventInsert, _ctx?: TxContext): Promise<FulfillmentEvent>;
38
- recordStatusChange(fulfillmentId: string, fromStatus: string, toStatus: string, actorId?: string, description?: string, _ctx?: TxContext): Promise<FulfillmentEvent>;
39
- findWithLineItems(id: string, _ctx?: TxContext): Promise<{
40
- fulfillment: FulfillmentRecord;
41
- lineItems: FulfillmentLineItem[];
42
- } | undefined>;
43
- findWithEvents(id: string, _ctx?: TxContext): Promise<{
44
- fulfillment: FulfillmentRecord;
45
- events: FulfillmentEvent[];
46
- } | undefined>;
47
- /**
48
- * Get fulfilled quantity for an order line item.
49
- * Sums all fulfillment line items linked to the order line item.
50
- */
51
- getFulfilledQuantity(orderLineItemId: string, _ctx?: TxContext): Promise<number>;
52
- }
53
- //# sourceMappingURL=in-memory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"in-memory.d.ts","sourceRoot":"","sources":["../../../../src/modules/fulfillment/repository/in-memory.ts"],"names":[],"mappings":"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"}
@@ -1,327 +0,0 @@
1
- function makeId() {
2
- return crypto.randomUUID();
3
- }
4
- /**
5
- * In-memory implementation of FulfillmentRepository for testing.
6
- * Provides the same interface as the Drizzle-based repository but stores data in memory.
7
- */
8
- export class InMemoryFulfillmentRepository {
9
- fulfillments = new Map();
10
- lineItems = new Map();
11
- events = [];
12
- // ─────────────────────────────────────────────────────────────────────────────
13
- // Fulfillment Records
14
- // ─────────────────────────────────────────────────────────────────────────────
15
- async findById(id, _ctx) {
16
- return this.fulfillments.get(id);
17
- }
18
- async findByOrderId(orderId, _ctx) {
19
- return [...this.fulfillments.values()]
20
- .filter((f) => f.orderId === orderId)
21
- .sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());
22
- }
23
- async findByCustomerId(customerId, _ctx) {
24
- return [...this.fulfillments.values()]
25
- .filter((f) => f.customerId === customerId)
26
- .sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());
27
- }
28
- async findByStatus(status, _ctx) {
29
- return [...this.fulfillments.values()]
30
- .filter((f) => f.status === status)
31
- .sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());
32
- }
33
- async findByType(type, _ctx) {
34
- return [...this.fulfillments.values()]
35
- .filter((f) => f.type === type)
36
- .sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());
37
- }
38
- async findByOrderIdAndStatus(orderId, status, _ctx) {
39
- return [...this.fulfillments.values()]
40
- .filter((f) => f.orderId === orderId && f.status === status)
41
- .sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());
42
- }
43
- async findActiveAccessGrants(customerId, _ctx) {
44
- return [...this.fulfillments.values()]
45
- .filter((f) => f.customerId === customerId &&
46
- f.type === "access_grant" &&
47
- f.isActive === true)
48
- .sort((a, b) => {
49
- const aTime = a.grantedAt?.getTime() ?? 0;
50
- const bTime = b.grantedAt?.getTime() ?? 0;
51
- return bTime - aTime;
52
- });
53
- }
54
- async findAll(options, _ctx) {
55
- let items = [...this.fulfillments.values()].sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());
56
- if (options?.offset !== undefined) {
57
- items = items.slice(options.offset);
58
- }
59
- if (options?.limit !== undefined) {
60
- items = items.slice(0, options.limit);
61
- }
62
- return items;
63
- }
64
- async create(data, _ctx) {
65
- const now = new Date();
66
- const record = {
67
- id: data.id ?? makeId(),
68
- orderId: data.orderId,
69
- customerId: data.customerId === undefined ? null : data.customerId,
70
- type: data.type,
71
- status: data.status ?? "pending",
72
- carrier: data.carrier === undefined ? null : data.carrier,
73
- trackingNumber: data.trackingNumber === undefined ? null : data.trackingNumber,
74
- trackingUrl: data.trackingUrl === undefined ? null : data.trackingUrl,
75
- estimatedDelivery: data.estimatedDelivery === undefined ? null : data.estimatedDelivery,
76
- shippedAt: data.shippedAt === undefined ? null : data.shippedAt,
77
- deliveredAt: data.deliveredAt === undefined ? null : data.deliveredAt,
78
- downloadUrl: data.downloadUrl === undefined ? null : data.downloadUrl,
79
- downloadExpiresAt: data.downloadExpiresAt === undefined ? null : data.downloadExpiresAt,
80
- maxDownloads: data.maxDownloads === undefined ? null : data.maxDownloads,
81
- downloadCount: data.downloadCount ?? 0,
82
- entityType: data.entityType === undefined ? null : data.entityType,
83
- entityId: data.entityId === undefined ? null : data.entityId,
84
- grantedAt: data.grantedAt === undefined ? null : data.grantedAt,
85
- expiresAt: data.expiresAt === undefined ? null : data.expiresAt,
86
- isActive: data.isActive ?? true,
87
- metadata: data.metadata ?? {},
88
- createdAt: now,
89
- updatedAt: now,
90
- };
91
- this.fulfillments.set(record.id, record);
92
- this.lineItems.set(record.id, []);
93
- return record;
94
- }
95
- async update(id, data, _ctx) {
96
- const existing = this.fulfillments.get(id);
97
- if (!existing)
98
- return undefined;
99
- const updated = {
100
- id: existing.id,
101
- orderId: data.orderId ?? existing.orderId,
102
- customerId: data.customerId !== undefined
103
- ? (data.customerId ?? null)
104
- : existing.customerId,
105
- type: data.type ?? existing.type,
106
- status: data.status ?? existing.status,
107
- carrier: data.carrier !== undefined ? (data.carrier ?? null) : existing.carrier,
108
- trackingNumber: data.trackingNumber !== undefined
109
- ? (data.trackingNumber ?? null)
110
- : existing.trackingNumber,
111
- trackingUrl: data.trackingUrl !== undefined
112
- ? (data.trackingUrl ?? null)
113
- : existing.trackingUrl,
114
- estimatedDelivery: data.estimatedDelivery !== undefined
115
- ? (data.estimatedDelivery ?? null)
116
- : existing.estimatedDelivery,
117
- shippedAt: data.shippedAt !== undefined
118
- ? (data.shippedAt ?? null)
119
- : existing.shippedAt,
120
- deliveredAt: data.deliveredAt !== undefined
121
- ? (data.deliveredAt ?? null)
122
- : existing.deliveredAt,
123
- downloadUrl: data.downloadUrl !== undefined
124
- ? (data.downloadUrl ?? null)
125
- : existing.downloadUrl,
126
- downloadExpiresAt: data.downloadExpiresAt !== undefined
127
- ? (data.downloadExpiresAt ?? null)
128
- : existing.downloadExpiresAt,
129
- maxDownloads: data.maxDownloads !== undefined
130
- ? (data.maxDownloads ?? null)
131
- : existing.maxDownloads,
132
- downloadCount: data.downloadCount ?? existing.downloadCount,
133
- entityType: data.entityType !== undefined
134
- ? (data.entityType ?? null)
135
- : existing.entityType,
136
- entityId: data.entityId !== undefined
137
- ? (data.entityId ?? null)
138
- : existing.entityId,
139
- grantedAt: data.grantedAt !== undefined
140
- ? (data.grantedAt ?? null)
141
- : existing.grantedAt,
142
- expiresAt: data.expiresAt !== undefined
143
- ? (data.expiresAt ?? null)
144
- : existing.expiresAt,
145
- isActive: data.isActive ?? existing.isActive,
146
- metadata: data.metadata !== undefined ? (data.metadata ?? {}) : existing.metadata,
147
- createdAt: existing.createdAt,
148
- updatedAt: new Date(),
149
- };
150
- this.fulfillments.set(id, updated);
151
- return updated;
152
- }
153
- async updateStatus(id, status, _ctx) {
154
- const data = { status };
155
- // Set timestamps based on status
156
- if (status === "shipped") {
157
- data.shippedAt = new Date();
158
- }
159
- else if (status === "delivered") {
160
- data.deliveredAt = new Date();
161
- }
162
- return this.update(id, data, _ctx);
163
- }
164
- async delete(id, _ctx) {
165
- this.lineItems.delete(id);
166
- this.events = this.events.filter((e) => e.fulfillmentId !== id);
167
- return this.fulfillments.delete(id);
168
- }
169
- // ─────────────────────────────────────────────────────────────────────────────
170
- // Digital Delivery Operations
171
- // ─────────────────────────────────────────────────────────────────────────────
172
- async incrementDownloadCount(id, _ctx) {
173
- const existing = this.fulfillments.get(id);
174
- if (!existing)
175
- return undefined;
176
- const updated = {
177
- ...existing,
178
- downloadCount: existing.downloadCount + 1,
179
- updatedAt: new Date(),
180
- };
181
- this.fulfillments.set(id, updated);
182
- return updated;
183
- }
184
- async isDownloadAllowed(id, _ctx) {
185
- const fulfillment = await this.findById(id, _ctx);
186
- if (!fulfillment || fulfillment.type !== "digital")
187
- return false;
188
- // Check expiration
189
- if (fulfillment.downloadExpiresAt &&
190
- new Date() > fulfillment.downloadExpiresAt) {
191
- return false;
192
- }
193
- // Check download limit
194
- if (fulfillment.maxDownloads !== null &&
195
- fulfillment.downloadCount >= fulfillment.maxDownloads) {
196
- return false;
197
- }
198
- return true;
199
- }
200
- // ─────────────────────────────────────────────────────────────────────────────
201
- // Access Grant Operations
202
- // ─────────────────────────────────────────────────────────────────────────────
203
- async deactivateAccessGrant(id, _ctx) {
204
- return this.update(id, { isActive: false }, _ctx);
205
- }
206
- async activateAccessGrant(id, _ctx) {
207
- return this.update(id, { isActive: true, grantedAt: new Date() }, _ctx);
208
- }
209
- async isAccessGrantActive(id, _ctx) {
210
- const fulfillment = await this.findById(id, _ctx);
211
- if (!fulfillment || fulfillment.type !== "access_grant")
212
- return false;
213
- if (!fulfillment.isActive)
214
- return false;
215
- // Check expiration
216
- if (fulfillment.expiresAt && new Date() > fulfillment.expiresAt) {
217
- return false;
218
- }
219
- return true;
220
- }
221
- // ─────────────────────────────────────────────────────────────────────────────
222
- // Fulfillment Line Items
223
- // ─────────────────────────────────────────────────────────────────────────────
224
- async findLineItemsByFulfillmentId(fulfillmentId, _ctx) {
225
- return this.lineItems.get(fulfillmentId) ?? [];
226
- }
227
- async findLineItemsByOrderLineItemId(orderLineItemId, _ctx) {
228
- const result = [];
229
- for (const items of this.lineItems.values()) {
230
- for (const item of items) {
231
- if (item.orderLineItemId === orderLineItemId) {
232
- result.push(item);
233
- }
234
- }
235
- }
236
- return result;
237
- }
238
- async createLineItem(data, _ctx) {
239
- const item = {
240
- id: data.id ?? makeId(),
241
- fulfillmentId: data.fulfillmentId,
242
- orderLineItemId: data.orderLineItemId,
243
- quantity: data.quantity,
244
- };
245
- const items = this.lineItems.get(data.fulfillmentId) ?? [];
246
- items.push(item);
247
- this.lineItems.set(data.fulfillmentId, items);
248
- return item;
249
- }
250
- async createLineItems(data, _ctx) {
251
- if (data.length === 0)
252
- return [];
253
- const created = [];
254
- for (const item of data) {
255
- created.push(await this.createLineItem(item, _ctx));
256
- }
257
- return created;
258
- }
259
- async deleteLineItemsByFulfillmentId(fulfillmentId, _ctx) {
260
- this.lineItems.set(fulfillmentId, []);
261
- }
262
- // ─────────────────────────────────────────────────────────────────────────────
263
- // Fulfillment Events
264
- // ─────────────────────────────────────────────────────────────────────────────
265
- async findEventsByFulfillmentId(fulfillmentId, _ctx) {
266
- return this.events
267
- .filter((e) => e.fulfillmentId === fulfillmentId)
268
- .sort((a, b) => b.occurredAt.getTime() - a.occurredAt.getTime());
269
- }
270
- async createEvent(data, _ctx) {
271
- const event = {
272
- id: data.id ?? makeId(),
273
- fulfillmentId: data.fulfillmentId,
274
- eventType: data.eventType,
275
- fromStatus: data.fromStatus === undefined ? null : data.fromStatus,
276
- toStatus: data.toStatus === undefined ? null : data.toStatus,
277
- description: data.description === undefined ? null : data.description,
278
- actorId: data.actorId === undefined ? null : data.actorId,
279
- metadata: data.metadata ?? {},
280
- occurredAt: new Date(),
281
- };
282
- this.events.push(event);
283
- return event;
284
- }
285
- async recordStatusChange(fulfillmentId, fromStatus, toStatus, actorId, description, _ctx) {
286
- return this.createEvent({
287
- fulfillmentId,
288
- eventType: "status_change",
289
- fromStatus,
290
- toStatus,
291
- actorId,
292
- description,
293
- }, _ctx);
294
- }
295
- // ─────────────────────────────────────────────────────────────────────────────
296
- // Aggregate Operations
297
- // ─────────────────────────────────────────────────────────────────────────────
298
- async findWithLineItems(id, _ctx) {
299
- const fulfillment = await this.findById(id, _ctx);
300
- if (!fulfillment)
301
- return undefined;
302
- const lineItems = await this.findLineItemsByFulfillmentId(id, _ctx);
303
- return { fulfillment, lineItems };
304
- }
305
- async findWithEvents(id, _ctx) {
306
- const fulfillment = await this.findById(id, _ctx);
307
- if (!fulfillment)
308
- return undefined;
309
- const events = await this.findEventsByFulfillmentId(id, _ctx);
310
- return { fulfillment, events };
311
- }
312
- /**
313
- * Get fulfilled quantity for an order line item.
314
- * Sums all fulfillment line items linked to the order line item.
315
- */
316
- async getFulfilledQuantity(orderLineItemId, _ctx) {
317
- let total = 0;
318
- for (const items of this.lineItems.values()) {
319
- for (const item of items) {
320
- if (item.orderLineItemId === orderLineItemId) {
321
- total += item.quantity;
322
- }
323
- }
324
- }
325
- return total;
326
- }
327
- }