@stackguide/mcp-server 3.3.0 → 3.8.2

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 (137) hide show
  1. package/README.md +259 -10
  2. package/dist/config/persistence.d.ts +16 -0
  3. package/dist/config/persistence.d.ts.map +1 -1
  4. package/dist/config/persistence.js +53 -0
  5. package/dist/config/persistence.js.map +1 -1
  6. package/dist/handlers/config.d.ts +1 -8
  7. package/dist/handlers/config.d.ts.map +1 -1
  8. package/dist/handlers/config.js +7 -1
  9. package/dist/handlers/config.js.map +1 -1
  10. package/dist/handlers/context.d.ts +1 -5
  11. package/dist/handlers/context.d.ts.map +1 -1
  12. package/dist/handlers/context.js +7 -1
  13. package/dist/handlers/context.js.map +1 -1
  14. package/dist/handlers/cursor.d.ts +1 -7
  15. package/dist/handlers/cursor.d.ts.map +1 -1
  16. package/dist/handlers/cursor.js +7 -1
  17. package/dist/handlers/cursor.js.map +1 -1
  18. package/dist/handlers/custom-rule.d.ts +1 -11
  19. package/dist/handlers/custom-rule.d.ts.map +1 -1
  20. package/dist/handlers/custom-rule.js +7 -1
  21. package/dist/handlers/custom-rule.js.map +1 -1
  22. package/dist/handlers/docs.d.ts +1 -8
  23. package/dist/handlers/docs.d.ts.map +1 -1
  24. package/dist/handlers/docs.js +7 -1
  25. package/dist/handlers/docs.js.map +1 -1
  26. package/dist/handlers/generate.d.ts +1 -13
  27. package/dist/handlers/generate.d.ts.map +1 -1
  28. package/dist/handlers/generate.js +6 -3
  29. package/dist/handlers/generate.js.map +1 -1
  30. package/dist/handlers/health.d.ts +1 -8
  31. package/dist/handlers/health.d.ts.map +1 -1
  32. package/dist/handlers/health.js +11 -3
  33. package/dist/handlers/health.js.map +1 -1
  34. package/dist/handlers/help.d.ts +1 -5
  35. package/dist/handlers/help.d.ts.map +1 -1
  36. package/dist/handlers/help.js +7 -1
  37. package/dist/handlers/help.js.map +1 -1
  38. package/dist/handlers/knowledge.d.ts +1 -8
  39. package/dist/handlers/knowledge.d.ts.map +1 -1
  40. package/dist/handlers/knowledge.js +7 -1
  41. package/dist/handlers/knowledge.js.map +1 -1
  42. package/dist/handlers/prompts.d.ts +31 -0
  43. package/dist/handlers/prompts.d.ts.map +1 -0
  44. package/dist/handlers/prompts.js +236 -0
  45. package/dist/handlers/prompts.js.map +1 -0
  46. package/dist/handlers/resources.d.ts +27 -0
  47. package/dist/handlers/resources.d.ts.map +1 -0
  48. package/dist/handlers/resources.js +210 -0
  49. package/dist/handlers/resources.js.map +1 -0
  50. package/dist/handlers/review.d.ts.map +1 -1
  51. package/dist/handlers/review.js +45 -4
  52. package/dist/handlers/review.js.map +1 -1
  53. package/dist/handlers/rules.d.ts +1 -9
  54. package/dist/handlers/rules.d.ts.map +1 -1
  55. package/dist/handlers/rules.js +7 -1
  56. package/dist/handlers/rules.js.map +1 -1
  57. package/dist/index.d.ts +4 -2
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +29 -419
  60. package/dist/index.js.map +1 -1
  61. package/dist/router/index.d.ts +69 -0
  62. package/dist/router/index.d.ts.map +1 -0
  63. package/dist/router/index.js +151 -0
  64. package/dist/router/index.js.map +1 -0
  65. package/dist/services/ast/analyzer.d.ts +55 -0
  66. package/dist/services/ast/analyzer.d.ts.map +1 -0
  67. package/dist/services/ast/analyzer.js +268 -0
  68. package/dist/services/ast/analyzer.js.map +1 -0
  69. package/dist/services/ast/index.d.ts +10 -0
  70. package/dist/services/ast/index.d.ts.map +1 -0
  71. package/dist/services/ast/index.js +12 -0
  72. package/dist/services/ast/index.js.map +1 -0
  73. package/dist/services/ast/rules.d.ts +13 -0
  74. package/dist/services/ast/rules.d.ts.map +1 -0
  75. package/dist/services/ast/rules.js +358 -0
  76. package/dist/services/ast/rules.js.map +1 -0
  77. package/dist/services/ast/treeSitterParser.d.ts +54 -0
  78. package/dist/services/ast/treeSitterParser.d.ts.map +1 -0
  79. package/dist/services/ast/treeSitterParser.js +394 -0
  80. package/dist/services/ast/treeSitterParser.js.map +1 -0
  81. package/dist/services/ast/types.d.ts +167 -0
  82. package/dist/services/ast/types.d.ts.map +1 -0
  83. package/dist/services/ast/types.js +35 -0
  84. package/dist/services/ast/types.js.map +1 -0
  85. package/dist/services/codeAnalyzer.d.ts.map +1 -1
  86. package/dist/services/codeAnalyzer.js +43 -3
  87. package/dist/services/codeAnalyzer.js.map +1 -1
  88. package/dist/services/httpClient.d.ts +45 -0
  89. package/dist/services/httpClient.d.ts.map +1 -0
  90. package/dist/services/httpClient.js +309 -0
  91. package/dist/services/httpClient.js.map +1 -0
  92. package/dist/services/intelligence/projectFs.d.ts +11 -0
  93. package/dist/services/intelligence/projectFs.d.ts.map +1 -0
  94. package/dist/services/intelligence/projectFs.js +30 -0
  95. package/dist/services/intelligence/projectFs.js.map +1 -0
  96. package/dist/services/projectFs.d.ts +85 -0
  97. package/dist/services/projectFs.d.ts.map +1 -0
  98. package/dist/services/projectFs.js +287 -0
  99. package/dist/services/projectFs.js.map +1 -0
  100. package/dist/services/rulesEngine.d.ts +255 -0
  101. package/dist/services/rulesEngine.d.ts.map +1 -0
  102. package/dist/services/rulesEngine.js +523 -0
  103. package/dist/services/rulesEngine.js.map +1 -0
  104. package/dist/services/webDocumentation.d.ts +11 -0
  105. package/dist/services/webDocumentation.d.ts.map +1 -1
  106. package/dist/services/webDocumentation.js +231 -27
  107. package/dist/services/webDocumentation.js.map +1 -1
  108. package/dist/storage/index.d.ts +7 -0
  109. package/dist/storage/index.d.ts.map +1 -0
  110. package/dist/storage/index.js +7 -0
  111. package/dist/storage/index.js.map +1 -0
  112. package/dist/storage/sqlite.d.ts +92 -0
  113. package/dist/storage/sqlite.d.ts.map +1 -0
  114. package/dist/storage/sqlite.js +471 -0
  115. package/dist/storage/sqlite.js.map +1 -0
  116. package/dist/storage/types.d.ts +147 -0
  117. package/dist/storage/types.d.ts.map +1 -0
  118. package/dist/storage/types.js +13 -0
  119. package/dist/storage/types.js.map +1 -0
  120. package/dist/utils/logger.d.ts +11 -2
  121. package/dist/utils/logger.d.ts.map +1 -1
  122. package/dist/utils/logger.js +30 -2
  123. package/dist/utils/logger.js.map +1 -1
  124. package/dist/utils/safeFetch.d.ts +12 -0
  125. package/dist/utils/safeFetch.d.ts.map +1 -0
  126. package/dist/utils/safeFetch.js +107 -0
  127. package/dist/utils/safeFetch.js.map +1 -0
  128. package/dist/utils/validation.d.ts +1 -1
  129. package/dist/validation/index.d.ts +8 -0
  130. package/dist/validation/index.d.ts.map +1 -0
  131. package/dist/validation/index.js +19 -0
  132. package/dist/validation/index.js.map +1 -0
  133. package/dist/validation/schemas.d.ts +346 -0
  134. package/dist/validation/schemas.d.ts.map +1 -0
  135. package/dist/validation/schemas.js +256 -0
  136. package/dist/validation/schemas.js.map +1 -0
  137. package/package.json +9 -2
@@ -1,6 +1,88 @@
1
1
  import { URL } from 'url';
2
- // Web documents cache
2
+ import crypto from 'crypto';
3
+ import { logger } from '../utils/logger.js';
4
+ import { safeFetch } from '../utils/safeFetch.js';
5
+ import { sanitizeForPrompt } from '../validation/schemas.js';
3
6
  const webDocCache = new Map();
7
+ const CACHE_TTL_MS = 6 * 60 * 60 * 1000; // 6 hours
8
+ const ALLOWED_DOC_HOSTS = [
9
+ 'github.com',
10
+ 'raw.githubusercontent.com',
11
+ 'example.com',
12
+ 'developer.mozilla.org',
13
+ 'nextjs.org',
14
+ 'react.dev',
15
+ 'nodejs.org',
16
+ 'docs.djangoproject.com',
17
+ 'fastapi.tiangolo.com',
18
+ 'flask.palletsprojects.com'
19
+ ];
20
+ function getProjectKey(projectPath) {
21
+ const target = projectPath ? projectPath : process.cwd();
22
+ const normalized = target.replace(/\\/g, '/');
23
+ return crypto.createHash('sha256').update(normalized).digest('hex').slice(0, 12);
24
+ }
25
+ function cacheKey(projectKey, url) {
26
+ return `${projectKey}:${url}`;
27
+ }
28
+ function pruneExpired() {
29
+ const now = Date.now();
30
+ for (const [key, entry] of webDocCache.entries()) {
31
+ if (entry.expiresAt <= now) {
32
+ webDocCache.delete(key);
33
+ }
34
+ }
35
+ }
36
+ const rateLimitStore = new Map();
37
+ const RATE_LIMIT_CONFIG = {
38
+ maxRequests: 30, // Max requests per window
39
+ windowMs: 60000, // 1 minute window
40
+ blockDurationMs: 300000 // 5 minute block after exceeding
41
+ };
42
+ /**
43
+ * Check if request is rate limited
44
+ * Uses sliding window algorithm
45
+ */
46
+ function checkRateLimit(identifier = 'global') {
47
+ const now = Date.now();
48
+ const entry = rateLimitStore.get(identifier);
49
+ if (!entry) {
50
+ rateLimitStore.set(identifier, { count: 1, windowStart: now });
51
+ return { allowed: true };
52
+ }
53
+ // Check if window has expired
54
+ if (now - entry.windowStart > RATE_LIMIT_CONFIG.windowMs) {
55
+ rateLimitStore.set(identifier, { count: 1, windowStart: now });
56
+ return { allowed: true };
57
+ }
58
+ // Check if limit exceeded
59
+ if (entry.count >= RATE_LIMIT_CONFIG.maxRequests) {
60
+ const retryAfter = Math.ceil((entry.windowStart + RATE_LIMIT_CONFIG.blockDurationMs - now) / 1000);
61
+ logger.warn('Rate limit exceeded', {
62
+ identifier,
63
+ count: entry.count,
64
+ retryAfter,
65
+ action: 'rate_limit_block'
66
+ });
67
+ return { allowed: false, retryAfter };
68
+ }
69
+ // Increment counter
70
+ entry.count++;
71
+ return { allowed: true };
72
+ }
73
+ /**
74
+ * Get rate limit status for monitoring
75
+ */
76
+ export function getRateLimitStatus() {
77
+ const entry = rateLimitStore.get('global');
78
+ const now = Date.now();
79
+ return {
80
+ currentRequests: entry?.count || 0,
81
+ maxRequests: RATE_LIMIT_CONFIG.maxRequests,
82
+ windowMs: RATE_LIMIT_CONFIG.windowMs,
83
+ resetIn: entry ? Math.max(0, entry.windowStart + RATE_LIMIT_CONFIG.windowMs - now) : 0
84
+ };
85
+ }
4
86
  // Extract main content from HTML
5
87
  function extractMainContent(html) {
6
88
  // Extract title
@@ -77,27 +159,119 @@ function generateSummary(content, maxLength = 500) {
77
159
  }
78
160
  return summary.trim().substring(0, maxLength) + (summary.length > maxLength ? '...' : '');
79
161
  }
162
+ // SSRF Protection: Block internal/private network URLs
163
+ const BLOCKED_HOSTNAMES = [
164
+ 'localhost',
165
+ '127.0.0.1',
166
+ '0.0.0.0',
167
+ '::1',
168
+ '169.254.169.254', // AWS/Cloud metadata
169
+ 'metadata.google.internal', // GCP metadata
170
+ 'metadata.azure.com', // Azure metadata
171
+ ];
172
+ const PRIVATE_IP_RANGES = [
173
+ /^10\./, // 10.0.0.0/8
174
+ /^172\.(1[6-9]|2\d|3[0-1])\./, // 172.16.0.0/12
175
+ /^192\.168\./, // 192.168.0.0/16
176
+ /^127\./, // 127.0.0.0/8 loopback
177
+ /^169\.254\./, // Link-local
178
+ /^fc00:/i, // IPv6 private
179
+ /^fe80:/i, // IPv6 link-local
180
+ ];
181
+ function isAllowedUrl(urlString) {
182
+ try {
183
+ const urlObj = new URL(urlString);
184
+ const hostname = urlObj.hostname.toLowerCase();
185
+ // Block non-http(s) protocols
186
+ if (!['http:', 'https:'].includes(urlObj.protocol)) {
187
+ return { allowed: false, reason: `Protocol '${urlObj.protocol}' is not allowed` };
188
+ }
189
+ // Block known internal hostnames
190
+ if (BLOCKED_HOSTNAMES.includes(hostname)) {
191
+ return { allowed: false, reason: `Access to '${hostname}' is blocked for security` };
192
+ }
193
+ // Block private IP ranges
194
+ for (const pattern of PRIVATE_IP_RANGES) {
195
+ if (pattern.test(hostname)) {
196
+ return { allowed: false, reason: `Access to private IP '${hostname}' is blocked` };
197
+ }
198
+ }
199
+ // Block URLs with credentials
200
+ if (urlObj.username || urlObj.password) {
201
+ return { allowed: false, reason: 'URLs with embedded credentials are not allowed' };
202
+ }
203
+ return { allowed: true };
204
+ }
205
+ catch {
206
+ return { allowed: false, reason: 'Invalid URL format' };
207
+ }
208
+ }
80
209
  // Fetch and process web documentation
81
210
  export async function fetchWebDocumentation(url, options = {}) {
211
+ const startTime = Date.now();
212
+ pruneExpired();
213
+ const projectKey = getProjectKey(options.projectPath);
214
+ const key = cacheKey(projectKey, url);
215
+ // Rate limiting check
216
+ const rateCheck = checkRateLimit('global');
217
+ if (!rateCheck.allowed) {
218
+ logger.audit('RATE_LIMIT_EXCEEDED', {
219
+ url,
220
+ retryAfter: rateCheck.retryAfter,
221
+ action: 'fetch_rate_limited'
222
+ });
223
+ throw new Error(`Rate limit exceeded. Retry after ${rateCheck.retryAfter} seconds.`);
224
+ }
82
225
  // Check cache
83
- if (webDocCache.has(url)) {
84
- return webDocCache.get(url);
226
+ const cached = webDocCache.get(key);
227
+ if (cached && cached.expiresAt > Date.now()) {
228
+ logger.debug('Cache hit', { url, action: 'cache_hit', projectKey });
229
+ return cached.doc;
85
230
  }
86
- // Validate URL
231
+ // Validate URL format
87
232
  try {
88
233
  new URL(url);
89
234
  }
90
235
  catch {
236
+ logger.warn('Invalid URL format', { url, action: 'invalid_url' });
91
237
  throw new Error(`Invalid URL: ${url}`);
92
238
  }
239
+ // SSRF Protection: Validate URL is allowed
240
+ const urlCheck = isAllowedUrl(url);
241
+ if (!urlCheck.allowed) {
242
+ logger.audit('SSRF_BLOCK', {
243
+ url,
244
+ reason: urlCheck.reason,
245
+ action: 'ssrf_block'
246
+ });
247
+ throw new Error(`URL blocked: ${urlCheck.reason}`);
248
+ }
249
+ // Audit log: starting fetch
250
+ logger.info('Fetching web documentation', {
251
+ url,
252
+ projectType: options.projectType,
253
+ projectKey,
254
+ action: 'fetch_start'
255
+ });
93
256
  // Fetch content
94
- const response = await fetch(url, {
95
- headers: {
96
- 'User-Agent': 'StackGuide-MCP/1.0 (Documentation Fetcher)',
97
- 'Accept': 'text/html,application/xhtml+xml,text/plain,text/markdown'
257
+ const response = await safeFetch(url, {
258
+ allowedHosts: ALLOWED_DOC_HOSTS,
259
+ timeoutMs: 12000,
260
+ maxBytes: 2 * 1024 * 1024,
261
+ fetchOptions: {
262
+ headers: {
263
+ 'User-Agent': 'StackGuide-MCP/1.0 (Documentation Fetcher)',
264
+ 'Accept': 'text/html,application/xhtml+xml,text/plain,text/markdown'
265
+ }
98
266
  }
99
267
  });
100
268
  if (!response.ok) {
269
+ logger.warn('Fetch failed', {
270
+ url,
271
+ status: response.status,
272
+ statusText: response.statusText,
273
+ action: 'fetch_failed'
274
+ });
101
275
  throw new Error(`Failed to fetch ${url}: ${response.status} ${response.statusText}`);
102
276
  }
103
277
  const contentType = response.headers.get('content-type') || '';
@@ -118,19 +292,37 @@ export async function fetchWebDocumentation(url, options = {}) {
118
292
  content = await response.text();
119
293
  title = new URL(url).pathname.split('/').pop() || 'Untitled';
120
294
  }
295
+ // Prompt-safety: strip control/directional chars and scripts before caching/using downstream
296
+ const sanitizedContent = sanitizeForPrompt(content, 8000);
297
+ const sanitizedTitle = sanitizeForPrompt(title, 300);
121
298
  const doc = {
122
299
  id: `web-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
123
300
  url,
124
- title,
125
- content,
126
- summary: generateSummary(content),
301
+ title: sanitizedTitle,
302
+ content: sanitizedContent,
303
+ summary: generateSummary(sanitizedContent),
127
304
  fetchedAt: new Date().toISOString(),
128
305
  projectType: options.projectType,
129
306
  category: options.category,
130
- tags: options.tags || []
307
+ tags: options.tags || [],
308
+ projectKey
131
309
  };
132
310
  // Save to cache
133
- webDocCache.set(url, doc);
311
+ webDocCache.set(key, {
312
+ doc,
313
+ projectKey,
314
+ expiresAt: Date.now() + CACHE_TTL_MS
315
+ });
316
+ // Audit log: fetch complete
317
+ const duration = Date.now() - startTime;
318
+ logger.info('Web documentation fetched successfully', {
319
+ url,
320
+ docId: doc.id,
321
+ title: doc.title,
322
+ contentLength: content.length,
323
+ durationMs: duration,
324
+ action: 'fetch_complete'
325
+ });
134
326
  return doc;
135
327
  }
136
328
  // Fetch multiple URLs
@@ -143,9 +335,15 @@ export async function fetchMultipleDocuments(urls, options = {}) {
143
335
  successful.push(result.value);
144
336
  }
145
337
  else {
338
+ const errorMessage = result.reason?.message || 'Unknown error';
339
+ logger.warn('Web documentation fetch failed', {
340
+ url: urls[index],
341
+ error: errorMessage,
342
+ action: 'fetch_multi_failed'
343
+ });
146
344
  failed.push({
147
345
  url: urls[index],
148
- error: result.reason?.message || 'Unknown error'
346
+ error: errorMessage
149
347
  });
150
348
  }
151
349
  });
@@ -155,7 +353,8 @@ export async function fetchMultipleDocuments(urls, options = {}) {
155
353
  export function searchWebDocuments(query) {
156
354
  const results = [];
157
355
  const queryLower = query.toLowerCase();
158
- for (const doc of webDocCache.values()) {
356
+ pruneExpired();
357
+ for (const { doc } of webDocCache.values()) {
159
358
  if (doc.title.toLowerCase().includes(queryLower) ||
160
359
  doc.content.toLowerCase().includes(queryLower) ||
161
360
  doc.tags.some(t => t.toLowerCase().includes(queryLower))) {
@@ -166,7 +365,8 @@ export function searchWebDocuments(query) {
166
365
  }
167
366
  // Get document by ID
168
367
  export function getWebDocumentById(id) {
169
- for (const doc of webDocCache.values()) {
368
+ pruneExpired();
369
+ for (const { doc } of webDocCache.values()) {
170
370
  if (doc.id === id)
171
371
  return doc;
172
372
  }
@@ -174,11 +374,17 @@ export function getWebDocumentById(id) {
174
374
  }
175
375
  // Get document by URL
176
376
  export function getWebDocumentByUrl(url) {
177
- return webDocCache.get(url) || null;
377
+ pruneExpired();
378
+ for (const { doc } of webDocCache.values()) {
379
+ if (doc.url === url)
380
+ return doc;
381
+ }
382
+ return null;
178
383
  }
179
384
  // List all cached documents
180
385
  export function listCachedDocuments() {
181
- return Array.from(webDocCache.values()).map(doc => ({
386
+ pruneExpired();
387
+ return Array.from(webDocCache.values()).map(({ doc }) => ({
182
388
  id: doc.id,
183
389
  url: doc.url,
184
390
  title: doc.title,
@@ -195,17 +401,15 @@ export function clearWebDocCache() {
195
401
  }
196
402
  // Remove document from cache
197
403
  export function removeFromCache(urlOrId) {
198
- if (webDocCache.has(urlOrId)) {
199
- webDocCache.delete(urlOrId);
200
- return true;
201
- }
202
- for (const [url, doc] of webDocCache.entries()) {
203
- if (doc.id === urlOrId) {
204
- webDocCache.delete(url);
205
- return true;
404
+ pruneExpired();
405
+ let removed = false;
406
+ for (const [key, entry] of webDocCache.entries()) {
407
+ if (entry.doc.id === urlOrId || entry.doc.url === urlOrId) {
408
+ webDocCache.delete(key);
409
+ removed = true;
206
410
  }
207
411
  }
208
- return false;
412
+ return removed;
209
413
  }
210
414
  // Popular documentation URLs by framework
211
415
  export const POPULAR_DOCS = {
@@ -1 +1 @@
1
- {"version":3,"file":"webDocumentation.js","sourceRoot":"","sources":["../../src/services/webDocumentation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webDocumentation.js","sourceRoot":"","sources":["../../src/services/webDocumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAuB7D,MAAM,WAAW,GAA4B,IAAI,GAAG,EAAE,CAAC;AACvD,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,UAAU;AAEnD,MAAM,iBAAiB,GAAG;IACxB,YAAY;IACZ,2BAA2B;IAC3B,aAAa;IACb,uBAAuB;IACvB,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,wBAAwB;IACxB,sBAAsB;IACtB,2BAA2B;CAC5B,CAAC;AAEF,SAAS,aAAa,CAAC,WAAoB;IACzC,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IACzD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,QAAQ,CAAC,UAAkB,EAAE,GAAW;IAC/C,OAAO,GAAG,UAAU,IAAI,GAAG,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;QACjD,IAAI,KAAK,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC;YAC3B,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;AACH,CAAC;AAWD,MAAM,cAAc,GAAG,IAAI,GAAG,EAA0B,CAAC;AAEzD,MAAM,iBAAiB,GAAG;IACxB,WAAW,EAAE,EAAE,EAAQ,0BAA0B;IACjD,QAAQ,EAAE,KAAK,EAAQ,kBAAkB;IACzC,eAAe,EAAE,MAAM,CAAC,iCAAiC;CAC1D,CAAC;AAEF;;;GAGG;AACH,SAAS,cAAc,CAAC,aAAqB,QAAQ;IACnD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAE7C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,8BAA8B;IAC9B,IAAI,GAAG,GAAG,KAAK,CAAC,WAAW,GAAG,iBAAiB,CAAC,QAAQ,EAAE,CAAC;QACzD,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,0BAA0B;IAC1B,IAAI,KAAK,CAAC,KAAK,IAAI,iBAAiB,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG,iBAAiB,CAAC,eAAe,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QACnG,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;YACjC,UAAU;YACV,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,UAAU;YACV,MAAM,EAAE,kBAAkB;SAC3B,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IACxC,CAAC;IAED,oBAAoB;IACpB,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAMhC,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,OAAO;QACL,eAAe,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;QAClC,WAAW,EAAE,iBAAiB,CAAC,WAAW;QAC1C,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;QACpC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,GAAG,iBAAiB,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KACvF,CAAC;AACJ,CAAC;AAED,iCAAiC;AACjC,SAAS,kBAAkB,CAAC,IAAY;IACtC,gBAAgB;IAChB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;IAE7D,mDAAmD;IACnD,IAAI,OAAO,GAAG,IAAI;QAChB,4BAA4B;SAC3B,OAAO,CAAC,mCAAmC,EAAE,EAAE,CAAC;SAChD,OAAO,CAAC,iCAAiC,EAAE,EAAE,CAAC;QAC/C,+BAA+B;SAC9B,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC;SAC1C,OAAO,CAAC,mCAAmC,EAAE,EAAE,CAAC;SAChD,OAAO,CAAC,mCAAmC,EAAE,EAAE,CAAC;QACjD,kBAAkB;SACjB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAChC,gCAAgC;SAC/B,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAExC,wDAAwD;IACxD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC1F,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAClE,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,OAAO,GAAG,OAAO;QACf,8BAA8B;SAC7B,OAAO,CAAC,wBAAwB,EAAE,UAAU,CAAC;SAC7C,OAAO,CAAC,wBAAwB,EAAE,WAAW,CAAC;SAC9C,OAAO,CAAC,wBAAwB,EAAE,YAAY,CAAC;SAC/C,OAAO,CAAC,wBAAwB,EAAE,aAAa,CAAC;QACjD,gBAAgB;SACf,OAAO,CAAC,wBAAwB,EAAE,QAAQ,CAAC;SAC3C,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC;QACnC,qBAAqB;SACpB,OAAO,CAAC,sBAAsB,EAAE,QAAQ,CAAC;QAC1C,eAAe;SACd,OAAO,CAAC,kDAAkD,EAAE,kBAAkB,CAAC;SAC/E,OAAO,CAAC,4BAA4B,EAAE,MAAM,CAAC;QAC9C,gBAAgB;SACf,OAAO,CAAC,yCAAyC,EAAE,UAAU,CAAC;QAC/D,0BAA0B;SACzB,OAAO,CAAC,4CAA4C,EAAE,QAAQ,CAAC;SAC/D,OAAO,CAAC,oCAAoC,EAAE,MAAM,CAAC;QACtD,wBAAwB;SACvB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QACxB,uBAAuB;SACtB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;QACvB,wBAAwB;SACvB,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC;SAChC,IAAI,EAAE,CAAC;IAEV,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED,2BAA2B;AAC3B,SAAS,eAAe,CAAC,OAAe,EAAE,YAAoB,GAAG;IAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS;YAAE,MAAM;QACpD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACrD,OAAO,IAAI,IAAI,GAAG,GAAG,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5F,CAAC;AAED,uDAAuD;AACvD,MAAM,iBAAiB,GAAG;IACxB,WAAW;IACX,WAAW;IACX,SAAS;IACT,KAAK;IACL,iBAAiB,EAAE,qBAAqB;IACxC,0BAA0B,EAAE,eAAe;IAC3C,oBAAoB,EAAE,iBAAiB;CACxC,CAAC;AAEF,MAAM,iBAAiB,GAAG;IACxB,OAAO,EAAqB,aAAa;IACzC,6BAA6B,EAAG,gBAAgB;IAChD,aAAa,EAAe,iBAAiB;IAC7C,QAAQ,EAAoB,uBAAuB;IACnD,aAAa,EAAe,aAAa;IACzC,SAAS,EAAmB,eAAe;IAC3C,SAAS,EAAmB,kBAAkB;CAC/C,CAAC;AAEF,SAAS,YAAY,CAAC,SAAiB;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAE/C,8BAA8B;QAC9B,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,MAAM,CAAC,QAAQ,kBAAkB,EAAE,CAAC;QACpF,CAAC;QAED,iCAAiC;QACjC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,QAAQ,2BAA2B,EAAE,CAAC;QACvF,CAAC;QAED,0BAA0B;QAC1B,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;YACxC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,yBAAyB,QAAQ,cAAc,EAAE,CAAC;YACrF,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACvC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,gDAAgD,EAAE,CAAC;QACtF,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,sCAAsC;AACtC,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAW,EACX,UAKI,EAAE;IAEN,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,YAAY,EAAE,CAAC;IACf,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAEtC,sBAAsB;IACtB,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE;YAClC,GAAG;YACH,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,MAAM,EAAE,oBAAoB;SAC7B,CAAC,CAAC;QACH,MAAM,IAAI,KAAK,CAAC,oCAAoC,SAAS,CAAC,UAAU,WAAW,CAAC,CAAC;IACvF,CAAC;IAED,cAAc;IACd,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;QACpE,OAAO,MAAM,CAAC,GAAG,CAAC;IACpB,CAAC;IAED,sBAAsB;IACtB,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,2CAA2C;IAC3C,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE;YACzB,GAAG;YACH,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,MAAM,EAAE,YAAY;SACrB,CAAC,CAAC;QACH,MAAM,IAAI,KAAK,CAAC,gBAAgB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,4BAA4B;IAC5B,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;QACxC,GAAG;QACH,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,UAAU;QACV,MAAM,EAAE,aAAa;KACtB,CAAC,CAAC;IAEH,gBAAgB;IAChB,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;QACpC,YAAY,EAAE,iBAAiB;QAC/B,SAAS,EAAE,KAAK;QAChB,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;QACzB,YAAY,EAAE;YACZ,OAAO,EAAE;gBACP,YAAY,EAAE,4CAA4C;gBAC1D,QAAQ,EAAE,0DAA0D;aACrE;SACF;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE;YAC1B,GAAG;YACH,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,MAAM,EAAE,cAAc;SACvB,CAAC,CAAC;QACH,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,KAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC/D,IAAI,OAAe,CAAC;IACpB,IAAI,KAAa,CAAC;IAElB,IAAI,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;QAC5B,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;IAC1B,CAAC;SAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAChD,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,UAAU,CAAC;IAC5F,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChC,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,UAAU,CAAC;IAC/D,CAAC;IAED,6FAA6F;IAC7F,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1D,MAAM,cAAc,GAAG,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAErD,MAAM,GAAG,GAAgB;QACvB,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QAClE,GAAG;QACH,KAAK,EAAE,cAAc;QACrB,OAAO,EAAE,gBAAgB;QACzB,OAAO,EAAE,eAAe,CAAC,gBAAgB,CAAC;QAC1C,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;QACxB,UAAU;KACX,CAAC;IAEF,gBAAgB;IAChB,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE;QACnB,GAAG;QACH,UAAU;QACV,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY;KACrC,CAAC,CAAC;IAEH,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE;QACpD,GAAG;QACH,KAAK,EAAE,GAAG,CAAC,EAAE;QACb,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,aAAa,EAAE,OAAO,CAAC,MAAM;QAC7B,UAAU,EAAE,QAAQ;QACpB,MAAM,EAAE,gBAAgB;KACzB,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC;AAED,sBAAsB;AACtB,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAc,EACd,UAGI,EAAE;IAEN,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CACrD,CAAC;IAEF,MAAM,UAAU,GAAkB,EAAE,CAAC;IACrC,MAAM,MAAM,GAAqC,EAAE,CAAC;IAEpD,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAChC,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,IAAI,eAAe,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE;gBAC5C,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC;gBAChB,KAAK,EAAE,YAAY;gBACnB,MAAM,EAAE,oBAAoB;aAC7B,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC;gBACV,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC;gBAChB,KAAK,EAAE,YAAY;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAChC,CAAC;AAED,6BAA6B;AAC7B,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAEvC,YAAY,EAAE,CAAC;IACf,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3C,IACE,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC5C,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC9C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EACxD,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,qBAAqB;AACrB,MAAM,UAAU,kBAAkB,CAAC,EAAU;IAC3C,YAAY,EAAE,CAAC;IACf,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3C,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE;YAAE,OAAO,GAAG,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,sBAAsB;AACtB,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,YAAY,EAAE,CAAC;IACf,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3C,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG;YAAE,OAAO,GAAG,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4BAA4B;AAC5B,MAAM,UAAU,mBAAmB;IACjC,YAAY,EAAE,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QACxD,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,IAAI,EAAE,GAAG,CAAC,IAAI;KACf,CAAC,CAAC,CAAC;AACN,CAAC;AAED,cAAc;AACd,MAAM,UAAU,gBAAgB;IAC9B,WAAW,CAAC,KAAK,EAAE,CAAC;AACtB,CAAC;AAED,6BAA6B;AAC7B,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,YAAY,EAAE,CAAC;IACf,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;QACjD,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YAC1D,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACxB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,0CAA0C;AAC1C,MAAM,CAAC,MAAM,YAAY,GAAoD;IAC3E,eAAe,EAAE;QACf,EAAE,IAAI,EAAE,sBAAsB,EAAE,GAAG,EAAE,2CAA2C,EAAE;QAClF,EAAE,IAAI,EAAE,uBAAuB,EAAE,GAAG,EAAE,wCAAwC,EAAE;QAChF,EAAE,IAAI,EAAE,uBAAuB,EAAE,GAAG,EAAE,oEAAoE,EAAE;KAC7G;IACD,YAAY,EAAE;QACZ,EAAE,IAAI,EAAE,qBAAqB,EAAE,GAAG,EAAE,yBAAyB,EAAE;QAC/D,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,mCAAmC,EAAE;QACjE,EAAE,IAAI,EAAE,uBAAuB,EAAE,GAAG,EAAE,qCAAqC,EAAE;QAC7E,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,6CAA6C,EAAE;KACjF;IACD,QAAQ,EAAE;QACR,EAAE,IAAI,EAAE,uBAAuB,EAAE,GAAG,EAAE,yBAAyB,EAAE;QACjE,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,EAAE,6BAA6B,EAAE;QAClE,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,EAAE,4EAA4E,EAAE;KAClH;IACD,YAAY,EAAE;QACZ,EAAE,IAAI,EAAE,qBAAqB,EAAE,GAAG,EAAE,+CAA+C,EAAE;QACrF,EAAE,IAAI,EAAE,sBAAsB,EAAE,GAAG,EAAE,wCAAwC,EAAE;KAChF;CACF,CAAC;AAEF,mCAAmC;AACnC,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAClD,OAAO,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AACzC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Storage Layer - Main Export
3
+ * @version 3.4.0
4
+ */
5
+ export * from './types.js';
6
+ export * from './sqlite.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Storage Layer - Main Export
3
+ * @version 3.4.0
4
+ */
5
+ export * from './types.js';
6
+ export * from './sqlite.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * SQLite Storage Implementation
3
+ * Persistent storage using better-sqlite3
4
+ * @version 3.4.0
5
+ */
6
+ import Database from 'better-sqlite3';
7
+ import type { ConfigStore, RuleStore, CacheStore, StorageManager, StorageOptions, SavedConfig, StoredRule, CacheEntry } from './types.js';
8
+ import type { UserConfiguration, ProjectType } from '../config/types.js';
9
+ export declare class SQLiteConfigStore implements ConfigStore {
10
+ private db;
11
+ constructor(db: Database.Database);
12
+ init(): Promise<void>;
13
+ getActive(): Promise<SavedConfig | null>;
14
+ setActive(config: UserConfiguration): Promise<void>;
15
+ save(name: string, config: UserConfiguration): Promise<SavedConfig>;
16
+ load(id: string): Promise<SavedConfig | null>;
17
+ list(): Promise<SavedConfig[]>;
18
+ delete(id: string): Promise<boolean>;
19
+ export(id: string): Promise<string | null>;
20
+ import(json: string): Promise<SavedConfig>;
21
+ close(): Promise<void>;
22
+ }
23
+ export declare class SQLiteRuleStore implements RuleStore {
24
+ private db;
25
+ constructor(db: Database.Database);
26
+ init(): Promise<void>;
27
+ create(rule: Omit<StoredRule, 'id' | 'createdAt' | 'updatedAt'>): Promise<StoredRule>;
28
+ get(id: string): Promise<StoredRule | null>;
29
+ list(filters?: {
30
+ projectType?: ProjectType;
31
+ category?: string;
32
+ source?: StoredRule['source'];
33
+ enabled?: boolean;
34
+ }): Promise<StoredRule[]>;
35
+ update(id: string, updates: Partial<Omit<StoredRule, 'id' | 'createdAt'>>): Promise<StoredRule | null>;
36
+ delete(id: string): Promise<boolean>;
37
+ setEnabled(id: string, enabled: boolean): Promise<boolean>;
38
+ importBatch(rules: Omit<StoredRule, 'id' | 'createdAt' | 'updatedAt'>[]): Promise<StoredRule[]>;
39
+ private createSync;
40
+ exportAll(filters?: {
41
+ projectType?: ProjectType;
42
+ }): Promise<string>;
43
+ close(): Promise<void>;
44
+ private rowToRule;
45
+ }
46
+ export declare class SQLiteCacheStore implements CacheStore {
47
+ private db;
48
+ private defaultTTL;
49
+ constructor(db: Database.Database, defaultTTL?: number);
50
+ init(): Promise<void>;
51
+ get<T = unknown>(key: string): Promise<CacheEntry<T> | null>;
52
+ set<T = unknown>(key: string, value: T, options?: {
53
+ ttl?: number;
54
+ etag?: string;
55
+ lastModified?: string;
56
+ metadata?: Record<string, unknown>;
57
+ }): Promise<void>;
58
+ has(key: string): Promise<boolean>;
59
+ delete(key: string): Promise<boolean>;
60
+ prune(): Promise<number>;
61
+ clear(): Promise<void>;
62
+ stats(): Promise<{
63
+ totalEntries: number;
64
+ totalSize: number;
65
+ expiredEntries: number;
66
+ }>;
67
+ close(): Promise<void>;
68
+ }
69
+ export declare class SQLiteStorageManager implements StorageManager {
70
+ private db;
71
+ private _config;
72
+ private _rules;
73
+ private _cache;
74
+ private options;
75
+ constructor(options?: StorageOptions);
76
+ get config(): ConfigStore;
77
+ get rules(): RuleStore;
78
+ get cache(): CacheStore;
79
+ init(): Promise<void>;
80
+ close(): Promise<void>;
81
+ migrate(): Promise<void>;
82
+ stats(): Promise<{
83
+ configs: number;
84
+ rules: number;
85
+ cacheEntries: number;
86
+ dbSize: number;
87
+ }>;
88
+ }
89
+ export declare function getStorage(options?: StorageOptions): StorageManager;
90
+ export declare function initStorage(options?: StorageOptions): Promise<StorageManager>;
91
+ export declare function closeStorage(): Promise<void>;
92
+ //# sourceMappingURL=sqlite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/storage/sqlite.ts"],"names":[],"mappings":"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"}