@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,358 +0,0 @@
1
- import { sql } from "drizzle-orm";
2
- import { CommerceValidationError } from "../../kernel/errors.js";
3
- import { Err, Ok } from "../../kernel/result.js";
4
- // ─── Date Range Parsing ──────────────────────────────────────────────────────
5
- function parseDateRange(range) {
6
- if (Array.isArray(range)) {
7
- const start = new Date(range[0]);
8
- const end = new Date(range[1]);
9
- if (Number.isNaN(start.getTime()) || Number.isNaN(end.getTime()))
10
- return null;
11
- return [start, end];
12
- }
13
- if (typeof range !== "string")
14
- return null;
15
- const now = new Date();
16
- const lower = range.toLowerCase();
17
- if (lower === "last month") {
18
- return [
19
- new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth() - 1, 1)),
20
- new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), 0, 23, 59, 59, 999)),
21
- ];
22
- }
23
- if (lower === "this month") {
24
- return [
25
- new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), 1)),
26
- new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth() + 1, 0, 23, 59, 59, 999)),
27
- ];
28
- }
29
- const qMatch = range.match(/^Q([1-4])\s+(\d{4})$/i);
30
- if (qMatch) {
31
- const quarter = Number(qMatch[1]);
32
- const year = Number(qMatch[2]);
33
- const monthStart = (quarter - 1) * 3;
34
- return [
35
- new Date(Date.UTC(year, monthStart, 1)),
36
- new Date(Date.UTC(year, monthStart + 3, 0, 23, 59, 59, 999)),
37
- ];
38
- }
39
- return null;
40
- }
41
- function pickCube(params) {
42
- const first = [
43
- ...(params.measures ?? []),
44
- ...(params.dimensions ?? []),
45
- ...(params.timeDimensions ?? []).map((td) => td.dimension),
46
- ...(params.filters ?? []).map((f) => f.member),
47
- ][0];
48
- if (!first)
49
- return "Orders";
50
- return first.split(".")[0] ?? "Orders";
51
- }
52
- // ─── Granularity to TO_CHAR format ───────────────────────────────────────────
53
- const GRANULARITY_FORMAT = {
54
- day: "YYYY-MM-DD",
55
- week: "IYYY-\"W\"IW",
56
- month: "YYYY-MM",
57
- year: "YYYY",
58
- };
59
- // ─── SQL Compilation Helpers ─────────────────────────────────────────────────
60
- function compileMeasure(cube, measureName) {
61
- const shortName = measureName.split(".")[1];
62
- const def = cube.measures[shortName];
63
- if (!def)
64
- return sql `0`;
65
- switch (def.type) {
66
- case "count":
67
- if (def.filter) {
68
- return sql.raw(`COUNT(CASE WHEN ${def.filter} THEN 1 END)`);
69
- }
70
- return sql `COUNT(*)`;
71
- case "sum":
72
- return sql.raw(`COALESCE(SUM(${def.sql}), 0)`);
73
- case "avg":
74
- return sql.raw(`COALESCE(ROUND(AVG(${def.sql})), 0)`);
75
- case "min":
76
- return sql.raw(`MIN(${def.sql})`);
77
- case "max":
78
- return sql.raw(`MAX(${def.sql})`);
79
- case "countDistinct":
80
- return sql.raw(`COUNT(DISTINCT ${def.sql})`);
81
- }
82
- }
83
- function compileTimeDimensionSelect(cube, td) {
84
- const shortName = td.dimension.split(".")[1];
85
- const dimDef = cube.dimensions[shortName];
86
- if (!dimDef)
87
- return sql `NULL`;
88
- const gran = td.granularity ?? "day";
89
- // Validate granularity against whitelist to prevent SQL injection
90
- if (!(gran in GRANULARITY_FORMAT)) {
91
- return sql `NULL`;
92
- }
93
- const format = GRANULARITY_FORMAT[gran];
94
- return sql.raw(`TO_CHAR(DATE_TRUNC('${gran}', ${dimDef.sql}), '${format}')`);
95
- }
96
- function compileFilter(cube, filter) {
97
- const shortName = filter.member.split(".")[1];
98
- const dimDef = cube.dimensions[shortName];
99
- if (!dimDef)
100
- return null;
101
- const col = dimDef.sql;
102
- const values = filter.values ?? [];
103
- if (values.length === 0)
104
- return null;
105
- switch (filter.operator) {
106
- case "equals":
107
- return sql `${sql.raw(col)} = ${values[0]}`;
108
- case "notEquals":
109
- return sql `${sql.raw(col)} != ${values[0]}`;
110
- case "contains":
111
- return sql `${sql.raw(col)} ILIKE ${"%" + values[0] + "%"}`;
112
- case "in":
113
- return sql `${sql.raw(col)} IN (${sql.join(values.map((v) => sql `${v}`), sql `, `)})`;
114
- case "notIn":
115
- return sql `${sql.raw(col)} NOT IN (${sql.join(values.map((v) => sql `${v}`), sql `, `)})`;
116
- case "gt":
117
- return sql `${sql.raw(col)} > ${Number(values[0])}`;
118
- case "gte":
119
- return sql `${sql.raw(col)} >= ${Number(values[0])}`;
120
- case "lt":
121
- return sql `${sql.raw(col)} < ${Number(values[0])}`;
122
- case "lte":
123
- return sql `${sql.raw(col)} <= ${Number(values[0])}`;
124
- case "beforeDate":
125
- return sql `${sql.raw(col)} <= ${values[0]}::timestamptz`;
126
- case "afterDate":
127
- return sql `${sql.raw(col)} >= ${values[0]}::timestamptz`;
128
- case "inDateRange":
129
- if (values.length >= 2) {
130
- return sql `${sql.raw(col)} BETWEEN ${values[0]}::timestamptz AND ${values[1]}::timestamptz`;
131
- }
132
- return null;
133
- }
134
- }
135
- // ─── DrizzleAnalyticsAdapter ─────────────────────────────────────────────────
136
- export class DrizzleAnalyticsAdapter {
137
- db;
138
- models = new Map();
139
- constructor(db) {
140
- this.db = db;
141
- }
142
- registerModel(model) {
143
- this.models.set(model.name, model);
144
- }
145
- async query(params, scope) {
146
- if (!params.measures || params.measures.length === 0) {
147
- return Err(new CommerceValidationError("analytics.query requires at least one measure."));
148
- }
149
- const cubeName = pickCube(params);
150
- // Validate all members are from the same cube
151
- const allMembers = [
152
- ...params.measures,
153
- ...(params.dimensions ?? []),
154
- ...(params.timeDimensions ?? []).map((td) => td.dimension),
155
- ];
156
- const wrongCube = allMembers.find((m) => m.split(".")[0] !== cubeName);
157
- if (wrongCube) {
158
- return Err(new CommerceValidationError(`analytics.query currently requires measures from a single cube. Found "${wrongCube}" in "${cubeName}" query.`));
159
- }
160
- const cube = this.models.get(cubeName);
161
- if (!cube) {
162
- const available = [...this.models.keys()].join(", ");
163
- return Err(new CommerceValidationError(`Unknown analytics cube: "${cubeName}". Available cubes: ${available}`));
164
- }
165
- // Validate that requested measures exist in the cube
166
- for (const measure of params.measures) {
167
- const shortName = measure.split(".")[1];
168
- if (shortName && !cube.measures[shortName]) {
169
- const available = Object.keys(cube.measures).map((m) => `${cubeName}.${m}`).join(", ");
170
- return Err(new CommerceValidationError(`Unknown measure: "${measure}". Available measures for ${cubeName}: ${available}`));
171
- }
172
- }
173
- // Validate that requested dimensions exist in the cube
174
- for (const dim of params.dimensions ?? []) {
175
- const shortName = dim.split(".")[1];
176
- if (shortName && !cube.dimensions[shortName]) {
177
- const available = Object.keys(cube.dimensions).map((d) => `${cubeName}.${d}`).join(", ");
178
- return Err(new CommerceValidationError(`Unknown dimension: "${dim}". Available dimensions for ${cubeName}: ${available}`));
179
- }
180
- }
181
- try {
182
- const rows = await this.executeQuery(cube, params, scope);
183
- return Ok({
184
- query: params,
185
- rows,
186
- source: cubeName,
187
- });
188
- }
189
- catch (error) {
190
- return Err(new CommerceValidationError(`Analytics query failed: ${error instanceof Error ? error.message : String(error)}`));
191
- }
192
- }
193
- async getMeta(_scope) {
194
- const models = [];
195
- for (const cube of this.models.values()) {
196
- models.push({
197
- name: cube.name,
198
- source: "builtin",
199
- measures: Object.keys(cube.measures).map((m) => `${cube.name}.${m}`),
200
- dimensions: Object.keys(cube.dimensions).map((d) => `${cube.name}.${d}`),
201
- segments: cube.segments
202
- ? Object.keys(cube.segments).map((s) => `${cube.name}.${s}`)
203
- : [],
204
- });
205
- }
206
- return Ok({
207
- models,
208
- measures: models.flatMap((m) => m.measures),
209
- dimensions: models.flatMap((m) => m.dimensions),
210
- segments: models.flatMap((m) => m.segments ?? []),
211
- });
212
- }
213
- // ─── SQL Query Builder ───────────────────────────────────────────────────
214
- async executeQuery(cube, params, scope) {
215
- const selectParts = [];
216
- const groupByParts = [];
217
- const whereParts = [];
218
- // ── Scope-based filtering (always applied) ───────────────────────
219
- //
220
- // Security model (hardened by default):
221
- // admin/staff → no filter (full access)
222
- // vendor/customer → MUST have a matching scopeRule, or blocked
223
- // public → always blocked
224
- //
225
- // Scope is REQUIRED — there is no unscoped code path.
226
- {
227
- if (scope.role === "public") {
228
- whereParts.push(sql.raw("1 = 0"));
229
- }
230
- else if (scope.role !== "admin" && scope.role !== "staff") {
231
- // Vendor or customer: look for a matching scope rule
232
- let scopeApplied = false;
233
- if (cube.scopeRules) {
234
- for (const rule of cube.scopeRules) {
235
- if (rule.role === scope.role) {
236
- // Use parameterized SQL for scope values to prevent injection.
237
- // The filter template uses :vendorId / :customerId placeholders.
238
- // We split the filter on placeholders and build a parameterized
239
- // sql`` template instead of using sql.raw() with string interpolation.
240
- let filterSql = rule.filter;
241
- if (scope.vendorId && filterSql.includes(":vendorId")) {
242
- // Replace placeholder with parameterized value
243
- const parts = filterSql.split(":vendorId");
244
- const fragments = parts.map((part, i) => i < parts.length - 1
245
- ? sql `${sql.raw(part)}${scope.vendorId}`
246
- : sql.raw(part));
247
- whereParts.push(sql.join(fragments, sql ``));
248
- scopeApplied = true;
249
- continue;
250
- }
251
- if (scope.customerId && filterSql.includes(":customerId")) {
252
- const parts = filterSql.split(":customerId");
253
- const fragments = parts.map((part, i) => i < parts.length - 1
254
- ? sql `${sql.raw(part)}${scope.customerId}`
255
- : sql.raw(part));
256
- whereParts.push(sql.join(fragments, sql ``));
257
- scopeApplied = true;
258
- continue;
259
- }
260
- // No placeholder found — use raw (trusted scope rule SQL)
261
- whereParts.push(sql.raw(filterSql));
262
- scopeApplied = true;
263
- }
264
- }
265
- }
266
- // Deny-by-default: if no scope rule matched, block access
267
- if (!scopeApplied) {
268
- whereParts.push(sql.raw("1 = 0"));
269
- }
270
- }
271
- // admin/staff: no filter applied — full access
272
- }
273
- // Dimensions → SELECT + GROUP BY
274
- for (const dim of params.dimensions ?? []) {
275
- const shortName = dim.split(".")[1];
276
- const dimDef = cube.dimensions[shortName];
277
- if (!dimDef)
278
- continue;
279
- selectParts.push(sql.raw(`${dimDef.sql} AS "${dim}"`));
280
- groupByParts.push(sql.raw(dimDef.sql));
281
- }
282
- // Time dimensions → SELECT + GROUP BY + WHERE (dateRange)
283
- for (const td of params.timeDimensions ?? []) {
284
- const selectExpr = compileTimeDimensionSelect(cube, td);
285
- selectParts.push(sql `${selectExpr} AS ${sql.raw(`"${td.dimension}"`)}`);
286
- groupByParts.push(selectExpr);
287
- // Date range filter
288
- if (td.dateRange) {
289
- const range = parseDateRange(td.dateRange);
290
- if (range) {
291
- const shortName = td.dimension.split(".")[1];
292
- const dimDef = cube.dimensions[shortName];
293
- if (dimDef) {
294
- whereParts.push(sql `${sql.raw(dimDef.sql)} >= ${range[0].toISOString()}::timestamptz AND ${sql.raw(dimDef.sql)} < ${range[1].toISOString()}::timestamptz`);
295
- }
296
- }
297
- }
298
- }
299
- // Measures → SELECT
300
- for (const measure of params.measures) {
301
- selectParts.push(sql `${compileMeasure(cube, measure)} AS ${sql.raw(`"${measure}"`)}`);
302
- }
303
- // If no select parts (shouldn't happen with validation), bail
304
- if (selectParts.length === 0) {
305
- return [];
306
- }
307
- // FROM + JOINs
308
- let fromFragment = sql.raw(cube.table);
309
- for (const join of cube.joins ?? []) {
310
- const joinType = join.type === "inner" ? "INNER JOIN" : "LEFT JOIN";
311
- fromFragment = sql `${fromFragment} ${sql.raw(joinType)} ${sql.raw(join.table)} ON ${sql.raw(join.on)}`;
312
- }
313
- // Filters → WHERE
314
- for (const filter of params.filters ?? []) {
315
- const compiled = compileFilter(cube, filter);
316
- if (compiled)
317
- whereParts.push(compiled);
318
- }
319
- // ORDER BY — validate member names against the cube's registered measures/dimensions
320
- const validMeasures = new Set(Object.keys(cube.measures).map((m) => `${cube.name}.${m}`));
321
- const validDimensions = new Set(Object.keys(cube.dimensions).map((d) => `${cube.name}.${d}`));
322
- const orderParts = [];
323
- for (const [member, dir] of Object.entries(params.order ?? {})) {
324
- if (!validMeasures.has(member) && !validDimensions.has(member)) {
325
- continue; // skip unknown members to prevent SQL injection via sql.raw()
326
- }
327
- const normalizedDir = dir.toUpperCase() === "DESC" ? "DESC" : "ASC";
328
- orderParts.push(sql.raw(`"${member}" ${normalizedDir}`));
329
- }
330
- // LIMIT
331
- const limit = Math.max(1, Math.min(params.limit ?? 100, 1000));
332
- // Assemble the full query
333
- const selectClause = sql.join(selectParts, sql `, `);
334
- const whereClause = whereParts.length > 0
335
- ? sql `WHERE ${sql.join(whereParts, sql ` AND `)}`
336
- : sql ``;
337
- const groupByClause = groupByParts.length > 0
338
- ? sql `GROUP BY ${sql.join(groupByParts, sql `, `)}`
339
- : sql ``;
340
- const orderClause = orderParts.length > 0
341
- ? sql `ORDER BY ${sql.join(orderParts, sql `, `)}`
342
- : sql ``;
343
- const fullQuery = sql `SELECT ${selectClause} FROM ${fromFragment} ${whereClause} ${groupByClause} ${orderClause} LIMIT ${limit}`;
344
- const result = await this.db.execute(fullQuery);
345
- // Map results: convert bigint to number, preserve column aliases
346
- // db.execute() returns different shapes per driver — normalize to array of rows
347
- const rawRows = Array.isArray(result)
348
- ? result
349
- : result.rows ?? [];
350
- return rawRows.map((row) => {
351
- const mapped = {};
352
- for (const [key, value] of Object.entries(row)) {
353
- mapped[key] = typeof value === "bigint" ? Number(value) : value;
354
- }
355
- return mapped;
356
- });
357
- }
358
- }
@@ -1,13 +0,0 @@
1
- export {};
2
- /**
3
- * Analytics hooks — RFC-006
4
- *
5
- * The in-memory event recording hooks (recordOrderAnalyticsEvent,
6
- * recordInventoryAnalyticsEvent) have been removed. The source tables
7
- * (orders, inventory_levels, customers) ARE the source of truth.
8
- * The DrizzleAnalyticsAdapter queries them directly via SQL.
9
- *
10
- * These empty exports preserve backwards compatibility for any code
11
- * that imports from this module.
12
- */
13
- //# sourceMappingURL=hooks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/modules/analytics/hooks.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG"}
@@ -1,12 +0,0 @@
1
- export {};
2
- /**
3
- * Analytics hooks — RFC-006
4
- *
5
- * The in-memory event recording hooks (recordOrderAnalyticsEvent,
6
- * recordInventoryAnalyticsEvent) have been removed. The source tables
7
- * (orders, inventory_levels, customers) ARE the source of truth.
8
- * The DrizzleAnalyticsAdapter queries them directly via SQL.
9
- *
10
- * These empty exports preserve backwards compatibility for any code
11
- * that imports from this module.
12
- */
@@ -1,14 +0,0 @@
1
- import type { AnalyticsModel } from "./types.js";
2
- /**
3
- * Built-in analytics model definitions for the 4 core tables.
4
- *
5
- * Each model maps semantic names (e.g., "Orders.revenue") to PostgreSQL
6
- * columns and aggregations. The DrizzleAnalyticsAdapter compiles these
7
- * into parameterized SQL queries at runtime.
8
- */
9
- export declare const ORDERS_MODEL: AnalyticsModel;
10
- export declare const ORDER_LINE_ITEMS_MODEL: AnalyticsModel;
11
- export declare const INVENTORY_MODEL: AnalyticsModel;
12
- export declare const CUSTOMERS_MODEL: AnalyticsModel;
13
- export declare const BUILTIN_ANALYTICS_MODELS: AnalyticsModel[];
14
- //# sourceMappingURL=models.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/modules/analytics/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;GAMG;AAEH,eAAO,MAAM,YAAY,EAAE,cAwB1B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cA2BpC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,cA0B7B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,cAwB7B,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,cAAc,EAKpD,CAAC"}
@@ -1,118 +0,0 @@
1
- /**
2
- * Built-in analytics model definitions for the 4 core tables.
3
- *
4
- * Each model maps semantic names (e.g., "Orders.revenue") to PostgreSQL
5
- * columns and aggregations. The DrizzleAnalyticsAdapter compiles these
6
- * into parameterized SQL queries at runtime.
7
- */
8
- export const ORDERS_MODEL = {
9
- name: "Orders",
10
- table: "orders",
11
- scopeRules: [
12
- { role: "vendor", filter: "id IN (SELECT order_id FROM marketplace_vendor_sub_orders WHERE vendor_id = :vendorId)" },
13
- { role: "customer", filter: "customer_id = :customerId" },
14
- ],
15
- measures: {
16
- count: { type: "count" },
17
- revenue: { sql: "grand_total", type: "sum" },
18
- averageOrderValue: { sql: "grand_total", type: "avg" },
19
- subtotalRevenue: { sql: "subtotal", type: "sum" },
20
- taxCollected: { sql: "tax_total", type: "sum" },
21
- shippingRevenue: { sql: "shipping_total", type: "sum" },
22
- discountsGiven: { sql: "discount_total", type: "sum" },
23
- uniqueCustomers: { sql: "customer_id", type: "countDistinct" },
24
- },
25
- dimensions: {
26
- id: { sql: "id", type: "string" },
27
- orderNumber: { sql: "order_number", type: "string" },
28
- status: { sql: "status", type: "string" },
29
- currency: { sql: "currency", type: "string" },
30
- placedAt: { sql: "placed_at", type: "time" },
31
- },
32
- };
33
- export const ORDER_LINE_ITEMS_MODEL = {
34
- name: "OrderLineItems",
35
- table: "order_line_items",
36
- scopeRules: [
37
- { role: "vendor", filter: "order_id IN (SELECT order_id FROM marketplace_vendor_sub_orders WHERE vendor_id = :vendorId)" },
38
- { role: "customer", filter: "order_id IN (SELECT id FROM orders WHERE customer_id = :customerId)" },
39
- ],
40
- joins: [
41
- {
42
- table: "orders",
43
- type: "left",
44
- on: "order_line_items.order_id = orders.id",
45
- },
46
- ],
47
- measures: {
48
- count: { type: "count" },
49
- itemsSold: { sql: "order_line_items.quantity", type: "sum" },
50
- lineItemRevenue: { sql: "order_line_items.total_price", type: "sum" },
51
- averageUnitPrice: { sql: "order_line_items.unit_price", type: "avg" },
52
- },
53
- dimensions: {
54
- id: { sql: "order_line_items.id", type: "string" },
55
- entityType: { sql: "order_line_items.entity_type", type: "string" },
56
- sku: { sql: "order_line_items.sku", type: "string" },
57
- title: { sql: "order_line_items.title", type: "string" },
58
- fulfillmentStatus: { sql: "order_line_items.fulfillment_status", type: "string" },
59
- },
60
- };
61
- export const INVENTORY_MODEL = {
62
- name: "Inventory",
63
- table: "inventory_levels",
64
- scopeRules: [
65
- { role: "vendor", filter: "entity_id IN (SELECT entity_id FROM marketplace_vendor_entities WHERE vendor_id = :vendorId)" },
66
- ],
67
- measures: {
68
- totalOnHand: { sql: "quantity_on_hand", type: "sum" },
69
- totalReserved: { sql: "quantity_reserved", type: "sum" },
70
- totalAvailable: { sql: "(quantity_on_hand - quantity_reserved)", type: "sum" },
71
- inventoryValue: { sql: "(quantity_on_hand * COALESCE(unit_cost, 0))", type: "sum" },
72
- lowStockCount: {
73
- type: "count",
74
- filter: "reorder_threshold IS NOT NULL AND (quantity_on_hand - quantity_reserved) <= reorder_threshold",
75
- },
76
- },
77
- dimensions: {
78
- entityId: { sql: "entity_id", type: "string" },
79
- warehouseId: { sql: "warehouse_id", type: "string" },
80
- lastRestockedAt: { sql: "last_restocked_at", type: "time" },
81
- },
82
- segments: {
83
- lowStock: {
84
- sql: "reorder_threshold IS NOT NULL AND (quantity_on_hand - quantity_reserved) <= reorder_threshold",
85
- },
86
- },
87
- };
88
- export const CUSTOMERS_MODEL = {
89
- name: "Customers",
90
- table: "customers",
91
- scopeRules: [
92
- { role: "vendor", filter: "id IN (SELECT DISTINCT customer_id FROM orders WHERE id IN (SELECT order_id FROM marketplace_vendor_sub_orders WHERE vendor_id = :vendorId) AND customer_id IS NOT NULL)" },
93
- { role: "customer", filter: "id = :customerId" },
94
- ],
95
- measures: {
96
- customerCount: { type: "count" },
97
- newCustomers: { type: "count" },
98
- returningCustomers: {
99
- type: "count",
100
- filter: "(SELECT COUNT(*) FROM orders WHERE orders.customer_id = customers.id) > 1",
101
- },
102
- },
103
- dimensions: {
104
- createdAt: { sql: "created_at", type: "time" },
105
- customerGroup: { sql: "COALESCE(metadata->>'customerGroup', 'default')", type: "string" },
106
- },
107
- segments: {
108
- returning: {
109
- sql: "(SELECT COUNT(*) FROM orders WHERE orders.customer_id = customers.id) > 1",
110
- },
111
- },
112
- };
113
- export const BUILTIN_ANALYTICS_MODELS = [
114
- ORDERS_MODEL,
115
- ORDER_LINE_ITEMS_MODEL,
116
- INVENTORY_MODEL,
117
- CUSTOMERS_MODEL,
118
- ];
@@ -1,5 +0,0 @@
1
- import type { TxContext } from "../../../kernel/database/tx-context.js";
2
- export interface AnalyticsRepository {
3
- ping(ctx: TxContext): Promise<void>;
4
- }
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/analytics/repository/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAExE,MAAM,WAAW,mBAAmB;IAElC,IAAI,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,45 +0,0 @@
1
- /**
2
- * AnalyticsService — thin delegation layer over AnalyticsAdapter.
3
- *
4
- * The service manages plugin model registration, custom schema loading,
5
- * and delegates all query execution to the configured adapter
6
- * (DrizzleAnalyticsAdapter — always on, built into core).
7
- */
8
- import type { CommerceConfig } from "../../config/types.js";
9
- import { type Result } from "../../kernel/result.js";
10
- import type { AnalyticsAdapter, AnalyticsMeta, AnalyticsQueryParams, AnalyticsQueryResult, AnalyticsScope } from "./types.js";
11
- export type { AnalyticsTimeDimension, AnalyticsFilter, AnalyticsQueryParams, AnalyticsModelDefinition, AnalyticsMeta, } from "./types.js";
12
- export interface AnalyticsServiceDeps {
13
- adapter: AnalyticsAdapter;
14
- config: CommerceConfig;
15
- }
16
- export declare class AnalyticsService {
17
- private deps;
18
- private pluginModels;
19
- private customSchemaModels;
20
- private customModelsLoaded;
21
- constructor(deps: AnalyticsServiceDeps);
22
- /**
23
- * Register a plugin-contributed analytics model.
24
- *
25
- * If the model includes a `table` field and structured measures/dimensions,
26
- * it is also registered as an AnalyticsModel on the adapter for SQL queries.
27
- * Otherwise, it appears in getMeta() but queries return zero-value rows.
28
- */
29
- registerModel(model: unknown): void;
30
- /**
31
- * Query analytics with scope-based filtering.
32
- * Scope is REQUIRED — use buildAnalyticsScope(actor) to construct it.
33
- */
34
- query(params: AnalyticsQueryParams, scope: AnalyticsScope): Promise<Result<AnalyticsQueryResult>>;
35
- getDashboard(name: string, scope: AnalyticsScope): Promise<Result<AnalyticsQueryResult>>;
36
- getMeta(): Promise<Result<AnalyticsMeta>>;
37
- meta(): Promise<Result<{
38
- measures: string[];
39
- dimensions: string[];
40
- segments: string[];
41
- }>>;
42
- private tryRegisterModel;
43
- private ensureCustomSchemaModelsLoaded;
44
- }
45
- //# sourceMappingURL=service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/modules/analytics/service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EAGb,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACf,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACpB,wBAAwB,EACxB,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,qBAAa,gBAAgB;IAKf,OAAO,CAAC,IAAI;IAJxB,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,kBAAkB,CAAkC;IAC5D,OAAO,CAAC,kBAAkB,CAAS;gBAEf,IAAI,EAAE,oBAAoB;IAE9C;;;;;;OAMG;IACH,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAiCnC;;;OAGG;IACG,KAAK,CAAC,MAAM,EAAE,oBAAoB,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAIjG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IA4BxF,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAsBzC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAY/F,OAAO,CAAC,gBAAgB;YA0CV,8BAA8B;CAkD7C"}