@kelpie/server 0.7.0 → 0.8.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.
- package/dist/lib/consumerEmailDomains.d.ts +2 -0
- package/dist/lib/consumerEmailDomains.d.ts.map +1 -0
- package/dist/lib/consumerEmailDomains.js +62 -0
- package/dist/lib/consumerEmailDomains.js.map +1 -0
- package/dist/lib/email.d.ts +7 -0
- package/dist/lib/email.d.ts.map +1 -1
- package/dist/lib/email.js.map +1 -1
- package/dist/lib/emailContent.d.ts +33 -0
- package/dist/lib/emailContent.d.ts.map +1 -0
- package/dist/lib/emailContent.js +54 -0
- package/dist/lib/emailContent.js.map +1 -0
- package/dist/lib/emailDomainAutoLink.d.ts +27 -0
- package/dist/lib/emailDomainAutoLink.d.ts.map +1 -0
- package/dist/lib/emailDomainAutoLink.js +119 -0
- package/dist/lib/emailDomainAutoLink.js.map +1 -0
- package/dist/lib/ids.d.ts +2 -0
- package/dist/lib/ids.d.ts.map +1 -1
- package/dist/lib/ids.js +2 -0
- package/dist/lib/ids.js.map +1 -1
- package/dist/modules/attachedRecords.d.ts.map +1 -1
- package/dist/modules/attachedRecords.js +4 -2
- package/dist/modules/attachedRecords.js.map +1 -1
- package/dist/modules/auth/preferences.d.ts +11 -1
- package/dist/modules/auth/preferences.d.ts.map +1 -1
- package/dist/modules/auth/preferences.js +11 -0
- package/dist/modules/auth/preferences.js.map +1 -1
- package/dist/modules/auth/routes.d.ts.map +1 -1
- package/dist/modules/auth/routes.js +18 -0
- package/dist/modules/auth/routes.js.map +1 -1
- package/dist/modules/auth/schema.d.ts +20 -0
- package/dist/modules/auth/schema.d.ts.map +1 -1
- package/dist/modules/auth/schema.js +11 -1
- package/dist/modules/auth/schema.js.map +1 -1
- package/dist/modules/auth/service.d.ts.map +1 -1
- package/dist/modules/auth/service.js +27 -3
- package/dist/modules/auth/service.js.map +1 -1
- package/dist/modules/companies/repository.d.ts +2 -0
- package/dist/modules/companies/repository.d.ts.map +1 -1
- package/dist/modules/companies/repository.js +1 -0
- package/dist/modules/companies/repository.js.map +1 -1
- package/dist/modules/companies/routes.d.ts +2 -0
- package/dist/modules/companies/routes.d.ts.map +1 -1
- package/dist/modules/companies/routes.js +11 -0
- package/dist/modules/companies/routes.js.map +1 -1
- package/dist/modules/companies/schema.d.ts +17 -0
- package/dist/modules/companies/schema.d.ts.map +1 -1
- package/dist/modules/companies/schema.js +5 -1
- package/dist/modules/companies/schema.js.map +1 -1
- package/dist/modules/companies/service.d.ts +1 -0
- package/dist/modules/companies/service.d.ts.map +1 -1
- package/dist/modules/companies/service.js +22 -0
- package/dist/modules/companies/service.js.map +1 -1
- package/dist/modules/core.d.ts.map +1 -1
- package/dist/modules/core.js +11 -0
- package/dist/modules/core.js.map +1 -1
- package/dist/modules/email-domain-linker/index.d.ts +12 -0
- package/dist/modules/email-domain-linker/index.d.ts.map +1 -0
- package/dist/modules/email-domain-linker/index.js +34 -0
- package/dist/modules/email-domain-linker/index.js.map +1 -0
- package/dist/modules/email-domain-linker/routes.d.ts +14 -0
- package/dist/modules/email-domain-linker/routes.d.ts.map +1 -0
- package/dist/modules/email-domain-linker/routes.js +15 -0
- package/dist/modules/email-domain-linker/routes.js.map +1 -0
- package/dist/modules/email-domain-linker/service.d.ts +37 -0
- package/dist/modules/email-domain-linker/service.d.ts.map +1 -0
- package/dist/modules/email-domain-linker/service.js +63 -0
- package/dist/modules/email-domain-linker/service.js.map +1 -0
- package/dist/modules/eventCatalogs.d.ts +1 -0
- package/dist/modules/eventCatalogs.d.ts.map +1 -1
- package/dist/modules/eventCatalogs.js +1 -0
- package/dist/modules/eventCatalogs.js.map +1 -1
- package/dist/modules/lists/events.d.ts +42 -0
- package/dist/modules/lists/events.d.ts.map +1 -0
- package/dist/modules/lists/events.js +16 -0
- package/dist/modules/lists/events.js.map +1 -0
- package/dist/modules/lists/index.d.ts +10 -0
- package/dist/modules/lists/index.d.ts.map +1 -0
- package/dist/modules/lists/index.js +35 -0
- package/dist/modules/lists/index.js.map +1 -0
- package/dist/modules/lists/repository.d.ts +69 -0
- package/dist/modules/lists/repository.d.ts.map +1 -0
- package/dist/modules/lists/repository.js +165 -0
- package/dist/modules/lists/repository.js.map +1 -0
- package/dist/modules/lists/routes.d.ts +51 -0
- package/dist/modules/lists/routes.d.ts.map +1 -0
- package/dist/modules/lists/routes.js +160 -0
- package/dist/modules/lists/routes.js.map +1 -0
- package/dist/modules/lists/schema.d.ts +264 -0
- package/dist/modules/lists/schema.d.ts.map +1 -0
- package/dist/modules/lists/schema.js +73 -0
- package/dist/modules/lists/schema.js.map +1 -0
- package/dist/modules/lists/service.d.ts +70 -0
- package/dist/modules/lists/service.d.ts.map +1 -0
- package/dist/modules/lists/service.js +214 -0
- package/dist/modules/lists/service.js.map +1 -0
- package/dist/modules/lists/tools.d.ts +4 -0
- package/dist/modules/lists/tools.d.ts.map +1 -0
- package/dist/modules/lists/tools.js +86 -0
- package/dist/modules/lists/tools.js.map +1 -0
- package/dist/modules/people/repository.d.ts +11 -0
- package/dist/modules/people/repository.d.ts.map +1 -1
- package/dist/modules/people/repository.js +16 -0
- package/dist/modules/people/repository.js.map +1 -1
- package/dist/modules/people/service.d.ts.map +1 -1
- package/dist/modules/people/service.js +18 -0
- package/dist/modules/people/service.js.map +1 -1
- package/dist/modules/positions/routes.d.ts.map +1 -1
- package/dist/modules/positions/routes.js +4 -2
- package/dist/modules/positions/routes.js.map +1 -1
- package/dist/modules/sample-data/fixture.d.ts +139 -0
- package/dist/modules/sample-data/fixture.d.ts.map +1 -0
- package/dist/modules/sample-data/fixture.js +461 -0
- package/dist/modules/sample-data/fixture.js.map +1 -0
- package/dist/modules/sample-data/index.d.ts +11 -0
- package/dist/modules/sample-data/index.d.ts.map +1 -0
- package/dist/modules/sample-data/index.js +43 -0
- package/dist/modules/sample-data/index.js.map +1 -0
- package/dist/modules/sample-data/routes.d.ts +15 -0
- package/dist/modules/sample-data/routes.d.ts.map +1 -0
- package/dist/modules/sample-data/routes.js +24 -0
- package/dist/modules/sample-data/routes.js.map +1 -0
- package/dist/modules/sample-data/service.d.ts +38 -0
- package/dist/modules/sample-data/service.d.ts.map +1 -0
- package/dist/modules/sample-data/service.js +412 -0
- package/dist/modules/sample-data/service.js.map +1 -0
- package/dist/modules/sample-data/tools.d.ts +4 -0
- package/dist/modules/sample-data/tools.d.ts.map +1 -0
- package/dist/modules/sample-data/tools.js +22 -0
- package/dist/modules/sample-data/tools.js.map +1 -0
- package/dist/modules/smtp-email/index.d.ts +1 -0
- package/dist/modules/smtp-email/index.d.ts.map +1 -1
- package/dist/modules/smtp-email/index.js +1 -0
- package/dist/modules/smtp-email/index.js.map +1 -1
- package/dist/modules/workspace/service.d.ts.map +1 -1
- package/dist/modules/workspace/service.js +10 -1
- package/dist/modules/workspace/service.js.map +1 -1
- package/dist/schema/index.d.ts +1 -0
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +1 -0
- package/dist/schema/index.js.map +1 -1
- package/migrations/0021_certain_maggott.sql +30 -0
- package/migrations/0022_stormy_manta.sql +1 -0
- package/migrations/0023_funny_maddog.sql +1 -0
- package/migrations/meta/0021_snapshot.json +5389 -0
- package/migrations/meta/0022_snapshot.json +5396 -0
- package/migrations/meta/0023_snapshot.json +5403 -0
- package/migrations/meta/_journal.json +21 -0
- package/package.json +3 -2
- package/src/lib/consumerEmailDomains.ts +62 -0
- package/src/lib/email.ts +7 -0
- package/src/lib/emailContent.ts +91 -0
- package/src/lib/emailDomainAutoLink.ts +165 -0
- package/src/lib/ids.ts +2 -0
- package/src/modules/attachedRecords.ts +9 -2
- package/src/modules/auth/preferences.ts +13 -1
- package/src/modules/auth/routes.ts +22 -0
- package/src/modules/auth/schema.ts +12 -2
- package/src/modules/auth/service.ts +37 -3
- package/src/modules/companies/repository.ts +3 -0
- package/src/modules/companies/routes.ts +13 -0
- package/src/modules/companies/schema.ts +5 -1
- package/src/modules/companies/service.ts +25 -0
- package/src/modules/core.ts +11 -0
- package/src/modules/email-domain-linker/index.ts +40 -0
- package/src/modules/email-domain-linker/routes.ts +40 -0
- package/src/modules/email-domain-linker/service.ts +122 -0
- package/src/modules/eventCatalogs.ts +1 -0
- package/src/modules/lists/events.ts +41 -0
- package/src/modules/lists/index.ts +41 -0
- package/src/modules/lists/repository.ts +313 -0
- package/src/modules/lists/routes.ts +247 -0
- package/src/modules/lists/schema.ts +85 -0
- package/src/modules/lists/service.ts +404 -0
- package/src/modules/lists/tools.ts +128 -0
- package/src/modules/people/repository.ts +26 -0
- package/src/modules/people/service.ts +20 -0
- package/src/modules/positions/routes.ts +4 -2
- package/src/modules/sample-data/fixture.ts +627 -0
- package/src/modules/sample-data/index.ts +50 -0
- package/src/modules/sample-data/routes.ts +49 -0
- package/src/modules/sample-data/service.ts +590 -0
- package/src/modules/sample-data/tools.ts +32 -0
- package/src/modules/smtp-email/index.ts +8 -1
- package/src/modules/workspace/service.ts +13 -1
- package/src/schema/index.ts +1 -0
|
@@ -0,0 +1,461 @@
|
|
|
1
|
+
export const SAMPLE_DATA_FIXTURE = {
|
|
2
|
+
companies: [
|
|
3
|
+
{
|
|
4
|
+
key: 'northwind',
|
|
5
|
+
name: 'Northwind Traders',
|
|
6
|
+
domain: 'northwind.dev',
|
|
7
|
+
industry: 'Logistics software',
|
|
8
|
+
description: 'Freight forwarding platform for mid-market importers.',
|
|
9
|
+
stage: 'growth',
|
|
10
|
+
sizeBand: '51-200',
|
|
11
|
+
hq: 'Melbourne, AU',
|
|
12
|
+
website: 'https://northwind.dev',
|
|
13
|
+
accountType: 'customer',
|
|
14
|
+
icpFit: 'high',
|
|
15
|
+
techStack: ['Postgres', 'Node', 'React'],
|
|
16
|
+
summary: 'Active customer. Two seats, expanding to five in Q3.',
|
|
17
|
+
tags: ['customer', 'expansion'],
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
key: 'globex',
|
|
21
|
+
name: 'Globex Corporation',
|
|
22
|
+
domain: 'globex.example',
|
|
23
|
+
industry: 'Manufacturing',
|
|
24
|
+
description: 'Industrial IoT platform for factory operators.',
|
|
25
|
+
stage: 'enterprise',
|
|
26
|
+
sizeBand: '201+',
|
|
27
|
+
hq: 'Sydney, AU',
|
|
28
|
+
website: 'https://globex.example',
|
|
29
|
+
accountType: 'prospect',
|
|
30
|
+
icpFit: 'medium',
|
|
31
|
+
techStack: ['Java', 'Kafka'],
|
|
32
|
+
summary: 'Qualifying. Legal review is the current gate.',
|
|
33
|
+
tags: ['enterprise'],
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
key: 'initech',
|
|
37
|
+
name: 'Initech',
|
|
38
|
+
domain: 'initech.example',
|
|
39
|
+
industry: 'Financial services',
|
|
40
|
+
description: 'Accounts payable automation for SMBs.',
|
|
41
|
+
stage: 'startup',
|
|
42
|
+
sizeBand: '11-50',
|
|
43
|
+
hq: 'Brisbane, AU',
|
|
44
|
+
website: 'https://initech.example',
|
|
45
|
+
accountType: 'prospect',
|
|
46
|
+
icpFit: 'high',
|
|
47
|
+
techStack: ['Python', 'Postgres'],
|
|
48
|
+
summary: 'Inbound from the demo form last week.',
|
|
49
|
+
tags: ['inbound'],
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
key: 'hooli',
|
|
53
|
+
name: 'Hooli',
|
|
54
|
+
domain: 'hooli.example',
|
|
55
|
+
industry: 'Consumer platform',
|
|
56
|
+
description: 'Search and discovery for local services.',
|
|
57
|
+
stage: 'growth',
|
|
58
|
+
sizeBand: '51-200',
|
|
59
|
+
hq: 'Perth, AU',
|
|
60
|
+
website: 'https://hooli.example',
|
|
61
|
+
accountType: 'partner',
|
|
62
|
+
icpFit: 'medium',
|
|
63
|
+
techStack: ['Go', 'gRPC'],
|
|
64
|
+
summary: 'Referral partner. Sends two or three inbound leads a month.',
|
|
65
|
+
tags: ['partner'],
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
key: 'stark',
|
|
69
|
+
name: 'Stark Industries',
|
|
70
|
+
domain: 'stark.example',
|
|
71
|
+
industry: 'Aerospace',
|
|
72
|
+
description: 'Contract manufacturing for defence primes.',
|
|
73
|
+
stage: 'enterprise',
|
|
74
|
+
sizeBand: '201+',
|
|
75
|
+
hq: 'Adelaide, AU',
|
|
76
|
+
website: 'https://stark.example',
|
|
77
|
+
accountType: 'prospect',
|
|
78
|
+
icpFit: 'low',
|
|
79
|
+
techStack: [],
|
|
80
|
+
summary: 'Not a fit today. Keep warm for a future compliance module.',
|
|
81
|
+
tags: ['not-a-fit'],
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
key: 'sequoia',
|
|
85
|
+
name: 'Southern Cross Ventures',
|
|
86
|
+
domain: 'southerncross.example',
|
|
87
|
+
industry: 'Venture capital',
|
|
88
|
+
description: 'Seed-stage investor, one to five million cheque size.',
|
|
89
|
+
stage: 'other',
|
|
90
|
+
sizeBand: '11-50',
|
|
91
|
+
hq: 'Sydney, AU',
|
|
92
|
+
website: 'https://southerncross.example',
|
|
93
|
+
accountType: 'investor',
|
|
94
|
+
icpFit: 'unknown',
|
|
95
|
+
techStack: [],
|
|
96
|
+
summary: 'Warm intro from a portfolio founder in June.',
|
|
97
|
+
tags: ['investor'],
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
key: 'sandbox',
|
|
101
|
+
name: 'Sandbox Accelerator',
|
|
102
|
+
domain: 'sandbox.example',
|
|
103
|
+
industry: 'Startup accelerator',
|
|
104
|
+
description: 'Twelve week program with a demo day and alumni network.',
|
|
105
|
+
stage: 'other',
|
|
106
|
+
sizeBand: '11-50',
|
|
107
|
+
hq: 'Melbourne, AU',
|
|
108
|
+
website: 'https://sandbox.example',
|
|
109
|
+
accountType: 'partner',
|
|
110
|
+
icpFit: 'unknown',
|
|
111
|
+
techStack: [],
|
|
112
|
+
summary: 'Alumni of the 2024 cohort. Runs regular founder events.',
|
|
113
|
+
tags: ['accelerator'],
|
|
114
|
+
},
|
|
115
|
+
],
|
|
116
|
+
people: [
|
|
117
|
+
{
|
|
118
|
+
key: 'ada',
|
|
119
|
+
name: 'Ada Lovelace',
|
|
120
|
+
email: 'ada@northwind.dev',
|
|
121
|
+
location: 'Melbourne, AU',
|
|
122
|
+
preferredChannel: 'email',
|
|
123
|
+
influence: 'champion',
|
|
124
|
+
relationship: 'strong',
|
|
125
|
+
summary: 'Executive sponsor at Northwind. Signs off on renewals.',
|
|
126
|
+
tags: ['champion'],
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
key: 'grace',
|
|
130
|
+
name: 'Grace Hopper',
|
|
131
|
+
email: 'grace@northwind.dev',
|
|
132
|
+
location: 'Melbourne, AU',
|
|
133
|
+
preferredChannel: 'email',
|
|
134
|
+
influence: 'influencer',
|
|
135
|
+
relationship: 'warm',
|
|
136
|
+
summary: 'Operations lead at Northwind. Day-to-day contact.',
|
|
137
|
+
tags: [],
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
key: 'tom',
|
|
141
|
+
name: 'Tom Anderson',
|
|
142
|
+
email: 'tom@globex.example',
|
|
143
|
+
location: 'Sydney, AU',
|
|
144
|
+
preferredChannel: 'call',
|
|
145
|
+
influence: 'decision_maker',
|
|
146
|
+
relationship: 'warm',
|
|
147
|
+
summary: 'Head of engineering at Globex. Decision maker on the qualifying deal.',
|
|
148
|
+
tags: ['decision-maker'],
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
key: 'peter',
|
|
152
|
+
name: 'Peter Gibbons',
|
|
153
|
+
email: 'peter@initech.example',
|
|
154
|
+
location: 'Brisbane, AU',
|
|
155
|
+
preferredChannel: 'email',
|
|
156
|
+
influence: 'influencer',
|
|
157
|
+
relationship: 'warm',
|
|
158
|
+
summary: 'Product manager at Initech. Filled in the demo form.',
|
|
159
|
+
tags: ['inbound'],
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
key: 'gavin',
|
|
163
|
+
name: 'Gavin Belson',
|
|
164
|
+
email: 'gavin@hooli.example',
|
|
165
|
+
location: 'Perth, AU',
|
|
166
|
+
preferredChannel: 'linkedin',
|
|
167
|
+
influence: 'decision_maker',
|
|
168
|
+
relationship: 'warm',
|
|
169
|
+
summary: 'Partnerships lead at Hooli. Introduced Initech last month.',
|
|
170
|
+
tags: ['partner'],
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
key: 'roelof',
|
|
174
|
+
name: 'Roelof Nkosi',
|
|
175
|
+
email: 'roelof@southerncross.example',
|
|
176
|
+
location: 'Sydney, AU',
|
|
177
|
+
preferredChannel: 'email',
|
|
178
|
+
influence: 'decision_maker',
|
|
179
|
+
relationship: 'warm',
|
|
180
|
+
summary: 'Partner at Southern Cross. Leading the diligence on our seed round.',
|
|
181
|
+
tags: ['investor'],
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
key: 'mei',
|
|
185
|
+
name: 'Mei Zhang',
|
|
186
|
+
email: 'mei@sandbox.example',
|
|
187
|
+
location: 'Melbourne, AU',
|
|
188
|
+
preferredChannel: 'email',
|
|
189
|
+
influence: 'influencer',
|
|
190
|
+
relationship: 'warm',
|
|
191
|
+
summary: 'Program director at Sandbox. Runs the alumni network.',
|
|
192
|
+
tags: ['partner'],
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
key: 'charlotte',
|
|
196
|
+
name: 'Charlotte Rivera',
|
|
197
|
+
email: 'charlotte@example.com',
|
|
198
|
+
location: 'Melbourne, AU',
|
|
199
|
+
preferredChannel: 'email',
|
|
200
|
+
influence: 'end_user',
|
|
201
|
+
relationship: 'warm',
|
|
202
|
+
summary: 'Backend engineer applying for the senior role. Strong TypeScript background.',
|
|
203
|
+
tags: ['candidate'],
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
key: 'omar',
|
|
207
|
+
name: 'Omar Haddad',
|
|
208
|
+
email: 'omar@example.com',
|
|
209
|
+
location: 'Sydney, AU',
|
|
210
|
+
preferredChannel: 'email',
|
|
211
|
+
influence: 'end_user',
|
|
212
|
+
relationship: 'cold',
|
|
213
|
+
summary: 'Product designer, sourced through the Sandbox alumni list.',
|
|
214
|
+
tags: ['candidate'],
|
|
215
|
+
},
|
|
216
|
+
],
|
|
217
|
+
positions: [
|
|
218
|
+
{ personKey: 'ada', companyKey: 'northwind', title: 'CEO' },
|
|
219
|
+
{ personKey: 'grace', companyKey: 'northwind', title: 'Head of Operations' },
|
|
220
|
+
{ personKey: 'tom', companyKey: 'globex', title: 'VP Engineering' },
|
|
221
|
+
{ personKey: 'peter', companyKey: 'initech', title: 'Product Manager' },
|
|
222
|
+
{ personKey: 'gavin', companyKey: 'hooli', title: 'Head of Partnerships' },
|
|
223
|
+
{ personKey: 'roelof', companyKey: 'sequoia', title: 'Partner' },
|
|
224
|
+
{ personKey: 'mei', companyKey: 'sandbox', title: 'Program Director' },
|
|
225
|
+
],
|
|
226
|
+
deals: [
|
|
227
|
+
{
|
|
228
|
+
key: 'northwind-expansion',
|
|
229
|
+
name: 'Northwind — seat expansion',
|
|
230
|
+
companyKey: 'northwind',
|
|
231
|
+
stageSlug: 'proposal',
|
|
232
|
+
valueCents: 4_800_000,
|
|
233
|
+
currency: 'AUD',
|
|
234
|
+
expectedClose: nextQuarterEnd(),
|
|
235
|
+
whyWin: 'Active customer, executive sponsor, adding three teams.',
|
|
236
|
+
risks: 'Procurement wants a two-year commit at the current per-seat rate.',
|
|
237
|
+
summary: 'Expansion from two to five seats.',
|
|
238
|
+
tags: ['expansion'],
|
|
239
|
+
peopleKeys: ['ada', 'grace'],
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
key: 'globex-new',
|
|
243
|
+
name: 'Globex — new logo',
|
|
244
|
+
companyKey: 'globex',
|
|
245
|
+
stageSlug: 'qualifying',
|
|
246
|
+
valueCents: 12_000_000,
|
|
247
|
+
currency: 'AUD',
|
|
248
|
+
expectedClose: nextQuarterEnd(),
|
|
249
|
+
whyWin: 'Replaces a bespoke tool their engineering team already resents.',
|
|
250
|
+
risks: 'Legal redlines around data residency.',
|
|
251
|
+
summary: 'Qualifying. Legal is the gate.',
|
|
252
|
+
tags: ['enterprise'],
|
|
253
|
+
peopleKeys: ['tom'],
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
key: 'initech-new',
|
|
257
|
+
name: 'Initech — pilot',
|
|
258
|
+
companyKey: 'initech',
|
|
259
|
+
stageSlug: 'qualifying',
|
|
260
|
+
valueCents: 1_800_000,
|
|
261
|
+
currency: 'AUD',
|
|
262
|
+
expectedClose: null,
|
|
263
|
+
whyWin: 'Inbound. Product manager already sold internally.',
|
|
264
|
+
risks: 'Small team. Budget is not confirmed.',
|
|
265
|
+
summary: 'Inbound from the demo form.',
|
|
266
|
+
tags: ['inbound'],
|
|
267
|
+
peopleKeys: ['peter'],
|
|
268
|
+
},
|
|
269
|
+
],
|
|
270
|
+
plans: [
|
|
271
|
+
{
|
|
272
|
+
targetType: 'deal',
|
|
273
|
+
targetDealKey: 'northwind-expansion',
|
|
274
|
+
date: aWeekOut(),
|
|
275
|
+
title: 'Send revised order form',
|
|
276
|
+
status: 'todo',
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
targetType: 'deal',
|
|
280
|
+
targetDealKey: 'globex-new',
|
|
281
|
+
date: aWeekOut(),
|
|
282
|
+
title: 'Reply to legal on data residency',
|
|
283
|
+
status: 'todo',
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
targetType: 'deal',
|
|
287
|
+
targetDealKey: 'initech-new',
|
|
288
|
+
date: threeDaysOut(),
|
|
289
|
+
title: 'Book a 30-minute discovery call',
|
|
290
|
+
status: 'todo',
|
|
291
|
+
},
|
|
292
|
+
],
|
|
293
|
+
notes: [
|
|
294
|
+
{
|
|
295
|
+
targetType: 'company',
|
|
296
|
+
targetKey: 'northwind',
|
|
297
|
+
body: 'Renewal cycle in October. Ada asked for a joint success plan.',
|
|
298
|
+
pinned: true,
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
targetType: 'deal',
|
|
302
|
+
targetKey: 'globex-new',
|
|
303
|
+
body: 'Tom prefers a call. Book Wednesday afternoons.',
|
|
304
|
+
pinned: false,
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
targetType: 'person',
|
|
308
|
+
targetKey: 'peter',
|
|
309
|
+
body: 'Attended the June webinar. Watched the follow-up demo twice.',
|
|
310
|
+
pinned: false,
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
targetType: 'raise',
|
|
314
|
+
targetKey: 'southern-cross-seed',
|
|
315
|
+
body: 'Roelof asked for the updated deck and the last two months of MRR.',
|
|
316
|
+
pinned: true,
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
targetType: 'partnership',
|
|
320
|
+
targetKey: 'sandbox-alumni',
|
|
321
|
+
body: 'Mei can slot us into the next alumni dinner in September.',
|
|
322
|
+
pinned: false,
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
targetType: 'candidate',
|
|
326
|
+
targetKey: 'charlotte-senior-engineer',
|
|
327
|
+
body: 'Screen call went well. Move to interview loop next week.',
|
|
328
|
+
pinned: false,
|
|
329
|
+
},
|
|
330
|
+
],
|
|
331
|
+
opportunities: [
|
|
332
|
+
{
|
|
333
|
+
key: 'yc-w27',
|
|
334
|
+
name: 'Y Combinator W27 application',
|
|
335
|
+
kind: 'Accelerator',
|
|
336
|
+
stageSlug: 'applied',
|
|
337
|
+
companyKey: null,
|
|
338
|
+
expectedClose: nextQuarterEnd(),
|
|
339
|
+
summary: 'Applied October last cycle. Interview invitations go out in six weeks.',
|
|
340
|
+
tags: ['accelerator'],
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
key: 'sandbox-cohort',
|
|
344
|
+
name: 'Sandbox Autumn Cohort',
|
|
345
|
+
kind: 'Accelerator',
|
|
346
|
+
stageSlug: 'identified',
|
|
347
|
+
companyKey: 'sandbox',
|
|
348
|
+
expectedClose: null,
|
|
349
|
+
summary: 'Program starts in March. Mei suggested we apply this round.',
|
|
350
|
+
tags: ['accelerator'],
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
key: 'innovation-grant',
|
|
354
|
+
name: 'Innovation Australia grant',
|
|
355
|
+
kind: 'Grant',
|
|
356
|
+
stageSlug: 'identified',
|
|
357
|
+
companyKey: null,
|
|
358
|
+
expectedClose: nextQuarterEnd(),
|
|
359
|
+
summary: 'Non-dilutive. Up to $500k. Application window opens next month.',
|
|
360
|
+
tags: ['grant'],
|
|
361
|
+
},
|
|
362
|
+
],
|
|
363
|
+
raises: [
|
|
364
|
+
{
|
|
365
|
+
key: 'southern-cross-seed',
|
|
366
|
+
name: 'Southern Cross — Seed',
|
|
367
|
+
companyKey: 'sequoia',
|
|
368
|
+
stageSlug: 'diligence',
|
|
369
|
+
checkSizeCents: 200_000_000,
|
|
370
|
+
currency: 'AUD',
|
|
371
|
+
thesisFit: 'Focus on developer tools and vertical SaaS. Strong fit for Kelpie.',
|
|
372
|
+
expectedClose: nextQuarterEnd(),
|
|
373
|
+
summary: 'Diligence in progress. Reference calls scheduled next week.',
|
|
374
|
+
tags: ['seed'],
|
|
375
|
+
peopleKeys: ['roelof'],
|
|
376
|
+
},
|
|
377
|
+
],
|
|
378
|
+
partnerships: [
|
|
379
|
+
{
|
|
380
|
+
key: 'hooli-referral',
|
|
381
|
+
name: 'Hooli — referral partner',
|
|
382
|
+
companyKey: 'hooli',
|
|
383
|
+
stageSlug: 'active',
|
|
384
|
+
kind: 'Referral',
|
|
385
|
+
nextTouchpoint: aWeekOut(),
|
|
386
|
+
goals: 'Two to three inbound leads per month.',
|
|
387
|
+
successLooksLike: 'Steady referrals plus one joint case study by end of quarter.',
|
|
388
|
+
summary: 'Active. Gavin is the day-to-day contact.',
|
|
389
|
+
tags: ['referral'],
|
|
390
|
+
peopleKeys: ['gavin'],
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
key: 'sandbox-alumni',
|
|
394
|
+
name: 'Sandbox — alumni network',
|
|
395
|
+
companyKey: 'sandbox',
|
|
396
|
+
stageSlug: 'exploring',
|
|
397
|
+
kind: 'Community',
|
|
398
|
+
nextTouchpoint: aWeekOut(),
|
|
399
|
+
goals: 'Access alumni events and demo day slots.',
|
|
400
|
+
successLooksLike: 'One demo day slot per year plus warm intros into portfolio.',
|
|
401
|
+
summary: 'Exploring. Mei can slot us into the next alumni dinner.',
|
|
402
|
+
tags: ['community'],
|
|
403
|
+
peopleKeys: ['mei'],
|
|
404
|
+
},
|
|
405
|
+
],
|
|
406
|
+
roles: [
|
|
407
|
+
{ key: 'senior-engineer', title: 'Senior Software Engineer', status: 'open' },
|
|
408
|
+
{ key: 'product-designer', title: 'Product Designer', status: 'open' },
|
|
409
|
+
],
|
|
410
|
+
candidates: [
|
|
411
|
+
{
|
|
412
|
+
key: 'charlotte-senior-engineer',
|
|
413
|
+
personKey: 'charlotte',
|
|
414
|
+
roleKey: 'senior-engineer',
|
|
415
|
+
status: 'in_process',
|
|
416
|
+
interviewStage: 'screen',
|
|
417
|
+
referrerPersonKey: null,
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
key: 'omar-product-designer',
|
|
421
|
+
personKey: 'omar',
|
|
422
|
+
roleKey: 'product-designer',
|
|
423
|
+
status: 'in_process',
|
|
424
|
+
interviewStage: 'sourced',
|
|
425
|
+
referrerPersonKey: 'mei',
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
key: 'peter-senior-engineer',
|
|
429
|
+
personKey: 'peter',
|
|
430
|
+
roleKey: 'senior-engineer',
|
|
431
|
+
status: 'nurture',
|
|
432
|
+
interviewStage: null,
|
|
433
|
+
referrerPersonKey: null,
|
|
434
|
+
},
|
|
435
|
+
],
|
|
436
|
+
};
|
|
437
|
+
/**
|
|
438
|
+
* The last day of the current calendar quarter, as `YYYY-MM-DD`.
|
|
439
|
+
*
|
|
440
|
+
* A fixture that hardcoded a date would age. This keeps the deal in a
|
|
441
|
+
* plausible future window without asking the caller to keep it fresh.
|
|
442
|
+
*/
|
|
443
|
+
function nextQuarterEnd() {
|
|
444
|
+
const now = new Date();
|
|
445
|
+
const quarter = Math.floor(now.getUTCMonth() / 3);
|
|
446
|
+
const lastMonth = quarter * 3 + 2;
|
|
447
|
+
const year = now.getUTCFullYear();
|
|
448
|
+
const end = new Date(Date.UTC(year, lastMonth + 1, 0));
|
|
449
|
+
return end.toISOString().slice(0, 10);
|
|
450
|
+
}
|
|
451
|
+
function aWeekOut() {
|
|
452
|
+
const now = new Date();
|
|
453
|
+
now.setUTCDate(now.getUTCDate() + 7);
|
|
454
|
+
return now.toISOString().slice(0, 10);
|
|
455
|
+
}
|
|
456
|
+
function threeDaysOut() {
|
|
457
|
+
const now = new Date();
|
|
458
|
+
now.setUTCDate(now.getUTCDate() + 3);
|
|
459
|
+
return now.toISOString().slice(0, 10);
|
|
460
|
+
}
|
|
461
|
+
//# sourceMappingURL=fixture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixture.js","sourceRoot":"","sources":["../../../src/modules/sample-data/fixture.ts"],"names":[],"mappings":"AAuJA,MAAM,CAAC,MAAM,mBAAmB,GAAY;IAC1C,SAAS,EAAE;QACT;YACE,GAAG,EAAE,WAAW;YAChB,IAAI,EAAE,mBAAmB;YACzB,MAAM,EAAE,eAAe;YACvB,QAAQ,EAAE,oBAAoB;YAC9B,WAAW,EAAE,uDAAuD;YACpE,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,QAAQ;YAClB,EAAE,EAAE,eAAe;YACnB,OAAO,EAAE,uBAAuB;YAChC,WAAW,EAAE,UAAU;YACvB,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC;YACxC,OAAO,EAAE,sDAAsD;YAC/D,IAAI,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;SAChC;QACD;YACE,GAAG,EAAE,QAAQ;YACb,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,gBAAgB;YACxB,QAAQ,EAAE,eAAe;YACzB,WAAW,EAAE,gDAAgD;YAC7D,KAAK,EAAE,YAAY;YACnB,QAAQ,EAAE,MAAM;YAChB,EAAE,EAAE,YAAY;YAChB,OAAO,EAAE,wBAAwB;YACjC,WAAW,EAAE,UAAU;YACvB,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;YAC5B,OAAO,EAAE,+CAA+C;YACxD,IAAI,EAAE,CAAC,YAAY,CAAC;SACrB;QACD;YACE,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,iBAAiB;YACzB,QAAQ,EAAE,oBAAoB;YAC9B,WAAW,EAAE,uCAAuC;YACpD,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,OAAO;YACjB,EAAE,EAAE,cAAc;YAClB,OAAO,EAAE,yBAAyB;YAClC,WAAW,EAAE,UAAU;YACvB,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;YACjC,OAAO,EAAE,uCAAuC;YAChD,IAAI,EAAE,CAAC,SAAS,CAAC;SAClB;QACD;YACE,GAAG,EAAE,OAAO;YACZ,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,eAAe;YACvB,QAAQ,EAAE,mBAAmB;YAC7B,WAAW,EAAE,0CAA0C;YACvD,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,QAAQ;YAClB,EAAE,EAAE,WAAW;YACf,OAAO,EAAE,uBAAuB;YAChC,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC;YACzB,OAAO,EAAE,6DAA6D;YACtE,IAAI,EAAE,CAAC,SAAS,CAAC;SAClB;QACD;YACE,GAAG,EAAE,OAAO;YACZ,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,eAAe;YACvB,QAAQ,EAAE,WAAW;YACrB,WAAW,EAAE,4CAA4C;YACzD,KAAK,EAAE,YAAY;YACnB,QAAQ,EAAE,MAAM;YAChB,EAAE,EAAE,cAAc;YAClB,OAAO,EAAE,uBAAuB;YAChC,WAAW,EAAE,UAAU;YACvB,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,4DAA4D;YACrE,IAAI,EAAE,CAAC,WAAW,CAAC;SACpB;QACD;YACE,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,yBAAyB;YAC/B,MAAM,EAAE,uBAAuB;YAC/B,QAAQ,EAAE,iBAAiB;YAC3B,WAAW,EAAE,uDAAuD;YACpE,KAAK,EAAE,OAAO;YACd,QAAQ,EAAE,OAAO;YACjB,EAAE,EAAE,YAAY;YAChB,OAAO,EAAE,+BAA+B;YACxC,WAAW,EAAE,UAAU;YACvB,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,8CAA8C;YACvD,IAAI,EAAE,CAAC,UAAU,CAAC;SACnB;QACD;YACE,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,iBAAiB;YACzB,QAAQ,EAAE,qBAAqB;YAC/B,WAAW,EAAE,yDAAyD;YACtE,KAAK,EAAE,OAAO;YACd,QAAQ,EAAE,OAAO;YACjB,EAAE,EAAE,eAAe;YACnB,OAAO,EAAE,yBAAyB;YAClC,WAAW,EAAE,SAAS;YACtB,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,yDAAyD;YAClE,IAAI,EAAE,CAAC,aAAa,CAAC;SACtB;KACF;IAED,MAAM,EAAE;QACN;YACE,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,mBAAmB;YAC1B,QAAQ,EAAE,eAAe;YACzB,gBAAgB,EAAE,OAAO;YACzB,SAAS,EAAE,UAAU;YACrB,YAAY,EAAE,QAAQ;YACtB,OAAO,EAAE,wDAAwD;YACjE,IAAI,EAAE,CAAC,UAAU,CAAC;SACnB;QACD;YACE,GAAG,EAAE,OAAO;YACZ,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,qBAAqB;YAC5B,QAAQ,EAAE,eAAe;YACzB,gBAAgB,EAAE,OAAO;YACzB,SAAS,EAAE,YAAY;YACvB,YAAY,EAAE,MAAM;YACpB,OAAO,EAAE,mDAAmD;YAC5D,IAAI,EAAE,EAAE;SACT;QACD;YACE,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,oBAAoB;YAC3B,QAAQ,EAAE,YAAY;YACtB,gBAAgB,EAAE,MAAM;YACxB,SAAS,EAAE,gBAAgB;YAC3B,YAAY,EAAE,MAAM;YACpB,OAAO,EAAE,uEAAuE;YAChF,IAAI,EAAE,CAAC,gBAAgB,CAAC;SACzB;QACD;YACE,GAAG,EAAE,OAAO;YACZ,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,uBAAuB;YAC9B,QAAQ,EAAE,cAAc;YACxB,gBAAgB,EAAE,OAAO;YACzB,SAAS,EAAE,YAAY;YACvB,YAAY,EAAE,MAAM;YACpB,OAAO,EAAE,sDAAsD;YAC/D,IAAI,EAAE,CAAC,SAAS,CAAC;SAClB;QACD;YACE,GAAG,EAAE,OAAO;YACZ,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,qBAAqB;YAC5B,QAAQ,EAAE,WAAW;YACrB,gBAAgB,EAAE,UAAU;YAC5B,SAAS,EAAE,gBAAgB;YAC3B,YAAY,EAAE,MAAM;YACpB,OAAO,EAAE,4DAA4D;YACrE,IAAI,EAAE,CAAC,SAAS,CAAC;SAClB;QACD;YACE,GAAG,EAAE,QAAQ;YACb,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,8BAA8B;YACrC,QAAQ,EAAE,YAAY;YACtB,gBAAgB,EAAE,OAAO;YACzB,SAAS,EAAE,gBAAgB;YAC3B,YAAY,EAAE,MAAM;YACpB,OAAO,EAAE,qEAAqE;YAC9E,IAAI,EAAE,CAAC,UAAU,CAAC;SACnB;QACD;YACE,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,qBAAqB;YAC5B,QAAQ,EAAE,eAAe;YACzB,gBAAgB,EAAE,OAAO;YACzB,SAAS,EAAE,YAAY;YACvB,YAAY,EAAE,MAAM;YACpB,OAAO,EAAE,uDAAuD;YAChE,IAAI,EAAE,CAAC,SAAS,CAAC;SAClB;QACD;YACE,GAAG,EAAE,WAAW;YAChB,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,uBAAuB;YAC9B,QAAQ,EAAE,eAAe;YACzB,gBAAgB,EAAE,OAAO;YACzB,SAAS,EAAE,UAAU;YACrB,YAAY,EAAE,MAAM;YACpB,OAAO,EAAE,8EAA8E;YACvF,IAAI,EAAE,CAAC,WAAW,CAAC;SACpB;QACD;YACE,GAAG,EAAE,MAAM;YACX,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,kBAAkB;YACzB,QAAQ,EAAE,YAAY;YACtB,gBAAgB,EAAE,OAAO;YACzB,SAAS,EAAE,UAAU;YACrB,YAAY,EAAE,MAAM;YACpB,OAAO,EAAE,4DAA4D;YACrE,IAAI,EAAE,CAAC,WAAW,CAAC;SACpB;KACF;IAED,SAAS,EAAE;QACT,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE;QAC3D,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,oBAAoB,EAAE;QAC5E,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE;QACnE,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,iBAAiB,EAAE;QACvE,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE;QAC1E,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;QAChE,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,EAAE;KACvE;IAED,KAAK,EAAE;QACL;YACE,GAAG,EAAE,qBAAqB;YAC1B,IAAI,EAAE,4BAA4B;YAClC,UAAU,EAAE,WAAW;YACvB,SAAS,EAAE,UAAU;YACrB,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,cAAc,EAAE;YAC/B,MAAM,EAAE,yDAAyD;YACjE,KAAK,EAAE,mEAAmE;YAC1E,OAAO,EAAE,mCAAmC;YAC5C,IAAI,EAAE,CAAC,WAAW,CAAC;YACnB,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;SAC7B;QACD;YACE,GAAG,EAAE,YAAY;YACjB,IAAI,EAAE,mBAAmB;YACzB,UAAU,EAAE,QAAQ;YACpB,SAAS,EAAE,YAAY;YACvB,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,cAAc,EAAE;YAC/B,MAAM,EAAE,iEAAiE;YACzE,KAAK,EAAE,uCAAuC;YAC9C,OAAO,EAAE,gCAAgC;YACzC,IAAI,EAAE,CAAC,YAAY,CAAC;YACpB,UAAU,EAAE,CAAC,KAAK,CAAC;SACpB;QACD;YACE,GAAG,EAAE,aAAa;YAClB,IAAI,EAAE,iBAAiB;YACvB,UAAU,EAAE,SAAS;YACrB,SAAS,EAAE,YAAY;YACvB,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,IAAI;YACnB,MAAM,EAAE,mDAAmD;YAC3D,KAAK,EAAE,sCAAsC;YAC7C,OAAO,EAAE,6BAA6B;YACtC,IAAI,EAAE,CAAC,SAAS,CAAC;YACjB,UAAU,EAAE,CAAC,OAAO,CAAC;SACtB;KACF;IAED,KAAK,EAAE;QACL;YACE,UAAU,EAAE,MAAM;YAClB,aAAa,EAAE,qBAAqB;YACpC,IAAI,EAAE,QAAQ,EAAE;YAChB,KAAK,EAAE,yBAAyB;YAChC,MAAM,EAAE,MAAM;SACf;QACD;YACE,UAAU,EAAE,MAAM;YAClB,aAAa,EAAE,YAAY;YAC3B,IAAI,EAAE,QAAQ,EAAE;YAChB,KAAK,EAAE,kCAAkC;YACzC,MAAM,EAAE,MAAM;SACf;QACD;YACE,UAAU,EAAE,MAAM;YAClB,aAAa,EAAE,aAAa;YAC5B,IAAI,EAAE,YAAY,EAAE;YACpB,KAAK,EAAE,iCAAiC;YACxC,MAAM,EAAE,MAAM;SACf;KACF;IAED,KAAK,EAAE;QACL;YACE,UAAU,EAAE,SAAS;YACrB,SAAS,EAAE,WAAW;YACtB,IAAI,EAAE,+DAA+D;YACrE,MAAM,EAAE,IAAI;SACb;QACD;YACE,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,YAAY;YACvB,IAAI,EAAE,gDAAgD;YACtD,MAAM,EAAE,KAAK;SACd;QACD;YACE,UAAU,EAAE,QAAQ;YACpB,SAAS,EAAE,OAAO;YAClB,IAAI,EAAE,8DAA8D;YACpE,MAAM,EAAE,KAAK;SACd;QACD;YACE,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,qBAAqB;YAChC,IAAI,EAAE,mEAAmE;YACzE,MAAM,EAAE,IAAI;SACb;QACD;YACE,UAAU,EAAE,aAAa;YACzB,SAAS,EAAE,gBAAgB;YAC3B,IAAI,EAAE,2DAA2D;YACjE,MAAM,EAAE,KAAK;SACd;QACD;YACE,UAAU,EAAE,WAAW;YACvB,SAAS,EAAE,2BAA2B;YACtC,IAAI,EAAE,0DAA0D;YAChE,MAAM,EAAE,KAAK;SACd;KACF;IAED,aAAa,EAAE;QACb;YACE,GAAG,EAAE,QAAQ;YACb,IAAI,EAAE,8BAA8B;YACpC,IAAI,EAAE,aAAa;YACnB,SAAS,EAAE,SAAS;YACpB,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,cAAc,EAAE;YAC/B,OAAO,EAAE,wEAAwE;YACjF,IAAI,EAAE,CAAC,aAAa,CAAC;SACtB;QACD;YACE,GAAG,EAAE,gBAAgB;YACrB,IAAI,EAAE,uBAAuB;YAC7B,IAAI,EAAE,aAAa;YACnB,SAAS,EAAE,YAAY;YACvB,UAAU,EAAE,SAAS;YACrB,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE,6DAA6D;YACtE,IAAI,EAAE,CAAC,aAAa,CAAC;SACtB;QACD;YACE,GAAG,EAAE,kBAAkB;YACvB,IAAI,EAAE,4BAA4B;YAClC,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,YAAY;YACvB,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,cAAc,EAAE;YAC/B,OAAO,EAAE,iEAAiE;YAC1E,IAAI,EAAE,CAAC,OAAO,CAAC;SAChB;KACF;IAED,MAAM,EAAE;QACN;YACE,GAAG,EAAE,qBAAqB;YAC1B,IAAI,EAAE,uBAAuB;YAC7B,UAAU,EAAE,SAAS;YACrB,SAAS,EAAE,WAAW;YACtB,cAAc,EAAE,WAAW;YAC3B,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,oEAAoE;YAC/E,aAAa,EAAE,cAAc,EAAE;YAC/B,OAAO,EAAE,6DAA6D;YACtE,IAAI,EAAE,CAAC,MAAM,CAAC;YACd,UAAU,EAAE,CAAC,QAAQ,CAAC;SACvB;KACF;IAED,YAAY,EAAE;QACZ;YACE,GAAG,EAAE,gBAAgB;YACrB,IAAI,EAAE,0BAA0B;YAChC,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,QAAQ;YACnB,IAAI,EAAE,UAAU;YAChB,cAAc,EAAE,QAAQ,EAAE;YAC1B,KAAK,EAAE,uCAAuC;YAC9C,gBAAgB,EAAE,+DAA+D;YACjF,OAAO,EAAE,0CAA0C;YACnD,IAAI,EAAE,CAAC,UAAU,CAAC;YAClB,UAAU,EAAE,CAAC,OAAO,CAAC;SACtB;QACD;YACE,GAAG,EAAE,gBAAgB;YACrB,IAAI,EAAE,0BAA0B;YAChC,UAAU,EAAE,SAAS;YACrB,SAAS,EAAE,WAAW;YACtB,IAAI,EAAE,WAAW;YACjB,cAAc,EAAE,QAAQ,EAAE;YAC1B,KAAK,EAAE,0CAA0C;YACjD,gBAAgB,EAAE,6DAA6D;YAC/E,OAAO,EAAE,yDAAyD;YAClE,IAAI,EAAE,CAAC,WAAW,CAAC;YACnB,UAAU,EAAE,CAAC,KAAK,CAAC;SACpB;KACF;IAED,KAAK,EAAE;QACL,EAAE,GAAG,EAAE,iBAAiB,EAAE,KAAK,EAAE,0BAA0B,EAAE,MAAM,EAAE,MAAM,EAAE;QAC7E,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE;KACvE;IAED,UAAU,EAAE;QACV;YACE,GAAG,EAAE,2BAA2B;YAChC,SAAS,EAAE,WAAW;YACtB,OAAO,EAAE,iBAAiB;YAC1B,MAAM,EAAE,YAAY;YACpB,cAAc,EAAE,QAAQ;YACxB,iBAAiB,EAAE,IAAI;SACxB;QACD;YACE,GAAG,EAAE,uBAAuB;YAC5B,SAAS,EAAE,MAAM;YACjB,OAAO,EAAE,kBAAkB;YAC3B,MAAM,EAAE,YAAY;YACpB,cAAc,EAAE,SAAS;YACzB,iBAAiB,EAAE,KAAK;SACzB;QACD;YACE,GAAG,EAAE,uBAAuB;YAC5B,SAAS,EAAE,OAAO;YAClB,OAAO,EAAE,iBAAiB;YAC1B,MAAM,EAAE,SAAS;YACjB,cAAc,EAAE,IAAI;YACpB,iBAAiB,EAAE,IAAI;SACxB;KACF;CACF,CAAA;AAED;;;;;GAKG;AACH,SAAS,cAAc;IACrB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IACtB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAA;IACjD,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC,GAAG,CAAC,CAAA;IACjC,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,EAAE,CAAA;IACjC,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAEtD,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AACvC,CAAC;AAED,SAAS,QAAQ;IACf,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IACtB,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAA;IAEpC,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AACvC,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IACtB,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAA;IAEpC,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AACvC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { KelpieModule } from '../../runtime/module.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Sample data: one-shot fixture install for a new workspace.
|
|
4
|
+
*
|
|
5
|
+
* Owns no tables. Requires the modules whose tables the fixture writes into.
|
|
6
|
+
* A workspace admin invokes it from the setup wizard or from the admin data
|
|
7
|
+
* page; an agent invokes it through the matching MCP tool.
|
|
8
|
+
*/
|
|
9
|
+
export declare function createSampleDataModule(): KelpieModule;
|
|
10
|
+
export type { SampleDataCounts, SampleDataService } from './service.ts';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/sample-data/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAK3D;;;;;;GAMG;AACH,wBAAgB,sBAAsB,IAAI,YAAY,CAmCrD;AAED,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { mountSampleDataRoutes } from './routes.js';
|
|
2
|
+
import { createSampleDataService } from './service.js';
|
|
3
|
+
import { registerSampleDataTools } from './tools.js';
|
|
4
|
+
/**
|
|
5
|
+
* Sample data: one-shot fixture install for a new workspace.
|
|
6
|
+
*
|
|
7
|
+
* Owns no tables. Requires the modules whose tables the fixture writes into.
|
|
8
|
+
* A workspace admin invokes it from the setup wizard or from the admin data
|
|
9
|
+
* page; an agent invokes it through the matching MCP tool.
|
|
10
|
+
*/
|
|
11
|
+
export function createSampleDataModule() {
|
|
12
|
+
return {
|
|
13
|
+
id: 'sample-data',
|
|
14
|
+
requires: [
|
|
15
|
+
'workspace',
|
|
16
|
+
'pipelines',
|
|
17
|
+
'companies',
|
|
18
|
+
'people',
|
|
19
|
+
'positions',
|
|
20
|
+
'deals',
|
|
21
|
+
'plans',
|
|
22
|
+
'notes',
|
|
23
|
+
'opportunities',
|
|
24
|
+
'raises',
|
|
25
|
+
'partnerships',
|
|
26
|
+
'hiring',
|
|
27
|
+
],
|
|
28
|
+
register(context) {
|
|
29
|
+
const service = createSampleDataService({
|
|
30
|
+
db: context.db,
|
|
31
|
+
transaction: context.transaction,
|
|
32
|
+
createId: context.createId,
|
|
33
|
+
now: context.now,
|
|
34
|
+
});
|
|
35
|
+
context.routes((router) => {
|
|
36
|
+
mountSampleDataRoutes(router, { db: context.db, now: context.now, service });
|
|
37
|
+
});
|
|
38
|
+
registerSampleDataTools(context.mcp, service);
|
|
39
|
+
return Promise.resolve();
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/sample-data/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAEpD;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,EAAE,EAAE,aAAa;QACjB,QAAQ,EAAE;YACR,WAAW;YACX,WAAW;YACX,WAAW;YACX,QAAQ;YACR,WAAW;YACX,OAAO;YACP,OAAO;YACP,OAAO;YACP,eAAe;YACf,QAAQ;YACR,cAAc;YACd,QAAQ;SACT;QAED,QAAQ,CAAC,OAAO;YACd,MAAM,OAAO,GAAG,uBAAuB,CAAC;gBACtC,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;aACjB,CAAC,CAAA;YAEF,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;gBACxB,qBAAqB,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;YAC9E,CAAC,CAAC,CAAA;YAEF,uBAAuB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAE7C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QAC1B,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Hono } from 'hono';
|
|
2
|
+
import type { CredentialDependencies } from '../auth/credentials.ts';
|
|
3
|
+
import type { SampleDataCounts, SampleDataService } from './service.ts';
|
|
4
|
+
/**
|
|
5
|
+
* Wire shape for `POST /v1/workspaces/:id/sample-data`.
|
|
6
|
+
*
|
|
7
|
+
* No request body: the installer takes no options today. Any option we add
|
|
8
|
+
* later goes on the body, not the URL.
|
|
9
|
+
*/
|
|
10
|
+
export interface SampleDataRoutesDependencies extends CredentialDependencies {
|
|
11
|
+
readonly service: SampleDataService;
|
|
12
|
+
}
|
|
13
|
+
export declare function sampleDataResponse(counts: SampleDataCounts): Record<string, unknown>;
|
|
14
|
+
export declare function mountSampleDataRoutes(router: Hono, dependencies: SampleDataRoutesDependencies): void;
|
|
15
|
+
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/modules/sample-data/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,MAAM,CAAA;AAIzC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEvE;;;;;GAKG;AAEH,MAAM,WAAW,4BAA6B,SAAQ,sBAAsB;IAC1E,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;CACpC;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAcpF;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,IAAI,EACZ,YAAY,EAAE,4BAA4B,GACzC,IAAI,CAWN"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { resolveActorFrom } from '../auth/credentials.js';
|
|
2
|
+
export function sampleDataResponse(counts) {
|
|
3
|
+
return {
|
|
4
|
+
companies: counts.companies,
|
|
5
|
+
people: counts.people,
|
|
6
|
+
positions: counts.positions,
|
|
7
|
+
deals: counts.deals,
|
|
8
|
+
plan_items: counts.planItems,
|
|
9
|
+
notes: counts.notes,
|
|
10
|
+
opportunities: counts.opportunities,
|
|
11
|
+
raises: counts.raises,
|
|
12
|
+
partnerships: counts.partnerships,
|
|
13
|
+
roles: counts.roles,
|
|
14
|
+
candidates: counts.candidates,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export function mountSampleDataRoutes(router, dependencies) {
|
|
18
|
+
const requireActor = (context) => resolveActorFrom(dependencies, context);
|
|
19
|
+
router.post('/workspaces/:id/sample-data', async (context) => {
|
|
20
|
+
const counts = await dependencies.service.install(await requireActor(context), context.req.param('id'));
|
|
21
|
+
return context.json(sampleDataResponse(counts), 201);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/modules/sample-data/routes.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAezD,MAAM,UAAU,kBAAkB,CAAC,MAAwB;IACzD,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,UAAU,EAAE,MAAM,CAAC,SAAS;QAC5B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAAY,EACZ,YAA0C;IAE1C,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAkB,EAAE,CAAC,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAElG,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC3D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,OAAO,CAC/C,MAAM,YAAY,CAAC,OAAO,CAAC,EAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CACxB,CAAA;QAED,OAAO,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { Database } from '../../lib/database.ts';
|
|
2
|
+
import type { IdFactory } from '../../lib/ids.ts';
|
|
3
|
+
import type { TransactionScope } from '../../runtime/transaction.ts';
|
|
4
|
+
import type { Actor } from '../auth/actor.ts';
|
|
5
|
+
/**
|
|
6
|
+
* Installs the sample workspace, in one transaction.
|
|
7
|
+
*
|
|
8
|
+
* The whole seed is one write. A failure part-way through rolls the whole
|
|
9
|
+
* thing back, so a workspace never ends up with half of it.
|
|
10
|
+
*
|
|
11
|
+
* Idempotent by refusal: a workspace that already holds any companies or
|
|
12
|
+
* people gets a 409. Installing twice would double the fixture, which is not
|
|
13
|
+
* what an "install once" button says.
|
|
14
|
+
*/
|
|
15
|
+
export interface SampleDataDependencies {
|
|
16
|
+
readonly db: Database;
|
|
17
|
+
readonly transaction: TransactionScope;
|
|
18
|
+
readonly createId: IdFactory;
|
|
19
|
+
readonly now: () => Date;
|
|
20
|
+
}
|
|
21
|
+
export interface SampleDataCounts {
|
|
22
|
+
readonly companies: number;
|
|
23
|
+
readonly people: number;
|
|
24
|
+
readonly positions: number;
|
|
25
|
+
readonly deals: number;
|
|
26
|
+
readonly planItems: number;
|
|
27
|
+
readonly notes: number;
|
|
28
|
+
readonly opportunities: number;
|
|
29
|
+
readonly raises: number;
|
|
30
|
+
readonly partnerships: number;
|
|
31
|
+
readonly roles: number;
|
|
32
|
+
readonly candidates: number;
|
|
33
|
+
}
|
|
34
|
+
export interface SampleDataService {
|
|
35
|
+
install(actor: Actor, workspaceId: string): Promise<SampleDataCounts>;
|
|
36
|
+
}
|
|
37
|
+
export declare function createSampleDataService(dependencies: SampleDataDependencies): SampleDataService;
|
|
38
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/modules/sample-data/service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAkB7C;;;;;;;;;GASG;AAEH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAA;IACtC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,IAAI,CAAA;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;CACtE;AAED,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,sBAAsB,GAAG,iBAAiB,CAkd/F"}
|