@lvce-editor/file-system-worker 5.0.0 → 5.2.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.
@@ -238,6 +238,9 @@ const blobToBinaryString = async blob => {
238
238
  }
239
239
  };
240
240
 
241
+ const remove$6 = async dirent => {
242
+ throw new Error('not implemented');
243
+ };
241
244
  const readFile$4 = async uri => {
242
245
  const response = await fetch(uri);
243
246
  if (!response.ok) {
@@ -246,7 +249,7 @@ const readFile$4 = async uri => {
246
249
  const result = await response.text();
247
250
  return result;
248
251
  };
249
- const readFileAsBlob$1 = async uri => {
252
+ const readFileAsBlob$2 = async uri => {
250
253
  const response = await fetch(uri);
251
254
  if (!response.ok) {
252
255
  throw new Error(response.statusText);
@@ -254,13 +257,19 @@ const readFileAsBlob$1 = async uri => {
254
257
  const result = await response.blob();
255
258
  return result;
256
259
  };
257
- const exists$3 = async uri => {
260
+ const exists$4 = async uri => {
258
261
  const response = await fetch(uri);
259
262
  if (response.ok) {
260
263
  return true;
261
264
  }
262
265
  return false;
263
266
  };
267
+ const readDirWithFileTypes$4 = async uri => {
268
+ throw new Error('not implemented');
269
+ };
270
+ const getPathSeparator$4 = async root => {
271
+ return '/';
272
+ };
264
273
  const readJson$4 = async uri => {
265
274
  const response = await fetch(uri);
266
275
  if (!response.ok) {
@@ -269,6 +278,49 @@ const readJson$4 = async uri => {
269
278
  const json = await response.json();
270
279
  return json;
271
280
  };
281
+ const getRealPath$4 = async path => {
282
+ throw new Error('not implemented');
283
+ };
284
+ const stat$4 = async dirent => {
285
+ throw new Error('not implemented');
286
+ };
287
+ const createFile$2 = async uri => {
288
+ throw new Error('not implemented');
289
+ };
290
+ const writeFile$4 = async (uri, content) => {
291
+ throw new Error('not implemented');
292
+ };
293
+ const mkdir$4 = async uri => {
294
+ throw new Error('not implemented');
295
+ };
296
+ const rename$4 = async (oldUri, newUri) => {
297
+ throw new Error('not implemented');
298
+ };
299
+ const copy$4 = async (oldUri, newUri) => {
300
+ throw new Error('not implemented');
301
+ };
302
+ const getFolderSize$4 = async uri => {
303
+ throw new Error('not implemented');
304
+ };
305
+
306
+ const FileSystemFetch = {
307
+ __proto__: null,
308
+ copy: copy$4,
309
+ createFile: createFile$2,
310
+ exists: exists$4,
311
+ getFolderSize: getFolderSize$4,
312
+ getPathSeparator: getPathSeparator$4,
313
+ getRealPath: getRealPath$4,
314
+ mkdir: mkdir$4,
315
+ readDirWithFileTypes: readDirWithFileTypes$4,
316
+ readFile: readFile$4,
317
+ readFileAsBlob: readFileAsBlob$2,
318
+ readJson: readJson$4,
319
+ remove: remove$6,
320
+ rename: rename$4,
321
+ stat: stat$4,
322
+ writeFile: writeFile$4
323
+ };
272
324
 
273
325
  const DebugWorker = 55;
274
326
  const ExtensionHostWorker = 44;
@@ -277,38 +329,6 @@ const FileSystemWorker = 209;
277
329
  const RendererProcess = 1670;
278
330
  const RendererWorker = 1;
279
331
 
280
- const rpcs = Object.create(null);
281
- const set$5 = (id, rpc) => {
282
- rpcs[id] = rpc;
283
- };
284
- const get$1 = id => {
285
- return rpcs[id];
286
- };
287
-
288
- const create$9 = rpcId => {
289
- return {
290
- async dispose() {
291
- const rpc = get$1(rpcId);
292
- await rpc.dispose();
293
- },
294
- // @ts-ignore
295
- invoke(method, ...params) {
296
- const rpc = get$1(rpcId);
297
- // @ts-ignore
298
- return rpc.invoke(method, ...params);
299
- },
300
- // @ts-ignore
301
- invokeAndTransfer(method, ...params) {
302
- const rpc = get$1(rpcId);
303
- // @ts-ignore
304
- return rpc.invokeAndTransfer(method, ...params);
305
- },
306
- set(rpc) {
307
- set$5(rpcId, rpc);
308
- }
309
- };
310
- };
311
-
312
332
  class AssertionError extends Error {
313
333
  constructor(message) {
314
334
  super(message);
@@ -708,7 +728,7 @@ const getFirstEvent = (eventEmitter, eventMap) => {
708
728
  return promise;
709
729
  };
710
730
  const Message$1 = 3;
711
- const create$5$1 = async ({
731
+ const create$5 = async ({
712
732
  isMessagePortOpen,
713
733
  messagePort
714
734
  }) => {
@@ -759,7 +779,7 @@ const wrap$5 = messagePort => {
759
779
  };
760
780
  const IpcParentWithMessagePort$1 = {
761
781
  __proto__: null,
762
- create: create$5$1,
782
+ create: create$5,
763
783
  signal: signal$1,
764
784
  wrap: wrap$5
765
785
  };
@@ -783,7 +803,7 @@ const waitForWebSocketToBeOpen = webSocket => {
783
803
  open: Open
784
804
  });
785
805
  };
786
- const create$8 = async ({
806
+ const create$6 = async ({
787
807
  webSocket
788
808
  }) => {
789
809
  const firstWebSocketEvent = await waitForWebSocketToBeOpen(webSocket);
@@ -820,16 +840,16 @@ const wrap = webSocket => {
820
840
  };
821
841
  const IpcParentWithWebSocket$1 = {
822
842
  __proto__: null,
823
- create: create$8,
843
+ create: create$6,
824
844
  wrap
825
845
  };
826
846
 
827
847
  const Two$1 = '2.0';
828
848
  const callbacks = Object.create(null);
829
- const get = id => {
849
+ const get$1 = id => {
830
850
  return callbacks[id];
831
851
  };
832
- const remove$4 = id => {
852
+ const remove$5 = id => {
833
853
  delete callbacks[id];
834
854
  };
835
855
  class JsonRpcError extends Error {
@@ -975,14 +995,14 @@ const warn = (...args) => {
975
995
  console.warn(...args);
976
996
  };
977
997
  const resolve = (id, response) => {
978
- const fn = get(id);
998
+ const fn = get$1(id);
979
999
  if (!fn) {
980
1000
  console.log(response);
981
1001
  warn(`callback ${id} may already be disposed`);
982
1002
  return;
983
1003
  }
984
1004
  fn(response);
985
- remove$4(id);
1005
+ remove$5(id);
986
1006
  };
987
1007
  const E_COMMAND_NOT_FOUND = 'E_COMMAND_NOT_FOUND';
988
1008
  const getErrorType = prettyError => {
@@ -1025,7 +1045,7 @@ const getErrorProperty = (error, prettyError) => {
1025
1045
  }
1026
1046
  };
1027
1047
  };
1028
- const create$1 = (id, error) => {
1048
+ const create$1$1 = (id, error) => {
1029
1049
  return {
1030
1050
  jsonrpc: Two$1,
1031
1051
  id,
@@ -1036,9 +1056,9 @@ const getErrorResponse = (id, error, preparePrettyError, logError) => {
1036
1056
  const prettyError = preparePrettyError(error);
1037
1057
  logError(error, prettyError);
1038
1058
  const errorProperty = getErrorProperty(error, prettyError);
1039
- return create$1(id, errorProperty);
1059
+ return create$1$1(id, errorProperty);
1040
1060
  };
1041
- const create$6 = (message, result) => {
1061
+ const create$3 = (message, result) => {
1042
1062
  return {
1043
1063
  jsonrpc: Two$1,
1044
1064
  id: message.id,
@@ -1047,7 +1067,7 @@ const create$6 = (message, result) => {
1047
1067
  };
1048
1068
  const getSuccessResponse = (message, result) => {
1049
1069
  const resultProperty = result ?? null;
1050
- return create$6(message, resultProperty);
1070
+ return create$3(message, resultProperty);
1051
1071
  };
1052
1072
  const getErrorResponseSimple = (id, error) => {
1053
1073
  return {
@@ -1146,7 +1166,7 @@ class CommandNotFoundError extends Error {
1146
1166
  }
1147
1167
  }
1148
1168
  const commands = Object.create(null);
1149
- const register = commandMap => {
1169
+ const register$1 = commandMap => {
1150
1170
  Object.assign(commands, commandMap);
1151
1171
  };
1152
1172
  const getCommand = key => {
@@ -1161,14 +1181,14 @@ const execute = (command, ...args) => {
1161
1181
  };
1162
1182
 
1163
1183
  const Two = '2.0';
1164
- const create$p = (method, params) => {
1184
+ const create$s = (method, params) => {
1165
1185
  return {
1166
1186
  jsonrpc: Two,
1167
1187
  method,
1168
1188
  params
1169
1189
  };
1170
1190
  };
1171
- const create$o = (id, method, params) => {
1191
+ const create$r = (id, method, params) => {
1172
1192
  const message = {
1173
1193
  id,
1174
1194
  jsonrpc: Two,
@@ -1178,14 +1198,14 @@ const create$o = (id, method, params) => {
1178
1198
  return message;
1179
1199
  };
1180
1200
  let id = 0;
1181
- const create$n = () => {
1201
+ const create$q = () => {
1182
1202
  return ++id;
1183
1203
  };
1184
1204
 
1185
1205
  /* eslint-disable n/no-unsupported-features/es-syntax */
1186
1206
 
1187
1207
  const registerPromise = map => {
1188
- const id = create$n();
1208
+ const id = create$q();
1189
1209
  const {
1190
1210
  promise,
1191
1211
  resolve
@@ -1203,7 +1223,7 @@ const invokeHelper = async (callbacks, ipc, method, params, useSendAndTransfer)
1203
1223
  id,
1204
1224
  promise
1205
1225
  } = registerPromise(callbacks);
1206
- const message = create$o(id, method, params);
1226
+ const message = create$r(id, method, params);
1207
1227
  if (useSendAndTransfer && ipc.sendAndTransfer) {
1208
1228
  ipc.sendAndTransfer(message);
1209
1229
  } else {
@@ -1239,7 +1259,7 @@ const createRpc = ipc => {
1239
1259
  * @deprecated
1240
1260
  */
1241
1261
  send(method, ...params) {
1242
- const message = create$p(method, params);
1262
+ const message = create$s(method, params);
1243
1263
  ipc.send(message);
1244
1264
  }
1245
1265
  };
@@ -1275,60 +1295,52 @@ const listen$1 = async (module, options) => {
1275
1295
  const ipc = module.wrap(rawIpc);
1276
1296
  return ipc;
1277
1297
  };
1278
- const create$7 = async ({
1279
- commandMap,
1280
- isMessagePortOpen = true,
1281
- messagePort
1282
- }) => {
1283
- // TODO create a commandMap per rpc instance
1284
- register(commandMap);
1285
- const rawIpc = await IpcParentWithMessagePort$1.create({
1286
- isMessagePortOpen,
1287
- messagePort
1288
- });
1289
- const ipc = IpcParentWithMessagePort$1.wrap(rawIpc);
1290
- handleIpc(ipc);
1291
- const rpc = createRpc(ipc);
1292
- messagePort.start();
1293
- return rpc;
1294
- };
1295
- const PlainMessagePortRpc = {
1296
- __proto__: null,
1297
- create: create$7
1298
+
1299
+ /* eslint-disable @typescript-eslint/no-misused-promises */
1300
+
1301
+ const createSharedLazyRpc = factory => {
1302
+ let rpcPromise;
1303
+ const getOrCreate = () => {
1304
+ if (!rpcPromise) {
1305
+ rpcPromise = factory();
1306
+ }
1307
+ return rpcPromise;
1308
+ };
1309
+ return {
1310
+ async dispose() {
1311
+ const rpc = await getOrCreate();
1312
+ await rpc.dispose();
1313
+ },
1314
+ async invoke(method, ...params) {
1315
+ const rpc = await getOrCreate();
1316
+ return rpc.invoke(method, ...params);
1317
+ },
1318
+ async invokeAndTransfer(method, ...params) {
1319
+ const rpc = await getOrCreate();
1320
+ return rpc.invokeAndTransfer(method, ...params);
1321
+ },
1322
+ async send(method, ...params) {
1323
+ const rpc = await getOrCreate();
1324
+ rpc.send(method, ...params);
1325
+ }
1326
+ };
1298
1327
  };
1299
- const create$5 = async ({
1328
+ const create$i = async ({
1300
1329
  commandMap,
1301
1330
  isMessagePortOpen,
1302
1331
  send
1303
1332
  }) => {
1304
- const {
1305
- port1,
1306
- port2
1307
- } = new MessageChannel();
1308
- await send(port1);
1309
- return create$7({
1310
- commandMap,
1311
- isMessagePortOpen,
1312
- messagePort: port2
1333
+ return createSharedLazyRpc(() => {
1334
+ return create$2({
1335
+ commandMap,
1336
+ isMessagePortOpen,
1337
+ send
1338
+ });
1313
1339
  });
1314
1340
  };
1315
- const TransferMessagePortRpcParent = {
1341
+ const LazyTransferMessagePortRpcParent = {
1316
1342
  __proto__: null,
1317
- create: create$5
1318
- };
1319
- const create$4 = async ({
1320
- commandMap,
1321
- webSocket
1322
- }) => {
1323
- // TODO create a commandMap per rpc instance
1324
- register(commandMap);
1325
- const rawIpc = await IpcParentWithWebSocket$1.create({
1326
- webSocket
1327
- });
1328
- const ipc = IpcParentWithWebSocket$1.wrap(rawIpc);
1329
- handleIpc(ipc);
1330
- const rpc = createRpc(ipc);
1331
- return rpc;
1343
+ create: create$i
1332
1344
  };
1333
1345
  const Https$1 = 'https:';
1334
1346
  const Ws = 'ws:';
@@ -1346,7 +1358,21 @@ const getHost = () => {
1346
1358
  const getProtocol = () => {
1347
1359
  return location.protocol;
1348
1360
  };
1349
- const create$3 = async ({
1361
+ const create$h = async ({
1362
+ commandMap,
1363
+ webSocket
1364
+ }) => {
1365
+ // TODO create a commandMap per rpc instance
1366
+ register$1(commandMap);
1367
+ const rawIpc = await IpcParentWithWebSocket$1.create({
1368
+ webSocket
1369
+ });
1370
+ const ipc = IpcParentWithWebSocket$1.wrap(rawIpc);
1371
+ handleIpc(ipc);
1372
+ const rpc = createRpc(ipc);
1373
+ return rpc;
1374
+ };
1375
+ const create$g = async ({
1350
1376
  commandMap,
1351
1377
  type
1352
1378
  }) => {
@@ -1354,7 +1380,7 @@ const create$3 = async ({
1354
1380
  const protocol = getProtocol();
1355
1381
  const wsUrl = getWebSocketUrl(type, host, protocol);
1356
1382
  const webSocket = new WebSocket(wsUrl);
1357
- const rpc = await create$4({
1383
+ const rpc = await create$h({
1358
1384
  commandMap,
1359
1385
  webSocket
1360
1386
  });
@@ -1362,63 +1388,62 @@ const create$3 = async ({
1362
1388
  };
1363
1389
  const WebSocketRpcParent2 = {
1364
1390
  __proto__: null,
1365
- create: create$3
1391
+ create: create$g
1366
1392
  };
1367
- const create$2 = async ({
1368
- commandMap
1393
+ const create$4 = async ({
1394
+ commandMap,
1395
+ isMessagePortOpen = true,
1396
+ messagePort
1369
1397
  }) => {
1370
1398
  // TODO create a commandMap per rpc instance
1371
- register(commandMap);
1372
- const ipc = await listen$1(IpcChildWithModuleWorkerAndMessagePort$1);
1399
+ register$1(commandMap);
1400
+ const rawIpc = await IpcParentWithMessagePort$1.create({
1401
+ isMessagePortOpen,
1402
+ messagePort
1403
+ });
1404
+ const ipc = IpcParentWithMessagePort$1.wrap(rawIpc);
1373
1405
  handleIpc(ipc);
1374
1406
  const rpc = createRpc(ipc);
1407
+ messagePort.start();
1375
1408
  return rpc;
1376
1409
  };
1377
- const WebWorkerRpcClient = {
1410
+ const PlainMessagePortRpc = {
1378
1411
  __proto__: null,
1379
- create: create$2
1412
+ create: create$4
1380
1413
  };
1381
-
1382
- /* eslint-disable @typescript-eslint/no-misused-promises */
1383
-
1384
- const create = async ({
1414
+ const create$2 = async ({
1385
1415
  commandMap,
1386
1416
  isMessagePortOpen,
1387
1417
  send
1388
1418
  }) => {
1389
- let rpcPromise;
1390
- const getOrCreate = () => {
1391
- if (!rpcPromise) {
1392
- rpcPromise = create$5({
1393
- commandMap,
1394
- isMessagePortOpen,
1395
- send
1396
- });
1397
- }
1398
- return rpcPromise;
1399
- };
1400
- return {
1401
- async dispose() {
1402
- const rpc = await getOrCreate();
1403
- await rpc.dispose();
1404
- },
1405
- async invoke(method, ...params) {
1406
- const rpc = await getOrCreate();
1407
- return rpc.invoke(method, ...params);
1408
- },
1409
- async invokeAndTransfer(method, ...params) {
1410
- const rpc = await getOrCreate();
1411
- return rpc.invokeAndTransfer(method, ...params);
1412
- },
1413
- async send(method, ...params) {
1414
- const rpc = await getOrCreate();
1415
- rpc.send(method, ...params);
1416
- }
1417
- };
1419
+ const {
1420
+ port1,
1421
+ port2
1422
+ } = new MessageChannel();
1423
+ await send(port1);
1424
+ return create$4({
1425
+ commandMap,
1426
+ isMessagePortOpen,
1427
+ messagePort: port2
1428
+ });
1418
1429
  };
1419
- const LazyTransferMessagePortRpcParent = {
1430
+ const TransferMessagePortRpcParent = {
1431
+ __proto__: null,
1432
+ create: create$2
1433
+ };
1434
+ const create$1 = async ({
1435
+ commandMap
1436
+ }) => {
1437
+ // TODO create a commandMap per rpc instance
1438
+ register$1(commandMap);
1439
+ const ipc = await listen$1(IpcChildWithModuleWorkerAndMessagePort$1);
1440
+ handleIpc(ipc);
1441
+ const rpc = createRpc(ipc);
1442
+ return rpc;
1443
+ };
1444
+ const WebWorkerRpcClient = {
1420
1445
  __proto__: null,
1421
- create
1446
+ create: create$1
1422
1447
  };
1423
1448
  const createMockRpc = ({
1424
1449
  commandMap
@@ -1440,108 +1465,151 @@ const createMockRpc = ({
1440
1465
  return mockRpc;
1441
1466
  };
1442
1467
 
1468
+ const rpcs = Object.create(null);
1469
+ const set$5 = (id, rpc) => {
1470
+ rpcs[id] = rpc;
1471
+ };
1472
+ const get = id => {
1473
+ return rpcs[id];
1474
+ };
1475
+ const remove$4 = id => {
1476
+ delete rpcs[id];
1477
+ };
1478
+
1479
+ /* eslint-disable @typescript-eslint/explicit-function-return-type */
1480
+ const create = rpcId => {
1481
+ return {
1482
+ async dispose() {
1483
+ const rpc = get(rpcId);
1484
+ await rpc.dispose();
1485
+ },
1486
+ // @ts-ignore
1487
+ invoke(method, ...params) {
1488
+ const rpc = get(rpcId);
1489
+ // @ts-ignore
1490
+ return rpc.invoke(method, ...params);
1491
+ },
1492
+ // @ts-ignore
1493
+ invokeAndTransfer(method, ...params) {
1494
+ const rpc = get(rpcId);
1495
+ // @ts-ignore
1496
+ return rpc.invokeAndTransfer(method, ...params);
1497
+ },
1498
+ registerMockRpc(commandMap) {
1499
+ const mockRpc = createMockRpc({
1500
+ commandMap
1501
+ });
1502
+ set$5(rpcId, mockRpc);
1503
+ // @ts-ignore
1504
+ mockRpc[Symbol.dispose] = () => {
1505
+ remove$4(rpcId);
1506
+ };
1507
+ // @ts-ignore
1508
+ return mockRpc;
1509
+ },
1510
+ set(rpc) {
1511
+ set$5(rpcId, rpc);
1512
+ }
1513
+ };
1514
+ };
1515
+
1443
1516
  const {
1517
+ invoke: invoke$3,
1444
1518
  set: set$4
1445
- } = create$9(ExtensionHostWorker);
1519
+ } = create(ExtensionHostWorker);
1446
1520
 
1447
1521
  const {
1448
1522
  dispose,
1449
- invoke: invoke$3,
1523
+ invoke: invoke$2,
1450
1524
  invokeAndTransfer: invokeAndTransfer$1,
1525
+ registerMockRpc,
1451
1526
  set: set$3
1452
- } = create$9(FileSystemProcess$1);
1527
+ } = create(FileSystemProcess$1);
1453
1528
  const remove$3 = async uri => {
1454
- return invoke$3('FileSystem.remove', uri);
1529
+ return invoke$2('FileSystem.remove', uri);
1455
1530
  };
1456
1531
  const readFile$3 = async uri => {
1457
- return invoke$3('FileSystem.readFile', uri);
1532
+ return invoke$2('FileSystem.readFile', uri);
1458
1533
  };
1459
1534
  const appendFile$2 = async (uri, text) => {
1460
1535
  // @ts-ignore
1461
- return invoke$3('FileSystem.appendFile', uri, text);
1536
+ return invoke$2('FileSystem.appendFile', uri, text);
1462
1537
  };
1463
- const readDirWithFileTypes$2 = async uri => {
1464
- return invoke$3('FileSystem.readDirWithFileTypes', uri);
1538
+ const readDirWithFileTypes$3 = async uri => {
1539
+ return invoke$2('FileSystem.readDirWithFileTypes', uri);
1465
1540
  };
1466
- const getPathSeparator$2 = async root => {
1541
+ const getPathSeparator$3 = async root => {
1467
1542
  // @ts-ignore
1468
- return invoke$3('FileSystem.getPathSeparator', root);
1543
+ return invoke$2('FileSystem.getPathSeparator', root);
1469
1544
  };
1470
1545
  const readJson$3 = async root => {
1471
1546
  // @ts-ignore
1472
- return invoke$3('FileSystem.readJson', root);
1547
+ return invoke$2('FileSystem.readJson', root);
1473
1548
  };
1474
- const getRealPath$2 = async path => {
1549
+ const getRealPath$3 = async path => {
1475
1550
  // @ts-ignore
1476
- return invoke$3('FileSystem.getRealPath', path);
1551
+ return invoke$2('FileSystem.getRealPath', path);
1477
1552
  };
1478
- const stat$2 = async path => {
1553
+ const stat$3 = async path => {
1479
1554
  // @ts-ignore
1480
- return invoke$3('FileSystem.stat', path);
1555
+ return invoke$2('FileSystem.stat', path);
1481
1556
  };
1482
1557
  const writeFile$3 = async (path, content) => {
1483
1558
  // @ts-ignore
1484
- return invoke$3('FileSystem.writeFile', path, content);
1559
+ return invoke$2('FileSystem.writeFile', path, content);
1485
1560
  };
1486
- const mkdir$2 = async path => {
1561
+ const mkdir$3 = async path => {
1487
1562
  // @ts-ignore
1488
- return invoke$3('FileSystem.mkdir', path);
1563
+ return invoke$2('FileSystem.mkdir', path);
1489
1564
  };
1490
1565
  const rename$3 = async (oldUri, newUri) => {
1491
1566
  // @ts-ignore
1492
- return invoke$3('FileSystem.rename', oldUri, newUri);
1567
+ return invoke$2('FileSystem.rename', oldUri, newUri);
1493
1568
  };
1494
- const copy$2 = async (oldUri, newUri) => {
1569
+ const copy$3 = async (oldUri, newUri) => {
1495
1570
  // @ts-ignore
1496
- return invoke$3('FileSystem.copy', oldUri, newUri);
1571
+ return invoke$2('FileSystem.copy', oldUri, newUri);
1497
1572
  };
1498
- const getFolderSize$2 = async uri => {
1573
+ const getFolderSize$3 = async uri => {
1499
1574
  // @ts-ignore
1500
- return invoke$3('FileSystem.getFolderSize', uri);
1575
+ return invoke$2('FileSystem.getFolderSize', uri);
1501
1576
  };
1502
- const exists$2 = async uri => {
1577
+ const exists$3 = async uri => {
1503
1578
  // @ts-ignore
1504
- return invoke$3('FileSystem.exists', uri);
1505
- };
1506
- const registerMockRpc = commandMap => {
1507
- const mockRpc = createMockRpc({
1508
- commandMap
1509
- });
1510
- set$3(mockRpc);
1511
- return mockRpc;
1579
+ return invoke$2('FileSystem.exists', uri);
1512
1580
  };
1513
1581
 
1514
1582
  const FileSystemProcess = {
1515
1583
  __proto__: null,
1516
1584
  appendFile: appendFile$2,
1517
- copy: copy$2,
1585
+ copy: copy$3,
1518
1586
  dispose,
1519
- exists: exists$2,
1520
- getFolderSize: getFolderSize$2,
1521
- getPathSeparator: getPathSeparator$2,
1522
- getRealPath: getRealPath$2,
1523
- invoke: invoke$3,
1587
+ exists: exists$3,
1588
+ getFolderSize: getFolderSize$3,
1589
+ getPathSeparator: getPathSeparator$3,
1590
+ getRealPath: getRealPath$3,
1591
+ invoke: invoke$2,
1524
1592
  invokeAndTransfer: invokeAndTransfer$1,
1525
- mkdir: mkdir$2,
1526
- readDirWithFileTypes: readDirWithFileTypes$2,
1593
+ mkdir: mkdir$3,
1594
+ readDirWithFileTypes: readDirWithFileTypes$3,
1527
1595
  readFile: readFile$3,
1528
1596
  readJson: readJson$3,
1529
1597
  registerMockRpc,
1530
1598
  remove: remove$3,
1531
1599
  rename: rename$3,
1532
1600
  set: set$3,
1533
- stat: stat$2,
1601
+ stat: stat$3,
1534
1602
  writeFile: writeFile$3
1535
1603
  };
1536
1604
 
1537
1605
  const {
1538
1606
  set: set$2
1539
- } = create$9(RendererProcess);
1607
+ } = create(RendererProcess);
1540
1608
 
1541
1609
  const {
1542
1610
  invokeAndTransfer,
1543
1611
  set: set$1
1544
- } = create$9(RendererWorker);
1612
+ } = create(RendererWorker);
1545
1613
  const sendMessagePortToExtensionHostWorker = async (port, rpcId = 0) => {
1546
1614
  const command = 'HandleMessagePort.handleMessagePort2';
1547
1615
  await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToExtensionHostWorker', port, command, rpcId);
@@ -1551,6 +1619,10 @@ const sendMessagePortToRendererProcess = async port => {
1551
1619
  // @ts-ignore
1552
1620
  await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToRendererProcess', port, command, DebugWorker);
1553
1621
  };
1622
+ const sendMessagePortToFileSystemProcess$1 = async (port, rpcId) => {
1623
+ const command = 'HandleMessagePortForFileSystemProcess.handleMessagePortForFileSystemProcess';
1624
+ await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToSharedProcess', port, command, rpcId);
1625
+ };
1554
1626
 
1555
1627
  const createLazyRpc = rpcId => {
1556
1628
  let rpcPromise;
@@ -1568,12 +1640,12 @@ const createLazyRpc = rpcId => {
1568
1640
  return {
1569
1641
  async invoke(method, ...params) {
1570
1642
  await ensureRpc();
1571
- const rpc = get$1(rpcId);
1643
+ const rpc = get(rpcId);
1572
1644
  return rpc.invoke(method, ...params);
1573
1645
  },
1574
1646
  async invokeAndTransfer(method, ...params) {
1575
1647
  await ensureRpc();
1576
- const rpc = get$1(rpcId);
1648
+ const rpc = get(rpcId);
1577
1649
  return rpc.invokeAndTransfer(method, ...params);
1578
1650
  },
1579
1651
  setFactory(value) {
@@ -1582,9 +1654,6 @@ const createLazyRpc = rpcId => {
1582
1654
  };
1583
1655
  };
1584
1656
 
1585
- const {
1586
- invoke: invoke$2} = createLazyRpc(ExtensionHostWorker);
1587
-
1588
1657
  const RE_PROTOCOL = /^([a-z-]+):\/\//;
1589
1658
  const assertUri = uri => {
1590
1659
  const protocolMatch = uri.match(RE_PROTOCOL);
@@ -1595,27 +1664,27 @@ const assertUri = uri => {
1595
1664
 
1596
1665
  const {
1597
1666
  appendFile: appendFile$1,
1598
- copy: copy$1,
1599
- exists: exists$1,
1600
- getFolderSize: getFolderSize$1,
1601
- getPathSeparator: getPathSeparator$1,
1602
- getRealPath: getRealPath$1,
1667
+ copy: copy$2,
1668
+ exists: exists$2,
1669
+ getFolderSize: getFolderSize$2,
1670
+ getPathSeparator: getPathSeparator$2,
1671
+ getRealPath: getRealPath$2,
1603
1672
  invoke: invoke$1,
1604
- mkdir: mkdir$1,
1605
- readDirWithFileTypes: readDirWithFileTypes$1,
1673
+ mkdir: mkdir$2,
1674
+ readDirWithFileTypes: readDirWithFileTypes$2,
1606
1675
  readFile: readFile$2,
1607
1676
  readJson: readJson$2,
1608
1677
  remove: remove$2,
1609
1678
  rename: rename$2,
1610
1679
  set,
1611
- stat: stat$1,
1680
+ stat: stat$2,
1612
1681
  writeFile: writeFile$2
1613
1682
  } = FileSystemProcess;
1614
1683
 
1615
1684
  const Http = 'http:';
1616
1685
  const Memory = 'memfs:';
1617
1686
  const Https = 'https:';
1618
- const File$1 = 'file:';
1687
+ const File$2 = 'file:';
1619
1688
 
1620
1689
  const watchCallbacks = Object.create(null);
1621
1690
  const registerWatchCallback = (id, rpcId, commandId, uri) => {
@@ -1634,7 +1703,7 @@ const executeWatchCallBack = async id => {
1634
1703
  commandId,
1635
1704
  rpcId
1636
1705
  } = entry;
1637
- const rpc = get$1(rpcId);
1706
+ const rpc = get(rpcId);
1638
1707
  await rpc.invoke(commandId, id);
1639
1708
  };
1640
1709
  const unregisterWatchCallback = id => {
@@ -1650,11 +1719,11 @@ const getWatchCallbackIdsForUri = uri => {
1650
1719
  return watchIds;
1651
1720
  };
1652
1721
 
1653
- const watchFile = async (id, uri, rpcId) => {
1722
+ const watchFile$2 = async (id, uri, rpcId) => {
1654
1723
  assertUri(uri);
1655
1724
  const commandId = 'Output.executeWatchCallback';
1656
1725
  registerWatchCallback(id, rpcId, commandId, uri);
1657
- if (uri.startsWith(File$1)) {
1726
+ if (uri.startsWith(File$2)) {
1658
1727
  // @ts-ignore
1659
1728
  await invoke$1('FileSystem.watchFile', id, uri);
1660
1729
  }
@@ -1681,33 +1750,123 @@ const triggerMemfsFileWatcher = async uri => {
1681
1750
  }
1682
1751
  };
1683
1752
 
1753
+ const getFileExtension = uri => {
1754
+ const lastDot = uri.lastIndexOf('.');
1755
+ if (lastDot === -1) {
1756
+ return '';
1757
+ }
1758
+ const lastSlash = Math.max(uri.lastIndexOf('/'), uri.lastIndexOf('\\'));
1759
+ if (lastSlash > lastDot) {
1760
+ return '';
1761
+ }
1762
+ return uri.slice(lastDot + 1);
1763
+ };
1764
+
1765
+ const getBlobType = uri => {
1766
+ const extension = getFileExtension(uri).toLowerCase();
1767
+ switch (extension) {
1768
+ case 'css':
1769
+ return 'text/css';
1770
+ case 'html':
1771
+ return 'text/html';
1772
+ case 'js':
1773
+ return 'text/javascript';
1774
+ case 'json':
1775
+ return 'application/json';
1776
+ case 'svg':
1777
+ return 'image/svg+xml';
1778
+ case 'txt':
1779
+ return 'text/plain';
1780
+ case 'xml':
1781
+ return 'application/xml';
1782
+ default:
1783
+ return '';
1784
+ }
1785
+ };
1684
1786
  const remove$1 = async dirent => {
1685
- await invoke$2('FileSystemMemory.remove', dirent);
1787
+ await invoke$3('FileSystemMemory.remove', dirent);
1686
1788
  // Trigger file watchers for memfs files
1687
1789
  await triggerMemfsFileWatcher(dirent);
1688
1790
  };
1689
1791
  const readFile$1 = async uri => {
1690
- return invoke$2('FileSystemMemory.readFile', uri);
1792
+ return invoke$3('FileSystemMemory.readFile', uri);
1793
+ };
1794
+ const readFileAsBlob$1 = async uri => {
1795
+ const content = await readFile$1(uri);
1796
+ const type = getBlobType(uri);
1797
+ if (type) {
1798
+ return new Blob([content], {
1799
+ type
1800
+ });
1801
+ }
1802
+ return new Blob([content]);
1803
+ };
1804
+ const exists$1 = async uri => {
1805
+ throw new Error('not implemented');
1806
+ };
1807
+ const readDirWithFileTypes$1 = async uri => {
1808
+ throw new Error('not implemented');
1809
+ };
1810
+ const getPathSeparator$1 = async root => {
1811
+ return '/';
1691
1812
  };
1692
1813
  const readJson$1 = async uri => {
1693
1814
  throw new Error('not implemented');
1694
1815
  };
1816
+ const getRealPath$1 = async path => {
1817
+ throw new Error('not implemented');
1818
+ };
1819
+ const stat$1 = async dirent => {
1820
+ throw new Error('not implemented');
1821
+ };
1695
1822
  const createFile$1 = async uri => {
1696
- await invoke$2('FileSystemMemory.createFile', uri);
1823
+ await invoke$3('FileSystemMemory.createFile', uri);
1697
1824
  // Trigger file watchers for memfs files
1698
1825
  await triggerMemfsFileWatcher(uri);
1699
1826
  };
1700
1827
  const writeFile$1 = async (uri, content) => {
1701
- await invoke$2('FileSystemMemory.writeFile', uri, content);
1828
+ await invoke$3('FileSystemMemory.writeFile', uri, content);
1702
1829
  // Trigger file watchers for memfs files
1703
1830
  await triggerMemfsFileWatcher(uri);
1704
1831
  };
1832
+ const mkdir$1 = async uri => {
1833
+ throw new Error('not implemented');
1834
+ };
1705
1835
  const rename$1 = async (oldUri, newUri) => {
1706
- await invoke$2('FileSystemMemory.rename', oldUri, newUri);
1836
+ await invoke$3('FileSystemMemory.rename', oldUri, newUri);
1707
1837
  // Trigger file watchers for both old and new URIs
1708
1838
  await triggerMemfsFileWatcher(oldUri);
1709
1839
  await triggerMemfsFileWatcher(newUri);
1710
1840
  };
1841
+ const copy$1 = async (oldUri, newUri) => {
1842
+ throw new Error('not implemented');
1843
+ };
1844
+ const getFolderSize$1 = async uri => {
1845
+ throw new Error('not implemented');
1846
+ };
1847
+ const watchFile$1 = async (id, uri) => {
1848
+ throw new Error('not implemented');
1849
+ };
1850
+
1851
+ const FileSystemMemory = {
1852
+ __proto__: null,
1853
+ copy: copy$1,
1854
+ createFile: createFile$1,
1855
+ exists: exists$1,
1856
+ getFolderSize: getFolderSize$1,
1857
+ getPathSeparator: getPathSeparator$1,
1858
+ getRealPath: getRealPath$1,
1859
+ mkdir: mkdir$1,
1860
+ readDirWithFileTypes: readDirWithFileTypes$1,
1861
+ readFile: readFile$1,
1862
+ readFileAsBlob: readFileAsBlob$1,
1863
+ readJson: readJson$1,
1864
+ remove: remove$1,
1865
+ rename: rename$1,
1866
+ stat: stat$1,
1867
+ watchFile: watchFile$1,
1868
+ writeFile: writeFile$1
1869
+ };
1711
1870
 
1712
1871
  const isHttp = uri => {
1713
1872
  return uri.startsWith(Http) || uri.startsWith(Https);
@@ -1736,10 +1895,10 @@ const appendFile = async (uri, text) => {
1736
1895
  return appendFile$1(uri, text);
1737
1896
  };
1738
1897
  const readDirWithFileTypes = async uri => {
1739
- return readDirWithFileTypes$1(uri);
1898
+ return readDirWithFileTypes$2(uri);
1740
1899
  };
1741
1900
  const getPathSeparator = async root => {
1742
- return getPathSeparator$1(root);
1901
+ return getPathSeparator$2(root);
1743
1902
  };
1744
1903
  const readJson = async uri => {
1745
1904
  if (isHttp(uri)) {
@@ -1751,10 +1910,13 @@ const readJson = async uri => {
1751
1910
  return readJson$2(uri);
1752
1911
  };
1753
1912
  const getRealPath = async path => {
1754
- return getRealPath$1(path);
1913
+ return getRealPath$2(path);
1755
1914
  };
1756
1915
  const readFileAsBlob = async uri => {
1757
1916
  if (isHttp(uri)) {
1917
+ return readFileAsBlob$2(uri);
1918
+ }
1919
+ if (isMemory(uri)) {
1758
1920
  return readFileAsBlob$1(uri);
1759
1921
  }
1760
1922
  if (uri.startsWith('file:///')) {
@@ -1770,13 +1932,13 @@ const readFileAsBlob = async uri => {
1770
1932
  throw new Error('uri not supported');
1771
1933
  };
1772
1934
  const stat = async dirent => {
1773
- return stat$1(dirent);
1935
+ return stat$2(dirent);
1774
1936
  };
1775
1937
  const exists = async uri => {
1776
1938
  if (isHttp(uri)) {
1777
- return exists$3(uri);
1939
+ return exists$4(uri);
1778
1940
  }
1779
- return exists$1(uri);
1941
+ return exists$2(uri);
1780
1942
  };
1781
1943
  const createFile = async uri => {
1782
1944
  if (isMemory(uri)) {
@@ -1804,7 +1966,7 @@ const writeBlob = async (uri, blob) => {
1804
1966
  await invoke$1('FileSystem.writeBuffer', uri, bytes);
1805
1967
  };
1806
1968
  const mkdir = async uri => {
1807
- return mkdir$1(uri);
1969
+ return mkdir$2(uri);
1808
1970
  };
1809
1971
  const rename = async (oldUri, newUri) => {
1810
1972
  if (isMemory(oldUri) || isMemory(newUri)) {
@@ -1813,10 +1975,36 @@ const rename = async (oldUri, newUri) => {
1813
1975
  return rename$2(oldUri, newUri);
1814
1976
  };
1815
1977
  const copy = async (oldUri, newUri) => {
1816
- return copy$1(oldUri, newUri);
1978
+ return copy$2(oldUri, newUri);
1817
1979
  };
1818
1980
  const getFolderSize = async uri => {
1819
- return getFolderSize$1(uri);
1981
+ return getFolderSize$2(uri);
1982
+ };
1983
+ const watchFile = async (id, uri) => {
1984
+ // @ts-ignore
1985
+ await invoke$1('FileSystem.watchFile', id, uri);
1986
+ };
1987
+
1988
+ const FileSystemDisk = {
1989
+ __proto__: null,
1990
+ appendFile,
1991
+ copy,
1992
+ createFile,
1993
+ exists,
1994
+ getFolderSize,
1995
+ getPathSeparator,
1996
+ getRealPath,
1997
+ mkdir,
1998
+ readDirWithFileTypes,
1999
+ readFile,
2000
+ readFileAsBlob,
2001
+ readJson,
2002
+ remove,
2003
+ rename,
2004
+ stat,
2005
+ watchFile,
2006
+ writeBlob,
2007
+ writeFile
1820
2008
  };
1821
2009
 
1822
2010
  const handleMessagePort = async (port, rpcId) => {
@@ -1830,8 +2018,7 @@ const handleMessagePort = async (port, rpcId) => {
1830
2018
  };
1831
2019
 
1832
2020
  const sendMessagePortToFileSystemProcess = async port => {
1833
- const command = 'HandleMessagePortForFileSystemProcess.handleMessagePortForFileSystemProcess';
1834
- await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToSharedProcess', port, command, FileSystemWorker);
2021
+ await sendMessagePortToFileSystemProcess$1(port, FileSystemWorker);
1835
2022
  };
1836
2023
 
1837
2024
  const createFileSystemProcessRpcElectron = async () => {
@@ -1880,7 +2067,7 @@ const createFileSystemProcessRpc = async platform => {
1880
2067
  return create();
1881
2068
  };
1882
2069
 
1883
- const initializeFileSytemProcess = async platform => {
2070
+ const initializeFileSystemProcess = async platform => {
1884
2071
  if (platform === Web) {
1885
2072
  return;
1886
2073
  }
@@ -1889,11 +2076,11 @@ const initializeFileSytemProcess = async platform => {
1889
2076
  };
1890
2077
 
1891
2078
  const initialize = async platform => {
1892
- await initializeFileSytemProcess(platform);
2079
+ await initializeFileSystemProcess(platform);
1893
2080
  };
1894
2081
 
1895
2082
  const Directory = 'directory';
1896
- const File = 'file';
2083
+ const File$1 = 'file';
1897
2084
 
1898
2085
  const {
1899
2086
  invoke} = createLazyRpc(RendererProcess);
@@ -1947,7 +2134,7 @@ const uploadHandle = async (fileSystemHandle, pathSeparator, root, uploadHandles
1947
2134
  switch (kind) {
1948
2135
  case Directory:
1949
2136
  return uploadDirectory(fileSystemHandle, pathSeparator, root, uploadHandles);
1950
- case File:
2137
+ case File$1:
1951
2138
  return uploadFile(fileSystemHandle, pathSeparator, root);
1952
2139
  default:
1953
2140
  throw new Error(`unsupported file system handle type ${kind}`);
@@ -1999,12 +2186,30 @@ const commandMap = {
1999
2186
  'FileSystem.stat': stat,
2000
2187
  'FileSystem.unwatchFile': unwatchFile,
2001
2188
  'FileSystem.uploadFileSystemHandles': uploadFileSystemHandles,
2002
- 'FileSystem.watchFile': watchFile,
2189
+ 'FileSystem.watchFile': watchFile$2,
2003
2190
  'FileSystem.writeBlob': writeBlob,
2004
2191
  'FileSystem.writeFile': writeFile,
2005
2192
  'Initialize.initialize': initialize
2006
2193
  };
2007
2194
 
2195
+ /* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */
2196
+
2197
+ const state = Object.create(null);
2198
+ const register = modules => {
2199
+ Object.assign(state, modules);
2200
+ };
2201
+
2202
+ const Memfs = 'memfs';
2203
+ const Fetch = 'fetch';
2204
+ const File = 'file';
2205
+
2206
+ // TODO add others
2207
+ const fileSystemModules = {
2208
+ [Fetch]: FileSystemFetch,
2209
+ [File]: FileSystemDisk,
2210
+ [Memfs]: FileSystemMemory
2211
+ };
2212
+
2008
2213
  const initializeExtensionHostWorker = async () => {
2009
2214
  try {
2010
2215
  const rpc = await LazyTransferMessagePortRpcParent.create({
@@ -2038,6 +2243,7 @@ const initializeRendererWorker = async () => {
2038
2243
 
2039
2244
  const listen = async () => {
2040
2245
  Object.assign(commandMapRef, commandMap);
2246
+ register(fileSystemModules);
2041
2247
  await Promise.all([initializeExtensionHostWorker(), initializeRendererProcess(), initializeRendererWorker()]);
2042
2248
  };
2043
2249
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/file-system-worker",
3
- "version": "5.0.0",
3
+ "version": "5.2.0",
4
4
  "description": "File System Worker",
5
5
  "keywords": [
6
6
  "Lvce Editor"