UNPKG

@statewalker/webrun-devtools

Version:

DevTools Extension for the StateWalker WebRun framework

161 lines (160 loc) • 14.2 kB
//#region src/api-client-ws/connectToWs.js async function e(e, t) { let n = new WebSocket(e); await new Promise((e) => n.onopen = function() { n.onopen = null, e(); }); let r = new MessageChannel(), i = r.port1, a = r.port2; n.onmessage = ({ data: e }) => i.postMessage(JSON.parse(e)), i.onmessage = ({ data: e }) => n.send(JSON.stringify(e)); let o = i.close.bind(i), s = n.close.bind(n), c = a.close.bind(r.port2), l = () => { c(), o(), s(); }; return i.close = l, r.port2.close = l, t && (t.aborted && l(), t.addEventListener("abort", () => l())), r.port2; } //#endregion //#region src/api-client-ws/loadConnectionInfo.js function t({ port: e, versionUrl: t = `http://127.0.0.1:${e}/json/version`, http: n = console.log, retryPeriod: r = 500, fetchJson: i = async (e) => await (await fetch(e, { mode: "cors" })).json() }) { let a, o, s = new Promise((e, n) => { let s = e; o = n, a = setInterval(async () => { try { let e = await i(t); clearInterval(a), a = 0, s(e); } catch {} }, r); }); return s.finally(() => a && clearInterval(a)), Object.assign(s, { close: o }); } var n = (/* @__PURE__ */ "Accessibility.disable,Accessibility.enable,Animation.disable,Animation.enable,Animation.releaseAnimations,Animation.seekAnimations,Animation.setPaused,Animation.setPlaybackRate,Animation.setTiming,Audits.checkContrast,Audits.disable,Audits.enable,Autofill.disable,Autofill.enable,Autofill.setAddresses,Autofill.trigger,BackgroundService.clearEvents,BackgroundService.setRecording,BackgroundService.startObserving,BackgroundService.stopObserving,Browser.addPrivacySandboxEnrollmentOverride,Browser.cancelDownload,Browser.close,Browser.crash,Browser.crashGpuProcess,Browser.executeBrowserCommand,Browser.grantPermissions,Browser.resetPermissions,Browser.setDockTile,Browser.setDownloadBehavior,Browser.setPermission,Browser.setWindowBounds,CSS.disable,CSS.enable,CSS.forcePseudoState,CSS.setEffectivePropertyValueForNode,CSS.setLocalFontsEnabled,CSS.startRuleUsageTracking,CSS.trackComputedStyleUpdates,CacheStorage.deleteCache,CacheStorage.deleteEntry,Cast.disable,Cast.enable,Cast.setSinkToUse,Cast.startDesktopMirroring,Cast.startTabMirroring,Cast.stopCasting,Console.clearMessages,Console.disable,Console.enable,DOM.disable,DOM.discardSearchResults,DOM.enable,DOM.focus,DOM.hideHighlight,DOM.highlightNode,DOM.highlightRect,DOM.markUndoableState,DOM.redo,DOM.removeAttribute,DOM.removeNode,DOM.requestChildNodes,DOM.scrollIntoViewIfNeeded,DOM.setAttributeValue,DOM.setAttributesAsText,DOM.setFileInputFiles,DOM.setInspectedNode,DOM.setNodeStackTracesEnabled,DOM.setNodeValue,DOM.setOuterHTML,DOM.undo,DOMDebugger.removeDOMBreakpoint,DOMDebugger.removeEventListenerBreakpoint,DOMDebugger.removeInstrumentationBreakpoint,DOMDebugger.removeXHRBreakpoint,DOMDebugger.setBreakOnCSPViolation,DOMDebugger.setDOMBreakpoint,DOMDebugger.setEventListenerBreakpoint,DOMDebugger.setInstrumentationBreakpoint,DOMDebugger.setXHRBreakpoint,DOMSnapshot.disable,DOMSnapshot.enable,DOMStorage.clear,DOMStorage.disable,DOMStorage.enable,DOMStorage.removeDOMStorageItem,DOMStorage.setDOMStorageItem,Database.disable,Database.enable,Debugger.continueToLocation,Debugger.disable,Debugger.pause,Debugger.pauseOnAsyncCall,Debugger.removeBreakpoint,Debugger.resume,Debugger.setAsyncCallStackDepth,Debugger.setBlackboxPatterns,Debugger.setBlackboxedRanges,Debugger.setBreakpointsActive,Debugger.setPauseOnExceptions,Debugger.setReturnValue,Debugger.setSkipAllPauses,Debugger.setVariableValue,Debugger.stepInto,Debugger.stepOut,Debugger.stepOver,DeviceAccess.cancelPrompt,DeviceAccess.disable,DeviceAccess.enable,DeviceAccess.selectPrompt,DeviceOrientation.clearDeviceOrientationOverride,DeviceOrientation.setDeviceOrientationOverride,Emulation.clearDeviceMetricsOverride,Emulation.clearGeolocationOverride,Emulation.clearIdleOverride,Emulation.resetPageScaleFactor,Emulation.setAutoDarkModeOverride,Emulation.setAutomationOverride,Emulation.setCPUThrottlingRate,Emulation.setDefaultBackgroundColorOverride,Emulation.setDeviceMetricsOverride,Emulation.setDisabledImageTypes,Emulation.setDocumentCookieDisabled,Emulation.setEmitTouchEventsForMouse,Emulation.setEmulatedMedia,Emulation.setEmulatedVisionDeficiency,Emulation.setFocusEmulationEnabled,Emulation.setGeolocationOverride,Emulation.setHardwareConcurrencyOverride,Emulation.setIdleOverride,Emulation.setLocaleOverride,Emulation.setNavigatorOverrides,Emulation.setPageScaleFactor,Emulation.setScriptExecutionDisabled,Emulation.setScrollbarsHidden,Emulation.setTimezoneOverride,Emulation.setTouchEmulationEnabled,Emulation.setUserAgentOverride,Emulation.setVisibleSize,EventBreakpoints.removeInstrumentationBreakpoint,EventBreakpoints.setInstrumentationBreakpoint,FedCm.confirmIdpLogin,FedCm.disable,FedCm.dismissDialog,FedCm.enable,FedCm.resetCooldown,FedCm.selectAccount,Fetch.continueRequest,Fetch.continueResponse,Fetch.continueWithAuth,Fetch.disable,Fetch.enable,Fetch.failRequest,Fetch.fulfillRequest,HeadlessExperimental.disable,HeadlessExperimental.enable,HeapProfiler.addInspectedHeapObject,HeapProfiler.collectGarbage,HeapProfiler.disable,HeapProfiler.enable,HeapProfiler.startSampling,HeapProfiler.startTrackingHeapObjects,HeapProfiler.stopTrackingHeapObjects,HeapProfiler.takeHeapSnapshot,IO.close,IndexedDB.clearObjectStore,IndexedDB.deleteDatabase,IndexedDB.deleteObjectStoreEntries,IndexedDB.disable,IndexedDB.enable,Input.cancelDragging,Input.dispatchDragEvent,Input.dispatchKeyEvent,Input.dispatchMouseEvent,Input.dispatchTouchEvent,Input.emulateTouchFromMouseEvent,Input.imeSetComposition,Input.insertText,Input.setIgnoreInputEvents,Input.setInterceptDrags,Input.synthesizePinchGesture,Input.synthesizeScrollGesture,Input.synthesizeTapGesture,Inspector.disable,Inspector.enable,LayerTree.disable,LayerTree.enable,LayerTree.releaseSnapshot,Log.clear,Log.disable,Log.enable,Log.startViolationsReport,Log.stopViolationsReport,Media.disable,Media.enable,Memory.forciblyPurgeJavaScriptMemory,Memory.prepareForLeakDetection,Memory.setPressureNotificationsSuppressed,Memory.simulatePressureNotification,Memory.startSampling,Memory.stopSampling,Network.clearAcceptedEncodingsOverride,Network.clearBrowserCache,Network.clearBrowserCookies,Network.continueInterceptedRequest,Network.deleteCookies,Network.disable,Network.emulateNetworkConditions,Network.enable,Network.enableReportingApi,Network.replayXHR,Network.setAcceptedEncodings,Network.setAttachDebugStack,Network.setBlockedURLs,Network.setBypassServiceWorker,Network.setCacheDisabled,Network.setCookies,Network.setExtraHTTPHeaders,Network.setRequestInterception,Network.setUserAgentOverride,Overlay.disable,Overlay.enable,Overlay.hideHighlight,Overlay.highlightFrame,Overlay.highlightNode,Overlay.highlightQuad,Overlay.highlightRect,Overlay.highlightSourceOrder,Overlay.setInspectMode,Overlay.setPausedInDebuggerMessage,Overlay.setShowAdHighlights,Overlay.setShowContainerQueryOverlays,Overlay.setShowDebugBorders,Overlay.setShowFPSCounter,Overlay.setShowFlexOverlays,Overlay.setShowGridOverlays,Overlay.setShowHinge,Overlay.setShowHitTestBorders,Overlay.setShowIsolatedElements,Overlay.setShowLayoutShiftRegions,Overlay.setShowPaintRects,Overlay.setShowScrollBottleneckRects,Overlay.setShowScrollSnapOverlays,Overlay.setShowViewportSizeOnResize,Overlay.setShowWebVitals,Page.addCompilationCache,Page.bringToFront,Page.clearCompilationCache,Page.clearDeviceMetricsOverride,Page.clearDeviceOrientationOverride,Page.clearGeolocationOverride,Page.close,Page.crash,Page.deleteCookie,Page.disable,Page.enable,Page.generateTestReport,Page.handleJavaScriptDialog,Page.navigateToHistoryEntry,Page.produceCompilationCache,Page.reload,Page.removeScriptToEvaluateOnLoad,Page.removeScriptToEvaluateOnNewDocument,Page.resetNavigationHistory,Page.screencastFrameAck,Page.setAdBlockingEnabled,Page.setBypassCSP,Page.setDeviceMetricsOverride,Page.setDeviceOrientationOverride,Page.setDocumentContent,Page.setDownloadBehavior,Page.setFontFamilies,Page.setFontSizes,Page.setGeolocationOverride,Page.setInterceptFileChooserDialog,Page.setLifecycleEventsEnabled,Page.setPrerenderingAllowed,Page.setRPHRegistrationMode,Page.setSPCTransactionMode,Page.setTouchEmulationEnabled,Page.setWebLifecycleState,Page.startScreencast,Page.stopLoading,Page.stopScreencast,Page.waitForDebugger,Performance.disable,Performance.enable,Performance.setTimeDomain,PerformanceTimeline.enable,Preload.disable,Preload.enable,Profiler.disable,Profiler.enable,Profiler.setSamplingInterval,Profiler.start,Profiler.stopPreciseCoverage,Runtime.addBinding,Runtime.disable,Runtime.discardConsoleEntries,Runtime.enable,Runtime.releaseObject,Runtime.releaseObjectGroup,Runtime.removeBinding,Runtime.runIfWaitingForDebugger,Runtime.setAsyncCallStackDepth,Runtime.setCustomObjectFormatterEnabled,Runtime.setMaxCallStackSizeToCapture,Runtime.terminateExecution,Security.disable,Security.enable,Security.handleCertificateError,Security.setIgnoreCertificateErrors,Security.setOverrideCertificateErrors,ServiceWorker.deliverPushMessage,ServiceWorker.disable,ServiceWorker.dispatchPeriodicSyncEvent,ServiceWorker.dispatchSyncEvent,ServiceWorker.enable,ServiceWorker.inspectWorker,ServiceWorker.setForceUpdateOnPageLoad,ServiceWorker.skipWaiting,ServiceWorker.startWorker,ServiceWorker.stopAllWorkers,ServiceWorker.stopWorker,ServiceWorker.unregister,ServiceWorker.updateRegistration,Storage.clearCookies,Storage.clearDataForOrigin,Storage.clearDataForStorageKey,Storage.clearSharedStorageEntries,Storage.deleteSharedStorageEntry,Storage.deleteStorageBucket,Storage.overrideQuotaForOrigin,Storage.resetSharedStorageBudget,Storage.setAttributionReportingLocalTestingMode,Storage.setAttributionReportingTracking,Storage.setCookies,Storage.setInterestGroupTracking,Storage.setSharedStorageEntry,Storage.setSharedStorageTracking,Storage.setStorageBucketTracking,Storage.trackCacheStorageForOrigin,Storage.trackCacheStorageForStorageKey,Storage.trackIndexedDBForOrigin,Storage.trackIndexedDBForStorageKey,Storage.untrackCacheStorageForOrigin,Storage.untrackCacheStorageForStorageKey,Storage.untrackIndexedDBForOrigin,Storage.untrackIndexedDBForStorageKey,Target.activateTarget,Target.autoAttachRelated,Target.detachFromTarget,Target.disposeBrowserContext,Target.exposeDevToolsProtocol,Target.sendMessageToTarget,Target.setAutoAttach,Target.setDiscoverTargets,Target.setRemoteLocations,Tethering.bind,Tethering.unbind,Tracing.end,Tracing.recordClockSyncMarker,Tracing.start,WebAudio.disable,WebAudio.enable,WebAuthn.addCredential,WebAuthn.clearCredentials,WebAuthn.disable,WebAuthn.enable,WebAuthn.removeCredential,WebAuthn.removeVirtualAuthenticator,WebAuthn.setAutomaticPresenceSimulation,WebAuthn.setResponseOverrideBits,WebAuthn.setUserVerified".split(",")).reduce((e, t) => (e[t] = !0, e), {}); function r(e) { return !n[e]; } (/* @__PURE__ */ "Accessibility.Audits.CSS.CacheStorage.Console.DOM.DOMDebugger.DOMSnapshot.Database.Debugger.Emulation.Fetch.IO.Input.Inspector.Log.Network.Overlay.Page.Performance.Profiler.Runtime.Storage.Target.Tracing.WebAudio.WebAuthn".split(".")).reduce((e, t) => (e[t] = !0, e), {}); function i(e) { return r; } //#endregion //#region src/api-client-ws/newDebuggerApi.js async function a(e, { inBrowser: t = !1, hasResponse: n = i(t) } = {}) { let r = 1; async function a(t, i = {}, ...a) { let o = r++, s = new Promise((r, s) => { try { let c = n(t); c && e.addEventListener("message", function t({ data: n }) { if (o !== n.id) return; e.removeEventListener("message", t); let { result: i, error: a } = n; a ? s(a) : r(i); }), e.postMessage(Object.assign({ id: o, method: t, params: i }, ...a)), c || r(); } catch (e) { s(e); } }); return console.log("[>>>]", { callId: o, method: t, params: i }), s.then((e) => console.log("[<<<]", { callId: o, method: t, params: i, result: e })).catch((e) => console.log("[<<<]", { callId: o, method: t, params: i, error: e })), s; } let o = {}, s = {}, c = [], l = []; async function u(e, t, n = {}) { let { targetId: r } = e, i = o[r]; return await a(t, n, { sessionId: i }); } async function d() { return (await a("Target.getTargets")).targetInfos; } async function f(e) { let { targetId: t } = e, { sessionId: n } = await a("Target.attachToTarget", { targetId: t, flatten: !0 }); o[t] = n, s[n] = t; } async function p(e) { let { targetId: t } = e, n = o[t]; delete o[t], delete s[n], await a("Target.detachFromTarget", { sessionId: n }); } function m(e, t) { let n; return { addListener: (r) => { t.push(r), n || (n = ({ data: e }) => { if (!e.method || e.method === "Target.detachedFromTarget") return; let { method: n, params: r, sessionId: i } = e, a = { targetId: s[i], sessionId: i }; for (let e of t) e(a, n, r); }, e.addEventListener("message", n)); }, removeListener: (r) => { for (let e = t.length - 1; e >= 0; e--) t[e] === r && t.splice(e, 1); !t.length && n && (e.removeEventListener("message", n), n = null); } }; } function h(e, t) { let n; return { addListener: (r) => { t.push(r), n || (n = ({ data: e }) => { let { method: n, params: r } = e; if (n === "Target.detachedFromTarget") for (let e of t) e(r, "canceled_by_user"); }, e.addEventListener("message", n)); }, removeListener: (r) => { for (let e = t.length - 1; e >= 0; e--) t[e] === r && t.splice(e, 1); !t.length && n && (e.removeEventListener("message", n), n = null); } }; } return { sendCommand: u, attach: f, detach: p, getTargets: d, onEvent: m(e, c), onDetach: h(e, l) }; } //#endregion //#region src/api-client-ws/listenConnectionInfo.js async function* o(e) { let n; try { for (;;) { let r = t(e); n = r.close, yield await r; } } finally { n && n(); } } //#endregion //#region src/api-client-ws/index.js async function s({ wsUrl: n, ...r }) { n ||= (await t(r)).webSocketDebuggerUrl; let i = new AbortController(); return { debugger: await a(await e(n, i.signal)), close: () => i.abort() }; } //#endregion export { e as connectToWs, s as default, o as listenConnectionInfo, t as loadConnectionInfo, a as newDebuggerApi };