craftdriver 1.7.0 → 1.9.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.
- package/CHANGELOG.md +25 -12
- package/README.md +16 -6
- package/dist/cli/agentSession.d.ts +62 -0
- package/dist/cli/agentSession.d.ts.map +1 -0
- package/dist/cli/agentSession.js +100 -0
- package/dist/cli/agentSession.js.map +1 -0
- package/dist/cli/artifactPaths.d.ts +42 -0
- package/dist/cli/artifactPaths.d.ts.map +1 -0
- package/dist/cli/artifactPaths.js +144 -0
- package/dist/cli/artifactPaths.js.map +1 -0
- package/dist/cli/bounds.d.ts +88 -0
- package/dist/cli/bounds.d.ts.map +1 -0
- package/dist/cli/bounds.js +128 -0
- package/dist/cli/bounds.js.map +1 -0
- package/dist/cli/client.d.ts +3 -0
- package/dist/cli/client.d.ts.map +1 -1
- package/dist/cli/client.js +24 -8
- package/dist/cli/client.js.map +1 -1
- package/dist/cli/daemon.d.ts +3 -0
- package/dist/cli/daemon.d.ts.map +1 -1
- package/dist/cli/daemon.js +152 -39
- package/dist/cli/daemon.js.map +1 -1
- package/dist/cli/defaults.d.ts +23 -3
- package/dist/cli/defaults.d.ts.map +1 -1
- package/dist/cli/defaults.js +50 -5
- package/dist/cli/defaults.js.map +1 -1
- package/dist/cli/dispatcher.d.ts +54 -11
- package/dist/cli/dispatcher.d.ts.map +1 -1
- package/dist/cli/dispatcher.js +851 -54
- package/dist/cli/dispatcher.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +305 -56
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts +14 -14
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +328 -180
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/journal.d.ts +153 -0
- package/dist/cli/journal.d.ts.map +1 -0
- package/dist/cli/journal.js +252 -0
- package/dist/cli/journal.js.map +1 -0
- package/dist/cli/lineReader.d.ts +33 -0
- package/dist/cli/lineReader.d.ts.map +1 -0
- package/dist/cli/lineReader.js +66 -0
- package/dist/cli/lineReader.js.map +1 -0
- package/dist/cli/locatorCandidates.d.ts +44 -0
- package/dist/cli/locatorCandidates.d.ts.map +1 -0
- package/dist/cli/locatorCandidates.js +190 -0
- package/dist/cli/locatorCandidates.js.map +1 -0
- package/dist/cli/mcp/artifacts.d.ts +39 -1
- package/dist/cli/mcp/artifacts.d.ts.map +1 -1
- package/dist/cli/mcp/artifacts.js +104 -9
- package/dist/cli/mcp/artifacts.js.map +1 -1
- package/dist/cli/mcp/bounds.d.ts +65 -0
- package/dist/cli/mcp/bounds.d.ts.map +1 -0
- package/dist/cli/mcp/bounds.js +124 -0
- package/dist/cli/mcp/bounds.js.map +1 -0
- package/dist/cli/mcp/params.d.ts +38 -0
- package/dist/cli/mcp/params.d.ts.map +1 -0
- package/dist/cli/mcp/params.js +174 -0
- package/dist/cli/mcp/params.js.map +1 -0
- package/dist/cli/mcp/server.d.ts +94 -16
- package/dist/cli/mcp/server.d.ts.map +1 -1
- package/dist/cli/mcp/server.js +304 -150
- package/dist/cli/mcp/server.js.map +1 -1
- package/dist/cli/mcp/tools.d.ts +62 -17
- package/dist/cli/mcp/tools.d.ts.map +1 -1
- package/dist/cli/mcp/tools.js +373 -158
- package/dist/cli/mcp/tools.js.map +1 -1
- package/dist/cli/pageSemantics.d.ts +6 -0
- package/dist/cli/pageSemantics.d.ts.map +1 -0
- package/dist/cli/pageSemantics.js +6 -0
- package/dist/cli/pageSemantics.js.map +1 -0
- package/dist/cli/parseArgs.d.ts +6 -18
- package/dist/cli/parseArgs.d.ts.map +1 -1
- package/dist/cli/parseArgs.js +689 -45
- package/dist/cli/parseArgs.js.map +1 -1
- package/dist/cli/protocol.d.ts +8 -0
- package/dist/cli/protocol.d.ts.map +1 -1
- package/dist/cli/selector.d.ts +3 -3
- package/dist/cli/selector.d.ts.map +1 -1
- package/dist/cli/selector.js +6 -9
- package/dist/cli/selector.js.map +1 -1
- package/dist/cli/sessionRegistry.d.ts +42 -0
- package/dist/cli/sessionRegistry.d.ts.map +1 -0
- package/dist/cli/sessionRegistry.js +99 -0
- package/dist/cli/sessionRegistry.js.map +1 -0
- package/dist/cli/snapshot.d.ts +100 -19
- package/dist/cli/snapshot.d.ts.map +1 -1
- package/dist/cli/snapshot.js +295 -108
- package/dist/cli/snapshot.js.map +1 -1
- package/dist/cli/stateStore.d.ts +50 -0
- package/dist/cli/stateStore.d.ts.map +1 -0
- package/dist/cli/stateStore.js +122 -0
- package/dist/cli/stateStore.js.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/a11y.d.ts +6 -2
- package/dist/lib/a11y.d.ts.map +1 -1
- package/dist/lib/a11y.js +3 -1
- package/dist/lib/a11y.js.map +1 -1
- package/dist/lib/bidi/evaluate.d.ts +11 -0
- package/dist/lib/bidi/evaluate.d.ts.map +1 -0
- package/dist/lib/bidi/evaluate.js +25 -0
- package/dist/lib/bidi/evaluate.js.map +1 -0
- package/dist/lib/bidi/index.d.ts +1 -1
- package/dist/lib/bidi/index.d.ts.map +1 -1
- package/dist/lib/bidi/index.js +2 -2
- package/dist/lib/bidi/index.js.map +1 -1
- package/dist/lib/bidi/logs.d.ts +3 -0
- package/dist/lib/bidi/logs.d.ts.map +1 -1
- package/dist/lib/bidi/logs.js +7 -0
- package/dist/lib/bidi/logs.js.map +1 -1
- package/dist/lib/bidi/network.d.ts +14 -1
- package/dist/lib/bidi/network.d.ts.map +1 -1
- package/dist/lib/bidi/network.js +45 -7
- package/dist/lib/bidi/network.js.map +1 -1
- package/dist/lib/bidi/storage.d.ts +30 -6
- package/dist/lib/bidi/storage.d.ts.map +1 -1
- package/dist/lib/bidi/storage.js +190 -45
- package/dist/lib/bidi/storage.js.map +1 -1
- package/dist/lib/bidi/types.d.ts +9 -2
- package/dist/lib/bidi/types.d.ts.map +1 -1
- package/dist/lib/browser.d.ts +7 -4
- package/dist/lib/browser.d.ts.map +1 -1
- package/dist/lib/browser.js +186 -65
- package/dist/lib/browser.js.map +1 -1
- package/dist/lib/browserContext.d.ts +58 -24
- package/dist/lib/browserContext.d.ts.map +1 -1
- package/dist/lib/browserContext.js +300 -99
- package/dist/lib/browserContext.js.map +1 -1
- package/dist/lib/by.d.ts +68 -30
- package/dist/lib/by.d.ts.map +1 -1
- package/dist/lib/by.js +54 -23
- package/dist/lib/by.js.map +1 -1
- package/dist/lib/clearFastPath.d.ts.map +1 -1
- package/dist/lib/clearFastPath.js +2 -0
- package/dist/lib/clearFastPath.js.map +1 -1
- package/dist/lib/clickFastPath.d.ts.map +1 -1
- package/dist/lib/clickFastPath.js +2 -0
- package/dist/lib/clickFastPath.js.map +1 -1
- package/dist/lib/driver.d.ts +26 -0
- package/dist/lib/driver.d.ts.map +1 -1
- package/dist/lib/driver.js +123 -4
- package/dist/lib/driver.js.map +1 -1
- package/dist/lib/elementHandle.d.ts +13 -10
- package/dist/lib/elementHandle.d.ts.map +1 -1
- package/dist/lib/elementHandle.js +119 -50
- package/dist/lib/elementHandle.js.map +1 -1
- package/dist/lib/errors.d.ts +12 -0
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +12 -0
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/expect.d.ts +10 -0
- package/dist/lib/expect.d.ts.map +1 -1
- package/dist/lib/expect.js +76 -49
- package/dist/lib/expect.js.map +1 -1
- package/dist/lib/fillFastPath.d.ts.map +1 -1
- package/dist/lib/fillFastPath.js +2 -0
- package/dist/lib/fillFastPath.js.map +1 -1
- package/dist/lib/frame.d.ts.map +1 -1
- package/dist/lib/frame.js +29 -17
- package/dist/lib/frame.js.map +1 -1
- package/dist/lib/initScript.d.ts +9 -0
- package/dist/lib/initScript.d.ts.map +1 -0
- package/dist/lib/initScript.js +14 -0
- package/dist/lib/initScript.js.map +1 -0
- package/dist/lib/locator.d.ts +21 -54
- package/dist/lib/locator.d.ts.map +1 -1
- package/dist/lib/locator.js +165 -208
- package/dist/lib/locator.js.map +1 -1
- package/dist/lib/page.d.ts +22 -0
- package/dist/lib/page.d.ts.map +1 -1
- package/dist/lib/page.js +71 -13
- package/dist/lib/page.js.map +1 -1
- package/dist/lib/pageSemantics.d.ts +42 -0
- package/dist/lib/pageSemantics.d.ts.map +1 -0
- package/dist/lib/pageSemantics.js +216 -0
- package/dist/lib/pageSemantics.js.map +1 -0
- package/dist/lib/query.d.ts +68 -0
- package/dist/lib/query.d.ts.map +1 -0
- package/dist/lib/query.js +590 -0
- package/dist/lib/query.js.map +1 -0
- package/dist/lib/secureFile.d.ts +8 -0
- package/dist/lib/secureFile.d.ts.map +1 -0
- package/dist/lib/secureFile.js +67 -0
- package/dist/lib/secureFile.js.map +1 -0
- package/dist/lib/sessionStateValidation.d.ts +35 -0
- package/dist/lib/sessionStateValidation.d.ts.map +1 -0
- package/dist/lib/sessionStateValidation.js +223 -0
- package/dist/lib/sessionStateValidation.js.map +1 -0
- package/dist/lib/shadowRoot.d.ts +21 -0
- package/dist/lib/shadowRoot.d.ts.map +1 -0
- package/dist/lib/shadowRoot.js +29 -0
- package/dist/lib/shadowRoot.js.map +1 -0
- package/dist/lib/shadowRootLocator.d.ts +31 -0
- package/dist/lib/shadowRootLocator.d.ts.map +1 -0
- package/dist/lib/shadowRootLocator.js +55 -0
- package/dist/lib/shadowRootLocator.js.map +1 -0
- package/dist/lib/timing.d.ts +2 -2
- package/dist/lib/timing.js +2 -2
- package/dist/lib/tracing.d.ts +2 -1
- package/dist/lib/tracing.d.ts.map +1 -1
- package/dist/lib/tracing.js +12 -1
- package/dist/lib/tracing.js.map +1 -1
- package/docs/accessibility.md +9 -1
- package/docs/agents.md +56 -61
- package/docs/api-reference.md +5 -1
- package/docs/browser-api.md +27 -7
- package/docs/browser-context.md +21 -15
- package/docs/cli.md +353 -30
- package/docs/error-codes.md +7 -4
- package/docs/getting-started.md +6 -1
- package/docs/index.md +1 -1
- package/docs/mcp.md +136 -65
- package/docs/public/examples/agent-actions.html +48 -0
- package/docs/public/examples/agent-debug.html +86 -0
- package/docs/public/examples/agent-late-mutation.html +18 -0
- package/docs/public/examples/agent-ref-shift.html +33 -0
- package/docs/public/examples/iframe-child.html +12 -1
- package/docs/public/examples/shadow-dom.html +137 -0
- package/docs/recipes/login-once-reuse-session.md +33 -5
- package/docs/selectors.md +61 -0
- package/docs/session-management.md +80 -12
- package/docs/why-craftdriver.md +1 -1
- package/package.json +5 -3
- package/skills/craftdriver/SKILL.md +59 -75
- package/skills/craftdriver/agents/openai.yaml +4 -0
- package/skills/craftdriver/cheatsheet.md +18 -4
- package/skills/craftdriver/cli.md +194 -68
- package/skills/craftdriver/patterns.md +17 -8
- package/skills/craftdriver/workflow.md +149 -0
package/dist/lib/bidi/network.js
CHANGED
|
@@ -12,6 +12,8 @@ export class NetworkInterceptor {
|
|
|
12
12
|
context;
|
|
13
13
|
requestListeners = [];
|
|
14
14
|
responseListeners = [];
|
|
15
|
+
isInternalContext = () => false;
|
|
16
|
+
internalRequestIds = new Set();
|
|
15
17
|
/** Set of request IDs currently in-flight (sent but not yet completed/errored). */
|
|
16
18
|
inFlightRequests = new Set();
|
|
17
19
|
/** Callbacks to notify when inFlightRequests changes — used by waitForNetworkIdle. */
|
|
@@ -20,6 +22,10 @@ export class NetworkInterceptor {
|
|
|
20
22
|
this.connection = connection;
|
|
21
23
|
this.context = context;
|
|
22
24
|
}
|
|
25
|
+
/** @internal Exclude library-owned contexts from public network observation. */
|
|
26
|
+
setInternalContextPredicate(predicate) {
|
|
27
|
+
this.isInternalContext = predicate;
|
|
28
|
+
}
|
|
23
29
|
/**
|
|
24
30
|
* Mark the WS subscription as already armed — e.g. done as part of
|
|
25
31
|
* `BiDiSession.connect()`'s merged connect-time batch — without sending a
|
|
@@ -50,11 +56,14 @@ export class NetworkInterceptor {
|
|
|
50
56
|
// Handle intercepted requests + track in-flight
|
|
51
57
|
this.connection.on('network.beforeRequestSent', async (params) => {
|
|
52
58
|
const event = params;
|
|
53
|
-
|
|
54
|
-
|
|
59
|
+
const internal = this.isInternalContext(event.context);
|
|
60
|
+
if (internal)
|
|
61
|
+
this.internalRequestIds.add(event.request.request);
|
|
62
|
+
else
|
|
63
|
+
this.inFlightRequests.add(event.request.request);
|
|
55
64
|
await this.handleBeforeRequestSent(event);
|
|
56
65
|
// Notify passive request listeners (waitForRequest)
|
|
57
|
-
if (this.requestListeners.length > 0) {
|
|
66
|
+
if (!internal && this.requestListeners.length > 0) {
|
|
58
67
|
const req = {
|
|
59
68
|
id: event.request.request,
|
|
60
69
|
url: event.request.url,
|
|
@@ -70,6 +79,8 @@ export class NetworkInterceptor {
|
|
|
70
79
|
// Track completed responses + notify waitForResponse listeners
|
|
71
80
|
this.connection.on('network.responseCompleted', (params) => {
|
|
72
81
|
const event = params;
|
|
82
|
+
if (this.internalRequestIds.delete(event.request.request))
|
|
83
|
+
return;
|
|
73
84
|
this.inFlightRequests.delete(event.request.request);
|
|
74
85
|
this._notifyIdleListeners();
|
|
75
86
|
if (this.responseListeners.length > 0) {
|
|
@@ -95,6 +106,8 @@ export class NetworkInterceptor {
|
|
|
95
106
|
this.connection.on('network.fetchError', (params) => {
|
|
96
107
|
const reqId = params?.request?.request;
|
|
97
108
|
if (reqId) {
|
|
109
|
+
if (this.internalRequestIds.delete(reqId))
|
|
110
|
+
return;
|
|
98
111
|
this.inFlightRequests.delete(reqId);
|
|
99
112
|
this._notifyIdleListeners();
|
|
100
113
|
}
|
|
@@ -104,7 +117,7 @@ export class NetworkInterceptor {
|
|
|
104
117
|
/**
|
|
105
118
|
* Add a network intercept for specific URL patterns
|
|
106
119
|
*/
|
|
107
|
-
async intercept(patterns, handler, phases = ['beforeRequestSent'], contexts) {
|
|
120
|
+
async intercept(patterns, handler, phases = ['beforeRequestSent'], contexts, opts) {
|
|
108
121
|
await this.initialize();
|
|
109
122
|
const urlPatterns = this.normalizePatterns(patterns);
|
|
110
123
|
const ctxs = contexts ?? (this.context ? [this.context] : undefined);
|
|
@@ -119,6 +132,7 @@ export class NetworkInterceptor {
|
|
|
119
132
|
patterns: urlPatterns,
|
|
120
133
|
phases,
|
|
121
134
|
handler,
|
|
135
|
+
strict: opts?.strict,
|
|
122
136
|
});
|
|
123
137
|
this.handlers.set(interceptId, handler);
|
|
124
138
|
return interceptId;
|
|
@@ -409,8 +423,15 @@ export class NetworkInterceptor {
|
|
|
409
423
|
if (!event.isBlocked || !event.intercepts?.length)
|
|
410
424
|
return;
|
|
411
425
|
const requestId = event.request.request;
|
|
426
|
+
const internal = this.isInternalContext(event.context);
|
|
427
|
+
// Internal contexts are owned by strict library intercepts. Never invoke a
|
|
428
|
+
// user's browser-global mock/route for those requests, even when its URL
|
|
429
|
+
// pattern also matches the reserved hydration URL.
|
|
430
|
+
const interceptIds = internal
|
|
431
|
+
? event.intercepts.filter((id) => this.intercepts.get(id)?.strict === true)
|
|
432
|
+
: event.intercepts;
|
|
412
433
|
// Find matching handler
|
|
413
|
-
for (const interceptId of
|
|
434
|
+
for (const interceptId of interceptIds) {
|
|
414
435
|
const handler = this.handlers.get(interceptId);
|
|
415
436
|
if (!handler)
|
|
416
437
|
continue;
|
|
@@ -422,12 +443,18 @@ export class NetworkInterceptor {
|
|
|
422
443
|
isBlocked: event.isBlocked,
|
|
423
444
|
context: event.context,
|
|
424
445
|
};
|
|
446
|
+
const strict = this.intercepts.get(interceptId)?.strict === true;
|
|
425
447
|
try {
|
|
426
448
|
const result = await handler(interceptedRequest);
|
|
427
449
|
if (result) {
|
|
428
450
|
// Provide mock response
|
|
429
451
|
await this.provideResponse(requestId, result);
|
|
430
452
|
}
|
|
453
|
+
else if (strict) {
|
|
454
|
+
// A strict internal intercept must own every request it matches — a
|
|
455
|
+
// handler returning nothing is a bug, not a pass-through.
|
|
456
|
+
await this.failRequest(requestId);
|
|
457
|
+
}
|
|
431
458
|
else {
|
|
432
459
|
// Continue with original request
|
|
433
460
|
await this.continueRequest(requestId);
|
|
@@ -435,13 +462,24 @@ export class NetworkInterceptor {
|
|
|
435
462
|
return;
|
|
436
463
|
}
|
|
437
464
|
catch (err) {
|
|
465
|
+
if (strict) {
|
|
466
|
+
// Never fall through to the real network for a strict internal
|
|
467
|
+
// intercept: fail the request so the caller sees the error rather
|
|
468
|
+
// than a surprise real response reaching the origin server.
|
|
469
|
+
await this.failRequest(requestId).catch(() => { });
|
|
470
|
+
return;
|
|
471
|
+
}
|
|
438
472
|
console.error('Error in network intercept handler:', err);
|
|
439
473
|
await this.continueRequest(requestId);
|
|
440
474
|
return;
|
|
441
475
|
}
|
|
442
476
|
}
|
|
443
|
-
//
|
|
444
|
-
|
|
477
|
+
// A library-owned request without its strict owner must never escape to the
|
|
478
|
+
// real origin. Public requests retain the normal pass-through behavior.
|
|
479
|
+
if (internal)
|
|
480
|
+
await this.failRequest(requestId);
|
|
481
|
+
else
|
|
482
|
+
await this.continueRequest(requestId);
|
|
445
483
|
}
|
|
446
484
|
normalizePatterns(patterns) {
|
|
447
485
|
// Handle single UrlPattern object
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/lib/bidi/network.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/lib/bidi/network.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Session State Manager
|
|
3
|
-
*
|
|
3
|
+
* CraftDriver session persistence - save login state, cookies, localStorage
|
|
4
4
|
*/
|
|
5
5
|
import type { BiDiConnection } from './connection.js';
|
|
6
6
|
import type { Driver } from '../driver.js';
|
|
@@ -15,28 +15,47 @@ export interface StorageStateOptions {
|
|
|
15
15
|
/** Specific origins to capture (default: all) */
|
|
16
16
|
origins?: string[];
|
|
17
17
|
}
|
|
18
|
+
export interface SessionStateManagerOptions {
|
|
19
|
+
browserName?: string;
|
|
20
|
+
protocol?: 'bidi' | 'classic';
|
|
21
|
+
runSerializedRestore?: <T>(task: () => Promise<T>) => Promise<T>;
|
|
22
|
+
}
|
|
18
23
|
export declare class SessionStateManager {
|
|
19
24
|
private connection;
|
|
20
25
|
private driver;
|
|
21
26
|
private context?;
|
|
22
|
-
|
|
27
|
+
private options;
|
|
28
|
+
private restoreTail;
|
|
29
|
+
constructor(driver: Driver, connection: BiDiConnection | null, context?: BrowsingContext, options?: SessionStateManagerOptions);
|
|
23
30
|
/**
|
|
24
|
-
* Save current session state to a file
|
|
31
|
+
* Save current session state to a file
|
|
25
32
|
* Captures cookies and optionally localStorage/sessionStorage
|
|
26
33
|
*/
|
|
27
34
|
saveState(path: string, options?: StorageStateOptions): Promise<SessionState>;
|
|
28
35
|
/**
|
|
29
36
|
* Load session state from a file
|
|
30
37
|
*/
|
|
31
|
-
loadState(
|
|
38
|
+
loadState(source: string | SessionState): Promise<void>;
|
|
32
39
|
/**
|
|
33
40
|
* Get current session state
|
|
34
41
|
*/
|
|
35
42
|
getState(options?: StorageStateOptions): Promise<SessionState>;
|
|
36
43
|
/**
|
|
37
|
-
* Set session state (cookies + storage)
|
|
44
|
+
* Set session state (cookies + storage) onto the active page.
|
|
45
|
+
*
|
|
46
|
+
* This is the active-page restore path: origin-scoped storage can only be
|
|
47
|
+
* written to the page currently open. When the snapshot carries
|
|
48
|
+
* sessionStorage, the whole restore must target a single origin that matches
|
|
49
|
+
* the active http(s) page — validated before any mutation.
|
|
50
|
+
*/
|
|
51
|
+
setState(source: SessionState | string, operation?: string): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Guard for the active-page restore: when a snapshot carries sessionStorage
|
|
54
|
+
* (tab-scoped, writable only to the current page), require exactly one
|
|
55
|
+
* applicable origin and that it matches the active http(s) origin. Throws
|
|
56
|
+
* before any mutation on a mismatch or a multi-origin snapshot.
|
|
38
57
|
*/
|
|
39
|
-
|
|
58
|
+
private _validateActivePageRestore;
|
|
40
59
|
/**
|
|
41
60
|
* Get all cookies using BiDi or fallback to Classic
|
|
42
61
|
*/
|
|
@@ -79,6 +98,11 @@ export declare class SessionStateManager {
|
|
|
79
98
|
private classicCookieToCookie;
|
|
80
99
|
private setCookiesBiDi;
|
|
81
100
|
private setCookiesClassic;
|
|
101
|
+
private _setCookieStrict;
|
|
102
|
+
private _cookieCanBeSetForUrl;
|
|
103
|
+
private _errorContext;
|
|
104
|
+
private _runSerializedRestore;
|
|
105
|
+
private _restoreDriverError;
|
|
82
106
|
/**
|
|
83
107
|
* Convert this module's lowercase sameSite (`strict`/`lax`/`none`/`default`)
|
|
84
108
|
* to the W3C Classic capitalized form. `default`/undefined is dropped so the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/lib/bidi/storage.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/lib/bidi/storage.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/bidi/storage.js
CHANGED
|
@@ -1,34 +1,36 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Session State Manager
|
|
3
|
-
*
|
|
3
|
+
* CraftDriver session persistence - save login state, cookies, localStorage
|
|
4
4
|
*/
|
|
5
|
-
import fs from 'fs/promises';
|
|
6
5
|
import { CraftdriverError, ErrorCode } from '../errors.js';
|
|
6
|
+
import { writeSecureFile } from '../secureFile.js';
|
|
7
|
+
import { nonEmptyOrigins, isHttpOrigin, isSessionStateEmpty, isStorageStateError, normalizeCookieForRestore, parseSessionState, storageStateDetail, } from '../sessionStateValidation.js';
|
|
7
8
|
export class SessionStateManager {
|
|
8
9
|
connection;
|
|
9
10
|
driver;
|
|
10
11
|
context;
|
|
11
|
-
|
|
12
|
+
options;
|
|
13
|
+
restoreTail = Promise.resolve();
|
|
14
|
+
constructor(driver, connection, context, options = {}) {
|
|
12
15
|
this.driver = driver;
|
|
13
16
|
this.connection = connection;
|
|
14
17
|
this.context = context;
|
|
18
|
+
this.options = options;
|
|
15
19
|
}
|
|
16
20
|
/**
|
|
17
|
-
* Save current session state to a file
|
|
21
|
+
* Save current session state to a file
|
|
18
22
|
* Captures cookies and optionally localStorage/sessionStorage
|
|
19
23
|
*/
|
|
20
24
|
async saveState(path, options = {}) {
|
|
21
25
|
const state = await this.getState(options);
|
|
22
|
-
await
|
|
26
|
+
await writeSecureFile(path, JSON.stringify(state, null, 2));
|
|
23
27
|
return state;
|
|
24
28
|
}
|
|
25
29
|
/**
|
|
26
30
|
* Load session state from a file
|
|
27
31
|
*/
|
|
28
|
-
async loadState(
|
|
29
|
-
|
|
30
|
-
const state = JSON.parse(data);
|
|
31
|
-
await this.setState(state);
|
|
32
|
+
async loadState(source) {
|
|
33
|
+
await this.setState(source, 'browser.storage.loadState');
|
|
32
34
|
}
|
|
33
35
|
/**
|
|
34
36
|
* Get current session state
|
|
@@ -60,20 +62,103 @@ export class SessionStateManager {
|
|
|
60
62
|
return state;
|
|
61
63
|
}
|
|
62
64
|
/**
|
|
63
|
-
* Set session state (cookies + storage)
|
|
65
|
+
* Set session state (cookies + storage) onto the active page.
|
|
66
|
+
*
|
|
67
|
+
* This is the active-page restore path: origin-scoped storage can only be
|
|
68
|
+
* written to the page currently open. When the snapshot carries
|
|
69
|
+
* sessionStorage, the whole restore must target a single origin that matches
|
|
70
|
+
* the active http(s) page — validated before any mutation.
|
|
64
71
|
*/
|
|
65
|
-
async setState(
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
72
|
+
async setState(source, operation = 'browser.storage.setState') {
|
|
73
|
+
const errorContext = this._errorContext(operation);
|
|
74
|
+
const state = await parseSessionState(source, errorContext);
|
|
75
|
+
if (isSessionStateEmpty(state))
|
|
76
|
+
return;
|
|
77
|
+
await this._runSerializedRestore(async () => {
|
|
78
|
+
try {
|
|
79
|
+
await this._validateActivePageRestore(state, errorContext);
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
if (isStorageStateError(err))
|
|
83
|
+
throw err;
|
|
84
|
+
throw this._restoreDriverError(err, errorContext, 'preflight', false);
|
|
85
|
+
}
|
|
86
|
+
let partialApplied = false;
|
|
87
|
+
if (nonEmptyOrigins(state.localStorage).length > 0) {
|
|
88
|
+
try {
|
|
89
|
+
partialApplied = true; // a quota/security failure may follow earlier key writes
|
|
90
|
+
await this.setLocalStorage(state.localStorage);
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
throw this._restoreDriverError(err, errorContext, 'localStorage', partialApplied);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (nonEmptyOrigins(state.sessionStorage).length > 0) {
|
|
97
|
+
try {
|
|
98
|
+
partialApplied = true;
|
|
99
|
+
await this.setSessionStorage(state.sessionStorage);
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
throw this._restoreDriverError(err, errorContext, 'sessionStorage', partialApplied);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (state.cookies?.length) {
|
|
106
|
+
for (const captured of state.cookies) {
|
|
107
|
+
try {
|
|
108
|
+
await this._setCookieStrict(normalizeCookieForRestore(captured));
|
|
109
|
+
partialApplied = true;
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
throw this._restoreDriverError(err, errorContext, 'cookies', partialApplied);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Guard for the active-page restore: when a snapshot carries sessionStorage
|
|
120
|
+
* (tab-scoped, writable only to the current page), require exactly one
|
|
121
|
+
* applicable origin and that it matches the active http(s) origin. Throws
|
|
122
|
+
* before any mutation on a mismatch or a multi-origin snapshot.
|
|
123
|
+
*/
|
|
124
|
+
async _validateActivePageRestore(state, errorContext) {
|
|
125
|
+
const sessionOrigins = nonEmptyOrigins(state.sessionStorage);
|
|
126
|
+
if (sessionOrigins.length > 1) {
|
|
127
|
+
throw new CraftdriverError(ErrorCode.INVALID_ARGUMENT, 'cannot restore multi-origin sessionStorage on the active page — restore one origin at a time', { detail: storageStateDetail(errorContext, 'validation', { section: 'sessionStorage' }) });
|
|
69
128
|
}
|
|
70
|
-
|
|
71
|
-
if (
|
|
72
|
-
|
|
129
|
+
const activeOrigin = await this.driver.executeScript('return location.origin');
|
|
130
|
+
if (!isHttpOrigin(activeOrigin)) {
|
|
131
|
+
throw new CraftdriverError(ErrorCode.STATE_INVALID, 'active-page state restore requires an HTTP(S) page', {
|
|
132
|
+
detail: storageStateDetail(errorContext, 'preflight', { activeOrigin }),
|
|
133
|
+
hint: 'Navigate to the snapshot origin first, then call browser.loadState().',
|
|
134
|
+
});
|
|
73
135
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
136
|
+
const storageOrigins = [
|
|
137
|
+
...new Set([
|
|
138
|
+
...nonEmptyOrigins(state.localStorage),
|
|
139
|
+
...sessionOrigins,
|
|
140
|
+
]),
|
|
141
|
+
];
|
|
142
|
+
for (const origin of storageOrigins) {
|
|
143
|
+
if (origin !== activeOrigin) {
|
|
144
|
+
throw new CraftdriverError(ErrorCode.STATE_INVALID, `snapshot origin ${origin} does not match the active page origin ${activeOrigin}`, {
|
|
145
|
+
detail: storageStateDetail(errorContext, 'preflight', { origin, activeOrigin }),
|
|
146
|
+
hint: 'Enable BiDi for multi-origin restore, or navigate to the sole origin first.',
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
const activeUrl = new URL(await this.driver.executeScript('return location.href'));
|
|
151
|
+
for (const captured of state.cookies ?? []) {
|
|
152
|
+
const cookie = normalizeCookieForRestore(captured);
|
|
153
|
+
if (!this._cookieCanBeSetForUrl(cookie, activeUrl)) {
|
|
154
|
+
throw new CraftdriverError(ErrorCode.STATE_INVALID, `a snapshot cookie for domain ${cookie.domain} cannot be set from ${activeOrigin}`, {
|
|
155
|
+
detail: storageStateDetail(errorContext, 'preflight', {
|
|
156
|
+
cookieDomain: cookie.domain,
|
|
157
|
+
activeOrigin,
|
|
158
|
+
}),
|
|
159
|
+
hint: 'Enable BiDi for out-of-band cookies, or load a snapshot scoped to this origin.',
|
|
160
|
+
});
|
|
161
|
+
}
|
|
77
162
|
}
|
|
78
163
|
}
|
|
79
164
|
/**
|
|
@@ -188,22 +273,16 @@ export class SessionStateManager {
|
|
|
188
273
|
};
|
|
189
274
|
}
|
|
190
275
|
async setCookiesBiDi(cookies) {
|
|
191
|
-
for (const
|
|
192
|
-
|
|
193
|
-
let sameSite = cookie.sameSite;
|
|
194
|
-
let secure = cookie.secure;
|
|
195
|
-
if (sameSite === 'none' && !secure) {
|
|
196
|
-
// Invalid combo - either set secure to true or change sameSite
|
|
197
|
-
sameSite = 'lax'; // Default to lax for non-secure cookies
|
|
198
|
-
}
|
|
276
|
+
for (const captured of cookies) {
|
|
277
|
+
const cookie = normalizeCookieForRestore(captured);
|
|
199
278
|
const partialCookie = {
|
|
200
279
|
name: cookie.name,
|
|
201
280
|
value: { type: 'string', value: this.normalizeCookieValue(cookie.value) },
|
|
202
281
|
domain: cookie.domain,
|
|
203
282
|
path: cookie.path,
|
|
204
283
|
httpOnly: cookie.httpOnly,
|
|
205
|
-
secure: secure,
|
|
206
|
-
sameSite: sameSite,
|
|
284
|
+
secure: cookie.secure,
|
|
285
|
+
sameSite: cookie.sameSite,
|
|
207
286
|
expiry: cookie.expiry,
|
|
208
287
|
};
|
|
209
288
|
try {
|
|
@@ -219,7 +298,8 @@ export class SessionStateManager {
|
|
|
219
298
|
}
|
|
220
299
|
}
|
|
221
300
|
async setCookiesClassic(cookies) {
|
|
222
|
-
for (const
|
|
301
|
+
for (const captured of cookies) {
|
|
302
|
+
const cookie = normalizeCookieForRestore(captured);
|
|
223
303
|
const input = {
|
|
224
304
|
name: cookie.name,
|
|
225
305
|
value: this.normalizeCookieValue(cookie.value),
|
|
@@ -258,6 +338,67 @@ export class SessionStateManager {
|
|
|
258
338
|
}
|
|
259
339
|
}
|
|
260
340
|
}
|
|
341
|
+
async _setCookieStrict(cookie) {
|
|
342
|
+
if (this.connection?.isConnected()) {
|
|
343
|
+
await this.setCookiesBiDi([cookie]);
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
const input = {
|
|
347
|
+
name: cookie.name,
|
|
348
|
+
value: this.normalizeCookieValue(cookie.value),
|
|
349
|
+
};
|
|
350
|
+
if (cookie.domain)
|
|
351
|
+
input.domain = cookie.domain;
|
|
352
|
+
if (cookie.path)
|
|
353
|
+
input.path = cookie.path;
|
|
354
|
+
if (cookie.secure !== undefined)
|
|
355
|
+
input.secure = cookie.secure;
|
|
356
|
+
if (cookie.httpOnly !== undefined)
|
|
357
|
+
input.httpOnly = cookie.httpOnly;
|
|
358
|
+
if (cookie.expiry !== undefined)
|
|
359
|
+
input.expiry = cookie.expiry;
|
|
360
|
+
const sameSite = this.toClassicSameSite(cookie.sameSite);
|
|
361
|
+
if (sameSite)
|
|
362
|
+
input.sameSite = sameSite;
|
|
363
|
+
await this.driver.addCookie(input);
|
|
364
|
+
}
|
|
365
|
+
_cookieCanBeSetForUrl(cookie, activeUrl) {
|
|
366
|
+
const host = activeUrl.hostname.toLowerCase();
|
|
367
|
+
const domain = cookie.domain.replace(/^\./, '').toLowerCase();
|
|
368
|
+
const hostIsIp = /^\d+(?:\.\d+){3}$/.test(host) || host.includes(':');
|
|
369
|
+
const domainMatches = host === domain || (!hostIsIp && host.endsWith(`.${domain}`));
|
|
370
|
+
if (!domainMatches)
|
|
371
|
+
return false;
|
|
372
|
+
if (cookie.secure) {
|
|
373
|
+
const trustworthyLocal = host === 'localhost' || host === '127.0.0.1' || host === '::1';
|
|
374
|
+
if (activeUrl.protocol !== 'https:' && !trustworthyLocal)
|
|
375
|
+
return false;
|
|
376
|
+
}
|
|
377
|
+
return true;
|
|
378
|
+
}
|
|
379
|
+
_errorContext(operation) {
|
|
380
|
+
return {
|
|
381
|
+
operation,
|
|
382
|
+
browserName: this.options.browserName ?? 'unknown',
|
|
383
|
+
protocol: this.options.protocol ?? (this.connection?.isConnected() ? 'bidi' : 'classic'),
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
_runSerializedRestore(task) {
|
|
387
|
+
if (this.options.runSerializedRestore)
|
|
388
|
+
return this.options.runSerializedRestore(task);
|
|
389
|
+
const run = this.restoreTail.then(task, task);
|
|
390
|
+
this.restoreTail = run.then(() => undefined, () => undefined);
|
|
391
|
+
return run;
|
|
392
|
+
}
|
|
393
|
+
_restoreDriverError(cause, context, phase, partialApplied) {
|
|
394
|
+
return new CraftdriverError(ErrorCode.DRIVER_ERROR, `storage state restore failed while applying ${phase}`, {
|
|
395
|
+
cause,
|
|
396
|
+
detail: storageStateDetail(context, phase, { partialApplied }),
|
|
397
|
+
hint: partialApplied
|
|
398
|
+
? 'Use a fresh browser context when failure isolation is required.'
|
|
399
|
+
: undefined,
|
|
400
|
+
});
|
|
401
|
+
}
|
|
261
402
|
/**
|
|
262
403
|
* Convert this module's lowercase sameSite (`strict`/`lax`/`none`/`default`)
|
|
263
404
|
* to the W3C Classic capitalized form. `default`/undefined is dropped so the
|
|
@@ -277,8 +418,15 @@ export class SessionStateManager {
|
|
|
277
418
|
}
|
|
278
419
|
normalizeCookie(cookie) {
|
|
279
420
|
return {
|
|
280
|
-
|
|
421
|
+
name: cookie.name,
|
|
281
422
|
value: this.normalizeCookieValue(cookie.value),
|
|
423
|
+
domain: cookie.domain,
|
|
424
|
+
path: cookie.path,
|
|
425
|
+
size: cookie.size,
|
|
426
|
+
httpOnly: cookie.httpOnly,
|
|
427
|
+
secure: cookie.secure,
|
|
428
|
+
sameSite: cookie.sameSite,
|
|
429
|
+
expiry: cookie.expiry,
|
|
282
430
|
};
|
|
283
431
|
}
|
|
284
432
|
normalizeCookieValue(value) {
|
|
@@ -321,24 +469,21 @@ export class SessionStateManager {
|
|
|
321
469
|
return result;
|
|
322
470
|
}
|
|
323
471
|
async setLocalStorage(storage) {
|
|
324
|
-
const currentOrigin = await this.driver.executeScript('return location.origin');
|
|
325
472
|
for (const [origin, data] of Object.entries(storage)) {
|
|
326
|
-
if (
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
// For other origins, we'd need to navigate there first - complex case
|
|
473
|
+
if (Object.keys(data).length === 0)
|
|
474
|
+
continue;
|
|
475
|
+
await this.driver.executeScript(`if (location.origin !== arguments[0]) throw new Error('active origin changed during restore');
|
|
476
|
+
const entries = arguments[1];
|
|
477
|
+
for (const key of Object.keys(entries)) localStorage.setItem(key, entries[key]);`, [origin, data]);
|
|
332
478
|
}
|
|
333
479
|
}
|
|
334
480
|
async setSessionStorage(storage) {
|
|
335
|
-
const currentOrigin = await this.driver.executeScript('return location.origin');
|
|
336
481
|
for (const [origin, data] of Object.entries(storage)) {
|
|
337
|
-
if (
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
482
|
+
if (Object.keys(data).length === 0)
|
|
483
|
+
continue;
|
|
484
|
+
await this.driver.executeScript(`if (location.origin !== arguments[0]) throw new Error('active origin changed during restore');
|
|
485
|
+
const entries = arguments[1];
|
|
486
|
+
for (const key of Object.keys(entries)) sessionStorage.setItem(key, entries[key]);`, [origin, data]);
|
|
342
487
|
}
|
|
343
488
|
}
|
|
344
489
|
async getCurrentDomain() {
|