@contractspec/example.crm-pipeline 1.57.0 → 1.59.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 (259) hide show
  1. package/.turbo/turbo-build.log +148 -164
  2. package/.turbo/turbo-prebuild.log +1 -0
  3. package/CHANGELOG.md +39 -0
  4. package/dist/browser/crm-pipeline.feature.js +75 -0
  5. package/dist/browser/deal/deal.enum.js +18 -0
  6. package/dist/browser/deal/deal.operation.js +396 -0
  7. package/dist/browser/deal/deal.schema.js +141 -0
  8. package/dist/browser/deal/deal.test-spec.js +58 -0
  9. package/dist/browser/deal/index.js +408 -0
  10. package/dist/browser/docs/crm-pipeline.docblock.js +113 -0
  11. package/dist/browser/docs/index.js +113 -0
  12. package/dist/browser/entities/company.entity.js +52 -0
  13. package/dist/browser/entities/contact.entity.js +66 -0
  14. package/dist/browser/entities/deal.entity.js +107 -0
  15. package/dist/browser/entities/index.js +343 -0
  16. package/dist/browser/entities/task.entity.js +99 -0
  17. package/dist/browser/events/contact.event.js +31 -0
  18. package/dist/browser/events/deal.event.js +101 -0
  19. package/dist/browser/events/index.js +158 -0
  20. package/dist/browser/events/task.event.js +28 -0
  21. package/dist/browser/example.js +39 -0
  22. package/dist/browser/handlers/crm.handlers.js +160 -0
  23. package/dist/browser/handlers/deal.handlers.js +293 -0
  24. package/dist/browser/handlers/index.js +456 -0
  25. package/dist/browser/handlers/mock-data.js +165 -0
  26. package/dist/browser/index.js +3279 -0
  27. package/dist/browser/operations/index.js +407 -0
  28. package/dist/browser/presentations/dashboard.presentation.js +52 -0
  29. package/dist/browser/presentations/index.js +284 -0
  30. package/dist/browser/presentations/pipeline.presentation.js +233 -0
  31. package/dist/browser/seeders/index.js +22 -0
  32. package/dist/browser/shared/overlay-types.js +0 -0
  33. package/dist/browser/ui/CrmDashboard.js +1325 -0
  34. package/dist/browser/ui/CrmDealCard.js +50 -0
  35. package/dist/browser/ui/CrmPipelineBoard.js +160 -0
  36. package/dist/browser/ui/hooks/index.js +186 -0
  37. package/dist/browser/ui/hooks/useDealList.js +84 -0
  38. package/dist/browser/ui/hooks/useDealMutations.js +100 -0
  39. package/dist/browser/ui/index.js +1972 -0
  40. package/dist/browser/ui/modals/CreateDealModal.js +211 -0
  41. package/dist/browser/ui/modals/DealActionsModal.js +428 -0
  42. package/dist/browser/ui/modals/index.js +638 -0
  43. package/dist/browser/ui/overlays/demo-overlays.js +55 -0
  44. package/dist/browser/ui/overlays/index.js +55 -0
  45. package/dist/browser/ui/renderers/index.js +827 -0
  46. package/dist/browser/ui/renderers/pipeline.markdown.js +564 -0
  47. package/dist/browser/ui/renderers/pipeline.renderer.js +264 -0
  48. package/dist/crm-pipeline.feature.d.ts +1 -6
  49. package/dist/crm-pipeline.feature.d.ts.map +1 -1
  50. package/dist/crm-pipeline.feature.js +74 -164
  51. package/dist/deal/deal.enum.d.ts +2 -7
  52. package/dist/deal/deal.enum.d.ts.map +1 -1
  53. package/dist/deal/deal.enum.js +16 -22
  54. package/dist/deal/deal.operation.d.ts +444 -450
  55. package/dist/deal/deal.operation.d.ts.map +1 -1
  56. package/dist/deal/deal.operation.js +390 -263
  57. package/dist/deal/deal.schema.d.ts +251 -256
  58. package/dist/deal/deal.schema.d.ts.map +1 -1
  59. package/dist/deal/deal.schema.js +131 -275
  60. package/dist/deal/deal.test-spec.d.ts +2 -7
  61. package/dist/deal/deal.test-spec.d.ts.map +1 -1
  62. package/dist/deal/deal.test-spec.js +56 -62
  63. package/dist/deal/index.d.ts +7 -4
  64. package/dist/deal/index.d.ts.map +1 -0
  65. package/dist/deal/index.js +408 -4
  66. package/dist/docs/crm-pipeline.docblock.d.ts +2 -1
  67. package/dist/docs/crm-pipeline.docblock.d.ts.map +1 -0
  68. package/dist/docs/crm-pipeline.docblock.js +45 -51
  69. package/dist/docs/index.d.ts +2 -1
  70. package/dist/docs/index.d.ts.map +1 -0
  71. package/dist/docs/index.js +114 -1
  72. package/dist/entities/company.entity.d.ts +27 -32
  73. package/dist/entities/company.entity.d.ts.map +1 -1
  74. package/dist/entities/company.entity.js +51 -61
  75. package/dist/entities/contact.entity.d.ts +31 -36
  76. package/dist/entities/contact.entity.d.ts.map +1 -1
  77. package/dist/entities/contact.entity.js +65 -76
  78. package/dist/entities/deal.entity.d.ts +52 -57
  79. package/dist/entities/deal.entity.d.ts.map +1 -1
  80. package/dist/entities/deal.entity.js +104 -116
  81. package/dist/entities/index.d.ts +6 -10
  82. package/dist/entities/index.d.ts.map +1 -1
  83. package/dist/entities/index.js +342 -31
  84. package/dist/entities/task.entity.d.ts +42 -47
  85. package/dist/entities/task.entity.d.ts.map +1 -1
  86. package/dist/entities/task.entity.js +95 -124
  87. package/dist/events/contact.event.d.ts +21 -27
  88. package/dist/events/contact.event.d.ts.map +1 -1
  89. package/dist/events/contact.event.js +29 -42
  90. package/dist/events/deal.event.d.ts +100 -106
  91. package/dist/events/deal.event.d.ts.map +1 -1
  92. package/dist/events/deal.event.js +93 -163
  93. package/dist/events/index.d.ts +4 -4
  94. package/dist/events/index.d.ts.map +1 -0
  95. package/dist/events/index.js +158 -4
  96. package/dist/events/task.event.d.ts +21 -27
  97. package/dist/events/task.event.d.ts.map +1 -1
  98. package/dist/events/task.event.js +26 -42
  99. package/dist/example.d.ts +2 -6
  100. package/dist/example.d.ts.map +1 -1
  101. package/dist/example.js +38 -50
  102. package/dist/handlers/crm.handlers.d.ts +80 -78
  103. package/dist/handlers/crm.handlers.d.ts.map +1 -1
  104. package/dist/handlers/crm.handlers.js +155 -166
  105. package/dist/handlers/deal.handlers.d.ts +58 -63
  106. package/dist/handlers/deal.handlers.d.ts.map +1 -1
  107. package/dist/handlers/deal.handlers.js +279 -105
  108. package/dist/handlers/index.d.ts +10 -4
  109. package/dist/handlers/index.d.ts.map +1 -0
  110. package/dist/handlers/index.js +456 -4
  111. package/dist/handlers/mock-data.d.ts +38 -41
  112. package/dist/handlers/mock-data.d.ts.map +1 -1
  113. package/dist/handlers/mock-data.js +162 -184
  114. package/dist/index.d.ts +13 -42
  115. package/dist/index.d.ts.map +1 -1
  116. package/dist/index.js +3277 -53
  117. package/dist/node/crm-pipeline.feature.js +75 -0
  118. package/dist/node/deal/deal.enum.js +18 -0
  119. package/dist/node/deal/deal.operation.js +396 -0
  120. package/dist/node/deal/deal.schema.js +141 -0
  121. package/dist/node/deal/deal.test-spec.js +58 -0
  122. package/dist/node/deal/index.js +408 -0
  123. package/dist/node/docs/crm-pipeline.docblock.js +113 -0
  124. package/dist/node/docs/index.js +113 -0
  125. package/dist/node/entities/company.entity.js +52 -0
  126. package/dist/node/entities/contact.entity.js +66 -0
  127. package/dist/node/entities/deal.entity.js +107 -0
  128. package/dist/node/entities/index.js +343 -0
  129. package/dist/node/entities/task.entity.js +99 -0
  130. package/dist/node/events/contact.event.js +31 -0
  131. package/dist/node/events/deal.event.js +101 -0
  132. package/dist/node/events/index.js +158 -0
  133. package/dist/node/events/task.event.js +28 -0
  134. package/dist/node/example.js +39 -0
  135. package/dist/node/handlers/crm.handlers.js +160 -0
  136. package/dist/node/handlers/deal.handlers.js +293 -0
  137. package/dist/node/handlers/index.js +456 -0
  138. package/dist/node/handlers/mock-data.js +165 -0
  139. package/dist/node/index.js +3279 -0
  140. package/dist/node/operations/index.js +407 -0
  141. package/dist/node/presentations/dashboard.presentation.js +52 -0
  142. package/dist/node/presentations/index.js +284 -0
  143. package/dist/node/presentations/pipeline.presentation.js +233 -0
  144. package/dist/node/seeders/index.js +22 -0
  145. package/dist/node/shared/overlay-types.js +0 -0
  146. package/dist/node/ui/CrmDashboard.js +1325 -0
  147. package/dist/node/ui/CrmDealCard.js +50 -0
  148. package/dist/node/ui/CrmPipelineBoard.js +160 -0
  149. package/dist/node/ui/hooks/index.js +186 -0
  150. package/dist/node/ui/hooks/useDealList.js +84 -0
  151. package/dist/node/ui/hooks/useDealMutations.js +100 -0
  152. package/dist/node/ui/index.js +1972 -0
  153. package/dist/node/ui/modals/CreateDealModal.js +211 -0
  154. package/dist/node/ui/modals/DealActionsModal.js +428 -0
  155. package/dist/node/ui/modals/index.js +638 -0
  156. package/dist/node/ui/overlays/demo-overlays.js +55 -0
  157. package/dist/node/ui/overlays/index.js +55 -0
  158. package/dist/node/ui/renderers/index.js +827 -0
  159. package/dist/node/ui/renderers/pipeline.markdown.js +564 -0
  160. package/dist/node/ui/renderers/pipeline.renderer.js +264 -0
  161. package/dist/operations/index.d.ts +2 -5
  162. package/dist/operations/index.d.ts.map +1 -0
  163. package/dist/operations/index.js +407 -5
  164. package/dist/presentations/dashboard.presentation.d.ts +2 -7
  165. package/dist/presentations/dashboard.presentation.d.ts.map +1 -1
  166. package/dist/presentations/dashboard.presentation.js +51 -60
  167. package/dist/presentations/index.d.ts +3 -3
  168. package/dist/presentations/index.d.ts.map +1 -0
  169. package/dist/presentations/index.js +284 -3
  170. package/dist/presentations/pipeline.presentation.d.ts +4 -9
  171. package/dist/presentations/pipeline.presentation.d.ts.map +1 -1
  172. package/dist/presentations/pipeline.presentation.js +228 -116
  173. package/dist/seeders/index.d.ts +4 -8
  174. package/dist/seeders/index.d.ts.map +1 -1
  175. package/dist/seeders/index.js +21 -45
  176. package/dist/shared/overlay-types.d.ts +25 -28
  177. package/dist/shared/overlay-types.d.ts.map +1 -1
  178. package/dist/shared/overlay-types.js +1 -0
  179. package/dist/ui/CrmDashboard.d.ts +1 -6
  180. package/dist/ui/CrmDashboard.d.ts.map +1 -1
  181. package/dist/ui/CrmDashboard.js +1318 -296
  182. package/dist/ui/CrmDealCard.d.ts +8 -12
  183. package/dist/ui/CrmDealCard.d.ts.map +1 -1
  184. package/dist/ui/CrmDealCard.js +47 -45
  185. package/dist/ui/CrmPipelineBoard.d.ts +11 -20
  186. package/dist/ui/CrmPipelineBoard.d.ts.map +1 -1
  187. package/dist/ui/CrmPipelineBoard.js +157 -94
  188. package/dist/ui/hooks/index.d.ts +3 -3
  189. package/dist/ui/hooks/index.d.ts.map +1 -0
  190. package/dist/ui/hooks/index.js +185 -4
  191. package/dist/ui/hooks/useDealList.d.ts +28 -32
  192. package/dist/ui/hooks/useDealList.d.ts.map +1 -1
  193. package/dist/ui/hooks/useDealList.js +81 -90
  194. package/dist/ui/hooks/useDealMutations.d.ts +18 -22
  195. package/dist/ui/hooks/useDealMutations.d.ts.map +1 -1
  196. package/dist/ui/hooks/useDealMutations.js +97 -155
  197. package/dist/ui/index.d.ts +8 -14
  198. package/dist/ui/index.d.ts.map +1 -0
  199. package/dist/ui/index.js +1973 -15
  200. package/dist/ui/modals/CreateDealModal.d.ts +19 -29
  201. package/dist/ui/modals/CreateDealModal.d.ts.map +1 -1
  202. package/dist/ui/modals/CreateDealModal.js +209 -180
  203. package/dist/ui/modals/DealActionsModal.d.ts +31 -44
  204. package/dist/ui/modals/DealActionsModal.d.ts.map +1 -1
  205. package/dist/ui/modals/DealActionsModal.js +424 -367
  206. package/dist/ui/modals/index.d.ts +3 -3
  207. package/dist/ui/modals/index.d.ts.map +1 -0
  208. package/dist/ui/modals/index.js +638 -3
  209. package/dist/ui/overlays/demo-overlays.d.ts +10 -8
  210. package/dist/ui/overlays/demo-overlays.d.ts.map +1 -1
  211. package/dist/ui/overlays/demo-overlays.js +54 -66
  212. package/dist/ui/overlays/index.d.ts +2 -2
  213. package/dist/ui/overlays/index.d.ts.map +1 -0
  214. package/dist/ui/overlays/index.js +56 -3
  215. package/dist/ui/renderers/index.d.ts +3 -3
  216. package/dist/ui/renderers/index.d.ts.map +1 -0
  217. package/dist/ui/renderers/index.js +827 -3
  218. package/dist/ui/renderers/pipeline.markdown.d.ts +12 -11
  219. package/dist/ui/renderers/pipeline.markdown.d.ts.map +1 -1
  220. package/dist/ui/renderers/pipeline.markdown.js +560 -114
  221. package/dist/ui/renderers/pipeline.renderer.d.ts +9 -7
  222. package/dist/ui/renderers/pipeline.renderer.d.ts.map +1 -1
  223. package/dist/ui/renderers/pipeline.renderer.js +261 -24
  224. package/package.json +476 -90
  225. package/tsdown.config.js +1 -2
  226. package/.turbo/turbo-build$colon$bundle.log +0 -164
  227. package/dist/crm-pipeline.feature.js.map +0 -1
  228. package/dist/deal/deal.enum.js.map +0 -1
  229. package/dist/deal/deal.operation.js.map +0 -1
  230. package/dist/deal/deal.schema.js.map +0 -1
  231. package/dist/deal/deal.test-spec.js.map +0 -1
  232. package/dist/docs/crm-pipeline.docblock.js.map +0 -1
  233. package/dist/entities/company.entity.js.map +0 -1
  234. package/dist/entities/contact.entity.js.map +0 -1
  235. package/dist/entities/deal.entity.js.map +0 -1
  236. package/dist/entities/index.js.map +0 -1
  237. package/dist/entities/task.entity.js.map +0 -1
  238. package/dist/events/contact.event.js.map +0 -1
  239. package/dist/events/deal.event.js.map +0 -1
  240. package/dist/events/task.event.js.map +0 -1
  241. package/dist/example.js.map +0 -1
  242. package/dist/handlers/crm.handlers.js.map +0 -1
  243. package/dist/handlers/deal.handlers.js.map +0 -1
  244. package/dist/handlers/mock-data.js.map +0 -1
  245. package/dist/index.js.map +0 -1
  246. package/dist/presentations/dashboard.presentation.js.map +0 -1
  247. package/dist/presentations/pipeline.presentation.js.map +0 -1
  248. package/dist/seeders/index.js.map +0 -1
  249. package/dist/ui/CrmDashboard.js.map +0 -1
  250. package/dist/ui/CrmDealCard.js.map +0 -1
  251. package/dist/ui/CrmPipelineBoard.js.map +0 -1
  252. package/dist/ui/hooks/useDealList.js.map +0 -1
  253. package/dist/ui/hooks/useDealMutations.js.map +0 -1
  254. package/dist/ui/modals/CreateDealModal.js.map +0 -1
  255. package/dist/ui/modals/DealActionsModal.js.map +0 -1
  256. package/dist/ui/overlays/demo-overlays.js.map +0 -1
  257. package/dist/ui/renderers/pipeline.markdown.js.map +0 -1
  258. package/dist/ui/renderers/pipeline.renderer.js.map +0 -1
  259. package/tsconfig.tsbuildinfo +0 -1
@@ -1,120 +1,294 @@
1
- import { MOCK_DEALS, MOCK_STAGES } from "./mock-data.js";
1
+ // @bun
2
+ // src/handlers/mock-data.ts
3
+ var MOCK_STAGES = [
4
+ { id: "stage-1", name: "Lead", position: 1, pipelineId: "pipeline-1" },
5
+ { id: "stage-2", name: "Qualified", position: 2, pipelineId: "pipeline-1" },
6
+ { id: "stage-3", name: "Proposal", position: 3, pipelineId: "pipeline-1" },
7
+ { id: "stage-4", name: "Negotiation", position: 4, pipelineId: "pipeline-1" },
8
+ { id: "stage-5", name: "Closed", position: 5, pipelineId: "pipeline-1" }
9
+ ];
10
+ var MOCK_DEALS = [
11
+ {
12
+ id: "deal-1",
13
+ name: "Enterprise License - Acme Corp",
14
+ value: 75000,
15
+ currency: "USD",
16
+ pipelineId: "pipeline-1",
17
+ stageId: "stage-3",
18
+ status: "OPEN",
19
+ contactId: "contact-1",
20
+ companyId: "company-1",
21
+ ownerId: "user-1",
22
+ expectedCloseDate: new Date("2024-05-15T00:00:00Z"),
23
+ createdAt: new Date("2024-02-01T10:00:00Z"),
24
+ updatedAt: new Date("2024-04-10T14:30:00Z")
25
+ },
26
+ {
27
+ id: "deal-2",
28
+ name: "Startup Plan - TechStart Inc",
29
+ value: 12000,
30
+ currency: "USD",
31
+ pipelineId: "pipeline-1",
32
+ stageId: "stage-2",
33
+ status: "OPEN",
34
+ contactId: "contact-2",
35
+ companyId: "company-2",
36
+ ownerId: "user-2",
37
+ expectedCloseDate: new Date("2024-04-30T00:00:00Z"),
38
+ createdAt: new Date("2024-03-15T09:00:00Z"),
39
+ updatedAt: new Date("2024-04-08T11:15:00Z")
40
+ },
41
+ {
42
+ id: "deal-3",
43
+ name: "Professional Services - Global Ltd",
44
+ value: 45000,
45
+ currency: "USD",
46
+ pipelineId: "pipeline-1",
47
+ stageId: "stage-4",
48
+ status: "OPEN",
49
+ contactId: "contact-3",
50
+ companyId: "company-3",
51
+ ownerId: "user-1",
52
+ expectedCloseDate: new Date("2024-04-20T00:00:00Z"),
53
+ createdAt: new Date("2024-01-20T08:00:00Z"),
54
+ updatedAt: new Date("2024-04-12T16:45:00Z")
55
+ },
56
+ {
57
+ id: "deal-4",
58
+ name: "Annual Contract - SmallBiz Co",
59
+ value: 8500,
60
+ currency: "USD",
61
+ pipelineId: "pipeline-1",
62
+ stageId: "stage-1",
63
+ status: "OPEN",
64
+ contactId: "contact-4",
65
+ companyId: "company-4",
66
+ ownerId: "user-3",
67
+ createdAt: new Date("2024-04-05T12:00:00Z"),
68
+ updatedAt: new Date("2024-04-05T12:00:00Z")
69
+ },
70
+ {
71
+ id: "deal-5",
72
+ name: "Custom Integration - MegaCorp",
73
+ value: 125000,
74
+ currency: "USD",
75
+ pipelineId: "pipeline-1",
76
+ stageId: "stage-5",
77
+ status: "WON",
78
+ contactId: "contact-5",
79
+ companyId: "company-5",
80
+ ownerId: "user-1",
81
+ expectedCloseDate: new Date("2024-03-31T00:00:00Z"),
82
+ createdAt: new Date("2023-11-10T10:00:00Z"),
83
+ updatedAt: new Date("2024-03-28T09:00:00Z")
84
+ },
85
+ {
86
+ id: "deal-6",
87
+ name: "Pilot Project - NewCo",
88
+ value: 5000,
89
+ currency: "USD",
90
+ pipelineId: "pipeline-1",
91
+ stageId: "stage-2",
92
+ status: "LOST",
93
+ contactId: "contact-6",
94
+ companyId: "company-6",
95
+ ownerId: "user-2",
96
+ createdAt: new Date("2024-01-15T14:00:00Z"),
97
+ updatedAt: new Date("2024-02-28T10:30:00Z")
98
+ }
99
+ ];
100
+ var MOCK_COMPANIES = [
101
+ {
102
+ id: "company-1",
103
+ name: "Acme Corporation",
104
+ domain: "acme.com",
105
+ industry: "Technology",
106
+ size: "1000-5000",
107
+ website: "https://acme.com",
108
+ createdAt: new Date("2024-01-01T00:00:00Z")
109
+ },
110
+ {
111
+ id: "company-2",
112
+ name: "TechStart Inc",
113
+ domain: "techstart.io",
114
+ industry: "Software",
115
+ size: "10-50",
116
+ website: "https://techstart.io",
117
+ createdAt: new Date("2024-02-15T00:00:00Z")
118
+ },
119
+ {
120
+ id: "company-3",
121
+ name: "Global Ltd",
122
+ domain: "global.com",
123
+ industry: "Consulting",
124
+ size: "500-1000",
125
+ website: "https://global.com",
126
+ createdAt: new Date("2023-12-01T00:00:00Z")
127
+ }
128
+ ];
129
+ var MOCK_CONTACTS = [
130
+ {
131
+ id: "contact-1",
132
+ firstName: "John",
133
+ lastName: "Smith",
134
+ email: "john.smith@acme.com",
135
+ phone: "+1-555-0101",
136
+ title: "VP of Engineering",
137
+ companyId: "company-1",
138
+ createdAt: new Date("2024-01-05T00:00:00Z")
139
+ },
140
+ {
141
+ id: "contact-2",
142
+ firstName: "Sarah",
143
+ lastName: "Johnson",
144
+ email: "sarah@techstart.io",
145
+ phone: "+1-555-0102",
146
+ title: "CEO",
147
+ companyId: "company-2",
148
+ createdAt: new Date("2024-02-20T00:00:00Z")
149
+ },
150
+ {
151
+ id: "contact-3",
152
+ firstName: "Michael",
153
+ lastName: "Brown",
154
+ email: "michael.brown@global.com",
155
+ phone: "+1-555-0103",
156
+ title: "CTO",
157
+ companyId: "company-3",
158
+ createdAt: new Date("2023-12-10T00:00:00Z")
159
+ }
160
+ ];
2
161
 
3
- //#region src/handlers/deal.handlers.ts
4
- /**
5
- * Mock handlers for Deal contracts
6
- */
7
- /**
8
- * Mock handler for ListDealsContract
9
- */
162
+ // src/handlers/deal.handlers.ts
10
163
  async function mockListDealsHandler(input) {
11
- const { pipelineId, stageId, status, ownerId, search, limit = 20, offset = 0 } = input;
12
- let filtered = [...MOCK_DEALS];
13
- if (pipelineId) filtered = filtered.filter((d) => d.pipelineId === pipelineId);
14
- if (stageId) filtered = filtered.filter((d) => d.stageId === stageId);
15
- if (status && status !== "all") filtered = filtered.filter((d) => d.status === status);
16
- if (ownerId) filtered = filtered.filter((d) => d.ownerId === ownerId);
17
- if (search) {
18
- const q = search.toLowerCase();
19
- filtered = filtered.filter((d) => d.name.toLowerCase().includes(q));
20
- }
21
- filtered.sort((a, b) => b.value - a.value);
22
- const total = filtered.length;
23
- const totalValue = filtered.reduce((sum, d) => sum + d.value, 0);
24
- return {
25
- deals: filtered.slice(offset, offset + limit),
26
- total,
27
- totalValue
28
- };
164
+ const {
165
+ pipelineId,
166
+ stageId,
167
+ status,
168
+ ownerId,
169
+ search,
170
+ limit = 20,
171
+ offset = 0
172
+ } = input;
173
+ let filtered = [...MOCK_DEALS];
174
+ if (pipelineId) {
175
+ filtered = filtered.filter((d) => d.pipelineId === pipelineId);
176
+ }
177
+ if (stageId) {
178
+ filtered = filtered.filter((d) => d.stageId === stageId);
179
+ }
180
+ if (status && status !== "all") {
181
+ filtered = filtered.filter((d) => d.status === status);
182
+ }
183
+ if (ownerId) {
184
+ filtered = filtered.filter((d) => d.ownerId === ownerId);
185
+ }
186
+ if (search) {
187
+ const q = search.toLowerCase();
188
+ filtered = filtered.filter((d) => d.name.toLowerCase().includes(q));
189
+ }
190
+ filtered.sort((a, b) => b.value - a.value);
191
+ const total = filtered.length;
192
+ const totalValue = filtered.reduce((sum, d) => sum + d.value, 0);
193
+ const deals = filtered.slice(offset, offset + limit);
194
+ return {
195
+ deals,
196
+ total,
197
+ totalValue
198
+ };
29
199
  }
30
- /**
31
- * Mock handler for CreateDealContract
32
- */
33
200
  async function mockCreateDealHandler(input, context) {
34
- const now = /* @__PURE__ */ new Date();
35
- const deal = {
36
- id: `deal-${Date.now()}`,
37
- name: input.name,
38
- value: input.value,
39
- currency: input.currency ?? "USD",
40
- pipelineId: input.pipelineId,
41
- stageId: input.stageId,
42
- status: "OPEN",
43
- contactId: input.contactId,
44
- companyId: input.companyId,
45
- ownerId: context.ownerId,
46
- expectedCloseDate: input.expectedCloseDate,
47
- createdAt: now,
48
- updatedAt: now
49
- };
50
- MOCK_DEALS.push(deal);
51
- return deal;
201
+ const now = new Date;
202
+ const deal = {
203
+ id: `deal-${Date.now()}`,
204
+ name: input.name,
205
+ value: input.value,
206
+ currency: input.currency ?? "USD",
207
+ pipelineId: input.pipelineId,
208
+ stageId: input.stageId,
209
+ status: "OPEN",
210
+ contactId: input.contactId,
211
+ companyId: input.companyId,
212
+ ownerId: context.ownerId,
213
+ expectedCloseDate: input.expectedCloseDate,
214
+ createdAt: now,
215
+ updatedAt: now
216
+ };
217
+ MOCK_DEALS.push(deal);
218
+ return deal;
52
219
  }
53
- /**
54
- * Mock handler for MoveDealContract
55
- */
56
220
  async function mockMoveDealHandler(input) {
57
- const dealIndex = MOCK_DEALS.findIndex((d) => d.id === input.dealId);
58
- if (dealIndex === -1) throw new Error("NOT_FOUND");
59
- const deal = MOCK_DEALS[dealIndex];
60
- if (!deal) throw new Error("NOT_FOUND");
61
- if (!MOCK_STAGES.find((s) => s.id === input.stageId)) throw new Error("INVALID_STAGE");
62
- const updatedDeal = {
63
- ...deal,
64
- stageId: input.stageId,
65
- updatedAt: /* @__PURE__ */ new Date()
66
- };
67
- MOCK_DEALS[dealIndex] = updatedDeal;
68
- return updatedDeal;
221
+ const dealIndex = MOCK_DEALS.findIndex((d) => d.id === input.dealId);
222
+ if (dealIndex === -1) {
223
+ throw new Error("NOT_FOUND");
224
+ }
225
+ const deal = MOCK_DEALS[dealIndex];
226
+ if (!deal) {
227
+ throw new Error("NOT_FOUND");
228
+ }
229
+ const stage = MOCK_STAGES.find((s) => s.id === input.stageId);
230
+ if (!stage) {
231
+ throw new Error("INVALID_STAGE");
232
+ }
233
+ const updatedDeal = {
234
+ ...deal,
235
+ stageId: input.stageId,
236
+ updatedAt: new Date
237
+ };
238
+ MOCK_DEALS[dealIndex] = updatedDeal;
239
+ return updatedDeal;
69
240
  }
70
- /**
71
- * Mock handler for WinDealContract
72
- */
73
241
  async function mockWinDealHandler(input) {
74
- const dealIndex = MOCK_DEALS.findIndex((d) => d.id === input.dealId);
75
- if (dealIndex === -1) throw new Error("NOT_FOUND");
76
- const deal = MOCK_DEALS[dealIndex];
77
- if (!deal) throw new Error("NOT_FOUND");
78
- const updatedDeal = {
79
- ...deal,
80
- status: "WON",
81
- updatedAt: /* @__PURE__ */ new Date()
82
- };
83
- MOCK_DEALS[dealIndex] = updatedDeal;
84
- return updatedDeal;
242
+ const dealIndex = MOCK_DEALS.findIndex((d) => d.id === input.dealId);
243
+ if (dealIndex === -1) {
244
+ throw new Error("NOT_FOUND");
245
+ }
246
+ const deal = MOCK_DEALS[dealIndex];
247
+ if (!deal) {
248
+ throw new Error("NOT_FOUND");
249
+ }
250
+ const updatedDeal = {
251
+ ...deal,
252
+ status: "WON",
253
+ updatedAt: new Date
254
+ };
255
+ MOCK_DEALS[dealIndex] = updatedDeal;
256
+ return updatedDeal;
85
257
  }
86
- /**
87
- * Mock handler for LoseDealContract
88
- */
89
258
  async function mockLoseDealHandler(input) {
90
- const dealIndex = MOCK_DEALS.findIndex((d) => d.id === input.dealId);
91
- if (dealIndex === -1) throw new Error("NOT_FOUND");
92
- const deal = MOCK_DEALS[dealIndex];
93
- if (!deal) throw new Error("NOT_FOUND");
94
- const updatedDeal = {
95
- ...deal,
96
- status: "LOST",
97
- updatedAt: /* @__PURE__ */ new Date()
98
- };
99
- MOCK_DEALS[dealIndex] = updatedDeal;
100
- return updatedDeal;
259
+ const dealIndex = MOCK_DEALS.findIndex((d) => d.id === input.dealId);
260
+ if (dealIndex === -1) {
261
+ throw new Error("NOT_FOUND");
262
+ }
263
+ const deal = MOCK_DEALS[dealIndex];
264
+ if (!deal) {
265
+ throw new Error("NOT_FOUND");
266
+ }
267
+ const updatedDeal = {
268
+ ...deal,
269
+ status: "LOST",
270
+ updatedAt: new Date
271
+ };
272
+ MOCK_DEALS[dealIndex] = updatedDeal;
273
+ return updatedDeal;
101
274
  }
102
- /**
103
- * Get deals grouped by stage for Kanban view
104
- */
105
275
  async function mockGetDealsByStageHandler(input) {
106
- const deals = MOCK_DEALS.filter((d) => d.pipelineId === input.pipelineId && d.status === "OPEN");
107
- const grouped = {};
108
- for (const stage of MOCK_STAGES) grouped[stage.id] = deals.filter((d) => d.stageId === stage.id);
109
- return grouped;
276
+ const deals = MOCK_DEALS.filter((d) => d.pipelineId === input.pipelineId && d.status === "OPEN");
277
+ const grouped = {};
278
+ for (const stage of MOCK_STAGES) {
279
+ grouped[stage.id] = deals.filter((d) => d.stageId === stage.id);
280
+ }
281
+ return grouped;
110
282
  }
111
- /**
112
- * Get pipeline stages
113
- */
114
283
  async function mockGetPipelineStagesHandler(input) {
115
- return MOCK_STAGES.filter((s) => s.pipelineId === input.pipelineId);
284
+ return MOCK_STAGES.filter((s) => s.pipelineId === input.pipelineId);
116
285
  }
117
-
118
- //#endregion
119
- export { mockCreateDealHandler, mockGetDealsByStageHandler, mockGetPipelineStagesHandler, mockListDealsHandler, mockLoseDealHandler, mockMoveDealHandler, mockWinDealHandler };
120
- //# sourceMappingURL=deal.handlers.js.map
286
+ export {
287
+ mockWinDealHandler,
288
+ mockMoveDealHandler,
289
+ mockLoseDealHandler,
290
+ mockListDealsHandler,
291
+ mockGetPipelineStagesHandler,
292
+ mockGetDealsByStageHandler,
293
+ mockCreateDealHandler
294
+ };
@@ -1,4 +1,10 @@
1
- import { CrmHandlers, Stage, createCrmHandlers } from "./crm.handlers.js";
2
- import { MOCK_COMPANIES, MOCK_CONTACTS, MOCK_DEALS, MOCK_STAGES, MockDeal, MockStage } from "./mock-data.js";
3
- import { CreateDealInput, Deal, ListDealsInput, ListDealsOutput, LoseDealInput, MoveDealInput, WinDealInput, mockCreateDealHandler, mockGetDealsByStageHandler, mockGetPipelineStagesHandler, mockListDealsHandler, mockLoseDealHandler, mockMoveDealHandler, mockWinDealHandler } from "./deal.handlers.js";
4
- export { type CreateDealInput, CrmHandlers, type Deal, type ListDealsInput, type ListDealsOutput, type LoseDealInput, MOCK_COMPANIES, MOCK_CONTACTS, MOCK_DEALS, MOCK_STAGES, MockDeal, MockStage, type MoveDealInput, Stage, type WinDealInput, createCrmHandlers, mockCreateDealHandler, mockGetDealsByStageHandler, mockGetPipelineStagesHandler, mockListDealsHandler, mockLoseDealHandler, mockMoveDealHandler, mockWinDealHandler };
1
+ /**
2
+ * Mock handlers for crm-pipeline example
3
+ *
4
+ * These handlers provide mock implementations of all contracts
5
+ * for use in demos, tests, and the sandbox environment.
6
+ */
7
+ export * from './mock-data';
8
+ export { mockListDealsHandler, mockCreateDealHandler, mockMoveDealHandler, mockWinDealHandler, mockLoseDealHandler, mockGetDealsByStageHandler, mockGetPipelineStagesHandler, type Deal, type CreateDealInput, type MoveDealInput, type WinDealInput, type LoseDealInput, type ListDealsInput, type ListDealsOutput, } from './deal.handlers';
9
+ export * from './crm.handlers';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,cAAc,aAAa,CAAC;AAG5B,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,0BAA0B,EAC1B,4BAA4B,EAC5B,KAAK,IAAI,EACT,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,iBAAiB,CAAC;AAGzB,cAAc,gBAAgB,CAAC"}