bob-app-assistant 0.0.1

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 (67) hide show
  1. package/README.md +292 -0
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +296 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/database.d.ts +42 -0
  7. package/dist/database.d.ts.map +1 -0
  8. package/dist/database.js +199 -0
  9. package/dist/database.js.map +1 -0
  10. package/dist/postinstall.d.ts +3 -0
  11. package/dist/postinstall.d.ts.map +1 -0
  12. package/dist/postinstall.js +48 -0
  13. package/dist/postinstall.js.map +1 -0
  14. package/dist/routes/aiRoutes.d.ts +3 -0
  15. package/dist/routes/aiRoutes.d.ts.map +1 -0
  16. package/dist/routes/aiRoutes.js +1277 -0
  17. package/dist/routes/aiRoutes.js.map +1 -0
  18. package/dist/server.d.ts +3 -0
  19. package/dist/server.d.ts.map +1 -0
  20. package/dist/server.js +120 -0
  21. package/dist/server.js.map +1 -0
  22. package/dist/services/apiTestingService.d.ts +90 -0
  23. package/dist/services/apiTestingService.d.ts.map +1 -0
  24. package/dist/services/apiTestingService.js +351 -0
  25. package/dist/services/apiTestingService.js.map +1 -0
  26. package/dist/services/backupService.d.ts +63 -0
  27. package/dist/services/backupService.d.ts.map +1 -0
  28. package/dist/services/backupService.js +235 -0
  29. package/dist/services/backupService.js.map +1 -0
  30. package/dist/services/bobShellService.d.ts +91 -0
  31. package/dist/services/bobShellService.d.ts.map +1 -0
  32. package/dist/services/bobShellService.js +534 -0
  33. package/dist/services/bobShellService.js.map +1 -0
  34. package/dist/services/codeQualityService.d.ts +105 -0
  35. package/dist/services/codeQualityService.d.ts.map +1 -0
  36. package/dist/services/codeQualityService.js +432 -0
  37. package/dist/services/codeQualityService.js.map +1 -0
  38. package/dist/services/dependencyService.d.ts +127 -0
  39. package/dist/services/dependencyService.d.ts.map +1 -0
  40. package/dist/services/dependencyService.js +499 -0
  41. package/dist/services/dependencyService.js.map +1 -0
  42. package/dist/services/diffService.d.ts +48 -0
  43. package/dist/services/diffService.d.ts.map +1 -0
  44. package/dist/services/diffService.js +175 -0
  45. package/dist/services/diffService.js.map +1 -0
  46. package/dist/services/documentationService.d.ts +124 -0
  47. package/dist/services/documentationService.d.ts.map +1 -0
  48. package/dist/services/documentationService.js +628 -0
  49. package/dist/services/documentationService.js.map +1 -0
  50. package/dist/services/promptEnhancerService.d.ts +92 -0
  51. package/dist/services/promptEnhancerService.d.ts.map +1 -0
  52. package/dist/services/promptEnhancerService.js +459 -0
  53. package/dist/services/promptEnhancerService.js.map +1 -0
  54. package/dist/services/securityService.d.ts +99 -0
  55. package/dist/services/securityService.d.ts.map +1 -0
  56. package/dist/services/securityService.js +467 -0
  57. package/dist/services/securityService.js.map +1 -0
  58. package/dist/websocket.d.ts +17 -0
  59. package/dist/websocket.d.ts.map +1 -0
  60. package/dist/websocket.js +242 -0
  61. package/dist/websocket.js.map +1 -0
  62. package/package.json +74 -0
  63. package/public/assistant-ui.html +211 -0
  64. package/public/dist/assets/index-BdGvFYpE.css +1 -0
  65. package/public/dist/assets/index-Dfe7xGmm.js +55 -0
  66. package/public/dist/index.html +13 -0
  67. package/public/inject.js +241 -0
@@ -0,0 +1,499 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const child_process_1 = require("child_process");
37
+ const util_1 = require("util");
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
41
+ const readFile = (0, util_1.promisify)(fs.readFile);
42
+ class DependencyService {
43
+ constructor(projectRoot) {
44
+ // Restrictive licenses that may cause issues
45
+ this.restrictiveLicenses = [
46
+ 'GPL-3.0',
47
+ 'GPL-2.0',
48
+ 'AGPL-3.0',
49
+ 'LGPL-3.0',
50
+ 'LGPL-2.1',
51
+ 'CC-BY-NC',
52
+ 'CC-BY-NC-SA',
53
+ ];
54
+ // Permissive licenses that are generally safe
55
+ this.permissiveLicenses = [
56
+ 'MIT',
57
+ 'Apache-2.0',
58
+ 'BSD-2-Clause',
59
+ 'BSD-3-Clause',
60
+ 'ISC',
61
+ 'CC0-1.0',
62
+ 'Unlicense',
63
+ ];
64
+ this.projectRoot = projectRoot;
65
+ }
66
+ static getInstance(projectRoot) {
67
+ if (!DependencyService.instance) {
68
+ DependencyService.instance = new DependencyService(projectRoot);
69
+ }
70
+ return DependencyService.instance;
71
+ }
72
+ /**
73
+ * Audit project dependencies
74
+ */
75
+ async auditDependencies() {
76
+ const [vulnerabilities, outdated, licenses, unused, duplicates] = await Promise.all([
77
+ this.checkVulnerabilities(),
78
+ this.checkOutdated(),
79
+ this.checkLicenses(),
80
+ this.findUnusedDependencies(),
81
+ this.findDuplicates(),
82
+ ]);
83
+ const riskScore = this.calculateRiskScore(vulnerabilities, outdated, licenses);
84
+ const summary = this.generateSummary(riskScore, vulnerabilities, outdated);
85
+ const recommendations = this.generateRecommendations(vulnerabilities, outdated, licenses, unused);
86
+ return {
87
+ vulnerabilities,
88
+ outdated,
89
+ licenses,
90
+ unused,
91
+ duplicates,
92
+ riskScore,
93
+ summary,
94
+ recommendations,
95
+ timestamp: new Date().toISOString(),
96
+ };
97
+ }
98
+ /**
99
+ * Check for vulnerabilities using npm audit
100
+ */
101
+ async checkVulnerabilities() {
102
+ try {
103
+ const { stdout } = await execAsync('npm audit --json', {
104
+ cwd: this.projectRoot,
105
+ maxBuffer: 10 * 1024 * 1024, // 10MB buffer
106
+ });
107
+ const auditData = JSON.parse(stdout);
108
+ const vulnerabilities = [];
109
+ // Parse npm audit v7+ format
110
+ if (auditData.vulnerabilities) {
111
+ for (const [name, vuln] of Object.entries(auditData.vulnerabilities)) {
112
+ const v = vuln;
113
+ vulnerabilities.push({
114
+ name,
115
+ severity: v.severity,
116
+ title: v.via?.[0]?.title || 'Vulnerability detected',
117
+ description: v.via?.[0]?.description || '',
118
+ version: v.range || 'unknown',
119
+ fixedIn: v.fixAvailable?.version,
120
+ cve: v.via?.filter((item) => item.cve).map((item) => item.cve),
121
+ url: v.via?.[0]?.url,
122
+ });
123
+ }
124
+ }
125
+ const metadata = auditData.metadata || {};
126
+ return {
127
+ total: metadata.vulnerabilities?.total || vulnerabilities.length,
128
+ critical: metadata.vulnerabilities?.critical || 0,
129
+ high: metadata.vulnerabilities?.high || 0,
130
+ moderate: metadata.vulnerabilities?.moderate || 0,
131
+ low: metadata.vulnerabilities?.low || 0,
132
+ list: vulnerabilities,
133
+ };
134
+ }
135
+ catch (error) {
136
+ // npm audit returns non-zero exit code when vulnerabilities found
137
+ if (error.stdout) {
138
+ try {
139
+ const auditData = JSON.parse(error.stdout);
140
+ const vulnerabilities = [];
141
+ if (auditData.vulnerabilities) {
142
+ for (const [name, vuln] of Object.entries(auditData.vulnerabilities)) {
143
+ const v = vuln;
144
+ vulnerabilities.push({
145
+ name,
146
+ severity: v.severity,
147
+ title: v.via?.[0]?.title || 'Vulnerability detected',
148
+ description: v.via?.[0]?.description || '',
149
+ version: v.range || 'unknown',
150
+ fixedIn: v.fixAvailable?.version,
151
+ cve: v.via?.filter((item) => item.cve).map((item) => item.cve),
152
+ url: v.via?.[0]?.url,
153
+ });
154
+ }
155
+ }
156
+ const metadata = auditData.metadata || {};
157
+ return {
158
+ total: metadata.vulnerabilities?.total || vulnerabilities.length,
159
+ critical: metadata.vulnerabilities?.critical || 0,
160
+ high: metadata.vulnerabilities?.high || 0,
161
+ moderate: metadata.vulnerabilities?.moderate || 0,
162
+ low: metadata.vulnerabilities?.low || 0,
163
+ list: vulnerabilities,
164
+ };
165
+ }
166
+ catch {
167
+ // If parsing fails, return empty result
168
+ }
169
+ }
170
+ return {
171
+ total: 0,
172
+ critical: 0,
173
+ high: 0,
174
+ moderate: 0,
175
+ low: 0,
176
+ list: [],
177
+ };
178
+ }
179
+ }
180
+ /**
181
+ * Check for outdated packages
182
+ */
183
+ async checkOutdated() {
184
+ try {
185
+ const { stdout } = await execAsync('npm outdated --json', {
186
+ cwd: this.projectRoot,
187
+ maxBuffer: 10 * 1024 * 1024,
188
+ });
189
+ const outdatedData = JSON.parse(stdout);
190
+ const outdated = [];
191
+ for (const [name, info] of Object.entries(outdatedData)) {
192
+ const i = info;
193
+ const breaking = this.isBreakingChange(i.current, i.latest);
194
+ outdated.push({
195
+ name,
196
+ current: i.current,
197
+ wanted: i.wanted,
198
+ latest: i.latest,
199
+ type: i.type || 'dependencies',
200
+ breaking,
201
+ });
202
+ }
203
+ return {
204
+ total: outdated.length,
205
+ breaking: outdated.filter(p => p.breaking).length,
206
+ list: outdated,
207
+ };
208
+ }
209
+ catch (error) {
210
+ // npm outdated returns non-zero when packages are outdated
211
+ if (error.stdout) {
212
+ try {
213
+ const outdatedData = JSON.parse(error.stdout);
214
+ const outdated = [];
215
+ for (const [name, info] of Object.entries(outdatedData)) {
216
+ const i = info;
217
+ const breaking = this.isBreakingChange(i.current, i.latest);
218
+ outdated.push({
219
+ name,
220
+ current: i.current,
221
+ wanted: i.wanted,
222
+ latest: i.latest,
223
+ type: i.type || 'dependencies',
224
+ breaking,
225
+ });
226
+ }
227
+ return {
228
+ total: outdated.length,
229
+ breaking: outdated.filter(p => p.breaking).length,
230
+ list: outdated,
231
+ };
232
+ }
233
+ catch {
234
+ // If parsing fails, return empty result
235
+ }
236
+ }
237
+ return {
238
+ total: 0,
239
+ breaking: 0,
240
+ list: [],
241
+ };
242
+ }
243
+ }
244
+ /**
245
+ * Check package licenses
246
+ */
247
+ async checkLicenses() {
248
+ try {
249
+ const packageJsonPath = path.join(this.projectRoot, 'package.json');
250
+ const packageJson = JSON.parse(await readFile(packageJsonPath, 'utf-8'));
251
+ const allDeps = {
252
+ ...packageJson.dependencies,
253
+ ...packageJson.devDependencies,
254
+ };
255
+ const licenses = [];
256
+ let incompatible = 0;
257
+ for (const [name, version] of Object.entries(allDeps)) {
258
+ try {
259
+ const depPackageJsonPath = path.join(this.projectRoot, 'node_modules', name, 'package.json');
260
+ const depPackageJson = JSON.parse(await readFile(depPackageJsonPath, 'utf-8'));
261
+ const license = depPackageJson.license || 'UNKNOWN';
262
+ const compatible = this.isLicenseCompatible(license);
263
+ const risk = this.getLicenseRisk(license);
264
+ if (!compatible)
265
+ incompatible++;
266
+ licenses.push({
267
+ name,
268
+ version: depPackageJson.version,
269
+ license,
270
+ repository: depPackageJson.repository?.url,
271
+ compatible,
272
+ risk,
273
+ });
274
+ }
275
+ catch {
276
+ // Skip if package.json not found
277
+ }
278
+ }
279
+ return {
280
+ total: licenses.length,
281
+ incompatible,
282
+ list: licenses,
283
+ };
284
+ }
285
+ catch (error) {
286
+ return {
287
+ total: 0,
288
+ incompatible: 0,
289
+ list: [],
290
+ };
291
+ }
292
+ }
293
+ /**
294
+ * Find unused dependencies
295
+ */
296
+ async findUnusedDependencies() {
297
+ try {
298
+ // This is a simplified check - in production, use tools like depcheck
299
+ const packageJsonPath = path.join(this.projectRoot, 'package.json');
300
+ const packageJson = JSON.parse(await readFile(packageJsonPath, 'utf-8'));
301
+ const dependencies = Object.keys(packageJson.dependencies || {});
302
+ const unused = [];
303
+ // Check if dependency is imported anywhere in the codebase
304
+ for (const dep of dependencies) {
305
+ const { stdout } = await execAsync(`grep -r "from '${dep}'" --include="*.ts" --include="*.js" --include="*.tsx" --include="*.jsx" . || true`, { cwd: this.projectRoot });
306
+ if (!stdout.trim()) {
307
+ unused.push(dep);
308
+ }
309
+ }
310
+ return unused;
311
+ }
312
+ catch (error) {
313
+ return [];
314
+ }
315
+ }
316
+ /**
317
+ * Find duplicate dependencies
318
+ */
319
+ async findDuplicates() {
320
+ try {
321
+ const { stdout } = await execAsync('npm ls --json --all', {
322
+ cwd: this.projectRoot,
323
+ maxBuffer: 10 * 1024 * 1024,
324
+ });
325
+ const tree = JSON.parse(stdout);
326
+ const versions = new Map();
327
+ const traverse = (node) => {
328
+ if (node.dependencies) {
329
+ for (const [name, info] of Object.entries(node.dependencies)) {
330
+ const i = info;
331
+ if (!versions.has(name)) {
332
+ versions.set(name, new Set());
333
+ }
334
+ versions.get(name).add(i.version);
335
+ traverse(i);
336
+ }
337
+ }
338
+ };
339
+ traverse(tree);
340
+ const duplicates = [];
341
+ for (const [name, versionSet] of versions.entries()) {
342
+ if (versionSet.size > 1) {
343
+ duplicates.push({
344
+ name,
345
+ versions: Array.from(versionSet),
346
+ });
347
+ }
348
+ }
349
+ return duplicates;
350
+ }
351
+ catch (error) {
352
+ return [];
353
+ }
354
+ }
355
+ /**
356
+ * Update a specific dependency
357
+ */
358
+ async updateDependency(name, version) {
359
+ try {
360
+ const versionSpec = version || 'latest';
361
+ await execAsync(`npm install ${name}@${versionSpec}`, {
362
+ cwd: this.projectRoot,
363
+ });
364
+ // Get the installed version
365
+ const packageJsonPath = path.join(this.projectRoot, 'node_modules', name, 'package.json');
366
+ const packageJson = JSON.parse(await readFile(packageJsonPath, 'utf-8'));
367
+ return {
368
+ success: true,
369
+ newVersion: packageJson.version,
370
+ };
371
+ }
372
+ catch (error) {
373
+ throw new Error(`Failed to update ${name}: ${error.message}`);
374
+ }
375
+ }
376
+ /**
377
+ * Fix vulnerabilities automatically
378
+ */
379
+ async fixVulnerabilities() {
380
+ try {
381
+ const { stdout } = await execAsync('npm audit fix --json', {
382
+ cwd: this.projectRoot,
383
+ maxBuffer: 10 * 1024 * 1024,
384
+ });
385
+ const result = JSON.parse(stdout);
386
+ const fixed = result.metadata?.fixed || 0;
387
+ const remaining = result.metadata?.vulnerabilities?.total || 0;
388
+ return { fixed, remaining };
389
+ }
390
+ catch (error) {
391
+ if (error.stdout) {
392
+ try {
393
+ const result = JSON.parse(error.stdout);
394
+ const fixed = result.metadata?.fixed || 0;
395
+ const remaining = result.metadata?.vulnerabilities?.total || 0;
396
+ return { fixed, remaining };
397
+ }
398
+ catch {
399
+ throw new Error('Failed to fix vulnerabilities');
400
+ }
401
+ }
402
+ throw new Error('Failed to fix vulnerabilities');
403
+ }
404
+ }
405
+ /**
406
+ * Helper: Check if version change is breaking
407
+ */
408
+ isBreakingChange(current, latest) {
409
+ const currentMajor = parseInt(current.split('.')[0]);
410
+ const latestMajor = parseInt(latest.split('.')[0]);
411
+ return latestMajor > currentMajor;
412
+ }
413
+ /**
414
+ * Helper: Check if license is compatible
415
+ */
416
+ isLicenseCompatible(license) {
417
+ return !this.restrictiveLicenses.some(l => license.includes(l));
418
+ }
419
+ /**
420
+ * Helper: Get license risk level
421
+ */
422
+ getLicenseRisk(license) {
423
+ if (this.permissiveLicenses.some(l => license.includes(l))) {
424
+ return 'low';
425
+ }
426
+ if (this.restrictiveLicenses.some(l => license.includes(l))) {
427
+ return 'high';
428
+ }
429
+ return 'medium';
430
+ }
431
+ /**
432
+ * Calculate overall risk score
433
+ */
434
+ calculateRiskScore(vulnerabilities, outdated, licenses) {
435
+ let score = 100;
436
+ // Deduct for vulnerabilities
437
+ score -= vulnerabilities.critical * 20;
438
+ score -= vulnerabilities.high * 10;
439
+ score -= vulnerabilities.moderate * 5;
440
+ score -= vulnerabilities.low * 2;
441
+ // Deduct for outdated packages
442
+ score -= outdated.breaking * 5;
443
+ score -= (outdated.total - outdated.breaking) * 2;
444
+ // Deduct for license issues
445
+ score -= licenses.incompatible * 10;
446
+ return Math.max(0, score);
447
+ }
448
+ /**
449
+ * Generate summary
450
+ */
451
+ generateSummary(riskScore, vulnerabilities, outdated) {
452
+ if (riskScore >= 90) {
453
+ return 'Excellent dependency health. All packages are secure and up-to-date.';
454
+ }
455
+ else if (riskScore >= 70) {
456
+ return 'Good dependency health. Minor updates recommended.';
457
+ }
458
+ else if (riskScore >= 50) {
459
+ return 'Fair dependency health. Several packages need attention.';
460
+ }
461
+ else if (riskScore >= 30) {
462
+ return 'Poor dependency health. Multiple vulnerabilities detected.';
463
+ }
464
+ else {
465
+ return 'Critical dependency issues. Immediate action required.';
466
+ }
467
+ }
468
+ /**
469
+ * Generate recommendations
470
+ */
471
+ generateRecommendations(vulnerabilities, outdated, licenses, unused) {
472
+ const recommendations = [];
473
+ if (vulnerabilities.critical > 0) {
474
+ recommendations.push(`Fix ${vulnerabilities.critical} critical vulnerabilities immediately`);
475
+ }
476
+ if (vulnerabilities.high > 0) {
477
+ recommendations.push(`Address ${vulnerabilities.high} high-severity vulnerabilities`);
478
+ }
479
+ if (outdated.breaking > 0) {
480
+ recommendations.push(`Review ${outdated.breaking} packages with breaking changes before updating`);
481
+ }
482
+ if (outdated.total > 5) {
483
+ recommendations.push('Update outdated packages to latest versions');
484
+ }
485
+ if (licenses.incompatible > 0) {
486
+ recommendations.push(`Review ${licenses.incompatible} packages with incompatible licenses`);
487
+ }
488
+ if (unused.length > 0) {
489
+ recommendations.push(`Remove ${unused.length} unused dependencies`);
490
+ }
491
+ if (recommendations.length === 0) {
492
+ recommendations.push('All dependencies are healthy and up-to-date');
493
+ }
494
+ return recommendations;
495
+ }
496
+ }
497
+ exports.default = DependencyService;
498
+ // Made with Bob
499
+ //# sourceMappingURL=dependencyService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependencyService.js","sourceRoot":"","sources":["../../src/services/dependencyService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAqC;AACrC,+BAAiC;AACjC,uCAAyB;AACzB,2CAA6B;AAE7B,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AAClC,MAAM,QAAQ,GAAG,IAAA,gBAAS,EAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AA0DxC,MAAM,iBAAiB;IA0BrB,YAAoB,WAAmB;QAtBvC,6CAA6C;QACrC,wBAAmB,GAAG;YAC5B,SAAS;YACT,SAAS;YACT,UAAU;YACV,UAAU;YACV,UAAU;YACV,UAAU;YACV,aAAa;SACd,CAAC;QAEF,8CAA8C;QACtC,uBAAkB,GAAG;YAC3B,KAAK;YACL,YAAY;YACZ,cAAc;YACd,cAAc;YACd,KAAK;YACL,SAAS;YACT,WAAW;SACZ,CAAC;QAGA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,WAAmB;QAC3C,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;YAChC,iBAAiB,CAAC,QAAQ,GAAG,IAAI,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,iBAAiB,CAAC,QAAQ,CAAC;IACpC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,iBAAiB;QAC5B,MAAM,CAAC,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAClF,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,sBAAsB,EAAE;YAC7B,IAAI,CAAC,cAAc,EAAE;SACtB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC/E,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;QAC3E,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAElG,OAAO;YACL,eAAe;YACf,QAAQ;YACR,QAAQ;YACR,MAAM;YACN,UAAU;YACV,SAAS;YACT,OAAO;YACP,eAAe;YACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB;QAChC,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,kBAAkB,EAAE;gBACrD,GAAG,EAAE,IAAI,CAAC,WAAW;gBACrB,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,cAAc;aAC5C,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,eAAe,GAAoB,EAAE,CAAC;YAE5C,6BAA6B;YAC7B,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;gBAC9B,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,eAAsB,CAAC,EAAE,CAAC;oBAC5E,MAAM,CAAC,GAAG,IAAW,CAAC;oBACtB,eAAe,CAAC,IAAI,CAAC;wBACnB,IAAI;wBACJ,QAAQ,EAAE,CAAC,CAAC,QAAQ;wBACpB,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,wBAAwB;wBACpD,WAAW,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,EAAE;wBAC1C,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS;wBAC7B,OAAO,EAAE,CAAC,CAAC,YAAY,EAAE,OAAO;wBAChC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;wBACxE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG;qBACrB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC;YAC1C,OAAO;gBACL,KAAK,EAAE,QAAQ,CAAC,eAAe,EAAE,KAAK,IAAI,eAAe,CAAC,MAAM;gBAChE,QAAQ,EAAE,QAAQ,CAAC,eAAe,EAAE,QAAQ,IAAI,CAAC;gBACjD,IAAI,EAAE,QAAQ,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC;gBACzC,QAAQ,EAAE,QAAQ,CAAC,eAAe,EAAE,QAAQ,IAAI,CAAC;gBACjD,GAAG,EAAE,QAAQ,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC;gBACvC,IAAI,EAAE,eAAe;aACtB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,kEAAkE;YAClE,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC3C,MAAM,eAAe,GAAoB,EAAE,CAAC;oBAE5C,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;wBAC9B,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,eAAsB,CAAC,EAAE,CAAC;4BAC5E,MAAM,CAAC,GAAG,IAAW,CAAC;4BACtB,eAAe,CAAC,IAAI,CAAC;gCACnB,IAAI;gCACJ,QAAQ,EAAE,CAAC,CAAC,QAAQ;gCACpB,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,wBAAwB;gCACpD,WAAW,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,EAAE;gCAC1C,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS;gCAC7B,OAAO,EAAE,CAAC,CAAC,YAAY,EAAE,OAAO;gCAChC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;gCACxE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG;6BACrB,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;oBAED,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC;oBAC1C,OAAO;wBACL,KAAK,EAAE,QAAQ,CAAC,eAAe,EAAE,KAAK,IAAI,eAAe,CAAC,MAAM;wBAChE,QAAQ,EAAE,QAAQ,CAAC,eAAe,EAAE,QAAQ,IAAI,CAAC;wBACjD,IAAI,EAAE,QAAQ,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC;wBACzC,QAAQ,EAAE,QAAQ,CAAC,eAAe,EAAE,QAAQ,IAAI,CAAC;wBACjD,GAAG,EAAE,QAAQ,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC;wBACvC,IAAI,EAAE,eAAe;qBACtB,CAAC;gBACJ,CAAC;gBAAC,MAAM,CAAC;oBACP,wCAAwC;gBAC1C,CAAC;YACH,CAAC;YAED,OAAO;gBACL,KAAK,EAAE,CAAC;gBACR,QAAQ,EAAE,CAAC;gBACX,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,CAAC;gBACX,GAAG,EAAE,CAAC;gBACN,IAAI,EAAE,EAAE;aACT,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,qBAAqB,EAAE;gBACxD,GAAG,EAAE,IAAI,CAAC,WAAW;gBACrB,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;aAC5B,CAAC,CAAC;YAEH,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAsB,EAAE,CAAC;YAEvC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAmB,CAAC,EAAE,CAAC;gBAC/D,MAAM,CAAC,GAAG,IAAW,CAAC;gBACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC5D,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI;oBACJ,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,cAAc;oBAC9B,QAAQ;iBACT,CAAC,CAAC;YACL,CAAC;YAED,OAAO;gBACL,KAAK,EAAE,QAAQ,CAAC,MAAM;gBACtB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM;gBACjD,IAAI,EAAE,QAAQ;aACf,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,2DAA2D;YAC3D,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,IAAI,CAAC;oBACH,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC9C,MAAM,QAAQ,GAAsB,EAAE,CAAC;oBAEvC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAmB,CAAC,EAAE,CAAC;wBAC/D,MAAM,CAAC,GAAG,IAAW,CAAC;wBACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;wBAC5D,QAAQ,CAAC,IAAI,CAAC;4BACZ,IAAI;4BACJ,OAAO,EAAE,CAAC,CAAC,OAAO;4BAClB,MAAM,EAAE,CAAC,CAAC,MAAM;4BAChB,MAAM,EAAE,CAAC,CAAC,MAAM;4BAChB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,cAAc;4BAC9B,QAAQ;yBACT,CAAC,CAAC;oBACL,CAAC;oBAED,OAAO;wBACL,KAAK,EAAE,QAAQ,CAAC,MAAM;wBACtB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM;wBACjD,IAAI,EAAE,QAAQ;qBACf,CAAC;gBACJ,CAAC;gBAAC,MAAM,CAAC;oBACP,wCAAwC;gBAC1C,CAAC;YACH,CAAC;YAED,OAAO;gBACL,KAAK,EAAE,CAAC;gBACR,QAAQ,EAAE,CAAC;gBACX,IAAI,EAAE,EAAE;aACT,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;YACpE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;YAEzE,MAAM,OAAO,GAAG;gBACd,GAAG,WAAW,CAAC,YAAY;gBAC3B,GAAG,WAAW,CAAC,eAAe;aAC/B,CAAC;YAEF,MAAM,QAAQ,GAAc,EAAE,CAAC;YAC/B,IAAI,YAAY,GAAG,CAAC,CAAC;YAErB,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtD,IAAI,CAAC;oBACH,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAClC,IAAI,CAAC,WAAW,EAChB,cAAc,EACd,IAAI,EACJ,cAAc,CACf,CAAC;oBACF,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC;oBAE/E,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,IAAI,SAAS,CAAC;oBACpD,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;oBACrD,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;oBAE1C,IAAI,CAAC,UAAU;wBAAE,YAAY,EAAE,CAAC;oBAEhC,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI;wBACJ,OAAO,EAAE,cAAc,CAAC,OAAO;wBAC/B,OAAO;wBACP,UAAU,EAAE,cAAc,CAAC,UAAU,EAAE,GAAG;wBAC1C,UAAU;wBACV,IAAI;qBACL,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,iCAAiC;gBACnC,CAAC;YACH,CAAC;YAED,OAAO;gBACL,KAAK,EAAE,QAAQ,CAAC,MAAM;gBACtB,YAAY;gBACZ,IAAI,EAAE,QAAQ;aACf,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,KAAK,EAAE,CAAC;gBACR,YAAY,EAAE,CAAC;gBACf,IAAI,EAAE,EAAE;aACT,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,sBAAsB;QAClC,IAAI,CAAC;YACH,sEAAsE;YACtE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;YACpE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;YAEzE,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;YACjE,MAAM,MAAM,GAAa,EAAE,CAAC;YAE5B,2DAA2D;YAC3D,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;gBAC/B,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAChC,kBAAkB,GAAG,oFAAoF,EACzG,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,CAC1B,CAAC;gBAEF,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;oBACnB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc;QAC1B,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,qBAAqB,EAAE;gBACxD,GAAG,EAAE,IAAI,CAAC,WAAW;gBACrB,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;aAC5B,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAChC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAuB,CAAC;YAEhD,MAAM,QAAQ,GAAG,CAAC,IAAS,EAAE,EAAE;gBAC7B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACtB,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAmB,CAAC,EAAE,CAAC;wBACpE,MAAM,CAAC,GAAG,IAAW,CAAC;wBACtB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;4BACxB,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;wBAChC,CAAC;wBACD,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;wBAEnC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACd,CAAC;gBACH,CAAC;YACH,CAAC,CAAC;YAEF,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEf,MAAM,UAAU,GAAgD,EAAE,CAAC;YACnE,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;gBACpD,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;oBACxB,UAAU,CAAC,IAAI,CAAC;wBACd,IAAI;wBACJ,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;qBACjC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gBAAgB,CAAC,IAAY,EAAE,OAAgB;QAC1D,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,OAAO,IAAI,QAAQ,CAAC;YACxC,MAAM,SAAS,CAAC,eAAe,IAAI,IAAI,WAAW,EAAE,EAAE;gBACpD,GAAG,EAAE,IAAI,CAAC,WAAW;aACtB,CAAC,CAAC;YAEH,4BAA4B;YAC5B,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;YAC1F,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;YAEzE,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,WAAW,CAAC,OAAO;aAChC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,kBAAkB;QAC7B,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,sBAAsB,EAAE;gBACzD,GAAG,EAAE,IAAI,CAAC,WAAW;gBACrB,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;aAC5B,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,CAAC;YAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC,CAAC;YAE/D,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACxC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,CAAC;oBAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC,CAAC;oBAC/D,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;gBAC9B,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,OAAe,EAAE,MAAc;QACtD,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,OAAO,WAAW,GAAG,YAAY,CAAC;IACpC,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,OAAe;QACzC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,OAAe;QACpC,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,kBAAkB,CACxB,eAAoD,EACpD,QAAsC,EACtC,QAAsC;QAEtC,IAAI,KAAK,GAAG,GAAG,CAAC;QAEhB,6BAA6B;QAC7B,KAAK,IAAI,eAAe,CAAC,QAAQ,GAAG,EAAE,CAAC;QACvC,KAAK,IAAI,eAAe,CAAC,IAAI,GAAG,EAAE,CAAC;QACnC,KAAK,IAAI,eAAe,CAAC,QAAQ,GAAG,CAAC,CAAC;QACtC,KAAK,IAAI,eAAe,CAAC,GAAG,GAAG,CAAC,CAAC;QAEjC,+BAA+B;QAC/B,KAAK,IAAI,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC/B,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAElD,4BAA4B;QAC5B,KAAK,IAAI,QAAQ,CAAC,YAAY,GAAG,EAAE,CAAC;QAEpC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,eAAe,CACrB,SAAiB,EACjB,eAAoD,EACpD,QAAsC;QAEtC,IAAI,SAAS,IAAI,EAAE,EAAE,CAAC;YACpB,OAAO,sEAAsE,CAAC;QAChF,CAAC;aAAM,IAAI,SAAS,IAAI,EAAE,EAAE,CAAC;YAC3B,OAAO,oDAAoD,CAAC;QAC9D,CAAC;aAAM,IAAI,SAAS,IAAI,EAAE,EAAE,CAAC;YAC3B,OAAO,0DAA0D,CAAC;QACpE,CAAC;aAAM,IAAI,SAAS,IAAI,EAAE,EAAE,CAAC;YAC3B,OAAO,4DAA4D,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,OAAO,wDAAwD,CAAC;QAClE,CAAC;IACH,CAAC;IAED;;OAEG;IACK,uBAAuB,CAC7B,eAAoD,EACpD,QAAsC,EACtC,QAAsC,EACtC,MAAgB;QAEhB,MAAM,eAAe,GAAa,EAAE,CAAC;QAErC,IAAI,eAAe,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjC,eAAe,CAAC,IAAI,CAAC,OAAO,eAAe,CAAC,QAAQ,uCAAuC,CAAC,CAAC;QAC/F,CAAC;QAED,IAAI,eAAe,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC7B,eAAe,CAAC,IAAI,CAAC,WAAW,eAAe,CAAC,IAAI,gCAAgC,CAAC,CAAC;QACxF,CAAC;QAED,IAAI,QAAQ,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YAC1B,eAAe,CAAC,IAAI,CAAC,UAAU,QAAQ,CAAC,QAAQ,iDAAiD,CAAC,CAAC;QACrG,CAAC;QAED,IAAI,QAAQ,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACvB,eAAe,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,QAAQ,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;YAC9B,eAAe,CAAC,IAAI,CAAC,UAAU,QAAQ,CAAC,YAAY,sCAAsC,CAAC,CAAC;QAC9F,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,eAAe,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,MAAM,sBAAsB,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,eAAe,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,eAAe,CAAC;IACzB,CAAC;CACF;AAED,kBAAe,iBAAiB,CAAC;AAEjC,gBAAgB"}
@@ -0,0 +1,48 @@
1
+ export interface FileDiff {
2
+ path: string;
3
+ oldContent: string;
4
+ newContent: string;
5
+ diff: DiffChange[];
6
+ stats: DiffStats;
7
+ }
8
+ export interface DiffChange {
9
+ type: 'add' | 'remove' | 'unchanged';
10
+ value: string;
11
+ lineNumber?: number;
12
+ }
13
+ export interface DiffStats {
14
+ additions: number;
15
+ deletions: number;
16
+ changes: number;
17
+ }
18
+ export declare class DiffService {
19
+ /**
20
+ * Generate diff between old and new content
21
+ */
22
+ generateDiff(oldContent: string, newContent: string): DiffChange[];
23
+ /**
24
+ * Calculate diff statistics
25
+ */
26
+ calculateStats(diffChanges: DiffChange[]): DiffStats;
27
+ /**
28
+ * Generate file diff
29
+ */
30
+ generateFileDiff(filePath: string, newContent: string, projectRoot: string): Promise<FileDiff>;
31
+ /**
32
+ * Generate diffs for multiple files
33
+ */
34
+ generateMultipleFileDiffs(files: Array<{
35
+ path: string;
36
+ content: string;
37
+ }>, projectRoot: string): Promise<FileDiff[]>;
38
+ /**
39
+ * Format diff for display (unified diff format)
40
+ */
41
+ formatUnifiedDiff(fileDiff: FileDiff): string;
42
+ /**
43
+ * Apply diff to file
44
+ */
45
+ applyDiff(fileDiff: FileDiff, projectRoot: string): Promise<void>;
46
+ }
47
+ export declare const diffService: DiffService;
48
+ //# sourceMappingURL=diffService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diffService.d.ts","sourceRoot":"","sources":["../../src/services/diffService.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,WAAW,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,WAAW;IACtB;;OAEG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,UAAU,EAAE;IAuClE;;OAEG;IACH,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,SAAS;IAoBpD;;OAEG;IACG,gBAAgB,CACpB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC;IAuBpB;;OAEG;IACG,yBAAyB,CAC7B,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,EAC/C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,EAAE,CAAC;IAWtB;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;IAoB7C;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAYxE;AAGD,eAAO,MAAM,WAAW,aAAoB,CAAC"}