@poe-platform/safe-bash 0.1.685 → 0.1.687

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 (27) hide show
  1. package/dist/safe-bash/playwright/adapter.d.ts +2 -0
  2. package/dist/safe-bash/playwright/adapter.d.ts.map +1 -1
  3. package/dist/safe-bash/playwright/adapter.js +10 -0
  4. package/dist/safe-bash/playwright/adapter.js.map +1 -1
  5. package/dist/safe-bash/playwright/index.d.ts +3 -0
  6. package/dist/safe-bash/playwright/index.d.ts.map +1 -1
  7. package/dist/safe-bash/playwright/index.js +2 -0
  8. package/dist/safe-bash/playwright/index.js.map +1 -1
  9. package/dist/safe-bash/playwright/native-storage-realm.d.ts +84 -0
  10. package/dist/safe-bash/playwright/native-storage-realm.d.ts.map +1 -0
  11. package/dist/safe-bash/playwright/native-storage-realm.js +152 -0
  12. package/dist/safe-bash/playwright/native-storage-realm.js.map +1 -0
  13. package/dist/safe-bash/playwright/native-storage-replacement.d.ts +28 -0
  14. package/dist/safe-bash/playwright/native-storage-replacement.d.ts.map +1 -0
  15. package/dist/safe-bash/playwright/native-storage-replacement.js +282 -0
  16. package/dist/safe-bash/playwright/native-storage-replacement.js.map +1 -0
  17. package/dist/safe-bash/playwright/native-storage-targets.d.ts +15 -0
  18. package/dist/safe-bash/playwright/native-storage-targets.d.ts.map +1 -0
  19. package/dist/safe-bash/playwright/native-storage-targets.js +123 -0
  20. package/dist/safe-bash/playwright/native-storage-targets.js.map +1 -0
  21. package/dist/safe-bash/playwright/private-target-transport.d.ts +28 -0
  22. package/dist/safe-bash/playwright/private-target-transport.d.ts.map +1 -0
  23. package/dist/safe-bash/playwright/private-target-transport.js +310 -0
  24. package/dist/safe-bash/playwright/private-target-transport.js.map +1 -0
  25. package/dist/safe-bash/playwright/storage-capabilities.js +3 -4
  26. package/dist/safe-bash/playwright/storage-capabilities.js.map +1 -1
  27. package/package.json +2 -2
@@ -0,0 +1,282 @@
1
+ import { parsePlaywrightStorageState } from './storage-state.js';
2
+ import { collectStorageOrigin } from './native-storage-realm.js';
3
+ import { PlaywrightResourceLimitError } from './resource-limit.js';
4
+ const bindings = new WeakMap();
5
+ async function finish(actions) {
6
+ const errors = [];
7
+ for (const action of actions) {
8
+ try {
9
+ await action();
10
+ }
11
+ catch (error) {
12
+ errors.push(error);
13
+ }
14
+ }
15
+ if (errors.length === 1)
16
+ throw errors[0];
17
+ if (errors.length > 1)
18
+ throw new AggregateError(errors, 'Native storage cleanup failed');
19
+ }
20
+ export async function bindPlaywrightStorageContext(context, prepare, signal) {
21
+ signal.throwIfAborted();
22
+ if (!context.newCDPSession)
23
+ throw new Error('Native storage context identity requires CDP');
24
+ if (bindings.has(context))
25
+ throw new Error('Native storage context is already bound');
26
+ const existing = context.pages()[0];
27
+ const page = existing ?? await context.newPage();
28
+ let cdp;
29
+ let browserContextId;
30
+ try {
31
+ signal.throwIfAborted();
32
+ cdp = await context.newCDPSession(page);
33
+ const { targetInfo } = await cdp.send('Target.getTargetInfo');
34
+ const identity = targetInfo;
35
+ if (typeof identity?.browserContextId !== 'string' || !identity.browserContextId || typeof identity.targetId !== 'string' || !identity.targetId)
36
+ throw new Error('Invalid native storage context identity');
37
+ browserContextId = identity.browserContextId;
38
+ }
39
+ finally {
40
+ await finish([async () => cdp?.detach(), async () => { if (!existing)
41
+ await page.close(); }]);
42
+ }
43
+ signal.throwIfAborted();
44
+ const binding = { browserContextId, prepare, controller: new AbortController(), operations: new Set(), origins: new Set() };
45
+ bindings.set(context, binding);
46
+ let retirement;
47
+ return () => retirement ??= (async () => {
48
+ bindings.delete(context);
49
+ binding.controller.abort(new Error('Native storage context retired'));
50
+ await Promise.allSettled(binding.operations);
51
+ binding.origins.clear();
52
+ })();
53
+ }
54
+ async function restoreOrigin(origin) {
55
+ const { location, navigator, indexedDB, localStorage } = globalThis;
56
+ const helpers = {
57
+ request(request) {
58
+ return new Promise((resolve, reject) => { request.onsuccess = () => resolve(request.result); request.onerror = () => reject(request.error); });
59
+ },
60
+ decode(value, refs = new Map()) {
61
+ if (value === null || typeof value !== 'object')
62
+ return value;
63
+ const item = value;
64
+ if (item.ref !== undefined)
65
+ return refs.get(item.ref);
66
+ if (item.v !== undefined)
67
+ return { undefined: undefined, null: null, NaN, Infinity, '-Infinity': -Infinity, '-0': -0 }[item.v];
68
+ if (item.d !== undefined)
69
+ return new Date(item.d);
70
+ if (item.u !== undefined)
71
+ return new URL(item.u);
72
+ if (item.bi !== undefined)
73
+ return BigInt(item.bi);
74
+ if (item.e !== undefined) {
75
+ const error = new Error(item.e.m);
76
+ error.name = item.e.n;
77
+ error.stack = item.e.s;
78
+ return error;
79
+ }
80
+ if (item.r !== undefined)
81
+ return new RegExp(item.r.p, item.r.f);
82
+ if (item.a !== undefined) {
83
+ const array = [];
84
+ refs.set(item.id, array);
85
+ for (const child of item.a)
86
+ array.push(this.decode(child, refs));
87
+ return array;
88
+ }
89
+ if (item.o !== undefined) {
90
+ const object = {};
91
+ refs.set(item.id, object);
92
+ for (const child of item.o)
93
+ if (child.k !== '__proto__')
94
+ object[child.k] = this.decode(child.v, refs);
95
+ return object;
96
+ }
97
+ if (item.ta !== undefined || item.ab !== undefined) {
98
+ const binary = atob(item.ta?.b ?? item.ab.b);
99
+ const buffer = new Uint8Array(binary.length);
100
+ for (let index = 0; index < binary.length; index++)
101
+ buffer[index] = binary.charCodeAt(index);
102
+ if (item.ab)
103
+ return buffer.buffer;
104
+ const constructors = { i8: Int8Array, ui8: Uint8Array, ui8c: Uint8ClampedArray, i16: Int16Array, ui16: Uint16Array, i32: Int32Array, ui32: Uint32Array, f32: Float32Array, f64: Float64Array, bi64: BigInt64Array, bui64: BigUint64Array };
105
+ return new constructors[item.ta.k](buffer.buffer);
106
+ }
107
+ return value;
108
+ },
109
+ };
110
+ if (location.origin !== origin.origin)
111
+ throw new Error('Native storage origin changed');
112
+ for (const registration of await navigator.serviceWorker?.getRegistrations() ?? [])
113
+ await registration.unregister();
114
+ for (const database of await indexedDB.databases())
115
+ if (database.name)
116
+ await helpers.request(indexedDB.deleteDatabase(database.name));
117
+ for (const info of origin.indexedDB ?? []) {
118
+ const opening = indexedDB.open(info.name, info.version);
119
+ opening.onupgradeneeded = () => {
120
+ for (const store of info.stores) {
121
+ const created = opening.result.createObjectStore(store.name, { autoIncrement: store.autoIncrement, keyPath: store.keyPathArray ?? store.keyPath });
122
+ for (const index of store.indexes)
123
+ created.createIndex(index.name, (index.keyPathArray ?? index.keyPath), { unique: index.unique, multiEntry: index.multiEntry });
124
+ }
125
+ };
126
+ const database = await helpers.request(opening);
127
+ try {
128
+ if (!database.objectStoreNames.length)
129
+ continue;
130
+ const transaction = database.transaction(database.objectStoreNames, 'readwrite');
131
+ const completed = new Promise((resolve, reject) => { transaction.oncomplete = () => resolve(); transaction.onabort = () => reject(transaction.error ?? new Error('IndexedDB transaction aborted')); });
132
+ try {
133
+ for (const store of info.stores)
134
+ for (const record of store.records) {
135
+ const value = record.value ?? helpers.decode(record.valueEncoded);
136
+ const key = record.key ?? helpers.decode(record.keyEncoded);
137
+ transaction.objectStore(store.name).add(value, key);
138
+ }
139
+ }
140
+ catch (error) {
141
+ transaction.abort();
142
+ await completed.catch(() => { });
143
+ throw error;
144
+ }
145
+ await completed;
146
+ }
147
+ finally {
148
+ database.close();
149
+ }
150
+ }
151
+ localStorage.clear();
152
+ for (const item of origin.localStorage)
153
+ localStorage.setItem(item.name, item.value);
154
+ return true;
155
+ }
156
+ async function inOrigin(binding, context, origin, signal, expression) {
157
+ signal.throwIfAborted();
158
+ const lease = await binding.prepare({ context, browserContextId: binding.browserContextId, origin, signal });
159
+ let retirement;
160
+ const release = () => retirement ??= Promise.resolve().then(() => lease.release());
161
+ const abort = () => { void release().catch(() => { }); };
162
+ signal.addEventListener('abort', abort, { once: true });
163
+ const [operation] = await Promise.allSettled([(async () => {
164
+ try {
165
+ signal.throwIfAborted();
166
+ const { targetInfo } = await lease.cdp.send('Target.getTargetInfo');
167
+ const native = targetInfo;
168
+ if (lease.browserContextId !== binding.browserContextId || !lease.targetId || native?.targetId !== lease.targetId || native.browserContextId !== binding.browserContextId)
169
+ throw new Error('Native storage target identity mismatch');
170
+ if (typeof native.url !== 'string' || new URL(native.url).origin !== origin)
171
+ throw new Error('Native storage target origin mismatch');
172
+ const { frameTree } = await lease.cdp.send('Page.getFrameTree');
173
+ const frame = frameTree?.frame;
174
+ if (typeof frame?.id !== 'string' || typeof frame.url !== 'string' || new URL(frame.url).origin !== origin)
175
+ throw new Error('Native storage frame origin mismatch');
176
+ const { executionContextId } = await lease.cdp.send('Page.createIsolatedWorld', { frameId: frame.id, worldName: 'safe-bash-native-storage' });
177
+ signal.throwIfAborted();
178
+ const result = await lease.cdp.send('Runtime.evaluate', { expression, contextId: executionContextId, returnByValue: true, awaitPromise: true });
179
+ signal.throwIfAborted();
180
+ if (result.exceptionDetails)
181
+ throw new Error('Native storage origin operation failed');
182
+ return result.result?.value;
183
+ }
184
+ catch (error) {
185
+ signal.throwIfAborted();
186
+ throw error;
187
+ }
188
+ })()]);
189
+ signal.removeEventListener('abort', abort);
190
+ const [retired] = await Promise.allSettled([finish([() => lease.cdp.detach(), release])]);
191
+ if (operation.status === 'rejected' && retired.status === 'rejected')
192
+ throw new AggregateError([operation.reason, retired.reason], 'Native storage operation and cleanup failed');
193
+ if (retired.status === 'rejected')
194
+ throw retired.reason;
195
+ if (operation.status === 'rejected')
196
+ throw operation.reason;
197
+ return operation.value;
198
+ }
199
+ async function storageOperation(binding, options, action) {
200
+ const controller = new AbortController();
201
+ const signal = AbortSignal.any([options.signal, controller.signal, binding.controller.signal]);
202
+ let operation;
203
+ options.registerCleanup(async () => { controller.abort(new Error('Native storage operation retired')); await operation?.catch(() => { }); });
204
+ operation = Promise.resolve().then(async () => {
205
+ signal.throwIfAborted();
206
+ return action(signal);
207
+ });
208
+ const tracked = operation.then(() => { }, () => { });
209
+ binding.operations.add(tracked);
210
+ try {
211
+ return await operation;
212
+ }
213
+ finally {
214
+ binding.operations.delete(tracked);
215
+ }
216
+ }
217
+ async function censusState(context, binding, options, indexedDB, signal) {
218
+ if (!context.storageState)
219
+ throw new Error('Native storage census is required');
220
+ const census = parsePlaywrightStorageState(await context.storageState(indexedDB ? { indexedDB: true } : undefined), { maxBytes: options.maxBytes });
221
+ for (const origin of binding.origins) {
222
+ if (census.origins.some(item => item.origin === origin))
223
+ continue;
224
+ signal.throwIfAborted();
225
+ const remainingBytes = options.maxBytes - new TextEncoder().encode(JSON.stringify(census)).length;
226
+ if (remainingBytes <= 0)
227
+ throw new PlaywrightResourceLimitError('Browser storage state byte limit exceeded');
228
+ const result = await inOrigin(binding, context, origin, signal, `(${collectStorageOrigin.toString()})(${JSON.stringify({ origin, indexedDB, maxBytes: remainingBytes })})`);
229
+ if (result === false)
230
+ throw new PlaywrightResourceLimitError('Browser storage state byte limit exceeded');
231
+ if (typeof result !== 'string')
232
+ throw new Error('Invalid native storage readback');
233
+ const current = parsePlaywrightStorageState({ cookies: [], origins: [JSON.parse(result)] }, { maxBytes: options.maxBytes }).origins[0];
234
+ if (current.localStorage.length || current.indexedDB?.length)
235
+ census.origins.push(current);
236
+ parsePlaywrightStorageState(census, { maxBytes: options.maxBytes });
237
+ }
238
+ signal.throwIfAborted();
239
+ return parsePlaywrightStorageState(census, { maxBytes: options.maxBytes });
240
+ }
241
+ export async function readPlaywrightStorageState(context, options) {
242
+ const binding = bindings.get(context);
243
+ if (!context.storageState)
244
+ throw new Error('Native storage state is required');
245
+ if (!binding)
246
+ return context.storageState(options.indexedDB ? { indexedDB: true } : undefined);
247
+ return storageOperation(binding, options, signal => censusState(context, binding, options, options.indexedDB === true, signal));
248
+ }
249
+ export async function replacePlaywrightStorageState(context, input, options) {
250
+ const binding = bindings.get(context);
251
+ if (!binding)
252
+ throw new Error('Same-context storage restoration requires trusted acquired native storage control');
253
+ await storageOperation(binding, options, async (signal) => {
254
+ const state = parsePlaywrightStorageState(input, { maxBytes: options.maxBytes });
255
+ if (!context.clearCookies || !context.addCookies)
256
+ throw new Error('Native storage cookie controls are required');
257
+ const census = await censusState(context, binding, options, true, signal);
258
+ const origins = new Map(census.origins.map(item => [item.origin, { origin: item.origin, localStorage: [] }]));
259
+ for (const origin of binding.origins)
260
+ if (!origins.has(origin))
261
+ origins.set(origin, { origin, localStorage: [] });
262
+ for (const origin of state.origins)
263
+ origins.set(origin.origin, origin);
264
+ parsePlaywrightStorageState({ cookies: [], origins: [...origins.keys()].map(origin => ({ origin, localStorage: [] })) }, { maxBytes: options.maxBytes });
265
+ for (const origin of state.origins)
266
+ binding.origins.add(origin.origin);
267
+ await context.clearCookies();
268
+ signal.throwIfAborted();
269
+ await context.addCookies(state.cookies);
270
+ for (const [origin, replacement] of origins) {
271
+ signal.throwIfAborted();
272
+ const result = await inOrigin(binding, context, origin, signal, `(${restoreOrigin.toString()})(${JSON.stringify(replacement)})`);
273
+ if (result !== true)
274
+ throw new Error('Native storage origin restoration failed');
275
+ }
276
+ signal.throwIfAborted();
277
+ binding.origins.clear();
278
+ for (const origin of state.origins)
279
+ binding.origins.add(origin.origin);
280
+ });
281
+ }
282
+ //# sourceMappingURL=native-storage-replacement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-storage-replacement.js","sourceRoot":"","sources":["../../src/playwright/native-storage-replacement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { PlaywrightPrivateTargetCreation } from './private-target-transport.js';
2
+ import type { PlaywrightStorageOriginPreparer } from './native-storage-replacement.js';
3
+ export interface PlaywrightStorageControlEvent {
4
+ readonly method: string;
5
+ readonly params?: Record<string, unknown>;
6
+ readonly sessionId?: string;
7
+ }
8
+ export interface PlaywrightStorageControl {
9
+ send(method: string, params?: Record<string, unknown>, sessionId?: string): Promise<Record<string, unknown>>;
10
+ subscribe(listener: (event: PlaywrightStorageControlEvent) => void): () => void;
11
+ }
12
+ export declare function createPlaywrightStorageOriginPreparer(control: PlaywrightStorageControl, privateTargets: {
13
+ beginCreation(): PlaywrightPrivateTargetCreation;
14
+ }): PlaywrightStorageOriginPreparer;
15
+ //# sourceMappingURL=native-storage-targets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-storage-targets.d.ts","sourceRoot":"","sources":["../../src/playwright/native-storage-targets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AACrF,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAC;AAEvF,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7G,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,6BAA6B,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACjF;AAED,wBAAgB,qCAAqC,CAAC,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE;IAAE,aAAa,IAAI,+BAA+B,CAAA;CAAE,GAAG,+BAA+B,CA6F9L"}
@@ -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"}