@kernhq/module-tracker 0.1.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 (158) hide show
  1. package/LICENSE +662 -0
  2. package/README.md +265 -0
  3. package/dist/contract/events.d.ts +140 -0
  4. package/dist/contract/events.d.ts.map +1 -0
  5. package/dist/contract/events.js +51 -0
  6. package/dist/contract/events.js.map +1 -0
  7. package/dist/contract/index.d.ts +6 -0
  8. package/dist/contract/index.d.ts.map +1 -0
  9. package/dist/contract/index.js +6 -0
  10. package/dist/contract/index.js.map +1 -0
  11. package/dist/contract/models.d.ts +2547 -0
  12. package/dist/contract/models.d.ts.map +1 -0
  13. package/dist/contract/models.js +1214 -0
  14. package/dist/contract/models.js.map +1 -0
  15. package/dist/contract/notifications.d.ts +4 -0
  16. package/dist/contract/notifications.d.ts.map +1 -0
  17. package/dist/contract/notifications.js +46 -0
  18. package/dist/contract/notifications.js.map +1 -0
  19. package/dist/contract/permissions.d.ts +161 -0
  20. package/dist/contract/permissions.d.ts.map +1 -0
  21. package/dist/contract/permissions.js +192 -0
  22. package/dist/contract/permissions.js.map +1 -0
  23. package/dist/contract/router.d.ts +9659 -0
  24. package/dist/contract/router.d.ts.map +1 -0
  25. package/dist/contract/router.js +732 -0
  26. package/dist/contract/router.js.map +1 -0
  27. package/dist/kql/ast.d.ts +90 -0
  28. package/dist/kql/ast.d.ts.map +1 -0
  29. package/dist/kql/ast.js +80 -0
  30. package/dist/kql/ast.js.map +1 -0
  31. package/dist/kql/dates.d.ts +16 -0
  32. package/dist/kql/dates.d.ts.map +1 -0
  33. package/dist/kql/dates.js +54 -0
  34. package/dist/kql/dates.js.map +1 -0
  35. package/dist/kql/fields.d.ts +61 -0
  36. package/dist/kql/fields.d.ts.map +1 -0
  37. package/dist/kql/fields.js +106 -0
  38. package/dist/kql/fields.js.map +1 -0
  39. package/dist/kql/index.d.ts +16 -0
  40. package/dist/kql/index.d.ts.map +1 -0
  41. package/dist/kql/index.js +16 -0
  42. package/dist/kql/index.js.map +1 -0
  43. package/dist/kql/lexer.d.ts +28 -0
  44. package/dist/kql/lexer.d.ts.map +1 -0
  45. package/dist/kql/lexer.js +127 -0
  46. package/dist/kql/lexer.js.map +1 -0
  47. package/dist/kql/parser.d.ts +14 -0
  48. package/dist/kql/parser.d.ts.map +1 -0
  49. package/dist/kql/parser.js +290 -0
  50. package/dist/kql/parser.js.map +1 -0
  51. package/dist/kql/suggest.d.ts +8 -0
  52. package/dist/kql/suggest.d.ts.map +1 -0
  53. package/dist/kql/suggest.js +96 -0
  54. package/dist/kql/suggest.js.map +1 -0
  55. package/dist/kql/validate.d.ts +10 -0
  56. package/dist/kql/validate.d.ts.map +1 -0
  57. package/dist/kql/validate.js +84 -0
  58. package/dist/kql/validate.js.map +1 -0
  59. package/dist/server/index.d.ts +17 -0
  60. package/dist/server/index.d.ts.map +1 -0
  61. package/dist/server/index.js +583 -0
  62. package/dist/server/index.js.map +1 -0
  63. package/dist/server/kql/compile.d.ts +49 -0
  64. package/dist/server/kql/compile.d.ts.map +1 -0
  65. package/dist/server/kql/compile.js +372 -0
  66. package/dist/server/kql/compile.js.map +1 -0
  67. package/dist/server/rank.d.ts +23 -0
  68. package/dist/server/rank.d.ts.map +1 -0
  69. package/dist/server/rank.js +66 -0
  70. package/dist/server/rank.js.map +1 -0
  71. package/dist/server/rich.d.ts +30 -0
  72. package/dist/server/rich.d.ts.map +1 -0
  73. package/dist/server/rich.js +97 -0
  74. package/dist/server/rich.js.map +1 -0
  75. package/dist/server/router.d.ts +10589 -0
  76. package/dist/server/router.d.ts.map +1 -0
  77. package/dist/server/router.js +431 -0
  78. package/dist/server/router.js.map +1 -0
  79. package/dist/server/schema.d.ts +6622 -0
  80. package/dist/server/schema.d.ts.map +1 -0
  81. package/dist/server/schema.js +581 -0
  82. package/dist/server/schema.js.map +1 -0
  83. package/dist/server/services/access.d.ts +53 -0
  84. package/dist/server/services/access.d.ts.map +1 -0
  85. package/dist/server/services/access.js +146 -0
  86. package/dist/server/services/access.js.map +1 -0
  87. package/dist/server/services/comments.d.ts +36 -0
  88. package/dist/server/services/comments.d.ts.map +1 -0
  89. package/dist/server/services/comments.js +231 -0
  90. package/dist/server/services/comments.js.map +1 -0
  91. package/dist/server/services/config.d.ts +130 -0
  92. package/dist/server/services/config.d.ts.map +1 -0
  93. package/dist/server/services/config.js +797 -0
  94. package/dist/server/services/config.js.map +1 -0
  95. package/dist/server/services/db.d.ts +93 -0
  96. package/dist/server/services/db.d.ts.map +1 -0
  97. package/dist/server/services/db.js +519 -0
  98. package/dist/server/services/db.js.map +1 -0
  99. package/dist/server/services/imports.d.ts +37 -0
  100. package/dist/server/services/imports.d.ts.map +1 -0
  101. package/dist/server/services/imports.js +324 -0
  102. package/dist/server/services/imports.js.map +1 -0
  103. package/dist/server/services/index.d.ts +36 -0
  104. package/dist/server/services/index.d.ts.map +1 -0
  105. package/dist/server/services/index.js +57 -0
  106. package/dist/server/services/index.js.map +1 -0
  107. package/dist/server/services/intake.d.ts +47 -0
  108. package/dist/server/services/intake.d.ts.map +1 -0
  109. package/dist/server/services/intake.js +268 -0
  110. package/dist/server/services/intake.js.map +1 -0
  111. package/dist/server/services/issues.d.ts +763 -0
  112. package/dist/server/services/issues.d.ts.map +1 -0
  113. package/dist/server/services/issues.js +1381 -0
  114. package/dist/server/services/issues.js.map +1 -0
  115. package/dist/server/services/notify.d.ts +51 -0
  116. package/dist/server/services/notify.d.ts.map +1 -0
  117. package/dist/server/services/notify.js +90 -0
  118. package/dist/server/services/notify.js.map +1 -0
  119. package/dist/server/services/planning.d.ts +62 -0
  120. package/dist/server/services/planning.d.ts.map +1 -0
  121. package/dist/server/services/planning.js +614 -0
  122. package/dist/server/services/planning.js.map +1 -0
  123. package/dist/server/services/projects.d.ts +43 -0
  124. package/dist/server/services/projects.d.ts.map +1 -0
  125. package/dist/server/services/projects.js +375 -0
  126. package/dist/server/services/projects.js.map +1 -0
  127. package/dist/server/services/query.d.ts +24 -0
  128. package/dist/server/services/query.d.ts.map +1 -0
  129. package/dist/server/services/query.js +312 -0
  130. package/dist/server/services/query.js.map +1 -0
  131. package/dist/server/services/reports.d.ts +30 -0
  132. package/dist/server/services/reports.d.ts.map +1 -0
  133. package/dist/server/services/reports.js +295 -0
  134. package/dist/server/services/reports.js.map +1 -0
  135. package/dist/server/services/time.d.ts +53 -0
  136. package/dist/server/services/time.d.ts.map +1 -0
  137. package/dist/server/services/time.js +192 -0
  138. package/dist/server/services/time.js.map +1 -0
  139. package/dist/server/services/transitions.d.ts +61 -0
  140. package/dist/server/services/transitions.d.ts.map +1 -0
  141. package/dist/server/services/transitions.js +493 -0
  142. package/dist/server/services/transitions.js.map +1 -0
  143. package/dist/server/services/views.d.ts +33 -0
  144. package/dist/server/services/views.d.ts.map +1 -0
  145. package/dist/server/services/views.js +195 -0
  146. package/dist/server/services/views.js.map +1 -0
  147. package/migrations/0000_init.sql +529 -0
  148. package/migrations/0001_rls.sql +259 -0
  149. package/migrations/meta/0000_snapshot.json +4140 -0
  150. package/migrations/meta/_journal.json +20 -0
  151. package/package.json +82 -0
  152. package/src/client/api.ts +15 -0
  153. package/src/client/format.ts +164 -0
  154. package/src/client/group.ts +150 -0
  155. package/src/client/index.ts +60 -0
  156. package/src/client/kql.ts +492 -0
  157. package/src/client/rank.ts +87 -0
  158. package/src/client/types.ts +57 -0
@@ -0,0 +1,519 @@
1
+ import { ProjectSettings as ProjectSettingsSchema, ViewDisplay as ViewDisplaySchema, } from '../../contract/models.js';
2
+ export const iso = (d) => d == null ? null : d instanceof Date ? d.toISOString() : new Date(d).toISOString();
3
+ export const isoReq = (d) => iso(d);
4
+ /** Run `fn` inside a transaction with RLS bound to one workspace. */
5
+ export const withWs = (kernel, workspaceId, fn, userId) => kernel.database.withWorkspace(workspaceId, fn, { userId: userId ?? null });
6
+ const asId = (v) => v;
7
+ const asIds = (v) => (v ?? []);
8
+ export const EMPTY_RELATION_SUMMARY = {
9
+ blocks: 0,
10
+ blockedBy: 0,
11
+ openBlockers: 0,
12
+ relates: 0,
13
+ duplicates: 0,
14
+ subItems: 0,
15
+ subItemsDone: 0,
16
+ };
17
+ export function toProject(r, counters = {}) {
18
+ return {
19
+ id: r.id,
20
+ workspaceId: asId(r.workspaceId),
21
+ key: r.key,
22
+ name: r.name,
23
+ description: r.description,
24
+ icon: r.icon,
25
+ color: r.color,
26
+ leadId: asId(r.leadId),
27
+ visibility: r.visibility,
28
+ defaultAssignee: r.defaultAssignee,
29
+ workflowSchemeId: r.workflowSchemeId,
30
+ typeSchemeId: r.typeSchemeId,
31
+ fieldSchemeId: r.fieldSchemeId,
32
+ settings: parseSettings(r.settings),
33
+ intakeToken: r.intakeToken,
34
+ issueCounter: counters.issueCounter ?? 0,
35
+ cycleCounter: counters.cycleCounter ?? 0,
36
+ memberCount: r.memberCount,
37
+ openIssueCount: counters.openIssueCount ?? 0,
38
+ archivedAt: iso(r.archivedAt),
39
+ createdBy: asId(r.createdBy),
40
+ createdAt: isoReq(r.createdAt),
41
+ updatedAt: isoReq(r.updatedAt),
42
+ };
43
+ }
44
+ /** Settings are stored as written; parsing fills in defaults added since the row was saved. */
45
+ export const parseSettings = (raw) => ProjectSettingsSchema.parse(raw ?? {});
46
+ export const parseDisplay = (raw) => ViewDisplaySchema.parse(raw ?? {});
47
+ export function toProjectMember(r) {
48
+ return {
49
+ projectId: r.projectId,
50
+ userId: asId(r.userId),
51
+ role: r.role,
52
+ addedBy: asId(r.addedBy),
53
+ addedAt: isoReq(r.addedAt),
54
+ };
55
+ }
56
+ export function toProjectTemplate(r) {
57
+ return {
58
+ id: r.id,
59
+ workspaceId: asId(r.workspaceId),
60
+ key: r.key,
61
+ name: r.name,
62
+ description: r.description,
63
+ icon: r.icon,
64
+ body: r.body ?? {},
65
+ builtin: r.builtin,
66
+ createdAt: isoReq(r.createdAt),
67
+ };
68
+ }
69
+ export function toWorkItemType(r) {
70
+ return {
71
+ id: r.id,
72
+ workspaceId: asId(r.workspaceId),
73
+ projectId: r.projectId,
74
+ key: r.key,
75
+ name: r.name,
76
+ description: r.description,
77
+ icon: r.icon,
78
+ color: r.color,
79
+ level: r.level,
80
+ isDefault: r.isDefault,
81
+ workflowId: r.workflowId,
82
+ fieldLayout: r.fieldLayout ?? [],
83
+ templateBody: r.templateBody ?? null,
84
+ order: r.order,
85
+ archivedAt: iso(r.archivedAt),
86
+ createdAt: isoReq(r.createdAt),
87
+ updatedAt: isoReq(r.updatedAt),
88
+ };
89
+ }
90
+ export function toTypeScheme(r) {
91
+ return {
92
+ id: r.id,
93
+ workspaceId: asId(r.workspaceId),
94
+ name: r.name,
95
+ typeIds: r.typeIds ?? [],
96
+ defaultTypeId: r.defaultTypeId,
97
+ createdAt: isoReq(r.createdAt),
98
+ };
99
+ }
100
+ export function toFieldDef(r) {
101
+ return {
102
+ id: r.id,
103
+ workspaceId: asId(r.workspaceId),
104
+ projectId: r.projectId,
105
+ key: r.key,
106
+ name: r.name,
107
+ description: r.description,
108
+ type: r.type,
109
+ options: r.options ?? [],
110
+ defaultValue: r.defaultValue ?? null,
111
+ config: r.config ?? {},
112
+ searchable: r.searchable,
113
+ required: r.required,
114
+ showInCards: r.showInCards,
115
+ order: r.order,
116
+ archivedAt: iso(r.archivedAt),
117
+ createdAt: isoReq(r.createdAt),
118
+ updatedAt: isoReq(r.updatedAt),
119
+ };
120
+ }
121
+ export function toFieldScheme(r) {
122
+ return {
123
+ id: r.id,
124
+ workspaceId: asId(r.workspaceId),
125
+ name: r.name,
126
+ fieldIds: r.fieldIds ?? [],
127
+ createdAt: isoReq(r.createdAt),
128
+ };
129
+ }
130
+ export function toWorkflow(r, usageCount) {
131
+ return {
132
+ id: r.id,
133
+ workspaceId: asId(r.workspaceId),
134
+ projectId: r.projectId,
135
+ name: r.name,
136
+ description: r.description,
137
+ definition: r.definition,
138
+ isDefault: r.isDefault,
139
+ ...(usageCount === undefined ? {} : { usageCount }),
140
+ archivedAt: iso(r.archivedAt),
141
+ createdAt: isoReq(r.createdAt),
142
+ updatedAt: isoReq(r.updatedAt),
143
+ };
144
+ }
145
+ export function toWorkflowScheme(r) {
146
+ return {
147
+ id: r.id,
148
+ workspaceId: asId(r.workspaceId),
149
+ name: r.name,
150
+ defaultWorkflowId: r.defaultWorkflowId,
151
+ mappings: r.mappings ?? [],
152
+ createdAt: isoReq(r.createdAt),
153
+ updatedAt: isoReq(r.updatedAt),
154
+ };
155
+ }
156
+ export function toIssue(r, relationSummary = EMPTY_RELATION_SUMMARY) {
157
+ return {
158
+ id: r.id,
159
+ workspaceId: asId(r.workspaceId),
160
+ projectId: r.projectId,
161
+ key: r.key,
162
+ number: r.number,
163
+ typeId: r.typeId,
164
+ title: r.title,
165
+ description: r.description ?? null,
166
+ descriptionText: r.descriptionText,
167
+ statusId: r.statusId,
168
+ statusCategory: r.statusCategory,
169
+ priority: r.priority,
170
+ assigneeIds: asIds(r.assigneeIds),
171
+ reporterId: asId(r.reporterId),
172
+ creatorId: asId(r.creatorId),
173
+ labelIds: r.labelIds ?? [],
174
+ componentIds: r.componentIds ?? [],
175
+ versionIds: r.versionIds ?? [],
176
+ affectsVersionIds: r.affectsVersionIds ?? [],
177
+ cycleId: r.cycleId,
178
+ milestoneId: r.milestoneId,
179
+ parentId: r.parentId,
180
+ rank: r.rank,
181
+ estimate: r.estimate,
182
+ estimateUnit: r.estimateUnit,
183
+ startDate: r.startDate,
184
+ dueDate: r.dueDate,
185
+ completedAt: iso(r.completedAt),
186
+ cancelledAt: iso(r.cancelledAt),
187
+ resolution: r.resolution,
188
+ custom: r.custom ?? {},
189
+ watcherIds: asIds(r.watcherIds),
190
+ subscriberCount: (r.watcherIds ?? []).length,
191
+ commentCount: r.commentCount,
192
+ attachmentCount: r.attachmentCount,
193
+ relationSummary,
194
+ timeSpentSec: r.timeSpentSec,
195
+ remainingSec: r.remainingSec,
196
+ originalEstimateSec: r.originalEstimateSec,
197
+ sla: r.sla ?? null,
198
+ triage: r.triage,
199
+ snoozedUntil: iso(r.snoozedUntil),
200
+ source: r.source,
201
+ externalRef: r.externalRef,
202
+ chatChannelId: r.chatChannelId,
203
+ archivedAt: iso(r.archivedAt),
204
+ createdAt: isoReq(r.createdAt),
205
+ updatedAt: isoReq(r.updatedAt),
206
+ lastActivityAt: isoReq(r.lastActivityAt),
207
+ };
208
+ }
209
+ export const toIssueSummary = (issue) => ({
210
+ id: issue.id,
211
+ workspaceId: issue.workspaceId,
212
+ projectId: issue.projectId,
213
+ key: issue.key,
214
+ number: issue.number,
215
+ typeId: issue.typeId,
216
+ title: issue.title,
217
+ statusId: issue.statusId,
218
+ statusCategory: issue.statusCategory,
219
+ priority: issue.priority,
220
+ assigneeIds: issue.assigneeIds,
221
+ labelIds: issue.labelIds,
222
+ cycleId: issue.cycleId,
223
+ parentId: issue.parentId,
224
+ rank: issue.rank,
225
+ estimate: issue.estimate,
226
+ dueDate: issue.dueDate,
227
+ startDate: issue.startDate,
228
+ triage: issue.triage,
229
+ archivedAt: issue.archivedAt,
230
+ updatedAt: issue.updatedAt,
231
+ });
232
+ export function toComment(r, reactions = []) {
233
+ const deleted = r.deletedAt != null;
234
+ return {
235
+ id: r.id,
236
+ workspaceId: asId(r.workspaceId),
237
+ issueId: r.issueId,
238
+ parentId: r.parentId,
239
+ authorId: asId(r.authorId),
240
+ body: deleted ? { type: 'doc', content: [] } : (r.body ?? { type: 'doc' }),
241
+ bodyText: deleted ? '' : r.bodyText,
242
+ mentionIds: asIds(r.mentionIds),
243
+ reactions,
244
+ internal: r.internal,
245
+ source: r.source,
246
+ replyCount: r.replyCount,
247
+ editedAt: iso(r.editedAt),
248
+ deletedAt: iso(r.deletedAt),
249
+ createdAt: isoReq(r.createdAt),
250
+ updatedAt: isoReq(r.updatedAt),
251
+ };
252
+ }
253
+ export function toAttachment(r) {
254
+ return {
255
+ id: r.id,
256
+ workspaceId: asId(r.workspaceId),
257
+ issueId: r.issueId,
258
+ fileId: r.fileId,
259
+ name: r.name,
260
+ mimeType: r.mimeType,
261
+ size: r.size,
262
+ uploadedBy: asId(r.uploadedBy),
263
+ createdAt: isoReq(r.createdAt),
264
+ };
265
+ }
266
+ export function toLink(r) {
267
+ return {
268
+ id: r.id,
269
+ workspaceId: asId(r.workspaceId),
270
+ issueId: r.issueId,
271
+ url: r.url,
272
+ title: r.title,
273
+ kind: r.kind,
274
+ createdBy: asId(r.createdBy),
275
+ createdAt: isoReq(r.createdAt),
276
+ };
277
+ }
278
+ export const EMPTY_CYCLE_STATS = { total: 0, done: 0, estimateTotal: 0, estimateDone: 0 };
279
+ export function toCycle(r, stats = EMPTY_CYCLE_STATS) {
280
+ return {
281
+ id: r.id,
282
+ workspaceId: asId(r.workspaceId),
283
+ projectId: r.projectId,
284
+ number: r.number,
285
+ name: r.name,
286
+ goal: r.goal,
287
+ startAt: isoReq(r.startAt),
288
+ endAt: isoReq(r.endAt),
289
+ status: r.status,
290
+ startedAt: iso(r.startedAt),
291
+ completedAt: iso(r.completedAt),
292
+ carryOverCount: r.carryOverCount,
293
+ stats,
294
+ createdAt: isoReq(r.createdAt),
295
+ updatedAt: isoReq(r.updatedAt),
296
+ };
297
+ }
298
+ export function toMilestone(r, stats = { total: 0, done: 0 }) {
299
+ return {
300
+ id: r.id,
301
+ workspaceId: asId(r.workspaceId),
302
+ projectId: r.projectId,
303
+ name: r.name,
304
+ description: r.description,
305
+ targetDate: r.targetDate,
306
+ status: r.status,
307
+ stats,
308
+ completedAt: iso(r.completedAt),
309
+ createdAt: isoReq(r.createdAt),
310
+ updatedAt: isoReq(r.updatedAt),
311
+ };
312
+ }
313
+ export function toVersion(r, stats = { total: 0, done: 0 }) {
314
+ return {
315
+ id: r.id,
316
+ workspaceId: asId(r.workspaceId),
317
+ projectId: r.projectId,
318
+ name: r.name,
319
+ description: r.description,
320
+ status: r.status,
321
+ startDate: r.startDate,
322
+ releaseDate: r.releaseDate,
323
+ releasedAt: iso(r.releasedAt),
324
+ stats,
325
+ order: r.order,
326
+ createdAt: isoReq(r.createdAt),
327
+ updatedAt: isoReq(r.updatedAt),
328
+ };
329
+ }
330
+ export function toComponent(r, issueCount = 0) {
331
+ return {
332
+ id: r.id,
333
+ workspaceId: asId(r.workspaceId),
334
+ projectId: r.projectId,
335
+ name: r.name,
336
+ description: r.description,
337
+ leadId: asId(r.leadId),
338
+ defaultAssignee: r.defaultAssignee,
339
+ issueCount,
340
+ createdAt: isoReq(r.createdAt),
341
+ updatedAt: isoReq(r.updatedAt),
342
+ };
343
+ }
344
+ export function toLabel(r, issueCount = 0) {
345
+ return {
346
+ id: r.id,
347
+ workspaceId: asId(r.workspaceId),
348
+ projectId: r.projectId,
349
+ name: r.name,
350
+ color: r.color,
351
+ description: r.description,
352
+ groupName: r.groupName,
353
+ issueCount,
354
+ archivedAt: iso(r.archivedAt),
355
+ createdAt: isoReq(r.createdAt),
356
+ };
357
+ }
358
+ export function toView(r, pinned) {
359
+ return {
360
+ id: r.id,
361
+ workspaceId: asId(r.workspaceId),
362
+ projectId: r.projectId,
363
+ name: r.name,
364
+ description: r.description,
365
+ icon: r.icon,
366
+ kql: r.kql,
367
+ layout: r.layout,
368
+ display: parseDisplay(r.display),
369
+ filters: r.filters ?? {},
370
+ visibility: r.visibility,
371
+ ownerId: asId(r.ownerId),
372
+ pinned,
373
+ builtin: r.builtin,
374
+ order: r.order,
375
+ createdAt: isoReq(r.createdAt),
376
+ updatedAt: isoReq(r.updatedAt),
377
+ };
378
+ }
379
+ export function toWorklog(r) {
380
+ return {
381
+ id: r.id,
382
+ workspaceId: asId(r.workspaceId),
383
+ projectId: r.projectId,
384
+ issueId: r.issueId,
385
+ userId: asId(r.userId),
386
+ startedAt: isoReq(r.startedAt),
387
+ durationSec: r.durationSec,
388
+ note: r.note,
389
+ billable: r.billable,
390
+ createdAt: isoReq(r.createdAt),
391
+ updatedAt: isoReq(r.updatedAt),
392
+ };
393
+ }
394
+ export function toTimer(r) {
395
+ return {
396
+ id: r.id,
397
+ workspaceId: asId(r.workspaceId),
398
+ issueId: r.issueId,
399
+ userId: asId(r.userId),
400
+ startedAt: isoReq(r.startedAt),
401
+ note: r.note,
402
+ };
403
+ }
404
+ export function toApproval(r) {
405
+ return {
406
+ id: r.id,
407
+ workspaceId: asId(r.workspaceId),
408
+ issueId: r.issueId,
409
+ transitionId: r.transitionId,
410
+ state: r.state,
411
+ createdAt: isoReq(r.createdAt),
412
+ updatedAt: isoReq(r.updatedAt),
413
+ };
414
+ }
415
+ export function toIssueTemplate(r) {
416
+ return {
417
+ id: r.id,
418
+ workspaceId: asId(r.workspaceId),
419
+ projectId: r.projectId,
420
+ name: r.name,
421
+ description: r.description,
422
+ typeId: r.typeId,
423
+ defaults: r.defaults ?? {},
424
+ subItems: r.subItems ?? [],
425
+ createdBy: asId(r.createdBy),
426
+ createdAt: isoReq(r.createdAt),
427
+ updatedAt: isoReq(r.updatedAt),
428
+ };
429
+ }
430
+ export function toRecurringIssue(r) {
431
+ return {
432
+ id: r.id,
433
+ workspaceId: asId(r.workspaceId),
434
+ projectId: r.projectId,
435
+ name: r.name,
436
+ rule: r.rule,
437
+ defaults: r.defaults ?? {},
438
+ enabled: r.enabled,
439
+ nextRunAt: iso(r.nextRunAt),
440
+ lastRunAt: iso(r.lastRunAt),
441
+ lastIssueId: r.lastIssueId,
442
+ runCount: r.runCount,
443
+ createdBy: asId(r.createdBy),
444
+ createdAt: isoReq(r.createdAt),
445
+ updatedAt: isoReq(r.updatedAt),
446
+ };
447
+ }
448
+ export function toImportJob(r) {
449
+ return {
450
+ id: r.id,
451
+ workspaceId: asId(r.workspaceId),
452
+ projectId: r.projectId,
453
+ source: r.source,
454
+ fileId: r.fileId,
455
+ mapping: r.mapping ?? {},
456
+ status: r.status,
457
+ progress: r.progress ?? {
458
+ total: 0,
459
+ processed: 0,
460
+ created: 0,
461
+ skipped: 0,
462
+ failed: 0,
463
+ },
464
+ errors: r.errors ?? [],
465
+ createdBy: asId(r.createdBy),
466
+ startedAt: iso(r.startedAt),
467
+ finishedAt: iso(r.finishedAt),
468
+ createdAt: isoReq(r.createdAt),
469
+ };
470
+ }
471
+ export function toHistoryEntry(r) {
472
+ return {
473
+ id: r.id,
474
+ issueId: r.issueId,
475
+ actorId: asId(r.actorId),
476
+ action: r.action,
477
+ changes: r.changes ?? [],
478
+ data: r.data ?? {},
479
+ occurredAt: isoReq(r.occurredAt),
480
+ };
481
+ }
482
+ export function toStatusHistoryEntry(r) {
483
+ return {
484
+ id: r.id,
485
+ issueId: r.issueId,
486
+ fromStatusId: r.fromStatusId,
487
+ toStatusId: r.toStatusId,
488
+ fromCategory: r.fromCategory,
489
+ toCategory: r.toCategory,
490
+ actorId: asId(r.actorId),
491
+ transitionId: r.transitionId,
492
+ durationSec: r.durationSec,
493
+ occurredAt: isoReq(r.occurredAt),
494
+ };
495
+ }
496
+ // =====================================================================================
497
+ // misc
498
+ // =====================================================================================
499
+ /** Machine key from a display name: `Story points` → `story_points`. */
500
+ export const machineKey = (name, fallback = 'field') => name
501
+ .toLowerCase()
502
+ .normalize('NFKD')
503
+ .replace(/[^a-z0-9]+/g, '_')
504
+ .replace(/^_+|_+$/g, '')
505
+ .replace(/^(\d)/, 'f$1')
506
+ .slice(0, 48) || fallback;
507
+ export const issueUrl = (key) => `/tracker/issues/${key}`;
508
+ export const projectUrl = (key) => `/tracker/projects/${key}`;
509
+ export const uniq = (values) => [...new Set(values)];
510
+ /** Difference between two arrays treated as sets, in `next` order. */
511
+ export const added = (before, next) => {
512
+ const set = new Set(before);
513
+ return next.filter((v) => !set.has(v));
514
+ };
515
+ export const removed = (before, next) => {
516
+ const set = new Set(next);
517
+ return before.filter((v) => !set.has(v));
518
+ };
519
+ //# sourceMappingURL=db.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../../src/server/services/db.ts"],"names":[],"mappings":"AAoCA,OAAO,EACL,eAAe,IAAI,qBAAqB,EACxC,WAAW,IAAI,iBAAiB,GACjC,MAAM,0BAA0B,CAAA;AA2DjC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAmC,EAAiB,EAAE,CACxE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;AACpF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAgB,EAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAE,CAAA;AAE3D,qEAAqE;AACrE,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,MAAc,EACd,WAAmB,EACnB,EAA0B,EAC1B,MAAsB,EACV,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE,CAAC,CAAA;AAE3F,MAAM,IAAI,GAAG,CAAI,CAAgB,EAAK,EAAE,CAAC,CAAiB,CAAA;AAC1D,MAAM,KAAK,GAAG,CAAI,CAA8B,EAAO,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAmB,CAAA;AAErF,MAAM,CAAC,MAAM,sBAAsB,GAAoB;IACrD,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,CAAC;IACZ,YAAY,EAAE,CAAC;IACf,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,CAAC;IACb,QAAQ,EAAE,CAAC;IACX,YAAY,EAAE,CAAC;CAChB,CAAA;AAYD,MAAM,UAAU,SAAS,CAAC,CAAa,EAAE,WAAqC,EAAE;IAC9E,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QACtB,UAAU,EAAE,CAAC,CAAC,UAAmC;QACjD,eAAe,EAAE,CAAC,CAAC,eAA6C;QAChE,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;QACpC,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,aAAa,EAAE,CAAC,CAAC,aAAa;QAC9B,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC;QACnC,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,CAAC;QACxC,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,CAAC;QACxC,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,cAAc,EAAE,QAAQ,CAAC,cAAc,IAAI,CAAC;QAC5C,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;QAC7B,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,+FAA+F;AAC/F,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAY,EAAmB,EAAE,CAC7D,qBAAqB,CAAC,KAAK,CAAE,GAA+B,IAAI,EAAE,CAAC,CAAA;AAErE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAY,EAAe,EAAE,CACxD,iBAAiB,CAAC,KAAK,CAAE,GAA+B,IAAI,EAAE,CAAC,CAAA;AAEjE,MAAM,UAAU,eAAe,CAAC,CAAmB;IACjD,OAAO;QACL,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QACtB,IAAI,EAAE,CAAC,CAAC,IAA6B;QACrC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;KAC3B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,CAAqB;IACrD,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAG,CAAC,CAAC,IAAgC,IAAI,EAAE;QAC/C,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAkB;IAC/C,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,WAAW,EAAG,CAAC,CAAC,WAA2C,IAAI,EAAE;QACjE,YAAY,EAAG,CAAC,CAAC,YAA6C,IAAI,IAAI;QACtE,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;QAC7B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAgB;IAC3C,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE;QACxB,aAAa,EAAE,CAAC,CAAC,aAAa;QAC9B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAc;IACvC,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,IAAI,EAAE,CAAC,CAAC,IAAwB;QAChC,OAAO,EAAG,CAAC,CAAC,OAA+B,IAAI,EAAE;QACjD,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI;QACpC,MAAM,EAAG,CAAC,CAAC,MAA6B,IAAI,EAAE;QAC9C,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;QAC7B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAiB;IAC7C,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE;QAC1B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAc,EAAE,UAAmB;IAC5D,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,UAAU,EAAE,CAAC,CAAC,UAAgC;QAC9C,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;QACnD,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;QAC7B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAoB;IACnD,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;QACtC,QAAQ,EAAG,CAAC,CAAC,QAAuC,IAAI,EAAE;QAC1D,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,CAAW,EAAE,kBAAmC,sBAAsB;IAC5F,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,WAAW,EAAG,CAAC,CAAC,WAAoC,IAAI,IAAI;QAC5D,eAAe,EAAE,CAAC,CAAC,eAAe;QAClC,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,cAAc,EAAE,CAAC,CAAC,cAAgC;QAClD,QAAQ,EAAE,CAAC,CAAC,QAA6B;QACzC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;QACjC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;QAC9B,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5B,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE;QAC1B,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,EAAE;QAClC,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE;QAC9B,iBAAiB,EAAE,CAAC,CAAC,iBAAiB,IAAI,EAAE;QAC5C,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,YAAY,EAAE,CAAC,CAAC,YAAqC;QACrD,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC;QAC/B,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC;QAC/B,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,MAAM,EAAG,CAAC,CAAC,MAAkC,IAAI,EAAE;QACnD,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;QAC/B,eAAe,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM;QAC5C,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,eAAe,EAAE,CAAC,CAAC,eAAe;QAClC,eAAe;QACf,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,mBAAmB,EAAE,CAAC,CAAC,mBAAmB;QAC1C,GAAG,EAAG,CAAC,CAAC,GAAuB,IAAI,IAAI;QACvC,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,MAAyB;QACnC,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,aAAa,EAAE,CAAC,CAAC,aAAa;QAC9B,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;QAC7B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9B,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC;KACzC,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAY,EAAgB,EAAE,CAAC,CAAC;IAC7D,EAAE,EAAE,KAAK,CAAC,EAAE;IACZ,WAAW,EAAE,KAAK,CAAC,WAAW;IAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;IAC1B,GAAG,EAAE,KAAK,CAAC,GAAG;IACd,MAAM,EAAE,KAAK,CAAC,MAAM;IACpB,MAAM,EAAE,KAAK,CAAC,MAAM;IACpB,KAAK,EAAE,KAAK,CAAC,KAAK;IAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;IACxB,cAAc,EAAE,KAAK,CAAC,cAAc;IACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ;IACxB,WAAW,EAAE,KAAK,CAAC,WAAW;IAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;IACxB,OAAO,EAAE,KAAK,CAAC,OAAO;IACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;IACxB,IAAI,EAAE,KAAK,CAAC,IAAI;IAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;IACxB,OAAO,EAAE,KAAK,CAAC,OAAO;IACtB,SAAS,EAAE,KAAK,CAAC,SAAS;IAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;IACpB,UAAU,EAAE,KAAK,CAAC,UAAU;IAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;CAC3B,CAAC,CAAA;AAEF,MAAM,UAAU,SAAS,CAAC,CAAa,EAAE,YAAkC,EAAE;IAC3E,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,IAAI,IAAI,CAAA;IACnC,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC1B,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,IAAwB,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAC/F,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ;QACnC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;QAC/B,SAAS;QACT,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,MAAM,EAAE,CAAC,CAAC,MAA2B;QACrC,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;QACzB,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAgB;IAC3C,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,CAAU;IAC/B,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;KAC/B,CAAA;AACH,CAAC;AAQD,MAAM,CAAC,MAAM,iBAAiB,GAAe,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAA;AAErG,MAAM,UAAU,OAAO,CAAC,CAAW,EAAE,QAAoB,iBAAiB;IACxE,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAC1B,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QACtB,MAAM,EAAE,CAAC,CAAC,MAAyB;QACnC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3B,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC;QAC/B,cAAc,EAAE,CAAC,CAAC,cAAc;QAChC,KAAK;QACL,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAe,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;IACxE,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,MAAM,EAAE,CAAC,CAAC,MAA6B;QACvC,KAAK;QACL,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC;QAC/B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAa,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;IACpE,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,MAAM,EAAE,CAAC,CAAC,MAA2B;QACrC,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;QAC7B,KAAK;QACL,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAe,EAAE,UAAU,GAAG,CAAC;IACzD,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QACtB,eAAe,EAAE,CAAC,CAAC,eAA+C;QAClE,UAAU;QACV,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,CAAW,EAAE,UAAU,GAAG,CAAC;IACjD,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,UAAU;QACV,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;QAC7B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,CAAU,EAAE,MAAe;IAChD,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,MAAM,EAAE,CAAC,CAAC,MAAwB;QAClC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;QAChC,OAAO,EAAG,CAAC,CAAC,OAAmC,IAAI,EAAE;QACrD,UAAU,EAAE,CAAC,CAAC,UAAgC;QAC9C,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;QACxB,MAAM;QACN,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAa;IACrC,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9B,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,CAAW;IACjC,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,IAAI;KACb,CAAA;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAc;IACvC,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,KAAK,EAAE,CAAC,CAAC,KAA+B;QACxC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAmB;IACjD,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,QAAQ,EAAG,CAAC,CAAC,QAAsC,IAAI,EAAE;QACzD,QAAQ,EAAG,CAAC,CAAC,QAAsC,IAAI,EAAE;QACzD,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAoB;IACnD,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAA8B;QACtC,QAAQ,EAAG,CAAC,CAAC,QAAuC,IAAI,EAAE;QAC1D,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3B,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3B,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAe;IACzC,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,MAAM,EAAE,CAAC,CAAC,MAA6B;QACvC,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,OAAO,EAAG,CAAC,CAAC,OAAmC,IAAI,EAAE;QACrD,MAAM,EAAE,CAAC,CAAC,MAA6B;QACvC,QAAQ,EAAG,CAAC,CAAC,QAAkC,IAAI;YACjD,KAAK,EAAE,CAAC;YACR,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,CAAC;SACV;QACD,MAAM,EAAG,CAAC,CAAC,MAA8B,IAAI,EAAE;QAC/C,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5B,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3B,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;QAC7B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAa;IAC1C,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;QACxB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,OAAO,EAAG,CAAC,CAAC,OAAwC,IAAI,EAAE;QAC1D,IAAI,EAAG,CAAC,CAAC,IAAgC,IAAI,EAAE;QAC/C,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;KACjC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,CAAmB;IACtD,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,YAAY,EAAE,CAAC,CAAC,YAAqC;QACrD,UAAU,EAAE,CAAC,CAAC,UAA4B;QAC1C,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;QACxB,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;KACjC,CAAA;AACH,CAAC;AAED,wFAAwF;AACxF,OAAO;AACP,wFAAwF;AAExF,wEAAwE;AACxE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,QAAQ,GAAG,OAAO,EAAU,EAAE,CACrE,IAAI;KACD,WAAW,EAAE;KACb,SAAS,CAAC,MAAM,CAAC;KACjB,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;KAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;KACvB,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;KACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAA;AAE7B,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,mBAAmB,GAAG,EAAE,CAAA;AACzE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,qBAAqB,GAAG,EAAE,CAAA;AAE7E,MAAM,CAAC,MAAM,IAAI,GAAG,CAAI,MAAmB,EAAO,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;AAEzE,sEAAsE;AACtE,MAAM,CAAC,MAAM,KAAK,GAAG,CAAI,MAAoB,EAAE,IAAkB,EAAO,EAAE;IACxE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AACxC,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAI,MAAoB,EAAE,IAAkB,EAAO,EAAE;IAC1E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAA;IACzB,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1C,CAAC,CAAA"}
@@ -0,0 +1,37 @@
1
+ import type { Principal } from '@kernhq/contracts';
2
+ import { type Kernel, type Tx } from '@kernhq/kernel';
3
+ import { type ImportJob, type ImportSource } from '../../contract/models.js';
4
+ import type { AccessService } from './access.js';
5
+ import type { ConfigService } from './config.js';
6
+ import type { IssueService } from './issues.js';
7
+ import type { PlanningService } from './planning.js';
8
+ /** Minimal RFC 4180 reader: quoted fields, doubled quotes, CR/LF inside quotes. */
9
+ export declare function parseCsv(text: string, delimiter?: string): string[][];
10
+ /** CSV, Jira and Linear imports. The work happens in a background job so the request returns at once. */
11
+ export declare class ImportService {
12
+ private readonly kernel;
13
+ private readonly access;
14
+ private readonly config;
15
+ private readonly issuesService;
16
+ private readonly planning;
17
+ constructor(kernel: Kernel, access: AccessService, config: ConfigService, issuesService: IssueService, planning: PlanningService);
18
+ list(tx: Tx, principal: Principal, workspaceId: string, projectId: string): Promise<ImportJob[]>;
19
+ get(tx: Tx, principal: Principal, workspaceId: string, id: string): Promise<ImportJob>;
20
+ private row;
21
+ start(tx: Tx, principal: Principal, workspaceId: string, projectId: string, input: {
22
+ source: ImportSource;
23
+ fileId: string;
24
+ mapping: Record<string, unknown>;
25
+ }): Promise<ImportJob>;
26
+ cancel(tx: Tx, principal: Principal, workspaceId: string, id: string): Promise<ImportJob>;
27
+ private fileText;
28
+ /** Executed by the `tracker.import` job. */
29
+ run(workspaceId: string, importJobId: string): Promise<void>;
30
+ private patch;
31
+ private csvRecords;
32
+ /** Jira and Linear exports are both JSON arrays (or `{issues: [...]}`) of loosely-shaped objects. */
33
+ private jsonRecords;
34
+ /** Available so the router can validate a type id before enqueuing. */
35
+ configRef(): ConfigService;
36
+ }
37
+ //# sourceMappingURL=imports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imports.d.ts","sourceRoot":"","sources":["../../../src/server/services/imports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAa,KAAK,MAAM,EAAE,KAAK,EAAE,EAAU,MAAM,gBAAgB,CAAA;AAExE,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,YAAY,EAElB,MAAM,0BAA0B,CAAA;AAGjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAKpD,mFAAmF;AACnF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,MAAM,EAAE,EAAE,CAwClE;AAED,yGAAyG;AACzG,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAJR,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,YAAY,EAC3B,QAAQ,EAAE,eAAe;IAGtC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAWhG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;YAM9E,GAAG;IAUX,KAAK,CACT,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE;QAAE,MAAM,EAAE,YAAY,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAChF,OAAO,CAAC,SAAS,CAAC;IAuBf,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;YAcjF,QAAQ;IAYtB,4CAA4C;IACtC,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YA6EpD,KAAK;IAenB,OAAO,CAAC,UAAU;IA0DlB,qGAAqG;IACrG,OAAO,CAAC,WAAW;IA2CnB,uEAAuE;IACvE,SAAS,IAAI,aAAa;CAG3B"}