@lvce-editor/shared-process 0.26.2 → 0.26.4

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/shared-process",
3
- "version": "0.26.2",
3
+ "version": "0.26.4",
4
4
  "main": "index.js",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -18,12 +18,12 @@
18
18
  },
19
19
  "dependencies": {
20
20
  "@lvce-editor/assert": "^1.2.0",
21
- "@lvce-editor/extension-host-helper-process": "0.26.2",
22
- "@lvce-editor/ipc": "^7.2.0",
21
+ "@lvce-editor/extension-host-helper-process": "0.26.4",
22
+ "@lvce-editor/ipc": "^8.0.0",
23
23
  "@lvce-editor/json-rpc": "^1.3.0",
24
24
  "@lvce-editor/jsonc-parser": "^1.2.0",
25
25
  "@lvce-editor/pretty-error": "^1.5.0",
26
- "@lvce-editor/pty-host": "0.26.2",
26
+ "@lvce-editor/pty-host": "0.26.4",
27
27
  "@lvce-editor/verror": "^1.2.0",
28
28
  "@lvce-editor/web-socket-server": "^1.1.0",
29
29
  "debug": "^4.3.4",
@@ -32,7 +32,7 @@
32
32
  "got": "^14.2.1",
33
33
  "is-object": "^1.0.2",
34
34
  "p-queue": "^8.0.1",
35
- "tar-fs": "^3.0.5",
35
+ "tar-fs": "^3.0.6",
36
36
  "xdg-basedir": "^5.1.0"
37
37
  },
38
38
  "optionalDependencies": {
@@ -0,0 +1,13 @@
1
+ import * as HandleIpc from '../HandleIpc/HandleIpc.js';
2
+ import * as SendIncomingIpc from '../SendIncomingIpc/SendIncomingIpc.js';
3
+ export const applyIncomingIpcResponse = async (target, response, ipcId) => {
4
+ switch (response.type) {
5
+ case 'handle':
6
+ HandleIpc.handleIpc(target);
7
+ break;
8
+ case 'send':
9
+ return SendIncomingIpc.sendIncomingIpc(target, response, ipcId);
10
+ default:
11
+ throw new Error('unexpected response');
12
+ }
13
+ };
@@ -2,8 +2,8 @@ import * as GetPortTuple from '../GetPortTuple/GetPortTuple.js';
2
2
  import * as IpcId from '../IpcId/IpcId.js';
3
3
  import * as JsonRpc from '../JsonRpc/JsonRpc.js';
4
4
  import * as ParentIpc from '../ParentIpc/ParentIpc.js';
5
- export const connectIpcToElectron = async (ipc) => {
5
+ export const connectIpcToElectron = async (ipc, ipcId = IpcId.Unknown) => {
6
6
  const { port1, port2 } = await GetPortTuple.getPortTuple();
7
7
  await JsonRpc.invokeAndTransfer(ipc, [port1], 'HandleElectronMessagePort.handleElectronMessagePort', IpcId.MainProcess);
8
- await ParentIpc.invokeAndTransfer('HandleElectronMessagePort.handleElectronMessagePort', [port2]);
8
+ await ParentIpc.invokeAndTransfer('HandleElectronMessagePort.handleElectronMessagePort', [port2], ipcId);
9
9
  };
@@ -2,12 +2,12 @@ import { writeFile } from 'node:fs/promises';
2
2
  import { tmpdir } from 'node:os';
3
3
  import { join } from 'node:path';
4
4
  import * as ColorTheme from '../ColorTheme/ColorTheme.js';
5
- import * as GetPreloadUrl from '../GetPreloadUrl/GetPreloadUrl.js';
5
+ import * as PreloadUrl from '../PreloadUrl/PreloadUrl.js';
6
6
  import * as GetProcessExplorerUrl from '../GetProcessExplorerUrl/GetProcessExplorerUrl.js';
7
7
  import * as ParentIpc from '../ParentIpc/ParentIpc.js';
8
8
  const getOptions = async (colorThemeJson) => {
9
9
  const backgroundColor = colorThemeJson.MainBackground;
10
- const preload = GetPreloadUrl.getPreloadUrl();
10
+ const preload = PreloadUrl.preloadUrl;
11
11
  const options = {
12
12
  width: 800,
13
13
  height: 500,
@@ -1,5 +1,5 @@
1
1
  import * as GetIcon from '../GetIcon/GetIcon.js';
2
- import * as GetPreloadUrl from '../GetPreloadUrl/GetPreloadUrl.js';
2
+ import * as PreloadUrl from '../PreloadUrl/PreloadUrl.js';
3
3
  /**
4
4
  *
5
5
  * @returns {any}
@@ -21,7 +21,7 @@ export const getBrowserWindowOptions = ({ x, y, width, height, titleBarStyle, ti
21
21
  sandbox: true,
22
22
  contextIsolation: true,
23
23
  v8CacheOptions: 'bypassHeatCheck', // TODO this is what vscode uses, but it doesn't work properly in electron https://github.com/electron/electron/issues/27075
24
- preload: GetPreloadUrl.getPreloadUrl(),
24
+ preload: PreloadUrl.preloadUrl,
25
25
  additionalArguments: ['--lvce-window-kind'],
26
26
  },
27
27
  backgroundColor: background,
@@ -1,5 +1,6 @@
1
1
  import * as Assert from '../Assert/Assert.js';
2
- export const getWindowId = (ipc) => {
3
- Assert.object(ipc);
4
- return ipc.windowId;
2
+ import * as ParentIpc from '../ParentIpc/ParentIpc.js';
3
+ export const getWindowId = (webContentsId) => {
4
+ Assert.number(webContentsId);
5
+ return ParentIpc.invoke('GetWindowId.getWindowId', webContentsId);
5
6
  };
@@ -1,11 +1,8 @@
1
1
  import * as HandleIncomingIpc from '../HandleIncomingIpc/HandleIncomingIpc.js';
2
2
  import * as IpcId from '../IpcId/IpcId.js';
3
- export const handleElectronMessagePort = (messagePort, ...params) => {
4
- const ipcId = params[0];
5
- const windowId = params[1];
3
+ export const handleElectronMessagePort = (messagePort, ipcId) => {
6
4
  const message = {
7
5
  ipcId,
8
- windowId,
9
6
  };
10
7
  return HandleIncomingIpc.handleIncomingIpc(IpcId.SharedProcess, messagePort, message);
11
8
  };
@@ -1,44 +1,18 @@
1
+ import * as ApplyIncomingIpcResponse from '../ApplyIncomingIpcResponse/ApplyIncomingIpcResponse.js';
1
2
  import * as Assert from '../Assert/Assert.js';
2
- import * as HandleIpc from '../HandleIpc/HandleIpc.js';
3
+ import * as HandleIncomingIpcMessagePort from '../HandleIncomingIpcMessagePort/HandleIncomingIpcMessagePort.js';
4
+ import * as HandleIncomingIpcWebSocket from '../HandleIncomingIpcWebSocket/HandleIncomingIpcWebSocket.js';
3
5
  import * as HandleIpcModule from '../HandleIpcModule/HandleIpcModule.js';
4
6
  import * as IsMessagePortMain from '../IsMessagePortMain/IsMessagePortMain.js';
5
- import * as SendIncomingIpc from '../SendIncomingIpc/SendIncomingIpc.js';
6
- const handleIncomingIpcMessagePort = async (module, handle, message) => {
7
- const target = await module.targetMessagePort(handle, message);
8
- const response = module.upgradeMessagePort(handle, message);
9
- return {
10
- target,
11
- response,
12
- };
13
- };
14
- const handleIncomingIpcWebSocket = async (module, handle, message) => {
15
- const target = await module.targetWebSocket(handle, message);
16
- const response = module.upgradeWebSocket(handle, message);
17
- return {
18
- target,
19
- response,
20
- };
21
- };
22
7
  const getIpcAndResponse = (module, handle, message) => {
23
8
  if (IsMessagePortMain.isMessagePortMain(handle)) {
24
- return handleIncomingIpcMessagePort(module, handle, message);
25
- }
26
- return handleIncomingIpcWebSocket(module, handle, message);
27
- };
28
- const applyResponse = async (target, response, ipcId) => {
29
- switch (response.type) {
30
- case 'handle':
31
- HandleIpc.handleIpc(target);
32
- break;
33
- case 'send':
34
- return SendIncomingIpc.sendIncomingIpc(target, response, ipcId);
35
- default:
36
- throw new Error('unexpected response');
9
+ return HandleIncomingIpcMessagePort.handleIncomingIpcMessagePort(module, handle, message);
37
10
  }
11
+ return HandleIncomingIpcWebSocket.handleIncomingIpcWebSocket(module, handle, message);
38
12
  };
39
13
  export const handleIncomingIpc = async (ipcId, handle, message) => {
40
14
  Assert.number(ipcId);
41
15
  const module = HandleIpcModule.getModule(ipcId);
42
16
  const { target, response } = await getIpcAndResponse(module, handle, message);
43
- await applyResponse(target, response, ipcId);
17
+ await ApplyIncomingIpcResponse.applyIncomingIpcResponse(target, response, ipcId);
44
18
  };
@@ -0,0 +1,8 @@
1
+ export const handleIncomingIpcMessagePort = async (module, handle, message) => {
2
+ const target = await module.targetMessagePort(handle, message);
3
+ const response = module.upgradeMessagePort(handle, message);
4
+ return {
5
+ target,
6
+ response,
7
+ };
8
+ };
@@ -0,0 +1,8 @@
1
+ export const handleIncomingIpcWebSocket = async (module, handle, message) => {
2
+ const target = await module.targetWebSocket(handle, message);
3
+ const response = module.upgradeWebSocket(handle, message);
4
+ return {
5
+ target,
6
+ response,
7
+ };
8
+ };
@@ -1,8 +1,10 @@
1
- export const SharedProcess = 1;
2
- export const MainProcess = -5;
3
1
  export const EmbedsProcess = 2;
4
- export const TerminalProcess = 7;
2
+ export const EmbedsWorker = 77;
5
3
  export const ExtensionHostHelperProcess = 3;
4
+ export const MainProcess = -5;
6
5
  export const ProcessExplorer = 11;
7
6
  export const SearchProcess = 13;
7
+ export const SharedProcess = 1;
8
+ export const TerminalProcess = 7;
8
9
  export const Unknown = 0;
10
+ export const ProcessExplorerRenderer = 33;
@@ -3,6 +3,7 @@ import * as EmbedsProcessPath from '../EmbedsProcessPath/EmbedsProcessPath.js';
3
3
  import * as HandleIpc from '../HandleIpc/HandleIpc.js';
4
4
  import * as IpcParent from '../IpcParent/IpcParent.js';
5
5
  import * as IpcParentType from '../IpcParentType/IpcParentType.js';
6
+ import * as IpcId from '../IpcId/IpcId.js';
6
7
  export const launchEmbedsProcess = async () => {
7
8
  const ipc = await IpcParent.create({
8
9
  method: IpcParentType.ElectronUtilityProcess,
@@ -12,7 +13,7 @@ export const launchEmbedsProcess = async () => {
12
13
  name: 'Embeds Process',
13
14
  });
14
15
  HandleIpc.handleIpc(ipc);
15
- await ConnectIpcToElectron.connectIpcToElectron(ipc);
16
+ await ConnectIpcToElectron.connectIpcToElectron(ipc, IpcId.EmbedsProcess);
16
17
  HandleIpc.unhandleIpc(ipc);
17
18
  return ipc;
18
19
  };
@@ -1,5 +1,6 @@
1
1
  import * as ConnectIpcToElectron from '../ConnectIpcToElectron/ConnectIpcToElectron.js';
2
2
  import * as HandleIpc from '../HandleIpc/HandleIpc.js';
3
+ import * as IpcId from '../IpcId/IpcId.js';
3
4
  import * as IpcParent from '../IpcParent/IpcParent.js';
4
5
  import * as IpcParentType from '../IpcParentType/IpcParentType.js';
5
6
  import * as ProcessExplorerPath from '../ProcessExplorerPath/ProcessExplorerPath.js';
@@ -12,7 +13,7 @@ export const launchProcessExplorer = async () => {
12
13
  name: 'Process Explorer',
13
14
  });
14
15
  HandleIpc.handleIpc(ipc);
15
- await ConnectIpcToElectron.connectIpcToElectron(ipc);
16
+ await ConnectIpcToElectron.connectIpcToElectron(ipc, IpcId.ProcessExplorerRenderer);
16
17
  HandleIpc.unhandleIpc(ipc);
17
18
  return ipc;
18
19
  };
@@ -41,9 +41,9 @@ export const getAppImageName = () => {
41
41
  export const getSetupName = () => {
42
42
  return 'Lvce-Setup';
43
43
  };
44
- export const version = '0.26.2';
45
- export const commit = 'efc5b0f';
46
- export const date = '2024-04-23T20:38:06.000Z';
44
+ export const version = '0.26.4';
45
+ export const commit = '59e174c';
46
+ export const date = '2024-04-28T08:40:44.000Z';
47
47
  export const getVersion = () => {
48
48
  return version;
49
49
  };
@@ -0,0 +1,3 @@
1
+ import { join } from 'node:path';
2
+ import * as Root from '../Root/Root.js';
3
+ export const preloadUrl = join(Root.root, 'packages', 'preload', 'src', 'index.js');
@@ -1,6 +1,7 @@
1
1
  // TODO find a better way to do this
2
2
  // most commands don't require sockets
3
3
  // but output channel and terminal need to continuously send data through the socket
4
+ // TODO remove all of these
4
5
  const METHODS_THAT_REQUIRE_SOCKET = new Set([
5
6
  'OutputChannel.open',
6
7
  'ExtensionHost.start',
@@ -9,7 +10,6 @@ const METHODS_THAT_REQUIRE_SOCKET = new Set([
9
10
  'Terminal.create',
10
11
  'IncrementalTextSearch.start',
11
12
  'ElectronApplicationMenu.setItems',
12
- 'GetWindowId.getWindowId',
13
13
  'HandleMessagePortForExtensionHostHelperProcess.handleMessagePortForExtensionHostHelperProcess',
14
14
  'ElectronBrowserView.createBrowserView',
15
15
  'ElectronWebContentsView.createWebContentsView',
@@ -1,5 +0,0 @@
1
- import { join } from 'node:path';
2
- import * as Root from '../Root/Root.js';
3
- export const getPreloadUrl = () => {
4
- return join(Root.root, 'packages', 'main-process', 'src', 'preload.js');
5
- };