@panerelay/protocol
Advanced tools
| import { PANERELAY_PROTOCOL_VERSION } from './constants.js'; | ||
| export declare const PANERELAY_FETCH_SESSION_PROTOCOL: "panerelay.fetch-session.v3"; | ||
| export declare const PANERELAY_FETCH_PERMISSION_PROTOCOL: "panerelay.fetch-permission.v1"; | ||
| export declare const PANERELAY_FETCH_ADAPTER_PROTOCOL: "panerelay.fetch-adapter.v3"; | ||
| export declare const PANERELAY_FETCH_ADAPTER_REGISTRY_PROTOCOL: "panerelay.fetch-adapter-registry.v3"; | ||
| export declare const PANERELAY_FETCH_MAX_URL_BYTES: number; | ||
| export declare const PANERELAY_FETCH_MAX_HEADERS = 128; | ||
| export declare const PANERELAY_FETCH_MAX_HEADER_BYTES: number; | ||
| export declare const PANERELAY_FETCH_MAX_ORIGINS = 32; | ||
| export declare const PANERELAY_FETCH_MAX_BINDINGS = 16; | ||
| export declare const PANERELAY_FETCH_MAX_BODY_BYTES: number; | ||
| export declare const PANERELAY_FETCH_MAX_RESPONSE_BODY_BYTES: number; | ||
| export declare const PANERELAY_FETCH_MAX_HTTP_REQUEST_BYTES: number; | ||
| export declare const PANERELAY_FETCH_MAX_SESSION_REQUEST_BYTES: number; | ||
| export declare const PANERELAY_FETCH_MIN_TIMEOUT_MS = 100; | ||
| export declare const PANERELAY_FETCH_MAX_TIMEOUT_MS = 120000; | ||
| export declare const PANERELAY_FETCH_DEFAULT_TIMEOUT_MS = 30000; | ||
| export declare const PANERELAY_FETCH_SESSION_TTL_MS = 120000; | ||
| export declare const PANERELAY_FETCH_PERMISSION_TIMEOUT_MS = 90000; | ||
| export declare const PANERELAY_FETCH_MAX_SESSIONS = 16; | ||
| export declare const PANERELAY_FETCH_ADAPTER_MAX_ARTIFACT_BYTES: number; | ||
| export declare const PANERELAY_FETCH_ADAPTER_MAX_OUTPUT_BYTES: number; | ||
| export declare const PANERELAY_FETCH_ADAPTER_MAX_STDERR_BYTES: number; | ||
| export declare const PANERELAY_FETCH_ADAPTER_MAX_SOURCE_PATH_BYTES: number; | ||
| export declare const PANERELAY_FETCH_ADAPTER_MAX_SOURCE_REF_BYTES = 256; | ||
| export declare const PANERELAY_FETCH_ADAPTER_MAX_FILE_BYTES: number; | ||
| export declare const PANERELAY_FETCH_ADAPTER_MAX_INPUT_BYTES: number; | ||
| export declare const PANERELAY_FETCH_METHODS: readonly ["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"]; | ||
| export type BrowserFetchMethod = (typeof PANERELAY_FETCH_METHODS)[number]; | ||
| export type BrowserFetchResponseType = 'auto' | 'json' | 'text' | 'base64'; | ||
| export interface BrowserFetchBody { | ||
| encoding: 'utf8' | 'base64'; | ||
| data: string; | ||
| } | ||
| export interface BrowserFetchQueryEntry { | ||
| name: string; | ||
| value: string; | ||
| } | ||
| export type BrowserFetchBindingDestinationKind = 'form' | 'json' | 'header'; | ||
| export interface BrowserFetchBindingDestination { | ||
| kind: BrowserFetchBindingDestinationKind; | ||
| name: string; | ||
| prefix?: string; | ||
| suffix?: string; | ||
| } | ||
| export type BrowserFetchBindingSource = { | ||
| kind: 'cookie'; | ||
| name: string; | ||
| transform?: 'raw' | 'url-decode'; | ||
| } | { | ||
| kind: 'local-storage'; | ||
| origin: string; | ||
| key: string; | ||
| jsonPointers?: string[]; | ||
| trim?: boolean; | ||
| }; | ||
| export interface BrowserFetchBindingPolicy { | ||
| id: string; | ||
| source: BrowserFetchBindingSource; | ||
| destination: BrowserFetchBindingDestination; | ||
| requestOrigins: string[]; | ||
| required?: boolean; | ||
| } | ||
| export interface BrowserFetchRequest { | ||
| url: string; | ||
| method?: BrowserFetchMethod; | ||
| headers?: Record<string, string>; | ||
| query?: BrowserFetchQueryEntry[]; | ||
| body?: BrowserFetchBody; | ||
| withCookies?: boolean; | ||
| bindings?: string[]; | ||
| responseType?: BrowserFetchResponseType; | ||
| timeoutMs?: number; | ||
| } | ||
| export interface BrowserFetchResponse { | ||
| status: number; | ||
| statusText: string; | ||
| headers: Record<string, string>; | ||
| body: unknown; | ||
| bodyType: 'json' | 'text' | 'base64'; | ||
| url: string; | ||
| redirected: boolean; | ||
| attachedCookieCount: number; | ||
| } | ||
| export interface BrowserFetchRequestMessage { | ||
| type: 'fetch.request'; | ||
| protocol: typeof PANERELAY_PROTOCOL_VERSION; | ||
| requestId: string; | ||
| browserId: string; | ||
| generation: string; | ||
| allowedOrigins: string[]; | ||
| bindingPolicies: BrowserFetchBindingPolicy[]; | ||
| request: BrowserFetchRequest; | ||
| } | ||
| export interface BrowserFetchCancelMessage { | ||
| type: 'fetch.cancel'; | ||
| protocol: typeof PANERELAY_PROTOCOL_VERSION; | ||
| requestId: string; | ||
| browserId: string; | ||
| generation: string; | ||
| } | ||
| export interface BrowserFetchResultMessage { | ||
| type: 'fetch.result'; | ||
| protocol: typeof PANERELAY_PROTOCOL_VERSION; | ||
| requestId: string; | ||
| success: boolean; | ||
| response?: BrowserFetchResponse; | ||
| error?: string; | ||
| } | ||
| export type BrowserFetchPermissionScope = 'domain'; | ||
| export interface BrowserFetchPermissionRequestMessage { | ||
| type: 'fetch.permission.request'; | ||
| protocol: typeof PANERELAY_PROTOCOL_VERSION; | ||
| requestId: string; | ||
| browserId: string; | ||
| generation: string; | ||
| domain: string; | ||
| } | ||
| export interface BrowserFetchPermissionCancelMessage { | ||
| type: 'fetch.permission.cancel'; | ||
| protocol: typeof PANERELAY_PROTOCOL_VERSION; | ||
| requestId: string; | ||
| browserId: string; | ||
| generation: string; | ||
| } | ||
| export interface BrowserFetchPermissionResultMessage { | ||
| type: 'fetch.permission.result'; | ||
| protocol: typeof PANERELAY_PROTOCOL_VERSION; | ||
| requestId: string; | ||
| granted: boolean; | ||
| domain: string; | ||
| scope?: BrowserFetchPermissionScope; | ||
| error?: string; | ||
| } | ||
| export interface BrowserFetchSessionCreateRequest { | ||
| protocol: typeof PANERELAY_FETCH_SESSION_PROTOCOL; | ||
| browser: { | ||
| browserId: string; | ||
| generation: string; | ||
| }; | ||
| allowedOrigins: string[]; | ||
| bindingPolicies?: BrowserFetchBindingPolicy[]; | ||
| } | ||
| export interface BrowserFetchSessionCreated { | ||
| protocol: typeof PANERELAY_FETCH_SESSION_PROTOCOL; | ||
| sessionId: string; | ||
| endpoint: string; | ||
| token: string; | ||
| expiresAt: string; | ||
| } | ||
| export interface BrowserFetchSessionError { | ||
| protocol: typeof PANERELAY_FETCH_SESSION_PROTOCOL; | ||
| error: string; | ||
| } | ||
| export interface BrowserFetchPermissionRequest { | ||
| protocol: typeof PANERELAY_FETCH_PERMISSION_PROTOCOL; | ||
| browser: { | ||
| browserId: string; | ||
| generation: string; | ||
| }; | ||
| domain: string; | ||
| } | ||
| export interface BrowserFetchPermissionResult { | ||
| protocol: typeof PANERELAY_FETCH_PERMISSION_PROTOCOL; | ||
| granted: boolean; | ||
| domain: string; | ||
| scope?: BrowserFetchPermissionScope; | ||
| } | ||
| export interface BrowserFetchPermissionError { | ||
| protocol: typeof PANERELAY_FETCH_PERMISSION_PROTOCOL; | ||
| error: string; | ||
| } | ||
| export type FetchAdapterArgumentType = 'string' | 'number' | 'boolean' | 'file'; | ||
| export interface FetchAdapterArgument { | ||
| name: string; | ||
| description: string; | ||
| type: FetchAdapterArgumentType; | ||
| required?: boolean; | ||
| positional?: boolean; | ||
| default?: string | number | boolean; | ||
| } | ||
| export interface FetchAdapterCommand { | ||
| name: string; | ||
| description: string; | ||
| access: 'read' | 'write'; | ||
| args: FetchAdapterArgument[]; | ||
| output: string[]; | ||
| examples: string[]; | ||
| } | ||
| export interface FetchAdapterManifest { | ||
| protocol: typeof PANERELAY_FETCH_ADAPTER_PROTOCOL; | ||
| id: string; | ||
| name: string; | ||
| version: string; | ||
| description: string; | ||
| origins: string[]; | ||
| bindings?: BrowserFetchBindingPolicy[]; | ||
| entry: string; | ||
| commands: FetchAdapterCommand[]; | ||
| } | ||
| export type FetchAdapterSourceProvenance = { | ||
| kind: 'builtin'; | ||
| id: string; | ||
| version: string; | ||
| } | { | ||
| kind: 'local'; | ||
| path: string; | ||
| } | { | ||
| kind: 'github'; | ||
| repository: string; | ||
| commit: string; | ||
| ref?: string; | ||
| subdirectory?: string; | ||
| }; | ||
| export interface FetchAdapterRegistration { | ||
| manifest: FetchAdapterManifest; | ||
| executablePath: string; | ||
| sha256: string; | ||
| source?: FetchAdapterSourceProvenance; | ||
| } | ||
| export interface FetchAdapterRegistry { | ||
| protocol: typeof PANERELAY_FETCH_ADAPTER_REGISTRY_PROTOCOL; | ||
| adapters: FetchAdapterRegistration[]; | ||
| } | ||
| export interface FetchAdapterInvocationRequest { | ||
| protocol: typeof PANERELAY_FETCH_ADAPTER_PROTOCOL; | ||
| requestId: string; | ||
| operation: 'execute'; | ||
| command: string; | ||
| args: Record<string, string | number | boolean>; | ||
| artifacts?: FetchAdapterInvocationArtifact[]; | ||
| fetch: { | ||
| endpoint: string; | ||
| token: string; | ||
| expiresAt: string; | ||
| }; | ||
| } | ||
| export interface FetchAdapterInvocationArtifact { | ||
| id: string; | ||
| basename: string; | ||
| mediaType: string; | ||
| size: number; | ||
| data: string; | ||
| } | ||
| export declare const SITE_ERROR_CODES: readonly ["invalid-input", "auth-required", "missing-credential", "challenge-required", "upstream-failure", "shape-drift", "empty-result", "unsupported", "command-failed"]; | ||
| export type SiteErrorCode = (typeof SITE_ERROR_CODES)[number]; | ||
| export interface FetchAdapterInvocationError { | ||
| code: SiteErrorCode; | ||
| message: string; | ||
| retryable?: boolean; | ||
| } | ||
| export interface FetchAdapterInvocationResponse { | ||
| protocol: typeof PANERELAY_FETCH_ADAPTER_PROTOCOL; | ||
| requestId: string; | ||
| operation: 'execute'; | ||
| success: boolean; | ||
| result?: unknown; | ||
| error?: FetchAdapterInvocationError; | ||
| } | ||
| export declare function normalizeBrowserFetchOriginPattern(value: unknown): string | null; | ||
| export declare function browserFetchOriginForUrl(value: string): string | null; | ||
| export declare function doesBrowserFetchOriginMatch(pattern: string, value: string): boolean; | ||
| export declare function isBrowserFetchBindingPolicy(value: unknown): value is BrowserFetchBindingPolicy; | ||
| export declare function areBrowserFetchBindingPoliciesCompatible(request: BrowserFetchRequest, policies: readonly BrowserFetchBindingPolicy[]): boolean; | ||
| export declare function isBrowserFetchRequest(value: unknown): value is BrowserFetchRequest; | ||
| export declare function isBrowserFetchResponse(value: unknown): value is BrowserFetchResponse; | ||
| export declare function isBrowserFetchRequestMessage(value: unknown): value is BrowserFetchRequestMessage; | ||
| export declare function isBrowserFetchCancelMessage(value: unknown): value is BrowserFetchCancelMessage; | ||
| export declare function isBrowserFetchPermissionCancelMessage(value: unknown): value is BrowserFetchPermissionCancelMessage; | ||
| export declare function isBrowserFetchResultMessage(value: unknown): value is BrowserFetchResultMessage; | ||
| export declare function normalizeBrowserFetchDomain(value: unknown): string | null; | ||
| export declare function isBrowserFetchPermissionRequestMessage(value: unknown): value is BrowserFetchPermissionRequestMessage; | ||
| export declare function isBrowserFetchPermissionResultMessage(value: unknown): value is BrowserFetchPermissionResultMessage; | ||
| export declare function isBrowserFetchSessionCreateRequest(value: unknown): value is BrowserFetchSessionCreateRequest; | ||
| export declare function isBrowserFetchPermissionRequest(value: unknown): value is BrowserFetchPermissionRequest; | ||
| export declare function isBrowserFetchPermissionResult(value: unknown): value is BrowserFetchPermissionResult; | ||
| export declare function isBrowserFetchPermissionError(value: unknown): value is BrowserFetchPermissionError; | ||
| export declare function isBrowserFetchSessionCreated(value: unknown): value is BrowserFetchSessionCreated; | ||
| export declare function isBrowserFetchSessionError(value: unknown): value is BrowserFetchSessionError; | ||
| export declare function isFetchAdapterManifest(value: unknown): value is FetchAdapterManifest; | ||
| export declare function isFetchAdapterSourceProvenance(value: unknown): value is FetchAdapterSourceProvenance; | ||
| export declare function isFetchAdapterRegistration(value: unknown): value is FetchAdapterRegistration; | ||
| export declare function isFetchAdapterRegistry(value: unknown): value is FetchAdapterRegistry; | ||
| export declare function isFetchAdapterInvocationError(value: unknown): value is FetchAdapterInvocationError; | ||
| export declare function isFetchAdapterInvocationRequest(value: unknown): value is FetchAdapterInvocationRequest; | ||
| export declare function isFetchAdapterInvocationResponse(value: unknown): value is FetchAdapterInvocationResponse; | ||
| export declare function serializeFetchAdapterMessage(value: unknown): string; | ||
| //# sourceMappingURL=browser-fetch.d.ts.map |
| {"version":3,"file":"browser-fetch.d.ts","sourceRoot":"","sources":["../src/browser-fetch.ts"],"names":[],"mappings":"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"} |
| import { PANERELAY_PROTOCOL_VERSION } from './constants.js'; | ||
| export const PANERELAY_FETCH_SESSION_PROTOCOL = 'panerelay.fetch-session.v3'; | ||
| export const PANERELAY_FETCH_PERMISSION_PROTOCOL = 'panerelay.fetch-permission.v1'; | ||
| export const PANERELAY_FETCH_ADAPTER_PROTOCOL = 'panerelay.fetch-adapter.v3'; | ||
| export const PANERELAY_FETCH_ADAPTER_REGISTRY_PROTOCOL = 'panerelay.fetch-adapter-registry.v3'; | ||
| export const PANERELAY_FETCH_MAX_URL_BYTES = 8 * 1024; | ||
| export const PANERELAY_FETCH_MAX_HEADERS = 128; | ||
| export const PANERELAY_FETCH_MAX_HEADER_BYTES = 64 * 1024; | ||
| export const PANERELAY_FETCH_MAX_ORIGINS = 32; | ||
| export const PANERELAY_FETCH_MAX_BINDINGS = 16; | ||
| export const PANERELAY_FETCH_MAX_BODY_BYTES = 16 * 1024 * 1024; | ||
| export const PANERELAY_FETCH_MAX_RESPONSE_BODY_BYTES = 32 * 1024 * 1024; | ||
| export const PANERELAY_FETCH_MAX_HTTP_REQUEST_BYTES = 24 * 1024 * 1024; | ||
| export const PANERELAY_FETCH_MAX_SESSION_REQUEST_BYTES = 96 * 1024; | ||
| export const PANERELAY_FETCH_MIN_TIMEOUT_MS = 100; | ||
| export const PANERELAY_FETCH_MAX_TIMEOUT_MS = 120_000; | ||
| export const PANERELAY_FETCH_DEFAULT_TIMEOUT_MS = 30_000; | ||
| export const PANERELAY_FETCH_SESSION_TTL_MS = 120_000; | ||
| export const PANERELAY_FETCH_PERMISSION_TIMEOUT_MS = 90_000; | ||
| export const PANERELAY_FETCH_MAX_SESSIONS = 16; | ||
| export const PANERELAY_FETCH_ADAPTER_MAX_ARTIFACT_BYTES = 8 * 1024 * 1024; | ||
| export const PANERELAY_FETCH_ADAPTER_MAX_OUTPUT_BYTES = 8 * 1024 * 1024; | ||
| export const PANERELAY_FETCH_ADAPTER_MAX_STDERR_BYTES = 64 * 1024; | ||
| export const PANERELAY_FETCH_ADAPTER_MAX_SOURCE_PATH_BYTES = 4 * 1024; | ||
| export const PANERELAY_FETCH_ADAPTER_MAX_SOURCE_REF_BYTES = 256; | ||
| export const PANERELAY_FETCH_ADAPTER_MAX_FILE_BYTES = 12 * 1024 * 1024; | ||
| export const PANERELAY_FETCH_ADAPTER_MAX_INPUT_BYTES = 18 * 1024 * 1024; | ||
| export const PANERELAY_FETCH_METHODS = [ | ||
| 'GET', | ||
| 'POST', | ||
| 'PUT', | ||
| 'DELETE', | ||
| 'PATCH', | ||
| 'HEAD', | ||
| 'OPTIONS', | ||
| ]; | ||
| export const SITE_ERROR_CODES = [ | ||
| 'invalid-input', | ||
| 'auth-required', | ||
| 'missing-credential', | ||
| 'challenge-required', | ||
| 'upstream-failure', | ||
| 'shape-drift', | ||
| 'empty-result', | ||
| 'unsupported', | ||
| 'command-failed', | ||
| ]; | ||
| function hasExactKeys(value, keys) { | ||
| const actual = Object.keys(value).sort(); | ||
| const expected = [...keys].sort(); | ||
| return actual.length === expected.length && actual.every((key, index) => key === expected[index]); | ||
| } | ||
| function hasAllowedKeys(value, keys) { | ||
| return Object.keys(value).every(key => keys.includes(key)); | ||
| } | ||
| function bytes(value) { | ||
| return new TextEncoder().encode(value).length; | ||
| } | ||
| function isBoundedString(value, minimum, maximum) { | ||
| return typeof value === 'string' && value.length >= minimum && bytes(value) <= maximum; | ||
| } | ||
| function isIdentifier(value) { | ||
| return typeof value === 'string' && /^[a-z][a-z0-9-]{0,63}$/.test(value); | ||
| } | ||
| function isAdapterId(value) { | ||
| return typeof value === 'string' && /^[a-z0-9][a-z0-9-]{0,63}$/.test(value); | ||
| } | ||
| function isFieldName(value) { | ||
| return typeof value === 'string' && /^[A-Za-z][A-Za-z0-9_.-]{0,63}$/.test(value); | ||
| } | ||
| function isSafeEntry(value) { | ||
| return (typeof value === 'string' && | ||
| /^[A-Za-z0-9][A-Za-z0-9._-]{0,127}\.mjs$/.test(value) && | ||
| value !== '.' && | ||
| value !== '..'); | ||
| } | ||
| function isIsoDate(value) { | ||
| return typeof value === 'string' && Number.isFinite(Date.parse(value)); | ||
| } | ||
| function decodedBase64Bytes(value, maximum = PANERELAY_FETCH_MAX_BODY_BYTES) { | ||
| if (value.length === 0) | ||
| return 0; | ||
| if (value.length > Math.ceil((maximum * 4) / 3) + 4) | ||
| return null; | ||
| if (value.length % 4 !== 0 || | ||
| !/^[A-Za-z0-9+/]*={0,2}$/.test(value) || | ||
| value.slice(0, -2).includes('=') || | ||
| (value.endsWith('==') && value.length >= 2 && !/[A-Za-z0-9+/]==$/.test(value)) || | ||
| (value.endsWith('=') && !value.endsWith('==') && !/[A-Za-z0-9+/]{2}=$/.test(value))) { | ||
| return null; | ||
| } | ||
| const padding = value.endsWith('==') ? 2 : value.endsWith('=') ? 1 : 0; | ||
| return (value.length / 4) * 3 - padding; | ||
| } | ||
| function isHeaders(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const entries = Object.entries(value); | ||
| return (entries.length <= PANERELAY_FETCH_MAX_HEADERS && | ||
| entries.every(([name, headerValue]) => /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/.test(name) && | ||
| typeof headerValue === 'string' && | ||
| !/[\r\n]/.test(headerValue)) && | ||
| entries.reduce((total, [name, headerValue]) => total + bytes(name) + bytes(String(headerValue)), 0) <= PANERELAY_FETCH_MAX_HEADER_BYTES); | ||
| } | ||
| function isQuery(value) { | ||
| return (Array.isArray(value) && | ||
| value.length <= 256 && | ||
| value.every(entry => { | ||
| if (!entry || typeof entry !== 'object' || Array.isArray(entry)) | ||
| return false; | ||
| const candidate = entry; | ||
| return (hasExactKeys(candidate, ['name', 'value']) && | ||
| isBoundedString(candidate.name, 1, 1_024) && | ||
| isBoundedString(candidate.value, 0, 8 * 1_024)); | ||
| })); | ||
| } | ||
| function isBody(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| if (!hasExactKeys(candidate, ['encoding', 'data']) || | ||
| (candidate.encoding !== 'utf8' && candidate.encoding !== 'base64') || | ||
| typeof candidate.data !== 'string') { | ||
| return false; | ||
| } | ||
| const length = candidate.encoding === 'utf8' ? bytes(candidate.data) : decodedBase64Bytes(candidate.data); | ||
| return length !== null && length <= PANERELAY_FETCH_MAX_BODY_BYTES; | ||
| } | ||
| const RESERVED_BOUND_HEADER_NAMES = new Set([ | ||
| 'cookie', | ||
| 'origin', | ||
| 'referer', | ||
| 'host', | ||
| 'content-length', | ||
| ]); | ||
| export function normalizeBrowserFetchOriginPattern(value) { | ||
| if (!isBoundedString(value, 1, PANERELAY_FETCH_MAX_URL_BYTES)) | ||
| return null; | ||
| try { | ||
| const url = new URL(value); | ||
| if ((url.protocol !== 'http:' && url.protocol !== 'https:') || | ||
| url.username || | ||
| url.password || | ||
| url.pathname !== '/' || | ||
| url.search || | ||
| url.hash) { | ||
| return null; | ||
| } | ||
| let hostname = url.hostname.toLowerCase().replace(/\.$/, ''); | ||
| const wildcard = hostname.startsWith('*.'); | ||
| if (wildcard) | ||
| hostname = hostname.slice(2); | ||
| if (!hostname || /[\s/*]/.test(hostname)) | ||
| return null; | ||
| if (wildcard && | ||
| (hostname === 'localhost' || /^\[.*\]$/.test(hostname) || /^\d+(?:\.\d+){3}$/.test(hostname))) { | ||
| return null; | ||
| } | ||
| return `${url.protocol}//${wildcard ? '*.' : ''}${hostname}${url.port ? `:${url.port}` : ''}`; | ||
| } | ||
| catch { | ||
| return null; | ||
| } | ||
| } | ||
| export function browserFetchOriginForUrl(value) { | ||
| try { | ||
| const url = new URL(value); | ||
| if ((url.protocol !== 'http:' && url.protocol !== 'https:') || url.username || url.password) { | ||
| return null; | ||
| } | ||
| return url.origin; | ||
| } | ||
| catch { | ||
| return null; | ||
| } | ||
| } | ||
| export function doesBrowserFetchOriginMatch(pattern, value) { | ||
| const normalized = normalizeBrowserFetchOriginPattern(pattern); | ||
| const origin = browserFetchOriginForUrl(value); | ||
| if (!normalized || !origin) | ||
| return false; | ||
| const target = new URL(origin); | ||
| const wildcard = normalized.includes('://*.'); | ||
| const parsed = new URL(wildcard ? normalized.replace('://*.', '://') : normalized); | ||
| if (parsed.protocol !== target.protocol || parsed.port !== target.port) | ||
| return false; | ||
| return wildcard | ||
| ? target.hostname === parsed.hostname || target.hostname.endsWith(`.${parsed.hostname}`) | ||
| : target.hostname === parsed.hostname; | ||
| } | ||
| function isOriginPatterns(value, allowEmpty = false) { | ||
| return (Array.isArray(value) && | ||
| (allowEmpty || value.length > 0) && | ||
| value.length <= PANERELAY_FETCH_MAX_ORIGINS && | ||
| value.every(origin => normalizeBrowserFetchOriginPattern(origin) === origin) && | ||
| new Set(value).size === value.length); | ||
| } | ||
| function isBindingDestination(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const destination = value; | ||
| if (!hasAllowedKeys(destination, ['kind', 'name', 'prefix', 'suffix']) || | ||
| !['form', 'json', 'header'].includes(destination.kind) || | ||
| !isBoundedString(destination.name, 1, 256) || | ||
| /[\r\n]/.test(destination.name) || | ||
| (destination.prefix !== undefined && | ||
| (!isBoundedString(destination.prefix, 0, 256) || /[\r\n]/.test(destination.prefix))) || | ||
| (destination.suffix !== undefined && | ||
| (!isBoundedString(destination.suffix, 0, 256) || /[\r\n]/.test(destination.suffix)))) { | ||
| return false; | ||
| } | ||
| if (destination.kind !== 'header') | ||
| return !/[&=]/.test(destination.name); | ||
| return (/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/.test(destination.name) && | ||
| !RESERVED_BOUND_HEADER_NAMES.has(destination.name.toLowerCase())); | ||
| } | ||
| function isJsonPointer(value) { | ||
| return (isBoundedString(value, 0, 512) && | ||
| (value === '' || (value.startsWith('/') && !/(?:~[^01])|(?:~$)/.test(value)))); | ||
| } | ||
| function isBindingSource(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| if (candidate.kind === 'cookie') { | ||
| return (hasAllowedKeys(candidate, ['kind', 'name', 'transform']) && | ||
| isBoundedString(candidate.name, 1, 256) && | ||
| /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/.test(candidate.name) && | ||
| (candidate.transform === undefined || | ||
| candidate.transform === 'raw' || | ||
| candidate.transform === 'url-decode')); | ||
| } | ||
| return (candidate.kind === 'local-storage' && | ||
| hasAllowedKeys(candidate, ['kind', 'origin', 'key', 'jsonPointers', 'trim']) && | ||
| normalizeBrowserFetchOriginPattern(candidate.origin) === candidate.origin && | ||
| !String(candidate.origin).includes('://*.') && | ||
| isBoundedString(candidate.key, 1, 512) && | ||
| (candidate.jsonPointers === undefined || | ||
| (Array.isArray(candidate.jsonPointers) && | ||
| candidate.jsonPointers.length > 0 && | ||
| candidate.jsonPointers.length <= 8 && | ||
| candidate.jsonPointers.every(isJsonPointer) && | ||
| new Set(candidate.jsonPointers).size === candidate.jsonPointers.length)) && | ||
| (candidate.trim === undefined || typeof candidate.trim === 'boolean')); | ||
| } | ||
| export function isBrowserFetchBindingPolicy(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| return (hasAllowedKeys(candidate, ['id', 'source', 'destination', 'requestOrigins', 'required']) && | ||
| isIdentifier(candidate.id) && | ||
| isBindingSource(candidate.source) && | ||
| isBindingDestination(candidate.destination) && | ||
| isOriginPatterns(candidate.requestOrigins) && | ||
| (candidate.required === undefined || typeof candidate.required === 'boolean')); | ||
| } | ||
| function isBindingPolicies(value, optional = false) { | ||
| if (value === undefined) | ||
| return optional; | ||
| return (Array.isArray(value) && | ||
| value.length <= PANERELAY_FETCH_MAX_BINDINGS && | ||
| value.every(isBrowserFetchBindingPolicy) && | ||
| new Set(value.map(policy => policy.id)).size === value.length); | ||
| } | ||
| function headerValue(headers, expectedName) { | ||
| for (const [name, value] of Object.entries(headers ?? {})) { | ||
| if (name.toLowerCase() === expectedName) | ||
| return value; | ||
| } | ||
| return undefined; | ||
| } | ||
| export function areBrowserFetchBindingPoliciesCompatible(request, policies) { | ||
| if (!isBrowserFetchRequest(request)) | ||
| return false; | ||
| if (policies.length > PANERELAY_FETCH_MAX_BINDINGS || | ||
| !policies.every(isBrowserFetchBindingPolicy)) | ||
| return false; | ||
| if (!policies.every(policy => policy.requestOrigins.some(origin => doesBrowserFetchOriginMatch(origin, request.url)))) | ||
| return false; | ||
| const value = policies; | ||
| const method = request.method ?? 'GET'; | ||
| const headers = request.headers; | ||
| const body = request.body; | ||
| const destinations = value.map(policy => policy.destination.kind === 'header' | ||
| ? `header:${policy.destination.name.toLowerCase()}` | ||
| : `${policy.destination.kind}:${policy.destination.name}`); | ||
| if (new Set(destinations).size !== destinations.length) | ||
| return false; | ||
| const bodyKinds = new Set(value.map(policy => policy.destination.kind).filter(kind => kind === 'form' || kind === 'json')); | ||
| if (bodyKinds.size > 1) | ||
| return false; | ||
| if (bodyKinds.size === 0) | ||
| return true; | ||
| if (method === 'GET' || method === 'HEAD' || body?.encoding === 'base64') | ||
| return false; | ||
| const contentType = headerValue(headers, 'content-type')?.split(';', 1)[0]?.trim().toLowerCase(); | ||
| if (!contentType) | ||
| return true; | ||
| if (bodyKinds.has('form')) | ||
| return contentType === 'application/x-www-form-urlencoded'; | ||
| return contentType === 'application/json' || contentType.endsWith('+json'); | ||
| } | ||
| export function isBrowserFetchRequest(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| if (!hasAllowedKeys(candidate, [ | ||
| 'url', | ||
| 'method', | ||
| 'headers', | ||
| 'query', | ||
| 'body', | ||
| 'withCookies', | ||
| 'bindings', | ||
| 'responseType', | ||
| 'timeoutMs', | ||
| ]) || | ||
| !isBoundedString(candidate.url, 1, PANERELAY_FETCH_MAX_URL_BYTES)) { | ||
| return false; | ||
| } | ||
| try { | ||
| const url = new URL(candidate.url); | ||
| if (url.protocol !== 'http:' && url.protocol !== 'https:') | ||
| return false; | ||
| if (url.username || url.password) | ||
| return false; | ||
| } | ||
| catch { | ||
| return false; | ||
| } | ||
| const method = candidate.method ?? 'GET'; | ||
| if (!PANERELAY_FETCH_METHODS.includes(method)) | ||
| return false; | ||
| if (candidate.headers !== undefined && !isHeaders(candidate.headers)) | ||
| return false; | ||
| if (candidate.headers !== undefined && | ||
| Object.keys(candidate.headers).some(name => name.toLowerCase() === 'cookie')) { | ||
| return false; | ||
| } | ||
| if (candidate.query !== undefined && !isQuery(candidate.query)) | ||
| return false; | ||
| if (candidate.body !== undefined && !isBody(candidate.body)) | ||
| return false; | ||
| if ((method === 'GET' || method === 'HEAD') && candidate.body !== undefined) | ||
| return false; | ||
| if (candidate.withCookies !== undefined && typeof candidate.withCookies !== 'boolean') | ||
| return false; | ||
| if (candidate.bindings !== undefined && | ||
| (!Array.isArray(candidate.bindings) || | ||
| candidate.bindings.length > PANERELAY_FETCH_MAX_BINDINGS || | ||
| !candidate.bindings.every(isIdentifier) || | ||
| new Set(candidate.bindings).size !== candidate.bindings.length)) | ||
| return false; | ||
| if (candidate.responseType !== undefined && | ||
| !['auto', 'json', 'text', 'base64'].includes(candidate.responseType)) { | ||
| return false; | ||
| } | ||
| return (candidate.timeoutMs === undefined || | ||
| (typeof candidate.timeoutMs === 'number' && | ||
| Number.isSafeInteger(candidate.timeoutMs) && | ||
| candidate.timeoutMs >= PANERELAY_FETCH_MIN_TIMEOUT_MS && | ||
| candidate.timeoutMs <= PANERELAY_FETCH_MAX_TIMEOUT_MS)); | ||
| } | ||
| export function isBrowserFetchResponse(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| const validBody = (() => { | ||
| if (candidate.bodyType === 'text') { | ||
| return (typeof candidate.body === 'string' && | ||
| bytes(candidate.body) <= PANERELAY_FETCH_MAX_RESPONSE_BODY_BYTES); | ||
| } | ||
| if (candidate.bodyType === 'base64') { | ||
| return (typeof candidate.body === 'string' && | ||
| decodedBase64Bytes(candidate.body, PANERELAY_FETCH_MAX_RESPONSE_BODY_BYTES) !== null); | ||
| } | ||
| if (candidate.bodyType !== 'json') | ||
| return false; | ||
| try { | ||
| const serialized = JSON.stringify(candidate.body); | ||
| return (serialized !== undefined && bytes(serialized) <= PANERELAY_FETCH_MAX_RESPONSE_BODY_BYTES); | ||
| } | ||
| catch { | ||
| return false; | ||
| } | ||
| })(); | ||
| return (hasExactKeys(candidate, [ | ||
| 'status', | ||
| 'statusText', | ||
| 'headers', | ||
| 'body', | ||
| 'bodyType', | ||
| 'url', | ||
| 'redirected', | ||
| 'attachedCookieCount', | ||
| ]) && | ||
| typeof candidate.status === 'number' && | ||
| Number.isSafeInteger(candidate.status) && | ||
| candidate.status >= 0 && | ||
| candidate.status <= 999 && | ||
| isBoundedString(candidate.statusText, 0, 1_024) && | ||
| isHeaders(candidate.headers) && | ||
| ['json', 'text', 'base64'].includes(candidate.bodyType) && | ||
| validBody && | ||
| isBoundedString(candidate.url, 1, PANERELAY_FETCH_MAX_URL_BYTES) && | ||
| typeof candidate.redirected === 'boolean' && | ||
| typeof candidate.attachedCookieCount === 'number' && | ||
| Number.isSafeInteger(candidate.attachedCookieCount) && | ||
| candidate.attachedCookieCount >= 0); | ||
| } | ||
| export function isBrowserFetchRequestMessage(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| return (hasExactKeys(candidate, [ | ||
| 'type', | ||
| 'protocol', | ||
| 'requestId', | ||
| 'browserId', | ||
| 'generation', | ||
| 'allowedOrigins', | ||
| 'bindingPolicies', | ||
| 'request', | ||
| ]) && | ||
| candidate.type === 'fetch.request' && | ||
| candidate.protocol === PANERELAY_PROTOCOL_VERSION && | ||
| isBoundedString(candidate.requestId, 1, 128) && | ||
| isBoundedString(candidate.browserId, 1, 256) && | ||
| isBoundedString(candidate.generation, 1, 128) && | ||
| isOriginPatterns(candidate.allowedOrigins) && | ||
| isBindingPolicies(candidate.bindingPolicies) && | ||
| isBrowserFetchRequest(candidate.request) && | ||
| (candidate.request.bindings?.length ?? 0) === | ||
| candidate.bindingPolicies.length && | ||
| (candidate.request.bindings ?? []).every((id, index) => id === candidate.bindingPolicies[index]?.id) && | ||
| areBrowserFetchBindingPoliciesCompatible(candidate.request, candidate.bindingPolicies)); | ||
| } | ||
| export function isBrowserFetchCancelMessage(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| return (hasExactKeys(candidate, ['type', 'protocol', 'requestId', 'browserId', 'generation']) && | ||
| candidate.type === 'fetch.cancel' && | ||
| candidate.protocol === PANERELAY_PROTOCOL_VERSION && | ||
| isBoundedString(candidate.requestId, 1, 128) && | ||
| isBoundedString(candidate.browserId, 1, 256) && | ||
| isBoundedString(candidate.generation, 1, 128)); | ||
| } | ||
| export function isBrowserFetchPermissionCancelMessage(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| return (hasExactKeys(candidate, ['type', 'protocol', 'requestId', 'browserId', 'generation']) && | ||
| candidate.type === 'fetch.permission.cancel' && | ||
| candidate.protocol === PANERELAY_PROTOCOL_VERSION && | ||
| isBoundedString(candidate.requestId, 1, 128) && | ||
| isBoundedString(candidate.browserId, 1, 256) && | ||
| isBoundedString(candidate.generation, 1, 128)); | ||
| } | ||
| export function isBrowserFetchResultMessage(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| const expected = candidate.success | ||
| ? ['type', 'protocol', 'requestId', 'success', 'response'] | ||
| : ['type', 'protocol', 'requestId', 'success', 'error']; | ||
| return (hasExactKeys(candidate, expected) && | ||
| candidate.type === 'fetch.result' && | ||
| candidate.protocol === PANERELAY_PROTOCOL_VERSION && | ||
| isBoundedString(candidate.requestId, 1, 128) && | ||
| typeof candidate.success === 'boolean' && | ||
| (candidate.success | ||
| ? isBrowserFetchResponse(candidate.response) | ||
| : isBoundedString(candidate.error, 1, 2_048))); | ||
| } | ||
| export function normalizeBrowserFetchDomain(value) { | ||
| if (!isBoundedString(value, 1, PANERELAY_FETCH_MAX_URL_BYTES)) | ||
| return null; | ||
| let source = value.trim().toLowerCase(); | ||
| const wildcard = source.startsWith('*.'); | ||
| if (wildcard) | ||
| source = source.slice(2); | ||
| try { | ||
| const url = new URL(source.includes('://') ? source : `http://${source}`); | ||
| if (url.username || url.password) | ||
| return null; | ||
| const hostname = url.hostname.toLowerCase().replace(/\.$/, ''); | ||
| if (!hostname || /[\s/*]/.test(hostname)) | ||
| return null; | ||
| if (wildcard && | ||
| (hostname === 'localhost' || /^\[.*\]$/.test(hostname) || /^\d+(?:\.\d+){3}$/.test(hostname))) { | ||
| return null; | ||
| } | ||
| return wildcard ? `*.${hostname}` : hostname; | ||
| } | ||
| catch { | ||
| return null; | ||
| } | ||
| } | ||
| export function isBrowserFetchPermissionRequestMessage(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| return (hasExactKeys(candidate, [ | ||
| 'type', | ||
| 'protocol', | ||
| 'requestId', | ||
| 'browserId', | ||
| 'generation', | ||
| 'domain', | ||
| ]) && | ||
| candidate.type === 'fetch.permission.request' && | ||
| candidate.protocol === PANERELAY_PROTOCOL_VERSION && | ||
| isBoundedString(candidate.requestId, 1, 128) && | ||
| isBoundedString(candidate.browserId, 1, 256) && | ||
| isBoundedString(candidate.generation, 1, 128) && | ||
| normalizeBrowserFetchDomain(candidate.domain) === candidate.domain); | ||
| } | ||
| export function isBrowserFetchPermissionResultMessage(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| const expected = candidate.granted | ||
| ? ['type', 'protocol', 'requestId', 'granted', 'domain', 'scope'] | ||
| : candidate.error === undefined | ||
| ? ['type', 'protocol', 'requestId', 'granted', 'domain'] | ||
| : ['type', 'protocol', 'requestId', 'granted', 'domain', 'error']; | ||
| return (hasExactKeys(candidate, expected) && | ||
| candidate.type === 'fetch.permission.result' && | ||
| candidate.protocol === PANERELAY_PROTOCOL_VERSION && | ||
| isBoundedString(candidate.requestId, 1, 128) && | ||
| typeof candidate.granted === 'boolean' && | ||
| normalizeBrowserFetchDomain(candidate.domain) === candidate.domain && | ||
| (candidate.granted | ||
| ? candidate.scope === 'domain' | ||
| : candidate.error === undefined || isBoundedString(candidate.error, 1, 2_048))); | ||
| } | ||
| export function isBrowserFetchSessionCreateRequest(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| if (!hasAllowedKeys(candidate, ['protocol', 'browser', 'allowedOrigins', 'bindingPolicies']) || | ||
| candidate.protocol !== PANERELAY_FETCH_SESSION_PROTOCOL || | ||
| !isOriginPatterns(candidate.allowedOrigins, true) || | ||
| !isBindingPolicies(candidate.bindingPolicies, true) || | ||
| !candidate.browser || | ||
| typeof candidate.browser !== 'object' || | ||
| Array.isArray(candidate.browser)) { | ||
| return false; | ||
| } | ||
| const browser = candidate.browser; | ||
| return (hasExactKeys(browser, ['browserId', 'generation']) && | ||
| isBoundedString(browser.browserId, 1, 256) && | ||
| isBoundedString(browser.generation, 1, 128)); | ||
| } | ||
| export function isBrowserFetchPermissionRequest(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| if (!hasExactKeys(candidate, ['protocol', 'browser', 'domain']) || | ||
| candidate.protocol !== PANERELAY_FETCH_PERMISSION_PROTOCOL || | ||
| normalizeBrowserFetchDomain(candidate.domain) !== candidate.domain || | ||
| !candidate.browser || | ||
| typeof candidate.browser !== 'object' || | ||
| Array.isArray(candidate.browser)) { | ||
| return false; | ||
| } | ||
| const browser = candidate.browser; | ||
| return (hasExactKeys(browser, ['browserId', 'generation']) && | ||
| isBoundedString(browser.browserId, 1, 256) && | ||
| isBoundedString(browser.generation, 1, 128)); | ||
| } | ||
| export function isBrowserFetchPermissionResult(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| const expected = candidate.granted | ||
| ? ['protocol', 'granted', 'domain', 'scope'] | ||
| : ['protocol', 'granted', 'domain']; | ||
| return (hasExactKeys(candidate, expected) && | ||
| candidate.protocol === PANERELAY_FETCH_PERMISSION_PROTOCOL && | ||
| typeof candidate.granted === 'boolean' && | ||
| normalizeBrowserFetchDomain(candidate.domain) === candidate.domain && | ||
| (candidate.granted ? candidate.scope === 'domain' : candidate.scope === undefined)); | ||
| } | ||
| export function isBrowserFetchPermissionError(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| return (hasExactKeys(candidate, ['protocol', 'error']) && | ||
| candidate.protocol === PANERELAY_FETCH_PERMISSION_PROTOCOL && | ||
| isBoundedString(candidate.error, 1, 2_048)); | ||
| } | ||
| function isLoopbackFetchEndpoint(value) { | ||
| if (!isBoundedString(value, 1, 2_048)) | ||
| return false; | ||
| try { | ||
| const endpoint = new URL(value); | ||
| return (endpoint.protocol === 'http:' && | ||
| ['127.0.0.1', '[::1]'].includes(endpoint.hostname) && | ||
| endpoint.pathname === '/fetch' && | ||
| endpoint.search === '' && | ||
| endpoint.hash === ''); | ||
| } | ||
| catch { | ||
| return false; | ||
| } | ||
| } | ||
| export function isBrowserFetchSessionCreated(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| return (hasExactKeys(candidate, ['protocol', 'sessionId', 'endpoint', 'token', 'expiresAt']) && | ||
| candidate.protocol === PANERELAY_FETCH_SESSION_PROTOCOL && | ||
| isBoundedString(candidate.sessionId, 1, 128) && | ||
| isLoopbackFetchEndpoint(candidate.endpoint) && | ||
| isBoundedString(candidate.token, 16, 256) && | ||
| isIsoDate(candidate.expiresAt)); | ||
| } | ||
| export function isBrowserFetchSessionError(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| return (hasExactKeys(candidate, ['protocol', 'error']) && | ||
| candidate.protocol === PANERELAY_FETCH_SESSION_PROTOCOL && | ||
| isBoundedString(candidate.error, 1, 2_048)); | ||
| } | ||
| function isAdapterDefault(type, value) { | ||
| if (type === 'file') | ||
| return value === undefined; | ||
| return value === undefined || typeof value === type; | ||
| } | ||
| function isFetchAdapterArgument(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| if (!hasAllowedKeys(candidate, [ | ||
| 'name', | ||
| 'description', | ||
| 'type', | ||
| 'required', | ||
| 'positional', | ||
| 'default', | ||
| ]) || | ||
| !isIdentifier(candidate.name) || | ||
| !isBoundedString(candidate.description, 1, 1_024) || | ||
| !['string', 'number', 'boolean', 'file'].includes(candidate.type) || | ||
| (candidate.required !== undefined && typeof candidate.required !== 'boolean') || | ||
| (candidate.positional !== undefined && typeof candidate.positional !== 'boolean') || | ||
| (candidate.required === true && candidate.default !== undefined)) { | ||
| return false; | ||
| } | ||
| return isAdapterDefault(candidate.type, candidate.default); | ||
| } | ||
| function isFetchAdapterCommand(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| if (!hasExactKeys(candidate, ['name', 'description', 'access', 'args', 'output', 'examples']) || | ||
| !isIdentifier(candidate.name) || | ||
| !isBoundedString(candidate.description, 1, 2_048) || | ||
| (candidate.access !== 'read' && candidate.access !== 'write') || | ||
| !Array.isArray(candidate.args) || | ||
| candidate.args.length > 64 || | ||
| !candidate.args.every(isFetchAdapterArgument) || | ||
| new Set(candidate.args.map(argument => argument.name)).size !== candidate.args.length || | ||
| !Array.isArray(candidate.output) || | ||
| candidate.output.length > 128 || | ||
| !candidate.output.every(isFieldName) || | ||
| new Set(candidate.output).size !== candidate.output.length || | ||
| !Array.isArray(candidate.examples) || | ||
| candidate.examples.length > 16 || | ||
| !candidate.examples.every(example => isBoundedString(example, 1, 2_048))) { | ||
| return false; | ||
| } | ||
| const positional = candidate.args.filter(argument => argument.positional); | ||
| const optionalBeforeRequired = positional.some((argument, index) => !argument.required && positional.slice(index + 1).some(later => later.required)); | ||
| return (!optionalBeforeRequired && | ||
| candidate.args.filter(argument => argument.type === 'file').length <= 1); | ||
| } | ||
| export function isFetchAdapterManifest(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| return (hasAllowedKeys(candidate, [ | ||
| 'protocol', | ||
| 'id', | ||
| 'name', | ||
| 'version', | ||
| 'description', | ||
| 'origins', | ||
| 'bindings', | ||
| 'entry', | ||
| 'commands', | ||
| ]) && | ||
| candidate.protocol === PANERELAY_FETCH_ADAPTER_PROTOCOL && | ||
| isAdapterId(candidate.id) && | ||
| isBoundedString(candidate.name, 1, 128) && | ||
| isBoundedString(candidate.version, 1, 64) && | ||
| /^[0-9A-Za-z][0-9A-Za-z.+-]{0,63}$/.test(candidate.version) && | ||
| isBoundedString(candidate.description, 1, 2_048) && | ||
| isOriginPatterns(candidate.origins, true) && | ||
| isBindingPolicies(candidate.bindings, true) && | ||
| isSafeEntry(candidate.entry) && | ||
| Array.isArray(candidate.commands) && | ||
| candidate.commands.length > 0 && | ||
| candidate.commands.length <= 128 && | ||
| candidate.commands.every(isFetchAdapterCommand) && | ||
| new Set(candidate.commands.map(command => command.name)).size === candidate.commands.length); | ||
| } | ||
| function isAbsoluteSourcePath(value) { | ||
| if (!isBoundedString(value, 1, PANERELAY_FETCH_ADAPTER_MAX_SOURCE_PATH_BYTES)) | ||
| return false; | ||
| if (/\p{Cc}/u.test(value)) | ||
| return false; | ||
| return value.startsWith('/') || /^[A-Za-z]:[\\/]/.test(value) || /^\\\\[^\\]/.test(value); | ||
| } | ||
| function isSafeSourceSubdirectory(value) { | ||
| if (!isBoundedString(value, 1, PANERELAY_FETCH_ADAPTER_MAX_SOURCE_PATH_BYTES)) | ||
| return false; | ||
| if (value.startsWith('/') || value.endsWith('/') || value.includes('\\')) | ||
| return false; | ||
| const segments = value.split('/'); | ||
| return (segments.length <= 32 && | ||
| segments.every(segment => segment !== '' && | ||
| segment !== '.' && | ||
| segment !== '..' && | ||
| !/\p{Cc}/u.test(segment) && | ||
| bytes(segment) <= 255)); | ||
| } | ||
| function isGitHubRepository(value) { | ||
| if (!isBoundedString(value, 3, 256)) | ||
| return false; | ||
| const match = /^([0-9A-Za-z](?:[0-9A-Za-z-]{0,37}[0-9A-Za-z])?)\/([0-9A-Za-z._-]{1,100})$/.exec(value); | ||
| return !!match && !match[2]?.endsWith('.git') && match[2] !== '.' && match[2] !== '..'; | ||
| } | ||
| function isGitHubRef(value) { | ||
| return (isBoundedString(value, 1, PANERELAY_FETCH_ADAPTER_MAX_SOURCE_REF_BYTES) && | ||
| /^[0-9A-Za-z][0-9A-Za-z._/-]*$/.test(value) && | ||
| !value.includes('..') && | ||
| !value.includes('//') && | ||
| !value.endsWith('/') && | ||
| !value.endsWith('.') && | ||
| value.split('/').every(segment => segment !== '.' && segment !== '..')); | ||
| } | ||
| export function isFetchAdapterSourceProvenance(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| if (candidate.kind === 'builtin') { | ||
| return (hasExactKeys(candidate, ['kind', 'id', 'version']) && | ||
| isAdapterId(candidate.id) && | ||
| isBoundedString(candidate.version, 1, 64) && | ||
| /^[0-9A-Za-z][0-9A-Za-z.+-]{0,63}$/.test(candidate.version)); | ||
| } | ||
| if (candidate.kind === 'local') { | ||
| return hasExactKeys(candidate, ['kind', 'path']) && isAbsoluteSourcePath(candidate.path); | ||
| } | ||
| if (candidate.kind !== 'github') | ||
| return false; | ||
| return (hasAllowedKeys(candidate, ['kind', 'repository', 'commit', 'ref', 'subdirectory']) && | ||
| Object.hasOwn(candidate, 'repository') && | ||
| Object.hasOwn(candidate, 'commit') && | ||
| isGitHubRepository(candidate.repository) && | ||
| typeof candidate.commit === 'string' && | ||
| /^[0-9a-f]{40}$/.test(candidate.commit) && | ||
| (candidate.ref === undefined || isGitHubRef(candidate.ref)) && | ||
| (candidate.subdirectory === undefined || isSafeSourceSubdirectory(candidate.subdirectory))); | ||
| } | ||
| export function isFetchAdapterRegistration(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| return (hasAllowedKeys(candidate, ['manifest', 'executablePath', 'sha256', 'source']) && | ||
| Object.hasOwn(candidate, 'manifest') && | ||
| Object.hasOwn(candidate, 'executablePath') && | ||
| Object.hasOwn(candidate, 'sha256') && | ||
| isFetchAdapterManifest(candidate.manifest) && | ||
| typeof candidate.executablePath === 'string' && | ||
| candidate.executablePath.length > 0 && | ||
| /^[0-9a-f]{64}$/.test(String(candidate.sha256)) && | ||
| (candidate.source === undefined || isFetchAdapterSourceProvenance(candidate.source))); | ||
| } | ||
| export function isFetchAdapterRegistry(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| return (hasExactKeys(candidate, ['protocol', 'adapters']) && | ||
| candidate.protocol === PANERELAY_FETCH_ADAPTER_REGISTRY_PROTOCOL && | ||
| Array.isArray(candidate.adapters) && | ||
| candidate.adapters.length <= 128 && | ||
| candidate.adapters.every(isFetchAdapterRegistration) && | ||
| new Set(candidate.adapters.map(adapter => adapter.manifest.id)).size === | ||
| candidate.adapters.length); | ||
| } | ||
| function isAdapterArguments(value) { | ||
| return (!!value && | ||
| typeof value === 'object' && | ||
| !Array.isArray(value) && | ||
| Object.entries(value).length <= 64 && | ||
| Object.entries(value).every(([name, argument]) => isIdentifier(name) && ['string', 'number', 'boolean'].includes(typeof argument))); | ||
| } | ||
| function isSafeArtifactBasename(value) { | ||
| return (isBoundedString(value, 1, 255) && value !== '.' && value !== '..' && !/[\\/\p{Cc}]/u.test(value)); | ||
| } | ||
| function isInvocationArtifact(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| if (!hasExactKeys(candidate, ['id', 'basename', 'mediaType', 'size', 'data']) || | ||
| !isBoundedString(candidate.id, 1, 128) || | ||
| !/^[A-Za-z0-9_-]+$/.test(candidate.id) || | ||
| !isSafeArtifactBasename(candidate.basename) || | ||
| !isBoundedString(candidate.mediaType, 3, 256) || | ||
| !/^[A-Za-z0-9!#$&^_.+-]+\/[A-Za-z0-9!#$&^_.+-]+$/.test(candidate.mediaType) || | ||
| typeof candidate.size !== 'number' || | ||
| !Number.isSafeInteger(candidate.size) || | ||
| candidate.size < 0 || | ||
| candidate.size > PANERELAY_FETCH_ADAPTER_MAX_FILE_BYTES || | ||
| typeof candidate.data !== 'string') { | ||
| return false; | ||
| } | ||
| return (decodedBase64Bytes(candidate.data, PANERELAY_FETCH_ADAPTER_MAX_FILE_BYTES) === candidate.size); | ||
| } | ||
| export function isFetchAdapterInvocationError(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| return (hasAllowedKeys(candidate, ['code', 'message', 'retryable']) && | ||
| Object.hasOwn(candidate, 'code') && | ||
| Object.hasOwn(candidate, 'message') && | ||
| SITE_ERROR_CODES.includes(candidate.code) && | ||
| isBoundedString(candidate.message, 1, 4_096) && | ||
| (candidate.retryable === undefined || typeof candidate.retryable === 'boolean')); | ||
| } | ||
| export function isFetchAdapterInvocationRequest(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| if (!hasAllowedKeys(candidate, [ | ||
| 'protocol', | ||
| 'requestId', | ||
| 'operation', | ||
| 'command', | ||
| 'args', | ||
| 'artifacts', | ||
| 'fetch', | ||
| ]) || | ||
| !Object.hasOwn(candidate, 'protocol') || | ||
| !Object.hasOwn(candidate, 'requestId') || | ||
| !Object.hasOwn(candidate, 'operation') || | ||
| !Object.hasOwn(candidate, 'command') || | ||
| !Object.hasOwn(candidate, 'args') || | ||
| !Object.hasOwn(candidate, 'fetch') || | ||
| candidate.protocol !== PANERELAY_FETCH_ADAPTER_PROTOCOL || | ||
| !isBoundedString(candidate.requestId, 1, 128) || | ||
| candidate.operation !== 'execute' || | ||
| !isIdentifier(candidate.command) || | ||
| !isAdapterArguments(candidate.args) || | ||
| !candidate.fetch || | ||
| typeof candidate.fetch !== 'object' || | ||
| Array.isArray(candidate.fetch)) { | ||
| return false; | ||
| } | ||
| if (candidate.artifacts !== undefined && | ||
| (!Array.isArray(candidate.artifacts) || | ||
| candidate.artifacts.length > 1 || | ||
| !candidate.artifacts.every(isInvocationArtifact))) { | ||
| return false; | ||
| } | ||
| const fetchSession = candidate.fetch; | ||
| return (hasExactKeys(fetchSession, ['endpoint', 'token', 'expiresAt']) && | ||
| isBoundedString(fetchSession.endpoint, 1, 2_048) && | ||
| isLoopbackFetchEndpoint(fetchSession.endpoint) && | ||
| isBoundedString(fetchSession.token, 16, 256) && | ||
| isIsoDate(fetchSession.expiresAt)); | ||
| } | ||
| export function isFetchAdapterInvocationResponse(value) { | ||
| if (!value || typeof value !== 'object' || Array.isArray(value)) | ||
| return false; | ||
| const candidate = value; | ||
| const expected = candidate.success | ||
| ? ['protocol', 'requestId', 'operation', 'success', 'result'] | ||
| : ['protocol', 'requestId', 'operation', 'success', 'error']; | ||
| return (hasExactKeys(candidate, expected) && | ||
| candidate.protocol === PANERELAY_FETCH_ADAPTER_PROTOCOL && | ||
| isBoundedString(candidate.requestId, 1, 128) && | ||
| candidate.operation === 'execute' && | ||
| typeof candidate.success === 'boolean' && | ||
| (candidate.success || isFetchAdapterInvocationError(candidate.error))); | ||
| } | ||
| export function serializeFetchAdapterMessage(value) { | ||
| return `${JSON.stringify(value)}\n`; | ||
| } |
+11
-2
| import { PANERELAY_PROTOCOL_VERSION } from './constants.js'; | ||
| import type { CliAdapterMode } from './cli-adapter.js'; | ||
| export * from './constants.js'; | ||
| export * from './browser-fetch.js'; | ||
| export * from './cli-adapter.js'; | ||
@@ -13,2 +14,3 @@ export * from './cdp-bootstrap.js'; | ||
| cdpRelay: boolean; | ||
| browserFetch?: boolean; | ||
| } | ||
@@ -137,2 +139,9 @@ export interface BrowserRegistration { | ||
| } | ||
| export interface CdpControlUpdatedMessage { | ||
| type: 'cdp.control.updated'; | ||
| protocol: typeof PANERELAY_PROTOCOL_VERSION; | ||
| targetId: string; | ||
| engine: AutomationEngineId | null; | ||
| } | ||
| export declare function isCdpControlUpdatedMessage(value: unknown): value is CdpControlUpdatedMessage; | ||
| export interface CdpError { | ||
@@ -434,4 +443,4 @@ code: number; | ||
| } | ||
| export type HostToExtensionMessage = BrowserRegisteredMessage | HostUpdateStatusMessage | CdpTargetRequestMessage | CdpAttachMessage | CdpCommandMessage | CdpDetachMessage | import('./control-activity.js').ControlSessionChangedMessage | import('./control-activity.js').AutomationActivitySnapshotMessage | import('./control-activity.js').AutomationActivityUpdatedMessage | AgentResponseMessage | IntegrationResponseMessage | ConversationEventMessage; | ||
| export type ExtensionToHostMessage = BrowserRegisterMessage | HostUpdateRetryMessage | CdpTargetResultMessage | CdpTargetEventMessage | CdpAttachedMessage | CdpResultMessage | CdpEventMessage | CdpDetachedMessage | AgentRequestMessage | IntegrationRequestMessage; | ||
| export type HostToExtensionMessage = BrowserRegisteredMessage | HostUpdateStatusMessage | CdpTargetRequestMessage | CdpAttachMessage | CdpCommandMessage | CdpControlUpdatedMessage | CdpDetachMessage | import('./control-activity.js').ControlSessionChangedMessage | import('./control-activity.js').AutomationActivitySnapshotMessage | import('./control-activity.js').AutomationActivityUpdatedMessage | AgentResponseMessage | IntegrationResponseMessage | ConversationEventMessage | import('./browser-fetch.js').BrowserFetchCancelMessage | import('./browser-fetch.js').BrowserFetchRequestMessage | import('./browser-fetch.js').BrowserFetchPermissionCancelMessage | import('./browser-fetch.js').BrowserFetchPermissionRequestMessage; | ||
| export type ExtensionToHostMessage = BrowserRegisterMessage | HostUpdateRetryMessage | CdpTargetResultMessage | CdpTargetEventMessage | CdpAttachedMessage | CdpResultMessage | CdpEventMessage | CdpDetachedMessage | AgentRequestMessage | IntegrationRequestMessage | import('./browser-fetch.js').BrowserFetchResultMessage | import('./browser-fetch.js').BrowserFetchPermissionResultMessage; | ||
| export interface BridgeState { | ||
@@ -438,0 +447,0 @@ protocol: typeof PANERELAY_PROTOCOL_VERSION; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAoBvD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AAErC,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAED,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;IACjE,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,EAAE,OAAO,0BAA0B,CAAC;CAC7C;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,6BAA6B,MAAM,CAAC;AAEjD,MAAM,MAAM,eAAe,GACvB,cAAc,GACd,SAAS,GACT,qBAAqB,GACrB,cAAc,GACd,SAAS,GACT,qBAAqB,GACrB,SAAS,CAAC;AAEd,UAAU,oBAAoB;IAC5B,IAAI,EAAE,oBAAoB,CAAC;IAC3B,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,uBAAuB,GAC/B,CAAC,oBAAoB,GAAG;IACtB,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,iBAAiB,CAAC;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,KAAK,CAAC;CACvB,CAAC,GACF,CAAC,oBAAoB,GAAG;IACtB,KAAK,EAAE,QAAQ,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,IAAI,CAAC;IACrB,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,GACF,CAAC,oBAAoB,GAAG;IACtB,KAAK,EAAE,cAAc,CAAC;IACtB,cAAc,EAAE,KAAK,CAAC;IACtB,MAAM,EAAE,2BAA2B,GAAG,YAAY,CAAC;IACnD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC,CAAC;AAEP,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,EAAE,OAAO,0BAA0B,CAAC;CAC7C;AAED,wBAAgB,6BAA6B,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAK3E;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,kBAAkB,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,qBAAqB,GAC7B;IACE,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,aAAa,CAAC;CACvB,GACD;IACE,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEN,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG,aAAa,GAAG,YAAY,CAAC;AAEhF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAEhF;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACnC;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,wBAAwB,CAY5F;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,aAAa,GAAG,OAAO,CAAC;AAEpE,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,mBAAmB,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,uBAAuB,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE;QACb,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;CACH;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,mBAAmB,CAAC;IAClC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,OAAO,0BAA0B,EAAE,sBAAsB,CAAC;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAwB;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC;AAED,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,4BAA4B,QAAmB,CAAC;AAC7D,eAAO,MAAM,kCAAkC,QAAmB,CAAC;AACnE,eAAO,MAAM,6BAA6B,iEAKhC,CAAC;AAEX,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,4BAA4B,GACtC,QAAQ,GAAG,kBAAkB,GAAG,SAAS,GAAG,mBAAmB,GAAG,QAAQ,CAAC;AAE7E,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,SAAS,GAAG,aAAa,GAAG,MAAM,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,4BAA4B,EAAE,CAAC;CAC3C;AAED,MAAM,MAAM,wBAAwB,GAClC,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,YAAY,GAAG,OAAO,CAAC;AAE1E,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,wBAAwB,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;CACzD;AAED,MAAM,MAAM,iBAAiB,GACzB;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,GACD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC;CAChC,GACD;IACE,IAAI,EAAE,mBAAmB,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,mBAAmB,CAAC;CAC9B,GACD;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,GACD;IACE,IAAI,EAAE,kBAAkB,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,oBAAoB,CAAC;CAChC,GACD;IACE,IAAI,EAAE,oBAAoB,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,oBAAoB,CAAC;CAChC,GACD;IACE,IAAI,EAAE,mBAAmB,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB,GACD;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,GAAG,aAAa,GAAG,QAAQ,CAAC;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEN,MAAM,MAAM,YAAY,GACpB;IAAE,MAAM,EAAE,iBAAiB,CAAA;CAAE,GAC7B;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,MAAM,EAAE,mBAAmB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACjE;IACE,MAAM,EAAE,oBAAoB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,wBAAwB,CAAC;CACpC,GACD;IAAE,MAAM,EAAE,qBAAqB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAC7E;IACE,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,sBAAsB,EAAE,CAAC;CACnC,GACD;IACE,MAAM,EAAE,wBAAwB,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,GACD;IACE,MAAM,EAAE,sBAAsB,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,4BAA4B,CAAC;CACxC,CAAC;AAEN,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,uBAAuB,GAAG,eAAe,GAAG,aAAa,CAAC;AAEtE,MAAM,MAAM,kBAAkB,GAC1B;IAAE,MAAM,EAAE,qBAAqB,CAAC;IAAC,WAAW,EAAE,uBAAuB,CAAA;CAAE,GACvE;IAAE,MAAM,EAAE,sBAAsB,CAAA;CAAE,GAClC;IAAE,MAAM,EAAE,sBAAsB,CAAA;CAAE,GAClC;IAAE,MAAM,EAAE,wBAAwB,CAAA;CAAE,GACpC;IAAE,MAAM,EAAE,yBAAyB,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,yBAAyB,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,2BAA2B,CAAA;CAAE,GACvC;IAAE,MAAM,EAAE,qBAAqB,CAAA;CAAE,GACjC;IAAE,MAAM,EAAE,6BAA6B,CAAA;CAAE,GACzC;IAAE,MAAM,EAAE,+BAA+B,CAAA;CAAE,GAC3C;IAAE,MAAM,EAAE,0BAA0B,CAAA;CAAE,CAAC;AAE3C,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,mCAAmC;IAClD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,kCAAkC;IACjD,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,cAAc,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,uBAAuB,CAAC;IACrC,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,+BAA+B;IAC9C,cAAc,EAAE;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B,GAAG,IAAI,CAAC;IACT,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,MAAM,iBAAiB,GACzB,wBAAwB,GACxB,gCAAgC,GAChC,kCAAkC,GAClC,mCAAmC,GACnC,+BAA+B,CAAC;AAEpC,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,kBAAkB,CAAC;CAC7B;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,KAAK,EAAE,iBAAiB,CAAC;CAC1B;AAED,MAAM,MAAM,sBAAsB,GAC9B,wBAAwB,GACxB,uBAAuB,GACvB,uBAAuB,GACvB,gBAAgB,GAChB,iBAAiB,GACjB,wBAAwB,GACxB,gBAAgB,GAChB,OAAO,uBAAuB,EAAE,4BAA4B,GAC5D,OAAO,uBAAuB,EAAE,iCAAiC,GACjE,OAAO,uBAAuB,EAAE,gCAAgC,GAChE,oBAAoB,GACpB,0BAA0B,GAC1B,wBAAwB,GACxB,OAAO,oBAAoB,EAAE,yBAAyB,GACtD,OAAO,oBAAoB,EAAE,0BAA0B,GACvD,OAAO,oBAAoB,EAAE,mCAAmC,GAChE,OAAO,oBAAoB,EAAE,oCAAoC,CAAC;AAEtE,MAAM,MAAM,sBAAsB,GAC9B,sBAAsB,GACtB,sBAAsB,GACtB,sBAAsB,GACtB,qBAAqB,GACrB,kBAAkB,GAClB,gBAAgB,GAChB,eAAe,GACf,kBAAkB,GAClB,mBAAmB,GACnB,yBAAyB,GACzB,OAAO,oBAAoB,EAAE,yBAAyB,GACtD,OAAO,oBAAoB,EAAE,mCAAmC,CAAC;AAErE,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB,EAAE,MAAM,CAAC;IAChC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,KAAK,EAAE,iBAAiB,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,mFAAmF;IACnF,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC;CACf;AAwFD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,sBAAsB,CAyDxF;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,sBAAsB,CA8CxF"} |
+39
-2
| import { PANERELAY_PROTOCOL_VERSION } from './constants.js'; | ||
| import { isAutomationActivitySnapshotMessage, isAutomationActivityUpdatedMessage, isControlSessionChangedMessage, } from './control-activity.js'; | ||
| import { isBrowserFetchCancelMessage, isBrowserFetchPermissionCancelMessage, isBrowserFetchPermissionRequestMessage, isBrowserFetchPermissionResultMessage, isBrowserFetchRequestMessage, isBrowserFetchResultMessage, } from './browser-fetch.js'; | ||
| import { comparePanerelayReleaseVersions, isPanerelayChromiumBuildVersion, isPanerelayReleaseVersion, } from './release-version.js'; | ||
| export * from './constants.js'; | ||
| export * from './browser-fetch.js'; | ||
| export * from './cli-adapter.js'; | ||
@@ -21,2 +23,14 @@ export * from './cdp-bootstrap.js'; | ||
| } | ||
| export function isCdpControlUpdatedMessage(value) { | ||
| if (!value || typeof value !== 'object') | ||
| return false; | ||
| const candidate = value; | ||
| return (hasOnlyKeys(candidate, ['type', 'protocol', 'targetId', 'engine']) && | ||
| candidate.type === 'cdp.control.updated' && | ||
| candidate.protocol === PANERELAY_PROTOCOL_VERSION && | ||
| typeof candidate.targetId === 'string' && | ||
| candidate.targetId.length > 0 && | ||
| candidate.targetId.length <= 256 && | ||
| (candidate.engine === null || isAutomationEngineId(candidate.engine))); | ||
| } | ||
| export const CONVERSATION_MAX_IMAGES = 4; | ||
@@ -137,4 +151,9 @@ export const CONVERSATION_MAX_IMAGE_BYTES = 10 * 1024 * 1024; | ||
| candidate.capabilities !== null && | ||
| hasOnlyKeys(candidate.capabilities, ['cdpRelay']) && | ||
| typeof candidate.capabilities.cdpRelay === 'boolean'))); | ||
| hasOnlyKeys(candidate.capabilities, [ | ||
| 'cdpRelay', | ||
| 'browserFetch', | ||
| ]) && | ||
| typeof candidate.capabilities.cdpRelay === 'boolean' && | ||
| (candidate.capabilities.browserFetch === undefined || | ||
| typeof candidate.capabilities.browserFetch === 'boolean')))); | ||
| } | ||
@@ -144,2 +163,7 @@ if (candidate.type === 'host.update.retry') { | ||
| } | ||
| if (candidate.type === 'fetch.result') | ||
| return isBrowserFetchResultMessage(value); | ||
| if (candidate.type === 'fetch.permission.result') { | ||
| return isBrowserFetchPermissionResultMessage(value); | ||
| } | ||
| return [ | ||
@@ -169,2 +193,5 @@ 'cdp.target.result', | ||
| } | ||
| if (candidate.type === 'cdp.control.updated') { | ||
| return isCdpControlUpdatedMessage(value); | ||
| } | ||
| if (candidate.type === 'host.update.status') { | ||
@@ -178,2 +205,12 @@ return isHostUpdateStatusMessage(candidate); | ||
| } | ||
| if (candidate.type === 'fetch.request') | ||
| return isBrowserFetchRequestMessage(value); | ||
| if (candidate.type === 'fetch.cancel') | ||
| return isBrowserFetchCancelMessage(value); | ||
| if (candidate.type === 'fetch.permission.cancel') { | ||
| return isBrowserFetchPermissionCancelMessage(value); | ||
| } | ||
| if (candidate.type === 'fetch.permission.request') { | ||
| return isBrowserFetchPermissionRequestMessage(value); | ||
| } | ||
| return (candidate.protocol === PANERELAY_PROTOCOL_VERSION && | ||
@@ -180,0 +217,0 @@ typeof candidate.type === 'string' && |
+3
-2
| { | ||
| "name": "@panerelay/protocol", | ||
| "version": "0.8.0", | ||
| "version": "0.9.0", | ||
| "description": "Versioned relay protocol and shared types for Panerelay.", | ||
@@ -40,5 +40,6 @@ "type": "module", | ||
| "build": "tsc -p tsconfig.json", | ||
| "test": "pnpm run build && node ../../scripts/run-compiled-tests.mjs dist", | ||
| "test": "pnpm run build && pnpm run test:compiled", | ||
| "test:compiled": "node ../../scripts/run-compiled-tests.mjs dist", | ||
| "typecheck": "tsc -p tsconfig.json --noEmit" | ||
| } | ||
| } |
Network access
Supply chain riskThis module accesses the network.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
163119
62.05%33
10%3235
61.27%5
Infinity%