fastbrowser_cli 1.0.14 → 1.0.18
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/.playwright-mcp/.gitignore +3 -0
- package/README.md +29 -3
- package/dist/fastbrowser_cli/fastbrowser_cli.js +52 -35
- package/dist/fastbrowser_cli/fastbrowser_cli.js.map +1 -1
- package/dist/fastbrowser_cli/libs/http-client.js +3 -7
- package/dist/fastbrowser_cli/libs/http-client.js.map +1 -1
- package/dist/fastbrowser_cli/libs/server-manager.d.ts.map +1 -1
- package/dist/fastbrowser_cli/libs/server-manager.js +31 -29
- package/dist/fastbrowser_cli/libs/server-manager.js.map +1 -1
- package/dist/fastbrowser_httpd/fastbrowser_httpd.js +22 -18
- package/dist/fastbrowser_httpd/fastbrowser_httpd.js.map +1 -1
- package/dist/fastbrowser_httpd/libs/routes.d.ts +2 -2
- package/dist/fastbrowser_httpd/libs/routes.d.ts.map +1 -1
- package/dist/fastbrowser_httpd/libs/routes.js +4 -8
- package/dist/fastbrowser_httpd/libs/routes.js.map +1 -1
- package/dist/fastbrowser_httpd/libs/tool-schemas.js +39 -42
- package/dist/fastbrowser_httpd/libs/tool-schemas.js.map +1 -1
- package/dist/fastbrowser_mcp/fastbrowser_mcp.d.ts.map +1 -1
- package/dist/fastbrowser_mcp/fastbrowser_mcp.js +270 -187
- package/dist/fastbrowser_mcp/fastbrowser_mcp.js.map +1 -1
- package/dist/fastbrowser_mcp/fastbrowser_types.d.ts +5 -0
- package/dist/fastbrowser_mcp/fastbrowser_types.d.ts.map +1 -0
- package/dist/fastbrowser_mcp/fastbrowser_types.js +2 -0
- package/dist/fastbrowser_mcp/fastbrowser_types.js.map +1 -0
- package/dist/{fastweb_mcp/libs/mcp_client.d.ts → fastbrowser_mcp/libs/mcp_client_TOREMOVE.d.ts} +6 -2
- package/dist/fastbrowser_mcp/libs/mcp_client_TOREMOVE.d.ts.map +1 -0
- package/dist/{src/libs/mcp_client.js → fastbrowser_mcp/libs/mcp_client_TOREMOVE.js} +15 -12
- package/dist/fastbrowser_mcp/libs/mcp_client_TOREMOVE.js.map +1 -0
- package/dist/{src/libs/mcp_client.d.ts → fastbrowser_mcp/libs/mcp_my_client.d.ts} +6 -2
- package/dist/fastbrowser_mcp/libs/mcp_my_client.d.ts.map +1 -0
- package/dist/{fastweb_mcp/libs/mcp_client.js → fastbrowser_mcp/libs/mcp_my_client.js} +15 -12
- package/dist/fastbrowser_mcp/libs/mcp_my_client.js.map +1 -0
- package/dist/fastbrowser_mcp/libs/mcp_proxy.d.ts +2 -2
- package/dist/fastbrowser_mcp/libs/mcp_proxy.d.ts.map +1 -1
- package/dist/fastbrowser_mcp/libs/mcp_proxy.js +9 -16
- package/dist/fastbrowser_mcp/libs/mcp_proxy.js.map +1 -1
- package/dist/fastbrowser_mcp/libs/mcp_target_helper.d.ts +35 -0
- package/dist/fastbrowser_mcp/libs/mcp_target_helper.d.ts.map +1 -0
- package/dist/fastbrowser_mcp/libs/mcp_target_helper.js +161 -0
- package/dist/fastbrowser_mcp/libs/mcp_target_helper.js.map +1 -0
- package/dist/fastbrowser_mcp/libs/playwright_a11y_helper.d.ts +28 -0
- package/dist/fastbrowser_mcp/libs/playwright_a11y_helper.d.ts.map +1 -0
- package/dist/fastbrowser_mcp/libs/playwright_a11y_helper.js +210 -0
- package/dist/fastbrowser_mcp/libs/playwright_a11y_helper.js.map +1 -0
- package/dist/fastbrowser_mcp/libs/response_formatter.d.ts +10 -0
- package/dist/fastbrowser_mcp/libs/response_formatter.d.ts.map +1 -0
- package/dist/fastbrowser_mcp/libs/response_formatter.js +155 -0
- package/dist/fastbrowser_mcp/libs/response_formatter.js.map +1 -0
- package/dist/fastbrowser_mcp/libs/schemas.js +14 -17
- package/dist/fastbrowser_mcp/libs/schemas.js.map +1 -1
- package/examples/mcp_client_playwright.ts +34 -0
- package/examples/welcometothejungle/wttj-job.ts +180 -0
- package/examples/welcometothejungle/wttj-search.ts +105 -0
- package/outputs/.gitignore +3 -0
- package/package.json +12 -8
- package/src/fastbrowser_cli/fastbrowser_cli.ts +34 -11
- package/src/fastbrowser_cli/libs/server-manager.ts +23 -14
- package/src/fastbrowser_httpd/fastbrowser_httpd.ts +16 -5
- package/src/fastbrowser_httpd/libs/routes.ts +2 -2
- package/src/fastbrowser_mcp/fastbrowser_mcp.ts +324 -150
- package/src/fastbrowser_mcp/fastbrowser_types.ts +4 -0
- package/src/fastbrowser_mcp/libs/{mcp_client.ts → mcp_client_TOREMOVE.ts} +13 -1
- package/src/fastbrowser_mcp/libs/mcp_my_client.ts +128 -0
- package/src/fastbrowser_mcp/libs/mcp_proxy.ts +2 -2
- package/src/fastbrowser_mcp/libs/mcp_target_helper.ts +164 -0
- package/src/fastbrowser_mcp/libs/playwright_a11y_helper.ts +249 -0
- package/src/fastbrowser_mcp/libs/response_formatter.ts +162 -0
- package/src/fastbrowser_mcp/libs/schemas.ts +2 -2
- package/tsconfig.build.json +13 -0
- package/tsconfig.json +10 -22
- package/dist/contrib/fastweb-cli/fastweb-cli.d.ts +0 -3
- package/dist/contrib/fastweb-cli/fastweb-cli.d.ts.map +0 -1
- package/dist/contrib/fastweb-cli/fastweb-cli.js +0 -151
- package/dist/contrib/fastweb-cli/fastweb-cli.js.map +0 -1
- package/dist/contrib/fastweb-cli/http-client.d.ts +0 -7
- package/dist/contrib/fastweb-cli/http-client.d.ts.map +0 -1
- package/dist/contrib/fastweb-cli/http-client.js +0 -51
- package/dist/contrib/fastweb-cli/http-client.js.map +0 -1
- package/dist/contrib/fastweb-http-server/fastweb-http-server.d.ts +0 -3
- package/dist/contrib/fastweb-http-server/fastweb-http-server.d.ts.map +0 -1
- package/dist/contrib/fastweb-http-server/fastweb-http-server.js +0 -82
- package/dist/contrib/fastweb-http-server/fastweb-http-server.js.map +0 -1
- package/dist/contrib/fastweb-http-server/routes.d.ts +0 -6
- package/dist/contrib/fastweb-http-server/routes.d.ts.map +0 -1
- package/dist/contrib/fastweb-http-server/routes.js +0 -41
- package/dist/contrib/fastweb-http-server/routes.js.map +0 -1
- package/dist/contrib/fastweb-http-server/tool-schemas.d.ts +0 -63
- package/dist/contrib/fastweb-http-server/tool-schemas.d.ts.map +0 -1
- package/dist/contrib/fastweb-http-server/tool-schemas.js +0 -61
- package/dist/contrib/fastweb-http-server/tool-schemas.js.map +0 -1
- package/dist/fastbrowser_mcp/libs/mcp_client.d.ts +0 -120
- package/dist/fastbrowser_mcp/libs/mcp_client.d.ts.map +0 -1
- package/dist/fastbrowser_mcp/libs/mcp_client.js +0 -83
- package/dist/fastbrowser_mcp/libs/mcp_client.js.map +0 -1
- package/dist/fastweb_cli/fastweb_cli.d.ts +0 -3
- package/dist/fastweb_cli/fastweb_cli.d.ts.map +0 -1
- package/dist/fastweb_cli/fastweb_cli.js +0 -254
- package/dist/fastweb_cli/fastweb_cli.js.map +0 -1
- package/dist/fastweb_cli/http-client.d.ts +0 -7
- package/dist/fastweb_cli/http-client.d.ts.map +0 -1
- package/dist/fastweb_cli/http-client.js +0 -51
- package/dist/fastweb_cli/http-client.js.map +0 -1
- package/dist/fastweb_cli/libs/http-client.d.ts +0 -7
- package/dist/fastweb_cli/libs/http-client.d.ts.map +0 -1
- package/dist/fastweb_cli/libs/http-client.js +0 -51
- package/dist/fastweb_cli/libs/http-client.js.map +0 -1
- package/dist/fastweb_cli/libs/server-manager.d.ts +0 -12
- package/dist/fastweb_cli/libs/server-manager.d.ts.map +0 -1
- package/dist/fastweb_cli/libs/server-manager.js +0 -194
- package/dist/fastweb_cli/libs/server-manager.js.map +0 -1
- package/dist/fastweb_http_server/fastweb_http_server.d.ts +0 -3
- package/dist/fastweb_http_server/fastweb_http_server.d.ts.map +0 -1
- package/dist/fastweb_http_server/fastweb_http_server.js +0 -82
- package/dist/fastweb_http_server/fastweb_http_server.js.map +0 -1
- package/dist/fastweb_http_server/libs/routes.d.ts +0 -6
- package/dist/fastweb_http_server/libs/routes.d.ts.map +0 -1
- package/dist/fastweb_http_server/libs/routes.js +0 -41
- package/dist/fastweb_http_server/libs/routes.js.map +0 -1
- package/dist/fastweb_http_server/libs/tool-schemas.d.ts +0 -72
- package/dist/fastweb_http_server/libs/tool-schemas.d.ts.map +0 -1
- package/dist/fastweb_http_server/libs/tool-schemas.js +0 -65
- package/dist/fastweb_http_server/libs/tool-schemas.js.map +0 -1
- package/dist/fastweb_http_server/routes.d.ts +0 -6
- package/dist/fastweb_http_server/routes.d.ts.map +0 -1
- package/dist/fastweb_http_server/routes.js +0 -41
- package/dist/fastweb_http_server/routes.js.map +0 -1
- package/dist/fastweb_http_server/tool-schemas.d.ts +0 -63
- package/dist/fastweb_http_server/tool-schemas.d.ts.map +0 -1
- package/dist/fastweb_http_server/tool-schemas.js +0 -61
- package/dist/fastweb_http_server/tool-schemas.js.map +0 -1
- package/dist/fastweb_mcp/fastweb_mcp.d.ts +0 -4
- package/dist/fastweb_mcp/fastweb_mcp.d.ts.map +0 -1
- package/dist/fastweb_mcp/fastweb_mcp.js +0 -417
- package/dist/fastweb_mcp/fastweb_mcp.js.map +0 -1
- package/dist/fastweb_mcp/libs/mcp_client.d.ts.map +0 -1
- package/dist/fastweb_mcp/libs/mcp_client.js.map +0 -1
- package/dist/fastweb_mcp/libs/mcp_proxy.d.ts +0 -10
- package/dist/fastweb_mcp/libs/mcp_proxy.d.ts.map +0 -1
- package/dist/fastweb_mcp/libs/mcp_proxy.js +0 -45
- package/dist/fastweb_mcp/libs/mcp_proxy.js.map +0 -1
- package/dist/fastweb_mcp/libs/schemas.d.ts +0 -28
- package/dist/fastweb_mcp/libs/schemas.d.ts.map +0 -1
- package/dist/fastweb_mcp/libs/schemas.js +0 -38
- package/dist/fastweb_mcp/libs/schemas.js.map +0 -1
- package/dist/src/fastweb_mcp.d.ts +0 -17
- package/dist/src/fastweb_mcp.d.ts.map +0 -1
- package/dist/src/fastweb_mcp.js +0 -342
- package/dist/src/fastweb_mcp.js.map +0 -1
- package/dist/src/libs/mcp_client.d.ts.map +0 -1
- package/dist/src/libs/mcp_client.js.map +0 -1
- package/dist/src/libs/mcp_proxy.d.ts +0 -10
- package/dist/src/libs/mcp_proxy.d.ts.map +0 -1
- package/dist/src/libs/mcp_proxy.js +0 -45
- package/dist/src/libs/mcp_proxy.js.map +0 -1
|
@@ -1,254 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
// npm imports
|
|
5
|
-
const commander_1 = require("commander");
|
|
6
|
-
// local imports
|
|
7
|
-
const http_client_js_1 = require("./libs/http-client.js");
|
|
8
|
-
const server_manager_js_1 = require("./libs/server-manager.js");
|
|
9
|
-
function getServerFromCmd(cmd) {
|
|
10
|
-
const globalOpts = cmd.optsWithGlobals();
|
|
11
|
-
return http_client_js_1.HttpClient.getServerUrl(globalOpts.server);
|
|
12
|
-
}
|
|
13
|
-
function getAutostartFromCmd(cmd) {
|
|
14
|
-
const globalOpts = cmd.optsWithGlobals();
|
|
15
|
-
return globalOpts.autostart !== false;
|
|
16
|
-
}
|
|
17
|
-
async function runTool(cmd, routeName, body) {
|
|
18
|
-
const server = getServerFromCmd(cmd);
|
|
19
|
-
try {
|
|
20
|
-
if (getAutostartFromCmd(cmd) === true) {
|
|
21
|
-
await server_manager_js_1.ServerManager.ensureRunning(server);
|
|
22
|
-
}
|
|
23
|
-
const response = await http_client_js_1.HttpClient.postTool(server, routeName, body);
|
|
24
|
-
http_client_js_1.HttpClient.printResponse(response);
|
|
25
|
-
}
|
|
26
|
-
catch (err) {
|
|
27
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
28
|
-
console.error(`fastweb-cli error: ${message}`);
|
|
29
|
-
process.exit(1);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
33
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
34
|
-
//
|
|
35
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
36
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
37
|
-
function buildQuerySelectorsBody(opts) {
|
|
38
|
-
if (opts.selectorsJson !== undefined && opts.selectorsJson !== '') {
|
|
39
|
-
let parsed;
|
|
40
|
-
try {
|
|
41
|
-
parsed = JSON.parse(opts.selectorsJson);
|
|
42
|
-
}
|
|
43
|
-
catch (err) {
|
|
44
|
-
throw new Error(`--selectors-json is not valid JSON: ${err.message}`);
|
|
45
|
-
}
|
|
46
|
-
if (Array.isArray(parsed) === false) {
|
|
47
|
-
throw new Error('--selectors-json must be a JSON array');
|
|
48
|
-
}
|
|
49
|
-
return { selectors: parsed };
|
|
50
|
-
}
|
|
51
|
-
const selectorList = opts.selector ?? [];
|
|
52
|
-
if (selectorList.length === 0) {
|
|
53
|
-
throw new Error('At least one --selector or --selectors-json is required');
|
|
54
|
-
}
|
|
55
|
-
const limit = opts.limit === undefined ? 0 : Number.parseInt(opts.limit, 10);
|
|
56
|
-
if (Number.isNaN(limit) === true) {
|
|
57
|
-
throw new Error(`Invalid --limit: ${opts.limit}`);
|
|
58
|
-
}
|
|
59
|
-
const withAncestors = opts.withAncestors !== false;
|
|
60
|
-
const selectors = selectorList.map((selector) => ({
|
|
61
|
-
selector,
|
|
62
|
-
limit,
|
|
63
|
-
withAncestors,
|
|
64
|
-
}));
|
|
65
|
-
return { selectors };
|
|
66
|
-
}
|
|
67
|
-
function buildQuerySelectorFirstBody(opts) {
|
|
68
|
-
if (opts.selectorsJson !== undefined && opts.selectorsJson !== '') {
|
|
69
|
-
let parsed;
|
|
70
|
-
try {
|
|
71
|
-
parsed = JSON.parse(opts.selectorsJson);
|
|
72
|
-
}
|
|
73
|
-
catch (err) {
|
|
74
|
-
throw new Error(`--selectors-json is not valid JSON: ${err.message}`);
|
|
75
|
-
}
|
|
76
|
-
if (Array.isArray(parsed) === false) {
|
|
77
|
-
throw new Error('--selectors-json must be a JSON array');
|
|
78
|
-
}
|
|
79
|
-
return { selectors: parsed };
|
|
80
|
-
}
|
|
81
|
-
const selectorList = opts.selector ?? [];
|
|
82
|
-
if (selectorList.length === 0) {
|
|
83
|
-
throw new Error('At least one --selector or --selectors-json is required');
|
|
84
|
-
}
|
|
85
|
-
const withAncestors = opts.withAncestors !== false;
|
|
86
|
-
const selectors = selectorList.map((selector) => ({
|
|
87
|
-
selector,
|
|
88
|
-
withAncestors,
|
|
89
|
-
}));
|
|
90
|
-
return { selectors };
|
|
91
|
-
}
|
|
92
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
93
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
94
|
-
//
|
|
95
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
96
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
97
|
-
async function main() {
|
|
98
|
-
const program = new commander_1.Command();
|
|
99
|
-
program
|
|
100
|
-
.name('fastweb-cli')
|
|
101
|
-
.description('CLI client for fastweb-http-server2')
|
|
102
|
-
.option('--server <url>', 'fastweb-http-server URL (default: env FASTWEB_SERVER or http://localhost:8787)')
|
|
103
|
-
.option('--autostart', 'Auto-start the server before a command if it is not running', true)
|
|
104
|
-
.option('--no-autostart', 'Do not auto-start the server before a command');
|
|
105
|
-
const serverCmd = program
|
|
106
|
-
.command('server')
|
|
107
|
-
.description('Manage the fastweb HTTP server');
|
|
108
|
-
serverCmd
|
|
109
|
-
.command('start')
|
|
110
|
-
.description('Start the fastweb HTTP server as a detached daemon')
|
|
111
|
-
.action(async (_opts, cmd) => {
|
|
112
|
-
const server = getServerFromCmd(cmd);
|
|
113
|
-
try {
|
|
114
|
-
await server_manager_js_1.ServerManager.start(server);
|
|
115
|
-
}
|
|
116
|
-
catch (err) {
|
|
117
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
118
|
-
console.error(`fastweb-cli error: ${message}`);
|
|
119
|
-
process.exit(1);
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
serverCmd
|
|
123
|
-
.command('stop')
|
|
124
|
-
.description('Stop the fastweb HTTP server')
|
|
125
|
-
.action(async (_opts, cmd) => {
|
|
126
|
-
const server = getServerFromCmd(cmd);
|
|
127
|
-
try {
|
|
128
|
-
await server_manager_js_1.ServerManager.stop(server);
|
|
129
|
-
}
|
|
130
|
-
catch (err) {
|
|
131
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
132
|
-
console.error(`fastweb-cli error: ${message}`);
|
|
133
|
-
process.exit(1);
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
serverCmd
|
|
137
|
-
.command('status')
|
|
138
|
-
.description('Report whether the fastweb HTTP server is running')
|
|
139
|
-
.action(async (_opts, cmd) => {
|
|
140
|
-
const server = getServerFromCmd(cmd);
|
|
141
|
-
const state = await server_manager_js_1.ServerManager.status(server);
|
|
142
|
-
console.log(`fastweb server at ${server}: ${state}`);
|
|
143
|
-
if (state === 'stopped')
|
|
144
|
-
process.exit(1);
|
|
145
|
-
});
|
|
146
|
-
program
|
|
147
|
-
.command('list_pages')
|
|
148
|
-
.description('List all open browser pages')
|
|
149
|
-
.action(async (_opts, cmd) => {
|
|
150
|
-
await runTool(cmd, 'list_pages', {});
|
|
151
|
-
});
|
|
152
|
-
program
|
|
153
|
-
.command('new_page')
|
|
154
|
-
.description('Open a new browser page')
|
|
155
|
-
.requiredOption('--url <url>', 'URL to open')
|
|
156
|
-
.action(async (opts, cmd) => {
|
|
157
|
-
await runTool(cmd, 'new_page', { url: opts.url });
|
|
158
|
-
});
|
|
159
|
-
program
|
|
160
|
-
.command('close_page')
|
|
161
|
-
.description('Close a page by its id')
|
|
162
|
-
.requiredOption('--page-id <number>', 'The page id to close')
|
|
163
|
-
.action(async (opts, cmd) => {
|
|
164
|
-
const pageId = Number.parseInt(opts.pageId, 10);
|
|
165
|
-
if (Number.isNaN(pageId) === true) {
|
|
166
|
-
console.error(`Invalid --page-id: ${opts.pageId}`);
|
|
167
|
-
process.exit(1);
|
|
168
|
-
}
|
|
169
|
-
await runTool(cmd, 'close_page', { pageId });
|
|
170
|
-
});
|
|
171
|
-
program
|
|
172
|
-
.command('navigate_page')
|
|
173
|
-
.description('Navigate the current page to a URL')
|
|
174
|
-
.requiredOption('--url <url>', 'URL to navigate to')
|
|
175
|
-
.action(async (opts, cmd) => {
|
|
176
|
-
await runTool(cmd, 'navigate_page', { url: opts.url });
|
|
177
|
-
});
|
|
178
|
-
program
|
|
179
|
-
.command('click')
|
|
180
|
-
.description('Click an element by its accessibility selector')
|
|
181
|
-
.requiredOption('-s, --selector <selector>', 'Accessibility selector (e.g. "#1_3" or \'button[name="Submit"]\')')
|
|
182
|
-
.action(async (opts, cmd) => {
|
|
183
|
-
await runTool(cmd, 'click', { selector: opts.selector });
|
|
184
|
-
});
|
|
185
|
-
program
|
|
186
|
-
.command('fill_form')
|
|
187
|
-
.description('Fill a form field by its accessibility selector')
|
|
188
|
-
.requiredOption('-s, --selector <selector>', 'Accessibility selector (e.g. "#1_3" or \'textbox[name="Email"]\')')
|
|
189
|
-
.requiredOption('--value <value>', 'Value to fill')
|
|
190
|
-
.action(async (opts, cmd) => {
|
|
191
|
-
await runTool(cmd, 'fill_form', {
|
|
192
|
-
elements: [{ selector: opts.selector, value: opts.value }],
|
|
193
|
-
});
|
|
194
|
-
});
|
|
195
|
-
program
|
|
196
|
-
.command('query_selectors_all')
|
|
197
|
-
.description('Query the accessibility tree with CSS-like selectors')
|
|
198
|
-
.option('-s, --selector <selector>', 'CSS-like selector (repeatable)', (value, prev = []) => {
|
|
199
|
-
prev.push(value);
|
|
200
|
-
return prev;
|
|
201
|
-
})
|
|
202
|
-
.option('--limit <number>', 'Max nodes per selector (0 = unlimited)', '0')
|
|
203
|
-
.option('--with-ancestors', 'Include ancestor nodes', true)
|
|
204
|
-
.option('--no-with-ancestors', 'Exclude ancestor nodes')
|
|
205
|
-
.option('--selectors-json <json>', 'JSON array of {selector,limit,withAncestors} for per-selector control')
|
|
206
|
-
.action(async (opts, cmd) => {
|
|
207
|
-
let body;
|
|
208
|
-
try {
|
|
209
|
-
body = buildQuerySelectorsBody(opts);
|
|
210
|
-
}
|
|
211
|
-
catch (err) {
|
|
212
|
-
console.error(`fastweb-cli error: ${err.message}`);
|
|
213
|
-
process.exit(1);
|
|
214
|
-
}
|
|
215
|
-
await runTool(cmd, 'query_selectors_all', body);
|
|
216
|
-
});
|
|
217
|
-
program
|
|
218
|
-
.command('query_selectors')
|
|
219
|
-
.description('Query the accessibility tree with CSS-like selectors and, for each, return the first matching node')
|
|
220
|
-
.option('-s, --selector <selector>', 'CSS-like selector (repeatable)', (value, prev = []) => {
|
|
221
|
-
prev.push(value);
|
|
222
|
-
return prev;
|
|
223
|
-
})
|
|
224
|
-
.option('--with-ancestors', 'Include ancestor nodes', true)
|
|
225
|
-
.option('--no-with-ancestors', 'Exclude ancestor nodes')
|
|
226
|
-
.option('--selectors-json <json>', 'JSON array of {selector,withAncestors} for per-selector control')
|
|
227
|
-
.action(async (opts, cmd) => {
|
|
228
|
-
let body;
|
|
229
|
-
try {
|
|
230
|
-
body = buildQuerySelectorFirstBody(opts);
|
|
231
|
-
}
|
|
232
|
-
catch (err) {
|
|
233
|
-
console.error(`fastweb-cli error: ${err.message}`);
|
|
234
|
-
process.exit(1);
|
|
235
|
-
}
|
|
236
|
-
await runTool(cmd, 'query_selectors', body);
|
|
237
|
-
});
|
|
238
|
-
program
|
|
239
|
-
.command('take_snapshot')
|
|
240
|
-
.description('Take an accessibility-tree snapshot of the current page')
|
|
241
|
-
.action(async (_opts, cmd) => {
|
|
242
|
-
await runTool(cmd, 'take_snapshot', {});
|
|
243
|
-
});
|
|
244
|
-
program
|
|
245
|
-
.command('press_keys')
|
|
246
|
-
.description('Press a sequence of keys')
|
|
247
|
-
.requiredOption('--keys <keys>', "Comma-separated keys. E.g. 'Hello, Tab, Enter'")
|
|
248
|
-
.action(async (opts, cmd) => {
|
|
249
|
-
await runTool(cmd, 'press_keys', { keys: opts.keys });
|
|
250
|
-
});
|
|
251
|
-
await program.parseAsync(process.argv);
|
|
252
|
-
}
|
|
253
|
-
void main();
|
|
254
|
-
//# sourceMappingURL=fastweb_cli.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fastweb_cli.js","sourceRoot":"","sources":["../../src/fastweb_cli/fastweb_cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { type ToolResponse } from '../fastweb_http_server/tool-schemas.js';
|
|
2
|
-
export declare class HttpClient {
|
|
3
|
-
static getServerUrl(overrideUrl: string | undefined): string;
|
|
4
|
-
static postTool(serverUrl: string, routeName: string, body: unknown): Promise<ToolResponse>;
|
|
5
|
-
static printResponse(response: ToolResponse): void;
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=http-client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/fastweb_cli/http-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAQ/F,qBAAa,UAAU;IACtB,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM;WAO/C,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IA2BjG,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;CAKlD"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HttpClient = void 0;
|
|
4
|
-
// local imports
|
|
5
|
-
const tool_schemas_js_1 = require("../fastweb_http_server/tool-schemas.js");
|
|
6
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
7
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
8
|
-
//
|
|
9
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
10
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
11
|
-
class HttpClient {
|
|
12
|
-
static getServerUrl(overrideUrl) {
|
|
13
|
-
if (overrideUrl !== undefined && overrideUrl !== '')
|
|
14
|
-
return overrideUrl;
|
|
15
|
-
const envUrl = process.env.FASTWEB_SERVER;
|
|
16
|
-
if (envUrl !== undefined && envUrl !== '')
|
|
17
|
-
return envUrl;
|
|
18
|
-
return 'http://localhost:8787';
|
|
19
|
-
}
|
|
20
|
-
static async postTool(serverUrl, routeName, body) {
|
|
21
|
-
const url = `${serverUrl.replace(/\/+$/, '')}/tools/${routeName}`;
|
|
22
|
-
const response = await fetch(url, {
|
|
23
|
-
method: 'POST',
|
|
24
|
-
headers: { 'content-type': 'application/json' },
|
|
25
|
-
body: JSON.stringify(body ?? {}),
|
|
26
|
-
});
|
|
27
|
-
const responseText = await response.text();
|
|
28
|
-
if (response.ok === false) {
|
|
29
|
-
throw new Error(`HTTP ${response.status} ${response.statusText}: ${responseText}`);
|
|
30
|
-
}
|
|
31
|
-
let parsedJson;
|
|
32
|
-
try {
|
|
33
|
-
parsedJson = JSON.parse(responseText);
|
|
34
|
-
}
|
|
35
|
-
catch (err) {
|
|
36
|
-
throw new Error(`Invalid JSON from server: ${responseText}`);
|
|
37
|
-
}
|
|
38
|
-
const parsed = tool_schemas_js_1.ToolResponseSchema.safeParse(parsedJson);
|
|
39
|
-
if (parsed.success === false) {
|
|
40
|
-
throw new Error(`Unexpected response shape: ${JSON.stringify(parsed.error.flatten())}`);
|
|
41
|
-
}
|
|
42
|
-
return parsed.data;
|
|
43
|
-
}
|
|
44
|
-
static printResponse(response) {
|
|
45
|
-
for (const part of response.content) {
|
|
46
|
-
console.log(part.text);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
exports.HttpClient = HttpClient;
|
|
51
|
-
//# sourceMappingURL=http-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/fastweb_cli/http-client.ts"],"names":[],"mappings":";;;AAAA,gBAAgB;AAChB,4EAA+F;AAE/F,+EAA+E;AAC/E,+EAA+E;AAC/E,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAE/E,MAAa,UAAU;IACtB,MAAM,CAAC,YAAY,CAAC,WAA+B;QAClD,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,EAAE;YAAE,OAAO,WAAW,CAAC;QACxE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAC1C,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE;YAAE,OAAO,MAAM,CAAC;QACzD,OAAO,uBAAuB,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,SAAiB,EAAE,IAAa;QACxE,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,SAAS,EAAE,CAAC;QAClE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YACjC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;SAChC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC3C,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,KAAK,YAAY,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,IAAI,UAAmB,CAAC;QACxB,IAAI,CAAC;YACJ,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,6BAA6B,YAAY,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,MAAM,GAAG,oCAAkB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,QAAsB;QAC1C,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACF,CAAC;CACD;AAxCD,gCAwCC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { type ToolResponse } from '../../fastweb_http_server/libs/tool-schemas.js';
|
|
2
|
-
export declare class HttpClient {
|
|
3
|
-
static getServerUrl(overrideUrl: string | undefined): string;
|
|
4
|
-
static postTool(serverUrl: string, routeName: string, body: unknown): Promise<ToolResponse>;
|
|
5
|
-
static printResponse(response: ToolResponse): void;
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=http-client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../src/fastweb_cli/libs/http-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,gDAAgD,CAAC;AAQvG,qBAAa,UAAU;IACtB,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM;WAO/C,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IA2BjG,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;CAKlD"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HttpClient = void 0;
|
|
4
|
-
// local imports
|
|
5
|
-
const tool_schemas_js_1 = require("../../fastweb_http_server/libs/tool-schemas.js");
|
|
6
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
7
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
8
|
-
//
|
|
9
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
10
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
11
|
-
class HttpClient {
|
|
12
|
-
static getServerUrl(overrideUrl) {
|
|
13
|
-
if (overrideUrl !== undefined && overrideUrl !== '')
|
|
14
|
-
return overrideUrl;
|
|
15
|
-
const envUrl = process.env.FASTWEB_SERVER;
|
|
16
|
-
if (envUrl !== undefined && envUrl !== '')
|
|
17
|
-
return envUrl;
|
|
18
|
-
return 'http://localhost:8787';
|
|
19
|
-
}
|
|
20
|
-
static async postTool(serverUrl, routeName, body) {
|
|
21
|
-
const url = `${serverUrl.replace(/\/+$/, '')}/tools/${routeName}`;
|
|
22
|
-
const response = await fetch(url, {
|
|
23
|
-
method: 'POST',
|
|
24
|
-
headers: { 'content-type': 'application/json' },
|
|
25
|
-
body: JSON.stringify(body ?? {}),
|
|
26
|
-
});
|
|
27
|
-
const responseText = await response.text();
|
|
28
|
-
if (response.ok === false) {
|
|
29
|
-
throw new Error(`HTTP ${response.status} ${response.statusText}: ${responseText}`);
|
|
30
|
-
}
|
|
31
|
-
let parsedJson;
|
|
32
|
-
try {
|
|
33
|
-
parsedJson = JSON.parse(responseText);
|
|
34
|
-
}
|
|
35
|
-
catch (err) {
|
|
36
|
-
throw new Error(`Invalid JSON from server: ${responseText}`);
|
|
37
|
-
}
|
|
38
|
-
const parsed = tool_schemas_js_1.ToolResponseSchema.safeParse(parsedJson);
|
|
39
|
-
if (parsed.success === false) {
|
|
40
|
-
throw new Error(`Unexpected response shape: ${JSON.stringify(parsed.error.flatten())}`);
|
|
41
|
-
}
|
|
42
|
-
return parsed.data;
|
|
43
|
-
}
|
|
44
|
-
static printResponse(response) {
|
|
45
|
-
for (const part of response.content) {
|
|
46
|
-
console.log(part.text);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
exports.HttpClient = HttpClient;
|
|
51
|
-
//# sourceMappingURL=http-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../src/fastweb_cli/libs/http-client.ts"],"names":[],"mappings":";;;AAAA,gBAAgB;AAChB,oFAAuG;AAEvG,+EAA+E;AAC/E,+EAA+E;AAC/E,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAE/E,MAAa,UAAU;IACtB,MAAM,CAAC,YAAY,CAAC,WAA+B;QAClD,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,EAAE;YAAE,OAAO,WAAW,CAAC;QACxE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAC1C,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE;YAAE,OAAO,MAAM,CAAC;QACzD,OAAO,uBAAuB,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,SAAiB,EAAE,IAAa;QACxE,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,SAAS,EAAE,CAAC;QAClE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YACjC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;SAChC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC3C,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,KAAK,YAAY,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,IAAI,UAAmB,CAAC;QACxB,IAAI,CAAC;YACJ,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,6BAA6B,YAAY,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,MAAM,GAAG,oCAAkB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,QAAsB;QAC1C,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACF,CAAC;CACD;AAxCD,gCAwCC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export declare class ServerManager {
|
|
2
|
-
static status(serverUrl: string): Promise<'running' | 'stopped'>;
|
|
3
|
-
static ensureRunning(serverUrl: string): Promise<void>;
|
|
4
|
-
static start(serverUrl: string): Promise<void>;
|
|
5
|
-
static stop(serverUrl: string): Promise<void>;
|
|
6
|
-
private static isLocalUrl;
|
|
7
|
-
private static parsePort;
|
|
8
|
-
private static isAlive;
|
|
9
|
-
private static readLogTail;
|
|
10
|
-
private static sleep;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=server-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server-manager.d.ts","sourceRoot":"","sources":["../../../src/fastweb_cli/libs/server-manager.ts"],"names":[],"mappings":"AA4BA,qBAAa,aAAa;WACZ,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;WAezD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;WAU/C,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;WAuDvC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqDnD,OAAO,CAAC,MAAM,CAAC,UAAU;IAUzB,OAAO,CAAC,MAAM,CAAC,SAAS;IAaxB,OAAO,CAAC,MAAM,CAAC,OAAO;IAWtB,OAAO,CAAC,MAAM,CAAC,WAAW;IAU1B,OAAO,CAAC,MAAM,CAAC,KAAK;CAGpB"}
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.ServerManager = void 0;
|
|
7
|
-
// node imports
|
|
8
|
-
const node_fs_1 = __importDefault(require("node:fs"));
|
|
9
|
-
const node_os_1 = __importDefault(require("node:os"));
|
|
10
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
11
|
-
const node_child_process_1 = require("node:child_process");
|
|
12
|
-
const STATE_DIR = node_path_1.default.join(node_os_1.default.homedir(), '.fastweb_cli');
|
|
13
|
-
const PID_FILE = node_path_1.default.join(STATE_DIR, 'server.json');
|
|
14
|
-
const LOG_FILE = node_path_1.default.join(STATE_DIR, 'server.log');
|
|
15
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
16
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
17
|
-
//
|
|
18
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
19
|
-
///////////////////////////////////////////////////////////////////////////////
|
|
20
|
-
class ServerManager {
|
|
21
|
-
static async status(serverUrl) {
|
|
22
|
-
const base = serverUrl.replace(/\/+$/, '');
|
|
23
|
-
try {
|
|
24
|
-
const response = await fetch(`${base}/health`, {
|
|
25
|
-
method: 'GET',
|
|
26
|
-
signal: AbortSignal.timeout(500),
|
|
27
|
-
});
|
|
28
|
-
if (response.ok === false)
|
|
29
|
-
return 'stopped';
|
|
30
|
-
const payload = await response.json();
|
|
31
|
-
return payload.ok === true ? 'running' : 'stopped';
|
|
32
|
-
}
|
|
33
|
-
catch {
|
|
34
|
-
return 'stopped';
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
static async ensureRunning(serverUrl) {
|
|
38
|
-
const state = await ServerManager.status(serverUrl);
|
|
39
|
-
if (state === 'running')
|
|
40
|
-
return;
|
|
41
|
-
if (ServerManager.isLocalUrl(serverUrl) === false) {
|
|
42
|
-
throw new Error(`fastweb server at ${serverUrl} is not reachable and cannot be auto-started (non-local URL)`);
|
|
43
|
-
}
|
|
44
|
-
await ServerManager.start(serverUrl);
|
|
45
|
-
}
|
|
46
|
-
static async start(serverUrl) {
|
|
47
|
-
const existing = await ServerManager.status(serverUrl);
|
|
48
|
-
if (existing === 'running') {
|
|
49
|
-
console.error(`fastweb server already running at ${serverUrl}`);
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
if (ServerManager.isLocalUrl(serverUrl) === false) {
|
|
53
|
-
throw new Error(`Refusing to start: ${serverUrl} is not a local URL`);
|
|
54
|
-
}
|
|
55
|
-
const port = ServerManager.parsePort(serverUrl);
|
|
56
|
-
const entryPath = node_path_1.default.resolve(__dirname, '..', '..', 'fastweb_http_server', 'fastweb_http_server.ts');
|
|
57
|
-
const packageRoot = node_path_1.default.resolve(__dirname, '..', '..', '..');
|
|
58
|
-
node_fs_1.default.mkdirSync(STATE_DIR, { recursive: true });
|
|
59
|
-
const logFd = node_fs_1.default.openSync(LOG_FILE, 'a');
|
|
60
|
-
const child = (0, node_child_process_1.spawn)('npx', ['tsx', entryPath, '--port', String(port)], {
|
|
61
|
-
detached: true,
|
|
62
|
-
stdio: ['ignore', logFd, logFd],
|
|
63
|
-
cwd: packageRoot,
|
|
64
|
-
env: process.env,
|
|
65
|
-
});
|
|
66
|
-
child.unref();
|
|
67
|
-
const pid = child.pid;
|
|
68
|
-
if (pid === undefined) {
|
|
69
|
-
node_fs_1.default.closeSync(logFd);
|
|
70
|
-
throw new Error('Failed to spawn fastweb-http-server (no pid)');
|
|
71
|
-
}
|
|
72
|
-
const pidFile = {
|
|
73
|
-
pid,
|
|
74
|
-
port,
|
|
75
|
-
startedAt: new Date().toISOString(),
|
|
76
|
-
};
|
|
77
|
-
node_fs_1.default.writeFileSync(PID_FILE, JSON.stringify(pidFile, null, 2));
|
|
78
|
-
const deadline = Date.now() + 10000;
|
|
79
|
-
while (Date.now() < deadline) {
|
|
80
|
-
const state = await ServerManager.status(serverUrl);
|
|
81
|
-
if (state === 'running') {
|
|
82
|
-
node_fs_1.default.closeSync(logFd);
|
|
83
|
-
console.error(`fastweb server started (pid=${pid}, port=${port})`);
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
await ServerManager.sleep(500);
|
|
87
|
-
}
|
|
88
|
-
node_fs_1.default.closeSync(logFd);
|
|
89
|
-
const tail = ServerManager.readLogTail(50);
|
|
90
|
-
throw new Error(`fastweb server did not become healthy within 10s. Log tail:\n${tail}`);
|
|
91
|
-
}
|
|
92
|
-
static async stop(serverUrl) {
|
|
93
|
-
if (node_fs_1.default.existsSync(PID_FILE) === false) {
|
|
94
|
-
console.error('no server pid file; nothing to stop');
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
let pidFile;
|
|
98
|
-
try {
|
|
99
|
-
const raw = node_fs_1.default.readFileSync(PID_FILE, 'utf8');
|
|
100
|
-
pidFile = JSON.parse(raw);
|
|
101
|
-
}
|
|
102
|
-
catch (err) {
|
|
103
|
-
throw new Error(`Failed to read pid file ${PID_FILE}: ${err.message}`);
|
|
104
|
-
}
|
|
105
|
-
const pid = pidFile.pid;
|
|
106
|
-
try {
|
|
107
|
-
process.kill(pid, 'SIGTERM');
|
|
108
|
-
}
|
|
109
|
-
catch (err) {
|
|
110
|
-
const code = err.code;
|
|
111
|
-
if (code !== 'ESRCH') {
|
|
112
|
-
throw err;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
const deadline = Date.now() + 5000;
|
|
116
|
-
while (Date.now() < deadline) {
|
|
117
|
-
if (ServerManager.isAlive(pid) === false)
|
|
118
|
-
break;
|
|
119
|
-
await ServerManager.sleep(200);
|
|
120
|
-
}
|
|
121
|
-
if (ServerManager.isAlive(pid) === true) {
|
|
122
|
-
try {
|
|
123
|
-
process.kill(pid, 'SIGKILL');
|
|
124
|
-
}
|
|
125
|
-
catch {
|
|
126
|
-
// best effort
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
try {
|
|
130
|
-
node_fs_1.default.unlinkSync(PID_FILE);
|
|
131
|
-
}
|
|
132
|
-
catch {
|
|
133
|
-
// best effort
|
|
134
|
-
}
|
|
135
|
-
// Best-effort: ensure the HTTP server is actually down from the caller's perspective.
|
|
136
|
-
const state = await ServerManager.status(serverUrl);
|
|
137
|
-
if (state === 'running') {
|
|
138
|
-
console.error(`warning: process ${pid} killed but ${serverUrl} still responds to /health`);
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
console.error('fastweb server stopped');
|
|
142
|
-
}
|
|
143
|
-
static isLocalUrl(serverUrl) {
|
|
144
|
-
try {
|
|
145
|
-
const parsed = new URL(serverUrl);
|
|
146
|
-
const host = parsed.hostname;
|
|
147
|
-
return host === 'localhost' || host === '127.0.0.1' || host === '::1' || host === '0.0.0.0';
|
|
148
|
-
}
|
|
149
|
-
catch {
|
|
150
|
-
return false;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
static parsePort(serverUrl) {
|
|
154
|
-
try {
|
|
155
|
-
const parsed = new URL(serverUrl);
|
|
156
|
-
if (parsed.port !== '') {
|
|
157
|
-
const port = Number.parseInt(parsed.port, 10);
|
|
158
|
-
if (Number.isNaN(port) === false)
|
|
159
|
-
return port;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
catch {
|
|
163
|
-
// fall through
|
|
164
|
-
}
|
|
165
|
-
return 8787;
|
|
166
|
-
}
|
|
167
|
-
static isAlive(pid) {
|
|
168
|
-
try {
|
|
169
|
-
process.kill(pid, 0);
|
|
170
|
-
return true;
|
|
171
|
-
}
|
|
172
|
-
catch (err) {
|
|
173
|
-
const code = err.code;
|
|
174
|
-
if (code === 'EPERM')
|
|
175
|
-
return true;
|
|
176
|
-
return false;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
static readLogTail(maxLines) {
|
|
180
|
-
try {
|
|
181
|
-
const content = node_fs_1.default.readFileSync(LOG_FILE, 'utf8');
|
|
182
|
-
const lines = content.split('\n');
|
|
183
|
-
return lines.slice(Math.max(0, lines.length - maxLines)).join('\n');
|
|
184
|
-
}
|
|
185
|
-
catch {
|
|
186
|
-
return '(log unavailable)';
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
static sleep(ms) {
|
|
190
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
exports.ServerManager = ServerManager;
|
|
194
|
-
//# sourceMappingURL=server-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server-manager.js","sourceRoot":"","sources":["../../../src/fastweb_cli/libs/server-manager.ts"],"names":[],"mappings":"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"}
|