@probelabs/visor 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 (116) hide show
  1. package/README.md +1240 -0
  2. package/action.yml +142 -0
  3. package/defaults/.visor.yaml +184 -0
  4. package/dist/action-cli-bridge.d.ts +104 -0
  5. package/dist/action-cli-bridge.d.ts.map +1 -0
  6. package/dist/action-cli-bridge.js +372 -0
  7. package/dist/action-cli-bridge.js.map +1 -0
  8. package/dist/ai-review-service.d.ts +84 -0
  9. package/dist/ai-review-service.d.ts.map +1 -0
  10. package/dist/ai-review-service.js +674 -0
  11. package/dist/ai-review-service.js.map +1 -0
  12. package/dist/check-execution-engine.d.ts +165 -0
  13. package/dist/check-execution-engine.d.ts.map +1 -0
  14. package/dist/check-execution-engine.js +1172 -0
  15. package/dist/check-execution-engine.js.map +1 -0
  16. package/dist/cli-main.d.ts +6 -0
  17. package/dist/cli-main.d.ts.map +1 -0
  18. package/dist/cli-main.js +247 -0
  19. package/dist/cli-main.js.map +1 -0
  20. package/dist/cli.d.ts +47 -0
  21. package/dist/cli.d.ts.map +1 -0
  22. package/dist/cli.js +224 -0
  23. package/dist/cli.js.map +1 -0
  24. package/dist/commands.d.ts +10 -0
  25. package/dist/commands.d.ts.map +1 -0
  26. package/dist/commands.js +53 -0
  27. package/dist/commands.js.map +1 -0
  28. package/dist/config.d.ts +63 -0
  29. package/dist/config.d.ts.map +1 -0
  30. package/dist/config.js +369 -0
  31. package/dist/config.js.map +1 -0
  32. package/dist/dependency-resolver.d.ts +54 -0
  33. package/dist/dependency-resolver.d.ts.map +1 -0
  34. package/dist/dependency-resolver.js +163 -0
  35. package/dist/dependency-resolver.js.map +1 -0
  36. package/dist/event-mapper.d.ts +125 -0
  37. package/dist/event-mapper.d.ts.map +1 -0
  38. package/dist/event-mapper.js +311 -0
  39. package/dist/event-mapper.js.map +1 -0
  40. package/dist/failure-condition-evaluator.d.ts +81 -0
  41. package/dist/failure-condition-evaluator.d.ts.map +1 -0
  42. package/dist/failure-condition-evaluator.js +445 -0
  43. package/dist/failure-condition-evaluator.js.map +1 -0
  44. package/dist/git-repository-analyzer.d.ts +45 -0
  45. package/dist/git-repository-analyzer.d.ts.map +1 -0
  46. package/dist/git-repository-analyzer.js +285 -0
  47. package/dist/git-repository-analyzer.js.map +1 -0
  48. package/dist/github-check-service.d.ts +104 -0
  49. package/dist/github-check-service.d.ts.map +1 -0
  50. package/dist/github-check-service.js +382 -0
  51. package/dist/github-check-service.js.map +1 -0
  52. package/dist/github-comments.d.ts +109 -0
  53. package/dist/github-comments.d.ts.map +1 -0
  54. package/dist/github-comments.js +289 -0
  55. package/dist/github-comments.js.map +1 -0
  56. package/dist/index.d.ts +2 -0
  57. package/dist/index.d.ts.map +1 -0
  58. package/dist/index.js +1265 -0
  59. package/dist/index.js.map +1 -0
  60. package/dist/output-formatters.d.ts +66 -0
  61. package/dist/output-formatters.d.ts.map +1 -0
  62. package/dist/output-formatters.js +624 -0
  63. package/dist/output-formatters.js.map +1 -0
  64. package/dist/pr-analyzer.d.ts +47 -0
  65. package/dist/pr-analyzer.d.ts.map +1 -0
  66. package/dist/pr-analyzer.js +194 -0
  67. package/dist/pr-analyzer.js.map +1 -0
  68. package/dist/pr-detector.d.ts +78 -0
  69. package/dist/pr-detector.d.ts.map +1 -0
  70. package/dist/pr-detector.js +357 -0
  71. package/dist/pr-detector.js.map +1 -0
  72. package/dist/providers/ai-check-provider.d.ts +40 -0
  73. package/dist/providers/ai-check-provider.d.ts.map +1 -0
  74. package/dist/providers/ai-check-provider.js +416 -0
  75. package/dist/providers/ai-check-provider.js.map +1 -0
  76. package/dist/providers/check-provider-registry.d.ts +67 -0
  77. package/dist/providers/check-provider-registry.d.ts.map +1 -0
  78. package/dist/providers/check-provider-registry.js +138 -0
  79. package/dist/providers/check-provider-registry.js.map +1 -0
  80. package/dist/providers/check-provider.interface.d.ts +78 -0
  81. package/dist/providers/check-provider.interface.d.ts.map +1 -0
  82. package/dist/providers/check-provider.interface.js +11 -0
  83. package/dist/providers/check-provider.interface.js.map +1 -0
  84. package/dist/providers/index.d.ts +10 -0
  85. package/dist/providers/index.d.ts.map +1 -0
  86. package/dist/providers/index.js +19 -0
  87. package/dist/providers/index.js.map +1 -0
  88. package/dist/providers/script-check-provider.d.ts +20 -0
  89. package/dist/providers/script-check-provider.d.ts.map +1 -0
  90. package/dist/providers/script-check-provider.js +163 -0
  91. package/dist/providers/script-check-provider.js.map +1 -0
  92. package/dist/providers/tool-check-provider.d.ts +19 -0
  93. package/dist/providers/tool-check-provider.d.ts.map +1 -0
  94. package/dist/providers/tool-check-provider.js +125 -0
  95. package/dist/providers/tool-check-provider.js.map +1 -0
  96. package/dist/providers/webhook-check-provider.d.ts +21 -0
  97. package/dist/providers/webhook-check-provider.d.ts.map +1 -0
  98. package/dist/providers/webhook-check-provider.js +173 -0
  99. package/dist/providers/webhook-check-provider.js.map +1 -0
  100. package/dist/reviewer.d.ts +88 -0
  101. package/dist/reviewer.d.ts.map +1 -0
  102. package/dist/reviewer.js +760 -0
  103. package/dist/reviewer.js.map +1 -0
  104. package/dist/types/cli.d.ts +41 -0
  105. package/dist/types/cli.d.ts.map +1 -0
  106. package/dist/types/cli.js +3 -0
  107. package/dist/types/cli.js.map +1 -0
  108. package/dist/types/config.d.ts +315 -0
  109. package/dist/types/config.d.ts.map +1 -0
  110. package/dist/types/config.js +6 -0
  111. package/dist/types/config.js.map +1 -0
  112. package/dist/utils/env-resolver.d.ts +38 -0
  113. package/dist/utils/env-resolver.d.ts.map +1 -0
  114. package/dist/utils/env-resolver.js +130 -0
  115. package/dist/utils/env-resolver.js.map +1 -0
  116. package/package.json +116 -0
@@ -0,0 +1,289 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CommentManager = void 0;
4
+ const uuid_1 = require("uuid");
5
+ /**
6
+ * Manages GitHub PR comments with dynamic updating capabilities
7
+ */
8
+ class CommentManager {
9
+ octokit;
10
+ retryConfig;
11
+ constructor(octokit, retryConfig) {
12
+ this.octokit = octokit;
13
+ this.retryConfig = {
14
+ maxRetries: 3,
15
+ baseDelay: 1000,
16
+ maxDelay: 10000,
17
+ backoffFactor: 2,
18
+ ...retryConfig,
19
+ };
20
+ }
21
+ /**
22
+ * Find existing Visor comment by comment ID marker
23
+ */
24
+ async findVisorComment(owner, repo, prNumber, commentId) {
25
+ try {
26
+ const comments = await this.octokit.rest.issues.listComments({
27
+ owner,
28
+ repo,
29
+ issue_number: prNumber,
30
+ per_page: 100, // GitHub default max
31
+ });
32
+ for (const comment of comments.data) {
33
+ if (comment.body && this.isVisorComment(comment.body, commentId)) {
34
+ return comment;
35
+ }
36
+ }
37
+ return null;
38
+ }
39
+ catch (error) {
40
+ if (this.isRateLimitError(error)) {
41
+ await this.handleRateLimit(error);
42
+ return this.findVisorComment(owner, repo, prNumber, commentId);
43
+ }
44
+ throw error;
45
+ }
46
+ }
47
+ /**
48
+ * Update existing comment or create new one with collision detection
49
+ */
50
+ async updateOrCreateComment(owner, repo, prNumber, content, options = {}) {
51
+ const { commentId = this.generateCommentId(), triggeredBy = 'unknown', allowConcurrentUpdates = false, commitSha, } = options;
52
+ return this.withRetry(async () => {
53
+ const existingComment = await this.findVisorComment(owner, repo, prNumber, commentId);
54
+ const formattedContent = this.formatCommentWithMetadata(content, {
55
+ commentId,
56
+ lastUpdated: new Date().toISOString(),
57
+ triggeredBy,
58
+ commitSha,
59
+ });
60
+ if (existingComment) {
61
+ // Check for collision if not allowing concurrent updates
62
+ if (!allowConcurrentUpdates) {
63
+ const currentComment = await this.octokit.rest.issues.getComment({
64
+ owner,
65
+ repo,
66
+ comment_id: existingComment.id,
67
+ });
68
+ if (currentComment.data.updated_at !== existingComment.updated_at) {
69
+ throw new Error(`Comment collision detected for comment ${commentId}. Another process may have updated it.`);
70
+ }
71
+ }
72
+ const updatedComment = await this.octokit.rest.issues.updateComment({
73
+ owner,
74
+ repo,
75
+ comment_id: existingComment.id,
76
+ body: formattedContent,
77
+ });
78
+ return updatedComment.data;
79
+ }
80
+ else {
81
+ const newComment = await this.octokit.rest.issues.createComment({
82
+ owner,
83
+ repo,
84
+ issue_number: prNumber,
85
+ body: formattedContent,
86
+ });
87
+ return newComment.data;
88
+ }
89
+ });
90
+ }
91
+ /**
92
+ * Format comment content with metadata markers
93
+ */
94
+ formatCommentWithMetadata(content, metadata) {
95
+ const { commentId, lastUpdated, triggeredBy, commitSha } = metadata;
96
+ const commitInfo = commitSha ? ` | Commit: ${commitSha.substring(0, 7)}` : '';
97
+ return `<!-- visor-comment-id:${commentId} -->
98
+ ${content}
99
+
100
+ *Last updated: ${lastUpdated} | Triggered by: ${triggeredBy}${commitInfo}*
101
+ <!-- /visor-comment-id:${commentId} -->`;
102
+ }
103
+ /**
104
+ * Create collapsible sections for comment content
105
+ */
106
+ createCollapsibleSection(title, content, isExpanded = false) {
107
+ const openAttribute = isExpanded ? ' open' : '';
108
+ return `<details${openAttribute}>
109
+ <summary>${title}</summary>
110
+
111
+ ${content}
112
+
113
+ </details>`;
114
+ }
115
+ /**
116
+ * Group review results by check type with collapsible sections
117
+ */
118
+ formatGroupedResults(results, groupBy = 'check') {
119
+ const grouped = this.groupResults(results, groupBy);
120
+ const sections = [];
121
+ for (const [groupKey, items] of Object.entries(grouped)) {
122
+ const totalScore = items.reduce((sum, item) => sum + (item.score || 0), 0) / items.length;
123
+ const totalIssues = items.reduce((sum, item) => sum + (item.issuesFound || 0), 0);
124
+ const emoji = this.getCheckTypeEmoji(groupKey);
125
+ const title = `${emoji} ${this.formatGroupTitle(groupKey, totalScore, totalIssues)}`;
126
+ const sectionContent = items.map(item => item.content).join('\n\n');
127
+ sections.push(this.createCollapsibleSection(title, sectionContent, totalIssues > 0));
128
+ }
129
+ return sections.join('\n\n');
130
+ }
131
+ /**
132
+ * Generate unique comment ID
133
+ */
134
+ generateCommentId() {
135
+ return (0, uuid_1.v4)().substring(0, 8);
136
+ }
137
+ /**
138
+ * Check if comment is a Visor comment
139
+ */
140
+ isVisorComment(body, commentId) {
141
+ if (commentId) {
142
+ // Check for the new format with exact matching - look for the exact ID followed by space or " -->"
143
+ if (body.includes(`visor-comment-id:${commentId} `) ||
144
+ body.includes(`visor-comment-id:${commentId} -->`)) {
145
+ return true;
146
+ }
147
+ // Check for legacy format (visor-review-* pattern) for backwards compatibility
148
+ if (commentId.startsWith('pr-review-') && body.includes('visor-review-')) {
149
+ return true;
150
+ }
151
+ // If we have a specific commentId but no exact match, return false
152
+ return false;
153
+ }
154
+ // General Visor comment detection (only when no specific commentId provided)
155
+ return ((body.includes('visor-comment-id:') && body.includes('<!-- /visor-comment-id:')) ||
156
+ body.includes('visor-review-'));
157
+ }
158
+ /**
159
+ * Extract comment ID from comment body
160
+ */
161
+ extractCommentId(body) {
162
+ const match = body.match(/visor-comment-id:([a-f0-9-]+)/);
163
+ return match ? match[1] : null;
164
+ }
165
+ /**
166
+ * Handle rate limiting with exponential backoff
167
+ */
168
+ async handleRateLimit(error) {
169
+ const resetTime = error.response?.headers?.['x-ratelimit-reset'];
170
+ if (resetTime) {
171
+ const resetDate = new Date(parseInt(resetTime) * 1000);
172
+ const waitTime = Math.max(resetDate.getTime() - Date.now(), this.retryConfig.baseDelay);
173
+ console.log(`Rate limit exceeded. Waiting ${Math.round(waitTime / 1000)}s until reset...`);
174
+ await this.sleep(Math.min(waitTime, this.retryConfig.maxDelay));
175
+ }
176
+ else {
177
+ await this.sleep(this.retryConfig.baseDelay);
178
+ }
179
+ }
180
+ /**
181
+ * Check if error is a rate limit error
182
+ */
183
+ isRateLimitError(error) {
184
+ return error.status === 403 && (error.response?.data?.message?.includes('rate limit') ?? false);
185
+ }
186
+ /**
187
+ * Check if error should not be retried (auth errors, not found, etc.)
188
+ */
189
+ isNonRetryableError(error) {
190
+ // Don't retry auth errors, not found, etc., but allow rate limit errors to be handled separately
191
+ const nonRetryableStatuses = [401, 404, 422]; // Unauthorized, Not Found, Unprocessable Entity
192
+ const status = error.status || error.response?.status;
193
+ // 403 is non-retryable unless it's a rate limit error
194
+ if (status === 403) {
195
+ return !this.isRateLimitError(error);
196
+ }
197
+ return status !== undefined && nonRetryableStatuses.includes(status);
198
+ }
199
+ /**
200
+ * Retry wrapper with exponential backoff
201
+ */
202
+ async withRetry(operation) {
203
+ let lastError = new Error('Unknown error');
204
+ for (let attempt = 0; attempt <= this.retryConfig.maxRetries; attempt++) {
205
+ try {
206
+ return await operation();
207
+ }
208
+ catch (error) {
209
+ lastError = error instanceof Error ? error : new Error(String(error));
210
+ if (attempt === this.retryConfig.maxRetries) {
211
+ break;
212
+ }
213
+ if (this.isRateLimitError(error)) {
214
+ await this.handleRateLimit(error);
215
+ }
216
+ else if (this.isNonRetryableError(error)) {
217
+ // Don't retry auth errors, not found errors, etc.
218
+ throw error;
219
+ }
220
+ else {
221
+ const delay = Math.min(this.retryConfig.baseDelay * Math.pow(this.retryConfig.backoffFactor, attempt), this.retryConfig.maxDelay);
222
+ await this.sleep(delay);
223
+ }
224
+ }
225
+ }
226
+ throw lastError;
227
+ }
228
+ /**
229
+ * Sleep utility
230
+ */
231
+ sleep(ms) {
232
+ return new Promise(resolve => setTimeout(resolve, ms));
233
+ }
234
+ /**
235
+ * Group results by specified criteria
236
+ */
237
+ groupResults(results, groupBy) {
238
+ const grouped = {};
239
+ for (const result of results) {
240
+ const key = groupBy === 'check' ? result.checkType : this.getSeverityGroup(result.score);
241
+ if (!grouped[key]) {
242
+ grouped[key] = [];
243
+ }
244
+ grouped[key].push(result);
245
+ }
246
+ return grouped;
247
+ }
248
+ /**
249
+ * Get severity group based on score
250
+ */
251
+ getSeverityGroup(score) {
252
+ if (!score)
253
+ return 'Unknown';
254
+ if (score >= 90)
255
+ return 'Excellent';
256
+ if (score >= 75)
257
+ return 'Good';
258
+ if (score >= 50)
259
+ return 'Needs Improvement';
260
+ return 'Critical Issues';
261
+ }
262
+ /**
263
+ * Get emoji for check type
264
+ */
265
+ getCheckTypeEmoji(checkType) {
266
+ const emojiMap = {
267
+ performance: '📈',
268
+ security: '🔒',
269
+ architecture: '🏗️',
270
+ style: '🎨',
271
+ all: '🔍',
272
+ Excellent: '✅',
273
+ Good: '👍',
274
+ 'Needs Improvement': '⚠️',
275
+ 'Critical Issues': '🚨',
276
+ Unknown: '❓',
277
+ };
278
+ return emojiMap[checkType] || '📝';
279
+ }
280
+ /**
281
+ * Format group title with score and issue count
282
+ */
283
+ formatGroupTitle(groupKey, score, issuesFound) {
284
+ const formattedScore = Math.round(score);
285
+ return `${groupKey} Review (Score: ${formattedScore}/100)${issuesFound > 0 ? ` - ${issuesFound} issues found` : ''}`;
286
+ }
287
+ }
288
+ exports.CommentManager = CommentManager;
289
+ //# sourceMappingURL=github-comments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-comments.js","sourceRoot":"","sources":["../src/github-comments.ts"],"names":[],"mappings":";;;AACA,+BAAoC;AAoCpC;;GAEG;AACH,MAAa,cAAc;IACjB,OAAO,CAAU;IACjB,WAAW,CAAc;IAEjC,YAAY,OAAgB,EAAE,WAAkC;QAC9D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG;YACjB,UAAU,EAAE,CAAC;YACb,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,CAAC;YAChB,GAAG,WAAW;SACf,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gBAAgB,CAC3B,KAAa,EACb,IAAY,EACZ,QAAgB,EAChB,SAAkB;QAElB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;gBAC3D,KAAK;gBACL,IAAI;gBACJ,YAAY,EAAE,QAAQ;gBACtB,QAAQ,EAAE,GAAG,EAAE,qBAAqB;aACrC,CAAC,CAAC;YAEH,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACpC,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;oBACjE,OAAO,OAAkB,CAAC;gBAC5B,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IACE,IAAI,CAAC,gBAAgB,CACnB,KAAwE,CACzE,EACD,CAAC;gBACD,MAAM,IAAI,CAAC,eAAe,CAAC,KAA4D,CAAC,CAAC;gBACzF,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YACjE,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,qBAAqB,CAChC,KAAa,EACb,IAAY,EACZ,QAAgB,EAChB,OAAe,EACf,UAKI,EAAE;QAEN,MAAM,EACJ,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,EACpC,WAAW,GAAG,SAAS,EACvB,sBAAsB,GAAG,KAAK,EAC9B,SAAS,GACV,GAAG,OAAO,CAAC;QAEZ,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YAC/B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAEtF,MAAM,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE;gBAC/D,SAAS;gBACT,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACrC,WAAW;gBACX,SAAS;aACV,CAAC,CAAC;YAEH,IAAI,eAAe,EAAE,CAAC;gBACpB,yDAAyD;gBACzD,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBAC5B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;wBAC/D,KAAK;wBACL,IAAI;wBACJ,UAAU,EAAE,eAAe,CAAC,EAAE;qBAC/B,CAAC,CAAC;oBAEH,IAAI,cAAc,CAAC,IAAI,CAAC,UAAU,KAAK,eAAe,CAAC,UAAU,EAAE,CAAC;wBAClE,MAAM,IAAI,KAAK,CACb,0CAA0C,SAAS,wCAAwC,CAC5F,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;oBAClE,KAAK;oBACL,IAAI;oBACJ,UAAU,EAAE,eAAe,CAAC,EAAE;oBAC9B,IAAI,EAAE,gBAAgB;iBACvB,CAAC,CAAC;gBAEH,OAAO,cAAc,CAAC,IAAe,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;oBAC9D,KAAK;oBACL,IAAI;oBACJ,YAAY,EAAE,QAAQ;oBACtB,IAAI,EAAE,gBAAgB;iBACvB,CAAC,CAAC;gBAEH,OAAO,UAAU,CAAC,IAAe,CAAC;YACpC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,yBAAyB,CAAC,OAAe,EAAE,QAAyB;QACzE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;QAEpE,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,cAAc,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE9E,OAAO,yBAAyB,SAAS;EAC3C,OAAO;;iBAEQ,WAAW,oBAAoB,WAAW,GAAG,UAAU;yBAC/C,SAAS,MAAM,CAAC;IACvC,CAAC;IAED;;OAEG;IACI,wBAAwB,CAC7B,KAAa,EACb,OAAe,EACf,aAAsB,KAAK;QAE3B,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,OAAO,WAAW,aAAa;WACxB,KAAK;;EAEd,OAAO;;WAEE,CAAC;IACV,CAAC;IAED;;OAEG;IACI,oBAAoB,CACzB,OAA4F,EAC5F,UAAgC,OAAO;QAEvC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACxD,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;YAC1F,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAElF,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC;YAErF,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;QACvF,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,iBAAiB;QACvB,OAAO,IAAA,SAAM,GAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,IAAY,EAAE,SAAkB;QACrD,IAAI,SAAS,EAAE,CAAC;YACd,mGAAmG;YACnG,IACE,IAAI,CAAC,QAAQ,CAAC,oBAAoB,SAAS,GAAG,CAAC;gBAC/C,IAAI,CAAC,QAAQ,CAAC,oBAAoB,SAAS,MAAM,CAAC,EAClD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,+EAA+E;YAC/E,IAAI,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBACzE,OAAO,IAAI,CAAC;YACd,CAAC;YACD,mEAAmE;YACnE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,6EAA6E;QAC7E,OAAO,CACL,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;YAChF,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAC/B,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,gBAAgB,CAAC,IAAY;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC1D,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAAC,KAE7B;QACC,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,mBAAmB,CAAC,CAAC;QACjE,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACxF,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC3F,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,KAAqB;QAC5C,OAAO,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,CAAC;IAClG,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,KAAqB;QAC/C,iGAAiG;QACjG,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,gDAAgD;QAC9F,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC;QAEtD,sDAAsD;QACtD,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,MAAM,KAAK,SAAS,IAAI,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,SAAS,CAAI,SAA2B;QACpD,IAAI,SAAS,GAAU,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;QAElD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;YACxE,IAAI,CAAC;gBACH,OAAO,MAAM,SAAS,EAAE,CAAC;YAC3B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAEtE,IAAI,OAAO,KAAK,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;oBAC5C,MAAM;gBACR,CAAC;gBAED,IACE,IAAI,CAAC,gBAAgB,CACnB,KAAwE,CACzE,EACD,CAAC;oBACD,MAAM,IAAI,CAAC,eAAe,CAAC,KAA4D,CAAC,CAAC;gBAC3F,CAAC;qBAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAuB,CAAC,EAAE,CAAC;oBAC7D,kDAAkD;oBAClD,MAAM,KAAK,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,OAAO,CAAC,EAC9E,IAAI,CAAC,WAAW,CAAC,QAAQ,CAC1B,CAAC;oBACF,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,SAAS,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACK,YAAY,CAClB,OAA4F,EAC5F,OAA6B;QAK7B,MAAM,OAAO,GAGT,EAAE,CAAC;QAEP,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACzF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACpB,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,KAAc;QACrC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,WAAW,CAAC;QACpC,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,MAAM,CAAC;QAC/B,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,mBAAmB,CAAC;QAC5C,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,SAAiB;QACzC,MAAM,QAAQ,GAA2B;YACvC,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,KAAK;YACnB,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,IAAI;YACT,SAAS,EAAE,GAAG;YACd,IAAI,EAAE,IAAI;YACV,mBAAmB,EAAE,IAAI;YACzB,iBAAiB,EAAE,IAAI;YACvB,OAAO,EAAE,GAAG;SACb,CAAC;QACF,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;IACrC,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,QAAgB,EAAE,KAAa,EAAE,WAAmB;QAC3E,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO,GAAG,QAAQ,mBAAmB,cAAc,QAAQ,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,WAAW,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACvH,CAAC;CACF;AA9WD,wCA8WC"}
@@ -0,0 +1,2 @@
1
+ export declare function run(): Promise<void>;
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA2IA,wBAAsB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CA0FzC"}