@vforsh/argus 0.1.11 → 0.1.13

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 (285) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/argus.js +12792 -7821
  3. package/dist/bin.js +4 -47
  4. package/dist/bin.js.map +1 -1
  5. package/dist/cdp/sendCdpCommand.d.ts +6 -2
  6. package/dist/cdp/sendCdpCommand.d.ts.map +1 -1
  7. package/dist/cdp/sendCdpCommand.js +18 -12
  8. package/dist/cdp/sendCdpCommand.js.map +1 -1
  9. package/dist/cli/plugins/registerPlugins.d.ts.map +1 -1
  10. package/dist/cli/plugins/registerPlugins.js +1 -1
  11. package/dist/cli/plugins/registerPlugins.js.map +1 -1
  12. package/dist/cli/program.d.ts.map +1 -1
  13. package/dist/cli/program.js +2 -1
  14. package/dist/cli/program.js.map +1 -1
  15. package/dist/cli/register/domCommandBuilder.d.ts +23 -0
  16. package/dist/cli/register/domCommandBuilder.d.ts.map +1 -0
  17. package/dist/cli/register/domCommandBuilder.js +36 -0
  18. package/dist/cli/register/domCommandBuilder.js.map +1 -0
  19. package/dist/cli/register/index.d.ts +4 -0
  20. package/dist/cli/register/index.d.ts.map +1 -0
  21. package/dist/cli/register/index.js +49 -0
  22. package/dist/cli/register/index.js.map +1 -0
  23. package/dist/cli/register/registerAuth.d.ts.map +1 -1
  24. package/dist/cli/register/registerAuth.js +103 -4
  25. package/dist/cli/register/registerAuth.js.map +1 -1
  26. package/dist/cli/register/registerChrome.d.ts.map +1 -1
  27. package/dist/cli/register/registerChrome.js +53 -14
  28. package/dist/cli/register/registerChrome.js.map +1 -1
  29. package/dist/cli/register/registerClick.d.ts.map +1 -1
  30. package/dist/cli/register/registerClick.js +2 -1
  31. package/dist/cli/register/registerClick.js.map +1 -1
  32. package/dist/cli/register/registerDialog.d.ts +3 -0
  33. package/dist/cli/register/registerDialog.d.ts.map +1 -0
  34. package/dist/cli/register/registerDialog.js +45 -0
  35. package/dist/cli/register/registerDialog.js.map +1 -0
  36. package/dist/cli/register/registerDom.d.ts.map +1 -1
  37. package/dist/cli/register/registerDom.js +142 -121
  38. package/dist/cli/register/registerDom.js.map +1 -1
  39. package/dist/cli/register/registerEval.js +1 -1
  40. package/dist/cli/register/registerEval.js.map +1 -1
  41. package/dist/cli/register/registerFill.d.ts.map +1 -1
  42. package/dist/cli/register/registerFill.js +4 -3
  43. package/dist/cli/register/registerFill.js.map +1 -1
  44. package/dist/cli/register/registerHover.d.ts.map +1 -1
  45. package/dist/cli/register/registerHover.js +2 -1
  46. package/dist/cli/register/registerHover.js.map +1 -1
  47. package/dist/cli/register/registerLocate.d.ts +3 -0
  48. package/dist/cli/register/registerLocate.d.ts.map +1 -0
  49. package/dist/cli/register/registerLocate.js +48 -0
  50. package/dist/cli/register/registerLocate.js.map +1 -0
  51. package/dist/cli/register/registerNet.d.ts.map +1 -1
  52. package/dist/cli/register/registerNet.js +234 -13
  53. package/dist/cli/register/registerNet.js.map +1 -1
  54. package/dist/cli/register/registerQuickAccess.d.ts.map +1 -1
  55. package/dist/cli/register/registerQuickAccess.js +33 -3
  56. package/dist/cli/register/registerQuickAccess.js.map +1 -1
  57. package/dist/cli/register/registerStorage.d.ts.map +1 -1
  58. package/dist/cli/register/registerStorage.js +26 -21
  59. package/dist/cli/register/registerStorage.js.map +1 -1
  60. package/dist/cli/validation.d.ts +1 -0
  61. package/dist/cli/validation.d.ts.map +1 -1
  62. package/dist/cli/validation.js +1 -0
  63. package/dist/cli/validation.js.map +1 -1
  64. package/dist/commands/auth.d.ts +39 -18
  65. package/dist/commands/auth.d.ts.map +1 -1
  66. package/dist/commands/auth.js +104 -122
  67. package/dist/commands/auth.js.map +1 -1
  68. package/dist/commands/authCookieSupport.d.ts +54 -0
  69. package/dist/commands/authCookieSupport.d.ts.map +1 -0
  70. package/dist/commands/authCookieSupport.js +206 -0
  71. package/dist/commands/authCookieSupport.js.map +1 -0
  72. package/dist/commands/authCookies.d.ts +60 -0
  73. package/dist/commands/authCookies.d.ts.map +1 -0
  74. package/dist/commands/authCookies.js +149 -0
  75. package/dist/commands/authCookies.js.map +1 -0
  76. package/dist/commands/chrome/authState.d.ts +23 -0
  77. package/dist/commands/chrome/authState.d.ts.map +1 -0
  78. package/dist/commands/chrome/authState.js +97 -0
  79. package/dist/commands/chrome/authState.js.map +1 -0
  80. package/dist/commands/chrome/browser.d.ts +5 -0
  81. package/dist/commands/chrome/browser.d.ts.map +1 -0
  82. package/dist/commands/chrome/browser.js +71 -0
  83. package/dist/commands/chrome/browser.js.map +1 -0
  84. package/dist/commands/chrome/processes.d.ts +24 -0
  85. package/dist/commands/chrome/processes.d.ts.map +1 -0
  86. package/dist/commands/chrome/processes.js +115 -0
  87. package/dist/commands/chrome/processes.js.map +1 -0
  88. package/dist/commands/chrome/shared.d.ts +31 -0
  89. package/dist/commands/chrome/shared.d.ts.map +1 -0
  90. package/dist/commands/chrome/shared.js +48 -0
  91. package/dist/commands/chrome/shared.js.map +1 -0
  92. package/dist/commands/chrome/targets.d.ts +26 -0
  93. package/dist/commands/chrome/targets.d.ts.map +1 -0
  94. package/dist/commands/chrome/targets.js +240 -0
  95. package/dist/commands/chrome/targets.js.map +1 -0
  96. package/dist/commands/chrome.d.ts +6 -63
  97. package/dist/commands/chrome.d.ts.map +1 -1
  98. package/dist/commands/chrome.js +3 -511
  99. package/dist/commands/chrome.js.map +1 -1
  100. package/dist/commands/chromeStart.d.ts +1 -0
  101. package/dist/commands/chromeStart.d.ts.map +1 -1
  102. package/dist/commands/chromeStart.js +28 -3
  103. package/dist/commands/chromeStart.js.map +1 -1
  104. package/dist/commands/code.d.ts.map +1 -1
  105. package/dist/commands/code.js +9 -1
  106. package/dist/commands/code.js.map +1 -1
  107. package/dist/commands/dialog.d.ts +13 -0
  108. package/dist/commands/dialog.d.ts.map +1 -0
  109. package/dist/commands/dialog.js +71 -0
  110. package/dist/commands/dialog.js.map +1 -0
  111. package/dist/commands/dom/shared.d.ts +16 -0
  112. package/dist/commands/dom/shared.d.ts.map +1 -0
  113. package/dist/commands/dom/shared.js +69 -0
  114. package/dist/commands/dom/shared.js.map +1 -0
  115. package/dist/commands/domAdd.d.ts.map +1 -1
  116. package/dist/commands/domAdd.js +11 -27
  117. package/dist/commands/domAdd.js.map +1 -1
  118. package/dist/commands/domClick.d.ts +1 -0
  119. package/dist/commands/domClick.d.ts.map +1 -1
  120. package/dist/commands/domClick.js +32 -48
  121. package/dist/commands/domClick.js.map +1 -1
  122. package/dist/commands/domFill.d.ts +1 -0
  123. package/dist/commands/domFill.d.ts.map +1 -1
  124. package/dist/commands/domFill.js +21 -38
  125. package/dist/commands/domFill.js.map +1 -1
  126. package/dist/commands/domFocus.d.ts +2 -1
  127. package/dist/commands/domFocus.d.ts.map +1 -1
  128. package/dist/commands/domFocus.js +12 -26
  129. package/dist/commands/domFocus.js.map +1 -1
  130. package/dist/commands/domHover.d.ts +2 -1
  131. package/dist/commands/domHover.d.ts.map +1 -1
  132. package/dist/commands/domHover.js +12 -26
  133. package/dist/commands/domHover.js.map +1 -1
  134. package/dist/commands/domInfo.d.ts +2 -1
  135. package/dist/commands/domInfo.d.ts.map +1 -1
  136. package/dist/commands/domInfo.js +11 -25
  137. package/dist/commands/domInfo.js.map +1 -1
  138. package/dist/commands/domModify.d.ts.map +1 -1
  139. package/dist/commands/domModify.js +14 -26
  140. package/dist/commands/domModify.js.map +1 -1
  141. package/dist/commands/domRemove.d.ts.map +1 -1
  142. package/dist/commands/domRemove.js +10 -25
  143. package/dist/commands/domRemove.js.map +1 -1
  144. package/dist/commands/domScroll.d.ts.map +1 -1
  145. package/dist/commands/domScroll.js +7 -33
  146. package/dist/commands/domScroll.js.map +1 -1
  147. package/dist/commands/domScrollTo.d.ts.map +1 -1
  148. package/dist/commands/domScrollTo.js +7 -33
  149. package/dist/commands/domScrollTo.js.map +1 -1
  150. package/dist/commands/domSetFile.d.ts.map +1 -1
  151. package/dist/commands/domSetFile.js +14 -36
  152. package/dist/commands/domSetFile.js.map +1 -1
  153. package/dist/commands/domTree.d.ts.map +1 -1
  154. package/dist/commands/domTree.js +12 -27
  155. package/dist/commands/domTree.js.map +1 -1
  156. package/dist/commands/extension/setup.js +1 -1
  157. package/dist/commands/extension/setup.js.map +1 -1
  158. package/dist/commands/locate.d.ts +17 -0
  159. package/dist/commands/locate.d.ts.map +1 -0
  160. package/dist/commands/locate.js +117 -0
  161. package/dist/commands/locate.js.map +1 -0
  162. package/dist/commands/net.d.ts +2 -5
  163. package/dist/commands/net.d.ts.map +1 -1
  164. package/dist/commands/net.js +5 -7
  165. package/dist/commands/net.js.map +1 -1
  166. package/dist/commands/netBody.d.ts +6 -0
  167. package/dist/commands/netBody.d.ts.map +1 -0
  168. package/dist/commands/netBody.js +32 -0
  169. package/dist/commands/netBody.js.map +1 -0
  170. package/dist/commands/netCapture.d.ts +36 -0
  171. package/dist/commands/netCapture.d.ts.map +1 -0
  172. package/dist/commands/netCapture.js +105 -0
  173. package/dist/commands/netCapture.js.map +1 -0
  174. package/dist/commands/netClear.d.ts +5 -0
  175. package/dist/commands/netClear.d.ts.map +1 -0
  176. package/dist/commands/netClear.js +20 -0
  177. package/dist/commands/netClear.js.map +1 -0
  178. package/dist/commands/netExport.d.ts +13 -0
  179. package/dist/commands/netExport.d.ts.map +1 -0
  180. package/dist/commands/netExport.js +124 -0
  181. package/dist/commands/netExport.js.map +1 -0
  182. package/dist/commands/netInspect.d.ts +12 -0
  183. package/dist/commands/netInspect.d.ts.map +1 -0
  184. package/dist/commands/netInspect.js +205 -0
  185. package/dist/commands/netInspect.js.map +1 -0
  186. package/dist/commands/netRequestClient.d.ts +17 -0
  187. package/dist/commands/netRequestClient.d.ts.map +1 -0
  188. package/dist/commands/netRequestClient.js +54 -0
  189. package/dist/commands/netRequestClient.js.map +1 -0
  190. package/dist/commands/netRequestTarget.d.ts +14 -0
  191. package/dist/commands/netRequestTarget.d.ts.map +1 -0
  192. package/dist/commands/netRequestTarget.js +36 -0
  193. package/dist/commands/netRequestTarget.js.map +1 -0
  194. package/dist/commands/netShared.d.ts +40 -0
  195. package/dist/commands/netShared.d.ts.map +1 -0
  196. package/dist/commands/netShared.js +108 -0
  197. package/dist/commands/netShared.js.map +1 -0
  198. package/dist/commands/netShow.d.ts +5 -0
  199. package/dist/commands/netShow.d.ts.map +1 -0
  200. package/dist/commands/netShow.js +28 -0
  201. package/dist/commands/netShow.js.map +1 -0
  202. package/dist/commands/netSummary.d.ts +6 -0
  203. package/dist/commands/netSummary.d.ts.map +1 -0
  204. package/dist/commands/netSummary.js +99 -0
  205. package/dist/commands/netSummary.js.map +1 -0
  206. package/dist/commands/netTail.d.ts +2 -5
  207. package/dist/commands/netTail.d.ts.map +1 -1
  208. package/dist/commands/netTail.js +7 -15
  209. package/dist/commands/netTail.js.map +1 -1
  210. package/dist/commands/netWatch.d.ts +11 -0
  211. package/dist/commands/netWatch.d.ts.map +1 -0
  212. package/dist/commands/netWatch.js +55 -0
  213. package/dist/commands/netWatch.js.map +1 -0
  214. package/dist/commands/resolveTestId.d.ts +2 -1
  215. package/dist/commands/resolveTestId.d.ts.map +1 -1
  216. package/dist/commands/resolveTestId.js +3 -3
  217. package/dist/commands/resolveTestId.js.map +1 -1
  218. package/dist/commands/start.d.ts +2 -1
  219. package/dist/commands/start.d.ts.map +1 -1
  220. package/dist/commands/start.js +77 -49
  221. package/dist/commands/start.js.map +1 -1
  222. package/dist/commands/storage.d.ts +17 -0
  223. package/dist/commands/storage.d.ts.map +1 -0
  224. package/dist/commands/storage.js +67 -0
  225. package/dist/commands/storage.js.map +1 -0
  226. package/dist/commands/watcherNativeHost.d.ts.map +1 -1
  227. package/dist/commands/watcherNativeHost.js +13 -2
  228. package/dist/commands/watcherNativeHost.js.map +1 -1
  229. package/dist/commands/watcherSession.d.ts +29 -0
  230. package/dist/commands/watcherSession.d.ts.map +1 -0
  231. package/dist/commands/watcherSession.js +64 -0
  232. package/dist/commands/watcherSession.js.map +1 -0
  233. package/dist/commands/watcherStart.d.ts +1 -1
  234. package/dist/commands/watcherStart.d.ts.map +1 -1
  235. package/dist/commands/watcherStart.js +15 -40
  236. package/dist/commands/watcherStart.js.map +1 -1
  237. package/dist/config/argusConfig.d.ts.map +1 -1
  238. package/dist/config/argusConfig.js +69 -81
  239. package/dist/config/argusConfig.js.map +1 -1
  240. package/dist/net/har.d.ts +86 -0
  241. package/dist/net/har.d.ts.map +1 -0
  242. package/dist/net/har.js +125 -0
  243. package/dist/net/har.js.map +1 -0
  244. package/dist/net/summary.d.ts +33 -0
  245. package/dist/net/summary.d.ts.map +1 -0
  246. package/dist/net/summary.js +128 -0
  247. package/dist/net/summary.js.map +1 -0
  248. package/dist/output/accessibility.js +16 -12
  249. package/dist/output/accessibility.js.map +1 -1
  250. package/dist/output/code.d.ts +2 -1
  251. package/dist/output/code.d.ts.map +1 -1
  252. package/dist/output/code.js +10 -0
  253. package/dist/output/code.js.map +1 -1
  254. package/dist/output/dom.d.ts.map +1 -1
  255. package/dist/output/dom.js +2 -1
  256. package/dist/output/dom.js.map +1 -1
  257. package/dist/output/format.d.ts +1 -3
  258. package/dist/output/format.d.ts.map +1 -1
  259. package/dist/output/format.js +0 -8
  260. package/dist/output/format.js.map +1 -1
  261. package/dist/output/locate.d.ts +3 -0
  262. package/dist/output/locate.d.ts.map +1 -0
  263. package/dist/output/locate.js +25 -0
  264. package/dist/output/locate.js.map +1 -0
  265. package/dist/output/net.d.ts +13 -0
  266. package/dist/output/net.d.ts.map +1 -0
  267. package/dist/output/net.js +239 -0
  268. package/dist/output/net.js.map +1 -0
  269. package/dist/watchers/queryParams.d.ts +17 -0
  270. package/dist/watchers/queryParams.d.ts.map +1 -1
  271. package/dist/watchers/queryParams.js +61 -0
  272. package/dist/watchers/queryParams.js.map +1 -1
  273. package/dist/watchers/requestWatcher.d.ts +13 -1
  274. package/dist/watchers/requestWatcher.d.ts.map +1 -1
  275. package/dist/watchers/requestWatcher.js +32 -0
  276. package/dist/watchers/requestWatcher.js.map +1 -1
  277. package/package.json +2 -5
  278. package/dist/commands/storageLocal.d.ts +0 -18
  279. package/dist/commands/storageLocal.d.ts.map +0 -1
  280. package/dist/commands/storageLocal.js +0 -92
  281. package/dist/commands/storageLocal.js.map +0 -1
  282. package/dist/plugin.d.ts +0 -29
  283. package/dist/plugin.d.ts.map +0 -1
  284. package/dist/plugin.js +0 -2
  285. package/dist/plugin.js.map +0 -1
@@ -1,56 +1,61 @@
1
- import { runStorageLocalGet, runStorageLocalSet, runStorageLocalRemove, runStorageLocalList, runStorageLocalClear, } from '../../commands/storageLocal.js';
1
+ import { runStorageClear, runStorageGet, runStorageList, runStorageRemove, runStorageSet } from '../../commands/storage.js';
2
2
  export function registerStorage(program) {
3
3
  const storage = program.command('storage').description('Interact with browser storage APIs');
4
- const storageLocal = storage.command('local').description('Manage localStorage for the attached page');
5
- storageLocal
4
+ registerStorageArea(storage, 'local');
5
+ registerStorageArea(storage, 'session');
6
+ }
7
+ const registerStorageArea = (storage, area) => {
8
+ const storageName = `${area}Storage`;
9
+ const storageArea = storage.command(area).description(`Manage ${storageName} for the attached page`);
10
+ storageArea
6
11
  .command('get')
7
12
  .argument('[id]', 'Watcher id')
8
- .argument('<key>', 'localStorage key to retrieve')
13
+ .argument('<key>', `${storageName} key to retrieve`)
9
14
  .option('--origin <origin>', 'Validate page origin matches this value')
10
15
  .option('--json', 'Output JSON for automation')
11
- .addHelpText('after', '\nExamples:\n $ argus storage local get app myKey\n $ argus storage local get app myKey --json\n')
16
+ .addHelpText('after', `\nExamples:\n $ argus storage ${area} get app myKey\n $ argus storage ${area} get app myKey --json\n`)
12
17
  .action(async (id, key, options) => {
13
- await runStorageLocalGet(id, key, options);
18
+ await runStorageGet(area, id, key, options);
14
19
  });
15
- storageLocal
20
+ storageArea
16
21
  .command('set')
17
22
  .argument('[id]', 'Watcher id')
18
- .argument('<key>', 'localStorage key to set')
23
+ .argument('<key>', `${storageName} key to set`)
19
24
  .argument('<value>', 'Value to store')
20
25
  .option('--origin <origin>', 'Validate page origin matches this value')
21
26
  .option('--json', 'Output JSON for automation')
22
- .addHelpText('after', '\nExamples:\n $ argus storage local set app myKey "myValue"\n $ argus storage local set app config \'{"debug":true}\'\n')
27
+ .addHelpText('after', `\nExamples:\n $ argus storage ${area} set app myKey "myValue"\n $ argus storage ${area} set app config '{"debug":true}'\n`)
23
28
  .action(async (id, key, value, options) => {
24
- await runStorageLocalSet(id, key, value, options);
29
+ await runStorageSet(area, id, key, value, options);
25
30
  });
26
- storageLocal
31
+ storageArea
27
32
  .command('remove')
28
33
  .argument('[id]', 'Watcher id')
29
- .argument('<key>', 'localStorage key to remove')
34
+ .argument('<key>', `${storageName} key to remove`)
30
35
  .option('--origin <origin>', 'Validate page origin matches this value')
31
36
  .option('--json', 'Output JSON for automation')
32
- .addHelpText('after', '\nExamples:\n $ argus storage local remove app myKey\n')
37
+ .addHelpText('after', `\nExamples:\n $ argus storage ${area} remove app myKey\n`)
33
38
  .action(async (id, key, options) => {
34
- await runStorageLocalRemove(id, key, options);
39
+ await runStorageRemove(area, id, key, options);
35
40
  });
36
- storageLocal
41
+ storageArea
37
42
  .command('ls')
38
43
  .alias('list')
39
44
  .argument('[id]', 'Watcher id')
40
45
  .option('--origin <origin>', 'Validate page origin matches this value')
41
46
  .option('--json', 'Output JSON for automation')
42
- .addHelpText('after', '\nExamples:\n $ argus storage local ls app\n $ argus storage local ls app --json\n')
47
+ .addHelpText('after', `\nExamples:\n $ argus storage ${area} ls app\n $ argus storage ${area} ls app --json\n`)
43
48
  .action(async (id, options) => {
44
- await runStorageLocalList(id, options);
49
+ await runStorageList(area, id, options);
45
50
  });
46
- storageLocal
51
+ storageArea
47
52
  .command('clear')
48
53
  .argument('[id]', 'Watcher id')
49
54
  .option('--origin <origin>', 'Validate page origin matches this value')
50
55
  .option('--json', 'Output JSON for automation')
51
- .addHelpText('after', '\nExamples:\n $ argus storage local clear app\n')
56
+ .addHelpText('after', `\nExamples:\n $ argus storage ${area} clear app\n`)
52
57
  .action(async (id, options) => {
53
- await runStorageLocalClear(id, options);
58
+ await runStorageClear(area, id, options);
54
59
  });
55
- }
60
+ };
56
61
  //# sourceMappingURL=registerStorage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registerStorage.js","sourceRoot":"","sources":["../../../src/cli/register/registerStorage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registerStorage.js","sourceRoot":"","sources":["../../../src/cli/register/registerStorage.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export declare const collectMatch: (value: string, previous: string[]) => string[];
2
2
  export declare const collectParam: (value: string, previous: string[]) => string[];
3
+ export declare const collectValues: (value: string, previous: string[]) => string[];
3
4
  export declare const validateCaseFlags: (options: {
4
5
  ignoreCase?: boolean;
5
6
  caseSensitive?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/cli/validation.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,EAAE,KAAG,MAAM,EAA0B,CAAA;AACjG,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,EAAE,KAAG,MAAM,EAA0B,CAAA;AAEjG,eAAO,MAAM,iBAAiB,GAAI,SAAS;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,KAAG,OAO9F,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,SAAS;IAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,KAAG,OAapE,CAAA"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/cli/validation.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,EAAE,KAAG,MAAM,EAA0B,CAAA;AACjG,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,EAAE,KAAG,MAAM,EAA0B,CAAA;AACjG,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,EAAE,KAAG,MAAM,EAA0B,CAAA;AAElG,eAAO,MAAM,iBAAiB,GAAI,SAAS;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,KAAG,OAO9F,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,SAAS;IAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,KAAG,OAapE,CAAA"}
@@ -1,5 +1,6 @@
1
1
  export const collectMatch = (value, previous) => [...previous, value];
2
2
  export const collectParam = (value, previous) => [...previous, value];
3
+ export const collectValues = (value, previous) => [...previous, value];
3
4
  export const validateCaseFlags = (options) => {
4
5
  if (options.ignoreCase && options.caseSensitive) {
5
6
  console.error('Cannot combine --ignore-case with --case-sensitive.');
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/cli/validation.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,QAAkB,EAAY,EAAE,CAAC,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAA;AACjG,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,QAAkB,EAAY,EAAE,CAAC,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAA;AAEjG,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAA0D,EAAW,EAAE;IACxG,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAA;QACpE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACpB,OAAO,KAAK,CAAA;IACb,CAAC;IACD,OAAO,IAAI,CAAA;AACZ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAA6B,EAAW,EAAE;IAC9E,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAA;IACxE,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAA;QACtD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACpB,OAAO,KAAK,CAAA;IACb,CAAC;IACD,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;IAC1D,OAAO,IAAI,CAAA;AACZ,CAAC,CAAA"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/cli/validation.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,QAAkB,EAAY,EAAE,CAAC,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAA;AACjG,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,QAAkB,EAAY,EAAE,CAAC,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAA;AACjG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,QAAkB,EAAY,EAAE,CAAC,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAA;AAElG,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAA0D,EAAW,EAAE;IACxG,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAA;QACpE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACpB,OAAO,KAAK,CAAA;IACb,CAAC;IACD,OAAO,IAAI,CAAA;AACZ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAA6B,EAAW,EAAE;IAC9E,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAA;IACxE,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAA;QACtD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACpB,OAAO,KAAK,CAAA;IACb,CAAC;IACD,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;IAC1D,OAAO,IAAI,CAAA;AACZ,CAAC,CAAA"}
@@ -1,22 +1,43 @@
1
- export type AuthCookiesOptions = {
2
- json?: boolean;
3
- domain?: string;
4
- forOrigin?: boolean;
5
- excludeTracking?: boolean;
6
- showValues?: boolean;
7
- sessionOnly?: boolean;
8
- httpOnly?: boolean;
9
- secure?: boolean;
10
- };
11
- export type AuthExportCookiesOptions = {
12
- format?: string;
1
+ import { type AuthStateLoadResponse, type AuthStateSnapshot, type WatcherRecord } from '@vforsh/argus-core';
2
+ import { createOutput } from '../output/io.js';
3
+ import type { WatcherRequestSuccess } from '../watchers/requestWatcher.js';
4
+ export type AuthExportStateOptions = {
13
5
  domain?: string;
14
- forOrigin?: boolean;
15
- excludeTracking?: boolean;
16
6
  out?: string;
17
7
  };
18
- /** Execute `argus auth cookies`. */
19
- export declare const runAuthCookies: (id: string | undefined, options: AuthCookiesOptions) => Promise<void>;
20
- /** Execute `argus auth export-cookies`. */
21
- export declare const runAuthExportCookies: (id: string | undefined, options: AuthExportCookiesOptions) => Promise<void>;
8
+ export type AuthLoadStateOptions = {
9
+ inputPath: string;
10
+ url?: string;
11
+ json?: boolean;
12
+ };
13
+ export type AuthCloneOptions = {
14
+ targetId: string;
15
+ url?: string;
16
+ json?: boolean;
17
+ };
18
+ type AuthOutput = ReturnType<typeof createOutput>;
19
+ type AuthStateSnapshotResult = WatcherRequestSuccess<AuthStateSnapshot>;
20
+ type AuthStateLoadResult = {
21
+ watcher: WatcherRecord;
22
+ data: AuthStateLoadResponse;
23
+ };
24
+ /** Execute `argus auth export-state`. */
25
+ export declare const runAuthExportState: (id: string | undefined, options: AuthExportStateOptions) => Promise<void>;
26
+ /** Execute `argus auth load-state`. */
27
+ export declare const runAuthLoadState: (id: string | undefined, options: AuthLoadStateOptions) => Promise<void>;
28
+ /** Execute `argus auth clone`. */
29
+ export declare const runAuthClone: (sourceId: string | undefined, options: AuthCloneOptions) => Promise<void>;
30
+ export declare const loadAuthStateSnapshot: (inputPath: string) => Promise<AuthStateSnapshot>;
31
+ /**
32
+ * Request an auth-state snapshot from a watcher and preserve watcher-resolution errors.
33
+ * Shared by export, clone, and start --auth-from flows so they all use the same transport path.
34
+ */
35
+ export declare const requestAuthStateSnapshot: (id: string | undefined, input: {
36
+ domain?: string;
37
+ }, output: AuthOutput) => Promise<AuthStateSnapshotResult | null>;
38
+ /** Load an auth-state snapshot into a target watcher. */
39
+ export declare const loadAuthStateIntoWatcher: (id: string | undefined, snapshot: AuthStateSnapshot, input: {
40
+ url?: string;
41
+ }, output: AuthOutput) => Promise<AuthStateLoadResult | null>;
42
+ export {};
22
43
  //# sourceMappingURL=auth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,kBAAkB,GAAG;IAChC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACtC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,GAAG,CAAC,EAAE,MAAM,CAAA;CACZ,CAAA;AAWD,oCAAoC;AACpC,eAAO,MAAM,cAAc,GAAU,IAAI,MAAM,GAAG,SAAS,EAAE,SAAS,kBAAkB,KAAG,OAAO,CAAC,IAAI,CAuBtG,CAAA;AAED,2CAA2C;AAC3C,eAAO,MAAM,oBAAoB,GAAU,IAAI,MAAM,GAAG,SAAS,EAAE,SAAS,wBAAwB,KAAG,OAAO,CAAC,IAAI,CAiBlH,CAAA"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAInI,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAG1E,MAAM,MAAM,sBAAsB,GAAG;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAA;AACjD,KAAK,uBAAuB,GAAG,qBAAqB,CAAC,iBAAiB,CAAC,CAAA;AACvE,KAAK,mBAAmB,GAAG;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,qBAAqB,CAAA;CAAE,CAAA;AAElF,yCAAyC;AACzC,eAAO,MAAM,kBAAkB,GAAU,IAAI,MAAM,GAAG,SAAS,EAAE,SAAS,sBAAsB,KAAG,OAAO,CAAC,IAAI,CAQ9G,CAAA;AAED,uCAAuC;AACvC,eAAO,MAAM,gBAAgB,GAAU,IAAI,MAAM,GAAG,SAAS,EAAE,SAAS,oBAAoB,KAAG,OAAO,CAAC,IAAI,CAiB1G,CAAA;AAED,kCAAkC;AAClC,eAAO,MAAM,YAAY,GAAU,UAAU,MAAM,GAAG,SAAS,EAAE,SAAS,gBAAgB,KAAG,OAAO,CAAC,IAAI,CAuBxG,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,iBAAiB,CAWxF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,wBAAwB,GACpC,IAAI,MAAM,GAAG,SAAS,EACtB,OAAO;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1B,QAAQ,UAAU,KAChB,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAcxC,CAAA;AAED,yDAAyD;AACzD,eAAO,MAAM,wBAAwB,GACpC,IAAI,MAAM,GAAG,SAAS,EACtB,UAAU,iBAAiB,EAC3B,OAAO;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,EACvB,QAAQ,UAAU,KAChB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAoBpC,CAAA"}
@@ -1,165 +1,147 @@
1
- import { getOriginHost, isTrackingCookieName, matchesCookieDomain } from '@vforsh/argus-core';
2
- import { writeFile } from 'node:fs/promises';
1
+ import { parseAuthStateSnapshot } from '@vforsh/argus-core';
2
+ import { readFile, writeFile } from 'node:fs/promises';
3
+ import { normalizeUrl } from './chrome/shared.js';
3
4
  import { createOutput } from '../output/io.js';
4
- import { requestWatcherJson, writeRequestError } from '../watchers/requestWatcher.js';
5
- const COOKIE_EXPORT_FORMATS = new Set(['netscape', 'json', 'header']);
6
- /** Execute `argus auth cookies`. */
7
- export const runAuthCookies = async (id, options) => {
8
- const output = createOutput(options);
9
- const includeValues = options.showValues === true;
10
- const response = await fetchAuthCookies(id, { domain: options.domain, includeValues }, output);
11
- if (!response) {
5
+ import { requestWatcherAction, requestWatcherJson, writeRequestError } from '../watchers/requestWatcher.js';
6
+ /** Execute `argus auth export-state`. */
7
+ export const runAuthExportState = async (id, options) => {
8
+ const output = createOutput({});
9
+ const result = await requestAuthStateSnapshot(id, { domain: options.domain }, output);
10
+ if (!result) {
12
11
  return;
13
12
  }
14
- const cookies = filterCookies(response.origin, response.cookies, options);
15
- if (options.json) {
16
- output.writeJson({ ...response, cookies });
13
+ await writeOutput(JSON.stringify(result.data, null, 2), options.out);
14
+ };
15
+ /** Execute `argus auth load-state`. */
16
+ export const runAuthLoadState = async (id, options) => {
17
+ const output = createOutput(options);
18
+ const snapshot = await readAuthStateSnapshotOrExit(options.inputPath, output);
19
+ if (!snapshot) {
17
20
  return;
18
21
  }
19
- if (cookies.length === 0) {
20
- output.writeHuman('No cookies matched.');
22
+ const result = await loadAuthStateIntoWatcher(id, snapshot, { url: options.url }, output);
23
+ if (!result) {
21
24
  return;
22
25
  }
23
- for (const cookie of cookies) {
24
- output.writeHuman(formatCookieLine(cookie, includeValues));
26
+ if (options.json) {
27
+ output.writeJson(result.data);
28
+ return;
25
29
  }
30
+ output.writeHuman(formatLoadStateMessage(result.watcher.id, result.data.startupUrl));
26
31
  };
27
- /** Execute `argus auth export-cookies`. */
28
- export const runAuthExportCookies = async (id, options) => {
29
- const output = createOutput({});
30
- const format = normalizeExportFormat(options.format);
31
- if (!format) {
32
- output.writeWarn(`Invalid --format value: ${options.format}. Expected one of: netscape, json, header.`);
33
- process.exitCode = 2;
32
+ /** Execute `argus auth clone`. */
33
+ export const runAuthClone = async (sourceId, options) => {
34
+ const output = createOutput(options);
35
+ const source = await requestAuthStateSnapshot(sourceId, {}, output);
36
+ if (!source) {
34
37
  return;
35
38
  }
36
- const response = await fetchAuthCookies(id, { domain: options.domain, includeValues: true }, output);
37
- if (!response) {
39
+ const target = await loadAuthStateIntoWatcher(options.targetId, source.data, { url: options.url }, output);
40
+ if (!target) {
38
41
  return;
39
42
  }
40
- const serialized = serializeCookies(filterCookies(response.origin, response.cookies, options), format);
41
- await writeOutput(serialized, options.out);
43
+ if (options.json) {
44
+ output.writeJson({
45
+ ok: true,
46
+ from: source.watcher.id,
47
+ to: target.watcher.id,
48
+ startupUrl: target.data.startupUrl,
49
+ });
50
+ return;
51
+ }
52
+ output.writeHuman(formatCloneStateMessage(source.watcher.id, target.watcher.id, target.data.startupUrl));
53
+ };
54
+ export const loadAuthStateSnapshot = async (inputPath) => {
55
+ const source = inputPath === '-' ? 'stdin' : `file ${inputPath}`;
56
+ const raw = await readAuthStateInput(inputPath);
57
+ let parsed;
58
+ try {
59
+ parsed = JSON.parse(raw);
60
+ }
61
+ catch (error) {
62
+ throw new Error(`Invalid auth state from ${source}: ${error instanceof Error ? error.message : String(error)}`);
63
+ }
64
+ return parseAuthStateSnapshot(parsed, `auth state ${source}`);
42
65
  };
43
- const fetchAuthCookies = async (id, input, output) => {
66
+ /**
67
+ * Request an auth-state snapshot from a watcher and preserve watcher-resolution errors.
68
+ * Shared by export, clone, and start --auth-from flows so they all use the same transport path.
69
+ */
70
+ export const requestAuthStateSnapshot = async (id, input, output) => {
44
71
  const result = await requestWatcherJson({
45
72
  id,
46
- path: '/auth/cookies',
47
- query: buildCookieQuery(input),
73
+ path: '/auth/state',
74
+ query: buildStateQuery(input),
48
75
  timeoutMs: 10_000,
49
76
  });
50
77
  if (!result.ok) {
51
78
  writeRequestError(result, output);
52
79
  return null;
53
80
  }
54
- return result.data;
81
+ return result;
55
82
  };
56
- const buildCookieQuery = (input) => {
57
- const params = new URLSearchParams();
58
- if (input.domain?.trim()) {
59
- params.set('domain', input.domain.trim());
60
- }
61
- if (input.includeValues) {
62
- params.set('includeValues', 'true');
83
+ /** Load an auth-state snapshot into a target watcher. */
84
+ export const loadAuthStateIntoWatcher = async (id, snapshot, input, output) => {
85
+ const result = await requestWatcherAction({
86
+ id,
87
+ path: '/auth/state/load',
88
+ method: 'POST',
89
+ body: {
90
+ snapshot,
91
+ url: input.url ? normalizeUrl(input.url) : undefined,
92
+ },
93
+ timeoutMs: 15_000,
94
+ }, output);
95
+ if (!result) {
96
+ return null;
63
97
  }
64
- return params;
98
+ return result;
65
99
  };
66
- const filterCookies = (origin, cookies, options) => {
67
- const originHost = options.forOrigin ? getOriginHost(origin) : null;
68
- return cookies.filter((cookie) => matchesCookieFilters(cookie, originHost, options));
69
- };
70
- const matchesCookieFilters = (cookie, originHost, options) => {
71
- if (options.sessionOnly && !cookie.session) {
72
- return false;
73
- }
74
- if (options.httpOnly && !cookie.httpOnly) {
75
- return false;
100
+ const readAuthStateSnapshotOrExit = async (inputPath, output) => {
101
+ try {
102
+ return await loadAuthStateSnapshot(inputPath);
76
103
  }
77
- if (options.secure && !cookie.secure) {
78
- return false;
79
- }
80
- if (originHost && !matchesCookieDomain(cookie.domain, originHost)) {
81
- return false;
82
- }
83
- if (options.excludeTracking && isTrackingCookieName(cookie.name)) {
84
- return false;
104
+ catch (error) {
105
+ output.writeWarn(error instanceof Error ? error.message : String(error));
106
+ process.exitCode = 1;
107
+ return null;
85
108
  }
86
- return true;
87
- };
88
- const formatCookieLine = (cookie, showValues) => {
89
- const flags = [formatExpiryFlag(cookie), cookie.httpOnly ? 'httpOnly' : null, cookie.secure ? 'secure' : null, formatSameSiteFlag(cookie)]
90
- .filter(Boolean)
91
- .join(',');
92
- const value = resolveCookieValue(cookie, showValues);
93
- const flagSuffix = flags ? ` [${flags}]` : '';
94
- const valueSuffix = value ? ` ${value}` : '';
95
- return `${cookie.name} ${cookie.domain}${cookie.path}${flagSuffix}${valueSuffix}`.trim();
96
109
  };
97
- const formatExpiryFlag = (cookie) => {
98
- if (cookie.session) {
99
- return 'session';
110
+ const readAuthStateInput = async (inputPath) => {
111
+ if (inputPath !== '-') {
112
+ return readFile(inputPath, 'utf8');
100
113
  }
101
- if (cookie.expires != null) {
102
- return `exp=${Math.trunc(cookie.expires)}`;
114
+ if (process.stdin.isTTY) {
115
+ throw new Error('Cannot read auth state from stdin when stdin is a TTY. Pipe data or use --in <path>.');
103
116
  }
104
- return null;
105
- };
106
- const formatSameSiteFlag = (cookie) => {
107
- if (!cookie.sameSite) {
108
- return null;
117
+ const chunks = [];
118
+ for await (const chunk of process.stdin) {
119
+ chunks.push(Buffer.from(chunk));
109
120
  }
110
- return `sameSite=${cookie.sameSite}`;
121
+ return Buffer.concat(chunks).toString('utf8');
111
122
  };
112
- const resolveCookieValue = (cookie, showValues) => {
113
- if (showValues && cookie.value != null) {
114
- return cookie.value;
123
+ const formatLoadStateMessage = (watcherId, startupUrl) => {
124
+ if (startupUrl) {
125
+ return `loaded auth state into ${watcherId} and navigated to ${startupUrl}`;
115
126
  }
116
- return cookie.valuePreview ?? '';
127
+ return `loaded auth state into ${watcherId}`;
117
128
  };
118
- const normalizeExportFormat = (format) => {
119
- if (!format)
120
- return 'netscape';
121
- if (!COOKIE_EXPORT_FORMATS.has(format)) {
122
- return null;
129
+ const formatCloneStateMessage = (sourceId, targetId, startupUrl) => {
130
+ if (startupUrl) {
131
+ return `cloned auth state from ${sourceId} to ${targetId} and navigated to ${startupUrl}`;
123
132
  }
124
- switch (format) {
125
- case 'netscape':
126
- case 'json':
127
- case 'header':
128
- return format;
129
- default:
130
- return null;
131
- }
132
- };
133
- const formatCookiesAsNetscape = (cookies) => {
134
- const lines = ['# Netscape HTTP Cookie File', '# This file was generated by Argus.', ''];
135
- for (const cookie of cookies) {
136
- lines.push([
137
- formatNetscapeDomain(cookie),
138
- cookie.domain.startsWith('.') ? 'TRUE' : 'FALSE',
139
- cookie.path,
140
- cookie.secure ? 'TRUE' : 'FALSE',
141
- String(cookie.session ? 0 : Math.max(0, Math.trunc(cookie.expires ?? 0))),
142
- cookie.name,
143
- cookie.value ?? '',
144
- ].join('\t'));
145
- }
146
- return lines.join('\n');
133
+ return `cloned auth state from ${sourceId} to ${targetId}`;
147
134
  };
148
- const formatNetscapeDomain = (cookie) => (cookie.httpOnly ? `#HttpOnly_${cookie.domain}` : cookie.domain);
149
- const formatCookiesAsHeader = (cookies) => `Cookie: ${cookies.map((cookie) => `${cookie.name}=${cookie.value ?? ''}`).join('; ')}`;
150
- const serializeCookies = (cookies, format) => {
151
- switch (format) {
152
- case 'netscape':
153
- return formatCookiesAsNetscape(cookies);
154
- case 'json':
155
- return JSON.stringify(cookies, null, 2);
156
- case 'header':
157
- return formatCookiesAsHeader(cookies);
135
+ const buildStateQuery = (input) => {
136
+ const params = new URLSearchParams();
137
+ if (input.domain?.trim()) {
138
+ params.set('domain', input.domain.trim());
158
139
  }
140
+ return params;
159
141
  };
160
142
  const writeOutput = async (content, outPath) => {
161
143
  const withTrailingNewline = content.endsWith('\n') ? content : `${content}\n`;
162
- if (outPath) {
144
+ if (outPath && outPath !== '-') {
163
145
  await writeFile(outPath, withTrailingNewline, 'utf8');
164
146
  return;
165
147
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { type AuthCookie, type AuthCookiesResponse, type AuthStateCookie } from '@vforsh/argus-core';
2
+ import type { Output } from '../output/io.js';
3
+ type CookieFetchInput = {
4
+ domain?: string;
5
+ includeValues?: boolean;
6
+ };
7
+ type CookieClearScope = 'origin' | 'site' | 'domain' | 'browserContext';
8
+ type CookieFilterOptions = {
9
+ sessionOnly?: boolean;
10
+ httpOnly?: boolean;
11
+ secure?: boolean;
12
+ forOrigin?: boolean;
13
+ excludeTracking?: boolean;
14
+ };
15
+ type CookieSetInput = {
16
+ name: string;
17
+ value: string;
18
+ domain: string;
19
+ path: string;
20
+ secure?: boolean;
21
+ httpOnly?: boolean;
22
+ sameSite?: string;
23
+ expires?: string;
24
+ session?: boolean;
25
+ };
26
+ export declare const fetchAuthCookies: (id: string | undefined, input: CookieFetchInput, output: Output) => Promise<AuthCookiesResponse | null>;
27
+ export declare const normalizeCookieIdentityInput: (input: {
28
+ name: string;
29
+ domain: string;
30
+ path: string;
31
+ }, output: Output) => {
32
+ name: string;
33
+ domain: string;
34
+ path: string;
35
+ } | null;
36
+ export declare const parseCookieSetInput: (input: CookieSetInput, output: Output) => AuthStateCookie | null;
37
+ export declare const resolveCookieClearScope: (options: {
38
+ forOrigin?: boolean;
39
+ site?: boolean;
40
+ domain?: string;
41
+ browserContext?: boolean;
42
+ }, output: Output) => CookieClearScope | null;
43
+ export declare const filterCookies: (origin: string, cookies: AuthCookie[], options: CookieFilterOptions) => AuthCookie[];
44
+ export declare const formatCookieLine: (cookie: AuthCookie, showValues: boolean) => string;
45
+ export declare const formatCookieIdentityLine: (cookie: {
46
+ name: string;
47
+ domain: string;
48
+ path: string;
49
+ }) => string;
50
+ export declare const normalizeExportFormat: (format: string | undefined) => "netscape" | "json" | "header" | null;
51
+ export declare const serializeCookies: (cookies: AuthCookie[], format: "netscape" | "json" | "header") => string;
52
+ export declare const writeOutput: (content: string, outPath?: string) => Promise<void>;
53
+ export {};
54
+ //# sourceMappingURL=authCookieSupport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authCookieSupport.d.ts","sourceRoot":"","sources":["../../src/commands/authCookieSupport.ts"],"names":[],"mappings":"AAAA,OAAO,EAKN,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAG7C,KAAK,gBAAgB,GAAG;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAED,KAAK,gBAAgB,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,gBAAgB,CAAA;AAEvE,KAAK,mBAAmB,GAAG;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,eAAe,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AAED,KAAK,cAAc,GAAG;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAID,eAAO,MAAM,gBAAgB,GAAU,IAAI,MAAM,GAAG,SAAS,EAAE,OAAO,gBAAgB,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAc1I,CAAA;AAED,eAAO,MAAM,4BAA4B,GACxC,OAAO;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACrD,QAAQ,MAAM,KACZ;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAmBnD,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,OAAO,cAAc,EAAE,QAAQ,MAAM,KAAG,eAAe,GAAG,IAmC7F,CAAA;AAED,eAAO,MAAM,uBAAuB,GACnC,SAAS;IACR,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,OAAO,CAAA;CACxB,EACD,QAAQ,MAAM,KACZ,gBAAgB,GAAG,IAarB,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,EAAE,SAAS,UAAU,EAAE,EAAE,SAAS,mBAAmB,KAAG,UAAU,EAG7G,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,QAAQ,UAAU,EAAE,YAAY,OAAO,KAAG,MAS1E,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAI,QAAQ;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,KAAG,MAClD,CAAA;AAEhD,eAAO,MAAM,qBAAqB,GAAI,QAAQ,MAAM,GAAG,SAAS,KAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,IAgBnG,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,SAAS,UAAU,EAAE,EAAE,QAAQ,UAAU,GAAG,MAAM,GAAG,QAAQ,KAAG,MAShG,CAAA;AAED,eAAO,MAAM,WAAW,GAAU,SAAS,MAAM,EAAE,UAAU,MAAM,KAAG,OAAO,CAAC,IAAI,CAOjF,CAAA"}