fix types
This commit is contained in:
parent
da0ad1ef75
commit
84c6d934b6
|
|
@ -28,7 +28,7 @@ import { Worker } from './worker';
|
||||||
import { Events } from './events';
|
import { Events } from './events';
|
||||||
import { TimeoutSettings } from '../common/timeoutSettings';
|
import { TimeoutSettings } from '../common/timeoutSettings';
|
||||||
import { Waiter } from './waiter';
|
import { Waiter } from './waiter';
|
||||||
import type { Headers, WaitForEventOptions, BrowserContextOptions, StorageState, LaunchOptions } from './types';
|
import type { Headers, WaitForEventOptions, BrowserContextOptions, StorageState, LaunchOptions, StorageStateWithIndexedDB } from './types';
|
||||||
import { type URLMatch, headersObjectToArray, isRegExp, isString, urlMatchesEqual, mkdirIfNeeded } from '../utils';
|
import { type URLMatch, headersObjectToArray, isRegExp, isString, urlMatchesEqual, mkdirIfNeeded } from '../utils';
|
||||||
import type * as api from '../../types/types';
|
import type * as api from '../../types/types';
|
||||||
import type * as structs from '../../types/structs';
|
import type * as structs from '../../types/structs';
|
||||||
|
|
@ -425,7 +425,7 @@ export class BrowserContext extends ChannelOwner<channels.BrowserContextChannel>
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async storageState(options: { path?: string } = {}): Promise<StorageState> {
|
async storageState(options: { path?: string } = {}): Promise<StorageStateWithIndexedDB> {
|
||||||
const state = await this._channel.storageState();
|
const state = await this._channel.storageState();
|
||||||
if (options.path) {
|
if (options.path) {
|
||||||
await mkdirIfNeeded(options.path);
|
await mkdirIfNeeded(options.path);
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,10 @@ export type StorageState = {
|
||||||
cookies: channels.NetworkCookie[],
|
cookies: channels.NetworkCookie[],
|
||||||
origins: channels.OriginStorage[]
|
origins: channels.OriginStorage[]
|
||||||
};
|
};
|
||||||
|
export type StorageStateWithIndexedDB = {
|
||||||
|
cookies: channels.NetworkCookie[],
|
||||||
|
origins: channels.OriginStorageWithRequiredIndexedDB[]
|
||||||
|
};
|
||||||
export type SetStorageState = {
|
export type SetStorageState = {
|
||||||
cookies?: channels.SetNetworkCookie[],
|
cookies?: channels.SetNetworkCookie[],
|
||||||
origins?: channels.OriginStorage[]
|
origins?: channels.OriginStorage[]
|
||||||
|
|
|
||||||
|
|
@ -164,6 +164,11 @@ scheme.IndexedDBDatabase = tObject({
|
||||||
})),
|
})),
|
||||||
});
|
});
|
||||||
scheme.OriginStorage = tObject({
|
scheme.OriginStorage = tObject({
|
||||||
|
origin: tString,
|
||||||
|
localStorage: tArray(tType('NameValue')),
|
||||||
|
indexedDB: tOptional(tArray(tType('IndexedDBDatabase'))),
|
||||||
|
});
|
||||||
|
scheme.OriginStorageWithRequiredIndexedDB = tObject({
|
||||||
origin: tString,
|
origin: tString,
|
||||||
localStorage: tArray(tType('NameValue')),
|
localStorage: tArray(tType('NameValue')),
|
||||||
indexedDB: tArray(tType('IndexedDBDatabase')),
|
indexedDB: tArray(tType('IndexedDBDatabase')),
|
||||||
|
|
@ -985,7 +990,7 @@ scheme.BrowserContextSetOfflineResult = tOptional(tObject({}));
|
||||||
scheme.BrowserContextStorageStateParams = tOptional(tObject({}));
|
scheme.BrowserContextStorageStateParams = tOptional(tObject({}));
|
||||||
scheme.BrowserContextStorageStateResult = tObject({
|
scheme.BrowserContextStorageStateResult = tObject({
|
||||||
cookies: tArray(tType('NetworkCookie')),
|
cookies: tArray(tType('NetworkCookie')),
|
||||||
origins: tArray(tType('OriginStorage')),
|
origins: tArray(tType('OriginStorageWithRequiredIndexedDB')),
|
||||||
});
|
});
|
||||||
scheme.BrowserContextPauseParams = tOptional(tObject({}));
|
scheme.BrowserContextPauseParams = tOptional(tObject({}));
|
||||||
scheme.BrowserContextPauseResult = tOptional(tObject({}));
|
scheme.BrowserContextPauseResult = tOptional(tObject({}));
|
||||||
|
|
|
||||||
|
|
@ -600,7 +600,7 @@ export abstract class BrowserContext extends SdkObject {
|
||||||
const storage = await page.mainFrame().nonStallingEvaluateInExistingContext(`(${_collectStorageScript.toString()})()`, 'utility');
|
const storage = await page.mainFrame().nonStallingEvaluateInExistingContext(`(${_collectStorageScript.toString()})()`, 'utility');
|
||||||
serializeRecords(storage.indexedDB);
|
serializeRecords(storage.indexedDB);
|
||||||
if (storage.localStorage.length || storage.indexedDB?.length)
|
if (storage.localStorage.length || storage.indexedDB?.length)
|
||||||
result.origins.push({ origin, localStorage: storage.localStorage, indexedDB: storage.indexedDB } as channels.OriginStorage);
|
result.origins.push({ origin, localStorage: storage.localStorage, indexedDB: storage.indexedDB } as channels.OriginStorageWithRequiredIndexedDB);
|
||||||
originsToSave.delete(origin);
|
originsToSave.delete(origin);
|
||||||
} catch {
|
} catch {
|
||||||
// When failed on the live page, we'll retry on the blank page below.
|
// When failed on the live page, we'll retry on the blank page below.
|
||||||
|
|
@ -621,7 +621,7 @@ export abstract class BrowserContext extends SdkObject {
|
||||||
const storage = await frame.evaluateExpression(`(${_collectStorageScript.toString()})()`, { world: 'utility' });
|
const storage = await frame.evaluateExpression(`(${_collectStorageScript.toString()})()`, { world: 'utility' });
|
||||||
serializeRecords(storage.indexedDB);
|
serializeRecords(storage.indexedDB);
|
||||||
if (storage.localStorage.length || storage.indexedDB.length)
|
if (storage.localStorage.length || storage.indexedDB.length)
|
||||||
result.origins.push({ origin, localStorage: storage.localStorage, indexedDB: storage.indexedDB } as channels.OriginStorage);
|
result.origins.push({ origin, localStorage: storage.localStorage, indexedDB: storage.indexedDB } as channels.OriginStorageWithRequiredIndexedDB);
|
||||||
}
|
}
|
||||||
await page.close(internalMetadata);
|
await page.close(internalMetadata);
|
||||||
}
|
}
|
||||||
|
|
@ -696,7 +696,7 @@ export abstract class BrowserContext extends SdkObject {
|
||||||
for (const { name, value } of (originState.localStorage || []))
|
for (const { name, value } of (originState.localStorage || []))
|
||||||
localStorage.setItem(name, value);
|
localStorage.setItem(name, value);
|
||||||
|
|
||||||
await Promise.all(originState.indexedDB.map(async dbInfo => {
|
await Promise.all((originState.indexedDB ?? []).map(async dbInfo => {
|
||||||
await new Promise<void>((resolve, reject) => {
|
await new Promise<void>((resolve, reject) => {
|
||||||
const openRequest = indexedDB.open(dbInfo.name, dbInfo.version);
|
const openRequest = indexedDB.open(dbInfo.name, dbInfo.version);
|
||||||
openRequest.addEventListener('upgradeneeded', () => {
|
openRequest.addEventListener('upgradeneeded', () => {
|
||||||
|
|
|
||||||
8
packages/protocol/src/channels.d.ts
vendored
8
packages/protocol/src/channels.d.ts
vendored
|
|
@ -294,6 +294,12 @@ export type IndexedDBDatabase = {
|
||||||
};
|
};
|
||||||
|
|
||||||
export type OriginStorage = {
|
export type OriginStorage = {
|
||||||
|
origin: string,
|
||||||
|
localStorage: NameValue[],
|
||||||
|
indexedDB?: IndexedDBDatabase[],
|
||||||
|
};
|
||||||
|
|
||||||
|
export type OriginStorageWithRequiredIndexedDB = {
|
||||||
origin: string,
|
origin: string,
|
||||||
localStorage: NameValue[],
|
localStorage: NameValue[],
|
||||||
indexedDB: IndexedDBDatabase[],
|
indexedDB: IndexedDBDatabase[],
|
||||||
|
|
@ -1787,7 +1793,7 @@ export type BrowserContextStorageStateParams = {};
|
||||||
export type BrowserContextStorageStateOptions = {};
|
export type BrowserContextStorageStateOptions = {};
|
||||||
export type BrowserContextStorageStateResult = {
|
export type BrowserContextStorageStateResult = {
|
||||||
cookies: NetworkCookie[],
|
cookies: NetworkCookie[],
|
||||||
origins: OriginStorage[],
|
origins: OriginStorageWithRequiredIndexedDB[],
|
||||||
};
|
};
|
||||||
export type BrowserContextPauseParams = {};
|
export type BrowserContextPauseParams = {};
|
||||||
export type BrowserContextPauseOptions = {};
|
export type BrowserContextPauseOptions = {};
|
||||||
|
|
|
||||||
|
|
@ -255,6 +255,17 @@ IndexedDBDatabase:
|
||||||
unique: boolean
|
unique: boolean
|
||||||
|
|
||||||
OriginStorage:
|
OriginStorage:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
origin: string
|
||||||
|
localStorage:
|
||||||
|
type: array
|
||||||
|
items: NameValue
|
||||||
|
indexedDB:
|
||||||
|
type: array?
|
||||||
|
items: IndexedDBDatabase
|
||||||
|
|
||||||
|
OriginStorageWithRequiredIndexedDB:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
origin: string
|
origin: string
|
||||||
|
|
@ -1217,7 +1228,7 @@ BrowserContext:
|
||||||
items: NetworkCookie
|
items: NetworkCookie
|
||||||
origins:
|
origins:
|
||||||
type: array
|
type: array
|
||||||
items: OriginStorage
|
items: OriginStorageWithRequiredIndexedDB
|
||||||
|
|
||||||
pause:
|
pause:
|
||||||
experimental: True
|
experimental: True
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue