latchkey 0.1.3 → 0.1.4

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 (42) hide show
  1. package/README.md +17 -1
  2. package/dist/scripts/recordBrowserSession.js +1 -1
  3. package/dist/scripts/recordBrowserSession.js.map +1 -1
  4. package/dist/src/browserConfig.d.ts +30 -27
  5. package/dist/src/browserConfig.d.ts.map +1 -1
  6. package/dist/src/browserConfig.js +125 -94
  7. package/dist/src/browserConfig.js.map +1 -1
  8. package/dist/src/cli.js +1 -1
  9. package/dist/src/cliCommands.d.ts.map +1 -1
  10. package/dist/src/cliCommands.js +54 -6
  11. package/dist/src/cliCommands.js.map +1 -1
  12. package/dist/src/config.d.ts +1 -0
  13. package/dist/src/config.d.ts.map +1 -1
  14. package/dist/src/config.js +5 -0
  15. package/dist/src/config.js.map +1 -1
  16. package/dist/src/playwrightDownload.d.ts +44 -0
  17. package/dist/src/playwrightDownload.d.ts.map +1 -0
  18. package/dist/src/playwrightDownload.js +222 -0
  19. package/dist/src/playwrightDownload.js.map +1 -0
  20. package/dist/src/playwrightUtils.d.ts +7 -1
  21. package/dist/src/playwrightUtils.d.ts.map +1 -1
  22. package/dist/src/playwrightUtils.js +14 -8
  23. package/dist/src/playwrightUtils.js.map +1 -1
  24. package/dist/src/services/base.d.ts +2 -1
  25. package/dist/src/services/base.d.ts.map +1 -1
  26. package/dist/src/services/base.js +3 -3
  27. package/dist/src/services/base.js.map +1 -1
  28. package/dist/tests/cli.test.js +16 -3
  29. package/dist/tests/cli.test.js.map +1 -1
  30. package/dist/tests/playwrightDownload.test.d.ts +2 -0
  31. package/dist/tests/playwrightDownload.test.d.ts.map +1 -0
  32. package/dist/tests/playwrightDownload.test.js +131 -0
  33. package/dist/tests/playwrightDownload.test.js.map +1 -0
  34. package/package.json +1 -2
  35. package/dist/scripts/encryptFile.d.ts +0 -21
  36. package/dist/scripts/encryptFile.d.ts.map +0 -1
  37. package/dist/scripts/encryptFile.js +0 -101
  38. package/dist/scripts/encryptFile.js.map +0 -1
  39. package/dist/src/browserState.d.ts +0 -8
  40. package/dist/src/browserState.d.ts.map +0 -1
  41. package/dist/src/browserState.js +0 -21
  42. package/dist/src/browserState.js.map +0 -1
@@ -5,6 +5,7 @@ import { existsSync, unlinkSync } from 'node:fs';
5
5
  import { createInterface } from 'node:readline';
6
6
  import { ApiCredentialStore } from './apiCredentialStore.js';
7
7
  import { ApiCredentialStatus } from './apiCredentials.js';
8
+ import { BROWSER_SOURCES, BrowserNotFoundError, DEFAULT_BROWSER_SOURCES, ensureBrowser, loadBrowserConfig, } from './browserConfig.js';
8
9
  import { CONFIG } from './config.js';
9
10
  import { EncryptedStorage } from './encryptedStorage.js';
10
11
  import { REGISTRY } from './registry.js';
@@ -127,6 +128,21 @@ function clearService(deps, serviceName) {
127
128
  deps.log(`No API credentials found for ${serviceName}.`);
128
129
  }
129
130
  }
131
+ /**
132
+ * Get the browser launch options from configuration, handling errors with CLI output.
133
+ * Exits with error if no valid browser config exists.
134
+ */
135
+ function getBrowserLaunchOptionsOrExit(deps) {
136
+ const browserConfig = loadBrowserConfig(deps.config.configPath);
137
+ if (!browserConfig) {
138
+ deps.errorLog("Error: No browser configured. Run 'latchkey ensure-browser' first.");
139
+ deps.exit(1);
140
+ }
141
+ return {
142
+ browserStatePath: deps.config.browserStatePath,
143
+ executablePath: browserConfig.executablePath,
144
+ };
145
+ }
130
146
  /**
131
147
  * Register all CLI commands on the given program.
132
148
  */
@@ -138,6 +154,40 @@ export function registerCommands(program, deps) {
138
154
  const serviceNames = deps.registry.services.map((service) => service.name);
139
155
  deps.log(serviceNames.join(' '));
140
156
  });
157
+ program
158
+ .command('ensure-browser')
159
+ .description('Ensure a Chrome/Chromium browser is available for Latchkey to use.')
160
+ .option('--source <sources>', `Comma-separated list of sources to try in order: ${BROWSER_SOURCES.join(', ')}`, DEFAULT_BROWSER_SOURCES.join(','))
161
+ .action(async (options) => {
162
+ const configPath = deps.config.configPath;
163
+ // Parse and validate sources
164
+ const sourceList = options.source.split(',').map((s) => s.trim());
165
+ const invalidSources = sourceList.filter((s) => !BROWSER_SOURCES.includes(s));
166
+ if (invalidSources.length > 0) {
167
+ deps.errorLog(`Error: Invalid source(s): ${invalidSources.join(', ')}`);
168
+ deps.errorLog(`Valid sources: ${BROWSER_SOURCES.join(', ')}`);
169
+ deps.exit(1);
170
+ }
171
+ const sources = sourceList;
172
+ deps.log(`Discovering browser using sources: ${sources.join(', ')}`);
173
+ try {
174
+ const { config, source } = await ensureBrowser(configPath, sources);
175
+ deps.log('');
176
+ deps.log('Browser configured successfully:');
177
+ deps.log(` Path: ${config.executablePath}`);
178
+ deps.log(` Found via: ${source}`);
179
+ if (source !== 'existing-config') {
180
+ deps.log(` Config saved to: ${configPath}`);
181
+ }
182
+ }
183
+ catch (error) {
184
+ if (error instanceof BrowserNotFoundError) {
185
+ deps.errorLog(`Error: ${error.message}`);
186
+ deps.exit(1);
187
+ }
188
+ throw error;
189
+ }
190
+ });
141
191
  program
142
192
  .command('clear')
143
193
  .description('Clear stored API credentials.')
@@ -198,10 +248,9 @@ export function registerCommands(program, deps) {
198
248
  }
199
249
  const encryptedStorage = createEncryptedStorageFromConfig(deps.config);
200
250
  const apiCredentialStore = new ApiCredentialStore(deps.config.credentialStorePath, encryptedStorage);
251
+ const launchOptions = getBrowserLaunchOptionsOrExit(deps);
201
252
  try {
202
- const apiCredentials = await service
203
- .getSession()
204
- .login(encryptedStorage, deps.config.browserStatePath);
253
+ const apiCredentials = await service.getSession().login(encryptedStorage, launchOptions);
205
254
  apiCredentialStore.save(service.name, apiCredentials);
206
255
  deps.log('Done');
207
256
  }
@@ -238,10 +287,9 @@ export function registerCommands(program, deps) {
238
287
  const apiCredentialStore = new ApiCredentialStore(deps.config.credentialStorePath, encryptedStorage);
239
288
  let apiCredentials = apiCredentialStore.get(service.name);
240
289
  if (apiCredentials === null) {
290
+ const launchOptions = getBrowserLaunchOptionsOrExit(deps);
241
291
  try {
242
- apiCredentials = await service
243
- .getSession()
244
- .login(encryptedStorage, deps.config.browserStatePath);
292
+ apiCredentials = await service.getSession().login(encryptedStorage, launchOptions);
245
293
  apiCredentialStore.save(service.name, apiCredentials);
246
294
  }
247
295
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"cliCommands.js","sourceRoot":"","sources":["../../src/cliCommands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cliCommands.js","sourceRoot":"","sources":["../../src/cliCommands.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export declare const DEFAULT_KEYRING_ACCOUNT_NAME = "encryption-key";
12
12
  export declare class Config {
13
13
  readonly credentialStorePath: string;
14
14
  readonly browserStatePath: string;
15
+ readonly configPath: string;
15
16
  readonly curlCommand: string;
16
17
  /**
17
18
  * Encryption key override from environment variable.
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,qBAAa,4BAA6B,SAAQ,KAAK;gBACzC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CAOlD;AASD,eAAO,MAAM,4BAA4B,aAAa,CAAC;AACvD,eAAO,MAAM,4BAA4B,mBAAmB,CAAC;AAmB7D;;GAEG;AACH,qBAAa,MAAM;IACjB,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAEjB,MAAM,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAuC;IAwBtF;;;OAGG;IACH,6BAA6B,IAAI,IAAI;CAmBtC;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,QAAe,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,qBAAa,4BAA6B,SAAQ,KAAK;gBACzC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CAOlD;AAUD,eAAO,MAAM,4BAA4B,aAAa,CAAC;AACvD,eAAO,MAAM,4BAA4B,mBAAmB,CAAC;AAmB7D;;GAEG;AACH,qBAAa,MAAM;IACjB,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAEjB,MAAM,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAuC;IA2BtF;;;OAGG;IACH,6BAA6B,IAAI,IAAI;CAmBtC;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,QAAe,CAAC"}
@@ -4,6 +4,7 @@
4
4
  import { existsSync, statSync } from 'node:fs';
5
5
  import { homedir } from 'node:os';
6
6
  import { join, resolve } from 'node:path';
7
+ import { getDefaultConfigPath } from './browserConfig.js';
7
8
  import { isKeychainAvailable } from './keychain.js';
8
9
  export class InsecureFilePermissionsError extends Error {
9
10
  constructor(filePath, permissions) {
@@ -14,6 +15,7 @@ export class InsecureFilePermissionsError extends Error {
14
15
  }
15
16
  const LATCHKEY_STORE_ENV_VAR = 'LATCHKEY_STORE';
16
17
  const LATCHKEY_BROWSER_STATE_ENV_VAR = 'LATCHKEY_BROWSER_STATE';
18
+ const LATCHKEY_CONFIG_ENV_VAR = 'LATCHKEY_CONFIG';
17
19
  const LATCHKEY_CURL_PATH_ENV_VAR = 'LATCHKEY_CURL_PATH';
18
20
  const LATCHKEY_ENCRYPTION_KEY_ENV_VAR = 'LATCHKEY_ENCRYPTION_KEY';
19
21
  const LATCHKEY_KEYRING_SERVICE_NAME_ENV_VAR = 'LATCHKEY_KEYRING_SERVICE_NAME';
@@ -40,6 +42,7 @@ function resolvePathWithTildeExpansion(path) {
40
42
  export class Config {
41
43
  credentialStorePath;
42
44
  browserStatePath;
45
+ configPath;
43
46
  curlCommand;
44
47
  /**
45
48
  * Encryption key override from environment variable.
@@ -67,6 +70,8 @@ export class Config {
67
70
  this.browserStatePath = browserStateEnv
68
71
  ? resolvePathWithTildeExpansion(browserStateEnv)
69
72
  : getDefaultBrowserStatePath(encryptionEnabled);
73
+ const configEnv = getEnv(LATCHKEY_CONFIG_ENV_VAR);
74
+ this.configPath = configEnv ? resolvePathWithTildeExpansion(configEnv) : getDefaultConfigPath();
70
75
  }
71
76
  /**
72
77
  * Check that sensitive files have secure permissions.
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,OAAO,4BAA6B,SAAQ,KAAK;IACrD,YAAY,QAAgB,EAAE,WAAmB;QAC/C,MAAM,gBAAgB,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAClE,KAAK,CACH,QAAQ,QAAQ,8BAA8B,gBAAgB,qBAAqB,QAAQ,EAAE,CAC9F,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;IAC7C,CAAC;CACF;AAED,MAAM,sBAAsB,GAAG,gBAAgB,CAAC;AAChD,MAAM,8BAA8B,GAAG,wBAAwB,CAAC;AAChE,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;AAClD,MAAM,0BAA0B,GAAG,oBAAoB,CAAC;AACxD,MAAM,+BAA+B,GAAG,yBAAyB,CAAC;AAClE,MAAM,qCAAqC,GAAG,+BAA+B,CAAC;AAC9E,MAAM,qCAAqC,GAAG,+BAA+B,CAAC;AAE9E,MAAM,CAAC,MAAM,4BAA4B,GAAG,UAAU,CAAC;AACvD,MAAM,CAAC,MAAM,4BAA4B,GAAG,gBAAgB,CAAC;AAE7D,SAAS,6BAA6B,CAAC,iBAA0B;IAC/D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACjF,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,0BAA0B,CAAC,iBAA0B;IAC5D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,oBAAoB,CAAC;IACrF,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,6BAA6B,CAAC,IAAY;IACjD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,MAAM;IACR,mBAAmB,CAAS;IAC5B,gBAAgB,CAAS;IACzB,UAAU,CAAS;IACnB,WAAW,CAAS;IAC7B;;;;OAIG;IACM,qBAAqB,CAAgB;IACrC,WAAW,CAAS;IACpB,WAAW,CAAS;IAE7B,YAAY,SAA+C,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACpF,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,0BAA0B,CAAC,IAAI,MAAM,CAAC;QAChE,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,+BAA+B,CAAC,IAAI,IAAI,CAAC;QAC7E,IAAI,CAAC,WAAW;YACd,MAAM,CAAC,qCAAqC,CAAC,IAAI,4BAA4B,CAAC;QAChF,IAAI,CAAC,WAAW;YACd,MAAM,CAAC,qCAAqC,CAAC,IAAI,4BAA4B,CAAC;QAEhF,gFAAgF;QAChF,MAAM,iBAAiB,GACrB,IAAI,CAAC,qBAAqB,KAAK,IAAI;YACnC,mBAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAE1D,MAAM,kBAAkB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC1D,IAAI,CAAC,mBAAmB,GAAG,kBAAkB;YAC3C,CAAC,CAAC,6BAA6B,CAAC,kBAAkB,CAAC;YACnD,CAAC,CAAC,6BAA6B,CAAC,iBAAiB,CAAC,CAAC;QAErD,MAAM,eAAe,GAAG,MAAM,CAAC,8BAA8B,CAAC,CAAC;QAC/D,IAAI,CAAC,gBAAgB,GAAG,eAAe;YACrC,CAAC,CAAC,6BAA6B,CAAC,eAAe,CAAC;YAChD,CAAC,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;QAElD,MAAM,SAAS,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC;IAClG,CAAC;IAED;;;OAGG;IACH,6BAA6B;QAC3B,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEvE,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;YACpC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,SAAS;YACX,CAAC;YAED,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACjC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,SAAS;YACX,CAAC;YAED,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;YACvC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,4BAA4B,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Direct Playwright browser download implementation.
3
+ *
4
+ * This module downloads Chromium directly without using Playwright's
5
+ * installBrowsersForNpmInstall which uses childProcess.fork() - a mechanism
6
+ * not supported in Bun.
7
+ *
8
+ * We use Playwright's registry to get the correct download URLs and
9
+ * browser directory, then perform the download and extraction ourselves.
10
+ */
11
+ /**
12
+ * Error thrown when browser download fails.
13
+ */
14
+ export declare class BrowserDownloadError extends Error {
15
+ constructor(message: string);
16
+ }
17
+ /**
18
+ * Error thrown when browser extraction fails.
19
+ */
20
+ export declare class BrowserExtractionError extends Error {
21
+ constructor(message: string);
22
+ }
23
+ /**
24
+ * Gets the Chromium executable info from Playwright's registry.
25
+ */
26
+ export declare function getChromiumExecutable(): import("playwright-core/lib/server/registry/index").Executable;
27
+ /**
28
+ * Downloads a file from a URL to a local path with progress reporting.
29
+ */
30
+ export declare function downloadFile(url: string, destinationPath: string): Promise<void>;
31
+ /**
32
+ * Extracts a zip file to a directory using Playwright's internal zip extraction.
33
+ */
34
+ export declare function extractZip(zipPath: string, destinationDirectory: string): Promise<void>;
35
+ /**
36
+ * Sets executable permissions on the browser binary.
37
+ */
38
+ export declare function setExecutablePermissions(executablePath: string): void;
39
+ /**
40
+ * Downloads Chromium directly without using Playwright's fork-based mechanism.
41
+ * Returns the path to the browser executable.
42
+ */
43
+ export declare function downloadChromium(): Promise<string>;
44
+ //# sourceMappingURL=playwrightDownload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playwrightDownload.d.ts","sourceRoot":"","sources":["../../src/playwrightDownload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAWH;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAuCD;;GAEG;AACH,wBAAgB,qBAAqB,mEAQpC;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuEtF;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7F;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAIrE;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAkExD"}
@@ -0,0 +1,222 @@
1
+ /**
2
+ * Direct Playwright browser download implementation.
3
+ *
4
+ * This module downloads Chromium directly without using Playwright's
5
+ * installBrowsersForNpmInstall which uses childProcess.fork() - a mechanism
6
+ * not supported in Bun.
7
+ *
8
+ * We use Playwright's registry to get the correct download URLs and
9
+ * browser directory, then perform the download and extraction ourselves.
10
+ */
11
+ import { createWriteStream, existsSync, mkdirSync, chmodSync, unlinkSync } from 'node:fs';
12
+ import { pipeline } from 'node:stream/promises';
13
+ import { get as httpsGet } from 'node:https';
14
+ import { get as httpGet } from 'node:http';
15
+ import { platform, tmpdir } from 'node:os';
16
+ import { join, dirname } from 'node:path';
17
+ import { registry } from 'playwright-core/lib/server/registry/index';
18
+ import { extract } from 'playwright-core/lib/zipBundle';
19
+ /**
20
+ * Error thrown when browser download fails.
21
+ */
22
+ export class BrowserDownloadError extends Error {
23
+ constructor(message) {
24
+ super(message);
25
+ this.name = 'BrowserDownloadError';
26
+ }
27
+ }
28
+ /**
29
+ * Error thrown when browser extraction fails.
30
+ */
31
+ export class BrowserExtractionError extends Error {
32
+ constructor(message) {
33
+ super(message);
34
+ this.name = 'BrowserExtractionError';
35
+ }
36
+ }
37
+ const PROGRESS_BAR_WIDTH = 20;
38
+ /**
39
+ * Formats bytes into a human-readable string (e.g., "120MB").
40
+ */
41
+ function formatBytes(bytes) {
42
+ if (bytes < 1024)
43
+ return `${bytes.toString()}B`;
44
+ if (bytes < 1024 * 1024)
45
+ return `${(bytes / 1024).toFixed(0)}KB`;
46
+ return `${(bytes / (1024 * 1024)).toFixed(0)}MB`;
47
+ }
48
+ /**
49
+ * Renders a progress bar to stdout.
50
+ */
51
+ function renderProgressBar(downloaded, total) {
52
+ const percent = Math.round((downloaded / total) * 100);
53
+ const filled = Math.round((downloaded / total) * PROGRESS_BAR_WIDTH);
54
+ const empty = PROGRESS_BAR_WIDTH - filled;
55
+ const bar = '#'.repeat(filled) + ' '.repeat(empty);
56
+ const line = `\r[${bar}] ${percent.toString()}% of ${formatBytes(total)}`;
57
+ process.stdout.write(line);
58
+ }
59
+ /**
60
+ * Formats error details, extracting nested errors from AggregateError.
61
+ */
62
+ function formatErrorDetails(error) {
63
+ if (error instanceof AggregateError) {
64
+ const messages = error.errors.map((e) => (e instanceof Error ? e.message : String(e)));
65
+ return `AggregateError: ${messages.join('; ')}`;
66
+ }
67
+ if (error instanceof Error) {
68
+ return error.message;
69
+ }
70
+ return String(error);
71
+ }
72
+ /**
73
+ * Gets the Chromium executable info from Playwright's registry.
74
+ */
75
+ export function getChromiumExecutable() {
76
+ const chromiumExecutable = registry.findExecutable('chromium');
77
+ if (!chromiumExecutable) {
78
+ throw new BrowserDownloadError('Could not find Chromium in Playwright registry');
79
+ }
80
+ return chromiumExecutable;
81
+ }
82
+ /**
83
+ * Downloads a file from a URL to a local path with progress reporting.
84
+ */
85
+ export async function downloadFile(url, destinationPath) {
86
+ return new Promise((resolve, reject) => {
87
+ const isHttps = url.startsWith('https://');
88
+ const getter = isHttps ? httpsGet : httpGet;
89
+ const handleResponse = (response) => {
90
+ // Handle redirects
91
+ if (response.statusCode && response.statusCode >= 300 && response.statusCode < 400) {
92
+ const location = response.headers.location;
93
+ if (location) {
94
+ response.destroy();
95
+ downloadFile(location, destinationPath).then(resolve).catch(reject);
96
+ return;
97
+ }
98
+ }
99
+ if (response.statusCode !== 200) {
100
+ response.destroy();
101
+ reject(new BrowserDownloadError(`Download failed with status ${response.statusCode?.toString() ?? 'unknown'}: ${url}`));
102
+ return;
103
+ }
104
+ // Ensure directory exists
105
+ const directory = dirname(destinationPath);
106
+ if (!existsSync(directory)) {
107
+ mkdirSync(directory, { recursive: true });
108
+ }
109
+ const totalSize = parseInt(response.headers['content-length'] ?? '0', 10);
110
+ let downloadedSize = 0;
111
+ if (totalSize > 0) {
112
+ response.on('data', (chunk) => {
113
+ downloadedSize += chunk.length;
114
+ renderProgressBar(downloadedSize, totalSize);
115
+ });
116
+ }
117
+ const fileStream = createWriteStream(destinationPath);
118
+ pipeline(response, fileStream)
119
+ .then(() => {
120
+ if (totalSize > 0) {
121
+ process.stdout.write('\n');
122
+ }
123
+ resolve();
124
+ })
125
+ .catch((error) => {
126
+ if (totalSize > 0) {
127
+ process.stdout.write('\n');
128
+ }
129
+ // Clean up partial file
130
+ try {
131
+ unlinkSync(destinationPath);
132
+ }
133
+ catch {
134
+ // Ignore cleanup errors
135
+ }
136
+ reject(new BrowserDownloadError(`Download failed: ${String(error)}`));
137
+ });
138
+ };
139
+ const request = getter(url, handleResponse);
140
+ request.on('error', (error) => {
141
+ const errorDetails = formatErrorDetails(error);
142
+ reject(new BrowserDownloadError(`Download request failed: ${errorDetails}`));
143
+ });
144
+ });
145
+ }
146
+ /**
147
+ * Extracts a zip file to a directory using Playwright's internal zip extraction.
148
+ */
149
+ export async function extractZip(zipPath, destinationDirectory) {
150
+ mkdirSync(destinationDirectory, { recursive: true });
151
+ await extract(zipPath, { dir: destinationDirectory });
152
+ }
153
+ /**
154
+ * Sets executable permissions on the browser binary.
155
+ */
156
+ export function setExecutablePermissions(executablePath) {
157
+ if (platform() !== 'win32' && existsSync(executablePath)) {
158
+ chmodSync(executablePath, 0o755);
159
+ }
160
+ }
161
+ /**
162
+ * Downloads Chromium directly without using Playwright's fork-based mechanism.
163
+ * Returns the path to the browser executable.
164
+ */
165
+ export async function downloadChromium() {
166
+ const chromiumExecutable = getChromiumExecutable();
167
+ const browserDirectory = chromiumExecutable.directory;
168
+ if (!browserDirectory) {
169
+ throw new BrowserDownloadError('Could not determine Chromium installation directory');
170
+ }
171
+ const executablePath = chromiumExecutable.executablePath('javascript');
172
+ if (!executablePath) {
173
+ throw new BrowserDownloadError('Could not determine Chromium executable path');
174
+ }
175
+ // Check if already downloaded
176
+ if (existsSync(executablePath)) {
177
+ return executablePath;
178
+ }
179
+ const downloadUrls = chromiumExecutable.downloadURLs;
180
+ if (!downloadUrls || downloadUrls.length === 0) {
181
+ throw new BrowserDownloadError('No download URLs available for Chromium');
182
+ }
183
+ // Download to temp directory to avoid issues with extraction
184
+ const zipPath = join(tmpdir(), `chromium-${Date.now().toString()}.zip`);
185
+ // Try each URL until one succeeds
186
+ let lastError = null;
187
+ for (const url of downloadUrls) {
188
+ try {
189
+ console.log(`Downloading Chromium from ${url}...`);
190
+ await downloadFile(url, zipPath);
191
+ console.log('Extracting Chromium...');
192
+ await extractZip(zipPath, browserDirectory);
193
+ // Clean up zip file
194
+ try {
195
+ unlinkSync(zipPath);
196
+ }
197
+ catch {
198
+ // Ignore cleanup errors
199
+ }
200
+ // Set executable permissions
201
+ setExecutablePermissions(executablePath);
202
+ console.log(`Chromium downloaded successfully to ${browserDirectory}`);
203
+ return executablePath;
204
+ }
205
+ catch (error) {
206
+ lastError = error instanceof Error ? error : new Error(String(error));
207
+ console.warn(`Download attempt failed: ${lastError.message}`);
208
+ // Clean up partial download if it exists
209
+ try {
210
+ if (existsSync(zipPath)) {
211
+ unlinkSync(zipPath);
212
+ }
213
+ }
214
+ catch {
215
+ // Ignore cleanup errors
216
+ }
217
+ // Try next URL
218
+ }
219
+ }
220
+ throw new BrowserDownloadError(`Failed to download Chromium from all mirrors. Last error: ${lastError?.message ?? 'Unknown error'}`);
221
+ }
222
+ //# sourceMappingURL=playwrightDownload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playwrightDownload.js","sourceRoot":"","sources":["../../src/playwrightDownload.ts"],"names":[],"mappings":"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"}
@@ -7,11 +7,17 @@ export interface BrowserWithContext {
7
7
  readonly browser: Browser;
8
8
  readonly context: BrowserContext;
9
9
  }
10
+ export interface BrowserLaunchOptions {
11
+ /** Path to the browser executable. If not provided, Playwright's default is used. */
12
+ executablePath?: string;
13
+ /** Path to the encrypted browser state file for persisting cookies/storage. */
14
+ browserStatePath?: string;
15
+ }
10
16
  /**
11
17
  * Run a callback with a browser context initialized from encrypted storage state.
12
18
  * After the callback completes, persists browser state back to encrypted storage.
13
19
  */
14
- export declare function withTempBrowserContext<T>(encryptedStorage: EncryptedStorage, browserStatePath: string, callback: (state: BrowserWithContext) => Promise<T>): Promise<T>;
20
+ export declare function withTempBrowserContext<T>(encryptedStorage: EncryptedStorage, options: BrowserLaunchOptions, callback: (state: BrowserWithContext) => Promise<T>): Promise<T>;
15
21
  /**
16
22
  * Type text character by character with random delays to simulate human typing.
17
23
  *
@@ -1 +1 @@
1
- {"version":3,"file":"playwrightUtils.d.ts","sourceRoot":"","sources":["../../src/playwrightUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,GAClD,OAAO,CAAC,CAAC,CAAC,CAuCZ;AAMD;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS7F;AAmDD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIjG"}
1
+ {"version":3,"file":"playwrightUtils.d.ts","sourceRoot":"","sources":["../../src/playwrightUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAiB,MAAM,YAAY,CAAC;AAExF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,qFAAqF;IACrF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,gBAAgB,EAAE,gBAAgB,EAClC,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,GAClD,OAAO,CAAC,CAAC,CAAC,CA4CZ;AAMD;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS7F;AAmDD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIjG"}
@@ -4,23 +4,27 @@
4
4
  import { existsSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
5
5
  import { tmpdir } from 'node:os';
6
6
  import { join } from 'node:path';
7
+ import { chromium } from 'playwright';
7
8
  /**
8
9
  * Run a callback with a browser context initialized from encrypted storage state.
9
10
  * After the callback completes, persists browser state back to encrypted storage.
10
11
  */
11
- export async function withTempBrowserContext(encryptedStorage, browserStatePath, callback) {
12
+ export async function withTempBrowserContext(encryptedStorage, options, callback) {
12
13
  const tempDir = mkdtempSync(join(tmpdir(), 'latchkey-browser-state-'));
13
14
  const tempFilePath = join(tempDir, 'browser_state.json');
14
15
  let initialStorageState;
15
- if (existsSync(browserStatePath)) {
16
- const content = encryptedStorage.readFile(browserStatePath);
16
+ if (options.browserStatePath && existsSync(options.browserStatePath)) {
17
+ const content = encryptedStorage.readFile(options.browserStatePath);
17
18
  if (content !== null) {
18
19
  writeFileSync(tempFilePath, content, { encoding: 'utf-8', mode: 0o600 });
19
20
  initialStorageState = tempFilePath;
20
21
  }
21
22
  }
22
- const { chromium: chromiumBrowser } = await import('playwright');
23
- const browser = await chromiumBrowser.launch({ headless: false });
23
+ const playwrightLaunchOptions = { headless: false };
24
+ if (options.executablePath) {
25
+ playwrightLaunchOptions.executablePath = options.executablePath;
26
+ }
27
+ const browser = await chromium.launch(playwrightLaunchOptions);
24
28
  try {
25
29
  const contextOptions = {};
26
30
  if (initialStorageState !== undefined) {
@@ -29,9 +33,11 @@ export async function withTempBrowserContext(encryptedStorage, browserStatePath,
29
33
  const context = await browser.newContext(contextOptions);
30
34
  const result = await callback({ browser, context });
31
35
  // Persist browser state back to encrypted storage
32
- await context.storageState({ path: tempFilePath });
33
- const content = readFileSync(tempFilePath, 'utf-8');
34
- encryptedStorage.writeFile(browserStatePath, content);
36
+ if (options.browserStatePath) {
37
+ await context.storageState({ path: tempFilePath });
38
+ const content = readFileSync(tempFilePath, 'utf-8');
39
+ encryptedStorage.writeFile(options.browserStatePath, content);
40
+ }
35
41
  return result;
36
42
  }
37
43
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"playwrightUtils.js","sourceRoot":"","sources":["../../src/playwrightUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AASjC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,gBAAkC,EAClC,gBAAwB,EACxB,QAAmD;IAEnD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,yBAAyB,CAAC,CAAC,CAAC;IACvE,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;IAEzD,IAAI,mBAAuC,CAAC;IAC5C,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAC5D,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,aAAa,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACzE,mBAAmB,GAAG,YAAY,CAAC;QACrC,CAAC;IACH,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAElE,IAAI,CAAC;QACH,MAAM,cAAc,GAA8B,EAAE,CAAC;QACrD,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACtC,cAAc,CAAC,YAAY,GAAG,mBAAmB,CAAC;QACpD,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAEzD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAEpD,kDAAkD;QAClD,MAAM,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACpD,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAEtD,OAAO,MAAM,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAC/B,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAU,EAAE,OAAgB,EAAE,IAAY;IAC5E,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACtB,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE,CAAC;QAC7B,MAAM,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,KAAK,GACT,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,mBAAmB,GAAG,mBAAmB,GAAG,CAAC,CAAC,CAAC;YAC3E,mBAAmB,CAAC;QACtB,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,SAAS,0BAA0B,CAAC,WAAmB;IACrD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sCAwC6B,WAAW;;;;CAIhD,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAuB,EAAE,WAAmB;IAChF,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IAC5C,MAAM,WAAW,CAAC,QAAQ,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC,CAAC;IACpE,MAAM,WAAW,CAAC,YAAY,EAAE,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"playwrightUtils.js","sourceRoot":"","sources":["../../src/playwrightUtils.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  import type { Browser, BrowserContext, Response } from 'playwright';
5
5
  import { ApiCredentialStatus, ApiCredentials } from '../apiCredentials.js';
6
6
  import { EncryptedStorage } from '../encryptedStorage.js';
7
+ import { type BrowserLaunchOptions } from '../playwrightUtils.js';
7
8
  export declare class LoginCancelledError extends Error {
8
9
  constructor(message?: string);
9
10
  }
@@ -65,7 +66,7 @@ export declare abstract class ServiceSession {
65
66
  /**
66
67
  * Perform the login flow and return the extracted credentials.
67
68
  */
68
- login(encryptedStorage: EncryptedStorage, browserStatePath: string): Promise<ApiCredentials>;
69
+ login(encryptedStorage: EncryptedStorage, launchOptions?: BrowserLaunchOptions): Promise<ApiCredentials>;
69
70
  }
70
71
  /**
71
72
  * Simple service session where credentials are extracted by observing requests during login.
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/services/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAQ,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,SAAwD;CAI5E;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,SAAiD;CAIrE;AAiBD;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,mBAAmB,CAAC,cAAc,EAAE,cAAc,GAAG,mBAAmB,CAAC;IAEzE;;OAEG;IACH,QAAQ,CAAC,4BAA4B,EAAE,SAAS,MAAM,EAAE,CAAC;IAEzD;;OAEG;IACH,UAAU,IAAI,cAAc,CAAC;CAC9B;AAED;;GAEG;AACH,8BAAsB,cAAc;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;gBAEd,OAAO,EAAE,OAAO;IAI5B;;OAEG;IACH,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAE7C;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,eAAe,IAAI,OAAO;IAE7C;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CACpC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAEjC;;OAEG;YACW,oBAAoB;IAOlC;;;;;;;OAOG;IACH,SAAS,CAAC,oBAAoB,CAC5B,QAAQ,EAAE,cAAc,EACxB,cAAc,EAAE,KAAK,GACpB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAIxB;;OAEG;IACG,KAAK,CACT,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,cAAc,CAAC;CA8C3B;AAED;;GAEG;AACH,8BAAsB,oBAAqB,SAAQ,cAAc;IAC/D,SAAS,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI,CAAQ;IAEvD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,6BAA6B,CAC9C,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAEjC,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAepC,SAAS,CAAC,eAAe,IAAI,OAAO;IAIpC,SAAS,CAAC,mBAAmB,CAC3B,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAGlC;AAED;;;;;;GAMG;AACH,8BAAsB,6BAA8B,SAAQ,cAAc;IACxE;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CACvC,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;cAER,mBAAmB,CAC1C,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAIlC"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/services/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAQ,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAE/B,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,SAAwD;CAI5E;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,SAAiD;CAIrE;AAiBD;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,mBAAmB,CAAC,cAAc,EAAE,cAAc,GAAG,mBAAmB,CAAC;IAEzE;;OAEG;IACH,QAAQ,CAAC,4BAA4B,EAAE,SAAS,MAAM,EAAE,CAAC;IAEzD;;OAEG;IACH,UAAU,IAAI,cAAc,CAAC;CAC9B;AAED;;GAEG;AACH,8BAAsB,cAAc;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;gBAEd,OAAO,EAAE,OAAO;IAI5B;;OAEG;IACH,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAE7C;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,eAAe,IAAI,OAAO;IAE7C;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CACpC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAEjC;;OAEG;YACW,oBAAoB;IAMlC;;;;;;;OAOG;IACH,SAAS,CAAC,oBAAoB,CAC5B,QAAQ,EAAE,cAAc,EACxB,cAAc,EAAE,KAAK,GACpB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAIxB;;OAEG;IACG,KAAK,CACT,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,GAAE,oBAAyB,GACvC,OAAO,CAAC,cAAc,CAAC;CA0C3B;AAED;;GAEG;AACH,8BAAsB,oBAAqB,SAAQ,cAAc;IAC/D,SAAS,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI,CAAQ;IAEvD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,6BAA6B,CAC9C,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAEjC,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAepC,SAAS,CAAC,eAAe,IAAI,OAAO;IAIpC,SAAS,CAAC,mBAAmB,CAC3B,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAGlC;AAED;;;;;;GAMG;AACH,8BAAsB,6BAA8B,SAAQ,cAAc;IACxE;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CACvC,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;cAER,mBAAmB,CAC1C,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAIlC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Base classes and interfaces for service implementations.
3
3
  */
4
- import { showSpinnerPage, withTempBrowserContext } from '../playwrightUtils.js';
4
+ import { showSpinnerPage, withTempBrowserContext, } from '../playwrightUtils.js';
5
5
  export class LoginCancelledError extends Error {
6
6
  constructor(message = 'Login was cancelled because the browser was closed.') {
7
7
  super(message);
@@ -55,8 +55,8 @@ export class ServiceSession {
55
55
  /**
56
56
  * Perform the login flow and return the extracted credentials.
57
57
  */
58
- async login(encryptedStorage, browserStatePath) {
59
- return withTempBrowserContext(encryptedStorage, browserStatePath, async ({ browser, context }) => {
58
+ async login(encryptedStorage, launchOptions = {}) {
59
+ return withTempBrowserContext(encryptedStorage, launchOptions, async ({ browser, context }) => {
60
60
  const page = await context.newPage();
61
61
  page.on('response', (response) => {
62
62
  this.onResponse(response);