@boba-cli/machine 0.1.0-alpha.1

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.
@@ -0,0 +1,696 @@
1
+ 'use strict';
2
+
3
+ // src/style/index.ts
4
+ var ESC = "\x1B[";
5
+ var CODES = {
6
+ // Modifiers (open, close)
7
+ bold: ["1", "22"],
8
+ dim: ["2", "22"],
9
+ italic: ["3", "23"],
10
+ underline: ["4", "24"],
11
+ inverse: ["7", "27"],
12
+ hidden: ["8", "28"],
13
+ strikethrough: ["9", "29"],
14
+ // Basic foreground colors (30-37)
15
+ black: ["30", "39"],
16
+ red: ["31", "39"],
17
+ green: ["32", "39"],
18
+ yellow: ["33", "39"],
19
+ blue: ["34", "39"],
20
+ magenta: ["35", "39"],
21
+ cyan: ["36", "39"],
22
+ white: ["37", "39"],
23
+ // Bright foreground colors (90-97)
24
+ blackBright: ["90", "39"],
25
+ redBright: ["91", "39"],
26
+ greenBright: ["92", "39"],
27
+ yellowBright: ["93", "39"],
28
+ blueBright: ["94", "39"],
29
+ magentaBright: ["95", "39"],
30
+ cyanBright: ["96", "39"],
31
+ whiteBright: ["97", "39"],
32
+ // Basic background colors (40-47)
33
+ bgBlack: ["40", "49"],
34
+ bgRed: ["41", "49"],
35
+ bgGreen: ["42", "49"],
36
+ bgYellow: ["43", "49"],
37
+ bgBlue: ["44", "49"],
38
+ bgMagenta: ["45", "49"],
39
+ bgCyan: ["46", "49"],
40
+ bgWhite: ["47", "49"],
41
+ // Bright background colors (100-107)
42
+ bgBlackBright: ["100", "49"],
43
+ bgRedBright: ["101", "49"],
44
+ bgGreenBright: ["102", "49"],
45
+ bgYellowBright: ["103", "49"],
46
+ bgBlueBright: ["104", "49"],
47
+ bgMagentaBright: ["105", "49"],
48
+ bgCyanBright: ["106", "49"],
49
+ bgWhiteBright: ["107", "49"]
50
+ };
51
+ function applyStyle(text, open, close) {
52
+ const openSeq = `${ESC}${open}m`;
53
+ const closeSeq = `${ESC}${close}m`;
54
+ const replaced = text.replace(
55
+ new RegExp(closeSeq.replace(/[[\](){}|^$+*?.\\]/g, "\\$&"), "g"),
56
+ closeSeq + openSeq
57
+ );
58
+ return openSeq + replaced + closeSeq;
59
+ }
60
+ function hexToRgb(hex) {
61
+ const clean = hex.replace(/^#/, "");
62
+ const num = parseInt(clean, 16);
63
+ if (clean.length === 3) {
64
+ const r2 = (num >> 8 & 15) * 17;
65
+ const g2 = (num >> 4 & 15) * 17;
66
+ const b2 = (num & 15) * 17;
67
+ return [r2, g2, b2];
68
+ }
69
+ const r = num >> 16 & 255;
70
+ const g = num >> 8 & 255;
71
+ const b = num & 255;
72
+ return [r, g, b];
73
+ }
74
+ function createStyle(colorSupport) {
75
+ function build(stack) {
76
+ const fn = (text) => {
77
+ if (stack.length === 0) {
78
+ return text;
79
+ }
80
+ let result = text;
81
+ for (let i = stack.length - 1; i >= 0; i--) {
82
+ const [open, close] = stack[i];
83
+ result = applyStyle(result, open, close);
84
+ }
85
+ return result;
86
+ };
87
+ const codeNames = Object.keys(CODES);
88
+ for (const name of codeNames) {
89
+ const [open, close] = CODES[name];
90
+ Object.defineProperty(fn, name, {
91
+ get() {
92
+ return build([...stack, [open, close]]);
93
+ }
94
+ });
95
+ }
96
+ Object.defineProperty(fn, "gray", {
97
+ get() {
98
+ const [open, close] = CODES.blackBright;
99
+ return build([...stack, [open, close]]);
100
+ }
101
+ });
102
+ Object.defineProperty(fn, "grey", {
103
+ get() {
104
+ const [open, close] = CODES.blackBright;
105
+ return build([...stack, [open, close]]);
106
+ }
107
+ });
108
+ Object.defineProperty(fn, "hex", {
109
+ value: (color) => {
110
+ const [r, g, b] = hexToRgb(color);
111
+ return build([...stack, [`38;2;${r};${g};${b}`, "39"]]);
112
+ },
113
+ writable: true
114
+ });
115
+ Object.defineProperty(fn, "rgb", {
116
+ value: (r, g, b) => {
117
+ return build([...stack, [`38;2;${r};${g};${b}`, "39"]]);
118
+ },
119
+ writable: true
120
+ });
121
+ Object.defineProperty(fn, "bgHex", {
122
+ value: (color) => {
123
+ const [r, g, b] = hexToRgb(color);
124
+ return build([...stack, [`48;2;${r};${g};${b}`, "49"]]);
125
+ },
126
+ writable: true
127
+ });
128
+ Object.defineProperty(fn, "bgRgb", {
129
+ value: (r, g, b) => {
130
+ return build([...stack, [`48;2;${r};${g};${b}`, "49"]]);
131
+ },
132
+ writable: true
133
+ });
134
+ Object.defineProperty(fn, "ansi256", {
135
+ value: (code) => {
136
+ return build([...stack, [`38;5;${code}`, "39"]]);
137
+ },
138
+ writable: true
139
+ });
140
+ Object.defineProperty(fn, "bgAnsi256", {
141
+ value: (code) => {
142
+ return build([...stack, [`48;5;${code}`, "49"]]);
143
+ },
144
+ writable: true
145
+ });
146
+ return fn;
147
+ }
148
+ return build([]);
149
+ }
150
+ function createAlwaysEnabledStyle() {
151
+ return createStyle();
152
+ }
153
+
154
+ // src/browser/archive.ts
155
+ var BrowserArchiveAdapter = class {
156
+ /**
157
+ * Check if archive operations are available.
158
+ * @returns Always false in browser environments
159
+ */
160
+ isAvailable() {
161
+ return false;
162
+ }
163
+ /**
164
+ * Create a zip archive from a directory.
165
+ * @param _sourceDir - Source directory to archive
166
+ * @param _destPath - Destination path for the zip file
167
+ * @throws Error - Always throws as archiving is not available in browser
168
+ */
169
+ async zip(_sourceDir, _destPath) {
170
+ throw new Error("Archive operations not available in browser environment");
171
+ }
172
+ /**
173
+ * Extract a zip archive to a directory.
174
+ * @param _archivePath - Path to the zip file
175
+ * @param _destDir - Destination directory for extraction
176
+ * @throws Error - Always throws as archiving is not available in browser
177
+ */
178
+ async unzip(_archivePath, _destDir) {
179
+ throw new Error("Archive operations not available in browser environment");
180
+ }
181
+ };
182
+
183
+ // src/browser/clipboard.ts
184
+ var BrowserClipboardAdapter = class {
185
+ async read() {
186
+ if (!this.isAvailable()) {
187
+ throw new Error("Clipboard API not available");
188
+ }
189
+ try {
190
+ return await navigator.clipboard.readText();
191
+ } catch (error) {
192
+ throw new Error(
193
+ `Failed to read from clipboard: ${error instanceof Error ? error.message : String(error)}`
194
+ );
195
+ }
196
+ }
197
+ async write(text) {
198
+ if (!this.isAvailable()) {
199
+ throw new Error("Clipboard API not available");
200
+ }
201
+ try {
202
+ await navigator.clipboard.writeText(text);
203
+ } catch (error) {
204
+ throw new Error(
205
+ `Failed to write to clipboard: ${error instanceof Error ? error.message : String(error)}`
206
+ );
207
+ }
208
+ }
209
+ isAvailable() {
210
+ return typeof navigator !== "undefined" && typeof navigator.clipboard !== "undefined" && typeof navigator.clipboard.readText === "function" && typeof navigator.clipboard.writeText === "function";
211
+ }
212
+ };
213
+
214
+ // src/browser/environment.ts
215
+ var BrowserEnvironmentAdapter = class {
216
+ envOverrides;
217
+ colorSupportCached = null;
218
+ backgroundCached = null;
219
+ /**
220
+ * Create a new browser environment adapter.
221
+ * @param envOverrides - Optional environment variable overrides
222
+ */
223
+ constructor(envOverrides = {}) {
224
+ this.envOverrides = new Map(Object.entries(envOverrides));
225
+ }
226
+ get(name) {
227
+ if (this.envOverrides.has(name)) {
228
+ return this.envOverrides.get(name);
229
+ }
230
+ return void 0;
231
+ }
232
+ /**
233
+ * Set an environment variable override.
234
+ * @param name - Variable name
235
+ * @param value - Variable value
236
+ */
237
+ set(name, value) {
238
+ this.envOverrides.set(name, value);
239
+ this.colorSupportCached = null;
240
+ this.backgroundCached = null;
241
+ }
242
+ getColorSupport() {
243
+ if (this.colorSupportCached) {
244
+ return this.colorSupportCached;
245
+ }
246
+ const support = {
247
+ level: 3,
248
+ hasBasic: true,
249
+ has256: true,
250
+ has16m: true
251
+ };
252
+ this.colorSupportCached = support;
253
+ return support;
254
+ }
255
+ getTerminalBackground() {
256
+ if (this.backgroundCached) {
257
+ return this.backgroundCached;
258
+ }
259
+ const override = this.envOverrides.get("TERM_BACKGROUND")?.toLowerCase();
260
+ if (override === "dark" || override === "light") {
261
+ this.backgroundCached = override;
262
+ return override;
263
+ }
264
+ if (typeof window !== "undefined" && window.matchMedia) {
265
+ const darkQuery = window.matchMedia("(prefers-color-scheme: dark)");
266
+ if (darkQuery.matches) {
267
+ this.backgroundCached = "dark";
268
+ return "dark";
269
+ }
270
+ const lightQuery = window.matchMedia("(prefers-color-scheme: light)");
271
+ if (lightQuery.matches) {
272
+ this.backgroundCached = "light";
273
+ return "light";
274
+ }
275
+ }
276
+ this.backgroundCached = "unknown";
277
+ return "unknown";
278
+ }
279
+ };
280
+
281
+ // src/browser/filesystem.ts
282
+ var BrowserFileSystemAdapter = class {
283
+ async readdir(_path, _options) {
284
+ throw new Error("FileSystem operations are not available in browser environments");
285
+ }
286
+ async stat(_path) {
287
+ throw new Error("FileSystem operations are not available in browser environments");
288
+ }
289
+ async readFile(_path, _encoding) {
290
+ throw new Error("FileSystem operations are not available in browser environments");
291
+ }
292
+ async writeFile(_path, _content) {
293
+ throw new Error("FileSystem operations are not available in browser environments");
294
+ }
295
+ async exists(_path) {
296
+ throw new Error("FileSystem operations are not available in browser environments");
297
+ }
298
+ async mkdir(_path, _options) {
299
+ throw new Error("FileSystem operations are not available in browser environments");
300
+ }
301
+ async unlink(_path) {
302
+ throw new Error("FileSystem operations are not available in browser environments");
303
+ }
304
+ async rmdir(_path, _options) {
305
+ throw new Error("FileSystem operations are not available in browser environments");
306
+ }
307
+ async rename(_src, _dst) {
308
+ throw new Error("FileSystem operations are not available in browser environments");
309
+ }
310
+ async copyFile(_src, _dst) {
311
+ throw new Error("FileSystem operations are not available in browser environments");
312
+ }
313
+ cwd() {
314
+ throw new Error("FileSystem operations are not available in browser environments");
315
+ }
316
+ homedir() {
317
+ throw new Error("FileSystem operations are not available in browser environments");
318
+ }
319
+ };
320
+
321
+ // src/browser/path.ts
322
+ var BrowserPathAdapter = class {
323
+ sep = "/";
324
+ join(...segments) {
325
+ if (segments.length === 0) {
326
+ return ".";
327
+ }
328
+ const filtered = segments.filter((seg) => seg.length > 0);
329
+ if (filtered.length === 0) {
330
+ return ".";
331
+ }
332
+ const joined = filtered.join("/");
333
+ return this.normalizeForResolve(joined);
334
+ }
335
+ dirname(path) {
336
+ if (path.length === 0) {
337
+ return ".";
338
+ }
339
+ const trimmed = path.replace(/\/+$/, "");
340
+ if (trimmed.length === 0) {
341
+ return "/";
342
+ }
343
+ const lastSlash = trimmed.lastIndexOf("/");
344
+ if (lastSlash === -1) {
345
+ return ".";
346
+ }
347
+ if (lastSlash === 0) {
348
+ return "/";
349
+ }
350
+ return trimmed.slice(0, lastSlash);
351
+ }
352
+ basename(path, ext) {
353
+ if (path.length === 0) {
354
+ return "";
355
+ }
356
+ const trimmed = path.replace(/\/+$/, "");
357
+ if (trimmed.length === 0) {
358
+ return "";
359
+ }
360
+ const lastSlash = trimmed.lastIndexOf("/");
361
+ let base = lastSlash === -1 ? trimmed : trimmed.slice(lastSlash + 1);
362
+ if (ext && base.endsWith(ext)) {
363
+ base = base.slice(0, -ext.length);
364
+ }
365
+ return base;
366
+ }
367
+ extname(path) {
368
+ if (path.length === 0) {
369
+ return "";
370
+ }
371
+ const base = this.basename(path);
372
+ const lastDot = base.lastIndexOf(".");
373
+ if (lastDot === -1 || lastDot === 0 || lastDot === base.length - 1) {
374
+ return "";
375
+ }
376
+ return base.slice(lastDot);
377
+ }
378
+ resolve(...segments) {
379
+ let resolvedPath = "";
380
+ let resolvedAbsolute = false;
381
+ for (let i = segments.length - 1; i >= 0 && !resolvedAbsolute; i--) {
382
+ const segment = segments[i];
383
+ if (!segment || segment.length === 0) {
384
+ continue;
385
+ }
386
+ resolvedPath = resolvedPath.length > 0 ? `${segment}/${resolvedPath}` : segment;
387
+ resolvedAbsolute = segment[0] === "/";
388
+ }
389
+ if (!resolvedAbsolute) {
390
+ resolvedPath = resolvedPath.length > 0 ? `/${resolvedPath}` : "/";
391
+ }
392
+ const normalized = this.normalizeForResolve(resolvedPath);
393
+ return normalized === "" ? "/" : normalized;
394
+ }
395
+ /**
396
+ * Normalize path specifically for resolve (never preserves trailing slash).
397
+ * @param path - Path to normalize
398
+ * @returns Normalized path without trailing slash
399
+ */
400
+ normalizeForResolve(path) {
401
+ if (path.length === 0) {
402
+ return "/";
403
+ }
404
+ const isAbsolute = path[0] === "/";
405
+ const segments = path.split("/").filter((seg) => seg.length > 0 && seg !== ".");
406
+ const normalized = [];
407
+ for (const segment of segments) {
408
+ if (segment === "..") {
409
+ if (normalized.length > 0 && normalized[normalized.length - 1] !== "..") {
410
+ normalized.pop();
411
+ } else if (!isAbsolute) {
412
+ normalized.push("..");
413
+ }
414
+ } else {
415
+ normalized.push(segment);
416
+ }
417
+ }
418
+ let result = normalized.join("/");
419
+ if (isAbsolute) {
420
+ result = `/${result}`;
421
+ } else if (result.length === 0) {
422
+ result = ".";
423
+ }
424
+ return result;
425
+ }
426
+ isAbsolute(path) {
427
+ return path.length > 0 && path[0] === "/";
428
+ }
429
+ normalize(path) {
430
+ if (path.length === 0) {
431
+ return ".";
432
+ }
433
+ const isAbsolute = path[0] === "/";
434
+ const trailingSlash = path[path.length - 1] === "/";
435
+ const segments = path.split("/").filter((seg) => seg.length > 0 && seg !== ".");
436
+ const normalized = [];
437
+ for (const segment of segments) {
438
+ if (segment === "..") {
439
+ if (normalized.length > 0 && normalized[normalized.length - 1] !== "..") {
440
+ normalized.pop();
441
+ } else if (!isAbsolute) {
442
+ normalized.push("..");
443
+ }
444
+ } else {
445
+ normalized.push(segment);
446
+ }
447
+ }
448
+ let result = normalized.join("/");
449
+ if (isAbsolute) {
450
+ result = `/${result}`;
451
+ } else if (result.length === 0) {
452
+ result = ".";
453
+ }
454
+ if (trailingSlash && result !== "/" && result.length > 0) {
455
+ result += "/";
456
+ }
457
+ return result;
458
+ }
459
+ };
460
+
461
+ // src/browser/signals.ts
462
+ var BrowserSignalAdapter = class {
463
+ interruptHandlers = /* @__PURE__ */ new Set();
464
+ terminateHandlers = /* @__PURE__ */ new Set();
465
+ disposed = false;
466
+ boundBeforeUnload = null;
467
+ boundPageHide = null;
468
+ handleBeforeUnload = (e) => {
469
+ for (const handler of this.interruptHandlers) {
470
+ handler();
471
+ }
472
+ if (this.interruptHandlers.size > 0) {
473
+ e.preventDefault();
474
+ }
475
+ };
476
+ handlePageHide = () => {
477
+ for (const handler of this.terminateHandlers) {
478
+ handler();
479
+ }
480
+ };
481
+ onInterrupt(handler) {
482
+ if (this.interruptHandlers.size === 0 && typeof window !== "undefined") {
483
+ this.boundBeforeUnload = this.handleBeforeUnload;
484
+ window.addEventListener("beforeunload", this.boundBeforeUnload);
485
+ }
486
+ this.interruptHandlers.add(handler);
487
+ return {
488
+ dispose: () => {
489
+ this.interruptHandlers.delete(handler);
490
+ if (this.interruptHandlers.size === 0 && this.boundBeforeUnload && typeof window !== "undefined") {
491
+ window.removeEventListener("beforeunload", this.boundBeforeUnload);
492
+ this.boundBeforeUnload = null;
493
+ }
494
+ }
495
+ };
496
+ }
497
+ onTerminate(handler) {
498
+ if (this.terminateHandlers.size === 0 && typeof window !== "undefined") {
499
+ this.boundPageHide = this.handlePageHide;
500
+ window.addEventListener("pagehide", this.boundPageHide);
501
+ }
502
+ this.terminateHandlers.add(handler);
503
+ return {
504
+ dispose: () => {
505
+ this.terminateHandlers.delete(handler);
506
+ if (this.terminateHandlers.size === 0 && this.boundPageHide && typeof window !== "undefined") {
507
+ window.removeEventListener("pagehide", this.boundPageHide);
508
+ this.boundPageHide = null;
509
+ }
510
+ }
511
+ };
512
+ }
513
+ dispose() {
514
+ if (this.disposed) {
515
+ return;
516
+ }
517
+ this.disposed = true;
518
+ if (typeof window !== "undefined") {
519
+ if (this.boundBeforeUnload) {
520
+ window.removeEventListener("beforeunload", this.boundBeforeUnload);
521
+ }
522
+ if (this.boundPageHide) {
523
+ window.removeEventListener("pagehide", this.boundPageHide);
524
+ }
525
+ }
526
+ this.interruptHandlers.clear();
527
+ this.terminateHandlers.clear();
528
+ }
529
+ };
530
+
531
+ // src/bytes.ts
532
+ var encoder = new TextEncoder();
533
+ new TextDecoder("utf-8");
534
+ function encodeString(text) {
535
+ return encoder.encode(text);
536
+ }
537
+
538
+ // src/browser/terminal.ts
539
+ var XtermTerminalAdapter = class {
540
+ /**
541
+ * Create a new xterm.js terminal adapter.
542
+ * @param terminal - xterm.js Terminal instance
543
+ */
544
+ constructor(terminal) {
545
+ this.terminal = terminal;
546
+ }
547
+ disposed = false;
548
+ inputHandlers = /* @__PURE__ */ new Set();
549
+ resizeHandlers = /* @__PURE__ */ new Set();
550
+ dataDisposable = null;
551
+ resizeDisposable = null;
552
+ onInput(handler) {
553
+ if (this.inputHandlers.size === 0) {
554
+ this.dataDisposable = this.terminal.onData((data) => {
555
+ const bytes = encodeString(data);
556
+ for (const h of this.inputHandlers) {
557
+ h(bytes);
558
+ }
559
+ });
560
+ }
561
+ this.inputHandlers.add(handler);
562
+ return {
563
+ dispose: () => {
564
+ this.inputHandlers.delete(handler);
565
+ if (this.inputHandlers.size === 0 && this.dataDisposable) {
566
+ this.dataDisposable.dispose();
567
+ this.dataDisposable = null;
568
+ }
569
+ }
570
+ };
571
+ }
572
+ onResize(handler) {
573
+ if (this.resizeHandlers.size === 0) {
574
+ this.resizeDisposable = this.terminal.onResize((size) => {
575
+ const terminalSize = {
576
+ columns: size.cols,
577
+ rows: size.rows
578
+ };
579
+ for (const h of this.resizeHandlers) {
580
+ h(terminalSize);
581
+ }
582
+ });
583
+ }
584
+ this.resizeHandlers.add(handler);
585
+ return {
586
+ dispose: () => {
587
+ this.resizeHandlers.delete(handler);
588
+ if (this.resizeHandlers.size === 0 && this.resizeDisposable) {
589
+ this.resizeDisposable.dispose();
590
+ this.resizeDisposable = null;
591
+ }
592
+ }
593
+ };
594
+ }
595
+ write(data) {
596
+ if (data.length === 0) {
597
+ return;
598
+ }
599
+ const normalized = data.replace(/(?<!\r)\n/g, "\r\n");
600
+ this.terminal.write(normalized);
601
+ }
602
+ getSize() {
603
+ return {
604
+ columns: this.terminal.cols,
605
+ rows: this.terminal.rows
606
+ };
607
+ }
608
+ enableRawMode() {
609
+ }
610
+ disableRawMode() {
611
+ }
612
+ isTTY() {
613
+ return true;
614
+ }
615
+ dispose() {
616
+ if (this.disposed) {
617
+ return;
618
+ }
619
+ this.disposed = true;
620
+ if (this.dataDisposable) {
621
+ this.dataDisposable.dispose();
622
+ this.dataDisposable = null;
623
+ }
624
+ if (this.resizeDisposable) {
625
+ this.resizeDisposable.dispose();
626
+ this.resizeDisposable = null;
627
+ }
628
+ this.inputHandlers.clear();
629
+ this.resizeHandlers.clear();
630
+ }
631
+ };
632
+
633
+ // src/browser/index.ts
634
+ var BrowserPlatformAdapter = class {
635
+ terminal;
636
+ signals;
637
+ clipboard;
638
+ environment;
639
+ filesystem;
640
+ path;
641
+ archive;
642
+ style;
643
+ disposed = false;
644
+ disposables = [];
645
+ /**
646
+ * Create a new browser platform adapter.
647
+ * @param options - Configuration options (requires xterm.js Terminal)
648
+ */
649
+ constructor(options) {
650
+ const terminalAdapter = new XtermTerminalAdapter(options.terminal);
651
+ const signalAdapter = new BrowserSignalAdapter();
652
+ const clipboardAdapter = new BrowserClipboardAdapter();
653
+ const environmentAdapter = new BrowserEnvironmentAdapter(options.env);
654
+ const filesystemAdapter = new BrowserFileSystemAdapter();
655
+ const pathAdapter = new BrowserPathAdapter();
656
+ const archiveAdapter = new BrowserArchiveAdapter();
657
+ const styleAdapter = {
658
+ style: createAlwaysEnabledStyle(),
659
+ enabled: true,
660
+ level: 3
661
+ };
662
+ this.terminal = terminalAdapter;
663
+ this.signals = signalAdapter;
664
+ this.clipboard = clipboardAdapter;
665
+ this.environment = environmentAdapter;
666
+ this.filesystem = filesystemAdapter;
667
+ this.path = pathAdapter;
668
+ this.archive = archiveAdapter;
669
+ this.style = styleAdapter;
670
+ this.disposables.push(terminalAdapter, signalAdapter);
671
+ }
672
+ dispose() {
673
+ if (this.disposed) {
674
+ return;
675
+ }
676
+ this.disposed = true;
677
+ for (const disposable of this.disposables) {
678
+ disposable.dispose();
679
+ }
680
+ }
681
+ };
682
+ function createBrowserPlatform(options) {
683
+ return new BrowserPlatformAdapter(options);
684
+ }
685
+
686
+ exports.BrowserArchiveAdapter = BrowserArchiveAdapter;
687
+ exports.BrowserClipboardAdapter = BrowserClipboardAdapter;
688
+ exports.BrowserEnvironmentAdapter = BrowserEnvironmentAdapter;
689
+ exports.BrowserFileSystemAdapter = BrowserFileSystemAdapter;
690
+ exports.BrowserPathAdapter = BrowserPathAdapter;
691
+ exports.BrowserPlatformAdapter = BrowserPlatformAdapter;
692
+ exports.BrowserSignalAdapter = BrowserSignalAdapter;
693
+ exports.XtermTerminalAdapter = XtermTerminalAdapter;
694
+ exports.createBrowserPlatform = createBrowserPlatform;
695
+ //# sourceMappingURL=index.cjs.map
696
+ //# sourceMappingURL=index.cjs.map