@kelpie/server 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (679) hide show
  1. package/dist/lib/consumerEmailDomains.d.ts +2 -0
  2. package/dist/lib/consumerEmailDomains.d.ts.map +1 -0
  3. package/dist/lib/consumerEmailDomains.js +62 -0
  4. package/dist/lib/consumerEmailDomains.js.map +1 -0
  5. package/dist/lib/email.d.ts +7 -0
  6. package/dist/lib/email.d.ts.map +1 -1
  7. package/dist/lib/email.js.map +1 -1
  8. package/dist/lib/emailContent.d.ts +33 -0
  9. package/dist/lib/emailContent.d.ts.map +1 -0
  10. package/dist/lib/emailContent.js +54 -0
  11. package/dist/lib/emailContent.js.map +1 -0
  12. package/dist/lib/emailDomainAutoLink.d.ts +27 -0
  13. package/dist/lib/emailDomainAutoLink.d.ts.map +1 -0
  14. package/dist/lib/emailDomainAutoLink.js +119 -0
  15. package/dist/lib/emailDomainAutoLink.js.map +1 -0
  16. package/dist/lib/ids.d.ts +13 -0
  17. package/dist/lib/ids.d.ts.map +1 -1
  18. package/dist/lib/ids.js +13 -0
  19. package/dist/lib/ids.js.map +1 -1
  20. package/dist/modules/activities/repository.d.ts.map +1 -1
  21. package/dist/modules/activities/repository.js +19 -20
  22. package/dist/modules/activities/repository.js.map +1 -1
  23. package/dist/modules/activities/wording.d.ts +12 -0
  24. package/dist/modules/activities/wording.d.ts.map +1 -1
  25. package/dist/modules/activities/wording.js +16 -0
  26. package/dist/modules/activities/wording.js.map +1 -1
  27. package/dist/modules/agent-tasks/catalog.d.ts.map +1 -1
  28. package/dist/modules/agent-tasks/catalog.js +62 -0
  29. package/dist/modules/agent-tasks/catalog.js.map +1 -1
  30. package/dist/modules/agent-tasks/resolve.d.ts.map +1 -1
  31. package/dist/modules/agent-tasks/resolve.js +42 -9
  32. package/dist/modules/agent-tasks/resolve.js.map +1 -1
  33. package/dist/modules/agent-tasks/routes.d.ts +2 -0
  34. package/dist/modules/agent-tasks/routes.d.ts.map +1 -1
  35. package/dist/modules/attachedRecords.d.ts +6 -1
  36. package/dist/modules/attachedRecords.d.ts.map +1 -1
  37. package/dist/modules/attachedRecords.js +18 -2
  38. package/dist/modules/attachedRecords.js.map +1 -1
  39. package/dist/modules/auth/preferences.d.ts +11 -1
  40. package/dist/modules/auth/preferences.d.ts.map +1 -1
  41. package/dist/modules/auth/preferences.js +11 -0
  42. package/dist/modules/auth/preferences.js.map +1 -1
  43. package/dist/modules/auth/routes.d.ts.map +1 -1
  44. package/dist/modules/auth/routes.js +18 -0
  45. package/dist/modules/auth/routes.js.map +1 -1
  46. package/dist/modules/auth/schema.d.ts +20 -0
  47. package/dist/modules/auth/schema.d.ts.map +1 -1
  48. package/dist/modules/auth/schema.js +11 -1
  49. package/dist/modules/auth/schema.js.map +1 -1
  50. package/dist/modules/auth/service.d.ts.map +1 -1
  51. package/dist/modules/auth/service.js +27 -3
  52. package/dist/modules/auth/service.js.map +1 -1
  53. package/dist/modules/companies/index.d.ts.map +1 -1
  54. package/dist/modules/companies/index.js +3 -1
  55. package/dist/modules/companies/index.js.map +1 -1
  56. package/dist/modules/companies/repository.d.ts +2 -0
  57. package/dist/modules/companies/repository.d.ts.map +1 -1
  58. package/dist/modules/companies/repository.js +1 -0
  59. package/dist/modules/companies/repository.js.map +1 -1
  60. package/dist/modules/companies/routes.d.ts +16 -0
  61. package/dist/modules/companies/routes.d.ts.map +1 -1
  62. package/dist/modules/companies/routes.js +18 -0
  63. package/dist/modules/companies/routes.js.map +1 -1
  64. package/dist/modules/companies/schema.d.ts +37 -0
  65. package/dist/modules/companies/schema.d.ts.map +1 -1
  66. package/dist/modules/companies/schema.js +10 -1
  67. package/dist/modules/companies/schema.js.map +1 -1
  68. package/dist/modules/companies/service.d.ts +6 -0
  69. package/dist/modules/companies/service.d.ts.map +1 -1
  70. package/dist/modules/companies/service.js +45 -11
  71. package/dist/modules/companies/service.js.map +1 -1
  72. package/dist/modules/consent-purposes/capabilities.d.ts +7 -0
  73. package/dist/modules/consent-purposes/capabilities.d.ts.map +1 -0
  74. package/dist/modules/consent-purposes/capabilities.js +10 -0
  75. package/dist/modules/consent-purposes/capabilities.js.map +1 -0
  76. package/dist/modules/consent-purposes/events.d.ts +38 -0
  77. package/dist/modules/consent-purposes/events.d.ts.map +1 -0
  78. package/dist/modules/consent-purposes/events.js +17 -0
  79. package/dist/modules/consent-purposes/events.js.map +1 -0
  80. package/dist/modules/consent-purposes/index.d.ts +13 -0
  81. package/dist/modules/consent-purposes/index.d.ts.map +1 -0
  82. package/dist/modules/consent-purposes/index.js +41 -0
  83. package/dist/modules/consent-purposes/index.js.map +1 -0
  84. package/dist/modules/consent-purposes/repository.d.ts +21 -0
  85. package/dist/modules/consent-purposes/repository.d.ts.map +1 -0
  86. package/dist/modules/consent-purposes/repository.js +98 -0
  87. package/dist/modules/consent-purposes/repository.js.map +1 -0
  88. package/dist/modules/consent-purposes/routes.d.ts +39 -0
  89. package/dist/modules/consent-purposes/routes.d.ts.map +1 -0
  90. package/dist/modules/consent-purposes/routes.js +79 -0
  91. package/dist/modules/consent-purposes/routes.js.map +1 -0
  92. package/dist/modules/consent-purposes/schema.d.ts +175 -0
  93. package/dist/modules/consent-purposes/schema.d.ts.map +1 -0
  94. package/dist/modules/consent-purposes/schema.js +35 -0
  95. package/dist/modules/consent-purposes/schema.js.map +1 -0
  96. package/dist/modules/consent-purposes/service.d.ts +50 -0
  97. package/dist/modules/consent-purposes/service.d.ts.map +1 -0
  98. package/dist/modules/consent-purposes/service.js +263 -0
  99. package/dist/modules/consent-purposes/service.js.map +1 -0
  100. package/dist/modules/consent-purposes/starters.d.ts +17 -0
  101. package/dist/modules/consent-purposes/starters.d.ts.map +1 -0
  102. package/dist/modules/consent-purposes/starters.js +15 -0
  103. package/dist/modules/consent-purposes/starters.js.map +1 -0
  104. package/dist/modules/consent-purposes/tools.d.ts +4 -0
  105. package/dist/modules/consent-purposes/tools.d.ts.map +1 -0
  106. package/dist/modules/consent-purposes/tools.js +29 -0
  107. package/dist/modules/consent-purposes/tools.js.map +1 -0
  108. package/dist/modules/core.d.ts.map +1 -1
  109. package/dist/modules/core.js +21 -0
  110. package/dist/modules/core.js.map +1 -1
  111. package/dist/modules/custom-fields/capabilities.d.ts +12 -0
  112. package/dist/modules/custom-fields/capabilities.d.ts.map +1 -0
  113. package/dist/modules/custom-fields/capabilities.js +15 -0
  114. package/dist/modules/custom-fields/capabilities.js.map +1 -0
  115. package/dist/modules/custom-fields/events.d.ts +49 -0
  116. package/dist/modules/custom-fields/events.d.ts.map +1 -0
  117. package/dist/modules/custom-fields/events.js +25 -0
  118. package/dist/modules/custom-fields/events.js.map +1 -0
  119. package/dist/modules/custom-fields/index.d.ts +19 -0
  120. package/dist/modules/custom-fields/index.d.ts.map +1 -0
  121. package/dist/modules/custom-fields/index.js +46 -0
  122. package/dist/modules/custom-fields/index.js.map +1 -0
  123. package/dist/modules/custom-fields/repository.d.ts +37 -0
  124. package/dist/modules/custom-fields/repository.d.ts.map +1 -0
  125. package/dist/modules/custom-fields/repository.js +144 -0
  126. package/dist/modules/custom-fields/repository.js.map +1 -0
  127. package/dist/modules/custom-fields/routes.d.ts +44 -0
  128. package/dist/modules/custom-fields/routes.d.ts.map +1 -0
  129. package/dist/modules/custom-fields/routes.js +103 -0
  130. package/dist/modules/custom-fields/routes.js.map +1 -0
  131. package/dist/modules/custom-fields/schema.d.ts +215 -0
  132. package/dist/modules/custom-fields/schema.d.ts.map +1 -0
  133. package/dist/modules/custom-fields/schema.js +43 -0
  134. package/dist/modules/custom-fields/schema.js.map +1 -0
  135. package/dist/modules/custom-fields/service.d.ts +57 -0
  136. package/dist/modules/custom-fields/service.d.ts.map +1 -0
  137. package/dist/modules/custom-fields/service.js +273 -0
  138. package/dist/modules/custom-fields/service.js.map +1 -0
  139. package/dist/modules/custom-fields/tools.d.ts +4 -0
  140. package/dist/modules/custom-fields/tools.d.ts.map +1 -0
  141. package/dist/modules/custom-fields/tools.js +38 -0
  142. package/dist/modules/custom-fields/tools.js.map +1 -0
  143. package/dist/modules/custom-fields/values.d.ts +49 -0
  144. package/dist/modules/custom-fields/values.d.ts.map +1 -0
  145. package/dist/modules/custom-fields/values.js +249 -0
  146. package/dist/modules/custom-fields/values.js.map +1 -0
  147. package/dist/modules/custom-fields/wire.d.ts +12 -0
  148. package/dist/modules/custom-fields/wire.d.ts.map +1 -0
  149. package/dist/modules/custom-fields/wire.js +30 -0
  150. package/dist/modules/custom-fields/wire.js.map +1 -0
  151. package/dist/modules/dashboard/repository.d.ts.map +1 -1
  152. package/dist/modules/dashboard/repository.js +4 -3
  153. package/dist/modules/dashboard/repository.js.map +1 -1
  154. package/dist/modules/deals/index.d.ts +2 -1
  155. package/dist/modules/deals/index.d.ts.map +1 -1
  156. package/dist/modules/deals/index.js +5 -2
  157. package/dist/modules/deals/index.js.map +1 -1
  158. package/dist/modules/deals/repository.d.ts +0 -16
  159. package/dist/modules/deals/repository.d.ts.map +1 -1
  160. package/dist/modules/deals/repository.js +6 -76
  161. package/dist/modules/deals/repository.js.map +1 -1
  162. package/dist/modules/deals/routes.d.ts +14 -0
  163. package/dist/modules/deals/routes.d.ts.map +1 -1
  164. package/dist/modules/deals/routes.js +7 -0
  165. package/dist/modules/deals/routes.js.map +1 -1
  166. package/dist/modules/deals/schema.d.ts +20 -42
  167. package/dist/modules/deals/schema.d.ts.map +1 -1
  168. package/dist/modules/deals/schema.js +6 -11
  169. package/dist/modules/deals/schema.js.map +1 -1
  170. package/dist/modules/deals/service.d.ts +13 -2
  171. package/dist/modules/deals/service.d.ts.map +1 -1
  172. package/dist/modules/deals/service.js +43 -20
  173. package/dist/modules/deals/service.js.map +1 -1
  174. package/dist/modules/decisions/repository.d.ts.map +1 -1
  175. package/dist/modules/decisions/repository.js +2 -0
  176. package/dist/modules/decisions/repository.js.map +1 -1
  177. package/dist/modules/decisions/routes.d.ts +1 -0
  178. package/dist/modules/decisions/routes.d.ts.map +1 -1
  179. package/dist/modules/email-domain-linker/index.d.ts +12 -0
  180. package/dist/modules/email-domain-linker/index.d.ts.map +1 -0
  181. package/dist/modules/email-domain-linker/index.js +34 -0
  182. package/dist/modules/email-domain-linker/index.js.map +1 -0
  183. package/dist/modules/email-domain-linker/routes.d.ts +14 -0
  184. package/dist/modules/email-domain-linker/routes.d.ts.map +1 -0
  185. package/dist/modules/email-domain-linker/routes.js +15 -0
  186. package/dist/modules/email-domain-linker/routes.js.map +1 -0
  187. package/dist/modules/email-domain-linker/service.d.ts +37 -0
  188. package/dist/modules/email-domain-linker/service.d.ts.map +1 -0
  189. package/dist/modules/email-domain-linker/service.js +63 -0
  190. package/dist/modules/email-domain-linker/service.js.map +1 -0
  191. package/dist/modules/enquiries/events.d.ts +44 -0
  192. package/dist/modules/enquiries/events.d.ts.map +1 -0
  193. package/dist/modules/enquiries/events.js +19 -0
  194. package/dist/modules/enquiries/events.js.map +1 -0
  195. package/dist/modules/enquiries/index.d.ts +13 -0
  196. package/dist/modules/enquiries/index.d.ts.map +1 -0
  197. package/dist/modules/enquiries/index.js +44 -0
  198. package/dist/modules/enquiries/index.js.map +1 -0
  199. package/dist/modules/enquiries/repository.d.ts +30 -0
  200. package/dist/modules/enquiries/repository.d.ts.map +1 -0
  201. package/dist/modules/enquiries/repository.js +94 -0
  202. package/dist/modules/enquiries/repository.js.map +1 -0
  203. package/dist/modules/enquiries/routes.d.ts +52 -0
  204. package/dist/modules/enquiries/routes.d.ts.map +1 -0
  205. package/dist/modules/enquiries/routes.js +127 -0
  206. package/dist/modules/enquiries/routes.js.map +1 -0
  207. package/dist/modules/enquiries/schema.d.ts +290 -0
  208. package/dist/modules/enquiries/schema.d.ts.map +1 -0
  209. package/dist/modules/enquiries/schema.js +52 -0
  210. package/dist/modules/enquiries/schema.js.map +1 -0
  211. package/dist/modules/enquiries/service.d.ts +85 -0
  212. package/dist/modules/enquiries/service.d.ts.map +1 -0
  213. package/dist/modules/enquiries/service.js +370 -0
  214. package/dist/modules/enquiries/service.js.map +1 -0
  215. package/dist/modules/enquiries/tools.d.ts +4 -0
  216. package/dist/modules/enquiries/tools.d.ts.map +1 -0
  217. package/dist/modules/enquiries/tools.js +50 -0
  218. package/dist/modules/enquiries/tools.js.map +1 -0
  219. package/dist/modules/eventCatalogs.d.ts +4 -0
  220. package/dist/modules/eventCatalogs.d.ts.map +1 -1
  221. package/dist/modules/eventCatalogs.js +4 -0
  222. package/dist/modules/eventCatalogs.js.map +1 -1
  223. package/dist/modules/forms/embed.d.ts +20 -6
  224. package/dist/modules/forms/embed.d.ts.map +1 -1
  225. package/dist/modules/forms/embed.js +359 -43
  226. package/dist/modules/forms/embed.js.map +1 -1
  227. package/dist/modules/forms/events.d.ts +20 -7
  228. package/dist/modules/forms/events.d.ts.map +1 -1
  229. package/dist/modules/forms/events.js +20 -2
  230. package/dist/modules/forms/events.js.map +1 -1
  231. package/dist/modules/forms/fields.d.ts +14 -1
  232. package/dist/modules/forms/fields.d.ts.map +1 -1
  233. package/dist/modules/forms/fields.js +87 -3
  234. package/dist/modules/forms/fields.js.map +1 -1
  235. package/dist/modules/forms/index.d.ts.map +1 -1
  236. package/dist/modules/forms/index.js +12 -1
  237. package/dist/modules/forms/index.js.map +1 -1
  238. package/dist/modules/forms/mapping.d.ts +62 -5
  239. package/dist/modules/forms/mapping.d.ts.map +1 -1
  240. package/dist/modules/forms/mapping.js +139 -5
  241. package/dist/modules/forms/mapping.js.map +1 -1
  242. package/dist/modules/forms/publicRoutes.d.ts.map +1 -1
  243. package/dist/modules/forms/publicRoutes.js +29 -1
  244. package/dist/modules/forms/publicRoutes.js.map +1 -1
  245. package/dist/modules/forms/repository.d.ts +31 -0
  246. package/dist/modules/forms/repository.d.ts.map +1 -1
  247. package/dist/modules/forms/repository.js +90 -1
  248. package/dist/modules/forms/repository.js.map +1 -1
  249. package/dist/modules/forms/routes.d.ts +83 -1
  250. package/dist/modules/forms/routes.d.ts.map +1 -1
  251. package/dist/modules/forms/routes.js +185 -2
  252. package/dist/modules/forms/routes.js.map +1 -1
  253. package/dist/modules/forms/schema.d.ts +672 -1
  254. package/dist/modules/forms/schema.d.ts.map +1 -1
  255. package/dist/modules/forms/schema.js +146 -3
  256. package/dist/modules/forms/schema.js.map +1 -1
  257. package/dist/modules/forms/service.d.ts +54 -1
  258. package/dist/modules/forms/service.d.ts.map +1 -1
  259. package/dist/modules/forms/service.js +338 -28
  260. package/dist/modules/forms/service.js.map +1 -1
  261. package/dist/modules/forms/submission.d.ts +15 -0
  262. package/dist/modules/forms/submission.d.ts.map +1 -1
  263. package/dist/modules/forms/submission.js +418 -40
  264. package/dist/modules/forms/submission.js.map +1 -1
  265. package/dist/modules/import-export/drafts.d.ts +10 -0
  266. package/dist/modules/import-export/drafts.d.ts.map +1 -1
  267. package/dist/modules/import-export/drafts.js +16 -2
  268. package/dist/modules/import-export/drafts.js.map +1 -1
  269. package/dist/modules/import-export/exportRows.d.ts +7 -4
  270. package/dist/modules/import-export/exportRows.d.ts.map +1 -1
  271. package/dist/modules/import-export/exportRows.js +20 -5
  272. package/dist/modules/import-export/exportRows.js.map +1 -1
  273. package/dist/modules/import-export/plan.d.ts +12 -1
  274. package/dist/modules/import-export/plan.d.ts.map +1 -1
  275. package/dist/modules/import-export/plan.js +29 -2
  276. package/dist/modules/import-export/plan.js.map +1 -1
  277. package/dist/modules/import-export/presets.d.ts.map +1 -1
  278. package/dist/modules/import-export/presets.js +10 -0
  279. package/dist/modules/import-export/presets.js.map +1 -1
  280. package/dist/modules/import-export/repository.d.ts +11 -1
  281. package/dist/modules/import-export/repository.d.ts.map +1 -1
  282. package/dist/modules/import-export/repository.js +42 -9
  283. package/dist/modules/import-export/repository.js.map +1 -1
  284. package/dist/modules/import-export/routes.d.ts.map +1 -1
  285. package/dist/modules/import-export/routes.js +4 -0
  286. package/dist/modules/import-export/routes.js.map +1 -1
  287. package/dist/modules/import-export/schema.d.ts +17 -0
  288. package/dist/modules/import-export/schema.d.ts.map +1 -1
  289. package/dist/modules/import-export/schema.js +11 -0
  290. package/dist/modules/import-export/schema.js.map +1 -1
  291. package/dist/modules/import-export/service.d.ts +6 -0
  292. package/dist/modules/import-export/service.d.ts.map +1 -1
  293. package/dist/modules/import-export/service.js +14 -2
  294. package/dist/modules/import-export/service.js.map +1 -1
  295. package/dist/modules/import-export/streams.d.ts.map +1 -1
  296. package/dist/modules/import-export/streams.js +3 -3
  297. package/dist/modules/import-export/streams.js.map +1 -1
  298. package/dist/modules/import-export/tools.d.ts.map +1 -1
  299. package/dist/modules/import-export/tools.js +8 -0
  300. package/dist/modules/import-export/tools.js.map +1 -1
  301. package/dist/modules/import-export/validation.d.ts.map +1 -1
  302. package/dist/modules/import-export/validation.js +22 -1
  303. package/dist/modules/import-export/validation.js.map +1 -1
  304. package/dist/modules/import-export/writes.d.ts.map +1 -1
  305. package/dist/modules/import-export/writes.js +37 -4
  306. package/dist/modules/import-export/writes.js.map +1 -1
  307. package/dist/modules/lists/events.d.ts +42 -0
  308. package/dist/modules/lists/events.d.ts.map +1 -0
  309. package/dist/modules/lists/events.js +16 -0
  310. package/dist/modules/lists/events.js.map +1 -0
  311. package/dist/modules/lists/index.d.ts +10 -0
  312. package/dist/modules/lists/index.d.ts.map +1 -0
  313. package/dist/modules/lists/index.js +35 -0
  314. package/dist/modules/lists/index.js.map +1 -0
  315. package/dist/modules/lists/repository.d.ts +80 -0
  316. package/dist/modules/lists/repository.d.ts.map +1 -0
  317. package/dist/modules/lists/repository.js +178 -0
  318. package/dist/modules/lists/repository.js.map +1 -0
  319. package/dist/modules/lists/routes.d.ts +55 -0
  320. package/dist/modules/lists/routes.d.ts.map +1 -0
  321. package/dist/modules/lists/routes.js +168 -0
  322. package/dist/modules/lists/routes.js.map +1 -0
  323. package/dist/modules/lists/schema.d.ts +281 -0
  324. package/dist/modules/lists/schema.d.ts.map +1 -0
  325. package/dist/modules/lists/schema.js +83 -0
  326. package/dist/modules/lists/schema.js.map +1 -0
  327. package/dist/modules/lists/service.d.ts +82 -0
  328. package/dist/modules/lists/service.d.ts.map +1 -0
  329. package/dist/modules/lists/service.js +262 -0
  330. package/dist/modules/lists/service.js.map +1 -0
  331. package/dist/modules/lists/tools.d.ts +4 -0
  332. package/dist/modules/lists/tools.d.ts.map +1 -0
  333. package/dist/modules/lists/tools.js +86 -0
  334. package/dist/modules/lists/tools.js.map +1 -0
  335. package/dist/modules/mcp/index.d.ts.map +1 -1
  336. package/dist/modules/mcp/index.js +5 -0
  337. package/dist/modules/mcp/index.js.map +1 -1
  338. package/dist/modules/notes/routes.d.ts +1 -0
  339. package/dist/modules/notes/routes.d.ts.map +1 -1
  340. package/dist/modules/opportunities/index.d.ts.map +1 -1
  341. package/dist/modules/opportunities/index.js +3 -1
  342. package/dist/modules/opportunities/index.js.map +1 -1
  343. package/dist/modules/opportunities/repository.d.ts +2 -0
  344. package/dist/modules/opportunities/repository.d.ts.map +1 -1
  345. package/dist/modules/opportunities/repository.js +4 -0
  346. package/dist/modules/opportunities/repository.js.map +1 -1
  347. package/dist/modules/opportunities/routes.d.ts +16 -0
  348. package/dist/modules/opportunities/routes.d.ts.map +1 -1
  349. package/dist/modules/opportunities/routes.js +13 -0
  350. package/dist/modules/opportunities/routes.js.map +1 -1
  351. package/dist/modules/opportunities/schema.d.ts +20 -0
  352. package/dist/modules/opportunities/schema.d.ts.map +1 -1
  353. package/dist/modules/opportunities/schema.js +6 -1
  354. package/dist/modules/opportunities/schema.js.map +1 -1
  355. package/dist/modules/opportunities/service.d.ts +20 -3
  356. package/dist/modules/opportunities/service.d.ts.map +1 -1
  357. package/dist/modules/opportunities/service.js +99 -18
  358. package/dist/modules/opportunities/service.js.map +1 -1
  359. package/dist/modules/opportunities/tools.d.ts.map +1 -1
  360. package/dist/modules/opportunities/tools.js +2 -0
  361. package/dist/modules/opportunities/tools.js.map +1 -1
  362. package/dist/modules/partnerships/index.d.ts.map +1 -1
  363. package/dist/modules/partnerships/index.js +3 -1
  364. package/dist/modules/partnerships/index.js.map +1 -1
  365. package/dist/modules/partnerships/repository.d.ts +0 -17
  366. package/dist/modules/partnerships/repository.d.ts.map +1 -1
  367. package/dist/modules/partnerships/repository.js +6 -82
  368. package/dist/modules/partnerships/repository.js.map +1 -1
  369. package/dist/modules/partnerships/routes.d.ts +14 -0
  370. package/dist/modules/partnerships/routes.d.ts.map +1 -1
  371. package/dist/modules/partnerships/routes.js +7 -0
  372. package/dist/modules/partnerships/routes.js.map +1 -1
  373. package/dist/modules/partnerships/schema.d.ts +20 -41
  374. package/dist/modules/partnerships/schema.d.ts.map +1 -1
  375. package/dist/modules/partnerships/schema.js +6 -10
  376. package/dist/modules/partnerships/schema.js.map +1 -1
  377. package/dist/modules/partnerships/service.d.ts +11 -1
  378. package/dist/modules/partnerships/service.d.ts.map +1 -1
  379. package/dist/modules/partnerships/service.js +43 -20
  380. package/dist/modules/partnerships/service.js.map +1 -1
  381. package/dist/modules/people/consentHydration.d.ts +26 -0
  382. package/dist/modules/people/consentHydration.d.ts.map +1 -0
  383. package/dist/modules/people/consentHydration.js +100 -0
  384. package/dist/modules/people/consentHydration.js.map +1 -0
  385. package/dist/modules/people/index.d.ts.map +1 -1
  386. package/dist/modules/people/index.js +3 -1
  387. package/dist/modules/people/index.js.map +1 -1
  388. package/dist/modules/people/personConsentWrites.d.ts +40 -0
  389. package/dist/modules/people/personConsentWrites.d.ts.map +1 -0
  390. package/dist/modules/people/personConsentWrites.js +98 -0
  391. package/dist/modules/people/personConsentWrites.js.map +1 -0
  392. package/dist/modules/people/repository.d.ts +11 -0
  393. package/dist/modules/people/repository.d.ts.map +1 -1
  394. package/dist/modules/people/repository.js +21 -1
  395. package/dist/modules/people/repository.js.map +1 -1
  396. package/dist/modules/people/routes.d.ts +57 -4
  397. package/dist/modules/people/routes.d.ts.map +1 -1
  398. package/dist/modules/people/routes.js +104 -5
  399. package/dist/modules/people/routes.js.map +1 -1
  400. package/dist/modules/people/schema.d.ts +366 -1
  401. package/dist/modules/people/schema.d.ts.map +1 -1
  402. package/dist/modules/people/schema.js +92 -2
  403. package/dist/modules/people/schema.js.map +1 -1
  404. package/dist/modules/people/service.d.ts +30 -1
  405. package/dist/modules/people/service.d.ts.map +1 -1
  406. package/dist/modules/people/service.js +131 -36
  407. package/dist/modules/people/service.js.map +1 -1
  408. package/dist/modules/people/tools.d.ts.map +1 -1
  409. package/dist/modules/people/tools.js +4 -1
  410. package/dist/modules/people/tools.js.map +1 -1
  411. package/dist/modules/personLinks.d.ts +79 -0
  412. package/dist/modules/personLinks.d.ts.map +1 -0
  413. package/dist/modules/personLinks.js +155 -0
  414. package/dist/modules/personLinks.js.map +1 -0
  415. package/dist/modules/pipelines/routes.d.ts +1 -0
  416. package/dist/modules/pipelines/routes.d.ts.map +1 -1
  417. package/dist/modules/plans/routes.d.ts +1 -0
  418. package/dist/modules/plans/routes.d.ts.map +1 -1
  419. package/dist/modules/positions/routes.d.ts.map +1 -1
  420. package/dist/modules/positions/routes.js +4 -2
  421. package/dist/modules/positions/routes.js.map +1 -1
  422. package/dist/modules/raises/index.d.ts.map +1 -1
  423. package/dist/modules/raises/index.js +3 -1
  424. package/dist/modules/raises/index.js.map +1 -1
  425. package/dist/modules/raises/repository.d.ts +0 -17
  426. package/dist/modules/raises/repository.d.ts.map +1 -1
  427. package/dist/modules/raises/repository.js +6 -77
  428. package/dist/modules/raises/repository.js.map +1 -1
  429. package/dist/modules/raises/routes.d.ts +14 -0
  430. package/dist/modules/raises/routes.d.ts.map +1 -1
  431. package/dist/modules/raises/routes.js +7 -0
  432. package/dist/modules/raises/routes.js.map +1 -1
  433. package/dist/modules/raises/schema.d.ts +20 -41
  434. package/dist/modules/raises/schema.d.ts.map +1 -1
  435. package/dist/modules/raises/schema.js +6 -10
  436. package/dist/modules/raises/schema.js.map +1 -1
  437. package/dist/modules/raises/service.d.ts +11 -1
  438. package/dist/modules/raises/service.d.ts.map +1 -1
  439. package/dist/modules/raises/service.js +41 -18
  440. package/dist/modules/raises/service.js.map +1 -1
  441. package/dist/modules/recordTargets.d.ts.map +1 -1
  442. package/dist/modules/recordTargets.js +2 -0
  443. package/dist/modules/recordTargets.js.map +1 -1
  444. package/dist/modules/references.d.ts +10 -0
  445. package/dist/modules/references.d.ts.map +1 -1
  446. package/dist/modules/references.js +27 -4
  447. package/dist/modules/references.js.map +1 -1
  448. package/dist/modules/sample-data/fixture.d.ts +160 -0
  449. package/dist/modules/sample-data/fixture.d.ts.map +1 -0
  450. package/dist/modules/sample-data/fixture.js +501 -0
  451. package/dist/modules/sample-data/fixture.js.map +1 -0
  452. package/dist/modules/sample-data/index.d.ts +11 -0
  453. package/dist/modules/sample-data/index.d.ts.map +1 -0
  454. package/dist/modules/sample-data/index.js +44 -0
  455. package/dist/modules/sample-data/index.js.map +1 -0
  456. package/dist/modules/sample-data/routes.d.ts +15 -0
  457. package/dist/modules/sample-data/routes.d.ts.map +1 -0
  458. package/dist/modules/sample-data/routes.js +25 -0
  459. package/dist/modules/sample-data/routes.js.map +1 -0
  460. package/dist/modules/sample-data/service.d.ts +39 -0
  461. package/dist/modules/sample-data/service.d.ts.map +1 -0
  462. package/dist/modules/sample-data/service.js +481 -0
  463. package/dist/modules/sample-data/service.js.map +1 -0
  464. package/dist/modules/sample-data/tools.d.ts +4 -0
  465. package/dist/modules/sample-data/tools.d.ts.map +1 -0
  466. package/dist/modules/sample-data/tools.js +22 -0
  467. package/dist/modules/sample-data/tools.js.map +1 -0
  468. package/dist/modules/search/index.d.ts +1 -1
  469. package/dist/modules/search/index.d.ts.map +1 -1
  470. package/dist/modules/search/index.js +2 -1
  471. package/dist/modules/search/index.js.map +1 -1
  472. package/dist/modules/search/repository.d.ts +1 -0
  473. package/dist/modules/search/repository.d.ts.map +1 -1
  474. package/dist/modules/search/repository.js +23 -0
  475. package/dist/modules/search/repository.js.map +1 -1
  476. package/dist/modules/search/service.d.ts +3 -3
  477. package/dist/modules/search/service.d.ts.map +1 -1
  478. package/dist/modules/search/service.js +5 -4
  479. package/dist/modules/search/service.js.map +1 -1
  480. package/dist/modules/smtp-email/index.d.ts +1 -0
  481. package/dist/modules/smtp-email/index.d.ts.map +1 -1
  482. package/dist/modules/smtp-email/index.js +1 -0
  483. package/dist/modules/smtp-email/index.js.map +1 -1
  484. package/dist/modules/stagedRecords.d.ts +3 -3
  485. package/dist/modules/stagedRecords.d.ts.map +1 -1
  486. package/dist/modules/stagedRecords.js +9 -0
  487. package/dist/modules/stagedRecords.js.map +1 -1
  488. package/dist/modules/webhooks/payloads.d.ts.map +1 -1
  489. package/dist/modules/webhooks/payloads.js +15 -2
  490. package/dist/modules/webhooks/payloads.js.map +1 -1
  491. package/dist/modules/workspace/repository.d.ts +2 -0
  492. package/dist/modules/workspace/repository.d.ts.map +1 -1
  493. package/dist/modules/workspace/repository.js +7 -0
  494. package/dist/modules/workspace/repository.js.map +1 -1
  495. package/dist/modules/workspace/service.d.ts.map +1 -1
  496. package/dist/modules/workspace/service.js +20 -1
  497. package/dist/modules/workspace/service.js.map +1 -1
  498. package/dist/modules/workspace/starters.d.ts.map +1 -1
  499. package/dist/modules/workspace/starters.js +5 -0
  500. package/dist/modules/workspace/starters.js.map +1 -1
  501. package/dist/runtime/events.d.ts +1 -1
  502. package/dist/runtime/events.d.ts.map +1 -1
  503. package/dist/runtime/events.js +1 -0
  504. package/dist/runtime/events.js.map +1 -1
  505. package/dist/schema/index.d.ts +4 -0
  506. package/dist/schema/index.d.ts.map +1 -1
  507. package/dist/schema/index.js +4 -0
  508. package/dist/schema/index.js.map +1 -1
  509. package/dist/testing/database.d.ts +5 -1
  510. package/dist/testing/database.d.ts.map +1 -1
  511. package/dist/testing/database.js +81 -10
  512. package/dist/testing/database.js.map +1 -1
  513. package/migrations/0021_certain_maggott.sql +30 -0
  514. package/migrations/0022_stormy_manta.sql +1 -0
  515. package/migrations/0023_funny_maddog.sql +1 -0
  516. package/migrations/0024_third_king_cobra.sql +46 -0
  517. package/migrations/0025_worthless_chimera.sql +3 -0
  518. package/migrations/0026_late_aqueduct.sql +46 -0
  519. package/migrations/0027_brainy_silver_sable.sql +3 -0
  520. package/migrations/0028_freezing_scrambler.sql +19 -0
  521. package/migrations/0029_custom_fields.sql +26 -0
  522. package/migrations/0030_enquiries.sql +79 -0
  523. package/migrations/0031_consent.sql +45 -0
  524. package/migrations/0032_form_field_statement.sql +1 -0
  525. package/migrations/0033_form_field_consent_purpose_ids.sql +5 -0
  526. package/migrations/0034_drop_form_field_consent_purpose_id.sql +1 -0
  527. package/migrations/0035_form_field_consent_purpose_labels.sql +1 -0
  528. package/migrations/0036_form_field_notice_type.sql +2 -0
  529. package/migrations/meta/0021_snapshot.json +5389 -0
  530. package/migrations/meta/0022_snapshot.json +5396 -0
  531. package/migrations/meta/0023_snapshot.json +5403 -0
  532. package/migrations/meta/0024_snapshot.json +5516 -0
  533. package/migrations/meta/0025_snapshot.json +5336 -0
  534. package/migrations/meta/0026_snapshot.json +5710 -0
  535. package/migrations/meta/0027_snapshot.json +5716 -0
  536. package/migrations/meta/0028_snapshot.json +5740 -0
  537. package/migrations/meta/0029_snapshot.json +5935 -0
  538. package/migrations/meta/0030_snapshot.json +6245 -0
  539. package/migrations/meta/0031_snapshot.json +6572 -0
  540. package/migrations/meta/0032_snapshot.json +6578 -0
  541. package/migrations/meta/0033_snapshot.json +6572 -0
  542. package/migrations/meta/0034_snapshot.json +6566 -0
  543. package/migrations/meta/0035_snapshot.json +6573 -0
  544. package/migrations/meta/0036_snapshot.json +6573 -0
  545. package/migrations/meta/_journal.json +112 -0
  546. package/package.json +3 -2
  547. package/src/lib/consumerEmailDomains.ts +62 -0
  548. package/src/lib/email.ts +7 -0
  549. package/src/lib/emailContent.ts +91 -0
  550. package/src/lib/emailDomainAutoLink.ts +165 -0
  551. package/src/lib/ids.ts +13 -0
  552. package/src/modules/activities/repository.ts +22 -23
  553. package/src/modules/activities/wording.ts +18 -0
  554. package/src/modules/agent-tasks/catalog.ts +63 -0
  555. package/src/modules/agent-tasks/resolve.ts +64 -24
  556. package/src/modules/attachedRecords.ts +37 -3
  557. package/src/modules/auth/preferences.ts +13 -1
  558. package/src/modules/auth/routes.ts +22 -0
  559. package/src/modules/auth/schema.ts +12 -2
  560. package/src/modules/auth/service.ts +37 -3
  561. package/src/modules/companies/index.ts +3 -1
  562. package/src/modules/companies/repository.ts +3 -0
  563. package/src/modules/companies/routes.ts +20 -0
  564. package/src/modules/companies/schema.ts +11 -1
  565. package/src/modules/companies/service.ts +72 -12
  566. package/src/modules/consent-purposes/capabilities.ts +12 -0
  567. package/src/modules/consent-purposes/events.ts +38 -0
  568. package/src/modules/consent-purposes/index.ts +48 -0
  569. package/src/modules/consent-purposes/repository.ts +163 -0
  570. package/src/modules/consent-purposes/routes.ts +122 -0
  571. package/src/modules/consent-purposes/schema.ts +46 -0
  572. package/src/modules/consent-purposes/service.ts +423 -0
  573. package/src/modules/consent-purposes/starters.ts +32 -0
  574. package/src/modules/consent-purposes/tools.ts +44 -0
  575. package/src/modules/core.ts +21 -0
  576. package/src/modules/custom-fields/capabilities.ts +17 -0
  577. package/src/modules/custom-fields/events.ts +51 -0
  578. package/src/modules/custom-fields/index.ts +61 -0
  579. package/src/modules/custom-fields/repository.ts +225 -0
  580. package/src/modules/custom-fields/routes.ts +155 -0
  581. package/src/modules/custom-fields/schema.ts +61 -0
  582. package/src/modules/custom-fields/service.ts +439 -0
  583. package/src/modules/custom-fields/tools.ts +53 -0
  584. package/src/modules/custom-fields/values.ts +352 -0
  585. package/src/modules/custom-fields/wire.ts +32 -0
  586. package/src/modules/dashboard/repository.ts +4 -3
  587. package/src/modules/deals/index.ts +5 -2
  588. package/src/modules/deals/repository.ts +6 -106
  589. package/src/modules/deals/routes.ts +7 -0
  590. package/src/modules/deals/schema.ts +7 -15
  591. package/src/modules/deals/service.ts +92 -23
  592. package/src/modules/decisions/repository.ts +2 -0
  593. package/src/modules/email-domain-linker/index.ts +40 -0
  594. package/src/modules/email-domain-linker/routes.ts +40 -0
  595. package/src/modules/email-domain-linker/service.ts +122 -0
  596. package/src/modules/enquiries/events.ts +45 -0
  597. package/src/modules/enquiries/index.ts +50 -0
  598. package/src/modules/enquiries/repository.ts +164 -0
  599. package/src/modules/enquiries/routes.ts +172 -0
  600. package/src/modules/enquiries/schema.ts +59 -0
  601. package/src/modules/enquiries/service.ts +644 -0
  602. package/src/modules/enquiries/tools.ts +66 -0
  603. package/src/modules/eventCatalogs.ts +4 -0
  604. package/src/modules/forms/embed.ts +391 -44
  605. package/src/modules/forms/events.ts +30 -2
  606. package/src/modules/forms/fields.ts +102 -2
  607. package/src/modules/forms/index.ts +12 -1
  608. package/src/modules/forms/mapping.ts +183 -6
  609. package/src/modules/forms/publicRoutes.ts +43 -1
  610. package/src/modules/forms/repository.ts +162 -1
  611. package/src/modules/forms/routes.ts +212 -2
  612. package/src/modules/forms/schema.ts +166 -4
  613. package/src/modules/forms/service.ts +565 -41
  614. package/src/modules/forms/submission.ts +718 -44
  615. package/src/modules/import-export/drafts.ts +20 -1
  616. package/src/modules/import-export/exportRows.ts +21 -5
  617. package/src/modules/import-export/plan.ts +47 -2
  618. package/src/modules/import-export/presets.ts +10 -0
  619. package/src/modules/import-export/repository.ts +73 -8
  620. package/src/modules/import-export/routes.ts +4 -0
  621. package/src/modules/import-export/schema.ts +11 -0
  622. package/src/modules/import-export/service.ts +28 -2
  623. package/src/modules/import-export/streams.ts +3 -1
  624. package/src/modules/import-export/tools.ts +10 -0
  625. package/src/modules/import-export/validation.ts +28 -0
  626. package/src/modules/import-export/writes.ts +70 -5
  627. package/src/modules/lists/events.ts +41 -0
  628. package/src/modules/lists/index.ts +41 -0
  629. package/src/modules/lists/repository.ts +343 -0
  630. package/src/modules/lists/routes.ts +255 -0
  631. package/src/modules/lists/schema.ts +95 -0
  632. package/src/modules/lists/service.ts +505 -0
  633. package/src/modules/lists/tools.ts +128 -0
  634. package/src/modules/mcp/index.ts +5 -0
  635. package/src/modules/opportunities/index.ts +3 -1
  636. package/src/modules/opportunities/repository.ts +11 -0
  637. package/src/modules/opportunities/routes.ts +13 -0
  638. package/src/modules/opportunities/schema.ts +7 -1
  639. package/src/modules/opportunities/service.ts +188 -22
  640. package/src/modules/opportunities/tools.ts +2 -0
  641. package/src/modules/partnerships/index.ts +3 -1
  642. package/src/modules/partnerships/repository.ts +6 -117
  643. package/src/modules/partnerships/routes.ts +7 -0
  644. package/src/modules/partnerships/schema.ts +7 -14
  645. package/src/modules/partnerships/service.ts +93 -22
  646. package/src/modules/people/consentHydration.ts +167 -0
  647. package/src/modules/people/index.ts +3 -1
  648. package/src/modules/people/personConsentWrites.ts +177 -0
  649. package/src/modules/people/repository.ts +31 -0
  650. package/src/modules/people/routes.ts +127 -18
  651. package/src/modules/people/schema.ts +109 -3
  652. package/src/modules/people/service.ts +205 -39
  653. package/src/modules/people/tools.ts +5 -1
  654. package/src/modules/personLinks.ts +278 -0
  655. package/src/modules/positions/routes.ts +4 -2
  656. package/src/modules/raises/index.ts +3 -1
  657. package/src/modules/raises/repository.ts +6 -107
  658. package/src/modules/raises/routes.ts +7 -0
  659. package/src/modules/raises/schema.ts +7 -14
  660. package/src/modules/raises/service.ts +91 -20
  661. package/src/modules/recordTargets.ts +2 -0
  662. package/src/modules/references.ts +43 -4
  663. package/src/modules/sample-data/fixture.ts +690 -0
  664. package/src/modules/sample-data/index.ts +51 -0
  665. package/src/modules/sample-data/routes.ts +50 -0
  666. package/src/modules/sample-data/service.ts +679 -0
  667. package/src/modules/sample-data/tools.ts +32 -0
  668. package/src/modules/search/index.ts +2 -1
  669. package/src/modules/search/repository.ts +33 -1
  670. package/src/modules/search/service.ts +7 -5
  671. package/src/modules/smtp-email/index.ts +8 -1
  672. package/src/modules/stagedRecords.ts +18 -3
  673. package/src/modules/webhooks/payloads.ts +20 -2
  674. package/src/modules/workspace/repository.ts +12 -0
  675. package/src/modules/workspace/service.ts +27 -1
  676. package/src/modules/workspace/starters.ts +5 -0
  677. package/src/runtime/events.ts +1 -0
  678. package/src/schema/index.ts +4 -0
  679. package/src/testing/database.ts +97 -11
@@ -1,10 +1,10 @@
1
- import { and, asc, eq, ilike, inArray, or, sql } from 'drizzle-orm';
1
+ import { and, eq, ilike, inArray, or, sql } from 'drizzle-orm';
2
2
  import { keysetCondition, orderByWindow, textSort, timestampSort } from '../../lib/pagination.js';
3
3
  import { arrayContainsPattern, containsPattern } from '../../lib/search.js';
4
4
  import { companies } from '../companies/schema.js';
5
- import { people } from '../people/schema.js';
5
+ import { anyPersonLinked } from '../personLinks.js';
6
6
  import { workspaceMembers } from '../workspace/schema.js';
7
- import { dealPeople, deals } from './schema.js';
7
+ import { deals } from './schema.js';
8
8
  /** The sort fields `?sort=` documents for deals. Nullable columns (value, close date) stay out: a keyset cannot seek past a null. */
9
9
  export const DEAL_SORTS = {
10
10
  name: textSort(deals.name, (deal) => deal.name),
@@ -25,14 +25,6 @@ function companyNameMatches(pattern) {
25
25
  and ${companies.name} ilike ${pattern}
26
26
  )`;
27
27
  }
28
- function hasAnyOfPeople(personIds) {
29
- return sql `exists (
30
- select 1
31
- from ${dealPeople}
32
- where ${dealPeople.dealId} = ${deals.id}
33
- and ${inArray(dealPeople.personId, personIds)}
34
- )`;
35
- }
36
28
  function matchesTerm(term) {
37
29
  const pattern = containsPattern(term);
38
30
  return or(ilike(deals.name, pattern), ilike(deals.summary, pattern), arrayContainsPattern(deals.tags, pattern), arrayContainsPattern(deals.competitors, pattern), companyNameMatches(pattern));
@@ -43,7 +35,9 @@ function conditionsFor(workspaceId, filters) {
43
35
  filters.term === undefined ? undefined : matchesTerm(filters.term),
44
36
  filters.companyIds === undefined ? undefined : inArray(deals.companyId, filters.companyIds),
45
37
  filters.stageIds === undefined ? undefined : inArray(deals.stageId, filters.stageIds),
46
- filters.personIds === undefined ? undefined : hasAnyOfPeople(filters.personIds),
38
+ filters.personIds === undefined
39
+ ? undefined
40
+ : anyPersonLinked('deal', deals.id, deals.workspaceId, filters.personIds),
47
41
  ];
48
42
  }
49
43
  /** @returns Up to `window.fetchLimit` rows: one more than the page, so the caller can tell there is a next one. */
@@ -85,70 +79,6 @@ export async function deleteDeal(db, workspaceId, id) {
85
79
  .returning({ id: deals.id });
86
80
  return deleted.length;
87
81
  }
88
- /** The people on one deal. Ordered by id so a response is stable across reads. */
89
- export async function listPersonIds(db, dealId) {
90
- const rows = await db
91
- .select({ personId: dealPeople.personId })
92
- .from(dealPeople)
93
- .where(eq(dealPeople.dealId, dealId))
94
- .orderBy(asc(dealPeople.personId));
95
- return rows.map((row) => row.personId);
96
- }
97
- /**
98
- * The people on each of a page of deals, in one query rather than one per row.
99
- *
100
- * @returns Ids missing from the map have no people.
101
- */
102
- export async function listPersonIdsFor(db, dealIds) {
103
- if (dealIds.length === 0) {
104
- return new Map();
105
- }
106
- const rows = await db
107
- .select({ dealId: dealPeople.dealId, personId: dealPeople.personId })
108
- .from(dealPeople)
109
- .where(inArray(dealPeople.dealId, dealIds))
110
- .orderBy(asc(dealPeople.personId));
111
- const byDeal = new Map();
112
- for (const row of rows) {
113
- const existing = byDeal.get(row.dealId);
114
- if (existing === undefined) {
115
- byDeal.set(row.dealId, [row.personId]);
116
- }
117
- else {
118
- existing.push(row.personId);
119
- }
120
- }
121
- return byDeal;
122
- }
123
- export async function insertDealPeople(db, dealId, personIds) {
124
- if (personIds.length === 0) {
125
- return;
126
- }
127
- await db.insert(dealPeople).values(personIds.map((personId) => ({ dealId, personId })));
128
- }
129
- export async function deleteDealPeople(db, dealId, personIds) {
130
- if (personIds.length === 0) {
131
- return;
132
- }
133
- await db
134
- .delete(dealPeople)
135
- .where(and(eq(dealPeople.dealId, dealId), inArray(dealPeople.personId, personIds)));
136
- }
137
- /**
138
- * The names of these people in this workspace, keyed by id. An id missing from
139
- * the map does not exist here, which is how `person_ids` is validated. Reads the
140
- * `people` *table*, per the cross-relation rule in `architecture.md`.
141
- */
142
- export async function findPeopleNamed(db, workspaceId, personIds) {
143
- if (personIds.length === 0) {
144
- return new Map();
145
- }
146
- const rows = await db
147
- .select({ id: people.id, name: people.name })
148
- .from(people)
149
- .where(and(eq(people.workspaceId, workspaceId), inArray(people.id, personIds)));
150
- return new Map(rows.map((row) => [row.id, row.name]));
151
- }
152
82
  /** Whether a member belongs to this workspace, for validating `owner_id`. */
153
83
  export async function memberExists(db, workspaceId, memberId) {
154
84
  const [found] = await db
@@ -1 +1 @@
1
- {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../src/modules/deals/repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../src/modules/deals/repository.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,13 @@ export declare const createBody: z.ZodObject<{
23
23
  summary: z.ZodDefault<z.ZodString>;
24
24
  tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
25
25
  external_id: z.ZodDefault<z.ZodNullable<z.ZodString>>;
26
+ custom_fields: z.ZodDefault<z.ZodType<Readonly<Record<string, string | number | boolean | string[] | {
27
+ amount_cents: number;
28
+ currency: string;
29
+ } | null>>, unknown, z.core.$ZodTypeInternals<Readonly<Record<string, string | number | boolean | string[] | {
30
+ amount_cents: number;
31
+ currency: string;
32
+ } | null>>, unknown>>>;
26
33
  }, z.core.$strict>;
27
34
  export declare const updateBody: z.ZodObject<{
28
35
  name: z.ZodOptional<z.ZodString>;
@@ -39,6 +46,13 @@ export declare const updateBody: z.ZodObject<{
39
46
  summary: z.ZodOptional<z.ZodString>;
40
47
  tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
41
48
  external_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
49
+ custom_fields: z.ZodOptional<z.ZodType<Readonly<Record<string, string | number | boolean | string[] | {
50
+ amount_cents: number;
51
+ currency: string;
52
+ } | null>>, unknown, z.core.$ZodTypeInternals<Readonly<Record<string, string | number | boolean | string[] | {
53
+ amount_cents: number;
54
+ currency: string;
55
+ } | null>>, unknown>>>;
42
56
  }, z.core.$strict>;
43
57
  export interface DealsRoutesDependencies extends CredentialDependencies {
44
58
  readonly service: DealsService;
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/modules/deals/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,MAAM,CAAA;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAMvB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAsB5F;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;kBAcrB,CAAA;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;kBAAsC,CAAA;AAE7D,MAAM,WAAW,uBAAwB,SAAQ,sBAAsB;IACrE,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAC/B;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,GAAG,eAAe,CAiB/E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,GAAG,eAAe,CAiB/E;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoBpE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,uBAAuB,GAAG,IAAI,CA+C1F"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/modules/deals/routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,MAAM,CAAA;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAMvB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAEpE,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAuB5F;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;kBAerB,CAAA;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;kBAAsC,CAAA;AAE7D,MAAM,WAAW,uBAAwB,SAAQ,sBAAsB;IACrE,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAC/B;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,GAAG,eAAe,CAkB/E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,GAAG,eAAe,CAkB/E;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqBpE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,uBAAuB,GAAG,IAAI,CA+C1F"}
@@ -1,7 +1,9 @@
1
+ import { customFieldsPatchShape } from '@kelpie/schemas';
1
2
  import { z } from 'zod';
2
3
  import { isoDateSchema } from '../../lib/dates.js';
3
4
  import { pageBody, readIdFilter, readJsonBody, readListParameters } from '../../lib/http.js';
4
5
  import { resolveActorFrom } from '../auth/credentials.js';
6
+ import { renderCustomFieldsForWire } from '../custom-fields/wire.js';
5
7
  /** Wire shapes for `/v1/deals`. Bodies are strict; an unknown field is a 422, per `api.md`. */
6
8
  /** The full field set, without defaults. `createBody` adds those; `updateBody` makes it partial. */
7
9
  const dealShape = {
@@ -19,6 +21,7 @@ const dealShape = {
19
21
  summary: z.string(),
20
22
  tags: z.array(z.string().min(1)),
21
23
  external_id: z.string().min(1).nullable(),
24
+ custom_fields: customFieldsPatchShape,
22
25
  };
23
26
  /**
24
27
  * Only `name` and `company_id` are required. An absent `stage_id` lands in the
@@ -40,6 +43,7 @@ export const createBody = z.strictObject({
40
43
  summary: dealShape.summary.default(''),
41
44
  tags: dealShape.tags.default([]),
42
45
  external_id: dealShape.external_id.default(null),
46
+ custom_fields: dealShape.custom_fields.default({}),
43
47
  });
44
48
  export const updateBody = z.strictObject(dealShape).partial();
45
49
  export function toCreateInput(body) {
@@ -58,6 +62,7 @@ export function toCreateInput(body) {
58
62
  summary: body.summary,
59
63
  tags: body.tags,
60
64
  externalId: body.external_id,
65
+ customFields: body.custom_fields,
61
66
  };
62
67
  }
63
68
  export function toUpdateInput(body) {
@@ -76,6 +81,7 @@ export function toUpdateInput(body) {
76
81
  ...(body.summary === undefined ? {} : { summary: body.summary }),
77
82
  ...(body.tags === undefined ? {} : { tags: body.tags }),
78
83
  ...(body.external_id === undefined ? {} : { externalId: body.external_id }),
84
+ ...(body.custom_fields === undefined ? {} : { customFields: body.custom_fields }),
79
85
  };
80
86
  }
81
87
  export function dealResponse(deal) {
@@ -95,6 +101,7 @@ export function dealResponse(deal) {
95
101
  summary: deal.summary,
96
102
  tags: deal.tags,
97
103
  external_id: deal.externalId,
104
+ custom_fields: renderCustomFieldsForWire(deal.customFields),
98
105
  created_at: deal.createdAt.toISOString(),
99
106
  updated_at: deal.updatedAt.toISOString(),
100
107
  };
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/modules/deals/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/modules/deals/routes.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { CustomFieldValue } from '@kelpie/schemas';
1
2
  /**
2
3
  * The sales pipeline. Money is integer cents plus a currency code, never a float
3
4
  * (`api.md`).
@@ -316,6 +317,25 @@ export declare const deals: import("drizzle-orm/pg-core").PgTableWithColumns<{
316
317
  identity: undefined;
317
318
  generated: undefined;
318
319
  }, {}, {}>;
320
+ customFields: import("drizzle-orm/pg-core").PgColumn<{
321
+ name: "custom_fields";
322
+ tableName: "deals";
323
+ dataType: "json";
324
+ columnType: "PgJsonb";
325
+ data: Readonly<Record<string, CustomFieldValue>>;
326
+ driverParam: unknown;
327
+ notNull: true;
328
+ hasDefault: true;
329
+ isPrimaryKey: false;
330
+ isAutoincrement: false;
331
+ hasRuntimeDefault: false;
332
+ enumValues: undefined;
333
+ baseColumn: never;
334
+ identity: undefined;
335
+ generated: undefined;
336
+ }, {}, {
337
+ $type: Readonly<Record<string, CustomFieldValue>>;
338
+ }>;
319
339
  createdAt: import("drizzle-orm/pg-core").PgColumn<{
320
340
  name: "created_at";
321
341
  tableName: "deals";
@@ -374,46 +394,4 @@ export declare const deals: import("drizzle-orm/pg-core").PgTableWithColumns<{
374
394
  };
375
395
  dialect: 'pg';
376
396
  }>;
377
- /** People attached to a deal. Restrict on person: a deal contact cannot vanish. */
378
- export declare const dealPeople: import("drizzle-orm/pg-core").PgTableWithColumns<{
379
- name: "deal_people";
380
- schema: undefined;
381
- columns: {
382
- dealId: import("drizzle-orm/pg-core").PgColumn<{
383
- name: "deal_id";
384
- tableName: "deal_people";
385
- dataType: "string";
386
- columnType: "PgText";
387
- data: string;
388
- driverParam: string;
389
- notNull: true;
390
- hasDefault: false;
391
- isPrimaryKey: false;
392
- isAutoincrement: false;
393
- hasRuntimeDefault: false;
394
- enumValues: [string, ...string[]];
395
- baseColumn: never;
396
- identity: undefined;
397
- generated: undefined;
398
- }, {}, {}>;
399
- personId: import("drizzle-orm/pg-core").PgColumn<{
400
- name: "person_id";
401
- tableName: "deal_people";
402
- dataType: "string";
403
- columnType: "PgText";
404
- data: string;
405
- driverParam: string;
406
- notNull: true;
407
- hasDefault: false;
408
- isPrimaryKey: false;
409
- isAutoincrement: false;
410
- hasRuntimeDefault: false;
411
- enumValues: [string, ...string[]];
412
- baseColumn: never;
413
- identity: undefined;
414
- generated: undefined;
415
- }, {}, {}>;
416
- };
417
- dialect: 'pg';
418
- }>;
419
397
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/modules/deals/schema.ts"],"names":[],"mappings":"AASA;;;;;;GAMG;AACH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyCjB,CAAA;AAED,mFAAmF;AACnF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWtB,CAAA"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/modules/deals/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AASvD;;;;;;GAMG;AACH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8CjB,CAAA"}
@@ -1,7 +1,6 @@
1
- import { bigint, date, index, pgTable, primaryKey, text } from 'drizzle-orm/pg-core';
1
+ import { bigint, date, index, jsonb, pgTable, text } from 'drizzle-orm/pg-core';
2
2
  import { createdAt, primaryId, searchVector, updatedAt } from '../../lib/columns.js';
3
3
  import { companies } from '../companies/schema.js';
4
- import { people } from '../people/schema.js';
5
4
  import { pipelineStages } from '../pipelines/schema.js';
6
5
  import { workspaceMembers, workspaces } from '../workspace/schema.js';
7
6
  /**
@@ -33,6 +32,11 @@ export const deals = pgTable('deals', {
33
32
  summary: text('summary').notNull().default(''),
34
33
  tags: text('tags').array().notNull().default([]),
35
34
  externalId: text('external_id'),
35
+ // Workspace-defined fields, keyed by definition key. See people/schema.ts.
36
+ customFields: jsonb('custom_fields')
37
+ .$type()
38
+ .notNull()
39
+ .default({}),
36
40
  createdAt: createdAt(),
37
41
  updatedAt: updatedAt(),
38
42
  searchVector: searchVector(() => [
@@ -49,13 +53,4 @@ export const deals = pgTable('deals', {
49
53
  index('deals_stage_idx').on(table.stageId),
50
54
  index('deals_search_idx').using('gin', table.searchVector),
51
55
  ]);
52
- /** People attached to a deal. Restrict on person: a deal contact cannot vanish. */
53
- export const dealPeople = pgTable('deal_people', {
54
- dealId: text('deal_id')
55
- .notNull()
56
- .references(() => deals.id, { onDelete: 'cascade' }),
57
- personId: text('person_id')
58
- .notNull()
59
- .references(() => people.id, { onDelete: 'restrict' }),
60
- }, (table) => [primaryKey({ columns: [table.dealId, table.personId] })]);
61
56
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/modules/deals/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/modules/deals/schema.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { CustomFieldWireValue } from '@kelpie/schemas';
1
2
  import type { Database } from '../../lib/database.ts';
2
3
  import type { IdFactory } from '../../lib/ids.ts';
3
4
  import type { ListQueryParameters, Page } from '../../lib/pagination.ts';
@@ -5,12 +6,13 @@ import type { TransactionScope } from '../../runtime/transaction.ts';
5
6
  import type { ActivityRecorder } from '../activities/recorder.ts';
6
7
  import type { Actor } from '../auth/actor.ts';
7
8
  import './events.ts';
9
+ import type { CustomFieldValuesValidator } from '../custom-fields/values.ts';
8
10
  import type { DealFilters, DealRecord } from './repository.ts';
9
11
  /**
10
12
  * Deals: the sales pipeline, and the first of the four staged objects.
11
13
  *
12
- * People attach through `deal_people` and appear as `person_ids` on the wire;
13
- * the join table is a storage detail. A stage move is an ordinary PATCH of
14
+ * People attach through `person_links` and appear as `person_ids` on the wire;
15
+ * the polymorphic link table is a storage detail. A stage move is an ordinary PATCH of
14
16
  * `stage_id`, and it is the one change that files a `stage_changed` activity and
15
17
  * a `stage.changed` event instead of the generic update pair.
16
18
  */
@@ -20,6 +22,7 @@ export interface DealsDependencies {
20
22
  readonly createId: IdFactory;
21
23
  readonly now: () => Date;
22
24
  readonly recordActivity: ActivityRecorder;
25
+ readonly customFields: CustomFieldValuesValidator;
23
26
  }
24
27
  /** A deal as the API returns one: the stored row minus tenancy, plus its people. */
25
28
  export type DealView = Omit<DealRecord, 'workspaceId'> & {
@@ -42,6 +45,8 @@ export interface CreateDealInput {
42
45
  readonly summary: string;
43
46
  readonly tags: readonly string[];
44
47
  readonly externalId: string | null;
48
+ /** Wire shape for a create body: `null` values are ignored, non-null are validated. */
49
+ readonly customFields: Readonly<Record<string, CustomFieldWireValue | null>> | undefined;
45
50
  }
46
51
  /** PATCH semantics: an absent field is left alone, and null clears a nullable one. */
47
52
  export interface UpdateDealInput {
@@ -60,6 +65,12 @@ export interface UpdateDealInput {
60
65
  readonly summary?: string | undefined;
61
66
  readonly tags?: readonly string[] | undefined;
62
67
  readonly externalId?: string | null | undefined;
68
+ /**
69
+ * Partial merge patch (wire shape): sent keys change, `null` clears a key,
70
+ * absent keys are left alone. The whole object is undefined when the caller
71
+ * sent nothing at all. Unknown keys are `422`.
72
+ */
73
+ readonly customFields?: Readonly<Record<string, CustomFieldWireValue | null>> | undefined;
63
74
  }
64
75
  export interface DealsService {
65
76
  list(actor: Actor, filters: DealFilters, query: ListQueryParameters): Promise<Page<DealView>>;
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/modules/deals/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/modules/deals/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAG3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAUjE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,aAAa,CAAA;AAGpB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AAM5E,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE9D;;;;;;;GAOG;AAEH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAA;IACtC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,IAAI,CAAA;IACxB,QAAQ,CAAC,cAAc,EAAE,gBAAgB,CAAA;IACzC,QAAQ,CAAC,YAAY,EAAE,0BAA0B,CAAA;CAClD;AAkBD,oFAAoF;AACpF,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG;IAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAA;AAElG,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAC3C,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,uFAAuF;IACvF,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAA;CACzF;AAED,sFAAsF;AACtF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAC/C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAC7C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAC5C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAClD,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;IAClD,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;IACpD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAC/C;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAA;CAC1F;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC7F,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAChD,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC/D,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC7E,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAChD;AA0BD,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,iBAAiB,GAAG,YAAY,CAiWhF"}
@@ -7,6 +7,7 @@ import { actorMemberId, requireWorkspaceId } from '../auth/actor.js';
7
7
  import './events.js';
8
8
  import { deleteRecordsAttachedTo } from '../attachedRecords.js';
9
9
  import * as companyRepository from '../companies/repository.js';
10
+ import * as personLinks from '../personLinks.js';
10
11
  import * as pipelineRepository from '../pipelines/repository.js';
11
12
  import * as repository from './repository.js';
12
13
  import { DEAL_SORTS, DEFAULT_DEAL_SORT } from './repository.js';
@@ -96,7 +97,7 @@ export function createDealsService(dependencies) {
96
97
  }
97
98
  /** @returns Each person's name, for the link activities. Any id missing here is a 404. */
98
99
  async function requirePeople(workspaceId, personIds) {
99
- const named = await repository.findPeopleNamed(dependencies.db, workspaceId, personIds);
100
+ const named = await personLinks.findPeopleNamed(dependencies.db, workspaceId, personIds);
100
101
  const missing = personIds.filter((id) => !named.has(id));
101
102
  if (missing.length > 0) {
102
103
  throw new AppError('not_found', 'Person not found', missing.map((id) => ({ field: 'person_ids', message: `No person ${id} here` })));
@@ -104,8 +105,8 @@ export function createDealsService(dependencies) {
104
105
  return named;
105
106
  }
106
107
  /** @returns The page's views, with every deal's people fetched in one query. */
107
- async function toViews(records) {
108
- const peopleByDeal = await repository.listPersonIdsFor(dependencies.db, records.map((record) => record.id));
108
+ async function toViews(workspaceId, records) {
109
+ const peopleByDeal = await personLinks.listPersonIdsFor(dependencies.db, workspaceId, 'deal', records.map((record) => record.id));
109
110
  return records.map((record) => toView(record, peopleByDeal.get(record.id) ?? []));
110
111
  }
111
112
  return {
@@ -114,12 +115,15 @@ export function createDealsService(dependencies) {
114
115
  const window = readListWindow(query, DEAL_SORTS, DEFAULT_DEAL_SORT);
115
116
  const rows = await repository.listDeals(dependencies.db, workspaceId, filters, window);
116
117
  const page = toPage(rows, window, (deal) => deal.id);
117
- return { items: await toViews(page.items), nextCursor: page.nextCursor };
118
+ return { items: await toViews(workspaceId, page.items), nextCursor: page.nextCursor };
118
119
  },
119
120
  async get(actor, id) {
120
121
  const workspaceId = requireWorkspaceId(actor);
121
122
  const deal = await require(workspaceId, id);
122
- return toView(deal, await repository.listPersonIds(dependencies.db, id));
123
+ return toView(deal, await personLinks.listPersonIds(dependencies.db, workspaceId, {
124
+ targetType: 'deal',
125
+ targetId: id,
126
+ }));
123
127
  },
124
128
  async create(actor, input) {
125
129
  const workspaceId = requireWorkspaceId(actor);
@@ -135,6 +139,7 @@ export function createDealsService(dependencies) {
135
139
  const named = await requirePeople(workspaceId, personIds);
136
140
  const id = dependencies.createId('deal');
137
141
  return dependencies.transaction(async ({ tx, events }) => {
142
+ const customFields = await dependencies.customFields.forCreate(tx, workspaceId, 'deal', input.customFields);
138
143
  const created = await repository.insertDeal(tx, {
139
144
  id,
140
145
  workspaceId,
@@ -151,8 +156,9 @@ export function createDealsService(dependencies) {
151
156
  summary: input.summary,
152
157
  tags: [...input.tags],
153
158
  externalId: input.externalId,
159
+ customFields,
154
160
  });
155
- await repository.insertDealPeople(tx, id, personIds);
161
+ await personLinks.linkPeople(tx, dependencies.createId, workspaceId, { targetType: 'deal', targetId: id }, personIds);
156
162
  await dependencies.recordActivity(tx, workspaceId, actor, {
157
163
  targetType: 'deal',
158
164
  targetId: id,
@@ -187,27 +193,33 @@ export function createDealsService(dependencies) {
187
193
  if (typeof changes.ownerId === 'string' && changes.ownerId !== existing.ownerId) {
188
194
  await requireOwner(workspaceId, changes.ownerId);
189
195
  }
190
- const currentPeople = await repository.listPersonIds(dependencies.db, id);
196
+ const currentPeople = await personLinks.listPersonIds(dependencies.db, workspaceId, {
197
+ targetType: 'deal',
198
+ targetId: id,
199
+ });
191
200
  const nextPeople = changes.personIds === undefined ? undefined : [...new Set(changes.personIds)];
192
201
  const added = nextPeople === undefined ? [] : nextPeople.filter((personId) => !currentPeople.includes(personId));
193
202
  const removed = nextPeople === undefined ? [] : currentPeople.filter((personId) => !nextPeople.includes(personId));
194
203
  const named = await requirePeople(workspaceId, [...added, ...removed]);
195
204
  const columns = toStoredColumns(changes);
196
- const changed = changedKeys(existing, columns);
205
+ const scalarChanged = changedKeys(existing, columns);
197
206
  const linksChanged = added.length > 0 || removed.length > 0;
198
- if (changed.length === 0 && !linksChanged) {
199
- return toView(existing, currentPeople);
200
- }
201
207
  return dependencies.transaction(async ({ tx, events }) => {
208
+ const cf = await dependencies.customFields.forUpdate(tx, workspaceId, 'deal', existing.customFields, changes.customFields);
209
+ const customFieldsChanged = cf !== undefined && cf.changedPaths.length > 0;
210
+ if (scalarChanged.length === 0 && !linksChanged && !customFieldsChanged) {
211
+ return toView(existing, currentPeople);
212
+ }
202
213
  const updated = await repository.updateDeal(tx, workspaceId, id, {
203
214
  ...columns,
215
+ ...(customFieldsChanged ? { customFields: cf.merged } : {}),
204
216
  updatedAt: dependencies.now(),
205
217
  });
206
218
  if (updated === undefined) {
207
219
  throw AppError.notFound('Deal not found');
208
220
  }
209
- await repository.insertDealPeople(tx, id, added);
210
- await repository.deleteDealPeople(tx, id, removed);
221
+ await personLinks.linkPeople(tx, dependencies.createId, workspaceId, { targetType: 'deal', targetId: id }, added);
222
+ await personLinks.unlinkPeople(tx, workspaceId, { targetType: 'deal', targetId: id }, removed);
211
223
  if (stageMove !== undefined) {
212
224
  await dependencies.recordActivity(tx, workspaceId, actor, {
213
225
  targetType: 'deal',
@@ -216,13 +228,18 @@ export function createDealsService(dependencies) {
216
228
  ...describeStageChange(stageMove.from.label, stageMove.to.label),
217
229
  });
218
230
  }
219
- const otherChanged = changed.filter((field) => field !== 'stageId');
220
- if (otherChanged.length > 0) {
231
+ const otherChanged = scalarChanged.filter((field) => field !== 'stageId');
232
+ const customFieldPaths = cf?.changedPaths ?? [];
233
+ const activityChanged = [...otherChanged, ...customFieldPaths];
234
+ if (activityChanged.length > 0) {
235
+ const labels = { ...DEAL_FIELD_LABELS, ...cf?.labels };
236
+ const before = { ...existing, ...cf?.flatBefore };
237
+ const after = { ...columns, ...cf?.flatAfter };
221
238
  await dependencies.recordActivity(tx, workspaceId, actor, {
222
239
  targetType: 'deal',
223
240
  targetId: id,
224
241
  kind: 'updated',
225
- ...describeUpdate(otherChanged, DEAL_FIELD_LABELS, existing, columns),
242
+ ...describeUpdate(activityChanged, labels, before, after),
226
243
  });
227
244
  }
228
245
  // Links land on the deal's timeline only: a person's page already rolls
@@ -244,7 +261,13 @@ export function createDealsService(dependencies) {
244
261
  ...describeUnlink('person', named.get(personId) ?? personId),
245
262
  });
246
263
  }
247
- events.emit('deals.deal.updated', { type: 'deal', id }, { changed: linksChanged ? [...changed, 'personIds'] : changed });
264
+ events.emit('deals.deal.updated', { type: 'deal', id }, {
265
+ changed: [
266
+ ...scalarChanged,
267
+ ...(linksChanged ? ['personIds'] : []),
268
+ ...customFieldPaths,
269
+ ],
270
+ });
248
271
  if (stageMove !== undefined) {
249
272
  events.emit('deals.deal.stage_changed', { type: 'deal', id }, { fromStageId: stageMove.from.id, toStageId: stageMove.to.id });
250
273
  }
@@ -255,9 +278,9 @@ export function createDealsService(dependencies) {
255
278
  const workspaceId = requireWorkspaceId(actor);
256
279
  await dependencies.transaction(async ({ tx, events }) => {
257
280
  await require(workspaceId, id);
258
- // `deal_people` dies with the deal through its foreign key and form
259
- // submissions unlink themselves; notes, activities, decisions and plan
260
- // items have no key, so they are removed here, in the same transaction.
281
+ // Form submissions unlink themselves through `set null`; notes,
282
+ // activities, decisions, plan items, and person_links have no key back
283
+ // to the deal, so they are removed here, in the same transaction.
261
284
  await deleteRecordsAttachedTo(tx, workspaceId, 'deal', id);
262
285
  await repository.deleteDeal(tx, workspaceId, id);
263
286
  events.emit('deals.deal.deleted', { type: 'deal', id }, {});