@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
@@ -4,13 +4,18 @@ import { createAgentTasksModule } from './agent-tasks/index.js';
4
4
  import { createApiKeysModule } from './api-keys/index.js';
5
5
  import { createAuthModule } from './auth/index.js';
6
6
  import { createCompaniesModule } from './companies/index.js';
7
+ import { createConsentPurposesModule } from './consent-purposes/index.js';
8
+ import { createCustomFieldsModule } from './custom-fields/index.js';
7
9
  import { createDashboardModule } from './dashboard/index.js';
8
10
  import { createDealsModule } from './deals/index.js';
9
11
  import { createDecisionsModule } from './decisions/index.js';
12
+ import { createEmailDomainLinkerModule } from './email-domain-linker/index.js';
13
+ import { createEnquiriesModule } from './enquiries/index.js';
10
14
  import { createFormsModule } from './forms/index.js';
11
15
  import { createHandbookModule } from './handbook/index.js';
12
16
  import { createHiringModule } from './hiring/index.js';
13
17
  import { createImportExportModule } from './import-export/index.js';
18
+ import { createListsModule } from './lists/index.js';
14
19
  import { createNotesModule } from './notes/index.js';
15
20
  import { createOpportunitiesModule } from './opportunities/index.js';
16
21
  import { createPartnershipsModule } from './partnerships/index.js';
@@ -19,6 +24,7 @@ import { createPipelinesModule } from './pipelines/index.js';
19
24
  import { createPlansModule } from './plans/index.js';
20
25
  import { createPositionsModule } from './positions/index.js';
21
26
  import { createRaisesModule } from './raises/index.js';
27
+ import { createSampleDataModule } from './sample-data/index.js';
22
28
  import { createSearchModule } from './search/index.js';
23
29
  import { createSmtpEmailModule } from './smtp-email/index.js';
24
30
  import { createWebhooksModule } from './webhooks/index.js';
@@ -40,6 +46,12 @@ export const coreModules = [
40
46
  createAuthModule(coreMigrationsDirectory),
41
47
  createWorkspaceModule(coreMigrationsDirectory),
42
48
  createApiKeysModule(coreMigrationsDirectory),
49
+ // Structural. Registers before People, Forms, Lists, and Import-Export so
50
+ // its table is defined when their fks and per-person consent join reach it.
51
+ createConsentPurposesModule(coreMigrationsDirectory),
52
+ // Structural. Registers before the six object modules so the validator
53
+ // factory it exports is present when they inject it into their services.
54
+ createCustomFieldsModule(coreMigrationsDirectory),
43
55
  createPeopleModule(coreMigrationsDirectory),
44
56
  createCompaniesModule(coreMigrationsDirectory),
45
57
  createPositionsModule(coreMigrationsDirectory),
@@ -47,12 +59,14 @@ export const coreModules = [
47
59
  createNotesModule(coreMigrationsDirectory),
48
60
  createPipelinesModule(coreMigrationsDirectory),
49
61
  createDealsModule(coreMigrationsDirectory),
62
+ createEnquiriesModule(coreMigrationsDirectory),
50
63
  createOpportunitiesModule(coreMigrationsDirectory),
51
64
  createPartnershipsModule(coreMigrationsDirectory),
52
65
  createRaisesModule(coreMigrationsDirectory),
53
66
  createHiringModule(coreMigrationsDirectory),
54
67
  createPlansModule(coreMigrationsDirectory),
55
68
  createDecisionsModule(coreMigrationsDirectory),
69
+ createListsModule(coreMigrationsDirectory),
56
70
  createHandbookModule(coreMigrationsDirectory),
57
71
  // Neither of these takes a migrations directory: they own no tables and read
58
72
  // other modules'.
@@ -62,6 +76,13 @@ export const coreModules = [
62
76
  createImportExportModule(coreMigrationsDirectory),
63
77
  createAgentTasksModule(coreMigrationsDirectory),
64
78
  createWebhooksModule(coreMigrationsDirectory),
79
+ // Owns no tables. One-shot fixture install for a new workspace, called from
80
+ // the setup wizard's checkbox and the admin data page.
81
+ createSampleDataModule(),
82
+ // Owns no tables. Admin action that reruns the email-domain sweep across
83
+ // every workspace Company — backfills links for data that predates the
84
+ // auto-linker, or after a bulk import.
85
+ createEmailDomainLinkerModule(),
65
86
  // Owns no tables. Registers a `'smtp'` provider with core's email runtime;
66
87
  // the factory only runs if the assembly's `email.provider` picks it.
67
88
  createSmtpEmailModule(),
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/modules/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/modules/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { LimitCapability } from '../../runtime/entitlements.ts';
2
+ /**
3
+ * How many custom-field definitions one workspace may have across every object
4
+ * type. Open source answers unlimited; the cloud can gate it later without a
5
+ * core change.
6
+ *
7
+ * The workspace-wide count is what an entitlement caps. A per-(workspace,
8
+ * object_type) ceiling is enforced separately in the service as a hard cap that
9
+ * protects the database from a runaway create loop.
10
+ */
11
+ export declare const CUSTOM_FIELDS_LIMIT: LimitCapability;
12
+ //# sourceMappingURL=capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../src/modules/custom-fields/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpE;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,EAAE,eAKjC,CAAA"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * How many custom-field definitions one workspace may have across every object
3
+ * type. Open source answers unlimited; the cloud can gate it later without a
4
+ * core change.
5
+ *
6
+ * The workspace-wide count is what an entitlement caps. A per-(workspace,
7
+ * object_type) ceiling is enforced separately in the service as a hard cap that
8
+ * protects the database from a runaway create loop.
9
+ */
10
+ export const CUSTOM_FIELDS_LIMIT = {
11
+ name: 'custom_fields.limit',
12
+ kind: 'limit',
13
+ description: 'How many custom-field definitions one workspace may have across every object type. Unlimited in open source.',
14
+ };
15
+ //# sourceMappingURL=capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/modules/custom-fields/capabilities.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAoB;IAClD,IAAI,EAAE,qBAAqB;IAC3B,IAAI,EAAE,OAAO;IACb,WAAW,EACT,8GAA8G;CACjH,CAAA"}
@@ -0,0 +1,49 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Domain events published by the custom-fields module.
4
+ *
5
+ * `target` is the definition. The value-side changes ride each object module's
6
+ * own `.updated` event, with per-key entries in `changed` shaped as
7
+ * `customFields.<key>`. The webhooks bridge does not translate any of these —
8
+ * `custom_fields.field` is not in `RECORD_OBJECT_TYPES`, and there is no
9
+ * `record.*` wire event for a definition CRUD, so the four-event wire catalog
10
+ * stays unchanged.
11
+ */
12
+ export declare const customFieldsEvents: {
13
+ 'custom_fields.field.created': z.ZodObject<{
14
+ objectType: z.ZodString;
15
+ key: z.ZodString;
16
+ }, z.core.$strip>;
17
+ 'custom_fields.field.updated': z.ZodObject<{
18
+ objectType: z.ZodString;
19
+ key: z.ZodString;
20
+ changed: z.ZodReadonly<z.ZodArray<z.ZodString>>;
21
+ }, z.core.$strip>;
22
+ 'custom_fields.field.deleted': z.ZodObject<{
23
+ objectType: z.ZodString;
24
+ key: z.ZodString;
25
+ strippedRecordCount: z.ZodNumber;
26
+ }, z.core.$strip>;
27
+ };
28
+ export interface CustomFieldCreatedData {
29
+ readonly objectType: string;
30
+ readonly key: string;
31
+ }
32
+ export interface CustomFieldUpdatedData {
33
+ readonly objectType: string;
34
+ readonly key: string;
35
+ readonly changed: readonly string[];
36
+ }
37
+ export interface CustomFieldDeletedData {
38
+ readonly objectType: string;
39
+ readonly key: string;
40
+ readonly strippedRecordCount: number;
41
+ }
42
+ declare module '../../runtime/events.ts' {
43
+ interface KelpieEventMap {
44
+ 'custom_fields.field.created': CustomFieldCreatedData;
45
+ 'custom_fields.field.updated': CustomFieldUpdatedData;
46
+ 'custom_fields.field.deleted': CustomFieldDeletedData;
47
+ }
48
+ }
49
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/modules/custom-fields/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB;;;;;;;;;GASG;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;CAYD,CAAA;AAE9B,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AACD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CACpC;AACD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;CACrC;AAED,OAAO,QAAQ,yBAAyB,CAAC;IACvC,UAAU,cAAc;QACtB,6BAA6B,EAAE,sBAAsB,CAAA;QACrD,6BAA6B,EAAE,sBAAsB,CAAA;QACrD,6BAA6B,EAAE,sBAAsB,CAAA;KACtD;CACF"}
@@ -0,0 +1,25 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Domain events published by the custom-fields module.
4
+ *
5
+ * `target` is the definition. The value-side changes ride each object module's
6
+ * own `.updated` event, with per-key entries in `changed` shaped as
7
+ * `customFields.<key>`. The webhooks bridge does not translate any of these —
8
+ * `custom_fields.field` is not in `RECORD_OBJECT_TYPES`, and there is no
9
+ * `record.*` wire event for a definition CRUD, so the four-event wire catalog
10
+ * stays unchanged.
11
+ */
12
+ export const customFieldsEvents = {
13
+ 'custom_fields.field.created': z.object({ objectType: z.string(), key: z.string() }),
14
+ 'custom_fields.field.updated': z.object({
15
+ objectType: z.string(),
16
+ key: z.string(),
17
+ changed: z.array(z.string()).readonly(),
18
+ }),
19
+ 'custom_fields.field.deleted': z.object({
20
+ objectType: z.string(),
21
+ key: z.string(),
22
+ strippedRecordCount: z.number().int(),
23
+ }),
24
+ };
25
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/modules/custom-fields/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,6BAA6B,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;IACpF,6BAA6B,EAAE,CAAC,CAAC,MAAM,CAAC;QACtC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KACxC,CAAC;IACF,6BAA6B,EAAE,CAAC,CAAC,MAAM,CAAC;QACtC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;KACtC,CAAC;CAC0B,CAAA"}
@@ -0,0 +1,19 @@
1
+ import type { KelpieModule } from '../../runtime/module.ts';
2
+ /**
3
+ * Custom fields: workspace-defined attributes for the six taggable record
4
+ * types. Structural because records carry values keyed by definition key, so a
5
+ * disabled module would leave the values on records with no way to read them.
6
+ *
7
+ * Requires the six object modules only for schema visibility: the strip-on-
8
+ * delete pass reads their tables through `stripKeyFromRecords`, and drizzle-kit
9
+ * needs the barrel to see them registered before this module's schema loads.
10
+ * Runtime dependency runs the other way — the six modules `requires` this one
11
+ * so the validator is present when they register.
12
+ *
13
+ * Exports the values factory so the six object modules can inject it into
14
+ * their services (`createCustomFieldValues` is the cross-module seam here).
15
+ */
16
+ export { createCustomFieldValues, } from './values.ts';
17
+ export type { CustomFieldValuesValidator, CustomFieldsMerge, StoredCustomFieldValue, } from './values.ts';
18
+ export declare function createCustomFieldsModule(migrationsDirectory: string): KelpieModule;
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/custom-fields/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAQ3D;;;;;;;;;;;;;GAaG;AACH,OAAO,EACL,uBAAuB,GACxB,MAAM,aAAa,CAAA;AACpB,YAAY,EACV,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,aAAa,CAAA;AAEpB,wBAAgB,wBAAwB,CAAC,mBAAmB,EAAE,MAAM,GAAG,YAAY,CA6BlF"}
@@ -0,0 +1,46 @@
1
+ import { CUSTOM_FIELDS_LIMIT } from './capabilities.js';
2
+ import { customFieldsEvents } from './events.js';
3
+ import { mountCustomFieldsRoutes } from './routes.js';
4
+ import * as schema from './schema.js';
5
+ import { createCustomFieldDefinitionsService } from './service.js';
6
+ import { registerCustomFieldsTools } from './tools.js';
7
+ /**
8
+ * Custom fields: workspace-defined attributes for the six taggable record
9
+ * types. Structural because records carry values keyed by definition key, so a
10
+ * disabled module would leave the values on records with no way to read them.
11
+ *
12
+ * Requires the six object modules only for schema visibility: the strip-on-
13
+ * delete pass reads their tables through `stripKeyFromRecords`, and drizzle-kit
14
+ * needs the barrel to see them registered before this module's schema loads.
15
+ * Runtime dependency runs the other way — the six modules `requires` this one
16
+ * so the validator is present when they register.
17
+ *
18
+ * Exports the values factory so the six object modules can inject it into
19
+ * their services (`createCustomFieldValues` is the cross-module seam here).
20
+ */
21
+ export { createCustomFieldValues, } from './values.js';
22
+ export function createCustomFieldsModule(migrationsDirectory) {
23
+ return {
24
+ id: 'custom-fields',
25
+ requires: ['workspace'],
26
+ structural: true,
27
+ events: customFieldsEvents,
28
+ register(context) {
29
+ context.entitlements.declare(CUSTOM_FIELDS_LIMIT);
30
+ const service = createCustomFieldDefinitionsService({
31
+ db: context.db,
32
+ transaction: context.transaction,
33
+ createId: context.createId,
34
+ now: context.now,
35
+ entitlements: context.entitlements,
36
+ });
37
+ context.schema(schema, migrationsDirectory);
38
+ context.routes((router) => {
39
+ mountCustomFieldsRoutes(router, { db: context.db, now: context.now, service });
40
+ });
41
+ registerCustomFieldsTools(context.mcp, service);
42
+ return Promise.resolve();
43
+ },
44
+ };
45
+ }
46
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/custom-fields/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,mCAAmC,EAAE,MAAM,cAAc,CAAA;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAEtD;;;;;;;;;;;;;GAaG;AACH,OAAO,EACL,uBAAuB,GACxB,MAAM,aAAa,CAAA;AAOpB,MAAM,UAAU,wBAAwB,CAAC,mBAA2B;IAClE,OAAO;QACL,EAAE,EAAE,eAAe;QACnB,QAAQ,EAAE,CAAC,WAAW,CAAC;QACvB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,kBAAkB;QAE1B,QAAQ,CAAC,OAAO;YACd,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;YAEjD,MAAM,OAAO,GAAG,mCAAmC,CAAC;gBAClD,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,YAAY,EAAE,OAAO,CAAC,YAAY;aACnC,CAAC,CAAA;YAEF,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;YAE3C,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;gBACxB,uBAAuB,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;YAChF,CAAC,CAAC,CAAA;YAEF,yBAAyB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAE/C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QAC1B,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { ListWindow, SortableFields } from '../../lib/pagination.ts';
2
+ import type { Queryable } from '../../runtime/transaction.ts';
3
+ import type { CustomFieldObjectType } from './schema.ts';
4
+ import { customFieldDefinitions } from './schema.ts';
5
+ export type CustomFieldDefinitionRecord = typeof customFieldDefinitions.$inferSelect;
6
+ export type CustomFieldDefinitionColumns = typeof customFieldDefinitions.$inferInsert;
7
+ export declare const CUSTOM_FIELD_DEFINITION_SORTS: SortableFields<CustomFieldDefinitionRecord>;
8
+ export declare const DEFAULT_CUSTOM_FIELD_DEFINITION_SORT = "sort_order";
9
+ export interface CustomFieldDefinitionFilters {
10
+ readonly term?: string | undefined;
11
+ readonly objectType?: CustomFieldObjectType | undefined;
12
+ }
13
+ export declare function listDefinitions(db: Queryable, workspaceId: string, filters: CustomFieldDefinitionFilters, window: ListWindow<CustomFieldDefinitionRecord>): Promise<CustomFieldDefinitionRecord[]>;
14
+ export declare function findDefinition(db: Queryable, workspaceId: string, id: string): Promise<CustomFieldDefinitionRecord | undefined>;
15
+ /**
16
+ * Every definition for one workspace, ordered as the editor renders them.
17
+ *
18
+ * Not paged: a workspace's whole set is small (hard cap 100 per object type),
19
+ * and every write path — validation, delete-strip — needs the definitions for
20
+ * one object type at once.
21
+ */
22
+ export declare function definitionsForObject(db: Queryable, workspaceId: string, objectType: CustomFieldObjectType): Promise<CustomFieldDefinitionRecord[]>;
23
+ export declare function countDefinitions(db: Queryable, workspaceId: string): Promise<number>;
24
+ export declare function insertDefinition(db: Queryable, values: CustomFieldDefinitionColumns): Promise<CustomFieldDefinitionRecord>;
25
+ export declare function updateDefinition(db: Queryable, workspaceId: string, id: string, changes: Partial<CustomFieldDefinitionColumns>): Promise<CustomFieldDefinitionRecord | undefined>;
26
+ export declare function deleteDefinition(db: Queryable, workspaceId: string, id: string): Promise<number>;
27
+ /**
28
+ * Removes one key from every record of one object type in one workspace.
29
+ *
30
+ * Uses `?` to skip rows that never carried the key, so the write set is only
31
+ * the rows that actually held a value. The `-` operator on jsonb returns the
32
+ * object without that key; a key that was not present is a no-op.
33
+ */
34
+ export declare function stripKeyFromRecords(db: Queryable, workspaceId: string, objectType: CustomFieldObjectType, key: string): Promise<number>;
35
+ /** Bulk row read for a caller that already has a set of ids to update. */
36
+ export declare function readCustomFieldsById(db: Queryable, workspaceId: string, objectType: CustomFieldObjectType, ids: readonly string[]): Promise<Map<string, Readonly<Record<string, unknown>>>>;
37
+ //# sourceMappingURL=repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../src/modules/custom-fields/repository.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAEzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAQ7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEpD,MAAM,MAAM,2BAA2B,GAAG,OAAO,sBAAsB,CAAC,YAAY,CAAA;AACpF,MAAM,MAAM,4BAA4B,GAAG,OAAO,sBAAsB,CAAC,YAAY,CAAA;AAErF,eAAO,MAAM,6BAA6B,EAAE,cAAc,CAAC,2BAA2B,CAgBrF,CAAA;AAED,eAAO,MAAM,oCAAoC,eAAe,CAAA;AAEhE,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAA;CACxD;AAiBD,wBAAgB,eAAe,CAC7B,EAAE,EAAE,SAAS,EACb,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,4BAA4B,EACrC,MAAM,EAAE,UAAU,CAAC,2BAA2B,CAAC,GAC9C,OAAO,CAAC,2BAA2B,EAAE,CAAC,CASxC;AAED,wBAAsB,cAAc,CAClC,EAAE,EAAE,SAAS,EACb,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC,CAQlD;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,SAAS,EACb,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAWxC;AAED,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,SAAS,EACb,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC,2BAA2B,CAAC,CAQtC;AAED,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,SAAS,EACb,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CAAC,4BAA4B,CAAC,GAC7C,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC,CAQlD;AAED,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,SAAS,EACb,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,MAAM,CAAC,CAOjB;AAiBD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,SAAS,EACb,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,qBAAqB,EACjC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED,0EAA0E;AAC1E,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,SAAS,EACb,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,qBAAqB,EACjC,GAAG,EAAE,SAAS,MAAM,EAAE,GACrB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAWzD"}
@@ -0,0 +1,144 @@
1
+ import { and, asc, eq, ilike, inArray, sql } from 'drizzle-orm';
2
+ import { keysetCondition, orderByWindow, textSort, timestampSort } from '../../lib/pagination.js';
3
+ import { containsPattern } from '../../lib/search.js';
4
+ import { companies } from '../companies/schema.js';
5
+ import { deals } from '../deals/schema.js';
6
+ import { enquiries } from '../enquiries/schema.js';
7
+ import { opportunities } from '../opportunities/schema.js';
8
+ import { partnerships } from '../partnerships/schema.js';
9
+ import { people } from '../people/schema.js';
10
+ import { raises } from '../raises/schema.js';
11
+ import { customFieldDefinitions } from './schema.js';
12
+ export const CUSTOM_FIELD_DEFINITION_SORTS = {
13
+ sort_order: {
14
+ column: customFieldDefinitions.sortOrder,
15
+ valueOf: (row) => String(row.sortOrder),
16
+ parse: (value) => {
17
+ const parsed = Number(value);
18
+ if (!Number.isInteger(parsed)) {
19
+ throw new Error('sort_order cursor is not a whole number');
20
+ }
21
+ return parsed;
22
+ },
23
+ },
24
+ label: textSort(customFieldDefinitions.label, (row) => row.label),
25
+ key: textSort(customFieldDefinitions.key, (row) => row.key),
26
+ created_at: timestampSort(customFieldDefinitions.createdAt, (row) => row.createdAt),
27
+ updated_at: timestampSort(customFieldDefinitions.updatedAt, (row) => row.updatedAt),
28
+ };
29
+ export const DEFAULT_CUSTOM_FIELD_DEFINITION_SORT = 'sort_order';
30
+ function conditionsFor(workspaceId, filters) {
31
+ return [
32
+ eq(customFieldDefinitions.workspaceId, workspaceId),
33
+ filters.term === undefined
34
+ ? undefined
35
+ : ilike(customFieldDefinitions.label, containsPattern(filters.term)),
36
+ filters.objectType === undefined
37
+ ? undefined
38
+ : eq(customFieldDefinitions.objectType, filters.objectType),
39
+ ];
40
+ }
41
+ export function listDefinitions(db, workspaceId, filters, window) {
42
+ return db
43
+ .select()
44
+ .from(customFieldDefinitions)
45
+ .where(and(...conditionsFor(workspaceId, filters), keysetCondition(window, customFieldDefinitions.id)))
46
+ .orderBy(...orderByWindow(window, customFieldDefinitions.id))
47
+ .limit(window.fetchLimit);
48
+ }
49
+ export async function findDefinition(db, workspaceId, id) {
50
+ const [found] = await db
51
+ .select()
52
+ .from(customFieldDefinitions)
53
+ .where(and(eq(customFieldDefinitions.workspaceId, workspaceId), eq(customFieldDefinitions.id, id)))
54
+ .limit(1);
55
+ return found;
56
+ }
57
+ /**
58
+ * Every definition for one workspace, ordered as the editor renders them.
59
+ *
60
+ * Not paged: a workspace's whole set is small (hard cap 100 per object type),
61
+ * and every write path — validation, delete-strip — needs the definitions for
62
+ * one object type at once.
63
+ */
64
+ export function definitionsForObject(db, workspaceId, objectType) {
65
+ return db
66
+ .select()
67
+ .from(customFieldDefinitions)
68
+ .where(and(eq(customFieldDefinitions.workspaceId, workspaceId), eq(customFieldDefinitions.objectType, objectType)))
69
+ .orderBy(asc(customFieldDefinitions.sortOrder), asc(customFieldDefinitions.id));
70
+ }
71
+ export async function countDefinitions(db, workspaceId) {
72
+ const [row] = await db
73
+ .select({ count: sql `count(*)::int` })
74
+ .from(customFieldDefinitions)
75
+ .where(eq(customFieldDefinitions.workspaceId, workspaceId));
76
+ return Number(row?.count ?? 0);
77
+ }
78
+ export async function insertDefinition(db, values) {
79
+ const [created] = await db.insert(customFieldDefinitions).values(values).returning();
80
+ if (created === undefined) {
81
+ throw new Error(`Inserting custom_field_definition ${values.id} returned no row`);
82
+ }
83
+ return created;
84
+ }
85
+ export async function updateDefinition(db, workspaceId, id, changes) {
86
+ const [updated] = await db
87
+ .update(customFieldDefinitions)
88
+ .set(changes)
89
+ .where(and(eq(customFieldDefinitions.workspaceId, workspaceId), eq(customFieldDefinitions.id, id)))
90
+ .returning();
91
+ return updated;
92
+ }
93
+ export async function deleteDefinition(db, workspaceId, id) {
94
+ const deleted = await db
95
+ .delete(customFieldDefinitions)
96
+ .where(and(eq(customFieldDefinitions.workspaceId, workspaceId), eq(customFieldDefinitions.id, id)))
97
+ .returning({ id: customFieldDefinitions.id });
98
+ return deleted.length;
99
+ }
100
+ /**
101
+ * The tables `custom_fields` lives on, keyed by object type. A one-directional
102
+ * import: this module knows every carrier so that a definition delete can strip
103
+ * its key from the right table without every object module having to opt in.
104
+ */
105
+ const TABLES = {
106
+ person: people,
107
+ company: companies,
108
+ deal: deals,
109
+ opportunity: opportunities,
110
+ partnership: partnerships,
111
+ raise: raises,
112
+ enquiry: enquiries,
113
+ };
114
+ /**
115
+ * Removes one key from every record of one object type in one workspace.
116
+ *
117
+ * Uses `?` to skip rows that never carried the key, so the write set is only
118
+ * the rows that actually held a value. The `-` operator on jsonb returns the
119
+ * object without that key; a key that was not present is a no-op.
120
+ */
121
+ export async function stripKeyFromRecords(db, workspaceId, objectType, key) {
122
+ const table = TABLES[objectType];
123
+ const stripped = await db
124
+ .update(table)
125
+ .set({
126
+ customFields: sql `${table.customFields} - ${key}`,
127
+ })
128
+ .where(and(eq(table.workspaceId, workspaceId), sql `${table.customFields} ? ${key}`))
129
+ .returning({ id: table.id });
130
+ return stripped.length;
131
+ }
132
+ /** Bulk row read for a caller that already has a set of ids to update. */
133
+ export async function readCustomFieldsById(db, workspaceId, objectType, ids) {
134
+ if (ids.length === 0) {
135
+ return new Map();
136
+ }
137
+ const table = TABLES[objectType];
138
+ const rows = await db
139
+ .select({ id: table.id, customFields: table.customFields })
140
+ .from(table)
141
+ .where(and(eq(table.workspaceId, workspaceId), inArray(table.id, [...ids])));
142
+ return new Map(rows.map((row) => [row.id, row.customFields]));
143
+ }
144
+ //# sourceMappingURL=repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../src/modules/custom-fields/repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAG/D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAEjG,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAKpD,MAAM,CAAC,MAAM,6BAA6B,GAAgD;IACxF,UAAU,EAAE;QACV,MAAM,EAAE,sBAAsB,CAAC,SAAS;QACxC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;QACvC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;YACf,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;YAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;YAC5D,CAAC;YACD,OAAO,MAAM,CAAA;QACf,CAAC;KACF;IACD,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;IACjE,GAAG,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;IAC3D,UAAU,EAAE,aAAa,CAAC,sBAAsB,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;IACnF,UAAU,EAAE,aAAa,CAAC,sBAAsB,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;CACpF,CAAA;AAED,MAAM,CAAC,MAAM,oCAAoC,GAAG,YAAY,CAAA;AAOhE,SAAS,aAAa,CACpB,WAAmB,EACnB,OAAqC;IAErC,OAAO;QACL,EAAE,CAAC,sBAAsB,CAAC,WAAW,EAAE,WAAW,CAAC;QACnD,OAAO,CAAC,IAAI,KAAK,SAAS;YACxB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtE,OAAO,CAAC,UAAU,KAAK,SAAS;YAC9B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,EAAE,CAAC,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC;KAC9D,CAAA;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,EAAa,EACb,WAAmB,EACnB,OAAqC,EACrC,MAA+C;IAE/C,OAAO,EAAE;SACN,MAAM,EAAE;SACR,IAAI,CAAC,sBAAsB,CAAC;SAC5B,KAAK,CACJ,GAAG,CAAC,GAAG,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,eAAe,CAAC,MAAM,EAAE,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAChG;SACA,OAAO,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,sBAAsB,CAAC,EAAE,CAAC,CAAC;SAC5D,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,EAAa,EACb,WAAmB,EACnB,EAAU;IAEV,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE;SACrB,MAAM,EAAE;SACR,IAAI,CAAC,sBAAsB,CAAC;SAC5B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,sBAAsB,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;SAClG,KAAK,CAAC,CAAC,CAAC,CAAA;IAEX,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,EAAa,EACb,WAAmB,EACnB,UAAiC;IAEjC,OAAO,EAAE;SACN,MAAM,EAAE;SACR,IAAI,CAAC,sBAAsB,CAAC;SAC5B,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,sBAAsB,CAAC,WAAW,EAAE,WAAW,CAAC,EACnD,EAAE,CAAC,sBAAsB,CAAC,UAAU,EAAE,UAAU,CAAC,CAClD,CACF;SACA,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAA;AACnF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAa,EACb,WAAmB;IAEnB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE;SACnB,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,CAAQ,eAAe,EAAE,CAAC;SAC7C,IAAI,CAAC,sBAAsB,CAAC;SAC5B,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAA;IAE7D,OAAO,MAAM,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAa,EACb,MAAoC;IAEpC,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAA;IAEpF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,CAAC,EAAE,kBAAkB,CAAC,CAAA;IACnF,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAa,EACb,WAAmB,EACnB,EAAU,EACV,OAA8C;IAE9C,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE;SACvB,MAAM,CAAC,sBAAsB,CAAC;SAC9B,GAAG,CAAC,OAAO,CAAC;SACZ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,sBAAsB,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;SAClG,SAAS,EAAE,CAAA;IAEd,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAa,EACb,WAAmB,EACnB,EAAU;IAEV,MAAM,OAAO,GAAG,MAAM,EAAE;SACrB,MAAM,CAAC,sBAAsB,CAAC;SAC9B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,sBAAsB,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;SAClG,SAAS,CAAC,EAAE,EAAE,EAAE,sBAAsB,CAAC,EAAE,EAAE,CAAC,CAAA;IAE/C,OAAO,OAAO,CAAC,MAAM,CAAA;AACvB,CAAC;AAED;;;;GAIG;AACH,MAAM,MAAM,GAAG;IACb,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,YAAY;IACzB,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,SAAS;CACV,CAAA;AAEV;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,EAAa,EACb,WAAmB,EACnB,UAAiC,EACjC,GAAW;IAEX,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;IAChC,MAAM,QAAQ,GAAG,MAAM,EAAE;SACtB,MAAM,CAAC,KAAK,CAAC;SACb,GAAG,CAAC;QACH,YAAY,EAAE,GAAG,CAAA,GAAG,KAAK,CAAC,YAAY,MAAM,GAAG,EAAE;KAClD,CAAC;SACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,GAAG,CAAA,GAAG,KAAK,CAAC,YAAY,MAAM,GAAG,EAAE,CAAC,CAAC;SACnF,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;IAE9B,OAAO,QAAQ,CAAC,MAAM,CAAA;AACxB,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,EAAa,EACb,WAAmB,EACnB,UAAiC,EACjC,GAAsB;IAEtB,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,GAAG,EAAE,CAAA;IAClB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;IAChC,MAAM,IAAI,GAAG,MAAM,EAAE;SAClB,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC;SAC1D,IAAI,CAAC,KAAK,CAAC;SACX,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAE9E,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;AAC/D,CAAC"}
@@ -0,0 +1,44 @@
1
+ import type { Hono } from 'hono';
2
+ import { z } from 'zod';
3
+ import type { CredentialDependencies } from '../auth/credentials.ts';
4
+ import type { CreateCustomFieldDefinitionInput, CustomFieldDefinitionView, CustomFieldDefinitionsService, UpdateCustomFieldDefinitionInput } from './service.ts';
5
+ export declare const createBody: z.ZodObject<{
6
+ object_type: z.ZodEnum<{
7
+ company: "company";
8
+ deal: "deal";
9
+ enquiry: "enquiry";
10
+ opportunity: "opportunity";
11
+ partnership: "partnership";
12
+ person: "person";
13
+ raise: "raise";
14
+ }>;
15
+ key: z.ZodString;
16
+ label: z.ZodString;
17
+ type: z.ZodEnum<{
18
+ checkbox: "checkbox";
19
+ currency: "currency";
20
+ date: "date";
21
+ long_text: "long_text";
22
+ multi_select: "multi_select";
23
+ number: "number";
24
+ select: "select";
25
+ text: "text";
26
+ url: "url";
27
+ }>;
28
+ options: z.ZodDefault<z.ZodArray<z.ZodString>>;
29
+ description: z.ZodDefault<z.ZodString>;
30
+ }, z.core.$strict>;
31
+ export declare const updateBody: z.ZodObject<{
32
+ label: z.ZodOptional<z.ZodString>;
33
+ description: z.ZodOptional<z.ZodString>;
34
+ options: z.ZodOptional<z.ZodArray<z.ZodString>>;
35
+ sort_order: z.ZodOptional<z.ZodNumber>;
36
+ }, z.core.$strict>;
37
+ export interface CustomFieldsRoutesDependencies extends CredentialDependencies {
38
+ readonly service: CustomFieldDefinitionsService;
39
+ }
40
+ export declare function toCreateInput(body: z.infer<typeof createBody>): CreateCustomFieldDefinitionInput;
41
+ export declare function toUpdateInput(body: z.infer<typeof updateBody>): UpdateCustomFieldDefinitionInput;
42
+ export declare function customFieldDefinitionResponse(definition: CustomFieldDefinitionView): Record<string, unknown>;
43
+ export declare function mountCustomFieldsRoutes(router: Hono, dependencies: CustomFieldsRoutesDependencies): void;
44
+ //# sourceMappingURL=routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/modules/custom-fields/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;AAGpE,OAAO,KAAK,EACV,gCAAgC,EAChC,yBAAyB,EACzB,6BAA6B,EAC7B,gCAAgC,EACjC,MAAM,cAAc,CAAA;AAarB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;kBAOrB,CAAA;AAEF,eAAO,MAAM,UAAU;;;;;kBAOX,CAAA;AAEZ,MAAM,WAAW,8BAA+B,SAAQ,sBAAsB;IAC5E,QAAQ,CAAC,OAAO,EAAE,6BAA6B,CAAA;CAChD;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,GAC/B,gCAAgC,CASlC;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,GAC/B,gCAAgC,CAOlC;AAED,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,yBAAyB,GACpC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB;AAeD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,IAAI,EACZ,YAAY,EAAE,8BAA8B,GAC3C,IAAI,CA+CN"}
@@ -0,0 +1,103 @@
1
+ import { z } from 'zod';
2
+ import { AppError } from '../../lib/errors.js';
3
+ import { pageBody, readJsonBody, readListParameters } from '../../lib/http.js';
4
+ import { resolveActorFrom } from '../auth/credentials.js';
5
+ import { CUSTOM_FIELD_OBJECT_TYPES, CUSTOM_FIELD_TYPES } from './schema.js';
6
+ /**
7
+ * Wire shapes for `/v1/custom_fields`.
8
+ *
9
+ * `key`, `type`, and `object_type` are only on the create body: the update
10
+ * body omits them, and a strict PATCH answers `422` for any of the three.
11
+ * `options` accepts any string list here; per-type membership (and the
12
+ * "options only on select-like types" rule) live in the service.
13
+ */
14
+ const optionsSchema = z.array(z.string().min(1).max(120)).max(100);
15
+ export const createBody = z.strictObject({
16
+ object_type: z.enum(CUSTOM_FIELD_OBJECT_TYPES),
17
+ key: z.string().min(1).max(64),
18
+ label: z.string().min(1).max(120),
19
+ type: z.enum(CUSTOM_FIELD_TYPES),
20
+ options: optionsSchema.default([]),
21
+ description: z.string().max(2000).default(''),
22
+ });
23
+ export const updateBody = z
24
+ .strictObject({
25
+ label: z.string().min(1).max(120),
26
+ description: z.string().max(2000),
27
+ options: optionsSchema,
28
+ sort_order: z.number().int().min(0),
29
+ })
30
+ .partial();
31
+ export function toCreateInput(body) {
32
+ return {
33
+ objectType: body.object_type,
34
+ key: body.key,
35
+ label: body.label,
36
+ type: body.type,
37
+ options: body.options,
38
+ description: body.description,
39
+ };
40
+ }
41
+ export function toUpdateInput(body) {
42
+ return {
43
+ ...(body.label === undefined ? {} : { label: body.label }),
44
+ ...(body.description === undefined ? {} : { description: body.description }),
45
+ ...(body.options === undefined ? {} : { options: body.options }),
46
+ ...(body.sort_order === undefined ? {} : { sortOrder: body.sort_order }),
47
+ };
48
+ }
49
+ export function customFieldDefinitionResponse(definition) {
50
+ return {
51
+ id: definition.id,
52
+ object_type: definition.objectType,
53
+ key: definition.key,
54
+ label: definition.label,
55
+ type: definition.type,
56
+ options: definition.options,
57
+ description: definition.description,
58
+ sort_order: definition.sortOrder,
59
+ created_at: definition.createdAt.toISOString(),
60
+ updated_at: definition.updatedAt.toISOString(),
61
+ };
62
+ }
63
+ function readObjectTypeFilter(context) {
64
+ const raw = context.req.query('object_type');
65
+ if (raw === undefined) {
66
+ return undefined;
67
+ }
68
+ if (!CUSTOM_FIELD_OBJECT_TYPES.includes(raw)) {
69
+ throw AppError.validationFailed('That is not a record type custom fields attach to', [
70
+ { field: 'object_type', message: `Unknown object type "${raw}"` },
71
+ ]);
72
+ }
73
+ return raw;
74
+ }
75
+ export function mountCustomFieldsRoutes(router, dependencies) {
76
+ const requireActor = (context) => resolveActorFrom(dependencies, context);
77
+ router.get('/custom_fields', async (context) => {
78
+ const page = await dependencies.service.list(await requireActor(context), {
79
+ term: context.req.query('q'),
80
+ objectType: readObjectTypeFilter(context),
81
+ }, readListParameters(context));
82
+ return context.json(pageBody(page, customFieldDefinitionResponse));
83
+ });
84
+ router.post('/custom_fields', async (context) => {
85
+ const body = await readJsonBody(context, createBody);
86
+ const definition = await dependencies.service.create(await requireActor(context), toCreateInput(body));
87
+ return context.json(customFieldDefinitionResponse(definition), 201);
88
+ });
89
+ router.get('/custom_fields/:id', async (context) => {
90
+ const definition = await dependencies.service.get(await requireActor(context), context.req.param('id'));
91
+ return context.json(customFieldDefinitionResponse(definition));
92
+ });
93
+ router.patch('/custom_fields/:id', async (context) => {
94
+ const body = await readJsonBody(context, updateBody);
95
+ const definition = await dependencies.service.update(await requireActor(context), context.req.param('id'), toUpdateInput(body));
96
+ return context.json(customFieldDefinitionResponse(definition));
97
+ });
98
+ router.delete('/custom_fields/:id', async (context) => {
99
+ await dependencies.service.remove(await requireActor(context), context.req.param('id'));
100
+ return context.body(null, 204);
101
+ });
102
+ }
103
+ //# sourceMappingURL=routes.js.map