@mcp-b/transports 0.1.8 → 1.0.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 CHANGED
@@ -18,6 +18,10 @@ Use `TabServerTransport` and `TabClientTransport` when your MCP server and clien
18
18
 
19
19
  Use `ExtensionClientTransport` and `ExtensionServerTransport` for communication between browser extension components (sidebar, popup, background) and web pages with MCP servers.
20
20
 
21
+ ### Extension External Transports (Cross-Extension Communication)
22
+
23
+ Use `ExtensionExternalClientTransport` and `ExtensionExternalServerTransport` for communication between different browser extensions, enabling one extension to access MCP servers hosted by another extension.
24
+
21
25
  ## Tab Transport Examples
22
26
 
23
27
  ### Server Setup (Web Page)
@@ -25,39 +29,45 @@ Use `ExtensionClientTransport` and `ExtensionServerTransport` for communication
25
29
  Create an MCP server in your web page and expose it via `TabServerTransport`:
26
30
 
27
31
  ```typescript
28
- import { TabServerTransport } from '@mcp-b/transports';
29
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
30
- import { z } from 'zod';
32
+ import { TabServerTransport } from "@mcp-b/transports";
33
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
34
+ import { z } from "zod";
31
35
 
32
36
  // Create MCP server with tools
33
- const server = new McpServer({
34
- name: 'TODO-APP',
35
- version: '1.0.0',
36
- }, {
37
- instructions: 'You are a helpful assistant that can create, update, and delete todos.'
38
- });
37
+ const server = new McpServer(
38
+ {
39
+ name: "TODO-APP",
40
+ version: "1.0.0",
41
+ },
42
+ {
43
+ instructions:
44
+ "You are a helpful assistant that can create, update, and delete todos.",
45
+ }
46
+ );
39
47
 
40
48
  // Register a tool
41
49
  server.tool(
42
- 'createTodo',
43
- 'Creates a new todo item for the current user',
50
+ "createTodo",
51
+ "Creates a new todo item for the current user",
44
52
  {
45
- todoText: z.string().describe('The content of the todo item.')
53
+ todoText: z.string().describe("The content of the todo item."),
46
54
  },
47
55
  async (args) => {
48
56
  // Implementation here
49
57
  return {
50
- content: [{
51
- type: 'text',
52
- text: `Todo created: "${args.todoText}"`
53
- }]
58
+ content: [
59
+ {
60
+ type: "text",
61
+ text: `Todo created: "${args.todoText}"`,
62
+ },
63
+ ],
54
64
  };
55
65
  }
56
66
  );
57
67
 
58
68
  // Connect to transport with CORS configuration
59
69
  const transport = new TabServerTransport({
60
- allowedOrigins: ['*'] // Configure based on your security needs
70
+ allowedOrigins: ["*"], // Configure based on your security needs
61
71
  });
62
72
  await server.connect(transport);
63
73
  ```
@@ -67,12 +77,12 @@ await server.connect(transport);
67
77
  Connect to the server from within the same page or from an extension content script:
68
78
 
69
79
  ```typescript
70
- import { TabClientTransport } from '@mcp-b/transports';
71
- import { Client } from '@modelcontextprotocol/sdk/client/index.js';
80
+ import { TabClientTransport } from "@mcp-b/transports";
81
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
72
82
 
73
83
  // Create transport with target origin
74
84
  const transport = new TabClientTransport({
75
- targetOrigin: window.location.origin
85
+ targetOrigin: window.location.origin,
76
86
  });
77
87
 
78
88
  // Discover available servers
@@ -83,16 +93,16 @@ if (availableServers.length > 0) {
83
93
 
84
94
  // Create and connect client
85
95
  const client = new Client({
86
- name: 'ExtensionProxyClient',
87
- version: '1.0.0'
96
+ name: "ExtensionProxyClient",
97
+ version: "1.0.0",
88
98
  });
89
99
 
90
100
  await client.connect(transport);
91
101
 
92
102
  // Use the client
93
103
  const result = await client.callTool({
94
- name: 'createTodo',
95
- arguments: { todoText: 'Buy groceries' }
104
+ name: "createTodo",
105
+ arguments: { todoText: "Buy groceries" },
96
106
  });
97
107
  ```
98
108
 
@@ -103,31 +113,31 @@ const result = await client.callTool({
103
113
  The extension background script acts as a hub, aggregating tools from multiple tabs:
104
114
 
105
115
  ```typescript
106
- import { ExtensionServerTransport } from '@mcp-b/transports';
107
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
116
+ import { ExtensionServerTransport } from "@mcp-b/transports";
117
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
108
118
 
109
119
  class McpHub {
110
120
  private server: McpServer;
111
-
121
+
112
122
  constructor() {
113
123
  this.server = new McpServer({
114
- name: 'Extension-Hub',
115
- version: '1.0.0'
124
+ name: "Extension-Hub",
125
+ version: "1.0.0",
116
126
  });
117
-
127
+
118
128
  this.setupConnections();
119
129
  }
120
-
130
+
121
131
  private setupConnections() {
122
132
  chrome.runtime.onConnect.addListener((port) => {
123
- if (port.name === 'mcp') {
133
+ if (port.name === "mcp") {
124
134
  this.handleUiConnection(port);
125
- } else if (port.name === 'mcp-content-script-proxy') {
135
+ } else if (port.name === "mcp-content-script-proxy") {
126
136
  this.handleContentScriptConnection(port);
127
137
  }
128
138
  });
129
139
  }
130
-
140
+
131
141
  private async handleUiConnection(port: chrome.runtime.Port) {
132
142
  const transport = new ExtensionServerTransport(port);
133
143
  await this.server.connect(transport);
@@ -140,22 +150,22 @@ class McpHub {
140
150
  Content scripts act as a bridge between the page's MCP server and the extension:
141
151
 
142
152
  ```typescript
143
- import { TabClientTransport } from '@mcp-b/transports';
144
- import { Client } from '@modelcontextprotocol/sdk/client/index.js';
153
+ import { TabClientTransport } from "@mcp-b/transports";
154
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
145
155
 
146
156
  // Connect to the page's MCP server
147
157
  const transport = new TabClientTransport({
148
- targetOrigin: window.location.origin
158
+ targetOrigin: window.location.origin,
149
159
  });
150
160
 
151
161
  const client = new Client({
152
- name: 'ExtensionProxyClient',
153
- version: '1.0.0'
162
+ name: "ExtensionProxyClient",
163
+ version: "1.0.0",
154
164
  });
155
165
 
156
166
  // Connect to extension background
157
167
  const backgroundPort = chrome.runtime.connect({
158
- name: 'mcp-content-script-proxy'
168
+ name: "mcp-content-script-proxy",
159
169
  });
160
170
 
161
171
  // Discover and connect to page server
@@ -164,22 +174,22 @@ const pageTools = await client.listTools();
164
174
 
165
175
  // Register tools with background hub
166
176
  backgroundPort.postMessage({
167
- type: 'register-tools',
168
- tools: pageTools.tools
177
+ type: "register-tools",
178
+ tools: pageTools.tools,
169
179
  });
170
180
 
171
181
  // Handle tool execution requests from background
172
182
  backgroundPort.onMessage.addListener(async (message) => {
173
- if (message.type === 'execute-tool') {
183
+ if (message.type === "execute-tool") {
174
184
  const result = await client.callTool({
175
185
  name: message.toolName,
176
- arguments: message.args || {}
186
+ arguments: message.args || {},
177
187
  });
178
-
188
+
179
189
  backgroundPort.postMessage({
180
- type: 'tool-result',
190
+ type: "tool-result",
181
191
  requestId: message.requestId,
182
- data: { success: true, payload: result }
192
+ data: { success: true, payload: result },
183
193
  });
184
194
  }
185
195
  });
@@ -190,18 +200,18 @@ backgroundPort.onMessage.addListener(async (message) => {
190
200
  Connect from the extension's sidebar or popup to use tools from all connected pages:
191
201
 
192
202
  ```typescript
193
- import { ExtensionClientTransport } from '@mcp-b/transports';
194
- import { Client } from '@modelcontextprotocol/sdk/client/index.js';
203
+ import { ExtensionClientTransport } from "@mcp-b/transports";
204
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
195
205
 
196
206
  // Create transport - connects to the extension's background script
197
207
  const transport = new ExtensionClientTransport({
198
- portName: 'mcp'
208
+ portName: "mcp",
199
209
  });
200
210
 
201
211
  // Create MCP client
202
212
  const client = new Client({
203
- name: 'Extension Sidepanel',
204
- version: '1.0.0'
213
+ name: "Extension Sidepanel",
214
+ version: "1.0.0",
205
215
  });
206
216
 
207
217
  // Connect and use
@@ -212,28 +222,129 @@ const tools = await client.listTools();
212
222
 
213
223
  // Call a tool from a specific website
214
224
  const result = await client.callTool({
215
- name: 'website_tool_example_com_createTodo',
216
- arguments: { todoText: 'Review PR' }
225
+ name: "website_tool_example_com_createTodo",
226
+ arguments: { todoText: "Review PR" },
217
227
  });
218
228
  ```
219
229
 
230
+ ## Extension External Transport Examples
231
+
232
+ ### Server Extension Setup (Extension 1)
233
+
234
+ Create an MCP server in Extension 1 that can be accessed by other extensions:
235
+
236
+ ```typescript
237
+ import { ExtensionExternalServerTransport } from "@mcp-b/transports";
238
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
239
+ import { z } from "zod";
240
+
241
+ // Create MCP server with tools
242
+ const server = new McpServer(
243
+ {
244
+ name: "MyExtensionAPI",
245
+ version: "1.0.0",
246
+ },
247
+ {
248
+ instructions: "Extension API for cross-extension communication",
249
+ }
250
+ );
251
+
252
+ // Register tools
253
+ server.tool("getBookmarks", "Retrieves user bookmarks", {}, async () => {
254
+ const bookmarks = await chrome.bookmarks.getTree();
255
+ return {
256
+ content: [
257
+ {
258
+ type: "text",
259
+ text: JSON.stringify(bookmarks, null, 2),
260
+ },
261
+ ],
262
+ };
263
+ });
264
+
265
+ // Set up external connection listener in background script
266
+ chrome.runtime.onConnectExternal.addListener(async (port) => {
267
+ if (port.name === "mcp") {
268
+ // Optional: Add connection validation here
269
+ if (port.sender?.id !== "allowed-extension-id") {
270
+ port.disconnect();
271
+ return;
272
+ }
273
+
274
+ const transport = new ExtensionServerTransport(port);
275
+ await server.connect(transport);
276
+ }
277
+ });
278
+ ```
279
+
280
+ ### Client Extension Setup (Extension 2)
281
+
282
+ Connect from Extension 2 to use Extension 1's MCP server:
283
+
284
+ ```typescript
285
+ import { ExtensionExternalClientTransport } from "@mcp-b/transports";
286
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
287
+
288
+ // Create transport targeting Extension 1
289
+ const transport = new ExtensionClientTransport({
290
+ extensionId: "server-extension-id",
291
+ portName: "mcp",
292
+ });
293
+
294
+ // Create MCP client
295
+ const client = new Client({
296
+ name: "ClientExtension",
297
+ version: "1.0.0",
298
+ });
299
+
300
+ // Connect and use
301
+ await client.connect(transport);
302
+
303
+ // List available tools from Extension 1
304
+ const tools = await client.listTools();
305
+ console.log("Available tools:", tools.tools);
306
+
307
+ // Call a tool from Extension 1
308
+ const result = await client.callTool({
309
+ name: "getBookmarks",
310
+ arguments: {},
311
+ });
312
+ ```
313
+
314
+ ### Extension External Transport Features
315
+
316
+ - **Cross-Extension Access**: Extensions can expose MCP servers to other extensions
317
+ - **Secure Communication**: Uses Chrome's `runtime.onConnectExternal` API
318
+ - **Connection Validation**: Server extension can validate incoming connections
319
+ - **Single Client**: Each server transport handles one client connection at a time
320
+
220
321
  ## Architecture Overview
221
322
 
222
323
  ### Tab Transport Flow
324
+
223
325
  1. Server creates `TabServerTransport` and listens for messages via `window.postMessage`
224
326
  2. Client creates `TabClientTransport` to connect to the server using the same channel
225
327
  3. Communication happens securely with origin validation and message direction tracking
226
328
 
227
329
  ### Extension Transport Flow
330
+
228
331
  1. Web pages run MCP servers with `TabServerTransport`
229
332
  2. Content scripts discover these servers and relay to background script
230
333
  3. Background script aggregates tools from all tabs using `ExtensionServerTransport`
231
334
  4. Extension UI connects via `ExtensionClientTransport` to access all tools
232
335
 
336
+ ### Extension External Transport Flow
337
+
338
+ 1. Extension 1 creates `ExtensionExternalServerTransport` and listens on `chrome.runtime.onConnectExternal`
339
+ 2. Extension 2 creates `ExtensionExternalClientTransport` targeting Extension 1's ID
340
+ 3. Communication happens through Chrome's secure cross-extension messaging
341
+ 4. Server extension can validate connections and control access
342
+
233
343
  ## Key Features
234
344
 
235
345
  - **Automatic Server Discovery**: Tab clients can discover available servers
236
346
  - **Cross-Origin Support**: Configure CORS for tab transports
347
+ - **Cross-Extension Communication**: Extensions can expose APIs to other extensions
237
348
  - **Tool Namespacing**: Extension hub prefixes tools to avoid conflicts
238
349
  - **Connection Management**: Automatic cleanup when tabs close
239
350
  - **Type Safety**: Full TypeScript support with proper typing
@@ -242,5 +353,7 @@ const result = await client.callTool({
242
353
 
243
354
  - Tab transports respect origin restrictions
244
355
  - Extension transports use Chrome's secure message passing
356
+ - External extension transports require `externally_connectable` manifest configuration
357
+ - Server extensions should validate incoming connections from other extensions
245
358
  - Configure `allowedOrigins` appropriately for your use case
246
- - Tools execute in their original context (web page)
359
+ - Tools execute in their original context (web page or extension)
package/dist/.tsbuildinfo CHANGED
@@ -1 +1 @@
1
- {"fileNames":["../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/types/v3/helpers/typealiases.d.ts","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/types/v3/helpers/util.d.ts","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/types/v3/zoderror.d.ts","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/types/v3/locales/en.d.ts","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/types/v3/errors.d.ts","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/types/v3/helpers/parseutil.d.ts","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/types/v3/helpers/enumutil.d.ts","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/types/v3/helpers/errorutil.d.ts","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/types/v3/helpers/partialutil.d.ts","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/types/v3/standard-schema.d.ts","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/types/v3/types.d.ts","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/types/v3/external.d.ts","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/types/v3/index.d.ts","../../../node_modules/.pnpm/zod@3.25.64/node_modules/zod/dist/types/index.d.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.13.2/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/types.d.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.13.2/node_modules/@modelcontextprotocol/sdk/dist/esm/types.d.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.13.2/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.d.ts","../src/browserwebsocketclienttransport.ts","../src/extensionclienttransport.ts","../src/extensionservertransport.ts","../src/tabclienttransport.ts","../src/tabservertransport.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/dom-events.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/index.d.ts","../../../node_modules/.pnpm/@types+ws@8.18.1/node_modules/@types/ws/index.d.mts","../src/websocketclienttransport.ts","../src/websocketservertransport.ts","../src/browser-types.ts","../src/index.ts","../../../node_modules/.pnpm/domelementtype@2.3.0/node_modules/domelementtype/lib/esm/index.d.ts","../../../node_modules/.pnpm/domhandler@5.0.3/node_modules/domhandler/lib/esm/node.d.ts","../../../node_modules/.pnpm/domhandler@5.0.3/node_modules/domhandler/lib/esm/index.d.ts","../../../node_modules/.pnpm/htmlparser2@10.0.0/node_modules/htmlparser2/dist/esm/tokenizer.d.ts","../../../node_modules/.pnpm/htmlparser2@10.0.0/node_modules/htmlparser2/dist/esm/parser.d.ts","../../../node_modules/.pnpm/dom-serializer@2.0.0/node_modules/dom-serializer/lib/esm/index.d.ts","../../../node_modules/.pnpm/domutils@3.2.2/node_modules/domutils/lib/esm/stringify.d.ts","../../../node_modules/.pnpm/domutils@3.2.2/node_modules/domutils/lib/esm/traversal.d.ts","../../../node_modules/.pnpm/domutils@3.2.2/node_modules/domutils/lib/esm/manipulation.d.ts","../../../node_modules/.pnpm/domutils@3.2.2/node_modules/domutils/lib/esm/querying.d.ts","../../../node_modules/.pnpm/domutils@3.2.2/node_modules/domutils/lib/esm/legacy.d.ts","../../../node_modules/.pnpm/domutils@3.2.2/node_modules/domutils/lib/esm/helpers.d.ts","../../../node_modules/.pnpm/domutils@3.2.2/node_modules/domutils/lib/esm/feeds.d.ts","../../../node_modules/.pnpm/domutils@3.2.2/node_modules/domutils/lib/esm/index.d.ts","../../../node_modules/.pnpm/htmlparser2@10.0.0/node_modules/htmlparser2/dist/esm/index.d.ts","../../../node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.d.ts","../../../node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.d.ts","../../../node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.d.ts","../../../node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/preprocessor.d.ts","../../../node_modules/.pnpm/entities@6.0.1/node_modules/entities/dist/esm/generated/decode-data-html.d.ts","../../../node_modules/.pnpm/entities@6.0.1/node_modules/entities/dist/esm/generated/decode-data-xml.d.ts","../../../node_modules/.pnpm/entities@6.0.1/node_modules/entities/dist/esm/decode-codepoint.d.ts","../../../node_modules/.pnpm/entities@6.0.1/node_modules/entities/dist/esm/decode.d.ts","../../../node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.d.ts","../../../node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tree-adapters/interface.d.ts","../../../node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.d.ts","../../../node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.d.ts","../../../node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.d.ts","../../../node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tree-adapters/default.d.ts","../../../node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.d.ts","../../../node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.d.ts","../../../node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/index.d.ts","../../../node_modules/.pnpm/parse5-htmlparser2-tree-adapter@7.1.0/node_modules/parse5-htmlparser2-tree-adapter/dist/index.d.ts","../../../node_modules/.pnpm/css-what@6.1.0/node_modules/css-what/lib/es/types.d.ts","../../../node_modules/.pnpm/css-what@6.1.0/node_modules/css-what/lib/es/parse.d.ts","../../../node_modules/.pnpm/css-what@6.1.0/node_modules/css-what/lib/es/stringify.d.ts","../../../node_modules/.pnpm/css-what@6.1.0/node_modules/css-what/lib/es/index.d.ts","../../../node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/types.d.ts","../../../node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/pseudo-selectors/filters.d.ts","../../../node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/pseudo-selectors/pseudos.d.ts","../../../node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/pseudo-selectors/aliases.d.ts","../../../node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/pseudo-selectors/index.d.ts","../../../node_modules/.pnpm/css-select@5.1.0/node_modules/css-select/lib/esm/index.d.ts","../../../node_modules/.pnpm/cheerio-select@2.1.0/node_modules/cheerio-select/lib/esm/index.d.ts","../../../node_modules/.pnpm/cheerio@1.1.0/node_modules/cheerio/dist/esm/options.d.ts","../../../node_modules/.pnpm/cheerio@1.1.0/node_modules/cheerio/dist/esm/api/attributes.d.ts","../../../node_modules/.pnpm/cheerio@1.1.0/node_modules/cheerio/dist/esm/api/traversing.d.ts","../../../node_modules/.pnpm/cheerio@1.1.0/node_modules/cheerio/dist/esm/api/manipulation.d.ts","../../../node_modules/.pnpm/cheerio@1.1.0/node_modules/cheerio/dist/esm/api/css.d.ts","../../../node_modules/.pnpm/cheerio@1.1.0/node_modules/cheerio/dist/esm/api/forms.d.ts","../../../node_modules/.pnpm/cheerio@1.1.0/node_modules/cheerio/dist/esm/api/extract.d.ts","../../../node_modules/.pnpm/cheerio@1.1.0/node_modules/cheerio/dist/esm/cheerio.d.ts","../../../node_modules/.pnpm/cheerio@1.1.0/node_modules/cheerio/dist/esm/types.d.ts","../../../node_modules/.pnpm/cheerio@1.1.0/node_modules/cheerio/dist/esm/static.d.ts","../../../node_modules/.pnpm/cheerio@1.1.0/node_modules/cheerio/dist/esm/load.d.ts","../../../node_modules/.pnpm/cheerio@1.1.0/node_modules/cheerio/dist/esm/load-parse.d.ts","../../../node_modules/.pnpm/cheerio@1.1.0/node_modules/cheerio/dist/esm/slim.d.ts","../../../node_modules/.pnpm/encoding-sniffer@0.2.1/node_modules/encoding-sniffer/dist/esm/sniffer.d.ts","../../../node_modules/.pnpm/encoding-sniffer@0.2.1/node_modules/encoding-sniffer/dist/esm/index.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/utility.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/header.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/readable.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/fetch.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/formdata.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/connector.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/client-stats.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/client.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/errors.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/dispatcher.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/global-origin.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/pool-stats.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/pool.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/handlers.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/h2c-client.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/agent.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/mock-call-history.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/mock-agent.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/mock-client.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/mock-pool.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/mock-errors.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/retry-handler.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/retry-agent.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/api.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/cache-interceptor.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/interceptors.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/util.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/cookies.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/patch.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/websocket.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/eventsource.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/content-type.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/cache.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/types/index.d.ts","../../../node_modules/.pnpm/undici@7.10.0/node_modules/undici/index.d.ts","../../../node_modules/.pnpm/cheerio@1.1.0/node_modules/cheerio/dist/esm/index.d.ts","../../../node_modules/.pnpm/@types+har-format@1.2.16/node_modules/@types/har-format/index.d.ts","../../../node_modules/.pnpm/@types+chrome@0.0.326/node_modules/@types/chrome/har-format/index.d.ts","../../../node_modules/.pnpm/@types+chrome@0.0.326/node_modules/@types/chrome/chrome-cast/index.d.ts","../../../node_modules/.pnpm/@types+filewriter@0.0.33/node_modules/@types/filewriter/index.d.ts","../../../node_modules/.pnpm/@types+filesystem@0.0.36/node_modules/@types/filesystem/index.d.ts","../../../node_modules/.pnpm/@types+chrome@0.0.326/node_modules/@types/chrome/index.d.ts","../../../node_modules/.pnpm/@types+ws@8.18.1/node_modules/@types/ws/index.d.ts"],"fileIdsList":[[87,130],[75,87,130],[73,74,87,130],[87,130,287],[87,130,288,289,291],[87,130,290],[87,127,130],[87,129,130],[130],[87,130,135,165],[87,130,131,136,142,143,150,162,173],[87,130,131,132,142,150],[82,83,84,87,130],[87,130,133,174],[87,130,134,135,143,151],[87,130,135,162,170],[87,130,136,138,142,150],[87,129,130,137],[87,130,138,139],[87,130,140,142],[87,129,130,142],[87,130,142,143,144,162,173],[87,130,142,143,144,157,162,165],[87,125,130],[87,125,130,138,142,145,150,162,173],[87,130,142,143,145,146,150,162,170,173],[87,130,145,147,162,170,173],[85,86,87,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179],[87,130,142,148],[87,130,149,173],[87,130,138,142,150,162],[87,130,151],[87,130,152],[87,129,130,153],[87,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179],[87,130,155],[87,130,156],[87,130,142,157,158],[87,130,157,159,174,176],[87,130,142,162,163,165],[87,130,164,165],[87,130,162,163],[87,130,165],[87,130,166],[87,127,130,162],[87,130,142,168,169],[87,130,168,169],[87,130,135,150,162,170],[87,130,171],[87,130,150,172],[87,130,145,156,173],[87,130,135,174],[87,130,162,175],[87,130,149,176],[87,130,177],[87,130,142,144,153,162,165,173,176,178],[87,130,162,179],[87,130,142,145,147,150,162,170,173,179,180],[87,130,188,228],[87,130,188,237],[87,130,188,231,237],[87,130,188,237,238],[87,130,188,230,231,232,233,234,235,236,238],[87,130,162,230,238,239,240,241,242,244,285],[87,130,188,230,240],[87,130,188,230,237,238,239],[87,130,188,191,200,217,218,229],[87,130,188,230,237,238,239,240],[87,130,188,230,236,237,238,240],[87,130,222,223,227],[87,130,223],[87,130,222,223,224,225,226],[87,130,222,223],[87,130,222],[87,130,219,220,221],[87,130,219],[87,130,188],[87,130,187],[87,130,186],[87,130,188,192,193,194,195,196,197,198],[87,130,186,188],[87,130,188,191],[87,130,162,243],[87,130,205,206,207],[87,130,186,188,189,190,199],[87,130,189],[87,130,188,217],[87,130,202],[87,130,201,202],[87,130,201],[87,130,201,202,203,209,210,213,214,215,216],[87,130,202,210],[87,130,201,202,203,209,210,211,212],[87,130,201,210],[87,130,210,214],[87,130,202,203,204,208],[87,130,203],[87,130,201,202,210],[87,97,101,130,173],[87,97,130,162,173],[87,92,130],[87,94,97,130,170,173],[87,130,150,170],[87,130,180],[87,92,130,180],[87,94,97,130,150,173],[87,89,90,93,96,130,142,162,173],[87,97,104,130],[87,89,95,130],[87,97,118,119,130],[87,93,97,130,165,173,180],[87,118,130,180],[87,91,92,130,180],[87,97,130],[87,91,92,93,94,95,96,97,98,99,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,119,120,121,122,123,124,130],[87,97,112,130],[87,97,104,105,130],[87,95,97,105,106,130],[87,96,130],[87,89,92,97,130],[87,97,101,105,106,130],[87,101,130],[87,95,97,100,130,173],[87,89,94,97,104,130],[87,130,162],[87,92,97,118,130,178,180],[87,130,284],[87,130,173,251,254,257,258],[87,130,162,173,254],[87,130,173,254,258],[87,130,248],[87,130,252],[87,130,173,250,251,254],[87,130,180,248],[87,130,150,173,250,254],[87,130,142,162,173,245,246,247,249,253],[87,130,254,262],[87,130,246,252],[87,130,254,278,279],[87,130,165,173,180,246,249,254],[87,130,254],[87,130,173,250,254],[87,130,245],[87,130,248,249,250,252,253,254,255,256,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,279,280,281,282,283],[87,130,138,254,271,274],[87,130,254,262,263,264],[87,130,252,254,263,265],[87,130,253],[87,130,246,248,254],[87,130,254,258,263,265],[87,130,258],[87,130,173,252,254,257],[87,130,246,250,254,262],[87,130,254,271],[87,130,165,178,180,248,254,278],[72,87,130],[62,63,87,130],[60,61,62,64,65,70,87,130],[61,62,87,130],[70,87,130],[71,87,130],[62,87,130],[60,61,62,65,66,67,68,69,87,130],[60,61,72,87,130],[75,76,87,130],[77,78,79,80,81,87,130,182,183,184],[75,76,87,130,181]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"07f073f19d67f74d732b1adea08e1dc66b1b58d77cb5b43931dee3d798a2fd53","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"54f6ec6ea75acea6eb23635617252d249145edbc7bcd9d53f2d70280d2aef953","impliedFormat":1},{"version":"c25ce98cca43a3bfa885862044be0d59557be4ecd06989b2001a83dcf69620fd","impliedFormat":1},{"version":"8e71e53b02c152a38af6aec45e288cc65bede077b92b9b43b3cb54a37978bb33","impliedFormat":1},{"version":"754a9396b14ca3a4241591afb4edc644b293ccc8a3397f49be4dfd520c08acb3","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"de2316e90fc6d379d83002f04ad9698bc1e5285b4d52779778f454dd12ce9f44","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"2da997a01a6aa5c5c09de5d28f0f4407b597c5e1aecfd32f1815809c532650a2","impliedFormat":1},{"version":"5d26d2e47e2352def36f89a3e8bf8581da22b7f857e07ef3114cd52cf4813445","impliedFormat":1},{"version":"3db2efd285e7328d8014b54a7fce3f4861ebcdc655df40517092ed0050983617","impliedFormat":1},{"version":"d5d39a24c759df40480a4bfc0daffd364489702fdbcbdfc1711cde34f8739995","impliedFormat":1},{"version":"4749a5d10b6e3b0bd6c8d90f9ba68a91a97aa0c2c9a340dd83306b2f349d6d34","impliedFormat":99},{"version":"711586151fb1db3fe834f586d83f768cc10db9383a215da241045769cd873265","impliedFormat":99},{"version":"835809bc3ef637c0d80bb1a461bb0fdc55661337f5c27b91c0d32c039076a67f","impliedFormat":99},{"version":"392e6d2c405b18624952fcfbeeb7b88745989a6934c60761d9d554015e6819cd","signature":"00a25f391ab38cfffb6ebaeb0e0959e654deab6b0b8020685e468ca6b5c85a16"},{"version":"c857952cff0ec30136ab7445f6c13f051073a2780c93fcec0ad354d3c2fd2a76","signature":"ff5dcf4372c1330044018126270451c0d9a4c63f83c739b9334991468061ae4a"},{"version":"e3673b0d742074da84f4f08b6599338ab7ccfa3bd33bd0b2bac16a963d243b05","signature":"cf35357b11c3ac5385c3fa30335fa725786740b313893fb8df0e6538d8ba9664"},{"version":"4db276a3cdd1fdc6a188413eb1b8758795091e3bde8a46c6ae54319e094c16f0","signature":"21ee733142093f600a17abcecc4424cc54ce71e36c4eabedc505884c29c36cc8"},{"version":"ef1315d0f37611ccbfbbd67023a5582de409fb0eae9ecf5439a73e0a8466303a","signature":"7471d777fed535cf522ba905657d57e733f54f2a5073e6fd208365b79c6b1003"},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"a12d953aa755b14ac1d28ecdc1e184f3285b01d6d1e58abc11bf1826bc9d80e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"a38efe83ff77c34e0f418a806a01ca3910c02ee7d64212a59d59bca6c2c38fa1","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"3fe4022ba1e738034e38ad9afacbf0f1f16b458ed516326f5bf9e4a31e9be1dc","impliedFormat":1},{"version":"a957197054b074bcdf5555d26286e8461680c7c878040d0f4e2d5509a7524944","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"e9b97d69510658d2f4199b7d384326b7c4053b9e6645f5c19e1c2a54ede427fc","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"f478f6f5902dc144c0d6d7bdc919c5177cac4d17a8ca8653c2daf6d7dc94317f","affectsGlobalScope":true,"impliedFormat":1},{"version":"19d5f8d3930e9f99aa2c36258bf95abbe5adf7e889e6181872d1cdba7c9a7dd5","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"71450bbc2d82821d24ca05699a533e72758964e9852062c53b30f31c36978ab8","affectsGlobalScope":true,"impliedFormat":1},{"version":"88bc59b32d0d5b4e5d9632ac38edea23454057e643684c3c0b94511296f2998c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a0a1dda070290b92da5a50113b73ecc4dd6bcbffad66e3c86503d483eafbadcf","impliedFormat":1},{"version":"59dcad36c4549175a25998f6a8b33c1df8e18df9c12ebad1dfb25af13fd4b1ce","impliedFormat":1},{"version":"206a70e72af3e24688397b81304358526ce70d020e4c2606c4acfd1fa1e81fb2","impliedFormat":1},{"version":"017caf5d2a8ef581cf94f678af6ce7415e06956317946315560f1487b9a56167","impliedFormat":1},{"version":"528b62e4272e3ddfb50e8eed9e359dedea0a4d171c3eb8f337f4892aac37b24b","impliedFormat":1},{"version":"d71535813e39c23baa113bc4a29a0e187b87d1105ccc8c5a6ebaca38d9a9bff2","impliedFormat":1},{"version":"4c3148420835de895b9218b2cea321a4607008ba5cefa57b2a57e1c1ef85d22f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f72bc8fe16da67e4e3268599295797b202b95e54bd215a03f97e925dd1502a36","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"915e18c559321c0afaa8d34674d3eb77e1ded12c3e85bf2a9891ec48b07a1ca5","affectsGlobalScope":true,"impliedFormat":1},{"version":"636302a00dfd1f9fe6e8e91e4e9350c6518dcc8d51a474e4fc3a9ba07135100b","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"e1ce1d622f1e561f6cdf246372ead3bbc07ce0342024d0e9c7caf3136f712698","impliedFormat":1},{"version":"199c8269497136f3a0f4da1d1d90ab033f899f070e0dd801946f2a241c8abba2","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"27e4532aaaa1665d0dd19023321e4dc12a35a741d6b8e1ca3517fcc2544e0efe","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"6266d94fb9165d42716e45f3a537ca9f59c07b1dfa8394a659acf139134807db","affectsGlobalScope":true,"impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"98ffdf93dfdd206516971d28e3e473f417a5cfd41172e46b4ce45008f640588e","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"a7692a54334fd08960cd0c610ff509c2caa93998e0dcefa54021489bcc67c22d","affectsGlobalScope":true,"impliedFormat":1},{"version":"74736930d108365d7bbe740c7154706ccfb1b2a3855a897963ab3e5c07ecbf19","impliedFormat":1},{"version":"3a051941721a7f905544732b0eb819c8d88333a96576b13af08b82c4f17581e4","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"1e25f8d0a8573cafd5b5a16af22d26ab872068a693b9dbccd3f72846ab373655","affectsGlobalScope":true,"impliedFormat":1},{"version":"3797dd6f4ea3dc15f356f8cdd3128bfa18122213b38a80d6c1f05d8e13cbdad8","impliedFormat":1},{"version":"ad90122e1cb599b3bc06a11710eb5489101be678f2920f2322b0ac3e195af78d","impliedFormat":1},{"version":"316f1486e15cbf7896425f0a16dfe12d447dd57cfb3244b8b119c77df870858f","impliedFormat":99},{"version":"dbde42ccb4f43c83fa599c786178a43034a3a209fa9742ea58421c3cd56a9e17","signature":"3b11ef5c155854118ddea86989898b115c10fa855264dae68e5257b5433ed7a1"},{"version":"5cbbb04ac4a17f9c6ad533397ae5e769476b35f2241f468a1e336cc53b5e1dc5","signature":"034897ba28b2f59198b3bf0932fef553aaf3e54a3c7869e466fa8a3e37fd6ef0"},{"version":"aebb775370916c8afc13c7ea8596dd41d004b4a959ff6210ddd8cb3df24fa543","signature":"67e963223c23b123a72306ad2f9109580dc0094cc6270ad60468378dccd176b6"},"02145b8b587e0e7a6c9b1689112af48cd2388ec1d5e80ca5cf87aa5f4013f20a",{"version":"2556e7e8bb7e6f0bb3fe25f3da990d1812cb91f8c9b389354b6a0c8a6d687590","impliedFormat":99},{"version":"ad1c91ca536e0962dcbfcdff40073e3dd18da839e0baad3fe990cf0d10c93065","impliedFormat":99},{"version":"19cf605ba2a4e8fba017edebdddbbc45aea897ddc58b4aae4c55f382b570ff53","impliedFormat":99},{"version":"884aab8c07224434c034b49e88de0511f21536aa83ee88f1285160ba6d3fb77a","impliedFormat":99},{"version":"130b39b18c99e5678635f383ef57efaa507196838ddabb47cb104064e2ce4cd3","impliedFormat":99},{"version":"7618d2cb769e2093acd4623d645b683ab9fea78c262b3aa354aba9f5afdcaaee","impliedFormat":99},{"version":"029f1ce606891c3f57f4c0c60b8a46c8ced53e719d27a7c9693817f2fe37690b","impliedFormat":99},{"version":"83596c963e276a9c5911412fba37ae7c1fe280f2d77329928828eed5a3bfa9a6","impliedFormat":99},{"version":"81acfd3a01767770e559bc57d32684756989475be6ea32e2fe6255472c3ea116","impliedFormat":99},{"version":"88d0c3eae81868b4749ba5b88f9b6d564ee748321ce19a2f4269a4e9dd46020a","impliedFormat":99},{"version":"8266b39a828bfb2695cabfa403e7c1226d7d94599f21bea9f760e35f4ca7a576","impliedFormat":99},{"version":"c1c1e740195c882a776cf084acbaf963907785ee39e723c6375fec9a59bf2387","impliedFormat":99},{"version":"137f96b78e477e08876f6372072c3b6f1767672bf182013f84f8ae53d987ff86","impliedFormat":99},{"version":"29896c61d09880ff39f8a86873bf72ce4deb910158d3a496122781e29904c615","impliedFormat":99},{"version":"81ce540acef0d6972b0b163331583181be3603300f618dcd6a6a3138954ff30c","impliedFormat":99},{"version":"19990350fca066265b2c190c9b6cde1229f35002ea2d4df8c9e397e9942f6c89","impliedFormat":99},{"version":"8fb8fdda477cd7382477ffda92c2bb7d9f7ef583b1aa531eb6b2dc2f0a206c10","impliedFormat":99},{"version":"66995b0c991b5c5d42eff1d950733f85482c7419f7296ab8952e03718169e379","impliedFormat":99},{"version":"9863f888da357e35e013ca3465b794a490a198226bd8232c2f81fb44e16ff323","impliedFormat":99},{"version":"84bc2d80326a83ee4a6e7cba2fd480b86502660770c0e24da96535af597c9f1e","impliedFormat":99},{"version":"ea27768379b866ee3f5da2419650acdb01125479f7af73580a4bceb25b79e372","impliedFormat":99},{"version":"598931eeb4362542cae5845f95c5f0e45ac668925a40ce201e244d7fe808e965","impliedFormat":99},{"version":"da9ef88cde9f715756da642ad80c4cd87a987f465d325462d6bc2a0b11d202c8","impliedFormat":99},{"version":"b4c6184d78303b0816e779a48bef779b15aea4a66028eb819aac0abee8407dea","impliedFormat":99},{"version":"db085d2171d48938a99e851dafe0e486dce9859e5dfa73c21de5ed3d4d6fb0c5","impliedFormat":99},{"version":"62a3ad1ddd1f5974b3bf105680b3e09420f2230711d6520a521fab2be1a32838","impliedFormat":99},{"version":"a77be6fc44c876bc10c897107f84eaba10790913ebdcad40fcda7e47469b2160","impliedFormat":99},{"version":"06cf55b6da5cef54eaaf51cdc3d4e5ebf16adfdd9ebd20cec7fe719be9ced017","impliedFormat":99},{"version":"91f5dbcdb25d145a56cffe957ec665256827892d779ef108eb2f3864faff523b","impliedFormat":99},{"version":"052ba354bab8fb943e0bc05a0769f7b81d7c3b3c6cd0f5cfa53c7b2da2a525c5","impliedFormat":99},{"version":"927955a3de5857e0a1c575ced5a4245e74e6821d720ed213141347dd1870197f","impliedFormat":99},{"version":"fec804d54cd97dd77e956232fc37dc13f53e160d4bbeeb5489e86eeaa91f7ebd","impliedFormat":99},{"version":"75ef949153a3e6ff419e39d0fa5eb6617e92de5019738ad3c43872023d9665f5","impliedFormat":99},{"version":"ed9ce8e6dd5b2d00ab95efc44e4ad9d0eba77362e01619cb21dedfdedbad51b8","impliedFormat":1},{"version":"5520611f997f2b8e62a6e191da45b07813ac2e758304690606604a64ac0ca976","impliedFormat":1},{"version":"00b469cba48c9d772a4555216d21ba41cdb5a732af797ccb57267344f4fc6c3d","impliedFormat":1},{"version":"2766bf77766c85c25ec31586823fefb48344e64556faad7e75a3363e517814f6","impliedFormat":1},{"version":"b7d1eaffd8003e8dc0ec275e58bd24c7b9a4dbae2a2d0d83cf248c88237262ce","impliedFormat":99},{"version":"7a8b08c0521c3a9e1db3c8b14f37e59d838fdc32389f1193b96630b435a8e64e","impliedFormat":99},{"version":"2e54848617fae9eb73654d9cf4295d99dab4b9c759934e5b82e2e57e6aaaef20","impliedFormat":99},{"version":"ae056b7c3f727d492166d4c1169d5905ddd194128a014b5d2d621248ed94b49c","impliedFormat":99},{"version":"edc5d99a04130f066f6e8d31c7c3f9ba4749496356470279408833b4faee3554","impliedFormat":99},{"version":"2f502ac2473a2bbf0d6217f9660e9d5bf40165a2f91067596323898c53dab87c","impliedFormat":99},{"version":"21f27a0c8bc8d9a4e2cf6d9c60140f8b071d0e1ffddb4b7dcf6bbf74d0e8d470","impliedFormat":99},{"version":"754108a1e136331ac67dc8ee6aa9c95cb3bea3ac8bbf48dda7b0dbabbc8f970f","impliedFormat":99},{"version":"9e9979adc151111d71ad049305be1b6df324a98d1d1edd84adb1756cc1911bfd","impliedFormat":99},{"version":"0f38bcf19f105cd31ded5d46491ca50a46462c838816c358d445f41ac7a68f5a","impliedFormat":99},{"version":"a65fc667cd78d7cad733fab96f4bff3183c0dcbc15b083dce0055cffc5c64f9f","impliedFormat":99},{"version":"c735e27dfa775155120c50f714f594639dd7b6ad1878097feb005a0b5c59b7c2","impliedFormat":99},{"version":"f3dd541f4d87bba38dabf43fd06b7616c6f86b11608d30e61086ab39f84fa8d8","impliedFormat":99},{"version":"5583f1c0912e96625a30c20b83cff3d175194b222e4eb22170d19e33f7d8729f","impliedFormat":99},{"version":"a515b08047d24de84d89ad80b2843e565e65ed4a4e7cfc9707656470d7c555f9","impliedFormat":99},{"version":"cf43b2783a58e42fca6e45f0d47465b2ab855b7e9bea5ccb68447297df8aade5","impliedFormat":99},{"version":"27a3f158d8e6f59f29e55c37d4ae3c39574ee99539c4f12bcf46d29929974a62","impliedFormat":99},{"version":"a2d23e2f22006483c89f42077bd6a9bf92db721ebb5e0859b06fdb5c8369586d","impliedFormat":99},{"version":"6a8aec6851c09e4524937485f6553ec7332118482f3ed33238cea7496ff42103","impliedFormat":99},{"version":"d67fd6ea8cf37131627c7a9ae1de96d19d41cb32e741a475f0f56942576a7b3b","impliedFormat":99},{"version":"9b2f424a2c5c592d738100d898df3f9ee018bdd23a279f10849c3686abbec158","impliedFormat":99},{"version":"2fef96aedd23d59b6093d12d9f97c95e3a4008fcc02e8c68304235a1770fc70a","impliedFormat":99},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"e525f9e67f5ddba7b5548430211cae2479070b70ef1fd93550c96c10529457bd","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"4bc0794175abedf989547e628949888c1085b1efcd93fc482bccd77ee27f8b7c","impliedFormat":1},{"version":"3c8e93af4d6ce21eb4c8d005ad6dc02e7b5e6781f429d52a35290210f495a674","impliedFormat":1},{"version":"2c9875466123715464539bfd69bcaccb8ff6f3e217809428e0d7bd6323416d01","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"6c8e442ba33b07892169a14f7757321e49ab0f1032d676d321a1fdab8a67d40c","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"1cd673d367293fc5cb31cd7bf03d598eb368e4f31f39cf2b908abbaf120ab85a","impliedFormat":1},{"version":"af13e99445f37022c730bfcafcdc1761e9382ce1ea02afb678e3130b01ce5676","impliedFormat":1},{"version":"3825bf209f1662dfd039010a27747b73d0ef379f79970b1d05601ec8e8a4249f","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"da52342062e70c77213e45107921100ba9f9b3a30dd019444cf349e5fb3470c4","impliedFormat":1},{"version":"e9ace91946385d29192766bf783b8460c7dbcbfc63284aa3c9cae6de5155c8bc","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"1e30c045732e7db8f7a82cf90b516ebe693d2f499ce2250a977ec0d12e44a529","impliedFormat":1},{"version":"84b736594d8760f43400202859cda55607663090a43445a078963031d47e25e7","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"78b29846349d4dfdd88bd6650cc5d2baaa67f2e89dc8a80c8e26ef7995386583","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"e38d4fdf79e1eadd92ed7844c331dbaa40f29f21541cfee4e1acff4db09cda33","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"7c10a32ae6f3962672e6869ee2c794e8055d8225ef35c91c0228e354b4e5d2d3","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"99f569b42ea7e7c5fe404b2848c0893f3e1a56e0547c1cd0f74d5dbb9a9de27e","impliedFormat":1},{"version":"b3fb72492a07a76f7bfa29ecadd029eea081df11512e4dfe6f930a5a9cb1fb75","impliedFormat":1},{"version":"99257d2cf17c6c6f36131f640129289062c66384dba9d21a991cacfdc346711e","impliedFormat":99},{"version":"5574d520dabc450de6be799f1791d86d71da4fb236f16e6ca21b953788bb5154","impliedFormat":1},{"version":"5f877dfc985d1fd3ac8bf4a75cd77b06c42ca608809b324c44b4151758de7189","affectsGlobalScope":true,"impliedFormat":1},{"version":"4f585cea32567574de0301ed79131a4c3d0bb36bbfea7f66e2f29b5dce1c4293","affectsGlobalScope":true,"impliedFormat":1},{"version":"14c2fd6220654a41c53836a62ba96d4b515ae1413b0ccb31c2445fb1ae1de5de","affectsGlobalScope":true,"impliedFormat":1},{"version":"4f29c38739500cd35a2ce41d15a35e34445ca755ebb991915b5f170985a49d21","affectsGlobalScope":true,"impliedFormat":1},{"version":"16f842a1a38c8bc26dfebd1e3c56a63a2c2a0e1979a4141c8012d2f763c38267","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ba59c8bbeed2cb75b239bb12041582fa3e8ef32f8d0bd0ec802e38442d3f317","impliedFormat":1}],"root":[[77,81],[182,185]],"options":{"allowImportingTsExtensions":false,"allowSyntheticDefaultImports":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"exactOptionalPropertyTypes":false,"jsx":4,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUncheckedIndexedAccess":false,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","verbatimModuleSyntax":false},"referencedMap":[[74,1],[76,2],[75,3],[289,1],[288,4],[292,5],[291,6],[290,1],[287,1],[127,7],[128,7],[129,8],[87,9],[130,10],[131,11],[132,12],[82,1],[85,13],[83,1],[84,1],[133,14],[134,15],[135,16],[136,17],[137,18],[138,19],[139,19],[141,1],[140,20],[142,21],[143,22],[144,23],[126,24],[86,1],[145,25],[146,26],[147,27],[180,28],[148,29],[149,30],[150,31],[151,32],[152,33],[153,34],[154,35],[155,36],[156,37],[157,38],[158,38],[159,39],[160,1],[161,1],[162,40],[164,41],[163,42],[165,43],[166,44],[167,45],[168,46],[169,47],[170,48],[171,49],[172,50],[173,51],[174,52],[175,53],[176,54],[177,55],[178,56],[179,57],[181,58],[293,58],[88,1],[229,59],[231,60],[234,60],[236,61],[235,60],[233,62],[232,62],[237,63],[286,64],[241,65],[240,66],[230,67],[242,68],[239,69],[238,60],[228,70],[226,1],[224,71],[227,72],[225,73],[223,74],[222,75],[220,76],[221,76],[219,1],[191,77],[186,1],[188,78],[187,79],[198,77],[197,77],[199,80],[196,81],[194,77],[195,77],[192,82],[193,77],[244,83],[243,1],[207,1],[208,84],[205,1],[206,1],[200,85],[190,86],[189,1],[218,87],[203,88],[216,89],[201,1],[202,90],[217,91],[212,92],[213,93],[211,94],[215,95],[209,96],[204,97],[214,98],[210,89],[58,1],[59,1],[10,1],[11,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[22,1],[23,1],[4,1],[24,1],[28,1],[25,1],[26,1],[27,1],[29,1],[30,1],[31,1],[5,1],[32,1],[33,1],[34,1],[35,1],[6,1],[39,1],[36,1],[37,1],[38,1],[40,1],[7,1],[41,1],[46,1],[47,1],[42,1],[43,1],[44,1],[45,1],[8,1],[51,1],[48,1],[49,1],[50,1],[52,1],[9,1],[53,1],[54,1],[55,1],[57,1],[56,1],[1,1],[104,99],[114,100],[103,99],[124,101],[95,102],[94,103],[123,104],[117,105],[122,106],[97,107],[111,108],[96,109],[120,110],[92,111],[91,104],[121,112],[93,113],[98,114],[99,1],[102,114],[89,1],[125,115],[115,116],[106,117],[107,118],[109,119],[105,120],[108,121],[118,104],[100,122],[101,123],[110,124],[90,125],[113,116],[112,114],[116,1],[119,126],[285,127],[262,128],[273,129],[260,130],[274,125],[283,131],[251,132],[252,133],[250,103],[282,104],[277,134],[281,135],[254,136],[270,137],[253,138],[280,139],[248,140],[249,134],[255,141],[256,1],[261,142],[259,141],[246,143],[284,144],[275,145],[265,146],[264,141],[266,147],[268,148],[263,149],[267,150],[278,104],[257,151],[258,152],[269,153],[247,125],[272,154],[271,141],[276,1],[245,1],[279,155],[73,156],[64,157],[71,158],[66,1],[67,1],[65,159],[68,160],[60,1],[61,1],[72,161],[63,162],[69,1],[70,163],[62,164],[184,2],[77,165],[78,165],[79,165],[185,166],[80,165],[81,165],[182,167],[183,165]],"affectedFilesPendingEmit":[[184,51],[77,51],[78,51],[79,51],[185,51],[80,51],[81,51],[182,51],[183,51]],"version":"5.8.3"}
1
+ {"fileNames":["../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.object.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.es2024.string.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.array.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.collection.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.promise.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.iterator.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/zod@3.25.74/node_modules/zod/v3/helpers/typealiases.d.cts","../../../node_modules/.pnpm/zod@3.25.74/node_modules/zod/v3/helpers/util.d.cts","../../../node_modules/.pnpm/zod@3.25.74/node_modules/zod/v3/index.d.cts","../../../node_modules/.pnpm/zod@3.25.74/node_modules/zod/v3/zoderror.d.cts","../../../node_modules/.pnpm/zod@3.25.74/node_modules/zod/v3/locales/en.d.cts","../../../node_modules/.pnpm/zod@3.25.74/node_modules/zod/v3/errors.d.cts","../../../node_modules/.pnpm/zod@3.25.74/node_modules/zod/v3/helpers/parseutil.d.cts","../../../node_modules/.pnpm/zod@3.25.74/node_modules/zod/v3/helpers/enumutil.d.cts","../../../node_modules/.pnpm/zod@3.25.74/node_modules/zod/v3/helpers/errorutil.d.cts","../../../node_modules/.pnpm/zod@3.25.74/node_modules/zod/v3/helpers/partialutil.d.cts","../../../node_modules/.pnpm/zod@3.25.74/node_modules/zod/v3/standard-schema.d.cts","../../../node_modules/.pnpm/zod@3.25.74/node_modules/zod/v3/types.d.cts","../../../node_modules/.pnpm/zod@3.25.74/node_modules/zod/v3/external.d.cts","../../../node_modules/.pnpm/zod@3.25.74/node_modules/zod/index.d.cts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.15.0/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/types.d.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.15.0/node_modules/@modelcontextprotocol/sdk/dist/esm/types.d.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.15.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.d.ts","../src/extensionclienttransport.ts","../src/extensionservertransport.ts","../src/tabclienttransport.ts","../src/tabservertransport.ts","../src/browser-types.ts","../src/index.ts","../../../node_modules/.pnpm/@types+har-format@1.2.16/node_modules/@types/har-format/index.d.ts","../../../node_modules/.pnpm/@types+chrome@0.0.326/node_modules/@types/chrome/har-format/index.d.ts","../../../node_modules/.pnpm/@types+chrome@0.0.326/node_modules/@types/chrome/chrome-cast/index.d.ts","../../../node_modules/.pnpm/@types+filewriter@0.0.33/node_modules/@types/filewriter/index.d.ts","../../../node_modules/.pnpm/@types+filesystem@0.0.36/node_modules/@types/filesystem/index.d.ts","../../../node_modules/.pnpm/@types+chrome@0.0.326/node_modules/@types/chrome/index.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/dom-events.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@22.15.31/node_modules/@types/node/index.d.ts"],"fileIdsList":[[115,158],[96,115,158],[94,95,115,158],[104,115,158],[105,106,108,115,158],[107,115,158],[115,155,158],[115,157,158],[158],[115,158,163,193],[115,158,159,164,170,171,178,190,201],[115,158,159,160,170,178],[110,111,112,115,158],[115,158,161,202],[115,158,162,163,171,179],[115,158,163,190,198],[115,158,164,166,170,178],[115,157,158,165],[115,158,166,167],[115,158,168,170],[115,157,158,170],[115,158,170,171,172,190,201],[115,158,170,171,172,185,190,193],[115,153,158],[115,153,158,166,170,173,178,190,201],[115,158,170,171,173,174,178,190,198,201],[115,158,173,175,190,198,201],[113,114,115,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207],[115,158,170,176],[115,158,177,201],[115,158,166,170,178,190],[115,158,179],[115,158,180],[115,157,158,181],[115,155,156,157,158,159,160,161,162,163,164,165,166,167,168,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207],[115,158,183],[115,158,184],[115,158,170,185,186],[115,158,185,187,202,204],[115,158,170,190,191,193],[115,158,192,193],[115,158,190,191],[115,158,193],[115,158,194],[115,155,158,190],[115,158,170,196,197],[115,158,196,197],[115,158,163,178,190,198],[115,158,199],[115,158,178,200],[115,158,173,184,201],[115,158,163,202],[115,158,190,203],[115,158,177,204],[115,158,205],[115,158,170,172,181,190,193,201,204,206],[115,158,190,207],[115,125,129,158,201],[115,125,158,190,201],[115,120,158],[115,122,125,158,198,201],[115,158,178,198],[115,158,208],[115,120,158,208],[115,122,125,158,178,201],[115,117,118,121,124,158,170,190,201],[115,125,132,158],[115,117,123,158],[115,125,146,147,158],[115,121,125,158,193,201,208],[115,146,158,208],[115,119,120,158,208],[115,125,158],[115,119,120,121,122,123,124,125,126,127,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,147,148,149,150,151,152,158],[115,125,140,158],[115,125,132,133,158],[115,123,125,133,134,158],[115,124,158],[115,117,120,125,158],[115,125,129,133,134,158],[115,129,158],[115,123,125,128,158,201],[115,117,122,125,132,158],[115,158,190],[115,120,125,146,158,206,208],[93,115,158],[84,85,115,158],[81,82,84,86,87,92,115,158],[82,84,115,158],[92,115,158],[84,115,158],[81,82,84,87,88,89,90,91,115,158],[81,82,83,115,158],[96,97,115,158],[98,99,100,101,102,115,158]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"8bf8b5e44e3c9c36f98e1007e8b7018c0f38d8adc07aecef42f5200114547c70","impliedFormat":1},{"version":"092c2bfe125ce69dbb1223c85d68d4d2397d7d8411867b5cc03cec902c233763","affectsGlobalScope":true,"impliedFormat":1},{"version":"07f073f19d67f74d732b1adea08e1dc66b1b58d77cb5b43931dee3d798a2fd53","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"4245fee526a7d1754529d19227ecbf3be066ff79ebb6a380d78e41648f2f224d","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"833e92c058d033cde3f29a6c7603f517001d1ddd8020bc94d2067a3bc69b2a8e","impliedFormat":1},{"version":"08b2fae7b0f553ad9f79faec864b179fc58bc172e295a70943e8585dd85f600c","impliedFormat":1},{"version":"f12edf1672a94c578eca32216839604f1e1c16b40a1896198deabf99c882b340","impliedFormat":1},{"version":"e3498cf5e428e6c6b9e97bd88736f26d6cf147dedbfa5a8ad3ed8e05e059af8a","impliedFormat":1},{"version":"dba3f34531fd9b1b6e072928b6f885aa4d28dd6789cbd0e93563d43f4b62da53","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"2329d90062487e1eaca87b5e06abcbbeeecf80a82f65f949fd332cfcf824b87b","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"4fdb529707247a1a917a4626bfb6a293d52cd8ee57ccf03830ec91d39d606d6d","impliedFormat":1},{"version":"a9ebb67d6bbead6044b43714b50dcb77b8f7541ffe803046fdec1714c1eba206","impliedFormat":1},{"version":"5780b706cece027f0d4444fbb4e1af62dc51e19da7c3d3719f67b22b033859b9","impliedFormat":1},{"version":"4749a5d10b6e3b0bd6c8d90f9ba68a91a97aa0c2c9a340dd83306b2f349d6d34","impliedFormat":99},{"version":"e9cc357cb2906b5a3ebe6fe0411c9fa0116aac999ebe4d60cd72c8775e6fa3c5","impliedFormat":99},{"version":"efdb6c1c0e195ea378a0b7cd0e808f65176bea14396dc8bdccda80551e66d73f","impliedFormat":99},{"version":"786acb24c92147119a9f18b2c11600bcfb5813eeeeec53834c11cdae1fbef86c","signature":"72ee2d1f71fd55f50955d3f906fb30a5b07e9a35fa27b5e2da9c5a750684ca1e"},{"version":"cf76e170dde6b903789dbfbb1052f2038e12acb94112d14ce300e74bb0d276cb","signature":"ad7042681eb7ef803aa14a9fd6ff73558f9f2416c45ddfce8f86cd4a9bd90454"},{"version":"a78926cbb45ea0a6cd4a32e12084302c95123b577cd01ceb1ad74b6c614f77c9","signature":"2ed3aa44c906c16c32fe19730f45183ff3cef09a1f2998d40a8cf30b72c6cafb"},{"version":"fb75b24954f2be72340e2a99a5d704bb410dd9cd081b6e79d840e2bb9499d7ef","signature":"0f1f3dac26d8a79ba4176b53dac020b89cbc7474988b7ec01dae6b042b79bcc7"},{"version":"e5c220f6e24489e94cd4cfa24a4c3066ef1da54c884accfb5abacbaa16388be9","signature":"ede8b5ca5845131bd90888a7d3e5e88a60846e1c87c011b381fa76e8527af2d8"},{"version":"2daddf96c7e5e2c6a364db31e8e8f12ef36d6404aff894b78016a3d3787b8c7d","signature":"b940c4da39517dc5b345204054fd9d72903253d4d0961e4c363c5e01bd46b188"},{"version":"5574d520dabc450de6be799f1791d86d71da4fb236f16e6ca21b953788bb5154","impliedFormat":1},{"version":"5f877dfc985d1fd3ac8bf4a75cd77b06c42ca608809b324c44b4151758de7189","affectsGlobalScope":true,"impliedFormat":1},{"version":"4f585cea32567574de0301ed79131a4c3d0bb36bbfea7f66e2f29b5dce1c4293","affectsGlobalScope":true,"impliedFormat":1},{"version":"14c2fd6220654a41c53836a62ba96d4b515ae1413b0ccb31c2445fb1ae1de5de","affectsGlobalScope":true,"impliedFormat":1},{"version":"4f29c38739500cd35a2ce41d15a35e34445ca755ebb991915b5f170985a49d21","affectsGlobalScope":true,"impliedFormat":1},{"version":"16f842a1a38c8bc26dfebd1e3c56a63a2c2a0e1979a4141c8012d2f763c38267","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"a12d953aa755b14ac1d28ecdc1e184f3285b01d6d1e58abc11bf1826bc9d80e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"a38efe83ff77c34e0f418a806a01ca3910c02ee7d64212a59d59bca6c2c38fa1","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"3fe4022ba1e738034e38ad9afacbf0f1f16b458ed516326f5bf9e4a31e9be1dc","impliedFormat":1},{"version":"a957197054b074bcdf5555d26286e8461680c7c878040d0f4e2d5509a7524944","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"e9b97d69510658d2f4199b7d384326b7c4053b9e6645f5c19e1c2a54ede427fc","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"f478f6f5902dc144c0d6d7bdc919c5177cac4d17a8ca8653c2daf6d7dc94317f","affectsGlobalScope":true,"impliedFormat":1},{"version":"19d5f8d3930e9f99aa2c36258bf95abbe5adf7e889e6181872d1cdba7c9a7dd5","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"71450bbc2d82821d24ca05699a533e72758964e9852062c53b30f31c36978ab8","affectsGlobalScope":true,"impliedFormat":1},{"version":"88bc59b32d0d5b4e5d9632ac38edea23454057e643684c3c0b94511296f2998c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a0a1dda070290b92da5a50113b73ecc4dd6bcbffad66e3c86503d483eafbadcf","impliedFormat":1},{"version":"59dcad36c4549175a25998f6a8b33c1df8e18df9c12ebad1dfb25af13fd4b1ce","impliedFormat":1},{"version":"206a70e72af3e24688397b81304358526ce70d020e4c2606c4acfd1fa1e81fb2","impliedFormat":1},{"version":"017caf5d2a8ef581cf94f678af6ce7415e06956317946315560f1487b9a56167","impliedFormat":1},{"version":"528b62e4272e3ddfb50e8eed9e359dedea0a4d171c3eb8f337f4892aac37b24b","impliedFormat":1},{"version":"d71535813e39c23baa113bc4a29a0e187b87d1105ccc8c5a6ebaca38d9a9bff2","impliedFormat":1},{"version":"4c3148420835de895b9218b2cea321a4607008ba5cefa57b2a57e1c1ef85d22f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f72bc8fe16da67e4e3268599295797b202b95e54bd215a03f97e925dd1502a36","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"915e18c559321c0afaa8d34674d3eb77e1ded12c3e85bf2a9891ec48b07a1ca5","affectsGlobalScope":true,"impliedFormat":1},{"version":"636302a00dfd1f9fe6e8e91e4e9350c6518dcc8d51a474e4fc3a9ba07135100b","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"e1ce1d622f1e561f6cdf246372ead3bbc07ce0342024d0e9c7caf3136f712698","impliedFormat":1},{"version":"199c8269497136f3a0f4da1d1d90ab033f899f070e0dd801946f2a241c8abba2","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"27e4532aaaa1665d0dd19023321e4dc12a35a741d6b8e1ca3517fcc2544e0efe","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"6266d94fb9165d42716e45f3a537ca9f59c07b1dfa8394a659acf139134807db","affectsGlobalScope":true,"impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"98ffdf93dfdd206516971d28e3e473f417a5cfd41172e46b4ce45008f640588e","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"a7692a54334fd08960cd0c610ff509c2caa93998e0dcefa54021489bcc67c22d","affectsGlobalScope":true,"impliedFormat":1},{"version":"74736930d108365d7bbe740c7154706ccfb1b2a3855a897963ab3e5c07ecbf19","impliedFormat":1},{"version":"3a051941721a7f905544732b0eb819c8d88333a96576b13af08b82c4f17581e4","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"1e25f8d0a8573cafd5b5a16af22d26ab872068a693b9dbccd3f72846ab373655","affectsGlobalScope":true,"impliedFormat":1},{"version":"3797dd6f4ea3dc15f356f8cdd3128bfa18122213b38a80d6c1f05d8e13cbdad8","impliedFormat":1},{"version":"ad90122e1cb599b3bc06a11710eb5489101be678f2920f2322b0ac3e195af78d","impliedFormat":1}],"root":[[98,103]],"options":{"allowImportingTsExtensions":false,"allowSyntheticDefaultImports":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"exactOptionalPropertyTypes":false,"jsx":4,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUncheckedIndexedAccess":false,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":99,"tsBuildInfoFile":"./.tsbuildinfo","verbatimModuleSyntax":false},"referencedMap":[[95,1],[97,2],[96,3],[106,1],[105,4],[109,5],[108,6],[107,1],[104,1],[155,7],[156,7],[157,8],[115,9],[158,10],[159,11],[160,12],[110,1],[113,13],[111,1],[112,1],[161,14],[162,15],[163,16],[164,17],[165,18],[166,19],[167,19],[169,1],[168,20],[170,21],[171,22],[172,23],[154,24],[114,1],[173,25],[174,26],[175,27],[208,28],[176,29],[177,30],[178,31],[179,32],[180,33],[181,34],[182,35],[183,36],[184,37],[185,38],[186,38],[187,39],[188,1],[189,1],[190,40],[192,41],[191,42],[193,43],[194,44],[195,45],[196,46],[197,47],[198,48],[199,49],[200,50],[201,51],[202,52],[203,53],[204,54],[205,55],[206,56],[207,57],[116,1],[79,1],[80,1],[13,1],[14,1],[16,1],[15,1],[2,1],[17,1],[18,1],[19,1],[20,1],[21,1],[22,1],[23,1],[24,1],[3,1],[25,1],[26,1],[4,1],[27,1],[31,1],[28,1],[29,1],[30,1],[32,1],[33,1],[34,1],[5,1],[35,1],[36,1],[37,1],[38,1],[6,1],[42,1],[39,1],[40,1],[41,1],[43,1],[7,1],[44,1],[49,1],[50,1],[45,1],[46,1],[47,1],[48,1],[8,1],[54,1],[51,1],[52,1],[53,1],[55,1],[9,1],[56,1],[57,1],[58,1],[60,1],[59,1],[61,1],[62,1],[10,1],[63,1],[64,1],[65,1],[11,1],[66,1],[67,1],[68,1],[69,1],[70,1],[1,1],[71,1],[72,1],[12,1],[76,1],[74,1],[78,1],[73,1],[77,1],[75,1],[132,58],[142,59],[131,58],[152,60],[123,61],[122,62],[151,63],[145,64],[150,65],[125,66],[139,67],[124,68],[148,69],[120,70],[119,63],[149,71],[121,72],[126,73],[127,1],[130,73],[117,1],[153,74],[143,75],[134,76],[135,77],[137,78],[133,79],[136,80],[146,63],[128,81],[129,82],[138,83],[118,84],[141,75],[140,73],[144,1],[147,85],[94,86],[86,87],[93,88],[88,1],[89,1],[87,89],[90,90],[81,1],[82,1],[83,86],[85,91],[91,1],[92,92],[84,93],[102,2],[98,94],[99,94],[103,95],[100,94],[101,94]],"affectedFilesPendingEmit":[[102,51],[98,51],[99,51],[103,51],[100,51],[101,51]],"version":"5.8.3"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js';
2
2
  import { Transport, TransportSendOptions } from '@modelcontextprotocol/sdk/shared/transport.js';
3
+ import { Readable, Writable } from 'node:stream';
3
4
 
4
5
  /**
5
6
  * Unique identifier for an event in the event store
@@ -127,6 +128,64 @@ interface StoredEvent {
127
128
  timestamp: number;
128
129
  clientId: string;
129
130
  }
131
+ declare enum NativeMessageType {
132
+ START = "start",
133
+ STARTED = "started",
134
+ STOP = "stop",
135
+ STOPPED = "stopped",
136
+ PING = "ping",
137
+ PONG = "pong",
138
+ ERROR = "error",
139
+ LIST_TOOLS = "list_tools",
140
+ CALL_TOOL = "call_tool",
141
+ TOOL_LIST_UPDATED = "tool_list_updated",
142
+ TOOL_LIST_UPDATED_ACK = "tool_list_updated_ack",
143
+ PROCESS_DATA = "process_data",
144
+ SERVER_STARTED = "server_started",
145
+ SERVER_STOPPED = "server_stopped",
146
+ ERROR_FROM_NATIVE_HOST = "error_from_native_host",
147
+ CONNECT_NATIVE = "connectNative",
148
+ PING_NATIVE = "ping_native",
149
+ DISCONNECT_NATIVE = "disconnect_native"
150
+ }
151
+ /**
152
+ * Chrome Extension Constants
153
+ * Centralized configuration values and magic constants
154
+ */
155
+ declare const NATIVE_HOST: {
156
+ readonly NAME: "com.chromemcp.nativehost";
157
+ readonly DEFAULT_PORT: 12306;
158
+ };
159
+ declare const ERROR_MESSAGES: {
160
+ readonly NATIVE_CONNECTION_FAILED: "Failed to connect to native host";
161
+ readonly NATIVE_DISCONNECTED: "Native connection disconnected";
162
+ readonly SERVER_STATUS_LOAD_FAILED: "Failed to load server status";
163
+ readonly TOOL_EXECUTION_FAILED: "Tool execution failed";
164
+ readonly SERVER_STATUS_SAVE_FAILED: "Failed to save server status";
165
+ };
166
+ declare const SUCCESS_MESSAGES: {
167
+ readonly TOOL_EXECUTED: "Tool executed successfully";
168
+ readonly CONNECTION_ESTABLISHED: "Connection established";
169
+ readonly SERVER_STARTED: "Server started successfully";
170
+ readonly SERVER_STOPPED: "Server stopped successfully";
171
+ };
172
+ declare const STORAGE_KEYS: {
173
+ readonly SERVER_STATUS: "serverStatus";
174
+ };
175
+ declare const BACKGROUND_MESSAGE_TYPES: {
176
+ readonly GET_SERVER_STATUS: "get_server_status";
177
+ readonly REFRESH_SERVER_STATUS: "refresh_server_status";
178
+ readonly SERVER_STATUS_CHANGED: "server_status_changed";
179
+ };
180
+ declare const HOST_NAME: "com.chromemcp.nativehost";
181
+ /**
182
+ * Server status management interface
183
+ */
184
+ interface ServerStatus {
185
+ isRunning: boolean;
186
+ port?: number;
187
+ lastUpdated: number;
188
+ }
130
189
 
131
190
  /**
132
191
  * Configuration options for ExtensionClientTransport
@@ -207,6 +266,63 @@ declare class ExtensionServerTransport implements Transport {
207
266
  private _cleanup;
208
267
  }
209
268
 
269
+ /**
270
+ * Client transport for Native Messaging: this communicates with a server in the Chrome extension by reading from the current process' stdin and writing to stdout.
271
+ *
272
+ * This transport is only available in Node.js environments.
273
+ */
274
+ declare class NativeClientTransport implements Transport {
275
+ private _stdin;
276
+ private _stdout;
277
+ private _readBuffer;
278
+ private _started;
279
+ constructor(_stdin?: Readable, _stdout?: Writable);
280
+ onclose?: () => void;
281
+ onerror?: (error: Error) => void;
282
+ onmessage?: (message: JSONRPCMessage) => void;
283
+ _ondata: (chunk: Buffer) => void;
284
+ _onerror: (error: Error) => void;
285
+ /**
286
+ * Starts listening for messages on stdin.
287
+ */
288
+ start(): Promise<void>;
289
+ private processReadBuffer;
290
+ close(): Promise<void>;
291
+ send(message: JSONRPCMessage): Promise<void>;
292
+ }
293
+
294
+ /**
295
+ * Server transport for Native Messaging using Port-based messaging.
296
+ * This transport handles a single client connection through Chrome's native messaging Port API.
297
+ * It should be used in the extension's background service worker.
298
+ */
299
+ declare class NativeServerTransport implements Transport {
300
+ private _port;
301
+ private _started;
302
+ private _messageHandler?;
303
+ private _disconnectHandler?;
304
+ onclose?: () => void;
305
+ onerror?: (error: Error) => void;
306
+ onmessage?: (message: JSONRPCMessage) => void;
307
+ constructor(port: chrome.runtime.Port);
308
+ /**
309
+ * Starts the transport and begins handling messages
310
+ */
311
+ start(): Promise<void>;
312
+ /**
313
+ * Sends a message to the client
314
+ */
315
+ send(message: JSONRPCMessage, _options?: TransportSendOptions): Promise<void>;
316
+ /**
317
+ * Closes the transport
318
+ */
319
+ close(): Promise<void>;
320
+ /**
321
+ * Cleans up event listeners and references
322
+ */
323
+ private _cleanup;
324
+ }
325
+
210
326
  interface TabClientTransportOptions {
211
327
  targetOrigin: string;
212
328
  channelId?: string;
@@ -224,6 +340,7 @@ declare class TabClientTransport implements Transport {
224
340
  onmessage?: (message: JSONRPCMessage) => void;
225
341
  constructor(options: TabClientTransportOptions);
226
342
  start(): Promise<void>;
343
+ private sendCheckReady;
227
344
  send(message: JSONRPCMessage): Promise<void>;
228
345
  close(): Promise<void>;
229
346
  }
@@ -247,4 +364,4 @@ declare class TabServerTransport implements Transport {
247
364
  close(): Promise<void>;
248
365
  }
249
366
 
250
- export { type EventId, ExtensionClientTransport, type ExtensionClientTransportOptions, ExtensionServerTransport, type MCPBrowserInterface, type MCPConnectOptions, type MCPEventMessage, type MCPEventStore, type MCPReplayEventMessage, type MCPServerInfo, type MCPServerInfoMessage, type MCPWindow, type StoredEvent, type StreamId, TabClientTransport, type TabClientTransportOptions, TabServerTransport, type TabServerTransportOptions };
367
+ export { BACKGROUND_MESSAGE_TYPES, ERROR_MESSAGES, type EventId, ExtensionClientTransport, type ExtensionClientTransportOptions, ExtensionServerTransport, HOST_NAME, type MCPBrowserInterface, type MCPConnectOptions, type MCPEventMessage, type MCPEventStore, type MCPReplayEventMessage, type MCPServerInfo, type MCPServerInfoMessage, type MCPWindow, NATIVE_HOST, NativeClientTransport, NativeMessageType, NativeServerTransport, STORAGE_KEYS, SUCCESS_MESSAGES, type ServerStatus, type StoredEvent, type StreamId, TabClientTransport, type TabClientTransportOptions, TabServerTransport, type TabServerTransportOptions };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import {JSONRPCMessageSchema}from'@modelcontextprotocol/sdk/types.js';var n=class{_port;_extensionId;_portName;_messageHandler;_disconnectHandler;onclose;onerror;onmessage;constructor(e={}){this._extensionId=e.extensionId,this._portName=e.portName||"mcp";}async start(){if(this._port){console.warn("ExtensionClientTransport already started! If using Client class, note that connect() calls start() automatically.");return}return new Promise((e,r)=>{if(!chrome?.runtime?.connect){r(new Error("Chrome runtime API not available. This transport must be used in a Chrome extension context."));return}try{this._extensionId?this._port=chrome.runtime.connect(this._extensionId,{name:this._portName}):this._port=chrome.runtime.connect({name:this._portName}),this._messageHandler=o=>{try{let i=JSONRPCMessageSchema.parse(o);this.onmessage?.(i);}catch(i){this.onerror?.(new Error(`Failed to parse message: ${i}`));}},this._disconnectHandler=()=>{this._cleanup(),this.onclose?.();},this._port.onMessage.addListener(this._messageHandler),this._port.onDisconnect.addListener(this._disconnectHandler);let t=chrome.runtime.lastError;if(t){this._cleanup(),r(new Error(`Connection failed: ${t.message}`));return}e();}catch(t){r(t);}})}async send(e,r){if(!this._port)throw new Error("Not connected");try{this._port.postMessage(e);}catch(t){throw new Error(`Failed to send message: ${t}`)}}async close(){if(this._port)try{this._port.disconnect();}catch{}this._cleanup(),this.onclose?.();}_cleanup(){this._port&&(this._messageHandler&&this._port.onMessage.removeListener(this._messageHandler),this._disconnectHandler&&this._port.onDisconnect.removeListener(this._disconnectHandler)),this._port=void 0;}};var a=class{_port;_started=false;_messageHandler;_disconnectHandler;onclose;onerror;onmessage;constructor(e){this._port=e;}async start(){if(this._started)throw new Error("ExtensionServerTransport already started! If using Server class, note that connect() calls start() automatically.");if(!this._port)throw new Error("Port not available");this._started=true,this._messageHandler=e=>{try{let r=JSONRPCMessageSchema.parse(e);this.onmessage?.(r);}catch(r){this.onerror?.(new Error(`Failed to parse message: ${r}`));}},this._disconnectHandler=()=>{this._cleanup(),this.onclose?.();},this._port.onMessage.addListener(this._messageHandler),this._port.onDisconnect.addListener(this._disconnectHandler);}async send(e,r){if(!this._started)throw new Error("Transport not started");if(!this._port)throw new Error("Not connected to client");try{this._port.postMessage(e);}catch(t){throw new Error(`Failed to send message: ${t}`)}}async close(){if(this._started=false,this._port)try{this._port.disconnect();}catch{}this._cleanup(),this.onclose?.();}_cleanup(){this._port&&(this._messageHandler&&this._port.onMessage.removeListener(this._messageHandler),this._disconnectHandler&&this._port.onDisconnect.removeListener(this._disconnectHandler));}};var d=class{_started=false;_targetOrigin;_channelId;_messageHandler;serverReadyPromise;_serverReadyResolve;_serverReadyReject;onclose;onerror;onmessage;constructor(e){if(!e.targetOrigin)throw new Error("targetOrigin must be explicitly set for security");this._targetOrigin=e.targetOrigin,this._channelId=e.channelId||"mcp-default";let{promise:r,resolve:t,reject:o}=Promise.withResolvers();this.serverReadyPromise=r,this._serverReadyResolve=t,this._serverReadyReject=o;}async start(){if(this._started)throw new Error("Transport already started");this._messageHandler=e=>{if(e.origin===this._targetOrigin&&!(e.data?.channel!==this._channelId||e.data?.type!=="mcp")&&e.data?.direction==="server-to-client"){if(e.data.payload==="mcp-server-ready"){this._serverReadyResolve();return}try{let r=JSONRPCMessageSchema.parse(e.data.payload);this.onmessage?.(r);}catch(r){this.onerror?.(new Error(`Invalid message: ${r}`));}}},window.addEventListener("message",this._messageHandler),this._started=true;}async send(e){if(!this._started)throw new Error("Transport not started");window.postMessage({channel:this._channelId,type:"mcp",direction:"client-to-server",payload:e},this._targetOrigin);}async close(){this._messageHandler&&window.removeEventListener("message",this._messageHandler),this._serverReadyReject(new Error("Transport closed before server ready")),this._started=false,this.onclose?.();}};var c=class{_started=false;_allowedOrigins;_channelId;_messageHandler;_clientOrigin;onclose;onerror;onmessage;constructor(e){if(!e.allowedOrigins||e.allowedOrigins.length===0)throw new Error("At least one allowed origin must be specified");this._allowedOrigins=e.allowedOrigins,this._channelId=e.channelId||"mcp-default";}async start(){if(this._started)throw new Error("Transport already started");this._messageHandler=e=>{if(console.log({event:e}),!(!this._allowedOrigins.includes(e.origin)&&!this._allowedOrigins.includes("*"))&&!(e.data?.channel!==this._channelId||e.data?.type!=="mcp")&&e.data?.direction==="client-to-server"){this._clientOrigin=e.origin;try{let r=JSONRPCMessageSchema.parse(e.data.payload);this.onmessage?.(r);}catch(r){this.onerror?.(new Error(`Invalid message: ${r}`));}}},window.addEventListener("message",this._messageHandler),this._started=true,window.postMessage({channel:this._channelId,type:"mcp",direction:"server-to-client",payload:"mcp-server-ready"},"*");}async send(e){if(!this._started)throw new Error("Transport not started");if(!this._clientOrigin)throw new Error("No client connected");window.postMessage({channel:this._channelId,type:"mcp",direction:"server-to-client",payload:e},this._clientOrigin);}async close(){this._messageHandler&&window.removeEventListener("message",this._messageHandler),this._started=false,this.onclose?.();}};export{n as ExtensionClientTransport,a as ExtensionServerTransport,d as TabClientTransport,c as TabServerTransport};//# sourceMappingURL=index.js.map
1
+ import {JSONRPCMessageSchema}from'@modelcontextprotocol/sdk/types.js';import c from'process';import {ReadBuffer,serializeMessage}from'@modelcontextprotocol/sdk/shared/stdio.js';var _=(s=>(s.START="start",s.STARTED="started",s.STOP="stop",s.STOPPED="stopped",s.PING="ping",s.PONG="pong",s.ERROR="error",s.LIST_TOOLS="list_tools",s.CALL_TOOL="call_tool",s.TOOL_LIST_UPDATED="tool_list_updated",s.TOOL_LIST_UPDATED_ACK="tool_list_updated_ack",s.PROCESS_DATA="process_data",s.SERVER_STARTED="server_started",s.SERVER_STOPPED="server_stopped",s.ERROR_FROM_NATIVE_HOST="error_from_native_host",s.CONNECT_NATIVE="connectNative",s.PING_NATIVE="ping_native",s.DISCONNECT_NATIVE="disconnect_native",s))(_||{}),g={NAME:"com.chromemcp.nativehost",DEFAULT_PORT:12306},y={NATIVE_CONNECTION_FAILED:"Failed to connect to native host",NATIVE_DISCONNECTED:"Native connection disconnected",SERVER_STATUS_LOAD_FAILED:"Failed to load server status",TOOL_EXECUTION_FAILED:"Tool execution failed",SERVER_STATUS_SAVE_FAILED:"Failed to save server status"},P={TOOL_EXECUTED:"Tool executed successfully",CONNECTION_ESTABLISHED:"Connection established",SERVER_STARTED:"Server started successfully",SERVER_STOPPED:"Server stopped successfully"},w={SERVER_STATUS:"serverStatus"},I={GET_SERVER_STATUS:"get_server_status",REFRESH_SERVER_STATUS:"refresh_server_status",SERVER_STATUS_CHANGED:"server_status_changed"},T=g.NAME;var a=class{_port;_extensionId;_portName;_messageHandler;_disconnectHandler;onclose;onerror;onmessage;constructor(e={}){this._extensionId=e.extensionId,this._portName=e.portName||"mcp";}async start(){if(this._port){console.warn("ExtensionClientTransport already started! If using Client class, note that connect() calls start() automatically.");return}return new Promise((e,t)=>{if(!chrome?.runtime?.connect){t(new Error("Chrome runtime API not available. This transport must be used in a Chrome extension context."));return}try{this._extensionId?this._port=chrome.runtime.connect(this._extensionId,{name:this._portName}):this._port=chrome.runtime.connect({name:this._portName}),this._messageHandler=i=>{try{let n=JSONRPCMessageSchema.parse(i);this.onmessage?.(n);}catch(n){this.onerror?.(new Error(`Failed to parse message: ${n}`));}},this._disconnectHandler=()=>{this._cleanup(),this.onclose?.();},this._port.onMessage.addListener(this._messageHandler),this._port.onDisconnect.addListener(this._disconnectHandler);let r=chrome.runtime.lastError;if(r){this._cleanup(),t(new Error(`Connection failed: ${r.message}`));return}e();}catch(r){t(r);}})}async send(e,t){if(!this._port)throw new Error("Not connected");try{this._port.postMessage(e);}catch(r){throw new Error(`Failed to send message: ${r}`)}}async close(){if(this._port)try{this._port.disconnect();}catch{}this._cleanup(),this.onclose?.();}_cleanup(){this._port&&(this._messageHandler&&this._port.onMessage.removeListener(this._messageHandler),this._disconnectHandler&&this._port.onDisconnect.removeListener(this._disconnectHandler)),this._port=void 0;}};var d=class{_port;_started=false;_messageHandler;_disconnectHandler;onclose;onerror;onmessage;constructor(e){this._port=e;}async start(){if(this._started)throw new Error("ExtensionServerTransport already started! If using Server class, note that connect() calls start() automatically.");if(!this._port)throw new Error("Port not available");this._started=true,this._messageHandler=e=>{try{let t=JSONRPCMessageSchema.parse(e);this.onmessage?.(t);}catch(t){this.onerror?.(new Error(`Failed to parse message: ${t}`));}},this._disconnectHandler=()=>{this._cleanup(),this.onclose?.();},this._port.onMessage.addListener(this._messageHandler),this._port.onDisconnect.addListener(this._disconnectHandler);}async send(e,t){if(!this._started)throw new Error("Transport not started");if(!this._port)throw new Error("Not connected to client");try{this._port.postMessage(e);}catch(r){throw new Error(`Failed to send message: ${r}`)}}async close(){if(this._started=false,this._port)try{this._port.disconnect();}catch{}this._cleanup(),this.onclose?.();}_cleanup(){this._port&&(this._messageHandler&&this._port.onMessage.removeListener(this._messageHandler),this._disconnectHandler&&this._port.onDisconnect.removeListener(this._disconnectHandler));}};var l=class{constructor(e=c.stdin,t=c.stdout){this._stdin=e;this._stdout=t;}_readBuffer=new ReadBuffer;_started=false;onclose;onerror;onmessage;_ondata=e=>{this._readBuffer.append(e),this.processReadBuffer();};_onerror=e=>{this.onerror?.(e);};async start(){if(this._started)throw new Error("NativeClientTransport already started! If using Client class, note that connect() calls start() automatically.");this._started=true,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror);}processReadBuffer(){for(;;)try{let e=this._readBuffer.readMessage();if(e===null)break;this.onmessage?.(e);}catch(e){this.onerror?.(e);}}async close(){this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.();}send(e){return new Promise(t=>{let r=serializeMessage(e);this._stdout.write(r)?t():this._stdout.once("drain",t);})}};var p=class{_port;_started=false;_messageHandler;_disconnectHandler;onclose;onerror;onmessage;constructor(e){this._port=e;}async start(){if(this._started)throw new Error("NativeServerTransport already started! If using Server class, note that connect() calls start() automatically.");if(!this._port)throw new Error("Port not available");this._started=true,this._messageHandler=e=>{try{let t=JSONRPCMessageSchema.parse(e);this.onmessage?.(t);}catch(t){this.onerror?.(new Error(`Failed to parse message: ${t}`));}},this._disconnectHandler=()=>{this._cleanup(),this.onclose?.();},this._port.onMessage.addListener(this._messageHandler),this._port.onDisconnect.addListener(this._disconnectHandler);}async send(e,t){if(!this._started)throw new Error("Transport not started");if(!this._port)throw new Error("Not connected to client");try{this._port.postMessage(e);}catch(r){throw new Error(`Failed to send message: ${r}`)}}async close(){if(this._started=false,this._port)try{this._port.disconnect();}catch{}this._cleanup(),this.onclose?.();}_cleanup(){this._port&&(this._messageHandler&&this._port.onMessage.removeListener(this._messageHandler),this._disconnectHandler&&this._port.onDisconnect.removeListener(this._disconnectHandler));}};var h=class{_started=false;_targetOrigin;_channelId;_messageHandler;serverReadyPromise;_serverReadyResolve;_serverReadyReject;onclose;onerror;onmessage;constructor(e){if(!e.targetOrigin)throw new Error("targetOrigin must be explicitly set for security");this._targetOrigin=e.targetOrigin,this._channelId=e.channelId||"mcp-default";let{promise:t,resolve:r,reject:i}=Promise.withResolvers();this.serverReadyPromise=t,this._serverReadyResolve=()=>{r();},this._serverReadyReject=n=>{i(n);};}async start(){if(this._started)throw new Error("Transport already started");this._messageHandler=e=>{if(e.origin!==this._targetOrigin||e.data?.channel!==this._channelId||e.data?.type!=="mcp"||e.data?.direction!=="server-to-client")return;let t=e.data.payload;if(typeof t=="string"&&t==="mcp-server-ready"){this._serverReadyResolve();return}try{let r=JSONRPCMessageSchema.parse(t);this._serverReadyResolve(),this.onmessage?.(r);}catch(r){this.onerror?.(new Error(`Invalid message: ${r instanceof Error?r.message:String(r)}`));}},window.addEventListener("message",this._messageHandler),this._started=true,this.sendCheckReady();}sendCheckReady(){window.postMessage({channel:this._channelId,type:"mcp",direction:"client-to-server",payload:"mcp-check-ready"},this._targetOrigin);}async send(e){if(!this._started)throw new Error("Transport not started");await this.serverReadyPromise,window.postMessage({channel:this._channelId,type:"mcp",direction:"client-to-server",payload:e},this._targetOrigin);}async close(){this._messageHandler&&window.removeEventListener("message",this._messageHandler),this._serverReadyReject(new Error("Transport closed before server ready")),this._started=false,this.onclose?.();}};var m=class{_started=false;_allowedOrigins;_channelId;_messageHandler;_clientOrigin;onclose;onerror;onmessage;constructor(e){if(!e.allowedOrigins||e.allowedOrigins.length===0)throw new Error("At least one allowed origin must be specified");this._allowedOrigins=e.allowedOrigins,this._channelId=e.channelId||"mcp-default";}async start(){if(this._started)throw new Error("Transport already started");this._messageHandler=e=>{if(!this._allowedOrigins.includes(e.origin)&&!this._allowedOrigins.includes("*")||e.data?.channel!==this._channelId||e.data?.type!=="mcp"||e.data?.direction!=="client-to-server")return;this._clientOrigin=e.origin;let t=e.data.payload;if(typeof t=="string"&&t==="mcp-check-ready"){window.postMessage({channel:this._channelId,type:"mcp",direction:"server-to-client",payload:"mcp-server-ready"},this._clientOrigin);return}try{let r=JSONRPCMessageSchema.parse(t);this.onmessage?.(r);}catch(r){this.onerror?.(new Error(`Invalid message: ${r instanceof Error?r.message:String(r)}`));}},window.addEventListener("message",this._messageHandler),this._started=true,window.postMessage({channel:this._channelId,type:"mcp",direction:"server-to-client",payload:"mcp-server-ready"},"*");}async send(e){if(!this._started)throw new Error("Transport not started");if(!this._clientOrigin)throw new Error("No client connected");window.postMessage({channel:this._channelId,type:"mcp",direction:"server-to-client",payload:e},this._clientOrigin);}async close(){this._messageHandler&&window.removeEventListener("message",this._messageHandler),this._started=false,this.onclose?.();}};export{I as BACKGROUND_MESSAGE_TYPES,y as ERROR_MESSAGES,a as ExtensionClientTransport,d as ExtensionServerTransport,T as HOST_NAME,g as NATIVE_HOST,l as NativeClientTransport,_ as NativeMessageType,p as NativeServerTransport,w as STORAGE_KEYS,P as SUCCESS_MESSAGES,h as TabClientTransport,m as TabServerTransport};//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ExtensionClientTransport.ts","../src/ExtensionServerTransport.ts","../src/TabClientTransport.ts","../src/TabServerTransport.ts"],"names":["ExtensionClientTransport","options","resolve","reject","message","mcpMessage","JSONRPCMessageSchema","error","_options","ExtensionServerTransport","port","TabClientTransport","promise","event","TabServerTransport"],"mappings":"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","file":"index.js","sourcesContent":["import type {\n Transport,\n TransportSendOptions,\n} from '@modelcontextprotocol/sdk/shared/transport.js';\nimport { type JSONRPCMessage, JSONRPCMessageSchema } from '@modelcontextprotocol/sdk/types.js';\n\n/**\n * Configuration options for ExtensionClientTransport\n */\nexport interface ExtensionClientTransportOptions {\n /**\n * The extension ID to connect to (optional for same-extension connections)\n */\n extensionId?: string;\n\n /**\n * Port name for the connection\n * Default: 'mcp'\n */\n portName?: string;\n}\n\n/**\n * Client transport for Chrome extensions using Port-based messaging.\n * This transport can be used in content scripts, popup scripts, or sidepanel scripts\n * to connect to a server running in the background service worker.\n */\nexport class ExtensionClientTransport implements Transport {\n private _port?: chrome.runtime.Port;\n private _extensionId?: string;\n private _portName: string;\n private _messageHandler?: (message: any) => void;\n private _disconnectHandler?: () => void;\n\n onclose?: () => void;\n onerror?: (error: Error) => void;\n onmessage?: (message: JSONRPCMessage) => void;\n\n constructor(options: ExtensionClientTransportOptions = {}) {\n this._extensionId = options.extensionId;\n this._portName = options.portName || 'mcp';\n }\n\n /**\n * Starts the transport by connecting to the extension port\n */\n async start(): Promise<void> {\n if (this._port) {\n console.warn(\n 'ExtensionClientTransport already started! If using Client class, note that connect() calls start() automatically.'\n );\n // throw new Error(\n // 'ExtensionClientTransport already started! If using Client class, note that connect() calls start() automatically.'\n // );\n return;\n }\n\n return new Promise((resolve, reject) => {\n if (!chrome?.runtime?.connect) {\n reject(\n new Error(\n 'Chrome runtime API not available. This transport must be used in a Chrome extension context.'\n )\n );\n return;\n }\n\n try {\n // Connect to the extension\n if (this._extensionId) {\n this._port = chrome.runtime.connect(this._extensionId, { name: this._portName });\n } else {\n this._port = chrome.runtime.connect({ name: this._portName });\n }\n\n // Set up message handler\n this._messageHandler = (message: any) => {\n try {\n const mcpMessage = JSONRPCMessageSchema.parse(message);\n this.onmessage?.(mcpMessage);\n } catch (error) {\n this.onerror?.(new Error(`Failed to parse message: ${error}`));\n }\n };\n\n // Set up disconnect handler\n this._disconnectHandler = () => {\n this._cleanup();\n this.onclose?.();\n };\n\n this._port.onMessage.addListener(this._messageHandler);\n this._port.onDisconnect.addListener(this._disconnectHandler);\n\n // Check for immediate connection errors\n const error = chrome.runtime.lastError;\n if (error) {\n this._cleanup();\n reject(new Error(`Connection failed: ${error.message}`));\n return;\n }\n\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n }\n\n /**\n * Sends a message to the server\n */\n async send(message: JSONRPCMessage, _options?: TransportSendOptions): Promise<void> {\n if (!this._port) {\n throw new Error('Not connected');\n }\n\n try {\n this._port.postMessage(message);\n } catch (error) {\n throw new Error(`Failed to send message: ${error}`);\n }\n }\n\n /**\n * Closes the transport\n */\n async close(): Promise<void> {\n if (this._port) {\n try {\n this._port.disconnect();\n } catch (error) {\n // Port might already be disconnected\n }\n }\n\n this._cleanup();\n this.onclose?.();\n }\n\n /**\n * Cleans up event listeners and references\n */\n private _cleanup(): void {\n if (this._port) {\n if (this._messageHandler) {\n this._port.onMessage.removeListener(this._messageHandler);\n }\n if (this._disconnectHandler) {\n this._port.onDisconnect.removeListener(this._disconnectHandler);\n }\n }\n this._port = undefined;\n }\n}\n","import type {\n Transport,\n TransportSendOptions,\n} from '@modelcontextprotocol/sdk/shared/transport.js';\nimport { type JSONRPCMessage, JSONRPCMessageSchema } from '@modelcontextprotocol/sdk/types.js';\n\n/**\n * Server transport for Chrome extensions using Port-based messaging.\n * This transport handles a single client connection through Chrome's port messaging API.\n * It should be used in the extension's background service worker.\n */\nexport class ExtensionServerTransport implements Transport {\n private _port: chrome.runtime.Port;\n private _started = false;\n private _messageHandler?: (message: any, port: chrome.runtime.Port) => void;\n private _disconnectHandler?: (port: chrome.runtime.Port) => void;\n\n onclose?: () => void;\n onerror?: (error: Error) => void;\n onmessage?: (message: JSONRPCMessage) => void;\n\n constructor(port: chrome.runtime.Port) {\n this._port = port;\n }\n\n /**\n * Starts the transport and begins handling messages\n */\n async start(): Promise<void> {\n if (this._started) {\n throw new Error(\n 'ExtensionServerTransport already started! If using Server class, note that connect() calls start() automatically.'\n );\n }\n\n if (!this._port) {\n throw new Error('Port not available');\n }\n\n this._started = true;\n\n // Set up message handler\n this._messageHandler = (message: any) => {\n try {\n const mcpMessage = JSONRPCMessageSchema.parse(message);\n this.onmessage?.(mcpMessage);\n } catch (error) {\n this.onerror?.(new Error(`Failed to parse message: ${error}`));\n }\n };\n\n // Set up disconnect handler\n this._disconnectHandler = () => {\n this._cleanup();\n this.onclose?.();\n };\n\n this._port.onMessage.addListener(this._messageHandler);\n this._port.onDisconnect.addListener(this._disconnectHandler);\n }\n\n /**\n * Sends a message to the client\n */\n async send(message: JSONRPCMessage, _options?: TransportSendOptions): Promise<void> {\n if (!this._started) {\n throw new Error('Transport not started');\n }\n\n if (!this._port) {\n throw new Error('Not connected to client');\n }\n\n try {\n this._port.postMessage(message);\n } catch (error) {\n throw new Error(`Failed to send message: ${error}`);\n }\n }\n\n /**\n * Closes the transport\n */\n async close(): Promise<void> {\n this._started = false;\n\n if (this._port) {\n try {\n this._port.disconnect();\n } catch (error) {\n // Port might already be disconnected\n }\n }\n\n this._cleanup();\n this.onclose?.();\n }\n\n /**\n * Cleans up event listeners and references\n */\n private _cleanup(): void {\n if (this._port) {\n if (this._messageHandler) {\n this._port.onMessage.removeListener(this._messageHandler);\n }\n if (this._disconnectHandler) {\n this._port.onDisconnect.removeListener(this._disconnectHandler);\n }\n }\n }\n}\n","import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';\nimport { type JSONRPCMessage, JSONRPCMessageSchema } from '@modelcontextprotocol/sdk/types.js';\n\n// Type declaration for Promise.withResolvers() if not available in current TypeScript version\n// declare global {\n// interface PromiseConstructor {\n// withResolvers<T>(): {\n// promise: Promise<T>;\n// resolve: (value: T | PromiseLike<T>) => void;\n// reject: (reason?: any) => void;\n// };\n// }\n// }\n\nexport interface TabClientTransportOptions {\n targetOrigin: string; // Required for security\n channelId?: string; // Optional channel name\n}\n\nexport class TabClientTransport implements Transport {\n private _started = false;\n private _targetOrigin: string;\n private _channelId: string;\n private _messageHandler?: (event: MessageEvent) => void;\n public readonly serverReadyPromise: Promise<void>;\n private _serverReadyResolve: () => void;\n private _serverReadyReject: (reason: any) => void;\n\n onclose?: () => void;\n onerror?: (error: Error) => void;\n onmessage?: (message: JSONRPCMessage) => void;\n\n constructor(options: TabClientTransportOptions) {\n if (!options.targetOrigin) {\n throw new Error('targetOrigin must be explicitly set for security');\n }\n this._targetOrigin = options.targetOrigin;\n this._channelId = options.channelId || 'mcp-default';\n\n // Create the server ready promise in constructor so it's available immediately\n const { promise, resolve, reject } = Promise.withResolvers<void>();\n this.serverReadyPromise = promise;\n this._serverReadyResolve = resolve;\n this._serverReadyReject = reject;\n }\n\n async start(): Promise<void> {\n if (this._started) {\n throw new Error('Transport already started');\n }\n\n this._messageHandler = (event: MessageEvent) => {\n // Security: validate origin\n if (event.origin !== this._targetOrigin) {\n return;\n }\n\n // Validate message structure\n if (event.data?.channel !== this._channelId || event.data?.type !== 'mcp') {\n return;\n }\n\n // Only process server-to-client messages to avoid processing own messages\n if (event.data?.direction !== 'server-to-client') {\n return;\n }\n\n // Handle server ready signal\n if (event.data.payload === 'mcp-server-ready') {\n this._serverReadyResolve();\n return;\n }\n\n try {\n const message = JSONRPCMessageSchema.parse(event.data.payload);\n this.onmessage?.(message);\n } catch (error) {\n this.onerror?.(new Error(`Invalid message: ${error}`));\n }\n };\n\n window.addEventListener('message', this._messageHandler);\n this._started = true;\n }\n\n async send(message: JSONRPCMessage): Promise<void> {\n if (!this._started) {\n throw new Error('Transport not started');\n }\n\n window.postMessage(\n {\n channel: this._channelId,\n type: 'mcp',\n direction: 'client-to-server', // Mark as client-to-server message\n payload: message,\n },\n this._targetOrigin\n );\n }\n\n async close(): Promise<void> {\n if (this._messageHandler) {\n window.removeEventListener('message', this._messageHandler);\n }\n\n // Reject the server ready promise if it hasn't been resolved yet\n this._serverReadyReject(new Error('Transport closed before server ready'));\n\n this._started = false;\n this.onclose?.();\n }\n}\n","import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';\nimport { type JSONRPCMessage, JSONRPCMessageSchema } from '@modelcontextprotocol/sdk/types.js';\n\nexport interface TabServerTransportOptions {\n allowedOrigins: string[]; // Required for security\n channelId?: string; // Optional channel name\n}\n\nexport class TabServerTransport implements Transport {\n private _started = false;\n private _allowedOrigins: string[] | '*';\n private _channelId: string;\n private _messageHandler?: (event: MessageEvent) => void;\n private _clientOrigin?: string;\n\n onclose?: () => void;\n onerror?: (error: Error) => void;\n onmessage?: (message: JSONRPCMessage) => void;\n\n constructor(options: TabServerTransportOptions) {\n if (!options.allowedOrigins || options.allowedOrigins.length === 0) {\n throw new Error('At least one allowed origin must be specified');\n }\n this._allowedOrigins = options.allowedOrigins;\n this._channelId = options.channelId || 'mcp-default';\n }\n\n async start(): Promise<void> {\n if (this._started) {\n throw new Error('Transport already started');\n }\n\n this._messageHandler = (event: MessageEvent) => {\n console.log({ event });\n // Security: validate origin\n if (!this._allowedOrigins.includes(event.origin) && !this._allowedOrigins.includes('*')) {\n return;\n }\n\n // Validate message structure\n if (event.data?.channel !== this._channelId || event.data?.type !== 'mcp') {\n return;\n }\n\n // Only process client-to-server messages to avoid processing own messages\n if (event.data?.direction !== 'client-to-server') {\n return;\n }\n\n // Store client origin for responses\n this._clientOrigin = event.origin;\n\n try {\n const message = JSONRPCMessageSchema.parse(event.data.payload);\n this.onmessage?.(message);\n } catch (error) {\n this.onerror?.(new Error(`Invalid message: ${error}`));\n }\n };\n\n window.addEventListener('message', this._messageHandler);\n this._started = true;\n\n // Broadcast server ready to all allowed origins\n window.postMessage(\n {\n channel: this._channelId,\n type: 'mcp',\n direction: 'server-to-client',\n payload: 'mcp-server-ready',\n },\n '*'\n );\n }\n\n async send(message: JSONRPCMessage): Promise<void> {\n if (!this._started) {\n throw new Error('Transport not started');\n }\n\n if (!this._clientOrigin) {\n throw new Error('No client connected');\n }\n\n window.postMessage(\n {\n channel: this._channelId,\n type: 'mcp',\n direction: 'server-to-client', // Mark as server-to-client message\n payload: message,\n },\n this._clientOrigin\n );\n }\n\n async close(): Promise<void> {\n if (this._messageHandler) {\n window.removeEventListener('message', this._messageHandler);\n }\n this._started = false;\n this.onclose?.();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/browser-types.ts","../src/ExtensionClientTransport.ts","../src/ExtensionServerTransport.ts","../src/NativeClientTransport.ts","../src/NativeServerTransport.ts","../src/TabClientTransport.ts","../src/TabServerTransport.ts"],"names":["NativeMessageType","NATIVE_HOST","ERROR_MESSAGES","SUCCESS_MESSAGES","STORAGE_KEYS","BACKGROUND_MESSAGE_TYPES","HOST_NAME","ExtensionClientTransport","options","resolve","reject","message","mcpMessage","JSONRPCMessageSchema","error","_options","ExtensionServerTransport","port","NativeClientTransport","_stdin","process","_stdout","ReadBuffer","chunk","json","serializeMessage","NativeServerTransport","TabClientTransport","promise","reason","event","payload","TabServerTransport"],"mappings":"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","file":"index.js","sourcesContent":["import type { JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js';\n\n/**\n * Unique identifier for an event in the event store\n */\nexport type EventId = string;\n\n/**\n * Unique identifier for a stream of events\n */\nexport type StreamId = string;\n\n/**\n * Options for connecting to an MCP server\n */\nexport interface MCPConnectOptions {\n /**\n * The event ID to resume from if reconnecting\n */\n resumeFrom?: EventId;\n}\n\n/**\n * Information about the MCP server\n */\nexport interface MCPServerInfo {\n /**\n * Unique identifier for this server instance\n */\n instanceId: string;\n /**\n * Whether the server maintains session state\n */\n stateful: boolean;\n /**\n * Whether the server has event storage enabled\n */\n hasEventStore: boolean;\n}\n\n/**\n * Event storage interface for accessing stored events\n */\nexport interface MCPEventStore {\n /**\n * Get stored events, optionally filtered by client and/or after a specific event\n * @param clientId - Optional client ID to filter events\n * @param afterEventId - Optional event ID to get events after\n * @param limit - Maximum number of events to return (default: 100)\n */\n getEvents(clientId?: string, afterEventId?: EventId, limit?: number): StoredEvent[];\n\n /**\n * Get the ID of the last event, optionally for a specific client\n * @param clientId - Optional client ID to filter by\n */\n getLastEventId(clientId?: string): EventId | null;\n\n /**\n * Clear stored events, optionally for a specific client\n * @param clientId - Optional client ID to clear events for\n */\n clearEvents(clientId?: string): void;\n}\n\n/**\n * The MCP interface exposed on window for browser environments\n */\nexport interface MCPBrowserInterface {\n /**\n * Connect a client to the MCP server\n * @param clientId - Unique identifier for the client\n * @param options - Optional connection options\n * @returns MessagePort for communication or null if connection fails\n */\n connect(clientId: string, options?: MCPConnectOptions): MessagePort | null;\n\n /**\n * Disconnect a client from the MCP server\n * @param clientId - The client ID to disconnect\n */\n disconnect(clientId: string): void;\n\n /**\n * Terminate a client's session and clean up all associated resources\n * @param clientId - The client ID to terminate\n */\n terminateSession?(clientId: string): void;\n\n /**\n * Check if the MCP server is available and running\n */\n isServerAvailable(): boolean;\n\n /**\n * Get information about the MCP server\n */\n getServerInfo(): MCPServerInfo;\n\n /**\n * Event storage access (only available in stateful mode with event store)\n */\n events?: MCPEventStore;\n}\n\n/**\n * Extended Window interface with MCP support\n */\nexport interface MCPWindow extends Window {\n mcp?: MCPBrowserInterface;\n}\n\n/**\n * Message types for internal MCP communication\n */\nexport interface MCPServerInfoMessage {\n type: 'mcp-server-info';\n serverInstanceId: string;\n serverSessionId?: string;\n hasEventStore: boolean;\n streamId: StreamId;\n}\n\nexport interface MCPEventMessage {\n type: 'mcp-event';\n eventId: EventId;\n message: JSONRPCMessage;\n}\n\nexport interface MCPReplayEventMessage {\n type: 'mcp-replay-event';\n eventId: EventId;\n message: JSONRPCMessage;\n}\n\n/**\n * Stored event with metadata for event sourcing\n */\nexport interface StoredEvent {\n eventId: EventId;\n streamId: StreamId;\n message: JSONRPCMessage;\n timestamp: number;\n clientId: string;\n}\n\nexport enum NativeMessageType {\n START = 'start',\n STARTED = 'started',\n STOP = 'stop',\n STOPPED = 'stopped',\n PING = 'ping',\n PONG = 'pong',\n ERROR = 'error',\n LIST_TOOLS = 'list_tools',\n CALL_TOOL = 'call_tool',\n TOOL_LIST_UPDATED = 'tool_list_updated',\n TOOL_LIST_UPDATED_ACK = 'tool_list_updated_ack',\n PROCESS_DATA = 'process_data',\n\n // Additional message types used in Chrome extension\n SERVER_STARTED = 'server_started',\n SERVER_STOPPED = 'server_stopped',\n ERROR_FROM_NATIVE_HOST = 'error_from_native_host',\n CONNECT_NATIVE = 'connectNative',\n PING_NATIVE = 'ping_native',\n DISCONNECT_NATIVE = 'disconnect_native',\n}\n\n/**\n * Chrome Extension Constants\n * Centralized configuration values and magic constants\n */\n\n// Native Host Configuration\nexport const NATIVE_HOST = {\n NAME: 'com.chromemcp.nativehost',\n DEFAULT_PORT: 12306,\n} as const;\n\n// Error Messages\nexport const ERROR_MESSAGES = {\n NATIVE_CONNECTION_FAILED: 'Failed to connect to native host',\n NATIVE_DISCONNECTED: 'Native connection disconnected',\n SERVER_STATUS_LOAD_FAILED: 'Failed to load server status',\n TOOL_EXECUTION_FAILED: 'Tool execution failed',\n SERVER_STATUS_SAVE_FAILED: 'Failed to save server status',\n} as const;\n\n// Success Messages\nexport const SUCCESS_MESSAGES = {\n TOOL_EXECUTED: 'Tool executed successfully',\n CONNECTION_ESTABLISHED: 'Connection established',\n SERVER_STARTED: 'Server started successfully',\n SERVER_STOPPED: 'Server stopped successfully',\n} as const;\n\n// Storage Keys\nexport const STORAGE_KEYS = {\n SERVER_STATUS: 'serverStatus',\n} as const;\n\n// Background script message types\nexport const BACKGROUND_MESSAGE_TYPES = {\n GET_SERVER_STATUS: 'get_server_status',\n REFRESH_SERVER_STATUS: 'refresh_server_status',\n SERVER_STATUS_CHANGED: 'server_status_changed',\n} as const;\n\nexport const HOST_NAME = NATIVE_HOST.NAME;\n\n/**\n * Server status management interface\n */\nexport interface ServerStatus {\n isRunning: boolean;\n port?: number;\n lastUpdated: number;\n}\n","import type {\n Transport,\n TransportSendOptions,\n} from '@modelcontextprotocol/sdk/shared/transport.js';\nimport { type JSONRPCMessage, JSONRPCMessageSchema } from '@modelcontextprotocol/sdk/types.js';\n\n/**\n * Configuration options for ExtensionClientTransport\n */\nexport interface ExtensionClientTransportOptions {\n /**\n * The extension ID to connect to (optional for same-extension connections)\n */\n extensionId?: string;\n\n /**\n * Port name for the connection\n * Default: 'mcp'\n */\n portName?: string;\n}\n\n/**\n * Client transport for Chrome extensions using Port-based messaging.\n * This transport can be used in content scripts, popup scripts, or sidepanel scripts\n * to connect to a server running in the background service worker.\n */\nexport class ExtensionClientTransport implements Transport {\n private _port?: chrome.runtime.Port;\n private _extensionId?: string;\n private _portName: string;\n private _messageHandler?: (message: any) => void;\n private _disconnectHandler?: () => void;\n\n onclose?: () => void;\n onerror?: (error: Error) => void;\n onmessage?: (message: JSONRPCMessage) => void;\n\n constructor(options: ExtensionClientTransportOptions = {}) {\n this._extensionId = options.extensionId;\n this._portName = options.portName || 'mcp';\n }\n\n /**\n * Starts the transport by connecting to the extension port\n */\n async start(): Promise<void> {\n if (this._port) {\n console.warn(\n 'ExtensionClientTransport already started! If using Client class, note that connect() calls start() automatically.'\n );\n // throw new Error(\n // 'ExtensionClientTransport already started! If using Client class, note that connect() calls start() automatically.'\n // );\n return;\n }\n\n return new Promise((resolve, reject) => {\n if (!chrome?.runtime?.connect) {\n reject(\n new Error(\n 'Chrome runtime API not available. This transport must be used in a Chrome extension context.'\n )\n );\n return;\n }\n\n try {\n // Connect to the extension\n if (this._extensionId) {\n this._port = chrome.runtime.connect(this._extensionId, { name: this._portName });\n } else {\n this._port = chrome.runtime.connect({ name: this._portName });\n }\n\n // Set up message handler\n this._messageHandler = (message: any) => {\n try {\n const mcpMessage = JSONRPCMessageSchema.parse(message);\n this.onmessage?.(mcpMessage);\n } catch (error) {\n this.onerror?.(new Error(`Failed to parse message: ${error}`));\n }\n };\n\n // Set up disconnect handler\n this._disconnectHandler = () => {\n this._cleanup();\n this.onclose?.();\n };\n\n this._port.onMessage.addListener(this._messageHandler);\n this._port.onDisconnect.addListener(this._disconnectHandler);\n\n // Check for immediate connection errors\n const error = chrome.runtime.lastError;\n if (error) {\n this._cleanup();\n reject(new Error(`Connection failed: ${error.message}`));\n return;\n }\n\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n }\n\n /**\n * Sends a message to the server\n */\n async send(message: JSONRPCMessage, _options?: TransportSendOptions): Promise<void> {\n if (!this._port) {\n throw new Error('Not connected');\n }\n\n try {\n this._port.postMessage(message);\n } catch (error) {\n throw new Error(`Failed to send message: ${error}`);\n }\n }\n\n /**\n * Closes the transport\n */\n async close(): Promise<void> {\n if (this._port) {\n try {\n this._port.disconnect();\n } catch (error) {\n // Port might already be disconnected\n }\n }\n\n this._cleanup();\n this.onclose?.();\n }\n\n /**\n * Cleans up event listeners and references\n */\n private _cleanup(): void {\n if (this._port) {\n if (this._messageHandler) {\n this._port.onMessage.removeListener(this._messageHandler);\n }\n if (this._disconnectHandler) {\n this._port.onDisconnect.removeListener(this._disconnectHandler);\n }\n }\n this._port = undefined;\n }\n}\n","import type {\n Transport,\n TransportSendOptions,\n} from '@modelcontextprotocol/sdk/shared/transport.js';\nimport { type JSONRPCMessage, JSONRPCMessageSchema } from '@modelcontextprotocol/sdk/types.js';\n\n/**\n * Server transport for Chrome extensions using Port-based messaging.\n * This transport handles a single client connection through Chrome's port messaging API.\n * It should be used in the extension's background service worker.\n */\nexport class ExtensionServerTransport implements Transport {\n private _port: chrome.runtime.Port;\n private _started = false;\n private _messageHandler?: (message: any, port: chrome.runtime.Port) => void;\n private _disconnectHandler?: (port: chrome.runtime.Port) => void;\n\n onclose?: () => void;\n onerror?: (error: Error) => void;\n onmessage?: (message: JSONRPCMessage) => void;\n\n constructor(port: chrome.runtime.Port) {\n this._port = port;\n }\n\n /**\n * Starts the transport and begins handling messages\n */\n async start(): Promise<void> {\n if (this._started) {\n throw new Error(\n 'ExtensionServerTransport already started! If using Server class, note that connect() calls start() automatically.'\n );\n }\n\n if (!this._port) {\n throw new Error('Port not available');\n }\n\n this._started = true;\n\n // Set up message handler\n this._messageHandler = (message: any) => {\n try {\n const mcpMessage = JSONRPCMessageSchema.parse(message);\n this.onmessage?.(mcpMessage);\n } catch (error) {\n this.onerror?.(new Error(`Failed to parse message: ${error}`));\n }\n };\n\n // Set up disconnect handler\n this._disconnectHandler = () => {\n this._cleanup();\n this.onclose?.();\n };\n\n this._port.onMessage.addListener(this._messageHandler);\n this._port.onDisconnect.addListener(this._disconnectHandler);\n }\n\n /**\n * Sends a message to the client\n */\n async send(message: JSONRPCMessage, _options?: TransportSendOptions): Promise<void> {\n if (!this._started) {\n throw new Error('Transport not started');\n }\n\n if (!this._port) {\n throw new Error('Not connected to client');\n }\n\n try {\n this._port.postMessage(message);\n } catch (error) {\n throw new Error(`Failed to send message: ${error}`);\n }\n }\n\n /**\n * Closes the transport\n */\n async close(): Promise<void> {\n this._started = false;\n\n if (this._port) {\n try {\n this._port.disconnect();\n } catch (error) {\n // Port might already be disconnected\n }\n }\n\n this._cleanup();\n this.onclose?.();\n }\n\n /**\n * Cleans up event listeners and references\n */\n private _cleanup(): void {\n if (this._port) {\n if (this._messageHandler) {\n this._port.onMessage.removeListener(this._messageHandler);\n }\n if (this._disconnectHandler) {\n this._port.onDisconnect.removeListener(this._disconnectHandler);\n }\n }\n }\n}\n","import process from 'node:process';\nimport type { Readable, Writable } from 'node:stream';\nimport { ReadBuffer, serializeMessage } from '@modelcontextprotocol/sdk/shared/stdio.js';\nimport type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';\nimport type { JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js';\n\n/**\n * Client transport for Native Messaging: this communicates with a server in the Chrome extension by reading from the current process' stdin and writing to stdout.\n *\n * This transport is only available in Node.js environments.\n */\nexport class NativeClientTransport implements Transport {\n private _readBuffer: ReadBuffer = new ReadBuffer();\n private _started = false;\n\n constructor(\n private _stdin: Readable = process.stdin,\n private _stdout: Writable = process.stdout\n ) {}\n\n onclose?: () => void;\n onerror?: (error: Error) => void;\n onmessage?: (message: JSONRPCMessage) => void;\n\n // Arrow functions to bind `this` properly, while maintaining function identity.\n _ondata = (chunk: Buffer) => {\n this._readBuffer.append(chunk);\n this.processReadBuffer();\n };\n _onerror = (error: Error) => {\n this.onerror?.(error);\n };\n\n /**\n * Starts listening for messages on stdin.\n */\n async start(): Promise<void> {\n if (this._started) {\n throw new Error(\n 'NativeClientTransport already started! If using Client class, note that connect() calls start() automatically.'\n );\n }\n\n this._started = true;\n this._stdin.on('data', this._ondata);\n this._stdin.on('error', this._onerror);\n }\n\n private processReadBuffer() {\n while (true) {\n try {\n const message = this._readBuffer.readMessage();\n if (message === null) {\n break;\n }\n\n this.onmessage?.(message);\n } catch (error) {\n this.onerror?.(error as Error);\n }\n }\n }\n\n async close(): Promise<void> {\n // Remove our event listeners first\n this._stdin.off('data', this._ondata);\n this._stdin.off('error', this._onerror);\n\n // Check if we were the only data listener\n const remainingDataListeners = this._stdin.listenerCount('data');\n if (remainingDataListeners === 0) {\n // Only pause stdin if we were the only listener\n // This prevents interfering with other parts of the application that might be using stdin\n this._stdin.pause();\n }\n\n // Clear the buffer and notify closure\n this._readBuffer.clear();\n this.onclose?.();\n }\n\n send(message: JSONRPCMessage): Promise<void> {\n return new Promise((resolve) => {\n const json = serializeMessage(message);\n if (this._stdout.write(json)) {\n resolve();\n } else {\n this._stdout.once('drain', resolve);\n }\n });\n }\n}\n","import type {\n Transport,\n TransportSendOptions,\n} from '@modelcontextprotocol/sdk/shared/transport.js';\nimport { type JSONRPCMessage, JSONRPCMessageSchema } from '@modelcontextprotocol/sdk/types.js';\n\n/**\n * Server transport for Native Messaging using Port-based messaging.\n * This transport handles a single client connection through Chrome's native messaging Port API.\n * It should be used in the extension's background service worker.\n */\nexport class NativeServerTransport implements Transport {\n private _port: chrome.runtime.Port;\n private _started = false;\n private _messageHandler?: (message: any, port: chrome.runtime.Port) => void;\n private _disconnectHandler?: (port: chrome.runtime.Port) => void;\n\n onclose?: () => void;\n onerror?: (error: Error) => void;\n onmessage?: (message: JSONRPCMessage) => void;\n\n constructor(port: chrome.runtime.Port) {\n this._port = port;\n }\n\n /**\n * Starts the transport and begins handling messages\n */\n async start(): Promise<void> {\n if (this._started) {\n throw new Error(\n 'NativeServerTransport already started! If using Server class, note that connect() calls start() automatically.'\n );\n }\n\n if (!this._port) {\n throw new Error('Port not available');\n }\n\n this._started = true;\n\n // Set up message handler\n this._messageHandler = (message: any) => {\n try {\n const mcpMessage = JSONRPCMessageSchema.parse(message);\n this.onmessage?.(mcpMessage);\n } catch (error) {\n this.onerror?.(new Error(`Failed to parse message: ${error}`));\n }\n };\n\n // Set up disconnect handler\n this._disconnectHandler = () => {\n this._cleanup();\n this.onclose?.();\n };\n\n this._port.onMessage.addListener(this._messageHandler);\n this._port.onDisconnect.addListener(this._disconnectHandler);\n }\n\n /**\n * Sends a message to the client\n */\n async send(message: JSONRPCMessage, _options?: TransportSendOptions): Promise<void> {\n if (!this._started) {\n throw new Error('Transport not started');\n }\n\n if (!this._port) {\n throw new Error('Not connected to client');\n }\n\n try {\n this._port.postMessage(message);\n } catch (error) {\n throw new Error(`Failed to send message: ${error}`);\n }\n }\n\n /**\n * Closes the transport\n */\n async close(): Promise<void> {\n this._started = false;\n\n if (this._port) {\n try {\n this._port.disconnect();\n } catch (error) {\n // Port might already be disconnected\n }\n }\n\n this._cleanup();\n this.onclose?.();\n }\n\n /**\n * Cleans up event listeners and references\n */\n private _cleanup(): void {\n if (this._port) {\n if (this._messageHandler) {\n this._port.onMessage.removeListener(this._messageHandler);\n }\n if (this._disconnectHandler) {\n this._port.onDisconnect.removeListener(this._disconnectHandler);\n }\n }\n }\n}\n","// TabClientTransport.ts\n\nimport type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';\nimport { type JSONRPCMessage, JSONRPCMessageSchema } from '@modelcontextprotocol/sdk/types.js';\n\nexport interface TabClientTransportOptions {\n targetOrigin: string; // Required for security\n channelId?: string; // Optional channel name\n}\n\nexport class TabClientTransport implements Transport {\n private _started = false;\n private _targetOrigin: string;\n private _channelId: string;\n private _messageHandler?: (event: MessageEvent) => void;\n public readonly serverReadyPromise: Promise<void>;\n private _serverReadyResolve: () => void;\n private _serverReadyReject: (reason: any) => void;\n // private _retryInterval?: NodeJS.Timeout;\n\n onclose?: () => void;\n onerror?: (error: Error) => void;\n onmessage?: (message: JSONRPCMessage) => void;\n\n constructor(options: TabClientTransportOptions) {\n if (!options.targetOrigin) {\n throw new Error('targetOrigin must be explicitly set for security');\n }\n this._targetOrigin = options.targetOrigin;\n this._channelId = options.channelId || 'mcp-default';\n\n // Create the server ready promise in constructor so it's available immediately\n const { promise, resolve, reject } = Promise.withResolvers<void>();\n this.serverReadyPromise = promise;\n this._serverReadyResolve = () => {\n resolve();\n };\n this._serverReadyReject = (reason) => {\n reject(reason);\n };\n }\n\n async start(): Promise<void> {\n if (this._started) {\n throw new Error('Transport already started');\n }\n\n this._messageHandler = (event: MessageEvent) => {\n // Security: validate origin\n if (event.origin !== this._targetOrigin) {\n return;\n }\n\n // Validate message structure\n if (event.data?.channel !== this._channelId || event.data?.type !== 'mcp') {\n return;\n }\n\n // Only process server-to-client messages to avoid processing own messages\n if (event.data?.direction !== 'server-to-client') {\n return;\n }\n\n const payload = event.data.payload;\n\n // Handle server ready signal\n if (typeof payload === 'string' && payload === 'mcp-server-ready') {\n this._serverReadyResolve();\n return;\n }\n\n try {\n const message = JSONRPCMessageSchema.parse(payload);\n this._serverReadyResolve();\n this.onmessage?.(message);\n } catch (error) {\n this.onerror?.(\n new Error(`Invalid message: ${error instanceof Error ? error.message : String(error)}`)\n );\n }\n };\n\n window.addEventListener('message', this._messageHandler);\n this._started = true;\n\n // Send check-ready to prompt server if already started\n this.sendCheckReady();\n }\n\n private sendCheckReady() {\n window.postMessage(\n {\n channel: this._channelId,\n type: 'mcp',\n direction: 'client-to-server',\n payload: 'mcp-check-ready',\n },\n this._targetOrigin\n );\n }\n\n async send(message: JSONRPCMessage): Promise<void> {\n if (!this._started) {\n throw new Error('Transport not started');\n }\n\n // Await server ready before sending any JSON-RPC message\n await this.serverReadyPromise;\n\n window.postMessage(\n {\n channel: this._channelId,\n type: 'mcp',\n direction: 'client-to-server', // Mark as client-to-server message\n payload: message,\n },\n this._targetOrigin\n );\n }\n\n async close(): Promise<void> {\n if (this._messageHandler) {\n window.removeEventListener('message', this._messageHandler);\n }\n\n // Reject the server ready promise if it hasn't been resolved yet\n this._serverReadyReject(new Error('Transport closed before server ready'));\n\n this._started = false;\n this.onclose?.();\n }\n}\n","// TabServerTransport.ts\n\nimport type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';\nimport { type JSONRPCMessage, JSONRPCMessageSchema } from '@modelcontextprotocol/sdk/types.js';\n\nexport interface TabServerTransportOptions {\n allowedOrigins: string[]; // Required for security\n channelId?: string; // Optional channel name\n}\n\nexport class TabServerTransport implements Transport {\n private _started = false;\n private _allowedOrigins: string[];\n private _channelId: string;\n private _messageHandler?: (event: MessageEvent) => void;\n private _clientOrigin?: string;\n\n onclose?: () => void;\n onerror?: (error: Error) => void;\n onmessage?: (message: JSONRPCMessage) => void;\n\n constructor(options: TabServerTransportOptions) {\n if (!options.allowedOrigins || options.allowedOrigins.length === 0) {\n throw new Error('At least one allowed origin must be specified');\n }\n this._allowedOrigins = options.allowedOrigins;\n this._channelId = options.channelId || 'mcp-default';\n }\n\n async start(): Promise<void> {\n if (this._started) {\n throw new Error('Transport already started');\n }\n\n this._messageHandler = (event: MessageEvent) => {\n // Security: validate origin\n if (!this._allowedOrigins.includes(event.origin) && !this._allowedOrigins.includes('*')) {\n return;\n }\n\n // Validate message structure\n if (event.data?.channel !== this._channelId || event.data?.type !== 'mcp') {\n return;\n }\n\n // Only process client-to-server messages to avoid processing own messages\n if (event.data?.direction !== 'client-to-server') {\n return;\n }\n\n // Store client origin for responses\n this._clientOrigin = event.origin;\n\n const payload = event.data.payload;\n\n if (typeof payload === 'string' && payload === 'mcp-check-ready') {\n // Respond with server ready\n window.postMessage(\n {\n channel: this._channelId,\n type: 'mcp',\n direction: 'server-to-client',\n payload: 'mcp-server-ready',\n },\n this._clientOrigin\n );\n return;\n }\n\n try {\n const message = JSONRPCMessageSchema.parse(payload);\n this.onmessage?.(message);\n } catch (error) {\n this.onerror?.(\n new Error(`Invalid message: ${error instanceof Error ? error.message : String(error)}`)\n );\n }\n };\n\n window.addEventListener('message', this._messageHandler);\n this._started = true;\n\n // Broadcast server ready to all allowed origins\n window.postMessage(\n {\n channel: this._channelId,\n type: 'mcp',\n direction: 'server-to-client',\n payload: 'mcp-server-ready',\n },\n '*'\n );\n }\n\n async send(message: JSONRPCMessage): Promise<void> {\n if (!this._started) {\n throw new Error('Transport not started');\n }\n\n if (!this._clientOrigin) {\n throw new Error('No client connected');\n }\n\n window.postMessage(\n {\n channel: this._channelId,\n type: 'mcp',\n direction: 'server-to-client', // Mark as server-to-client message\n payload: message,\n },\n this._clientOrigin\n );\n }\n\n async close(): Promise<void> {\n if (this._messageHandler) {\n window.removeEventListener('message', this._messageHandler);\n }\n this._started = false;\n this.onclose?.();\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-b/transports",
3
- "version": "0.1.8",
3
+ "version": "1.0.0",
4
4
  "description": "Transports for the in browser transport protocols",
5
5
  "license": "MIT",
6
6
  "author": "Alex Nahas",
@@ -26,8 +26,9 @@
26
26
  "main": "./dist/index.js",
27
27
  "exports": {
28
28
  ".": {
29
- "import": "./dist/index.js",
30
- "types": "./dist/index.d.ts"
29
+ "types": "./dist/index.d.ts",
30
+ "require": "./dist/index.js",
31
+ "import": "./dist/index.js"
31
32
  }
32
33
  },
33
34
  "files": [