@unifiedcommerce/core 0.4.3 → 0.4.4

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 (561) hide show
  1. package/dist/interfaces/rest/index.d.ts.map +1 -1
  2. package/dist/interfaces/rest/index.js +4 -17
  3. package/dist/runtime/server.d.ts.map +1 -1
  4. package/dist/runtime/server.js +33 -0
  5. package/package.json +1 -1
  6. package/dist/adapters/console-email.d.ts +0 -23
  7. package/dist/adapters/console-email.d.ts.map +0 -1
  8. package/dist/adapters/console-email.js +0 -38
  9. package/dist/auth/access.d.ts +0 -101
  10. package/dist/auth/access.d.ts.map +0 -1
  11. package/dist/auth/access.js +0 -128
  12. package/dist/auth/auth-schema.d.ts +0 -1475
  13. package/dist/auth/auth-schema.d.ts.map +0 -1
  14. package/dist/auth/auth-schema.js +0 -124
  15. package/dist/auth/middleware.d.ts +0 -5
  16. package/dist/auth/middleware.d.ts.map +0 -1
  17. package/dist/auth/middleware.js +0 -141
  18. package/dist/auth/org.d.ts +0 -22
  19. package/dist/auth/org.d.ts.map +0 -1
  20. package/dist/auth/org.js +0 -36
  21. package/dist/auth/permissions.d.ts +0 -4
  22. package/dist/auth/permissions.d.ts.map +0 -1
  23. package/dist/auth/permissions.js +0 -24
  24. package/dist/auth/setup.d.ts +0 -29
  25. package/dist/auth/setup.d.ts.map +0 -1
  26. package/dist/auth/setup.js +0 -117
  27. package/dist/auth/system-actor.d.ts +0 -7
  28. package/dist/auth/system-actor.d.ts.map +0 -1
  29. package/dist/auth/system-actor.js +0 -17
  30. package/dist/auth/types.d.ts +0 -11
  31. package/dist/auth/types.d.ts.map +0 -1
  32. package/dist/auth/types.js +0 -1
  33. package/dist/config/defaults.d.ts +0 -3
  34. package/dist/config/defaults.d.ts.map +0 -1
  35. package/dist/config/defaults.js +0 -80
  36. package/dist/config/define-config.d.ts +0 -9
  37. package/dist/config/define-config.d.ts.map +0 -1
  38. package/dist/config/define-config.js +0 -44
  39. package/dist/config/types.d.ts +0 -327
  40. package/dist/config/types.d.ts.map +0 -1
  41. package/dist/config/types.js +0 -1
  42. package/dist/generated/plugin-manifest.d.ts +0 -48
  43. package/dist/generated/plugin-manifest.d.ts.map +0 -1
  44. package/dist/generated/plugin-manifest.js +0 -20
  45. package/dist/hooks/checkout-completion.d.ts +0 -58
  46. package/dist/hooks/checkout-completion.d.ts.map +0 -1
  47. package/dist/hooks/checkout-completion.js +0 -137
  48. package/dist/hooks/checkout.d.ts +0 -99
  49. package/dist/hooks/checkout.d.ts.map +0 -1
  50. package/dist/hooks/checkout.js +0 -317
  51. package/dist/hooks/order-emails.d.ts +0 -16
  52. package/dist/hooks/order-emails.d.ts.map +0 -1
  53. package/dist/hooks/order-emails.js +0 -44
  54. package/dist/index.d.ts +0 -77
  55. package/dist/index.d.ts.map +0 -1
  56. package/dist/index.js +0 -45
  57. package/dist/interfaces/mcp/agent-prompt.d.ts +0 -16
  58. package/dist/interfaces/mcp/agent-prompt.d.ts.map +0 -1
  59. package/dist/interfaces/mcp/agent-prompt.js +0 -172
  60. package/dist/interfaces/mcp/context-enrichment.d.ts +0 -39
  61. package/dist/interfaces/mcp/context-enrichment.d.ts.map +0 -1
  62. package/dist/interfaces/mcp/context-enrichment.js +0 -119
  63. package/dist/interfaces/mcp/server.d.ts +0 -5
  64. package/dist/interfaces/mcp/server.d.ts.map +0 -1
  65. package/dist/interfaces/mcp/server.js +0 -30
  66. package/dist/interfaces/mcp/tool-builder.d.ts +0 -120
  67. package/dist/interfaces/mcp/tool-builder.d.ts.map +0 -1
  68. package/dist/interfaces/mcp/tool-builder.js +0 -224
  69. package/dist/interfaces/mcp/tools/analytics.d.ts +0 -42
  70. package/dist/interfaces/mcp/tools/analytics.d.ts.map +0 -1
  71. package/dist/interfaces/mcp/tools/analytics.js +0 -70
  72. package/dist/interfaces/mcp/tools/cart.d.ts +0 -14
  73. package/dist/interfaces/mcp/tools/cart.d.ts.map +0 -1
  74. package/dist/interfaces/mcp/tools/cart.js +0 -47
  75. package/dist/interfaces/mcp/tools/catalog.d.ts +0 -53
  76. package/dist/interfaces/mcp/tools/catalog.d.ts.map +0 -1
  77. package/dist/interfaces/mcp/tools/catalog.js +0 -284
  78. package/dist/interfaces/mcp/tools/index.d.ts +0 -3
  79. package/dist/interfaces/mcp/tools/index.d.ts.map +0 -1
  80. package/dist/interfaces/mcp/tools/index.js +0 -20
  81. package/dist/interfaces/mcp/tools/inventory.d.ts +0 -27
  82. package/dist/interfaces/mcp/tools/inventory.d.ts.map +0 -1
  83. package/dist/interfaces/mcp/tools/inventory.js +0 -143
  84. package/dist/interfaces/mcp/tools/orders.d.ts +0 -18
  85. package/dist/interfaces/mcp/tools/orders.d.ts.map +0 -1
  86. package/dist/interfaces/mcp/tools/orders.js +0 -82
  87. package/dist/interfaces/mcp/tools/pricing.d.ts +0 -29
  88. package/dist/interfaces/mcp/tools/pricing.d.ts.map +0 -1
  89. package/dist/interfaces/mcp/tools/pricing.js +0 -90
  90. package/dist/interfaces/mcp/tools/promotions.d.ts +0 -44
  91. package/dist/interfaces/mcp/tools/promotions.d.ts.map +0 -1
  92. package/dist/interfaces/mcp/tools/promotions.js +0 -109
  93. package/dist/interfaces/mcp/tools/registry.d.ts +0 -32
  94. package/dist/interfaces/mcp/tools/registry.d.ts.map +0 -1
  95. package/dist/interfaces/mcp/tools/registry.js +0 -55
  96. package/dist/interfaces/mcp/tools/search.d.ts +0 -14
  97. package/dist/interfaces/mcp/tools/search.d.ts.map +0 -1
  98. package/dist/interfaces/mcp/tools/search.js +0 -39
  99. package/dist/interfaces/mcp/tools/webhooks.d.ts +0 -15
  100. package/dist/interfaces/mcp/tools/webhooks.d.ts.map +0 -1
  101. package/dist/interfaces/mcp/tools/webhooks.js +0 -48
  102. package/dist/interfaces/mcp/transport.d.ts +0 -20
  103. package/dist/interfaces/mcp/transport.d.ts.map +0 -1
  104. package/dist/interfaces/mcp/transport.js +0 -99
  105. package/dist/interfaces/rest/customer-portal.d.ts +0 -5
  106. package/dist/interfaces/rest/customer-portal.d.ts.map +0 -1
  107. package/dist/interfaces/rest/customer-portal.js +0 -206
  108. package/dist/interfaces/rest/router.d.ts +0 -164
  109. package/dist/interfaces/rest/router.d.ts.map +0 -1
  110. package/dist/interfaces/rest/router.js +0 -259
  111. package/dist/interfaces/rest/routes/admin-jobs.d.ts +0 -5
  112. package/dist/interfaces/rest/routes/admin-jobs.d.ts.map +0 -1
  113. package/dist/interfaces/rest/routes/admin-jobs.js +0 -48
  114. package/dist/interfaces/rest/routes/audit.d.ts +0 -5
  115. package/dist/interfaces/rest/routes/audit.d.ts.map +0 -1
  116. package/dist/interfaces/rest/routes/audit.js +0 -43
  117. package/dist/interfaces/rest/routes/carts.d.ts +0 -5
  118. package/dist/interfaces/rest/routes/carts.d.ts.map +0 -1
  119. package/dist/interfaces/rest/routes/carts.js +0 -55
  120. package/dist/interfaces/rest/routes/catalog.d.ts +0 -5
  121. package/dist/interfaces/rest/routes/catalog.d.ts.map +0 -1
  122. package/dist/interfaces/rest/routes/catalog.js +0 -256
  123. package/dist/interfaces/rest/routes/checkout.d.ts +0 -5
  124. package/dist/interfaces/rest/routes/checkout.d.ts.map +0 -1
  125. package/dist/interfaces/rest/routes/checkout.js +0 -216
  126. package/dist/interfaces/rest/routes/customers.d.ts +0 -5
  127. package/dist/interfaces/rest/routes/customers.d.ts.map +0 -1
  128. package/dist/interfaces/rest/routes/customers.js +0 -74
  129. package/dist/interfaces/rest/routes/entity-aliases.d.ts +0 -18
  130. package/dist/interfaces/rest/routes/entity-aliases.d.ts.map +0 -1
  131. package/dist/interfaces/rest/routes/entity-aliases.js +0 -39
  132. package/dist/interfaces/rest/routes/inventory.d.ts +0 -5
  133. package/dist/interfaces/rest/routes/inventory.d.ts.map +0 -1
  134. package/dist/interfaces/rest/routes/inventory.js +0 -72
  135. package/dist/interfaces/rest/routes/media.d.ts +0 -5
  136. package/dist/interfaces/rest/routes/media.d.ts.map +0 -1
  137. package/dist/interfaces/rest/routes/media.js +0 -65
  138. package/dist/interfaces/rest/routes/orders.d.ts +0 -5
  139. package/dist/interfaces/rest/routes/orders.d.ts.map +0 -1
  140. package/dist/interfaces/rest/routes/orders.js +0 -64
  141. package/dist/interfaces/rest/routes/payments.d.ts +0 -5
  142. package/dist/interfaces/rest/routes/payments.d.ts.map +0 -1
  143. package/dist/interfaces/rest/routes/payments.js +0 -45
  144. package/dist/interfaces/rest/routes/pricing.d.ts +0 -5
  145. package/dist/interfaces/rest/routes/pricing.d.ts.map +0 -1
  146. package/dist/interfaces/rest/routes/pricing.js +0 -48
  147. package/dist/interfaces/rest/routes/promotions.d.ts +0 -5
  148. package/dist/interfaces/rest/routes/promotions.d.ts.map +0 -1
  149. package/dist/interfaces/rest/routes/promotions.js +0 -76
  150. package/dist/interfaces/rest/routes/search.d.ts +0 -5
  151. package/dist/interfaces/rest/routes/search.d.ts.map +0 -1
  152. package/dist/interfaces/rest/routes/search.js +0 -60
  153. package/dist/interfaces/rest/routes/webhooks.d.ts +0 -5
  154. package/dist/interfaces/rest/routes/webhooks.d.ts.map +0 -1
  155. package/dist/interfaces/rest/routes/webhooks.js +0 -39
  156. package/dist/interfaces/rest/schemas/admin-jobs.d.ts +0 -327
  157. package/dist/interfaces/rest/schemas/admin-jobs.d.ts.map +0 -1
  158. package/dist/interfaces/rest/schemas/admin-jobs.js +0 -37
  159. package/dist/interfaces/rest/schemas/audit.d.ts +0 -59
  160. package/dist/interfaces/rest/schemas/audit.d.ts.map +0 -1
  161. package/dist/interfaces/rest/schemas/audit.js +0 -43
  162. package/dist/interfaces/rest/schemas/carts.d.ts +0 -1456
  163. package/dist/interfaces/rest/schemas/carts.d.ts.map +0 -1
  164. package/dist/interfaces/rest/schemas/carts.js +0 -109
  165. package/dist/interfaces/rest/schemas/catalog.d.ts +0 -5452
  166. package/dist/interfaces/rest/schemas/catalog.d.ts.map +0 -1
  167. package/dist/interfaces/rest/schemas/catalog.js +0 -397
  168. package/dist/interfaces/rest/schemas/checkout.d.ts +0 -160
  169. package/dist/interfaces/rest/schemas/checkout.d.ts.map +0 -1
  170. package/dist/interfaces/rest/schemas/checkout.js +0 -60
  171. package/dist/interfaces/rest/schemas/customer-portal.d.ts +0 -2203
  172. package/dist/interfaces/rest/schemas/customer-portal.d.ts.map +0 -1
  173. package/dist/interfaces/rest/schemas/customer-portal.js +0 -177
  174. package/dist/interfaces/rest/schemas/customers.d.ts +0 -422
  175. package/dist/interfaces/rest/schemas/customers.d.ts.map +0 -1
  176. package/dist/interfaces/rest/schemas/customers.js +0 -150
  177. package/dist/interfaces/rest/schemas/inventory.d.ts +0 -561
  178. package/dist/interfaces/rest/schemas/inventory.d.ts.map +0 -1
  179. package/dist/interfaces/rest/schemas/inventory.js +0 -148
  180. package/dist/interfaces/rest/schemas/media.d.ts +0 -303
  181. package/dist/interfaces/rest/schemas/media.d.ts.map +0 -1
  182. package/dist/interfaces/rest/schemas/media.js +0 -69
  183. package/dist/interfaces/rest/schemas/orders.d.ts +0 -1792
  184. package/dist/interfaces/rest/schemas/orders.d.ts.map +0 -1
  185. package/dist/interfaces/rest/schemas/orders.js +0 -93
  186. package/dist/interfaces/rest/schemas/pricing.d.ts +0 -256
  187. package/dist/interfaces/rest/schemas/pricing.d.ts.map +0 -1
  188. package/dist/interfaces/rest/schemas/pricing.js +0 -72
  189. package/dist/interfaces/rest/schemas/promotions.d.ts +0 -363
  190. package/dist/interfaces/rest/schemas/promotions.d.ts.map +0 -1
  191. package/dist/interfaces/rest/schemas/promotions.js +0 -98
  192. package/dist/interfaces/rest/schemas/responses.d.ts +0 -4086
  193. package/dist/interfaces/rest/schemas/responses.d.ts.map +0 -1
  194. package/dist/interfaces/rest/schemas/responses.js +0 -74
  195. package/dist/interfaces/rest/schemas/search.d.ts +0 -247
  196. package/dist/interfaces/rest/schemas/search.d.ts.map +0 -1
  197. package/dist/interfaces/rest/schemas/search.js +0 -55
  198. package/dist/interfaces/rest/schemas/shared.d.ts +0 -95
  199. package/dist/interfaces/rest/schemas/shared.d.ts.map +0 -1
  200. package/dist/interfaces/rest/schemas/shared.js +0 -51
  201. package/dist/interfaces/rest/schemas/webhooks.d.ts +0 -221
  202. package/dist/interfaces/rest/schemas/webhooks.d.ts.map +0 -1
  203. package/dist/interfaces/rest/schemas/webhooks.js +0 -62
  204. package/dist/interfaces/rest/utils.d.ts +0 -45
  205. package/dist/interfaces/rest/utils.d.ts.map +0 -1
  206. package/dist/interfaces/rest/utils.js +0 -71
  207. package/dist/interfaces/rest/webhook-router.d.ts +0 -41
  208. package/dist/interfaces/rest/webhook-router.d.ts.map +0 -1
  209. package/dist/interfaces/rest/webhook-router.js +0 -36
  210. package/dist/kernel/compensation/executor.d.ts +0 -21
  211. package/dist/kernel/compensation/executor.d.ts.map +0 -1
  212. package/dist/kernel/compensation/executor.js +0 -36
  213. package/dist/kernel/compensation/types.d.ts +0 -25
  214. package/dist/kernel/compensation/types.d.ts.map +0 -1
  215. package/dist/kernel/compensation/types.js +0 -1
  216. package/dist/kernel/database/adapter.d.ts +0 -18
  217. package/dist/kernel/database/adapter.d.ts.map +0 -1
  218. package/dist/kernel/database/adapter.js +0 -3
  219. package/dist/kernel/database/drizzle-db.d.ts +0 -49
  220. package/dist/kernel/database/drizzle-db.d.ts.map +0 -1
  221. package/dist/kernel/database/drizzle-db.js +0 -20
  222. package/dist/kernel/database/migrate.d.ts +0 -38
  223. package/dist/kernel/database/migrate.d.ts.map +0 -1
  224. package/dist/kernel/database/migrate.js +0 -61
  225. package/dist/kernel/database/plugin-types.d.ts +0 -32
  226. package/dist/kernel/database/plugin-types.d.ts.map +0 -1
  227. package/dist/kernel/database/plugin-types.js +0 -10
  228. package/dist/kernel/database/schema.d.ts +0 -24
  229. package/dist/kernel/database/schema.d.ts.map +0 -1
  230. package/dist/kernel/database/schema.js +0 -36
  231. package/dist/kernel/database/scoped-db.d.ts +0 -20
  232. package/dist/kernel/database/scoped-db.d.ts.map +0 -1
  233. package/dist/kernel/database/scoped-db.js +0 -62
  234. package/dist/kernel/database/tx-context.d.ts +0 -15
  235. package/dist/kernel/database/tx-context.d.ts.map +0 -1
  236. package/dist/kernel/database/tx-context.js +0 -19
  237. package/dist/kernel/error-mapper.d.ts +0 -3
  238. package/dist/kernel/error-mapper.d.ts.map +0 -1
  239. package/dist/kernel/error-mapper.js +0 -12
  240. package/dist/kernel/errors.d.ts +0 -38
  241. package/dist/kernel/errors.d.ts.map +0 -1
  242. package/dist/kernel/errors.js +0 -69
  243. package/dist/kernel/factory/repository-factory.d.ts +0 -71
  244. package/dist/kernel/factory/repository-factory.d.ts.map +0 -1
  245. package/dist/kernel/factory/repository-factory.js +0 -138
  246. package/dist/kernel/hooks/create-context.d.ts +0 -25
  247. package/dist/kernel/hooks/create-context.d.ts.map +0 -1
  248. package/dist/kernel/hooks/create-context.js +0 -22
  249. package/dist/kernel/hooks/executor.d.ts +0 -12
  250. package/dist/kernel/hooks/executor.d.ts.map +0 -1
  251. package/dist/kernel/hooks/executor.js +0 -50
  252. package/dist/kernel/hooks/registry.d.ts +0 -28
  253. package/dist/kernel/hooks/registry.d.ts.map +0 -1
  254. package/dist/kernel/hooks/registry.js +0 -58
  255. package/dist/kernel/hooks/types.d.ts +0 -37
  256. package/dist/kernel/hooks/types.d.ts.map +0 -1
  257. package/dist/kernel/hooks/types.js +0 -1
  258. package/dist/kernel/http-error.d.ts +0 -30
  259. package/dist/kernel/http-error.d.ts.map +0 -1
  260. package/dist/kernel/http-error.js +0 -35
  261. package/dist/kernel/jobs/adapter.d.ts +0 -25
  262. package/dist/kernel/jobs/adapter.d.ts.map +0 -1
  263. package/dist/kernel/jobs/adapter.js +0 -9
  264. package/dist/kernel/jobs/drizzle-adapter.d.ts +0 -15
  265. package/dist/kernel/jobs/drizzle-adapter.d.ts.map +0 -1
  266. package/dist/kernel/jobs/drizzle-adapter.js +0 -42
  267. package/dist/kernel/jobs/runner.d.ts +0 -24
  268. package/dist/kernel/jobs/runner.d.ts.map +0 -1
  269. package/dist/kernel/jobs/runner.js +0 -114
  270. package/dist/kernel/jobs/schema.d.ts +0 -280
  271. package/dist/kernel/jobs/schema.d.ts.map +0 -1
  272. package/dist/kernel/jobs/schema.js +0 -37
  273. package/dist/kernel/jobs/types.d.ts +0 -30
  274. package/dist/kernel/jobs/types.d.ts.map +0 -1
  275. package/dist/kernel/jobs/types.js +0 -1
  276. package/dist/kernel/local-api.d.ts +0 -103
  277. package/dist/kernel/local-api.d.ts.map +0 -1
  278. package/dist/kernel/local-api.js +0 -89
  279. package/dist/kernel/plugin/manifest.d.ts +0 -90
  280. package/dist/kernel/plugin/manifest.d.ts.map +0 -1
  281. package/dist/kernel/plugin/manifest.js +0 -169
  282. package/dist/kernel/query/executor.d.ts +0 -21
  283. package/dist/kernel/query/executor.d.ts.map +0 -1
  284. package/dist/kernel/query/executor.js +0 -128
  285. package/dist/kernel/query/registry.d.ts +0 -33
  286. package/dist/kernel/query/registry.d.ts.map +0 -1
  287. package/dist/kernel/query/registry.js +0 -20
  288. package/dist/kernel/result.d.ts +0 -36
  289. package/dist/kernel/result.d.ts.map +0 -1
  290. package/dist/kernel/result.js +0 -16
  291. package/dist/kernel/schema/extra-columns.d.ts +0 -23
  292. package/dist/kernel/schema/extra-columns.d.ts.map +0 -1
  293. package/dist/kernel/schema/extra-columns.js +0 -10
  294. package/dist/kernel/service-registry.d.ts +0 -109
  295. package/dist/kernel/service-registry.d.ts.map +0 -1
  296. package/dist/kernel/service-registry.js +0 -26
  297. package/dist/kernel/service-timing.d.ts +0 -25
  298. package/dist/kernel/service-timing.d.ts.map +0 -1
  299. package/dist/kernel/service-timing.js +0 -62
  300. package/dist/kernel/state-machine/machine.d.ts +0 -24
  301. package/dist/kernel/state-machine/machine.d.ts.map +0 -1
  302. package/dist/kernel/state-machine/machine.js +0 -70
  303. package/dist/modules/analytics/drizzle-adapter.d.ts +0 -13
  304. package/dist/modules/analytics/drizzle-adapter.d.ts.map +0 -1
  305. package/dist/modules/analytics/drizzle-adapter.js +0 -358
  306. package/dist/modules/analytics/hooks.d.ts +0 -13
  307. package/dist/modules/analytics/hooks.d.ts.map +0 -1
  308. package/dist/modules/analytics/hooks.js +0 -12
  309. package/dist/modules/analytics/models.d.ts +0 -14
  310. package/dist/modules/analytics/models.d.ts.map +0 -1
  311. package/dist/modules/analytics/models.js +0 -118
  312. package/dist/modules/analytics/repository/index.d.ts +0 -5
  313. package/dist/modules/analytics/repository/index.d.ts.map +0 -1
  314. package/dist/modules/analytics/repository/index.js +0 -1
  315. package/dist/modules/analytics/service.d.ts +0 -45
  316. package/dist/modules/analytics/service.d.ts.map +0 -1
  317. package/dist/modules/analytics/service.js +0 -196
  318. package/dist/modules/analytics/types.d.ts +0 -119
  319. package/dist/modules/analytics/types.d.ts.map +0 -1
  320. package/dist/modules/analytics/types.js +0 -25
  321. package/dist/modules/audit/hooks.d.ts +0 -7
  322. package/dist/modules/audit/hooks.d.ts.map +0 -1
  323. package/dist/modules/audit/hooks.js +0 -67
  324. package/dist/modules/audit/schema.d.ts +0 -178
  325. package/dist/modules/audit/schema.d.ts.map +0 -1
  326. package/dist/modules/audit/schema.js +0 -21
  327. package/dist/modules/audit/service.d.ts +0 -38
  328. package/dist/modules/audit/service.d.ts.map +0 -1
  329. package/dist/modules/audit/service.js +0 -109
  330. package/dist/modules/cart/access.d.ts +0 -11
  331. package/dist/modules/cart/access.d.ts.map +0 -1
  332. package/dist/modules/cart/access.js +0 -18
  333. package/dist/modules/cart/matcher.d.ts +0 -20
  334. package/dist/modules/cart/matcher.d.ts.map +0 -1
  335. package/dist/modules/cart/matcher.js +0 -2
  336. package/dist/modules/cart/repository/index.d.ts +0 -45
  337. package/dist/modules/cart/repository/index.d.ts.map +0 -1
  338. package/dist/modules/cart/repository/index.js +0 -158
  339. package/dist/modules/cart/schema.d.ts +0 -359
  340. package/dist/modules/cart/schema.d.ts.map +0 -1
  341. package/dist/modules/cart/schema.js +0 -40
  342. package/dist/modules/cart/schemas.d.ts +0 -29
  343. package/dist/modules/cart/schemas.d.ts.map +0 -1
  344. package/dist/modules/cart/schemas.js +0 -14
  345. package/dist/modules/cart/service.d.ts +0 -63
  346. package/dist/modules/cart/service.d.ts.map +0 -1
  347. package/dist/modules/cart/service.js +0 -339
  348. package/dist/modules/catalog/repository/index.d.ts +0 -106
  349. package/dist/modules/catalog/repository/index.d.ts.map +0 -1
  350. package/dist/modules/catalog/repository/index.js +0 -455
  351. package/dist/modules/catalog/schema.d.ts +0 -1193
  352. package/dist/modules/catalog/schema.d.ts.map +0 -1
  353. package/dist/modules/catalog/schema.js +0 -149
  354. package/dist/modules/catalog/schemas.d.ts +0 -81
  355. package/dist/modules/catalog/schemas.d.ts.map +0 -1
  356. package/dist/modules/catalog/schemas.js +0 -62
  357. package/dist/modules/catalog/service.d.ts +0 -160
  358. package/dist/modules/catalog/service.d.ts.map +0 -1
  359. package/dist/modules/catalog/service.js +0 -759
  360. package/dist/modules/customers/repository/index.d.ts +0 -47
  361. package/dist/modules/customers/repository/index.d.ts.map +0 -1
  362. package/dist/modules/customers/repository/index.js +0 -206
  363. package/dist/modules/customers/schema.d.ts +0 -560
  364. package/dist/modules/customers/schema.d.ts.map +0 -1
  365. package/dist/modules/customers/schema.js +0 -60
  366. package/dist/modules/customers/service.d.ts +0 -27
  367. package/dist/modules/customers/service.d.ts.map +0 -1
  368. package/dist/modules/customers/service.js +0 -106
  369. package/dist/modules/fulfillment/repository/index.d.ts +0 -63
  370. package/dist/modules/fulfillment/repository/index.d.ts.map +0 -1
  371. package/dist/modules/fulfillment/repository/index.js +0 -268
  372. package/dist/modules/fulfillment/schema.d.ts +0 -655
  373. package/dist/modules/fulfillment/schema.d.ts.map +0 -1
  374. package/dist/modules/fulfillment/schema.js +0 -83
  375. package/dist/modules/fulfillment/service.d.ts +0 -58
  376. package/dist/modules/fulfillment/service.d.ts.map +0 -1
  377. package/dist/modules/fulfillment/service.js +0 -338
  378. package/dist/modules/fulfillment/types.d.ts +0 -44
  379. package/dist/modules/fulfillment/types.d.ts.map +0 -1
  380. package/dist/modules/fulfillment/types.js +0 -1
  381. package/dist/modules/inventory/repository/index.d.ts +0 -81
  382. package/dist/modules/inventory/repository/index.d.ts.map +0 -1
  383. package/dist/modules/inventory/repository/index.js +0 -310
  384. package/dist/modules/inventory/schema.d.ts +0 -570
  385. package/dist/modules/inventory/schema.d.ts.map +0 -1
  386. package/dist/modules/inventory/schema.js +0 -69
  387. package/dist/modules/inventory/schemas.d.ts +0 -31
  388. package/dist/modules/inventory/schemas.d.ts.map +0 -1
  389. package/dist/modules/inventory/schemas.js +0 -28
  390. package/dist/modules/inventory/service.d.ts +0 -69
  391. package/dist/modules/inventory/service.d.ts.map +0 -1
  392. package/dist/modules/inventory/service.js +0 -283
  393. package/dist/modules/media/adapter.d.ts +0 -16
  394. package/dist/modules/media/adapter.d.ts.map +0 -1
  395. package/dist/modules/media/adapter.js +0 -1
  396. package/dist/modules/media/repository/index.d.ts +0 -35
  397. package/dist/modules/media/repository/index.d.ts.map +0 -1
  398. package/dist/modules/media/repository/index.js +0 -176
  399. package/dist/modules/media/schema.d.ts +0 -289
  400. package/dist/modules/media/schema.d.ts.map +0 -1
  401. package/dist/modules/media/schema.js +0 -35
  402. package/dist/modules/media/service.d.ts +0 -42
  403. package/dist/modules/media/service.d.ts.map +0 -1
  404. package/dist/modules/media/service.js +0 -89
  405. package/dist/modules/orders/repository/index.d.ts +0 -48
  406. package/dist/modules/orders/repository/index.d.ts.map +0 -1
  407. package/dist/modules/orders/repository/index.js +0 -199
  408. package/dist/modules/orders/schema.d.ts +0 -672
  409. package/dist/modules/orders/schema.d.ts.map +0 -1
  410. package/dist/modules/orders/schema.js +0 -63
  411. package/dist/modules/orders/service.d.ts +0 -85
  412. package/dist/modules/orders/service.d.ts.map +0 -1
  413. package/dist/modules/orders/service.js +0 -313
  414. package/dist/modules/orders/stale-order-cleanup.d.ts +0 -27
  415. package/dist/modules/orders/stale-order-cleanup.d.ts.map +0 -1
  416. package/dist/modules/orders/stale-order-cleanup.js +0 -55
  417. package/dist/modules/organization/service.d.ts +0 -53
  418. package/dist/modules/organization/service.d.ts.map +0 -1
  419. package/dist/modules/organization/service.js +0 -151
  420. package/dist/modules/payments/adapter.d.ts +0 -42
  421. package/dist/modules/payments/adapter.d.ts.map +0 -1
  422. package/dist/modules/payments/adapter.js +0 -1
  423. package/dist/modules/payments/repository/index.d.ts +0 -5
  424. package/dist/modules/payments/repository/index.d.ts.map +0 -1
  425. package/dist/modules/payments/repository/index.js +0 -1
  426. package/dist/modules/payments/service.d.ts +0 -23
  427. package/dist/modules/payments/service.d.ts.map +0 -1
  428. package/dist/modules/payments/service.js +0 -72
  429. package/dist/modules/pricing/repository/index.d.ts +0 -34
  430. package/dist/modules/pricing/repository/index.d.ts.map +0 -1
  431. package/dist/modules/pricing/repository/index.js +0 -176
  432. package/dist/modules/pricing/schema.d.ts +0 -565
  433. package/dist/modules/pricing/schema.d.ts.map +0 -1
  434. package/dist/modules/pricing/schema.js +0 -57
  435. package/dist/modules/pricing/schemas.d.ts +0 -37
  436. package/dist/modules/pricing/schemas.d.ts.map +0 -1
  437. package/dist/modules/pricing/schemas.js +0 -30
  438. package/dist/modules/pricing/service.d.ts +0 -62
  439. package/dist/modules/pricing/service.d.ts.map +0 -1
  440. package/dist/modules/pricing/service.js +0 -308
  441. package/dist/modules/promotions/repository/index.d.ts +0 -41
  442. package/dist/modules/promotions/repository/index.d.ts.map +0 -1
  443. package/dist/modules/promotions/repository/index.js +0 -204
  444. package/dist/modules/promotions/schema.d.ts +0 -427
  445. package/dist/modules/promotions/schema.d.ts.map +0 -1
  446. package/dist/modules/promotions/schema.js +0 -52
  447. package/dist/modules/promotions/schemas.d.ts +0 -33
  448. package/dist/modules/promotions/schemas.d.ts.map +0 -1
  449. package/dist/modules/promotions/schemas.js +0 -32
  450. package/dist/modules/promotions/service.d.ts +0 -80
  451. package/dist/modules/promotions/service.d.ts.map +0 -1
  452. package/dist/modules/promotions/service.js +0 -347
  453. package/dist/modules/search/adapter.d.ts +0 -51
  454. package/dist/modules/search/adapter.d.ts.map +0 -1
  455. package/dist/modules/search/adapter.js +0 -1
  456. package/dist/modules/search/hooks.d.ts +0 -8
  457. package/dist/modules/search/hooks.d.ts.map +0 -1
  458. package/dist/modules/search/hooks.js +0 -6
  459. package/dist/modules/search/repository/index.d.ts +0 -5
  460. package/dist/modules/search/repository/index.d.ts.map +0 -1
  461. package/dist/modules/search/repository/index.js +0 -1
  462. package/dist/modules/search/service.d.ts +0 -24
  463. package/dist/modules/search/service.d.ts.map +0 -1
  464. package/dist/modules/search/service.js +0 -217
  465. package/dist/modules/shipping/calculator.d.ts +0 -42
  466. package/dist/modules/shipping/calculator.d.ts.map +0 -1
  467. package/dist/modules/shipping/calculator.js +0 -91
  468. package/dist/modules/shipping/repository/index.d.ts +0 -5
  469. package/dist/modules/shipping/repository/index.d.ts.map +0 -1
  470. package/dist/modules/shipping/repository/index.js +0 -1
  471. package/dist/modules/shipping/service.d.ts +0 -28
  472. package/dist/modules/shipping/service.d.ts.map +0 -1
  473. package/dist/modules/shipping/service.js +0 -20
  474. package/dist/modules/tax/adapter.d.ts +0 -58
  475. package/dist/modules/tax/adapter.d.ts.map +0 -1
  476. package/dist/modules/tax/adapter.js +0 -1
  477. package/dist/modules/tax/repository/index.d.ts +0 -5
  478. package/dist/modules/tax/repository/index.d.ts.map +0 -1
  479. package/dist/modules/tax/repository/index.js +0 -1
  480. package/dist/modules/tax/service.d.ts +0 -19
  481. package/dist/modules/tax/service.d.ts.map +0 -1
  482. package/dist/modules/tax/service.js +0 -34
  483. package/dist/modules/webhooks/hook.d.ts +0 -13
  484. package/dist/modules/webhooks/hook.d.ts.map +0 -1
  485. package/dist/modules/webhooks/hook.js +0 -29
  486. package/dist/modules/webhooks/repository/index.d.ts +0 -40
  487. package/dist/modules/webhooks/repository/index.d.ts.map +0 -1
  488. package/dist/modules/webhooks/repository/index.js +0 -175
  489. package/dist/modules/webhooks/schema.d.ts +0 -404
  490. package/dist/modules/webhooks/schema.d.ts.map +0 -1
  491. package/dist/modules/webhooks/schema.js +0 -40
  492. package/dist/modules/webhooks/service.d.ts +0 -23
  493. package/dist/modules/webhooks/service.d.ts.map +0 -1
  494. package/dist/modules/webhooks/service.js +0 -92
  495. package/dist/modules/webhooks/signing.d.ts +0 -2
  496. package/dist/modules/webhooks/signing.d.ts.map +0 -1
  497. package/dist/modules/webhooks/signing.js +0 -5
  498. package/dist/modules/webhooks/ssrf-guard.d.ts +0 -19
  499. package/dist/modules/webhooks/ssrf-guard.d.ts.map +0 -1
  500. package/dist/modules/webhooks/ssrf-guard.js +0 -79
  501. package/dist/modules/webhooks/tasks.d.ts +0 -16
  502. package/dist/modules/webhooks/tasks.d.ts.map +0 -1
  503. package/dist/modules/webhooks/tasks.js +0 -35
  504. package/dist/modules/webhooks/worker.d.ts +0 -21
  505. package/dist/modules/webhooks/worker.d.ts.map +0 -1
  506. package/dist/modules/webhooks/worker.js +0 -113
  507. package/dist/runtime/commerce.d.ts +0 -110
  508. package/dist/runtime/commerce.d.ts.map +0 -1
  509. package/dist/runtime/commerce.js +0 -37
  510. package/dist/runtime/kernel.d.ts +0 -71
  511. package/dist/runtime/kernel.d.ts.map +0 -1
  512. package/dist/runtime/kernel.js +0 -306
  513. package/dist/runtime/logger.d.ts +0 -11
  514. package/dist/runtime/logger.d.ts.map +0 -1
  515. package/dist/runtime/logger.js +0 -32
  516. package/dist/runtime/shutdown.d.ts +0 -15
  517. package/dist/runtime/shutdown.d.ts.map +0 -1
  518. package/dist/runtime/shutdown.js +0 -34
  519. package/dist/test-utils/create-pglite-adapter.d.ts +0 -32
  520. package/dist/test-utils/create-pglite-adapter.d.ts.map +0 -1
  521. package/dist/test-utils/create-pglite-adapter.js +0 -107
  522. package/dist/test-utils/create-plugin-test-app.d.ts +0 -50
  523. package/dist/test-utils/create-plugin-test-app.d.ts.map +0 -1
  524. package/dist/test-utils/create-plugin-test-app.js +0 -74
  525. package/dist/test-utils/create-repository-test-harness.d.ts +0 -8
  526. package/dist/test-utils/create-repository-test-harness.d.ts.map +0 -1
  527. package/dist/test-utils/create-repository-test-harness.js +0 -7
  528. package/dist/test-utils/create-test-config.d.ts +0 -18
  529. package/dist/test-utils/create-test-config.d.ts.map +0 -1
  530. package/dist/test-utils/create-test-config.js +0 -172
  531. package/dist/test-utils/create-test-kernel.d.ts +0 -3
  532. package/dist/test-utils/create-test-kernel.d.ts.map +0 -1
  533. package/dist/test-utils/create-test-kernel.js +0 -5
  534. package/dist/test-utils/create-test-plugin-context.d.ts +0 -42
  535. package/dist/test-utils/create-test-plugin-context.d.ts.map +0 -1
  536. package/dist/test-utils/create-test-plugin-context.js +0 -46
  537. package/dist/test-utils/rest-api-test-utils.d.ts +0 -64
  538. package/dist/test-utils/rest-api-test-utils.d.ts.map +0 -1
  539. package/dist/test-utils/rest-api-test-utils.js +0 -207
  540. package/dist/test-utils/test-actors.d.ts +0 -15
  541. package/dist/test-utils/test-actors.d.ts.map +0 -1
  542. package/dist/test-utils/test-actors.js +0 -57
  543. package/dist/test-utils/typed-hooks.d.ts +0 -43
  544. package/dist/test-utils/typed-hooks.d.ts.map +0 -1
  545. package/dist/test-utils/typed-hooks.js +0 -35
  546. package/dist/testing.d.ts +0 -14
  547. package/dist/testing.d.ts.map +0 -1
  548. package/dist/testing.js +0 -13
  549. package/dist/tsconfig.tsbuildinfo +0 -1
  550. package/dist/types/commerce-types.d.ts +0 -34
  551. package/dist/types/commerce-types.d.ts.map +0 -1
  552. package/dist/types/commerce-types.js +0 -1
  553. package/dist/utils/id.d.ts +0 -2
  554. package/dist/utils/id.d.ts.map +0 -1
  555. package/dist/utils/id.js +0 -3
  556. package/dist/utils/logger.d.ts +0 -3
  557. package/dist/utils/logger.d.ts.map +0 -1
  558. package/dist/utils/logger.js +0 -16
  559. package/dist/utils/pagination.d.ts +0 -11
  560. package/dist/utils/pagination.d.ts.map +0 -1
  561. package/dist/utils/pagination.js +0 -15
@@ -1,83 +0,0 @@
1
- import { integer, jsonb, pgTable, text, timestamp, uuid, boolean, } from "drizzle-orm/pg-core";
2
- import { orders, orderLineItems } from "../orders/schema.js";
3
- import { customers } from "../customers/schema.js";
4
- /**
5
- * Fulfillment Records Table
6
- *
7
- * Tracks physical shipments, digital deliveries, and access grants.
8
- * Each fulfillment can be associated with one or more order line items.
9
- */
10
- export const fulfillmentRecords = pgTable("fulfillment_records", {
11
- id: uuid("id").defaultRandom().primaryKey(),
12
- orderId: uuid("order_id")
13
- .references(() => orders.id, { onDelete: "cascade" })
14
- .notNull(),
15
- customerId: uuid("customer_id").references(() => customers.id),
16
- // Fulfillment type: "physical", "digital", "access_grant"
17
- type: text("type").notNull(),
18
- // Status: "pending", "processing", "shipped", "delivered", "cancelled", "failed"
19
- status: text("status").notNull().default("pending"),
20
- // Physical shipment fields
21
- carrier: text("carrier"),
22
- trackingNumber: text("tracking_number"),
23
- trackingUrl: text("tracking_url"),
24
- estimatedDelivery: timestamp("estimated_delivery", { withTimezone: true }),
25
- shippedAt: timestamp("shipped_at", { withTimezone: true }),
26
- deliveredAt: timestamp("delivered_at", { withTimezone: true }),
27
- // Digital delivery fields
28
- downloadUrl: text("download_url"),
29
- downloadExpiresAt: timestamp("download_expires_at", { withTimezone: true }),
30
- maxDownloads: integer("max_downloads"),
31
- downloadCount: integer("download_count").notNull().default(0),
32
- // Access grant fields (e.g., course access, membership)
33
- entityType: text("entity_type"),
34
- entityId: uuid("entity_id"),
35
- grantedAt: timestamp("granted_at", { withTimezone: true }),
36
- expiresAt: timestamp("expires_at", { withTimezone: true }),
37
- isActive: boolean("is_active").notNull().default(true),
38
- // Metadata for extensibility
39
- metadata: jsonb("metadata").$type().default({}),
40
- // Timestamps
41
- createdAt: timestamp("created_at", { withTimezone: true })
42
- .defaultNow()
43
- .notNull(),
44
- updatedAt: timestamp("updated_at", { withTimezone: true })
45
- .defaultNow()
46
- .notNull(),
47
- });
48
- /**
49
- * Fulfillment Line Items Junction Table
50
- *
51
- * Links fulfillment records to order line items (many-to-many).
52
- * Allows partial fulfillments where only some items from an order are fulfilled together.
53
- */
54
- export const fulfillmentLineItems = pgTable("fulfillment_line_items", {
55
- id: uuid("id").defaultRandom().primaryKey(),
56
- fulfillmentId: uuid("fulfillment_id")
57
- .references(() => fulfillmentRecords.id, { onDelete: "cascade" })
58
- .notNull(),
59
- orderLineItemId: uuid("order_line_item_id")
60
- .references(() => orderLineItems.id, { onDelete: "cascade" })
61
- .notNull(),
62
- quantity: integer("quantity").notNull(),
63
- });
64
- /**
65
- * Fulfillment Events Table
66
- *
67
- * Audit trail of fulfillment status changes and events.
68
- */
69
- export const fulfillmentEvents = pgTable("fulfillment_events", {
70
- id: uuid("id").defaultRandom().primaryKey(),
71
- fulfillmentId: uuid("fulfillment_id")
72
- .references(() => fulfillmentRecords.id, { onDelete: "cascade" })
73
- .notNull(),
74
- eventType: text("event_type").notNull(), // "created", "shipped", "delivered", "cancelled", "download", etc.
75
- fromStatus: text("from_status"),
76
- toStatus: text("to_status"),
77
- description: text("description"),
78
- actorId: text("actor_id"), // User/system that triggered the event
79
- metadata: jsonb("metadata").$type().default({}),
80
- occurredAt: timestamp("occurred_at", { withTimezone: true })
81
- .defaultNow()
82
- .notNull(),
83
- });
@@ -1,58 +0,0 @@
1
- import type { Actor } from "../../auth/types.js";
2
- import { type Result } from "../../kernel/result.js";
3
- import type { TxContext } from "../../kernel/database/tx-context.js";
4
- import type { FulfillmentRepository } from "./repository/index.js";
5
- import type { OrdersRepository } from "../orders/repository/index.js";
6
- import type { FulfillmentRecord } from "./types.js";
7
- interface InventoryServiceLike {
8
- adjust(input: {
9
- entityId: string;
10
- variantId?: string;
11
- warehouseId?: string;
12
- adjustment: number;
13
- reason: string;
14
- referenceType?: string;
15
- referenceId?: string;
16
- }, actor?: unknown): Promise<unknown>;
17
- release(input: {
18
- entityId: string;
19
- variantId?: string;
20
- quantity: number;
21
- orderId: string;
22
- performedBy?: string;
23
- }): Promise<unknown>;
24
- }
25
- interface FulfillmentServiceDeps {
26
- repository: FulfillmentRepository;
27
- ordersRepository: OrdersRepository;
28
- inventoryService?: InventoryServiceLike;
29
- }
30
- export declare class FulfillmentService {
31
- private deps;
32
- private strategies;
33
- constructor(deps: FulfillmentServiceDeps);
34
- fulfillOrder(orderId: string, actor?: Actor | null, ctx?: TxContext): Promise<Result<void>>;
35
- getByOrderId(orderId: string, ctx?: TxContext): Promise<Result<FulfillmentRecord[]>>;
36
- updateTracking(input: {
37
- fulfillmentId: string;
38
- carrier?: string;
39
- trackingNumber?: string;
40
- trackingUrl?: string;
41
- status?: string;
42
- }, ctx?: TxContext): Promise<Result<void>>;
43
- getDownloadUrl(orderId: string, lineItemId: string, userId: string, actor?: Actor | null, ctx?: TxContext): Promise<Result<{
44
- url: string;
45
- remaining: number;
46
- expiresAt: string;
47
- }>>;
48
- getDigitalAccess(userId: string, type?: string, ctx?: TxContext): Promise<Result<Array<{
49
- entityId: string;
50
- title: string;
51
- grantedAt: string;
52
- expiresAt: string | null;
53
- isActive: boolean;
54
- orderId: string;
55
- }>>>;
56
- }
57
- export {};
58
- //# sourceMappingURL=service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/modules/fulfillment/service.ts"],"names":[],"mappings":"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"}
@@ -1,338 +0,0 @@
1
- import { createHmac } from "node:crypto";
2
- import { resolveOrgId } from "../../auth/org.js";
3
- import { CommerceNotFoundError } from "../../kernel/errors.js";
4
- import { Err, Ok } from "../../kernel/result.js";
5
- import { makeId } from "../../utils/id.js";
6
- function toFulfillmentLineItem(lineItem) {
7
- return {
8
- id: lineItem.id,
9
- title: lineItem.title,
10
- quantity: lineItem.quantity,
11
- ...(lineItem.sku != null ? { sku: lineItem.sku } : {}),
12
- };
13
- }
14
- class PhysicalFulfillmentStrategy {
15
- type = "physical";
16
- async canFulfill(_lineItem, _context) {
17
- return Ok(true);
18
- }
19
- async fulfill(lineItem, _context) {
20
- return Ok({
21
- id: makeId(),
22
- orderId: lineItem.orderId,
23
- type: this.type,
24
- status: "pending",
25
- lineItems: [toFulfillmentLineItem(lineItem)],
26
- });
27
- }
28
- async reverse(_fulfillmentId, _context) {
29
- return Ok(undefined);
30
- }
31
- }
32
- class DigitalDownloadFulfillmentStrategy {
33
- type = "digital-download";
34
- async canFulfill(_lineItem, _context) {
35
- return Ok(true);
36
- }
37
- async fulfill(lineItem, _context) {
38
- const expiresAt = new Date(Date.now() + 1000 * 60 * 60 * 24).toISOString();
39
- return Ok({
40
- id: makeId(),
41
- orderId: lineItem.orderId,
42
- type: this.type,
43
- status: "fulfilled",
44
- downloadUrl: `https://downloads.local/${lineItem.id}?token=${createHmac("sha256", "download").update(lineItem.id).digest("hex")}`,
45
- downloadExpiresAt: expiresAt,
46
- maxDownloads: 5,
47
- downloadCount: 0,
48
- lineItems: [toFulfillmentLineItem(lineItem)],
49
- entityType: "digitalDownload",
50
- entityId: lineItem.entityId,
51
- ...(lineItem.customerId !== undefined
52
- ? { customerId: lineItem.customerId }
53
- : {}),
54
- });
55
- }
56
- async reverse(_fulfillmentId, _context) {
57
- return Ok(undefined);
58
- }
59
- }
60
- class DigitalAccessFulfillmentStrategy {
61
- type = "digital-access";
62
- async canFulfill(_lineItem, _context) {
63
- return Ok(true);
64
- }
65
- async fulfill(lineItem, _context) {
66
- return Ok({
67
- id: makeId(),
68
- orderId: lineItem.orderId,
69
- type: this.type,
70
- status: "fulfilled",
71
- lineItems: [toFulfillmentLineItem(lineItem)],
72
- entityType: "course",
73
- entityId: lineItem.entityId,
74
- ...(lineItem.customerId !== undefined
75
- ? { customerId: lineItem.customerId }
76
- : {}),
77
- isActive: true,
78
- grantedAt: new Date().toISOString(),
79
- });
80
- }
81
- async reverse(_fulfillmentId, _context) {
82
- return Ok(undefined);
83
- }
84
- }
85
- class InternalTransferFulfillmentStrategy {
86
- type = "internal-transfer";
87
- async canFulfill(_lineItem, _context) {
88
- return Ok(true);
89
- }
90
- async fulfill(lineItem, _context) {
91
- return Ok({
92
- id: makeId(),
93
- orderId: lineItem.orderId,
94
- type: this.type,
95
- status: "processing",
96
- lineItems: [toFulfillmentLineItem(lineItem)],
97
- });
98
- }
99
- async reverse(_fulfillmentId, _context) {
100
- return Ok(undefined);
101
- }
102
- }
103
- class AppointmentFulfillmentStrategy {
104
- type = "appointment";
105
- async canFulfill(_lineItem, _context) {
106
- return Ok(true);
107
- }
108
- async fulfill(lineItem, _context) {
109
- return Ok({
110
- id: makeId(),
111
- orderId: lineItem.orderId,
112
- type: this.type,
113
- status: "pending",
114
- lineItems: [toFulfillmentLineItem(lineItem)],
115
- });
116
- }
117
- async reverse(_fulfillmentId, _context) {
118
- return Ok(undefined);
119
- }
120
- }
121
- export class FulfillmentService {
122
- deps;
123
- strategies = new Map();
124
- constructor(deps) {
125
- this.deps = deps;
126
- this.strategies.set("physical", new PhysicalFulfillmentStrategy());
127
- this.strategies.set("digital-download", new DigitalDownloadFulfillmentStrategy());
128
- this.strategies.set("digital-access", new DigitalAccessFulfillmentStrategy());
129
- this.strategies.set("internal-transfer", new InternalTransferFulfillmentStrategy());
130
- this.strategies.set("appointment", new AppointmentFulfillmentStrategy());
131
- }
132
- async fulfillOrder(orderId, actor, ctx) {
133
- const orgId = resolveOrgId(actor ?? ctx?.actor ?? null);
134
- const order = await this.deps.ordersRepository.findById(orgId, orderId, ctx);
135
- if (!order)
136
- return Err(new CommerceNotFoundError("Order not found."));
137
- const lineItems = await this.deps.ordersRepository.findLineItemsByOrderId(orderId, ctx);
138
- for (const lineItem of lineItems) {
139
- const strategyId = lineItem.entityType === "digitalDownload"
140
- ? "digital-download"
141
- : lineItem.entityType === "course"
142
- ? "digital-access"
143
- : lineItem.entityType === "internalAsset"
144
- ? "internal-transfer"
145
- : "physical";
146
- const strategy = this.strategies.get(strategyId);
147
- const result = await strategy.fulfill({
148
- ...lineItem,
149
- orderId,
150
- ...(order.customerId != null ? { customerId: order.customerId } : {}),
151
- }, {});
152
- if (!result.ok)
153
- return result;
154
- const record = result.value;
155
- // Persist the fulfillment record via repository
156
- const created = await this.deps.repository.create({
157
- id: record.id,
158
- orderId: record.orderId,
159
- type: record.type,
160
- status: record.status,
161
- carrier: record.carrier ?? null,
162
- trackingNumber: record.trackingNumber ?? null,
163
- trackingUrl: record.trackingUrl ?? null,
164
- downloadUrl: record.downloadUrl ?? null,
165
- downloadExpiresAt: record.downloadExpiresAt
166
- ? new Date(record.downloadExpiresAt)
167
- : null,
168
- maxDownloads: record.maxDownloads ?? null,
169
- downloadCount: record.downloadCount ?? 0,
170
- entityType: record.entityType ?? null,
171
- entityId: record.entityId ?? null,
172
- grantedAt: record.grantedAt ? new Date(record.grantedAt) : null,
173
- expiresAt: record.expiresAt ? new Date(record.expiresAt) : null,
174
- isActive: record.isActive ?? true,
175
- customerId: record.customerId ?? null,
176
- }, ctx);
177
- // Create a fulfillment line item linking this fulfillment to the order line item
178
- for (const li of record.lineItems) {
179
- await this.deps.repository.createLineItem({
180
- fulfillmentId: created.id,
181
- orderLineItemId: li.id,
182
- quantity: li.quantity,
183
- }, ctx);
184
- }
185
- }
186
- return Ok(undefined);
187
- }
188
- async getByOrderId(orderId, ctx) {
189
- const dbRecords = await this.deps.repository.findByOrderId(orderId, ctx);
190
- // Hydrate each record with its associated line items
191
- const records = [];
192
- for (const dbRecord of dbRecords) {
193
- const fulfillmentLineItems = await this.deps.repository.findLineItemsByFulfillmentId(dbRecord.id, ctx);
194
- records.push(toServiceRecord(dbRecord, fulfillmentLineItems));
195
- }
196
- return Ok(records);
197
- }
198
- async updateTracking(input, ctx) {
199
- const existing = await this.deps.repository.findById(input.fulfillmentId, ctx);
200
- if (!existing) {
201
- return Err(new CommerceNotFoundError("Fulfillment record not found."));
202
- }
203
- const updateData = {};
204
- if (input.carrier !== undefined)
205
- updateData.carrier = input.carrier;
206
- if (input.trackingNumber !== undefined)
207
- updateData.trackingNumber = input.trackingNumber;
208
- if (input.trackingUrl !== undefined)
209
- updateData.trackingUrl = input.trackingUrl;
210
- if (input.status !== undefined)
211
- updateData.status = input.status;
212
- if (input.status === "shipped")
213
- updateData.shippedAt = new Date();
214
- if (input.status === "delivered")
215
- updateData.deliveredAt = new Date();
216
- await this.deps.repository.update(input.fulfillmentId, updateData, ctx);
217
- return Ok(undefined);
218
- }
219
- async getDownloadUrl(orderId, lineItemId, userId, actor, ctx) {
220
- const dbRecords = await this.deps.repository.findByOrderId(orderId, ctx);
221
- let matchedRecord;
222
- for (const dbRecord of dbRecords) {
223
- if (dbRecord.type !== "digital-download" && dbRecord.type !== "digital")
224
- continue;
225
- const fliItems = await this.deps.repository.findLineItemsByFulfillmentId(dbRecord.id, ctx);
226
- if (fliItems.some((item) => item.orderLineItemId === lineItemId)) {
227
- matchedRecord = dbRecord;
228
- break;
229
- }
230
- }
231
- if (!matchedRecord) {
232
- return Err(new CommerceNotFoundError("Digital download not found."));
233
- }
234
- const orgId = resolveOrgId(actor ?? ctx?.actor ?? null);
235
- const order = await this.deps.ordersRepository.findById(orgId, orderId, ctx);
236
- if (!order || order.customerId !== userId) {
237
- return Err(new CommerceNotFoundError("Order not found."));
238
- }
239
- if (!matchedRecord.downloadExpiresAt || !matchedRecord.downloadUrl) {
240
- return Err(new CommerceNotFoundError("Download metadata missing."));
241
- }
242
- if (new Date(matchedRecord.downloadExpiresAt).getTime() < Date.now()) {
243
- return Err(new CommerceNotFoundError("Download link expired."));
244
- }
245
- const updated = await this.deps.repository.incrementDownloadCount(matchedRecord.id, ctx);
246
- const downloadCount = updated?.downloadCount ?? matchedRecord.downloadCount + 1;
247
- const remaining = Math.max(0, (matchedRecord.maxDownloads ?? 5) - downloadCount);
248
- return Ok({
249
- url: matchedRecord.downloadUrl,
250
- remaining,
251
- expiresAt: matchedRecord.downloadExpiresAt.toISOString(),
252
- });
253
- }
254
- async getDigitalAccess(userId, type = "course", ctx) {
255
- const output = [];
256
- // Find all fulfillments for this customer
257
- const dbRecords = await this.deps.repository.findByCustomerId(userId, ctx);
258
- for (const entry of dbRecords) {
259
- if (entry.type !== "digital-access" && entry.type !== "access_grant")
260
- continue;
261
- if (entry.entityType !== type)
262
- continue;
263
- if (!entry.entityId || !entry.grantedAt)
264
- continue;
265
- // Get the first fulfillment line item to extract the title
266
- const fliItems = await this.deps.repository.findLineItemsByFulfillmentId(entry.id, ctx);
267
- let title = "Untitled";
268
- if (fliItems.length > 0) {
269
- const orderLineItem = await this.deps.ordersRepository.findLineItemById(fliItems[0].orderLineItemId, ctx);
270
- if (orderLineItem) {
271
- title = orderLineItem.title;
272
- }
273
- }
274
- output.push({
275
- entityId: entry.entityId,
276
- title,
277
- grantedAt: entry.grantedAt.toISOString(),
278
- expiresAt: entry.expiresAt?.toISOString() ?? null,
279
- isActive: entry.isActive,
280
- orderId: entry.orderId,
281
- });
282
- }
283
- return Ok(output);
284
- }
285
- }
286
- /**
287
- * Maps a Drizzle FulfillmentRecord + its fulfillment line items back to
288
- * the service-layer FulfillmentRecord shape used by callers.
289
- */
290
- function toServiceRecord(dbRecord, fulfillmentLineItems) {
291
- return {
292
- id: dbRecord.id,
293
- orderId: dbRecord.orderId,
294
- type: dbRecord.type,
295
- status: dbRecord.status,
296
- lineItems: fulfillmentLineItems.map((fli) => ({
297
- id: fli.orderLineItemId,
298
- title: "", // Title is on the order line item; callers should join if needed
299
- quantity: fli.quantity,
300
- })),
301
- ...(dbRecord.carrier != null ? { carrier: dbRecord.carrier } : {}),
302
- ...(dbRecord.trackingNumber != null
303
- ? { trackingNumber: dbRecord.trackingNumber }
304
- : {}),
305
- ...(dbRecord.trackingUrl != null
306
- ? { trackingUrl: dbRecord.trackingUrl }
307
- : {}),
308
- ...(dbRecord.estimatedDelivery != null
309
- ? { estimatedDelivery: dbRecord.estimatedDelivery.toISOString() }
310
- : {}),
311
- ...(dbRecord.shippedAt != null
312
- ? { shippedAt: dbRecord.shippedAt.toISOString() }
313
- : {}),
314
- ...(dbRecord.deliveredAt != null
315
- ? { deliveredAt: dbRecord.deliveredAt.toISOString() }
316
- : {}),
317
- ...(dbRecord.downloadUrl != null
318
- ? { downloadUrl: dbRecord.downloadUrl }
319
- : {}),
320
- ...(dbRecord.downloadExpiresAt != null
321
- ? { downloadExpiresAt: dbRecord.downloadExpiresAt.toISOString() }
322
- : {}),
323
- ...(dbRecord.maxDownloads != null
324
- ? { maxDownloads: dbRecord.maxDownloads }
325
- : {}),
326
- downloadCount: dbRecord.downloadCount,
327
- ...(dbRecord.customerId != null ? { customerId: dbRecord.customerId } : {}),
328
- ...(dbRecord.entityType != null ? { entityType: dbRecord.entityType } : {}),
329
- ...(dbRecord.entityId != null ? { entityId: dbRecord.entityId } : {}),
330
- ...(dbRecord.grantedAt != null
331
- ? { grantedAt: dbRecord.grantedAt.toISOString() }
332
- : {}),
333
- ...(dbRecord.expiresAt != null
334
- ? { expiresAt: dbRecord.expiresAt.toISOString() }
335
- : {}),
336
- isActive: dbRecord.isActive,
337
- };
338
- }
@@ -1,44 +0,0 @@
1
- import type { Result } from "../../kernel/result.js";
2
- import type { OrderLineItem } from "../orders/repository/index.js";
3
- export interface FulfillmentRecord {
4
- id: string;
5
- orderId: string;
6
- lineItems: Array<{
7
- id: string;
8
- title: string;
9
- quantity: number;
10
- sku?: string;
11
- }>;
12
- type: string;
13
- status: string;
14
- carrier?: string;
15
- trackingNumber?: string;
16
- trackingUrl?: string;
17
- estimatedDelivery?: string;
18
- shippedAt?: string;
19
- deliveredAt?: string;
20
- downloadUrl?: string;
21
- downloadExpiresAt?: string;
22
- maxDownloads?: number;
23
- downloadCount?: number;
24
- customerId?: string;
25
- entityType?: string;
26
- entityId?: string;
27
- grantedAt?: string;
28
- expiresAt?: string;
29
- isActive?: boolean;
30
- }
31
- export interface FulfillmentStrategyContext {
32
- actorId?: string;
33
- }
34
- export type FulfillmentLineItem = Pick<OrderLineItem, "id" | "entityId" | "entityType" | "sku" | "title" | "quantity"> & {
35
- orderId: string;
36
- customerId?: string;
37
- };
38
- export interface FulfillmentStrategy {
39
- type: string;
40
- canFulfill(lineItem: FulfillmentLineItem, context: FulfillmentStrategyContext): Promise<Result<boolean>>;
41
- fulfill(lineItem: FulfillmentLineItem, context: FulfillmentStrategyContext): Promise<Result<FulfillmentRecord>>;
42
- reverse(fulfillmentId: string, context: FulfillmentStrategyContext): Promise<Result<void>>;
43
- }
44
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/modules/fulfillment/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,KAAK,CAAC;QACf,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,mBAAmB,GAAG,IAAI,CACpC,aAAa,EACb,IAAI,GAAG,UAAU,GAAG,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,UAAU,CAChE,GAAG;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CACR,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5B,OAAO,CACL,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACtC,OAAO,CACL,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;CAC1B"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,81 +0,0 @@
1
- import type { TxContext } from "../../../kernel/database/tx-context.js";
2
- import type { DrizzleDatabase } from "../../../kernel/database/drizzle-db.js";
3
- import { warehouses, inventoryLevels, inventoryMovements } from "../schema.js";
4
- export type Warehouse = typeof warehouses.$inferSelect;
5
- export type WarehouseInsert = typeof warehouses.$inferInsert;
6
- export type InventoryLevel = typeof inventoryLevels.$inferSelect;
7
- export type InventoryLevelInsert = typeof inventoryLevels.$inferInsert;
8
- export type InventoryMovement = typeof inventoryMovements.$inferSelect;
9
- export type InventoryMovementInsert = typeof inventoryMovements.$inferInsert;
10
- /**
11
- * InventoryRepository provides type-safe database operations for inventory entities.
12
- *
13
- * This repository manages warehouses, inventory levels, and inventory movements.
14
- * All methods support an optional TxContext parameter for transaction participation.
15
- */
16
- export declare class InventoryRepository {
17
- private readonly db;
18
- constructor(db: DrizzleDatabase);
19
- private getDb;
20
- findWarehouseById(id: string, ctx?: TxContext): Promise<Warehouse | undefined>;
21
- findWarehouseByCode(orgId: string, code: string, ctx?: TxContext): Promise<Warehouse | undefined>;
22
- findAllWarehouses(orgId: string, ctx?: TxContext): Promise<Warehouse[]>;
23
- findActiveWarehouses(orgId: string, ctx?: TxContext): Promise<Warehouse[]>;
24
- createWarehouse(data: WarehouseInsert, ctx?: TxContext): Promise<Warehouse>;
25
- updateWarehouse(id: string, data: Partial<Omit<WarehouseInsert, "id">>, ctx?: TxContext): Promise<Warehouse | undefined>;
26
- deleteWarehouse(id: string, ctx?: TxContext): Promise<boolean>;
27
- findAllLevels(ctx?: TxContext): Promise<InventoryLevel[]>;
28
- findLevelById(id: string, ctx?: TxContext): Promise<InventoryLevel | undefined>;
29
- findLevelByKey(entityId: string, warehouseId: string, variantId?: string | null, ctx?: TxContext): Promise<InventoryLevel | undefined>;
30
- findLevelsByEntityId(entityId: string, ctx?: TxContext): Promise<InventoryLevel[]>;
31
- findLevelsByEntityAndVariant(entityId: string, variantId?: string | null, ctx?: TxContext): Promise<InventoryLevel[]>;
32
- findLevelsByWarehouseId(warehouseId: string, ctx?: TxContext): Promise<InventoryLevel[]>;
33
- createLevel(data: InventoryLevelInsert, ctx?: TxContext): Promise<InventoryLevel>;
34
- updateLevel(id: string, data: Partial<Omit<InventoryLevelInsert, "id">>, ctx?: TxContext): Promise<InventoryLevel | undefined>;
35
- upsertLevel(entityId: string, warehouseId: string, variantId: string | undefined, data: Omit<InventoryLevelInsert, "id" | "entityId" | "warehouseId" | "variantId">, ctx?: TxContext): Promise<InventoryLevel>;
36
- deleteLevel(id: string, ctx?: TxContext): Promise<boolean>;
37
- findMovementById(id: string, ctx?: TxContext): Promise<InventoryMovement | undefined>;
38
- findMovementsByEntityId(entityId: string, ctx?: TxContext): Promise<InventoryMovement[]>;
39
- findMovementsByReference(referenceType: string, referenceId: string, ctx?: TxContext): Promise<InventoryMovement[]>;
40
- createMovement(data: InventoryMovementInsert, ctx?: TxContext): Promise<InventoryMovement>;
41
- /**
42
- * Issues SELECT ... FOR UPDATE on the inventory_levels row matching
43
- * the given entity, variant, and warehouse within the provided transaction.
44
- *
45
- * MUST be called inside an active transaction (ctx.tx must be set).
46
- * Calling outside a transaction provides no locking guarantee.
47
- *
48
- * Uses isNull() for null variantId instead of eq() to generate correct
49
- * SQL (IS NULL instead of = NULL).
50
- */
51
- findLevelForUpdate(entityId: string, variantId: string | null, warehouseId: string, ctx: TxContext): Promise<InventoryLevel | undefined>;
52
- /**
53
- * Performs a read-modify-write under a row-level lock.
54
- * This is the ONLY correct method for modifying quantityReserved
55
- * in a concurrent environment. Must be called inside a transaction.
56
- *
57
- * The lock is held for the duration of the enclosing transaction,
58
- * which is typically just the checkout reservation — microsecond-level.
59
- */
60
- reserveWithLock(entityId: string, variantId: string | null, warehouseId: string, quantity: number, ctx: TxContext): Promise<{
61
- ok: true;
62
- level: InventoryLevel;
63
- } | {
64
- ok: false;
65
- reason: string;
66
- }>;
67
- /**
68
- * Performs a release under a row-level lock, mirroring reserveWithLock.
69
- * Used by compensation chains to undo a reservation.
70
- */
71
- releaseWithLock(entityId: string, variantId: string | null, warehouseId: string, quantity: number, ctx: TxContext): Promise<{
72
- ok: true;
73
- level: InventoryLevel;
74
- } | {
75
- ok: false;
76
- reason: string;
77
- }>;
78
- getAvailableQuantity(entityId: string, variantId?: string | null, ctx?: TxContext): Promise<number>;
79
- getAvailableQuantities(entityIds: string[], ctx?: TxContext): Promise<Record<string, number>>;
80
- }
81
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/inventory/repository/index.ts"],"names":[],"mappings":"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"}