@vforsh/argus-watcher 0.1.11 → 0.1.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/cdp/mouse.d.ts +19 -3
- package/dist/cdp/mouse.d.ts.map +1 -1
- package/dist/cdp/mouse.js +57 -9
- package/dist/cdp/mouse.js.map +1 -1
- package/dist/cdp/pageIndicator.d.ts +5 -0
- package/dist/cdp/pageIndicator.d.ts.map +1 -1
- package/dist/cdp/pageIndicator.js +22 -254
- package/dist/cdp/pageIndicator.js.map +1 -1
- package/dist/cdp/pageIndicatorScript.d.ts +20 -0
- package/dist/cdp/pageIndicatorScript.d.ts.map +1 -0
- package/dist/cdp/pageIndicatorScript.js +405 -0
- package/dist/cdp/pageIndicatorScript.js.map +1 -0
- package/dist/cdp/recording.d.ts +15 -0
- package/dist/cdp/recording.d.ts.map +1 -0
- package/dist/cdp/recording.js +389 -0
- package/dist/cdp/recording.js.map +1 -0
- package/dist/cdp/screenshot.d.ts.map +1 -1
- package/dist/cdp/screenshot.js +2 -133
- package/dist/cdp/screenshot.js.map +1 -1
- package/dist/cdp/visualCapture.d.ts +38 -0
- package/dist/cdp/visualCapture.d.ts.map +1 -0
- package/dist/cdp/visualCapture.js +156 -0
- package/dist/cdp/visualCapture.js.map +1 -0
- package/dist/events.d.ts +1 -1
- package/dist/events.d.ts.map +1 -1
- package/dist/http/routes/authCookies.d.ts +5 -10
- package/dist/http/routes/authCookies.d.ts.map +1 -1
- package/dist/http/routes/authCookies.js +17 -30
- package/dist/http/routes/authCookies.js.map +1 -1
- package/dist/http/routes/defineDomTargetRoute.d.ts +14 -5
- package/dist/http/routes/defineDomTargetRoute.d.ts.map +1 -1
- package/dist/http/routes/defineDomTargetRoute.js +27 -33
- package/dist/http/routes/defineDomTargetRoute.js.map +1 -1
- package/dist/http/routes/defineRoute.d.ts +9 -0
- package/dist/http/routes/defineRoute.d.ts.map +1 -1
- package/dist/http/routes/defineRoute.js +9 -9
- package/dist/http/routes/defineRoute.js.map +1 -1
- package/dist/http/routes/domSelectorRoute.d.ts +4 -11
- package/dist/http/routes/domSelectorRoute.d.ts.map +1 -1
- package/dist/http/routes/domSelectorRoute.js +9 -17
- package/dist/http/routes/domSelectorRoute.js.map +1 -1
- package/dist/http/routes/getAuthCookies.d.ts +1 -2
- package/dist/http/routes/getAuthCookies.d.ts.map +1 -1
- package/dist/http/routes/getAuthCookies.js +14 -14
- package/dist/http/routes/getAuthCookies.js.map +1 -1
- package/dist/http/routes/getAuthState.d.ts +1 -2
- package/dist/http/routes/getAuthState.d.ts.map +1 -1
- package/dist/http/routes/getAuthState.js +13 -13
- package/dist/http/routes/getAuthState.js.map +1 -1
- package/dist/http/routes/getDialog.d.ts +1 -2
- package/dist/http/routes/getDialog.d.ts.map +1 -1
- package/dist/http/routes/getDialog.js +7 -10
- package/dist/http/routes/getDialog.js.map +1 -1
- package/dist/http/routes/getEmulation.d.ts +1 -2
- package/dist/http/routes/getEmulation.d.ts.map +1 -1
- package/dist/http/routes/getEmulation.js +7 -7
- package/dist/http/routes/getEmulation.js.map +1 -1
- package/dist/http/routes/getExtensionDiagnostics.d.ts +2 -0
- package/dist/http/routes/getExtensionDiagnostics.d.ts.map +1 -0
- package/dist/http/routes/getExtensionDiagnostics.js +16 -0
- package/dist/http/routes/getExtensionDiagnostics.js.map +1 -0
- package/dist/http/routes/getExtensionTabs.d.ts +1 -2
- package/dist/http/routes/getExtensionTabs.d.ts.map +1 -1
- package/dist/http/routes/getExtensionTabs.js +18 -16
- package/dist/http/routes/getExtensionTabs.js.map +1 -1
- package/dist/http/routes/getLogs.d.ts +1 -2
- package/dist/http/routes/getLogs.d.ts.map +1 -1
- package/dist/http/routes/getLogs.js +31 -26
- package/dist/http/routes/getLogs.js.map +1 -1
- package/dist/http/routes/getNet.d.ts +1 -2
- package/dist/http/routes/getNet.d.ts.map +1 -1
- package/dist/http/routes/getNet.js +19 -21
- package/dist/http/routes/getNet.js.map +1 -1
- package/dist/http/routes/getNetRequest.d.ts +1 -2
- package/dist/http/routes/getNetRequest.d.ts.map +1 -1
- package/dist/http/routes/getNetRequest.js +22 -20
- package/dist/http/routes/getNetRequest.js.map +1 -1
- package/dist/http/routes/getNetRequestBody.d.ts +1 -2
- package/dist/http/routes/getNetRequestBody.d.ts.map +1 -1
- package/dist/http/routes/getNetRequestBody.js +53 -51
- package/dist/http/routes/getNetRequestBody.js.map +1 -1
- package/dist/http/routes/getNetRequests.d.ts +1 -2
- package/dist/http/routes/getNetRequests.d.ts.map +1 -1
- package/dist/http/routes/getNetRequests.js +19 -21
- package/dist/http/routes/getNetRequests.js.map +1 -1
- package/dist/http/routes/getNetSse.d.ts +1 -2
- package/dist/http/routes/getNetSse.d.ts.map +1 -1
- package/dist/http/routes/getNetSse.js +19 -21
- package/dist/http/routes/getNetSse.js.map +1 -1
- package/dist/http/routes/getNetTail.d.ts +1 -2
- package/dist/http/routes/getNetTail.d.ts.map +1 -1
- package/dist/http/routes/getNetTail.js +21 -30
- package/dist/http/routes/getNetTail.js.map +1 -1
- package/dist/http/routes/getNetWebSocketConnection.d.ts +1 -2
- package/dist/http/routes/getNetWebSocketConnection.d.ts.map +1 -1
- package/dist/http/routes/getNetWebSocketConnection.js +22 -17
- package/dist/http/routes/getNetWebSocketConnection.js.map +1 -1
- package/dist/http/routes/getNetWebSockets.d.ts +1 -2
- package/dist/http/routes/getNetWebSockets.d.ts.map +1 -1
- package/dist/http/routes/getNetWebSockets.js +19 -21
- package/dist/http/routes/getNetWebSockets.js.map +1 -1
- package/dist/http/routes/getStatus.d.ts +1 -2
- package/dist/http/routes/getStatus.d.ts.map +1 -1
- package/dist/http/routes/getStatus.js +6 -4
- package/dist/http/routes/getStatus.js.map +1 -1
- package/dist/http/routes/getTail.d.ts +1 -2
- package/dist/http/routes/getTail.d.ts.map +1 -1
- package/dist/http/routes/getTail.js +31 -26
- package/dist/http/routes/getTail.js.map +1 -1
- package/dist/http/routes/getTargets.d.ts +1 -2
- package/dist/http/routes/getTargets.d.ts.map +1 -1
- package/dist/http/routes/getTargets.js +14 -13
- package/dist/http/routes/getTargets.js.map +1 -1
- package/dist/http/routes/getThrottle.d.ts +1 -2
- package/dist/http/routes/getThrottle.d.ts.map +1 -1
- package/dist/http/routes/getThrottle.js +7 -7
- package/dist/http/routes/getThrottle.js.map +1 -1
- package/dist/http/routes/index.d.ts +5 -1
- package/dist/http/routes/index.d.ts.map +1 -1
- package/dist/http/routes/index.js +121 -114
- package/dist/http/routes/index.js.map +1 -1
- package/dist/http/routes/netFilters.d.ts +10 -0
- package/dist/http/routes/netFilters.d.ts.map +1 -1
- package/dist/http/routes/netFilters.js +23 -1
- package/dist/http/routes/netFilters.js.map +1 -1
- package/dist/http/routes/netMock.d.ts +3 -0
- package/dist/http/routes/netMock.d.ts.map +1 -0
- package/dist/http/routes/netMock.js +141 -0
- package/dist/http/routes/netMock.js.map +1 -0
- package/dist/http/routes/postAttach.d.ts +1 -2
- package/dist/http/routes/postAttach.d.ts.map +1 -1
- package/dist/http/routes/postAttach.js +23 -22
- package/dist/http/routes/postAttach.js.map +1 -1
- package/dist/http/routes/postAuthStateLoad.d.ts +1 -2
- package/dist/http/routes/postAuthStateLoad.d.ts.map +1 -1
- package/dist/http/routes/postAuthStateLoad.js +29 -34
- package/dist/http/routes/postAuthStateLoad.js.map +1 -1
- package/dist/http/routes/postCodeEdit.d.ts +1 -2
- package/dist/http/routes/postCodeEdit.d.ts.map +1 -1
- package/dist/http/routes/postCodeEdit.js +20 -25
- package/dist/http/routes/postCodeEdit.js.map +1 -1
- package/dist/http/routes/postCodeGrep.d.ts +1 -2
- package/dist/http/routes/postCodeGrep.d.ts.map +1 -1
- package/dist/http/routes/postCodeGrep.js +20 -25
- package/dist/http/routes/postCodeGrep.js.map +1 -1
- package/dist/http/routes/postCodeList.d.ts +1 -2
- package/dist/http/routes/postCodeList.d.ts.map +1 -1
- package/dist/http/routes/postCodeList.js +14 -19
- package/dist/http/routes/postCodeList.js.map +1 -1
- package/dist/http/routes/postCodeRead.d.ts +1 -2
- package/dist/http/routes/postCodeRead.d.ts.map +1 -1
- package/dist/http/routes/postCodeRead.js +24 -29
- package/dist/http/routes/postCodeRead.js.map +1 -1
- package/dist/http/routes/postDetach.d.ts +1 -2
- package/dist/http/routes/postDetach.d.ts.map +1 -1
- package/dist/http/routes/postDetach.js +23 -22
- package/dist/http/routes/postDetach.js.map +1 -1
- package/dist/http/routes/postDialog.d.ts +1 -2
- package/dist/http/routes/postDialog.d.ts.map +1 -1
- package/dist/http/routes/postDialog.js +30 -29
- package/dist/http/routes/postDialog.js.map +1 -1
- package/dist/http/routes/postDomAdd.d.ts +1 -2
- package/dist/http/routes/postDomAdd.d.ts.map +1 -1
- package/dist/http/routes/postDomAdd.js +44 -48
- package/dist/http/routes/postDomAdd.js.map +1 -1
- package/dist/http/routes/postDomClick.d.ts +0 -1
- package/dist/http/routes/postDomClick.d.ts.map +1 -1
- package/dist/http/routes/postDomClick.js +12 -21
- package/dist/http/routes/postDomClick.js.map +1 -1
- package/dist/http/routes/postDomDrag.d.ts +2 -0
- package/dist/http/routes/postDomDrag.d.ts.map +1 -0
- package/dist/http/routes/postDomDrag.js +54 -0
- package/dist/http/routes/postDomDrag.js.map +1 -0
- package/dist/http/routes/postDomFill.d.ts +1 -2
- package/dist/http/routes/postDomFill.d.ts.map +1 -1
- package/dist/http/routes/postDomFill.js +17 -49
- package/dist/http/routes/postDomFill.js.map +1 -1
- package/dist/http/routes/postDomInfo.d.ts +1 -2
- package/dist/http/routes/postDomInfo.d.ts.map +1 -1
- package/dist/http/routes/postDomInfo.js +14 -20
- package/dist/http/routes/postDomInfo.js.map +1 -1
- package/dist/http/routes/postDomKeydown.d.ts +1 -2
- package/dist/http/routes/postDomKeydown.d.ts.map +1 -1
- package/dist/http/routes/postDomKeydown.js +26 -30
- package/dist/http/routes/postDomKeydown.js.map +1 -1
- package/dist/http/routes/postDomModify.d.ts +1 -2
- package/dist/http/routes/postDomModify.d.ts.map +1 -1
- package/dist/http/routes/postDomModify.js +30 -41
- package/dist/http/routes/postDomModify.js.map +1 -1
- package/dist/http/routes/postDomRemove.d.ts +1 -2
- package/dist/http/routes/postDomRemove.d.ts.map +1 -1
- package/dist/http/routes/postDomRemove.js +13 -18
- package/dist/http/routes/postDomRemove.js.map +1 -1
- package/dist/http/routes/postDomScroll.d.ts +1 -2
- package/dist/http/routes/postDomScroll.d.ts.map +1 -1
- package/dist/http/routes/postDomScroll.js +37 -42
- package/dist/http/routes/postDomScroll.js.map +1 -1
- package/dist/http/routes/postDomScrollTo.d.ts +1 -2
- package/dist/http/routes/postDomScrollTo.d.ts.map +1 -1
- package/dist/http/routes/postDomScrollTo.js +42 -48
- package/dist/http/routes/postDomScrollTo.js.map +1 -1
- package/dist/http/routes/postDomSetFile.d.ts +1 -2
- package/dist/http/routes/postDomSetFile.d.ts.map +1 -1
- package/dist/http/routes/postDomSetFile.js +29 -32
- package/dist/http/routes/postDomSetFile.js.map +1 -1
- package/dist/http/routes/postDomTree.d.ts +1 -2
- package/dist/http/routes/postDomTree.d.ts.map +1 -1
- package/dist/http/routes/postDomTree.js +13 -17
- package/dist/http/routes/postDomTree.js.map +1 -1
- package/dist/http/routes/postEmulation.d.ts +1 -2
- package/dist/http/routes/postEmulation.d.ts.map +1 -1
- package/dist/http/routes/postEmulation.js +29 -39
- package/dist/http/routes/postEmulation.js.map +1 -1
- package/dist/http/routes/postEval.d.ts +1 -2
- package/dist/http/routes/postEval.d.ts.map +1 -1
- package/dist/http/routes/postEval.js +22 -26
- package/dist/http/routes/postEval.js.map +1 -1
- package/dist/http/routes/postLocate.d.ts +2 -4
- package/dist/http/routes/postLocate.d.ts.map +1 -1
- package/dist/http/routes/postLocate.js +40 -60
- package/dist/http/routes/postLocate.js.map +1 -1
- package/dist/http/routes/postNetClear.d.ts +1 -2
- package/dist/http/routes/postNetClear.d.ts.map +1 -1
- package/dist/http/routes/postNetClear.js +14 -13
- package/dist/http/routes/postNetClear.js.map +1 -1
- package/dist/http/routes/postRecord.d.ts +3 -0
- package/dist/http/routes/postRecord.d.ts.map +1 -0
- package/dist/http/routes/postRecord.js +88 -0
- package/dist/http/routes/postRecord.js.map +1 -0
- package/dist/http/routes/postReload.d.ts +1 -2
- package/dist/http/routes/postReload.d.ts.map +1 -1
- package/dist/http/routes/postReload.js +10 -16
- package/dist/http/routes/postReload.js.map +1 -1
- package/dist/http/routes/postScreenshot.d.ts +1 -2
- package/dist/http/routes/postScreenshot.d.ts.map +1 -1
- package/dist/http/routes/postScreenshot.js +11 -22
- package/dist/http/routes/postScreenshot.js.map +1 -1
- package/dist/http/routes/postShutdown.d.ts +1 -2
- package/dist/http/routes/postShutdown.d.ts.map +1 -1
- package/dist/http/routes/postShutdown.js +15 -11
- package/dist/http/routes/postShutdown.js.map +1 -1
- package/dist/http/routes/postSnapshot.d.ts +1 -2
- package/dist/http/routes/postSnapshot.d.ts.map +1 -1
- package/dist/http/routes/postSnapshot.js +21 -26
- package/dist/http/routes/postSnapshot.js.map +1 -1
- package/dist/http/routes/postThrottle.d.ts +1 -2
- package/dist/http/routes/postThrottle.d.ts.map +1 -1
- package/dist/http/routes/postThrottle.js +26 -35
- package/dist/http/routes/postThrottle.js.map +1 -1
- package/dist/http/routes/postTraceStart.d.ts +1 -2
- package/dist/http/routes/postTraceStart.d.ts.map +1 -1
- package/dist/http/routes/postTraceStart.js +8 -16
- package/dist/http/routes/postTraceStart.js.map +1 -1
- package/dist/http/routes/postTraceStop.d.ts +1 -2
- package/dist/http/routes/postTraceStop.d.ts.map +1 -1
- package/dist/http/routes/postTraceStop.js +8 -16
- package/dist/http/routes/postTraceStop.js.map +1 -1
- package/dist/http/routes/postVisibility.d.ts +1 -2
- package/dist/http/routes/postVisibility.d.ts.map +1 -1
- package/dist/http/routes/postVisibility.js +21 -27
- package/dist/http/routes/postVisibility.js.map +1 -1
- package/dist/http/routes/storage.d.ts +2 -4
- package/dist/http/routes/storage.d.ts.map +1 -1
- package/dist/http/routes/storage.js +13 -25
- package/dist/http/routes/storage.js.map +1 -1
- package/dist/http/server.d.ts +6 -1
- package/dist/http/server.d.ts.map +1 -1
- package/dist/http/server.js.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/native-messaging/control-session-manager.d.ts +36 -0
- package/dist/native-messaging/control-session-manager.d.ts.map +1 -0
- package/dist/native-messaging/control-session-manager.js +96 -0
- package/dist/native-messaging/control-session-manager.js.map +1 -0
- package/dist/native-messaging/messaging.d.ts +4 -4
- package/dist/native-messaging/messaging.d.ts.map +1 -1
- package/dist/native-messaging/messaging.js.map +1 -1
- package/dist/native-messaging/session-manager.d.ts +2 -15
- package/dist/native-messaging/session-manager.d.ts.map +1 -1
- package/dist/native-messaging/session-manager.js +0 -34
- package/dist/native-messaging/session-manager.js.map +1 -1
- package/dist/native-messaging/types.d.ts +78 -2
- package/dist/native-messaging/types.d.ts.map +1 -1
- package/dist/net/NetMockController.d.ts +26 -0
- package/dist/net/NetMockController.d.ts.map +1 -0
- package/dist/net/NetMockController.js +264 -0
- package/dist/net/NetMockController.js.map +1 -0
- package/dist/runtime/watcherServices.d.ts +3 -0
- package/dist/runtime/watcherServices.d.ts.map +1 -1
- package/dist/runtime/watcherServices.js +14 -1
- package/dist/runtime/watcherServices.js.map +1 -1
- package/dist/runtime/watcherSetup.d.ts +3 -0
- package/dist/runtime/watcherSetup.d.ts.map +1 -1
- package/dist/runtime/watcherSetup.js +4 -0
- package/dist/runtime/watcherSetup.js.map +1 -1
- package/dist/scripts/install-host.js +58 -54
- package/dist/scripts/install-host.js.map +1 -1
- package/dist/sources/extension-control-source.d.ts +9 -0
- package/dist/sources/extension-control-source.d.ts.map +1 -0
- package/dist/sources/extension-control-source.js +109 -0
- package/dist/sources/extension-control-source.js.map +1 -0
- package/dist/sources/extension-frame-state.d.ts +5 -0
- package/dist/sources/extension-frame-state.d.ts.map +1 -1
- package/dist/sources/extension-frame-state.js +7 -0
- package/dist/sources/extension-frame-state.js.map +1 -1
- package/dist/sources/extension-source.d.ts +3 -1
- package/dist/sources/extension-source.d.ts.map +1 -1
- package/dist/sources/extension-source.js +50 -137
- package/dist/sources/extension-source.js.map +1 -1
- package/dist/sources/extension-target-recovery.d.ts +32 -0
- package/dist/sources/extension-target-recovery.d.ts.map +1 -0
- package/dist/sources/extension-target-recovery.js +114 -0
- package/dist/sources/extension-target-recovery.js.map +1 -0
- package/dist/sources/types.d.ts +8 -3
- package/dist/sources/types.d.ts.map +1 -1
- package/dist/startWatcherRuntime.d.ts.map +1 -1
- package/dist/startWatcherRuntime.js +12 -2
- package/dist/startWatcherRuntime.js.map +1 -1
- package/package.json +1 -1
- package/dist/http/routes/postStorageLocal.d.ts +0 -2
- package/dist/http/routes/postStorageLocal.d.ts.map +0 -1
- package/dist/http/routes/postStorageLocal.js +0 -3
- package/dist/http/routes/postStorageLocal.js.map +0 -1
- package/dist/http/routes/postStorageSession.d.ts +0 -2
- package/dist/http/routes/postStorageSession.d.ts.map +0 -1
- package/dist/http/routes/postStorageSession.js +0 -3
- package/dist/http/routes/postStorageSession.js.map +0 -1
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import { createNativeMessaging } from '../native-messaging/messaging.js';
|
|
2
2
|
import { SessionManager } from '../native-messaging/session-manager.js';
|
|
3
|
-
import { buildFrameTargets, buildPageTarget, createEmptyFrameState, createNotAttachedError, isSelectedTargetReady, parseExtensionTargetId,
|
|
3
|
+
import { buildFrameTargetContext, buildFrameTargets, buildPageTarget, createEmptyFrameState, createNotAttachedError, isSelectedTargetReady, parseExtensionTargetId, } from './extension-frame-state.js';
|
|
4
4
|
import { createDelegatingSession } from './extension-delegating-session.js';
|
|
5
5
|
import { registerExtensionSessionEventHandlers } from './extension-session-events.js';
|
|
6
|
+
import { createControlExtensionSource } from './extension-control-source.js';
|
|
7
|
+
import { createTargetRecovery } from './extension-target-recovery.js';
|
|
6
8
|
import { getSelectedExtensionTarget, reconcileExtensionTargetSelection, refreshExtensionFrameTitle, refreshExtensionFrameTree, removeExtensionFrame, seedExtensionFrameState, setRequestedTargetSelection, } from './extension-frame-runtime.js';
|
|
7
|
-
const TARGET_RECOVERY_INTERVAL_MS = 500;
|
|
8
|
-
const TARGET_RECOVERY_TIMEOUT_MS = 30_000;
|
|
9
|
-
const FRAME_COMMAND_READY_TIMEOUT_MS = 3_000;
|
|
10
|
-
const FRAME_COMMAND_READY_POLL_MS = 100;
|
|
11
9
|
/**
|
|
12
10
|
* Create an extension source that connects to Chrome via Native Messaging.
|
|
13
11
|
* Returns a handle that can be used to control the source and access CDP session.
|
|
14
12
|
*/
|
|
15
13
|
export const createExtensionSource = (options) => {
|
|
14
|
+
if (options.role === 'control') {
|
|
15
|
+
return createControlExtensionSource(options);
|
|
16
|
+
}
|
|
16
17
|
const { events, ignoreMatcher, stripUrlPrefixes, watcherId, watcherHost, watcherPort } = options;
|
|
17
18
|
const messaging = createNativeMessaging();
|
|
18
19
|
const hostInfo = {
|
|
@@ -24,7 +25,6 @@ export const createExtensionSource = (options) => {
|
|
|
24
25
|
let currentSession = null;
|
|
25
26
|
let stopping = false;
|
|
26
27
|
const frameStateByTabId = new Map();
|
|
27
|
-
const targetRecoveryByTabId = new Map();
|
|
28
28
|
const delegatingSessions = new Set();
|
|
29
29
|
const getCurrentExtensionSession = () => {
|
|
30
30
|
if (!currentSession) {
|
|
@@ -32,6 +32,12 @@ export const createExtensionSource = (options) => {
|
|
|
32
32
|
}
|
|
33
33
|
return currentSession;
|
|
34
34
|
};
|
|
35
|
+
const targetRecovery = createTargetRecovery({
|
|
36
|
+
getCurrentSession: () => currentSession,
|
|
37
|
+
getOrCreateFrameState,
|
|
38
|
+
refreshFrameTree,
|
|
39
|
+
reconcileTargetSelection,
|
|
40
|
+
});
|
|
35
41
|
const sessionManager = new SessionManager(messaging, {
|
|
36
42
|
onAttach: (session) => {
|
|
37
43
|
console.error(`[ExtensionSource] Tab attached: ${session.tabId} - ${session.url}`);
|
|
@@ -46,12 +52,11 @@ export const createExtensionSource = (options) => {
|
|
|
46
52
|
currentSession = null;
|
|
47
53
|
}
|
|
48
54
|
rebindDelegatingSessions();
|
|
49
|
-
|
|
55
|
+
targetRecovery.clear(tabId);
|
|
50
56
|
frameStateByTabId.delete(tabId);
|
|
51
57
|
emitStatus(null, reason);
|
|
52
58
|
events.onDetach?.(reason);
|
|
53
59
|
},
|
|
54
|
-
onTabsUpdated: () => { },
|
|
55
60
|
onTargetSelected: (tabId, frameId) => {
|
|
56
61
|
const session = currentSession;
|
|
57
62
|
if (!session || session.tabId !== tabId) {
|
|
@@ -71,7 +76,7 @@ export const createExtensionSource = (options) => {
|
|
|
71
76
|
if (targetContext.kind !== 'frame') {
|
|
72
77
|
return undefined;
|
|
73
78
|
}
|
|
74
|
-
const readyTargetContext = await waitForSelectedFrameCommandTarget();
|
|
79
|
+
const readyTargetContext = await targetRecovery.waitForSelectedFrameCommandTarget();
|
|
75
80
|
if (method !== 'Runtime.evaluate' || params?.contextId != null || readyTargetContext.sessionId) {
|
|
76
81
|
return { targetContext: readyTargetContext };
|
|
77
82
|
}
|
|
@@ -93,6 +98,7 @@ export const createExtensionSource = (options) => {
|
|
|
93
98
|
});
|
|
94
99
|
delegatingSessions.add(pageController);
|
|
95
100
|
messaging.start();
|
|
101
|
+
messaging.send({ type: 'host_ready' });
|
|
96
102
|
sendHostInfo();
|
|
97
103
|
messaging.onDisconnect(() => {
|
|
98
104
|
console.error('[ExtensionSource] Extension disconnected');
|
|
@@ -103,7 +109,7 @@ export const createExtensionSource = (options) => {
|
|
|
103
109
|
});
|
|
104
110
|
const stop = async () => {
|
|
105
111
|
stopping = true;
|
|
106
|
-
|
|
112
|
+
targetRecovery.clearAll();
|
|
107
113
|
disposeDelegatingSessions();
|
|
108
114
|
messaging.stop();
|
|
109
115
|
};
|
|
@@ -123,15 +129,34 @@ export const createExtensionSource = (options) => {
|
|
|
123
129
|
}
|
|
124
130
|
return targets;
|
|
125
131
|
};
|
|
126
|
-
const attachTarget = (targetId) => {
|
|
132
|
+
const attachTarget = async (targetId) => {
|
|
127
133
|
const target = parseExtensionTargetId(targetId);
|
|
128
|
-
const session =
|
|
134
|
+
const session = currentSession;
|
|
135
|
+
if (!session) {
|
|
136
|
+
if (target.frameId) {
|
|
137
|
+
throw new Error(`Cannot attach iframe ${target.frameId} before tab ${target.tabId} is attached`);
|
|
138
|
+
}
|
|
139
|
+
throw new Error(`Watcher ${hostInfo.watcherId} is a tab watcher. Use extension-control to attach tab ${target.tabId}.`);
|
|
140
|
+
}
|
|
141
|
+
if (session.tabId !== target.tabId) {
|
|
142
|
+
throw new Error(`Watcher ${hostInfo.watcherId} is pinned to tab ${session.tabId}, not tab ${target.tabId}`);
|
|
143
|
+
}
|
|
129
144
|
requestTargetSelection(session, target.frameId);
|
|
145
|
+
return { ok: true, tab: sessionToBrowserTab(session), watcherId: hostInfo.watcherId };
|
|
130
146
|
};
|
|
131
|
-
const detachTarget = (targetId) => {
|
|
147
|
+
const detachTarget = async (targetId) => {
|
|
132
148
|
const target = parseExtensionTargetId(targetId);
|
|
133
|
-
const session =
|
|
134
|
-
|
|
149
|
+
const session = currentSession;
|
|
150
|
+
if (!session || session.tabId === target.tabId) {
|
|
151
|
+
sessionManager.detachTab(target.tabId);
|
|
152
|
+
return {
|
|
153
|
+
ok: true,
|
|
154
|
+
tab: session
|
|
155
|
+
? { ...sessionToBrowserTab(session), attached: false, watcherId: undefined }
|
|
156
|
+
: { tabId: target.tabId, url: '', title: '', attached: false },
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
throw new Error(`Watcher ${hostInfo.watcherId} is pinned to tab ${session.tabId}, not tab ${target.tabId}`);
|
|
135
160
|
};
|
|
136
161
|
return {
|
|
137
162
|
session: proxySession,
|
|
@@ -175,9 +200,6 @@ export const createExtensionSource = (options) => {
|
|
|
175
200
|
},
|
|
176
201
|
stop,
|
|
177
202
|
listTargets,
|
|
178
|
-
listTabs: async (filter) => {
|
|
179
|
-
return await sessionManager.listTabs(filter);
|
|
180
|
-
},
|
|
181
203
|
attachTarget,
|
|
182
204
|
detachTarget,
|
|
183
205
|
};
|
|
@@ -190,16 +212,6 @@ export const createExtensionSource = (options) => {
|
|
|
190
212
|
pid: hostInfo.watcherPid,
|
|
191
213
|
});
|
|
192
214
|
}
|
|
193
|
-
function requireOwnedSession(tabId) {
|
|
194
|
-
const session = currentSession;
|
|
195
|
-
if (!session) {
|
|
196
|
-
throw createNotAttachedError();
|
|
197
|
-
}
|
|
198
|
-
if (session.tabId !== tabId) {
|
|
199
|
-
throw new Error(`Watcher ${hostInfo.watcherId} is pinned to tab ${session.tabId}, not tab ${tabId}`);
|
|
200
|
-
}
|
|
201
|
-
return session;
|
|
202
|
-
}
|
|
203
215
|
function rebindDelegatingSessions() {
|
|
204
216
|
for (const controller of delegatingSessions) {
|
|
205
217
|
controller.rebind();
|
|
@@ -211,11 +223,6 @@ export const createExtensionSource = (options) => {
|
|
|
211
223
|
}
|
|
212
224
|
delegatingSessions.clear();
|
|
213
225
|
}
|
|
214
|
-
function clearAllTargetRecovery() {
|
|
215
|
-
for (const tabId of targetRecoveryByTabId.keys()) {
|
|
216
|
-
clearTargetRecovery(tabId);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
226
|
async function bootstrapAttachedSession(session) {
|
|
220
227
|
try {
|
|
221
228
|
registerExtensionSessionEventHandlers({
|
|
@@ -314,6 +321,7 @@ export const createExtensionSource = (options) => {
|
|
|
314
321
|
if (state.activeAttachedAt == null) {
|
|
315
322
|
state.activeAttachedAt = Date.now();
|
|
316
323
|
}
|
|
324
|
+
const targetReady = isTargetReady(session.tabId);
|
|
317
325
|
emitStatus(target, null);
|
|
318
326
|
messaging.send({
|
|
319
327
|
type: 'target_info',
|
|
@@ -321,6 +329,7 @@ export const createExtensionSource = (options) => {
|
|
|
321
329
|
title: target.title,
|
|
322
330
|
url: target.url,
|
|
323
331
|
attachedAt: state.activeAttachedAt,
|
|
332
|
+
targetReady,
|
|
324
333
|
});
|
|
325
334
|
events.onTargetChanged?.(session.handle, target);
|
|
326
335
|
}
|
|
@@ -342,7 +351,7 @@ export const createExtensionSource = (options) => {
|
|
|
342
351
|
const changed = reconcileExtensionTargetSelection(session, state, () => {
|
|
343
352
|
emitTargetChanged(session);
|
|
344
353
|
});
|
|
345
|
-
|
|
354
|
+
targetRecovery.sync(session, state);
|
|
346
355
|
return changed;
|
|
347
356
|
}
|
|
348
357
|
async function refreshFrameTree(session) {
|
|
@@ -363,111 +372,15 @@ export const createExtensionSource = (options) => {
|
|
|
363
372
|
emitTargetChanged(session);
|
|
364
373
|
}, contextId);
|
|
365
374
|
}
|
|
366
|
-
function syncTargetRecovery(session, state) {
|
|
367
|
-
if (!needsTargetRecovery(state)) {
|
|
368
|
-
clearTargetRecovery(session.tabId);
|
|
369
|
-
return;
|
|
370
|
-
}
|
|
371
|
-
if (targetRecoveryByTabId.has(session.tabId)) {
|
|
372
|
-
return;
|
|
373
|
-
}
|
|
374
|
-
const timer = setInterval(() => {
|
|
375
|
-
void retryTargetRecovery(session.tabId);
|
|
376
|
-
}, TARGET_RECOVERY_INTERVAL_MS);
|
|
377
|
-
targetRecoveryByTabId.set(session.tabId, {
|
|
378
|
-
timer,
|
|
379
|
-
deadline: Date.now() + TARGET_RECOVERY_TIMEOUT_MS,
|
|
380
|
-
});
|
|
381
|
-
}
|
|
382
|
-
async function kickTargetRecovery(session) {
|
|
383
|
-
const state = getOrCreateFrameState(session.tabId);
|
|
384
|
-
if (!needsTargetRecovery(state)) {
|
|
385
|
-
return;
|
|
386
|
-
}
|
|
387
|
-
syncTargetRecovery(session, state);
|
|
388
|
-
await retryTargetRecovery(session.tabId);
|
|
389
|
-
}
|
|
390
|
-
function clearTargetRecovery(tabId) {
|
|
391
|
-
const recovery = targetRecoveryByTabId.get(tabId);
|
|
392
|
-
if (!recovery) {
|
|
393
|
-
return;
|
|
394
|
-
}
|
|
395
|
-
clearInterval(recovery.timer);
|
|
396
|
-
targetRecoveryByTabId.delete(tabId);
|
|
397
|
-
}
|
|
398
|
-
async function retryTargetRecovery(tabId) {
|
|
399
|
-
const recovery = targetRecoveryByTabId.get(tabId);
|
|
400
|
-
const session = currentSession;
|
|
401
|
-
if (!recovery || !session || session.tabId !== tabId) {
|
|
402
|
-
clearTargetRecovery(tabId);
|
|
403
|
-
return;
|
|
404
|
-
}
|
|
405
|
-
if (hasTargetRecoveryExpired(recovery)) {
|
|
406
|
-
clearTargetRecovery(tabId);
|
|
407
|
-
return;
|
|
408
|
-
}
|
|
409
|
-
const state = getOrCreateFrameState(tabId);
|
|
410
|
-
if (!needsTargetRecovery(state)) {
|
|
411
|
-
clearTargetRecovery(tabId);
|
|
412
|
-
return;
|
|
413
|
-
}
|
|
414
|
-
try {
|
|
415
|
-
await refreshFrameTree(session);
|
|
416
|
-
}
|
|
417
|
-
catch {
|
|
418
|
-
// Best-effort; Chrome can reject frame-tree reads transiently during reload.
|
|
419
|
-
}
|
|
420
|
-
reconcileTargetSelection(session);
|
|
421
|
-
if (!needsTargetRecovery(getOrCreateFrameState(tabId))) {
|
|
422
|
-
clearTargetRecovery(tabId);
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
function buildFrameTargetContext(state, frameId) {
|
|
426
|
-
return {
|
|
427
|
-
kind: 'frame',
|
|
428
|
-
frameId,
|
|
429
|
-
executionContextId: state.executionContexts.get(frameId) ?? null,
|
|
430
|
-
sessionId: state.frames.get(frameId)?.sessionId ?? null,
|
|
431
|
-
};
|
|
432
|
-
}
|
|
433
375
|
function isTargetReady(tabId) {
|
|
434
376
|
return isSelectedTargetReady(getOrCreateFrameState(tabId));
|
|
435
377
|
}
|
|
436
|
-
async function waitForSelectedFrameCommandTarget() {
|
|
437
|
-
const session = getCurrentExtensionSession();
|
|
438
|
-
const tabId = session.tabId;
|
|
439
|
-
const immediate = resolveSelectedFrameCommandState(getOrCreateFrameState(tabId));
|
|
440
|
-
if (immediate.kind === 'frame') {
|
|
441
|
-
return buildFrameTargetContext(getOrCreateFrameState(tabId), immediate.frameId);
|
|
442
|
-
}
|
|
443
|
-
await kickTargetRecovery(session);
|
|
444
|
-
const deadline = Date.now() + FRAME_COMMAND_READY_TIMEOUT_MS;
|
|
445
|
-
while (Date.now() < deadline) {
|
|
446
|
-
await delay(FRAME_COMMAND_READY_POLL_MS);
|
|
447
|
-
const current = currentSession;
|
|
448
|
-
if (!current || current.tabId !== tabId) {
|
|
449
|
-
throw createNotAttachedError();
|
|
450
|
-
}
|
|
451
|
-
const commandState = resolveSelectedFrameCommandState(getOrCreateFrameState(tabId));
|
|
452
|
-
if (commandState.kind === 'frame') {
|
|
453
|
-
return buildFrameTargetContext(getOrCreateFrameState(tabId), commandState.frameId);
|
|
454
|
-
}
|
|
455
|
-
}
|
|
456
|
-
throw buildSelectedFrameNotReadyError(tabId);
|
|
457
|
-
}
|
|
458
378
|
};
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
const error = new Error(`Selected iframe target on tab ${tabId} is not executable yet after reload. Try again in a few seconds or reattach the watcher if the problem persists.`);
|
|
467
|
-
error.code = 'extension_frame_not_ready';
|
|
468
|
-
return error;
|
|
469
|
-
}
|
|
470
|
-
function delay(ms) {
|
|
471
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
472
|
-
}
|
|
379
|
+
const sessionToBrowserTab = (session) => ({
|
|
380
|
+
tabId: session.tabId,
|
|
381
|
+
url: session.url,
|
|
382
|
+
title: session.title,
|
|
383
|
+
faviconUrl: session.faviconUrl,
|
|
384
|
+
attached: true,
|
|
385
|
+
});
|
|
473
386
|
//# sourceMappingURL=extension-source.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension-source.js","sourceRoot":"","sources":["../../src/sources/extension-source.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"extension-source.js","sourceRoot":"","sources":["../../src/sources/extension-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ExtensionSession } from '../native-messaging/session-manager.js';
|
|
2
|
+
import type { CdpTargetContext } from '../cdp/connection.js';
|
|
3
|
+
import { type ExtensionFrameState } from './extension-frame-state.js';
|
|
4
|
+
type TargetRecoveryDeps = {
|
|
5
|
+
getCurrentSession: () => ExtensionSession | null;
|
|
6
|
+
getOrCreateFrameState: (tabId: number) => ExtensionFrameState;
|
|
7
|
+
refreshFrameTree: (session: ExtensionSession) => Promise<void>;
|
|
8
|
+
reconcileTargetSelection: (session: ExtensionSession) => boolean;
|
|
9
|
+
};
|
|
10
|
+
export type TargetRecoveryController = {
|
|
11
|
+
/** Start or stop the per-tab recovery loop based on whether the selected frame is still pending. */
|
|
12
|
+
sync: (session: ExtensionSession, state: ExtensionFrameState) => void;
|
|
13
|
+
clear: (tabId: number) => void;
|
|
14
|
+
clearAll: () => void;
|
|
15
|
+
/**
|
|
16
|
+
* Resolve the frame-scoped target context for the currently selected iframe,
|
|
17
|
+
* polling (and driving recovery) until the frame is executable or the
|
|
18
|
+
* readiness timeout elapses.
|
|
19
|
+
*/
|
|
20
|
+
waitForSelectedFrameCommandTarget: () => Promise<Extract<CdpTargetContext, {
|
|
21
|
+
kind: 'frame';
|
|
22
|
+
}>>;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Selected-iframe recovery: after a reload the requested frame can temporarily
|
|
26
|
+
* disappear or lack an execution context. This controller re-reads the frame
|
|
27
|
+
* tree on an interval until the selection can be re-resolved, instead of
|
|
28
|
+
* silently routing commands to the parent page.
|
|
29
|
+
*/
|
|
30
|
+
export declare const createTargetRecovery: (deps: TargetRecoveryDeps) => TargetRecoveryController;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=extension-target-recovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-target-recovery.d.ts","sourceRoot":"","sources":["../../src/sources/extension-target-recovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAIN,KAAK,mBAAmB,EACxB,MAAM,4BAA4B,CAAA;AASnC,KAAK,kBAAkB,GAAG;IACzB,iBAAiB,EAAE,MAAM,gBAAgB,GAAG,IAAI,CAAA;IAChD,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,mBAAmB,CAAA;IAC7D,gBAAgB,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9D,wBAAwB,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAA;CAChE,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACtC,oGAAoG;IACpG,IAAI,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAA;IACrE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB;;;;OAIG;IACH,iCAAiC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC,CAAA;CAC9F,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAAI,MAAM,kBAAkB,KAAG,wBAkH/D,CAAA"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { buildFrameTargetContext, createNotAttachedError, resolveSelectedFrameCommandState, } from './extension-frame-state.js';
|
|
2
|
+
const TARGET_RECOVERY_INTERVAL_MS = 500;
|
|
3
|
+
const TARGET_RECOVERY_TIMEOUT_MS = 30_000;
|
|
4
|
+
const FRAME_COMMAND_READY_TIMEOUT_MS = 3_000;
|
|
5
|
+
const FRAME_COMMAND_READY_POLL_MS = 100;
|
|
6
|
+
/**
|
|
7
|
+
* Selected-iframe recovery: after a reload the requested frame can temporarily
|
|
8
|
+
* disappear or lack an execution context. This controller re-reads the frame
|
|
9
|
+
* tree on an interval until the selection can be re-resolved, instead of
|
|
10
|
+
* silently routing commands to the parent page.
|
|
11
|
+
*/
|
|
12
|
+
export const createTargetRecovery = (deps) => {
|
|
13
|
+
const { getCurrentSession, getOrCreateFrameState, refreshFrameTree, reconcileTargetSelection } = deps;
|
|
14
|
+
const recoveryByTabId = new Map();
|
|
15
|
+
const sync = (session, state) => {
|
|
16
|
+
if (!needsTargetRecovery(state)) {
|
|
17
|
+
clear(session.tabId);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (recoveryByTabId.has(session.tabId)) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const timer = setInterval(() => {
|
|
24
|
+
void retry(session.tabId);
|
|
25
|
+
}, TARGET_RECOVERY_INTERVAL_MS);
|
|
26
|
+
recoveryByTabId.set(session.tabId, {
|
|
27
|
+
timer,
|
|
28
|
+
deadline: Date.now() + TARGET_RECOVERY_TIMEOUT_MS,
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
const clear = (tabId) => {
|
|
32
|
+
const recovery = recoveryByTabId.get(tabId);
|
|
33
|
+
if (!recovery) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
clearInterval(recovery.timer);
|
|
37
|
+
recoveryByTabId.delete(tabId);
|
|
38
|
+
};
|
|
39
|
+
const clearAll = () => {
|
|
40
|
+
for (const tabId of recoveryByTabId.keys()) {
|
|
41
|
+
clear(tabId);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
const retry = async (tabId) => {
|
|
45
|
+
const recovery = recoveryByTabId.get(tabId);
|
|
46
|
+
const session = getCurrentSession();
|
|
47
|
+
if (!recovery || !session || session.tabId !== tabId) {
|
|
48
|
+
clear(tabId);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (Date.now() >= recovery.deadline) {
|
|
52
|
+
clear(tabId);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const state = getOrCreateFrameState(tabId);
|
|
56
|
+
if (!needsTargetRecovery(state)) {
|
|
57
|
+
clear(tabId);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
await refreshFrameTree(session);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// Best-effort; Chrome can reject frame-tree reads transiently during reload.
|
|
65
|
+
}
|
|
66
|
+
reconcileTargetSelection(session);
|
|
67
|
+
if (!needsTargetRecovery(getOrCreateFrameState(tabId))) {
|
|
68
|
+
clear(tabId);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
/** Ensure the recovery loop is running and trigger an immediate retry. */
|
|
72
|
+
const kick = async (session) => {
|
|
73
|
+
const state = getOrCreateFrameState(session.tabId);
|
|
74
|
+
if (!needsTargetRecovery(state)) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
sync(session, state);
|
|
78
|
+
await retry(session.tabId);
|
|
79
|
+
};
|
|
80
|
+
const waitForSelectedFrameCommandTarget = async () => {
|
|
81
|
+
const session = getCurrentSession();
|
|
82
|
+
if (!session) {
|
|
83
|
+
throw createNotAttachedError();
|
|
84
|
+
}
|
|
85
|
+
const tabId = session.tabId;
|
|
86
|
+
const immediate = resolveSelectedFrameCommandState(getOrCreateFrameState(tabId));
|
|
87
|
+
if (immediate.kind === 'frame') {
|
|
88
|
+
return buildFrameTargetContext(getOrCreateFrameState(tabId), immediate.frameId);
|
|
89
|
+
}
|
|
90
|
+
await kick(session);
|
|
91
|
+
const deadline = Date.now() + FRAME_COMMAND_READY_TIMEOUT_MS;
|
|
92
|
+
while (Date.now() < deadline) {
|
|
93
|
+
await delay(FRAME_COMMAND_READY_POLL_MS);
|
|
94
|
+
const current = getCurrentSession();
|
|
95
|
+
if (!current || current.tabId !== tabId) {
|
|
96
|
+
throw createNotAttachedError();
|
|
97
|
+
}
|
|
98
|
+
const commandState = resolveSelectedFrameCommandState(getOrCreateFrameState(tabId));
|
|
99
|
+
if (commandState.kind === 'frame') {
|
|
100
|
+
return buildFrameTargetContext(getOrCreateFrameState(tabId), commandState.frameId);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
throw buildSelectedFrameNotReadyError(tabId);
|
|
104
|
+
};
|
|
105
|
+
return { sync, clear, clearAll, waitForSelectedFrameCommandTarget };
|
|
106
|
+
};
|
|
107
|
+
const needsTargetRecovery = (state) => resolveSelectedFrameCommandState(state).kind === 'pending';
|
|
108
|
+
const buildSelectedFrameNotReadyError = (tabId) => {
|
|
109
|
+
const error = new Error(`Selected iframe target on tab ${tabId} is not executable yet after reload. Try again in a few seconds or reattach the watcher if the problem persists.`);
|
|
110
|
+
error.code = 'extension_frame_not_ready';
|
|
111
|
+
return error;
|
|
112
|
+
};
|
|
113
|
+
const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
114
|
+
//# sourceMappingURL=extension-target-recovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-target-recovery.js","sourceRoot":"","sources":["../../src/sources/extension-target-recovery.ts"],"names":[],"mappings":"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"}
|
package/dist/sources/types.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Both sources implement the same interface, allowing the watcher
|
|
4
4
|
* to work with either CDP WebSocket or Extension Native Messaging.
|
|
5
5
|
*/
|
|
6
|
-
import type { AuthStateCookie, LogEvent } from '@vforsh/argus-core';
|
|
6
|
+
import type { AuthStateCookie, ExtensionDiagnosticsResponse, ExtensionTabActionResponse, LogEvent } from '@vforsh/argus-core';
|
|
7
7
|
import type { CdpSessionHandle } from '../cdp/connection.js';
|
|
8
8
|
import type { NetFilterContext } from '../net/filtering.js';
|
|
9
9
|
export type ExtensionTabListFilter = {
|
|
@@ -111,11 +111,16 @@ export type CdpSourceHandle = {
|
|
|
111
111
|
title: string;
|
|
112
112
|
faviconUrl?: string;
|
|
113
113
|
attached: boolean;
|
|
114
|
+
watcherId?: string;
|
|
114
115
|
}>>;
|
|
115
116
|
/** Attach to a specific target by ID (extension mode only). */
|
|
116
|
-
attachTarget?: (targetId: string
|
|
117
|
+
attachTarget?: (targetId: string, options?: {
|
|
118
|
+
watcherId?: string;
|
|
119
|
+
}) => Promise<ExtensionTabActionResponse>;
|
|
117
120
|
/** Detach from a specific target by ID (extension mode only). */
|
|
118
|
-
detachTarget?: (targetId: string) =>
|
|
121
|
+
detachTarget?: (targetId: string) => Promise<ExtensionTabActionResponse>;
|
|
122
|
+
/** Read live extension/control diagnostics (extension-control only). */
|
|
123
|
+
getExtensionDiagnostics?: () => Promise<ExtensionDiagnosticsResponse>;
|
|
119
124
|
};
|
|
120
125
|
/**
|
|
121
126
|
* Options common to all CDP sources.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sources/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sources/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startWatcherRuntime.d.ts","sourceRoot":"","sources":["../src/startWatcherRuntime.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAKpE;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAU,SAAS,mBAAmB,EAAE,WAAW,MAAM,KAAG,OAAO,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"startWatcherRuntime.d.ts","sourceRoot":"","sources":["../src/startWatcherRuntime.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAKpE;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAU,SAAS,mBAAmB,EAAE,WAAW,MAAM,KAAG,OAAO,CAAC,aAAa,CA2WhH,CAAA"}
|
|
@@ -11,7 +11,7 @@ import { createWatcherRuntimeServices } from './runtime/watcherServices.js';
|
|
|
11
11
|
*/
|
|
12
12
|
export const createWatcherHandle = async (options, watcherId) => {
|
|
13
13
|
const setup = normalizeWatcherSetup(options, watcherId);
|
|
14
|
-
const { sourceMode, host, port, pageConsoleLogging, events, buffer, netBuffer, realtimeNetBuffer, record, fileLogger, emulationController, throttleController, visibilityController, } = setup;
|
|
14
|
+
const { sourceMode, host, port, pageConsoleLogging, events, buffer, netBuffer, realtimeNetBuffer, record, fileLogger, emulationController, throttleController, visibilityController, netMockController, } = setup;
|
|
15
15
|
let closing = false;
|
|
16
16
|
let readyForShutdown = false;
|
|
17
17
|
let shutdownRequested = false;
|
|
@@ -178,6 +178,7 @@ export const createWatcherHandle = async (options, watcherId) => {
|
|
|
178
178
|
// forward the attach to other services so downstream flows (boot
|
|
179
179
|
// waits, indicator paints) benefit immediately.
|
|
180
180
|
await visibilityController.onAttach(sourceHandle.pageSession ?? session);
|
|
181
|
+
await netMockController.onAttach(sourceHandle.pageSession ?? session);
|
|
181
182
|
await networkCapture?.onAttached();
|
|
182
183
|
onIndicatorAttach(session, target);
|
|
183
184
|
await maybeInjectOnAttach(session, target);
|
|
@@ -201,12 +202,14 @@ export const createWatcherHandle = async (options, watcherId) => {
|
|
|
201
202
|
dialogTracker.clear();
|
|
202
203
|
runtimeEditor?.rebind();
|
|
203
204
|
networkCapture?.onDetached();
|
|
205
|
+
netMockController.onDetach();
|
|
204
206
|
indicatorController?.onDetach();
|
|
207
|
+
recorder.onDetached(reason);
|
|
205
208
|
if (reason != null) {
|
|
206
209
|
traceRecorder.onDetached(reason);
|
|
207
210
|
}
|
|
208
211
|
};
|
|
209
|
-
const { sourceHandle, networkCapture, traceRecorder, screenshotter, runtimeEditor } = createWatcherRuntimeServices(options, setup, {
|
|
212
|
+
const { sourceHandle, networkCapture, traceRecorder, screenshotter, recorder, runtimeEditor } = createWatcherRuntimeServices(options, setup, {
|
|
210
213
|
onLog: handleSourceLog,
|
|
211
214
|
onStatus: updateCdpStatus,
|
|
212
215
|
onPageNavigation: handlePageNavigation,
|
|
@@ -215,7 +218,11 @@ export const createWatcherHandle = async (options, watcherId) => {
|
|
|
215
218
|
onAttach: handleSourceAttach,
|
|
216
219
|
onTargetChanged: handleTargetChanged,
|
|
217
220
|
onDetach: handleSourceDetach,
|
|
221
|
+
onRecordingStateChange: (recording) => {
|
|
222
|
+
indicatorController?.setRecording(recording);
|
|
223
|
+
},
|
|
218
224
|
});
|
|
225
|
+
netMockController.bind(sourceHandle.pageSession ?? sourceHandle.session);
|
|
219
226
|
const dialogSession = sourceHandle.pageSession ?? sourceHandle.session;
|
|
220
227
|
dialogSession.onEvent('Page.javascriptDialogOpening', (params) => {
|
|
221
228
|
const dialog = parseDialogStatus(params);
|
|
@@ -241,10 +248,12 @@ export const createWatcherHandle = async (options, watcherId) => {
|
|
|
241
248
|
cdpSession: sourceHandle.session,
|
|
242
249
|
traceRecorder,
|
|
243
250
|
screenshotter,
|
|
251
|
+
recorder,
|
|
244
252
|
runtimeEditor,
|
|
245
253
|
emulationController,
|
|
246
254
|
throttleController,
|
|
247
255
|
visibilityController,
|
|
256
|
+
netMockController,
|
|
248
257
|
getNetFilterContext: sourceHandle.getNetFilterContext,
|
|
249
258
|
readBrowserCookies: sourceHandle.readBrowserCookies,
|
|
250
259
|
sourceHandle: sourceMode === 'extension' ? sourceHandle : undefined,
|
|
@@ -287,6 +296,7 @@ export const createWatcherHandle = async (options, watcherId) => {
|
|
|
287
296
|
await sourceHandle.stop();
|
|
288
297
|
await fileLogger?.close();
|
|
289
298
|
traceRecorder.onDetached('watcher_stopped');
|
|
299
|
+
recorder.onDetached('watcher_stopped');
|
|
290
300
|
await server.close();
|
|
291
301
|
await removeWatcher(record.id);
|
|
292
302
|
events.clearListeners();
|