@poe-platform/safe-bash 0.1.684 → 0.1.686

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 (58) hide show
  1. package/dist/safe-bash/commands/playwright/index.d.ts.map +1 -1
  2. package/dist/safe-bash/commands/playwright/index.js +14 -2
  3. package/dist/safe-bash/commands/playwright/index.js.map +1 -1
  4. package/dist/safe-bash/playwright/ability-execution.d.ts +2 -0
  5. package/dist/safe-bash/playwright/ability-execution.d.ts.map +1 -1
  6. package/dist/safe-bash/playwright/ability-execution.js +10 -14
  7. package/dist/safe-bash/playwright/ability-execution.js.map +1 -1
  8. package/dist/safe-bash/playwright/adapter.d.ts +2 -0
  9. package/dist/safe-bash/playwright/adapter.d.ts.map +1 -1
  10. package/dist/safe-bash/playwright/adapter.js +10 -0
  11. package/dist/safe-bash/playwright/adapter.js.map +1 -1
  12. package/dist/safe-bash/playwright/command-budget.d.ts +5 -0
  13. package/dist/safe-bash/playwright/command-budget.d.ts.map +1 -0
  14. package/dist/safe-bash/playwright/command-budget.js +13 -0
  15. package/dist/safe-bash/playwright/command-budget.js.map +1 -0
  16. package/dist/safe-bash/playwright/controller.d.ts.map +1 -1
  17. package/dist/safe-bash/playwright/controller.js +44 -27
  18. package/dist/safe-bash/playwright/controller.js.map +1 -1
  19. package/dist/safe-bash/playwright/index.d.ts +3 -0
  20. package/dist/safe-bash/playwright/index.d.ts.map +1 -1
  21. package/dist/safe-bash/playwright/index.js +2 -0
  22. package/dist/safe-bash/playwright/index.js.map +1 -1
  23. package/dist/safe-bash/playwright/invocation.d.ts.map +1 -1
  24. package/dist/safe-bash/playwright/invocation.js +9 -6
  25. package/dist/safe-bash/playwright/invocation.js.map +1 -1
  26. package/dist/safe-bash/playwright/native-evaluation.d.ts +10 -0
  27. package/dist/safe-bash/playwright/native-evaluation.d.ts.map +1 -0
  28. package/dist/safe-bash/playwright/native-evaluation.js +243 -0
  29. package/dist/safe-bash/playwright/native-evaluation.js.map +1 -0
  30. package/dist/safe-bash/playwright/native-storage-realm.d.ts +84 -0
  31. package/dist/safe-bash/playwright/native-storage-realm.d.ts.map +1 -0
  32. package/dist/safe-bash/playwright/native-storage-realm.js +152 -0
  33. package/dist/safe-bash/playwright/native-storage-realm.js.map +1 -0
  34. package/dist/safe-bash/playwright/native-storage-replacement.d.ts +28 -0
  35. package/dist/safe-bash/playwright/native-storage-replacement.d.ts.map +1 -0
  36. package/dist/safe-bash/playwright/native-storage-replacement.js +282 -0
  37. package/dist/safe-bash/playwright/native-storage-replacement.js.map +1 -0
  38. package/dist/safe-bash/playwright/native-storage-targets.d.ts +15 -0
  39. package/dist/safe-bash/playwright/native-storage-targets.d.ts.map +1 -0
  40. package/dist/safe-bash/playwright/native-storage-targets.js +123 -0
  41. package/dist/safe-bash/playwright/native-storage-targets.js.map +1 -0
  42. package/dist/safe-bash/playwright/private-target-transport.d.ts +28 -0
  43. package/dist/safe-bash/playwright/private-target-transport.d.ts.map +1 -0
  44. package/dist/safe-bash/playwright/private-target-transport.js +310 -0
  45. package/dist/safe-bash/playwright/private-target-transport.js.map +1 -0
  46. package/dist/safe-bash/playwright/response.d.ts +5 -0
  47. package/dist/safe-bash/playwright/response.d.ts.map +1 -1
  48. package/dist/safe-bash/playwright/response.js +8 -3
  49. package/dist/safe-bash/playwright/response.js.map +1 -1
  50. package/dist/safe-bash/playwright/route-capabilities.d.ts.map +1 -1
  51. package/dist/safe-bash/playwright/route-capabilities.js +23 -5
  52. package/dist/safe-bash/playwright/route-capabilities.js.map +1 -1
  53. package/dist/safe-bash/playwright/standard-capabilities.d.ts.map +1 -1
  54. package/dist/safe-bash/playwright/standard-capabilities.js +17 -36
  55. package/dist/safe-bash/playwright/standard-capabilities.js.map +1 -1
  56. package/dist/safe-bash/playwright/storage-capabilities.js +3 -4
  57. package/dist/safe-bash/playwright/storage-capabilities.js.map +1 -1
  58. package/package.json +2 -2
@@ -0,0 +1,123 @@
1
+ export function createPlaywrightStorageOriginPreparer(control, privateTargets) {
2
+ return async ({ browserContextId, origin, signal }) => {
3
+ signal.throwIfAborted();
4
+ if (!browserContextId || new URL(origin).origin !== origin)
5
+ throw new Error('Invalid native storage target request');
6
+ const url = origin + '/';
7
+ let targetId;
8
+ let sessionId;
9
+ let detached = false;
10
+ let destroyed = false;
11
+ let retirement;
12
+ let detachOperation;
13
+ let resolveDestroyed;
14
+ let resolveLoaded;
15
+ let rejectLoaded;
16
+ const removed = new Promise(resolve => { resolveDestroyed = resolve; });
17
+ const loaded = new Promise((resolve, reject) => { resolveLoaded = resolve; rejectLoaded = reject; });
18
+ void loaded.catch(() => { });
19
+ const pending = new Set();
20
+ let eventFailure;
21
+ const unsubscribe = control.subscribe(event => {
22
+ if (event.method === 'Target.targetDestroyed' && targetId && event.params?.targetId === targetId) {
23
+ destroyed = true;
24
+ resolveDestroyed();
25
+ rejectLoaded(new Error('Native storage target closed'));
26
+ }
27
+ if (!sessionId || event.sessionId !== sessionId)
28
+ return;
29
+ if (event.method === 'Page.loadEventFired')
30
+ resolveLoaded();
31
+ if (event.method !== 'Fetch.requestPaused')
32
+ return;
33
+ const operation = Promise.resolve().then(async () => {
34
+ const request = event.params?.request;
35
+ if (request?.url !== url || event.params?.resourceType !== 'Document' || typeof event.params?.requestId !== 'string')
36
+ throw new Error('Unexpected private storage navigation');
37
+ await control.send('Fetch.fulfillRequest', { requestId: event.params.requestId, responseCode: 200, responseHeaders: [{ name: 'Content-Type', value: 'text/html; charset=utf-8' }], body: btoa('<!doctype html><html><head></head><body></body></html>') }, sessionId);
38
+ });
39
+ pending.add(operation);
40
+ void operation.catch(error => { eventFailure = error; rejectLoaded(error); }).finally(() => pending.delete(operation));
41
+ });
42
+ const detach = () => detachOperation ??= (async () => {
43
+ if (retirement) {
44
+ await retirement;
45
+ detached = true;
46
+ return;
47
+ }
48
+ if (sessionId && !detached && !destroyed)
49
+ await control.send('Target.detachFromTarget', { sessionId });
50
+ detached = true;
51
+ })();
52
+ const release = () => retirement ??= (async () => {
53
+ try {
54
+ if (targetId && !destroyed) {
55
+ const result = await control.send('Target.closeTarget', { targetId });
56
+ if (result.success !== true && !destroyed)
57
+ throw new Error('Native storage target retirement rejected');
58
+ await removed;
59
+ }
60
+ await Promise.allSettled(pending);
61
+ }
62
+ finally {
63
+ unsubscribe();
64
+ signal.removeEventListener('abort', abort);
65
+ }
66
+ })();
67
+ const abort = () => { rejectLoaded(signal.reason); if (targetId)
68
+ void release().catch(() => { }); };
69
+ signal.addEventListener('abort', abort, { once: true });
70
+ try {
71
+ await control.send('Target.setDiscoverTargets', { discover: true });
72
+ signal.throwIfAborted();
73
+ const creation = privateTargets.beginCreation();
74
+ try {
75
+ const created = await control.send('Target.createTarget', { url: 'about:blank', browserContextId, background: true });
76
+ if (typeof created.targetId !== 'string' || !created.targetId)
77
+ throw new Error('Invalid native storage target identity');
78
+ targetId = created.targetId;
79
+ creation.commit(targetId);
80
+ }
81
+ catch (error) {
82
+ creation.fail(error);
83
+ throw error;
84
+ }
85
+ signal.throwIfAborted();
86
+ const attached = await control.send('Target.attachToTarget', { targetId, flatten: true });
87
+ if (typeof attached.sessionId !== 'string' || !attached.sessionId)
88
+ throw new Error('Invalid native storage control session');
89
+ sessionId = attached.sessionId;
90
+ const { targetInfo } = await control.send('Target.getTargetInfo', {}, sessionId);
91
+ const identity = targetInfo;
92
+ if (identity?.targetId !== targetId || identity.browserContextId !== browserContextId)
93
+ throw new Error('Native storage target identity mismatch');
94
+ signal.throwIfAborted();
95
+ await control.send('Emulation.setScriptExecutionDisabled', { value: true }, sessionId);
96
+ await control.send('Page.enable', {}, sessionId);
97
+ await control.send('Network.setBypassServiceWorker', { bypass: true }, sessionId);
98
+ await control.send('Fetch.enable', { patterns: [{ resourceType: 'Document', requestStage: 'Request' }] }, sessionId);
99
+ signal.throwIfAborted();
100
+ const navigation = await control.send('Page.navigate', { url }, sessionId);
101
+ if (navigation.errorText)
102
+ throw new Error('Native storage synthetic navigation failed');
103
+ await loaded;
104
+ await Promise.all(pending);
105
+ if (eventFailure)
106
+ throw eventFailure;
107
+ signal.throwIfAborted();
108
+ await control.send('Fetch.disable', {}, sessionId);
109
+ return { targetId, browserContextId, cdp: { send(method, params) {
110
+ if (detached || destroyed || retirement)
111
+ return Promise.reject(new Error('Native storage target is closed'));
112
+ return control.send(method, params, sessionId);
113
+ }, detach }, release };
114
+ }
115
+ catch (error) {
116
+ const cleanup = await Promise.allSettled([release()]);
117
+ if (cleanup[0].status === 'rejected')
118
+ throw new AggregateError([error, cleanup[0].reason], 'Native storage preparation and retirement failed');
119
+ throw error;
120
+ }
121
+ };
122
+ }
123
+ //# sourceMappingURL=native-storage-targets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-storage-targets.js","sourceRoot":"","sources":["../../src/playwright/native-storage-targets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export interface PlaywrightCDPTransport {
2
+ open?(): void;
3
+ send(message: object): void;
4
+ close(): void;
5
+ onmessage?: ((message: object) => void) | undefined;
6
+ onclose?: ((reason?: string) => void) | undefined;
7
+ }
8
+ export interface PlaywrightPrivateTargetTransportLimits {
9
+ maxMessageBytes?: number;
10
+ maxPendingCommands?: number;
11
+ maxPendingBytes?: number;
12
+ maxBufferedMessages?: number;
13
+ maxBufferedBytes?: number;
14
+ maxPrivateTargets?: number;
15
+ maxPrivateSessions?: number;
16
+ creationTimeoutMs?: number;
17
+ commandTimeoutMs?: number;
18
+ }
19
+ export interface PlaywrightPrivateTargetCreation {
20
+ commit(targetId: string): void;
21
+ rollback(): void;
22
+ fail(error: unknown): void;
23
+ }
24
+ export declare function createPlaywrightPrivateTargetTransport(upstream: PlaywrightCDPTransport, options?: PlaywrightPrivateTargetTransportLimits): {
25
+ transport: PlaywrightCDPTransport;
26
+ beginCreation(): PlaywrightPrivateTargetCreation;
27
+ };
28
+ //# sourceMappingURL=private-target-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"private-target-transport.d.ts","sourceRoot":"","sources":["../../src/playwright/private-target-transport.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,IAAI,IAAI,CAAC;IACd,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,IAAI,IAAI,CAAC;IACd,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACpD,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CACnD;AAED,MAAM,WAAW,sCAAsC;IACrD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,+BAA+B;IAC9C,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,IAAI,IAAI,CAAC;IACjB,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5B;AAqCD,wBAAgB,sCAAsC,CAAC,QAAQ,EAAE,sBAAsB,EAAE,OAAO,GAAE,sCAA2C,GAAG;IAC9I,SAAS,EAAE,sBAAsB,CAAC;IAClC,aAAa,IAAI,+BAA+B,CAAC;CAClD,CA+OA"}
@@ -0,0 +1,310 @@
1
+ function record(value) {
2
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
3
+ }
4
+ function identity(value) {
5
+ return typeof value === 'string' && value.length > 0 && value.length <= 1024 && !value.includes('\0');
6
+ }
7
+ export function createPlaywrightPrivateTargetTransport(upstream, options = {}) {
8
+ const limits = {
9
+ maxMessageBytes: 16 * 1024 * 1024,
10
+ maxPendingCommands: 1024,
11
+ maxPendingBytes: 4 * 1024 * 1024,
12
+ maxBufferedMessages: 512,
13
+ maxBufferedBytes: 16 * 1024 * 1024,
14
+ maxPrivateTargets: 256,
15
+ maxPrivateSessions: 1024,
16
+ creationTimeoutMs: 2000,
17
+ commandTimeoutMs: 10000,
18
+ ...options,
19
+ };
20
+ for (const [name, value] of Object.entries(limits)) {
21
+ if (!Number.isSafeInteger(value) || value <= 0 || (name.endsWith('TimeoutMs') && value > 2147483647)) {
22
+ throw new TypeError(`Invalid private transport limit: ${name}`);
23
+ }
24
+ }
25
+ const encoder = new TextEncoder();
26
+ const targets = new Set();
27
+ const sessions = new Map();
28
+ const pending = new Map();
29
+ const clientKeys = new Set();
30
+ const buffered = [];
31
+ let pendingBytes = 0;
32
+ let bufferedBytes = 0;
33
+ let sequence = 0;
34
+ let creation;
35
+ let failure;
36
+ let flushing = false;
37
+ let opened = false;
38
+ function retire(reason) {
39
+ if (failure)
40
+ return;
41
+ failure = reason instanceof Error ? reason : new Error(typeof reason === 'string' ? reason : 'Private target transport failed');
42
+ if (creation) {
43
+ clearTimeout(creation.timer);
44
+ creation.active = false;
45
+ creation.failed = true;
46
+ creation = undefined;
47
+ }
48
+ for (const command of pending.values())
49
+ clearTimeout(command.timer);
50
+ pending.clear();
51
+ clientKeys.clear();
52
+ targets.clear();
53
+ sessions.clear();
54
+ buffered.length = 0;
55
+ pendingBytes = 0;
56
+ bufferedBytes = 0;
57
+ upstream.onmessage = undefined;
58
+ upstream.onclose = undefined;
59
+ try {
60
+ upstream.close();
61
+ }
62
+ catch { }
63
+ try {
64
+ transport.onclose?.(failure.message.slice(0, 1024));
65
+ }
66
+ catch { }
67
+ }
68
+ function snapshot(input) {
69
+ const text = JSON.stringify(input);
70
+ if (typeof text !== 'string' || text.length > limits.maxMessageBytes)
71
+ throw new Error('CDP message byte limit exceeded');
72
+ const bytes = encoder.encode(text).byteLength;
73
+ if (bytes > limits.maxMessageBytes)
74
+ throw new Error('CDP message byte limit exceeded');
75
+ const message = JSON.parse(text);
76
+ if (!record(message) || (message.id !== undefined && !Number.isSafeInteger(message.id)) ||
77
+ (message.sessionId !== undefined && !identity(message.sessionId)) ||
78
+ (message.method !== undefined && (typeof message.method !== 'string' || !message.method || message.method.length > 256)) ||
79
+ (message.id === undefined && message.method === undefined))
80
+ throw new Error('Invalid CDP message');
81
+ for (const key of ['params', 'result', 'error']) {
82
+ if (message[key] !== undefined && !record(message[key]))
83
+ throw new Error('Invalid CDP message payload');
84
+ }
85
+ return { message: message, bytes };
86
+ }
87
+ function deny(message) {
88
+ transport.onmessage?.({ id: message.id, ...(message.sessionId ? { sessionId: message.sessionId } : {}),
89
+ error: { code: -32000, message: 'Policy-owned target is unavailable to this client' } });
90
+ }
91
+ function issue(input, internal = false, denied = false) {
92
+ if (failure)
93
+ throw failure;
94
+ try {
95
+ if (sequence >= Number.MAX_SAFE_INTEGER)
96
+ throw new Error('CDP command identity exhausted');
97
+ const id = ++sequence;
98
+ const { message, bytes } = snapshot({ ...input, id });
99
+ if (!message.method)
100
+ throw new Error('Expected CDP command method');
101
+ const clientKey = internal ? undefined : JSON.stringify([input.sessionId, input.id]);
102
+ if (clientKey && clientKeys.has(clientKey))
103
+ throw new Error('Duplicate pending client CDP identity');
104
+ if (pending.size >= limits.maxPendingCommands || bytes > limits.maxPendingBytes - pendingBytes)
105
+ throw new Error('CDP pending command limit exceeded');
106
+ const timer = setTimeout(() => retire(new Error(`CDP ${message.method} timed out`)), limits.commandTimeoutMs);
107
+ pending.set(id, { clientId: input.id, clientKey, method: message.method, sessionId: message.sessionId,
108
+ targetId: identity(message.params?.targetId) ? message.params.targetId : undefined,
109
+ internal, replied: false, bytes, timer });
110
+ if (clientKey)
111
+ clientKeys.add(clientKey);
112
+ pendingBytes += bytes;
113
+ if (denied)
114
+ queueMicrotask(() => receive({ id, ...(message.sessionId ? { sessionId: message.sessionId } : {}),
115
+ error: { code: -32000, message: 'Policy-owned target is unavailable to this client' } }));
116
+ else
117
+ upstream.send(message);
118
+ }
119
+ catch (error) {
120
+ retire(error);
121
+ throw error;
122
+ }
123
+ }
124
+ function deliver(message) {
125
+ if (failure)
126
+ return;
127
+ if (message.id !== undefined) {
128
+ const command = pending.get(message.id);
129
+ if (!command)
130
+ return;
131
+ pending.delete(message.id);
132
+ pendingBytes -= command.bytes;
133
+ clearTimeout(command.timer);
134
+ if (command.clientKey)
135
+ clientKeys.delete(command.clientKey);
136
+ if (command.internal) {
137
+ if (message.error)
138
+ throw new Error('Native private target detach failed');
139
+ return;
140
+ }
141
+ if (command.clientId === undefined)
142
+ throw new Error('Missing client CDP response identity');
143
+ const reply = { ...message, id: command.clientId, ...(command.sessionId ? { sessionId: command.sessionId } : {}) };
144
+ const targetInfo = record(message.result?.targetInfo) ? message.result.targetInfo : undefined;
145
+ if (targets.has(command.targetId ?? '') || sessions.has(command.sessionId ?? '') ||
146
+ targets.has(String(targetInfo?.targetId ?? '')) || targets.has(String(message.result?.targetId ?? ''))) {
147
+ deny(reply);
148
+ }
149
+ else if (command.method === 'Target.getTargets' && message.result) {
150
+ if (!Array.isArray(message.result.targetInfos) || message.result.targetInfos.some(info => !record(info) || !identity(info.targetId))) {
151
+ throw new Error('Invalid native target list');
152
+ }
153
+ transport.onmessage?.({ ...reply, result: { ...message.result,
154
+ targetInfos: message.result.targetInfos.filter(info => !targets.has(info.targetId)) } });
155
+ }
156
+ else
157
+ transport.onmessage?.(reply);
158
+ return;
159
+ }
160
+ const info = record(message.params?.targetInfo) ? message.params.targetInfo : undefined;
161
+ const targetId = info?.targetId ?? message.params?.targetId;
162
+ const sessionId = message.params?.sessionId;
163
+ if (message.method === 'Target.attachedToTarget' && (targets.has(String(targetId ?? '')) || sessions.has(message.sessionId ?? ''))) {
164
+ if (!identity(targetId) || !identity(sessionId))
165
+ throw new Error('Invalid private native session identity');
166
+ if (sessions.has(sessionId)) {
167
+ if (sessions.get(sessionId) !== targetId)
168
+ throw new Error('Private native session identity changed');
169
+ return;
170
+ }
171
+ if (sessions.size >= limits.maxPrivateSessions || (!targets.has(targetId) && targets.size >= limits.maxPrivateTargets)) {
172
+ throw new Error('Private target/session identity capacity exceeded');
173
+ }
174
+ targets.add(targetId);
175
+ sessions.set(sessionId, targetId);
176
+ issue({ method: 'Target.detachFromTarget', params: { sessionId }, ...(message.sessionId ? { sessionId: message.sessionId } : {}) }, true);
177
+ return;
178
+ }
179
+ if (targets.has(String(targetId ?? '')) || sessions.has(String(sessionId ?? '')) || sessions.has(message.sessionId ?? ''))
180
+ return;
181
+ transport.onmessage?.(message);
182
+ }
183
+ function receive(input) {
184
+ if (failure)
185
+ return;
186
+ try {
187
+ const entry = snapshot(input);
188
+ const { message } = entry;
189
+ const command = message.id === undefined ? undefined : pending.get(message.id);
190
+ if (message.id !== undefined) {
191
+ if (!command) {
192
+ if (message.id > 0 && message.id <= sequence)
193
+ return;
194
+ throw new Error('Never-issued native CDP reply');
195
+ }
196
+ if (message.sessionId !== command.sessionId) {
197
+ const sessionNotFound = command.sessionId !== undefined && message.sessionId === undefined &&
198
+ Object.keys(message).length === 2 && message.error?.code === -32001 &&
199
+ message.error.message === 'Session with given id not found.' && Object.keys(message.error).length === 2;
200
+ if (!sessionNotFound)
201
+ throw new Error('Native CDP response session mismatch');
202
+ }
203
+ if (command.replied)
204
+ return;
205
+ command.replied = true;
206
+ }
207
+ if (flushing || (creation && (message.id === undefined || (!command?.internal && command?.method.startsWith('Target.'))))) {
208
+ if (buffered.length >= limits.maxBufferedMessages || entry.bytes > limits.maxBufferedBytes - bufferedBytes)
209
+ throw new Error('CDP creation buffer limit exceeded');
210
+ buffered.push(entry);
211
+ bufferedBytes += entry.bytes;
212
+ }
213
+ else
214
+ deliver(message);
215
+ }
216
+ catch (error) {
217
+ retire(error);
218
+ }
219
+ }
220
+ function finish(entry, committing, targetId) {
221
+ if (!entry.active || creation !== entry || failure)
222
+ throw new Error('Target creation guard is no longer active');
223
+ if (committing) {
224
+ if (!identity(targetId) || targets.has(targetId)) {
225
+ const error = new Error('Invalid or reused private target identity');
226
+ retire(error);
227
+ throw error;
228
+ }
229
+ targets.add(targetId);
230
+ }
231
+ clearTimeout(entry.timer);
232
+ entry.active = false;
233
+ creation = undefined;
234
+ flushing = true;
235
+ try {
236
+ while (buffered.length && !creation && !failure) {
237
+ const next = buffered.shift();
238
+ bufferedBytes -= next.bytes;
239
+ deliver(next.message);
240
+ }
241
+ }
242
+ catch (error) {
243
+ retire(error);
244
+ }
245
+ finally {
246
+ flushing = false;
247
+ }
248
+ if (failure)
249
+ throw failure;
250
+ }
251
+ const transport = {
252
+ open() {
253
+ if (failure)
254
+ throw failure;
255
+ if (opened)
256
+ return;
257
+ opened = true;
258
+ try {
259
+ upstream.open?.();
260
+ }
261
+ catch (error) {
262
+ retire(error);
263
+ throw error;
264
+ }
265
+ },
266
+ send(input) {
267
+ if (failure)
268
+ throw failure;
269
+ try {
270
+ const { message } = snapshot(input);
271
+ if (message.id === undefined || !message.method)
272
+ throw new Error('Expected CDP command identity and method');
273
+ issue(message, false, targets.has(String(message.params?.targetId ?? '')) || sessions.has(message.sessionId ?? ''));
274
+ }
275
+ catch (error) {
276
+ retire(error);
277
+ throw error;
278
+ }
279
+ },
280
+ close() { retire(new Error('Private target transport closed')); },
281
+ };
282
+ upstream.onmessage = receive;
283
+ upstream.onclose = reason => retire(reason ?? 'Upstream CDP transport closed');
284
+ return {
285
+ transport,
286
+ beginCreation() {
287
+ if (failure)
288
+ throw failure;
289
+ if (creation)
290
+ throw new Error('Target creation already in progress');
291
+ if (targets.size >= limits.maxPrivateTargets)
292
+ throw new Error('Private target identity capacity exceeded');
293
+ const entry = { active: true, failed: false,
294
+ timer: setTimeout(() => retire(new Error('Native target creation identity timed out')), limits.creationTimeoutMs) };
295
+ creation = entry;
296
+ return {
297
+ commit(targetId) { finish(entry, true, targetId); },
298
+ rollback() { finish(entry, false); },
299
+ fail(error) {
300
+ if (entry.failed || failure)
301
+ return;
302
+ if (!entry.active || creation !== entry)
303
+ throw new Error('Target creation guard is no longer active');
304
+ retire(error);
305
+ },
306
+ };
307
+ },
308
+ };
309
+ }
310
+ //# sourceMappingURL=private-target-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"private-target-transport.js","sourceRoot":"","sources":["../../src/playwright/private-target-transport.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,11 @@ export interface PlaywrightResultSection {
10
10
  }
11
11
  export interface PlaywrightCommandResult {
12
12
  readonly sections: readonly PlaywrightResultSection[];
13
+ readonly isError?: boolean;
14
+ readonly rawErrorHeader?: boolean;
15
+ }
16
+ export declare class PlaywrightReportedError extends Error {
17
+ readonly name = "PlaywrightReportedError";
13
18
  }
14
19
  export declare const playwrightCliCompatibilityVersion = "0.1.20";
15
20
  export declare function serializePlaywrightResult(result: PlaywrightCommandResult, options: {
@@ -1 +1 @@
1
- {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/playwright/response.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,mBAAmB,EAAE,GAAG;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAA;CAAE,CAAC;AAEtJ,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,qBAAqB,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,aAAa,GAAG,OAAO,CAAC;IAC1H,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;KAAE,CAAC;IAClE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,SAAS,uBAAuB,EAAE,CAAC;CACvD;AAED,eAAO,MAAM,iCAAiC,WAAW,CAAC;AAE1D,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,uBAAuB,EAAE,OAAO,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CA2B7I;AAED,+FAA+F;AAC/F,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGlG;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D"}
1
+ {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/playwright/response.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,mBAAmB,EAAE,GAAG;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAA;CAAE,CAAC;AAEtJ,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,qBAAqB,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,aAAa,GAAG,OAAO,CAAC;IAC1H,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;KAAE,CAAC;IAClE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACtD,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,SAAkB,IAAI,6BAA6B;CACpD;AAED,eAAO,MAAM,iCAAiC,WAAW,CAAC;AAE1D,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,uBAAuB,EAAE,OAAO,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CA4B7I;AAED,+FAA+F;AAC/F,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGlG;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D"}
@@ -1,11 +1,16 @@
1
+ export class PlaywrightReportedError extends Error {
2
+ name = 'PlaywrightReportedError';
3
+ }
1
4
  export const playwrightCliCompatibilityVersion = '0.1.20';
2
5
  export function serializePlaywrightResult(result, options) {
3
6
  const sections = options.raw ? result.sections.filter(section => ['Error', 'Result', 'Snapshot'].includes(section.title)) : result.sections;
4
7
  if (options.json) {
5
8
  const payload = {};
6
- if (sections.some(section => section.title === 'Error'))
9
+ if (result.isError || sections.some(section => section.title === 'Error'))
7
10
  payload.isError = true;
8
11
  for (const section of sections) {
12
+ if (section.title === 'Ran Playwright code')
13
+ continue;
9
14
  if (typeof section.content !== 'string')
10
15
  payload[section.title.toLowerCase()] = section.content.json;
11
16
  else if (section.content) {
@@ -21,9 +26,9 @@ export function serializePlaywrightResult(result, options) {
21
26
  const text = typeof section.content === 'string' ? section.content : JSON.stringify(section.content.json, null, 2);
22
27
  if (!text)
23
28
  continue;
24
- if (!options.raw) {
29
+ if (!options.raw || result.rawErrorHeader && section.title === 'Error') {
25
30
  lines.push(`### ${section.title}`);
26
- if (section.codeframe)
31
+ if (!options.raw && section.codeframe)
27
32
  lines.push('```' + section.codeframe);
28
33
  }
29
34
  lines.push(text);
@@ -1 +1 @@
1
- {"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/playwright/response.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/playwright/response.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"route-capabilities.d.ts","sourceRoot":"","sources":["../../src/playwright/route-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAA4B,MAAM,gBAAgB,CAAC;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAItD,MAAM,WAAW,eAAe;IAC9B,OAAO,IAAI;QAAE,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IACjD,OAAO,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzF,QAAQ,CAAC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE;AACD,MAAM,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/E,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1E,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1E;AA0CD,kFAAkF;AAClF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,kBAGrC,iBAAiB,mBAAmB,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,gCAOtG;AA4CD,eAAO,MAAM,wBAAwB,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CA4B1F,CAAC"}
1
+ {"version":3,"file":"route-capabilities.d.ts","sourceRoot":"","sources":["../../src/playwright/route-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAA4B,MAAM,gBAAgB,CAAC;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAItD,MAAM,WAAW,eAAe;IAC9B,OAAO,IAAI;QAAE,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IACjD,OAAO,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzF,QAAQ,CAAC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE;AACD,MAAM,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/E,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1E,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1E;AA0DD,kFAAkF;AAClF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,kBAGrC,iBAAiB,mBAAmB,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,gCAMtG;AA0CD,eAAO,MAAM,wBAAwB,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CA4B1F,CAAC"}
@@ -2,6 +2,27 @@ import { capabilityResult, requireSession, unsupported } from './capability-resu
2
2
  import { PlaywrightResourceLimitError } from './resource-limit.js';
3
3
  const registries = new WeakMap();
4
4
  const MAX_ROUTES = 64;
5
+ async function installRoute(context, registry, entry, signal) {
6
+ signal?.throwIfAborted();
7
+ if (registry.closed)
8
+ throw new Error('Browser context is closed');
9
+ await context.route(entry.pattern, entry.handler);
10
+ try {
11
+ signal?.throwIfAborted();
12
+ if (registry.closed)
13
+ throw new Error('Browser context is closed');
14
+ registry.entries.push(entry);
15
+ }
16
+ catch (error) {
17
+ try {
18
+ await context.unroute(entry.pattern, entry.handler);
19
+ }
20
+ finally {
21
+ signal?.throwIfAborted();
22
+ }
23
+ throw error;
24
+ }
25
+ }
5
26
  function routingFor(input, registerCleanup) {
6
27
  const context = input;
7
28
  if (!context.route || !context.unroute)
@@ -47,8 +68,7 @@ export function capturePlaywrightRoutes(context) {
47
68
  return async (replacement, registerCleanup) => {
48
69
  const { context, registry } = routingFor(replacement, registerCleanup);
49
70
  for (const entry of entries) {
50
- await context.route(entry.pattern, entry.handler);
51
- registry.entries.push(entry);
71
+ await installRoute(context, registry, entry);
52
72
  }
53
73
  };
54
74
  }
@@ -95,9 +115,7 @@ const route = { scope: 'session', options: 'all', async execute(request) {
95
115
  delete updated[name];
96
116
  await native.continue({ headers: updated });
97
117
  };
98
- request.signal.throwIfAborted();
99
- await context.route(pattern, handler);
100
- registry.entries.push({ ...data, handler, bytes });
118
+ await installRoute(context, registry, { ...data, handler, bytes }, request.signal);
101
119
  return capabilityResult(`await page.context().route(${JSON.stringify(pattern)}, async route => { /* route handler */ });`, `Route added for pattern: ${pattern}`);
102
120
  } };
103
121
  export const playwrightRouteAbilities = {