@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,152 @@
1
+ export async function collectStorageOrigin(input) {
2
+ const { location, localStorage, indexedDB } = globalThis;
3
+ if (location.origin !== input.origin)
4
+ throw new Error('Native storage origin changed');
5
+ let size = 0;
6
+ let nodes = 0;
7
+ const limit = new Error('Native storage read limit');
8
+ const charge = (value) => {
9
+ if (value.length > input.maxBytes || (size += new TextEncoder().encode(value).length + 8) > input.maxBytes)
10
+ throw limit;
11
+ };
12
+ const helpers = {
13
+ request(request) {
14
+ return new Promise((resolve, reject) => { request.onsuccess = () => resolve(request.result); request.onerror = () => reject(request.error); });
15
+ },
16
+ encode(value, refs = new Map(), depth = 0) {
17
+ if (++nodes > input.maxBytes || depth > 100)
18
+ throw limit;
19
+ if (value === undefined)
20
+ return { v: 'undefined' };
21
+ if (value === null)
22
+ return { v: 'null' };
23
+ if (typeof value === 'string') {
24
+ charge(value);
25
+ return value;
26
+ }
27
+ if (typeof value === 'boolean')
28
+ return value;
29
+ if (typeof value === 'number')
30
+ return !Number.isFinite(value) || Object.is(value, -0) ? { v: Object.is(value, -0) ? '-0' : String(value) } : value;
31
+ if (typeof value === 'bigint') {
32
+ charge(String(value));
33
+ return { bi: String(value) };
34
+ }
35
+ if (typeof value !== 'object')
36
+ return { v: 'undefined' };
37
+ if (value instanceof Date)
38
+ return { d: value.toJSON() };
39
+ if (value instanceof URL)
40
+ return { u: value.href };
41
+ if (value instanceof RegExp)
42
+ return { r: { p: value.source, f: value.flags } };
43
+ if (value instanceof Error)
44
+ return { e: { n: value.name, m: value.message, s: value.stack } };
45
+ const constructors = { i8: Int8Array, ui8: Uint8Array, ui8c: Uint8ClampedArray, i16: Int16Array, ui16: Uint16Array, i32: Int32Array, ui32: Uint32Array, f32: Float32Array, f64: Float64Array, bi64: BigInt64Array, bui64: BigUint64Array };
46
+ for (const [kind, Constructor] of Object.entries(constructors))
47
+ if (value instanceof Constructor) {
48
+ if (value.byteLength > input.maxBytes)
49
+ throw limit;
50
+ let binary = '';
51
+ for (const byte of new Uint8Array(value.buffer, value.byteOffset, value.byteLength))
52
+ binary += String.fromCharCode(byte);
53
+ const encoded = btoa(binary);
54
+ charge(encoded);
55
+ return { ta: { k: kind, b: encoded } };
56
+ }
57
+ if (refs.has(value))
58
+ return { ref: refs.get(value) };
59
+ const id = refs.size + 1;
60
+ refs.set(value, id);
61
+ if (Array.isArray(value)) {
62
+ if (value.length > input.maxBytes - nodes)
63
+ throw limit;
64
+ return { a: value.map(child => this.encode(child, refs, depth + 1)), id };
65
+ }
66
+ const entries = [];
67
+ for (const key of Object.keys(value)) {
68
+ charge(key);
69
+ if (key !== '__proto__')
70
+ entries.push({ k: key, v: this.encode(value[key], refs, depth + 1) });
71
+ }
72
+ return { o: entries, id };
73
+ },
74
+ };
75
+ const result = { origin: input.origin, localStorage: [] };
76
+ try {
77
+ charge(input.origin);
78
+ for (let index = 0; index < localStorage.length; index++) {
79
+ const name = localStorage.key(index);
80
+ if (name === null)
81
+ continue;
82
+ const value = localStorage.getItem(name) ?? '';
83
+ charge(name);
84
+ charge(value);
85
+ result.localStorage.push({ name, value });
86
+ }
87
+ if (input.indexedDB) {
88
+ result.indexedDB = [];
89
+ for (const info of await indexedDB.databases()) {
90
+ if (info.name === undefined || info.version === undefined)
91
+ throw new Error('Invalid native database metadata');
92
+ charge(info.name);
93
+ const database = await helpers.request(indexedDB.open(info.name));
94
+ try {
95
+ const saved = { name: info.name, version: info.version, stores: [] };
96
+ for (const name of database.objectStoreNames) {
97
+ charge(name);
98
+ const transaction = database.transaction([name], 'readonly');
99
+ const store = transaction.objectStore(name);
100
+ const savedStore = { name, autoIncrement: store.autoIncrement, records: [], indexes: [] };
101
+ if (typeof store.keyPath === 'string')
102
+ savedStore.keyPath = store.keyPath;
103
+ else if (Array.isArray(store.keyPath))
104
+ savedStore.keyPathArray = store.keyPath;
105
+ for (const indexName of store.indexNames) {
106
+ charge(indexName);
107
+ const index = store.index(indexName);
108
+ savedStore.indexes.push({ name: index.name, ...(typeof index.keyPath === 'string' ? { keyPath: index.keyPath } : { keyPathArray: index.keyPath }), multiEntry: index.multiEntry, unique: index.unique });
109
+ }
110
+ const cursor = store.openCursor();
111
+ await new Promise((resolve, reject) => {
112
+ cursor.onerror = () => reject(cursor.error);
113
+ cursor.onsuccess = () => {
114
+ if (!cursor.result) {
115
+ resolve();
116
+ return;
117
+ }
118
+ try {
119
+ const record = { valueEncoded: helpers.encode(cursor.result.value) };
120
+ if (store.keyPath === null)
121
+ record.keyEncoded = helpers.encode(cursor.result.key);
122
+ charge(JSON.stringify(record));
123
+ savedStore.records.push(record);
124
+ cursor.result.continue();
125
+ }
126
+ catch (error) {
127
+ transaction.abort();
128
+ reject(error);
129
+ }
130
+ };
131
+ });
132
+ saved.stores.push(savedStore);
133
+ }
134
+ result.indexedDB.push(saved);
135
+ }
136
+ finally {
137
+ database.close();
138
+ }
139
+ }
140
+ }
141
+ const serialized = JSON.stringify(result);
142
+ if (new TextEncoder().encode(serialized).length > input.maxBytes)
143
+ return false;
144
+ return serialized;
145
+ }
146
+ catch (error) {
147
+ if (error === limit)
148
+ return false;
149
+ throw error;
150
+ }
151
+ }
152
+ //# sourceMappingURL=native-storage-realm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-storage-realm.js","sourceRoot":"","sources":["../../src/playwright/native-storage-realm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { PlaywrightContext, PlaywrightStorageState } from './adapter.js';
2
+ export interface PlaywrightStorageCDP {
3
+ send(method: string, params?: Record<string, unknown>): Promise<Record<string, unknown>>;
4
+ detach(): Promise<void>;
5
+ }
6
+ export interface PlaywrightStorageOriginLease {
7
+ readonly cdp: PlaywrightStorageCDP;
8
+ readonly targetId: string;
9
+ readonly browserContextId: string;
10
+ release(): Promise<void>;
11
+ }
12
+ export type PlaywrightStorageOriginPreparer = (request: {
13
+ readonly context: PlaywrightContext;
14
+ readonly browserContextId: string;
15
+ readonly origin: string;
16
+ readonly signal: AbortSignal;
17
+ }) => Promise<PlaywrightStorageOriginLease>;
18
+ export declare function bindPlaywrightStorageContext(context: PlaywrightContext, prepare: PlaywrightStorageOriginPreparer, signal: AbortSignal): Promise<() => Promise<void>>;
19
+ export interface PlaywrightStorageOperationOptions {
20
+ readonly signal: AbortSignal;
21
+ readonly maxBytes: number;
22
+ registerCleanup(cleanup: () => Promise<void>): void;
23
+ }
24
+ export declare function readPlaywrightStorageState(context: PlaywrightContext, options: PlaywrightStorageOperationOptions & {
25
+ readonly indexedDB?: boolean;
26
+ }): Promise<PlaywrightStorageState>;
27
+ export declare function replacePlaywrightStorageState(context: PlaywrightContext, input: PlaywrightStorageState, options: PlaywrightStorageOperationOptions): Promise<void>;
28
+ //# sourceMappingURL=native-storage-replacement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-storage-replacement.d.ts","sourceRoot":"","sources":["../../src/playwright/native-storage-replacement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAK9E,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACzF,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,GAAG,EAAE,oBAAoB,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,MAAM,MAAM,+BAA+B,GAAG,CAAC,OAAO,EAAE;IACtD,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B,KAAK,OAAO,CAAC,4BAA4B,CAAC,CAAC;AAmB5C,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,+BAA+B,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CA0B1K;AAsED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACrD;AAoED,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,iCAAiC,GAAG;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAK3L;AAED,wBAAsB,6BAA6B,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,sBAAsB,EAAE,OAAO,EAAE,iCAAiC,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBxK"}
@@ -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"}