puppeteer-extra-plugin-session
Version:
A puppeteer plugin to dump and inject session data.
46 lines • 1.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SessionManager = exports.defaultSessionManagerOptions = void 0;
const zod_1 = require("zod");
const exceptions_1 = require("../exceptions");
const schemas_1 = require("../schemas");
const session_1 = require("../session");
const storage_provider_1 = require("./storage-provider");
exports.defaultSessionManagerOptions = {
storageProviders: Object.values(storage_provider_1.StorageProviderName),
};
class SessionManager {
constructor(page) {
this.page = page;
}
async dump(options = exports.defaultSessionManagerOptions) {
return (0, session_1.getSessionData)(this.page, options.storageProviders);
}
async restore(sessionData, options = exports.defaultSessionManagerOptions) {
let data;
try {
data = schemas_1.SessionDataSchema.parse(sessionData);
}
catch (err) {
if (err instanceof zod_1.ZodError) {
throw new exceptions_1.CorruptedSessionDataError(err);
}
throw err;
}
await (0, session_1.setSessionData)(this.page, data, options.storageProviders);
}
/**
* Helper function to serialize the output of dump into JSON format.
*/
async dumpString(options = exports.defaultSessionManagerOptions) {
return JSON.stringify(await this.dump(options));
}
/**
* Helper function to parse a JSON string into a SessionData object and feed it to `restore`
*/
async restoreString(sessionData, options = exports.defaultSessionManagerOptions) {
await this.restore(JSON.parse(sessionData), options);
}
}
exports.SessionManager = SessionManager;
//# sourceMappingURL=session-manager.js.map