craftdriver 1.4.0 → 1.6.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 (87) hide show
  1. package/CHANGELOG.md +17 -3
  2. package/README.md +6 -2
  3. package/dist/cli/daemon.d.ts.map +1 -1
  4. package/dist/cli/daemon.js +4 -0
  5. package/dist/cli/daemon.js.map +1 -1
  6. package/dist/cli/mcp/server.d.ts.map +1 -1
  7. package/dist/cli/mcp/server.js +4 -0
  8. package/dist/cli/mcp/server.js.map +1 -1
  9. package/dist/cli/parseArgs.d.ts +2 -2
  10. package/dist/cli/parseArgs.d.ts.map +1 -1
  11. package/dist/cli/parseArgs.js +1 -1
  12. package/dist/index.d.ts +2 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +1 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/lib/bidi/storage.d.ts +13 -0
  17. package/dist/lib/bidi/storage.d.ts.map +1 -1
  18. package/dist/lib/bidi/storage.js +81 -32
  19. package/dist/lib/bidi/storage.js.map +1 -1
  20. package/dist/lib/browser.d.ts +48 -3
  21. package/dist/lib/browser.d.ts.map +1 -1
  22. package/dist/lib/browser.js +212 -86
  23. package/dist/lib/browser.js.map +1 -1
  24. package/dist/lib/browserContext.d.ts +2 -2
  25. package/dist/lib/browserContext.d.ts.map +1 -1
  26. package/dist/lib/browserContext.js +1 -1
  27. package/dist/lib/builder.d.ts +16 -2
  28. package/dist/lib/builder.d.ts.map +1 -1
  29. package/dist/lib/builder.js +46 -2
  30. package/dist/lib/builder.js.map +1 -1
  31. package/dist/lib/capabilities.d.ts +20 -2
  32. package/dist/lib/capabilities.d.ts.map +1 -1
  33. package/dist/lib/capabilities.js +109 -48
  34. package/dist/lib/capabilities.js.map +1 -1
  35. package/dist/lib/driver.d.ts +33 -2
  36. package/dist/lib/driver.d.ts.map +1 -1
  37. package/dist/lib/driver.js +91 -2
  38. package/dist/lib/driver.js.map +1 -1
  39. package/dist/lib/driverManager.d.ts +28 -0
  40. package/dist/lib/driverManager.d.ts.map +1 -1
  41. package/dist/lib/driverManager.js +60 -0
  42. package/dist/lib/driverManager.js.map +1 -1
  43. package/dist/lib/elementHandle.d.ts.map +1 -1
  44. package/dist/lib/elementHandle.js +34 -0
  45. package/dist/lib/elementHandle.js.map +1 -1
  46. package/dist/lib/http.d.ts.map +1 -1
  47. package/dist/lib/http.js +31 -10
  48. package/dist/lib/http.js.map +1 -1
  49. package/dist/lib/launchTarget.d.ts +22 -3
  50. package/dist/lib/launchTarget.d.ts.map +1 -1
  51. package/dist/lib/launchTarget.js +159 -9
  52. package/dist/lib/launchTarget.js.map +1 -1
  53. package/dist/lib/remote.d.ts +55 -0
  54. package/dist/lib/remote.d.ts.map +1 -0
  55. package/dist/lib/remote.js +127 -0
  56. package/dist/lib/remote.js.map +1 -0
  57. package/dist/lib/safari.d.ts +90 -0
  58. package/dist/lib/safari.d.ts.map +1 -0
  59. package/dist/lib/safari.js +136 -0
  60. package/dist/lib/safari.js.map +1 -0
  61. package/dist/lib/tracing.d.ts +1 -1
  62. package/dist/lib/tracing.d.ts.map +1 -1
  63. package/dist/lib/tracing.js.map +1 -1
  64. package/dist/lib/types.d.ts +63 -0
  65. package/dist/lib/types.d.ts.map +1 -1
  66. package/dist/lib/vibiumTrace.d.ts +1 -1
  67. package/dist/lib/vibiumTrace.d.ts.map +1 -1
  68. package/dist/lib/webelement.d.ts.map +1 -1
  69. package/dist/lib/webelement.js +118 -2
  70. package/dist/lib/webelement.js.map +1 -1
  71. package/docs/api-reference.md +6 -2
  72. package/docs/browser-api.md +5 -4
  73. package/docs/driver-configuration.md +60 -0
  74. package/docs/getting-started.md +30 -10
  75. package/docs/index.md +2 -1
  76. package/docs/keyboard-mouse.md +7 -5
  77. package/docs/public/examples/displayed.html +86 -0
  78. package/docs/recipes/run-on-browserstack.md +265 -0
  79. package/docs/recipes.md +15 -1
  80. package/docs/remote-webdriver.md +308 -0
  81. package/docs/safari.md +118 -0
  82. package/docs/standards.md +18 -0
  83. package/docs/why-craftdriver.md +3 -1
  84. package/docs/zero-config-drivers.md +12 -0
  85. package/package.json +5 -1
  86. package/skills/craftdriver/SKILL.md +4 -1
  87. package/skills/craftdriver/cheatsheet.md +4 -1
@@ -1,57 +1,118 @@
1
+ /**
2
+ * Fill the BiDi-request capabilities (`webSocketUrl` + prompt-ignore) when
3
+ * absent; explicit caller values are left untouched. `promptBehavior: 'string'`
4
+ * sends the plain `'ignore'` enum for strict W3C hubs (e.g. BrowserStack) that
5
+ * reject the per-prompt map form; `'map'` (local default) ignores `beforeUnload`
6
+ * explicitly. Either shape leaves prompts open so BiDi prompt events can fire.
7
+ */
8
+ export function applyBidiDefaults(caps, bidiRequested, promptBehavior = 'map') {
9
+ if (!bidiRequested)
10
+ return;
11
+ if (caps.webSocketUrl === undefined)
12
+ caps.webSocketUrl = true;
13
+ if (caps.unhandledPromptBehavior === undefined) {
14
+ caps.unhandledPromptBehavior =
15
+ promptBehavior === 'string'
16
+ ? 'ignore'
17
+ : {
18
+ alert: 'ignore',
19
+ confirm: 'ignore',
20
+ prompt: 'ignore',
21
+ beforeUnload: 'ignore',
22
+ };
23
+ }
24
+ }
1
25
  /**
2
26
  * Build the W3C capabilities for a launch. Pure: no I/O, no driver spawn.
27
+ *
28
+ * Branches on browser family explicitly (chrome-family / firefox / safari)
29
+ * rather than a binary `isFirefox` if/else. The old binary shape meant
30
+ * "anything that isn't Firefox" fell into the `goog:chromeOptions` branch —
31
+ * harmless while only two families existed, but a real bug once Safari was
32
+ * added: a naive change would have sent `goog:chromeOptions` (including
33
+ * `--headless=new` and Chrome download prefs) to `safaridriver`, which
34
+ * doesn't understand Chrome vendor capabilities. The switch below has an
35
+ * exhaustive, `never`-typed default so a future browser family that forgets
36
+ * its own branch fails to compile instead of silently reusing Chrome's.
3
37
  */
4
38
  export function buildLaunchCapabilities(input) {
5
- const isFirefox = input.browserName === 'firefox';
6
39
  const caps = {};
7
- if (!isFirefox) {
8
- const chromeOptions = {
9
- // Electron is a GUI app with no headless mode — never inject --headless,
10
- // even if HEADLESS is set (it would make Electron fail to start a window).
11
- args: [
12
- ...(input.isHeadless && !input.isElectron ? ['--headless=new'] : []),
13
- ...(input.args ?? []),
14
- ],
15
- prefs: {
16
- 'download.default_directory': input.downloadsDir,
17
- 'download.prompt_for_download': false,
18
- 'safebrowsing.enabled': true,
19
- },
20
- };
21
- if (input.browserBinary)
22
- chromeOptions.binary = input.browserBinary;
23
- if (input.mobileEmulation)
24
- chromeOptions.mobileEmulation = input.mobileEmulation;
25
- caps['goog:chromeOptions'] = chromeOptions;
26
- }
27
- else {
28
- const firefoxArgs = [];
29
- if (input.isHeadless)
30
- firefoxArgs.push('-headless');
31
- if (input.args?.length)
32
- firefoxArgs.push(...input.args);
33
- caps['moz:firefoxOptions'] = {
34
- args: firefoxArgs,
35
- prefs: {
36
- 'browser.download.folderList': 2,
37
- 'browser.download.dir': input.downloadsDir,
38
- 'browser.download.useDownloadDir': true,
39
- 'browser.helperApps.neverAsk.saveToDisk': 'application/octet-stream,application/pdf,text/plain,text/csv,application/zip',
40
- 'pdfjs.disabled': true,
41
- },
42
- ...(input.browserBinary ? { binary: input.browserBinary } : {}),
43
- };
40
+ switch (input.browserName) {
41
+ case 'chrome':
42
+ case 'chromium': {
43
+ const chromeOptions = {
44
+ // Electron is a GUI app with no headless mode — never inject --headless,
45
+ // even if HEADLESS is set (it would make Electron fail to start a window).
46
+ args: [
47
+ ...(input.isHeadless && !input.isElectron ? ['--headless=new'] : []),
48
+ ...(input.args ?? []),
49
+ ],
50
+ prefs: {
51
+ 'download.default_directory': input.downloadsDir,
52
+ 'download.prompt_for_download': false,
53
+ 'safebrowsing.enabled': true,
54
+ },
55
+ };
56
+ if (input.browserBinary)
57
+ chromeOptions.binary = input.browserBinary;
58
+ if (input.mobileEmulation)
59
+ chromeOptions.mobileEmulation = input.mobileEmulation;
60
+ caps['goog:chromeOptions'] = chromeOptions;
61
+ break;
62
+ }
63
+ case 'firefox': {
64
+ const firefoxArgs = [];
65
+ if (input.isHeadless)
66
+ firefoxArgs.push('-headless');
67
+ if (input.args?.length)
68
+ firefoxArgs.push(...input.args);
69
+ caps['moz:firefoxOptions'] = {
70
+ args: firefoxArgs,
71
+ prefs: {
72
+ 'browser.download.folderList': 2,
73
+ 'browser.download.dir': input.downloadsDir,
74
+ 'browser.download.useDownloadDir': true,
75
+ 'browser.helperApps.neverAsk.saveToDisk': 'application/octet-stream,application/pdf,text/plain,text/csv,application/zip',
76
+ 'pdfjs.disabled': true,
77
+ },
78
+ ...(input.browserBinary ? { binary: input.browserBinary } : {}),
79
+ };
80
+ break;
81
+ }
82
+ case 'safari': {
83
+ // Standard W3C capabilities only. No goog:chromeOptions, no
84
+ // moz:firefoxOptions — safaridriver doesn't understand either. Safari
85
+ // has no custom binary, args, mobileEmulation, or downloadsDir support
86
+ // (all rejected upstream in resolveLaunchTarget()), so there is nothing
87
+ // vendor-specific to attach here.
88
+ //
89
+ // Defense in depth on webSocketUrl: `input.bidiRequested` is already
90
+ // always `false` for Safari by the time this function runs (enforced
91
+ // in resolveLaunchTarget()/Browser.launch — Safari has no
92
+ // documented WebDriver BiDi endpoint). We still don't read
93
+ // `input.bidiRequested` in this branch at all, rather than trusting
94
+ // that invariant here too — so even if a future caller path ever
95
+ // miscomputes `bidiRequested` for Safari, this branch structurally
96
+ // cannot emit `webSocketUrl`. This intentionally does not change the
97
+ // single-`bidiRequested`-flag design for chrome-family/firefox below;
98
+ // it's a narrow Safari-only safety net, not a second source of truth.
99
+ break;
100
+ }
101
+ // Extension seam: a future browser family adds its own `case` here with
102
+ // whatever vendor-prefixed capabilities it needs. The `never`-typed default
103
+ // below forces that to be a compile error rather than silently reusing
104
+ // Chrome's options — do not add speculative branches before there's a real
105
+ // target.
106
+ default: {
107
+ const _exhaustive = input.browserName;
108
+ throw new Error(`buildLaunchCapabilities: unhandled browserName "${String(_exhaustive)}"`);
109
+ }
44
110
  }
45
- if (input.bidiRequested) {
46
- // Request the BiDi WebSocket URL...
47
- caps.webSocketUrl = true;
48
- // ...and set all prompt types to 'ignore' so BiDi events fire and we can handle them.
49
- caps.unhandledPromptBehavior = {
50
- alert: 'ignore',
51
- confirm: 'ignore',
52
- prompt: 'ignore',
53
- beforeUnload: 'ignore',
54
- };
111
+ // Safari's branch above never reaches here with bidiRequested true (see the
112
+ // comment in that branch) because it's rejected earlier in the launch
113
+ // pipeline; this keeps the single-flag design for the other families.
114
+ if (input.browserName !== 'safari') {
115
+ applyBidiDefaults(caps, input.bidiRequested);
55
116
  }
56
117
  return caps;
57
118
  }
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/lib/capabilities.ts"],"names":[],"mappings":"AAgCA;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAA4B;IAClE,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC;IAElD,MAAM,IAAI,GAAiB,EAAE,CAAC;IAE9B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,aAAa,GAA4B;YAC7C,yEAAyE;YACzE,2EAA2E;YAC3E,IAAI,EAAE;gBACJ,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;aACtB;YACD,KAAK,EAAE;gBACL,4BAA4B,EAAE,KAAK,CAAC,YAAY;gBAChD,8BAA8B,EAAE,KAAK;gBACrC,sBAAsB,EAAE,IAAI;aAC7B;SACF,CAAC;QACF,IAAI,KAAK,CAAC,aAAa;YAAE,aAAa,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;QACpE,IAAI,KAAK,CAAC,eAAe;YAAE,aAAa,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;QACjF,IAAI,CAAC,oBAAoB,CAAC,GAAG,aAAa,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,UAAU;YAAE,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpD,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM;YAAE,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,oBAAoB,CAAC,GAAG;YAC3B,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE;gBACL,6BAA6B,EAAE,CAAC;gBAChC,sBAAsB,EAAE,KAAK,CAAC,YAAY;gBAC1C,iCAAiC,EAAE,IAAI;gBACvC,wCAAwC,EACtC,8EAA8E;gBAChF,gBAAgB,EAAE,IAAI;aACvB;YACD,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChE,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACxB,oCAAoC;QACpC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,sFAAsF;QACtF,IAAI,CAAC,uBAAuB,GAAG;YAC7B,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE,QAAQ;YACjB,MAAM,EAAE,QAAQ;YAChB,YAAY,EAAE,QAAQ;SACvB,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/lib/capabilities.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAkB,EAClB,aAAsB,EACtB,iBAAmC,KAAK;IAExC,IAAI,CAAC,aAAa;QAAE,OAAO;IAC3B,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;QAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC9D,IAAI,IAAI,CAAC,uBAAuB,KAAK,SAAS,EAAE,CAAC;QAC/C,IAAI,CAAC,uBAAuB;YAC1B,cAAc,KAAK,QAAQ;gBACzB,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC;oBACE,KAAK,EAAE,QAAQ;oBACf,OAAO,EAAE,QAAQ;oBACjB,MAAM,EAAE,QAAQ;oBAChB,YAAY,EAAE,QAAQ;iBACvB,CAAC;IACV,CAAC;AACH,CAAC;AAgCD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAA4B;IAClE,MAAM,IAAI,GAAiB,EAAE,CAAC;IAE9B,QAAQ,KAAK,CAAC,WAAW,EAAE,CAAC;QAC1B,KAAK,QAAQ,CAAC;QACd,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,aAAa,GAA4B;gBAC7C,yEAAyE;gBACzE,2EAA2E;gBAC3E,IAAI,EAAE;oBACJ,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpE,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;iBACtB;gBACD,KAAK,EAAE;oBACL,4BAA4B,EAAE,KAAK,CAAC,YAAY;oBAChD,8BAA8B,EAAE,KAAK;oBACrC,sBAAsB,EAAE,IAAI;iBAC7B;aACF,CAAC;YACF,IAAI,KAAK,CAAC,aAAa;gBAAE,aAAa,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;YACpE,IAAI,KAAK,CAAC,eAAe;gBAAE,aAAa,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;YACjF,IAAI,CAAC,oBAAoB,CAAC,GAAG,aAAa,CAAC;YAC3C,MAAM;QACR,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,WAAW,GAAa,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,UAAU;gBAAE,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACpD,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM;gBAAE,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YACxD,IAAI,CAAC,oBAAoB,CAAC,GAAG;gBAC3B,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE;oBACL,6BAA6B,EAAE,CAAC;oBAChC,sBAAsB,EAAE,KAAK,CAAC,YAAY;oBAC1C,iCAAiC,EAAE,IAAI;oBACvC,wCAAwC,EACtC,8EAA8E;oBAChF,gBAAgB,EAAE,IAAI;iBACvB;gBACD,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChE,CAAC;YACF,MAAM;QACR,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,4DAA4D;YAC5D,sEAAsE;YACtE,uEAAuE;YACvE,wEAAwE;YACxE,kCAAkC;YAClC,EAAE;YACF,qEAAqE;YACrE,qEAAqE;YACrE,0DAA0D;YAC1D,2DAA2D;YAC3D,oEAAoE;YACpE,iEAAiE;YACjE,mEAAmE;YACnE,qEAAqE;YACrE,sEAAsE;YACtE,sEAAsE;YACtE,MAAM;QACR,CAAC;QACD,wEAAwE;QACxE,4EAA4E;QAC5E,uEAAuE;QACvE,2EAA2E;QAC3E,UAAU;QACV,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,KAAK,CAAC,WAAW,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,mDAAmD,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,sEAAsE;IACtE,sEAAsE;IACtE,IAAI,KAAK,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QACnC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { Capabilities, WebDriverEndpoint } from './types.js';
1
+ import type { Capabilities, WebDriverEndpoint, ClassicCookie, ClassicCookieInput } from './types.js';
2
2
  import { By } from './by.js';
3
3
  import { WebElement } from './webelement.js';
4
4
  import { type Condition, type WaitOptions } from './wait.js';
@@ -8,7 +8,17 @@ export declare class Driver {
8
8
  /** BiDi WebSocket URL if available */
9
9
  __wsUrl?: string;
10
10
  constructor(endpoint: WebDriverEndpoint, sessionId: string);
11
- static create(endpoint: WebDriverEndpoint, caps: Capabilities): Promise<Driver>;
11
+ /**
12
+ * True for sessions created against a remote WebDriver endpoint.
13
+ * `poolKey` is only ever stamped by `parseRemoteEndpoint()` (`remote.ts`),
14
+ * never by a local `DriverService` endpoint, so its presence is a reliable
15
+ * signal — used by callers with no direct `Browser` reference (e.g.
16
+ * `ElementHandle`) that still need a remote/local branch.
17
+ */
18
+ isRemote(): boolean;
19
+ static create(endpoint: WebDriverEndpoint, caps: Capabilities, options?: {
20
+ timeoutMs?: number;
21
+ }): Promise<Driver>;
12
22
  navigateTo(url: string): Promise<void>;
13
23
  /** W3C `POST /session/{id}/back` — navigate the current top-level browsing context back one step. */
14
24
  back(): Promise<void>;
@@ -17,6 +27,12 @@ export declare class Driver {
17
27
  /** W3C `POST /session/{id}/refresh` — reload the current top-level browsing context. */
18
28
  refresh(): Promise<void>;
19
29
  quit(): Promise<void>;
30
+ /**
31
+ * Upload a base64-encoded zip through Selenium's `se/file` extension (Grid
32
+ * nodes and BrowserStack both accept it) and return the file's path on the
33
+ * remote node — pass that to a subsequent `sendKeys()` on the file input.
34
+ */
35
+ uploadFile(base64Zip: string): Promise<string>;
20
36
  getCurrentUrl(): Promise<string>;
21
37
  getTitle(): Promise<string>;
22
38
  findElement(locator: By): Promise<WebElement>;
@@ -62,6 +78,21 @@ export declare class Driver {
62
78
  acceptAlert(): Promise<void>;
63
79
  dismissAlert(): Promise<void>;
64
80
  sendAlertText(text: string): Promise<void>;
81
+ /** W3C `GET /session/{id}/cookie` — all cookies visible to the current browsing context. */
82
+ getCookies(): Promise<ClassicCookie[]>;
83
+ /**
84
+ * W3C `GET /session/{id}/cookie/{name}` — a single cookie by name.
85
+ * Returns `null` (rather than throwing) when the spec's `no such cookie`
86
+ * error comes back, matching how the codebase treats other "might not exist"
87
+ * lookups (`no such element` → recoverable, see `wait.ts`/`clearFastPath.ts`).
88
+ */
89
+ getCookie(name: string): Promise<ClassicCookie | null>;
90
+ /** W3C `POST /session/{id}/cookie` — add a cookie to the current browsing context. */
91
+ addCookie(cookie: ClassicCookieInput): Promise<void>;
92
+ /** W3C `DELETE /session/{id}/cookie/{name}` — delete a single cookie by name. */
93
+ deleteCookie(name: string): Promise<void>;
94
+ /** W3C `DELETE /session/{id}/cookie` — delete every cookie in the current browsing context. */
95
+ deleteAllCookies(): Promise<void>;
65
96
  __sendActions(actions: any[]): Promise<void>;
66
97
  /**
67
98
  * Switch to an iframe by null (top-level), numeric index, or element reference.
@@ -1 +1 @@
1
- {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/lib/driver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/lib/driver.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,17 @@ export class Driver {
17
17
  this.endpoint = endpoint;
18
18
  this.sessionId = sessionId;
19
19
  }
20
- static async create(endpoint, caps) {
20
+ /**
21
+ * True for sessions created against a remote WebDriver endpoint.
22
+ * `poolKey` is only ever stamped by `parseRemoteEndpoint()` (`remote.ts`),
23
+ * never by a local `DriverService` endpoint, so its presence is a reliable
24
+ * signal — used by callers with no direct `Browser` reference (e.g.
25
+ * `ElementHandle`) that still need a remote/local branch.
26
+ */
27
+ isRemote() {
28
+ return this.endpoint.poolKey !== undefined;
29
+ }
30
+ static async create(endpoint, caps, options) {
21
31
  const client = new HttpClient(endpoint);
22
32
  let res;
23
33
  try {
@@ -25,7 +35,7 @@ export class Driver {
25
35
  method: 'POST',
26
36
  path: '/session',
27
37
  body: { capabilities: { alwaysMatch: caps } },
28
- timeoutMs: SESSION_CREATE_TIMEOUT_MS,
38
+ timeoutMs: options?.timeoutMs ?? SESSION_CREATE_TIMEOUT_MS,
29
39
  });
30
40
  }
31
41
  catch (err) {
@@ -79,6 +89,21 @@ export class Driver {
79
89
  client.close();
80
90
  }
81
91
  }
92
+ /**
93
+ * Upload a base64-encoded zip through Selenium's `se/file` extension (Grid
94
+ * nodes and BrowserStack both accept it) and return the file's path on the
95
+ * remote node — pass that to a subsequent `sendKeys()` on the file input.
96
+ */
97
+ async uploadFile(base64Zip) {
98
+ const client = new HttpClient(this.endpoint);
99
+ const res = await client.send({
100
+ method: 'POST',
101
+ path: `/session/${this.sessionId}/se/file`,
102
+ body: { file: base64Zip },
103
+ });
104
+ const value = res?.value ?? res;
105
+ return String(value ?? '');
106
+ }
82
107
  async getCurrentUrl() {
83
108
  const client = new HttpClient(this.endpoint);
84
109
  const res = await client.send({
@@ -457,6 +482,70 @@ export class Driver {
457
482
  body: { text },
458
483
  });
459
484
  }
485
+ // --- Cookies (W3C Classic WebDriver) ---
486
+ //
487
+ // These hit the browser's native cookie store, so — unlike `document.cookie`
488
+ // script injection — they see `HttpOnly` cookies and report real
489
+ // `secure`/`sameSite`/`path`/`expiry` values. `SessionStateManager`'s
490
+ // Classic-mode branches are built on top of these.
491
+ /** W3C `GET /session/{id}/cookie` — all cookies visible to the current browsing context. */
492
+ async getCookies() {
493
+ const client = new HttpClient(this.endpoint);
494
+ const res = await client.send({
495
+ method: 'GET',
496
+ path: `/session/${this.sessionId}/cookie`,
497
+ });
498
+ const v = res?.value ?? res;
499
+ return Array.isArray(v) ? v : [];
500
+ }
501
+ /**
502
+ * W3C `GET /session/{id}/cookie/{name}` — a single cookie by name.
503
+ * Returns `null` (rather than throwing) when the spec's `no such cookie`
504
+ * error comes back, matching how the codebase treats other "might not exist"
505
+ * lookups (`no such element` → recoverable, see `wait.ts`/`clearFastPath.ts`).
506
+ */
507
+ async getCookie(name) {
508
+ const client = new HttpClient(this.endpoint);
509
+ try {
510
+ const res = await client.send({
511
+ method: 'GET',
512
+ path: `/session/${this.sessionId}/cookie/${encodeURIComponent(name)}`,
513
+ });
514
+ const v = res?.value ?? res;
515
+ return v ?? null;
516
+ }
517
+ catch (err) {
518
+ if (CraftdriverError.is(err, ErrorCode.DRIVER_ERROR) && err.detail?.webDriverError === 'no such cookie') {
519
+ return null;
520
+ }
521
+ throw err;
522
+ }
523
+ }
524
+ /** W3C `POST /session/{id}/cookie` — add a cookie to the current browsing context. */
525
+ async addCookie(cookie) {
526
+ const client = new HttpClient(this.endpoint);
527
+ await client.send({
528
+ method: 'POST',
529
+ path: `/session/${this.sessionId}/cookie`,
530
+ body: { cookie },
531
+ });
532
+ }
533
+ /** W3C `DELETE /session/{id}/cookie/{name}` — delete a single cookie by name. */
534
+ async deleteCookie(name) {
535
+ const client = new HttpClient(this.endpoint);
536
+ await client.send({
537
+ method: 'DELETE',
538
+ path: `/session/${this.sessionId}/cookie/${encodeURIComponent(name)}`,
539
+ });
540
+ }
541
+ /** W3C `DELETE /session/{id}/cookie` — delete every cookie in the current browsing context. */
542
+ async deleteAllCookies() {
543
+ const client = new HttpClient(this.endpoint);
544
+ await client.send({
545
+ method: 'DELETE',
546
+ path: `/session/${this.sessionId}/cookie`,
547
+ });
548
+ }
460
549
  // Internal helper for ActionsBuilder to send combined payloads
461
550
  async __sendActions(actions) {
462
551
  const client = new HttpClient(this.endpoint);
@@ -1 +1 @@
1
- {"version":3,"file":"driver.js","sourceRoot":"","sources":["../../src/lib/driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGvC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,aAAa,EAAoC,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD,SAAS,uBAAuB,CAAC,GAAY;IAC3C,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,YAAY,CAAC;QAAE,OAAO,KAAK,CAAC;IACpE,OAAO,GAAG,CAAC,MAAM,EAAE,cAAc,KAAK,2BAA2B,CAAC;AACpE,CAAC;AAED,MAAM,OAAO,MAAM;IAKP;IACA;IALV,sCAAsC;IAC/B,OAAO,CAAU;IAExB,YACU,QAA2B,EAC3B,SAAiB;QADjB,aAAQ,GAAR,QAAQ,CAAmB;QAC3B,cAAS,GAAT,SAAS,CAAQ;IACvB,CAAC;IAEL,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAA2B,EAAE,IAAkB;QACjE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,GAAqC,CAAC;QAC1C,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAkB;gBACvC,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,EAAE,YAAY,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE;gBAC7C,SAAS,EAAE,yBAAyB;aACrC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,MAAM,KAAK,GACR,GAAwC,EAAE,KAAK,IAAK,GAAkC,CAAC;QAC1F,MAAM,SAAS,GAAI,KAAyB,EAAE,SAAS,IAAK,GAAW,EAAE,SAAS,CAAC;QACnF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,GAAQ,KAAY,CAAC;YAC5B,MAAM,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC;YACrB,MAAM,GAAG,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACzD,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAE/C,4DAA4D;QAC5D,MAAM,YAAY,GAAI,KAAa,EAAE,YAAY,IAAK,GAAW,EAAE,YAAY,CAAC;QAChF,IAAI,YAAY,EAAE,YAAY,EAAE,CAAC;YAC/B,MAAM,CAAC,OAAO,GAAG,YAAY,CAAC,YAAY,CAAC;QAC7C,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW;QAC1B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAC/F,CAAC;IAED,qGAAqG;IACrG,KAAK,CAAC,IAAI;QACR,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,iGAAiG;IACjG,KAAK,CAAC,OAAO;QACX,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,wFAAwF;IACxF,KAAK,CAAC,OAAO;QACX,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC9E,CAAC;gBAAS,CAAC;YACT,mEAAmE;YACnE,4DAA4D;YAC5D,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAS;YACpC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,MAAM;SACvC,CAAC,CAAC;QACH,MAAM,CAAC,GAAI,GAA+B,EAAE,KAAK,IAAK,GAAyB,CAAC;QAChF,OAAO,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAS;YACpC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,QAAQ;SACzC,CAAC,CAAC;QACH,MAAM,CAAC,GAAI,GAA+B,EAAE,KAAK,IAAK,GAAyB,CAAC;QAChF,OAAO,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAW;QAC3B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAyB;YACpD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,UAAU;YAC1C,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;SACrD,CAAC,CAAC;QACH,MAAM,KAAK,GACR,GAA+C,EAAE,KAAK;YACtD,GAAyC,CAAC;QAC7C,MAAM,IAAI,GAAI,KAAa,EAAE,CAAC,eAAe,CAAC,IAAK,KAAa,EAAE,CAAC,kBAAkB,CAAC,CAAC;QACvF,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzE,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAW;QAC5B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAyD;YACpF,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,WAAW;YAC3C,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;SACrD,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,CAAE,GAAsD,EAAE,KAAK;YACxE,GAAgD,CAAkC,CAAC;QACtF,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;aACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,MAAM,IAAI,GAAI,CAAS,EAAE,CAAC,eAAe,CAAC,IAAK,CAAS,EAAE,CAAC,kBAAkB,CAAC,CAAC;YAC/E,IAAI,CAAC,IAAI;gBAAE,OAAO,SAAS,CAAC;YAC5B,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7D,CAAC,CAAC;aACD,MAAM,CAAC,OAAO,CAAiB,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,aAAa,CAAc,MAAc,EAAE,OAAkB,EAAE;QACnE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAI;YAC/B,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,eAAe;YAC/C,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;SACvB,CAAC,CAAC;QACH,OAAO,CAAE,GAA0B,EAAE,KAAK,IAAK,GAAoB,CAAM,CAAC;IAC5E,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,kBAAkB,CAAc,MAAc,EAAE,OAAkB,EAAE;QACxE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAI;YAC/B,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,gBAAgB;YAChD,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;SACvB,CAAC,CAAC;QACH,OAAO,CAAE,GAA0B,EAAE,KAAK,IAAK,GAAoB,CAAM,CAAC;IAC5E,CAAC;IAED,uEAAuE;IACvE,KAAK,CAAC,gBAAgB,CAAC,EAAU;QAC/B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,MAAM,CAAC,IAAI,CAAC;YAChB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,WAAW;YAC3C,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;SACrB,CAAC,CAAC;IACL,CAAC;IASD,IAAI,CAAI,SAAuB,EAAE,CAAO,EAAE,CAAO,EAAE,CAAO;QACxD,qEAAqE;QACrE,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,CAAuC,CAAC;YAC3F,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9F,CAAC;QACD,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,CAAuB,EAAE,CAAuB,CAAC,CAAC,KAAK,CACpF,SAAS,EACT,CAAuB,CACxB,CAAC;IACJ,CAAC;IAED,iCAAiC;IACjC,wEAAwE;IAExE,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,SAAiB,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,MAAM,CAAC,IAAI,CAAC;gBAChB,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,UAAU;gBAC1C,IAAI,EAAE;oBACJ,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,KAAK;4BACX,EAAE,EAAE,UAAU;4BACd,OAAO,EAAE;gCACP,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;gCAChC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;6BAC/B;yBACF;qBACF;iBACF;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,MAAM,CAAC,IAAI,CAAC;YAChB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,UAAU;YAC1C,IAAI,EAAE;gBACJ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;aACxF;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,MAAM,CAAC,IAAI,CAAC;YAChB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,UAAU;YAC1C,IAAI,EAAE;gBACJ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;aACtF;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAY;QACzB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;YAC/C,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;YAC9B,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;SAC7B,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC;YAChB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,UAAU;YAC1C,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE;SAC9D,CAAC,CAAC;IACL,CAAC;IAED,wBAAwB;IACxB,KAAK,CAAC,aAAa,CACjB,aAA0B,EAC1B,CAAU,EACV,CAAU,EACV,WAAmB,CAAC;QAEpB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,WAAW,GAA4B,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;QAC/E,IAAI,aAAa,EAAE,CAAC;YAClB,WAAW,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;YAC5C,sFAAsF;YACtF,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,MAAM,GAAG,UAAU,CAAC;YAChC,WAAW,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvB,WAAW,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;YACjC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,UAAU;YAC1C,IAAI,EAAE;gBACJ,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,SAAS;wBACf,EAAE,EAAE,OAAO;wBACX,UAAU,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE;wBACpC,OAAO,EAAE,CAAC,WAAW,CAAC;qBACvB;iBACF;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,QAAQ,EAAE,CAAC;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,aAAa,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC;gBAAE,MAAM,GAAG,CAAC;YAC/D,oFAAoF;YACpF,MAAM,IAAI,CAAC,aAAa,CACtB,qEAAqE,EACrE,CAAC,aAAa,CAAC,CAChB,CAAC;YACF,MAAM,QAAQ,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAiB,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,MAAM,CAAC,IAAI,CAAC;YAChB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,UAAU;YAC1C,IAAI,EAAE;gBACJ,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,SAAS;wBACf,EAAE,EAAE,OAAO;wBACX,UAAU,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE;wBACpC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;qBAC3C;iBACF;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAAiB,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,MAAM,CAAC,IAAI,CAAC;YAChB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,UAAU;YAC1C,IAAI,EAAE;gBACJ,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,SAAS;wBACf,EAAE,EAAE,OAAO;wBACX,UAAU,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE;wBACpC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;qBACzC;iBACF;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,aAA0B,EAC1B,CAAU,EACV,CAAU,EACV,SAAiB,CAAC,EAClB,QAAgB,CAAC,EACjB,eAAuB,EAAE;QAEzB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,WAAW,GAA4B,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;QAC7F,IAAI,aAAa,EAAE,CAAC;YAClB,WAAW,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;YAC5C,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,MAAM,GAAG,UAAU,CAAC;YAChC,WAAW,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvB,WAAW,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,MAAM,WAAW,GAAG;YAClB,WAAW;YACX,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE;YAC/B,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE;SAC9B,CAAC;QACF,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;QACrF,MAAM,MAAM,CAAC,IAAI,CAAC;YAChB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,UAAU;YAC1C,IAAI,EAAE;gBACJ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC;aAC3F;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW,CACf,MAAc,EACd,MAAc,EACd,IAAY,CAAC,EACb,IAAY,CAAC,EACb,WAAmB,CAAC;QAEpB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,MAAM,CAAC,IAAI,CAAC;YAChB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,UAAU;YAC1C,IAAI,EAAE;gBACJ,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,OAAO;wBACb,EAAE,EAAE,OAAO;wBACX,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;qBAC9D;iBACF;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,IAAsB,EACtB,EAAoB,EACpB,UAAU,GAAG,GAAG;QAEhB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;QACtB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;QACpB,MAAM,MAAM,CAAC,IAAI,CAAC;YAChB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,UAAU;YAC1C,IAAI,EAAE;gBACJ,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,SAAS;wBACf,EAAE,EAAE,SAAS;wBACb,UAAU,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE;wBACpC,OAAO,EAAE;4BACP,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;4BAClD,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE;4BAClC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;4BAC3D,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE;yBACjC;qBACF;iBACF;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,MAAwB,EACxB,KAAK,GAAG,GAAG,EACX,QAAQ,GAAG,GAAG,EACd,UAAU,GAAG,GAAG;QAEhB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC;QACxB,MAAM,EAAE,GAAG,QAAQ,GAAG,CAAC,CAAC;QACxB,MAAM,EAAE,GAAG,CAAC,CAAC;QACb,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAU,CAAC;QAC3C,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAU,CAAC;QAC3C,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,KAAK,CAAU,CAAC;QACzD,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,KAAK,CAAU,CAAC;QACzD,MAAM,MAAM,CAAC,IAAI,CAAC;YAChB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,UAAU;YAC1C,IAAI,EAAE;gBACJ,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,SAAS;wBACf,EAAE,EAAE,SAAS;wBACb,UAAU,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE;wBACpC,OAAO,EAAE;4BACP,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;4BAChE,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE;4BAClC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE;4BACrE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE;yBACjC;qBACF;oBACD;wBACE,IAAI,EAAE,SAAS;wBACf,EAAE,EAAE,SAAS;wBACb,UAAU,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE;wBACpC,OAAO,EAAE;4BACP,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;4BAChE,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE;4BAClC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE;4BACrE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE;yBACjC;qBACF;iBACF;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAM;YACjC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,aAAa;SAC9C,CAAC,CAAC;QACH,OAAO,MAAM,CAAE,GAAW,EAAE,KAAK,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CAAC,IAA+D;QACjF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,IAAI,GAA2B,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAChF,IAAI,IAAI,CAAC,CAAC,KAAK,SAAS;YAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,CAAC,KAAK,SAAS;YAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAC1C,MAAM,MAAM,CAAC,IAAI,CAAC;YAChB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,cAAc;YAC9C,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,2DAA2D;IAE3D,KAAK,CAAC,YAAY;QAChB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAS;YACpC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,aAAa;SAC9C,CAAC,CAAC;QACH,OAAO,MAAM,CAAE,GAAW,EAAE,KAAK,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,eAAe,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACnG,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,gBAAgB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACpG,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAY;QAC9B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,MAAM,CAAC,IAAI,CAAC;YAChB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,aAAa;YAC7C,IAAI,EAAE,EAAE,IAAI,EAAE;SACf,CAAC,CAAC;IACL,CAAC;IAED,+DAA+D;IAC/D,KAAK,CAAC,aAAa,CAAC,OAAc;QAChC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,MAAM,CAAC,IAAI,CAAC;YAChB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,UAAU;YAC1C,IAAI,EAAE,EAAE,OAAO,EAAE;SAClB,CAAC,CAAC;IACL,CAAC;IAED,2DAA2D;IAE3D;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,EAAyC;QAC3D,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,MAAe,CAAC;QACpB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAChB,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,GAAG,EAAE,CAAC;QACd,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC;QACnF,CAAC;QACD,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IACxG,CAAC;IAED,yDAAyD;IACzD,KAAK,CAAC,gBAAgB;QACpB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAW,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAAC;QAC9G,MAAM,CAAC,GAAI,GAAiC,EAAE,KAAK,IAAK,GAA2B,CAAC;QACpF,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnC,CAAC;IAED,wDAAwD;IACxD,KAAK,CAAC,cAAc,CAAC,MAAc;QACjC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,SAAS,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IACrG,CAAC;IAED,0DAA0D;IAC1D,KAAK,CAAC,sBAAsB;QAC1B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAS,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC;QACpG,MAAM,CAAC,GAAI,GAA+B,EAAE,KAAK,IAAK,GAAyB,CAAC;QAChF,OAAO,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"driver.js","sourceRoot":"","sources":["../../src/lib/driver.ts"],"names":[],"mappings":"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"}
@@ -151,4 +151,32 @@ export declare function readChromeDriverVersion(binaryPath: string): string | un
151
151
  export declare function resolveFirefoxDriver(options?: {
152
152
  binaryPath?: string;
153
153
  }): Promise<string>;
154
+ /**
155
+ * Resolves the path to a `safaridriver` binary.
156
+ *
157
+ * Unlike {@link resolveChromeDriver}/{@link resolveFirefoxDriver}, this chain
158
+ * has **no download step and never fetches anything**. Safari's WebDriver
159
+ * remote end ships with macOS/Safari itself (there is no separate driver to
160
+ * download, and nothing licensed to fetch even if we wanted to — Apple bundles
161
+ * a version-matched `safaridriver` with each Safari build). So resolution can
162
+ * only ever *locate* an already-installed binary, and its terminal step is a
163
+ * clear, actionable error rather than an auto-download.
164
+ *
165
+ * Resolution chain (first match wins):
166
+ * 1. `options.binaryPath` (explicit — e.g. `SafariService`'s `binaryPath`,
167
+ * also how Safari Technology Preview's own `safaridriver` is selected)
168
+ * 2. `CRAFTDRIVER_SAFARIDRIVER_PATH` env var
169
+ * 3. `CRAFTDRIVER_DRIVER_PATH` generic env var
170
+ * 4. `/usr/bin/safaridriver` (the fixed system location on every real macOS)
171
+ * 5. `safaridriver` on `PATH`
172
+ * 6. Throw with actionable guidance (never a silent hang or a bare `ENOENT`).
173
+ *
174
+ * This function only finds the *binary*. Whether Safari's "Allow Remote
175
+ * Automation" is enabled is a separate, session-creation-time concern (see the
176
+ * lifecycle task): detecting it needs a real `safaridriver` response, so it is
177
+ * deliberately not attempted here.
178
+ */
179
+ export declare function resolveSafariDriver(options?: {
180
+ binaryPath?: string;
181
+ }): Promise<string>;
154
182
  //# sourceMappingURL=driverManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"driverManager.d.ts","sourceRoot":"","sources":["../../src/lib/driverManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAsEH;;;;GAIG;AACH,wBAAgB,yCAAyC,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAuBtF;AAkYD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAC1B,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,GAAG,SAAS,CA+BpB;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,CA8FlB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,MAAM,0BAA0B,GAClC,UAAU,GACV,aAAa,GACb,SAAS,GACT,SAAS,GACT,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,CAAC;AAEvB,MAAM,WAAW,8BAA8B;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,0BAA0B,CAAC;IACnC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA4BD,oEAAoE;AACpE,wBAAsB,+BAA+B,CAAC,OAAO,CAAC,EAAE;IAC9D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,8BAA8B,CAAC,CA4F1C;AA4CD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,GAAG,SAAS,CAWrF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,4BAA4B,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAuBvF;AAED,qEAAqE;AACrE,wBAAsB,2BAA2B,CAAC,OAAO,CAAC,EAAE;IAC1D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,MAAM,CAAC,CAElB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAS9E;AAED,2EAA2E;AAC3E,wBAAsB,oBAAoB,CAAC,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA0E7F"}
1
+ {"version":3,"file":"driverManager.d.ts","sourceRoot":"","sources":["../../src/lib/driverManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAsEH;;;;GAIG;AACH,wBAAgB,yCAAyC,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAuBtF;AAkYD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAC1B,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,GAAG,SAAS,CA+BpB;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,CA8FlB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,MAAM,0BAA0B,GAClC,UAAU,GACV,aAAa,GACb,SAAS,GACT,SAAS,GACT,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,CAAC;AAEvB,MAAM,WAAW,8BAA8B;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,0BAA0B,CAAC;IACnC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA4BD,oEAAoE;AACpE,wBAAsB,+BAA+B,CAAC,OAAO,CAAC,EAAE;IAC9D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,8BAA8B,CAAC,CA4F1C;AA4CD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,GAAG,SAAS,CAWrF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,4BAA4B,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAuBvF;AAED,qEAAqE;AACrE,wBAAsB,2BAA2B,CAAC,OAAO,CAAC,EAAE;IAC1D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,MAAM,CAAC,CAElB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAS9E;AAED,2EAA2E;AAC3E,wBAAsB,oBAAoB,CAAC,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA0E7F;AAKD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAoC5F"}
@@ -824,4 +824,64 @@ export async function resolveFirefoxDriver(options) {
824
824
  }
825
825
  return downloadGeckodriver();
826
826
  }
827
+ /** The fixed location Apple installs `safaridriver` at on every real macOS. */
828
+ const SYSTEM_SAFARIDRIVER_PATH = '/usr/bin/safaridriver';
829
+ /**
830
+ * Resolves the path to a `safaridriver` binary.
831
+ *
832
+ * Unlike {@link resolveChromeDriver}/{@link resolveFirefoxDriver}, this chain
833
+ * has **no download step and never fetches anything**. Safari's WebDriver
834
+ * remote end ships with macOS/Safari itself (there is no separate driver to
835
+ * download, and nothing licensed to fetch even if we wanted to — Apple bundles
836
+ * a version-matched `safaridriver` with each Safari build). So resolution can
837
+ * only ever *locate* an already-installed binary, and its terminal step is a
838
+ * clear, actionable error rather than an auto-download.
839
+ *
840
+ * Resolution chain (first match wins):
841
+ * 1. `options.binaryPath` (explicit — e.g. `SafariService`'s `binaryPath`,
842
+ * also how Safari Technology Preview's own `safaridriver` is selected)
843
+ * 2. `CRAFTDRIVER_SAFARIDRIVER_PATH` env var
844
+ * 3. `CRAFTDRIVER_DRIVER_PATH` generic env var
845
+ * 4. `/usr/bin/safaridriver` (the fixed system location on every real macOS)
846
+ * 5. `safaridriver` on `PATH`
847
+ * 6. Throw with actionable guidance (never a silent hang or a bare `ENOENT`).
848
+ *
849
+ * This function only finds the *binary*. Whether Safari's "Allow Remote
850
+ * Automation" is enabled is a separate, session-creation-time concern (see the
851
+ * lifecycle task): detecting it needs a real `safaridriver` response, so it is
852
+ * deliberately not attempted here.
853
+ */
854
+ export async function resolveSafariDriver(options) {
855
+ // 1. Explicit constructor argument.
856
+ if (options?.binaryPath && fs.existsSync(options.binaryPath)) {
857
+ return options.binaryPath;
858
+ }
859
+ // 2 & 3. craftdriver-specific env vars (Safari-specific first, then generic).
860
+ for (const envVar of ['CRAFTDRIVER_SAFARIDRIVER_PATH', 'CRAFTDRIVER_DRIVER_PATH']) {
861
+ const p = process.env[envVar];
862
+ if (p && fs.existsSync(p))
863
+ return p;
864
+ }
865
+ // 4. The fixed system location Apple installs safaridriver at on macOS.
866
+ if (fs.existsSync(SYSTEM_SAFARIDRIVER_PATH))
867
+ return SYSTEM_SAFARIDRIVER_PATH;
868
+ // 5. PATH probe (skipped when CRAFTDRIVER_SKIP_PATH_PROBE is set, matching
869
+ // resolveChromeDriver/resolveFirefoxDriver). Covers Safari Technology
870
+ // Preview installs that put their safaridriver on PATH, or unusual layouts.
871
+ if (!process.env.CRAFTDRIVER_SKIP_PATH_PROBE && commandOnPath('safaridriver')) {
872
+ return 'safaridriver';
873
+ }
874
+ // 6. Nothing resolved. There is no download fallback: safaridriver ships with
875
+ // macOS/Safari, so a missing binary means Safari/macOS itself is absent or
876
+ // the environment isn't macOS — not something craftdriver can fetch. Match
877
+ // the plain-`Error` shape resolveChromeDriver/resolveFirefoxDriver use for
878
+ // their own terminal "nothing resolved" case, with actionable guidance.
879
+ throw new Error("Could not find 'safaridriver'. Safari's WebDriver support ships with " +
880
+ `macOS/Safari itself — it is not downloaded — and is normally at ${SYSTEM_SAFARIDRIVER_PATH}.\n` +
881
+ 'Safari automation must also be enabled once per machine, via ' +
882
+ '`safaridriver --enable` or Safari → Develop → Allow Remote Automation ' +
883
+ '(craftdriver does not run this for you — it changes a security setting).\n' +
884
+ 'For Safari Technology Preview, or a non-standard install, point ' +
885
+ 'SafariService({ binaryPath }) or CRAFTDRIVER_SAFARIDRIVER_PATH at its safaridriver binary.');
886
+ }
827
887
  //# sourceMappingURL=driverManager.js.map