browser-debugger-cli 0.6.5 → 0.6.7
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/README.md +48 -269
- package/dist/commands/__tests__/helpJson.contract.test.d.ts +12 -0
- package/dist/commands/__tests__/helpJson.contract.test.d.ts.map +1 -0
- package/dist/commands/__tests__/helpJson.contract.test.js +121 -0
- package/dist/commands/__tests__/helpJson.contract.test.js.map +1 -0
- package/dist/commands/__tests__/machineReadableHelp.contract.test.js +26 -7
- package/dist/commands/__tests__/machineReadableHelp.contract.test.js.map +1 -1
- package/dist/commands/cdp.d.ts.map +1 -1
- package/dist/commands/cdp.js.map +1 -1
- package/dist/commands/cleanup.d.ts.map +1 -1
- package/dist/commands/cleanup.js +17 -91
- package/dist/commands/cleanup.js.map +1 -1
- package/dist/commands/console.d.ts.map +1 -1
- package/dist/commands/console.js.map +1 -1
- package/dist/commands/details.d.ts.map +1 -1
- package/dist/commands/details.js +3 -1
- package/dist/commands/details.js.map +1 -1
- package/dist/commands/dom/DomElementResolver.d.ts +138 -0
- package/dist/commands/dom/DomElementResolver.d.ts.map +1 -0
- package/dist/commands/dom/DomElementResolver.js +173 -0
- package/dist/commands/dom/DomElementResolver.js.map +1 -0
- package/dist/commands/dom/a11y.d.ts.map +1 -1
- package/dist/commands/dom/a11y.js +37 -33
- package/dist/commands/dom/a11y.js.map +1 -1
- package/dist/commands/dom/evalHelpers.d.ts.map +1 -1
- package/dist/commands/dom/evalHelpers.js +1 -1
- package/dist/commands/dom/evalHelpers.js.map +1 -1
- package/dist/commands/dom/formFillHelpers.d.ts +68 -2
- package/dist/commands/dom/formFillHelpers.d.ts.map +1 -1
- package/dist/commands/dom/formFillHelpers.js +216 -70
- package/dist/commands/dom/formFillHelpers.js.map +1 -1
- package/dist/commands/dom/formInteraction.d.ts.map +1 -1
- package/dist/commands/dom/formInteraction.js +128 -15
- package/dist/commands/dom/formInteraction.js.map +1 -1
- package/dist/commands/dom/helpers.d.ts +11 -2
- package/dist/commands/dom/helpers.d.ts.map +1 -1
- package/dist/commands/dom/helpers.js +50 -1
- package/dist/commands/dom/helpers.js.map +1 -1
- package/dist/commands/dom/index.d.ts.map +1 -1
- package/dist/commands/dom/index.js +105 -52
- package/dist/commands/dom/index.js.map +1 -1
- package/dist/commands/dom/keyMapping.d.ts +56 -0
- package/dist/commands/dom/keyMapping.d.ts.map +1 -0
- package/dist/commands/dom/keyMapping.js +110 -0
- package/dist/commands/dom/keyMapping.js.map +1 -0
- package/dist/commands/dom/reactEventHelpers.d.ts +19 -20
- package/dist/commands/dom/reactEventHelpers.d.ts.map +1 -1
- package/dist/commands/dom/reactEventHelpers.js +73 -80
- package/dist/commands/dom/reactEventHelpers.js.map +1 -1
- package/dist/commands/helpJson.d.ts +165 -0
- package/dist/commands/helpJson.d.ts.map +1 -0
- package/dist/commands/helpJson.js +252 -0
- package/dist/commands/helpJson.js.map +1 -0
- package/dist/commands/machineReadableHelp.d.ts +21 -2
- package/dist/commands/machineReadableHelp.d.ts.map +1 -1
- package/dist/commands/machineReadableHelp.js +95 -60
- package/dist/commands/machineReadableHelp.js.map +1 -1
- package/dist/commands/network.d.ts.map +1 -1
- package/dist/commands/network.js.map +1 -1
- package/dist/commands/peek.d.ts.map +1 -1
- package/dist/commands/peek.js +20 -13
- package/dist/commands/peek.js.map +1 -1
- package/dist/commands/shared/CommandRunner.d.ts +4 -10
- package/dist/commands/shared/CommandRunner.d.ts.map +1 -1
- package/dist/commands/shared/CommandRunner.js +2 -2
- package/dist/commands/shared/CommandRunner.js.map +1 -1
- package/dist/commands/shared/commonOptions.d.ts +0 -15
- package/dist/commands/shared/commonOptions.d.ts.map +1 -1
- package/dist/commands/shared/commonOptions.js +0 -32
- package/dist/commands/shared/commonOptions.js.map +1 -1
- package/dist/commands/shared/optionTypes.d.ts +237 -0
- package/dist/commands/shared/optionTypes.d.ts.map +1 -0
- package/dist/commands/shared/optionTypes.js +20 -0
- package/dist/commands/shared/optionTypes.js.map +1 -0
- package/dist/commands/shared/startHelpers.d.ts.map +1 -1
- package/dist/commands/shared/startHelpers.js +3 -3
- package/dist/commands/shared/startHelpers.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +8 -6
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/stop.d.ts.map +1 -1
- package/dist/commands/stop.js +17 -43
- package/dist/commands/stop.js.map +1 -1
- package/dist/commands/tail.d.ts.map +1 -1
- package/dist/commands/tail.js +49 -59
- package/dist/commands/tail.js.map +1 -1
- package/dist/connection/types.d.ts +2 -1
- package/dist/connection/types.d.ts.map +1 -1
- package/dist/constants.d.ts +19 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +45 -2
- package/dist/constants.js.map +1 -1
- package/dist/daemon/handlers/responseHandler.d.ts.map +1 -1
- package/dist/daemon/handlers/responseHandler.js +1 -0
- package/dist/daemon/handlers/responseHandler.js.map +1 -1
- package/dist/daemon/ipcServer.js +8 -8
- package/dist/daemon/ipcServer.js.map +1 -1
- package/dist/daemon/lifecycle/signalHandlers.d.ts.map +1 -1
- package/dist/daemon/lifecycle/signalHandlers.js +19 -3
- package/dist/daemon/lifecycle/signalHandlers.js.map +1 -1
- package/dist/daemon/lifecycle/workerCleanup.d.ts.map +1 -1
- package/dist/daemon/lifecycle/workerCleanup.js +5 -2
- package/dist/daemon/lifecycle/workerCleanup.js.map +1 -1
- package/dist/daemon/patternDefinitions.d.ts +0 -13
- package/dist/daemon/patternDefinitions.d.ts.map +1 -1
- package/dist/daemon/patternDefinitions.js +0 -17
- package/dist/daemon/patternDefinitions.js.map +1 -1
- package/dist/daemon/worker/commandRegistry.d.ts.map +1 -1
- package/dist/daemon/worker/commandRegistry.js +1 -0
- package/dist/daemon/worker/commandRegistry.js.map +1 -1
- package/dist/index.js +34 -2
- package/dist/index.js.map +1 -1
- package/dist/ipc/__tests__/jsonl.unit.test.js +5 -5
- package/dist/ipc/__tests__/jsonl.unit.test.js.map +1 -1
- package/dist/ipc/protocol/commands.d.ts +2 -0
- package/dist/ipc/protocol/commands.d.ts.map +1 -1
- package/dist/ipc/protocol/commands.js.map +1 -1
- package/dist/ipc/session/queries.d.ts +2 -0
- package/dist/ipc/session/queries.d.ts.map +1 -1
- package/dist/ipc/utils/responseValidator.d.ts +7 -1
- package/dist/ipc/utils/responseValidator.d.ts.map +1 -1
- package/dist/ipc/utils/responseValidator.js +6 -1
- package/dist/ipc/utils/responseValidator.js.map +1 -1
- package/dist/session/QueryCacheManager.d.ts +140 -0
- package/dist/session/QueryCacheManager.d.ts.map +1 -0
- package/dist/session/QueryCacheManager.js +233 -0
- package/dist/session/QueryCacheManager.js.map +1 -0
- package/dist/session/cleanup.d.ts +63 -1
- package/dist/session/cleanup.d.ts.map +1 -1
- package/dist/session/cleanup.js +191 -65
- package/dist/session/cleanup.js.map +1 -1
- package/dist/session/queryCache.d.ts +25 -14
- package/dist/session/queryCache.d.ts.map +1 -1
- package/dist/session/queryCache.js +31 -60
- package/dist/session/queryCache.js.map +1 -1
- package/dist/telemetry/__tests__/roleInference.unit.test.d.ts +9 -0
- package/dist/telemetry/__tests__/roleInference.unit.test.d.ts.map +1 -0
- package/dist/telemetry/__tests__/roleInference.unit.test.js +138 -0
- package/dist/telemetry/__tests__/roleInference.unit.test.js.map +1 -0
- package/dist/telemetry/dom.d.ts +1 -0
- package/dist/telemetry/dom.d.ts.map +1 -1
- package/dist/telemetry/dom.js +9 -4
- package/dist/telemetry/dom.js.map +1 -1
- package/dist/telemetry/filters.d.ts +3 -0
- package/dist/telemetry/filters.d.ts.map +1 -1
- package/dist/telemetry/filters.js +25 -3
- package/dist/telemetry/filters.js.map +1 -1
- package/dist/telemetry/network.d.ts.map +1 -1
- package/dist/telemetry/network.js +35 -6
- package/dist/telemetry/network.js.map +1 -1
- package/dist/telemetry/roleInference.d.ts +50 -0
- package/dist/telemetry/roleInference.d.ts.map +1 -0
- package/dist/telemetry/roleInference.js +163 -0
- package/dist/telemetry/roleInference.js.map +1 -0
- package/dist/telemetry/utils.d.ts +0 -57
- package/dist/telemetry/utils.d.ts.map +1 -1
- package/dist/telemetry/utils.js +0 -71
- package/dist/telemetry/utils.js.map +1 -1
- package/dist/types/dom.d.ts +11 -0
- package/dist/types/dom.d.ts.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/formatters/a11y.d.ts +13 -3
- package/dist/ui/formatters/a11y.d.ts.map +1 -1
- package/dist/ui/formatters/a11y.js +18 -3
- package/dist/ui/formatters/a11y.js.map +1 -1
- package/dist/ui/formatters/preview.d.ts +4 -0
- package/dist/ui/formatters/preview.d.ts.map +1 -1
- package/dist/ui/formatters/preview.js +26 -43
- package/dist/ui/formatters/preview.js.map +1 -1
- package/dist/ui/formatters/sessionFormatters.d.ts.map +1 -1
- package/dist/ui/formatters/sessionFormatters.js +2 -0
- package/dist/ui/formatters/sessionFormatters.js.map +1 -1
- package/dist/ui/logging/index.d.ts +1 -1
- package/dist/ui/logging/index.d.ts.map +1 -1
- package/dist/ui/logging/index.js +1 -1
- package/dist/ui/logging/index.js.map +1 -1
- package/dist/ui/logging/logger.d.ts +21 -0
- package/dist/ui/logging/logger.d.ts.map +1 -1
- package/dist/ui/logging/logger.js +24 -6
- package/dist/ui/logging/logger.js.map +1 -1
- package/dist/ui/messages/commands.d.ts +0 -14
- package/dist/ui/messages/commands.d.ts.map +1 -1
- package/dist/ui/messages/commands.js +0 -18
- package/dist/ui/messages/commands.js.map +1 -1
- package/dist/ui/messages/errors.d.ts +0 -16
- package/dist/ui/messages/errors.d.ts.map +1 -1
- package/dist/ui/messages/errors.js +0 -18
- package/dist/ui/messages/errors.js.map +1 -1
- package/dist/ui/messages/hints.d.ts +0 -10
- package/dist/ui/messages/hints.d.ts.map +1 -1
- package/dist/ui/messages/hints.js +0 -12
- package/dist/ui/messages/hints.js.map +1 -1
- package/dist/utils/decisionTrees.d.ts +0 -17
- package/dist/utils/decisionTrees.d.ts.map +1 -1
- package/dist/utils/decisionTrees.js +5 -21
- package/dist/utils/decisionTrees.js.map +1 -1
- package/dist/utils/errorMapping.d.ts +60 -0
- package/dist/utils/errorMapping.d.ts.map +1 -0
- package/dist/utils/errorMapping.js +97 -0
- package/dist/utils/errorMapping.js.map +1 -0
- package/dist/utils/file.d.ts +27 -0
- package/dist/utils/file.d.ts.map +1 -0
- package/dist/utils/file.js +37 -0
- package/dist/utils/file.js.map +1 -0
- package/dist/utils/levenshtein.d.ts +0 -17
- package/dist/utils/levenshtein.d.ts.map +1 -1
- package/dist/utils/levenshtein.js +0 -31
- package/dist/utils/levenshtein.js.map +1 -1
- package/dist/utils/taskMappings.d.ts +0 -17
- package/dist/utils/taskMappings.d.ts.map +1 -1
- package/dist/utils/taskMappings.js +5 -21
- package/dist/utils/taskMappings.js.map +1 -1
- package/dist/utils/typeGuards.d.ts +62 -0
- package/dist/utils/typeGuards.d.ts.map +1 -0
- package/dist/utils/typeGuards.js +94 -0
- package/dist/utils/typeGuards.js.map +1 -0
- package/dist/utils/url.d.ts.map +1 -1
- package/dist/utils/url.js +15 -2
- package/dist/utils/url.js.map +1 -1
- package/package.json +1 -1
package/dist/commands/cdp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cdp.js","sourceRoot":"","sources":["../../src/commands/cdp.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"cdp.js","sourceRoot":"","sources":["../../src/commands/cdp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/commands/cleanup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/commands/cleanup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqCzC;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoE7D"}
|
package/dist/commands/cleanup.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import * as fs from 'fs';
|
|
2
1
|
import { runCommand } from '../commands/shared/CommandRunner.js';
|
|
3
2
|
import { jsonOption } from '../commands/shared/commonOptions.js';
|
|
4
|
-
import {
|
|
5
|
-
import { cleanupSession } from '../session/cleanup.js';
|
|
6
|
-
import { getSessionFilePath } from '../session/paths.js';
|
|
3
|
+
import { performSessionCleanup } from '../session/cleanup.js';
|
|
7
4
|
import { readPid } from '../session/pid.js';
|
|
8
5
|
import { joinLines } from '../ui/formatting.js';
|
|
9
|
-
import { sessionFilesCleanedMessage, sessionOutputRemovedMessage, sessionDirectoryCleanMessage, noSessionFilesMessage,
|
|
6
|
+
import { sessionFilesCleanedMessage, sessionOutputRemovedMessage, sessionDirectoryCleanMessage, noSessionFilesMessage, sessionStillActiveError, warningMessage, } from '../ui/messages/commands.js';
|
|
10
7
|
import { EXIT_CODES } from '../utils/exitCodes.js';
|
|
11
8
|
import { isProcessAlive } from '../utils/process.js';
|
|
12
9
|
/**
|
|
@@ -28,57 +25,11 @@ export function registerCleanupCommand(program) {
|
|
|
28
25
|
.command('cleanup')
|
|
29
26
|
.description('Clean up stale session files')
|
|
30
27
|
.option('-f, --force', 'Force cleanup even if session appears active', false)
|
|
31
|
-
.option('-
|
|
28
|
+
.option('--remove-output', 'Also remove session.json output file', false)
|
|
32
29
|
.option('--aggressive', 'Kill orphaned daemon processes and all stale Chrome instances', false)
|
|
33
30
|
.addOption(jsonOption)
|
|
34
31
|
.action(async (options) => {
|
|
35
32
|
await runCommand(async (opts) => {
|
|
36
|
-
const { cleanupStaleChrome } = await import('../session/chrome.js');
|
|
37
|
-
const { cleanupOrphanedDaemons } = await import('../session/cleanup.js');
|
|
38
|
-
let didCleanup = false;
|
|
39
|
-
let cleanedSession = false;
|
|
40
|
-
let cleanedOutput = false;
|
|
41
|
-
let cleanedChrome = false;
|
|
42
|
-
let cleanedDaemons = false;
|
|
43
|
-
const warnings = [];
|
|
44
|
-
if (opts.aggressive) {
|
|
45
|
-
const daemonsKilled = cleanupOrphanedDaemons();
|
|
46
|
-
if (daemonsKilled > 0) {
|
|
47
|
-
cleanedDaemons = true;
|
|
48
|
-
didCleanup = true;
|
|
49
|
-
console.error(`✓ Killed ${daemonsKilled} orphaned daemon process(es)`);
|
|
50
|
-
}
|
|
51
|
-
const errorCount = await cleanupStaleChrome();
|
|
52
|
-
cleanedChrome = true;
|
|
53
|
-
if (errorCount > 0) {
|
|
54
|
-
warnings.push('Some Chrome processes could not be killed');
|
|
55
|
-
}
|
|
56
|
-
didCleanup = true;
|
|
57
|
-
}
|
|
58
|
-
const daemonPidPath = getSessionFilePath('DAEMON_PID');
|
|
59
|
-
if (fs.existsSync(daemonPidPath)) {
|
|
60
|
-
try {
|
|
61
|
-
const daemonPidStr = fs.readFileSync(daemonPidPath, 'utf-8').trim();
|
|
62
|
-
const daemonPid = parseInt(daemonPidStr, 10);
|
|
63
|
-
if (isNaN(daemonPid) || !isProcessAlive(daemonPid)) {
|
|
64
|
-
console.error(staleSessionFoundMessage(daemonPid));
|
|
65
|
-
fs.unlinkSync(daemonPidPath);
|
|
66
|
-
cleanedSession = true;
|
|
67
|
-
didCleanup = true;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
catch {
|
|
71
|
-
try {
|
|
72
|
-
fs.unlinkSync(daemonPidPath);
|
|
73
|
-
cleanedSession = true;
|
|
74
|
-
didCleanup = true;
|
|
75
|
-
}
|
|
76
|
-
catch (removeError) {
|
|
77
|
-
const errorMessage = getErrorMessage(removeError);
|
|
78
|
-
warnings.push(`Could not remove daemon.pid: ${errorMessage}`);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
33
|
const pid = readPid();
|
|
83
34
|
if (pid) {
|
|
84
35
|
const isAlive = isProcessAlive(pid);
|
|
@@ -93,41 +44,16 @@ export function registerCleanupCommand(program) {
|
|
|
93
44
|
},
|
|
94
45
|
};
|
|
95
46
|
}
|
|
96
|
-
if (isAlive) {
|
|
97
|
-
warnings.push(`Process ${pid} is still running but forcing cleanup anyway`);
|
|
98
|
-
console.error(forceCleanupWarningMessage(pid));
|
|
99
|
-
try {
|
|
100
|
-
const killedCount = await cleanupStaleChrome();
|
|
101
|
-
if (killedCount > 0) {
|
|
102
|
-
cleanedChrome = true;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
catch (error) {
|
|
106
|
-
const errorMessage = getErrorMessage(error);
|
|
107
|
-
warnings.push(`Could not kill Chrome processes: ${errorMessage}`);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
console.error(staleSessionFoundMessage(pid));
|
|
112
|
-
}
|
|
113
|
-
cleanupSession();
|
|
114
|
-
cleanedSession = true;
|
|
115
|
-
didCleanup = true;
|
|
116
|
-
}
|
|
117
|
-
if (opts.all) {
|
|
118
|
-
const outputPath = getSessionFilePath('OUTPUT');
|
|
119
|
-
if (fs.existsSync(outputPath)) {
|
|
120
|
-
try {
|
|
121
|
-
fs.unlinkSync(outputPath);
|
|
122
|
-
cleanedOutput = true;
|
|
123
|
-
didCleanup = true;
|
|
124
|
-
}
|
|
125
|
-
catch (error) {
|
|
126
|
-
const errorMessage = getErrorMessage(error);
|
|
127
|
-
warnings.push(`Could not remove session.json: ${errorMessage}`);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
47
|
}
|
|
48
|
+
const cleanupResult = await performSessionCleanup({
|
|
49
|
+
force: opts.force,
|
|
50
|
+
aggressive: opts.aggressive,
|
|
51
|
+
removeOutput: opts.removeOutput,
|
|
52
|
+
});
|
|
53
|
+
const didCleanup = cleanupResult.cleaned.session ||
|
|
54
|
+
cleanupResult.cleaned.chrome ||
|
|
55
|
+
cleanupResult.cleaned.daemons ||
|
|
56
|
+
cleanupResult.cleaned.output;
|
|
131
57
|
if (!didCleanup) {
|
|
132
58
|
return {
|
|
133
59
|
success: true,
|
|
@@ -141,13 +67,13 @@ export function registerCleanupCommand(program) {
|
|
|
141
67
|
success: true,
|
|
142
68
|
data: {
|
|
143
69
|
cleaned: {
|
|
144
|
-
session:
|
|
145
|
-
output:
|
|
146
|
-
chrome:
|
|
147
|
-
daemons:
|
|
70
|
+
session: cleanupResult.cleaned.session,
|
|
71
|
+
output: cleanupResult.cleaned.output,
|
|
72
|
+
chrome: cleanupResult.cleaned.chrome,
|
|
73
|
+
daemons: cleanupResult.cleaned.daemons,
|
|
148
74
|
},
|
|
149
75
|
message: sessionDirectoryCleanMessage(),
|
|
150
|
-
...(warnings.length > 0 && { warnings }),
|
|
76
|
+
...(cleanupResult.warnings.length > 0 && { warnings: cleanupResult.warnings }),
|
|
151
77
|
},
|
|
152
78
|
};
|
|
153
79
|
}, options, formatCleanup);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/commands/cleanup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../src/commands/cleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../src/commands/console.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../src/commands/console.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoFzC;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0C7D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/commands/console.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/commands/console.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"details.d.ts","sourceRoot":"","sources":["../../src/commands/details.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"details.d.ts","sourceRoot":"","sources":["../../src/commands/details.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BzC;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+C7D"}
|
package/dist/commands/details.js
CHANGED
|
@@ -4,6 +4,7 @@ import { getDetails } from '../ipc/client.js';
|
|
|
4
4
|
import { validateIPCResponse } from '../ipc/index.js';
|
|
5
5
|
import { formatNetworkDetails, formatConsoleDetails } from '../ui/formatters/details.js';
|
|
6
6
|
import { EXIT_CODES } from '../utils/exitCodes.js';
|
|
7
|
+
import { validateDetailsItem } from '../utils/typeGuards.js';
|
|
7
8
|
/**
|
|
8
9
|
* Format details for human-readable output.
|
|
9
10
|
* Dispatches to the appropriate formatter based on type.
|
|
@@ -50,10 +51,11 @@ export function registerDetailsCommand(program) {
|
|
|
50
51
|
exitCode: EXIT_CODES.RESOURCE_NOT_FOUND,
|
|
51
52
|
};
|
|
52
53
|
}
|
|
54
|
+
const validatedItem = validateDetailsItem(response.data.item, opts.type);
|
|
53
55
|
return {
|
|
54
56
|
success: true,
|
|
55
57
|
data: {
|
|
56
|
-
item:
|
|
58
|
+
item: validatedItem,
|
|
57
59
|
type: opts.type,
|
|
58
60
|
},
|
|
59
61
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"details.js","sourceRoot":"","sources":["../../src/commands/details.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"details.js","sourceRoot":"","sources":["../../src/commands/details.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAGhE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;GAKG;AACH,SAAS,aAAa,CAAC,IAAmB;IACxC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,oBAAoB,CAAC,IAAI,CAAC,IAAsB,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,OAAO,oBAAoB,CAAC,IAAI,CAAC,IAAsB,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,oEAAoE,CAAC;SACjF,QAAQ,CAAC,QAAQ,EAAE,sCAAsC,CAAC;SAC1D,QAAQ,CAAC,MAAM,EAAE,iDAAiD,CAAC;SACnE,SAAS,CAAC,UAAU,CAAC;SACrB,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAU,EAAE,OAA8B,EAAE,EAAE;QACzE,OAAO,CAAC,IAAI,GAAG,IAA6B,CAAC;QAC7C,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;QAEhB,MAAM,UAAU,CACd,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvD,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,iBAAiB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iCAAiC;oBAC1E,QAAQ,EAAE,UAAU,CAAC,iBAAiB;iBACvC,CAAC;YACJ,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAEtD,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAE9B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;gBACzB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,qBAAqB;oBAC5B,QAAQ,EAAE,UAAU,CAAC,kBAAkB;iBACxC,CAAC;YACJ,CAAC;YAED,MAAM,aAAa,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAEzE,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE;oBACJ,IAAI,EAAE,aAAa;oBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB;aACF,CAAC;QACJ,CAAC,EACD,OAAO,EACP,aAAa,CACd,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOM element resolver for index and selector-based access.
|
|
3
|
+
*
|
|
4
|
+
* Provides centralized resolution of DOM elements from:
|
|
5
|
+
* - Numeric indices (referencing cached query results)
|
|
6
|
+
* - CSS selectors (used directly)
|
|
7
|
+
*
|
|
8
|
+
* Handles cache validation, staleness detection, and consistent error handling.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const resolver = DomElementResolver.getInstance();
|
|
13
|
+
*
|
|
14
|
+
* // Resolve index from cached query
|
|
15
|
+
* const target = await resolver.resolve('0');
|
|
16
|
+
* // { success: true, selector: '.cached-selector', index: 1 }
|
|
17
|
+
*
|
|
18
|
+
* // Resolve CSS selector directly
|
|
19
|
+
* const target = await resolver.resolve('button.submit');
|
|
20
|
+
* // { success: true, selector: 'button.submit' }
|
|
21
|
+
*
|
|
22
|
+
* // Get nodeId for cached index (throws if invalid)
|
|
23
|
+
* const nodeId = await resolver.getNodeIdForIndex(0);
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
import { QueryCacheManager } from '../../session/QueryCacheManager.js';
|
|
27
|
+
/**
|
|
28
|
+
* Successful result of resolving a selector or index argument.
|
|
29
|
+
*/
|
|
30
|
+
export interface ElementTargetSuccess {
|
|
31
|
+
/** Resolution succeeded */
|
|
32
|
+
success: true;
|
|
33
|
+
/** CSS selector to use */
|
|
34
|
+
selector: string;
|
|
35
|
+
/** 1-based index for selector (if resolved from cached query) */
|
|
36
|
+
index?: number | undefined;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Failed result of resolving a selector or index argument.
|
|
40
|
+
*/
|
|
41
|
+
export interface ElementTargetFailure {
|
|
42
|
+
/** Resolution failed */
|
|
43
|
+
success: false;
|
|
44
|
+
/** Error message */
|
|
45
|
+
error: string;
|
|
46
|
+
/** Exit code for the error */
|
|
47
|
+
exitCode: number;
|
|
48
|
+
/** Suggestion for fixing the error */
|
|
49
|
+
suggestion?: string | undefined;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Result of resolving a selector or index argument to an element target.
|
|
53
|
+
* Discriminated union that guarantees selector exists when success is true.
|
|
54
|
+
*/
|
|
55
|
+
export type ElementTargetResult = ElementTargetSuccess | ElementTargetFailure;
|
|
56
|
+
/**
|
|
57
|
+
* Singleton resolver for DOM element access patterns.
|
|
58
|
+
*
|
|
59
|
+
* Centralizes element resolution with cache validation and consistent error handling.
|
|
60
|
+
*/
|
|
61
|
+
export declare class DomElementResolver {
|
|
62
|
+
private static instance;
|
|
63
|
+
private cacheManager;
|
|
64
|
+
/**
|
|
65
|
+
* Create a new resolver instance.
|
|
66
|
+
*
|
|
67
|
+
* @param cacheManager - Query cache manager (defaults to singleton)
|
|
68
|
+
*/
|
|
69
|
+
constructor(cacheManager?: QueryCacheManager);
|
|
70
|
+
/**
|
|
71
|
+
* Get the singleton instance.
|
|
72
|
+
*
|
|
73
|
+
* @returns DomElementResolver instance
|
|
74
|
+
*/
|
|
75
|
+
static getInstance(): DomElementResolver;
|
|
76
|
+
/**
|
|
77
|
+
* Reset the singleton instance (for testing).
|
|
78
|
+
*/
|
|
79
|
+
static resetInstance(): void;
|
|
80
|
+
/**
|
|
81
|
+
* Resolve a selectorOrIndex argument to an element target.
|
|
82
|
+
*
|
|
83
|
+
* Handles the common pattern of accepting either:
|
|
84
|
+
* - A CSS selector string (used directly)
|
|
85
|
+
* - A numeric index (resolved from cached query results)
|
|
86
|
+
*
|
|
87
|
+
* Validates cache staleness by checking navigationId against current page state.
|
|
88
|
+
*
|
|
89
|
+
* @param selectorOrIndex - CSS selector or numeric index from query results
|
|
90
|
+
* @param explicitIndex - Optional explicit --index flag value (1-based)
|
|
91
|
+
* @returns Resolution result with selector and optional index
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```typescript
|
|
95
|
+
* const target = await resolver.resolve('button');
|
|
96
|
+
* // { success: true, selector: 'button' }
|
|
97
|
+
*
|
|
98
|
+
* const target = await resolver.resolve('0');
|
|
99
|
+
* // { success: true, selector: '.cached-selector', index: 1 }
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
resolve(selectorOrIndex: string, explicitIndex?: number): Promise<ElementTargetResult>;
|
|
103
|
+
/**
|
|
104
|
+
* Get nodeId for a cached index.
|
|
105
|
+
*
|
|
106
|
+
* Validates cache staleness and throws CommandError if invalid.
|
|
107
|
+
*
|
|
108
|
+
* @param index - Zero-based index from query results
|
|
109
|
+
* @returns Node with nodeId from cache
|
|
110
|
+
* @throws CommandError if cache missing, stale, index out of range, or node not found
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```typescript
|
|
114
|
+
* const node = await resolver.getNodeIdForIndex(0);
|
|
115
|
+
* console.log(node.nodeId); // CDP node ID
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
118
|
+
getNodeIdForIndex(index: number): Promise<{
|
|
119
|
+
nodeId: number;
|
|
120
|
+
}>;
|
|
121
|
+
/**
|
|
122
|
+
* Get the count of cached elements.
|
|
123
|
+
*
|
|
124
|
+
* Validates cache and returns element count, or throws if cache is invalid.
|
|
125
|
+
*
|
|
126
|
+
* @returns Number of cached elements
|
|
127
|
+
* @throws CommandError if cache is missing or stale
|
|
128
|
+
*/
|
|
129
|
+
getElementCount(): Promise<number>;
|
|
130
|
+
/**
|
|
131
|
+
* Check if the argument is a numeric index.
|
|
132
|
+
*
|
|
133
|
+
* @param selectorOrIndex - String to check
|
|
134
|
+
* @returns True if the string is a numeric index
|
|
135
|
+
*/
|
|
136
|
+
isNumericIndex(selectorOrIndex: string): boolean;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=DomElementResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DomElementResolver.d.ts","sourceRoot":"","sources":["../../../src/commands/dom/DomElementResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAInE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,2BAA2B;IAC3B,OAAO,EAAE,IAAI,CAAC;IACd,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,wBAAwB;IACxB,OAAO,EAAE,KAAK,CAAC;IACf,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,GAAG,oBAAoB,CAAC;AAE9E;;;;GAIG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmC;IAC1D,OAAO,CAAC,YAAY,CAAoB;IAExC;;;;OAIG;gBACS,YAAY,CAAC,EAAE,iBAAiB;IAI5C;;;;OAIG;IACH,MAAM,CAAC,WAAW,IAAI,kBAAkB;IAKxC;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,OAAO,CAAC,eAAe,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAwC5F;;;;;;;;;;;;;;OAcG;IACG,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAmCnE;;;;;;;OAOG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAcxC;;;;;OAKG;IACH,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO;CAGjD"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOM element resolver for index and selector-based access.
|
|
3
|
+
*
|
|
4
|
+
* Provides centralized resolution of DOM elements from:
|
|
5
|
+
* - Numeric indices (referencing cached query results)
|
|
6
|
+
* - CSS selectors (used directly)
|
|
7
|
+
*
|
|
8
|
+
* Handles cache validation, staleness detection, and consistent error handling.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const resolver = DomElementResolver.getInstance();
|
|
13
|
+
*
|
|
14
|
+
* // Resolve index from cached query
|
|
15
|
+
* const target = await resolver.resolve('0');
|
|
16
|
+
* // { success: true, selector: '.cached-selector', index: 1 }
|
|
17
|
+
*
|
|
18
|
+
* // Resolve CSS selector directly
|
|
19
|
+
* const target = await resolver.resolve('button.submit');
|
|
20
|
+
* // { success: true, selector: 'button.submit' }
|
|
21
|
+
*
|
|
22
|
+
* // Get nodeId for cached index (throws if invalid)
|
|
23
|
+
* const nodeId = await resolver.getNodeIdForIndex(0);
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
import { QueryCacheManager } from '../../session/QueryCacheManager.js';
|
|
27
|
+
import { CommandError } from '../../ui/errors/index.js';
|
|
28
|
+
import { EXIT_CODES } from '../../utils/exitCodes.js';
|
|
29
|
+
/**
|
|
30
|
+
* Singleton resolver for DOM element access patterns.
|
|
31
|
+
*
|
|
32
|
+
* Centralizes element resolution with cache validation and consistent error handling.
|
|
33
|
+
*/
|
|
34
|
+
export class DomElementResolver {
|
|
35
|
+
static instance = null;
|
|
36
|
+
cacheManager;
|
|
37
|
+
/**
|
|
38
|
+
* Create a new resolver instance.
|
|
39
|
+
*
|
|
40
|
+
* @param cacheManager - Query cache manager (defaults to singleton)
|
|
41
|
+
*/
|
|
42
|
+
constructor(cacheManager) {
|
|
43
|
+
this.cacheManager = cacheManager ?? QueryCacheManager.getInstance();
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get the singleton instance.
|
|
47
|
+
*
|
|
48
|
+
* @returns DomElementResolver instance
|
|
49
|
+
*/
|
|
50
|
+
static getInstance() {
|
|
51
|
+
DomElementResolver.instance ??= new DomElementResolver();
|
|
52
|
+
return DomElementResolver.instance;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Reset the singleton instance (for testing).
|
|
56
|
+
*/
|
|
57
|
+
static resetInstance() {
|
|
58
|
+
DomElementResolver.instance = null;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Resolve a selectorOrIndex argument to an element target.
|
|
62
|
+
*
|
|
63
|
+
* Handles the common pattern of accepting either:
|
|
64
|
+
* - A CSS selector string (used directly)
|
|
65
|
+
* - A numeric index (resolved from cached query results)
|
|
66
|
+
*
|
|
67
|
+
* Validates cache staleness by checking navigationId against current page state.
|
|
68
|
+
*
|
|
69
|
+
* @param selectorOrIndex - CSS selector or numeric index from query results
|
|
70
|
+
* @param explicitIndex - Optional explicit --index flag value (1-based)
|
|
71
|
+
* @returns Resolution result with selector and optional index
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* const target = await resolver.resolve('button');
|
|
76
|
+
* // { success: true, selector: 'button' }
|
|
77
|
+
*
|
|
78
|
+
* const target = await resolver.resolve('0');
|
|
79
|
+
* // { success: true, selector: '.cached-selector', index: 1 }
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
async resolve(selectorOrIndex, explicitIndex) {
|
|
83
|
+
const isNumericIndex = /^\d+$/.test(selectorOrIndex);
|
|
84
|
+
if (isNumericIndex) {
|
|
85
|
+
const validation = await this.cacheManager.validate();
|
|
86
|
+
if (!validation.valid || !validation.cache) {
|
|
87
|
+
return {
|
|
88
|
+
success: false,
|
|
89
|
+
error: validation.error ?? 'No cached query results found',
|
|
90
|
+
exitCode: EXIT_CODES.INVALID_ARGUMENTS,
|
|
91
|
+
suggestion: validation.suggestion,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
const cachedQuery = validation.cache;
|
|
95
|
+
const index = parseInt(selectorOrIndex, 10);
|
|
96
|
+
if (index < 0 || index >= cachedQuery.nodes.length) {
|
|
97
|
+
return {
|
|
98
|
+
success: false,
|
|
99
|
+
error: `Index ${index} out of range (found ${cachedQuery.nodes.length} elements)`,
|
|
100
|
+
exitCode: EXIT_CODES.INVALID_ARGUMENTS,
|
|
101
|
+
suggestion: `Use an index between 0 and ${cachedQuery.nodes.length - 1}`,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
success: true,
|
|
106
|
+
selector: cachedQuery.selector,
|
|
107
|
+
index: index + 1,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
success: true,
|
|
112
|
+
selector: selectorOrIndex,
|
|
113
|
+
index: explicitIndex,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Get nodeId for a cached index.
|
|
118
|
+
*
|
|
119
|
+
* Validates cache staleness and throws CommandError if invalid.
|
|
120
|
+
*
|
|
121
|
+
* @param index - Zero-based index from query results
|
|
122
|
+
* @returns Node with nodeId from cache
|
|
123
|
+
* @throws CommandError if cache missing, stale, index out of range, or node not found
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* ```typescript
|
|
127
|
+
* const node = await resolver.getNodeIdForIndex(0);
|
|
128
|
+
* console.log(node.nodeId); // CDP node ID
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
async getNodeIdForIndex(index) {
|
|
132
|
+
const validation = await this.cacheManager.validate();
|
|
133
|
+
if (!validation.valid || !validation.cache) {
|
|
134
|
+
throw new CommandError(validation.error ?? 'No cached query results found', validation.suggestion ? { suggestion: validation.suggestion } : {}, EXIT_CODES.INVALID_ARGUMENTS);
|
|
135
|
+
}
|
|
136
|
+
const cachedQuery = validation.cache;
|
|
137
|
+
if (index < 0 || index >= cachedQuery.nodes.length) {
|
|
138
|
+
throw new CommandError(`Index ${index} out of range (found ${cachedQuery.nodes.length} elements)`, {
|
|
139
|
+
suggestion: `Use an index between 0 and ${cachedQuery.nodes.length - 1}`,
|
|
140
|
+
}, EXIT_CODES.INVALID_ARGUMENTS);
|
|
141
|
+
}
|
|
142
|
+
const targetNode = cachedQuery.nodes[index];
|
|
143
|
+
if (!targetNode) {
|
|
144
|
+
throw new CommandError(`Element at index ${index} not found`, {}, EXIT_CODES.RESOURCE_NOT_FOUND);
|
|
145
|
+
}
|
|
146
|
+
return targetNode;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Get the count of cached elements.
|
|
150
|
+
*
|
|
151
|
+
* Validates cache and returns element count, or throws if cache is invalid.
|
|
152
|
+
*
|
|
153
|
+
* @returns Number of cached elements
|
|
154
|
+
* @throws CommandError if cache is missing or stale
|
|
155
|
+
*/
|
|
156
|
+
async getElementCount() {
|
|
157
|
+
const validation = await this.cacheManager.validate();
|
|
158
|
+
if (!validation.valid || !validation.cache) {
|
|
159
|
+
throw new CommandError(validation.error ?? 'No cached query results found', validation.suggestion ? { suggestion: validation.suggestion } : {}, EXIT_CODES.INVALID_ARGUMENTS);
|
|
160
|
+
}
|
|
161
|
+
return validation.cache.nodes.length;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Check if the argument is a numeric index.
|
|
165
|
+
*
|
|
166
|
+
* @param selectorOrIndex - String to check
|
|
167
|
+
* @returns True if the string is a numeric index
|
|
168
|
+
*/
|
|
169
|
+
isNumericIndex(selectorOrIndex) {
|
|
170
|
+
return /^\d+$/.test(selectorOrIndex);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=DomElementResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DomElementResolver.js","sourceRoot":"","sources":["../../../src/commands/dom/DomElementResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a11y.d.ts","sourceRoot":"","sources":["../../../src/commands/dom/a11y.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"a11y.d.ts","sourceRoot":"","sources":["../../../src/commands/dom/a11y.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8KzC;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CA0D1D"}
|