blob: 09117f57ebafe8771dea3899cbed4828585f8d83 [file] [log] [blame]
"use strict";
/**
* Copyright 2022 Google LLC.
* Copyright (c) Microsoft Corporation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.Input = exports.Session = exports.CDP = exports.BrowsingContext = exports.Script = exports.CommonDataTypes = exports.parseObject = void 0;
/**
* @fileoverview Provides parsing and validator for WebDriver BiDi protocol.
* Parser types should match the `../protocol` types.
*/
const zod_1 = require("zod");
const protocol_js_1 = require("../protocol/protocol.js");
const MAX_INT = 9007199254740991;
function parseObject(obj, schema) {
const parseResult = schema.safeParse(obj);
if (parseResult.success) {
return parseResult.data;
}
const errorMessage = parseResult.error.errors
.map((e) => `${e.message} in ` +
`${e.path.map((p) => JSON.stringify(p)).join('/')}.`)
.join(' ');
throw new protocol_js_1.Message.InvalidArgumentException(errorMessage);
}
exports.parseObject = parseObject;
const UnicodeCharacterSchema = zod_1.z.string().refine((value) => {
// The spread is a little hack so JS gives us an array of unicode characters
// to measure.
return [...value].length === 1;
});
var CommonDataTypes;
(function (CommonDataTypes) {
CommonDataTypes.SharedReferenceSchema = zod_1.z.object({
sharedId: zod_1.z.string().min(1),
handle: zod_1.z.string().optional(),
});
CommonDataTypes.RemoteReferenceSchema = zod_1.z.object({
handle: zod_1.z.string().min(1),
});
// UndefinedValue = {
// type: "undefined",
// }
const UndefinedValueSchema = zod_1.z.object({ type: zod_1.z.literal('undefined') });
// NullValue = {
// type: "null",
// }
const NullValueSchema = zod_1.z.object({ type: zod_1.z.literal('null') });
// StringValue = {
// type: "string",
// value: text,
// }
const StringValueSchema = zod_1.z.object({
type: zod_1.z.literal('string'),
value: zod_1.z.string(),
});
// SpecialNumber = "NaN" / "-0" / "Infinity" / "-Infinity";
const SpecialNumberSchema = zod_1.z.enum(['NaN', '-0', 'Infinity', '-Infinity']);
// NumberValue = {
// type: "number",
// value: number / SpecialNumber,
// }
const NumberValueSchema = zod_1.z.object({
type: zod_1.z.literal('number'),
value: zod_1.z.union([SpecialNumberSchema, zod_1.z.number()]),
});
// BooleanValue = {
// type: "boolean",
// value: bool,
// }
const BooleanValueSchema = zod_1.z.object({
type: zod_1.z.literal('boolean'),
value: zod_1.z.boolean(),
});
// BigIntValue = {
// type: "bigint",
// value: text,
// }
const BigIntValueSchema = zod_1.z.object({
type: zod_1.z.literal('bigint'),
value: zod_1.z.string(),
});
const PrimitiveProtocolValueSchema = zod_1.z.union([
UndefinedValueSchema,
NullValueSchema,
StringValueSchema,
NumberValueSchema,
BooleanValueSchema,
BigIntValueSchema,
]);
CommonDataTypes.LocalValueSchema = zod_1.z.lazy(() => zod_1.z.union([
PrimitiveProtocolValueSchema,
ArrayLocalValueSchema,
DateLocalValueSchema,
MapLocalValueSchema,
ObjectLocalValueSchema,
RegExpLocalValueSchema,
SetLocalValueSchema,
]));
// Order is important, as `parse` is processed in the same order.
// `SharedReferenceSchema`->`RemoteReferenceSchema`->`LocalValueSchema`.
const LocalOrRemoteValueSchema = zod_1.z.union([
CommonDataTypes.SharedReferenceSchema,
CommonDataTypes.RemoteReferenceSchema,
CommonDataTypes.LocalValueSchema,
]);
// ListLocalValue = [*LocalValue];
const ListLocalValueSchema = zod_1.z.array(LocalOrRemoteValueSchema);
// ArrayLocalValue = {
// type: "array",
// value: ListLocalValue,
// }
const ArrayLocalValueSchema = zod_1.z.object({
type: zod_1.z.literal('array'),
value: ListLocalValueSchema,
});
// DateLocalValue = {
// type: "date",
// value: text
// }
const DateLocalValueSchema = zod_1.z.object({
type: zod_1.z.literal('date'),
value: zod_1.z.string().min(1),
});
// MappingLocalValue = [*[(LocalValue / text), LocalValue]];
const MappingLocalValueSchema = zod_1.z.tuple([
zod_1.z.union([zod_1.z.string(), LocalOrRemoteValueSchema]),
LocalOrRemoteValueSchema,
]);
// MapLocalValue = {
// type: "map",
// value: MappingLocalValue,
// }
const MapLocalValueSchema = zod_1.z.object({
type: zod_1.z.literal('map'),
value: zod_1.z.array(MappingLocalValueSchema),
});
// ObjectLocalValue = {
// type: "object",
// value: MappingLocalValue,
// }
const ObjectLocalValueSchema = zod_1.z.object({
type: zod_1.z.literal('object'),
value: zod_1.z.array(MappingLocalValueSchema),
});
// RegExpLocalValue = {
// type: "regexp",
// value: RegExpValue,
// }
const RegExpLocalValueSchema = zod_1.z.object({
type: zod_1.z.literal('regexp'),
value: zod_1.z.object({
pattern: zod_1.z.string(),
flags: zod_1.z.string().optional(),
}),
});
// SetLocalValue = {
// type: "set",
// value: ListLocalValue,
// }
const SetLocalValueSchema = zod_1.z.lazy(() => zod_1.z.object({
type: zod_1.z.literal('set'),
value: ListLocalValueSchema,
}));
// BrowsingContext = text;
CommonDataTypes.BrowsingContextSchema = zod_1.z.string();
CommonDataTypes.MaxDepthSchema = zod_1.z.number().int().nonnegative().max(MAX_INT);
})(CommonDataTypes = exports.CommonDataTypes || (exports.CommonDataTypes = {}));
/** @see https://w3c.github.io/webdriver-bidi/#module-script */
var Script;
(function (Script) {
const RealmTypeSchema = zod_1.z.enum([
'window',
'dedicated-worker',
'shared-worker',
'service-worker',
'worker',
'paint-worklet',
'audio-worklet',
'worklet',
]);
Script.GetRealmsParametersSchema = zod_1.z.object({
context: CommonDataTypes.BrowsingContextSchema.optional(),
type: RealmTypeSchema.optional(),
});
function parseGetRealmsParams(params) {
return parseObject(params, Script.GetRealmsParametersSchema);
}
Script.parseGetRealmsParams = parseGetRealmsParams;
// ContextTarget = {
// context: BrowsingContext,
// ?sandbox: text
// }
const ContextTargetSchema = zod_1.z.object({
context: CommonDataTypes.BrowsingContextSchema,
sandbox: zod_1.z.string().optional(),
});
// RealmTarget = {realm: Realm};
const RealmTargetSchema = zod_1.z.object({
realm: zod_1.z.string().min(1),
});
// Target = (
// RealmTarget //
// ContextTarget
// );
// Order is important, as `parse` is processed in the same order.
// `RealmTargetSchema` has higher priority.
const TargetSchema = zod_1.z.union([RealmTargetSchema, ContextTargetSchema]);
// ResultOwnership = "root" / "none"
const ResultOwnershipSchema = zod_1.z.enum(['root', 'none']);
// SerializationOptions = {
// ?maxDomDepth: (js-uint / null) .default 0,
// ?maxObjectDepth: (js-uint / null) .default null,
// ?includeShadowTree: ("none" / "open" / "all") .default "none",
// }
const SerializationOptionsSchema = zod_1.z.object({
maxDomDepth: zod_1.z
.union([zod_1.z.null(), zod_1.z.number().int().nonnegative()])
.optional(),
maxObjectDepth: zod_1.z
.union([zod_1.z.null(), zod_1.z.number().int().nonnegative().max(MAX_INT)])
.optional(),
includeShadowTree: zod_1.z.enum(['none', 'open', 'all']).optional(),
});
// script.EvaluateParameters = {
// expression: text,
// target: script.Target,
// awaitPromise: bool,
// ?resultOwnership: script.ResultOwnership,
// ?serializationOptions: script.SerializationOptions,
// }
const EvaluateParametersSchema = zod_1.z.object({
expression: zod_1.z.string(),
awaitPromise: zod_1.z.boolean(),
target: TargetSchema,
resultOwnership: ResultOwnershipSchema.optional(),
serializationOptions: SerializationOptionsSchema.optional(),
});
function parseEvaluateParams(params) {
return parseObject(params, EvaluateParametersSchema);
}
Script.parseEvaluateParams = parseEvaluateParams;
// DisownParameters = {
// handles: [Handle]
// target: script.Target;
// }
const DisownParametersSchema = zod_1.z.object({
target: TargetSchema,
handles: zod_1.z.array(zod_1.z.string()),
});
function parseDisownParams(params) {
return parseObject(params, DisownParametersSchema);
}
Script.parseDisownParams = parseDisownParams;
const ChannelSchema = zod_1.z.string();
const ChannelPropertiesSchema = zod_1.z.object({
channel: ChannelSchema,
serializationOptions: SerializationOptionsSchema.optional(),
ownership: ResultOwnershipSchema.optional(),
});
Script.ChannelValueSchema = zod_1.z.object({
type: zod_1.z.literal('channel'),
value: ChannelPropertiesSchema,
});
Script.PreloadScriptSchema = zod_1.z.string();
Script.AddPreloadScriptParametersSchema = zod_1.z.object({
functionDeclaration: zod_1.z.string(),
arguments: zod_1.z.array(Script.ChannelValueSchema).optional(),
sandbox: zod_1.z.string().optional(),
context: CommonDataTypes.BrowsingContextSchema.optional(),
});
function parseAddPreloadScriptParams(params) {
return parseObject(params, Script.AddPreloadScriptParametersSchema);
}
Script.parseAddPreloadScriptParams = parseAddPreloadScriptParams;
Script.RemovePreloadScriptParametersSchema = zod_1.z.object({
script: Script.PreloadScriptSchema,
});
function parseRemovePreloadScriptParams(params) {
return parseObject(params, Script.RemovePreloadScriptParametersSchema);
}
Script.parseRemovePreloadScriptParams = parseRemovePreloadScriptParams;
// ArgumentValue = (
// RemoteReference //
// LocalValue //
// script.Channel
// );
const ArgumentValueSchema = zod_1.z.union([
CommonDataTypes.RemoteReferenceSchema,
CommonDataTypes.SharedReferenceSchema,
CommonDataTypes.LocalValueSchema,
Script.ChannelValueSchema,
]);
// CallFunctionParameters = {
// functionDeclaration: text,
// awaitPromise: bool,
// target: script.Target,
// ?arguments: [*script.ArgumentValue],
// ?resultOwnership: script.ResultOwnership,
// ?serializationOptions: script.SerializationOptions,
// ?this: script.ArgumentValue,
// }
const CallFunctionParametersSchema = zod_1.z.object({
functionDeclaration: zod_1.z.string(),
awaitPromise: zod_1.z.boolean(),
target: TargetSchema,
arguments: zod_1.z.array(ArgumentValueSchema).optional(),
resultOwnership: ResultOwnershipSchema.optional(),
serializationOptions: SerializationOptionsSchema.optional(),
this: ArgumentValueSchema.optional(),
});
function parseCallFunctionParams(params) {
return parseObject(params, CallFunctionParametersSchema);
}
Script.parseCallFunctionParams = parseCallFunctionParams;
})(Script = exports.Script || (exports.Script = {}));
/** @see https://w3c.github.io/webdriver-bidi/#module-browsingContext */
var BrowsingContext;
(function (BrowsingContext) {
// GetTreeParameters = {
// ?maxDepth: js-uint,
// ?root: browsingContext.BrowsingContext,
// }
const GetTreeParametersSchema = zod_1.z.object({
maxDepth: CommonDataTypes.MaxDepthSchema.optional(),
root: CommonDataTypes.BrowsingContextSchema.optional(),
});
function parseGetTreeParams(params) {
return parseObject(params, GetTreeParametersSchema);
}
BrowsingContext.parseGetTreeParams = parseGetTreeParams;
// ReadinessState = "none" / "interactive" / "complete"
const ReadinessStateSchema = zod_1.z.enum(['none', 'interactive', 'complete']);
// BrowsingContextNavigateParameters = {
// context: BrowsingContext,
// url: text,
// ?wait: ReadinessState,
// }
// ReadinessState = "none" / "interactive" / "complete"
const NavigateParametersSchema = zod_1.z.object({
context: CommonDataTypes.BrowsingContextSchema,
url: zod_1.z.string().url(),
wait: ReadinessStateSchema.optional(),
});
function parseNavigateParams(params) {
return parseObject(params, NavigateParametersSchema);
}
BrowsingContext.parseNavigateParams = parseNavigateParams;
const ReloadParametersSchema = zod_1.z.object({
context: CommonDataTypes.BrowsingContextSchema,
ignoreCache: zod_1.z.boolean().optional(),
wait: ReadinessStateSchema.optional(),
});
function parseReloadParams(params) {
return parseObject(params, ReloadParametersSchema);
}
BrowsingContext.parseReloadParams = parseReloadParams;
// BrowsingContextCreateType = "tab" / "window"
// BrowsingContextCreateParameters = {
// type: BrowsingContextCreateType
// }
const CreateParametersSchema = zod_1.z.object({
type: zod_1.z.enum(['tab', 'window']),
referenceContext: CommonDataTypes.BrowsingContextSchema.optional(),
});
function parseCreateParams(params) {
return parseObject(params, CreateParametersSchema);
}
BrowsingContext.parseCreateParams = parseCreateParams;
// BrowsingContextCloseParameters = {
// context: BrowsingContext
// }
const CloseParametersSchema = zod_1.z.object({
context: CommonDataTypes.BrowsingContextSchema,
});
function parseCloseParams(params) {
return parseObject(params, CloseParametersSchema);
}
BrowsingContext.parseCloseParams = parseCloseParams;
// browsingContext.CaptureScreenshotParameters = {
// context: browsingContext.BrowsingContext
// }
const CaptureScreenshotParametersSchema = zod_1.z.object({
context: CommonDataTypes.BrowsingContextSchema,
});
function parseCaptureScreenshotParams(params) {
return parseObject(params, CaptureScreenshotParametersSchema);
}
BrowsingContext.parseCaptureScreenshotParams = parseCaptureScreenshotParams;
// All units are in cm.
// PrintPageParameters = {
// ?height: (float .ge 0.0) .default 27.94,
// ?width: (float .ge 0.0) .default 21.59,
// }
const PrintPageParametersSchema = zod_1.z.object({
height: zod_1.z.number().nonnegative().optional(),
width: zod_1.z.number().nonnegative().optional(),
});
// All units are in cm.
// PrintMarginParameters = {
// ?bottom: (float .ge 0.0) .default 1.0,
// ?left: (float .ge 0.0) .default 1.0,
// ?right: (float .ge 0.0) .default 1.0,
// ?top: (float .ge 0.0) .default 1.0,
// }
const PrintMarginParametersSchema = zod_1.z.object({
bottom: zod_1.z.number().nonnegative().optional(),
left: zod_1.z.number().nonnegative().optional(),
right: zod_1.z.number().nonnegative().optional(),
top: zod_1.z.number().nonnegative().optional(),
});
/** @see https://w3c.github.io/webdriver/#dfn-parse-a-page-range */
const PrintPageRangesSchema = zod_1.z
.array(zod_1.z.union([zod_1.z.string().min(1), zod_1.z.number().int().nonnegative()]))
.refine((pageRanges) => {
return pageRanges.every((pageRange) => {
const match = String(pageRange).match(
// matches: '2' | '2-' | '-2' | '2-4'
/^(?:(?:\d+)|(?:\d+[-])|(?:[-]\d+)|(?:(?<start>\d+)[-](?<end>\d+)))$/);
// If a page range is specified, validate start <= end.
const { start, end } = match?.groups ?? {};
if (start && end && Number(start) > Number(end)) {
return false;
}
return match;
});
});
// PrintParameters = {
// context: browsingContext.BrowsingContext,
// ?background: bool .default false,
// ?margin: browsingContext.PrintMarginParameters,
// ?orientation: ("portrait" / "landscape") .default "portrait",
// ?page: browsingContext.PrintPageParameters,
// ?pageRanges: [*(js-uint / text)],
// ?scale: 0.1..2.0 .default 1.0,
// ?shrinkToFit: bool .default true,
// }
const PrintParametersSchema = zod_1.z.object({
context: CommonDataTypes.BrowsingContextSchema,
background: zod_1.z.boolean().optional(),
margin: PrintMarginParametersSchema.optional(),
orientation: zod_1.z.enum(['portrait', 'landscape']).optional(),
page: PrintPageParametersSchema.optional(),
pageRanges: PrintPageRangesSchema.optional(),
scale: zod_1.z.number().min(0.1).max(2.0).optional(),
shrinkToFit: zod_1.z.boolean().optional(),
});
function parsePrintParams(params) {
return parseObject(params, PrintParametersSchema);
}
BrowsingContext.parsePrintParams = parsePrintParams;
})(BrowsingContext = exports.BrowsingContext || (exports.BrowsingContext = {}));
var CDP;
(function (CDP) {
const SendCommandParamsSchema = zod_1.z.object({
// Allowing any cdpMethod, and casting to proper type later on.
cdpMethod: zod_1.z.string(),
// `passthrough` allows object to have any fields.
// https://github.com/colinhacks/zod#passthrough
cdpParams: zod_1.z.object({}).passthrough(),
cdpSession: zod_1.z.string().optional(),
});
function parseSendCommandParams(params) {
return parseObject(params, SendCommandParamsSchema);
}
CDP.parseSendCommandParams = parseSendCommandParams;
const GetSessionParamsSchema = zod_1.z.object({
context: CommonDataTypes.BrowsingContextSchema,
});
function parseGetSessionParams(params) {
return parseObject(params, GetSessionParamsSchema);
}
CDP.parseGetSessionParams = parseGetSessionParams;
})(CDP = exports.CDP || (exports.CDP = {}));
/** @see https://w3c.github.io/webdriver-bidi/#module-session */
var Session;
(function (Session) {
const SubscriptionRequestParametersEventsSchema = zod_1.z.enum([
protocol_js_1.BrowsingContext.AllEvents,
...Object.values(protocol_js_1.BrowsingContext.EventNames),
protocol_js_1.Log.AllEvents,
...Object.values(protocol_js_1.Log.EventNames),
protocol_js_1.CDP.AllEvents,
...Object.values(protocol_js_1.CDP.EventNames),
protocol_js_1.Network.AllEvents,
...Object.values(protocol_js_1.Network.EventNames),
protocol_js_1.Script.AllEvents,
...Object.values(protocol_js_1.Script.EventNames),
]);
// SessionSubscriptionRequest = {
// events: [*text],
// ?contexts: [*BrowsingContext],
// }
const SubscriptionRequestParametersSchema = zod_1.z.object({
events: zod_1.z.array(SubscriptionRequestParametersEventsSchema),
contexts: zod_1.z.array(CommonDataTypes.BrowsingContextSchema).optional(),
});
function parseSubscribeParams(params) {
return parseObject(params, SubscriptionRequestParametersSchema);
}
Session.parseSubscribeParams = parseSubscribeParams;
})(Session = exports.Session || (exports.Session = {}));
/** @see https://w3c.github.io/webdriver-bidi/#module-input */
var Input;
(function (Input) {
// input.ElementOrigin = {
// type: "element",
// element: script.SharedReference
// }
const ElementOriginSchema = zod_1.z.object({
type: zod_1.z.literal('element'),
element: CommonDataTypes.SharedReferenceSchema,
});
// input.Origin = "viewport" / "pointer" / input.ElementOrigin
const OriginSchema = zod_1.z.union([
zod_1.z.literal('viewport'),
zod_1.z.literal('pointer'),
ElementOriginSchema,
]);
// input.PauseAction = {
// type: "pause",
// ? duration: js-uint
// }
const PauseActionSchema = zod_1.z.object({
type: zod_1.z.literal(protocol_js_1.Input.ActionType.Pause),
duration: zod_1.z.number().nonnegative().int().optional(),
});
// input.KeyDownAction = {
// type: "keyDown",
// value: text
// }
const KeyDownActionSchema = zod_1.z.object({
type: zod_1.z.literal(protocol_js_1.Input.ActionType.KeyDown),
value: UnicodeCharacterSchema,
});
// input.KeyUpAction = {
// type: "keyUp",
// value: text
// }
const KeyUpActionSchema = zod_1.z.object({
type: zod_1.z.literal(protocol_js_1.Input.ActionType.KeyUp),
value: UnicodeCharacterSchema,
});
// input.TiltProperties = (
// ? tiltX: -90..90 .default 0,
// ? tiltY: -90..90 .default 0,
// )
const TiltPropertiesSchema = zod_1.z.object({
tiltX: zod_1.z.number().min(-90).max(90).int().default(0).optional(),
tiltY: zod_1.z.number().min(-90).max(90).int().default(0).optional(),
});
// input.AngleProperties = (
// ? altitudeAngle: float .default 0.0,
// ? azimuthAngle: float .default 0.0,
// )
const AnglePropertiesSchema = zod_1.z.object({
altitudeAngle: zod_1.z
.number()
.nonnegative()
.max(Math.PI / 2)
.default(0.0)
.optional(),
azimuthAngle: zod_1.z
.number()
.nonnegative()
.max(2 * Math.PI)
.default(0.0)
.optional(),
});
// input.PointerCommonProperties = (
// ? width: js-uint .default 1,
// ? height: js-uint .default 1,
// ? pressure: float .default 0.0,
// ? tangentialPressure: float .default 0.0,
// ? twist: 0..359 .default 0,
// (input.TiltProperties // input.AngleProperties)
// )
const PointerCommonPropertiesSchema = zod_1.z
.object({
width: zod_1.z.number().nonnegative().int().default(1),
height: zod_1.z.number().nonnegative().int().default(1),
pressure: zod_1.z.number().min(0.0).max(1.0).default(0.0),
tangentialPressure: zod_1.z.number().min(-1.0).max(1.0).default(0.0),
twist: zod_1.z.number().nonnegative().max(359).int().default(0),
})
.and(zod_1.z.union([TiltPropertiesSchema, AnglePropertiesSchema]));
// input.PointerUpAction = {
// type: "pointerUp",
// button: js-uint,
// input.PointerCommonProperties
// }
const PointerUpActionSchema = zod_1.z
.object({
type: zod_1.z.literal(protocol_js_1.Input.ActionType.PointerUp),
button: zod_1.z.number().nonnegative().int(),
})
.and(PointerCommonPropertiesSchema);
// input.PointerDownAction = {
// type: "pointerDown",
// button: js-uint,
// input.PointerCommonProperties
// }
const PointerDownActionSchema = zod_1.z
.object({
type: zod_1.z.literal(protocol_js_1.Input.ActionType.PointerDown),
button: zod_1.z.number().nonnegative().int(),
})
.and(PointerCommonPropertiesSchema);
// input.PointerMoveAction = {
// type: "pointerMove",
// x: js-int,
// y: js-int,
// ? duration: js-uint,
// ? origin: input.Origin,
// input.PointerCommonProperties
// }
const PointerMoveActionSchema = zod_1.z
.object({
type: zod_1.z.literal(protocol_js_1.Input.ActionType.PointerMove),
x: zod_1.z.number().int(),
y: zod_1.z.number().int(),
duration: zod_1.z.number().nonnegative().int().optional(),
origin: OriginSchema.optional().default('viewport'),
})
.and(PointerCommonPropertiesSchema);
// input.WheelScrollAction = {
// type: "scroll",
// x: js-int,
// y: js-int,
// deltaX: js-int,
// deltaY: js-int,
// ? duration: js-uint,
// ? origin: input.Origin .default "viewport",
// }
const WheelScrollActionSchema = zod_1.z.object({
type: zod_1.z.literal(protocol_js_1.Input.ActionType.Scroll),
x: zod_1.z.number().int(),
y: zod_1.z.number().int(),
deltaX: zod_1.z.number().int(),
deltaY: zod_1.z.number().int(),
duration: zod_1.z.number().nonnegative().int().optional(),
origin: OriginSchema.optional().default('viewport'),
});
// input.WheelSourceAction = (
// input.PauseAction //
// input.WheelScrollAction
// )
const WheelSourceActionSchema = zod_1.z.discriminatedUnion('type', [
PauseActionSchema,
WheelScrollActionSchema,
]);
// input.WheelSourceActions = {
// type: "wheel",
// id: text,
// actions: [*input.WheelSourceAction]
// }
const WheelSourceActionsSchema = zod_1.z.object({
type: zod_1.z.literal(protocol_js_1.Input.SourceActionsType.Wheel),
id: zod_1.z.string(),
actions: zod_1.z.array(WheelSourceActionSchema),
});
// input.PointerSourceAction = (
// input.PauseAction //
// input.PointerDownAction //
// input.PointerUpAction //
// input.PointerMoveAction
// )
const PointerSourceActionSchema = zod_1.z.union([
PauseActionSchema,
PointerDownActionSchema,
PointerUpActionSchema,
PointerMoveActionSchema,
]);
// input.PointerType = "mouse" / "pen" / "touch"
const PointerTypeSchema = zod_1.z.nativeEnum(protocol_js_1.Input.PointerType);
// input.PointerParameters = {
// ? pointerType: input.PointerType .default "mouse"
// }
const PointerParametersSchema = zod_1.z.object({
pointerType: PointerTypeSchema.optional().default(protocol_js_1.Input.PointerType.Mouse),
});
// input.PointerSourceActions = {
// type: "pointer",
// id: text,
// ? parameters: input.PointerParameters,
// actions: [*input.PointerSourceAction]
// }
const PointerSourceActionsSchema = zod_1.z.object({
type: zod_1.z.literal(protocol_js_1.Input.SourceActionsType.Pointer),
id: zod_1.z.string(),
parameters: PointerParametersSchema.optional(),
actions: zod_1.z.array(PointerSourceActionSchema),
});
// input.KeySourceAction = (
// input.PauseAction //
// input.KeyDownAction //
// input.KeyUpAction
// )
const KeySourceActionSchema = zod_1.z.discriminatedUnion('type', [
PauseActionSchema,
KeyDownActionSchema,
KeyUpActionSchema,
]);
// input.KeySourceActions = {
// type: "key",
// id: text,
// actions: [*input.KeySourceAction]
// }
const KeySourceActionsSchema = zod_1.z.object({
type: zod_1.z.literal(protocol_js_1.Input.SourceActionsType.Key),
id: zod_1.z.string(),
actions: zod_1.z.array(KeySourceActionSchema),
});
// input.NoneSourceAction = input.PauseAction
const NoneSourceActionSchema = PauseActionSchema;
// input.NoneSourceActions = {
// type: "none",
// id: text,
// actions: [*input.NoneSourceAction]
// }
const NoneSourceActionsSchema = zod_1.z.object({
type: zod_1.z.literal(protocol_js_1.Input.SourceActionsType.None),
id: zod_1.z.string(),
actions: zod_1.z.array(NoneSourceActionSchema),
});
// input.SourceActions = (
// input.NoneSourceActions //
// input.KeySourceActions //
// input.PointerSourceActions //
// input.WheelSourceActions
// )
const SourceActionsSchema = zod_1.z.discriminatedUnion('type', [
NoneSourceActionsSchema,
KeySourceActionsSchema,
PointerSourceActionsSchema,
WheelSourceActionsSchema,
]);
// input.PerformActionsParameters = {
// context: browsingContext.BrowsingContext,
// actions: [*input.SourceActions]
// }
const PerformActionsParametersSchema = zod_1.z.object({
context: CommonDataTypes.BrowsingContextSchema,
actions: zod_1.z.array(SourceActionsSchema),
});
function parsePerformActionsParams(params) {
return parseObject(params, PerformActionsParametersSchema);
}
Input.parsePerformActionsParams = parsePerformActionsParams;
// input.ReleaseActionsParameters = {
// context: browsingContext.BrowsingContext,
// }
const ReleaseActionsParametersSchema = zod_1.z.object({
context: CommonDataTypes.BrowsingContextSchema,
});
function parseReleaseActionsParams(params) {
return parseObject(params, ReleaseActionsParametersSchema);
}
Input.parseReleaseActionsParams = parseReleaseActionsParams;
})(Input = exports.Input || (exports.Input = {}));
//# sourceMappingURL=protocol-parser.js.map