@lvce-editor/file-system-worker 3.1.0 → 4.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.
@@ -54,6 +54,49 @@ class VError extends Error {
54
54
  }
55
55
  }
56
56
 
57
+ class AssertionError extends Error {
58
+ constructor(message) {
59
+ super(message);
60
+ this.name = 'AssertionError';
61
+ }
62
+ }
63
+ const Object$1 = 1;
64
+ const Number$1 = 2;
65
+ const Array$1 = 3;
66
+ const String$1 = 4;
67
+ const Boolean = 5;
68
+ const Function = 6;
69
+ const Null = 7;
70
+ const Unknown = 8;
71
+ const getType = value => {
72
+ switch (typeof value) {
73
+ case 'number':
74
+ return Number$1;
75
+ case 'function':
76
+ return Function;
77
+ case 'string':
78
+ return String$1;
79
+ case 'object':
80
+ if (value === null) {
81
+ return Null;
82
+ }
83
+ if (Array.isArray(value)) {
84
+ return Array$1;
85
+ }
86
+ return Object$1;
87
+ case 'boolean':
88
+ return Boolean;
89
+ default:
90
+ return Unknown;
91
+ }
92
+ };
93
+ const object = value => {
94
+ const type = getType(value);
95
+ if (type !== Object$1) {
96
+ throw new AssertionError('expected value to be of type object');
97
+ }
98
+ };
99
+
57
100
  const isMessagePort = value => {
58
101
  return value && value instanceof MessagePort;
59
102
  };
@@ -535,7 +578,7 @@ const create$4$1 = (method, params) => {
535
578
  };
536
579
  };
537
580
  const callbacks = Object.create(null);
538
- const set$5 = (id, fn) => {
581
+ const set$4 = (id, fn) => {
539
582
  callbacks[id] = fn;
540
583
  };
541
584
  const get$1 = id => {
@@ -554,7 +597,7 @@ const registerPromise = () => {
554
597
  resolve,
555
598
  promise
556
599
  } = Promise.withResolvers();
557
- set$5(id, resolve);
600
+ set$4(id, resolve);
558
601
  return {
559
602
  id,
560
603
  promise
@@ -902,7 +945,7 @@ const send = (transport, method, ...params) => {
902
945
  const invoke$4 = (ipc, method, ...params) => {
903
946
  return invokeHelper(ipc, method, params, false);
904
947
  };
905
- const invokeAndTransfer$3 = (ipc, method, ...params) => {
948
+ const invokeAndTransfer$2 = (ipc, method, ...params) => {
906
949
  return invokeHelper(ipc, method, params, true);
907
950
  };
908
951
 
@@ -941,7 +984,7 @@ const createRpc = ipc => {
941
984
  return invoke$4(ipc, method, ...params);
942
985
  },
943
986
  invokeAndTransfer(method, ...params) {
944
- return invokeAndTransfer$3(ipc, method, ...params);
987
+ return invokeAndTransfer$2(ipc, method, ...params);
945
988
  },
946
989
  async dispose() {
947
990
  await ipc?.dispose();
@@ -999,18 +1042,23 @@ const PlainMessagePortRpc = {
999
1042
  __proto__: null,
1000
1043
  create: create$5
1001
1044
  };
1002
- const create$4 = async ({
1045
+ const create$3 = async ({
1003
1046
  commandMap,
1004
- messagePort
1047
+ send
1005
1048
  }) => {
1049
+ const {
1050
+ port1,
1051
+ port2
1052
+ } = new MessageChannel();
1053
+ await send(port1);
1006
1054
  return create$5({
1007
1055
  commandMap,
1008
- messagePort
1056
+ messagePort: port2
1009
1057
  });
1010
1058
  };
1011
- const PlainMessagePortRpcParent = {
1059
+ const TransferMessagePortRpcParent = {
1012
1060
  __proto__: null,
1013
- create: create$4
1061
+ create: create$3
1014
1062
  };
1015
1063
  const create$2 = async ({
1016
1064
  commandMap,
@@ -1060,7 +1108,7 @@ const WebSocketRpcParent2 = {
1060
1108
  __proto__: null,
1061
1109
  create: create$1
1062
1110
  };
1063
- const create$3 = async ({
1111
+ const create$4 = async ({
1064
1112
  commandMap
1065
1113
  }) => {
1066
1114
  // TODO create a commandMap per rpc instance
@@ -1072,7 +1120,7 @@ const create$3 = async ({
1072
1120
  };
1073
1121
  const WebWorkerRpcClient = {
1074
1122
  __proto__: null,
1075
- create: create$3
1123
+ create: create$4
1076
1124
  };
1077
1125
  const createMockRpc = ({
1078
1126
  commandMap
@@ -1094,45 +1142,15 @@ const createMockRpc = ({
1094
1142
  return mockRpc;
1095
1143
  };
1096
1144
 
1097
- const readFile$5 = async uri => {
1098
- const response = await fetch(uri);
1099
- if (!response.ok) {
1100
- throw new Error(response.statusText);
1101
- }
1102
- const result = await response.text();
1103
- return result;
1104
- };
1105
- const readFileAsBlob$1 = async uri => {
1106
- const response = await fetch(uri);
1107
- if (!response.ok) {
1108
- throw new Error(response.statusText);
1109
- }
1110
- const result = await response.blob();
1111
- return result;
1112
- };
1113
- const exists$3 = async uri => {
1114
- const response = await fetch(uri);
1115
- if (response.ok) {
1116
- return true;
1117
- }
1118
- return false;
1119
- };
1120
- const readJson$4 = async uri => {
1121
- const response = await fetch(uri);
1122
- if (!response.ok) {
1123
- throw new Error(`${response.statusText}`);
1124
- }
1125
- const json = await response.json();
1126
- return json;
1127
- };
1128
-
1129
1145
  const DebugWorker = 55;
1146
+ const ExtensionHostWorker = 44;
1130
1147
  const FileSystemProcess$1 = 210;
1131
1148
  const FileSystemWorker = 209;
1132
- const RendererWorker$1 = 1;
1149
+ const RendererProcess = 1670;
1150
+ const RendererWorker = 1;
1133
1151
 
1134
1152
  const rpcs = Object.create(null);
1135
- const set$4 = (id, rpc) => {
1153
+ const set$3 = (id, rpc) => {
1136
1154
  rpcs[id] = rpc;
1137
1155
  };
1138
1156
  const get = id => {
@@ -1154,7 +1172,7 @@ const create = rpcId => {
1154
1172
  return rpc.invokeAndTransfer(method, ...params);
1155
1173
  },
1156
1174
  set(rpc) {
1157
- set$4(rpcId, rpc);
1175
+ set$3(rpcId, rpc);
1158
1176
  },
1159
1177
  async dispose() {
1160
1178
  const rpc = get(rpcId);
@@ -1165,9 +1183,9 @@ const create = rpcId => {
1165
1183
 
1166
1184
  const {
1167
1185
  invoke: invoke$3,
1168
- invokeAndTransfer: invokeAndTransfer$2,
1169
- set: set$3,
1170
- dispose: dispose$1
1186
+ invokeAndTransfer: invokeAndTransfer$1,
1187
+ set: set$2,
1188
+ dispose
1171
1189
  } = create(FileSystemProcess$1);
1172
1190
  const remove$3 = async uri => {
1173
1191
  return invoke$3('FileSystem.remove', uri);
@@ -1186,7 +1204,7 @@ const getPathSeparator$2 = async root => {
1186
1204
  // @ts-ignore
1187
1205
  return invoke$3('FileSystem.getPathSeparator', root);
1188
1206
  };
1189
- const readJson$3 = async root => {
1207
+ const readJson$4 = async root => {
1190
1208
  // @ts-ignore
1191
1209
  return invoke$3('FileSystem.readJson', root);
1192
1210
  };
@@ -1214,19 +1232,19 @@ const copy$2 = async (oldUri, newUri) => {
1214
1232
  // @ts-ignore
1215
1233
  return invoke$3('FileSystem.copy', oldUri, newUri);
1216
1234
  };
1217
- const getFolderSize$3 = async uri => {
1235
+ const getFolderSize$2 = async uri => {
1218
1236
  // @ts-ignore
1219
1237
  return invoke$3('FileSystem.getFolderSize', uri);
1220
1238
  };
1221
- const exists$2 = async uri => {
1239
+ const exists$3 = async uri => {
1222
1240
  // @ts-ignore
1223
1241
  return invoke$3('FileSystem.exists', uri);
1224
1242
  };
1225
- const registerMockRpc$1 = commandMap => {
1243
+ const registerMockRpc = commandMap => {
1226
1244
  const mockRpc = createMockRpc({
1227
1245
  commandMap
1228
1246
  });
1229
- set$3(mockRpc);
1247
+ set$2(mockRpc);
1230
1248
  return mockRpc;
1231
1249
  };
1232
1250
 
@@ -1234,426 +1252,284 @@ const FileSystemProcess = {
1234
1252
  __proto__: null,
1235
1253
  appendFile: appendFile$2,
1236
1254
  copy: copy$2,
1237
- dispose: dispose$1,
1238
- exists: exists$2,
1239
- getFolderSize: getFolderSize$3,
1255
+ dispose,
1256
+ exists: exists$3,
1257
+ getFolderSize: getFolderSize$2,
1240
1258
  getPathSeparator: getPathSeparator$2,
1241
1259
  getRealPath: getRealPath$2,
1242
1260
  invoke: invoke$3,
1243
- invokeAndTransfer: invokeAndTransfer$2,
1261
+ invokeAndTransfer: invokeAndTransfer$1,
1244
1262
  mkdir: mkdir$2,
1245
1263
  readDirWithFileTypes: readDirWithFileTypes$2,
1246
1264
  readFile: readFile$4,
1247
- readJson: readJson$3,
1248
- registerMockRpc: registerMockRpc$1,
1265
+ readJson: readJson$4,
1266
+ registerMockRpc,
1249
1267
  remove: remove$3,
1250
1268
  rename: rename$3,
1251
- set: set$3,
1269
+ set: set$2,
1252
1270
  stat: stat$2,
1253
1271
  writeFile: writeFile$3
1254
1272
  };
1255
1273
 
1256
1274
  const {
1257
- invoke: invoke$2,
1258
- invokeAndTransfer: invokeAndTransfer$1,
1259
- set: set$2,
1260
- dispose
1261
- } = create(RendererWorker$1);
1262
- const searchFileHtml = async uri => {
1263
- return invoke$2('ExtensionHost.searchFileWithHtml', uri);
1264
- };
1265
- const getFilePathElectron = async file => {
1266
- return invoke$2('FileSystemHandle.getFilePathElectron', file);
1267
- };
1268
- const showContextMenu = async (x, y, id, ...args) => {
1269
- return invoke$2('ContextMenu.show', x, y, id, ...args);
1270
- };
1271
- const getElectronVersion = async () => {
1272
- return invoke$2('Process.getElectronVersion');
1273
- };
1274
- const applyBulkReplacement = async bulkEdits => {
1275
- await invoke$2('BulkReplacement.applyBulkReplacement', bulkEdits);
1276
- };
1277
- const setColorTheme = async id => {
1278
- // @ts-ignore
1279
- return invoke$2(/* ColorTheme.setColorTheme */'ColorTheme.setColorTheme', /* colorThemeId */id);
1280
- };
1281
- const getNodeVersion = async () => {
1282
- return invoke$2('Process.getNodeVersion');
1283
- };
1284
- const getChromeVersion = async () => {
1285
- return invoke$2('Process.getChromeVersion');
1286
- };
1287
- const getV8Version = async () => {
1288
- return invoke$2('Process.getV8Version');
1289
- };
1290
- const getFileHandles = async fileIds => {
1291
- const files = await invoke$2('FileSystemHandle.getFileHandles', fileIds);
1292
- return files;
1293
- };
1294
- const setWorkspacePath = async path => {
1295
- await invoke$2('Workspace.setPath', path);
1296
- };
1297
- const registerWebViewInterceptor = async (id, port) => {
1298
- await invokeAndTransfer$1('WebView.registerInterceptor', id, port);
1299
- };
1300
- const unregisterWebViewInterceptor = async id => {
1301
- await invoke$2('WebView.unregisterInterceptor', id);
1302
- };
1303
- const sendMessagePortToEditorWorker = async (port, rpcId) => {
1304
- const command = 'HandleMessagePort.handleMessagePort';
1305
- // @ts-ignore
1306
- await invokeAndTransfer$1('SendMessagePortToExtensionHostWorker.sendMessagePortToEditorWorker', port, command, rpcId);
1307
- };
1308
- const sendMessagePortToErrorWorker = async (port, rpcId) => {
1309
- const command = 'Errors.handleMessagePort';
1310
- // @ts-ignore
1311
- await invokeAndTransfer$1('SendMessagePortToExtensionHostWorker.sendMessagePortToErrorWorker', port, command, rpcId);
1312
- };
1313
- const sendMessagePortToMarkdownWorker = async (port, rpcId) => {
1314
- const command = 'Markdown.handleMessagePort';
1315
- // @ts-ignore
1316
- await invokeAndTransfer$1('SendMessagePortToExtensionHostWorker.sendMessagePortToMarkdownWorker', port, command, rpcId);
1317
- };
1318
- const sendMessagePortToIconThemeWorker = async (port, rpcId) => {
1319
- const command = 'IconTheme.handleMessagePort';
1320
- // @ts-ignore
1321
- await invokeAndTransfer$1('SendMessagePortToExtensionHostWorker.sendMessagePortToIconThemeWorker', port, command, rpcId);
1322
- };
1323
- const sendMessagePortToFileSystemWorker = async (port, rpcId) => {
1324
- const command = 'FileSystem.handleMessagePort';
1325
- // @ts-ignore
1326
- await invokeAndTransfer$1('SendMessagePortToExtensionHostWorker.sendMessagePortToFileSystemWorker', port, command, rpcId);
1327
- };
1328
- const readFile$3 = async uri => {
1329
- return invoke$2('FileSystem.readFile', uri);
1330
- };
1331
- const getWebViewSecret = async key => {
1332
- // @ts-ignore
1333
- return invoke$2('WebView.getSecret', key);
1334
- };
1335
- const setWebViewPort = async (uid, port, origin, portType) => {
1336
- return invokeAndTransfer$1('WebView.setPort', uid, port, origin, portType);
1337
- };
1338
- const setFocus = key => {
1339
- return invoke$2('Focus.setFocus', key);
1340
- };
1341
- const getFileIcon = async options => {
1342
- return invoke$2('IconTheme.getFileIcon', options);
1343
- };
1344
- const getColorThemeNames = async () => {
1345
- return invoke$2('ColorTheme.getColorThemeNames');
1346
- };
1347
- const disableExtension = async id => {
1348
- // @ts-ignore
1349
- return invoke$2('ExtensionManagement.disable', id);
1350
- };
1351
- const enableExtension = async id => {
1352
- // @ts-ignore
1353
- return invoke$2('ExtensionManagement.enable', id);
1354
- };
1355
- const handleDebugChange = async params => {
1356
- // @ts-ignore
1357
- return invoke$2('Run And Debug.handleChange', params);
1358
- };
1359
- const getFolderIcon = async options => {
1360
- return invoke$2('IconTheme.getFolderIcon', options);
1361
- };
1362
- const closeWidget = async widgetId => {
1363
- return invoke$2('Viewlet.closeWidget', widgetId);
1364
- };
1365
- const sendMessagePortToExtensionHostWorker$1 = async (port, rpcId = 0) => {
1275
+ invokeAndTransfer,
1276
+ set: set$1} = create(RendererWorker);
1277
+ const sendMessagePortToExtensionHostWorker = async (port, rpcId = 0) => {
1366
1278
  const command = 'HandleMessagePort.handleMessagePort2';
1367
- await invokeAndTransfer$1('SendMessagePortToExtensionHostWorker.sendMessagePortToExtensionHostWorker', port, command, rpcId);
1368
- };
1369
- const sendMessagePortToSearchProcess = async port => {
1370
- await invokeAndTransfer$1('SendMessagePortToElectron.sendMessagePortToElectron', port, 'HandleMessagePortForSearchProcess.handleMessagePortForSearchProcess');
1371
- };
1372
- const confirm = async (message, options) => {
1373
- // @ts-ignore
1374
- const result = await invoke$2('ConfirmPrompt.prompt', message, options);
1375
- return result;
1376
- };
1377
- const getRecentlyOpened = async () => {
1378
- return invoke$2(/* RecentlyOpened.getRecentlyOpened */'RecentlyOpened.getRecentlyOpened');
1379
- };
1380
- const getKeyBindings = async () => {
1381
- return invoke$2('KeyBindingsInitial.getKeyBindings');
1382
- };
1383
- const writeClipBoardText = async text => {
1384
- await invoke$2('ClipBoard.writeText', /* text */text);
1385
- };
1386
- const writeClipBoardImage = async blob => {
1387
- // @ts-ignore
1388
- await invoke$2('ClipBoard.writeImage', /* text */blob);
1389
- };
1390
- const searchFileMemory = async uri => {
1391
- // @ts-ignore
1392
- return invoke$2('ExtensionHost.searchFileWithMemory', uri);
1393
- };
1394
- const searchFileFetch = async uri => {
1395
- return invoke$2('ExtensionHost.searchFileWithFetch', uri);
1396
- };
1397
- const showMessageBox = async options => {
1398
- return invoke$2('ElectronDialog.showMessageBox', options);
1399
- };
1400
- const handleDebugResumed = async params => {
1401
- await invoke$2('Run And Debug.handleResumed', params);
1402
- };
1403
- const openWidget = async name => {
1404
- await invoke$2('Viewlet.openWidget', name);
1405
- };
1406
- const getIcons = async requests => {
1407
- const icons = await invoke$2('IconTheme.getIcons', requests);
1408
- return icons;
1409
- };
1410
- const activateByEvent = event => {
1411
- return invoke$2('ExtensionHostManagement.activateByEvent', event);
1412
- };
1413
- const setAdditionalFocus = focusKey => {
1414
- // @ts-ignore
1415
- return invoke$2('Focus.setAdditionalFocus', focusKey);
1416
- };
1417
- const getActiveEditorId = () => {
1418
- // @ts-ignore
1419
- return invoke$2('GetActiveEditor.getActiveEditorId');
1420
- };
1421
- const getWorkspacePath = () => {
1422
- return invoke$2('Workspace.getPath');
1279
+ await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToExtensionHostWorker', port, command, rpcId);
1423
1280
  };
1424
1281
  const sendMessagePortToRendererProcess = async port => {
1425
1282
  const command = 'HandleMessagePort.handleMessagePort';
1426
1283
  // @ts-ignore
1427
- await invokeAndTransfer$1('SendMessagePortToExtensionHostWorker.sendMessagePortToRendererProcess', port, command, DebugWorker);
1428
- };
1429
- const getPreference = async key => {
1430
- return await invoke$2('Preferences.get', key);
1431
- };
1432
- const getAllExtensions = async () => {
1433
- return invoke$2('ExtensionManagement.getAllExtensions');
1434
- };
1435
- const rerenderEditor = async key => {
1436
- // @ts-ignore
1437
- return invoke$2('Editor.rerender', key);
1438
- };
1439
- const handleDebugPaused = async params => {
1440
- await invoke$2('Run And Debug.handlePaused', params);
1441
- };
1442
- const openUri = async (uri, focus, options) => {
1443
- await invoke$2('Main.openUri', uri, focus, options);
1444
- };
1445
- const sendMessagePortToSyntaxHighlightingWorker = async port => {
1446
- await invokeAndTransfer$1(
1447
- // @ts-ignore
1448
- 'SendMessagePortToSyntaxHighlightingWorker.sendMessagePortToSyntaxHighlightingWorker', port, 'HandleMessagePort.handleMessagePort2');
1449
- };
1450
- const handleDebugScriptParsed = async script => {
1451
- await invoke$2('Run And Debug.handleScriptParsed', script);
1452
- };
1453
- const getWindowId = async () => {
1454
- return invoke$2('GetWindowId.getWindowId');
1455
- };
1456
- const getBlob = async uri => {
1457
- // @ts-ignore
1458
- return invoke$2('FileSystem.getBlob', uri);
1459
- };
1460
- const getExtensionCommands = async () => {
1461
- return invoke$2('ExtensionHost.getCommands');
1462
- };
1463
- const showErrorDialog = async errorInfo => {
1464
- // @ts-ignore
1465
- await invoke$2('ErrorHandling.showErrorDialog', errorInfo);
1466
- };
1467
- const getFolderSize$2 = async uri => {
1468
- // @ts-ignore
1469
- return await invoke$2('FileSystem.getFolderSize', uri);
1470
- };
1471
- const getExtension = async id => {
1472
- // @ts-ignore
1473
- return invoke$2('ExtensionManagement.getExtension', id);
1474
- };
1475
- const getMarkdownDom = async html => {
1476
- // @ts-ignore
1477
- return invoke$2('Markdown.getVirtualDom', html);
1478
- };
1479
- const renderMarkdown = async (markdown, options) => {
1480
- // @ts-ignore
1481
- return invoke$2('Markdown.renderMarkdown', markdown, options);
1482
- };
1483
- const openNativeFolder = async uri => {
1484
- // @ts-ignore
1485
- await invoke$2('OpenNativeFolder.openNativeFolder', uri);
1486
- };
1487
- const uninstallExtension = async id => {
1488
- return invoke$2('ExtensionManagement.uninstall', id);
1489
- };
1490
- const installExtension = async id => {
1491
- // @ts-ignore
1492
- return invoke$2('ExtensionManagement.install', id);
1493
- };
1494
- const openExtensionSearch = async () => {
1495
- // @ts-ignore
1496
- return invoke$2('SideBar.openViewlet', 'Extensions');
1497
- };
1498
- const setExtensionsSearchValue = async searchValue => {
1499
- // @ts-ignore
1500
- return invoke$2('Extensions.handleInput', searchValue);
1501
- };
1502
- const openExternal = async uri => {
1503
- // @ts-ignore
1504
- await invoke$2('Open.openExternal', uri);
1505
- };
1506
- const openUrl = async uri => {
1507
- // @ts-ignore
1508
- await invoke$2('Open.openUrl', uri);
1509
- };
1510
- const getAllPreferences = async () => {
1511
- // @ts-ignore
1512
- return invoke$2('Preferences.getAll');
1513
- };
1514
- const showSaveFilePicker = async () => {
1515
- // @ts-ignore
1516
- return invoke$2('FilePicker.showSaveFilePicker');
1517
- };
1518
- const getLogsDir = async () => {
1519
- // @ts-ignore
1520
- return invoke$2('PlatformPaths.getLogsDir');
1521
- };
1522
- const registerMockRpc = commandMap => {
1523
- const mockRpc = createMockRpc({
1524
- commandMap
1525
- });
1526
- set$2(mockRpc);
1527
- return mockRpc;
1284
+ await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToRendererProcess', port, command, DebugWorker);
1528
1285
  };
1529
1286
 
1530
- const RendererWorker = {
1531
- __proto__: null,
1532
- activateByEvent,
1533
- applyBulkReplacement,
1534
- closeWidget,
1535
- confirm,
1536
- disableExtension,
1537
- dispose,
1538
- enableExtension,
1539
- getActiveEditorId,
1540
- getAllExtensions,
1541
- getAllPreferences,
1542
- getBlob,
1543
- getChromeVersion,
1544
- getColorThemeNames,
1545
- getElectronVersion,
1546
- getExtension,
1547
- getExtensionCommands,
1548
- getFileHandles,
1549
- getFileIcon,
1550
- getFilePathElectron,
1551
- getFolderIcon,
1552
- getFolderSize: getFolderSize$2,
1553
- getIcons,
1554
- getKeyBindings,
1555
- getLogsDir,
1556
- getMarkdownDom,
1557
- getNodeVersion,
1558
- getPreference,
1559
- getRecentlyOpened,
1560
- getV8Version,
1561
- getWebViewSecret,
1562
- getWindowId,
1563
- getWorkspacePath,
1564
- handleDebugChange,
1565
- handleDebugPaused,
1566
- handleDebugResumed,
1567
- handleDebugScriptParsed,
1568
- installExtension,
1569
- invoke: invoke$2,
1570
- invokeAndTransfer: invokeAndTransfer$1,
1571
- openExtensionSearch,
1572
- openExternal,
1573
- openNativeFolder,
1574
- openUri,
1575
- openUrl,
1576
- openWidget,
1577
- readFile: readFile$3,
1578
- registerMockRpc,
1579
- registerWebViewInterceptor,
1580
- renderMarkdown,
1581
- rerenderEditor,
1582
- searchFileFetch,
1583
- searchFileHtml,
1584
- searchFileMemory,
1585
- sendMessagePortToEditorWorker,
1586
- sendMessagePortToErrorWorker,
1587
- sendMessagePortToExtensionHostWorker: sendMessagePortToExtensionHostWorker$1,
1588
- sendMessagePortToFileSystemWorker,
1589
- sendMessagePortToIconThemeWorker,
1590
- sendMessagePortToMarkdownWorker,
1591
- sendMessagePortToRendererProcess,
1592
- sendMessagePortToSearchProcess,
1593
- sendMessagePortToSyntaxHighlightingWorker,
1594
- set: set$2,
1595
- setAdditionalFocus,
1596
- setColorTheme,
1597
- setExtensionsSearchValue,
1598
- setFocus,
1599
- setWebViewPort,
1600
- setWorkspacePath,
1601
- showContextMenu,
1602
- showErrorDialog,
1603
- showMessageBox,
1604
- showSaveFilePicker,
1605
- uninstallExtension,
1606
- unregisterWebViewInterceptor,
1607
- writeClipBoardImage,
1608
- writeClipBoardText
1609
- };
1610
-
1611
- const getPortTuple = () => {
1612
- const {
1613
- port1,
1614
- port2
1615
- } = new MessageChannel();
1287
+ const createLazyRpc = rpcId => {
1288
+ let rpcPromise;
1289
+ let factory;
1290
+ const createRpc = async () => {
1291
+ const rpc = await factory();
1292
+ set$3(rpcId, rpc);
1293
+ };
1294
+ const ensureRpc = async () => {
1295
+ if (!rpcPromise) {
1296
+ rpcPromise = createRpc();
1297
+ }
1298
+ await rpcPromise;
1299
+ };
1616
1300
  return {
1617
- port1,
1618
- port2
1301
+ setFactory(value) {
1302
+ factory = value;
1303
+ },
1304
+ async invoke(method, ...params) {
1305
+ await ensureRpc();
1306
+ const rpc = get(rpcId);
1307
+ return rpc.invoke(method, ...params);
1308
+ }
1619
1309
  };
1620
1310
  };
1621
1311
 
1622
- const {
1623
- invokeAndTransfer,
1624
- set: set$1,
1625
- sendMessagePortToExtensionHostWorker
1626
- } = RendererWorker;
1312
+ // TODO: including these in blob-util.ts causes typedoc to generate docs for them,
1313
+ // even with --excludePrivate ¯\_(ツ)_/¯
1314
+ /** @private */
1627
1315
 
1628
- const createExtensionHostRpc = async () => {
1316
+ /* global Promise, Image, Blob, FileReader, atob, btoa,
1317
+ BlobBuilder, MSBlobBuilder, MozBlobBuilder, WebKitBlobBuilder, webkitURL */
1318
+ /**
1319
+ * Shim for
1320
+ * [`new Blob()`](https://developer.mozilla.org/en-US/docs/Web/API/Blob.Blob)
1321
+ * to support
1322
+ * [older browsers that use the deprecated `BlobBuilder` API](http://caniuse.com/blob).
1323
+ *
1324
+ * Example:
1325
+ *
1326
+ * ```js
1327
+ * var myBlob = blobUtil.createBlob(['hello world'], {type: 'text/plain'});
1328
+ * ```
1329
+ *
1330
+ * @param parts - content of the Blob
1331
+ * @param properties - usually `{type: myContentType}`,
1332
+ * you can also pass a string for the content type
1333
+ * @returns Blob
1334
+ */
1335
+ function createBlob(parts, properties) {
1336
+ parts = parts || [];
1337
+ properties = properties || {};
1338
+ if (typeof properties === 'string') {
1339
+ properties = {
1340
+ type: properties
1341
+ }; // infer content type
1342
+ }
1629
1343
  try {
1630
- const {
1631
- port1,
1632
- port2
1633
- } = getPortTuple();
1634
- await sendMessagePortToExtensionHostWorker(port2);
1635
- const rpc = await PlainMessagePortRpcParent.create({
1636
- commandMap: {},
1637
- messagePort: port1
1638
- });
1639
- return rpc;
1344
+ return new Blob(parts, properties);
1345
+ } catch (e) {
1346
+ if (e.name !== 'TypeError') {
1347
+ throw e;
1348
+ }
1349
+ var Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder : typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder : typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : WebKitBlobBuilder;
1350
+ var builder = new Builder();
1351
+ for (var i = 0; i < parts.length; i += 1) {
1352
+ builder.append(parts[i]);
1353
+ }
1354
+ return builder.getBlob(properties.type);
1355
+ }
1356
+ }
1357
+ /**
1358
+ * Convert a `Blob` to a binary string.
1359
+ *
1360
+ * Example:
1361
+ *
1362
+ * ```js
1363
+ * blobUtil.blobToBinaryString(blob).then(function (binaryString) {
1364
+ * // success
1365
+ * }).catch(function (err) {
1366
+ * // error
1367
+ * });
1368
+ * ```
1369
+ *
1370
+ * @param blob
1371
+ * @returns Promise that resolves with the binary string
1372
+ */
1373
+ function blobToBinaryString$1(blob) {
1374
+ return new Promise(function (resolve, reject) {
1375
+ var reader = new FileReader();
1376
+ var hasBinaryString = typeof reader.readAsBinaryString === 'function';
1377
+ reader.onloadend = function () {
1378
+ var result = reader.result || '';
1379
+ if (hasBinaryString) {
1380
+ return resolve(result);
1381
+ }
1382
+ resolve(arrayBufferToBinaryString(result));
1383
+ };
1384
+ reader.onerror = reject;
1385
+ if (hasBinaryString) {
1386
+ reader.readAsBinaryString(blob);
1387
+ } else {
1388
+ reader.readAsArrayBuffer(blob);
1389
+ }
1390
+ });
1391
+ }
1392
+ /**
1393
+ * Convert a base64-encoded string to a `Blob`.
1394
+ *
1395
+ * Example:
1396
+ *
1397
+ * ```js
1398
+ * var blob = blobUtil.base64StringToBlob(base64String);
1399
+ * ```
1400
+ * @param base64 - base64-encoded string
1401
+ * @param type - the content type (optional)
1402
+ * @returns Blob
1403
+ */
1404
+ function base64StringToBlob(base64, type) {
1405
+ var parts = [binaryStringToArrayBuffer(atob(base64))];
1406
+ return type ? createBlob(parts, {
1407
+ type: type
1408
+ }) : createBlob(parts);
1409
+ }
1410
+ /**
1411
+ * Convert a binary string to a `Blob`.
1412
+ *
1413
+ * Example:
1414
+ *
1415
+ * ```js
1416
+ * var blob = blobUtil.binaryStringToBlob(binaryString);
1417
+ * ```
1418
+ *
1419
+ * @param binary - binary string
1420
+ * @param type - the content type (optional)
1421
+ * @returns Blob
1422
+ */
1423
+ function binaryStringToBlob$1(binary, type) {
1424
+ return base64StringToBlob(btoa(binary), type);
1425
+ }
1426
+ /**
1427
+ * Convert an `ArrayBuffer` to a binary string.
1428
+ *
1429
+ * Example:
1430
+ *
1431
+ * ```js
1432
+ * var myString = blobUtil.arrayBufferToBinaryString(arrayBuff)
1433
+ * ```
1434
+ *
1435
+ * @param buffer - array buffer
1436
+ * @returns binary string
1437
+ */
1438
+ function arrayBufferToBinaryString(buffer) {
1439
+ var binary = '';
1440
+ var bytes = new Uint8Array(buffer);
1441
+ var length = bytes.byteLength;
1442
+ var i = -1;
1443
+ while (++i < length) {
1444
+ binary += String.fromCharCode(bytes[i]);
1445
+ }
1446
+ return binary;
1447
+ }
1448
+ /**
1449
+ * Convert a binary string to an `ArrayBuffer`.
1450
+ *
1451
+ * ```js
1452
+ * var myBuffer = blobUtil.binaryStringToArrayBuffer(binaryString)
1453
+ * ```
1454
+ *
1455
+ * @param binary - binary string
1456
+ * @returns array buffer
1457
+ */
1458
+ function binaryStringToArrayBuffer(binary) {
1459
+ var length = binary.length;
1460
+ var buf = new ArrayBuffer(length);
1461
+ var arr = new Uint8Array(buf);
1462
+ var i = -1;
1463
+ while (++i < length) {
1464
+ arr[i] = binary.charCodeAt(i);
1465
+ }
1466
+ return buf;
1467
+ }
1468
+
1469
+ const normalizeBlobError = error => {
1470
+ if (error && error instanceof ProgressEvent && error.target &&
1471
+ // @ts-expect-error - target.error may not be in the type definition
1472
+ error.target.error) {
1473
+ // @ts-expect-error - target.error may not be in the type definition
1474
+ return error.target.error;
1475
+ }
1476
+ return error;
1477
+ };
1478
+
1479
+ const binaryStringToBlob = async (string, type) => {
1480
+ try {
1481
+ return binaryStringToBlob$1(string, type);
1640
1482
  } catch (error) {
1641
- throw new VError(error, `Failed to create extension host rpc`);
1483
+ const normalizedError = normalizeBlobError(error);
1484
+ throw new VError(normalizedError, 'Failed to convert binary string to blob');
1485
+ }
1486
+ };
1487
+ const blobToBinaryString = async blob => {
1488
+ try {
1489
+ return await blobToBinaryString$1(blob);
1490
+ } catch (error) {
1491
+ const normalizedError = normalizeBlobError(error);
1492
+ throw new VError(normalizedError, 'Failed to convert blob to binary string');
1642
1493
  }
1643
1494
  };
1644
1495
 
1645
- let rpcPromise = undefined;
1646
- const getOrCreate = () => {
1647
- if (!rpcPromise) {
1648
- rpcPromise = createExtensionHostRpc();
1496
+ const readFile$3 = async uri => {
1497
+ const response = await fetch(uri);
1498
+ if (!response.ok) {
1499
+ throw new Error(response.statusText);
1649
1500
  }
1650
- return rpcPromise;
1501
+ const result = await response.text();
1502
+ return result;
1651
1503
  };
1652
- const invoke$1 = async (method, ...params) => {
1653
- const rpc = await getOrCreate();
1654
- return rpc.invoke(method, ...params);
1504
+ const readFileAsBlob$1 = async uri => {
1505
+ const response = await fetch(uri);
1506
+ if (!response.ok) {
1507
+ throw new Error(response.statusText);
1508
+ }
1509
+ const result = await response.blob();
1510
+ return result;
1511
+ };
1512
+ const exists$2 = async uri => {
1513
+ const response = await fetch(uri);
1514
+ if (response.ok) {
1515
+ return true;
1516
+ }
1517
+ return false;
1518
+ };
1519
+ const readJson$3 = async uri => {
1520
+ const response = await fetch(uri);
1521
+ if (!response.ok) {
1522
+ throw new Error(`${response.statusText}`);
1523
+ }
1524
+ const json = await response.json();
1525
+ return json;
1655
1526
  };
1656
1527
 
1528
+ const {
1529
+ invoke: invoke$2,
1530
+ setFactory: setFactory$1
1531
+ } = createLazyRpc(ExtensionHostWorker);
1532
+
1657
1533
  const RE_PROTOCOL = /^([a-z-]+):\/\//;
1658
1534
  const assertUri = uri => {
1659
1535
  const protocolMatch = uri.match(RE_PROTOCOL);
@@ -1663,34 +1539,34 @@ const assertUri = uri => {
1663
1539
  };
1664
1540
 
1665
1541
  const {
1666
- set,
1667
- rename: rename$2,
1542
+ appendFile: appendFile$1,
1668
1543
  copy: copy$1,
1669
- mkdir: mkdir$1,
1670
- invoke,
1544
+ exists: exists$1,
1671
1545
  getFolderSize: getFolderSize$1,
1672
- writeFile: writeFile$2,
1673
- stat: stat$1,
1674
- readJson: readJson$2,
1675
1546
  getPathSeparator: getPathSeparator$1,
1676
1547
  getRealPath: getRealPath$1,
1548
+ invoke: invoke$1,
1549
+ mkdir: mkdir$1,
1677
1550
  readDirWithFileTypes: readDirWithFileTypes$1,
1678
1551
  readFile: readFile$2,
1552
+ readJson: readJson$2,
1679
1553
  remove: remove$2,
1680
- exists: exists$1,
1681
- appendFile: appendFile$1
1554
+ rename: rename$2,
1555
+ set,
1556
+ stat: stat$1,
1557
+ writeFile: writeFile$2
1682
1558
  } = FileSystemProcess;
1683
1559
 
1684
1560
  const Http = 'http:';
1685
1561
  const Memory = 'memfs:';
1686
1562
  const Https = 'https:';
1687
- const File = 'file:';
1563
+ const File$1 = 'file:';
1688
1564
 
1689
1565
  const watchCallbacks = Object.create(null);
1690
1566
  const registerWatchCallback = (id, rpcId, commandId, uri) => {
1691
1567
  watchCallbacks[id] = {
1692
- rpcId,
1693
1568
  commandId,
1569
+ rpcId,
1694
1570
  uri
1695
1571
  };
1696
1572
  };
@@ -1700,8 +1576,8 @@ const executeWatchCallBack = async id => {
1700
1576
  throw new Error(`watch callback ${id} not found`);
1701
1577
  }
1702
1578
  const {
1703
- rpcId,
1704
- commandId
1579
+ commandId,
1580
+ rpcId
1705
1581
  } = entry;
1706
1582
  const rpc = get(rpcId);
1707
1583
  await rpc.invoke(commandId, id);
@@ -1723,9 +1599,9 @@ const watchFile = async (id, uri, rpcId) => {
1723
1599
  assertUri(uri);
1724
1600
  const commandId = 'Output.executeWatchCallback';
1725
1601
  registerWatchCallback(id, rpcId, commandId, uri);
1726
- if (uri.startsWith(File)) {
1602
+ if (uri.startsWith(File$1)) {
1727
1603
  // @ts-ignore
1728
- await invoke('FileSystem.watchFile', id, uri);
1604
+ await invoke$1('FileSystem.watchFile', id, uri);
1729
1605
  }
1730
1606
  // memfs file watchers are handled in-memory, no need to register with FileSystemProcess
1731
1607
  };
@@ -1740,7 +1616,7 @@ const unwatchFile = async id => {
1740
1616
  unregisterWatchCallback(id);
1741
1617
  // TODO only if it is a file uri
1742
1618
  // @ts-ignore
1743
- await invoke('FileSystem.unwatchFile', id);
1619
+ await invoke$1('FileSystem.unwatchFile', id);
1744
1620
  };
1745
1621
  const triggerMemfsFileWatcher = async uri => {
1746
1622
  // Find all registered watchers for this URI and trigger them
@@ -1751,28 +1627,28 @@ const triggerMemfsFileWatcher = async uri => {
1751
1627
  };
1752
1628
 
1753
1629
  const remove$1 = async dirent => {
1754
- await invoke$1('FileSystemMemory.remove', dirent);
1630
+ await invoke$2('FileSystemMemory.remove', dirent);
1755
1631
  // Trigger file watchers for memfs files
1756
1632
  await triggerMemfsFileWatcher(dirent);
1757
1633
  };
1758
1634
  const readFile$1 = async uri => {
1759
- return invoke$1('FileSystemMemory.readFile', uri);
1635
+ return invoke$2('FileSystemMemory.readFile', uri);
1760
1636
  };
1761
1637
  const readJson$1 = async uri => {
1762
1638
  throw new Error('not implemented');
1763
1639
  };
1764
1640
  const createFile$1 = async uri => {
1765
- await invoke$1('FileSystemMemory.createFile', uri);
1641
+ await invoke$2('FileSystemMemory.createFile', uri);
1766
1642
  // Trigger file watchers for memfs files
1767
1643
  await triggerMemfsFileWatcher(uri);
1768
1644
  };
1769
1645
  const writeFile$1 = async (uri, content) => {
1770
- await invoke$1('FileSystemMemory.writeFile', uri, content);
1646
+ await invoke$2('FileSystemMemory.writeFile', uri, content);
1771
1647
  // Trigger file watchers for memfs files
1772
1648
  await triggerMemfsFileWatcher(uri);
1773
1649
  };
1774
1650
  const rename$1 = async (oldUri, newUri) => {
1775
- await invoke$1('FileSystemMemory.rename', oldUri, newUri);
1651
+ await invoke$2('FileSystemMemory.rename', oldUri, newUri);
1776
1652
  // Trigger file watchers for both old and new URIs
1777
1653
  await triggerMemfsFileWatcher(oldUri);
1778
1654
  await triggerMemfsFileWatcher(newUri);
@@ -1786,7 +1662,6 @@ const isMemory = uri => {
1786
1662
  return uri.startsWith(Memory);
1787
1663
  };
1788
1664
 
1789
- /* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */
1790
1665
  const remove = async dirent => {
1791
1666
  if (isMemory(dirent)) {
1792
1667
  return remove$1(dirent);
@@ -1795,7 +1670,7 @@ const remove = async dirent => {
1795
1670
  };
1796
1671
  const readFile = async uri => {
1797
1672
  if (isHttp(uri)) {
1798
- return readFile$5(uri);
1673
+ return readFile$3(uri);
1799
1674
  }
1800
1675
  if (isMemory(uri)) {
1801
1676
  return readFile$1(uri);
@@ -1813,7 +1688,7 @@ const getPathSeparator = async root => {
1813
1688
  };
1814
1689
  const readJson = async uri => {
1815
1690
  if (isHttp(uri)) {
1816
- return readJson$4(uri);
1691
+ return readJson$3(uri);
1817
1692
  }
1818
1693
  if (isMemory(uri)) {
1819
1694
  return readJson$1();
@@ -1844,7 +1719,7 @@ const stat = async dirent => {
1844
1719
  };
1845
1720
  const exists = async uri => {
1846
1721
  if (isHttp(uri)) {
1847
- return exists$3(uri);
1722
+ return exists$2(uri);
1848
1723
  }
1849
1724
  return exists$1(uri);
1850
1725
  };
@@ -1871,7 +1746,7 @@ const getBytes = async blob => {
1871
1746
  const writeBlob = async (uri, blob) => {
1872
1747
  const bytes = await getBytes(blob);
1873
1748
  // @ts-ignore
1874
- await invoke('FileSystem.writeBuffer', uri, bytes);
1749
+ await invoke$1('FileSystem.writeBuffer', uri, bytes);
1875
1750
  };
1876
1751
  const mkdir = async uri => {
1877
1752
  return mkdir$1(uri);
@@ -1895,7 +1770,7 @@ const handleMessagePort = async (port, rpcId) => {
1895
1770
  messagePort: port
1896
1771
  });
1897
1772
  if (rpcId) {
1898
- set$4(rpcId, rpc);
1773
+ set$3(rpcId, rpc);
1899
1774
  }
1900
1775
  };
1901
1776
 
@@ -1906,14 +1781,9 @@ const sendMessagePortToFileSystemProcess = async port => {
1906
1781
 
1907
1782
  const createFileSystemProcessRpcElectron = async () => {
1908
1783
  try {
1909
- const {
1910
- port1,
1911
- port2
1912
- } = getPortTuple();
1913
- await sendMessagePortToFileSystemProcess(port2);
1914
- const rpc = await PlainMessagePortRpcParent.create({
1784
+ const rpc = await TransferMessagePortRpcParent.create({
1915
1785
  commandMap: {},
1916
- messagePort: port1
1786
+ send: sendMessagePortToFileSystemProcess
1917
1787
  });
1918
1788
  return rpc;
1919
1789
  } catch (error) {
@@ -1926,8 +1796,8 @@ const commandMapRef = {};
1926
1796
  const createFileSystemProcessRpcNode = async () => {
1927
1797
  try {
1928
1798
  const rpc = await WebSocketRpcParent2.create({
1929
- type: 'file-system-process',
1930
- commandMap: commandMapRef
1799
+ commandMap: commandMapRef,
1800
+ type: 'file-system-process'
1931
1801
  });
1932
1802
  return rpc;
1933
1803
  } catch (error) {
@@ -1967,7 +1837,107 @@ const initialize = async platform => {
1967
1837
  await initializeFileSytemProcess(platform);
1968
1838
  };
1969
1839
 
1840
+ const Directory = 'directory';
1841
+ const File = 'file';
1842
+
1843
+ const {
1844
+ invoke,
1845
+ setFactory
1846
+ } = createLazyRpc(RendererProcess);
1847
+
1848
+ /* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */
1849
+
1850
+ const fromAsync = async asyncIterable => {
1851
+ const children = [];
1852
+ for await (const value of asyncIterable) {
1853
+ children.push(value);
1854
+ }
1855
+ return children;
1856
+ };
1857
+
1858
+ /**
1859
+ * Do not use directly, use FileSystemHtml.getChildHandles
1860
+ * instead which prompts for the required permission to
1861
+ * retrieve the child handles
1862
+ */
1863
+ const getChildHandles = async handle => {
1864
+ object(handle);
1865
+
1866
+ // @ts-ignore - values() exists on FileSystemDirectoryHandle but TypeScript types may not include it
1867
+ const handles = await fromAsync(handle.values());
1868
+ return handles;
1869
+ };
1870
+
1871
+ const uploadDirectory = async (fileSystemHandle, pathSeparator, root, uploadHandles) => {
1872
+ const folderPath = root + pathSeparator + fileSystemHandle.name;
1873
+ await mkdir(folderPath);
1874
+ const childHandles = await getChildHandles(fileSystemHandle);
1875
+ await uploadHandles(childHandles, pathSeparator, folderPath);
1876
+ };
1877
+
1878
+ const getBinaryString$1 = file => {
1879
+ return blobToBinaryString(file);
1880
+ };
1881
+
1882
+ const getFile = handle => {
1883
+ return handle.getFile();
1884
+ };
1885
+ const getBinaryString = async handle => {
1886
+ const file = await getFile(handle);
1887
+ const text = await getBinaryString$1(file);
1888
+ return text;
1889
+ };
1890
+
1891
+ const join = (pathSeparator, ...parts) => {
1892
+ return parts.join(pathSeparator);
1893
+ };
1894
+
1895
+ const uploadFile = async (fileSystemHandle, pathSeparator, root) => {
1896
+ const content = await getBinaryString(fileSystemHandle);
1897
+ const to = join(pathSeparator, root, fileSystemHandle.name);
1898
+ await writeFile(to, content);
1899
+ };
1900
+
1901
+ const uploadHandle = async (fileSystemHandle, pathSeparator, root, uploadHandles) => {
1902
+ const {
1903
+ kind
1904
+ } = fileSystemHandle;
1905
+ switch (kind) {
1906
+ case Directory:
1907
+ return uploadDirectory(fileSystemHandle, pathSeparator, root, uploadHandles);
1908
+ case File:
1909
+ return uploadFile(fileSystemHandle, pathSeparator, root);
1910
+ default:
1911
+ throw new Error(`unsupported file system handle type ${kind}`);
1912
+ }
1913
+ };
1914
+
1915
+ const uploadHandles = async (fileSystemHandles, pathSeparator, root) => {
1916
+ for (const fileSystemHandle of fileSystemHandles) {
1917
+ await uploadHandle(fileSystemHandle, pathSeparator, root, uploadHandles);
1918
+ }
1919
+ };
1920
+ const uploadFileSystemHandles = async (root, pathSeparator, fileSystemHandles) => {
1921
+ if (fileSystemHandles.length === 1) {
1922
+ const file = fileSystemHandles[0];
1923
+ const {
1924
+ kind,
1925
+ name
1926
+ } = file;
1927
+ if (kind === Directory) {
1928
+ await invoke('PersistentFileHandle.addHandle', `/${name}`, file);
1929
+ await invoke('Workspace.setPath', `html:///${name}`);
1930
+ return true;
1931
+ }
1932
+ }
1933
+ await uploadHandles(fileSystemHandles, pathSeparator, root);
1934
+ return false;
1935
+ };
1936
+
1970
1937
  const commandMap = {
1938
+ 'Blob.base64StringToBlob': base64StringToBlob,
1939
+ 'Blob.binaryStringToBlob': binaryStringToBlob,
1940
+ 'Blob.blobToBinaryString': blobToBinaryString,
1971
1941
  'FileSystem.appendFile': appendFile,
1972
1942
  'FileSystem.copy': copy,
1973
1943
  'FileSystem.createFile': createFile,
@@ -1986,14 +1956,41 @@ const commandMap = {
1986
1956
  'FileSystem.rename': rename,
1987
1957
  'FileSystem.stat': stat,
1988
1958
  'FileSystem.unwatchFile': unwatchFile,
1959
+ 'FileSystem.uploadFileSystemHandles': uploadFileSystemHandles,
1989
1960
  'FileSystem.watchFile': watchFile,
1990
- 'FileSystem.writeFile': writeFile,
1991
1961
  'FileSystem.writeBlob': writeBlob,
1962
+ 'FileSystem.writeFile': writeFile,
1992
1963
  'Initialize.initialize': initialize
1993
1964
  };
1994
1965
 
1966
+ const createExtensionHostRpc = async () => {
1967
+ try {
1968
+ const rpc = await TransferMessagePortRpcParent.create({
1969
+ commandMap: {},
1970
+ send: sendMessagePortToExtensionHostWorker
1971
+ });
1972
+ return rpc;
1973
+ } catch (error) {
1974
+ throw new VError(error, `Failed to create extension host rpc`);
1975
+ }
1976
+ };
1977
+
1978
+ const createRendererProcessRpc = async () => {
1979
+ try {
1980
+ const rpc = await TransferMessagePortRpcParent.create({
1981
+ commandMap: {},
1982
+ send: sendMessagePortToRendererProcess
1983
+ });
1984
+ return rpc;
1985
+ } catch (error) {
1986
+ throw new VError(error, `Failed to create renderer process rpc`);
1987
+ }
1988
+ };
1989
+
1995
1990
  const listen = async () => {
1996
1991
  Object.assign(commandMapRef, commandMap);
1992
+ setFactory$1(createExtensionHostRpc);
1993
+ setFactory(createRendererProcessRpc);
1997
1994
  const rpc = await WebWorkerRpcClient.create({
1998
1995
  commandMap: commandMap
1999
1996
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/file-system-worker",
3
- "version": "3.1.0",
3
+ "version": "4.1.0",
4
4
  "description": "File System Worker",
5
5
  "keywords": [
6
6
  "Lvce Editor"
@@ -12,5 +12,8 @@
12
12
  "license": "MIT",
13
13
  "author": "Lvce Editor",
14
14
  "type": "module",
15
- "main": "dist/fileSystemWorkerMain.js"
15
+ "main": "dist/fileSystemWorkerMain.js",
16
+ "dependencies": {
17
+ "blob-util": "^2.0.2"
18
+ }
16
19
  }