@pyrokine/mcp-chrome 2.3.2 → 2.4.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 (86) hide show
  1. package/README.md +40 -13
  2. package/README_zh.md +30 -11
  3. package/dist/anti-detection/behavior.d.ts.map +1 -1
  4. package/dist/anti-detection/behavior.js.map +1 -1
  5. package/dist/anti-detection/injection.js.map +1 -1
  6. package/dist/cdp/client.d.ts.map +1 -1
  7. package/dist/cdp/client.js.map +1 -1
  8. package/dist/cdp/launcher.d.ts.map +1 -1
  9. package/dist/cdp/launcher.js.map +1 -1
  10. package/dist/core/auto-wait.d.ts.map +1 -1
  11. package/dist/core/auto-wait.js.map +1 -1
  12. package/dist/core/browser-driver.d.ts +6 -1
  13. package/dist/core/browser-driver.d.ts.map +1 -1
  14. package/dist/core/browser-driver.js.map +1 -1
  15. package/dist/core/errors.d.ts.map +1 -1
  16. package/dist/core/errors.js.map +1 -1
  17. package/dist/core/extension-errors.d.ts.map +1 -1
  18. package/dist/core/locator.d.ts.map +1 -1
  19. package/dist/core/locator.js.map +1 -1
  20. package/dist/core/retry.js.map +1 -1
  21. package/dist/core/session.d.ts +2 -2
  22. package/dist/core/session.d.ts.map +1 -1
  23. package/dist/core/session.js +1 -1
  24. package/dist/core/session.js.map +1 -1
  25. package/dist/core/types.d.ts.map +1 -1
  26. package/dist/core/types.js.map +1 -1
  27. package/dist/core/unified-session.d.ts +17 -2
  28. package/dist/core/unified-session.d.ts.map +1 -1
  29. package/dist/core/unified-session.js +44 -6
  30. package/dist/core/unified-session.js.map +1 -1
  31. package/dist/extension/bridge.d.ts +8 -2
  32. package/dist/extension/bridge.d.ts.map +1 -1
  33. package/dist/extension/bridge.js +5 -1
  34. package/dist/extension/bridge.js.map +1 -1
  35. package/dist/extension/http-server.d.ts +17 -0
  36. package/dist/extension/http-server.d.ts.map +1 -1
  37. package/dist/extension/http-server.js +63 -8
  38. package/dist/extension/http-server.js.map +1 -1
  39. package/dist/extension/index.d.ts +1 -0
  40. package/dist/extension/index.d.ts.map +1 -1
  41. package/dist/extension/index.js.map +1 -1
  42. package/dist/index.js.map +1 -1
  43. package/dist/tools/browse.d.ts.map +1 -1
  44. package/dist/tools/browse.js +13 -37
  45. package/dist/tools/browse.js.map +1 -1
  46. package/dist/tools/cookies.js.map +1 -1
  47. package/dist/tools/diagnostics.d.ts +31 -0
  48. package/dist/tools/diagnostics.d.ts.map +1 -0
  49. package/dist/tools/diagnostics.js +93 -0
  50. package/dist/tools/diagnostics.js.map +1 -0
  51. package/dist/tools/evaluate.d.ts +15 -0
  52. package/dist/tools/evaluate.d.ts.map +1 -1
  53. package/dist/tools/evaluate.js +136 -84
  54. package/dist/tools/evaluate.js.map +1 -1
  55. package/dist/tools/extract.d.ts.map +1 -1
  56. package/dist/tools/extract.js +36 -17
  57. package/dist/tools/extract.js.map +1 -1
  58. package/dist/tools/input.d.ts +6 -0
  59. package/dist/tools/input.d.ts.map +1 -1
  60. package/dist/tools/input.js +394 -248
  61. package/dist/tools/input.js.map +1 -1
  62. package/dist/tools/logs.d.ts +17 -0
  63. package/dist/tools/logs.d.ts.map +1 -1
  64. package/dist/tools/logs.js +41 -10
  65. package/dist/tools/logs.js.map +1 -1
  66. package/dist/tools/network-sanitizer.d.ts +15 -0
  67. package/dist/tools/network-sanitizer.d.ts.map +1 -0
  68. package/dist/tools/network-sanitizer.js +61 -0
  69. package/dist/tools/network-sanitizer.js.map +1 -0
  70. package/dist/tools/post-condition.d.ts +18 -1
  71. package/dist/tools/post-condition.d.ts.map +1 -1
  72. package/dist/tools/post-condition.js +52 -94
  73. package/dist/tools/post-condition.js.map +1 -1
  74. package/dist/tools/target-diagnostics.d.ts +31 -0
  75. package/dist/tools/target-diagnostics.d.ts.map +1 -0
  76. package/dist/tools/target-diagnostics.js +91 -0
  77. package/dist/tools/target-diagnostics.js.map +1 -0
  78. package/dist/tools/wait.d.ts.map +1 -1
  79. package/dist/tools/wait.js +183 -209
  80. package/dist/tools/wait.js.map +1 -1
  81. package/extension/dist/assets/content.ts-Cj_iiU2s.js +25 -0
  82. package/extension/dist/assets/{index.ts-CJXGbOcp.js → index.ts-GG6dPUPX.js} +569 -347
  83. package/extension/dist/manifest.json +3 -3
  84. package/extension/dist/service-worker-loader.js +1 -1
  85. package/package.json +14 -10
  86. package/extension/dist/assets/content.ts-pEASbjEL.js +0 -6
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import { sanitizeErrorMessage } from '../core/error-sanitizer.js';
2
3
  const POST_CONDITION_DEFAULT_TIMEOUT_MS = 3000;
3
4
  const POST_CONDITION_MAX_TIMEOUT_MS = 60_000;
4
5
  const POST_CONDITION_DEFAULT_INTERVAL_MS = 100;
@@ -29,138 +30,95 @@ export const postConditionSchema = z
29
30
  .refine((value) => value.text || value.selector || value.urlIncludes || value.script, {
30
31
  message: 'postCondition 至少需要 text、selector、urlIncludes、script 之一',
31
32
  });
32
- class PostConditionError extends Error {
33
- context;
34
- code = 'POST_CONDITION_FAILED';
35
- suggestion = '工具动作已执行,但 postCondition 未满足。请检查页面状态、异步业务流程或放宽 postCondition 条件';
36
- constructor(context) {
37
- super('postCondition 未满足,工具动作不能证明业务目标已经达成');
38
- this.context = context;
39
- this.name = 'PostConditionError';
40
- }
41
- toJSON() {
42
- return {
43
- error: {
44
- code: this.code,
45
- message: this.message,
46
- suggestion: this.suggestion,
47
- context: this.context,
48
- },
49
- };
50
- }
51
- }
52
33
  function sleep(ms) {
53
34
  return new Promise((resolve) => setTimeout(resolve, ms));
54
35
  }
55
36
  function remainingMs(timeout, startedAt) {
56
37
  return Math.max(0, timeout - (Date.now() - startedAt));
57
38
  }
58
- function nextCheckTimeout(timeout, startedAt) {
59
- const remaining = remainingMs(timeout, startedAt);
60
- if (remaining <= 0) {
61
- throw new Error('postCondition 检查超时');
62
- }
63
- return Math.max(1, remaining);
39
+ function isUnavailableError(message) {
40
+ return /frame|execution context|debugger|extension.*(?:disconnect|未连接)|not connected|cannot resolve cdp|failed to attach|restricted|cannot access/i.test(message);
64
41
  }
65
- async function checkPostCondition(unifiedSession, condition, remainingTimeout) {
42
+ function boundedError(error) {
43
+ return sanitizeErrorMessage(error instanceof Error ? error.message : String(error)).slice(0, 500);
44
+ }
45
+ async function checkPostCondition(unifiedSession, condition, timeout, mode) {
66
46
  const checks = [];
67
- const checkStartedAt = Date.now();
47
+ const startedAt = Date.now();
48
+ const nextTimeout = () => Math.max(1, remainingMs(timeout, startedAt));
68
49
  if (condition.text !== undefined) {
69
50
  const result = await unifiedSession.evaluate(`(expected, exact) => {
70
51
  const body = document.body
71
- const sampleLimit = 500
72
- const appendSample = (sample, value) =>
73
- sample.length >= sampleLimit ? sample : sample + value.slice(0, sampleLimit - sample.length)
74
- const formatSample = (text) => ({
75
- actual: text.length > sampleLimit ? text.slice(0, sampleLimit) + '...' : text,
76
- truncated: text.length > sampleLimit,
77
- })
78
- if (!body) {
79
- return { matched: false, actual: '', truncated: false }
80
- }
81
-
82
- const values = Array.from(body.querySelectorAll('input, textarea, select')).map((element) => {
83
- if (element instanceof HTMLSelectElement) {
84
- return Array.from(element.selectedOptions)
85
- .map((option) => option.value || option.textContent || '')
86
- .join(' ')
87
- }
88
- if (element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement) {
89
- return element.value || ''
90
- }
91
- return ''
92
- })
93
- const bodyText = body.textContent || ''
94
- if (exact) {
95
- const matched = bodyText === expected || values.some((value) => value === expected)
96
- return { matched, ...formatSample([bodyText, ...values].join('\\n')) }
97
- }
98
-
99
- const walker = document.createTreeWalker(body, NodeFilter.SHOW_TEXT)
100
- const segments = []
101
- let node = walker.nextNode()
102
- while (node) {
103
- segments.push(node.nodeValue || '')
104
- node = walker.nextNode()
105
- }
106
- segments.push(...values)
107
- const text = segments.join('\\n')
108
- return { matched: text.includes(expected), ...formatSample(text) }
109
- }`, undefined, nextCheckTimeout(remainingTimeout, checkStartedAt), [condition.text, condition.exact === true]);
110
- checks.push({
111
- name: 'text',
112
- matched: result.matched,
113
- actual: result.actual,
114
- });
52
+ if (!body) return { matched: false, actual: '' }
53
+ const values = Array.from(body.querySelectorAll('input, textarea, select')).map((element) =>
54
+ element instanceof HTMLSelectElement
55
+ ? Array.from(element.selectedOptions).map((option) => option.value || option.textContent || '').join(' ')
56
+ : element instanceof HTMLInputElement && element.type === 'password'
57
+ ? ''
58
+ : element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement
59
+ ? element.value || ''
60
+ : '')
61
+ const text = [body.textContent || '', ...values].join('\\n')
62
+ return { matched: exact ? [body.textContent || '', ...values].some((value) => value === expected) : text.includes(expected), actual: text.slice(0, 500) }
63
+ }`, mode, nextTimeout(), [condition.text, condition.exact === true]);
64
+ checks.push({ name: 'text', matched: result.matched, actual: result.actual });
115
65
  }
116
66
  if (condition.selector !== undefined) {
117
- const count = await unifiedSession.evaluate('(selector) => document.querySelectorAll(selector).length', undefined, nextCheckTimeout(remainingTimeout, checkStartedAt), [condition.selector]);
67
+ const count = await unifiedSession.evaluate('(selector) => document.querySelectorAll(selector).length', mode, nextTimeout(), [condition.selector]);
118
68
  checks.push({ name: 'selector', matched: count > 0, actual: { count } });
119
69
  }
120
70
  if (condition.urlIncludes !== undefined) {
121
- const url = await unifiedSession.evaluate('location.href', undefined, nextCheckTimeout(remainingTimeout, checkStartedAt));
122
- checks.push({ name: 'urlIncludes', matched: url.includes(condition.urlIncludes), actual: url });
71
+ const url = await unifiedSession.evaluate('location.href', mode, nextTimeout());
72
+ checks.push({ name: 'urlIncludes', matched: url.includes(condition.urlIncludes), actual: url.slice(0, 500) });
123
73
  }
124
74
  if (condition.script !== undefined) {
125
- const value = await unifiedSession.evaluate(condition.script, undefined, nextCheckTimeout(remainingTimeout, checkStartedAt));
75
+ const value = await unifiedSession.evaluate(condition.script, mode, nextTimeout());
126
76
  checks.push({ name: 'script', matched: Boolean(value), actual: value });
127
77
  }
128
78
  return checks;
129
79
  }
130
- export async function waitForPostCondition(unifiedSession, condition, operation) {
80
+ export async function waitForPostCondition(unifiedSession, condition, operation, mode) {
131
81
  const timeout = condition.timeout ?? POST_CONDITION_DEFAULT_TIMEOUT_MS;
132
82
  const interval = condition.interval ?? POST_CONDITION_DEFAULT_INTERVAL_MS;
133
83
  const startedAt = Date.now();
134
- let lastChecks = [];
135
- let lastError;
84
+ let checks = [];
136
85
  while (remainingMs(timeout, startedAt) > 0) {
137
86
  try {
138
- const checkTimeout = Math.max(1, Math.min(interval, remainingMs(timeout, startedAt)));
139
- lastChecks = await checkPostCondition(unifiedSession, condition, checkTimeout);
140
- lastError = undefined;
141
- if (lastChecks.every((check) => check.matched)) {
87
+ checks = await checkPostCondition(unifiedSession, condition, Math.max(1, remainingMs(timeout, startedAt)), mode);
88
+ if (checks.every((check) => check.matched)) {
142
89
  return {
143
90
  matched: true,
91
+ verificationStatus: 'matched',
144
92
  operation,
145
93
  elapsedMs: Date.now() - startedAt,
146
- checks: lastChecks,
94
+ checks,
95
+ retryable: false,
147
96
  };
148
97
  }
149
98
  }
150
99
  catch (error) {
151
- lastError = error instanceof Error ? error.message : String(error);
100
+ const message = boundedError(error);
101
+ return {
102
+ matched: false,
103
+ verificationStatus: isUnavailableError(message) ? 'unavailable' : 'error',
104
+ operation,
105
+ elapsedMs: Date.now() - startedAt,
106
+ checks,
107
+ retryable: isUnavailableError(message),
108
+ error: message,
109
+ };
152
110
  }
153
111
  const waitMs = Math.min(interval, remainingMs(timeout, startedAt));
154
- if (waitMs <= 0) {
155
- break;
156
- }
157
- await sleep(waitMs);
112
+ if (waitMs > 0)
113
+ await sleep(waitMs);
158
114
  }
159
- throw new PostConditionError({
115
+ return {
116
+ matched: false,
117
+ verificationStatus: 'not_matched',
160
118
  operation,
161
- timeout,
162
- checks: lastChecks,
163
- lastError,
164
- });
119
+ elapsedMs: Date.now() - startedAt,
120
+ checks,
121
+ retryable: true,
122
+ };
165
123
  }
166
124
  //# sourceMappingURL=post-condition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"post-condition.js","sourceRoot":"","sources":["../../src/tools/post-condition.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"post-condition.js","sourceRoot":"","sources":["../../src/tools/post-condition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { getUnifiedSession } from '../core/index.js';
2
+ import type { Target } from '../core/types.js';
3
+ export interface TargetCandidate {
4
+ tag?: string;
5
+ text?: string;
6
+ rect?: {
7
+ x: number;
8
+ y: number;
9
+ width: number;
10
+ height: number;
11
+ };
12
+ [key: string]: unknown;
13
+ }
14
+ export declare class TargetTimeoutError extends Error {
15
+ readonly context: Record<string, unknown>;
16
+ readonly code = "TARGET_TIMEOUT";
17
+ readonly suggestion = "\u8BF7\u68C0\u67E5 locator\u3001frame \u548C nth\uFF0C\u6216\u6839\u636E\u5019\u9009\u6458\u8981\u8C03\u6574\u76EE\u6807\uFF1B\u8FDE\u63A5\u4E0D\u53EF\u7528\u65F6\u5148\u6062\u590D Extension";
18
+ constructor(context: Record<string, unknown>);
19
+ toJSON(): object;
20
+ }
21
+ export declare function summarizeTargetCandidates(candidates: TargetCandidate[]): Array<Record<string, unknown>>;
22
+ export declare function buildTargetDiagnostics(unifiedSession: ReturnType<typeof getUnifiedSession>, target: Target, options: {
23
+ nth: number;
24
+ timeout?: number;
25
+ frame?: string | number;
26
+ matchCount: number;
27
+ lastState: string;
28
+ lastError?: unknown;
29
+ candidates?: TargetCandidate[];
30
+ }): Promise<Record<string, unknown>>;
31
+ //# sourceMappingURL=target-diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target-diagnostics.d.ts","sourceRoot":"","sources":["../../src/tools/target-diagnostics.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAO9C,MAAM,WAAW,eAAe;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9D,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACzB;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAI7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAHrD,QAAQ,CAAC,IAAI,oBAAmB;IAChC,QAAQ,CAAC,UAAU,oMAA4D;IAE/E,YAAqB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAGpD;IAED,MAAM,IAAI,MAAM,CAEf;CACJ;AAeD,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAMvG;AAmCD,wBAAsB,sBAAsB,CACxC,cAAc,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,EACpD,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IACL,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,eAAe,EAAE,CAAA;CACjC,GACF,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA8BlC"}
@@ -0,0 +1,91 @@
1
+ import { sanitizeErrorMessage } from '../core/error-sanitizer.js';
2
+ const MAX_CANDIDATES = 10;
3
+ const MAX_LOCATOR_TEXT = 500;
4
+ const MAX_CANDIDATE_TEXT = 160;
5
+ const MAX_DIAGNOSTIC_TIMEOUT_MS = 1000;
6
+ export class TargetTimeoutError extends Error {
7
+ context;
8
+ code = 'TARGET_TIMEOUT';
9
+ suggestion = '请检查 locator、frame 和 nth,或根据候选摘要调整目标;连接不可用时先恢复 Extension';
10
+ constructor(context) {
11
+ super(`等待目标元素超时 (${context.timeout}ms)`);
12
+ this.context = context;
13
+ this.name = 'TargetTimeoutError';
14
+ }
15
+ toJSON() {
16
+ return { error: { code: this.code, message: this.message, suggestion: this.suggestion, context: this.context } };
17
+ }
18
+ }
19
+ function targetType(target) {
20
+ return Object.keys(target).find((key) => key !== 'nth') ?? 'unknown';
21
+ }
22
+ function boundedTarget(target) {
23
+ return Object.fromEntries(Object.entries(target).map(([key, value]) => [
24
+ key,
25
+ typeof value === 'string' ? value.slice(0, MAX_LOCATOR_TEXT) : value,
26
+ ]));
27
+ }
28
+ export function summarizeTargetCandidates(candidates) {
29
+ return candidates.slice(0, MAX_CANDIDATES).map((candidate) => ({
30
+ ...(typeof candidate.tag === 'string' ? { tag: candidate.tag.slice(0, 40) } : {}),
31
+ ...(typeof candidate.text === 'string' ? { text: candidate.text.slice(0, MAX_CANDIDATE_TEXT) } : {}),
32
+ ...(candidate.rect ? { rect: candidate.rect } : {}),
33
+ }));
34
+ }
35
+ async function collectPageCandidates(unifiedSession, timeout) {
36
+ try {
37
+ const candidates = await unifiedSession.evaluate(`(() => Array.from(document.querySelectorAll('input, textarea, select, button, a, [role], [contenteditable="true"]'))
38
+ .slice(0, ${MAX_CANDIDATES})
39
+ .map((el) => {
40
+ const rect = el.getBoundingClientRect();
41
+ return {
42
+ tag: el.tagName.toLowerCase(),
43
+ id: el.id || undefined,
44
+ role: el.getAttribute('role') || undefined,
45
+ label: (el.getAttribute('aria-label') || el.getAttribute('placeholder') || '').slice(0, 80),
46
+ text: (el.textContent || '').replace(/\\s+/g, ' ').trim().slice(0, ${MAX_CANDIDATE_TEXT}),
47
+ visible: rect.width > 0 && rect.height > 0,
48
+ disabled: Boolean(el.disabled) || el.getAttribute('aria-disabled') === 'true',
49
+ bounds: {x: rect.x, y: rect.y, width: rect.width, height: rect.height}
50
+ };
51
+ }))()`, undefined, Math.min(Math.max(timeout ?? MAX_DIAGNOSTIC_TIMEOUT_MS, 1), MAX_DIAGNOSTIC_TIMEOUT_MS));
52
+ return { candidates };
53
+ }
54
+ catch (error) {
55
+ return {
56
+ candidates: [],
57
+ diagnosticError: sanitizeErrorMessage(error).slice(0, 500),
58
+ };
59
+ }
60
+ }
61
+ export async function buildTargetDiagnostics(unifiedSession, target, options) {
62
+ let state;
63
+ try {
64
+ state = await unifiedSession.getLiveState();
65
+ }
66
+ catch {
67
+ state = null;
68
+ }
69
+ const knownCandidates = options.candidates ? summarizeTargetCandidates(options.candidates) : [];
70
+ const pageCandidates = knownCandidates.length > 0
71
+ ? { candidates: knownCandidates }
72
+ : await collectPageCandidates(unifiedSession, options.timeout);
73
+ return {
74
+ locator: boundedTarget(target),
75
+ targetType: targetType(target),
76
+ nth: options.nth,
77
+ currentUrl: state?.url?.slice(0, 500),
78
+ tabId: unifiedSession.getCurrentTargetId(),
79
+ managed: state?.managed ?? false,
80
+ frame: options.frame,
81
+ matchCount: options.matchCount,
82
+ candidates: pageCandidates.candidates,
83
+ lastLocatorState: options.lastState,
84
+ timeout: options.timeout,
85
+ mode: unifiedSession.getMode(),
86
+ connection: unifiedSession.isExtensionConnected() ? 'connected' : 'unavailable',
87
+ ...(options.lastError ? { lastError: sanitizeErrorMessage(options.lastError).slice(0, 500) } : {}),
88
+ ...(pageCandidates.diagnosticError ? { diagnosticError: pageCandidates.diagnosticError } : {}),
89
+ };
90
+ }
91
+ //# sourceMappingURL=target-diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target-diagnostics.js","sourceRoot":"","sources":["../../src/tools/target-diagnostics.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../src/tools/wait.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAwoBxE;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CASxD"}
1
+ {"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../src/tools/wait.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AA4lBxE;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CASxD"}