@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.
Files changed (223) hide show
  1. package/README.md +5 -1
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/buffer/NetBuffer.d.ts +35 -11
  4. package/dist/buffer/NetBuffer.d.ts.map +1 -1
  5. package/dist/buffer/NetBuffer.js +64 -55
  6. package/dist/buffer/NetBuffer.js.map +1 -1
  7. package/dist/cdp/accessibility.d.ts +12 -1
  8. package/dist/cdp/accessibility.d.ts.map +1 -1
  9. package/dist/cdp/accessibility.js +88 -45
  10. package/dist/cdp/accessibility.js.map +1 -1
  11. package/dist/cdp/auth.d.ts +31 -1
  12. package/dist/cdp/auth.d.ts.map +1 -1
  13. package/dist/cdp/auth.js +299 -10
  14. package/dist/cdp/auth.js.map +1 -1
  15. package/dist/cdp/authState.d.ts +9 -0
  16. package/dist/cdp/authState.d.ts.map +1 -0
  17. package/dist/cdp/authState.js +44 -0
  18. package/dist/cdp/authState.js.map +1 -0
  19. package/dist/cdp/browserCookies.d.ts +8 -0
  20. package/dist/cdp/browserCookies.d.ts.map +1 -0
  21. package/dist/cdp/browserCookies.js +160 -0
  22. package/dist/cdp/browserCookies.js.map +1 -0
  23. package/dist/cdp/dom/fill.d.ts +2 -1
  24. package/dist/cdp/dom/fill.d.ts.map +1 -1
  25. package/dist/cdp/dom/fill.js +7 -7
  26. package/dist/cdp/dom/fill.js.map +1 -1
  27. package/dist/cdp/dom/info.d.ts +4 -2
  28. package/dist/cdp/dom/info.d.ts.map +1 -1
  29. package/dist/cdp/dom/info.js +20 -11
  30. package/dist/cdp/dom/info.js.map +1 -1
  31. package/dist/cdp/dom/selector.d.ts +35 -0
  32. package/dist/cdp/dom/selector.d.ts.map +1 -1
  33. package/dist/cdp/dom/selector.js +118 -25
  34. package/dist/cdp/dom/selector.js.map +1 -1
  35. package/dist/cdp/dom/types.d.ts +1 -0
  36. package/dist/cdp/dom/types.d.ts.map +1 -1
  37. package/dist/cdp/editor.d.ts.map +1 -1
  38. package/dist/cdp/editor.js +55 -3
  39. package/dist/cdp/editor.js.map +1 -1
  40. package/dist/cdp/elementRefs.d.ts +15 -0
  41. package/dist/cdp/elementRefs.d.ts.map +1 -0
  42. package/dist/cdp/elementRefs.js +30 -0
  43. package/dist/cdp/elementRefs.js.map +1 -0
  44. package/dist/cdp/locate.d.ts +7 -0
  45. package/dist/cdp/locate.d.ts.map +1 -0
  46. package/dist/cdp/locate.js +68 -0
  47. package/dist/cdp/locate.js.map +1 -0
  48. package/dist/cdp/mouse.d.ts +8 -7
  49. package/dist/cdp/mouse.d.ts.map +1 -1
  50. package/dist/cdp/mouse.js +40 -38
  51. package/dist/cdp/mouse.js.map +1 -1
  52. package/dist/cdp/networkBody.d.ts +19 -0
  53. package/dist/cdp/networkBody.d.ts.map +1 -0
  54. package/dist/cdp/networkBody.js +70 -0
  55. package/dist/cdp/networkBody.js.map +1 -0
  56. package/dist/cdp/networkCapture.d.ts +4 -0
  57. package/dist/cdp/networkCapture.d.ts.map +1 -1
  58. package/dist/cdp/networkCapture.js +307 -35
  59. package/dist/cdp/networkCapture.js.map +1 -1
  60. package/dist/cdp/redaction.d.ts +4 -0
  61. package/dist/cdp/redaction.d.ts.map +1 -1
  62. package/dist/cdp/redaction.js +37 -1
  63. package/dist/cdp/redaction.js.map +1 -1
  64. package/dist/cdp/screenshot.d.ts +1 -0
  65. package/dist/cdp/screenshot.d.ts.map +1 -1
  66. package/dist/cdp/screenshot.js +66 -15
  67. package/dist/cdp/screenshot.js.map +1 -1
  68. package/dist/cdp/storage.d.ts +8 -0
  69. package/dist/cdp/storage.d.ts.map +1 -0
  70. package/dist/cdp/storage.js +70 -0
  71. package/dist/cdp/storage.js.map +1 -0
  72. package/dist/cdp/watcher.d.ts +1 -0
  73. package/dist/cdp/watcher.d.ts.map +1 -1
  74. package/dist/cdp/watcher.js +5 -1
  75. package/dist/cdp/watcher.js.map +1 -1
  76. package/dist/dialogs/DialogTracker.d.ts +13 -0
  77. package/dist/dialogs/DialogTracker.d.ts.map +1 -0
  78. package/dist/dialogs/DialogTracker.js +22 -0
  79. package/dist/dialogs/DialogTracker.js.map +1 -0
  80. package/dist/events.d.ts +7 -2
  81. package/dist/events.d.ts.map +1 -1
  82. package/dist/http/routes/authCookies.d.ts +11 -0
  83. package/dist/http/routes/authCookies.d.ts.map +1 -0
  84. package/dist/http/routes/authCookies.js +142 -0
  85. package/dist/http/routes/authCookies.js.map +1 -0
  86. package/dist/http/routes/domSelectorRoute.d.ts +8 -0
  87. package/dist/http/routes/domSelectorRoute.d.ts.map +1 -1
  88. package/dist/http/routes/domSelectorRoute.js +28 -3
  89. package/dist/http/routes/domSelectorRoute.js.map +1 -1
  90. package/dist/http/routes/getAuthState.d.ts +3 -0
  91. package/dist/http/routes/getAuthState.d.ts.map +1 -0
  92. package/dist/http/routes/getAuthState.js +24 -0
  93. package/dist/http/routes/getAuthState.js.map +1 -0
  94. package/dist/http/routes/getDialog.d.ts +3 -0
  95. package/dist/http/routes/getDialog.d.ts.map +1 -0
  96. package/dist/http/routes/getDialog.js +11 -0
  97. package/dist/http/routes/getDialog.js.map +1 -0
  98. package/dist/http/routes/getNet.d.ts.map +1 -1
  99. package/dist/http/routes/getNet.js +14 -8
  100. package/dist/http/routes/getNet.js.map +1 -1
  101. package/dist/http/routes/getNetRequest.d.ts +3 -0
  102. package/dist/http/routes/getNetRequest.d.ts.map +1 -0
  103. package/dist/http/routes/getNetRequest.js +23 -0
  104. package/dist/http/routes/getNetRequest.js.map +1 -0
  105. package/dist/http/routes/getNetRequestBody.d.ts +3 -0
  106. package/dist/http/routes/getNetRequestBody.d.ts.map +1 -0
  107. package/dist/http/routes/getNetRequestBody.js +80 -0
  108. package/dist/http/routes/getNetRequestBody.js.map +1 -0
  109. package/dist/http/routes/getNetRequests.d.ts +3 -0
  110. package/dist/http/routes/getNetRequests.d.ts.map +1 -0
  111. package/dist/http/routes/getNetRequests.js +23 -0
  112. package/dist/http/routes/getNetRequests.js.map +1 -0
  113. package/dist/http/routes/getNetTail.d.ts.map +1 -1
  114. package/dist/http/routes/getNetTail.js +44 -9
  115. package/dist/http/routes/getNetTail.js.map +1 -1
  116. package/dist/http/routes/getStatus.js +1 -0
  117. package/dist/http/routes/getStatus.js.map +1 -1
  118. package/dist/http/routes/index.d.ts +1 -1
  119. package/dist/http/routes/index.d.ts.map +1 -1
  120. package/dist/http/routes/index.js +27 -0
  121. package/dist/http/routes/index.js.map +1 -1
  122. package/dist/http/routes/netFilters.d.ts +29 -0
  123. package/dist/http/routes/netFilters.d.ts.map +1 -0
  124. package/dist/http/routes/netFilters.js +160 -0
  125. package/dist/http/routes/netFilters.js.map +1 -0
  126. package/dist/http/routes/netRequestLookup.d.ts +14 -0
  127. package/dist/http/routes/netRequestLookup.d.ts.map +1 -0
  128. package/dist/http/routes/netRequestLookup.js +39 -0
  129. package/dist/http/routes/netRequestLookup.js.map +1 -0
  130. package/dist/http/routes/postAuthStateLoad.d.ts +3 -0
  131. package/dist/http/routes/postAuthStateLoad.d.ts.map +1 -0
  132. package/dist/http/routes/postAuthStateLoad.js +37 -0
  133. package/dist/http/routes/postAuthStateLoad.js.map +1 -0
  134. package/dist/http/routes/postDialog.d.ts +3 -0
  135. package/dist/http/routes/postDialog.d.ts.map +1 -0
  136. package/dist/http/routes/postDialog.js +39 -0
  137. package/dist/http/routes/postDialog.js.map +1 -0
  138. package/dist/http/routes/postDomClick.d.ts.map +1 -1
  139. package/dist/http/routes/postDomClick.js +35 -18
  140. package/dist/http/routes/postDomClick.js.map +1 -1
  141. package/dist/http/routes/postDomFill.d.ts.map +1 -1
  142. package/dist/http/routes/postDomFill.js +19 -9
  143. package/dist/http/routes/postDomFill.js.map +1 -1
  144. package/dist/http/routes/postDomFocus.d.ts.map +1 -1
  145. package/dist/http/routes/postDomFocus.js +22 -9
  146. package/dist/http/routes/postDomFocus.js.map +1 -1
  147. package/dist/http/routes/postDomHover.d.ts.map +1 -1
  148. package/dist/http/routes/postDomHover.js +22 -9
  149. package/dist/http/routes/postDomHover.js.map +1 -1
  150. package/dist/http/routes/postDomInfo.d.ts.map +1 -1
  151. package/dist/http/routes/postDomInfo.js +7 -3
  152. package/dist/http/routes/postDomInfo.js.map +1 -1
  153. package/dist/http/routes/postDomScroll.d.ts.map +1 -1
  154. package/dist/http/routes/postDomScroll.js +1 -1
  155. package/dist/http/routes/postDomScroll.js.map +1 -1
  156. package/dist/http/routes/postDomScrollTo.d.ts.map +1 -1
  157. package/dist/http/routes/postDomScrollTo.js +1 -1
  158. package/dist/http/routes/postDomScrollTo.js.map +1 -1
  159. package/dist/http/routes/postLocate.d.ts +5 -0
  160. package/dist/http/routes/postLocate.d.ts.map +1 -0
  161. package/dist/http/routes/postLocate.js +67 -0
  162. package/dist/http/routes/postLocate.js.map +1 -0
  163. package/dist/http/routes/postNetClear.d.ts +3 -0
  164. package/dist/http/routes/postNetClear.d.ts.map +1 -0
  165. package/dist/http/routes/postNetClear.js +14 -0
  166. package/dist/http/routes/postNetClear.js.map +1 -0
  167. package/dist/http/routes/postSnapshot.d.ts.map +1 -1
  168. package/dist/http/routes/postSnapshot.js +1 -1
  169. package/dist/http/routes/postSnapshot.js.map +1 -1
  170. package/dist/http/routes/postStorageLocal.d.ts +1 -2
  171. package/dist/http/routes/postStorageLocal.d.ts.map +1 -1
  172. package/dist/http/routes/postStorageLocal.js +2 -30
  173. package/dist/http/routes/postStorageLocal.js.map +1 -1
  174. package/dist/http/routes/postStorageSession.d.ts +2 -0
  175. package/dist/http/routes/postStorageSession.d.ts.map +1 -0
  176. package/dist/http/routes/postStorageSession.js +3 -0
  177. package/dist/http/routes/postStorageSession.js.map +1 -0
  178. package/dist/http/routes/storage.d.ts +5 -0
  179. package/dist/http/routes/storage.d.ts.map +1 -0
  180. package/dist/http/routes/storage.js +43 -0
  181. package/dist/http/routes/storage.js.map +1 -0
  182. package/dist/http/server.d.ts +27 -3
  183. package/dist/http/server.d.ts.map +1 -1
  184. package/dist/http/server.js.map +1 -1
  185. package/dist/native-messaging/session-manager.d.ts +14 -1
  186. package/dist/native-messaging/session-manager.d.ts.map +1 -1
  187. package/dist/native-messaging/session-manager.js +56 -23
  188. package/dist/native-messaging/session-manager.js.map +1 -1
  189. package/dist/native-messaging/types.d.ts +28 -2
  190. package/dist/native-messaging/types.d.ts.map +1 -1
  191. package/dist/net/filtering.d.ts +32 -0
  192. package/dist/net/filtering.d.ts.map +1 -0
  193. package/dist/net/filtering.js +144 -0
  194. package/dist/net/filtering.js.map +1 -0
  195. package/dist/runtime/watcherServices.d.ts.map +1 -1
  196. package/dist/runtime/watcherServices.js +5 -1
  197. package/dist/runtime/watcherServices.js.map +1 -1
  198. package/dist/sources/cdp-source.d.ts.map +1 -1
  199. package/dist/sources/cdp-source.js +13 -0
  200. package/dist/sources/cdp-source.js.map +1 -1
  201. package/dist/sources/extension-frame-runtime.d.ts.map +1 -1
  202. package/dist/sources/extension-frame-runtime.js +25 -4
  203. package/dist/sources/extension-frame-runtime.js.map +1 -1
  204. package/dist/sources/extension-frame-state.d.ts +3 -2
  205. package/dist/sources/extension-frame-state.d.ts.map +1 -1
  206. package/dist/sources/extension-frame-state.js +29 -8
  207. package/dist/sources/extension-frame-state.js.map +1 -1
  208. package/dist/sources/extension-session-events.d.ts.map +1 -1
  209. package/dist/sources/extension-session-events.js +4 -2
  210. package/dist/sources/extension-session-events.js.map +1 -1
  211. package/dist/sources/extension-source.d.ts.map +1 -1
  212. package/dist/sources/extension-source.js +135 -36
  213. package/dist/sources/extension-source.js.map +1 -1
  214. package/dist/sources/types.d.ts +15 -1
  215. package/dist/sources/types.d.ts.map +1 -1
  216. package/dist/startWatcherRuntime.d.ts.map +1 -1
  217. package/dist/startWatcherRuntime.js +65 -1
  218. package/dist/startWatcherRuntime.js.map +1 -1
  219. package/package.json +1 -1
  220. package/dist/cdp/storageLocal.d.ts +0 -8
  221. package/dist/cdp/storageLocal.d.ts.map +0 -1
  222. package/dist/cdp/storageLocal.js +0 -70
  223. 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,3 @@
1
+ import type { RouteHandler } from './types.js';
2
+ export declare const handle: RouteHandler;
3
+ //# sourceMappingURL=postAuthStateLoad.d.ts.map
@@ -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,3 @@
1
+ import type { RouteHandler } from './types.js';
2
+ export declare const handle: RouteHandler;
3
+ //# sourceMappingURL=postDialog.d.ts.map
@@ -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,YAiFpB,CAAA"}
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 { resolveDomSelectorMatches, clickDomNodes, clickAtPoint, resolveNodeTopLeft } from '../../cdp/mouse.js';
4
- import { resolveSelectorTargets } from '../../cdp/dom/selector.js';
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 { allNodeIds, nodeIds } = waitMs > 0
43
- ? await resolveSelectorTargets(ctx.cdpSession, {
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 resolveDomSelectorMatches(ctx.cdpSession, payload.selector, all, payload.text);
50
- if (!all && allNodeIds.length > 1) {
51
- return respondMultipleMatches(res, allNodeIds.length, 'click');
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 (allNodeIds.length === 0) {
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 nodeId of nodeIds) {
60
- const topLeft = await resolveNodeTopLeft(ctx.cdpSession, nodeId);
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: allNodeIds.length, clicked: nodeIds.length };
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, nodeIds, button);
68
- const response = { ok: true, matches: allNodeIds.length, clicked: nodeIds.length };
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":"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"}
1
+ {"version":3,"file":"postDomClick.js","sourceRoot":"","sources":["../../../src/http/routes/postDomClick.ts"],"names":[],"mappings":"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"}
@@ -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,YA4CpB,CAAA"}
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 { resolveSelectorTargets } from '../../cdp/dom/selector.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);
8
8
  if (!payload) {
9
9
  return;
10
10
  }
11
- if (!payload.selector || typeof payload.selector !== 'string') {
12
- return respondInvalidBody(res, 'selector is required');
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 { allNodeIds, nodeIds } = await resolveSelectorTargets(ctx.cdpSession, {
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 (!all && allNodeIds.length > 1) {
34
- return respondMultipleMatches(res, allNodeIds.length, 'fill');
36
+ if (resolved.missingRef && payload.ref) {
37
+ return respondMissingElementRef(res, payload.ref);
35
38
  }
36
- const filledCount = await fillResolvedNodes(ctx.cdpSession, nodeIds, payload.value);
37
- const response = { ok: true, matches: allNodeIds.length, filled: filledCount };
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;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAClE,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,CAAiB,GAAG,EAAE,GAAG,CAAC,CAAA;IAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAM;IACP,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC/D,OAAO,kBAAkB,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAA;IACvD,CAAC;IAED,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,kBAAkB,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAA;IACpD,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,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,UAAU,CAAC,CAAA;IAEjC,IAAI,CAAC;QACJ,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,sBAAsB,CAAC,GAAG,CAAC,UAAU,EAAE;YAC5E,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,GAAG;YACH,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM;SACN,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,OAAO,sBAAsB,CAAC,GAAG,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC9D,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QACnF,MAAM,QAAQ,GAAoB,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;QAC/F,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
+ {"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;AAM9C,eAAO,MAAM,MAAM,EAAE,YA2BpB,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"}