@stoneforge/shared-routes 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 (59) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +69 -0
  3. package/dist/channels.d.ts +9 -0
  4. package/dist/channels.d.ts.map +1 -0
  5. package/dist/channels.js +413 -0
  6. package/dist/channels.js.map +1 -0
  7. package/dist/documents.d.ts +9 -0
  8. package/dist/documents.d.ts.map +1 -0
  9. package/dist/documents.js +1205 -0
  10. package/dist/documents.js.map +1 -0
  11. package/dist/elements.d.ts +9 -0
  12. package/dist/elements.d.ts.map +1 -0
  13. package/dist/elements.js +87 -0
  14. package/dist/elements.js.map +1 -0
  15. package/dist/entities.d.ts +9 -0
  16. package/dist/entities.d.ts.map +1 -0
  17. package/dist/entities.js +92 -0
  18. package/dist/entities.js.map +1 -0
  19. package/dist/inbox.d.ts +10 -0
  20. package/dist/inbox.d.ts.map +1 -0
  21. package/dist/inbox.js +538 -0
  22. package/dist/inbox.js.map +1 -0
  23. package/dist/index.d.ts +16 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +17 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/libraries.d.ts +9 -0
  28. package/dist/libraries.d.ts.map +1 -0
  29. package/dist/libraries.js +467 -0
  30. package/dist/libraries.js.map +1 -0
  31. package/dist/messages.d.ts +9 -0
  32. package/dist/messages.d.ts.map +1 -0
  33. package/dist/messages.js +338 -0
  34. package/dist/messages.js.map +1 -0
  35. package/dist/plans.d.ts +10 -0
  36. package/dist/plans.d.ts.map +1 -0
  37. package/dist/plans.js +495 -0
  38. package/dist/plans.js.map +1 -0
  39. package/dist/types.d.ts +128 -0
  40. package/dist/types.d.ts.map +1 -0
  41. package/dist/types.js +8 -0
  42. package/dist/types.js.map +1 -0
  43. package/dist/ws/broadcaster.d.ts +62 -0
  44. package/dist/ws/broadcaster.d.ts.map +1 -0
  45. package/dist/ws/broadcaster.js +146 -0
  46. package/dist/ws/broadcaster.js.map +1 -0
  47. package/dist/ws/handler.d.ts +11 -0
  48. package/dist/ws/handler.d.ts.map +1 -0
  49. package/dist/ws/handler.js +38 -0
  50. package/dist/ws/handler.js.map +1 -0
  51. package/dist/ws/index.d.ts +11 -0
  52. package/dist/ws/index.d.ts.map +1 -0
  53. package/dist/ws/index.js +11 -0
  54. package/dist/ws/index.js.map +1 -0
  55. package/dist/ws/types.d.ts +85 -0
  56. package/dist/ws/types.d.ts.map +1 -0
  57. package/dist/ws/types.js +63 -0
  58. package/dist/ws/types.js.map +1 -0
  59. package/package.json +40 -0
@@ -0,0 +1,467 @@
1
+ /**
2
+ * Library Routes Factory
3
+ *
4
+ * CRUD operations for document libraries.
5
+ */
6
+ import { Hono } from 'hono';
7
+ import { createLibrary } from '@stoneforge/core';
8
+ export function createLibraryRoutes(services) {
9
+ const { api } = services;
10
+ const app = new Hono();
11
+ // GET /api/libraries - List all libraries
12
+ app.get('/api/libraries', async (c) => {
13
+ try {
14
+ const url = new URL(c.req.url);
15
+ const hydrateDescription = url.searchParams.get('hydrate.description') === 'true';
16
+ const limitParam = url.searchParams.get('limit');
17
+ const limit = limitParam ? parseInt(limitParam, 10) : 10000; // Default to loading all
18
+ const libraries = await api.list({
19
+ type: 'library',
20
+ limit,
21
+ ...(hydrateDescription && { hydrate: { description: true } }),
22
+ });
23
+ // Get parent relationships for all libraries
24
+ // Parent-child dependencies have: blockedId = child, blockerId = parent
25
+ const librariesWithParent = await Promise.all(libraries.map(async (library) => {
26
+ // Find if this library has a parent (it would be the source in a parent-child dependency)
27
+ const dependencies = await api.getDependencies(library.id, ['parent-child']);
28
+ const parentDep = dependencies.find((d) => d.type === 'parent-child');
29
+ return {
30
+ ...library,
31
+ parentId: parentDep?.blockerId || null,
32
+ };
33
+ }));
34
+ return c.json(librariesWithParent);
35
+ }
36
+ catch (error) {
37
+ console.error('[stoneforge] Failed to get libraries:', error);
38
+ return c.json({ error: { code: 'INTERNAL_ERROR', message: 'Failed to get libraries' } }, 500);
39
+ }
40
+ });
41
+ // GET /api/libraries/:id - Get single library with children
42
+ app.get('/api/libraries/:id', async (c) => {
43
+ try {
44
+ const id = c.req.param('id');
45
+ const url = new URL(c.req.url);
46
+ const hydrateDescription = url.searchParams.get('hydrate.description') === 'true';
47
+ const library = await api.get(id, hydrateDescription ? { hydrate: { description: true } } : undefined);
48
+ if (!library) {
49
+ return c.json({ error: { code: 'NOT_FOUND', message: 'Library not found' } }, 404);
50
+ }
51
+ if (library.type !== 'library') {
52
+ return c.json({ error: { code: 'NOT_FOUND', message: 'Library not found' } }, 404);
53
+ }
54
+ // Get sub-libraries and documents (children via parent-child dependency)
55
+ const dependents = await api.getDependents(id, ['parent-child']);
56
+ // Separate into sub-libraries and documents
57
+ const childIds = dependents.map((d) => d.blockedId);
58
+ const children = [];
59
+ for (const childId of childIds) {
60
+ const child = await api.get(childId);
61
+ if (child) {
62
+ children.push(child);
63
+ }
64
+ }
65
+ const subLibraries = children.filter((c) => c.type === 'library');
66
+ const documents = children.filter((c) => c.type === 'document');
67
+ return c.json({
68
+ ...library,
69
+ _subLibraries: subLibraries,
70
+ _documents: documents,
71
+ });
72
+ }
73
+ catch (error) {
74
+ console.error('[stoneforge] Failed to get library:', error);
75
+ return c.json({ error: { code: 'INTERNAL_ERROR', message: 'Failed to get library' } }, 500);
76
+ }
77
+ });
78
+ // GET /api/libraries/:id/documents - Get documents in a library
79
+ app.get('/api/libraries/:id/documents', async (c) => {
80
+ try {
81
+ const id = c.req.param('id');
82
+ const url = new URL(c.req.url);
83
+ const limitParam = url.searchParams.get('limit');
84
+ const offsetParam = url.searchParams.get('offset');
85
+ // First verify library exists
86
+ const library = await api.get(id);
87
+ if (!library) {
88
+ return c.json({ error: { code: 'NOT_FOUND', message: 'Library not found' } }, 404);
89
+ }
90
+ if (library.type !== 'library') {
91
+ return c.json({ error: { code: 'NOT_FOUND', message: 'Library not found' } }, 404);
92
+ }
93
+ // Get documents via parent-child dependency
94
+ const dependents = await api.getDependents(id, ['parent-child']);
95
+ // Filter to only documents and fetch full data
96
+ const documentIds = dependents.map((d) => d.blockedId);
97
+ const documents = [];
98
+ for (const docId of documentIds) {
99
+ const doc = await api.get(docId);
100
+ if (doc && doc.type === 'document') {
101
+ documents.push(doc);
102
+ }
103
+ }
104
+ // Apply pagination if requested
105
+ let result = documents;
106
+ const offset = offsetParam ? parseInt(offsetParam, 10) : 0;
107
+ const limit = limitParam ? parseInt(limitParam, 10) : undefined;
108
+ if (offset > 0) {
109
+ result = result.slice(offset);
110
+ }
111
+ if (limit !== undefined) {
112
+ result = result.slice(0, limit);
113
+ }
114
+ return c.json(result);
115
+ }
116
+ catch (error) {
117
+ console.error('[stoneforge] Failed to get library documents:', error);
118
+ return c.json({ error: { code: 'INTERNAL_ERROR', message: 'Failed to get library documents' } }, 500);
119
+ }
120
+ });
121
+ /**
122
+ * Helper to get siblings of a library (other libraries with the same parent)
123
+ */
124
+ async function getSiblingLibraries(libraryId, parentId) {
125
+ if (parentId) {
126
+ // Get children of parent
127
+ const dependents = await api.getDependents(parentId, ['parent-child']);
128
+ const siblings = [];
129
+ for (const dep of dependents) {
130
+ if (dep.blockedId !== libraryId) {
131
+ const sibling = await api.get(dep.blockedId);
132
+ if (sibling && sibling.type === 'library') {
133
+ siblings.push(sibling);
134
+ }
135
+ }
136
+ }
137
+ return siblings;
138
+ }
139
+ else {
140
+ // Root level - get all libraries without a parent
141
+ const allLibraries = await api.list({ type: 'library' });
142
+ const rootSiblings = [];
143
+ for (const lib of allLibraries) {
144
+ if (lib.id !== libraryId) {
145
+ const deps = await api.getDependencies(lib.id, ['parent-child']);
146
+ const hasParent = deps.some((d) => d.type === 'parent-child');
147
+ if (!hasParent) {
148
+ rootSiblings.push(lib);
149
+ }
150
+ }
151
+ }
152
+ return rootSiblings;
153
+ }
154
+ }
155
+ /**
156
+ * Helper to assign sort indices to siblings when reordering
157
+ */
158
+ async function assignSortIndices(libraryId, siblings, targetIndex) {
159
+ // Sort siblings by their current sortIndex (or name for those without)
160
+ const sortedSiblings = [...siblings].sort((a, b) => {
161
+ const aIndex = a.metadata?.sortIndex ?? Infinity;
162
+ const bIndex = b.metadata?.sortIndex ?? Infinity;
163
+ if (aIndex !== bIndex)
164
+ return aIndex - bIndex;
165
+ // Cast to access 'name' since we know these are libraries
166
+ const aName = a.name ?? '';
167
+ const bName = b.name ?? '';
168
+ return aName.localeCompare(bName);
169
+ });
170
+ // Assign new indices: items before targetIndex keep their position,
171
+ // items at or after targetIndex shift up by 1
172
+ for (let i = 0; i < sortedSiblings.length; i++) {
173
+ const sibling = sortedSiblings[i];
174
+ const currentIndex = sibling.metadata?.sortIndex ?? i;
175
+ let newIndex = i;
176
+ // Shift items at or after target position
177
+ if (newIndex >= targetIndex) {
178
+ newIndex = i + 1;
179
+ }
180
+ if (newIndex !== currentIndex || sibling.metadata?.sortIndex === undefined) {
181
+ await api.update(sibling.id, {
182
+ metadata: { ...sibling.metadata, sortIndex: newIndex },
183
+ });
184
+ }
185
+ }
186
+ // Set the moved library's sortIndex
187
+ const library = await api.get(libraryId);
188
+ if (library) {
189
+ await api.update(libraryId, {
190
+ metadata: { ...library.metadata, sortIndex: targetIndex },
191
+ });
192
+ }
193
+ }
194
+ /**
195
+ * PUT /api/libraries/:id/order
196
+ * Reorder a library within its current parent
197
+ * Body: { index: number }
198
+ */
199
+ app.put('/api/libraries/:id/order', async (c) => {
200
+ try {
201
+ const libraryId = c.req.param('id');
202
+ const body = await c.req.json();
203
+ const index = body.index;
204
+ if (typeof index !== 'number' || index < 0) {
205
+ return c.json({ error: { code: 'VALIDATION_ERROR', message: 'index must be a non-negative number' } }, 400);
206
+ }
207
+ // Verify library exists
208
+ const library = await api.get(libraryId);
209
+ if (!library) {
210
+ return c.json({ error: { code: 'NOT_FOUND', message: 'Library not found' } }, 404);
211
+ }
212
+ if (library.type !== 'library') {
213
+ return c.json({ error: { code: 'NOT_FOUND', message: 'Library not found' } }, 404);
214
+ }
215
+ // Find current parent
216
+ const deps = await api.getDependencies(libraryId, ['parent-child']);
217
+ let parentId = null;
218
+ for (const dep of deps) {
219
+ const parent = await api.get(dep.blockerId);
220
+ if (parent && parent.type === 'library') {
221
+ parentId = dep.blockerId;
222
+ break;
223
+ }
224
+ }
225
+ // Get siblings and assign indices
226
+ const siblings = await getSiblingLibraries(libraryId, parentId);
227
+ await assignSortIndices(libraryId, siblings, index);
228
+ return c.json({ libraryId, index, parentId });
229
+ }
230
+ catch (error) {
231
+ console.error('[stoneforge] Failed to reorder library:', error);
232
+ return c.json({ error: { code: 'INTERNAL_ERROR', message: 'Failed to reorder library' } }, 500);
233
+ }
234
+ });
235
+ /**
236
+ * PUT /api/libraries/:id/parent
237
+ * Move a library to a new parent (or to root level)
238
+ * Body: { parentId: string | null, index?: number, actor?: string }
239
+ */
240
+ app.put('/api/libraries/:id/parent', async (c) => {
241
+ try {
242
+ const libraryId = c.req.param('id');
243
+ const body = await c.req.json();
244
+ // Verify library exists
245
+ const library = await api.get(libraryId);
246
+ if (!library) {
247
+ return c.json({ error: { code: 'NOT_FOUND', message: 'Library not found' } }, 404);
248
+ }
249
+ if (library.type !== 'library') {
250
+ return c.json({ error: { code: 'NOT_FOUND', message: 'Library not found' } }, 404);
251
+ }
252
+ const newParentId = body.parentId;
253
+ const index = body.index;
254
+ const actor = body.actor || 'el-0000';
255
+ // Validate new parent if provided
256
+ if (newParentId) {
257
+ // Verify parent library exists
258
+ const parent = await api.get(newParentId);
259
+ if (!parent || parent.type !== 'library') {
260
+ return c.json({ error: { code: 'VALIDATION_ERROR', message: 'Invalid parentId: library not found' } }, 400);
261
+ }
262
+ // Prevent circular nesting: check if new parent is a descendant of this library
263
+ const isDescendant = async (ancestorId, potentialDescendantId) => {
264
+ if (ancestorId === potentialDescendantId)
265
+ return true;
266
+ // Get children of ancestor
267
+ const dependents = await api.getDependents(ancestorId, ['parent-child']);
268
+ const childIds = dependents.map((d) => d.blockedId);
269
+ for (const childId of childIds) {
270
+ const child = await api.get(childId);
271
+ if (child && child.type === 'library') {
272
+ if (await isDescendant(childId, potentialDescendantId)) {
273
+ return true;
274
+ }
275
+ }
276
+ }
277
+ return false;
278
+ };
279
+ if (await isDescendant(libraryId, newParentId)) {
280
+ return c.json({ error: { code: 'VALIDATION_ERROR', message: 'Cannot move library to its own descendant (circular nesting)' } }, 400);
281
+ }
282
+ }
283
+ // Find current parent
284
+ const deps = await api.getDependencies(libraryId, ['parent-child']);
285
+ let previousParentId = null;
286
+ for (const dep of deps) {
287
+ const parent = await api.get(dep.blockerId);
288
+ if (parent && parent.type === 'library') {
289
+ previousParentId = dep.blockerId;
290
+ break;
291
+ }
292
+ }
293
+ // Already at requested parent — check if we need to reorder
294
+ if (previousParentId === newParentId) {
295
+ if (index !== undefined) {
296
+ // Reorder within same parent
297
+ const siblings = await getSiblingLibraries(libraryId, newParentId);
298
+ await assignSortIndices(libraryId, siblings, index);
299
+ }
300
+ return c.json({ libraryId, parentId: newParentId, previousParentId });
301
+ }
302
+ // Remove from old parent if present
303
+ if (previousParentId) {
304
+ await api.removeDependency(libraryId, previousParentId, 'parent-child');
305
+ }
306
+ // Add to new parent if provided
307
+ if (newParentId) {
308
+ await api.addDependency({
309
+ blockedId: libraryId,
310
+ blockerId: newParentId,
311
+ type: 'parent-child',
312
+ actor,
313
+ });
314
+ }
315
+ // If index is provided, set sortIndex in the new parent context
316
+ if (index !== undefined) {
317
+ const siblings = await getSiblingLibraries(libraryId, newParentId);
318
+ await assignSortIndices(libraryId, siblings, index);
319
+ }
320
+ return c.json({ libraryId, parentId: newParentId, previousParentId });
321
+ }
322
+ catch (error) {
323
+ console.error('[stoneforge] Failed to move library:', error);
324
+ return c.json({ error: { code: 'INTERNAL_ERROR', message: 'Failed to move library' } }, 500);
325
+ }
326
+ });
327
+ /**
328
+ * DELETE /api/libraries/:id
329
+ * Delete a library and optionally all its documents
330
+ * Query params:
331
+ * - cascade: 'true' to also delete all documents in the library (default: false)
332
+ */
333
+ app.delete('/api/libraries/:id', async (c) => {
334
+ try {
335
+ const libraryId = c.req.param('id');
336
+ const url = new URL(c.req.url);
337
+ const cascade = url.searchParams.get('cascade') === 'true';
338
+ // Verify library exists
339
+ const library = await api.get(libraryId);
340
+ if (!library) {
341
+ return c.json({ error: { code: 'NOT_FOUND', message: 'Library not found' } }, 404);
342
+ }
343
+ if (library.type !== 'library') {
344
+ return c.json({ error: { code: 'NOT_FOUND', message: 'Library not found' } }, 404);
345
+ }
346
+ // Get all children (sub-libraries and documents)
347
+ const dependents = await api.getDependents(libraryId, ['parent-child']);
348
+ const childIds = dependents.map((d) => d.blockedId);
349
+ // Categorize children
350
+ const subLibraryIds = [];
351
+ const documentIds = [];
352
+ for (const childId of childIds) {
353
+ const child = await api.get(childId);
354
+ if (child) {
355
+ if (child.type === 'library') {
356
+ subLibraryIds.push(childId);
357
+ }
358
+ else if (child.type === 'document') {
359
+ documentIds.push(childId);
360
+ }
361
+ }
362
+ }
363
+ // Prevent deletion if library has sub-libraries
364
+ if (subLibraryIds.length > 0) {
365
+ return c.json({
366
+ error: {
367
+ code: 'HAS_CHILDREN',
368
+ message: `Cannot delete library: it has ${subLibraryIds.length} sub-libraries. Delete them first.`,
369
+ },
370
+ }, 400);
371
+ }
372
+ // Handle documents based on cascade flag
373
+ if (documentIds.length > 0) {
374
+ if (cascade) {
375
+ // Delete all documents in the library
376
+ for (const docId of documentIds) {
377
+ await api.delete(docId);
378
+ }
379
+ }
380
+ else {
381
+ // Remove documents from library but don't delete them
382
+ for (const docId of documentIds) {
383
+ await api.removeDependency(docId, libraryId, 'parent-child');
384
+ }
385
+ }
386
+ }
387
+ // Remove library from parent if it has one
388
+ const deps = await api.getDependencies(libraryId, ['parent-child']);
389
+ for (const dep of deps) {
390
+ const parent = await api.get(dep.blockerId);
391
+ if (parent && parent.type === 'library') {
392
+ await api.removeDependency(libraryId, dep.blockerId, 'parent-child');
393
+ }
394
+ }
395
+ // Delete the library itself
396
+ await api.delete(libraryId);
397
+ return c.json({
398
+ success: true,
399
+ id: libraryId,
400
+ documentsDeleted: cascade ? documentIds.length : 0,
401
+ documentsRemoved: cascade ? 0 : documentIds.length,
402
+ });
403
+ }
404
+ catch (error) {
405
+ if (error.code === 'NOT_FOUND') {
406
+ return c.json({ error: { code: 'NOT_FOUND', message: 'Library not found' } }, 404);
407
+ }
408
+ console.error('[stoneforge] Failed to delete library:', error);
409
+ return c.json({ error: { code: 'INTERNAL_ERROR', message: 'Failed to delete library' } }, 500);
410
+ }
411
+ });
412
+ // POST /api/libraries - Create a new library
413
+ app.post('/api/libraries', async (c) => {
414
+ try {
415
+ const body = (await c.req.json());
416
+ // Validate required fields
417
+ if (!body.name || typeof body.name !== 'string') {
418
+ return c.json({ error: { code: 'VALIDATION_ERROR', message: 'name is required and must be a string' } }, 400);
419
+ }
420
+ if (!body.createdBy || typeof body.createdBy !== 'string') {
421
+ return c.json({ error: { code: 'VALIDATION_ERROR', message: 'createdBy is required and must be a string' } }, 400);
422
+ }
423
+ // Create the library input
424
+ const libraryInput = {
425
+ name: body.name.trim(),
426
+ createdBy: body.createdBy,
427
+ ...(body.tags && { tags: body.tags }),
428
+ ...(body.metadata && { metadata: body.metadata }),
429
+ };
430
+ // Create the library using the factory function
431
+ const library = await createLibrary(libraryInput);
432
+ // Persist to database
433
+ const created = await api.create(library);
434
+ // If parentId is provided, establish parent-child relationship
435
+ if (body.parentId) {
436
+ // Verify parent library exists
437
+ const parent = await api.get(body.parentId);
438
+ if (!parent) {
439
+ // Library was created but parent doesn't exist - delete and return error
440
+ await api.delete(created.id);
441
+ return c.json({ error: { code: 'VALIDATION_ERROR', message: 'Parent library not found' } }, 400);
442
+ }
443
+ if (parent.type !== 'library') {
444
+ await api.delete(created.id);
445
+ return c.json({ error: { code: 'VALIDATION_ERROR', message: 'Parent must be a library' } }, 400);
446
+ }
447
+ // Add parent-child dependency (child is blocked, parent is blocker)
448
+ await api.addDependency({
449
+ blockedId: created.id,
450
+ blockerId: body.parentId,
451
+ type: 'parent-child',
452
+ actor: body.createdBy,
453
+ });
454
+ }
455
+ return c.json(created, 201);
456
+ }
457
+ catch (error) {
458
+ if (error.code === 'VALIDATION_ERROR') {
459
+ return c.json({ error: { code: 'VALIDATION_ERROR', message: error.message } }, 400);
460
+ }
461
+ console.error('[stoneforge] Failed to create library:', error);
462
+ return c.json({ error: { code: 'INTERNAL_ERROR', message: 'Failed to create library' } }, 500);
463
+ }
464
+ });
465
+ return app;
466
+ }
467
+ //# sourceMappingURL=libraries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"libraries.js","sourceRoot":"","sources":["../src/libraries.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,MAAM,UAAU,mBAAmB,CAAC,QAA6B;IAC/D,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC;IACzB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,0CAA0C;IAC1C,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACpC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,kBAAkB,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,qBAAqB,CAAC,KAAK,MAAM,CAAC;YAClF,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACjD,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,yBAAyB;YAEtF,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC;gBAC/B,IAAI,EAAE,SAAS;gBACf,KAAK;gBACL,GAAG,CAAC,kBAAkB,IAAI,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC;aAC5B,CAAC,CAAC;YAErC,6CAA6C;YAC7C,wEAAwE;YACxE,MAAM,mBAAmB,GAAG,MAAM,OAAO,CAAC,GAAG,CAC3C,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;gBAC9B,0FAA0F;gBAC1F,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC7E,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;gBACtE,OAAO;oBACL,GAAG,OAAO;oBACV,QAAQ,EAAE,SAAS,EAAE,SAAS,IAAI,IAAI;iBACvC,CAAC;YACJ,CAAC,CAAC,CACH,CAAC;YAEF,OAAO,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;YAC9D,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,yBAAyB,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QAChG,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,4DAA4D;IAC5D,GAAG,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAc,CAAC;YAC1C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,kBAAkB,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,qBAAqB,CAAC,KAAK,MAAM,CAAC;YAElF,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAEvG,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACrF,CAAC;YAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC/B,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACrF,CAAC;YAED,yEAAyE;YACzE,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;YAEjE,4CAA4C;YAC5C,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAc,EAAE,CAAC;YAC/B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,OAAoB,CAAC,CAAC;gBAClD,IAAI,KAAK,EAAE,CAAC;oBACV,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;YAED,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YAClE,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;YAEhE,OAAO,CAAC,CAAC,IAAI,CAAC;gBACZ,GAAG,OAAO;gBACV,aAAa,EAAE,YAAY;gBAC3B,UAAU,EAAE,SAAS;aACtB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;YAC5D,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,uBAAuB,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,gEAAgE;IAChE,GAAG,CAAC,GAAG,CAAC,8BAA8B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAClD,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAc,CAAC;YAC1C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACjD,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEnD,8BAA8B;YAC9B,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACrF,CAAC;YACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC/B,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACrF,CAAC;YAED,4CAA4C;YAC5C,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;YAEjE,+CAA+C;YAC/C,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACvD,MAAM,SAAS,GAAc,EAAE,CAAC;YAEhC,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;gBAChC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,KAAkB,CAAC,CAAC;gBAC9C,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACnC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;YAED,gCAAgC;YAChC,IAAI,MAAM,GAAG,SAAS,CAAC;YACvB,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3D,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAEhE,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBACf,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;YACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAClC,CAAC;YAED,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;YACtE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,iCAAiC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QACxG,CAAC;IACH,CAAC,CAAC,CAAC;IAEH;;OAEG;IACH,KAAK,UAAU,mBAAmB,CAAC,SAAoB,EAAE,QAAuB;QAC9E,IAAI,QAAQ,EAAE,CAAC;YACb,yBAAyB;YACzB,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,QAAqB,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;YACpF,MAAM,QAAQ,GAAc,EAAE,CAAC;YAC/B,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC7B,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;oBAChC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,SAAsB,CAAC,CAAC;oBAC1D,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;wBAC1C,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,kDAAkD;YAClD,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAoC,CAAC,CAAC;YAC3F,MAAM,YAAY,GAAc,EAAE,CAAC;YACnC,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;gBAC/B,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;oBACzB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;oBACjE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;oBAC9D,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,YAAY,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,UAAU,iBAAiB,CAC9B,SAAoB,EACpB,QAAmB,EACnB,WAAmB;QAEnB,uEAAuE;QACvE,MAAM,cAAc,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACjD,MAAM,MAAM,GAAI,CAAC,CAAC,QAAQ,EAAE,SAAoB,IAAI,QAAQ,CAAC;YAC7D,MAAM,MAAM,GAAI,CAAC,CAAC,QAAQ,EAAE,SAAoB,IAAI,QAAQ,CAAC;YAC7D,IAAI,MAAM,KAAK,MAAM;gBAAE,OAAO,MAAM,GAAG,MAAM,CAAC;YAC9C,0DAA0D;YAC1D,MAAM,KAAK,GAAI,CAAiC,CAAC,IAAI,IAAI,EAAE,CAAC;YAC5D,MAAM,KAAK,GAAI,CAAiC,CAAC,IAAI,IAAI,EAAE,CAAC;YAC5D,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,oEAAoE;QACpE,8CAA8C;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,YAAY,GAAI,OAAO,CAAC,QAAQ,EAAE,SAAoB,IAAI,CAAC,CAAC;YAClE,IAAI,QAAQ,GAAG,CAAC,CAAC;YAEjB,0CAA0C;YAC1C,IAAI,QAAQ,IAAI,WAAW,EAAE,CAAC;gBAC5B,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;YAED,IAAI,QAAQ,KAAK,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC3E,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE;oBAC3B,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE;iBACvD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE;gBAC1B,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE;aAC1D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,GAAG,CAAC,0BAA0B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC9C,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAc,CAAC;YACjD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAe,CAAC;YAEnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBAC3C,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,qCAAqC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC9G,CAAC;YAED,wBAAwB;YACxB,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACrF,CAAC;YACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC/B,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACrF,CAAC;YAED,sBAAsB;YACtB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;YACpE,IAAI,QAAQ,GAAkB,IAAI,CAAC;YACnC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,SAAsB,CAAC,CAAC;gBACzD,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBACxC,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC;oBACzB,MAAM;gBACR,CAAC;YACH,CAAC;YAED,kCAAkC;YAClC,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAChE,MAAM,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAEpD,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;YAChE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,2BAA2B,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QAClG,CAAC;IACH,CAAC,CAAC,CAAC;IAEH;;;;OAIG;IACH,GAAG,CAAC,GAAG,CAAC,2BAA2B,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC/C,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAc,CAAC;YACjD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAEhC,wBAAwB;YACxB,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACrF,CAAC;YACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC/B,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACrF,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,QAA4B,CAAC;YACtD,MAAM,KAAK,GAAG,IAAI,CAAC,KAA2B,CAAC;YAC/C,MAAM,KAAK,GAAI,IAAI,CAAC,KAAkB,IAAK,SAAsB,CAAC;YAElE,kCAAkC;YAClC,IAAI,WAAW,EAAE,CAAC;gBAChB,+BAA+B;gBAC/B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAC1C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBACzC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,qCAAqC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC9G,CAAC;gBAED,gFAAgF;gBAChF,MAAM,YAAY,GAAG,KAAK,EAAE,UAAqB,EAAE,qBAAgC,EAAoB,EAAE;oBACvG,IAAI,UAAU,KAAK,qBAAqB;wBAAE,OAAO,IAAI,CAAC;oBAEtD,2BAA2B;oBAC3B,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;oBACzE,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;oBAEpD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;wBAC/B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,OAAoB,CAAC,CAAC;wBAClD,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;4BACtC,IAAI,MAAM,YAAY,CAAC,OAAoB,EAAE,qBAAqB,CAAC,EAAE,CAAC;gCACpE,OAAO,IAAI,CAAC;4BACd,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC,CAAC;gBAEF,IAAI,MAAM,YAAY,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC;oBAC/C,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,8DAA8D,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;gBACvI,CAAC;YACH,CAAC;YAED,sBAAsB;YACtB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;YACpE,IAAI,gBAAgB,GAAkB,IAAI,CAAC;YAC3C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,SAAsB,CAAC,CAAC;gBACzD,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBACxC,gBAAgB,GAAG,GAAG,CAAC,SAAS,CAAC;oBACjC,MAAM;gBACR,CAAC;YACH,CAAC;YAED,4DAA4D;YAC5D,IAAI,gBAAgB,KAAK,WAAW,EAAE,CAAC;gBACrC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,6BAA6B;oBAC7B,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;oBACnE,MAAM,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACtD,CAAC;gBACD,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC;YACxE,CAAC;YAED,oCAAoC;YACpC,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,gBAA6B,EAAE,cAAc,CAAC,CAAC;YACvF,CAAC;YAED,gCAAgC;YAChC,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,GAAG,CAAC,aAAa,CAAC;oBACtB,SAAS,EAAE,SAAS;oBACpB,SAAS,EAAE,WAAW;oBACtB,IAAI,EAAE,cAAc;oBACpB,KAAK;iBACN,CAAC,CAAC;YACL,CAAC;YAED,gEAAgE;YAChE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBACnE,MAAM,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YACtD,CAAC;YAED,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACxE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;YAC7D,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,wBAAwB,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC,CAAC,CAAC;IAEH;;;;;OAKG;IACH,GAAG,CAAC,MAAM,CAAC,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC3C,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAc,CAAC;YACjD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,MAAM,CAAC;YAE3D,wBAAwB;YACxB,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACrF,CAAC;YACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC/B,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACrF,CAAC;YAED,iDAAiD;YACjD,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;YACxE,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAEpD,sBAAsB;YACtB,MAAM,aAAa,GAAa,EAAE,CAAC;YACnC,MAAM,WAAW,GAAa,EAAE,CAAC;YAEjC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,OAAoB,CAAC,CAAC;gBAClD,IAAI,KAAK,EAAE,CAAC;oBACV,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;wBAC7B,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC9B,CAAC;yBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;wBACrC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC;YACH,CAAC;YAED,gDAAgD;YAChD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,CAAC,IAAI,CAAC;oBACZ,KAAK,EAAE;wBACL,IAAI,EAAE,cAAc;wBACpB,OAAO,EAAE,iCAAiC,aAAa,CAAC,MAAM,oCAAoC;qBACnG;iBACF,EAAE,GAAG,CAAC,CAAC;YACV,CAAC;YAED,yCAAyC;YACzC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,IAAI,OAAO,EAAE,CAAC;oBACZ,sCAAsC;oBACtC,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;wBAChC,MAAM,GAAG,CAAC,MAAM,CAAC,KAAkB,CAAC,CAAC;oBACvC,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,sDAAsD;oBACtD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;wBAChC,MAAM,GAAG,CAAC,gBAAgB,CAAC,KAAkB,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;oBAC5E,CAAC;gBACH,CAAC;YACH,CAAC;YAED,2CAA2C;YAC3C,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;YACpE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,SAAsB,CAAC,CAAC;gBACzD,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBACxC,MAAM,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,SAAsB,EAAE,cAAc,CAAC,CAAC;gBACpF,CAAC;YACH,CAAC;YAED,4BAA4B;YAC5B,MAAM,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAE5B,OAAO,CAAC,CAAC,IAAI,CAAC;gBACZ,OAAO,EAAE,IAAI;gBACb,EAAE,EAAE,SAAS;gBACb,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAClD,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM;aACnD,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA2B,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACtD,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACrF,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;YAC/D,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,0BAA0B,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QACjG,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,6CAA6C;IAC7C,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACrC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAM/B,CAAC;YAEF,2BAA2B;YAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAChD,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,uCAAuC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAChH,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAC1D,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,4CAA4C,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACrH,CAAC;YAED,2BAA2B;YAC3B,MAAM,YAAY,GAAuB;gBACvC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBACtB,SAAS,EAAE,IAAI,CAAC,SAAqB;gBACrC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;gBACrC,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;aAClD,CAAC;YAEF,gDAAgD;YAChD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,CAAC;YAElD,sBAAsB;YACtB,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,OAAuD,CAAC,CAAC;YAE1F,+DAA+D;YAC/D,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,+BAA+B;gBAC/B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAqB,CAAC,CAAC;gBACzD,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,yEAAyE;oBACzE,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAC7B,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,0BAA0B,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;gBACnG,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC9B,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAC7B,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,0BAA0B,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;gBACnG,CAAC;gBAED,oEAAoE;gBACpE,MAAM,GAAG,CAAC,aAAa,CAAC;oBACtB,SAAS,EAAE,OAAO,CAAC,EAAE;oBACrB,SAAS,EAAE,IAAI,CAAC,QAAqB;oBACrC,IAAI,EAAE,cAAc;oBACpB,KAAK,EAAE,IAAI,CAAC,SAAqB;iBAClC,CAAC,CAAC;YACL,CAAC;YAED,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA2B,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBAC7D,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAG,KAAe,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACjG,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;YAC/D,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,0BAA0B,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QACjG,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Message Routes Factory
3
+ *
4
+ * Message creation, search, and thread replies.
5
+ */
6
+ import { Hono } from 'hono';
7
+ import type { CollaborateServicesWithBroadcast } from './types.js';
8
+ export declare function createMessageRoutes(services: CollaborateServicesWithBroadcast): Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
9
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,YAAY,CAAC;AAEnE,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gCAAgC,8EAwZ7E"}