@lvce-editor/file-system-process 2.4.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 +156 -26
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -48,6 +48,12 @@ const object = value => {
48
48
  throw new AssertionError('expected value to be of type object');
49
49
  }
50
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
+ };
51
57
  const string = value => {
52
58
  const type = getType(value);
53
59
  if (type !== String) {
@@ -138,7 +144,6 @@ const Socket = 8;
138
144
  const Symlink = 9;
139
145
  const Unknown = 12;
140
146
 
141
- // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
142
147
  const getDirentType = dirent => {
143
148
  if (dirent.isFile()) {
144
149
  return File;
@@ -215,7 +220,7 @@ const get$1 = id => {
215
220
 
216
221
  /* eslint-disable @typescript-eslint/explicit-function-return-type */
217
222
 
218
- const create$5 = rpcId => {
223
+ const create$8 = rpcId => {
219
224
  return {
220
225
  // @ts-ignore
221
226
  invoke(method, ...params) {
@@ -238,27 +243,96 @@ const create$5 = rpcId => {
238
243
  }
239
244
  };
240
245
  };
246
+ const DebugWorker$1 = 55;
247
+ const EditorWorker$1 = 99;
248
+ const ExtensionHostWorker = 44;
241
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
+ };
242
293
  const {
243
- invoke: invoke$6,
244
- set: set$6} = create$5(MainProcess$1);
245
- const MainProcess = {
294
+ invoke: invoke$1$1,
295
+ invokeAndTransfer: invokeAndTransfer$1$1} = create$8(SharedProcess$1);
296
+ const SharedProcess = {
246
297
  __proto__: null,
247
- invoke: invoke$6,
248
- 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
+ };
249
323
  };
250
324
 
251
325
  const {
252
- invoke: invoke$1,
253
- set: set$1
254
- } = MainProcess;
326
+ invoke: invoke$2,
327
+ setFactory
328
+ } = createLazyRpc(RpcId.MainProcess);
255
329
 
256
330
  const trash$2 = async path => {
257
331
  if (!existsSync(path)) {
258
332
  return;
259
333
  }
260
334
  // @ts-ignore
261
- await invoke$1('Trash.trash', path);
335
+ await invoke$2('Trash.trash', path);
262
336
  };
263
337
 
264
338
  // @ts-ignore
@@ -1346,7 +1420,7 @@ const getErrorResponse = (id, error, preparePrettyError, logError) => {
1346
1420
  const errorProperty = getErrorProperty(error, prettyError);
1347
1421
  return create$1(id, errorProperty);
1348
1422
  };
1349
- const create = (message, result) => {
1423
+ const create$5 = (message, result) => {
1350
1424
  return {
1351
1425
  jsonrpc: Two,
1352
1426
  id: message.id,
@@ -1355,7 +1429,7 @@ const create = (message, result) => {
1355
1429
  };
1356
1430
  const getSuccessResponse = (message, result) => {
1357
1431
  const resultProperty = result ?? null;
1358
- return create(message, resultProperty);
1432
+ return create$5(message, resultProperty);
1359
1433
  };
1360
1434
  const getErrorResponseSimple = (id, error) => {
1361
1435
  return {
@@ -1463,10 +1537,10 @@ const send = (transport, method, ...params) => {
1463
1537
  const message = create$4(method, params);
1464
1538
  transport.send(message);
1465
1539
  };
1466
- const invoke = (ipc, method, ...params) => {
1540
+ const invoke$1 = (ipc, method, ...params) => {
1467
1541
  return invokeHelper(ipc, method, params, false);
1468
1542
  };
1469
- const invokeAndTransfer = (ipc, method, ...params) => {
1543
+ const invokeAndTransfer$1 = (ipc, method, ...params) => {
1470
1544
  return invokeHelper(ipc, method, params, true);
1471
1545
  };
1472
1546
 
@@ -1496,10 +1570,10 @@ const createRpc = ipc => {
1496
1570
  send(ipc, method, ...params);
1497
1571
  },
1498
1572
  invoke(method, ...params) {
1499
- return invoke(ipc, method, ...params);
1573
+ return invoke$1(ipc, method, ...params);
1500
1574
  },
1501
1575
  invokeAndTransfer(method, ...params) {
1502
- return invokeAndTransfer(ipc, method, ...params);
1576
+ return invokeAndTransfer$1(ipc, method, ...params);
1503
1577
  },
1504
1578
  async dispose() {
1505
1579
  await ipc?.dispose();
@@ -1668,12 +1742,15 @@ const listen$1 = async ({
1668
1742
  return rpc;
1669
1743
  };
1670
1744
 
1671
- const handleElectronMessagePort = async (messagePort, ...params) => {
1745
+ const handleElectronMessagePort = async (messagePort, rpcId) => {
1672
1746
  object(messagePort);
1673
- await listen$1({
1747
+ const rpc = await listen$1({
1674
1748
  method: ElectronMessagePort,
1675
1749
  messagePort
1676
1750
  });
1751
+ if (rpcId) {
1752
+ set$g(rpcId, rpc);
1753
+ }
1677
1754
  };
1678
1755
 
1679
1756
  const handleWebSocket = async (handle, request) => {
@@ -1686,11 +1763,65 @@ const handleWebSocket = async (handle, request) => {
1686
1763
  });
1687
1764
  };
1688
1765
 
1689
- 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 () => {
1690
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);
1691
1822
  const rpc = await ElectronMessagePortRpcClient.create({
1692
1823
  commandMap: {},
1693
- messagePort: port
1824
+ messagePort: port2
1694
1825
  });
1695
1826
  return rpc;
1696
1827
  } catch (error) {
@@ -1698,10 +1829,8 @@ const createMainProcessRpc = async port => {
1698
1829
  }
1699
1830
  };
1700
1831
 
1701
- const initialize = async port => {
1702
- // TODO only connect to main process if platform is electron else not
1703
- const rpc = await createMainProcessRpc(port);
1704
- set$1(rpc);
1832
+ const initialize = async () => {
1833
+ setFactory(createMainProcessRpc);
1705
1834
  };
1706
1835
 
1707
1836
  const commandMap = {
@@ -1719,7 +1848,8 @@ const commandMap = {
1719
1848
  'FileSystem.writeFile': writeFile,
1720
1849
  'HandleElectronMessagePort.handleElectronMessagePort': handleElectronMessagePort,
1721
1850
  'HandleWebSocket.handleWebSocket': handleWebSocket,
1722
- 'Initialize.initialize': initialize
1851
+ 'Initialize.initialize': initialize,
1852
+ 'TemporaryMessagePort.handlePorts': handlePorts
1723
1853
  };
1724
1854
 
1725
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.4.0",
3
+ "version": "3.0.0",
4
4
  "description": "File System Process",
5
5
  "keywords": [
6
6
  "Lvce Editor",