@bridgekitux/client 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,21 @@
1
+ # @bridgekitux/client
2
+
3
+ BridgeKit client SDK for WebContainers, browser IDEs, Bolt-style environments, and other restricted runtimes.
4
+
5
+ ## Install
6
+
7
+ ```sh
8
+ npm install @bridgekitux/client
9
+ ```
10
+
11
+ ## Use
12
+
13
+ ```ts
14
+ import { bridgekit } from '@bridgekitux/client';
15
+
16
+ await bridgekit.connect();
17
+ const db = await bridgekit.database('local-postgres');
18
+ const result = await db.query('SELECT * FROM patients LIMIT 10');
19
+ ```
20
+
21
+ The SDK routes requests through an approved BridgeKit transport instead of assuming direct access to the user's real localhost, files, or private network.
@@ -0,0 +1,204 @@
1
+ import { type BridgeKitManifest, type BridgeKitEventPayload, type CapabilityGrant, type CapabilityName, type PairPendingPayload, type RestrictedEnvironment, type StreamSendResultPayload } from '@bridgekitux/protocol';
2
+ import { type BridgeTransport } from './transport.js';
3
+ export interface BridgeKitConnectOptions {
4
+ appName?: string;
5
+ runtime?: RestrictedEnvironment;
6
+ manifest?: BridgeKitManifest | unknown;
7
+ bridgeUrl?: string;
8
+ transport?: BridgeTransport;
9
+ prefer?: 'auto' | 'direct-websocket' | 'browser-extension' | 'host-page' | 'mock';
10
+ fallback?: 'mock' | 'disabled';
11
+ pollIntervalMs?: number;
12
+ pairingTimeoutMs?: number;
13
+ }
14
+ export interface BridgeKitConnectionState {
15
+ connected: boolean;
16
+ sessionId?: string;
17
+ grants: CapabilityGrant[];
18
+ pairing?: PairPendingPayload;
19
+ transportKind?: string;
20
+ }
21
+ export type BridgeKitSubscriptionListener<TData = unknown> = (event: BridgeKitEventPayload<TData>) => void;
22
+ export interface BridgeKitStreamSendOptions {
23
+ encoding?: string;
24
+ binaryBase64?: string;
25
+ json?: unknown;
26
+ end?: boolean;
27
+ }
28
+ export interface BridgeKitSubscription {
29
+ id: string;
30
+ send(data?: unknown, options?: BridgeKitStreamSendOptions): Promise<StreamSendResultPayload>;
31
+ end(data?: unknown, options?: Omit<BridgeKitStreamSendOptions, 'end'>): Promise<StreamSendResultPayload>;
32
+ unsubscribe(): Promise<boolean>;
33
+ }
34
+ export declare class BridgeKitClient {
35
+ private readonly defaults;
36
+ private transport?;
37
+ private session?;
38
+ private manifest?;
39
+ constructor(defaults?: BridgeKitConnectOptions);
40
+ get state(): BridgeKitConnectionState;
41
+ isAvailable(): boolean;
42
+ connect(options?: BridgeKitConnectOptions): Promise<this>;
43
+ invoke<TResult = unknown>(capability: CapabilityName, resourceId: string | undefined, args?: unknown, operation?: string): Promise<TResult>;
44
+ subscribe<TData = unknown>(capability: CapabilityName, resourceId: string, args: unknown, operation: string | undefined, listener: BridgeKitSubscriptionListener<TData>): Promise<BridgeKitSubscription>;
45
+ private sendToSubscription;
46
+ database(resourceId: string): BridgeDatabase;
47
+ generic(resourceId: string): BridgeGenericResource;
48
+ files(resourceId: string): BridgeFileStore;
49
+ secret(resourceId: string): BridgeSecret;
50
+ http(resourceId: string): BridgeHttpResource;
51
+ tcp(resourceId: string): BridgeTcpResource;
52
+ websocket(resourceId: string): BridgeWebSocketResource;
53
+ port(resourceId: string): BridgePortResource;
54
+ process(resourceId: string): BridgeProcessResource;
55
+ logs(resourceId: string): BridgeLogResource;
56
+ close(): void;
57
+ }
58
+ export declare class BridgeDatabase {
59
+ private readonly client;
60
+ private readonly resourceId;
61
+ constructor(client: BridgeKitClient, resourceId: string);
62
+ connect(): Promise<unknown>;
63
+ query(sql: string, params?: unknown[]): Promise<any>;
64
+ inspectSchema(): Promise<any>;
65
+ listTables(): Promise<any>;
66
+ listCollections(): Promise<any>;
67
+ runMigration(sql: string): Promise<any>;
68
+ raw(args: unknown): Promise<any>;
69
+ command(command: Record<string, unknown>): Promise<any>;
70
+ close(): Promise<unknown>;
71
+ }
72
+ export declare class BridgeGenericResource {
73
+ private readonly client;
74
+ private readonly resourceId;
75
+ constructor(client: BridgeKitClient, resourceId: string);
76
+ invoke<TResult = unknown>(capability: CapabilityName, args?: unknown, operation?: string): Promise<TResult>;
77
+ database(): BridgeDatabase;
78
+ files(): BridgeFileStore;
79
+ secret(): BridgeSecret;
80
+ http(): BridgeHttpResource;
81
+ tcp(): BridgeTcpResource;
82
+ websocket(): BridgeWebSocketResource;
83
+ port(): BridgePortResource;
84
+ process(): BridgeProcessResource;
85
+ logs(): BridgeLogResource;
86
+ }
87
+ export declare class BridgeFileStore {
88
+ private readonly client;
89
+ private readonly resourceId;
90
+ constructor(client: BridgeKitClient, resourceId: string);
91
+ read(path: string, encoding?: string): Promise<any>;
92
+ write(path: string, content: string, encoding?: string): Promise<any>;
93
+ list(path?: string): Promise<any>;
94
+ mkdir(path: string): Promise<any>;
95
+ delete(path: string, options?: {
96
+ recursive?: boolean;
97
+ force?: boolean;
98
+ }): Promise<any>;
99
+ watch(path: string | undefined, listener: BridgeKitSubscriptionListener, options?: {
100
+ recursive?: boolean;
101
+ includeInitial?: boolean;
102
+ debounceMs?: number;
103
+ }): Promise<BridgeKitSubscription>;
104
+ }
105
+ export declare class BridgeSecret {
106
+ private readonly client;
107
+ private readonly resourceId;
108
+ constructor(client: BridgeKitClient, resourceId: string);
109
+ resolve(): Promise<any>;
110
+ create(value: string): Promise<any>;
111
+ revoke(): Promise<any>;
112
+ }
113
+ export declare class BridgeHttpResource {
114
+ private readonly client;
115
+ private readonly resourceId;
116
+ constructor(client: BridgeKitClient, resourceId: string);
117
+ request(path: string, init?: {
118
+ method?: string;
119
+ headers?: Record<string, string>;
120
+ body?: string;
121
+ }): Promise<any>;
122
+ raw(path: string, init?: {
123
+ method?: string;
124
+ headers?: Record<string, string>;
125
+ body?: string;
126
+ }): Promise<any>;
127
+ stream(path: string, init: {
128
+ method?: string;
129
+ headers?: Record<string, string>;
130
+ body?: string;
131
+ } | undefined, listener: BridgeKitSubscriptionListener): Promise<BridgeKitSubscription>;
132
+ rawStream(path: string, init: {
133
+ method?: string;
134
+ headers?: Record<string, string>;
135
+ body?: string;
136
+ eventMode?: "chunks" | "lines" | "sse";
137
+ idleTimeoutMs?: number;
138
+ } | undefined, listener: BridgeKitSubscriptionListener): Promise<BridgeKitSubscription>;
139
+ }
140
+ export declare class BridgeTcpResource {
141
+ private readonly client;
142
+ private readonly resourceId;
143
+ constructor(client: BridgeKitClient, resourceId: string);
144
+ connect(args?: {
145
+ data?: string;
146
+ encoding?: string;
147
+ timeoutMs?: number;
148
+ end?: boolean;
149
+ readUntilClose?: boolean;
150
+ }): Promise<any>;
151
+ stream(args: {
152
+ data?: string;
153
+ encoding?: string;
154
+ timeoutMs?: number;
155
+ idleTimeoutMs?: number;
156
+ noDelay?: boolean;
157
+ keepAlive?: boolean;
158
+ } | undefined, listener: BridgeKitSubscriptionListener): Promise<BridgeKitSubscription>;
159
+ }
160
+ export declare class BridgeWebSocketResource {
161
+ private readonly client;
162
+ private readonly resourceId;
163
+ constructor(client: BridgeKitClient, resourceId: string);
164
+ connect(args: {
165
+ path?: string;
166
+ protocols?: string[];
167
+ headers?: Record<string, string>;
168
+ data?: string;
169
+ json?: unknown;
170
+ timeoutMs?: number;
171
+ } | undefined, listener: BridgeKitSubscriptionListener): Promise<BridgeKitSubscription>;
172
+ }
173
+ export declare class BridgePortResource {
174
+ private readonly client;
175
+ private readonly resourceId;
176
+ constructor(client: BridgeKitClient, resourceId: string);
177
+ forward(): Promise<any>;
178
+ status(): Promise<any>;
179
+ close(): Promise<any>;
180
+ }
181
+ export declare class BridgeProcessResource {
182
+ private readonly client;
183
+ private readonly resourceId;
184
+ constructor(client: BridgeKitClient, resourceId: string);
185
+ start(args?: string[]): Promise<any>;
186
+ stop(): Promise<any>;
187
+ restart(): Promise<any>;
188
+ status(): Promise<any>;
189
+ logs(): Promise<any>;
190
+ subscribeLogs(listener: BridgeKitSubscriptionListener): Promise<BridgeKitSubscription>;
191
+ }
192
+ export declare class BridgeLogResource {
193
+ private readonly client;
194
+ private readonly resourceId;
195
+ constructor(client: BridgeKitClient, resourceId: string);
196
+ subscribe(listener: BridgeKitSubscriptionListener, options?: {
197
+ fromStart?: boolean;
198
+ }): Promise<BridgeKitSubscription>;
199
+ }
200
+ export declare function createDefaultTransport(options: BridgeKitConnectOptions): BridgeTransport;
201
+ export declare function detectRuntime(): RestrictedEnvironment;
202
+ export declare function defaultBridgeUrl(): string;
203
+ export declare function loadBridgeKitManifest(path?: string): Promise<BridgeKitManifest>;
204
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,365 @@
1
+ import { bridgeKitError, validateManifest } from '@bridgekitux/protocol';
2
+ import { DirectWebSocketTransport, MockTransport, WindowBridgeTransport } from './transport.js';
3
+ export class BridgeKitClient {
4
+ defaults;
5
+ transport;
6
+ session;
7
+ manifest;
8
+ constructor(defaults = {}) {
9
+ this.defaults = defaults;
10
+ }
11
+ get state() {
12
+ return {
13
+ connected: Boolean(this.session),
14
+ sessionId: this.session?.sessionId,
15
+ grants: this.session?.grants ?? [],
16
+ transportKind: this.transport?.kind
17
+ };
18
+ }
19
+ isAvailable() {
20
+ if (typeof WebSocket !== 'undefined')
21
+ return true;
22
+ if (typeof window !== 'undefined')
23
+ return true;
24
+ return false;
25
+ }
26
+ async connect(options = {}) {
27
+ const merged = { ...this.defaults, ...options };
28
+ if (merged.manifest)
29
+ this.manifest = validateManifest(merged.manifest);
30
+ const appName = merged.appName ?? this.manifest?.name ?? 'bridgekit-app';
31
+ const runtime = merged.runtime ?? this.manifest?.runtime ?? detectRuntime();
32
+ this.transport = merged.transport ?? createDefaultTransport(merged);
33
+ if (this.transport.kind === 'mock') {
34
+ this.session = { sessionId: 'mock-session', sessionToken: 'mock-token', grants: [] };
35
+ return this;
36
+ }
37
+ await this.transport.request('hello', { appName, runtime, origin: currentOrigin(), manifest: this.manifest, sdkVersion: '0.1.0' });
38
+ if (!this.manifest)
39
+ throw bridgeKitError('manifest_required', 'BridgeKit connect requires a bridgekit.config.json manifest or manifest object');
40
+ const pairResponse = await this.transport.request('pair.request', { appName, runtime, origin: currentOrigin(), manifest: this.manifest });
41
+ if (pairResponse.type === 'pair.approved') {
42
+ this.session = pairResponse.payload;
43
+ return this;
44
+ }
45
+ if (pairResponse.type !== 'pair.pending') {
46
+ throw bridgeKitError('pairing_failed', `Unexpected pairing response: ${pairResponse.type}`);
47
+ }
48
+ const pending = pairResponse.payload;
49
+ const deadline = Date.now() + (merged.pairingTimeoutMs ?? 120_000);
50
+ while (Date.now() <= deadline) {
51
+ await delay(merged.pollIntervalMs ?? 1_500);
52
+ const status = await this.transport.request('pair.status', { pairingId: pending.pairingId });
53
+ if (status.type === 'pair.approved') {
54
+ this.session = status.payload;
55
+ return this;
56
+ }
57
+ if (status.error)
58
+ throw Object.assign(new Error(status.error.message), { bridgeKit: status.error });
59
+ }
60
+ throw bridgeKitError('pairing_timeout', `BridgeKit pairing timed out. Approval code: ${pending.code}`);
61
+ }
62
+ async invoke(capability, resourceId, args, operation) {
63
+ if (!this.transport || !this.session)
64
+ throw bridgeKitError('not_connected', 'Call bridgekit.connect() before invoking capabilities');
65
+ const payload = { sessionToken: this.session.sessionToken, capability, resourceId, args, operation };
66
+ const response = await this.transport.request('invoke', payload);
67
+ return response.payload.result;
68
+ }
69
+ async subscribe(capability, resourceId, args, operation, listener) {
70
+ if (!this.transport || !this.session)
71
+ throw bridgeKitError('not_connected', 'Call bridgekit.connect() before subscribing to capabilities');
72
+ const payload = { sessionToken: this.session.sessionToken, capability, resourceId, args, operation };
73
+ const bufferedEvents = [];
74
+ const removeBuffer = this.transport.onEvent((event) => bufferedEvents.push(event));
75
+ let response;
76
+ try {
77
+ response = await this.transport.request('subscribe', payload);
78
+ }
79
+ catch (error) {
80
+ removeBuffer();
81
+ throw error;
82
+ }
83
+ const subscriptionId = response.payload.subscriptionId;
84
+ const removeListener = this.transport.onEvent((event) => {
85
+ if (event.subscriptionId === subscriptionId)
86
+ listener(event);
87
+ });
88
+ for (const event of bufferedEvents) {
89
+ if (event.subscriptionId === subscriptionId)
90
+ listener(event);
91
+ }
92
+ removeBuffer();
93
+ return {
94
+ id: subscriptionId,
95
+ send: (data, options = {}) => this.sendToSubscription(subscriptionId, data, options),
96
+ end: (data, options = {}) => this.sendToSubscription(subscriptionId, data, { ...options, end: true }),
97
+ unsubscribe: async () => {
98
+ removeListener();
99
+ const unsubscribePayload = { sessionToken: this.session.sessionToken, subscriptionId };
100
+ const result = await this.transport.request('unsubscribe', unsubscribePayload);
101
+ return Boolean(result.payload?.closed);
102
+ }
103
+ };
104
+ }
105
+ async sendToSubscription(subscriptionId, data, options = {}) {
106
+ if (!this.transport || !this.session)
107
+ throw bridgeKitError('not_connected', 'Call bridgekit.connect() before sending to a stream');
108
+ const payload = {
109
+ sessionToken: this.session.sessionToken,
110
+ subscriptionId,
111
+ encoding: options.encoding,
112
+ end: options.end
113
+ };
114
+ if (typeof data === 'string')
115
+ payload.data = data;
116
+ else if (data !== undefined)
117
+ payload.json = data;
118
+ if (options.json !== undefined)
119
+ payload.json = options.json;
120
+ if (options.binaryBase64 !== undefined)
121
+ payload.binaryBase64 = options.binaryBase64;
122
+ const response = await this.transport.request('stream.send', payload);
123
+ return response.payload;
124
+ }
125
+ database(resourceId) {
126
+ return new BridgeDatabase(this, resourceId);
127
+ }
128
+ generic(resourceId) {
129
+ return new BridgeGenericResource(this, resourceId);
130
+ }
131
+ files(resourceId) {
132
+ return new BridgeFileStore(this, resourceId);
133
+ }
134
+ secret(resourceId) {
135
+ return new BridgeSecret(this, resourceId);
136
+ }
137
+ http(resourceId) {
138
+ return new BridgeHttpResource(this, resourceId);
139
+ }
140
+ tcp(resourceId) {
141
+ return new BridgeTcpResource(this, resourceId);
142
+ }
143
+ websocket(resourceId) {
144
+ return new BridgeWebSocketResource(this, resourceId);
145
+ }
146
+ port(resourceId) {
147
+ return new BridgePortResource(this, resourceId);
148
+ }
149
+ process(resourceId) {
150
+ return new BridgeProcessResource(this, resourceId);
151
+ }
152
+ logs(resourceId) {
153
+ return new BridgeLogResource(this, resourceId);
154
+ }
155
+ close() {
156
+ this.transport?.close();
157
+ this.session = undefined;
158
+ }
159
+ }
160
+ export class BridgeDatabase {
161
+ client;
162
+ resourceId;
163
+ constructor(client, resourceId) {
164
+ this.client = client;
165
+ this.resourceId = resourceId;
166
+ }
167
+ async connect() {
168
+ return this.client.invoke('db.connect', this.resourceId, {}, 'connect');
169
+ }
170
+ async query(sql, params) {
171
+ const operation = isWriteSql(sql) ? 'query:write' : 'query:read';
172
+ return this.client.invoke('db.query', this.resourceId, { sql, params }, operation);
173
+ }
174
+ async inspectSchema() {
175
+ return this.client.invoke('db.inspectSchema', this.resourceId, {}, 'schema:read');
176
+ }
177
+ async listTables() {
178
+ return this.client.invoke('db.listTables', this.resourceId, {}, 'schema:read');
179
+ }
180
+ async listCollections() {
181
+ return this.client.invoke('db.listCollections', this.resourceId, {}, 'schema:read');
182
+ }
183
+ async runMigration(sql) {
184
+ return this.client.invoke('db.runMigration', this.resourceId, { sql }, 'migration:run');
185
+ }
186
+ async raw(args) {
187
+ return this.client.invoke('db.raw', this.resourceId, args, 'full');
188
+ }
189
+ async command(command) {
190
+ return this.raw({ command });
191
+ }
192
+ async close() {
193
+ return this.client.invoke('db.close', this.resourceId, {}, 'close');
194
+ }
195
+ }
196
+ export class BridgeGenericResource {
197
+ client;
198
+ resourceId;
199
+ constructor(client, resourceId) {
200
+ this.client = client;
201
+ this.resourceId = resourceId;
202
+ }
203
+ invoke(capability, args, operation = 'full') {
204
+ return this.client.invoke(capability, this.resourceId, args, operation);
205
+ }
206
+ database() { return this.client.database(this.resourceId); }
207
+ files() { return this.client.files(this.resourceId); }
208
+ secret() { return this.client.secret(this.resourceId); }
209
+ http() { return this.client.http(this.resourceId); }
210
+ tcp() { return this.client.tcp(this.resourceId); }
211
+ websocket() { return this.client.websocket(this.resourceId); }
212
+ port() { return this.client.port(this.resourceId); }
213
+ process() { return this.client.process(this.resourceId); }
214
+ logs() { return this.client.logs(this.resourceId); }
215
+ }
216
+ export class BridgeFileStore {
217
+ client;
218
+ resourceId;
219
+ constructor(client, resourceId) {
220
+ this.client = client;
221
+ this.resourceId = resourceId;
222
+ }
223
+ read(path, encoding = 'utf8') { return this.client.invoke('fs.read', this.resourceId, { path, encoding }, 'read'); }
224
+ write(path, content, encoding = 'utf8') { return this.client.invoke('fs.write', this.resourceId, { path, content, encoding }, 'write'); }
225
+ list(path = '.') { return this.client.invoke('fs.list', this.resourceId, { path }, 'list'); }
226
+ mkdir(path) { return this.client.invoke('fs.mkdir', this.resourceId, { path }, 'mkdir'); }
227
+ delete(path, options = {}) { return this.client.invoke('fs.delete', this.resourceId, { path, ...options }, 'delete'); }
228
+ watch(path = '.', listener, options = {}) {
229
+ return this.client.subscribe('fs.watch', this.resourceId, { path, ...options }, 'watch', listener);
230
+ }
231
+ }
232
+ export class BridgeSecret {
233
+ client;
234
+ resourceId;
235
+ constructor(client, resourceId) {
236
+ this.client = client;
237
+ this.resourceId = resourceId;
238
+ }
239
+ resolve() { return this.client.invoke('secret.resolve', this.resourceId, {}, 'resolve'); }
240
+ create(value) { return this.client.invoke('secret.create', this.resourceId, { value }, 'create'); }
241
+ revoke() { return this.client.invoke('secret.revoke', this.resourceId, {}, 'revoke'); }
242
+ }
243
+ export class BridgeHttpResource {
244
+ client;
245
+ resourceId;
246
+ constructor(client, resourceId) {
247
+ this.client = client;
248
+ this.resourceId = resourceId;
249
+ }
250
+ request(path, init = {}) {
251
+ return this.client.invoke('http.request', this.resourceId, { path, ...init }, 'request');
252
+ }
253
+ raw(path, init = {}) {
254
+ return this.client.invoke('http.raw', this.resourceId, { path, ...init }, 'full');
255
+ }
256
+ stream(path, init = {}, listener) {
257
+ return this.client.subscribe('http.stream', this.resourceId, { path, ...init }, 'stream', listener);
258
+ }
259
+ rawStream(path, init = {}, listener) {
260
+ return this.client.subscribe('http.stream', this.resourceId, { path, ...init, raw: true }, 'full', listener);
261
+ }
262
+ }
263
+ export class BridgeTcpResource {
264
+ client;
265
+ resourceId;
266
+ constructor(client, resourceId) {
267
+ this.client = client;
268
+ this.resourceId = resourceId;
269
+ }
270
+ connect(args = {}) {
271
+ return this.client.invoke('tcp.connect', this.resourceId, args, 'connect');
272
+ }
273
+ stream(args = {}, listener) {
274
+ return this.client.subscribe('tcp.stream', this.resourceId, args, 'stream', listener);
275
+ }
276
+ }
277
+ export class BridgeWebSocketResource {
278
+ client;
279
+ resourceId;
280
+ constructor(client, resourceId) {
281
+ this.client = client;
282
+ this.resourceId = resourceId;
283
+ }
284
+ connect(args = {}, listener) {
285
+ return this.client.subscribe('websocket.connect', this.resourceId, args, 'connect', listener);
286
+ }
287
+ }
288
+ export class BridgePortResource {
289
+ client;
290
+ resourceId;
291
+ constructor(client, resourceId) {
292
+ this.client = client;
293
+ this.resourceId = resourceId;
294
+ }
295
+ forward() { return this.client.invoke('port.forward', this.resourceId, {}, 'forward'); }
296
+ status() { return this.client.invoke('port.status', this.resourceId, {}, 'status'); }
297
+ close() { return this.client.invoke('port.close', this.resourceId, {}, 'close'); }
298
+ }
299
+ export class BridgeProcessResource {
300
+ client;
301
+ resourceId;
302
+ constructor(client, resourceId) {
303
+ this.client = client;
304
+ this.resourceId = resourceId;
305
+ }
306
+ start(args) { return this.client.invoke('process.start', this.resourceId, { args }, 'start'); }
307
+ stop() { return this.client.invoke('process.stop', this.resourceId, {}, 'stop'); }
308
+ restart() { return this.client.invoke('process.restart', this.resourceId, {}, 'restart'); }
309
+ status() { return this.client.invoke('process.status', this.resourceId, {}, 'status'); }
310
+ logs() { return this.client.invoke('process.logs', this.resourceId, {}, 'logs'); }
311
+ subscribeLogs(listener) {
312
+ return this.client.subscribe('logs.subscribe', this.resourceId, {}, 'subscribe', listener);
313
+ }
314
+ }
315
+ export class BridgeLogResource {
316
+ client;
317
+ resourceId;
318
+ constructor(client, resourceId) {
319
+ this.client = client;
320
+ this.resourceId = resourceId;
321
+ }
322
+ subscribe(listener, options = {}) {
323
+ return this.client.subscribe('logs.subscribe', this.resourceId, options, 'subscribe', listener);
324
+ }
325
+ }
326
+ export function createDefaultTransport(options) {
327
+ if (options.prefer === 'mock' || options.fallback === 'mock')
328
+ return new MockTransport();
329
+ if (options.prefer === 'browser-extension')
330
+ return new WindowBridgeTransport({ kind: 'browser-extension' });
331
+ if (options.prefer === 'host-page')
332
+ return new WindowBridgeTransport({ kind: 'host-page' });
333
+ return new DirectWebSocketTransport(options.bridgeUrl ?? defaultBridgeUrl());
334
+ }
335
+ export function detectRuntime() {
336
+ const href = typeof location !== 'undefined' ? location.href : '';
337
+ if (/bolt\.new|stackblitz\.com|webcontainer/i.test(href))
338
+ return 'webcontainer';
339
+ if (typeof window !== 'undefined')
340
+ return 'browser';
341
+ return 'unknown';
342
+ }
343
+ export function defaultBridgeUrl() {
344
+ return typeof location !== 'undefined' && location.protocol === 'https:'
345
+ ? 'ws://127.0.0.1:7777/bridgekit'
346
+ : 'ws://127.0.0.1:7777/bridgekit';
347
+ }
348
+ export async function loadBridgeKitManifest(path = '/bridgekit.config.json') {
349
+ if (typeof fetch === 'undefined')
350
+ throw bridgeKitError('manifest_load_failed', 'fetch is not available in this runtime');
351
+ const response = await fetch(path);
352
+ if (!response.ok)
353
+ throw bridgeKitError('manifest_load_failed', `Unable to load ${path}: ${response.status}`);
354
+ return validateManifest(await response.json());
355
+ }
356
+ function currentOrigin() {
357
+ return typeof location !== 'undefined' ? location.origin : undefined;
358
+ }
359
+ function delay(ms) {
360
+ return new Promise((resolve) => setTimeout(resolve, ms));
361
+ }
362
+ function isWriteSql(sql) {
363
+ return !/^(select|show|describe|desc|explain|with)\b/i.test(sql.trim());
364
+ }
365
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { BridgeKitClient } from './client.js';
2
+ export * from './transport.js';
3
+ export * from './client.js';
4
+ export declare const bridgekit: BridgeKitClient;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,eAAO,MAAM,SAAS,iBAAwB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { BridgeKitClient } from './client.js';
2
+ export * from './transport.js';
3
+ export * from './client.js';
4
+ export const bridgekit = new BridgeKitClient();
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { type BridgeKitEventPayload, type BridgeKitMessage } from '@bridgekitux/protocol';
2
+ export type BridgeKitEventListener = (event: BridgeKitEventPayload) => void;
3
+ export interface BridgeTransport {
4
+ readonly kind: 'direct-websocket' | 'browser-extension' | 'host-page' | 'mock';
5
+ connect(): Promise<void>;
6
+ request<TPayload = unknown, TResult = unknown>(type: string, payload?: TPayload): Promise<BridgeKitMessage<TResult>>;
7
+ onEvent(listener: BridgeKitEventListener): () => void;
8
+ close(): void;
9
+ }
10
+ export interface RequestOptions {
11
+ timeoutMs?: number;
12
+ }
13
+ export declare class DirectWebSocketTransport implements BridgeTransport {
14
+ private readonly url;
15
+ private readonly options;
16
+ readonly kind: "direct-websocket";
17
+ private socket?;
18
+ private pending;
19
+ private readonly eventListeners;
20
+ constructor(url?: string, options?: RequestOptions);
21
+ connect(): Promise<void>;
22
+ request<TPayload = unknown, TResult = unknown>(type: string, payload?: TPayload): Promise<BridgeKitMessage<TResult>>;
23
+ close(): void;
24
+ onEvent(listener: BridgeKitEventListener): () => void;
25
+ private handleMessage;
26
+ }
27
+ export declare class WindowBridgeTransport implements BridgeTransport {
28
+ readonly kind: 'browser-extension' | 'host-page';
29
+ private readonly targetOrigin;
30
+ private readonly targetWindow;
31
+ private pending;
32
+ private readonly eventListeners;
33
+ constructor(options?: {
34
+ kind?: 'browser-extension' | 'host-page';
35
+ targetOrigin?: string;
36
+ targetWindow?: 'self' | 'parent';
37
+ timeoutMs?: number;
38
+ });
39
+ connect(): Promise<void>;
40
+ request<TPayload = unknown, TResult = unknown>(type: string, payload?: TPayload): Promise<BridgeKitMessage<TResult>>;
41
+ close(): void;
42
+ onEvent(listener: BridgeKitEventListener): () => void;
43
+ private handleMessage;
44
+ private postToBridge;
45
+ }
46
+ export declare class MockTransport implements BridgeTransport {
47
+ private readonly fixtures;
48
+ readonly kind: "mock";
49
+ private readonly eventListeners;
50
+ constructor(fixtures?: Record<string, unknown>);
51
+ connect(): Promise<void>;
52
+ request<TPayload = unknown, TResult = unknown>(type: string, _payload?: TPayload): Promise<BridgeKitMessage<TResult>>;
53
+ onEvent(listener: BridgeKitEventListener): () => void;
54
+ close(): void;
55
+ }
56
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/transport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,174 @@
1
+ import { createMessage, parseMessage, toBridgeKitError } from '@bridgekitux/protocol';
2
+ let sequence = 0;
3
+ function nextId() {
4
+ sequence += 1;
5
+ return `bk_req_${Date.now()}_${sequence}`;
6
+ }
7
+ export class DirectWebSocketTransport {
8
+ url;
9
+ options;
10
+ kind = 'direct-websocket';
11
+ socket;
12
+ pending = new Map();
13
+ eventListeners = new Set();
14
+ constructor(url = 'ws://127.0.0.1:7777/bridgekit', options = {}) {
15
+ this.url = url;
16
+ this.options = options;
17
+ }
18
+ async connect() {
19
+ if (this.socket?.readyState === WebSocket.OPEN)
20
+ return;
21
+ await new Promise((resolve, reject) => {
22
+ const socket = new WebSocket(this.url);
23
+ this.socket = socket;
24
+ socket.addEventListener('open', () => resolve(), { once: true });
25
+ socket.addEventListener('error', () => reject(new Error(`Unable to connect to BridgeKit agent at ${this.url}`)), { once: true });
26
+ socket.addEventListener('message', (event) => this.handleMessage(event.data));
27
+ socket.addEventListener('close', () => {
28
+ for (const pending of this.pending.values()) {
29
+ clearTimeout(pending.timer);
30
+ pending.reject(new Error('BridgeKit transport closed'));
31
+ }
32
+ this.pending.clear();
33
+ });
34
+ });
35
+ }
36
+ async request(type, payload) {
37
+ await this.connect();
38
+ const id = nextId();
39
+ const message = createMessage(type, payload, id);
40
+ return new Promise((resolve, reject) => {
41
+ const timer = setTimeout(() => {
42
+ this.pending.delete(id);
43
+ reject(new Error(`BridgeKit request timed out: ${type}`));
44
+ }, this.options.timeoutMs ?? 30_000);
45
+ this.pending.set(id, { resolve: resolve, reject, timer });
46
+ this.socket.send(JSON.stringify(message));
47
+ });
48
+ }
49
+ close() {
50
+ this.socket?.close();
51
+ }
52
+ onEvent(listener) {
53
+ this.eventListeners.add(listener);
54
+ return () => this.eventListeners.delete(listener);
55
+ }
56
+ handleMessage(data) {
57
+ try {
58
+ const text = typeof data === 'string' ? data : String(data);
59
+ const message = parseMessage(JSON.parse(text));
60
+ if (message.type === 'event') {
61
+ for (const listener of this.eventListeners)
62
+ listener(message.payload);
63
+ return;
64
+ }
65
+ if (!message.id)
66
+ return;
67
+ const pending = this.pending.get(message.id);
68
+ if (!pending)
69
+ return;
70
+ clearTimeout(pending.timer);
71
+ this.pending.delete(message.id);
72
+ if (message.error)
73
+ pending.reject(Object.assign(new Error(message.error.message), { bridgeKit: message.error }));
74
+ else
75
+ pending.resolve(message);
76
+ }
77
+ catch (error) {
78
+ const bridgeError = toBridgeKitError(error);
79
+ console.warn(`BridgeKit transport ignored invalid message: ${bridgeError.message}`);
80
+ }
81
+ }
82
+ }
83
+ export class WindowBridgeTransport {
84
+ kind;
85
+ targetOrigin;
86
+ targetWindow;
87
+ pending = new Map();
88
+ eventListeners = new Set();
89
+ constructor(options = {}) {
90
+ this.kind = options.kind ?? 'browser-extension';
91
+ this.targetOrigin = options.targetOrigin ?? currentWindowOrigin();
92
+ this.targetWindow = options.targetWindow ?? 'self';
93
+ globalThis.window?.addEventListener('message', (event) => this.handleMessage(event));
94
+ }
95
+ async connect() {
96
+ if (typeof window === 'undefined')
97
+ throw new Error('Window bridge transport requires a browser window');
98
+ this.postToBridge({ source: 'bridgekit-client', type: 'bridgekit.detect' });
99
+ }
100
+ async request(type, payload) {
101
+ await this.connect();
102
+ const id = nextId();
103
+ const message = createMessage(type, payload, id);
104
+ return new Promise((resolve, reject) => {
105
+ const timer = setTimeout(() => {
106
+ this.pending.delete(id);
107
+ reject(new Error(`BridgeKit bridge request timed out: ${type}`));
108
+ }, 30_000);
109
+ this.pending.set(id, { resolve: resolve, reject, timer });
110
+ this.postToBridge({ source: 'bridgekit-client', type: 'bridgekit.request', message });
111
+ });
112
+ }
113
+ close() {
114
+ this.pending.clear();
115
+ }
116
+ onEvent(listener) {
117
+ this.eventListeners.add(listener);
118
+ return () => this.eventListeners.delete(listener);
119
+ }
120
+ handleMessage(event) {
121
+ const data = event.data;
122
+ if (!data || data.source !== 'bridgekit-bridge')
123
+ return;
124
+ try {
125
+ const message = parseMessage(data.message);
126
+ if (data.type === 'bridgekit.event' || message.type === 'event') {
127
+ for (const listener of this.eventListeners)
128
+ listener(message.payload);
129
+ return;
130
+ }
131
+ if (data.type !== 'bridgekit.response')
132
+ return;
133
+ if (!message.id)
134
+ return;
135
+ const pending = this.pending.get(message.id);
136
+ if (!pending)
137
+ return;
138
+ clearTimeout(pending.timer);
139
+ this.pending.delete(message.id);
140
+ if (message.error)
141
+ pending.reject(Object.assign(new Error(message.error.message), { bridgeKit: message.error }));
142
+ else
143
+ pending.resolve(message);
144
+ }
145
+ catch (error) {
146
+ console.warn(`BridgeKit bridge ignored invalid response: ${toBridgeKitError(error).message}`);
147
+ }
148
+ }
149
+ postToBridge(message) {
150
+ const target = this.targetWindow === 'parent' && window.parent ? window.parent : window;
151
+ target.postMessage(message, this.targetOrigin);
152
+ }
153
+ }
154
+ function currentWindowOrigin() {
155
+ return typeof window !== 'undefined' && window.location?.origin ? window.location.origin : '*';
156
+ }
157
+ export class MockTransport {
158
+ fixtures;
159
+ kind = 'mock';
160
+ eventListeners = new Set();
161
+ constructor(fixtures = {}) {
162
+ this.fixtures = fixtures;
163
+ }
164
+ async connect() { }
165
+ async request(type, _payload) {
166
+ return createMessage(`${type}.mock`, this.fixtures[type] ?? { ok: true }, nextId());
167
+ }
168
+ onEvent(listener) {
169
+ this.eventListeners.add(listener);
170
+ return () => this.eventListeners.delete(listener);
171
+ }
172
+ close() { }
173
+ }
174
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,YAAY,EACZ,gBAAgB,EAGjB,MAAM,uBAAuB,CAAC;AAgB/B,IAAI,QAAQ,GAAG,CAAC,CAAC;AACjB,SAAS,MAAM;IACb,QAAQ,IAAI,CAAC,CAAC;IACd,OAAO,UAAU,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,OAAO,wBAAwB;IAMN;IAAwD;IAL5E,IAAI,GAAG,kBAA2B,CAAC;IACpC,MAAM,CAAa;IACnB,OAAO,GAAG,IAAI,GAAG,EAAkI,CAAC;IAC3I,cAAc,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEpE,YAA6B,MAAM,+BAA+B,EAAmB,UAA0B,EAAE;QAApF,QAAG,GAAH,GAAG,CAAkC;QAAmB,YAAO,GAAP,OAAO,CAAqB;IAAG,CAAC;IAErH,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,MAAM,EAAE,UAAU,KAAK,SAAS,CAAC,IAAI;YAAE,OAAO;QACvD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,2CAA2C,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACjI,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9E,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBACpC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;oBAC5C,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAC5B,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;gBAC1D,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAwC,IAAY,EAAE,OAAkB;QACnF,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QACjD,OAAO,IAAI,OAAO,CAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAChE,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACxB,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC5D,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAA8C,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YACjG,IAAI,CAAC,MAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,QAAgC;QACtC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAEO,aAAa,CAAC,IAAa;QACjC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/C,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC7B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc;oBAAE,QAAQ,CAAC,OAAO,CAAC,OAAgC,CAAC,CAAC;gBAC/F,OAAO;YACT,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,EAAE;gBAAE,OAAO;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAChC,IAAI,OAAO,CAAC,KAAK;gBAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;;gBAC5G,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,gDAAgD,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,qBAAqB;IACvB,IAAI,CAAoC;IAChC,YAAY,CAAS;IACrB,YAAY,CAAoB;IACzC,OAAO,GAAG,IAAI,GAAG,EAAkI,CAAC;IAC3I,cAAc,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEpE,YAAY,UAAqI,EAAE;QACjJ,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,mBAAmB,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,mBAAmB,EAAE,CAAC;QAClE,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC;QACnD,UAAU,CAAC,MAAM,EAAE,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACxG,IAAI,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,OAAO,CAAwC,IAAY,EAAE,OAAkB;QACnF,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QACjD,OAAO,IAAI,OAAO,CAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAChE,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACxB,MAAM,CAAC,IAAI,KAAK,CAAC,uCAAuC,IAAI,EAAE,CAAC,CAAC,CAAC;YACnE,CAAC,EAAE,MAAM,CAAC,CAAC;YACX,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAA8C,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YACjG,IAAI,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,QAAgC;QACtC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAEO,aAAa,CAAC,KAAmB;QACvC,MAAM,IAAI,GAAG,KAAK,CAAC,IAA6D,CAAC;QACjF,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,kBAAkB;YAAE,OAAO;QACxD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAChE,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc;oBAAE,QAAQ,CAAC,OAAO,CAAC,OAAgC,CAAC,CAAC;gBAC/F,OAAO;YACT,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB;gBAAE,OAAO;YAC/C,IAAI,CAAC,OAAO,CAAC,EAAE;gBAAE,OAAO;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAChC,IAAI,OAAO,CAAC,KAAK;gBAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;;gBAC5G,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,8CAA8C,gBAAgB,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,OAAgB;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACxF,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACjD,CAAC;CACF;AAED,SAAS,mBAAmB;IAC1B,OAAO,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;AACjG,CAAC;AAED,MAAM,OAAO,aAAa;IAGK;IAFpB,IAAI,GAAG,MAAe,CAAC;IACf,cAAc,GAAG,IAAI,GAAG,EAA0B,CAAC;IACpE,YAA6B,WAAoC,EAAE;QAAtC,aAAQ,GAAR,QAAQ,CAA8B;IAAG,CAAC;IACvE,KAAK,CAAC,OAAO,KAAmB,CAAC;IACjC,KAAK,CAAC,OAAO,CAAwC,IAAY,EAAE,QAAmB;QACpF,OAAO,aAAa,CAAC,GAAG,IAAI,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAA8B,CAAC;IACnH,CAAC;IACD,OAAO,CAAC,QAAgC;QACtC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IACD,KAAK,KAAU,CAAC;CACjB"}
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@bridgekitux/client",
3
+ "version": "0.1.0",
4
+ "license": "Apache-2.0",
5
+ "description": "BridgeKit SDK for WebContainers, browser IDEs, and restricted runtimes.",
6
+ "type": "module",
7
+ "main": "./dist/src/index.js",
8
+ "types": "./dist/src/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/src/index.d.ts",
12
+ "import": "./dist/src/index.js"
13
+ }
14
+ },
15
+ "scripts": {
16
+ "build": "tsc -b",
17
+ "test": "node --test dist/test/*.test.js"
18
+ },
19
+ "dependencies": {
20
+ "@bridgekitux/protocol": "0.1.0"
21
+ },
22
+ "files": [
23
+ "dist/src",
24
+ "README.md"
25
+ ],
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
29
+ "keywords": [
30
+ "bridgekit",
31
+ "webcontainer",
32
+ "sandbox",
33
+ "capability",
34
+ "local-agent",
35
+ "browser-ide",
36
+ "client"
37
+ ]
38
+ }