craftdriver 1.0.4 → 1.1.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.
- package/CHANGELOG.md +20 -0
- package/README.md +1 -1
- package/dist/cli/snapshot.js +31 -4
- package/dist/cli/snapshot.js.map +1 -1
- package/dist/lib/browser.d.ts +28 -0
- package/dist/lib/browser.d.ts.map +1 -1
- package/dist/lib/browser.js +20 -1
- package/dist/lib/browser.js.map +1 -1
- package/dist/lib/by.d.ts +18 -0
- package/dist/lib/by.d.ts.map +1 -1
- package/dist/lib/by.js +141 -17
- package/dist/lib/by.js.map +1 -1
- package/dist/lib/chrome.d.ts +15 -3
- package/dist/lib/chrome.d.ts.map +1 -1
- package/dist/lib/chrome.js +4 -2
- package/dist/lib/chrome.js.map +1 -1
- package/dist/lib/driverManager.d.ts +31 -0
- package/dist/lib/driverManager.d.ts.map +1 -1
- package/dist/lib/driverManager.js +98 -7
- package/dist/lib/driverManager.js.map +1 -1
- package/dist/lib/firefox.d.ts +4 -3
- package/dist/lib/firefox.d.ts.map +1 -1
- package/dist/lib/firefox.js.map +1 -1
- package/dist/lib/locator.d.ts +28 -0
- package/dist/lib/locator.d.ts.map +1 -1
- package/dist/lib/locator.js +28 -0
- package/dist/lib/locator.js.map +1 -1
- package/docs/browser-api.md +5 -1
- package/docs/driver-configuration.md +103 -4
- package/docs/public/examples/a11y.html +44 -0
- package/docs/public/examples/clock.html +83 -0
- package/docs/public/examples/console-errors.html +344 -0
- package/docs/public/examples/dialogs.html +42 -0
- package/docs/public/examples/download.html +31 -0
- package/docs/public/examples/dynamic.html +131 -0
- package/docs/public/examples/emulate.html +127 -0
- package/docs/public/examples/evaluate.html +28 -0
- package/docs/public/examples/hover-select.html +295 -0
- package/docs/public/examples/iframe-child.html +51 -0
- package/docs/public/examples/iframes.html +35 -0
- package/docs/public/examples/keyboard.html +195 -0
- package/docs/public/examples/locator.html +131 -0
- package/docs/public/examples/login.html +116 -0
- package/docs/public/examples/mobile.html +270 -0
- package/docs/public/examples/mouse.html +505 -0
- package/docs/public/examples/network.html +293 -0
- package/docs/public/examples/popup-target.html +26 -0
- package/docs/public/examples/popup.html +50 -0
- package/docs/public/examples/screenshot.html +99 -0
- package/docs/public/examples/selectors.html +150 -0
- package/docs/public/examples/session.html +514 -0
- package/docs/public/examples/upload.html +36 -0
- package/docs/recipes/accessibility-gate.md +24 -40
- package/docs/recipes/console-error-gate.md +29 -38
- package/docs/recipes/file-upload-download.md +26 -43
- package/docs/recipes/find-elements.md +142 -0
- package/docs/recipes/login-once-reuse-session.md +24 -44
- package/docs/recipes/mobile-flow-with-network-and-logs.md +26 -41
- package/docs/recipes/mock-api-and-assert-network.md +22 -35
- package/docs/recipes/multi-user-contexts.md +32 -43
- package/docs/recipes/page-objects.md +52 -0
- package/docs/recipes/trace-failing-test.md +31 -44
- package/docs/recipes/virtual-clock-time-sensitive-ui.md +24 -40
- package/docs/recipes/vitest-browser-lifecycle.md +14 -11
- package/docs/recipes.md +20 -1
- package/docs/selectors.md +291 -229
- package/docs/zero-config-drivers.md +16 -4
- package/package.json +5 -1
package/dist/lib/by.js
CHANGED
|
@@ -58,7 +58,9 @@ export class By {
|
|
|
58
58
|
const valueExpr = trim ? normalizeSpaceLiteral(text) : xpStringLiteral(text);
|
|
59
59
|
const left = cs ? nodeExpr : toLower(nodeExpr);
|
|
60
60
|
const right = cs ? valueExpr : toLower(valueExpr);
|
|
61
|
-
|
|
61
|
+
// Prefer the innermost element for symmetry with partialText — a wrapper
|
|
62
|
+
// whose only child carries the same normalized text would otherwise match twice.
|
|
63
|
+
const xpath = `.//*[${left} = ${right} and not(.//*[${left} = ${right}])]`;
|
|
62
64
|
return By.xpath(xpath);
|
|
63
65
|
}
|
|
64
66
|
/**
|
|
@@ -74,56 +76,175 @@ export class By {
|
|
|
74
76
|
const left = cs ? nodeExpr : toLower(nodeExpr);
|
|
75
77
|
const right = cs ? valueExpr : toLower(valueExpr);
|
|
76
78
|
// Prefer the innermost element containing the substring to avoid matching large containers
|
|
77
|
-
const xpath =
|
|
79
|
+
const xpath = `.//*[contains(${left}, ${right}) and not(.//*[contains(${left}, ${right})])]`;
|
|
78
80
|
return By.xpath(xpath);
|
|
79
81
|
}
|
|
80
82
|
// Accessibility-inspired helpers (approximate)
|
|
83
|
+
/**
|
|
84
|
+
* Match elements by ARIA role, resolving **implicit** roles for common native
|
|
85
|
+
* elements — so `role('button')` matches `<button>` and `<input type="submit">`,
|
|
86
|
+
* not only `[role="button"]`.
|
|
87
|
+
*
|
|
88
|
+
* The accessible-name approximation (`opts.name`) checks common sources:
|
|
89
|
+
* `aria-label`, single-id `aria-labelledby`, visible text, associated labels
|
|
90
|
+
* for form controls, `value` (native buttons/inputs), `alt` (images), and
|
|
91
|
+
* `title`. `name` defaults to an exact match; pass `{ exact: false }` for a
|
|
92
|
+
* substring match.
|
|
93
|
+
*
|
|
94
|
+
* Coverage is a documented approximation of the common roles, not the full
|
|
95
|
+
* ARIA algorithm; unmapped roles still match an explicit `role=` attribute.
|
|
96
|
+
*/
|
|
81
97
|
static role(role, opts) {
|
|
82
|
-
|
|
98
|
+
// An element matches the role if it carries role="<role>" OR is a native
|
|
99
|
+
// element whose implicit role is <role>. When an explicit role is present,
|
|
100
|
+
// it overrides the native implicit role for this approximation.
|
|
101
|
+
const roleTests = [roleTokenEquals(role)];
|
|
102
|
+
const implicit = IMPLICIT_ROLE_XPATH[role];
|
|
103
|
+
if (implicit)
|
|
104
|
+
roleTests.push(`(not(normalize-space(@role)) and (${implicit.join(' or ')}))`);
|
|
105
|
+
const conditions = [`(${roleTests.join(' or ')})`];
|
|
106
|
+
// `hidden` / `aria-hidden="true"` on ANY ancestor (not just the element
|
|
107
|
+
// itself) removes the whole subtree from the accessibility tree, so the
|
|
108
|
+
// default guard walks ancestor-or-self. CSS-based hiding (display:none via
|
|
109
|
+
// a stylesheet) is deliberately not covered — XPath can't read computed
|
|
110
|
+
// style — but the Locator's visible-resolution path filters those via the
|
|
111
|
+
// driver's displayedness check.
|
|
83
112
|
const visibleGuard = opts?.includeHidden
|
|
84
113
|
? ''
|
|
85
|
-
: ' and not(@hidden) and not(@aria-hidden="true")';
|
|
114
|
+
: ' and not(ancestor-or-self::*[@hidden]) and not(ancestor-or-self::*[@aria-hidden="true"])';
|
|
86
115
|
if (opts?.name) {
|
|
87
116
|
const nameLit = normalizeSpaceLiteral(opts.name);
|
|
88
117
|
const eq = opts.exact !== false; // default exact
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
118
|
+
// Approximate accessible-name sources, widest-first. This deliberately
|
|
119
|
+
// covers common cases without trying to implement the full AccName spec.
|
|
120
|
+
const candidates = [
|
|
121
|
+
'normalize-space(@aria-label)',
|
|
122
|
+
'normalize-space(.)',
|
|
123
|
+
'normalize-space(@value)',
|
|
124
|
+
'normalize-space(@alt)',
|
|
125
|
+
'normalize-space(@title)',
|
|
126
|
+
];
|
|
127
|
+
const stringPred = candidates
|
|
128
|
+
.map((c) => (eq ? `${c} = ${nameLit}` : `contains(${c}, ${nameLit})`))
|
|
129
|
+
.join(' or ');
|
|
130
|
+
const labelMatch = eq
|
|
131
|
+
? `normalize-space(.) = ${nameLit}`
|
|
132
|
+
: `contains(normalize-space(.), ${nameLit})`;
|
|
133
|
+
const formControl = 'self::input or self::textarea or self::select';
|
|
134
|
+
const labelPred = [
|
|
135
|
+
`@aria-labelledby = //*[${labelMatch}]/@id`,
|
|
136
|
+
`((${formControl}) and @id = //label[${labelMatch}]/@for)`,
|
|
137
|
+
`((${formControl}) and ancestor::label[${labelMatch}])`,
|
|
138
|
+
].join(' or ');
|
|
139
|
+
conditions.push(`(${stringPred} or ${labelPred})`);
|
|
95
140
|
}
|
|
96
|
-
|
|
141
|
+
// Leading `.//` (not `//`) so this stays scoped when used as a child of
|
|
142
|
+
// another Locator/element — a bare `//` is document-root-anchored in XPath
|
|
143
|
+
// regardless of the context node the "Find Element(s) From Element"
|
|
144
|
+
// WebDriver endpoint passes in, which would otherwise search the whole
|
|
145
|
+
// document instead of the parent's subtree.
|
|
146
|
+
const xpath = `.//*[( ${conditions.join(' and ')} )${visibleGuard}]`;
|
|
97
147
|
return By.xpath(xpath);
|
|
98
148
|
}
|
|
99
149
|
static labelText(text, opts) {
|
|
100
150
|
const eq = opts?.exact !== false; // default exact
|
|
101
151
|
const lit = normalizeSpaceLiteral(text);
|
|
102
152
|
const labelMatch = eq ? `normalize-space(.) = ${lit}` : `contains(normalize-space(.), ${lit})`;
|
|
103
|
-
// Inputs referenced by @for, or wrapped controls
|
|
104
|
-
|
|
105
|
-
|
|
153
|
+
// Inputs referenced by @for, or wrapped controls. The outer step of each
|
|
154
|
+
// branch is `.//` so the *returned element* is always scoped to the
|
|
155
|
+
// parent context. The `@for` branch's inner `//label` lookup stays
|
|
156
|
+
// document-rooted on purpose: inside a predicate, `.` rebinds to the
|
|
157
|
+
// candidate `*` node being tested, not the outer scope, so it cannot be
|
|
158
|
+
// scoped without XPath 2.0 variables. In realistic markup the label and
|
|
159
|
+
// its target live in the same container, so this is a narrow, documented
|
|
160
|
+
// approximation rather than the general nested-scope bug.
|
|
161
|
+
const byFor = `.//*[@id=//label[${labelMatch}]/@for]`;
|
|
162
|
+
const wrapped = `.//label[${labelMatch}]//*[self::input or self::textarea or self::select]`;
|
|
106
163
|
return By.xpath(`(${byFor} | ${wrapped})`);
|
|
107
164
|
}
|
|
108
165
|
static placeholder(text, opts) {
|
|
109
166
|
const eq = opts?.exact !== false;
|
|
110
167
|
const lit = xpStringLiteral(text);
|
|
111
168
|
const pred = eq ? `@placeholder = ${lit}` : `contains(@placeholder, ${lit})`;
|
|
112
|
-
return By.xpath(
|
|
169
|
+
return By.xpath(`.//*[(self::input or self::textarea) and ${pred}]`);
|
|
113
170
|
}
|
|
114
171
|
static altText(text, opts) {
|
|
115
172
|
const eq = opts?.exact !== false;
|
|
116
173
|
const lit = xpStringLiteral(text);
|
|
117
174
|
const pred = eq ? `@alt = ${lit}` : `contains(@alt, ${lit})`;
|
|
118
|
-
return By.xpath(
|
|
175
|
+
return By.xpath(`.//*[(self::img or self::area or (self::input and @type='image')) and ${pred}]`);
|
|
119
176
|
}
|
|
120
177
|
static title(text, opts) {
|
|
121
178
|
const eq = opts?.exact !== false;
|
|
122
179
|
const lit = xpStringLiteral(text);
|
|
123
180
|
const pred = eq ? `@title = ${lit}` : `contains(@title, ${lit})`;
|
|
124
|
-
return By.xpath(
|
|
181
|
+
return By.xpath(`.//*[@title and ${pred}]`);
|
|
182
|
+
}
|
|
183
|
+
// Link-text locators — the native W3C "link text" / "partial link text"
|
|
184
|
+
// location strategies, matching Selenium's By.linkText / By.partialLinkText.
|
|
185
|
+
// Unlike the XPath text helpers these match the browser-computed *rendered*
|
|
186
|
+
// text of `<a>` elements (so CSS text-transform is respected), and they
|
|
187
|
+
// scope correctly under a parent element in find-from-element, since the
|
|
188
|
+
// strategy is resolved by the driver rather than as a document-rooted XPath.
|
|
189
|
+
/** Match an `<a>` whose (trimmed) rendered text exactly equals `text`. */
|
|
190
|
+
static linkText(text) {
|
|
191
|
+
return new By('link text', text);
|
|
192
|
+
}
|
|
193
|
+
/** Match an `<a>` whose (trimmed) rendered text contains `text`. */
|
|
194
|
+
static partialLinkText(text) {
|
|
195
|
+
return new By('partial link text', text);
|
|
125
196
|
}
|
|
126
197
|
}
|
|
198
|
+
// True when the candidate has an ancestor that is sectioning content (or
|
|
199
|
+
// carries the explicit-role equivalent) — the condition that strips header/
|
|
200
|
+
// footer of their banner/contentinfo role per HTML-AAM.
|
|
201
|
+
const HAS_SECTIONING_ANCESTOR = 'ancestor::article or ancestor::aside or ancestor::main or ancestor::nav or ancestor::section' +
|
|
202
|
+
` or ancestor::*[${[
|
|
203
|
+
'article',
|
|
204
|
+
'complementary',
|
|
205
|
+
'main',
|
|
206
|
+
'navigation',
|
|
207
|
+
'region',
|
|
208
|
+
].map(roleTokenEquals).join(' or ')}]`;
|
|
209
|
+
// Implicit ARIA roles for common native elements. Each value is a list of XPath
|
|
210
|
+
// `self::` node tests; an element matches the role if it has `role="<role>"` or
|
|
211
|
+
// satisfies one of these. An approximation of the ARIA-in-HTML mapping covering
|
|
212
|
+
// the roles people actually query — not the full algorithm.
|
|
213
|
+
const IMPLICIT_ROLE_XPATH = {
|
|
214
|
+
button: [
|
|
215
|
+
'self::button',
|
|
216
|
+
"self::input[@type='button' or @type='submit' or @type='reset' or @type='image']",
|
|
217
|
+
'self::summary',
|
|
218
|
+
],
|
|
219
|
+
link: ['self::a[@href]', 'self::area[@href]'],
|
|
220
|
+
checkbox: ["self::input[@type='checkbox']"],
|
|
221
|
+
radio: ["self::input[@type='radio']"],
|
|
222
|
+
searchbox: ["self::input[@type='search']"],
|
|
223
|
+
textbox: [
|
|
224
|
+
'self::textarea',
|
|
225
|
+
"self::input[not(@type) or @type='text' or @type='email' or @type='tel' or @type='url']",
|
|
226
|
+
],
|
|
227
|
+
heading: ['self::h1', 'self::h2', 'self::h3', 'self::h4', 'self::h5', 'self::h6'],
|
|
228
|
+
img: ['self::img'],
|
|
229
|
+
list: ['self::ul', 'self::ol'],
|
|
230
|
+
listitem: ['self::li'],
|
|
231
|
+
table: ['self::table'],
|
|
232
|
+
row: ['self::tr'],
|
|
233
|
+
cell: ['self::td'],
|
|
234
|
+
columnheader: ['self::th'],
|
|
235
|
+
navigation: ['self::nav'],
|
|
236
|
+
main: ['self::main'],
|
|
237
|
+
// header/footer are only banner/contentinfo when not nested in sectioning
|
|
238
|
+
// content (article/aside/main/nav/section, or an element with the
|
|
239
|
+
// equivalent explicit role) — per the HTML-AAM mapping.
|
|
240
|
+
banner: [`self::header[not(${HAS_SECTIONING_ANCESTOR})]`],
|
|
241
|
+
contentinfo: [`self::footer[not(${HAS_SECTIONING_ANCESTOR})]`],
|
|
242
|
+
article: ['self::article'],
|
|
243
|
+
// A <select> is combobox unless it's a multi-select or has size > 1, in
|
|
244
|
+
// which case its implicit role is listbox (HTML-AAM).
|
|
245
|
+
combobox: ["self::select[not(@multiple) and (not(@size) or number(@size) <= 1)]"],
|
|
246
|
+
listbox: ['self::select[@multiple or (@size and number(@size) > 1)]'],
|
|
247
|
+
};
|
|
127
248
|
// Helpers
|
|
128
249
|
function cssEscape(s) {
|
|
129
250
|
// Minimal escape for quotes and backslashes in our usage
|
|
@@ -147,4 +268,7 @@ function normalizeSpaceLiteral(s) {
|
|
|
147
268
|
function toLower(expr) {
|
|
148
269
|
return `translate(${expr}, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')`;
|
|
149
270
|
}
|
|
271
|
+
function roleTokenEquals(role) {
|
|
272
|
+
return `substring-before(concat(normalize-space(@role), ' '), ' ') = ${xpStringLiteral(role)}`;
|
|
273
|
+
}
|
|
150
274
|
//# sourceMappingURL=by.js.map
|
package/dist/lib/by.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"by.js","sourceRoot":"","sources":["../../src/lib/by.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,EAAE;IAEJ;IACA;IAFT,YACS,KAAa,EACb,KAAa;QADb,UAAK,GAAL,KAAK,CAAQ;QACb,UAAK,GAAL,KAAK,CAAQ;IAClB,CAAC;IAEL,yBAAyB;IACzB,MAAM,CAAC,GAAG,CAAC,QAAgB;QACzB,OAAO,IAAI,EAAE,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,KAAa;QACxB,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,iCAAiC;IACjC,MAAM,CAAC,EAAE,CAAC,EAAU;QAClB,OAAO,IAAI,EAAE,CAAC,cAAc,EAAE,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,IAAY;QACtB,OAAO,IAAI,EAAE,CAAC,cAAc,EAAE,UAAU,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,CAAC,SAAS,CAAC,GAAW;QAC1B,OAAO,IAAI,EAAE,CAAC,cAAc,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,CAAC,OAAO,CAAC,GAAW;QACxB,OAAO,IAAI,EAAE,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,IAAY,EAAE,KAAa;QACrC,OAAO,IAAI,EAAE,CAAC,cAAc,EAAE,IAAI,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,CAAC,QAAQ,CAAC,IAAY,EAAE,KAAa;QACzC,OAAO,IAAI,EAAE,CAAC,cAAc,EAAE,SAAS,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,IAAY,EAAE,KAAa;QACrC,OAAO,IAAI,EAAE,CAAC,cAAc,EAAE,SAAS,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,KAAa;QACzB,OAAO,IAAI,EAAE,CAAC,cAAc,EAAE,iBAAiB,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,8BAA8B;IAC9B;;;;;;;;;OASG;IACH,MAAM,CAAC,IAAI,CACT,IAAY,EACZ,IAAmE;QAEnE,IAAI,IAAI,EAAE,KAAK,KAAK,KAAK,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,EAAE,GAAG,IAAI,EAAE,aAAa,KAAK,KAAK,CAAC,CAAC,eAAe;QACzD,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,eAAe;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC7E,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"by.js","sourceRoot":"","sources":["../../src/lib/by.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/chrome.d.ts
CHANGED
|
@@ -4,14 +4,26 @@ export type ChromeServiceOptions = Omit<DriverServiceOptions, 'command'> & {
|
|
|
4
4
|
* Absolute path to a `chromedriver` binary.
|
|
5
5
|
* When omitted, craftdriver resolves the driver automatically:
|
|
6
6
|
* 1. CRAFTDRIVER_DRIVER_PATH / CHROMEDRIVER_PATH / SE_CHROMEDRIVER env vars
|
|
7
|
-
* 2.
|
|
8
|
-
* 3. chromedriver
|
|
9
|
-
* 4.
|
|
7
|
+
* 2. Known CI-provided driver directories (e.g. GitHub Actions' CHROMEWEBDRIVER)
|
|
8
|
+
* 3. node_modules/.bin/chromedriver (if chromedriver npm package is installed)
|
|
9
|
+
* 4. chromedriver on PATH
|
|
10
|
+
* 5. Detect system Chrome version → download matching chromedriver from CfT
|
|
10
11
|
*/
|
|
11
12
|
binaryPath?: string;
|
|
13
|
+
/**
|
|
14
|
+
* A custom **browser** binary — Chrome or Chromium — distinct from
|
|
15
|
+
* `binaryPath` above (which names the *driver*). Not sent to the driver
|
|
16
|
+
* directly; used only so that if `binaryPath` is omitted and chromedriver
|
|
17
|
+
* has to be auto-downloaded, its version is detected from this binary
|
|
18
|
+
* instead of probing for system Chrome. To actually launch this binary,
|
|
19
|
+
* also set `LaunchOptions.browserPath` (or the `CRAFTDRIVER_CHROME_PATH`
|
|
20
|
+
* / `CHROME_BIN` env vars) — see docs/driver-configuration.md.
|
|
21
|
+
*/
|
|
22
|
+
browserPath?: string;
|
|
12
23
|
};
|
|
13
24
|
export declare class ChromeService extends DriverService {
|
|
14
25
|
private readonly binaryPath;
|
|
26
|
+
private readonly browserPath;
|
|
15
27
|
constructor(options?: ChromeServiceOptions);
|
|
16
28
|
start(): Promise<void>;
|
|
17
29
|
}
|
package/dist/lib/chrome.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../src/lib/chrome.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGxE,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,GAAG;IACzE
|
|
1
|
+
{"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../src/lib/chrome.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGxE,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,GAAG;IACzE;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,qBAAa,aAAc,SAAQ,aAAa;IAC9C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;gBAErC,OAAO,GAAE,oBAAyB;IAaxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAK7B"}
|
package/dist/lib/chrome.js
CHANGED
|
@@ -2,8 +2,9 @@ import { DriverService } from './service.js';
|
|
|
2
2
|
import { resolveChromeDriver } from './driverManager.js';
|
|
3
3
|
export class ChromeService extends DriverService {
|
|
4
4
|
binaryPath;
|
|
5
|
+
browserPath;
|
|
5
6
|
constructor(options = {}) {
|
|
6
|
-
const { binaryPath, ...rest } = options;
|
|
7
|
+
const { binaryPath, browserPath, ...rest } = options;
|
|
7
8
|
// Pass a placeholder command; the real path is resolved asynchronously in start().
|
|
8
9
|
super({
|
|
9
10
|
command: binaryPath ?? 'chromedriver',
|
|
@@ -12,11 +13,12 @@ export class ChromeService extends DriverService {
|
|
|
12
13
|
...rest,
|
|
13
14
|
});
|
|
14
15
|
this.binaryPath = binaryPath;
|
|
16
|
+
this.browserPath = browserPath;
|
|
15
17
|
}
|
|
16
18
|
async start() {
|
|
17
19
|
if (this.proc)
|
|
18
20
|
return;
|
|
19
|
-
this.opts.command = await resolveChromeDriver({ binaryPath: this.binaryPath });
|
|
21
|
+
this.opts.command = await resolveChromeDriver({ binaryPath: this.binaryPath, browserPath: this.browserPath });
|
|
20
22
|
await super.start();
|
|
21
23
|
}
|
|
22
24
|
}
|
package/dist/lib/chrome.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../src/lib/chrome.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA6B,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../src/lib/chrome.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA6B,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAyBzD,MAAM,OAAO,aAAc,SAAQ,aAAa;IAC7B,UAAU,CAAqB;IAC/B,WAAW,CAAqB;IAEjD,YAAY,UAAgC,EAAE;QAC5C,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QACrD,mFAAmF;QACnF,KAAK,CAAC;YACJ,OAAO,EAAE,UAAU,IAAI,cAAc;YACrC,QAAQ,EAAE,EAAE;YACZ,aAAa,EAAE,SAAS;YACxB,GAAG,IAAI;SACR,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,MAAM,mBAAmB,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC9G,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CACF"}
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
* 1. options.binaryPath (explicit)
|
|
6
6
|
* 2. CRAFTDRIVER_DRIVER_PATH
|
|
7
7
|
* 3. Legacy env vars (CHROMEDRIVER_PATH, SE_CHROMEDRIVER, etc.)
|
|
8
|
+
* 3.5. Known CI-provided driver directories (e.g. GitHub Actions'
|
|
9
|
+
* CHROMEWEBDRIVER / GECKOWEBDRIVER)
|
|
8
10
|
* 4. node_modules/.bin/chromedriver|geckodriver
|
|
9
11
|
* 5. PATH probe
|
|
10
12
|
* [CRAFTDRIVER_OFFLINE → throw here if no match yet]
|
|
@@ -13,6 +15,10 @@
|
|
|
13
15
|
* Only the driver binary is downloaded by default, never the browser itself.
|
|
14
16
|
* This avoids CfT's OS-dependency problems on lean Linux containers.
|
|
15
17
|
* See research/driver-manager.md for the full strategy.
|
|
18
|
+
*
|
|
19
|
+
* A separate, independent chain resolves a custom **browser** binary (Chrome/
|
|
20
|
+
* Chromium/Firefox) — see `resolveBrowserBinaryPath()` below. It's opt-in
|
|
21
|
+
* only: nothing resolving there changes any of the above.
|
|
16
22
|
*/
|
|
17
23
|
/**
|
|
18
24
|
* Drop the cached chromedriver resolution if it points at `driverPath`.
|
|
@@ -20,9 +26,34 @@
|
|
|
20
26
|
* only the "reuse this path without re-detecting Chrome" metadata is cleared.
|
|
21
27
|
*/
|
|
22
28
|
export declare function invalidateChromeDriverAutoResolutionCache(driverPath?: string): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Resolves a custom **browser** binary (Chrome/Chromium/Firefox) — distinct
|
|
31
|
+
* from `resolveChromeDriver`/`resolveFirefoxDriver`, which resolve the
|
|
32
|
+
* *driver* (chromedriver/geckodriver). Returns `undefined` when
|
|
33
|
+
* nothing resolves, in which case the caller forwards nothing and
|
|
34
|
+
* chromedriver/geckodriver fall back to their own built-in browser discovery
|
|
35
|
+
* (craftdriver's zero-config default, unchanged).
|
|
36
|
+
*
|
|
37
|
+
* Resolution chain (first match wins), each step validated with
|
|
38
|
+
* `fs.existsSync` — an invalid path falls through rather than being forwarded:
|
|
39
|
+
* 1. `explicitPath` (e.g. LaunchOptions.browserPath)
|
|
40
|
+
* 2. CRAFTDRIVER_CHROME_PATH / CRAFTDRIVER_FIREFOX_PATH (browser-specific)
|
|
41
|
+
* 3. CRAFTDRIVER_BROWSER_PATH (generic fallback, either browser)
|
|
42
|
+
* 4. Legacy/compatible env vars: CHROME_BIN / FIREFOX_BIN (community
|
|
43
|
+
* convention), SE_CHROME_PATH / SE_FIREFOX_PATH (Selenium Manager)
|
|
44
|
+
*/
|
|
45
|
+
export declare function resolveBrowserBinaryPath(kind: 'chrome' | 'firefox', explicitPath?: string): string | undefined;
|
|
23
46
|
/** Resolves the path to a chromedriver binary, downloading if necessary. */
|
|
24
47
|
export declare function resolveChromeDriver(options?: {
|
|
25
48
|
binaryPath?: string;
|
|
49
|
+
/**
|
|
50
|
+
* A custom browser binary (see {@link resolveBrowserBinaryPath}). When the
|
|
51
|
+
* driver itself has to be auto-downloaded (step 8), its version is detected
|
|
52
|
+
* from *this* binary instead of the system Chrome candidate list — so a
|
|
53
|
+
* custom Chromium build (whose version routinely doesn't match system
|
|
54
|
+
* Chrome) gets a matching chromedriver, not the wrong one.
|
|
55
|
+
*/
|
|
56
|
+
browserPath?: string;
|
|
26
57
|
}): Promise<string>;
|
|
27
58
|
/** Resolves the path to a geckodriver binary, downloading if necessary. */
|
|
28
59
|
export declare function resolveFirefoxDriver(options?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driverManager.d.ts","sourceRoot":"","sources":["../../src/lib/driverManager.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"driverManager.d.ts","sourceRoot":"","sources":["../../src/lib/driverManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAoEH;;;;GAIG;AACH,wBAAgB,yCAAyC,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAuBtF;AA0XD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAC1B,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,GAAG,SAAS,CA0BpB;AAED,4EAA4E;AAC5E,wBAAsB,mBAAmB,CAAC,OAAO,CAAC,EAAE;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,MAAM,CAAC,CA2FlB;AAED,2EAA2E;AAC3E,wBAAsB,oBAAoB,CAAC,OAAO,CAAC,EAAE;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyElB"}
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
* 1. options.binaryPath (explicit)
|
|
6
6
|
* 2. CRAFTDRIVER_DRIVER_PATH
|
|
7
7
|
* 3. Legacy env vars (CHROMEDRIVER_PATH, SE_CHROMEDRIVER, etc.)
|
|
8
|
+
* 3.5. Known CI-provided driver directories (e.g. GitHub Actions'
|
|
9
|
+
* CHROMEWEBDRIVER / GECKOWEBDRIVER)
|
|
8
10
|
* 4. node_modules/.bin/chromedriver|geckodriver
|
|
9
11
|
* 5. PATH probe
|
|
10
12
|
* [CRAFTDRIVER_OFFLINE → throw here if no match yet]
|
|
@@ -13,6 +15,10 @@
|
|
|
13
15
|
* Only the driver binary is downloaded by default, never the browser itself.
|
|
14
16
|
* This avoids CfT's OS-dependency problems on lean Linux containers.
|
|
15
17
|
* See research/driver-manager.md for the full strategy.
|
|
18
|
+
*
|
|
19
|
+
* A separate, independent chain resolves a custom **browser** binary (Chrome/
|
|
20
|
+
* Chromium/Firefox) — see `resolveBrowserBinaryPath()` below. It's opt-in
|
|
21
|
+
* only: nothing resolving there changes any of the above.
|
|
16
22
|
*/
|
|
17
23
|
import fs from 'fs';
|
|
18
24
|
import path from 'path';
|
|
@@ -403,6 +409,53 @@ async function downloadGeckodriver() {
|
|
|
403
409
|
return driverBin;
|
|
404
410
|
}
|
|
405
411
|
// ─── Public API ───────────────────────────────────────────────────────────────
|
|
412
|
+
// CI platforms that pre-install a version-matched driver and publish its
|
|
413
|
+
// directory via an env var. Not craftdriver-specific — these are the
|
|
414
|
+
// platform's own convention — so this step ranks below explicit config
|
|
415
|
+
// (steps 1-3) and only fills a gap when nothing more specific was set.
|
|
416
|
+
// Confirmed present with matching semantics on GitHub Actions' Ubuntu, macOS,
|
|
417
|
+
// and Windows runner images (see actions/runner-images per-image READMEs).
|
|
418
|
+
const CHROME_CI_DIR_ENV_VARS = ['CHROMEWEBDRIVER']; // GitHub Actions
|
|
419
|
+
const GECKO_CI_DIR_ENV_VARS = ['GECKOWEBDRIVER']; // GitHub Actions
|
|
420
|
+
/**
|
|
421
|
+
* Resolves a custom **browser** binary (Chrome/Chromium/Firefox) — distinct
|
|
422
|
+
* from `resolveChromeDriver`/`resolveFirefoxDriver`, which resolve the
|
|
423
|
+
* *driver* (chromedriver/geckodriver). Returns `undefined` when
|
|
424
|
+
* nothing resolves, in which case the caller forwards nothing and
|
|
425
|
+
* chromedriver/geckodriver fall back to their own built-in browser discovery
|
|
426
|
+
* (craftdriver's zero-config default, unchanged).
|
|
427
|
+
*
|
|
428
|
+
* Resolution chain (first match wins), each step validated with
|
|
429
|
+
* `fs.existsSync` — an invalid path falls through rather than being forwarded:
|
|
430
|
+
* 1. `explicitPath` (e.g. LaunchOptions.browserPath)
|
|
431
|
+
* 2. CRAFTDRIVER_CHROME_PATH / CRAFTDRIVER_FIREFOX_PATH (browser-specific)
|
|
432
|
+
* 3. CRAFTDRIVER_BROWSER_PATH (generic fallback, either browser)
|
|
433
|
+
* 4. Legacy/compatible env vars: CHROME_BIN / FIREFOX_BIN (community
|
|
434
|
+
* convention), SE_CHROME_PATH / SE_FIREFOX_PATH (Selenium Manager)
|
|
435
|
+
*/
|
|
436
|
+
export function resolveBrowserBinaryPath(kind, explicitPath) {
|
|
437
|
+
if (explicitPath) {
|
|
438
|
+
if (fs.existsSync(explicitPath))
|
|
439
|
+
return explicitPath;
|
|
440
|
+
// A candidate was actually supplied here, so a silent fallthrough would
|
|
441
|
+
// hide a typo behind a browser that quietly launches from somewhere else
|
|
442
|
+
// entirely. Everything below the auto-download path already announces
|
|
443
|
+
// itself the same way (see downloadChromedriver/downloadGeckodriver).
|
|
444
|
+
process.stderr.write(`[craftdriver] browserPath "${explicitPath}" does not exist; falling back to the next resolution step.\n`);
|
|
445
|
+
}
|
|
446
|
+
const specificEnvVar = kind === 'chrome' ? 'CRAFTDRIVER_CHROME_PATH' : 'CRAFTDRIVER_FIREFOX_PATH';
|
|
447
|
+
const legacyBinEnvVar = kind === 'chrome' ? 'CHROME_BIN' : 'FIREFOX_BIN';
|
|
448
|
+
const legacySeEnvVar = kind === 'chrome' ? 'SE_CHROME_PATH' : 'SE_FIREFOX_PATH';
|
|
449
|
+
for (const envVar of [specificEnvVar, 'CRAFTDRIVER_BROWSER_PATH', legacyBinEnvVar, legacySeEnvVar]) {
|
|
450
|
+
const p = process.env[envVar];
|
|
451
|
+
if (!p)
|
|
452
|
+
continue;
|
|
453
|
+
if (fs.existsSync(p))
|
|
454
|
+
return p;
|
|
455
|
+
process.stderr.write(`[craftdriver] ${envVar}="${p}" does not exist; falling back to the next resolution step.\n`);
|
|
456
|
+
}
|
|
457
|
+
return undefined;
|
|
458
|
+
}
|
|
406
459
|
/** Resolves the path to a chromedriver binary, downloading if necessary. */
|
|
407
460
|
export async function resolveChromeDriver(options) {
|
|
408
461
|
// 1. Explicit constructor argument.
|
|
@@ -421,6 +474,20 @@ export async function resolveChromeDriver(options) {
|
|
|
421
474
|
if (p && fs.existsSync(p))
|
|
422
475
|
return p;
|
|
423
476
|
}
|
|
477
|
+
// 3.5. Known CI-provided driver directories (e.g. GitHub Actions'
|
|
478
|
+
// CHROMEWEBDRIVER). Cheaper than a cache read (fs.existsSync) and a
|
|
479
|
+
// stronger signal than anything below: the CI platform vendor
|
|
480
|
+
// guarantees this driver matches the pre-installed browser version.
|
|
481
|
+
// Not cached — it's already as cheap as a cache read, so caching it
|
|
482
|
+
// would only add stale-path risk for no benefit.
|
|
483
|
+
for (const envVar of CHROME_CI_DIR_ENV_VARS) {
|
|
484
|
+
const dir = process.env[envVar];
|
|
485
|
+
if (!dir)
|
|
486
|
+
continue;
|
|
487
|
+
const candidate = path.join(dir, driverBinName());
|
|
488
|
+
if (fs.existsSync(candidate))
|
|
489
|
+
return candidate;
|
|
490
|
+
}
|
|
424
491
|
// 4. Auto-resolution cache. Once we've auto-resolved a chromedriver (step 7
|
|
425
492
|
// below), reuse it for a TTL window instead of re-probing PATH (a blocking
|
|
426
493
|
// `which` spawn, ~80ms) and re-launching Chrome to read its version
|
|
@@ -448,14 +515,24 @@ export async function resolveChromeDriver(options) {
|
|
|
448
515
|
throw new Error('CRAFTDRIVER_OFFLINE is set and no chromedriver was found.\n' +
|
|
449
516
|
'Set CRAFTDRIVER_DRIVER_PATH to a local chromedriver binary.');
|
|
450
517
|
}
|
|
451
|
-
// 8. Detect
|
|
452
|
-
// the result in the auto-resolution cache read at step 4.
|
|
518
|
+
// 8. Detect the browser + download a matching driver from CfT, then record
|
|
519
|
+
// the result in the auto-resolution cache read at step 4. If a custom
|
|
520
|
+
// browser binary was given, detect its version directly instead of
|
|
521
|
+
// probing the system Chrome candidate list (see resolveChromeDriver's
|
|
522
|
+
// `browserPath` option doc). This assumes the binary answers `--version`
|
|
523
|
+
// the way Chrome/Chromium does — untested against anything that doesn't
|
|
524
|
+
// (e.g. Electron), so `browserPath` is documented as Chrome/Chromium-only
|
|
525
|
+
// for now.
|
|
453
526
|
const p = os.platform();
|
|
454
|
-
const candidates = CHROME_CANDIDATES[p] ?? ['google-chrome'];
|
|
527
|
+
const candidates = options?.browserPath ? [options.browserPath] : (CHROME_CANDIDATES[p] ?? ['google-chrome']);
|
|
455
528
|
const detected = detectBrowserVersion(candidates);
|
|
456
529
|
if (!detected) {
|
|
457
|
-
throw new Error(
|
|
458
|
-
|
|
530
|
+
throw new Error(options?.browserPath
|
|
531
|
+
? `Could not read a Chrome/Chromium version from browserPath "${options.browserPath}" ` +
|
|
532
|
+
'(it did not respond to --version the way Chrome/Chromium does).\n' +
|
|
533
|
+
'Set CRAFTDRIVER_CHROMEDRIVER_PATH to a chromedriver binary that matches it instead of relying on auto-detection.'
|
|
534
|
+
: 'Could not detect a system Chrome or Chromium installation.\n' +
|
|
535
|
+
'Install Chrome, or set CRAFTDRIVER_DRIVER_PATH to a local chromedriver binary.');
|
|
459
536
|
}
|
|
460
537
|
const driverPath = await downloadChromedriver(detected.version);
|
|
461
538
|
// Refresh TTL record regardless of whether we downloaded a new binary.
|
|
@@ -480,6 +557,17 @@ export async function resolveFirefoxDriver(options) {
|
|
|
480
557
|
if (p && fs.existsSync(p))
|
|
481
558
|
return p;
|
|
482
559
|
}
|
|
560
|
+
// 3.5. Known CI-provided driver directories (e.g. GitHub Actions'
|
|
561
|
+
// GECKOWEBDRIVER). See resolveChromeDriver's equivalent step for why
|
|
562
|
+
// this ranks here and isn't cached.
|
|
563
|
+
for (const envVar of GECKO_CI_DIR_ENV_VARS) {
|
|
564
|
+
const dir = process.env[envVar];
|
|
565
|
+
if (!dir)
|
|
566
|
+
continue;
|
|
567
|
+
const candidate = path.join(dir, geckoBinName());
|
|
568
|
+
if (fs.existsSync(candidate))
|
|
569
|
+
return candidate;
|
|
570
|
+
}
|
|
483
571
|
// 4. Auto-resolution cache. Once geckodriver has been auto-resolved (step 8
|
|
484
572
|
// below writes this record), reuse it for a TTL window instead of probing
|
|
485
573
|
// PATH (a blocking `which` spawn) and re-detecting Firefox on every
|
|
@@ -494,8 +582,11 @@ export async function resolveFirefoxDriver(options) {
|
|
|
494
582
|
const localBin = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../..', 'node_modules/.bin/geckodriver');
|
|
495
583
|
if (fs.existsSync(localBin))
|
|
496
584
|
return localBin;
|
|
497
|
-
// 6. PATH probe.
|
|
498
|
-
|
|
585
|
+
// 6. PATH probe (skipped when CRAFTDRIVER_SKIP_PATH_PROBE is set, e.g. in
|
|
586
|
+
// integration tests that need to exercise the auto-download path even on
|
|
587
|
+
// systems where geckodriver is already installed). Mirrors
|
|
588
|
+
// resolveChromeDriver's equivalent step.
|
|
589
|
+
if (!process.env.CRAFTDRIVER_SKIP_PATH_PROBE && commandOnPath('geckodriver'))
|
|
499
590
|
return 'geckodriver';
|
|
500
591
|
// 7. Offline guard.
|
|
501
592
|
if (process.env.CRAFTDRIVER_OFFLINE) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driverManager.js","sourceRoot":"","sources":["../../src/lib/driverManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAE9E,iFAAiF;AAEjF,SAAS,QAAQ;IACf,OAAO,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,KAAK;IACZ,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,OAAO,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;AAC5E,CAAC;AAcD,SAAS,YAAY;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,eAAe,CAAC,EAAE,OAAO,CAAC,CAAC;QAC7E,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAa,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAAc;IACnC,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;IACvB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACnF,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,QAAgB;IAC7C,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1F,OAAO,MAAM,CAAC,UAAU,CAAC;IAC3B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,+EAA+E;AAC/E,SAAS,oBAAoB,CAAC,QAAgB,EAAE,OAAe,EAAE,UAAkB;IACjF,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAChE,aAAa,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yCAAyC,CAAC,UAAmB;IAC3E,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,IAAI,IAAc,CAAC;IACnB,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,gBAAgB,WAAW,EAAE,EAAE,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,4EAA4E;QAC5E,4CAA4C;QAC5C,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,IAAI,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,YAAY;YAAE,SAAS;QAC9E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IAED,IAAI,OAAO;QAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,OAAO,CAAC;AACjB,CAAC;AAMD,2DAA2D;AAC3D,SAAS,WAAW;IAClB,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IACxB,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;IACpB,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,IAAI,CAAC,KAAK,OAAO;QAAE,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1D,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;QAClB,2EAA2E;QAC3E,qEAAqE;QACrE,MAAM,IAAI,KAAK,CACb,qEAAqE;YACrE,uFAAuF,CACxF,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,mBAAmB;IAC1B,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IACxB,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;IACpB,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC;IACrE,IAAI,CAAC,KAAK,OAAO;QAAE,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1D,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;AACrD,CAAC;AAED,SAAS,aAAa;IACpB,OAAO,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC;AACzE,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC;AACvE,CAAC;AAED,iFAAiF;AAEjF,SAAS,QAAQ,CAAC,GAAW,EAAE,KAAK,GAAG,CAAC;IACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAAC,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACxE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;YACnE,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;YACtC,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAChF,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvC,OAAO;YACT,CAAC;YACD,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,UAAU,aAAa,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC5D,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACtE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,GAAW,EAAE,IAAY,EAAE,KAAK,GAAG,CAAC;IACzD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAAC,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACxE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;YACnE,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;YACtC,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAChF,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClD,OAAO;YACT,CAAC;YACD,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,UAAU,qBAAqB,GAAG,EAAE,CAAC,CAAC,CAAC;gBACpE,OAAO;YACT,CAAC;YACD,MAAM,GAAG,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACvC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC1E,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACxB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,iFAAiF;AAEjF,SAAS,UAAU,CAAC,OAAe,EAAE,OAAe;IAClD,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO,EAAE,CAAC;QAC9B,4EAA4E;QAC5E,iDAAiD;QACjD,MAAM,CAAC,GAAG,SAAS,CAAC,YAAY,EAAE;YAChC,YAAY,EAAE,UAAU;YACxB,gBAAgB;YAChB,QAAQ;YACR,OAAO,EAAE,OAAO;YAChB,kBAAkB,EAAE,OAAO;SAC5B,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE;YACjE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,OAAe,EAAE,OAAe;IACpD,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE;QAC3D,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;KAClC,CAAC,CAAC;IACH,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,MAAM,iBAAiB,GAAiD;IACtE,MAAM,EAAE;QACN,8DAA8D;QAC9D,oDAAoD;KACrD;IACD,KAAK,EAAE,CAAC,eAAe,EAAE,sBAAsB,EAAE,UAAU,EAAE,kBAAkB,CAAC;IAChF,KAAK,EAAE;QACL,4DAA4D;QAC5D,kEAAkE;KACnE;CACF,CAAC;AAEF,MAAM,kBAAkB,GAAiD;IACvE,MAAM,EAAE,CAAC,kDAAkD,CAAC;IAC5D,KAAK,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;IACjC,KAAK,EAAE;QACL,iDAAiD;QACjD,uDAAuD;KACxD;CACF,CAAC;AAEF,SAAS,oBAAoB,CAC3B,UAAoB;IAEpB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE;gBACjD,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,wBAAwB;gBACjC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;aAClC,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBACzC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;gBACnD,IAAI,KAAK;oBAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB;QACvB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,iFAAiF;AAEjF,SAAS,aAAa,CAAC,GAAW;IAChC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE;YACxE,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,qBAAqB;YAC9B,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QACH,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,MAAM,YAAY,GAChB,+FAA+F,CAAC;AASlG,KAAK,UAAU,oBAAoB,CAAC,cAAsB;IACxD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;IAClF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAEhD,8EAA8E;IAC9E,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAE/C,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kDAAkD,cAAc,KAAK,CACtE,CAAC;IAEF,MAAM,IAAI,GAA+B,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IAElF,iFAAiF;IACjF,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ;SAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC;SAC5E,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,YAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;SAC7E,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,IAAI,CAAC,CAAC,OAAO,KAAK,cAAc;YAAE,OAAO,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,CAAC,OAAO,KAAK,cAAc;YAAE,OAAO,CAAC,CAAC;QAC3C,OAAO,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEL,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,0DAA0D,cAAc,OAAO,QAAQ,KAAK;YAC5F,qFAAqF,CACtF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,YAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAE,CAAC;IAEnF,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,0CAA0C,MAAM,CAAC,OAAO,KAAK,CAC9D,CAAC;IACF,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9C,2EAA2E;IAC3E,uEAAuE;IACvE,4EAA4E;IAC5E,mEAAmE;IACnE,4EAA4E;IAC5E,+EAA+E;IAC/E,+CAA+C;IAC/C,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAC3E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACtD,MAAM,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAEvC,6DAA6D;QAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACjD,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAE/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;QAC5E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,yCAAyC,QAAQ,oBAAoB,CACtE,CAAC;QACJ,CAAC;QAED,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,0EAA0E;QAC1E,6EAA6E;QAC7E,mDAAmD;QACnD,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,MAAM,GAAG,CAAC;QAC3C,CAAC;QAED,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO;YAAE,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,iFAAiF;AAEjF,MAAM,wBAAwB,GAC5B,kEAAkE,CAAC;AAErE,KAAK,UAAU,mBAAmB;IAChC,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IACvC,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,eAAe,QAAQ,EAAE,CAAC;IAC3C,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAE3D,6EAA6E;IAC7E,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAElC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAM7E,MAAM,OAAO,GAAiB,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACnF,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,iBAAiB;IAEnD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAEhD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,iEAAiE;QACjE,8DAA8D;QAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAChE,CAAC;QACF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,4CAA4C,QAAQ,MAAM;gBAC1D,oFAAoF,CACrF,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,OAAO,KAAK,CAAC,CAAC;QAC5E,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE9C,wEAAwE;QACxE,2DAA2D;QAC3D,yEAAyE;QACzE,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,EAAE,CAAC,CAAC;YACxD,MAAM,aAAa,CAAC,KAAK,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;YAEzD,+DAA+D;YAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACjD,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACnB,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YACpC,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CACb,6CAA6C,QAAQ,oBAAoB,CAC1E,CAAC;YACJ,CAAC;YAED,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,yEAAyE;YACzE,gEAAgE;YAChE,IAAI,CAAC;gBACH,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;oBAAE,MAAM,GAAG,CAAC;YAC3C,CAAC;YAED,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO;gBAAE,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAChE,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACnD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,iFAAiF;AAEjF,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAEzC;IACC,oCAAoC;IACpC,IAAI,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7D,OAAO,OAAO,CAAC,UAAU,CAAC;IAC5B,CAAC;IAED,oFAAoF;IACpF,KAAK,MAAM,MAAM,IAAI,CAAC,+BAA+B,EAAE,yBAAyB,CAAC,EAAE,CAAC;QAClF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;IACrD,CAAC;IAED,4CAA4C;IAC5C,KAAK,MAAM,MAAM,IAAI,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,EAAE,CAAC;QAC9D,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,4EAA4E;IAC5E,8EAA8E;IAC9E,uEAAuE;IACvE,4EAA4E;IAC5E,6EAA6E;IAC7E,8EAA8E;IAC9E,6EAA6E;IAC7E,6EAA6E;IAC7E,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,gBAAgB,WAAW,EAAE,EAAE,CAAC;IACjD,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAElC,iDAAiD;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAC3B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAC5C,OAAO,EACP,gCAAgC,CACjC,CAAC;IACF,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE7C,0EAA0E;IAC1E,4EAA4E;IAC5E,uDAAuD;IACvD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,aAAa,CAAC,cAAc,CAAC;QAAE,OAAO,cAAc,CAAC;IAErG,oBAAoB;IACpB,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,6DAA6D;YAC7D,6DAA6D,CAC9D,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,6DAA6D;IAC7D,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAuB,CAAC;IAC7C,MAAM,UAAU,GAAG,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,8DAA8D;YAC9D,gFAAgF,CACjF,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEhE,uEAAuE;IACvE,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC7D,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAE1C;IACC,oCAAoC;IACpC,IAAI,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7D,OAAO,OAAO,CAAC,UAAU,CAAC;IAC5B,CAAC;IAED,oFAAoF;IACpF,KAAK,MAAM,MAAM,IAAI,CAAC,8BAA8B,EAAE,yBAAyB,CAAC,EAAE,CAAC;QACjF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;IACrD,CAAC;IAED,4CAA4C;IAC5C,KAAK,MAAM,MAAM,IAAI,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,gBAAgB,CAAC,EAAE,CAAC;QACpF,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,4EAA4E;IAC5E,6EAA6E;IAC7E,uEAAuE;IACvE,8EAA8E;IAC9E,6EAA6E;IAC7E,+EAA+E;IAC/E,MAAM,QAAQ,GAAG,eAAe,mBAAmB,EAAE,EAAE,CAAC;IACxD,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAElC,gDAAgD;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAC3B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAC5C,OAAO,EACP,+BAA+B,CAChC,CAAC;IACF,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE7C,iBAAiB;IACjB,IAAI,aAAa,CAAC,aAAa,CAAC;QAAE,OAAO,aAAa,CAAC;IAEvD,oBAAoB;IACpB,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,4DAA4D;YAC5D,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IAED,kEAAkE;IAClE,yEAAyE;IACzE,0EAA0E;IAC1E,mDAAmD;IACnD,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAuB,CAAC;IAC7C,MAAM,UAAU,GAAG,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,yFAAyF,CAC1F,CAAC;IACJ,CAAC;IACD,OAAO,mBAAmB,EAAE,CAAC;AAC/B,CAAC"}
|
|
1
|
+
{"version":3,"file":"driverManager.js","sourceRoot":"","sources":["../../src/lib/driverManager.ts"],"names":[],"mappings":"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"}
|