b4n1-web 0.7.0 → 0.9.0
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 +69 -107
- package/bin/b4n1web +0 -0
- package/bin/b4n1web-linux +0 -0
- package/dist/browser.d.ts +17 -5
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +135 -27
- package/dist/browser.js.map +1 -1
- package/dist/errors.js +2 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/security.d.ts +46 -46
- package/dist/security.d.ts.map +1 -1
- package/dist/security.js +128 -94
- package/dist/security.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -1,146 +1,108 @@
|
|
|
1
1
|
# B4n1Web JavaScript/TypeScript SDK
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
<a href="https://github.com/B4N1-com/b4n1-web"><img src="https://img.shields.io/github/stars/B4N1-com/b4n1-web?style=flat" alt="GitHub stars"></a>
|
|
7
|
-
</p>
|
|
3
|
+
[](https://www.npmjs.com/package/b4n1-web)
|
|
4
|
+
[](LICENSE)
|
|
5
|
+
[](https://nodejs.org/)
|
|
8
6
|
|
|
9
|
-
|
|
7
|
+
> Ultra-lightweight agentic browser engine with bundled binary.
|
|
10
8
|
|
|
11
|
-
##
|
|
12
|
-
|
|
13
|
-
### 1. Install the B4n1Web Binary
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
curl -sL https://github.com/B4N1-com/b4n1-web/releases/latest/download/b4n1web-v0.6.2-flat.tar.gz | tar -xz && ./b4n1web --version
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
### 2. Install the JavaScript SDK
|
|
9
|
+
## Install
|
|
20
10
|
|
|
21
11
|
```bash
|
|
22
12
|
npm install b4n1-web
|
|
23
13
|
```
|
|
24
14
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
yarn add b4n1-web
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
Or with pnpm:
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
pnpm add b4n1-web
|
|
35
|
-
```
|
|
15
|
+
Binary is bundled — no separate installation needed.
|
|
36
16
|
|
|
37
17
|
## Quick Start
|
|
38
18
|
|
|
39
19
|
```typescript
|
|
40
|
-
import { AgentBrowser, BrowserMode
|
|
20
|
+
import { AgentBrowser, BrowserMode } from 'b4n1-web';
|
|
41
21
|
|
|
42
|
-
// Create a browser instance
|
|
43
22
|
const browser = new AgentBrowser({ mode: BrowserMode.LIGHT });
|
|
44
|
-
|
|
45
|
-
// Navigate to a page
|
|
46
23
|
const page = await browser.goto('https://example.com');
|
|
24
|
+
console.log(page.markdown);
|
|
25
|
+
console.log(`${page.links.length} links found`);
|
|
26
|
+
browser.close();
|
|
27
|
+
```
|
|
47
28
|
|
|
48
|
-
|
|
49
|
-
console.log('Page content:', page.markdown);
|
|
50
|
-
console.log('Found', page.links.length, 'links');
|
|
51
|
-
|
|
52
|
-
// Extract main content
|
|
53
|
-
const mainContent = page.getMainContent();
|
|
54
|
-
console.log('Main content:', mainContent.substring(0, 200) + '...');
|
|
29
|
+
## Page API
|
|
55
30
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
31
|
+
```typescript
|
|
32
|
+
page.url // string
|
|
33
|
+
page.markdown // string
|
|
34
|
+
page.links // string[]
|
|
35
|
+
page.screenshot // string | undefined
|
|
59
36
|
|
|
60
|
-
//
|
|
61
|
-
|
|
37
|
+
page.getMainContent() // string: content without headers
|
|
38
|
+
page.findLinksByText("more") // string[]: matching links
|
|
62
39
|
```
|
|
63
40
|
|
|
64
41
|
## Browser Modes
|
|
65
42
|
|
|
66
|
-
|
|
43
|
+
| Mode | Description |
|
|
44
|
+
|------|-------------|
|
|
45
|
+
| `BrowserMode.LIGHT` | HTTP + HTML parsing |
|
|
46
|
+
| `BrowserMode.JS` | Light + script extraction |
|
|
47
|
+
| `BrowserMode.RENDER` | Full Chromium + screenshots |
|
|
67
48
|
|
|
68
|
-
|
|
69
|
-
- **Performance**: < 15MB RAM, instant startup
|
|
70
|
-
- **Capabilities**: HTML parsing, markdown conversion, link extraction
|
|
71
|
-
- **Limitations**: No JavaScript execution
|
|
49
|
+
## Security
|
|
72
50
|
|
|
73
51
|
```typescript
|
|
74
|
-
|
|
75
|
-
```
|
|
52
|
+
import { SecurityShield } from 'b4n1-web';
|
|
76
53
|
|
|
77
|
-
|
|
54
|
+
const shield = new SecurityShield();
|
|
55
|
+
shield.markDomain('evil.com', false);
|
|
56
|
+
const { isSafe, needsApiCheck } = shield.isUrlSafe('https://evil.com');
|
|
57
|
+
```
|
|
78
58
|
|
|
79
|
-
|
|
80
|
-
- **Performance**: Same as Light, instant startup
|
|
81
|
-
- **Capabilities**: HTML parsing + JavaScript tag extraction
|
|
59
|
+
## Error Handling
|
|
82
60
|
|
|
83
61
|
```typescript
|
|
84
|
-
|
|
62
|
+
import { BinaryNotFoundError } from 'b4n1-web';
|
|
63
|
+
|
|
64
|
+
try {
|
|
65
|
+
const browser = new AgentBrowser();
|
|
66
|
+
} catch (e) {
|
|
67
|
+
if (e instanceof BinaryNotFoundError) {
|
|
68
|
+
console.error('Install binary: curl -sL https://web.b4n1.com/install | bash');
|
|
69
|
+
}
|
|
70
|
+
}
|
|
85
71
|
```
|
|
86
72
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
- **Use case**: SPAs, form filling, visual verification, E2E testing
|
|
90
|
-
- **Status**: Coming in v0.3.0
|
|
91
|
-
|
|
92
|
-
## API Reference
|
|
93
|
-
|
|
94
|
-
### AgentBrowser
|
|
95
|
-
|
|
96
|
-
Main browser class for web automation.
|
|
97
|
-
|
|
98
|
-
#### Constructor Options
|
|
99
|
-
|
|
100
|
-
- `mode`: BrowserMode.LIGHT, BrowserMode.JS, or BrowserMode.RENDER
|
|
101
|
-
- `timeout`: Request timeout in seconds (default: 30)
|
|
102
|
-
- `userAgent`: Custom user agent string
|
|
103
|
-
|
|
104
|
-
#### Methods
|
|
105
|
-
|
|
106
|
-
- `goto(url: string)`: Navigate to URL and return structured page data
|
|
107
|
-
- `close()`: Close the browser session
|
|
108
|
-
|
|
109
|
-
### Page
|
|
110
|
-
|
|
111
|
-
Structured data from a web page.
|
|
112
|
-
|
|
113
|
-
#### Properties
|
|
114
|
-
|
|
115
|
-
- `url: string`: The page URL
|
|
116
|
-
- `markdown: string`: Clean markdown content
|
|
117
|
-
- `links: string[]`: Extracted links
|
|
118
|
-
- `screenshot?: string`: Base64-encoded screenshot (render mode only)
|
|
119
|
-
|
|
120
|
-
#### Methods
|
|
121
|
-
|
|
122
|
-
- `getMainContent()`: Extract main content, skipping headers/footers
|
|
123
|
-
- `findLinksByText(text: string)`: Find links containing specific text
|
|
124
|
-
|
|
125
|
-
## SecurityShield
|
|
126
|
-
|
|
127
|
-
Optional security validation with caching:
|
|
73
|
+
## Context Manager
|
|
128
74
|
|
|
129
75
|
```typescript
|
|
130
|
-
import {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
76
|
+
import { AgentBrowser } from 'b4n1-web';
|
|
77
|
+
|
|
78
|
+
async function main() {
|
|
79
|
+
const browser = new AgentBrowser();
|
|
80
|
+
try {
|
|
81
|
+
const page = await browser.goto('https://example.com');
|
|
82
|
+
console.log(page.markdown);
|
|
83
|
+
} finally {
|
|
84
|
+
browser.close();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Or with async dispose:
|
|
89
|
+
const browser = new AgentBrowser();
|
|
90
|
+
try {
|
|
91
|
+
await browser.goto('https://example.com');
|
|
92
|
+
} finally {
|
|
93
|
+
await browser[Symbol.asyncDispose]();
|
|
94
|
+
}
|
|
138
95
|
```
|
|
139
96
|
|
|
140
|
-
##
|
|
97
|
+
## Version
|
|
98
|
+
|
|
99
|
+
SDK: **0.4.0** | Binary: **0.4.0** (bundled)
|
|
141
100
|
|
|
142
|
-
|
|
101
|
+
## Links
|
|
143
102
|
|
|
144
|
-
|
|
103
|
+
- [npm](https://www.npmjs.com/package/b4n1-web)
|
|
104
|
+
- [GitHub](https://github.com/B4N1-com/b4n1-web)
|
|
105
|
+
- [Website](https://web.b4n1.com)
|
|
145
106
|
|
|
146
|
-
|
|
107
|
+
---
|
|
108
|
+
*Built by B4N1 with ❤️ · All rights reserved.*
|
package/bin/b4n1web
ADDED
|
Binary file
|
package/bin/b4n1web-linux
CHANGED
|
Binary file
|
package/dist/browser.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BrowserMode, type BrowserOptions, type PageData } from './types';
|
|
1
|
+
import { BrowserMode, type BrowserOptions, type PageData, type IframeInfo } from './types';
|
|
2
2
|
export declare function getB4n1webBinary(): string | null;
|
|
3
3
|
export declare function getB4n1webVersion(): string | null;
|
|
4
4
|
export declare function checkVersionCompatibility(): string | null;
|
|
@@ -18,18 +18,30 @@ export declare class AgentBrowser {
|
|
|
18
18
|
private userAgent;
|
|
19
19
|
private binaryPath;
|
|
20
20
|
private currentUrl;
|
|
21
|
+
private sessionId;
|
|
22
|
+
private sessionStarted;
|
|
23
|
+
private viewportWidth;
|
|
24
|
+
private viewportHeight;
|
|
25
|
+
private emulatedDevice;
|
|
21
26
|
constructor(options?: BrowserOptions);
|
|
27
|
+
private escapeArg;
|
|
28
|
+
private runSessionCommand;
|
|
29
|
+
private ensureSession;
|
|
22
30
|
goto(url: string, waitFor?: string): Promise<Page>;
|
|
23
31
|
private parseOutput;
|
|
24
|
-
close(): void;
|
|
25
|
-
[Symbol.asyncDispose](): Promise<void>;
|
|
26
|
-
screenshot(width?: number, height?: number): string;
|
|
27
|
-
waitForSelector(selector: string, timeoutMs?: number): Promise<boolean>;
|
|
28
32
|
click(selector: string): Promise<void>;
|
|
29
33
|
typeText(selector: string, text: string, clearFirst?: boolean): Promise<void>;
|
|
34
|
+
waitForSelector(selector: string, timeoutMs?: number): Promise<boolean>;
|
|
35
|
+
screenshot(url?: string): Promise<string>;
|
|
36
|
+
frames(): Promise<IframeInfo[]>;
|
|
37
|
+
iframeText(index: number): Promise<string>;
|
|
38
|
+
setViewport(width: number, height: number): Promise<void>;
|
|
39
|
+
emulateDevice(device: string): Promise<void>;
|
|
30
40
|
getLinks(): string[];
|
|
31
41
|
static getLinksFromPage(url: string, mode?: BrowserMode): Promise<string[]>;
|
|
32
42
|
static findBinary(): string | null;
|
|
43
|
+
close(): void;
|
|
44
|
+
[Symbol.asyncDispose](): Promise<void>;
|
|
33
45
|
}
|
|
34
46
|
export declare function createBrowserAndGoto(url: string, options?: BrowserOptions): Promise<Page>;
|
|
35
47
|
//# sourceMappingURL=browser.d.ts.map
|
package/dist/browser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,KAAK,QAAQ,EAAuB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAuB,MAAM,SAAS,CAAC;AAEhH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAyChD;AAED,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAejD;AAID,wBAAgB,yBAAyB,IAAI,MAAM,GAAG,IAAI,CAczD;AAED,qBAAa,IAAK,YAAW,QAAQ;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAEN,IAAI,EAAE,QAAQ;IAQ1B,cAAc,IAAI,MAAM;IAMxB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;CAIxC;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,cAAc,CAAe;IACrC,OAAO,CAAC,cAAc,CAAuB;gBAEjC,OAAO,GAAE,cAAmB;IAuBxC,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,aAAa;IAaf,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxD,OAAO,CAAC,WAAW;IAyCb,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAetC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBpF,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,MAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAgB9E,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBzC,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAa/B,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAY1C,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAezD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAclD,QAAQ,IAAI,MAAM,EAAE;WAmBP,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,WAA+B,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAUpG,MAAM,CAAC,UAAU,IAAI,MAAM,GAAG,IAAI;IAIlC,KAAK,IAAI,IAAI;IAUP,CAAC,MAAM,CAAC,YAAY,CAAC;CAG5B;AAED,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAOf"}
|
package/dist/browser.js
CHANGED
|
@@ -54,7 +54,10 @@ function getB4n1webBinary() {
|
|
|
54
54
|
catch {
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
-
|
|
57
|
+
const envBinary = process.env.B4N1WEB_BINARY;
|
|
58
|
+
if (envBinary)
|
|
59
|
+
paths.push(envBinary);
|
|
60
|
+
paths.push(home + '/.local/bin/b4n1web', home + '/.b4n1web/bin/b4n1web', '/usr/local/bin/b4n1web', '/usr/bin/b4n1web');
|
|
58
61
|
const pathEnv = process.env.PATH || '';
|
|
59
62
|
const pathDirs = pathEnv.split(':').filter(p => p);
|
|
60
63
|
for (const dir of pathDirs) {
|
|
@@ -91,7 +94,7 @@ function getB4n1webVersion() {
|
|
|
91
94
|
return null;
|
|
92
95
|
}
|
|
93
96
|
}
|
|
94
|
-
const SDK_VERSION = '0.
|
|
97
|
+
const SDK_VERSION = '0.8.0';
|
|
95
98
|
function checkVersionCompatibility() {
|
|
96
99
|
const binaryVersion = getB4n1webVersion();
|
|
97
100
|
if (!binaryVersion) {
|
|
@@ -105,6 +108,11 @@ function checkVersionCompatibility() {
|
|
|
105
108
|
return binaryVersion;
|
|
106
109
|
}
|
|
107
110
|
class Page {
|
|
111
|
+
url;
|
|
112
|
+
markdown;
|
|
113
|
+
links;
|
|
114
|
+
screenshot;
|
|
115
|
+
jsOutput;
|
|
108
116
|
constructor(data) {
|
|
109
117
|
this.url = data.url;
|
|
110
118
|
this.markdown = data.markdown;
|
|
@@ -124,11 +132,21 @@ class Page {
|
|
|
124
132
|
}
|
|
125
133
|
exports.Page = Page;
|
|
126
134
|
class AgentBrowser {
|
|
135
|
+
mode;
|
|
136
|
+
timeout;
|
|
137
|
+
userAgent;
|
|
138
|
+
binaryPath;
|
|
139
|
+
currentUrl = null;
|
|
140
|
+
sessionId;
|
|
141
|
+
sessionStarted = false;
|
|
142
|
+
viewportWidth = 1280;
|
|
143
|
+
viewportHeight = 720;
|
|
144
|
+
emulatedDevice = null;
|
|
127
145
|
constructor(options = {}) {
|
|
128
|
-
this.currentUrl = null;
|
|
129
146
|
this.mode = options.mode ?? types_1.BrowserMode.LIGHT;
|
|
130
147
|
this.timeout = options.timeout ?? 30;
|
|
131
148
|
this.userAgent = options.userAgent ?? 'B4n1Web-Agent/1.0';
|
|
149
|
+
this.sessionId = `agent-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
132
150
|
const binary = getB4n1webBinary();
|
|
133
151
|
if (!binary) {
|
|
134
152
|
const home = process.env.HOME || '';
|
|
@@ -143,6 +161,29 @@ class AgentBrowser {
|
|
|
143
161
|
}
|
|
144
162
|
this.binaryPath = binary;
|
|
145
163
|
}
|
|
164
|
+
escapeArg(arg) {
|
|
165
|
+
return JSON.stringify(arg);
|
|
166
|
+
}
|
|
167
|
+
runSessionCommand(subcommand, ...args) {
|
|
168
|
+
try {
|
|
169
|
+
return (0, child_process_1.execSync)(`${this.binaryPath} session ${subcommand} ${this.sessionId} ${args.join(' ')}`, { timeout: this.timeout * 1000 }).toString().trim();
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
if (error.message?.includes('timed out')) {
|
|
173
|
+
throw new Error(`Session command timed out after ${this.timeout}s`);
|
|
174
|
+
}
|
|
175
|
+
throw new Error(`Session command "${subcommand}" failed: ${error.message}`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
ensureSession(url) {
|
|
179
|
+
if (!this.sessionStarted) {
|
|
180
|
+
(0, child_process_1.execSync)(`${this.binaryPath} session start ${this.sessionId}`, { timeout: 10000 });
|
|
181
|
+
this.sessionStarted = true;
|
|
182
|
+
}
|
|
183
|
+
if (url) {
|
|
184
|
+
(0, child_process_1.execSync)(`${this.binaryPath} session goto ${this.sessionId} ${this.escapeArg(url)}`, { timeout: this.timeout * 1000 });
|
|
185
|
+
}
|
|
186
|
+
}
|
|
146
187
|
async goto(url, waitFor) {
|
|
147
188
|
this.currentUrl = url;
|
|
148
189
|
return new Promise((resolve, reject) => {
|
|
@@ -186,10 +227,16 @@ class AgentBrowser {
|
|
|
186
227
|
}
|
|
187
228
|
}
|
|
188
229
|
else if (line.startsWith('Screenshot:')) {
|
|
189
|
-
screenshot = line.slice(
|
|
230
|
+
screenshot = line.slice(11).trim();
|
|
231
|
+
if (screenshot === '') {
|
|
232
|
+
screenshot = undefined;
|
|
233
|
+
}
|
|
190
234
|
}
|
|
191
235
|
else if (line.startsWith('js_output:')) {
|
|
192
|
-
jsOutput = line.slice(10).trim()
|
|
236
|
+
jsOutput = line.slice(10).trim();
|
|
237
|
+
if (jsOutput === '') {
|
|
238
|
+
jsOutput = undefined;
|
|
239
|
+
}
|
|
193
240
|
}
|
|
194
241
|
else {
|
|
195
242
|
markdown += line + '\n';
|
|
@@ -203,62 +250,110 @@ class AgentBrowser {
|
|
|
203
250
|
jsOutput,
|
|
204
251
|
});
|
|
205
252
|
}
|
|
206
|
-
|
|
207
|
-
}
|
|
208
|
-
async [Symbol.asyncDispose]() {
|
|
209
|
-
this.close();
|
|
210
|
-
}
|
|
211
|
-
screenshot(width = 1280, height = 720) {
|
|
253
|
+
async click(selector) {
|
|
212
254
|
if (!this.currentUrl) {
|
|
213
255
|
throw new Error('No page loaded. Call goto() first.');
|
|
214
256
|
}
|
|
257
|
+
this.ensureSession(this.currentUrl);
|
|
215
258
|
try {
|
|
216
|
-
|
|
217
|
-
return output;
|
|
259
|
+
(0, child_process_1.execSync)(`${this.binaryPath} session click ${this.sessionId} ${this.escapeArg(selector)}`, { timeout: this.timeout * 1000 });
|
|
218
260
|
}
|
|
219
261
|
catch (error) {
|
|
220
|
-
|
|
221
|
-
|
|
262
|
+
throw new Error(`Click failed on "${selector}": ${error.message}`);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
async typeText(selector, text, clearFirst = false) {
|
|
266
|
+
if (!this.currentUrl) {
|
|
267
|
+
throw new Error('No page loaded. Call goto() first.');
|
|
268
|
+
}
|
|
269
|
+
this.ensureSession(this.currentUrl);
|
|
270
|
+
try {
|
|
271
|
+
let cmd = `${this.binaryPath} session type ${this.sessionId} ${this.escapeArg(selector)} ${this.escapeArg(text)}`;
|
|
272
|
+
if (clearFirst) {
|
|
273
|
+
cmd += ' --clear-first';
|
|
222
274
|
}
|
|
223
|
-
|
|
275
|
+
(0, child_process_1.execSync)(cmd, { timeout: this.timeout * 1000 });
|
|
276
|
+
}
|
|
277
|
+
catch (error) {
|
|
278
|
+
throw new Error(`Type text failed on "${selector}": ${error.message}`);
|
|
224
279
|
}
|
|
225
280
|
}
|
|
226
281
|
async waitForSelector(selector, timeoutMs = 10000) {
|
|
227
282
|
if (!this.currentUrl) {
|
|
228
283
|
throw new Error('No page loaded. Call goto() first.');
|
|
229
284
|
}
|
|
285
|
+
this.ensureSession(this.currentUrl);
|
|
230
286
|
try {
|
|
231
|
-
const output = (0, child_process_1.execSync)(`${this.binaryPath} wait
|
|
287
|
+
const output = (0, child_process_1.execSync)(`${this.binaryPath} session wait ${this.sessionId} ${this.escapeArg(selector)} --timeout-ms ${timeoutMs}`, { timeout: Math.ceil(timeoutMs / 1000) + 5 }).toString().trim();
|
|
232
288
|
return output === 'true';
|
|
233
289
|
}
|
|
234
290
|
catch {
|
|
235
291
|
return false;
|
|
236
292
|
}
|
|
237
293
|
}
|
|
238
|
-
async
|
|
294
|
+
async screenshot(url) {
|
|
295
|
+
const targetUrl = url || this.currentUrl;
|
|
296
|
+
if (!targetUrl) {
|
|
297
|
+
throw new Error('No URL provided. Pass a URL or call goto() first.');
|
|
298
|
+
}
|
|
299
|
+
this.ensureSession(targetUrl);
|
|
300
|
+
try {
|
|
301
|
+
const output = (0, child_process_1.execSync)(`${this.binaryPath} session screenshot ${this.sessionId} ${this.escapeArg(targetUrl)}`, { timeout: this.timeout * 1000 }).toString().trim();
|
|
302
|
+
return output;
|
|
303
|
+
}
|
|
304
|
+
catch (error) {
|
|
305
|
+
if (error.message?.includes('timed out')) {
|
|
306
|
+
throw new Error(`Screenshot timed out after ${this.timeout}s`);
|
|
307
|
+
}
|
|
308
|
+
throw new Error(`Screenshot failed: ${error.message}`);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
async frames() {
|
|
239
312
|
if (!this.currentUrl) {
|
|
240
313
|
throw new Error('No page loaded. Call goto() first.');
|
|
241
314
|
}
|
|
315
|
+
this.ensureSession(this.currentUrl);
|
|
242
316
|
try {
|
|
243
|
-
|
|
317
|
+
const output = this.runSessionCommand('frames');
|
|
318
|
+
return JSON.parse(output);
|
|
244
319
|
}
|
|
245
320
|
catch (error) {
|
|
246
|
-
throw new Error(`
|
|
321
|
+
throw new Error(`Failed to list frames: ${error.message}`);
|
|
247
322
|
}
|
|
248
323
|
}
|
|
249
|
-
async
|
|
324
|
+
async iframeText(index) {
|
|
250
325
|
if (!this.currentUrl) {
|
|
251
326
|
throw new Error('No page loaded. Call goto() first.');
|
|
252
327
|
}
|
|
328
|
+
this.ensureSession(this.currentUrl);
|
|
253
329
|
try {
|
|
254
|
-
|
|
255
|
-
if (clearFirst) {
|
|
256
|
-
cmd += ' --clear-first';
|
|
257
|
-
}
|
|
258
|
-
(0, child_process_1.execSync)(cmd, { timeout: this.timeout * 1000 });
|
|
330
|
+
return this.runSessionCommand('iframe-text', String(index));
|
|
259
331
|
}
|
|
260
332
|
catch (error) {
|
|
261
|
-
throw new Error(`
|
|
333
|
+
throw new Error(`Failed to get iframe text at index ${index}: ${error.message}`);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
async setViewport(width, height) {
|
|
337
|
+
this.viewportWidth = width;
|
|
338
|
+
this.viewportHeight = height;
|
|
339
|
+
if (this.sessionStarted && this.currentUrl) {
|
|
340
|
+
try {
|
|
341
|
+
(0, child_process_1.execSync)(`${this.binaryPath} session goto ${this.sessionId} ${this.escapeArg(this.currentUrl)} --viewport-width ${width} --viewport-height ${height}`, { timeout: this.timeout * 1000 });
|
|
342
|
+
}
|
|
343
|
+
catch (error) {
|
|
344
|
+
throw new Error(`setViewport failed: ${error.message}`);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
async emulateDevice(device) {
|
|
349
|
+
this.emulatedDevice = device;
|
|
350
|
+
if (this.sessionStarted && this.currentUrl) {
|
|
351
|
+
try {
|
|
352
|
+
(0, child_process_1.execSync)(`${this.binaryPath} session goto ${this.sessionId} ${this.escapeArg(this.currentUrl)} --emulate ${this.escapeArg(device)}`, { timeout: this.timeout * 1000 });
|
|
353
|
+
}
|
|
354
|
+
catch (error) {
|
|
355
|
+
throw new Error(`emulateDevice failed: ${error.message}`);
|
|
356
|
+
}
|
|
262
357
|
}
|
|
263
358
|
}
|
|
264
359
|
getLinks() {
|
|
@@ -291,6 +386,19 @@ class AgentBrowser {
|
|
|
291
386
|
static findBinary() {
|
|
292
387
|
return getB4n1webBinary();
|
|
293
388
|
}
|
|
389
|
+
close() {
|
|
390
|
+
if (this.sessionStarted) {
|
|
391
|
+
try {
|
|
392
|
+
(0, child_process_1.execSync)(`${this.binaryPath} session close ${this.sessionId}`, { timeout: 5000 });
|
|
393
|
+
}
|
|
394
|
+
catch {
|
|
395
|
+
}
|
|
396
|
+
this.sessionStarted = false;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
async [Symbol.asyncDispose]() {
|
|
400
|
+
this.close();
|
|
401
|
+
}
|
|
294
402
|
}
|
|
295
403
|
exports.AgentBrowser = AgentBrowser;
|
|
296
404
|
async function createBrowserAndGoto(url, options = {}) {
|
package/dist/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.js
CHANGED
|
@@ -10,6 +10,7 @@ class BinaryNotFoundError extends Error {
|
|
|
10
10
|
}
|
|
11
11
|
exports.BinaryNotFoundError = BinaryNotFoundError;
|
|
12
12
|
class NavigationError extends Error {
|
|
13
|
+
url;
|
|
13
14
|
constructor(message, url) {
|
|
14
15
|
super(message);
|
|
15
16
|
this.url = url;
|
|
@@ -19,6 +20,7 @@ class NavigationError extends Error {
|
|
|
19
20
|
}
|
|
20
21
|
exports.NavigationError = NavigationError;
|
|
21
22
|
class BinaryError extends Error {
|
|
23
|
+
stderr;
|
|
22
24
|
constructor(message, stderr) {
|
|
23
25
|
super(message);
|
|
24
26
|
this.stderr = stderr;
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,OAAO,GAAG,oGAAoG;QACxH,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IACrD,CAAC;CACF;AAND,kDAMC;AAED,MAAa,eAAgB,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,OAAO,GAAG,oGAAoG;QACxH,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IACrD,CAAC;CACF;AAND,kDAMC;AAED,MAAa,eAAgB,SAAQ,KAAK;IACK;IAA7C,YAAY,OAAe,EAAkB,GAAW;QACtD,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,QAAG,GAAH,GAAG,CAAQ;QAEtD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACjD,CAAC;CACF;AAND,0CAMC;AAED,MAAa,WAAY,SAAQ,KAAK;IACS;IAA7C,YAAY,OAAe,EAAkB,MAAc;QACzD,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,WAAM,GAAN,MAAM,CAAQ;QAEzD,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC7C,CAAC;CACF;AAND,kCAMC;AAED,MAAa,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,QAAgB,EAAE,SAAiB;QAC7C,KAAK,CAAC,aAAa,QAAQ,sBAAsB,SAAS,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IACtD,CAAC;CACF;AAND,oDAMC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { AgentBrowser, Page, getB4n1webBinary, getB4n1webVersion, checkVersionCompatibility, createBrowserAndGoto } from './browser';
|
|
2
2
|
export { BrowserMode } from './types';
|
|
3
3
|
export { BinaryNotFoundError, NavigationError, BinaryError, SelectorTimeoutError } from './errors';
|
|
4
|
+
export { SecurityShield } from './security';
|
|
4
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACrI,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACrI,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SelectorTimeoutError = exports.BinaryError = exports.NavigationError = exports.BinaryNotFoundError = exports.BrowserMode = exports.createBrowserAndGoto = exports.checkVersionCompatibility = exports.getB4n1webVersion = exports.getB4n1webBinary = exports.Page = exports.AgentBrowser = void 0;
|
|
3
|
+
exports.SecurityShield = exports.SelectorTimeoutError = exports.BinaryError = exports.NavigationError = exports.BinaryNotFoundError = exports.BrowserMode = exports.createBrowserAndGoto = exports.checkVersionCompatibility = exports.getB4n1webVersion = exports.getB4n1webBinary = exports.Page = exports.AgentBrowser = void 0;
|
|
4
4
|
var browser_1 = require("./browser");
|
|
5
5
|
Object.defineProperty(exports, "AgentBrowser", { enumerable: true, get: function () { return browser_1.AgentBrowser; } });
|
|
6
6
|
Object.defineProperty(exports, "Page", { enumerable: true, get: function () { return browser_1.Page; } });
|
|
@@ -15,4 +15,6 @@ Object.defineProperty(exports, "BinaryNotFoundError", { enumerable: true, get: f
|
|
|
15
15
|
Object.defineProperty(exports, "NavigationError", { enumerable: true, get: function () { return errors_1.NavigationError; } });
|
|
16
16
|
Object.defineProperty(exports, "BinaryError", { enumerable: true, get: function () { return errors_1.BinaryError; } });
|
|
17
17
|
Object.defineProperty(exports, "SelectorTimeoutError", { enumerable: true, get: function () { return errors_1.SelectorTimeoutError; } });
|
|
18
|
+
var security_1 = require("./security");
|
|
19
|
+
Object.defineProperty(exports, "SecurityShield", { enumerable: true, get: function () { return security_1.SecurityShield; } });
|
|
18
20
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qCAAqI;AAA5H,uGAAA,YAAY,OAAA;AAAE,+FAAA,IAAI,OAAA;AAAE,2GAAA,gBAAgB,OAAA;AAAE,4GAAA,iBAAiB,OAAA;AAAE,oHAAA,yBAAyB,OAAA;AAAE,+GAAA,oBAAoB,OAAA;AACjH,iCAAsC;AAA7B,oGAAA,WAAW,OAAA;AACpB,mCAAmG;AAA1F,6GAAA,mBAAmB,OAAA;AAAE,yGAAA,eAAe,OAAA;AAAE,qGAAA,WAAW,OAAA;AAAE,8GAAA,oBAAoB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qCAAqI;AAA5H,uGAAA,YAAY,OAAA;AAAE,+FAAA,IAAI,OAAA;AAAE,2GAAA,gBAAgB,OAAA;AAAE,4GAAA,iBAAiB,OAAA;AAAE,oHAAA,yBAAyB,OAAA;AAAE,+GAAA,oBAAoB,OAAA;AACjH,iCAAsC;AAA7B,oGAAA,WAAW,OAAA;AACpB,mCAAmG;AAA1F,6GAAA,mBAAmB,OAAA;AAAE,yGAAA,eAAe,OAAA;AAAE,qGAAA,WAAW,OAAA;AAAE,8GAAA,oBAAoB,OAAA;AAChF,uCAA4C;AAAnC,0GAAA,cAAc,OAAA"}
|
package/dist/security.d.ts
CHANGED
|
@@ -1,65 +1,65 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* B4n1Web SecurityShield
|
|
2
|
+
* B4n1Web SecurityShield — URL security validation with in-memory cache.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* Fall-safe: returns safe=true if any error occurs.
|
|
6
|
-
*/
|
|
7
|
-
import type { SecurityShieldOptions, SecurityCheckResult } from './types';
|
|
8
|
-
/**
|
|
9
|
-
* SecurityShield - Domain safety validation with caching
|
|
4
|
+
* SecurityShield provides URL safety checking for agentic browser navigation.
|
|
10
5
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* const result = await navigate('https://example.com');
|
|
17
|
-
*
|
|
18
|
-
* // With custom shield
|
|
19
|
-
* const shield = new SecurityShield({ cacheDays: 30 });
|
|
20
|
-
* const { isSafe, needsApiCheck } = shield.isUrlSafe('https://example.com');
|
|
21
|
-
* ```
|
|
6
|
+
* API:
|
|
7
|
+
* new SecurityShield({ dbPath?, cacheDays? })
|
|
8
|
+
* shield.isUrlSafe(url) → { isSafe: boolean, needsApiCheck: boolean }
|
|
9
|
+
* shield.markDomain(domain, isSafe)
|
|
10
|
+
* shield.clearCache()
|
|
22
11
|
*/
|
|
12
|
+
import type { SecurityShieldOptions, SecurityCheckResult } from './types';
|
|
23
13
|
export declare class SecurityShield {
|
|
24
|
-
private dbPath;
|
|
25
14
|
private cacheDays;
|
|
26
15
|
private cache;
|
|
27
|
-
constructor(options?: SecurityShieldOptions);
|
|
28
16
|
/**
|
|
29
|
-
*
|
|
17
|
+
* Create a SecurityShield instance.
|
|
18
|
+
* @param opts - Optional configuration
|
|
19
|
+
* @param opts.cacheDays - TTL of a cached result in days (default 7)
|
|
30
20
|
*/
|
|
31
|
-
|
|
21
|
+
constructor(opts?: SecurityShieldOptions);
|
|
32
22
|
/**
|
|
33
|
-
* Check
|
|
23
|
+
* Check whether a URL is safe to navigate.
|
|
24
|
+
*
|
|
25
|
+
* @param rawURL - The URL to check.
|
|
26
|
+
* @returns `{ isSafe, needsApiCheck }`
|
|
27
|
+
* isSafe — `true` if the domain is not blacklisted.
|
|
28
|
+
* needsApiCheck — `false` when the result was previously cached.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* const { isSafe, needsApiCheck } = shield.isUrlSafe('https://unknown.com');
|
|
32
|
+
* // → isSafe=true, needsApiCheck=true (unknown domain, needs screening)
|
|
33
|
+
*
|
|
34
|
+
* shield.markDomain('evil.com', false);
|
|
35
|
+
* shield.isUrlSafe('https://evil.com');
|
|
36
|
+
* // → isSafe=false, needsApiCheck=false (explicitly blacklisted)
|
|
34
37
|
*/
|
|
35
|
-
isUrlSafe(
|
|
38
|
+
isUrlSafe(rawURL: string): SecurityCheckResult;
|
|
36
39
|
/**
|
|
37
|
-
*
|
|
40
|
+
* Explicitly mark a domain as safe (whitelist) or unsafe (blacklist).
|
|
41
|
+
* Overwrites any previous entry and resets the TTL timer.
|
|
42
|
+
*
|
|
43
|
+
* @param domain - The domain to mark, e.g. `"example.com"`
|
|
44
|
+
* @param isSafe - `true` to whitelist, `false` to blacklist
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* shield.markDomain('trusted.com', true); // always allow
|
|
48
|
+
* shield.markDomain('malware.com', false); // always block
|
|
38
49
|
*/
|
|
39
50
|
markDomain(domain: string, isSafe: boolean): void;
|
|
40
51
|
/**
|
|
41
|
-
*
|
|
52
|
+
* Remove all cached domain entries.
|
|
53
|
+
* After clearing, every next `isUrlSafe()` call for a previously-known domain
|
|
54
|
+
* will return `needsApiCheck=true` again.
|
|
42
55
|
*/
|
|
43
56
|
clearCache(): void;
|
|
57
|
+
/**
|
|
58
|
+
* Extract the hostname from a URL string.
|
|
59
|
+
* Returns `''` for invalid / missing URLs.
|
|
60
|
+
* @internal — exposed for testing as `extractDomain`.
|
|
61
|
+
*/
|
|
62
|
+
extractDomain(rawURL: string): string | null;
|
|
63
|
+
private _extractHost;
|
|
44
64
|
}
|
|
45
|
-
/**
|
|
46
|
-
* Navigate to URL with optional security check
|
|
47
|
-
*
|
|
48
|
-
* @example
|
|
49
|
-
* ```typescript
|
|
50
|
-
* import { navigate } from 'b4n1-web';
|
|
51
|
-
*
|
|
52
|
-
* const result = await navigate('https://example.com');
|
|
53
|
-
* if (result.success) {
|
|
54
|
-
* console.log(result.markdown);
|
|
55
|
-
* }
|
|
56
|
-
* ```
|
|
57
|
-
*/
|
|
58
|
-
export declare function navigate(url: string, ignoreSecurity?: boolean, securityShield?: SecurityShield): Promise<{
|
|
59
|
-
url: string;
|
|
60
|
-
success: boolean;
|
|
61
|
-
markdown?: string;
|
|
62
|
-
links?: string[];
|
|
63
|
-
error?: string;
|
|
64
|
-
}>;
|
|
65
65
|
//# sourceMappingURL=security.d.ts.map
|
package/dist/security.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAQ1E,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAA0B;IAEvC;;;;OAIG;gBACS,IAAI,GAAE,qBAA0B;IAK5C;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB;IAsB9C;;;;;;;;;;OAUG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAMjD;;;;OAIG;IACH,UAAU,IAAI,IAAI;IAMlB;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAsD5C,OAAO,CAAC,YAAY;CAIrB"}
|
package/dist/security.js
CHANGED
|
@@ -1,126 +1,160 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* B4n1Web SecurityShield
|
|
3
|
+
* B4n1Web SecurityShield — URL security validation with in-memory cache.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* SecurityShield provides URL safety checking for agentic browser navigation.
|
|
6
|
+
*
|
|
7
|
+
* API:
|
|
8
|
+
* new SecurityShield({ dbPath?, cacheDays? })
|
|
9
|
+
* shield.isUrlSafe(url) → { isSafe: boolean, needsApiCheck: boolean }
|
|
10
|
+
* shield.markDomain(domain, isSafe)
|
|
11
|
+
* shield.clearCache()
|
|
7
12
|
*/
|
|
8
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
14
|
exports.SecurityShield = void 0;
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
const types_1 = require("./types");
|
|
13
|
-
/**
|
|
14
|
-
* SecurityShield - Domain safety validation with caching
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* ```typescript
|
|
18
|
-
* import { SecurityShield, navigate } from 'b4n1-web';
|
|
19
|
-
*
|
|
20
|
-
* // Simple usage
|
|
21
|
-
* const result = await navigate('https://example.com');
|
|
22
|
-
*
|
|
23
|
-
* // With custom shield
|
|
24
|
-
* const shield = new SecurityShield({ cacheDays: 30 });
|
|
25
|
-
* const { isSafe, needsApiCheck } = shield.isUrlSafe('https://example.com');
|
|
26
|
-
* ```
|
|
27
|
-
*/
|
|
15
|
+
/** Default cache TTL in days */
|
|
16
|
+
const DEFAULT_CACHE_DAYS = 7;
|
|
28
17
|
class SecurityShield {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
this.cacheDays = options.cacheDays ?? 7;
|
|
32
|
-
this.cache = new Map();
|
|
33
|
-
}
|
|
18
|
+
cacheDays;
|
|
19
|
+
cache;
|
|
34
20
|
/**
|
|
35
|
-
*
|
|
21
|
+
* Create a SecurityShield instance.
|
|
22
|
+
* @param opts - Optional configuration
|
|
23
|
+
* @param opts.cacheDays - TTL of a cached result in days (default 7)
|
|
36
24
|
*/
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
return parsed.hostname.toLowerCase();
|
|
41
|
-
}
|
|
42
|
-
catch {
|
|
43
|
-
return null;
|
|
44
|
-
}
|
|
25
|
+
constructor(opts = {}) {
|
|
26
|
+
this.cacheDays = opts.cacheDays ?? DEFAULT_CACHE_DAYS;
|
|
27
|
+
this.cache = new Map();
|
|
45
28
|
}
|
|
46
29
|
/**
|
|
47
|
-
* Check
|
|
30
|
+
* Check whether a URL is safe to navigate.
|
|
31
|
+
*
|
|
32
|
+
* @param rawURL - The URL to check.
|
|
33
|
+
* @returns `{ isSafe, needsApiCheck }`
|
|
34
|
+
* isSafe — `true` if the domain is not blacklisted.
|
|
35
|
+
* needsApiCheck — `false` when the result was previously cached.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* const { isSafe, needsApiCheck } = shield.isUrlSafe('https://unknown.com');
|
|
39
|
+
* // → isSafe=true, needsApiCheck=true (unknown domain, needs screening)
|
|
40
|
+
*
|
|
41
|
+
* shield.markDomain('evil.com', false);
|
|
42
|
+
* shield.isUrlSafe('https://evil.com');
|
|
43
|
+
* // → isSafe=false, needsApiCheck=false (explicitly blacklisted)
|
|
48
44
|
*/
|
|
49
|
-
isUrlSafe(
|
|
50
|
-
const
|
|
51
|
-
if (!
|
|
45
|
+
isUrlSafe(rawURL) {
|
|
46
|
+
const host = this._extractHost(rawURL);
|
|
47
|
+
if (!host) {
|
|
48
|
+
// Invalid URL — safe default, no API check needed
|
|
52
49
|
return { isSafe: true, needsApiCheck: false };
|
|
53
50
|
}
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
51
|
+
const now = Date.now();
|
|
52
|
+
const entry = this.cache.get(host);
|
|
53
|
+
if (entry) {
|
|
54
|
+
if (now < entry.expires) {
|
|
55
|
+
// Cached and fresh — does not need an external API call
|
|
56
|
+
return { isSafe: entry.isSafe, needsApiCheck: false };
|
|
59
57
|
}
|
|
60
|
-
|
|
58
|
+
// Expired — re-check
|
|
59
|
+
this.cache.delete(host);
|
|
61
60
|
}
|
|
61
|
+
// New domain — safe but needs external API verification
|
|
62
62
|
return { isSafe: true, needsApiCheck: true };
|
|
63
63
|
}
|
|
64
64
|
/**
|
|
65
|
-
*
|
|
65
|
+
* Explicitly mark a domain as safe (whitelist) or unsafe (blacklist).
|
|
66
|
+
* Overwrites any previous entry and resets the TTL timer.
|
|
67
|
+
*
|
|
68
|
+
* @param domain - The domain to mark, e.g. `"example.com"`
|
|
69
|
+
* @param isSafe - `true` to whitelist, `false` to blacklist
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* shield.markDomain('trusted.com', true); // always allow
|
|
73
|
+
* shield.markDomain('malware.com', false); // always block
|
|
66
74
|
*/
|
|
67
75
|
markDomain(domain, isSafe) {
|
|
68
|
-
const
|
|
69
|
-
const expires = Date.now() + this.cacheDays *
|
|
70
|
-
this.cache.set(
|
|
76
|
+
const normalized = domain.toLowerCase().trim();
|
|
77
|
+
const expires = Date.now() + this.cacheDays * 86400_000; // days → ms
|
|
78
|
+
this.cache.set(normalized, { isSafe, expires });
|
|
71
79
|
}
|
|
72
80
|
/**
|
|
73
|
-
*
|
|
81
|
+
* Remove all cached domain entries.
|
|
82
|
+
* After clearing, every next `isUrlSafe()` call for a previously-known domain
|
|
83
|
+
* will return `needsApiCheck=true` again.
|
|
74
84
|
*/
|
|
75
85
|
clearCache() {
|
|
76
86
|
this.cache.clear();
|
|
77
87
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
88
|
+
// ── helpers ────────────────────────────────────────────────
|
|
89
|
+
/**
|
|
90
|
+
* Extract the hostname from a URL string.
|
|
91
|
+
* Returns `''` for invalid / missing URLs.
|
|
92
|
+
* @internal — exposed for testing as `extractDomain`.
|
|
93
|
+
*/
|
|
94
|
+
extractDomain(rawURL) {
|
|
95
|
+
try {
|
|
96
|
+
const url = rawURL?.trim();
|
|
97
|
+
if (!url)
|
|
98
|
+
return null;
|
|
99
|
+
let rest;
|
|
100
|
+
// Check for scheme (handles both :// and : schemes like data:, javascript:)
|
|
101
|
+
const schemeIndex = url.indexOf(':');
|
|
102
|
+
if (schemeIndex === -1) {
|
|
103
|
+
// no scheme
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
const scheme = url.slice(0, schemeIndex);
|
|
107
|
+
rest = url.slice(schemeIndex + 1);
|
|
108
|
+
// Handle special cases for schemes
|
|
109
|
+
if (scheme === 'data' || scheme === 'javascript') {
|
|
110
|
+
return '';
|
|
111
|
+
}
|
|
112
|
+
// Handle // authority format (like //example.com/path)
|
|
113
|
+
if (rest.startsWith('//')) {
|
|
114
|
+
rest = rest.slice(2);
|
|
115
|
+
}
|
|
116
|
+
// For other schemes like http:, https:, ftp:, etc., we already removed the scheme above
|
|
117
|
+
// Strip userinfo "user:pass@"
|
|
118
|
+
const atIdx = rest.lastIndexOf('@');
|
|
119
|
+
const afterAuth = atIdx >= 0 ? rest.slice(atIdx + 1) : rest;
|
|
120
|
+
// Strip path/query/fragment
|
|
121
|
+
const [rawHost, ..._] = afterAuth.split(/[\/?#]/, 1);
|
|
122
|
+
if (!rawHost)
|
|
123
|
+
return null;
|
|
124
|
+
let host = rawHost.trim();
|
|
125
|
+
if (!host)
|
|
126
|
+
return null;
|
|
127
|
+
// IPv6 in brackets: [::1]:8080 → ::
|
|
128
|
+
if (host.startsWith('[')) {
|
|
129
|
+
const bracketEnd = host.indexOf(']');
|
|
130
|
+
if (bracketEnd === -1)
|
|
131
|
+
return null;
|
|
132
|
+
host = host.slice(1, bracketEnd); // Extract content between brackets
|
|
133
|
+
return host.toLowerCase(); // ::1 is final, no port to strip
|
|
134
|
+
}
|
|
135
|
+
// Strip port after last ':' — works for 'example.com:8080'
|
|
136
|
+
const colonIdx = host.lastIndexOf(':');
|
|
137
|
+
if (colonIdx > 0) {
|
|
138
|
+
host = host.slice(0, colonIdx);
|
|
139
|
+
}
|
|
140
|
+
// Accept localhost / single-label hosts too
|
|
141
|
+
return host.toLowerCase() || null;
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
return null;
|
|
105
145
|
}
|
|
106
146
|
}
|
|
107
|
-
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
browser.close();
|
|
111
|
-
return {
|
|
112
|
-
url: page.url,
|
|
113
|
-
success: true,
|
|
114
|
-
markdown: page.markdown,
|
|
115
|
-
links: page.links,
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
catch (error) {
|
|
119
|
-
return {
|
|
120
|
-
url,
|
|
121
|
-
success: false,
|
|
122
|
-
error: error.message,
|
|
123
|
-
};
|
|
147
|
+
_extractHost(rawURL) {
|
|
148
|
+
const r = this.extractDomain(rawURL);
|
|
149
|
+
return r ?? '';
|
|
124
150
|
}
|
|
125
151
|
}
|
|
152
|
+
exports.SecurityShield = SecurityShield;
|
|
153
|
+
function _stripPort(host) {
|
|
154
|
+
const at = host.indexOf('@');
|
|
155
|
+
const colon = host.indexOf(':', at >= 0 ? at + 1 : 0);
|
|
156
|
+
if (colon >= 0)
|
|
157
|
+
return host.slice(0, colon);
|
|
158
|
+
return host;
|
|
159
|
+
}
|
|
126
160
|
//# sourceMappingURL=security.js.map
|
package/dist/security.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.js","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -30,6 +30,11 @@ export interface SecurityCheckResult {
|
|
|
30
30
|
isSafe: boolean;
|
|
31
31
|
needsApiCheck: boolean;
|
|
32
32
|
}
|
|
33
|
+
export interface IframeInfo {
|
|
34
|
+
index: number;
|
|
35
|
+
src?: string;
|
|
36
|
+
title?: string;
|
|
37
|
+
}
|
|
33
38
|
export declare class BinaryNotFoundError extends Error {
|
|
34
39
|
constructor(message?: string);
|
|
35
40
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW;IACrB,KAAK,UAAU;IACf,EAAE,OAAO;IACT,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,SAAuG;CAI3H"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW;IACrB,KAAK,UAAU;IACf,EAAE,OAAO;IACT,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,SAAuG;CAI3H"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,8BAAe,CAAA;IACf,wBAAS,CAAA;IACT,gCAAiB,CAAA;AACnB,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,8BAAe,CAAA;IACf,wBAAS,CAAA;IACT,gCAAiB,CAAA;AACnB,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB;AAwCD,MAAa,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,OAAO,GAAG,oGAAoG;QACxH,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AALD,kDAKC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "b4n1-web",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "B4n1Web SDK for JavaScript/TypeScript - Agentic Browser Engine with bundled binary",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
],
|
|
29
29
|
"author": "Bani Montoya <banimontoya@gmail.com>",
|
|
30
30
|
"license": "MIT",
|
|
31
|
-
"homepage": "https://
|
|
31
|
+
"homepage": "https://web.b4n1.com",
|
|
32
32
|
"repository": {
|
|
33
33
|
"type": "git",
|
|
34
34
|
"url": "https://github.com/B4N1-com/b4n1-web.git"
|
|
@@ -38,7 +38,8 @@
|
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/node": "^20.0.0",
|
|
41
|
-
"typescript": "^5.0.0"
|
|
41
|
+
"typescript": "^5.0.0",
|
|
42
|
+
"vitest": "^4.1.7"
|
|
42
43
|
},
|
|
43
44
|
"engines": {
|
|
44
45
|
"node": ">=18.0.0"
|