@lvce-editor/file-system-process 2.3.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +188 -50
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -12,37 +12,51 @@ class AssertionError extends Error {
12
12
  this.name = 'AssertionError';
13
13
  }
14
14
  }
15
+ const Object$1 = 1;
16
+ const Number = 2;
17
+ const Array$1 = 3;
18
+ const String = 4;
19
+ const Boolean$1 = 5;
20
+ const Function = 6;
21
+ const Null = 7;
22
+ const Unknown$1 = 8;
15
23
  const getType = value => {
16
24
  switch (typeof value) {
17
25
  case 'number':
18
- return 'number';
26
+ return Number;
19
27
  case 'function':
20
- return 'function';
28
+ return Function;
21
29
  case 'string':
22
- return 'string';
30
+ return String;
23
31
  case 'object':
24
32
  if (value === null) {
25
- return 'null';
33
+ return Null;
26
34
  }
27
35
  if (Array.isArray(value)) {
28
- return 'array';
36
+ return Array$1;
29
37
  }
30
- return 'object';
38
+ return Object$1;
31
39
  case 'boolean':
32
- return 'boolean';
40
+ return Boolean$1;
33
41
  default:
34
- return 'unknown';
42
+ return Unknown$1;
35
43
  }
36
44
  };
37
45
  const object = value => {
38
46
  const type = getType(value);
39
- if (type !== 'object') {
47
+ if (type !== Object$1) {
40
48
  throw new AssertionError('expected value to be of type object');
41
49
  }
42
50
  };
51
+ const number = value => {
52
+ const type = getType(value);
53
+ if (type !== Number) {
54
+ throw new AssertionError('expected value to be of type number');
55
+ }
56
+ };
43
57
  const string = value => {
44
58
  const type = getType(value);
45
- if (type !== 'string') {
59
+ if (type !== String) {
46
60
  throw new AssertionError('expected value to be of type string');
47
61
  }
48
62
  };
@@ -130,7 +144,6 @@ const Socket = 8;
130
144
  const Symlink = 9;
131
145
  const Unknown = 12;
132
146
 
133
- // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
134
147
  const getDirentType = dirent => {
135
148
  if (dirent.isFile()) {
136
149
  return File;
@@ -198,7 +211,7 @@ const isEnoentError = error => {
198
211
  };
199
212
 
200
213
  const rpcs = Object.create(null);
201
- const set$f = (id, rpc) => {
214
+ const set$g = (id, rpc) => {
202
215
  rpcs[id] = rpc;
203
216
  };
204
217
  const get$1 = id => {
@@ -207,7 +220,7 @@ const get$1 = id => {
207
220
 
208
221
  /* eslint-disable @typescript-eslint/explicit-function-return-type */
209
222
 
210
- const create$6 = rpcId => {
223
+ const create$8 = rpcId => {
211
224
  return {
212
225
  // @ts-ignore
213
226
  invoke(method, ...params) {
@@ -222,7 +235,7 @@ const create$6 = rpcId => {
222
235
  return rpc.invokeAndTransfer(method, ...params);
223
236
  },
224
237
  set(rpc) {
225
- set$f(rpcId, rpc);
238
+ set$g(rpcId, rpc);
226
239
  },
227
240
  async dispose() {
228
241
  const rpc = get$1(rpcId);
@@ -230,27 +243,96 @@ const create$6 = rpcId => {
230
243
  }
231
244
  };
232
245
  };
246
+ const DebugWorker$1 = 55;
247
+ const EditorWorker$1 = 99;
248
+ const ExtensionHostWorker = 44;
233
249
  const MainProcess$1 = -5;
250
+ const RendererWorker$1 = 1;
251
+ const RendererProcess$1 = 1670;
252
+ const SearchProcess$1 = 77;
253
+ const SearchProcessElectron = 2;
254
+ const SharedProcess$1 = 1;
255
+ const SourceControlWorker = 66;
256
+ const EmbedsProcess$1 = 207;
257
+ const EmbedsWorker = 208;
258
+ const FileSystemWorker$1 = 209;
259
+ const FileSystemProcess$1 = 210;
260
+ const MarkdownWorker$1 = 300;
261
+ const CompletionWorker = 301;
262
+ const ColorPickerWorker = 302;
263
+ const SourceActionWorker = 303;
264
+ const ErrorWorker$1 = 3308;
265
+ const SyntaxHighlightingWorker$1 = 3309;
266
+ const ClipBoardWorker$1 = 3400;
267
+ const ClipBoardProcess$1 = 3401;
268
+ const RpcId = {
269
+ __proto__: null,
270
+ ClipBoardProcess: ClipBoardProcess$1,
271
+ ClipBoardWorker: ClipBoardWorker$1,
272
+ ColorPickerWorker,
273
+ CompletionWorker,
274
+ DebugWorker: DebugWorker$1,
275
+ EditorWorker: EditorWorker$1,
276
+ EmbedsProcess: EmbedsProcess$1,
277
+ EmbedsWorker,
278
+ ErrorWorker: ErrorWorker$1,
279
+ ExtensionHostWorker,
280
+ FileSystemProcess: FileSystemProcess$1,
281
+ FileSystemWorker: FileSystemWorker$1,
282
+ MainProcess: MainProcess$1,
283
+ MarkdownWorker: MarkdownWorker$1,
284
+ RendererProcess: RendererProcess$1,
285
+ RendererWorker: RendererWorker$1,
286
+ SearchProcess: SearchProcess$1,
287
+ SearchProcessElectron,
288
+ SharedProcess: SharedProcess$1,
289
+ SourceActionWorker,
290
+ SourceControlWorker,
291
+ SyntaxHighlightingWorker: SyntaxHighlightingWorker$1
292
+ };
234
293
  const {
235
- invoke: invoke$6,
236
- set: set$6} = create$6(MainProcess$1);
237
- const MainProcess = {
294
+ invoke: invoke$1$1,
295
+ invokeAndTransfer: invokeAndTransfer$1$1} = create$8(SharedProcess$1);
296
+ const SharedProcess = {
238
297
  __proto__: null,
239
- invoke: invoke$6,
240
- set: set$6
298
+ invoke: invoke$1$1,
299
+ invokeAndTransfer: invokeAndTransfer$1$1};
300
+ const createLazyRpc = rpcId => {
301
+ let rpcPromise;
302
+ let factory;
303
+ const createRpc = async () => {
304
+ const rpc = await factory();
305
+ set$g(rpcId, rpc);
306
+ };
307
+ const ensureRpc = async () => {
308
+ if (!rpcPromise) {
309
+ rpcPromise = createRpc();
310
+ }
311
+ await rpcPromise;
312
+ };
313
+ return {
314
+ setFactory(value) {
315
+ factory = value;
316
+ },
317
+ async invoke(method, ...params) {
318
+ await ensureRpc();
319
+ const rpc = get$1(rpcId);
320
+ return rpc.invoke(method, ...params);
321
+ }
322
+ };
241
323
  };
242
324
 
243
325
  const {
244
- invoke: invoke$1,
245
- set: set$1
246
- } = MainProcess;
326
+ invoke: invoke$2,
327
+ setFactory
328
+ } = createLazyRpc(RpcId.MainProcess);
247
329
 
248
330
  const trash$2 = async path => {
249
331
  if (!existsSync(path)) {
250
332
  return;
251
333
  }
252
334
  // @ts-ignore
253
- await invoke$1('Trash.trash', path);
335
+ await invoke$2('Trash.trash', path);
254
336
  };
255
337
 
256
338
  // @ts-ignore
@@ -1084,7 +1166,7 @@ const IpcChildWithWebSocket = {
1084
1166
  };
1085
1167
 
1086
1168
  const Two = '2.0';
1087
- const create$4$1 = (method, params) => {
1169
+ const create$4 = (method, params) => {
1088
1170
  return {
1089
1171
  jsonrpc: Two,
1090
1172
  method,
@@ -1338,7 +1420,7 @@ const getErrorResponse = (id, error, preparePrettyError, logError) => {
1338
1420
  const errorProperty = getErrorProperty(error, prettyError);
1339
1421
  return create$1(id, errorProperty);
1340
1422
  };
1341
- const create = (message, result) => {
1423
+ const create$5 = (message, result) => {
1342
1424
  return {
1343
1425
  jsonrpc: Two,
1344
1426
  id: message.id,
@@ -1347,7 +1429,7 @@ const create = (message, result) => {
1347
1429
  };
1348
1430
  const getSuccessResponse = (message, result) => {
1349
1431
  const resultProperty = result ?? null;
1350
- return create(message, resultProperty);
1432
+ return create$5(message, resultProperty);
1351
1433
  };
1352
1434
  const getErrorResponseSimple = (id, error) => {
1353
1435
  return {
@@ -1452,13 +1534,13 @@ const invokeHelper = async (ipc, method, params, useSendAndTransfer) => {
1452
1534
  return unwrapJsonRpcResult(responseMessage);
1453
1535
  };
1454
1536
  const send = (transport, method, ...params) => {
1455
- const message = create$4$1(method, params);
1537
+ const message = create$4(method, params);
1456
1538
  transport.send(message);
1457
1539
  };
1458
- const invoke = (ipc, method, ...params) => {
1540
+ const invoke$1 = (ipc, method, ...params) => {
1459
1541
  return invokeHelper(ipc, method, params, false);
1460
1542
  };
1461
- const invokeAndTransfer = (ipc, method, ...params) => {
1543
+ const invokeAndTransfer$1 = (ipc, method, ...params) => {
1462
1544
  return invokeHelper(ipc, method, params, true);
1463
1545
  };
1464
1546
 
@@ -1488,10 +1570,10 @@ const createRpc = ipc => {
1488
1570
  send(ipc, method, ...params);
1489
1571
  },
1490
1572
  invoke(method, ...params) {
1491
- return invoke(ipc, method, ...params);
1573
+ return invoke$1(ipc, method, ...params);
1492
1574
  },
1493
1575
  invokeAndTransfer(method, ...params) {
1494
- return invokeAndTransfer(ipc, method, ...params);
1576
+ return invokeAndTransfer$1(ipc, method, ...params);
1495
1577
  },
1496
1578
  async dispose() {
1497
1579
  await ipc?.dispose();
@@ -1529,7 +1611,7 @@ const listen$2 = async (module, options) => {
1529
1611
  const ipc = module.wrap(rawIpc);
1530
1612
  return ipc;
1531
1613
  };
1532
- const create$e = async ({
1614
+ const create$g = async ({
1533
1615
  commandMap,
1534
1616
  messagePort,
1535
1617
  requiresSocket
@@ -1548,9 +1630,9 @@ const create$e = async ({
1548
1630
  };
1549
1631
  const ElectronMessagePortRpcClient = {
1550
1632
  __proto__: null,
1551
- create: create$e
1633
+ create: create$g
1552
1634
  };
1553
- const create$d = async ({
1635
+ const create$f = async ({
1554
1636
  commandMap
1555
1637
  }) => {
1556
1638
  // TODO create a commandMap per rpc instance
@@ -1562,9 +1644,9 @@ const create$d = async ({
1562
1644
  };
1563
1645
  const ElectronUtilityProcessRpcClient = {
1564
1646
  __proto__: null,
1565
- create: create$d
1647
+ create: create$f
1566
1648
  };
1567
- const create$7 = async ({
1649
+ const create$9 = async ({
1568
1650
  commandMap
1569
1651
  }) => {
1570
1652
  // TODO create a commandMap per rpc instance
@@ -1576,9 +1658,9 @@ const create$7 = async ({
1576
1658
  };
1577
1659
  const NodeForkedProcessRpcClient = {
1578
1660
  __proto__: null,
1579
- create: create$7
1661
+ create: create$9
1580
1662
  };
1581
- const create$5 = async ({
1663
+ const create$7 = async ({
1582
1664
  commandMap,
1583
1665
  request,
1584
1666
  handle,
@@ -1599,9 +1681,9 @@ const create$5 = async ({
1599
1681
  };
1600
1682
  const NodeWebSocketRpcClient = {
1601
1683
  __proto__: null,
1602
- create: create$5
1684
+ create: create$7
1603
1685
  };
1604
- const create$4 = async ({
1686
+ const create$6 = async ({
1605
1687
  commandMap
1606
1688
  }) => {
1607
1689
  // TODO create a commandMap per rpc instance
@@ -1613,7 +1695,7 @@ const create$4 = async ({
1613
1695
  };
1614
1696
  const NodeWorkerRpcClient = {
1615
1697
  __proto__: null,
1616
- create: create$4
1698
+ create: create$6
1617
1699
  };
1618
1700
 
1619
1701
  const NodeWorker = 1;
@@ -1660,12 +1742,15 @@ const listen$1 = async ({
1660
1742
  return rpc;
1661
1743
  };
1662
1744
 
1663
- const handleElectronMessagePort = async (messagePort, ...params) => {
1745
+ const handleElectronMessagePort = async (messagePort, rpcId) => {
1664
1746
  object(messagePort);
1665
- await listen$1({
1747
+ const rpc = await listen$1({
1666
1748
  method: ElectronMessagePort,
1667
1749
  messagePort
1668
1750
  });
1751
+ if (rpcId) {
1752
+ set$g(rpcId, rpc);
1753
+ }
1669
1754
  };
1670
1755
 
1671
1756
  const handleWebSocket = async (handle, request) => {
@@ -1678,11 +1763,65 @@ const handleWebSocket = async (handle, request) => {
1678
1763
  });
1679
1764
  };
1680
1765
 
1681
- const createMainProcessRpc = async port => {
1766
+ const state = {
1767
+ id: 0
1768
+ };
1769
+ const create = () => {
1770
+ return ++state.id;
1771
+ };
1772
+
1773
+ const {
1774
+ invoke,
1775
+ invokeAndTransfer
1776
+ } = SharedProcess;
1777
+
1778
+ const ports = Object.create(null);
1779
+ const getPortTuple$1 = async () => {
1780
+ const id1 = create();
1781
+ const id2 = create();
1782
+ // @ts-ignore
1783
+ await invoke('TemporaryMessagePort.getPortTuple3', id1, id2, RpcId.FileSystemProcess);
1784
+ const port1 = ports[id1];
1785
+ const port2 = ports[id2];
1786
+ delete ports[id1];
1787
+ delete ports[id2];
1788
+ return {
1789
+ port1,
1790
+ port2
1791
+ };
1792
+ };
1793
+ const handlePorts = (port1, port2, id1, id2) => {
1794
+ number(id1);
1795
+ number(id2);
1796
+ object(port1);
1797
+ object(port2);
1798
+ ports[id1] = port1;
1799
+ ports[id2] = port2;
1800
+ };
1801
+
1802
+ const getPortTuple = async () => {
1803
+ const {
1804
+ port1,
1805
+ port2
1806
+ } = await getPortTuple$1();
1807
+ return {
1808
+ port1,
1809
+ port2
1810
+ };
1811
+ };
1812
+
1813
+ const createMainProcessRpc = async () => {
1682
1814
  try {
1815
+ const {
1816
+ port1,
1817
+ port2
1818
+ } = await getPortTuple();
1819
+ await invokeAndTransfer(
1820
+ // @ts-ignore
1821
+ 'TemporaryMessagePort.sendToElectron', port1, RpcId.MainProcess, RpcId.FileSystemProcess);
1683
1822
  const rpc = await ElectronMessagePortRpcClient.create({
1684
1823
  commandMap: {},
1685
- messagePort: port
1824
+ messagePort: port2
1686
1825
  });
1687
1826
  return rpc;
1688
1827
  } catch (error) {
@@ -1690,10 +1829,8 @@ const createMainProcessRpc = async port => {
1690
1829
  }
1691
1830
  };
1692
1831
 
1693
- const initialize = async port => {
1694
- // TODO only connect to main process if platform is electron else not
1695
- const rpc = await createMainProcessRpc(port);
1696
- set$1(rpc);
1832
+ const initialize = async () => {
1833
+ setFactory(createMainProcessRpc);
1697
1834
  };
1698
1835
 
1699
1836
  const commandMap = {
@@ -1711,7 +1848,8 @@ const commandMap = {
1711
1848
  'FileSystem.writeFile': writeFile,
1712
1849
  'HandleElectronMessagePort.handleElectronMessagePort': handleElectronMessagePort,
1713
1850
  'HandleWebSocket.handleWebSocket': handleWebSocket,
1714
- 'Initialize.initialize': initialize
1851
+ 'Initialize.initialize': initialize,
1852
+ 'TemporaryMessagePort.handlePorts': handlePorts
1715
1853
  };
1716
1854
 
1717
1855
  const listen = async argv => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/file-system-process",
3
- "version": "2.3.0",
3
+ "version": "3.0.0",
4
4
  "description": "File System Process",
5
5
  "keywords": [
6
6
  "Lvce Editor",