@vforsh/argus 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.
Files changed (245) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/argus.js +3963 -2198
  3. package/dist/cli/defineCommand.d.ts +26 -0
  4. package/dist/cli/defineCommand.d.ts.map +1 -0
  5. package/dist/cli/defineCommand.js +55 -0
  6. package/dist/cli/defineCommand.js.map +1 -0
  7. package/dist/cli/defineWatcherCommand.d.ts +112 -0
  8. package/dist/cli/defineWatcherCommand.d.ts.map +1 -0
  9. package/dist/cli/defineWatcherCommand.js +89 -0
  10. package/dist/cli/defineWatcherCommand.js.map +1 -0
  11. package/dist/cli/plugins/pluginAliases.d.ts +6 -0
  12. package/dist/cli/plugins/pluginAliases.d.ts.map +1 -0
  13. package/dist/cli/plugins/pluginAliases.js +10 -0
  14. package/dist/cli/plugins/pluginAliases.js.map +1 -0
  15. package/dist/cli/plugins/pluginHost.d.ts +3 -0
  16. package/dist/cli/plugins/pluginHost.d.ts.map +1 -0
  17. package/dist/cli/plugins/pluginHost.js +30 -0
  18. package/dist/cli/plugins/pluginHost.js.map +1 -0
  19. package/dist/cli/plugins/registerPlugins.d.ts +32 -1
  20. package/dist/cli/plugins/registerPlugins.d.ts.map +1 -1
  21. package/dist/cli/plugins/registerPlugins.js +102 -12
  22. package/dist/cli/plugins/registerPlugins.js.map +1 -1
  23. package/dist/cli/program.d.ts.map +1 -1
  24. package/dist/cli/program.js +2 -0
  25. package/dist/cli/program.js.map +1 -1
  26. package/dist/cli/register/index.d.ts.map +1 -1
  27. package/dist/cli/register/index.js +8 -2
  28. package/dist/cli/register/index.js.map +1 -1
  29. package/dist/cli/register/registerAuth.d.ts.map +1 -1
  30. package/dist/cli/register/registerAuth.js +13 -8
  31. package/dist/cli/register/registerAuth.js.map +1 -1
  32. package/dist/cli/register/registerCode.d.ts.map +1 -1
  33. package/dist/cli/register/registerCode.js +19 -0
  34. package/dist/cli/register/registerCode.js.map +1 -1
  35. package/dist/cli/register/registerDom.d.ts.map +1 -1
  36. package/dist/cli/register/registerDom.js +3 -1
  37. package/dist/cli/register/registerDom.js.map +1 -1
  38. package/dist/cli/register/registerEval.d.ts.map +1 -1
  39. package/dist/cli/register/registerEval.js +13 -0
  40. package/dist/cli/register/registerEval.js.map +1 -1
  41. package/dist/cli/register/registerExtension.d.ts.map +1 -1
  42. package/dist/cli/register/registerExtension.js +12 -0
  43. package/dist/cli/register/registerExtension.js.map +1 -1
  44. package/dist/cli/register/registerNet.d.ts.map +1 -1
  45. package/dist/cli/register/registerNet.js +40 -6
  46. package/dist/cli/register/registerNet.js.map +1 -1
  47. package/dist/cli/register/registerPage.d.ts.map +1 -1
  48. package/dist/cli/register/registerPage.js +17 -0
  49. package/dist/cli/register/registerPage.js.map +1 -1
  50. package/dist/cli/register/registerPlugin.d.ts +3 -0
  51. package/dist/cli/register/registerPlugin.d.ts.map +1 -0
  52. package/dist/cli/register/registerPlugin.js +34 -0
  53. package/dist/cli/register/registerPlugin.js.map +1 -0
  54. package/dist/cli/register/registerSnapshot.d.ts.map +1 -1
  55. package/dist/cli/register/registerSnapshot.js +2 -1
  56. package/dist/cli/register/registerSnapshot.js.map +1 -1
  57. package/dist/cli/register/registerWatcher.d.ts.map +1 -1
  58. package/dist/cli/register/registerWatcher.js +19 -0
  59. package/dist/cli/register/registerWatcher.js.map +1 -1
  60. package/dist/commands/auth.d.ts.map +1 -1
  61. package/dist/commands/auth.js +4 -9
  62. package/dist/commands/auth.js.map +1 -1
  63. package/dist/commands/authCookieSupport.d.ts.map +1 -1
  64. package/dist/commands/authCookieSupport.js +4 -6
  65. package/dist/commands/authCookieSupport.js.map +1 -1
  66. package/dist/commands/authCookies.d.ts +4 -4
  67. package/dist/commands/authCookies.d.ts.map +1 -1
  68. package/dist/commands/authCookies.js +85 -105
  69. package/dist/commands/authCookies.js.map +1 -1
  70. package/dist/commands/code.js +3 -25
  71. package/dist/commands/code.js.map +1 -1
  72. package/dist/commands/codeEdit.d.ts +9 -0
  73. package/dist/commands/codeEdit.d.ts.map +1 -0
  74. package/dist/commands/codeEdit.js +155 -0
  75. package/dist/commands/codeEdit.js.map +1 -0
  76. package/dist/commands/configInit.d.ts.map +1 -1
  77. package/dist/commands/configInit.js +1 -0
  78. package/dist/commands/configInit.js.map +1 -1
  79. package/dist/commands/dialog.d.ts +5 -5
  80. package/dist/commands/dialog.d.ts.map +1 -1
  81. package/dist/commands/dialog.js +36 -54
  82. package/dist/commands/dialog.js.map +1 -1
  83. package/dist/commands/domAdd.d.ts +1 -1
  84. package/dist/commands/domAdd.d.ts.map +1 -1
  85. package/dist/commands/domAdd.js +26 -30
  86. package/dist/commands/domAdd.js.map +1 -1
  87. package/dist/commands/domClick.d.ts +4 -1
  88. package/dist/commands/domClick.d.ts.map +1 -1
  89. package/dist/commands/domClick.js +83 -75
  90. package/dist/commands/domClick.js.map +1 -1
  91. package/dist/commands/domFill.d.ts +2 -2
  92. package/dist/commands/domFill.d.ts.map +1 -1
  93. package/dist/commands/domFill.js +56 -67
  94. package/dist/commands/domFill.js.map +1 -1
  95. package/dist/commands/domFocus.d.ts +1 -1
  96. package/dist/commands/domFocus.d.ts.map +1 -1
  97. package/dist/commands/domFocus.js +27 -35
  98. package/dist/commands/domFocus.js.map +1 -1
  99. package/dist/commands/domHover.d.ts +1 -1
  100. package/dist/commands/domHover.d.ts.map +1 -1
  101. package/dist/commands/domHover.js +27 -35
  102. package/dist/commands/domHover.js.map +1 -1
  103. package/dist/commands/domInfo.d.ts +1 -1
  104. package/dist/commands/domInfo.d.ts.map +1 -1
  105. package/dist/commands/domInfo.js +18 -23
  106. package/dist/commands/domInfo.js.map +1 -1
  107. package/dist/commands/domKeydown.d.ts +1 -1
  108. package/dist/commands/domKeydown.d.ts.map +1 -1
  109. package/dist/commands/domKeydown.js +22 -43
  110. package/dist/commands/domKeydown.js.map +1 -1
  111. package/dist/commands/domModify.js +27 -30
  112. package/dist/commands/domModify.js.map +1 -1
  113. package/dist/commands/domRemove.d.ts +1 -1
  114. package/dist/commands/domRemove.d.ts.map +1 -1
  115. package/dist/commands/domRemove.js +25 -34
  116. package/dist/commands/domRemove.js.map +1 -1
  117. package/dist/commands/domScroll.d.ts +2 -2
  118. package/dist/commands/domScroll.d.ts.map +1 -1
  119. package/dist/commands/domScroll.js +19 -25
  120. package/dist/commands/domScroll.js.map +1 -1
  121. package/dist/commands/domScrollTo.d.ts +1 -1
  122. package/dist/commands/domScrollTo.d.ts.map +1 -1
  123. package/dist/commands/domScrollTo.js +15 -24
  124. package/dist/commands/domScrollTo.js.map +1 -1
  125. package/dist/commands/domSetFile.d.ts +1 -1
  126. package/dist/commands/domSetFile.d.ts.map +1 -1
  127. package/dist/commands/domSetFile.js +24 -33
  128. package/dist/commands/domSetFile.js.map +1 -1
  129. package/dist/commands/domTree.d.ts +1 -1
  130. package/dist/commands/domTree.d.ts.map +1 -1
  131. package/dist/commands/domTree.js +18 -24
  132. package/dist/commands/domTree.js.map +1 -1
  133. package/dist/commands/eval.d.ts +4 -0
  134. package/dist/commands/eval.d.ts.map +1 -1
  135. package/dist/commands/eval.js +43 -56
  136. package/dist/commands/eval.js.map +1 -1
  137. package/dist/commands/evalPolling.d.ts +55 -0
  138. package/dist/commands/evalPolling.d.ts.map +1 -0
  139. package/dist/commands/evalPolling.js +59 -0
  140. package/dist/commands/evalPolling.js.map +1 -0
  141. package/dist/commands/evalShared.d.ts +24 -0
  142. package/dist/commands/evalShared.d.ts.map +1 -1
  143. package/dist/commands/evalShared.js +75 -7
  144. package/dist/commands/evalShared.js.map +1 -1
  145. package/dist/commands/evalUntil.d.ts +4 -0
  146. package/dist/commands/evalUntil.d.ts.map +1 -1
  147. package/dist/commands/evalUntil.js +47 -64
  148. package/dist/commands/evalUntil.js.map +1 -1
  149. package/dist/commands/extension/resolveExtensionWatcher.d.ts +20 -0
  150. package/dist/commands/extension/resolveExtensionWatcher.d.ts.map +1 -0
  151. package/dist/commands/extension/resolveExtensionWatcher.js +73 -0
  152. package/dist/commands/extension/resolveExtensionWatcher.js.map +1 -0
  153. package/dist/commands/extension/tabs.d.ts +8 -0
  154. package/dist/commands/extension/tabs.d.ts.map +1 -0
  155. package/dist/commands/extension/tabs.js +85 -0
  156. package/dist/commands/extension/tabs.js.map +1 -0
  157. package/dist/commands/locate.js +2 -2
  158. package/dist/commands/locate.js.map +1 -1
  159. package/dist/commands/logs.d.ts +1 -1
  160. package/dist/commands/logs.d.ts.map +1 -1
  161. package/dist/commands/logs.js +18 -27
  162. package/dist/commands/logs.js.map +1 -1
  163. package/dist/commands/net.d.ts +1 -1
  164. package/dist/commands/net.d.ts.map +1 -1
  165. package/dist/commands/net.js +14 -19
  166. package/dist/commands/net.js.map +1 -1
  167. package/dist/commands/netCapture.d.ts +10 -5
  168. package/dist/commands/netCapture.d.ts.map +1 -1
  169. package/dist/commands/netCapture.js +113 -15
  170. package/dist/commands/netCapture.js.map +1 -1
  171. package/dist/commands/netClear.d.ts +1 -1
  172. package/dist/commands/netClear.d.ts.map +1 -1
  173. package/dist/commands/netClear.js +7 -19
  174. package/dist/commands/netClear.js.map +1 -1
  175. package/dist/commands/netExport.d.ts +2 -7
  176. package/dist/commands/netExport.d.ts.map +1 -1
  177. package/dist/commands/netExport.js.map +1 -1
  178. package/dist/commands/netSse.d.ts +6 -0
  179. package/dist/commands/netSse.d.ts.map +1 -0
  180. package/dist/commands/netSse.js +26 -0
  181. package/dist/commands/netSse.js.map +1 -0
  182. package/dist/commands/netWatch.d.ts +2 -7
  183. package/dist/commands/netWatch.d.ts.map +1 -1
  184. package/dist/commands/netWatch.js.map +1 -1
  185. package/dist/commands/netWebSocket.d.ts +10 -0
  186. package/dist/commands/netWebSocket.d.ts.map +1 -0
  187. package/dist/commands/netWebSocket.js +58 -0
  188. package/dist/commands/netWebSocket.js.map +1 -0
  189. package/dist/commands/pageEmulation.d.ts +3 -3
  190. package/dist/commands/pageEmulation.d.ts.map +1 -1
  191. package/dist/commands/pageEmulation.js +72 -143
  192. package/dist/commands/pageEmulation.js.map +1 -1
  193. package/dist/commands/pageVisibility.d.ts +9 -0
  194. package/dist/commands/pageVisibility.d.ts.map +1 -0
  195. package/dist/commands/pageVisibility.js +24 -0
  196. package/dist/commands/pageVisibility.js.map +1 -0
  197. package/dist/commands/pluginConfig.d.ts +7 -0
  198. package/dist/commands/pluginConfig.d.ts.map +1 -0
  199. package/dist/commands/pluginConfig.js +199 -0
  200. package/dist/commands/pluginConfig.js.map +1 -0
  201. package/dist/commands/pluginList.d.ts +5 -0
  202. package/dist/commands/pluginList.d.ts.map +1 -0
  203. package/dist/commands/pluginList.js +26 -0
  204. package/dist/commands/pluginList.js.map +1 -0
  205. package/dist/commands/reload.d.ts +1 -1
  206. package/dist/commands/reload.d.ts.map +1 -1
  207. package/dist/commands/reload.js +8 -17
  208. package/dist/commands/reload.js.map +1 -1
  209. package/dist/commands/screenshot.d.ts +2 -1
  210. package/dist/commands/screenshot.d.ts.map +1 -1
  211. package/dist/commands/screenshot.js +45 -16
  212. package/dist/commands/screenshot.js.map +1 -1
  213. package/dist/commands/snapshot.d.ts +1 -1
  214. package/dist/commands/snapshot.d.ts.map +1 -1
  215. package/dist/commands/snapshot.js +26 -49
  216. package/dist/commands/snapshot.js.map +1 -1
  217. package/dist/commands/storage.d.ts.map +1 -1
  218. package/dist/commands/storage.js +26 -58
  219. package/dist/commands/storage.js.map +1 -1
  220. package/dist/commands/throttle.d.ts +6 -3
  221. package/dist/commands/throttle.d.ts.map +1 -1
  222. package/dist/commands/throttle.js +46 -118
  223. package/dist/commands/throttle.js.map +1 -1
  224. package/dist/commands/watcherStatus.d.ts +1 -1
  225. package/dist/commands/watcherStatus.d.ts.map +1 -1
  226. package/dist/commands/watcherStatus.js +8 -20
  227. package/dist/commands/watcherStatus.js.map +1 -1
  228. package/dist/config/argusConfig.d.ts +5 -0
  229. package/dist/config/argusConfig.d.ts.map +1 -1
  230. package/dist/config/argusConfig.js +33 -2
  231. package/dist/config/argusConfig.js.map +1 -1
  232. package/dist/eval/evalClient.d.ts +1 -0
  233. package/dist/eval/evalClient.d.ts.map +1 -1
  234. package/dist/eval/evalClient.js +2 -0
  235. package/dist/eval/evalClient.js.map +1 -1
  236. package/dist/output/net.d.ts +4 -1
  237. package/dist/output/net.d.ts.map +1 -1
  238. package/dist/output/net.js +59 -0
  239. package/dist/output/net.js.map +1 -1
  240. package/package.json +2 -2
  241. package/schemas/argus.config.schema.json +16 -0
  242. package/dist/cli/register/registerClick.d.ts +0 -3
  243. package/dist/cli/register/registerClick.d.ts.map +0 -1
  244. package/dist/cli/register/registerClick.js +0 -24
  245. package/dist/cli/register/registerClick.js.map +0 -1
@@ -1,60 +1,42 @@
1
- import { createOutput } from '../output/io.js';
2
- import { requestWatcherAction } from '../watchers/requestWatcher.js';
1
+ import { defineWatcherCommand } from '../cli/defineWatcherCommand.js';
3
2
  /** Execute `argus dialog status`. */
4
- export const runDialogStatus = async (id, options) => {
5
- const output = createOutput(options);
6
- const result = await requestWatcherAction({
7
- id,
8
- path: '/dialog',
9
- timeoutMs: 2_000,
10
- }, output);
11
- if (!result) {
12
- return;
13
- }
14
- if (options.json) {
15
- output.writeJson(result.data);
16
- return;
17
- }
18
- const { dialog } = result.data;
19
- if (!dialog) {
20
- output.writeHuman(`no active dialog on ${result.watcher.id}`);
21
- return;
22
- }
23
- for (const line of formatDialogLines(result.watcher.id, dialog)) {
24
- output.writeHuman(line);
25
- }
26
- };
3
+ export const runDialogStatus = defineWatcherCommand({
4
+ build: () => ({ path: '/dialog', timeoutMs: 2_000 }),
5
+ formatHuman: ({ dialog }, { output, watcher }) => {
6
+ if (!dialog) {
7
+ output.writeHuman(`no active dialog on ${watcher.id}`);
8
+ return;
9
+ }
10
+ for (const line of formatDialogLines(watcher.id, dialog)) {
11
+ output.writeHuman(line);
12
+ }
13
+ },
14
+ });
27
15
  /** Execute `argus dialog accept`. */
28
- export const runDialogAccept = async (id, options) => {
29
- await runDialogHandle(id, { action: 'accept' }, options);
30
- };
16
+ export const runDialogAccept = defineWatcherCommand({
17
+ build: () => buildDialogHandlePlan({ action: 'accept' }),
18
+ formatHuman: formatDialogHandle,
19
+ });
31
20
  /** Execute `argus dialog dismiss`. */
32
- export const runDialogDismiss = async (id, options) => {
33
- await runDialogHandle(id, { action: 'dismiss' }, options);
34
- };
35
- /** Execute `argus dialog prompt`. */
36
- export const runDialogPrompt = async (id, text, options) => {
37
- await runDialogHandle(id, { action: 'accept', promptText: text }, options);
38
- };
39
- const runDialogHandle = async (id, body, options) => {
40
- const output = createOutput(options);
41
- const result = await requestWatcherAction({
42
- id,
43
- path: '/dialog',
44
- method: 'POST',
45
- body,
46
- timeoutMs: 5_000,
47
- }, output);
48
- if (!result) {
49
- return;
50
- }
51
- if (options.json) {
52
- output.writeJson(result.data);
53
- return;
54
- }
55
- const verb = result.data.action === 'accept' ? 'accepted' : 'dismissed';
56
- output.writeHuman(`${verb} ${result.data.dialog.type} on ${result.watcher.id}`);
57
- };
21
+ export const runDialogDismiss = defineWatcherCommand({
22
+ build: () => buildDialogHandlePlan({ action: 'dismiss' }),
23
+ formatHuman: formatDialogHandle,
24
+ });
25
+ /** Execute `argus dialog prompt`. The prompt text is passed as a positional CLI argument. */
26
+ export const runDialogPrompt = defineWatcherCommand({
27
+ build: ([text]) => buildDialogHandlePlan({ action: 'accept', promptText: text }),
28
+ formatHuman: formatDialogHandle,
29
+ });
30
+ const buildDialogHandlePlan = (body) => ({
31
+ path: '/dialog',
32
+ method: 'POST',
33
+ body,
34
+ timeoutMs: 5_000,
35
+ });
36
+ function formatDialogHandle(response, { output, watcher }) {
37
+ const verb = response.action === 'accept' ? 'accepted' : 'dismissed';
38
+ output.writeHuman(`${verb} ${response.dialog.type} on ${watcher.id}`);
39
+ }
58
40
  const formatDialogLines = (watcherId, dialog) => {
59
41
  const lines = [`${dialog.type} dialog on ${watcherId}`, `message: ${dialog.message}`];
60
42
  if (dialog.defaultPrompt != null) {
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../src/commands/dialog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../src/commands/dialog.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAuD,MAAM,gCAAgC,CAAA;AAY1H,qCAAqC;AACrC,MAAM,CAAC,MAAM,eAAe,GAAG,oBAAoB,CAA6C;IAC/F,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACpD,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QAChD,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,CAAC,UAAU,CAAC,uBAAuB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;YACtD,OAAM;QACP,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;YAC1D,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACxB,CAAC;IACF,CAAC;CACD,CAAC,CAAA;AAEF,qCAAqC;AACrC,MAAM,CAAC,MAAM,eAAe,GAAG,oBAAoB,CAA6C;IAC/F,KAAK,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACxD,WAAW,EAAE,kBAAkB;CAC/B,CAAC,CAAA;AAEF,sCAAsC;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,oBAAoB,CAA6C;IAChG,KAAK,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACzD,WAAW,EAAE,kBAAkB;CAC/B,CAAC,CAAA;AAEF,6FAA6F;AAC7F,MAAM,CAAC,MAAM,eAAe,GAAG,oBAAoB,CAAsE;IACxH,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAChF,WAAW,EAAE,kBAAkB;CAC/B,CAAC,CAAA;AAEF,MAAM,qBAAqB,GAAG,CAAC,IAAsB,EAAsB,EAAE,CAAC,CAAC;IAC9E,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,MAAM;IACd,IAAI;IACJ,SAAS,EAAE,KAAK;CAChB,CAAC,CAAA;AAEF,SAAS,kBAAkB,CAC1B,QAA8B,EAC9B,EAAE,MAAM,EAAE,OAAO,EAAmE;IAEpF,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAA;IACpE,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;AACtE,CAAC;AAED,MAAM,iBAAiB,GAAG,CAAC,SAAiB,EAAE,MAAmD,EAAY,EAAE;IAC9G,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,cAAc,SAAS,EAAE,EAAE,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;IAErF,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,aAAa,EAAE,CAAC,CAAA;IAC/C,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC,CAAA;IACjC,CAAC;IACD,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;IACnC,CAAC;IAED,OAAO,KAAK,CAAA;AACb,CAAC,CAAA"}
@@ -13,5 +13,5 @@ export type DomAddOptions = {
13
13
  json?: boolean;
14
14
  };
15
15
  /** Execute the dom add command for a watcher id. */
16
- export declare const runDomAdd: (id: string | undefined, options: DomAddOptions) => Promise<void>;
16
+ export declare const runDomAdd: import("../cli/defineWatcherCommand.js").WatcherCommandRunner<[], DomAddOptions>;
17
17
  //# sourceMappingURL=domAdd.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"domAdd.d.ts","sourceRoot":"","sources":["../../src/commands/domAdd.ts"],"names":[],"mappings":"AAQA,uCAAuC;AACvC,MAAM,MAAM,aAAa,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,oDAAoD;AACpD,eAAO,MAAM,SAAS,GAAU,IAAI,MAAM,GAAG,SAAS,EAAE,SAAS,aAAa,KAAG,OAAO,CAAC,IAAI,CAsF5F,CAAA"}
1
+ {"version":3,"file":"domAdd.d.ts","sourceRoot":"","sources":["../../src/commands/domAdd.ts"],"names":[],"mappings":"AAQA,uCAAuC;AACvC,MAAM,MAAM,aAAa,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,oDAAoD;AACpD,eAAO,MAAM,SAAS,kFAcpB,CAAA"}
@@ -1,54 +1,65 @@
1
1
  import { readFile } from 'node:fs/promises';
2
- import { createOutput } from '../output/io.js';
3
2
  import { formatError } from '../cli/parse.js';
3
+ import { defineWatcherCommand } from '../cli/defineWatcherCommand.js';
4
4
  import { resolvePath } from '../utils/paths.js';
5
- import { requestWatcherAction } from '../watchers/requestWatcher.js';
6
5
  import { requireSelector, writeNoElementFound } from './dom/shared.js';
7
6
  /** Execute the dom add command for a watcher id. */
8
- export const runDomAdd = async (id, options) => {
9
- const output = createOutput(options);
7
+ export const runDomAdd = defineWatcherCommand({
8
+ build: (_args, options, output) => buildDomAddPlan(options, output),
9
+ formatHuman: (successResp, { output, options, watcher }) => {
10
+ const selector = options.selector;
11
+ const position = normalizePosition(options.position);
12
+ if (successResp.matches === 0) {
13
+ writeNoElementFound(selector, output, `Hint: run \`argus dom tree ${watcher.id} --selector "${selector}" --all\``);
14
+ return;
15
+ }
16
+ const label = successResp.inserted === 1 ? 'element' : 'elements';
17
+ const prefix = watcher.id ? `${watcher.id}: ` : '';
18
+ output.writeHuman(`${prefix}Inserted at ${successResp.inserted}/${successResp.matches} ${label} (${position}) for selector: ${selector}`);
19
+ },
20
+ });
21
+ const buildDomAddPlan = async (options, output) => {
10
22
  const selector = requireSelector(options, output);
11
23
  if (!selector) {
12
- return;
24
+ return null;
13
25
  }
14
26
  const position = normalizePosition(options.position);
15
27
  if (!position) {
16
28
  output.writeWarn('--position must be one of: beforebegin, afterbegin, beforeend, afterend (aliases: before, after, prepend, append)');
17
29
  process.exitCode = 2;
18
- return;
30
+ return null;
19
31
  }
20
32
  if (options.all && (options.nth != null || options.first)) {
21
33
  output.writeWarn('Cannot combine --all with --nth or --first');
22
34
  process.exitCode = 2;
23
- return;
35
+ return null;
24
36
  }
25
37
  if (options.nth != null && options.first) {
26
38
  output.writeWarn('Cannot combine --nth with --first');
27
39
  process.exitCode = 2;
28
- return;
40
+ return null;
29
41
  }
30
42
  const nth = options.first ? 0 : parseNonNegativeInt(options.nth, '--nth', output);
31
43
  if (options.nth != null && nth == null) {
32
44
  process.exitCode = 2;
33
- return;
45
+ return null;
34
46
  }
35
47
  const expect = parseNonNegativeInt(options.expect, '--expect', output);
36
48
  if (options.expect != null && expect == null) {
37
49
  process.exitCode = 2;
38
- return;
50
+ return null;
39
51
  }
40
52
  const html = await resolveHtmlInput(options, output);
41
53
  if (html == null) {
42
54
  process.exitCode = 2;
43
- return;
55
+ return null;
44
56
  }
45
57
  if (!html) {
46
58
  output.writeWarn('HTML content is empty. Provide non-empty --html, --html-file, or --html-stdin input.');
47
59
  process.exitCode = 2;
48
- return;
60
+ return null;
49
61
  }
50
- const result = await requestWatcherAction({
51
- id,
62
+ return {
52
63
  path: '/dom/add',
53
64
  method: 'POST',
54
65
  body: {
@@ -61,22 +72,7 @@ export const runDomAdd = async (id, options) => {
61
72
  text: options.text ?? false,
62
73
  },
63
74
  timeoutMs: 30_000,
64
- }, output);
65
- if (!result) {
66
- return;
67
- }
68
- const successResp = result.data;
69
- if (options.json) {
70
- output.writeJson(successResp);
71
- return;
72
- }
73
- if (successResp.matches === 0) {
74
- writeNoElementFound(selector, output, `Hint: run \`argus dom tree${id ? ` ${id}` : ''} --selector "${selector}" --all\``);
75
- return;
76
- }
77
- const label = successResp.inserted === 1 ? 'element' : 'elements';
78
- const prefix = result.watcher.id ? `${result.watcher.id}: ` : '';
79
- output.writeHuman(`${prefix}Inserted at ${successResp.inserted}/${successResp.matches} ${label} (${position}) for selector: ${selector}`);
75
+ };
80
76
  };
81
77
  const normalizePosition = (value) => {
82
78
  if (!value) {
@@ -1 +1 @@
1
- {"version":3,"file":"domAdd.js","sourceRoot":"","sources":["../../src/commands/domAdd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domAdd.js","sourceRoot":"","sources":["../../src/commands/domAdd.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { ArgusCommandDefinition } from '../cli/defineCommand.js';
1
2
  /** Options for the dom click command. */
2
3
  export type DomClickOptions = {
3
4
  selector?: string;
@@ -9,6 +10,8 @@ export type DomClickOptions = {
9
10
  wait?: string;
10
11
  json?: boolean;
11
12
  };
13
+ /** CLI definition for the top-level `argus click` command. */
14
+ export declare const domClickCommandDefinition: ArgusCommandDefinition;
12
15
  /** Execute the dom click command for a watcher id. */
13
- export declare const runDomClick: (id: string | undefined, options: DomClickOptions) => Promise<void>;
16
+ export declare const runDomClick: import("../cli/defineWatcherCommand.js").WatcherCommandRunner<[], DomClickOptions>;
14
17
  //# sourceMappingURL=domClick.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"domClick.d.ts","sourceRoot":"","sources":["../../src/commands/domClick.ts"],"names":[],"mappings":"AAKA,yCAAyC;AACzC,MAAM,MAAM,eAAe,GAAG;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,sDAAsD;AACtD,eAAO,MAAM,WAAW,GAAU,IAAI,MAAM,GAAG,SAAS,EAAE,SAAS,eAAe,KAAG,OAAO,CAAC,IAAI,CAwGhG,CAAA"}
1
+ {"version":3,"file":"domClick.d.ts","sourceRoot":"","sources":["../../src/commands/domClick.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAMrE,yCAAyC;AACzC,MAAM,MAAM,eAAe,GAAG;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,8DAA8D;AAC9D,eAAO,MAAM,yBAAyB,EAAE,sBA6BvC,CAAA;AAED,sDAAsD;AACtD,eAAO,MAAM,WAAW,oFAqBtB,CAAA"}
@@ -1,97 +1,105 @@
1
- import { createOutput } from '../output/io.js';
2
- import { requestWatcherAction } from '../watchers/requestWatcher.js';
1
+ import { domClickRequestSchema } from '@vforsh/argus-core';
2
+ import { defineWatcherCommand } from '../cli/defineWatcherCommand.js';
3
3
  import { describeElementTarget, parseWaitDuration, parseXY, requireElementTarget, writeNoElementFound } from './dom/shared.js';
4
+ import { resolveTestId } from './resolveTestId.js';
5
+ /** CLI definition for the top-level `argus click` command. */
6
+ export const domClickCommandDefinition = {
7
+ name: 'click',
8
+ description: 'Click at coordinates or on element(s) matching a CSS selector',
9
+ arguments: [{ flags: '[id]', description: 'Watcher id to query' }],
10
+ options: [
11
+ { flags: '--selector <css>', description: 'CSS selector to match element(s)' },
12
+ { flags: '--testid <id>', description: 'Shorthand for --selector "[data-testid=\'<id>\']"' },
13
+ { flags: '--ref <elementRef>', description: 'Stable element ref from snapshot/locate output' },
14
+ { flags: '--pos <x,y>', description: 'Viewport coordinates or offset from element top-left' },
15
+ { flags: '--button <type>', description: 'Mouse button: left, middle, right (default: left)' },
16
+ { flags: '--all', description: 'Allow multiple matches (default: error if >1 match)' },
17
+ { flags: '--text <string>', description: 'Filter by textContent (trimmed). Supports /regex/flags syntax' },
18
+ { flags: '--wait <duration>', description: 'Wait for selector to appear (e.g. 5s, 500ms)' },
19
+ { flags: '--json', description: 'Output JSON for automation' },
20
+ ],
21
+ examples: [
22
+ 'argus click app --pos 100,200',
23
+ 'argus click app --selector "#btn"',
24
+ 'argus click app --testid "submit-btn"',
25
+ 'argus click app --ref e5',
26
+ 'argus click app --selector "#btn" --pos 10,5',
27
+ 'argus click app --selector ".item" --all',
28
+ 'argus click app --selector "#btn" --button right',
29
+ 'argus click app --pos 100,200 --button middle',
30
+ ],
31
+ action: async (id, options) => {
32
+ if (!resolveTestId(options))
33
+ return;
34
+ await runDomClick(id, options);
35
+ },
36
+ };
4
37
  /** Execute the dom click command for a watcher id. */
5
- export const runDomClick = async (id, options) => {
6
- const output = createOutput(options);
7
- const hasRawTarget = Boolean(options.selector?.trim() || options.ref?.trim());
8
- const target = hasRawTarget ? requireElementTarget({ selector: options.selector, ref: options.ref }, output) : null;
9
- if (hasRawTarget && !target) {
10
- return;
11
- }
12
- const hasSelectorTarget = Boolean(target?.selector || target?.ref);
13
- const hasPos = options.pos != null;
14
- if (!hasSelectorTarget && !hasPos) {
15
- output.writeWarn('--selector, --testid, --ref, or --pos is required');
16
- process.exitCode = 2;
17
- return;
18
- }
19
- let x;
20
- let y;
21
- if (hasPos) {
22
- const point = parseXY(options.pos);
23
- if (!point) {
24
- output.writeWarn('--pos must be in the format "x,y" (e.g. --pos 100,200)');
25
- process.exitCode = 2;
38
+ export const runDomClick = defineWatcherCommand({
39
+ schema: domClickRequestSchema,
40
+ build: (_args, options, output) => buildClickPlan(options, output),
41
+ formatHuman: (response, { output, options }) => {
42
+ const target = hasElementTarget(options) ? { selector: options.selector, ref: options.ref } : null;
43
+ const xy = options.pos ? parseXY(options.pos) : null;
44
+ // Coordinate-only click (no selector/ref): build never set matches/clicked beyond 1.
45
+ if (!target) {
46
+ output.writeHuman(`Clicked at (${xy?.x}, ${xy?.y})`);
26
47
  return;
27
48
  }
28
- x = point.x;
29
- y = point.y;
30
- }
31
- const waitMs = parseWaitDuration(options.wait, output);
32
- if (waitMs == null) {
33
- return;
49
+ if (response.matches === 0) {
50
+ writeNoElementFound(target.selector ?? target.ref, output);
51
+ return;
52
+ }
53
+ const label = response.clicked === 1 ? 'element' : 'elements';
54
+ const desc = describeElementTarget(target);
55
+ const offset = xy ? ` at offset (${xy.x}, ${xy.y})` : '';
56
+ output.writeHuman(`Clicked ${response.clicked} ${label} for ${desc}${offset}`);
57
+ },
58
+ });
59
+ const hasElementTarget = (options) => Boolean(options.selector?.trim() || options.ref?.trim());
60
+ /** Validate options and assemble the `/dom/click` request plan. */
61
+ const buildClickPlan = (options, output) => {
62
+ const target = hasElementTarget(options) ? requireElementTarget({ selector: options.selector, ref: options.ref }, output) : null;
63
+ if (hasElementTarget(options) && !target)
64
+ return null;
65
+ const xy = options.pos != null ? parseXY(options.pos) : undefined;
66
+ if (options.pos != null && !xy) {
67
+ output.writeWarn('--pos must be in the format "x,y" (e.g. --pos 100,200)');
68
+ process.exitCode = 2;
69
+ return null;
34
70
  }
35
- const validButtons = ['left', 'middle', 'right'];
36
- const button = options.button ?? 'left';
37
- if (!validButtons.includes(button)) {
38
- output.writeWarn(`--button must be one of: ${validButtons.join(', ')}`);
71
+ if (!target && !xy) {
72
+ output.writeWarn('--selector, --testid, --ref, or --pos is required');
39
73
  process.exitCode = 2;
40
- return;
74
+ return null;
41
75
  }
76
+ const waitMs = parseWaitDuration(options.wait, output);
77
+ if (waitMs == null)
78
+ return null;
42
79
  const body = {};
43
80
  if (target) {
44
- if (target.selector) {
81
+ if (target.selector)
45
82
  body.selector = target.selector;
46
- }
47
- if (target.ref) {
83
+ if (target.ref)
48
84
  body.ref = target.ref;
49
- }
50
85
  body.all = options.all ?? false;
51
- if (options.text != null) {
86
+ if (options.text != null)
52
87
  body.text = options.text;
53
- }
54
- }
55
- if (hasPos) {
56
- body.x = x;
57
- body.y = y;
58
88
  }
59
- if (button !== 'left') {
60
- body.button = button;
89
+ if (xy) {
90
+ body.x = xy.x;
91
+ body.y = xy.y;
61
92
  }
62
- if (waitMs > 0) {
93
+ if (options.button)
94
+ body.button = options.button;
95
+ if (waitMs > 0)
63
96
  body.wait = waitMs;
64
- }
65
- const result = await requestWatcherAction({
66
- id,
97
+ // `wait` may exceed 30s; bump request timeout proportionally so the watcher reply is not cut off.
98
+ return {
67
99
  path: '/dom/click',
68
100
  method: 'POST',
69
101
  body,
70
102
  timeoutMs: Math.max(30_000, waitMs + 5_000),
71
- }, output);
72
- if (!result) {
73
- return;
74
- }
75
- const successResp = result.data;
76
- if (options.json) {
77
- output.writeJson(successResp);
78
- return;
79
- }
80
- // Coordinate-only click
81
- if (!target) {
82
- output.writeHuman(`Clicked at (${x}, ${y})`);
83
- return;
84
- }
85
- if (successResp.matches === 0) {
86
- writeNoElementFound(target.selector ?? target.ref, output);
87
- return;
88
- }
89
- const label = successResp.clicked === 1 ? 'element' : 'elements';
90
- if (hasPos) {
91
- output.writeHuman(`Clicked ${successResp.clicked} ${label} for ${describeElementTarget(target)} at offset (${x}, ${y})`);
92
- }
93
- else {
94
- output.writeHuman(`Clicked ${successResp.clicked} ${label} for ${describeElementTarget(target)}`);
95
- }
103
+ };
96
104
  };
97
105
  //# sourceMappingURL=domClick.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"domClick.js","sourceRoot":"","sources":["../../src/commands/domClick.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domClick.js","sourceRoot":"","sources":["../../src/commands/domClick.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,6 @@ export type DomFillOptions = {
10
10
  wait?: string;
11
11
  json?: boolean;
12
12
  };
13
- /** Execute the dom fill command for a watcher id. */
14
- export declare const runDomFill: (id: string | undefined, value: string | undefined, options: DomFillOptions) => Promise<void>;
13
+ /** Execute the dom fill command for a watcher id. The first positional arg is the inline value. */
14
+ export declare const runDomFill: import("../cli/defineWatcherCommand.js").WatcherCommandRunner<[value: string | undefined], DomFillOptions>;
15
15
  //# sourceMappingURL=domFill.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"domFill.d.ts","sourceRoot":"","sources":["../../src/commands/domFill.ts"],"names":[],"mappings":"AASA,wCAAwC;AACxC,MAAM,MAAM,cAAc,GAAG;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAkDD,qDAAqD;AACrD,eAAO,MAAM,UAAU,GAAU,IAAI,MAAM,GAAG,SAAS,EAAE,OAAO,MAAM,GAAG,SAAS,EAAE,SAAS,cAAc,KAAG,OAAO,CAAC,IAAI,CAuEzH,CAAA"}
1
+ {"version":3,"file":"domFill.d.ts","sourceRoot":"","sources":["../../src/commands/domFill.ts"],"names":[],"mappings":"AASA,wCAAwC;AACxC,MAAM,MAAM,cAAc,GAAG;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,mGAAmG;AACnG,eAAO,MAAM,UAAU,4GAWrB,CAAA"}