summaryrefslogtreecommitdiffstats
path: root/remote/test/puppeteer/packages/puppeteer-core/src/bidi/Serializer.ts
diff options
context:
space:
mode:
Diffstat (limited to 'remote/test/puppeteer/packages/puppeteer-core/src/bidi/Serializer.ts')
-rw-r--r--remote/test/puppeteer/packages/puppeteer-core/src/bidi/Serializer.ts110
1 files changed, 36 insertions, 74 deletions
diff --git a/remote/test/puppeteer/packages/puppeteer-core/src/bidi/Serializer.ts b/remote/test/puppeteer/packages/puppeteer-core/src/bidi/Serializer.ts
index c147ec9281..523380782b 100644
--- a/remote/test/puppeteer/packages/puppeteer-core/src/bidi/Serializer.ts
+++ b/remote/test/puppeteer/packages/puppeteer-core/src/bidi/Serializer.ts
@@ -6,13 +6,8 @@
import type * as Bidi from 'chromium-bidi/lib/cjs/protocol/protocol.js';
-import {LazyArg} from '../common/LazyArg.js';
import {isDate, isPlainObject, isRegExp} from '../common/util.js';
-import {BidiElementHandle} from './ElementHandle.js';
-import {BidiJSHandle} from './JSHandle.js';
-import type {Sandbox} from './Sandbox.js';
-
/**
* @internal
*/
@@ -22,7 +17,39 @@ class UnserializableError extends Error {}
* @internal
*/
export class BidiSerializer {
- static serializeNumber(arg: number): Bidi.Script.LocalValue {
+ static serialize(arg: unknown): Bidi.Script.LocalValue {
+ switch (typeof arg) {
+ case 'symbol':
+ case 'function':
+ throw new UnserializableError(`Unable to serializable ${typeof arg}`);
+ case 'object':
+ return this.#serializeObject(arg);
+
+ case 'undefined':
+ return {
+ type: 'undefined',
+ };
+ case 'number':
+ return this.#serializeNumber(arg);
+ case 'bigint':
+ return {
+ type: 'bigint',
+ value: arg.toString(),
+ };
+ case 'string':
+ return {
+ type: 'string',
+ value: arg,
+ };
+ case 'boolean':
+ return {
+ type: 'boolean',
+ value: arg,
+ };
+ }
+ }
+
+ static #serializeNumber(arg: number): Bidi.Script.LocalValue {
let value: Bidi.Script.SpecialNumber | number;
if (Object.is(arg, -0)) {
value = '-0';
@@ -41,14 +68,14 @@ export class BidiSerializer {
};
}
- static serializeObject(arg: object | null): Bidi.Script.LocalValue {
+ static #serializeObject(arg: object | null): Bidi.Script.LocalValue {
if (arg === null) {
return {
type: 'null',
};
} else if (Array.isArray(arg)) {
const parsedArray = arg.map(subArg => {
- return BidiSerializer.serializeRemoteValue(subArg);
+ return this.serialize(subArg);
});
return {
@@ -70,10 +97,7 @@ export class BidiSerializer {
const parsedObject: Bidi.Script.MappingLocalValue = [];
for (const key in arg) {
- parsedObject.push([
- BidiSerializer.serializeRemoteValue(key),
- BidiSerializer.serializeRemoteValue(arg[key]),
- ]);
+ parsedObject.push([this.serialize(key), this.serialize(arg[key])]);
}
return {
@@ -99,66 +123,4 @@ export class BidiSerializer {
'Custom object sterilization not possible. Use plain objects instead.'
);
}
-
- static serializeRemoteValue(arg: unknown): Bidi.Script.LocalValue {
- switch (typeof arg) {
- case 'symbol':
- case 'function':
- throw new UnserializableError(`Unable to serializable ${typeof arg}`);
- case 'object':
- return BidiSerializer.serializeObject(arg);
-
- case 'undefined':
- return {
- type: 'undefined',
- };
- case 'number':
- return BidiSerializer.serializeNumber(arg);
- case 'bigint':
- return {
- type: 'bigint',
- value: arg.toString(),
- };
- case 'string':
- return {
- type: 'string',
- value: arg,
- };
- case 'boolean':
- return {
- type: 'boolean',
- value: arg,
- };
- }
- }
-
- static async serialize(
- sandbox: Sandbox,
- arg: unknown
- ): Promise<Bidi.Script.LocalValue> {
- if (arg instanceof LazyArg) {
- arg = await arg.get(sandbox.realm);
- }
- // eslint-disable-next-line rulesdir/use-using -- We want this to continue living.
- const objectHandle =
- arg && (arg instanceof BidiJSHandle || arg instanceof BidiElementHandle)
- ? arg
- : null;
- if (objectHandle) {
- if (
- objectHandle.realm.environment.context() !==
- sandbox.environment.context()
- ) {
- throw new Error(
- 'JSHandles can be evaluated only in the context they were created!'
- );
- }
- if (objectHandle.disposed) {
- throw new Error('JSHandle is disposed!');
- }
- return objectHandle.remoteValue() as Bidi.Script.RemoteReference;
- }
-
- return BidiSerializer.serializeRemoteValue(arg);
- }
}