@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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/argus.js +12792 -7821
- package/dist/bin.js +4 -47
- package/dist/bin.js.map +1 -1
- package/dist/cdp/sendCdpCommand.d.ts +6 -2
- package/dist/cdp/sendCdpCommand.d.ts.map +1 -1
- package/dist/cdp/sendCdpCommand.js +18 -12
- package/dist/cdp/sendCdpCommand.js.map +1 -1
- package/dist/cli/plugins/registerPlugins.d.ts.map +1 -1
- package/dist/cli/plugins/registerPlugins.js +1 -1
- package/dist/cli/plugins/registerPlugins.js.map +1 -1
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +2 -1
- package/dist/cli/program.js.map +1 -1
- package/dist/cli/register/domCommandBuilder.d.ts +23 -0
- package/dist/cli/register/domCommandBuilder.d.ts.map +1 -0
- package/dist/cli/register/domCommandBuilder.js +36 -0
- package/dist/cli/register/domCommandBuilder.js.map +1 -0
- package/dist/cli/register/index.d.ts +4 -0
- package/dist/cli/register/index.d.ts.map +1 -0
- package/dist/cli/register/index.js +49 -0
- package/dist/cli/register/index.js.map +1 -0
- package/dist/cli/register/registerAuth.d.ts.map +1 -1
- package/dist/cli/register/registerAuth.js +103 -4
- package/dist/cli/register/registerAuth.js.map +1 -1
- package/dist/cli/register/registerChrome.d.ts.map +1 -1
- package/dist/cli/register/registerChrome.js +53 -14
- package/dist/cli/register/registerChrome.js.map +1 -1
- package/dist/cli/register/registerClick.d.ts.map +1 -1
- package/dist/cli/register/registerClick.js +2 -1
- package/dist/cli/register/registerClick.js.map +1 -1
- package/dist/cli/register/registerDialog.d.ts +3 -0
- package/dist/cli/register/registerDialog.d.ts.map +1 -0
- package/dist/cli/register/registerDialog.js +45 -0
- package/dist/cli/register/registerDialog.js.map +1 -0
- package/dist/cli/register/registerDom.d.ts.map +1 -1
- package/dist/cli/register/registerDom.js +142 -121
- package/dist/cli/register/registerDom.js.map +1 -1
- package/dist/cli/register/registerEval.js +1 -1
- package/dist/cli/register/registerEval.js.map +1 -1
- package/dist/cli/register/registerFill.d.ts.map +1 -1
- package/dist/cli/register/registerFill.js +4 -3
- package/dist/cli/register/registerFill.js.map +1 -1
- package/dist/cli/register/registerHover.d.ts.map +1 -1
- package/dist/cli/register/registerHover.js +2 -1
- package/dist/cli/register/registerHover.js.map +1 -1
- package/dist/cli/register/registerLocate.d.ts +3 -0
- package/dist/cli/register/registerLocate.d.ts.map +1 -0
- package/dist/cli/register/registerLocate.js +48 -0
- package/dist/cli/register/registerLocate.js.map +1 -0
- package/dist/cli/register/registerNet.d.ts.map +1 -1
- package/dist/cli/register/registerNet.js +234 -13
- package/dist/cli/register/registerNet.js.map +1 -1
- package/dist/cli/register/registerQuickAccess.d.ts.map +1 -1
- package/dist/cli/register/registerQuickAccess.js +33 -3
- package/dist/cli/register/registerQuickAccess.js.map +1 -1
- package/dist/cli/register/registerStorage.d.ts.map +1 -1
- package/dist/cli/register/registerStorage.js +26 -21
- package/dist/cli/register/registerStorage.js.map +1 -1
- package/dist/cli/validation.d.ts +1 -0
- package/dist/cli/validation.d.ts.map +1 -1
- package/dist/cli/validation.js +1 -0
- package/dist/cli/validation.js.map +1 -1
- package/dist/commands/auth.d.ts +39 -18
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +104 -122
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/authCookieSupport.d.ts +54 -0
- package/dist/commands/authCookieSupport.d.ts.map +1 -0
- package/dist/commands/authCookieSupport.js +206 -0
- package/dist/commands/authCookieSupport.js.map +1 -0
- package/dist/commands/authCookies.d.ts +60 -0
- package/dist/commands/authCookies.d.ts.map +1 -0
- package/dist/commands/authCookies.js +149 -0
- package/dist/commands/authCookies.js.map +1 -0
- package/dist/commands/chrome/authState.d.ts +23 -0
- package/dist/commands/chrome/authState.d.ts.map +1 -0
- package/dist/commands/chrome/authState.js +97 -0
- package/dist/commands/chrome/authState.js.map +1 -0
- package/dist/commands/chrome/browser.d.ts +5 -0
- package/dist/commands/chrome/browser.d.ts.map +1 -0
- package/dist/commands/chrome/browser.js +71 -0
- package/dist/commands/chrome/browser.js.map +1 -0
- package/dist/commands/chrome/processes.d.ts +24 -0
- package/dist/commands/chrome/processes.d.ts.map +1 -0
- package/dist/commands/chrome/processes.js +115 -0
- package/dist/commands/chrome/processes.js.map +1 -0
- package/dist/commands/chrome/shared.d.ts +31 -0
- package/dist/commands/chrome/shared.d.ts.map +1 -0
- package/dist/commands/chrome/shared.js +48 -0
- package/dist/commands/chrome/shared.js.map +1 -0
- package/dist/commands/chrome/targets.d.ts +26 -0
- package/dist/commands/chrome/targets.d.ts.map +1 -0
- package/dist/commands/chrome/targets.js +240 -0
- package/dist/commands/chrome/targets.js.map +1 -0
- package/dist/commands/chrome.d.ts +6 -63
- package/dist/commands/chrome.d.ts.map +1 -1
- package/dist/commands/chrome.js +3 -511
- package/dist/commands/chrome.js.map +1 -1
- package/dist/commands/chromeStart.d.ts +1 -0
- package/dist/commands/chromeStart.d.ts.map +1 -1
- package/dist/commands/chromeStart.js +28 -3
- package/dist/commands/chromeStart.js.map +1 -1
- package/dist/commands/code.d.ts.map +1 -1
- package/dist/commands/code.js +9 -1
- package/dist/commands/code.js.map +1 -1
- package/dist/commands/dialog.d.ts +13 -0
- package/dist/commands/dialog.d.ts.map +1 -0
- package/dist/commands/dialog.js +71 -0
- package/dist/commands/dialog.js.map +1 -0
- package/dist/commands/dom/shared.d.ts +16 -0
- package/dist/commands/dom/shared.d.ts.map +1 -0
- package/dist/commands/dom/shared.js +69 -0
- package/dist/commands/dom/shared.js.map +1 -0
- package/dist/commands/domAdd.d.ts.map +1 -1
- package/dist/commands/domAdd.js +11 -27
- package/dist/commands/domAdd.js.map +1 -1
- package/dist/commands/domClick.d.ts +1 -0
- package/dist/commands/domClick.d.ts.map +1 -1
- package/dist/commands/domClick.js +32 -48
- package/dist/commands/domClick.js.map +1 -1
- package/dist/commands/domFill.d.ts +1 -0
- package/dist/commands/domFill.d.ts.map +1 -1
- package/dist/commands/domFill.js +21 -38
- package/dist/commands/domFill.js.map +1 -1
- package/dist/commands/domFocus.d.ts +2 -1
- package/dist/commands/domFocus.d.ts.map +1 -1
- package/dist/commands/domFocus.js +12 -26
- package/dist/commands/domFocus.js.map +1 -1
- package/dist/commands/domHover.d.ts +2 -1
- package/dist/commands/domHover.d.ts.map +1 -1
- package/dist/commands/domHover.js +12 -26
- package/dist/commands/domHover.js.map +1 -1
- package/dist/commands/domInfo.d.ts +2 -1
- package/dist/commands/domInfo.d.ts.map +1 -1
- package/dist/commands/domInfo.js +11 -25
- package/dist/commands/domInfo.js.map +1 -1
- package/dist/commands/domModify.d.ts.map +1 -1
- package/dist/commands/domModify.js +14 -26
- package/dist/commands/domModify.js.map +1 -1
- package/dist/commands/domRemove.d.ts.map +1 -1
- package/dist/commands/domRemove.js +10 -25
- package/dist/commands/domRemove.js.map +1 -1
- package/dist/commands/domScroll.d.ts.map +1 -1
- package/dist/commands/domScroll.js +7 -33
- package/dist/commands/domScroll.js.map +1 -1
- package/dist/commands/domScrollTo.d.ts.map +1 -1
- package/dist/commands/domScrollTo.js +7 -33
- package/dist/commands/domScrollTo.js.map +1 -1
- package/dist/commands/domSetFile.d.ts.map +1 -1
- package/dist/commands/domSetFile.js +14 -36
- package/dist/commands/domSetFile.js.map +1 -1
- package/dist/commands/domTree.d.ts.map +1 -1
- package/dist/commands/domTree.js +12 -27
- package/dist/commands/domTree.js.map +1 -1
- package/dist/commands/extension/setup.js +1 -1
- package/dist/commands/extension/setup.js.map +1 -1
- package/dist/commands/locate.d.ts +17 -0
- package/dist/commands/locate.d.ts.map +1 -0
- package/dist/commands/locate.js +117 -0
- package/dist/commands/locate.js.map +1 -0
- package/dist/commands/net.d.ts +2 -5
- package/dist/commands/net.d.ts.map +1 -1
- package/dist/commands/net.js +5 -7
- package/dist/commands/net.js.map +1 -1
- package/dist/commands/netBody.d.ts +6 -0
- package/dist/commands/netBody.d.ts.map +1 -0
- package/dist/commands/netBody.js +32 -0
- package/dist/commands/netBody.js.map +1 -0
- package/dist/commands/netCapture.d.ts +36 -0
- package/dist/commands/netCapture.d.ts.map +1 -0
- package/dist/commands/netCapture.js +105 -0
- package/dist/commands/netCapture.js.map +1 -0
- package/dist/commands/netClear.d.ts +5 -0
- package/dist/commands/netClear.d.ts.map +1 -0
- package/dist/commands/netClear.js +20 -0
- package/dist/commands/netClear.js.map +1 -0
- package/dist/commands/netExport.d.ts +13 -0
- package/dist/commands/netExport.d.ts.map +1 -0
- package/dist/commands/netExport.js +124 -0
- package/dist/commands/netExport.js.map +1 -0
- package/dist/commands/netInspect.d.ts +12 -0
- package/dist/commands/netInspect.d.ts.map +1 -0
- package/dist/commands/netInspect.js +205 -0
- package/dist/commands/netInspect.js.map +1 -0
- package/dist/commands/netRequestClient.d.ts +17 -0
- package/dist/commands/netRequestClient.d.ts.map +1 -0
- package/dist/commands/netRequestClient.js +54 -0
- package/dist/commands/netRequestClient.js.map +1 -0
- package/dist/commands/netRequestTarget.d.ts +14 -0
- package/dist/commands/netRequestTarget.d.ts.map +1 -0
- package/dist/commands/netRequestTarget.js +36 -0
- package/dist/commands/netRequestTarget.js.map +1 -0
- package/dist/commands/netShared.d.ts +40 -0
- package/dist/commands/netShared.d.ts.map +1 -0
- package/dist/commands/netShared.js +108 -0
- package/dist/commands/netShared.js.map +1 -0
- package/dist/commands/netShow.d.ts +5 -0
- package/dist/commands/netShow.d.ts.map +1 -0
- package/dist/commands/netShow.js +28 -0
- package/dist/commands/netShow.js.map +1 -0
- package/dist/commands/netSummary.d.ts +6 -0
- package/dist/commands/netSummary.d.ts.map +1 -0
- package/dist/commands/netSummary.js +99 -0
- package/dist/commands/netSummary.js.map +1 -0
- package/dist/commands/netTail.d.ts +2 -5
- package/dist/commands/netTail.d.ts.map +1 -1
- package/dist/commands/netTail.js +7 -15
- package/dist/commands/netTail.js.map +1 -1
- package/dist/commands/netWatch.d.ts +11 -0
- package/dist/commands/netWatch.d.ts.map +1 -0
- package/dist/commands/netWatch.js +55 -0
- package/dist/commands/netWatch.js.map +1 -0
- package/dist/commands/resolveTestId.d.ts +2 -1
- package/dist/commands/resolveTestId.d.ts.map +1 -1
- package/dist/commands/resolveTestId.js +3 -3
- package/dist/commands/resolveTestId.js.map +1 -1
- package/dist/commands/start.d.ts +2 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +77 -49
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/storage.d.ts +17 -0
- package/dist/commands/storage.d.ts.map +1 -0
- package/dist/commands/storage.js +67 -0
- package/dist/commands/storage.js.map +1 -0
- package/dist/commands/watcherNativeHost.d.ts.map +1 -1
- package/dist/commands/watcherNativeHost.js +13 -2
- package/dist/commands/watcherNativeHost.js.map +1 -1
- package/dist/commands/watcherSession.d.ts +29 -0
- package/dist/commands/watcherSession.d.ts.map +1 -0
- package/dist/commands/watcherSession.js +64 -0
- package/dist/commands/watcherSession.js.map +1 -0
- package/dist/commands/watcherStart.d.ts +1 -1
- package/dist/commands/watcherStart.d.ts.map +1 -1
- package/dist/commands/watcherStart.js +15 -40
- package/dist/commands/watcherStart.js.map +1 -1
- package/dist/config/argusConfig.d.ts.map +1 -1
- package/dist/config/argusConfig.js +69 -81
- package/dist/config/argusConfig.js.map +1 -1
- package/dist/net/har.d.ts +86 -0
- package/dist/net/har.d.ts.map +1 -0
- package/dist/net/har.js +125 -0
- package/dist/net/har.js.map +1 -0
- package/dist/net/summary.d.ts +33 -0
- package/dist/net/summary.d.ts.map +1 -0
- package/dist/net/summary.js +128 -0
- package/dist/net/summary.js.map +1 -0
- package/dist/output/accessibility.js +16 -12
- package/dist/output/accessibility.js.map +1 -1
- package/dist/output/code.d.ts +2 -1
- package/dist/output/code.d.ts.map +1 -1
- package/dist/output/code.js +10 -0
- package/dist/output/code.js.map +1 -1
- package/dist/output/dom.d.ts.map +1 -1
- package/dist/output/dom.js +2 -1
- package/dist/output/dom.js.map +1 -1
- package/dist/output/format.d.ts +1 -3
- package/dist/output/format.d.ts.map +1 -1
- package/dist/output/format.js +0 -8
- package/dist/output/format.js.map +1 -1
- package/dist/output/locate.d.ts +3 -0
- package/dist/output/locate.d.ts.map +1 -0
- package/dist/output/locate.js +25 -0
- package/dist/output/locate.js.map +1 -0
- package/dist/output/net.d.ts +13 -0
- package/dist/output/net.d.ts.map +1 -0
- package/dist/output/net.js +239 -0
- package/dist/output/net.js.map +1 -0
- package/dist/watchers/queryParams.d.ts +17 -0
- package/dist/watchers/queryParams.d.ts.map +1 -1
- package/dist/watchers/queryParams.js +61 -0
- package/dist/watchers/queryParams.js.map +1 -1
- package/dist/watchers/requestWatcher.d.ts +13 -1
- package/dist/watchers/requestWatcher.d.ts.map +1 -1
- package/dist/watchers/requestWatcher.js +32 -0
- package/dist/watchers/requestWatcher.js.map +1 -1
- package/package.json +2 -5
- package/dist/commands/storageLocal.d.ts +0 -18
- package/dist/commands/storageLocal.d.ts.map +0 -1
- package/dist/commands/storageLocal.js +0 -92
- package/dist/commands/storageLocal.js.map +0 -1
- package/dist/plugin.d.ts +0 -29
- package/dist/plugin.d.ts.map +0 -1
- package/dist/plugin.js +0 -2
- package/dist/plugin.js.map +0 -1
|
@@ -1,56 +1,61 @@
|
|
|
1
|
-
import {
|
|
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
|
-
|
|
5
|
-
|
|
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>',
|
|
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',
|
|
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
|
|
18
|
+
await runStorageGet(area, id, key, options);
|
|
14
19
|
});
|
|
15
|
-
|
|
20
|
+
storageArea
|
|
16
21
|
.command('set')
|
|
17
22
|
.argument('[id]', 'Watcher id')
|
|
18
|
-
.argument('<key>',
|
|
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',
|
|
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
|
|
29
|
+
await runStorageSet(area, id, key, value, options);
|
|
25
30
|
});
|
|
26
|
-
|
|
31
|
+
storageArea
|
|
27
32
|
.command('remove')
|
|
28
33
|
.argument('[id]', 'Watcher id')
|
|
29
|
-
.argument('<key>',
|
|
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',
|
|
37
|
+
.addHelpText('after', `\nExamples:\n $ argus storage ${area} remove app myKey\n`)
|
|
33
38
|
.action(async (id, key, options) => {
|
|
34
|
-
await
|
|
39
|
+
await runStorageRemove(area, id, key, options);
|
|
35
40
|
});
|
|
36
|
-
|
|
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',
|
|
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
|
|
49
|
+
await runStorageList(area, id, options);
|
|
45
50
|
});
|
|
46
|
-
|
|
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',
|
|
56
|
+
.addHelpText('after', `\nExamples:\n $ argus storage ${area} clear app\n`)
|
|
52
57
|
.action(async (id, options) => {
|
|
53
|
-
await
|
|
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":"
|
|
1
|
+
{"version":3,"file":"registerStorage.js","sourceRoot":"","sources":["../../../src/cli/register/registerStorage.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/validation.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/cli/validation.js
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/commands/auth.d.ts
CHANGED
|
@@ -1,22 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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":"
|
|
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"}
|
package/dist/commands/auth.js
CHANGED
|
@@ -1,165 +1,147 @@
|
|
|
1
|
-
import {
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
20
|
-
|
|
22
|
+
const result = await loadAuthStateIntoWatcher(id, snapshot, { url: options.url }, output);
|
|
23
|
+
if (!result) {
|
|
21
24
|
return;
|
|
22
25
|
}
|
|
23
|
-
|
|
24
|
-
output.
|
|
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
|
|
28
|
-
export const
|
|
29
|
-
const output = createOutput(
|
|
30
|
-
const
|
|
31
|
-
if (!
|
|
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
|
|
37
|
-
if (!
|
|
39
|
+
const target = await loadAuthStateIntoWatcher(options.targetId, source.data, { url: options.url }, output);
|
|
40
|
+
if (!target) {
|
|
38
41
|
return;
|
|
39
42
|
}
|
|
40
|
-
|
|
41
|
-
|
|
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
|
-
|
|
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/
|
|
47
|
-
query:
|
|
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
|
|
81
|
+
return result;
|
|
55
82
|
};
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
|
98
|
+
return result;
|
|
65
99
|
};
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
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
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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
|
|
98
|
-
if (
|
|
99
|
-
return '
|
|
110
|
+
const readAuthStateInput = async (inputPath) => {
|
|
111
|
+
if (inputPath !== '-') {
|
|
112
|
+
return readFile(inputPath, 'utf8');
|
|
100
113
|
}
|
|
101
|
-
if (
|
|
102
|
-
|
|
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
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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
|
|
121
|
+
return Buffer.concat(chunks).toString('utf8');
|
|
111
122
|
};
|
|
112
|
-
const
|
|
113
|
-
if (
|
|
114
|
-
return
|
|
123
|
+
const formatLoadStateMessage = (watcherId, startupUrl) => {
|
|
124
|
+
if (startupUrl) {
|
|
125
|
+
return `loaded auth state into ${watcherId} and navigated to ${startupUrl}`;
|
|
115
126
|
}
|
|
116
|
-
return
|
|
127
|
+
return `loaded auth state into ${watcherId}`;
|
|
117
128
|
};
|
|
118
|
-
const
|
|
119
|
-
if (
|
|
120
|
-
return
|
|
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
|
-
|
|
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
|
|
149
|
-
const
|
|
150
|
-
|
|
151
|
-
|
|
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":"
|
|
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"}
|