@vforsh/argus-watcher 0.1.3 → 0.1.5

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 (131) hide show
  1. package/README.md +1 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/buffer/AuthHeaderBuffer.d.ts +18 -0
  4. package/dist/buffer/AuthHeaderBuffer.d.ts.map +1 -0
  5. package/dist/buffer/AuthHeaderBuffer.js +26 -0
  6. package/dist/buffer/AuthHeaderBuffer.js.map +1 -0
  7. package/dist/buffer/NetBuffer.d.ts +2 -0
  8. package/dist/buffer/NetBuffer.d.ts.map +1 -1
  9. package/dist/buffer/NetBuffer.js +5 -0
  10. package/dist/buffer/NetBuffer.js.map +1 -1
  11. package/dist/cdp/auth.d.ts +8 -0
  12. package/dist/cdp/auth.d.ts.map +1 -0
  13. package/dist/cdp/auth.js +60 -0
  14. package/dist/cdp/auth.js.map +1 -0
  15. package/dist/cdp/connection.d.ts +16 -1
  16. package/dist/cdp/connection.d.ts.map +1 -1
  17. package/dist/cdp/connection.js +1 -1
  18. package/dist/cdp/connection.js.map +1 -1
  19. package/dist/cdp/dom/selector.d.ts.map +1 -1
  20. package/dist/cdp/dom/selector.js +22 -0
  21. package/dist/cdp/dom/selector.js.map +1 -1
  22. package/dist/cdp/dom/setFile.d.ts.map +1 -1
  23. package/dist/cdp/dom/setFile.js +5 -62
  24. package/dist/cdp/dom/setFile.js.map +1 -1
  25. package/dist/cdp/dom/types.d.ts +0 -1
  26. package/dist/cdp/dom/types.d.ts.map +1 -1
  27. package/dist/cdp/dom.d.ts +0 -2
  28. package/dist/cdp/dom.d.ts.map +1 -1
  29. package/dist/cdp/dom.js +0 -1
  30. package/dist/cdp/dom.js.map +1 -1
  31. package/dist/cdp/editor.d.ts +23 -0
  32. package/dist/cdp/editor.d.ts.map +1 -0
  33. package/dist/cdp/editor.js +266 -0
  34. package/dist/cdp/editor.js.map +1 -0
  35. package/dist/cdp/eval.d.ts +1 -0
  36. package/dist/cdp/eval.d.ts.map +1 -1
  37. package/dist/cdp/eval.js +57 -12
  38. package/dist/cdp/eval.js.map +1 -1
  39. package/dist/cdp/mouse.d.ts.map +1 -1
  40. package/dist/cdp/mouse.js +12 -8
  41. package/dist/cdp/mouse.js.map +1 -1
  42. package/dist/cdp/networkCapture.d.ts.map +1 -1
  43. package/dist/cdp/networkCapture.js +16 -6
  44. package/dist/cdp/networkCapture.js.map +1 -1
  45. package/dist/cdp/redaction.d.ts +4 -0
  46. package/dist/cdp/redaction.d.ts.map +1 -1
  47. package/dist/cdp/redaction.js +91 -0
  48. package/dist/cdp/redaction.js.map +1 -1
  49. package/dist/cdp/screenshot.d.ts.map +1 -1
  50. package/dist/cdp/screenshot.js +2 -6
  51. package/dist/cdp/screenshot.js.map +1 -1
  52. package/dist/cdp/text-filter.d.ts +0 -13
  53. package/dist/cdp/text-filter.d.ts.map +1 -1
  54. package/dist/cdp/text-filter.js +2 -20
  55. package/dist/cdp/text-filter.js.map +1 -1
  56. package/dist/cdp/tracing.d.ts +1 -0
  57. package/dist/cdp/tracing.d.ts.map +1 -1
  58. package/dist/cdp/tracing.js +49 -5
  59. package/dist/cdp/tracing.js.map +1 -1
  60. package/dist/events.d.ts +4 -1
  61. package/dist/events.d.ts.map +1 -1
  62. package/dist/http/router.d.ts.map +1 -1
  63. package/dist/http/router.js +8 -2
  64. package/dist/http/router.js.map +1 -1
  65. package/dist/http/routes/getAuthCookies.d.ts +3 -0
  66. package/dist/http/routes/getAuthCookies.d.ts.map +1 -0
  67. package/dist/http/routes/getAuthCookies.js +19 -0
  68. package/dist/http/routes/getAuthCookies.js.map +1 -0
  69. package/dist/http/routes/getAuthInspect.d.ts +3 -0
  70. package/dist/http/routes/getAuthInspect.d.ts.map +1 -0
  71. package/dist/http/routes/getAuthInspect.js +21 -0
  72. package/dist/http/routes/getAuthInspect.js.map +1 -0
  73. package/dist/http/routes/postAttach.d.ts.map +1 -1
  74. package/dist/http/routes/postAttach.js +4 -3
  75. package/dist/http/routes/postAttach.js.map +1 -1
  76. package/dist/http/routes/postCodeEdit.d.ts +3 -0
  77. package/dist/http/routes/postCodeEdit.d.ts.map +1 -0
  78. package/dist/http/routes/postCodeEdit.js +32 -0
  79. package/dist/http/routes/postCodeEdit.js.map +1 -0
  80. package/dist/http/routes/postCodeGrep.d.ts +3 -0
  81. package/dist/http/routes/postCodeGrep.d.ts.map +1 -0
  82. package/dist/http/routes/postCodeGrep.js +26 -0
  83. package/dist/http/routes/postCodeGrep.js.map +1 -0
  84. package/dist/http/routes/postCodeList.d.ts +3 -0
  85. package/dist/http/routes/postCodeList.d.ts.map +1 -0
  86. package/dist/http/routes/postCodeList.js +20 -0
  87. package/dist/http/routes/postCodeList.js.map +1 -0
  88. package/dist/http/routes/postCodeRead.d.ts +3 -0
  89. package/dist/http/routes/postCodeRead.d.ts.map +1 -0
  90. package/dist/http/routes/postCodeRead.js +30 -0
  91. package/dist/http/routes/postCodeRead.js.map +1 -0
  92. package/dist/http/routes/postDetach.d.ts.map +1 -1
  93. package/dist/http/routes/postDetach.js +4 -3
  94. package/dist/http/routes/postDetach.js.map +1 -1
  95. package/dist/http/routes/postDomSetFile.d.ts.map +1 -1
  96. package/dist/http/routes/postDomSetFile.js +0 -9
  97. package/dist/http/routes/postDomSetFile.js.map +1 -1
  98. package/dist/http/routes/postEval.d.ts.map +1 -1
  99. package/dist/http/routes/postEval.js +1 -0
  100. package/dist/http/routes/postEval.js.map +1 -1
  101. package/dist/http/server.d.ts +6 -1
  102. package/dist/http/server.d.ts.map +1 -1
  103. package/dist/http/server.js.map +1 -1
  104. package/dist/index.d.ts +1 -1
  105. package/dist/index.d.ts.map +1 -1
  106. package/dist/index.js +112 -98
  107. package/dist/index.js.map +1 -1
  108. package/dist/native-messaging/session-manager.d.ts +4 -1
  109. package/dist/native-messaging/session-manager.d.ts.map +1 -1
  110. package/dist/native-messaging/session-manager.js +11 -3
  111. package/dist/native-messaging/session-manager.js.map +1 -1
  112. package/dist/native-messaging/types.d.ts +36 -3
  113. package/dist/native-messaging/types.d.ts.map +1 -1
  114. package/dist/sources/cdp-source.d.ts.map +1 -1
  115. package/dist/sources/cdp-source.js +1 -0
  116. package/dist/sources/cdp-source.js.map +1 -1
  117. package/dist/sources/extension-frame-state.d.ts +64 -0
  118. package/dist/sources/extension-frame-state.d.ts.map +1 -0
  119. package/dist/sources/extension-frame-state.js +117 -0
  120. package/dist/sources/extension-frame-state.js.map +1 -0
  121. package/dist/sources/extension-log-events.d.ts +15 -0
  122. package/dist/sources/extension-log-events.d.ts.map +1 -0
  123. package/dist/sources/extension-log-events.js +101 -0
  124. package/dist/sources/extension-log-events.js.map +1 -0
  125. package/dist/sources/extension-source.d.ts +0 -3
  126. package/dist/sources/extension-source.d.ts.map +1 -1
  127. package/dist/sources/extension-source.js +469 -185
  128. package/dist/sources/extension-source.js.map +1 -1
  129. package/dist/sources/types.d.ts +19 -2
  130. package/dist/sources/types.d.ts.map +1 -1
  131. package/package.json +1 -1
@@ -0,0 +1,32 @@
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
+ if (typeof payload.url !== 'string' || payload.url.trim() === '') {
9
+ return respondInvalidBody(res, 'url must be a non-empty string');
10
+ }
11
+ if (typeof payload.oldString !== 'string' || payload.oldString === '') {
12
+ return respondInvalidBody(res, 'oldString must be a non-empty string');
13
+ }
14
+ if (typeof payload.newString !== 'string') {
15
+ return respondInvalidBody(res, 'newString must be a string');
16
+ }
17
+ emitRequest(ctx, res, 'code/edit');
18
+ try {
19
+ const response = await ctx.runtimeEditor.edit({
20
+ url: payload.url,
21
+ oldString: payload.oldString,
22
+ newString: payload.newString,
23
+ dryRun: payload.dryRun ?? false,
24
+ replaceAll: payload.replaceAll ?? false,
25
+ });
26
+ respondJson(res, response);
27
+ }
28
+ catch (error) {
29
+ respondError(res, error);
30
+ }
31
+ };
32
+ //# sourceMappingURL=postCodeEdit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postCodeEdit.js","sourceRoot":"","sources":["../../../src/http/routes/postCodeEdit.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,CAAkB,GAAG,EAAE,GAAG,CAAC,CAAA;IAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAM;IACP,CAAC;IAED,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAClE,OAAO,kBAAkB,CAAC,GAAG,EAAE,gCAAgC,CAAC,CAAA;IACjE,CAAC;IACD,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAO,CAAC,SAAS,KAAK,EAAE,EAAE,CAAC;QACvE,OAAO,kBAAkB,CAAC,GAAG,EAAE,sCAAsC,CAAC,CAAA;IACvE,CAAC;IACD,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3C,OAAO,kBAAkB,CAAC,GAAG,EAAE,4BAA4B,CAAC,CAAA;IAC7D,CAAC;IAED,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,CAAA;IAElC,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAqB,MAAM,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC;YAC/D,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;YAC/B,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK;SACvC,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=postCodeGrep.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postCodeGrep.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postCodeGrep.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI9C,eAAO,MAAM,MAAM,EAAE,YAwBpB,CAAA"}
@@ -0,0 +1,26 @@
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
+ if (typeof payload.pattern !== 'string' || payload.pattern.trim() === '') {
9
+ return respondInvalidBody(res, 'pattern must be a non-empty string');
10
+ }
11
+ if (payload.urlPattern != null && (typeof payload.urlPattern !== 'string' || payload.urlPattern.trim() === '')) {
12
+ return respondInvalidBody(res, 'urlPattern must be a non-empty string');
13
+ }
14
+ emitRequest(ctx, res, 'code/grep');
15
+ try {
16
+ const response = await ctx.runtimeEditor.grep({
17
+ pattern: payload.pattern,
18
+ urlPattern: payload.urlPattern,
19
+ });
20
+ respondJson(res, response);
21
+ }
22
+ catch (error) {
23
+ respondError(res, error);
24
+ }
25
+ };
26
+ //# sourceMappingURL=postCodeGrep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postCodeGrep.js","sourceRoot":"","sources":["../../../src/http/routes/postCodeGrep.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,CAAkB,GAAG,EAAE,GAAG,CAAC,CAAA;IAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAM;IACP,CAAC;IAED,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1E,OAAO,kBAAkB,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAA;IACrE,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,IAAI,IAAI,IAAI,CAAC,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAChH,OAAO,kBAAkB,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAA;IACxE,CAAC;IAED,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,CAAA;IAElC,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAqB,MAAM,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC;YAC/D,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,UAAU,EAAE,OAAO,CAAC,UAAU;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=postCodeList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postCodeList.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postCodeList.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI9C,eAAO,MAAM,MAAM,EAAE,YAkBpB,CAAA"}
@@ -0,0 +1,20 @@
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
+ if (payload.pattern != null && (typeof payload.pattern !== 'string' || payload.pattern.trim() === '')) {
9
+ return respondInvalidBody(res, 'pattern must be a non-empty string');
10
+ }
11
+ emitRequest(ctx, res, 'code/list');
12
+ try {
13
+ const response = await ctx.runtimeEditor.list({ pattern: payload.pattern });
14
+ respondJson(res, response);
15
+ }
16
+ catch (error) {
17
+ respondError(res, error);
18
+ }
19
+ };
20
+ //# sourceMappingURL=postCodeList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postCodeList.js","sourceRoot":"","sources":["../../../src/http/routes/postCodeList.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,CAAkB,GAAG,EAAE,GAAG,CAAC,CAAA;IAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAM;IACP,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACvG,OAAO,kBAAkB,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAA;IACrE,CAAC;IAED,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,CAAA;IAElC,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAqB,MAAM,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;QAC7F,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=postCodeRead.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postCodeRead.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postCodeRead.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI9C,eAAO,MAAM,MAAM,EAAE,YA4BpB,CAAA"}
@@ -0,0 +1,30 @@
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
+ if (typeof payload.url !== 'string' || payload.url.trim() === '') {
9
+ return respondInvalidBody(res, 'url must be a non-empty string');
10
+ }
11
+ if (payload.offset != null && (!Number.isInteger(payload.offset) || payload.offset < 0)) {
12
+ return respondInvalidBody(res, 'offset must be a non-negative integer');
13
+ }
14
+ if (payload.limit != null && (!Number.isInteger(payload.limit) || payload.limit <= 0)) {
15
+ return respondInvalidBody(res, 'limit must be a positive integer');
16
+ }
17
+ emitRequest(ctx, res, 'code/read');
18
+ try {
19
+ const response = await ctx.runtimeEditor.read({
20
+ url: payload.url,
21
+ offset: payload.offset,
22
+ limit: payload.limit,
23
+ });
24
+ respondJson(res, response);
25
+ }
26
+ catch (error) {
27
+ respondError(res, error);
28
+ }
29
+ };
30
+ //# sourceMappingURL=postCodeRead.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postCodeRead.js","sourceRoot":"","sources":["../../../src/http/routes/postCodeRead.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,CAAkB,GAAG,EAAE,GAAG,CAAC,CAAA;IAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAM;IACP,CAAC;IAED,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAClE,OAAO,kBAAkB,CAAC,GAAG,EAAE,gCAAgC,CAAC,CAAA;IACjE,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QACzF,OAAO,kBAAkB,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAA;IACxE,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;QACvF,OAAO,kBAAkB,CAAC,GAAG,EAAE,kCAAkC,CAAC,CAAA;IACnE,CAAC;IAED,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,CAAA;IAElC,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAqB,MAAM,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC;YAC/D,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;SACpB,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"postDetach.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postDetach.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI9C,eAAO,MAAM,MAAM,EAAE,YAsBpB,CAAA"}
1
+ {"version":3,"file":"postDetach.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postDetach.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI9C,eAAO,MAAM,MAAM,EAAE,YAuBpB,CAAA"}
@@ -8,12 +8,13 @@ export const handle = async (req, res, _url, ctx) => {
8
8
  if (!payload) {
9
9
  return;
10
10
  }
11
- if (typeof payload.tabId !== 'number') {
12
- return respondInvalidBody(res, 'tabId is required');
11
+ const targetId = typeof payload.targetId === 'string' ? payload.targetId : typeof payload.tabId === 'number' ? String(payload.tabId) : null;
12
+ if (!targetId) {
13
+ return respondInvalidBody(res, 'targetId is required');
13
14
  }
14
15
  emitRequest(ctx, res, 'detach');
15
16
  try {
16
- ctx.sourceHandle.detachTarget(payload.tabId);
17
+ ctx.sourceHandle.detachTarget(targetId);
17
18
  respondJson(res, { ok: true, message: 'Detach request sent' });
18
19
  }
19
20
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"postDetach.js","sourceRoot":"","sources":["../../../src/http/routes/postDetach.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,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,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,CAAC;QACrC,OAAO,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;IACxG,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,YAAY,CAAoB,GAAG,EAAE,GAAG,CAAC,CAAA;IAC/D,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAM;IACP,CAAC;IAED,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,kBAAkB,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAA;IACpD,CAAC;IAED,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;IAE/B,IAAI,CAAC;QACJ,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC5C,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAA;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACzB,CAAC;AACF,CAAC,CAAA"}
1
+ {"version":3,"file":"postDetach.js","sourceRoot":"","sources":["../../../src/http/routes/postDetach.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,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,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,CAAC;QACrC,OAAO,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;IACxG,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,YAAY,CAAwC,GAAG,EAAE,GAAG,CAAC,CAAA;IACnF,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAM;IACP,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC3I,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,kBAAkB,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAA;IACvD,CAAC;IAED,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;IAE/B,IAAI,CAAC;QACJ,GAAG,CAAC,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;QACvC,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAA;IAC/D,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":"postDomSetFile.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postDomSetFile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAM9C,eAAO,MAAM,MAAM,EAAE,YA6EpB,CAAA"}
1
+ {"version":3,"file":"postDomSetFile.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postDomSetFile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAM9C,eAAO,MAAM,MAAM,EAAE,YA+DpB,CAAA"}
@@ -48,15 +48,6 @@ export const handle = async (req, res, _url, ctx) => {
48
48
  }, 400);
49
49
  }
50
50
  const updatedCount = await setFileOnResolvedNodes(ctx.cdpSession, nodeIds, payload.files);
51
- if (nodeIds.length > 0 && updatedCount === 0) {
52
- return respondJson(res, {
53
- ok: false,
54
- error: {
55
- message: 'Matched file input element(s), but none accepted files after DOM.setFileInputFiles + input/change dispatch',
56
- code: 'set_file_failed',
57
- },
58
- }, 500);
59
- }
60
51
  const response = { ok: true, matches: allNodeIds.length, updated: updatedCount };
61
52
  respondJson(res, response);
62
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"postDomSetFile.js","sourceRoot":"","sources":["../../../src/http/routes/postDomSetFile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postDomSetFile.js","sourceRoot":"","sources":["../../../src/http/routes/postDomSetFile.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"postEval.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postEval.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAK9C,eAAO,MAAM,MAAM,EAAE,YAuBpB,CAAA"}
1
+ {"version":3,"file":"postEval.d.ts","sourceRoot":"","sources":["../../../src/http/routes/postEval.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAK9C,eAAO,MAAM,MAAM,EAAE,YAwBpB,CAAA"}
@@ -14,6 +14,7 @@ export const handle = async (req, res, _url, ctx) => {
14
14
  const response = await evaluateExpression(ctx.cdpSession, {
15
15
  expression: payload.expression,
16
16
  awaitPromise: normalizeBoolean(payload.awaitPromise, true),
17
+ replMode: normalizeBoolean(payload.replMode, true),
17
18
  returnByValue: normalizeBoolean(payload.returnByValue, true),
18
19
  timeoutMs: normalizeTimeout(payload.timeoutMs),
19
20
  });
@@ -1 +1 @@
1
- {"version":3,"file":"postEval.js","sourceRoot":"","sources":["../../../src/http/routes/postEval.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAEjI,MAAM,CAAC,MAAM,MAAM,GAAiB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IACjE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAc,GAAG,EAAE,GAAG,CAAC,CAAA;IACzD,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAM;IACP,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnE,OAAO,kBAAkB,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAA;IACzD,CAAC;IAED,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;IAE7B,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAiB,MAAM,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE;YACvE,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,YAAY,EAAE,gBAAgB,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC;YAC1D,aAAa,EAAE,gBAAgB,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC;YAC5D,SAAS,EAAE,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC;SAC9C,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"}
1
+ {"version":3,"file":"postEval.js","sourceRoot":"","sources":["../../../src/http/routes/postEval.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAEjI,MAAM,CAAC,MAAM,MAAM,GAAiB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IACjE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAc,GAAG,EAAE,GAAG,CAAC,CAAA;IACzD,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAM;IACP,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnE,OAAO,kBAAkB,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAA;IACzD,CAAC;IAED,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;IAE7B,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAiB,MAAM,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE;YACvE,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,YAAY,EAAE,gBAAgB,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC;YAC1D,QAAQ,EAAE,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;YAClD,aAAa,EAAE,gBAAgB,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC;YAC5D,SAAS,EAAE,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC;SAC9C,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"}
@@ -2,6 +2,7 @@ import type { LogLevel, WatcherRecord } from '@vforsh/argus-core';
2
2
  import type { LogBuffer } from '../buffer/LogBuffer.js';
3
3
  import type { NetBuffer } from '../buffer/NetBuffer.js';
4
4
  import type { CdpSessionHandle } from '../cdp/connection.js';
5
+ import type { RuntimeEditor } from '../cdp/editor.js';
5
6
  import type { TraceRecorder } from '../cdp/tracing.js';
6
7
  import type { Screenshotter } from '../cdp/screenshot.js';
7
8
  import type { CdpSourceHandle } from '../sources/types.js';
@@ -9,7 +10,7 @@ import type { EmulationController } from '../emulation/EmulationController.js';
9
10
  import type { ThrottleController } from '../throttle/ThrottleController.js';
10
11
  /** Optional metadata for the HTTP request event. */
11
12
  export type HttpRequestEventMetadata = {
12
- endpoint: 'logs' | 'tail' | 'net' | 'net/tail' | 'eval' | 'trace/start' | 'trace/stop' | 'screenshot' | 'snapshot' | 'dom/tree' | 'dom/info' | 'dom/hover' | 'dom/click' | 'dom/keydown' | 'dom/add' | 'dom/remove' | 'dom/modify' | 'dom/set-file' | 'dom/focus' | 'dom/fill' | 'dom/submit' | 'dom/scroll' | 'dom/scroll-to' | 'emulation' | 'throttle' | 'storage/local' | 'reload' | 'shutdown' | 'targets' | 'attach' | 'detach';
13
+ endpoint: 'logs' | 'tail' | 'net' | 'net/tail' | 'auth/cookies' | 'eval' | 'trace/start' | 'trace/stop' | 'screenshot' | 'snapshot' | 'code/list' | 'code/read' | 'code/grep' | 'dom/tree' | 'dom/info' | 'dom/hover' | 'dom/click' | 'dom/keydown' | 'dom/add' | 'dom/remove' | 'dom/modify' | 'dom/set-file' | 'dom/focus' | 'dom/fill' | 'dom/scroll' | 'dom/scroll-to' | 'emulation' | 'throttle' | 'storage/local' | 'reload' | 'shutdown' | 'targets' | 'attach' | 'detach';
13
14
  remoteAddress: string | null;
14
15
  query?: {
15
16
  after?: number;
@@ -21,6 +22,9 @@ export type HttpRequestEventMetadata = {
21
22
  sinceTs?: number;
22
23
  timeoutMs?: number;
23
24
  grep?: string;
25
+ origin?: string;
26
+ domain?: string;
27
+ includeValues?: boolean;
24
28
  };
25
29
  ts: number;
26
30
  };
@@ -42,6 +46,7 @@ export type HttpServerOptions = {
42
46
  cdpSession: CdpSessionHandle;
43
47
  traceRecorder: TraceRecorder;
44
48
  screenshotter: Screenshotter;
49
+ runtimeEditor: RuntimeEditor;
45
50
  /** Emulation controller for GET/POST /emulation endpoints. */
46
51
  emulationController: EmulationController;
47
52
  /** Throttle controller for GET/POST /throttle endpoints. */
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAU5B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAiFtC,4DAA4D;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,OAA0B,EAA6B,EAAE;IAC9F,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC7C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QACjF,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;IAEF,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAC5B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAA;IAChC,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAA;IAEjF,OAAO;QACN,IAAI;QACJ,KAAK,EAAE,GAAG,EAAE,CACX,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACtB,IAAI,KAAK,EAAE,CAAC;oBACX,MAAM,CAAC,KAAK,CAAC,CAAA;oBACb,OAAM;gBACP,CAAC;gBACD,OAAO,EAAE,CAAA;YACV,CAAC,CAAC,CAAA;QACH,CAAC,CAAC;KACH,CAAA;AACF,CAAC,CAAA"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAW5B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAwFtC,4DAA4D;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,OAA0B,EAA6B,EAAE;IAC9F,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC7C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QACjF,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;IAEF,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAC5B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAA;IAChC,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAA;IAEjF,OAAO;QACN,IAAI;QACJ,KAAK,EAAE,GAAG,EAAE,CACX,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACtB,IAAI,KAAK,EAAE,CAAC;oBACX,MAAM,CAAC,KAAK,CAAC,CAAA;oBACb,OAAM;gBACP,CAAC;gBACD,OAAO,EAAE,CAAA;YACV,CAAC,CAAC,CAAA;QACH,CAAC,CAAC;KACH,CAAA;AACF,CAAC,CAAA"}
package/dist/index.d.ts CHANGED
@@ -97,7 +97,7 @@ export type StartWatcherOptions = {
97
97
  * Optional in-page indicator showing that the watcher is attached.
98
98
  * When enabled, a small badge is injected into the page. Clicking it shows watcher info.
99
99
  * The indicator auto-removes via TTL if the watcher dies without cleanup.
100
- * Only supported in CDP mode.
100
+ * Supported in both direct CDP and Chrome extension modes.
101
101
  */
102
102
  pageIndicator?: PageIndicatorOptions;
103
103
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -10,6 +10,7 @@ import { buildIgnoreMatcher } from './cdp/ignoreList.js';
10
10
  import { createNetworkCapture } from './cdp/networkCapture.js';
11
11
  import { createTraceRecorder } from './cdp/tracing.js';
12
12
  import { createScreenshotter } from './cdp/screenshot.js';
13
+ import { createRuntimeEditor } from './cdp/editor.js';
13
14
  import { createCdpSessionHandle } from './cdp/connection.js';
14
15
  import { createPageIndicatorController, validatePageIndicatorOptions, } from './cdp/pageIndicator.js';
15
16
  import { createEmulationController } from './emulation/EmulationController.js';
@@ -41,8 +42,8 @@ export const startWatcher = async (options) => {
41
42
  const logsDir = path.join(artifactsBaseDir, 'logs');
42
43
  const includeTimestamps = options.artifacts?.logs?.includeTimestamps ?? false;
43
44
  const maxFiles = resolveMaxFiles(options.artifacts?.logs?.maxFiles);
44
- // Network capture is opt-in (disabled by default) and only in CDP mode
45
- const netEnabled = sourceMode === 'cdp' && options.net?.enabled === true;
45
+ // Network capture is opt-in (disabled by default) and supported in both direct CDP and extension mode.
46
+ const netEnabled = options.net?.enabled === true;
46
47
  // Page console logging (default: minimal)
47
48
  const pageConsoleLogging = options.pageConsoleLogging ?? 'minimal';
48
49
  const events = new Emittery();
@@ -101,14 +102,35 @@ export const startWatcher = async (options) => {
101
102
  .catch(() => { });
102
103
  });
103
104
  };
104
- // Page indicator only supported in CDP mode
105
105
  validatePageIndicatorOptions(options.pageIndicator);
106
- const indicatorEnabled = sourceMode === 'cdp' && options.pageIndicator?.enabled === true;
106
+ const indicatorEnabled = options.pageIndicator?.enabled === true;
107
107
  let indicatorController = null;
108
108
  let indicatorAttachedAt = null;
109
109
  if (indicatorEnabled) {
110
110
  indicatorController = createPageIndicatorController(options.pageIndicator);
111
111
  }
112
+ const updateCdpStatus = (status) => {
113
+ const prevAttached = cdpStatus.attached;
114
+ cdpStatus = status;
115
+ if (status.attached && !prevAttached) {
116
+ const url = status.target?.url ?? 'unknown';
117
+ logToPageConsole(`attached (url=${url})`);
118
+ void events.emit('cdpAttached', {
119
+ ts: Date.now(),
120
+ watcherId,
121
+ target: status.target,
122
+ });
123
+ return;
124
+ }
125
+ if (!status.attached && prevAttached) {
126
+ void events.emit('cdpDetached', {
127
+ ts: Date.now(),
128
+ watcherId,
129
+ target: status.target,
130
+ reason: status.reason ?? 'unknown',
131
+ });
132
+ }
133
+ };
112
134
  const buildIndicatorInfo = (target) => ({
113
135
  watcherId,
114
136
  watcherHost: host,
@@ -118,6 +140,30 @@ export const startWatcher = async (options) => {
118
140
  targetUrl: target?.url ?? null,
119
141
  attachedAt: indicatorAttachedAt ?? Date.now(),
120
142
  });
143
+ const onIndicatorNavigation = (session, info) => {
144
+ if (!indicatorController) {
145
+ return;
146
+ }
147
+ indicatorController.onNavigation(session, buildIndicatorInfo({ title: null, url: info.url }));
148
+ };
149
+ const onIndicatorLoad = () => {
150
+ indicatorController?.reinstall();
151
+ };
152
+ const getIndicatorSession = () => sourceHandle.pageSession ?? sourceHandle.session;
153
+ const onIndicatorAttach = (session, target) => {
154
+ if (!indicatorController) {
155
+ return;
156
+ }
157
+ indicatorAttachedAt = Date.now();
158
+ indicatorController.onAttach(session, {
159
+ id: target.id,
160
+ title: target.title,
161
+ url: target.url,
162
+ type: target.type ?? 'page',
163
+ parentId: target.parentId ?? null,
164
+ webSocketDebuggerUrl: '',
165
+ }, buildIndicatorInfo({ title: target.title, url: target.url }));
166
+ };
121
167
  const maybeInjectOnAttach = async (session, target) => {
122
168
  if (!options.inject?.script) {
123
169
  return;
@@ -161,131 +207,92 @@ export const startWatcher = async (options) => {
161
207
  console.warn(`[Watcher] Failed to run inject script for watcher ${record.id}: ${formatError(error)}`);
162
208
  }
163
209
  };
210
+ const handleSourceLog = (event) => {
211
+ buffer.add(event);
212
+ fileLogger?.writeEvent(event);
213
+ };
214
+ const handlePageNavigation = (info) => {
215
+ fileLogger?.rotate(info);
216
+ onIndicatorNavigation(getIndicatorSession(), info);
217
+ runtimeEditor?.reset();
218
+ };
219
+ const handlePageIntl = (info) => {
220
+ fileLogger?.setPageIntl(info);
221
+ };
222
+ const handleSourceAttach = async (session, target) => {
223
+ runtimeEditor?.rebind();
224
+ await emulationController.onAttach(session);
225
+ await throttleController.onAttach(session);
226
+ await networkCapture?.onAttached();
227
+ onIndicatorAttach(session, target);
228
+ await maybeInjectOnAttach(session, target);
229
+ };
230
+ const handleTargetChanged = (session, target) => {
231
+ onIndicatorAttach(session, target);
232
+ };
233
+ const handleSourceDetach = (reason) => {
234
+ runtimeEditor?.rebind();
235
+ networkCapture?.onDetached();
236
+ indicatorController?.onDetach();
237
+ if (reason != null) {
238
+ traceRecorder.onDetached(reason);
239
+ }
240
+ };
164
241
  // Create the appropriate source based on mode
165
242
  let sourceHandle;
166
243
  let networkCapture = null;
167
244
  let traceRecorder;
168
245
  let screenshotter;
246
+ let runtimeEditor;
169
247
  if (sourceMode === 'extension') {
170
248
  // Extension mode
171
249
  sourceHandle = createExtensionSource({
172
250
  events: {
173
- onLog: (event) => {
174
- buffer.add(event);
175
- fileLogger?.writeEvent(event);
176
- },
177
- onStatus: (status) => {
178
- const prevAttached = cdpStatus.attached;
179
- cdpStatus = status;
180
- if (status.attached && !prevAttached) {
181
- const url = status.target?.url ?? 'unknown';
182
- logToPageConsole(`attached (url=${url})`);
183
- void events.emit('cdpAttached', {
184
- ts: Date.now(),
185
- watcherId,
186
- target: status.target,
187
- });
188
- }
189
- else if (!status.attached && prevAttached) {
190
- void events.emit('cdpDetached', {
191
- ts: Date.now(),
192
- watcherId,
193
- target: status.target,
194
- reason: status.reason ?? 'unknown',
195
- });
196
- }
197
- },
198
- onPageNavigation: (info) => {
199
- fileLogger?.rotate(info);
200
- },
201
- onPageIntl: (info) => {
202
- fileLogger?.setPageIntl(info);
203
- },
204
- onAttach: async (session, target) => {
205
- await emulationController.onAttach(session);
206
- await throttleController.onAttach(session);
207
- await maybeInjectOnAttach(session, target);
251
+ onLog: handleSourceLog,
252
+ onStatus: updateCdpStatus,
253
+ onPageNavigation: handlePageNavigation,
254
+ onPageLoad: onIndicatorLoad,
255
+ onPageIntl: handlePageIntl,
256
+ onAttach: handleSourceAttach,
257
+ onTargetChanged: handleTargetChanged,
258
+ onDetach: () => {
259
+ handleSourceDetach();
208
260
  },
209
261
  },
262
+ watcherId,
263
+ watcherHost: host,
264
+ watcherPort: record.port,
210
265
  ignoreMatcher: ignoreMatcher ? (url) => ignoreMatcher.matches(url) : null,
211
266
  stripUrlPrefixes,
212
267
  });
268
+ networkCapture = netBuffer ? createNetworkCapture({ session: sourceHandle.pageSession ?? sourceHandle.session, buffer: netBuffer }) : null;
213
269
  // Create trace/screenshot with proxy session
214
270
  traceRecorder = createTraceRecorder({ session: sourceHandle.session, artifactsDir: artifactsBaseDir });
215
271
  screenshotter = createScreenshotter({ session: sourceHandle.session, artifactsDir: artifactsBaseDir });
272
+ runtimeEditor = createRuntimeEditor(sourceHandle.session);
216
273
  }
217
274
  else {
218
275
  // CDP mode
219
276
  networkCapture = netBuffer ? createNetworkCapture({ session: sessionHandle.session, buffer: netBuffer }) : null;
220
277
  traceRecorder = createTraceRecorder({ session: sessionHandle.session, artifactsDir: artifactsBaseDir });
221
278
  screenshotter = createScreenshotter({ session: sessionHandle.session, artifactsDir: artifactsBaseDir });
279
+ runtimeEditor = createRuntimeEditor(sessionHandle.session);
222
280
  sourceHandle = createCdpSource({
223
281
  chrome,
224
282
  match: options.match,
225
283
  sessionHandle,
226
284
  events: {
227
- onLog: (event) => {
228
- buffer.add(event);
229
- fileLogger?.writeEvent(event);
230
- },
231
- onStatus: (status) => {
232
- const prevAttached = cdpStatus.attached;
233
- cdpStatus = status;
234
- if (status.attached && !prevAttached) {
235
- const url = status.target?.url ?? 'unknown';
236
- logToPageConsole(`attached (url=${url})`);
237
- void events.emit('cdpAttached', {
238
- ts: Date.now(),
239
- watcherId,
240
- target: status.target,
241
- });
242
- }
243
- else if (!status.attached && prevAttached) {
244
- void events.emit('cdpDetached', {
245
- ts: Date.now(),
246
- watcherId,
247
- target: status.target,
248
- reason: status.reason ?? 'unknown',
249
- });
250
- }
251
- },
252
- onPageNavigation: (info) => {
253
- fileLogger?.rotate(info);
254
- if (indicatorController) {
255
- indicatorController.onNavigation(sessionHandle.session, buildIndicatorInfo({ title: null, url: info.url }));
256
- }
257
- },
258
- onPageLoad: () => {
259
- if (indicatorController) {
260
- indicatorController.reinstall();
261
- }
262
- },
263
- onPageIntl: (info) => {
264
- fileLogger?.setPageIntl(info);
265
- },
266
- onAttach: async (session, target) => {
267
- await emulationController.onAttach(session);
268
- await throttleController.onAttach(session);
269
- await networkCapture?.onAttached();
270
- if (indicatorController) {
271
- indicatorAttachedAt = Date.now();
272
- indicatorController.onAttach(session, {
273
- id: target.id,
274
- title: target.title,
275
- url: target.url,
276
- type: target.type ?? 'page',
277
- parentId: target.parentId ?? null,
278
- webSocketDebuggerUrl: '',
279
- }, buildIndicatorInfo({ title: target.title, url: target.url }));
280
- }
281
- await maybeInjectOnAttach(session, target);
282
- },
285
+ onLog: handleSourceLog,
286
+ onStatus: updateCdpStatus,
287
+ onPageNavigation: handlePageNavigation,
288
+ onPageLoad: onIndicatorLoad,
289
+ onPageIntl: handlePageIntl,
290
+ onAttach: handleSourceAttach,
283
291
  onDetach: (reason) => {
284
- networkCapture?.onDetached();
285
- traceRecorder.onDetached(reason);
286
- indicatorController?.onDetach();
292
+ handleSourceDetach(reason);
287
293
  },
288
294
  },
295
+ watcherId,
289
296
  ignoreMatcher: ignoreMatcher ? (url) => ignoreMatcher.matches(url) : null,
290
297
  stripUrlPrefixes,
291
298
  });
@@ -300,6 +307,7 @@ export const startWatcher = async (options) => {
300
307
  cdpSession: sourceHandle.session,
301
308
  traceRecorder,
302
309
  screenshotter,
310
+ runtimeEditor,
303
311
  emulationController,
304
312
  throttleController,
305
313
  // Extension mode endpoints
@@ -322,6 +330,12 @@ export const startWatcher = async (options) => {
322
330
  },
323
331
  });
324
332
  record.port = server.port;
333
+ sourceHandle.syncWatcherInfo?.({
334
+ watcherId,
335
+ watcherHost: host,
336
+ watcherPort: record.port,
337
+ watcherPid: process.pid,
338
+ });
325
339
  await announceWatcher(record);
326
340
  const heartbeat = startRegistryHeartbeat(() => record, options.heartbeatMs ?? 15_000);
327
341
  closeOnce = async () => {