@vforsh/argus-watcher 0.1.9 → 0.1.10
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/README.md +5 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/buffer/NetBuffer.d.ts +35 -11
- package/dist/buffer/NetBuffer.d.ts.map +1 -1
- package/dist/buffer/NetBuffer.js +64 -55
- package/dist/buffer/NetBuffer.js.map +1 -1
- package/dist/cdp/accessibility.d.ts +12 -1
- package/dist/cdp/accessibility.d.ts.map +1 -1
- package/dist/cdp/accessibility.js +88 -45
- package/dist/cdp/accessibility.js.map +1 -1
- package/dist/cdp/auth.d.ts +31 -1
- package/dist/cdp/auth.d.ts.map +1 -1
- package/dist/cdp/auth.js +299 -10
- package/dist/cdp/auth.js.map +1 -1
- package/dist/cdp/authState.d.ts +9 -0
- package/dist/cdp/authState.d.ts.map +1 -0
- package/dist/cdp/authState.js +44 -0
- package/dist/cdp/authState.js.map +1 -0
- package/dist/cdp/browserCookies.d.ts +8 -0
- package/dist/cdp/browserCookies.d.ts.map +1 -0
- package/dist/cdp/browserCookies.js +160 -0
- package/dist/cdp/browserCookies.js.map +1 -0
- package/dist/cdp/dom/fill.d.ts +2 -1
- package/dist/cdp/dom/fill.d.ts.map +1 -1
- package/dist/cdp/dom/fill.js +7 -7
- package/dist/cdp/dom/fill.js.map +1 -1
- package/dist/cdp/dom/info.d.ts +4 -2
- package/dist/cdp/dom/info.d.ts.map +1 -1
- package/dist/cdp/dom/info.js +20 -11
- package/dist/cdp/dom/info.js.map +1 -1
- package/dist/cdp/dom/selector.d.ts +35 -0
- package/dist/cdp/dom/selector.d.ts.map +1 -1
- package/dist/cdp/dom/selector.js +118 -25
- package/dist/cdp/dom/selector.js.map +1 -1
- package/dist/cdp/dom/types.d.ts +1 -0
- package/dist/cdp/dom/types.d.ts.map +1 -1
- package/dist/cdp/editor.d.ts.map +1 -1
- package/dist/cdp/editor.js +55 -3
- package/dist/cdp/editor.js.map +1 -1
- package/dist/cdp/elementRefs.d.ts +15 -0
- package/dist/cdp/elementRefs.d.ts.map +1 -0
- package/dist/cdp/elementRefs.js +30 -0
- package/dist/cdp/elementRefs.js.map +1 -0
- package/dist/cdp/locate.d.ts +7 -0
- package/dist/cdp/locate.d.ts.map +1 -0
- package/dist/cdp/locate.js +68 -0
- package/dist/cdp/locate.js.map +1 -0
- package/dist/cdp/mouse.d.ts +8 -7
- package/dist/cdp/mouse.d.ts.map +1 -1
- package/dist/cdp/mouse.js +40 -38
- package/dist/cdp/mouse.js.map +1 -1
- package/dist/cdp/networkBody.d.ts +19 -0
- package/dist/cdp/networkBody.d.ts.map +1 -0
- package/dist/cdp/networkBody.js +70 -0
- package/dist/cdp/networkBody.js.map +1 -0
- package/dist/cdp/networkCapture.d.ts +4 -0
- package/dist/cdp/networkCapture.d.ts.map +1 -1
- package/dist/cdp/networkCapture.js +307 -35
- package/dist/cdp/networkCapture.js.map +1 -1
- package/dist/cdp/redaction.d.ts +4 -0
- package/dist/cdp/redaction.d.ts.map +1 -1
- package/dist/cdp/redaction.js +37 -1
- package/dist/cdp/redaction.js.map +1 -1
- package/dist/cdp/screenshot.d.ts +1 -0
- package/dist/cdp/screenshot.d.ts.map +1 -1
- package/dist/cdp/screenshot.js +66 -15
- package/dist/cdp/screenshot.js.map +1 -1
- package/dist/cdp/storage.d.ts +8 -0
- package/dist/cdp/storage.d.ts.map +1 -0
- package/dist/cdp/storage.js +70 -0
- package/dist/cdp/storage.js.map +1 -0
- package/dist/cdp/watcher.d.ts +1 -0
- package/dist/cdp/watcher.d.ts.map +1 -1
- package/dist/cdp/watcher.js +5 -1
- package/dist/cdp/watcher.js.map +1 -1
- package/dist/dialogs/DialogTracker.d.ts +13 -0
- package/dist/dialogs/DialogTracker.d.ts.map +1 -0
- package/dist/dialogs/DialogTracker.js +22 -0
- package/dist/dialogs/DialogTracker.js.map +1 -0
- package/dist/events.d.ts +7 -2
- package/dist/events.d.ts.map +1 -1
- package/dist/http/routes/authCookies.d.ts +11 -0
- package/dist/http/routes/authCookies.d.ts.map +1 -0
- package/dist/http/routes/authCookies.js +142 -0
- package/dist/http/routes/authCookies.js.map +1 -0
- package/dist/http/routes/domSelectorRoute.d.ts +8 -0
- package/dist/http/routes/domSelectorRoute.d.ts.map +1 -1
- package/dist/http/routes/domSelectorRoute.js +28 -3
- package/dist/http/routes/domSelectorRoute.js.map +1 -1
- package/dist/http/routes/getAuthState.d.ts +3 -0
- package/dist/http/routes/getAuthState.d.ts.map +1 -0
- package/dist/http/routes/getAuthState.js +24 -0
- package/dist/http/routes/getAuthState.js.map +1 -0
- package/dist/http/routes/getDialog.d.ts +3 -0
- package/dist/http/routes/getDialog.d.ts.map +1 -0
- package/dist/http/routes/getDialog.js +11 -0
- package/dist/http/routes/getDialog.js.map +1 -0
- package/dist/http/routes/getNet.d.ts.map +1 -1
- package/dist/http/routes/getNet.js +14 -8
- package/dist/http/routes/getNet.js.map +1 -1
- package/dist/http/routes/getNetRequest.d.ts +3 -0
- package/dist/http/routes/getNetRequest.d.ts.map +1 -0
- package/dist/http/routes/getNetRequest.js +23 -0
- package/dist/http/routes/getNetRequest.js.map +1 -0
- package/dist/http/routes/getNetRequestBody.d.ts +3 -0
- package/dist/http/routes/getNetRequestBody.d.ts.map +1 -0
- package/dist/http/routes/getNetRequestBody.js +80 -0
- package/dist/http/routes/getNetRequestBody.js.map +1 -0
- package/dist/http/routes/getNetRequests.d.ts +3 -0
- package/dist/http/routes/getNetRequests.d.ts.map +1 -0
- package/dist/http/routes/getNetRequests.js +23 -0
- package/dist/http/routes/getNetRequests.js.map +1 -0
- package/dist/http/routes/getNetTail.d.ts.map +1 -1
- package/dist/http/routes/getNetTail.js +44 -9
- package/dist/http/routes/getNetTail.js.map +1 -1
- package/dist/http/routes/getStatus.js +1 -0
- package/dist/http/routes/getStatus.js.map +1 -1
- package/dist/http/routes/index.d.ts +1 -1
- package/dist/http/routes/index.d.ts.map +1 -1
- package/dist/http/routes/index.js +27 -0
- package/dist/http/routes/index.js.map +1 -1
- package/dist/http/routes/netFilters.d.ts +29 -0
- package/dist/http/routes/netFilters.d.ts.map +1 -0
- package/dist/http/routes/netFilters.js +160 -0
- package/dist/http/routes/netFilters.js.map +1 -0
- package/dist/http/routes/netRequestLookup.d.ts +14 -0
- package/dist/http/routes/netRequestLookup.d.ts.map +1 -0
- package/dist/http/routes/netRequestLookup.js +39 -0
- package/dist/http/routes/netRequestLookup.js.map +1 -0
- package/dist/http/routes/postAuthStateLoad.d.ts +3 -0
- package/dist/http/routes/postAuthStateLoad.d.ts.map +1 -0
- package/dist/http/routes/postAuthStateLoad.js +37 -0
- package/dist/http/routes/postAuthStateLoad.js.map +1 -0
- package/dist/http/routes/postDialog.d.ts +3 -0
- package/dist/http/routes/postDialog.d.ts.map +1 -0
- package/dist/http/routes/postDialog.js +39 -0
- package/dist/http/routes/postDialog.js.map +1 -0
- package/dist/http/routes/postDomClick.d.ts.map +1 -1
- package/dist/http/routes/postDomClick.js +35 -18
- package/dist/http/routes/postDomClick.js.map +1 -1
- package/dist/http/routes/postDomFill.d.ts.map +1 -1
- package/dist/http/routes/postDomFill.js +19 -9
- package/dist/http/routes/postDomFill.js.map +1 -1
- package/dist/http/routes/postDomFocus.d.ts.map +1 -1
- package/dist/http/routes/postDomFocus.js +22 -9
- package/dist/http/routes/postDomFocus.js.map +1 -1
- package/dist/http/routes/postDomHover.d.ts.map +1 -1
- package/dist/http/routes/postDomHover.js +22 -9
- package/dist/http/routes/postDomHover.js.map +1 -1
- package/dist/http/routes/postDomInfo.d.ts.map +1 -1
- package/dist/http/routes/postDomInfo.js +7 -3
- package/dist/http/routes/postDomInfo.js.map +1 -1
- package/dist/http/routes/postDomScroll.d.ts.map +1 -1
- package/dist/http/routes/postDomScroll.js +1 -1
- package/dist/http/routes/postDomScroll.js.map +1 -1
- package/dist/http/routes/postDomScrollTo.d.ts.map +1 -1
- package/dist/http/routes/postDomScrollTo.js +1 -1
- package/dist/http/routes/postDomScrollTo.js.map +1 -1
- package/dist/http/routes/postLocate.d.ts +5 -0
- package/dist/http/routes/postLocate.d.ts.map +1 -0
- package/dist/http/routes/postLocate.js +67 -0
- package/dist/http/routes/postLocate.js.map +1 -0
- package/dist/http/routes/postNetClear.d.ts +3 -0
- package/dist/http/routes/postNetClear.d.ts.map +1 -0
- package/dist/http/routes/postNetClear.js +14 -0
- package/dist/http/routes/postNetClear.js.map +1 -0
- package/dist/http/routes/postSnapshot.d.ts.map +1 -1
- package/dist/http/routes/postSnapshot.js +1 -1
- package/dist/http/routes/postSnapshot.js.map +1 -1
- package/dist/http/routes/postStorageLocal.d.ts +1 -2
- package/dist/http/routes/postStorageLocal.d.ts.map +1 -1
- package/dist/http/routes/postStorageLocal.js +2 -30
- package/dist/http/routes/postStorageLocal.js.map +1 -1
- package/dist/http/routes/postStorageSession.d.ts +2 -0
- package/dist/http/routes/postStorageSession.d.ts.map +1 -0
- package/dist/http/routes/postStorageSession.js +3 -0
- package/dist/http/routes/postStorageSession.js.map +1 -0
- package/dist/http/routes/storage.d.ts +5 -0
- package/dist/http/routes/storage.d.ts.map +1 -0
- package/dist/http/routes/storage.js +43 -0
- package/dist/http/routes/storage.js.map +1 -0
- package/dist/http/server.d.ts +27 -3
- package/dist/http/server.d.ts.map +1 -1
- package/dist/http/server.js.map +1 -1
- package/dist/native-messaging/session-manager.d.ts +14 -1
- package/dist/native-messaging/session-manager.d.ts.map +1 -1
- package/dist/native-messaging/session-manager.js +56 -23
- package/dist/native-messaging/session-manager.js.map +1 -1
- package/dist/native-messaging/types.d.ts +28 -2
- package/dist/native-messaging/types.d.ts.map +1 -1
- package/dist/net/filtering.d.ts +32 -0
- package/dist/net/filtering.d.ts.map +1 -0
- package/dist/net/filtering.js +144 -0
- package/dist/net/filtering.js.map +1 -0
- package/dist/runtime/watcherServices.d.ts.map +1 -1
- package/dist/runtime/watcherServices.js +5 -1
- package/dist/runtime/watcherServices.js.map +1 -1
- package/dist/sources/cdp-source.d.ts.map +1 -1
- package/dist/sources/cdp-source.js +13 -0
- package/dist/sources/cdp-source.js.map +1 -1
- package/dist/sources/extension-frame-runtime.d.ts.map +1 -1
- package/dist/sources/extension-frame-runtime.js +25 -4
- package/dist/sources/extension-frame-runtime.js.map +1 -1
- package/dist/sources/extension-frame-state.d.ts +3 -2
- package/dist/sources/extension-frame-state.d.ts.map +1 -1
- package/dist/sources/extension-frame-state.js +29 -8
- package/dist/sources/extension-frame-state.js.map +1 -1
- package/dist/sources/extension-session-events.d.ts.map +1 -1
- package/dist/sources/extension-session-events.js +4 -2
- package/dist/sources/extension-session-events.js.map +1 -1
- package/dist/sources/extension-source.d.ts.map +1 -1
- package/dist/sources/extension-source.js +135 -36
- package/dist/sources/extension-source.js.map +1 -1
- package/dist/sources/types.d.ts +15 -1
- package/dist/sources/types.d.ts.map +1 -1
- package/dist/startWatcherRuntime.d.ts.map +1 -1
- package/dist/startWatcherRuntime.js +65 -1
- package/dist/startWatcherRuntime.js.map +1 -1
- package/package.json +1 -1
- package/dist/cdp/storageLocal.d.ts +0 -8
- package/dist/cdp/storageLocal.d.ts.map +0 -1
- package/dist/cdp/storageLocal.js +0 -70
- package/dist/cdp/storageLocal.js.map +0 -1
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { NetFilterContext, NetFilters, NetScope } from '../../net/filtering.js';
|
|
2
|
+
import type { HttpRequestEventMetadata } from '../server.js';
|
|
3
|
+
export type ParsedNetFilters = NetFilters & {
|
|
4
|
+
after: number;
|
|
5
|
+
limit: number;
|
|
6
|
+
scope: NetScope;
|
|
7
|
+
frame: string | null;
|
|
8
|
+
};
|
|
9
|
+
type ParseNetFilterOptions = {
|
|
10
|
+
after: number;
|
|
11
|
+
limit: number;
|
|
12
|
+
sinceTs?: number;
|
|
13
|
+
context?: NetFilterContext | null;
|
|
14
|
+
};
|
|
15
|
+
type ParseNetFilterResult = {
|
|
16
|
+
value?: ParsedNetFilters;
|
|
17
|
+
error?: string;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Parse and resolve network query params so every `/net*` route shares the same semantics.
|
|
21
|
+
* Scope defaults are resolved against the active watcher target instead of forcing the CLI
|
|
22
|
+
* to guess whether an iframe is currently selected.
|
|
23
|
+
*/
|
|
24
|
+
export declare const parseNetRequestFilters: (searchParams: URLSearchParams, options: ParseNetFilterOptions) => ParseNetFilterResult;
|
|
25
|
+
export declare const toNetRequestEventQuery: (filters: ParsedNetFilters, options?: {
|
|
26
|
+
timeoutMs?: number;
|
|
27
|
+
}) => HttpRequestEventMetadata["query"];
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=netFilters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"netFilters.d.ts","sourceRoot":"","sources":["../../../src/http/routes/netFilters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAY,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAE9F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AAG5D,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG;IAC3C,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,QAAQ,CAAA;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACpB,CAAA;AAED,KAAK,qBAAqB,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;CACjC,CAAA;AAED,KAAK,oBAAoB,GAAG;IAC3B,KAAK,CAAC,EAAE,gBAAgB,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAOD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAI,cAAc,eAAe,EAAE,SAAS,qBAAqB,KAAG,oBAiDtG,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,SAAS,gBAAgB,EAAE,UAAS;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,KAAG,wBAAwB,CAAC,OAAO,CAmBvI,CAAA"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { derivePartyHost, normalizeNetUrlKey } from '../../net/filtering.js';
|
|
2
|
+
import { clampNumber, normalizeQueryValue } from '../httpUtils.js';
|
|
3
|
+
/**
|
|
4
|
+
* Parse and resolve network query params so every `/net*` route shares the same semantics.
|
|
5
|
+
* Scope defaults are resolved against the active watcher target instead of forcing the CLI
|
|
6
|
+
* to guess whether an iframe is currently selected.
|
|
7
|
+
*/
|
|
8
|
+
export const parseNetRequestFilters = (searchParams, options) => {
|
|
9
|
+
const scope = normalizeScope(searchParams.get('scope'));
|
|
10
|
+
if (scope.error) {
|
|
11
|
+
return { error: scope.error };
|
|
12
|
+
}
|
|
13
|
+
const frame = normalizeFrame(searchParams.get('frame'));
|
|
14
|
+
if (frame.error) {
|
|
15
|
+
return { error: frame.error };
|
|
16
|
+
}
|
|
17
|
+
if (scope.value && frame.value) {
|
|
18
|
+
return { error: 'Cannot combine scope and frame filters. Use one or the other.' };
|
|
19
|
+
}
|
|
20
|
+
const party = normalizeParty(searchParams.get('party'));
|
|
21
|
+
if (party.error) {
|
|
22
|
+
return { error: party.error };
|
|
23
|
+
}
|
|
24
|
+
const context = options.context ?? null;
|
|
25
|
+
const resolvedScope = scope.value ?? defaultScope(context);
|
|
26
|
+
const resolvedFrameId = resolveFrameId({ frame: frame.value ?? null, scope: resolvedScope, context });
|
|
27
|
+
const partyHost = derivePartyHost(resolvePartyReferenceUrl(resolvedScope, context));
|
|
28
|
+
return {
|
|
29
|
+
value: {
|
|
30
|
+
after: options.after,
|
|
31
|
+
limit: options.limit,
|
|
32
|
+
sinceTs: options.sinceTs,
|
|
33
|
+
grep: normalizeQueryValue(searchParams.get('grep')),
|
|
34
|
+
ignoreHosts: normalizeRepeatedValues(searchParams.getAll('ignoreHost')),
|
|
35
|
+
ignorePatterns: normalizeRepeatedValues(searchParams.getAll('ignorePattern')),
|
|
36
|
+
hosts: normalizeRepeatedValues(searchParams.getAll('host')),
|
|
37
|
+
methods: normalizeRepeatedValues(searchParams.getAll('method')),
|
|
38
|
+
statuses: normalizeStatusValues(searchParams.getAll('status')),
|
|
39
|
+
resourceTypes: normalizeRepeatedValues(searchParams.getAll('resourceType')),
|
|
40
|
+
mimeTypes: normalizeRepeatedValues(searchParams.getAll('mime')),
|
|
41
|
+
party: party.value,
|
|
42
|
+
partyHost,
|
|
43
|
+
frameId: resolvedFrameId,
|
|
44
|
+
documentUrlKey: resolveDocumentUrlKey({ frame: frame.value ?? null, scope: resolvedScope, context }),
|
|
45
|
+
failedOnly: hasTruthyFlag(searchParams, 'failedOnly'),
|
|
46
|
+
minDurationMs: clampNumber(searchParams.get('minDurationMs'), undefined, 1),
|
|
47
|
+
minTransferBytes: clampNumber(searchParams.get('minTransferBytes'), undefined, 1),
|
|
48
|
+
scope: resolvedScope,
|
|
49
|
+
frame: frame.value ?? null,
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
export const toNetRequestEventQuery = (filters, options = {}) => ({
|
|
54
|
+
after: filters.after,
|
|
55
|
+
limit: filters.limit,
|
|
56
|
+
sinceTs: filters.sinceTs,
|
|
57
|
+
timeoutMs: options.timeoutMs,
|
|
58
|
+
grep: filters.grep,
|
|
59
|
+
hosts: filters.hosts,
|
|
60
|
+
methods: filters.methods,
|
|
61
|
+
statuses: filters.statuses,
|
|
62
|
+
resourceTypes: filters.resourceTypes,
|
|
63
|
+
mimeTypes: filters.mimeTypes,
|
|
64
|
+
scope: filters.scope,
|
|
65
|
+
frame: filters.frame ?? undefined,
|
|
66
|
+
party: filters.party,
|
|
67
|
+
failedOnly: filters.failedOnly,
|
|
68
|
+
minDurationMs: filters.minDurationMs,
|
|
69
|
+
minTransferBytes: filters.minTransferBytes,
|
|
70
|
+
ignoreHosts: filters.ignoreHosts,
|
|
71
|
+
ignorePatterns: filters.ignorePatterns,
|
|
72
|
+
});
|
|
73
|
+
const resolveDocumentUrlKey = (options) => {
|
|
74
|
+
if (options.frame && options.frame !== 'selected' && options.frame !== 'page') {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
if (options.frame == null && options.scope === 'tab') {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
const baseUrl = options.frame === 'page'
|
|
81
|
+
? (options.context?.pageUrl ?? null)
|
|
82
|
+
: options.frame === 'selected'
|
|
83
|
+
? (options.context?.selectedTargetUrl ?? options.context?.pageUrl ?? null)
|
|
84
|
+
: resolvePartyReferenceUrl(options.scope, options.context);
|
|
85
|
+
return normalizeNetUrlKey(baseUrl);
|
|
86
|
+
};
|
|
87
|
+
const defaultScope = (_context) => 'tab';
|
|
88
|
+
const resolveFrameId = (options) => {
|
|
89
|
+
if (options.frame === 'selected') {
|
|
90
|
+
return options.context?.selectedFrameId ?? options.context?.topFrameId ?? undefined;
|
|
91
|
+
}
|
|
92
|
+
if (options.frame === 'page') {
|
|
93
|
+
return options.context?.topFrameId ?? undefined;
|
|
94
|
+
}
|
|
95
|
+
if (options.frame) {
|
|
96
|
+
return options.frame;
|
|
97
|
+
}
|
|
98
|
+
if (options.scope === 'tab') {
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
if (options.scope === 'page') {
|
|
102
|
+
return options.context?.topFrameId ?? undefined;
|
|
103
|
+
}
|
|
104
|
+
return options.context?.selectedFrameId ?? options.context?.topFrameId ?? undefined;
|
|
105
|
+
};
|
|
106
|
+
const resolvePartyReferenceUrl = (scope, context) => {
|
|
107
|
+
if (!context) {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
if (scope === 'selected') {
|
|
111
|
+
return context.selectedTargetUrl ?? context.pageUrl;
|
|
112
|
+
}
|
|
113
|
+
return context.pageUrl ?? context.selectedTargetUrl;
|
|
114
|
+
};
|
|
115
|
+
const normalizeScope = (value) => {
|
|
116
|
+
return normalizeChoice(value, ['selected', 'page', 'tab'], 'scope filter');
|
|
117
|
+
};
|
|
118
|
+
const normalizeFrame = (value) => {
|
|
119
|
+
const normalized = normalizeQueryValue(value);
|
|
120
|
+
if (!normalized) {
|
|
121
|
+
return {};
|
|
122
|
+
}
|
|
123
|
+
if (normalized === 'selected' || normalized === 'page') {
|
|
124
|
+
return { value: normalized };
|
|
125
|
+
}
|
|
126
|
+
return { value: normalized };
|
|
127
|
+
};
|
|
128
|
+
const normalizeParty = (value) => {
|
|
129
|
+
return normalizeChoice(value, ['first', 'third'], 'party filter');
|
|
130
|
+
};
|
|
131
|
+
const normalizeChoice = (value, allowed, label) => {
|
|
132
|
+
const normalized = normalizeQueryValue(value);
|
|
133
|
+
if (!normalized) {
|
|
134
|
+
return {};
|
|
135
|
+
}
|
|
136
|
+
if (allowed.includes(normalized)) {
|
|
137
|
+
return { value: normalized };
|
|
138
|
+
}
|
|
139
|
+
return { error: `Invalid ${label}: ${value}` };
|
|
140
|
+
};
|
|
141
|
+
const normalizeRepeatedValues = (values) => {
|
|
142
|
+
const normalized = values.map((value) => normalizeQueryValue(value)).filter((value) => value != null);
|
|
143
|
+
return normalized.length > 0 ? normalized : undefined;
|
|
144
|
+
};
|
|
145
|
+
const normalizeStatusValues = (values) => {
|
|
146
|
+
const normalized = normalizeRepeatedValues(values)?.map((value) => value.toLowerCase());
|
|
147
|
+
if (!normalized?.length) {
|
|
148
|
+
return undefined;
|
|
149
|
+
}
|
|
150
|
+
return normalized;
|
|
151
|
+
};
|
|
152
|
+
const hasTruthyFlag = (searchParams, key) => {
|
|
153
|
+
const value = searchParams.get(key);
|
|
154
|
+
if (value == null) {
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
const normalized = value.trim().toLowerCase();
|
|
158
|
+
return normalized !== '' && normalized !== '0' && normalized !== 'false';
|
|
159
|
+
};
|
|
160
|
+
//# sourceMappingURL=netFilters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"netFilters.js","sourceRoot":"","sources":["../../../src/http/routes/netFilters.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAE5E,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AA0BlE;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,YAA6B,EAAE,OAA8B,EAAwB,EAAE;IAC7H,MAAM,KAAK,GAAG,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;IACvD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAA;IAC9B,CAAC;IAED,MAAM,KAAK,GAAG,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;IACvD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAA;IAC9B,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,OAAO,EAAE,KAAK,EAAE,+DAA+D,EAAE,CAAA;IAClF,CAAC;IAED,MAAM,KAAK,GAAG,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;IACvD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAA;IAC9B,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAA;IACvC,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,IAAI,YAAY,CAAC,OAAO,CAAC,CAAA;IAC1D,MAAM,eAAe,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAA;IACrG,MAAM,SAAS,GAAG,eAAe,CAAC,wBAAwB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAA;IAEnF,OAAO;QACN,KAAK,EAAE;YACN,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,mBAAmB,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACnD,WAAW,EAAE,uBAAuB,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACvE,cAAc,EAAE,uBAAuB,CAAC,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAC7E,KAAK,EAAE,uBAAuB,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3D,OAAO,EAAE,uBAAuB,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC/D,QAAQ,EAAE,qBAAqB,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9D,aAAa,EAAE,uBAAuB,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAC3E,SAAS,EAAE,uBAAuB,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC/D,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS;YACT,OAAO,EAAE,eAAe;YACxB,cAAc,EAAE,qBAAqB,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;YACpG,UAAU,EAAE,aAAa,CAAC,YAAY,EAAE,YAAY,CAAC;YACrD,aAAa,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;YAC3E,gBAAgB,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;YACjF,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;SAC1B;KACD,CAAA;AACF,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,OAAyB,EAAE,UAAkC,EAAE,EAAqC,EAAE,CAAC,CAAC;IAC9I,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,OAAO,EAAE,OAAO,CAAC,OAAO;IACxB,SAAS,EAAE,OAAO,CAAC,SAAS;IAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;IAClB,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,OAAO,EAAE,OAAO,CAAC,OAAO;IACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;IAC1B,aAAa,EAAE,OAAO,CAAC,aAAa;IACpC,SAAS,EAAE,OAAO,CAAC,SAAS;IAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;IACjC,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,UAAU,EAAE,OAAO,CAAC,UAAU;IAC9B,aAAa,EAAE,OAAO,CAAC,aAAa;IACpC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;IAC1C,WAAW,EAAE,OAAO,CAAC,WAAW;IAChC,cAAc,EAAE,OAAO,CAAC,cAAc;CACtC,CAAC,CAAA;AAEF,MAAM,qBAAqB,GAAG,CAAC,OAAoF,EAAiB,EAAE;IACrI,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,UAAU,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QAC/E,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QACtD,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,MAAM,OAAO,GACZ,OAAO,CAAC,KAAK,KAAK,MAAM;QACvB,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC;QACpC,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU;YAC7B,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,iBAAiB,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC;YAC1E,CAAC,CAAC,wBAAwB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IAE7D,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAA;AACnC,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,QAAiC,EAAY,EAAE,CAAC,KAAK,CAAA;AAE3E,MAAM,cAAc,GAAG,CAAC,OAAoF,EAAsB,EAAE;IACnI,IAAI,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,OAAO,EAAE,eAAe,IAAI,OAAO,CAAC,OAAO,EAAE,UAAU,IAAI,SAAS,CAAA;IACpF,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC,OAAO,EAAE,UAAU,IAAI,SAAS,CAAA;IAChD,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,OAAO,CAAC,KAAK,CAAA;IACrB,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAA;IACjB,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC,OAAO,EAAE,UAAU,IAAI,SAAS,CAAA;IAChD,CAAC;IAED,OAAO,OAAO,CAAC,OAAO,EAAE,eAAe,IAAI,OAAO,CAAC,OAAO,EAAE,UAAU,IAAI,SAAS,CAAA;AACpF,CAAC,CAAA;AAED,MAAM,wBAAwB,GAAG,CAAC,KAAe,EAAE,OAAgC,EAAiB,EAAE;IACrG,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAA;IACpD,CAAC;IAED,OAAO,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAA;AACpD,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CAAC,KAAoB,EAAmC,EAAE;IAChF,OAAO,eAAe,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,cAAc,CAAC,CAAA;AAC3E,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CAAC,KAAoB,EAAwC,EAAE;IACrF,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAA;IAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,OAAO,EAAE,CAAA;IACV,CAAC;IAED,IAAI,UAAU,KAAK,UAAU,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QACxD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;IAC7B,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;AAC7B,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CAAC,KAAoB,EAAmC,EAAE;IAChF,OAAO,eAAe,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAAA;AAClE,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,CAAmB,KAAoB,EAAE,OAAqB,EAAE,KAAa,EAA4B,EAAE;IAClI,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAA;IAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,OAAO,EAAE,CAAA;IACV,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAe,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,KAAK,EAAE,UAAe,EAAE,CAAA;IAClC,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,WAAW,KAAK,KAAK,KAAK,EAAE,EAAE,CAAA;AAC/C,CAAC,CAAA;AAED,MAAM,uBAAuB,GAAG,CAAC,MAAgB,EAAwB,EAAE;IAC1E,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAA;IACtH,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAA;AACtD,CAAC,CAAA;AAED,MAAM,qBAAqB,GAAG,CAAC,MAAgB,EAAwB,EAAE;IACxE,MAAM,UAAU,GAAG,uBAAuB,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAA;IACvF,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QACzB,OAAO,SAAS,CAAA;IACjB,CAAC;IAED,OAAO,UAAU,CAAA;AAClB,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,YAA6B,EAAE,GAAW,EAAW,EAAE;IAC7E,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACnC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QACnB,OAAO,KAAK,CAAA;IACb,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC7C,OAAO,UAAU,KAAK,EAAE,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,OAAO,CAAA;AACzE,CAAC,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { NetworkRequestDetail } from '@vforsh/argus-core';
|
|
2
|
+
import type { NetBuffer, NetBufferRecord } from '../../buffer/NetBuffer.js';
|
|
3
|
+
export type NetRequestLookup = {
|
|
4
|
+
id?: number;
|
|
5
|
+
requestId?: string;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Parse a network-request selector from query params.
|
|
9
|
+
* Routes accept either an Argus buffer id or a raw CDP request id.
|
|
10
|
+
*/
|
|
11
|
+
export declare const parseNetRequestLookup: (searchParams: URLSearchParams) => NetRequestLookup | null;
|
|
12
|
+
export declare const resolveNetRequestLookup: (buffer: NetBuffer, lookup: NetRequestLookup) => NetworkRequestDetail | null;
|
|
13
|
+
export declare const resolveNetRequestLookupRecord: (buffer: NetBuffer, lookup: NetRequestLookup) => NetBufferRecord | null;
|
|
14
|
+
//# sourceMappingURL=netRequestLookup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"netRequestLookup.d.ts","sourceRoot":"","sources":["../../../src/http/routes/netRequestLookup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAG3E,MAAM,MAAM,gBAAgB,GAAG;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,cAAc,eAAe,KAAG,gBAAgB,GAAG,IAWxF,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAI,QAAQ,SAAS,EAAE,QAAQ,gBAAgB,KAAG,oBAAoB,GAAG,IAE5G,CAAA;AAED,eAAO,MAAM,6BAA6B,GAAI,QAAQ,SAAS,EAAE,QAAQ,gBAAgB,KAAG,eAAe,GAAG,IAU7G,CAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { normalizeQueryValue } from '../httpUtils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Parse a network-request selector from query params.
|
|
4
|
+
* Routes accept either an Argus buffer id or a raw CDP request id.
|
|
5
|
+
*/
|
|
6
|
+
export const parseNetRequestLookup = (searchParams) => {
|
|
7
|
+
const id = parsePositiveInt(searchParams.get('id'));
|
|
8
|
+
const requestId = normalizeQueryValue(searchParams.get('requestId'));
|
|
9
|
+
if (id == null && !requestId) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
return {
|
|
13
|
+
id: id ?? undefined,
|
|
14
|
+
requestId,
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
export const resolveNetRequestLookup = (buffer, lookup) => {
|
|
18
|
+
return resolveNetRequestLookupRecord(buffer, lookup)?.detail ?? null;
|
|
19
|
+
};
|
|
20
|
+
export const resolveNetRequestLookupRecord = (buffer, lookup) => {
|
|
21
|
+
if (lookup.id != null) {
|
|
22
|
+
return buffer.getRecordById(lookup.id);
|
|
23
|
+
}
|
|
24
|
+
if (lookup.requestId) {
|
|
25
|
+
return buffer.getRecordByRequestId(lookup.requestId);
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
};
|
|
29
|
+
const parsePositiveInt = (value) => {
|
|
30
|
+
if (!value) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
const parsed = Number(value);
|
|
34
|
+
if (!Number.isSafeInteger(parsed) || parsed < 1) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
return parsed;
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=netRequestLookup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"netRequestLookup.js","sourceRoot":"","sources":["../../../src/http/routes/netRequestLookup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAOrD;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,YAA6B,EAA2B,EAAE;IAC/F,MAAM,EAAE,GAAG,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IACnD,MAAM,SAAS,GAAG,mBAAmB,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAA;IACpE,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,OAAO;QACN,EAAE,EAAE,EAAE,IAAI,SAAS;QACnB,SAAS;KACT,CAAA;AACF,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAAiB,EAAE,MAAwB,EAA+B,EAAE;IACnH,OAAO,6BAA6B,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,IAAI,IAAI,CAAA;AACrE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,MAAiB,EAAE,MAAwB,EAA0B,EAAE;IACpH,IAAI,MAAM,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACvC,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACrD,CAAC;IAED,OAAO,IAAI,CAAA;AACZ,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,CAAC,KAAoB,EAAiB,EAAE;IAChE,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAC5B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,OAAO,MAAM,CAAA;AACd,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postAuthStateLoad.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postAuthStateLoad.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAK9C,eAAO,MAAM,MAAM,EAAE,YAkCpB,CAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { parseAuthStateSnapshot } from '@vforsh/argus-core';
|
|
2
|
+
import { emitRequest } from './types.js';
|
|
3
|
+
import { applyAuthStateToSession } from '../../cdp/authState.js';
|
|
4
|
+
import { normalizeQueryValue, respondError, respondInvalidBody, respondJson, readJsonBody } from '../httpUtils.js';
|
|
5
|
+
export const handle = async (req, res, _url, ctx) => {
|
|
6
|
+
const payload = await readJsonBody(req, res);
|
|
7
|
+
if (!payload) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
if (!payload.snapshot) {
|
|
11
|
+
return respondInvalidBody(res, 'snapshot is required');
|
|
12
|
+
}
|
|
13
|
+
if (payload.url !== undefined && typeof payload.url !== 'string') {
|
|
14
|
+
return respondInvalidBody(res, 'url must be a string when provided');
|
|
15
|
+
}
|
|
16
|
+
let snapshot;
|
|
17
|
+
try {
|
|
18
|
+
snapshot = parseAuthStateSnapshot(payload.snapshot, 'auth state snapshot');
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
return respondInvalidBody(res, error instanceof Error ? error.message : String(error));
|
|
22
|
+
}
|
|
23
|
+
const startupUrl = normalizeQueryValue(payload.url ?? null);
|
|
24
|
+
emitRequest(ctx, res, 'auth/state/load');
|
|
25
|
+
try {
|
|
26
|
+
const response = await applyAuthStateToSession({
|
|
27
|
+
session: ctx.cdpSession,
|
|
28
|
+
snapshot,
|
|
29
|
+
startupUrl: startupUrl ?? null,
|
|
30
|
+
});
|
|
31
|
+
respondJson(res, response);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
respondError(res, error);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=postAuthStateLoad.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postAuthStateLoad.js","sourceRoot":"","sources":["../../../src/http/routes/postAuthStateLoad.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAE3D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAElH,MAAM,CAAC,MAAM,MAAM,GAAiB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IACjE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAuB,GAAG,EAAE,GAAG,CAAC,CAAA;IAClE,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAM;IACP,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACvB,OAAO,kBAAkB,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAA;IACvD,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAClE,OAAO,kBAAkB,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAA;IACrE,CAAC;IAED,IAAI,QAAQ,CAAA;IACZ,IAAI,CAAC;QACJ,QAAQ,GAAG,sBAAsB,CAAC,OAAO,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAA;IAC3E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,kBAAkB,CAAC,GAAG,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACvF,CAAC;IAED,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,CAAA;IAC3D,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAA;IAExC,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC;YAC9C,OAAO,EAAE,GAAG,CAAC,UAAU;YACvB,QAAQ;YACR,UAAU,EAAE,UAAU,IAAI,IAAI;SAC9B,CAAC,CAAA;QACF,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACzB,CAAC;AACF,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postDialog.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postDialog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI9C,eAAO,MAAM,MAAM,EAAE,YA4CpB,CAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { emitRequest } from './types.js';
|
|
2
|
+
import { readJsonBody, respondError, respondInvalidBody, respondJson } from '../httpUtils.js';
|
|
3
|
+
export const handle = async (req, res, _url, ctx) => {
|
|
4
|
+
const payload = await readJsonBody(req, res);
|
|
5
|
+
if (!payload) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
emitRequest(ctx, res, 'dialog/handle');
|
|
9
|
+
const action = payload.action;
|
|
10
|
+
if (action !== 'accept' && action !== 'dismiss') {
|
|
11
|
+
respondInvalidBody(res, 'Dialog action must be "accept" or "dismiss"');
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const dialog = ctx.getDialog();
|
|
15
|
+
if (!dialog) {
|
|
16
|
+
respondJson(res, { ok: false, error: { message: 'No active browser dialog', code: 'no_active_dialog' } }, 409);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (payload.promptText != null && dialog.type !== 'prompt') {
|
|
20
|
+
respondJson(res, { ok: false, error: { message: 'Prompt text can only be sent to prompt dialogs', code: 'dialog_not_prompt' } }, 409);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
await ctx.pageCdpSession.sendAndWait('Page.handleJavaScriptDialog', {
|
|
25
|
+
accept: action === 'accept',
|
|
26
|
+
promptText: payload.promptText,
|
|
27
|
+
});
|
|
28
|
+
const response = {
|
|
29
|
+
ok: true,
|
|
30
|
+
action,
|
|
31
|
+
dialog,
|
|
32
|
+
};
|
|
33
|
+
respondJson(res, response);
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
respondError(res, error);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=postDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postDialog.js","sourceRoot":"","sources":["../../../src/http/routes/postDialog.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7F,MAAM,CAAC,MAAM,MAAM,GAAiB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IACjE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAsB,GAAG,EAAE,GAAG,CAAC,CAAA;IACjE,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAM;IACP,CAAC;IAED,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,CAAA;IAEtC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAC7B,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACjD,kBAAkB,CAAC,GAAG,EAAE,6CAA6C,CAAC,CAAA;QACtE,OAAM;IACP,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAA;IAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,0BAA0B,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAA0B,EAAE,GAAG,CAAC,CAAA;QACtI,OAAM;IACP,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5D,WAAW,CACV,GAAG,EACH,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,gDAAgD,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAA0B,EACtI,GAAG,CACH,CAAA;QACD,OAAM;IACP,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC,6BAA6B,EAAE;YACnE,MAAM,EAAE,MAAM,KAAK,QAAQ;YAC3B,UAAU,EAAE,OAAO,CAAC,UAAU;SAC9B,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAyB;YACtC,EAAE,EAAE,IAAI;YACR,MAAM;YACN,MAAM;SACN,CAAA;QACD,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACzB,CAAC;AACF,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postDomClick.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postDomClick.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAO9C,eAAO,MAAM,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"postDomClick.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postDomClick.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAO9C,eAAO,MAAM,MAAM,EAAE,YAoGpB,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { respondMultipleMatches } from './domSelectorRoute.js';
|
|
1
|
+
import { respondMissingElementRef, respondMultipleMatches, respondTargetResolutionError } from './domSelectorRoute.js';
|
|
2
2
|
import { emitRequest } from './types.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { clickDomNodes, clickAtPoint, resolveNodeTopLeft } from '../../cdp/mouse.js';
|
|
4
|
+
import { resolveElementTargets } from '../../cdp/dom/selector.js';
|
|
5
5
|
import { respondJson, respondInvalidBody, respondError, readJsonBody } from '../httpUtils.js';
|
|
6
6
|
export const handle = async (req, res, _url, ctx) => {
|
|
7
7
|
const payload = await readJsonBody(req, res);
|
|
@@ -9,9 +9,13 @@ export const handle = async (req, res, _url, ctx) => {
|
|
|
9
9
|
return;
|
|
10
10
|
}
|
|
11
11
|
const hasSelector = typeof payload.selector === 'string' && payload.selector.length > 0;
|
|
12
|
+
const hasRef = typeof payload.ref === 'string' && payload.ref.length > 0;
|
|
12
13
|
const hasCoords = payload.x != null || payload.y != null;
|
|
13
|
-
if (!hasSelector && !hasCoords) {
|
|
14
|
-
return respondInvalidBody(res, 'selector or x,y coordinates are required');
|
|
14
|
+
if (!hasSelector && !hasRef && !hasCoords) {
|
|
15
|
+
return respondInvalidBody(res, 'selector, ref, or x,y coordinates are required');
|
|
16
|
+
}
|
|
17
|
+
if (hasSelector && hasRef) {
|
|
18
|
+
return respondInvalidBody(res, 'selector and ref are mutually exclusive');
|
|
15
19
|
}
|
|
16
20
|
if (hasCoords) {
|
|
17
21
|
if (payload.x == null || payload.y == null || !Number.isFinite(payload.x) || !Number.isFinite(payload.y)) {
|
|
@@ -33,42 +37,55 @@ export const handle = async (req, res, _url, ctx) => {
|
|
|
33
37
|
}
|
|
34
38
|
emitRequest(ctx, res, 'dom/click');
|
|
35
39
|
try {
|
|
36
|
-
// Coordinate-only click (no selector)
|
|
37
|
-
if (!hasSelector) {
|
|
40
|
+
// Coordinate-only click (no selector/ref)
|
|
41
|
+
if (!hasSelector && !hasRef) {
|
|
38
42
|
await clickAtPoint(ctx.cdpSession, payload.x, payload.y, button);
|
|
39
43
|
const response = { ok: true, matches: 0, clicked: 1 };
|
|
40
44
|
return respondJson(res, response);
|
|
41
45
|
}
|
|
42
|
-
const
|
|
43
|
-
? await
|
|
46
|
+
const resolved = waitMs > 0
|
|
47
|
+
? await resolveElementTargets(ctx.cdpSession, ctx.elementRefs, {
|
|
44
48
|
selector: payload.selector,
|
|
49
|
+
ref: payload.ref,
|
|
45
50
|
all,
|
|
46
51
|
text: payload.text,
|
|
47
52
|
waitMs,
|
|
48
53
|
})
|
|
49
|
-
: await
|
|
50
|
-
|
|
51
|
-
|
|
54
|
+
: await resolveElementTargets(ctx.cdpSession, ctx.elementRefs, {
|
|
55
|
+
selector: payload.selector,
|
|
56
|
+
ref: payload.ref,
|
|
57
|
+
all,
|
|
58
|
+
text: payload.text,
|
|
59
|
+
});
|
|
60
|
+
if (resolved.missingRef && payload.ref) {
|
|
61
|
+
return respondMissingElementRef(res, payload.ref);
|
|
62
|
+
}
|
|
63
|
+
const { allHandles, handles } = resolved;
|
|
64
|
+
if (!all && allHandles.length > 1) {
|
|
65
|
+
return respondMultipleMatches(res, allHandles.length, 'click');
|
|
52
66
|
}
|
|
53
|
-
if (
|
|
67
|
+
if (allHandles.length === 0) {
|
|
54
68
|
const response = { ok: true, matches: 0, clicked: 0 };
|
|
55
69
|
return respondJson(res, response);
|
|
56
70
|
}
|
|
57
71
|
// Selector + coordinates: click at offset from each element's top-left
|
|
58
72
|
if (hasCoords) {
|
|
59
|
-
for (const
|
|
60
|
-
const topLeft = await resolveNodeTopLeft(ctx.cdpSession,
|
|
73
|
+
for (const handle of handles) {
|
|
74
|
+
const topLeft = await resolveNodeTopLeft(ctx.cdpSession, handle);
|
|
61
75
|
await clickAtPoint(ctx.cdpSession, topLeft.x + payload.x, topLeft.y + payload.y, button);
|
|
62
76
|
}
|
|
63
|
-
const response = { ok: true, matches:
|
|
77
|
+
const response = { ok: true, matches: allHandles.length, clicked: handles.length };
|
|
64
78
|
return respondJson(res, response);
|
|
65
79
|
}
|
|
66
80
|
// Selector only: click element center (existing behavior)
|
|
67
|
-
await clickDomNodes(ctx.cdpSession,
|
|
68
|
-
const response = { ok: true, matches:
|
|
81
|
+
await clickDomNodes(ctx.cdpSession, handles, button);
|
|
82
|
+
const response = { ok: true, matches: allHandles.length, clicked: handles.length };
|
|
69
83
|
respondJson(res, response);
|
|
70
84
|
}
|
|
71
85
|
catch (error) {
|
|
86
|
+
if (respondTargetResolutionError(res, error)) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
72
89
|
respondError(res, error);
|
|
73
90
|
}
|
|
74
91
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postDomClick.js","sourceRoot":"","sources":["../../../src/http/routes/postDomClick.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"postDomClick.js","sourceRoot":"","sources":["../../../src/http/routes/postDomClick.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAA;AACtH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE7F,MAAM,CAAC,MAAM,MAAM,GAAiB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IACjE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAkB,GAAG,EAAE,GAAG,CAAC,CAAA;IAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAM;IACP,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;IACvF,MAAM,MAAM,GAAG,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAA;IACxE,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,IAAI,CAAA;IAExD,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QAC3C,OAAO,kBAAkB,CAAC,GAAG,EAAE,gDAAgD,CAAC,CAAA;IACjF,CAAC;IAED,IAAI,WAAW,IAAI,MAAM,EAAE,CAAC;QAC3B,OAAO,kBAAkB,CAAC,GAAG,EAAE,yCAAyC,CAAC,CAAA;IAC1E,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1G,OAAO,kBAAkB,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAA;QACtE,CAAC;IACF,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,KAAK,CAAA;IAChC,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,kBAAkB,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAA;IACxD,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IAChD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAA;IACvC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,OAAO,kBAAkB,CAAC,GAAG,EAAE,0BAA0B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACpF,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,CAAA;IAChC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1E,OAAO,kBAAkB,CAAC,GAAG,EAAE,yCAAyC,CAAC,CAAA;IAC1E,CAAC;IAED,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,CAAA;IAElC,IAAI,CAAC;QACJ,0CAA0C;QAC1C,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAE,EAAE,OAAO,CAAC,CAAE,EAAE,MAAM,CAAC,CAAA;YAClE,MAAM,QAAQ,GAAqB,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAA;YACvE,OAAO,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;QAClC,CAAC;QAED,MAAM,QAAQ,GACb,MAAM,GAAG,CAAC;YACT,CAAC,CAAC,MAAM,qBAAqB,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE;gBAC7D,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,GAAG;gBACH,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM;aACN,CAAC;YACH,CAAC,CAAC,MAAM,qBAAqB,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE;gBAC7D,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,GAAG;gBACH,IAAI,EAAE,OAAO,CAAC,IAAI;aAClB,CAAC,CAAA;QAEL,IAAI,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YACxC,OAAO,wBAAwB,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;QAClD,CAAC;QACD,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAA;QAExC,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,OAAO,sBAAsB,CAAC,GAAG,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC/D,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAqB,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAA;YACvE,OAAO,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;QAClC,CAAC;QAED,uEAAuE;QACvE,IAAI,SAAS,EAAE,CAAC;YACf,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC9B,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;gBAChE,MAAM,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAE,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAE,EAAE,MAAM,CAAC,CAAA;YAC3F,CAAC;YACD,MAAM,QAAQ,GAAqB,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAA;YACpG,OAAO,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;QAClC,CAAC;QAED,0DAA0D;QAC1D,MAAM,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QACpD,MAAM,QAAQ,GAAqB,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAA;QACpG,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,4BAA4B,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;YAC9C,OAAM;QACP,CAAC;QACD,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACzB,CAAC;AACF,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postDomFill.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postDomFill.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAO9C,eAAO,MAAM,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"postDomFill.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postDomFill.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAO9C,eAAO,MAAM,MAAM,EAAE,YAsDpB,CAAA"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import { respondMultipleMatches } from './domSelectorRoute.js';
|
|
1
|
+
import { respondMissingElementRef, respondMultipleMatches, respondTargetResolutionError } from './domSelectorRoute.js';
|
|
2
2
|
import { emitRequest } from './types.js';
|
|
3
3
|
import { fillResolvedNodes } from '../../cdp/dom.js';
|
|
4
|
-
import {
|
|
4
|
+
import { resolveElementTargets } from '../../cdp/dom/selector.js';
|
|
5
5
|
import { respondJson, respondInvalidBody, respondError, readJsonBody } from '../httpUtils.js';
|
|
6
6
|
export const handle = async (req, res, _url, ctx) => {
|
|
7
7
|
const payload = await readJsonBody(req, res);
|
|
8
8
|
if (!payload) {
|
|
9
9
|
return;
|
|
10
10
|
}
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
const hasSelector = typeof payload.selector === 'string' && payload.selector.trim() !== '';
|
|
12
|
+
const hasRef = typeof payload.ref === 'string' && payload.ref.trim() !== '';
|
|
13
|
+
if (hasSelector === hasRef) {
|
|
14
|
+
return respondInvalidBody(res, 'Exactly one of selector or ref is required');
|
|
13
15
|
}
|
|
14
16
|
if (typeof payload.value !== 'string') {
|
|
15
17
|
return respondInvalidBody(res, 'value is required');
|
|
@@ -24,20 +26,28 @@ export const handle = async (req, res, _url, ctx) => {
|
|
|
24
26
|
}
|
|
25
27
|
emitRequest(ctx, res, 'dom/fill');
|
|
26
28
|
try {
|
|
27
|
-
const
|
|
29
|
+
const resolved = await resolveElementTargets(ctx.cdpSession, ctx.elementRefs, {
|
|
28
30
|
selector: payload.selector,
|
|
31
|
+
ref: payload.ref,
|
|
29
32
|
all,
|
|
30
33
|
text: payload.text,
|
|
31
34
|
waitMs,
|
|
32
35
|
});
|
|
33
|
-
if (
|
|
34
|
-
return
|
|
36
|
+
if (resolved.missingRef && payload.ref) {
|
|
37
|
+
return respondMissingElementRef(res, payload.ref);
|
|
35
38
|
}
|
|
36
|
-
const
|
|
37
|
-
|
|
39
|
+
const { allHandles, handles } = resolved;
|
|
40
|
+
if (!all && allHandles.length > 1) {
|
|
41
|
+
return respondMultipleMatches(res, allHandles.length, 'fill');
|
|
42
|
+
}
|
|
43
|
+
const filledCount = await fillResolvedNodes(ctx.cdpSession, handles, payload.value);
|
|
44
|
+
const response = { ok: true, matches: allHandles.length, filled: filledCount };
|
|
38
45
|
respondJson(res, response);
|
|
39
46
|
}
|
|
40
47
|
catch (error) {
|
|
48
|
+
if (respondTargetResolutionError(res, error)) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
41
51
|
respondError(res, error);
|
|
42
52
|
}
|
|
43
53
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postDomFill.js","sourceRoot":"","sources":["../../../src/http/routes/postDomFill.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"postDomFill.js","sourceRoot":"","sources":["../../../src/http/routes/postDomFill.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postDomFocus.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postDomFocus.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"postDomFocus.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postDomFocus.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAO9C,eAAO,MAAM,MAAM,EAAE,YAuCpB,CAAA"}
|