@vforsh/argus-watcher 0.1.13 → 0.1.15

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.
@@ -1,3 +1,4 @@
1
+ import type { DomKeydownEvent } from '@vforsh/argus-core';
1
2
  import type { CdpSessionHandle } from './connection.js';
2
3
  type KeyDefinition = {
3
4
  key: string;
@@ -10,6 +11,8 @@ type KeyDefinition = {
10
11
  * Lookup is case-insensitive.
11
12
  */
12
13
  export declare const resolveKeyDefinition: (key: string) => KeyDefinition | undefined;
14
+ /** Resolve a physical KeyboardEvent.code to its CDP key definition. */
15
+ export declare const resolveCodeDefinition: (code: string) => KeyDefinition | undefined;
13
16
  /**
14
17
  * Parse a comma-separated modifier string into a CDP bitmask.
15
18
  * Accepts aliases: ctrl/control, meta/cmd/command.
@@ -17,15 +20,25 @@ export declare const resolveKeyDefinition: (key: string) => KeyDefinition | unde
17
20
  */
18
21
  export declare const parseModifiers: (input?: string) => number;
19
22
  export type DispatchKeydownOptions = {
20
- key: string;
23
+ key?: string;
24
+ code?: string;
21
25
  selector?: string;
22
26
  modifiers?: number;
23
27
  };
24
28
  export type DispatchKeydownResult = {
25
29
  key: string;
30
+ code: string;
26
31
  modifiers: number;
27
32
  focused: boolean;
33
+ event: DomKeydownEvent;
34
+ };
35
+ type ResolveKeyboardEventOptions = {
36
+ key?: string;
37
+ code?: string;
38
+ modifiers?: number;
28
39
  };
40
+ /** Resolve user-facing key/code input into the exact event shape sent to Chrome. */
41
+ export declare const resolveKeyboardEvent: (options: ResolveKeyboardEventOptions) => DomKeydownEvent;
29
42
  /**
30
43
  * Dispatch a keyboard event sequence via CDP Input.dispatchKeyEvent.
31
44
  *
@@ -1 +1 @@
1
- {"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../../src/cdp/keyboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAOvD,KAAK,aAAa,GAAG;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AA2DD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAAI,KAAK,MAAM,KAAG,aAAa,GAAG,SAElE,CAAA;AAiBD;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,MAoB/C,CAAA;AAMD,MAAM,MAAM,sBAAsB,GAAG;IACpC,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IACnC,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;CAChB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAU,SAAS,gBAAgB,EAAE,SAAS,sBAAsB,KAAG,OAAO,CAAC,qBAAqB,CAyD/H,CAAA"}
1
+ {"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../../src/cdp/keyboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAOvD,KAAK,aAAa,GAAG;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAkED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAAI,KAAK,MAAM,KAAG,aAAa,GAAG,SAElE,CAAA;AAED,uEAAuE;AACvE,eAAO,MAAM,qBAAqB,GAAI,MAAM,MAAM,KAAG,aAAa,GAAG,SAEpE,CAAA;AAiBD;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,MAoB/C,CAAA;AAMD,MAAM,MAAM,sBAAsB,GAAG;IACpC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IACnC,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,eAAe,CAAA;CACtB,CAAA;AAED,KAAK,2BAA2B,GAAG;IAClC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,GAAI,SAAS,2BAA2B,KAAG,eAqC3E,CAAA;AA0BD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAU,SAAS,gBAAgB,EAAE,SAAS,sBAAsB,KAAG,OAAO,CAAC,qBAAqB,CA8C/H,CAAA"}
@@ -1,8 +1,10 @@
1
1
  import { resolveDomSelectorMatches } from './mouse.js';
2
- const buildKeyMap = () => {
3
- const map = new Map();
2
+ const buildKeyMaps = () => {
3
+ const byKey = new Map();
4
+ const byCode = new Map();
4
5
  const put = (lookup, def) => {
5
- map.set(lookup.toLowerCase(), def);
6
+ byKey.set(lookup.toLowerCase(), def);
7
+ byCode.set(def.code.toLowerCase(), def);
6
8
  };
7
9
  // Letters a-z
8
10
  for (let i = 0; i < 26; i++) {
@@ -43,15 +45,19 @@ const buildKeyMap = () => {
43
45
  const name = `F${i}`;
44
46
  put(name, { key: name, code: name, keyCode: 111 + i });
45
47
  }
46
- return map;
48
+ return { byKey, byCode };
47
49
  };
48
- const KEY_MAP = buildKeyMap();
50
+ const KEY_MAPS = buildKeyMaps();
49
51
  /**
50
52
  * Resolve a key name to its CDP key definition.
51
53
  * Lookup is case-insensitive.
52
54
  */
53
55
  export const resolveKeyDefinition = (key) => {
54
- return KEY_MAP.get(key.toLowerCase());
56
+ return KEY_MAPS.byKey.get(key.toLowerCase());
57
+ };
58
+ /** Resolve a physical KeyboardEvent.code to its CDP key definition. */
59
+ export const resolveCodeDefinition = (code) => {
60
+ return KEY_MAPS.byCode.get(code.toLowerCase());
55
61
  };
56
62
  // ─────────────────────────────────────────────────────────────────────────────
57
63
  // Modifier parser
@@ -90,6 +96,59 @@ export const parseModifiers = (input) => {
90
96
  }
91
97
  return mask;
92
98
  };
99
+ /** Resolve user-facing key/code input into the exact event shape sent to Chrome. */
100
+ export const resolveKeyboardEvent = (options) => {
101
+ const modifiers = options.modifiers ?? 0;
102
+ const keyInput = normalizeOptionalString(options.key);
103
+ const codeInput = normalizeOptionalString(options.code);
104
+ if (!keyInput && !codeInput) {
105
+ throw new Error('key or code is required');
106
+ }
107
+ const keyDef = keyInput ? resolveKeyDefinition(keyInput) : undefined;
108
+ const codeDef = codeInput ? resolveCodeDefinition(codeInput) : undefined;
109
+ const baseDef = codeDef ?? keyDef;
110
+ if (!baseDef) {
111
+ if (codeInput && !keyInput) {
112
+ throw new Error(`Unknown code: "${codeInput}"`);
113
+ }
114
+ throw new Error(`Unknown key: "${keyInput}"`);
115
+ }
116
+ const key = resolveEventKey(keyInput, baseDef, modifiers);
117
+ const text = resolveEventText(key, baseDef);
118
+ const event = {
119
+ key,
120
+ code: codeInput ?? baseDef.code,
121
+ keyCode: baseDef.keyCode,
122
+ modifiers,
123
+ altKey: (modifiers & MODIFIER_BITS.alt) !== 0,
124
+ ctrlKey: (modifiers & MODIFIER_BITS.ctrl) !== 0,
125
+ metaKey: (modifiers & MODIFIER_BITS.meta) !== 0,
126
+ shiftKey: (modifiers & MODIFIER_BITS.shift) !== 0,
127
+ };
128
+ if (text !== undefined) {
129
+ event.text = text;
130
+ }
131
+ return event;
132
+ };
133
+ const normalizeOptionalString = (value) => {
134
+ const normalized = value?.trim();
135
+ return normalized ? normalized : undefined;
136
+ };
137
+ const resolveEventKey = (keyInput, def, modifiers) => {
138
+ const semanticKey = keyInput ?? def.key;
139
+ if (isSingleLetter(semanticKey)) {
140
+ return isShift(modifiers) ? semanticKey.toUpperCase() : semanticKey.toLowerCase();
141
+ }
142
+ return semanticKey;
143
+ };
144
+ const resolveEventText = (key, def) => {
145
+ if (key.length === 1) {
146
+ return key;
147
+ }
148
+ return def.text;
149
+ };
150
+ const isSingleLetter = (value) => /^[a-z]$/i.test(value);
151
+ const isShift = (modifiers) => (modifiers & MODIFIER_BITS.shift) !== 0;
93
152
  /**
94
153
  * Dispatch a keyboard event sequence via CDP Input.dispatchKeyEvent.
95
154
  *
@@ -98,7 +157,8 @@ export const parseModifiers = (input) => {
98
157
  * 3. Dispatch: printable → keyDown+char+keyUp; non-printable → rawKeyDown+keyUp
99
158
  */
100
159
  export const dispatchKeydown = async (session, options) => {
101
- const { key, selector, modifiers = 0 } = options;
160
+ const { selector } = options;
161
+ const event = resolveKeyboardEvent(options);
102
162
  let focused = false;
103
163
  // 1. Focus selector if provided
104
164
  if (selector) {
@@ -115,34 +175,24 @@ export const dispatchKeydown = async (session, options) => {
115
175
  await session.sendAndWait('DOM.focus', { nodeId });
116
176
  focused = true;
117
177
  }
118
- // 2. Resolve key definition
119
- const def = resolveKeyDefinition(key);
120
- if (!def) {
121
- throw new Error(`Unknown key: "${key}"`);
122
- }
123
- // Apply shift to text for single-character printable keys
124
- let text = def.text;
125
- if (text && text.length === 1 && (modifiers & 8) !== 0) {
126
- text = text.toUpperCase();
127
- }
128
- const isPrintable = text != null && text !== '\r';
178
+ const isPrintable = event.text != null && event.text !== '\r';
129
179
  // 3. Dispatch key events
130
180
  const baseParams = {
131
- code: def.code,
132
- key: def.key,
133
- windowsVirtualKeyCode: def.keyCode,
134
- nativeVirtualKeyCode: def.keyCode,
135
- modifiers,
181
+ code: event.code,
182
+ key: event.key,
183
+ windowsVirtualKeyCode: event.keyCode,
184
+ nativeVirtualKeyCode: event.keyCode,
185
+ modifiers: event.modifiers,
136
186
  };
137
187
  if (isPrintable) {
138
- await session.sendAndWait('Input.dispatchKeyEvent', { ...baseParams, type: 'keyDown', text });
139
- await session.sendAndWait('Input.dispatchKeyEvent', { ...baseParams, type: 'char', text });
188
+ await session.sendAndWait('Input.dispatchKeyEvent', { ...baseParams, type: 'keyDown', text: event.text });
189
+ await session.sendAndWait('Input.dispatchKeyEvent', { ...baseParams, type: 'char', text: event.text });
140
190
  await session.sendAndWait('Input.dispatchKeyEvent', { ...baseParams, type: 'keyUp' });
141
191
  }
142
192
  else {
143
- await session.sendAndWait('Input.dispatchKeyEvent', { ...baseParams, type: 'rawKeyDown', text: def.text });
193
+ await session.sendAndWait('Input.dispatchKeyEvent', { ...baseParams, type: 'rawKeyDown', text: event.text });
144
194
  await session.sendAndWait('Input.dispatchKeyEvent', { ...baseParams, type: 'keyUp' });
145
195
  }
146
- return { key: def.key, modifiers, focused };
196
+ return { key: event.key, code: event.code, modifiers: event.modifiers, focused, event };
147
197
  };
148
198
  //# sourceMappingURL=keyboard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../../src/cdp/keyboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../../src/cdp/keyboard.ts"],"names":[],"mappings":"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"}
@@ -56,6 +56,9 @@ function validateAddRequest(body) {
56
56
  if (payload.times !== undefined && (!Number.isInteger(payload.times) || payload.times < 1)) {
57
57
  return 'times must be an integer >= 1';
58
58
  }
59
+ if (payload.scope !== undefined && payload.scope !== 'page' && payload.scope !== 'selected') {
60
+ return 'scope must be one of: page, selected';
61
+ }
59
62
  return null;
60
63
  }
61
64
  const validateMatch = (match) => {
@@ -1 +1 @@
1
- {"version":3,"file":"netMock.js","sourceRoot":"","sources":["../../../src/http/routes/netMock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"netMock.js","sourceRoot":"","sources":["../../../src/http/routes/netMock.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"postDomKeydown.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postDomKeydown.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,KAAK,mDA2BhB,CAAA"}
1
+ {"version":3,"file":"postDomKeydown.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postDomKeydown.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,KAAK,mDA+ChB,CAAA"}
@@ -6,12 +6,23 @@ export const route = defineJsonRoute({
6
6
  parseBody: true,
7
7
  endpoint: 'dom/keydown',
8
8
  validate: (payload) => {
9
- if (!payload.key || typeof payload.key !== 'string') {
10
- return 'key is required';
9
+ const hasKey = typeof payload.key === 'string' && payload.key.trim() !== '';
10
+ const hasCode = typeof payload.code === 'string' && payload.code.trim() !== '';
11
+ if (payload.key != null && !hasKey) {
12
+ return 'key must be a non-empty string';
13
+ }
14
+ if (payload.code != null && !hasCode) {
15
+ return 'code must be a non-empty string';
16
+ }
17
+ if (!hasKey && !hasCode) {
18
+ return 'key or code is required';
11
19
  }
12
20
  if (payload.selector != null && (typeof payload.selector !== 'string' || payload.selector.trim() === '')) {
13
21
  return 'selector must be a non-empty string';
14
22
  }
23
+ if (payload.modifiers != null && typeof payload.modifiers !== 'string') {
24
+ return 'modifiers must be a string';
25
+ }
15
26
  try {
16
27
  parseModifiers(payload.modifiers);
17
28
  }
@@ -23,10 +34,18 @@ export const route = defineJsonRoute({
23
34
  handle: async ({ ctx, body: payload }) => {
24
35
  const result = await dispatchKeydown(ctx.cdpSession, {
25
36
  key: payload.key,
37
+ code: payload.code,
26
38
  selector: payload.selector,
27
39
  modifiers: parseModifiers(payload.modifiers),
28
40
  });
29
- return { ok: true, key: result.key, modifiers: result.modifiers, focused: result.focused };
41
+ return {
42
+ ok: true,
43
+ key: result.key,
44
+ code: result.code,
45
+ modifiers: result.modifiers,
46
+ focused: result.focused,
47
+ event: result.event,
48
+ };
30
49
  },
31
50
  });
32
51
  //# sourceMappingURL=postDomKeydown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"postDomKeydown.js","sourceRoot":"","sources":["../../../src/http/routes/postDomKeydown.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,MAAM,CAAC,MAAM,KAAK,GAAG,eAAe,CAAwC;IAC3E,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,cAAc;IACpB,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,aAAa;IACvB,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE;QACrB,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrD,OAAO,iBAAiB,CAAA;QACzB,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAC1G,OAAO,qCAAqC,CAAA;QAC7C,CAAC;QACD,IAAI,CAAC;YACJ,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAA;QACpE,CAAC;QACD,OAAO,IAAI,CAAA;IACZ,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE;YACpD,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC;SAC5C,CAAC,CAAA;QACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAA;IAC3F,CAAC;CACD,CAAC,CAAA"}
1
+ {"version":3,"file":"postDomKeydown.js","sourceRoot":"","sources":["../../../src/http/routes/postDomKeydown.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,MAAM,CAAC,MAAM,KAAK,GAAG,eAAe,CAAwC;IAC3E,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,cAAc;IACpB,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,aAAa;IACvB,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE;QACrB,MAAM,MAAM,GAAG,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAA;QAC3E,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAA;QAE9E,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACpC,OAAO,gCAAgC,CAAA;QACxC,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACtC,OAAO,iCAAiC,CAAA;QACzC,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,yBAAyB,CAAA;QACjC,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAC1G,OAAO,qCAAqC,CAAA;QAC7C,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YACxE,OAAO,4BAA4B,CAAA;QACpC,CAAC;QACD,IAAI,CAAC;YACJ,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAA;QACpE,CAAC;QACD,OAAO,IAAI,CAAA;IACZ,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE;YACpD,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC;SAC5C,CAAC,CAAA;QACF,OAAO;YACN,EAAE,EAAE,IAAI;YACR,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE,MAAM,CAAC,KAAK;SACnB,CAAA;IACF,CAAC;CACD,CAAC,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import type { NetMockAddRequest, NetMockAddResponse, NetMockClearResponse, NetMockRemoveResponse, NetMockStatusResponse } from '@vforsh/argus-core';
2
- import type { CdpSessionHandle } from '../cdp/connection.js';
2
+ import { type NetMockInterceptionBinding } from './NetMockInterception.js';
3
3
  /**
4
4
  * Watcher-side network mocking via the CDP `Fetch` domain.
5
5
  *
@@ -9,8 +9,8 @@ import type { CdpSessionHandle } from '../cdp/connection.js';
9
9
  * rule is removed, so an idle watcher adds zero request latency.
10
10
  */
11
11
  export type NetMockController = {
12
- /** Subscribe to `Fetch.requestPaused` on the watcher session. Call once at startup. */
13
- bind: (session: CdpSessionHandle) => void;
12
+ /** Subscribe to `Fetch.requestPaused` and provide page/selected target routing. Call once at startup. */
13
+ bind: (binding: NetMockInterceptionBinding) => void;
14
14
  getStatus: (ctx: {
15
15
  attached: boolean;
16
16
  }) => NetMockStatusResponse;
@@ -18,7 +18,9 @@ export type NetMockController = {
18
18
  removeRule: (id: number) => Promise<NetMockRemoveResponse>;
19
19
  clearRules: () => Promise<NetMockClearResponse>;
20
20
  /** Re-arm interception on a freshly attached target when rules exist. */
21
- onAttach: (session: CdpSessionHandle) => Promise<void>;
21
+ onAttach: () => Promise<void>;
22
+ /** Move selected-scope interception when iframe selection changes. */
23
+ onTargetChanged: () => Promise<void>;
22
24
  /** Mark interception as inactive after the target detached. */
23
25
  onDetach: () => void;
24
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"NetMockController.d.ts","sourceRoot":"","sources":["../../src/net/NetMockController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EAEpB,qBAAqB,EAErB,qBAAqB,EACrB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAmB5D;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC/B,uFAAuF;IACvF,IAAI,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAA;IACzC,SAAS,EAAE,CAAC,GAAG,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,KAAK,qBAAqB,CAAA;IAChE,OAAO,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACrF,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAA;IAC1D,UAAU,EAAE,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAC/C,yEAAyE;IACzE,QAAQ,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,IAAI,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,uBAAuB,QAAO,iBAiN1C,CAAA"}
1
+ {"version":3,"file":"NetMockController.d.ts","sourceRoot":"","sources":["../../src/net/NetMockController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EAEpB,qBAAqB,EAGrB,qBAAqB,EACrB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAuB,KAAK,0BAA0B,EAA6B,MAAM,0BAA0B,CAAA;AAS1H;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC/B,yGAAyG;IACzG,IAAI,EAAE,CAAC,OAAO,EAAE,0BAA0B,KAAK,IAAI,CAAA;IACnD,SAAS,EAAE,CAAC,GAAG,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,KAAK,qBAAqB,CAAA;IAChE,OAAO,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACrF,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAA;IAC1D,UAAU,EAAE,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAC/C,yEAAyE;IACzE,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,sEAAsE;IACtE,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,IAAI,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,uBAAuB,QAAO,iBA2J1C,CAAA"}
@@ -1,11 +1,8 @@
1
+ import { NetMockInterception } from './NetMockInterception.js';
1
2
  export const createNetMockController = () => {
2
- let session = null;
3
- let bound = false;
4
- let enabled = false;
5
3
  let lastError = null;
6
4
  let nextRuleId = 1;
7
5
  const rules = [];
8
- const hasActiveRules = () => rules.some(isRuleActive);
9
6
  const recordError = (error) => {
10
7
  lastError = { message: error instanceof Error ? error.message : String(error) };
11
8
  const code = error?.code;
@@ -13,59 +10,16 @@ export const createNetMockController = () => {
13
10
  lastError.code = code;
14
11
  }
15
12
  };
16
- const enableInterception = async () => {
17
- if (!session || !session.isAttached()) {
18
- enabled = false;
19
- return false;
20
- }
21
- try {
22
- await session.sendAndWait('Fetch.enable', { patterns: [{ urlPattern: '*', requestStage: 'Request' }] });
23
- enabled = true;
24
- return true;
25
- }
26
- catch (error) {
27
- enabled = false;
28
- recordError(error);
29
- return false;
30
- }
31
- };
32
- const disableInterception = async () => {
33
- if (!enabled) {
34
- return;
35
- }
36
- enabled = false;
37
- if (!session || !session.isAttached()) {
38
- return;
39
- }
40
- try {
41
- await session.sendAndWait('Fetch.disable');
42
- }
43
- catch (error) {
44
- recordError(error);
45
- }
13
+ const interception = new NetMockInterception((request) => void handleRequestPaused(request), recordError);
14
+ const bind = (binding) => {
15
+ interception.bind(binding);
16
+ void interception.reconcile(getActiveScopes(rules));
46
17
  };
47
- const bind = (nextSession) => {
48
- session = nextSession;
49
- if (bound) {
50
- return;
51
- }
52
- bound = true;
53
- nextSession.onEvent('Fetch.requestPaused', (params) => {
54
- void handleRequestPaused(params);
55
- });
56
- };
57
- const handleRequestPaused = async (params) => {
58
- const paused = params;
59
- const requestId = paused?.requestId;
60
- if (typeof requestId !== 'string' || requestId === '') {
61
- return;
62
- }
63
- const url = paused.request?.url ?? '';
64
- const method = paused.request?.method ?? 'GET';
65
- const resourceType = paused.resourceType ?? '';
66
- const rule = rules.find((candidate) => ruleMatches(candidate, url, method, resourceType));
18
+ const handleRequestPaused = async (paused) => {
19
+ const rule = rules.find((candidate) => interception.matchesScope(candidate.scope ?? 'page', paused) &&
20
+ ruleMatches(candidate, paused.url, paused.method, paused.resourceType));
67
21
  if (!rule) {
68
- await sendAction('Fetch.continueRequest', { requestId });
22
+ await sendAction(paused, 'Fetch.continueRequest', { requestId: paused.requestId });
69
23
  return;
70
24
  }
71
25
  rule.hits += 1;
@@ -74,60 +28,47 @@ export const createNetMockController = () => {
74
28
  }
75
29
  const action = rule.action;
76
30
  if (action.kind === 'block') {
77
- await sendAction('Fetch.failRequest', { requestId, errorReason: 'BlockedByClient' });
31
+ await sendAction(paused, 'Fetch.failRequest', { requestId: paused.requestId, errorReason: 'BlockedByClient' });
78
32
  return;
79
33
  }
80
34
  if (action.kind === 'fail') {
81
- await sendAction('Fetch.failRequest', { requestId, errorReason: action.reason });
35
+ await sendAction(paused, 'Fetch.failRequest', { requestId: paused.requestId, errorReason: action.reason });
82
36
  return;
83
37
  }
84
38
  if (action.kind === 'fulfill') {
85
- const fulfillParams = { requestId, responseCode: action.status };
39
+ const fulfillParams = { requestId: paused.requestId, responseCode: action.status };
86
40
  if (action.headers && action.headers.length > 0) {
87
41
  fulfillParams.responseHeaders = action.headers;
88
42
  }
89
43
  if (action.bodyBase64 != null) {
90
44
  fulfillParams.body = action.bodyBase64;
91
45
  }
92
- await sendAction('Fetch.fulfillRequest', fulfillParams);
46
+ await sendAction(paused, 'Fetch.fulfillRequest', fulfillParams);
93
47
  return;
94
48
  }
95
49
  // action.kind === 'continue'
96
- const continueParams = { requestId };
50
+ const continueParams = { requestId: paused.requestId };
97
51
  if (action.rewriteHost) {
98
- const rewritten = rewriteUrlHost(url, action.rewriteHost);
52
+ const rewritten = rewriteUrlHost(paused.url, action.rewriteHost);
99
53
  if (rewritten) {
100
54
  continueParams.url = rewritten;
101
55
  }
102
56
  }
103
57
  if (action.setHeaders && action.setHeaders.length > 0) {
104
- continueParams.headers = mergeHeaders(paused.request?.headers ?? {}, action.setHeaders);
58
+ continueParams.headers = mergeHeaders(paused.headers, action.setHeaders);
105
59
  }
106
- await sendAction('Fetch.continueRequest', continueParams);
60
+ await sendAction(paused, 'Fetch.continueRequest', continueParams);
107
61
  };
108
62
  /**
109
63
  * Resolve a paused request. Failures are expected when the request was
110
64
  * canceled mid-flight (navigation, tab close) — those are swallowed so a
111
65
  * noisy page cannot poison `lastError`.
112
66
  */
113
- const sendAction = async (cdpMethod, params) => {
114
- if (!session || !session.isAttached()) {
115
- return;
116
- }
117
- try {
118
- await session.sendAndWait(cdpMethod, params);
119
- }
120
- catch (error) {
121
- if (isBenignInterceptionError(error)) {
122
- return;
123
- }
124
- recordError(error);
125
- }
126
- };
67
+ const sendAction = async (request, cdpMethod, params) => interception.sendRequestCommand(request, cdpMethod, params);
127
68
  const getStatus = (ctx) => ({
128
69
  ok: true,
129
70
  attached: ctx.attached,
130
- enabled,
71
+ enabled: interception.enabled,
131
72
  rules: rules.map(toPublicRule),
132
73
  lastError,
133
74
  });
@@ -135,6 +76,7 @@ export const createNetMockController = () => {
135
76
  lastError = null;
136
77
  const rule = {
137
78
  id: nextRuleId++,
79
+ scope: input.scope ?? 'page',
138
80
  match: input.match,
139
81
  action: input.action,
140
82
  delayMs: input.delayMs,
@@ -147,7 +89,7 @@ export const createNetMockController = () => {
147
89
  if (!attached) {
148
90
  return { ok: true, attached: false, enabled: false, rule: toPublicRule(rule) };
149
91
  }
150
- const applied = enabled || (await enableInterception());
92
+ const applied = await interception.reconcile(getActiveScopes(rules));
151
93
  return {
152
94
  ok: true,
153
95
  attached: true,
@@ -163,32 +105,34 @@ export const createNetMockController = () => {
163
105
  rules.splice(index, 1);
164
106
  }
165
107
  if (rules.length === 0) {
166
- await disableInterception();
108
+ await interception.reconcile(new Set());
167
109
  }
168
- return { ok: true, removed, enabled };
110
+ else {
111
+ await interception.reconcile(getActiveScopes(rules));
112
+ }
113
+ return { ok: true, removed, enabled: interception.enabled };
169
114
  };
170
115
  const clearRules = async () => {
171
116
  const removed = rules.length;
172
117
  rules.length = 0;
173
- await disableInterception();
174
- return { ok: true, removed, enabled };
118
+ await interception.reconcile(new Set());
119
+ return { ok: true, removed, enabled: interception.enabled };
175
120
  };
176
- const onAttach = async (nextSession) => {
177
- session = nextSession;
178
- enabled = false;
179
- if (!hasActiveRules()) {
180
- return;
181
- }
182
- const applied = await enableInterception();
121
+ const onAttach = async () => {
122
+ const applied = await interception.reconcile(getActiveScopes(rules), true);
183
123
  if (!applied && lastError) {
184
124
  console.warn(`[NetMock] Failed to re-enable interception on attach: ${lastError.message}`);
185
125
  }
186
126
  };
127
+ const onTargetChanged = async () => {
128
+ await interception.reconcile(getActiveScopes(rules));
129
+ };
187
130
  const onDetach = () => {
188
- enabled = false;
131
+ interception.onDetach();
189
132
  };
190
- return { bind, getStatus, addRule, removeRule, clearRules, onAttach, onDetach };
133
+ return { bind, getStatus, addRule, removeRule, clearRules, onAttach, onTargetChanged, onDetach };
191
134
  };
135
+ const getActiveScopes = (rules) => new Set(rules.filter(isRuleActive).map((rule) => rule.scope ?? 'page'));
192
136
  const isRuleActive = (rule) => rule.times == null || rule.hits < rule.times;
193
137
  const ruleMatches = (rule, url, method, resourceType) => {
194
138
  if (!isRuleActive(rule)) {
@@ -243,16 +187,9 @@ const mergeHeaders = (original, overrides) => {
243
187
  }
244
188
  return [...merged.values()];
245
189
  };
246
- const isBenignInterceptionError = (error) => {
247
- const code = error?.code;
248
- if (code === 'cdp_not_attached') {
249
- return true;
250
- }
251
- const message = error instanceof Error ? error.message : String(error);
252
- return message.includes('Invalid InterceptionId') || message.includes('Inspected target navigated or closed');
253
- };
254
190
  const toPublicRule = (rule) => ({
255
191
  id: rule.id,
192
+ scope: rule.scope ?? 'page',
256
193
  match: rule.match,
257
194
  action: rule.action,
258
195
  delayMs: rule.delayMs,