@framers/agentos-ext-web-browser 1.1.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 +161 -0
- package/dist/index.d.ts +50 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +128 -0
- package/dist/index.js.map +1 -0
- package/dist/services/browserService.d.ts +81 -0
- package/dist/services/browserService.d.ts.map +1 -0
- package/dist/services/browserService.js +381 -0
- package/dist/services/browserService.js.map +1 -0
- package/dist/tools/click.d.ts +42 -0
- package/dist/tools/click.d.ts.map +1 -0
- package/dist/tools/click.js +66 -0
- package/dist/tools/click.js.map +1 -0
- package/dist/tools/navigate.d.ts +44 -0
- package/dist/tools/navigate.d.ts.map +1 -0
- package/dist/tools/navigate.js +100 -0
- package/dist/tools/navigate.js.map +1 -0
- package/dist/tools/scrape.d.ts +43 -0
- package/dist/tools/scrape.d.ts.map +1 -0
- package/dist/tools/scrape.js +86 -0
- package/dist/tools/scrape.js.map +1 -0
- package/dist/tools/screenshot.d.ts +44 -0
- package/dist/tools/screenshot.d.ts.map +1 -0
- package/dist/tools/screenshot.js +83 -0
- package/dist/tools/screenshot.js.map +1 -0
- package/dist/tools/snapshot.d.ts +42 -0
- package/dist/tools/snapshot.d.ts.map +1 -0
- package/dist/tools/snapshot.js +57 -0
- package/dist/tools/snapshot.js.map +1 -0
- package/dist/tools/type.d.ts +44 -0
- package/dist/tools/type.d.ts.map +1 -0
- package/dist/tools/type.js +82 -0
- package/dist/tools/type.js.map +1 -0
- package/dist/types.d.ts +168 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/manifest.json +93 -0
- package/package.json +63 -0
package/README.md
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# Web Browser Extension for AgentOS
|
|
2
|
+
|
|
3
|
+
Browser automation capabilities for AgentOS agents - navigate pages, scrape content, click elements, and capture screenshots.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Navigate**: Go to any URL and get page content
|
|
8
|
+
- **Scrape**: Extract content using CSS selectors
|
|
9
|
+
- **Click**: Interact with page elements
|
|
10
|
+
- **Type**: Fill in forms and input fields
|
|
11
|
+
- **Screenshot**: Capture visual snapshots
|
|
12
|
+
- **Page Snapshot**: Get accessibility tree for intelligent interaction
|
|
13
|
+
|
|
14
|
+
## Installation
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm install @framers/agentos-ext-web-browser
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Quick Start
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
import { createExtensionPack } from '@framers/agentos-ext-web-browser';
|
|
24
|
+
import { ExtensionManager } from '@framers/agentos';
|
|
25
|
+
|
|
26
|
+
const extensionManager = new ExtensionManager();
|
|
27
|
+
|
|
28
|
+
// Register the browser extension
|
|
29
|
+
extensionManager.register(createExtensionPack({
|
|
30
|
+
options: {
|
|
31
|
+
headless: true,
|
|
32
|
+
timeout: 30000,
|
|
33
|
+
viewport: { width: 1920, height: 1080 }
|
|
34
|
+
},
|
|
35
|
+
logger: console
|
|
36
|
+
}));
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Tools
|
|
40
|
+
|
|
41
|
+
### browserNavigate
|
|
42
|
+
|
|
43
|
+
Navigate to a URL and retrieve page content.
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
46
|
+
const result = await gmi.executeTool('browserNavigate', {
|
|
47
|
+
url: 'https://example.com',
|
|
48
|
+
waitFor: 'networkidle2',
|
|
49
|
+
returnText: true
|
|
50
|
+
});
|
|
51
|
+
// Returns: { url, status, title, text, loadTime }
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### browserScrape
|
|
55
|
+
|
|
56
|
+
Extract content using CSS selectors.
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
const result = await gmi.executeTool('browserScrape', {
|
|
60
|
+
selector: 'article h2',
|
|
61
|
+
limit: 10
|
|
62
|
+
});
|
|
63
|
+
// Returns: { selector, count, elements: [{ tag, text, html, attributes }] }
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### browserClick
|
|
67
|
+
|
|
68
|
+
Click on an element.
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
const result = await gmi.executeTool('browserClick', {
|
|
72
|
+
selector: 'button.submit',
|
|
73
|
+
waitForNavigation: true
|
|
74
|
+
});
|
|
75
|
+
// Returns: { success, element, newUrl }
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### browserType
|
|
79
|
+
|
|
80
|
+
Type text into an input field.
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
const result = await gmi.executeTool('browserType', {
|
|
84
|
+
selector: 'input[name="search"]',
|
|
85
|
+
text: 'AgentOS documentation',
|
|
86
|
+
clear: true
|
|
87
|
+
});
|
|
88
|
+
// Returns: { success, element, text }
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### browserScreenshot
|
|
92
|
+
|
|
93
|
+
Capture a screenshot.
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
const result = await gmi.executeTool('browserScreenshot', {
|
|
97
|
+
fullPage: true,
|
|
98
|
+
format: 'png'
|
|
99
|
+
});
|
|
100
|
+
// Returns: { data (base64), format, width, height, size }
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### browserSnapshot
|
|
104
|
+
|
|
105
|
+
Get accessibility tree for intelligent interaction.
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
const result = await gmi.executeTool('browserSnapshot', {});
|
|
109
|
+
// Returns: { url, title, elements, links, forms, interactable }
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Configuration
|
|
113
|
+
|
|
114
|
+
| Option | Type | Default | Description |
|
|
115
|
+
|--------|------|---------|-------------|
|
|
116
|
+
| `headless` | boolean | `true` | Run browser in headless mode |
|
|
117
|
+
| `timeout` | number | `30000` | Default timeout (ms) |
|
|
118
|
+
| `userAgent` | string | - | Custom user agent |
|
|
119
|
+
| `viewport.width` | number | `1920` | Viewport width |
|
|
120
|
+
| `viewport.height` | number | `1080` | Viewport height |
|
|
121
|
+
| `executablePath` | string | auto | Path to Chrome executable |
|
|
122
|
+
|
|
123
|
+
## Use Cases
|
|
124
|
+
|
|
125
|
+
### Web Research Agent
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
// Search and scrape information
|
|
129
|
+
await gmi.executeTool('browserNavigate', { url: 'https://google.com' });
|
|
130
|
+
await gmi.executeTool('browserType', { selector: 'input[name="q"]', text: 'AI agents 2024' });
|
|
131
|
+
await gmi.executeTool('browserClick', { selector: 'input[type="submit"]', waitForNavigation: true });
|
|
132
|
+
const results = await gmi.executeTool('browserScrape', { selector: '.g h3' });
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Form Automation
|
|
136
|
+
|
|
137
|
+
```typescript
|
|
138
|
+
await gmi.executeTool('browserNavigate', { url: 'https://signup.example.com' });
|
|
139
|
+
await gmi.executeTool('browserType', { selector: '#email', text: 'user@example.com' });
|
|
140
|
+
await gmi.executeTool('browserType', { selector: '#password', text: 'securepass123' });
|
|
141
|
+
await gmi.executeTool('browserClick', { selector: 'button[type="submit"]' });
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Visual Verification
|
|
145
|
+
|
|
146
|
+
```typescript
|
|
147
|
+
await gmi.executeTool('browserNavigate', { url: 'https://myapp.com' });
|
|
148
|
+
const screenshot = await gmi.executeTool('browserScreenshot', { fullPage: true });
|
|
149
|
+
// Send screenshot to vision model for analysis
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Dependencies
|
|
153
|
+
|
|
154
|
+
This extension requires Chrome/Chromium to be installed on the system. It uses `puppeteer-core` which does not bundle a browser.
|
|
155
|
+
|
|
156
|
+
## License
|
|
157
|
+
|
|
158
|
+
MIT © Frame.dev
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentOS Web Browser Extension
|
|
3
|
+
*
|
|
4
|
+
* Provides browser automation capabilities for navigating pages, scraping content,
|
|
5
|
+
* clicking elements, and capturing screenshots.
|
|
6
|
+
*
|
|
7
|
+
* @module @framers/agentos-ext-web-browser
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
* @license MIT
|
|
10
|
+
*/
|
|
11
|
+
import type { ExtensionContext, ExtensionPack } from '@framers/agentos';
|
|
12
|
+
import type { BrowserConfig } from './types';
|
|
13
|
+
/**
|
|
14
|
+
* Extension configuration options
|
|
15
|
+
*/
|
|
16
|
+
export interface WebBrowserExtensionOptions extends BrowserConfig {
|
|
17
|
+
/** Extension priority in the stack */
|
|
18
|
+
priority?: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Creates the web browser extension pack
|
|
22
|
+
*
|
|
23
|
+
* @param context - The extension context
|
|
24
|
+
* @returns The configured extension pack
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* import { createExtensionPack } from '@framers/agentos-ext-web-browser';
|
|
29
|
+
*
|
|
30
|
+
* const pack = createExtensionPack({
|
|
31
|
+
* options: {
|
|
32
|
+
* headless: true,
|
|
33
|
+
* timeout: 30000,
|
|
34
|
+
* viewport: { width: 1920, height: 1080 }
|
|
35
|
+
* },
|
|
36
|
+
* logger: console
|
|
37
|
+
* });
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export declare function createExtensionPack(context: ExtensionContext): ExtensionPack;
|
|
41
|
+
export { BrowserService } from './services/browserService';
|
|
42
|
+
export { NavigateTool } from './tools/navigate';
|
|
43
|
+
export { ScrapeTool } from './tools/scrape';
|
|
44
|
+
export { ClickTool } from './tools/click';
|
|
45
|
+
export { TypeTool } from './tools/type';
|
|
46
|
+
export { ScreenshotTool } from './tools/screenshot';
|
|
47
|
+
export { SnapshotTool } from './tools/snapshot';
|
|
48
|
+
export * from './types';
|
|
49
|
+
export default createExtensionPack;
|
|
50
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAQxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,0BAA2B,SAAQ,aAAa;IAC/D,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,aAAa,CAmF5E;AAGD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,cAAc,SAAS,CAAC;AAGxB,eAAe,mBAAmB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentOS Web Browser Extension
|
|
3
|
+
*
|
|
4
|
+
* Provides browser automation capabilities for navigating pages, scraping content,
|
|
5
|
+
* clicking elements, and capturing screenshots.
|
|
6
|
+
*
|
|
7
|
+
* @module @framers/agentos-ext-web-browser
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
* @license MIT
|
|
10
|
+
*/
|
|
11
|
+
import { BrowserService } from './services/browserService';
|
|
12
|
+
import { NavigateTool } from './tools/navigate';
|
|
13
|
+
import { ScrapeTool } from './tools/scrape';
|
|
14
|
+
import { ClickTool } from './tools/click';
|
|
15
|
+
import { TypeTool } from './tools/type';
|
|
16
|
+
import { ScreenshotTool } from './tools/screenshot';
|
|
17
|
+
import { SnapshotTool } from './tools/snapshot';
|
|
18
|
+
/**
|
|
19
|
+
* Creates the web browser extension pack
|
|
20
|
+
*
|
|
21
|
+
* @param context - The extension context
|
|
22
|
+
* @returns The configured extension pack
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* import { createExtensionPack } from '@framers/agentos-ext-web-browser';
|
|
27
|
+
*
|
|
28
|
+
* const pack = createExtensionPack({
|
|
29
|
+
* options: {
|
|
30
|
+
* headless: true,
|
|
31
|
+
* timeout: 30000,
|
|
32
|
+
* viewport: { width: 1920, height: 1080 }
|
|
33
|
+
* },
|
|
34
|
+
* logger: console
|
|
35
|
+
* });
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export function createExtensionPack(context) {
|
|
39
|
+
const options = context.options || {};
|
|
40
|
+
// Initialize browser service with configuration
|
|
41
|
+
const browserService = new BrowserService({
|
|
42
|
+
headless: options.headless,
|
|
43
|
+
timeout: options.timeout,
|
|
44
|
+
userAgent: options.userAgent,
|
|
45
|
+
viewport: options.viewport,
|
|
46
|
+
executablePath: options.executablePath,
|
|
47
|
+
});
|
|
48
|
+
// Create tool instances
|
|
49
|
+
const navigateTool = new NavigateTool(browserService);
|
|
50
|
+
const scrapeTool = new ScrapeTool(browserService);
|
|
51
|
+
const clickTool = new ClickTool(browserService);
|
|
52
|
+
const typeTool = new TypeTool(browserService);
|
|
53
|
+
const screenshotTool = new ScreenshotTool(browserService);
|
|
54
|
+
const snapshotTool = new SnapshotTool(browserService);
|
|
55
|
+
return {
|
|
56
|
+
name: '@framers/agentos-ext-web-browser',
|
|
57
|
+
version: '1.0.0',
|
|
58
|
+
descriptors: [
|
|
59
|
+
{
|
|
60
|
+
id: 'browserNavigate',
|
|
61
|
+
kind: 'tool',
|
|
62
|
+
priority: options.priority || 50,
|
|
63
|
+
payload: navigateTool,
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
id: 'browserScrape',
|
|
67
|
+
kind: 'tool',
|
|
68
|
+
priority: options.priority || 50,
|
|
69
|
+
payload: scrapeTool,
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
id: 'browserClick',
|
|
73
|
+
kind: 'tool',
|
|
74
|
+
priority: options.priority || 50,
|
|
75
|
+
payload: clickTool,
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
id: 'browserType',
|
|
79
|
+
kind: 'tool',
|
|
80
|
+
priority: options.priority || 50,
|
|
81
|
+
payload: typeTool,
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
id: 'browserScreenshot',
|
|
85
|
+
kind: 'tool',
|
|
86
|
+
priority: options.priority || 50,
|
|
87
|
+
payload: screenshotTool,
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
id: 'browserSnapshot',
|
|
91
|
+
kind: 'tool',
|
|
92
|
+
priority: options.priority || 50,
|
|
93
|
+
payload: snapshotTool,
|
|
94
|
+
},
|
|
95
|
+
],
|
|
96
|
+
/**
|
|
97
|
+
* Called when extension is activated
|
|
98
|
+
*/
|
|
99
|
+
onActivate: async () => {
|
|
100
|
+
if (context.onActivate) {
|
|
101
|
+
await context.onActivate();
|
|
102
|
+
}
|
|
103
|
+
context.logger?.info('Web Browser Extension activated');
|
|
104
|
+
},
|
|
105
|
+
/**
|
|
106
|
+
* Called when extension is deactivated
|
|
107
|
+
*/
|
|
108
|
+
onDeactivate: async () => {
|
|
109
|
+
await browserService.close();
|
|
110
|
+
if (context.onDeactivate) {
|
|
111
|
+
await context.onDeactivate();
|
|
112
|
+
}
|
|
113
|
+
context.logger?.info('Web Browser Extension deactivated');
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
// Export types and classes for consumers
|
|
118
|
+
export { BrowserService } from './services/browserService';
|
|
119
|
+
export { NavigateTool } from './tools/navigate';
|
|
120
|
+
export { ScrapeTool } from './tools/scrape';
|
|
121
|
+
export { ClickTool } from './tools/click';
|
|
122
|
+
export { TypeTool } from './tools/type';
|
|
123
|
+
export { ScreenshotTool } from './tools/screenshot';
|
|
124
|
+
export { SnapshotTool } from './tools/snapshot';
|
|
125
|
+
export * from './types';
|
|
126
|
+
// Default export for convenience
|
|
127
|
+
export default createExtensionPack;
|
|
128
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser Service
|
|
3
|
+
* Manages browser lifecycle and provides page interaction methods.
|
|
4
|
+
*
|
|
5
|
+
* @module @framers/agentos-ext-web-browser
|
|
6
|
+
*/
|
|
7
|
+
import type { BrowserConfig, NavigationResult, ScrapeResult, ClickResult, TypeResult, ScreenshotResult, ScreenshotOptions, PageSnapshot } from '../types';
|
|
8
|
+
/**
|
|
9
|
+
* Browser service for managing browser automation
|
|
10
|
+
*/
|
|
11
|
+
export declare class BrowserService {
|
|
12
|
+
private browser;
|
|
13
|
+
private page;
|
|
14
|
+
private config;
|
|
15
|
+
private consoleMessages;
|
|
16
|
+
constructor(config?: BrowserConfig);
|
|
17
|
+
/**
|
|
18
|
+
* Initialize browser instance
|
|
19
|
+
*/
|
|
20
|
+
initialize(): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Find Chrome executable path based on OS
|
|
23
|
+
*/
|
|
24
|
+
private findChromePath;
|
|
25
|
+
/**
|
|
26
|
+
* Navigate to a URL
|
|
27
|
+
*/
|
|
28
|
+
navigate(url: string, options?: {
|
|
29
|
+
waitFor?: string;
|
|
30
|
+
}): Promise<NavigationResult>;
|
|
31
|
+
/**
|
|
32
|
+
* Scrape content using CSS selector
|
|
33
|
+
*/
|
|
34
|
+
scrape(selector: string): Promise<ScrapeResult>;
|
|
35
|
+
/**
|
|
36
|
+
* Click on an element
|
|
37
|
+
*/
|
|
38
|
+
click(selector: string, options?: {
|
|
39
|
+
waitForNavigation?: boolean;
|
|
40
|
+
}): Promise<ClickResult>;
|
|
41
|
+
/**
|
|
42
|
+
* Type text into an input
|
|
43
|
+
*/
|
|
44
|
+
type(selector: string, text: string, options?: {
|
|
45
|
+
delay?: number;
|
|
46
|
+
clear?: boolean;
|
|
47
|
+
}): Promise<TypeResult>;
|
|
48
|
+
/**
|
|
49
|
+
* Take a screenshot
|
|
50
|
+
*/
|
|
51
|
+
screenshot(options?: ScreenshotOptions): Promise<ScreenshotResult>;
|
|
52
|
+
/**
|
|
53
|
+
* Get page snapshot with accessibility tree
|
|
54
|
+
*/
|
|
55
|
+
getSnapshot(): Promise<PageSnapshot>;
|
|
56
|
+
/**
|
|
57
|
+
* Execute arbitrary JavaScript in page context
|
|
58
|
+
*/
|
|
59
|
+
evaluate<T>(fn: string | (() => T)): Promise<T>;
|
|
60
|
+
/**
|
|
61
|
+
* Wait for selector to appear
|
|
62
|
+
*/
|
|
63
|
+
waitForSelector(selector: string, timeout?: number): Promise<boolean>;
|
|
64
|
+
/**
|
|
65
|
+
* Get current URL
|
|
66
|
+
*/
|
|
67
|
+
getCurrentUrl(): Promise<string>;
|
|
68
|
+
/**
|
|
69
|
+
* Go back in history
|
|
70
|
+
*/
|
|
71
|
+
goBack(): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* Go forward in history
|
|
74
|
+
*/
|
|
75
|
+
goForward(): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Close browser
|
|
78
|
+
*/
|
|
79
|
+
close(): Promise<void>;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=browserService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browserService.d.ts","sourceRoot":"","sources":["../../src/services/browserService.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,YAAY,EAEZ,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EAEb,MAAM,UAAU,CAAC;AA0BlB;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,eAAe,CAAgB;gBAE3B,MAAM,GAAE,aAAkB;IAStC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAyCjC;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;IACG,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA8BtF;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAiCrD;;OAEG;IACG,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAgC9F;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAyB9G;;OAEG;IACG,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuCxE;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC;IAmG1C;;OAEG;IACG,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAKrD;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU3E;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAKtC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAK7B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAKhC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7B"}
|