@unifiedcommerce/core 0.4.2 → 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 (563) 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/src/interfaces/rest/index.ts +4 -18
  7. package/src/runtime/server.ts +33 -0
  8. package/dist/adapters/console-email.d.ts +0 -23
  9. package/dist/adapters/console-email.d.ts.map +0 -1
  10. package/dist/adapters/console-email.js +0 -38
  11. package/dist/auth/access.d.ts +0 -101
  12. package/dist/auth/access.d.ts.map +0 -1
  13. package/dist/auth/access.js +0 -128
  14. package/dist/auth/auth-schema.d.ts +0 -1475
  15. package/dist/auth/auth-schema.d.ts.map +0 -1
  16. package/dist/auth/auth-schema.js +0 -124
  17. package/dist/auth/middleware.d.ts +0 -5
  18. package/dist/auth/middleware.d.ts.map +0 -1
  19. package/dist/auth/middleware.js +0 -141
  20. package/dist/auth/org.d.ts +0 -22
  21. package/dist/auth/org.d.ts.map +0 -1
  22. package/dist/auth/org.js +0 -36
  23. package/dist/auth/permissions.d.ts +0 -4
  24. package/dist/auth/permissions.d.ts.map +0 -1
  25. package/dist/auth/permissions.js +0 -24
  26. package/dist/auth/setup.d.ts +0 -29
  27. package/dist/auth/setup.d.ts.map +0 -1
  28. package/dist/auth/setup.js +0 -117
  29. package/dist/auth/system-actor.d.ts +0 -7
  30. package/dist/auth/system-actor.d.ts.map +0 -1
  31. package/dist/auth/system-actor.js +0 -17
  32. package/dist/auth/types.d.ts +0 -11
  33. package/dist/auth/types.d.ts.map +0 -1
  34. package/dist/auth/types.js +0 -1
  35. package/dist/config/defaults.d.ts +0 -3
  36. package/dist/config/defaults.d.ts.map +0 -1
  37. package/dist/config/defaults.js +0 -80
  38. package/dist/config/define-config.d.ts +0 -9
  39. package/dist/config/define-config.d.ts.map +0 -1
  40. package/dist/config/define-config.js +0 -44
  41. package/dist/config/types.d.ts +0 -327
  42. package/dist/config/types.d.ts.map +0 -1
  43. package/dist/config/types.js +0 -1
  44. package/dist/generated/plugin-manifest.d.ts +0 -48
  45. package/dist/generated/plugin-manifest.d.ts.map +0 -1
  46. package/dist/generated/plugin-manifest.js +0 -20
  47. package/dist/hooks/checkout-completion.d.ts +0 -58
  48. package/dist/hooks/checkout-completion.d.ts.map +0 -1
  49. package/dist/hooks/checkout-completion.js +0 -137
  50. package/dist/hooks/checkout.d.ts +0 -99
  51. package/dist/hooks/checkout.d.ts.map +0 -1
  52. package/dist/hooks/checkout.js +0 -317
  53. package/dist/hooks/order-emails.d.ts +0 -16
  54. package/dist/hooks/order-emails.d.ts.map +0 -1
  55. package/dist/hooks/order-emails.js +0 -44
  56. package/dist/index.d.ts +0 -77
  57. package/dist/index.d.ts.map +0 -1
  58. package/dist/index.js +0 -45
  59. package/dist/interfaces/mcp/agent-prompt.d.ts +0 -16
  60. package/dist/interfaces/mcp/agent-prompt.d.ts.map +0 -1
  61. package/dist/interfaces/mcp/agent-prompt.js +0 -172
  62. package/dist/interfaces/mcp/context-enrichment.d.ts +0 -39
  63. package/dist/interfaces/mcp/context-enrichment.d.ts.map +0 -1
  64. package/dist/interfaces/mcp/context-enrichment.js +0 -119
  65. package/dist/interfaces/mcp/server.d.ts +0 -5
  66. package/dist/interfaces/mcp/server.d.ts.map +0 -1
  67. package/dist/interfaces/mcp/server.js +0 -30
  68. package/dist/interfaces/mcp/tool-builder.d.ts +0 -120
  69. package/dist/interfaces/mcp/tool-builder.d.ts.map +0 -1
  70. package/dist/interfaces/mcp/tool-builder.js +0 -224
  71. package/dist/interfaces/mcp/tools/analytics.d.ts +0 -42
  72. package/dist/interfaces/mcp/tools/analytics.d.ts.map +0 -1
  73. package/dist/interfaces/mcp/tools/analytics.js +0 -70
  74. package/dist/interfaces/mcp/tools/cart.d.ts +0 -14
  75. package/dist/interfaces/mcp/tools/cart.d.ts.map +0 -1
  76. package/dist/interfaces/mcp/tools/cart.js +0 -47
  77. package/dist/interfaces/mcp/tools/catalog.d.ts +0 -53
  78. package/dist/interfaces/mcp/tools/catalog.d.ts.map +0 -1
  79. package/dist/interfaces/mcp/tools/catalog.js +0 -284
  80. package/dist/interfaces/mcp/tools/index.d.ts +0 -3
  81. package/dist/interfaces/mcp/tools/index.d.ts.map +0 -1
  82. package/dist/interfaces/mcp/tools/index.js +0 -20
  83. package/dist/interfaces/mcp/tools/inventory.d.ts +0 -27
  84. package/dist/interfaces/mcp/tools/inventory.d.ts.map +0 -1
  85. package/dist/interfaces/mcp/tools/inventory.js +0 -143
  86. package/dist/interfaces/mcp/tools/orders.d.ts +0 -18
  87. package/dist/interfaces/mcp/tools/orders.d.ts.map +0 -1
  88. package/dist/interfaces/mcp/tools/orders.js +0 -82
  89. package/dist/interfaces/mcp/tools/pricing.d.ts +0 -29
  90. package/dist/interfaces/mcp/tools/pricing.d.ts.map +0 -1
  91. package/dist/interfaces/mcp/tools/pricing.js +0 -90
  92. package/dist/interfaces/mcp/tools/promotions.d.ts +0 -44
  93. package/dist/interfaces/mcp/tools/promotions.d.ts.map +0 -1
  94. package/dist/interfaces/mcp/tools/promotions.js +0 -109
  95. package/dist/interfaces/mcp/tools/registry.d.ts +0 -32
  96. package/dist/interfaces/mcp/tools/registry.d.ts.map +0 -1
  97. package/dist/interfaces/mcp/tools/registry.js +0 -55
  98. package/dist/interfaces/mcp/tools/search.d.ts +0 -14
  99. package/dist/interfaces/mcp/tools/search.d.ts.map +0 -1
  100. package/dist/interfaces/mcp/tools/search.js +0 -39
  101. package/dist/interfaces/mcp/tools/webhooks.d.ts +0 -15
  102. package/dist/interfaces/mcp/tools/webhooks.d.ts.map +0 -1
  103. package/dist/interfaces/mcp/tools/webhooks.js +0 -48
  104. package/dist/interfaces/mcp/transport.d.ts +0 -20
  105. package/dist/interfaces/mcp/transport.d.ts.map +0 -1
  106. package/dist/interfaces/mcp/transport.js +0 -99
  107. package/dist/interfaces/rest/customer-portal.d.ts +0 -5
  108. package/dist/interfaces/rest/customer-portal.d.ts.map +0 -1
  109. package/dist/interfaces/rest/customer-portal.js +0 -206
  110. package/dist/interfaces/rest/router.d.ts +0 -164
  111. package/dist/interfaces/rest/router.d.ts.map +0 -1
  112. package/dist/interfaces/rest/router.js +0 -259
  113. package/dist/interfaces/rest/routes/admin-jobs.d.ts +0 -5
  114. package/dist/interfaces/rest/routes/admin-jobs.d.ts.map +0 -1
  115. package/dist/interfaces/rest/routes/admin-jobs.js +0 -48
  116. package/dist/interfaces/rest/routes/audit.d.ts +0 -5
  117. package/dist/interfaces/rest/routes/audit.d.ts.map +0 -1
  118. package/dist/interfaces/rest/routes/audit.js +0 -43
  119. package/dist/interfaces/rest/routes/carts.d.ts +0 -5
  120. package/dist/interfaces/rest/routes/carts.d.ts.map +0 -1
  121. package/dist/interfaces/rest/routes/carts.js +0 -55
  122. package/dist/interfaces/rest/routes/catalog.d.ts +0 -5
  123. package/dist/interfaces/rest/routes/catalog.d.ts.map +0 -1
  124. package/dist/interfaces/rest/routes/catalog.js +0 -256
  125. package/dist/interfaces/rest/routes/checkout.d.ts +0 -5
  126. package/dist/interfaces/rest/routes/checkout.d.ts.map +0 -1
  127. package/dist/interfaces/rest/routes/checkout.js +0 -216
  128. package/dist/interfaces/rest/routes/customers.d.ts +0 -5
  129. package/dist/interfaces/rest/routes/customers.d.ts.map +0 -1
  130. package/dist/interfaces/rest/routes/customers.js +0 -74
  131. package/dist/interfaces/rest/routes/entity-aliases.d.ts +0 -18
  132. package/dist/interfaces/rest/routes/entity-aliases.d.ts.map +0 -1
  133. package/dist/interfaces/rest/routes/entity-aliases.js +0 -39
  134. package/dist/interfaces/rest/routes/inventory.d.ts +0 -5
  135. package/dist/interfaces/rest/routes/inventory.d.ts.map +0 -1
  136. package/dist/interfaces/rest/routes/inventory.js +0 -72
  137. package/dist/interfaces/rest/routes/media.d.ts +0 -5
  138. package/dist/interfaces/rest/routes/media.d.ts.map +0 -1
  139. package/dist/interfaces/rest/routes/media.js +0 -65
  140. package/dist/interfaces/rest/routes/orders.d.ts +0 -5
  141. package/dist/interfaces/rest/routes/orders.d.ts.map +0 -1
  142. package/dist/interfaces/rest/routes/orders.js +0 -64
  143. package/dist/interfaces/rest/routes/payments.d.ts +0 -5
  144. package/dist/interfaces/rest/routes/payments.d.ts.map +0 -1
  145. package/dist/interfaces/rest/routes/payments.js +0 -45
  146. package/dist/interfaces/rest/routes/pricing.d.ts +0 -5
  147. package/dist/interfaces/rest/routes/pricing.d.ts.map +0 -1
  148. package/dist/interfaces/rest/routes/pricing.js +0 -48
  149. package/dist/interfaces/rest/routes/promotions.d.ts +0 -5
  150. package/dist/interfaces/rest/routes/promotions.d.ts.map +0 -1
  151. package/dist/interfaces/rest/routes/promotions.js +0 -76
  152. package/dist/interfaces/rest/routes/search.d.ts +0 -5
  153. package/dist/interfaces/rest/routes/search.d.ts.map +0 -1
  154. package/dist/interfaces/rest/routes/search.js +0 -60
  155. package/dist/interfaces/rest/routes/webhooks.d.ts +0 -5
  156. package/dist/interfaces/rest/routes/webhooks.d.ts.map +0 -1
  157. package/dist/interfaces/rest/routes/webhooks.js +0 -39
  158. package/dist/interfaces/rest/schemas/admin-jobs.d.ts +0 -327
  159. package/dist/interfaces/rest/schemas/admin-jobs.d.ts.map +0 -1
  160. package/dist/interfaces/rest/schemas/admin-jobs.js +0 -37
  161. package/dist/interfaces/rest/schemas/audit.d.ts +0 -59
  162. package/dist/interfaces/rest/schemas/audit.d.ts.map +0 -1
  163. package/dist/interfaces/rest/schemas/audit.js +0 -43
  164. package/dist/interfaces/rest/schemas/carts.d.ts +0 -1456
  165. package/dist/interfaces/rest/schemas/carts.d.ts.map +0 -1
  166. package/dist/interfaces/rest/schemas/carts.js +0 -109
  167. package/dist/interfaces/rest/schemas/catalog.d.ts +0 -5452
  168. package/dist/interfaces/rest/schemas/catalog.d.ts.map +0 -1
  169. package/dist/interfaces/rest/schemas/catalog.js +0 -397
  170. package/dist/interfaces/rest/schemas/checkout.d.ts +0 -160
  171. package/dist/interfaces/rest/schemas/checkout.d.ts.map +0 -1
  172. package/dist/interfaces/rest/schemas/checkout.js +0 -60
  173. package/dist/interfaces/rest/schemas/customer-portal.d.ts +0 -2203
  174. package/dist/interfaces/rest/schemas/customer-portal.d.ts.map +0 -1
  175. package/dist/interfaces/rest/schemas/customer-portal.js +0 -177
  176. package/dist/interfaces/rest/schemas/customers.d.ts +0 -422
  177. package/dist/interfaces/rest/schemas/customers.d.ts.map +0 -1
  178. package/dist/interfaces/rest/schemas/customers.js +0 -150
  179. package/dist/interfaces/rest/schemas/inventory.d.ts +0 -561
  180. package/dist/interfaces/rest/schemas/inventory.d.ts.map +0 -1
  181. package/dist/interfaces/rest/schemas/inventory.js +0 -148
  182. package/dist/interfaces/rest/schemas/media.d.ts +0 -303
  183. package/dist/interfaces/rest/schemas/media.d.ts.map +0 -1
  184. package/dist/interfaces/rest/schemas/media.js +0 -69
  185. package/dist/interfaces/rest/schemas/orders.d.ts +0 -1792
  186. package/dist/interfaces/rest/schemas/orders.d.ts.map +0 -1
  187. package/dist/interfaces/rest/schemas/orders.js +0 -93
  188. package/dist/interfaces/rest/schemas/pricing.d.ts +0 -256
  189. package/dist/interfaces/rest/schemas/pricing.d.ts.map +0 -1
  190. package/dist/interfaces/rest/schemas/pricing.js +0 -72
  191. package/dist/interfaces/rest/schemas/promotions.d.ts +0 -363
  192. package/dist/interfaces/rest/schemas/promotions.d.ts.map +0 -1
  193. package/dist/interfaces/rest/schemas/promotions.js +0 -98
  194. package/dist/interfaces/rest/schemas/responses.d.ts +0 -4086
  195. package/dist/interfaces/rest/schemas/responses.d.ts.map +0 -1
  196. package/dist/interfaces/rest/schemas/responses.js +0 -74
  197. package/dist/interfaces/rest/schemas/search.d.ts +0 -247
  198. package/dist/interfaces/rest/schemas/search.d.ts.map +0 -1
  199. package/dist/interfaces/rest/schemas/search.js +0 -55
  200. package/dist/interfaces/rest/schemas/shared.d.ts +0 -95
  201. package/dist/interfaces/rest/schemas/shared.d.ts.map +0 -1
  202. package/dist/interfaces/rest/schemas/shared.js +0 -51
  203. package/dist/interfaces/rest/schemas/webhooks.d.ts +0 -221
  204. package/dist/interfaces/rest/schemas/webhooks.d.ts.map +0 -1
  205. package/dist/interfaces/rest/schemas/webhooks.js +0 -62
  206. package/dist/interfaces/rest/utils.d.ts +0 -45
  207. package/dist/interfaces/rest/utils.d.ts.map +0 -1
  208. package/dist/interfaces/rest/utils.js +0 -71
  209. package/dist/interfaces/rest/webhook-router.d.ts +0 -41
  210. package/dist/interfaces/rest/webhook-router.d.ts.map +0 -1
  211. package/dist/interfaces/rest/webhook-router.js +0 -36
  212. package/dist/kernel/compensation/executor.d.ts +0 -21
  213. package/dist/kernel/compensation/executor.d.ts.map +0 -1
  214. package/dist/kernel/compensation/executor.js +0 -36
  215. package/dist/kernel/compensation/types.d.ts +0 -25
  216. package/dist/kernel/compensation/types.d.ts.map +0 -1
  217. package/dist/kernel/compensation/types.js +0 -1
  218. package/dist/kernel/database/adapter.d.ts +0 -18
  219. package/dist/kernel/database/adapter.d.ts.map +0 -1
  220. package/dist/kernel/database/adapter.js +0 -3
  221. package/dist/kernel/database/drizzle-db.d.ts +0 -49
  222. package/dist/kernel/database/drizzle-db.d.ts.map +0 -1
  223. package/dist/kernel/database/drizzle-db.js +0 -20
  224. package/dist/kernel/database/migrate.d.ts +0 -38
  225. package/dist/kernel/database/migrate.d.ts.map +0 -1
  226. package/dist/kernel/database/migrate.js +0 -61
  227. package/dist/kernel/database/plugin-types.d.ts +0 -32
  228. package/dist/kernel/database/plugin-types.d.ts.map +0 -1
  229. package/dist/kernel/database/plugin-types.js +0 -10
  230. package/dist/kernel/database/schema.d.ts +0 -24
  231. package/dist/kernel/database/schema.d.ts.map +0 -1
  232. package/dist/kernel/database/schema.js +0 -36
  233. package/dist/kernel/database/scoped-db.d.ts +0 -20
  234. package/dist/kernel/database/scoped-db.d.ts.map +0 -1
  235. package/dist/kernel/database/scoped-db.js +0 -62
  236. package/dist/kernel/database/tx-context.d.ts +0 -15
  237. package/dist/kernel/database/tx-context.d.ts.map +0 -1
  238. package/dist/kernel/database/tx-context.js +0 -19
  239. package/dist/kernel/error-mapper.d.ts +0 -3
  240. package/dist/kernel/error-mapper.d.ts.map +0 -1
  241. package/dist/kernel/error-mapper.js +0 -12
  242. package/dist/kernel/errors.d.ts +0 -38
  243. package/dist/kernel/errors.d.ts.map +0 -1
  244. package/dist/kernel/errors.js +0 -69
  245. package/dist/kernel/factory/repository-factory.d.ts +0 -71
  246. package/dist/kernel/factory/repository-factory.d.ts.map +0 -1
  247. package/dist/kernel/factory/repository-factory.js +0 -138
  248. package/dist/kernel/hooks/create-context.d.ts +0 -25
  249. package/dist/kernel/hooks/create-context.d.ts.map +0 -1
  250. package/dist/kernel/hooks/create-context.js +0 -22
  251. package/dist/kernel/hooks/executor.d.ts +0 -12
  252. package/dist/kernel/hooks/executor.d.ts.map +0 -1
  253. package/dist/kernel/hooks/executor.js +0 -50
  254. package/dist/kernel/hooks/registry.d.ts +0 -28
  255. package/dist/kernel/hooks/registry.d.ts.map +0 -1
  256. package/dist/kernel/hooks/registry.js +0 -58
  257. package/dist/kernel/hooks/types.d.ts +0 -37
  258. package/dist/kernel/hooks/types.d.ts.map +0 -1
  259. package/dist/kernel/hooks/types.js +0 -1
  260. package/dist/kernel/http-error.d.ts +0 -30
  261. package/dist/kernel/http-error.d.ts.map +0 -1
  262. package/dist/kernel/http-error.js +0 -35
  263. package/dist/kernel/jobs/adapter.d.ts +0 -25
  264. package/dist/kernel/jobs/adapter.d.ts.map +0 -1
  265. package/dist/kernel/jobs/adapter.js +0 -9
  266. package/dist/kernel/jobs/drizzle-adapter.d.ts +0 -15
  267. package/dist/kernel/jobs/drizzle-adapter.d.ts.map +0 -1
  268. package/dist/kernel/jobs/drizzle-adapter.js +0 -42
  269. package/dist/kernel/jobs/runner.d.ts +0 -24
  270. package/dist/kernel/jobs/runner.d.ts.map +0 -1
  271. package/dist/kernel/jobs/runner.js +0 -114
  272. package/dist/kernel/jobs/schema.d.ts +0 -280
  273. package/dist/kernel/jobs/schema.d.ts.map +0 -1
  274. package/dist/kernel/jobs/schema.js +0 -37
  275. package/dist/kernel/jobs/types.d.ts +0 -30
  276. package/dist/kernel/jobs/types.d.ts.map +0 -1
  277. package/dist/kernel/jobs/types.js +0 -1
  278. package/dist/kernel/local-api.d.ts +0 -103
  279. package/dist/kernel/local-api.d.ts.map +0 -1
  280. package/dist/kernel/local-api.js +0 -89
  281. package/dist/kernel/plugin/manifest.d.ts +0 -90
  282. package/dist/kernel/plugin/manifest.d.ts.map +0 -1
  283. package/dist/kernel/plugin/manifest.js +0 -169
  284. package/dist/kernel/query/executor.d.ts +0 -21
  285. package/dist/kernel/query/executor.d.ts.map +0 -1
  286. package/dist/kernel/query/executor.js +0 -128
  287. package/dist/kernel/query/registry.d.ts +0 -33
  288. package/dist/kernel/query/registry.d.ts.map +0 -1
  289. package/dist/kernel/query/registry.js +0 -20
  290. package/dist/kernel/result.d.ts +0 -36
  291. package/dist/kernel/result.d.ts.map +0 -1
  292. package/dist/kernel/result.js +0 -16
  293. package/dist/kernel/schema/extra-columns.d.ts +0 -23
  294. package/dist/kernel/schema/extra-columns.d.ts.map +0 -1
  295. package/dist/kernel/schema/extra-columns.js +0 -10
  296. package/dist/kernel/service-registry.d.ts +0 -109
  297. package/dist/kernel/service-registry.d.ts.map +0 -1
  298. package/dist/kernel/service-registry.js +0 -26
  299. package/dist/kernel/service-timing.d.ts +0 -25
  300. package/dist/kernel/service-timing.d.ts.map +0 -1
  301. package/dist/kernel/service-timing.js +0 -62
  302. package/dist/kernel/state-machine/machine.d.ts +0 -24
  303. package/dist/kernel/state-machine/machine.d.ts.map +0 -1
  304. package/dist/kernel/state-machine/machine.js +0 -70
  305. package/dist/modules/analytics/drizzle-adapter.d.ts +0 -13
  306. package/dist/modules/analytics/drizzle-adapter.d.ts.map +0 -1
  307. package/dist/modules/analytics/drizzle-adapter.js +0 -358
  308. package/dist/modules/analytics/hooks.d.ts +0 -13
  309. package/dist/modules/analytics/hooks.d.ts.map +0 -1
  310. package/dist/modules/analytics/hooks.js +0 -12
  311. package/dist/modules/analytics/models.d.ts +0 -14
  312. package/dist/modules/analytics/models.d.ts.map +0 -1
  313. package/dist/modules/analytics/models.js +0 -118
  314. package/dist/modules/analytics/repository/index.d.ts +0 -5
  315. package/dist/modules/analytics/repository/index.d.ts.map +0 -1
  316. package/dist/modules/analytics/repository/index.js +0 -1
  317. package/dist/modules/analytics/service.d.ts +0 -45
  318. package/dist/modules/analytics/service.d.ts.map +0 -1
  319. package/dist/modules/analytics/service.js +0 -196
  320. package/dist/modules/analytics/types.d.ts +0 -119
  321. package/dist/modules/analytics/types.d.ts.map +0 -1
  322. package/dist/modules/analytics/types.js +0 -25
  323. package/dist/modules/audit/hooks.d.ts +0 -7
  324. package/dist/modules/audit/hooks.d.ts.map +0 -1
  325. package/dist/modules/audit/hooks.js +0 -67
  326. package/dist/modules/audit/schema.d.ts +0 -178
  327. package/dist/modules/audit/schema.d.ts.map +0 -1
  328. package/dist/modules/audit/schema.js +0 -21
  329. package/dist/modules/audit/service.d.ts +0 -38
  330. package/dist/modules/audit/service.d.ts.map +0 -1
  331. package/dist/modules/audit/service.js +0 -109
  332. package/dist/modules/cart/access.d.ts +0 -11
  333. package/dist/modules/cart/access.d.ts.map +0 -1
  334. package/dist/modules/cart/access.js +0 -18
  335. package/dist/modules/cart/matcher.d.ts +0 -20
  336. package/dist/modules/cart/matcher.d.ts.map +0 -1
  337. package/dist/modules/cart/matcher.js +0 -2
  338. package/dist/modules/cart/repository/index.d.ts +0 -45
  339. package/dist/modules/cart/repository/index.d.ts.map +0 -1
  340. package/dist/modules/cart/repository/index.js +0 -158
  341. package/dist/modules/cart/schema.d.ts +0 -359
  342. package/dist/modules/cart/schema.d.ts.map +0 -1
  343. package/dist/modules/cart/schema.js +0 -40
  344. package/dist/modules/cart/schemas.d.ts +0 -29
  345. package/dist/modules/cart/schemas.d.ts.map +0 -1
  346. package/dist/modules/cart/schemas.js +0 -14
  347. package/dist/modules/cart/service.d.ts +0 -63
  348. package/dist/modules/cart/service.d.ts.map +0 -1
  349. package/dist/modules/cart/service.js +0 -339
  350. package/dist/modules/catalog/repository/index.d.ts +0 -106
  351. package/dist/modules/catalog/repository/index.d.ts.map +0 -1
  352. package/dist/modules/catalog/repository/index.js +0 -455
  353. package/dist/modules/catalog/schema.d.ts +0 -1193
  354. package/dist/modules/catalog/schema.d.ts.map +0 -1
  355. package/dist/modules/catalog/schema.js +0 -149
  356. package/dist/modules/catalog/schemas.d.ts +0 -81
  357. package/dist/modules/catalog/schemas.d.ts.map +0 -1
  358. package/dist/modules/catalog/schemas.js +0 -62
  359. package/dist/modules/catalog/service.d.ts +0 -160
  360. package/dist/modules/catalog/service.d.ts.map +0 -1
  361. package/dist/modules/catalog/service.js +0 -759
  362. package/dist/modules/customers/repository/index.d.ts +0 -47
  363. package/dist/modules/customers/repository/index.d.ts.map +0 -1
  364. package/dist/modules/customers/repository/index.js +0 -206
  365. package/dist/modules/customers/schema.d.ts +0 -560
  366. package/dist/modules/customers/schema.d.ts.map +0 -1
  367. package/dist/modules/customers/schema.js +0 -60
  368. package/dist/modules/customers/service.d.ts +0 -27
  369. package/dist/modules/customers/service.d.ts.map +0 -1
  370. package/dist/modules/customers/service.js +0 -106
  371. package/dist/modules/fulfillment/repository/index.d.ts +0 -63
  372. package/dist/modules/fulfillment/repository/index.d.ts.map +0 -1
  373. package/dist/modules/fulfillment/repository/index.js +0 -268
  374. package/dist/modules/fulfillment/schema.d.ts +0 -655
  375. package/dist/modules/fulfillment/schema.d.ts.map +0 -1
  376. package/dist/modules/fulfillment/schema.js +0 -83
  377. package/dist/modules/fulfillment/service.d.ts +0 -58
  378. package/dist/modules/fulfillment/service.d.ts.map +0 -1
  379. package/dist/modules/fulfillment/service.js +0 -338
  380. package/dist/modules/fulfillment/types.d.ts +0 -44
  381. package/dist/modules/fulfillment/types.d.ts.map +0 -1
  382. package/dist/modules/fulfillment/types.js +0 -1
  383. package/dist/modules/inventory/repository/index.d.ts +0 -81
  384. package/dist/modules/inventory/repository/index.d.ts.map +0 -1
  385. package/dist/modules/inventory/repository/index.js +0 -310
  386. package/dist/modules/inventory/schema.d.ts +0 -570
  387. package/dist/modules/inventory/schema.d.ts.map +0 -1
  388. package/dist/modules/inventory/schema.js +0 -69
  389. package/dist/modules/inventory/schemas.d.ts +0 -31
  390. package/dist/modules/inventory/schemas.d.ts.map +0 -1
  391. package/dist/modules/inventory/schemas.js +0 -28
  392. package/dist/modules/inventory/service.d.ts +0 -69
  393. package/dist/modules/inventory/service.d.ts.map +0 -1
  394. package/dist/modules/inventory/service.js +0 -283
  395. package/dist/modules/media/adapter.d.ts +0 -16
  396. package/dist/modules/media/adapter.d.ts.map +0 -1
  397. package/dist/modules/media/adapter.js +0 -1
  398. package/dist/modules/media/repository/index.d.ts +0 -35
  399. package/dist/modules/media/repository/index.d.ts.map +0 -1
  400. package/dist/modules/media/repository/index.js +0 -176
  401. package/dist/modules/media/schema.d.ts +0 -289
  402. package/dist/modules/media/schema.d.ts.map +0 -1
  403. package/dist/modules/media/schema.js +0 -35
  404. package/dist/modules/media/service.d.ts +0 -42
  405. package/dist/modules/media/service.d.ts.map +0 -1
  406. package/dist/modules/media/service.js +0 -89
  407. package/dist/modules/orders/repository/index.d.ts +0 -48
  408. package/dist/modules/orders/repository/index.d.ts.map +0 -1
  409. package/dist/modules/orders/repository/index.js +0 -199
  410. package/dist/modules/orders/schema.d.ts +0 -672
  411. package/dist/modules/orders/schema.d.ts.map +0 -1
  412. package/dist/modules/orders/schema.js +0 -63
  413. package/dist/modules/orders/service.d.ts +0 -85
  414. package/dist/modules/orders/service.d.ts.map +0 -1
  415. package/dist/modules/orders/service.js +0 -313
  416. package/dist/modules/orders/stale-order-cleanup.d.ts +0 -27
  417. package/dist/modules/orders/stale-order-cleanup.d.ts.map +0 -1
  418. package/dist/modules/orders/stale-order-cleanup.js +0 -55
  419. package/dist/modules/organization/service.d.ts +0 -53
  420. package/dist/modules/organization/service.d.ts.map +0 -1
  421. package/dist/modules/organization/service.js +0 -151
  422. package/dist/modules/payments/adapter.d.ts +0 -42
  423. package/dist/modules/payments/adapter.d.ts.map +0 -1
  424. package/dist/modules/payments/adapter.js +0 -1
  425. package/dist/modules/payments/repository/index.d.ts +0 -5
  426. package/dist/modules/payments/repository/index.d.ts.map +0 -1
  427. package/dist/modules/payments/repository/index.js +0 -1
  428. package/dist/modules/payments/service.d.ts +0 -23
  429. package/dist/modules/payments/service.d.ts.map +0 -1
  430. package/dist/modules/payments/service.js +0 -72
  431. package/dist/modules/pricing/repository/index.d.ts +0 -34
  432. package/dist/modules/pricing/repository/index.d.ts.map +0 -1
  433. package/dist/modules/pricing/repository/index.js +0 -176
  434. package/dist/modules/pricing/schema.d.ts +0 -565
  435. package/dist/modules/pricing/schema.d.ts.map +0 -1
  436. package/dist/modules/pricing/schema.js +0 -57
  437. package/dist/modules/pricing/schemas.d.ts +0 -37
  438. package/dist/modules/pricing/schemas.d.ts.map +0 -1
  439. package/dist/modules/pricing/schemas.js +0 -30
  440. package/dist/modules/pricing/service.d.ts +0 -62
  441. package/dist/modules/pricing/service.d.ts.map +0 -1
  442. package/dist/modules/pricing/service.js +0 -308
  443. package/dist/modules/promotions/repository/index.d.ts +0 -41
  444. package/dist/modules/promotions/repository/index.d.ts.map +0 -1
  445. package/dist/modules/promotions/repository/index.js +0 -204
  446. package/dist/modules/promotions/schema.d.ts +0 -427
  447. package/dist/modules/promotions/schema.d.ts.map +0 -1
  448. package/dist/modules/promotions/schema.js +0 -52
  449. package/dist/modules/promotions/schemas.d.ts +0 -33
  450. package/dist/modules/promotions/schemas.d.ts.map +0 -1
  451. package/dist/modules/promotions/schemas.js +0 -32
  452. package/dist/modules/promotions/service.d.ts +0 -80
  453. package/dist/modules/promotions/service.d.ts.map +0 -1
  454. package/dist/modules/promotions/service.js +0 -347
  455. package/dist/modules/search/adapter.d.ts +0 -51
  456. package/dist/modules/search/adapter.d.ts.map +0 -1
  457. package/dist/modules/search/adapter.js +0 -1
  458. package/dist/modules/search/hooks.d.ts +0 -8
  459. package/dist/modules/search/hooks.d.ts.map +0 -1
  460. package/dist/modules/search/hooks.js +0 -6
  461. package/dist/modules/search/repository/index.d.ts +0 -5
  462. package/dist/modules/search/repository/index.d.ts.map +0 -1
  463. package/dist/modules/search/repository/index.js +0 -1
  464. package/dist/modules/search/service.d.ts +0 -24
  465. package/dist/modules/search/service.d.ts.map +0 -1
  466. package/dist/modules/search/service.js +0 -217
  467. package/dist/modules/shipping/calculator.d.ts +0 -42
  468. package/dist/modules/shipping/calculator.d.ts.map +0 -1
  469. package/dist/modules/shipping/calculator.js +0 -91
  470. package/dist/modules/shipping/repository/index.d.ts +0 -5
  471. package/dist/modules/shipping/repository/index.d.ts.map +0 -1
  472. package/dist/modules/shipping/repository/index.js +0 -1
  473. package/dist/modules/shipping/service.d.ts +0 -28
  474. package/dist/modules/shipping/service.d.ts.map +0 -1
  475. package/dist/modules/shipping/service.js +0 -20
  476. package/dist/modules/tax/adapter.d.ts +0 -58
  477. package/dist/modules/tax/adapter.d.ts.map +0 -1
  478. package/dist/modules/tax/adapter.js +0 -1
  479. package/dist/modules/tax/repository/index.d.ts +0 -5
  480. package/dist/modules/tax/repository/index.d.ts.map +0 -1
  481. package/dist/modules/tax/repository/index.js +0 -1
  482. package/dist/modules/tax/service.d.ts +0 -19
  483. package/dist/modules/tax/service.d.ts.map +0 -1
  484. package/dist/modules/tax/service.js +0 -34
  485. package/dist/modules/webhooks/hook.d.ts +0 -13
  486. package/dist/modules/webhooks/hook.d.ts.map +0 -1
  487. package/dist/modules/webhooks/hook.js +0 -29
  488. package/dist/modules/webhooks/repository/index.d.ts +0 -40
  489. package/dist/modules/webhooks/repository/index.d.ts.map +0 -1
  490. package/dist/modules/webhooks/repository/index.js +0 -175
  491. package/dist/modules/webhooks/schema.d.ts +0 -404
  492. package/dist/modules/webhooks/schema.d.ts.map +0 -1
  493. package/dist/modules/webhooks/schema.js +0 -40
  494. package/dist/modules/webhooks/service.d.ts +0 -23
  495. package/dist/modules/webhooks/service.d.ts.map +0 -1
  496. package/dist/modules/webhooks/service.js +0 -92
  497. package/dist/modules/webhooks/signing.d.ts +0 -2
  498. package/dist/modules/webhooks/signing.d.ts.map +0 -1
  499. package/dist/modules/webhooks/signing.js +0 -5
  500. package/dist/modules/webhooks/ssrf-guard.d.ts +0 -19
  501. package/dist/modules/webhooks/ssrf-guard.d.ts.map +0 -1
  502. package/dist/modules/webhooks/ssrf-guard.js +0 -79
  503. package/dist/modules/webhooks/tasks.d.ts +0 -16
  504. package/dist/modules/webhooks/tasks.d.ts.map +0 -1
  505. package/dist/modules/webhooks/tasks.js +0 -35
  506. package/dist/modules/webhooks/worker.d.ts +0 -21
  507. package/dist/modules/webhooks/worker.d.ts.map +0 -1
  508. package/dist/modules/webhooks/worker.js +0 -113
  509. package/dist/runtime/commerce.d.ts +0 -110
  510. package/dist/runtime/commerce.d.ts.map +0 -1
  511. package/dist/runtime/commerce.js +0 -37
  512. package/dist/runtime/kernel.d.ts +0 -71
  513. package/dist/runtime/kernel.d.ts.map +0 -1
  514. package/dist/runtime/kernel.js +0 -306
  515. package/dist/runtime/logger.d.ts +0 -11
  516. package/dist/runtime/logger.d.ts.map +0 -1
  517. package/dist/runtime/logger.js +0 -32
  518. package/dist/runtime/shutdown.d.ts +0 -15
  519. package/dist/runtime/shutdown.d.ts.map +0 -1
  520. package/dist/runtime/shutdown.js +0 -34
  521. package/dist/test-utils/create-pglite-adapter.d.ts +0 -32
  522. package/dist/test-utils/create-pglite-adapter.d.ts.map +0 -1
  523. package/dist/test-utils/create-pglite-adapter.js +0 -107
  524. package/dist/test-utils/create-plugin-test-app.d.ts +0 -50
  525. package/dist/test-utils/create-plugin-test-app.d.ts.map +0 -1
  526. package/dist/test-utils/create-plugin-test-app.js +0 -74
  527. package/dist/test-utils/create-repository-test-harness.d.ts +0 -8
  528. package/dist/test-utils/create-repository-test-harness.d.ts.map +0 -1
  529. package/dist/test-utils/create-repository-test-harness.js +0 -7
  530. package/dist/test-utils/create-test-config.d.ts +0 -18
  531. package/dist/test-utils/create-test-config.d.ts.map +0 -1
  532. package/dist/test-utils/create-test-config.js +0 -172
  533. package/dist/test-utils/create-test-kernel.d.ts +0 -3
  534. package/dist/test-utils/create-test-kernel.d.ts.map +0 -1
  535. package/dist/test-utils/create-test-kernel.js +0 -5
  536. package/dist/test-utils/create-test-plugin-context.d.ts +0 -42
  537. package/dist/test-utils/create-test-plugin-context.d.ts.map +0 -1
  538. package/dist/test-utils/create-test-plugin-context.js +0 -46
  539. package/dist/test-utils/rest-api-test-utils.d.ts +0 -64
  540. package/dist/test-utils/rest-api-test-utils.d.ts.map +0 -1
  541. package/dist/test-utils/rest-api-test-utils.js +0 -207
  542. package/dist/test-utils/test-actors.d.ts +0 -15
  543. package/dist/test-utils/test-actors.d.ts.map +0 -1
  544. package/dist/test-utils/test-actors.js +0 -57
  545. package/dist/test-utils/typed-hooks.d.ts +0 -43
  546. package/dist/test-utils/typed-hooks.d.ts.map +0 -1
  547. package/dist/test-utils/typed-hooks.js +0 -35
  548. package/dist/testing.d.ts +0 -14
  549. package/dist/testing.d.ts.map +0 -1
  550. package/dist/testing.js +0 -13
  551. package/dist/tsconfig.tsbuildinfo +0 -1
  552. package/dist/types/commerce-types.d.ts +0 -34
  553. package/dist/types/commerce-types.d.ts.map +0 -1
  554. package/dist/types/commerce-types.js +0 -1
  555. package/dist/utils/id.d.ts +0 -2
  556. package/dist/utils/id.d.ts.map +0 -1
  557. package/dist/utils/id.js +0 -3
  558. package/dist/utils/logger.d.ts +0 -3
  559. package/dist/utils/logger.d.ts.map +0 -1
  560. package/dist/utils/logger.js +0 -16
  561. package/dist/utils/pagination.d.ts +0 -11
  562. package/dist/utils/pagination.d.ts.map +0 -1
  563. 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"}