@lvce-editor/shared-process 0.25.12 → 0.26.1

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 (63) hide show
  1. package/package.json +4 -4
  2. package/src/parts/ConnectIpcToElectron/ConnectIpcToElectron.js +8 -0
  3. package/src/parts/ContentSecurityPolicyEmbedsWorker/ContentSecurityPolicyEmbedsWorker.js +2 -0
  4. package/src/parts/EmbedsProcess/EmbedsProcess.js +22 -0
  5. package/src/parts/EmbedsProcessPath/EmbedsProcessPath.js +3 -0
  6. package/src/parts/GetHeaders/GetHeaders.js +4 -0
  7. package/src/parts/GetHeadersEmbedsWorker/GetHeadersEmbedsWorker.js +9 -0
  8. package/src/parts/GetPortTuple/GetPortTuple.js +6 -0
  9. package/src/parts/HandleElectronMessagePort/HandleElectronMessagePort.js +7 -0
  10. package/src/parts/HandleIpc/HandleIpc.js +2 -20
  11. package/src/parts/HandleMessage/HandleMessage.js +16 -0
  12. package/src/parts/HandleMessagePortForEmbedsProcess/HandleMessagePortForEmbedsProcess.ipc.js +5 -0
  13. package/src/parts/HandleMessagePortForEmbedsProcess/HandleMessagePortForEmbedsProcess.js +8 -0
  14. package/src/parts/HandleMessagePortForProcessExplorer/HandleMessagePortForProcessExplorer.ipc.js +5 -0
  15. package/src/parts/HandleMessagePortForProcessExplorer/HandleMessagePortForProcessExplorer.js +8 -0
  16. package/src/parts/HandleMessagePortForSearchProcess/HandleMessagePortForSearchProcess.ipc.js +5 -0
  17. package/src/parts/HandleMessagePortForSearchProcess/HandleMessagePortForSearchProcess.js +8 -0
  18. package/src/parts/IpcChildWithElectronMessagePort/IpcChildWithElectronMessagePort.js +3 -0
  19. package/src/parts/IpcParentWithElectronUtilityProcess/IpcParentWithElectronUtilityProcess.js +8 -3
  20. package/src/parts/LaunchEmbedsProcess/LaunchEmbedsProcess.js +17 -0
  21. package/src/parts/LaunchProcessExplorer/LaunchProcessExplorer.js +17 -0
  22. package/src/parts/LaunchPtyHost/LaunchPtyHost.js +37 -0
  23. package/src/parts/LaunchSearchProcess/LaunchSearchProcess.js +15 -0
  24. package/src/parts/Module/Module.js +6 -16
  25. package/src/parts/ModuleId/ModuleId.js +3 -7
  26. package/src/parts/ModuleMap/ModuleMap.js +6 -50
  27. package/src/parts/Platform/Platform.js +3 -3
  28. package/src/parts/ProcessExplorer/ProcessExplorer.js +13 -0
  29. package/src/parts/ProcessExplorerPath/ProcessExplorerPath.js +3 -0
  30. package/src/parts/PtyHost/PtyHost.js +2 -36
  31. package/src/parts/SearchProcess/SearchProcess.js +18 -0
  32. package/src/parts/SearchProcessPath/SearchProcessPath.js +3 -0
  33. package/src/parts/TemporaryMessagePort/TemporaryMessagePort.js +17 -0
  34. package/src/parts/AddAccurateMemoryUsage/AddAccurateMemoryUsage.js +0 -8
  35. package/src/parts/CreatePidMap/CreatePidMap.js +0 -5
  36. package/src/parts/ElectronBrowserView/ElectronBrowserView.ipc.js +0 -6
  37. package/src/parts/ElectronBrowserView/ElectronBrowserView.js +0 -21
  38. package/src/parts/ElectronBrowserViewFunctions/ElectronBrowserViewFunctions.ipc.js +0 -18
  39. package/src/parts/ElectronBrowserViewFunctions/ElectronBrowserViewFunctions.js +0 -35
  40. package/src/parts/ElectronBrowserViewIpcState/ElectronBrowserViewIpcState.js +0 -15
  41. package/src/parts/ElectronBrowserViewQuickPick/ElectronBrowserViewQuickPick.ipc.js +0 -6
  42. package/src/parts/ElectronBrowserViewQuickPick/ElectronBrowserViewQuickPick.js +0 -7
  43. package/src/parts/ElectronBrowserViewState/ElectronBrowserViewState.js +0 -12
  44. package/src/parts/ElectronBrowserViewSuggestions/ElectronBrowserViewSuggestions.ipc.js +0 -7
  45. package/src/parts/ElectronBrowserViewSuggestions/ElectronBrowserViewSuggestions.js +0 -10
  46. package/src/parts/ElectronWebContents/ElectronWebContents.ipc.js +0 -12
  47. package/src/parts/ElectronWebContents/ElectronWebContents.js +0 -61
  48. package/src/parts/ElectronWebContentsView/ElectronWebContentsView.ipc.js +0 -6
  49. package/src/parts/ElectronWebContentsView/ElectronWebContentsView.js +0 -18
  50. package/src/parts/ElectronWebContentsViewFunctions/ElectronWebContentsViewFunctions.ipc.js +0 -18
  51. package/src/parts/ElectronWebContentsViewFunctions/ElectronWebContentsViewFunctions.js +0 -35
  52. package/src/parts/GetAccurateMemoryUsage/GetAccurateMemoryUsage.js +0 -39
  53. package/src/parts/GetPsOutput/GetPsOutput.js +0 -18
  54. package/src/parts/ListProcessGetName/ListProcessGetName.js +0 -56
  55. package/src/parts/ListProcessesWithMemoryUsage/ListProcessesWithMemoryUsage.ipc.js +0 -5
  56. package/src/parts/ListProcessesWithMemoryUsage/ListProcessesWithMemoryUsage.js +0 -11
  57. package/src/parts/ListProcessesWithMemoryUsageUnix/ListProcessesWithMemoryUsageUnix.js +0 -20
  58. package/src/parts/ListProcessesWithMemoryUsageWindows/ListProcessesWithMemoryUsageWindows.js +0 -48
  59. package/src/parts/LoadWindowsProcessTree/LoadWindowsProcessTree.js +0 -13
  60. package/src/parts/ParseMemory/ParseMemory.js +0 -10
  61. package/src/parts/ParsePsOutput/ParsePsOutput.js +0 -47
  62. package/src/parts/WindowsProcessTree/WindowsProcessTree.js +0 -26
  63. package/src/parts/WindowsProcessTreeDataFlag/WindowsProcessTreeDataFlag.js +0 -3
@@ -0,0 +1,18 @@
1
+ import * as LaunchSearchProcess from '../LaunchSearchProcess/LaunchSearchProcess.js';
2
+ import * as JsonRpc from '../JsonRpc/JsonRpc.js';
3
+ export const state = {
4
+ /**
5
+ * @type {any}
6
+ */
7
+ ipc: undefined,
8
+ };
9
+ export const getOrCreate = async () => {
10
+ if (!state.ipc) {
11
+ state.ipc = LaunchSearchProcess.launchSearchProcess();
12
+ }
13
+ return state.ipc;
14
+ };
15
+ export const invoke = async (method, ...params) => {
16
+ const ipc = await getOrCreate();
17
+ return JsonRpc.invoke(ipc, method, ...params);
18
+ };
@@ -0,0 +1,3 @@
1
+ import * as Path from '../Path/Path.js';
2
+ import * as Root from '../Root/Root.js';
3
+ export const searchProcessPath = Path.join(Root.root, 'packages', 'search-process', 'src', 'searchProcessMain.js');
@@ -1,5 +1,6 @@
1
1
  import * as ParentIpc from '../ParentIpc/ParentIpc.js';
2
2
  import * as Assert from '../Assert/Assert.js';
3
+ import * as Id from '../Id/Id.js';
3
4
  export const state = {
4
5
  ports: Object.create(null),
5
6
  };
@@ -14,6 +15,22 @@ export const create = async (name) => {
14
15
  port.start();
15
16
  return port;
16
17
  };
18
+ export const getPortTuple = async () => {
19
+ const id1 = `${Id.create()}`;
20
+ const id2 = `${Id.create()}`;
21
+ await ParentIpc.invoke('TemporaryMessagePort.createPortTuple', id1, id2);
22
+ const port1 = state.ports[id1];
23
+ const port2 = state.ports[id2];
24
+ return {
25
+ port1,
26
+ port2,
27
+ };
28
+ };
29
+ export const sendTo = async (name, port) => {
30
+ Assert.string(name);
31
+ Assert.object(port);
32
+ await ParentIpc.invokeAndTransfer('TemporaryMessagePort.sendTo', [port], name);
33
+ };
17
34
  export const handlePort = (port, name) => {
18
35
  Assert.string(name);
19
36
  Assert.object(port);
@@ -1,8 +0,0 @@
1
- import * as GetAccurateMemoryUsage from '../GetAccurateMemoryUsage/GetAccurateMemoryUsage.js';
2
- export const addAccurateMemoryUsage = async (process) => {
3
- const accurateMemoryUsage = await GetAccurateMemoryUsage.getAccurateMemoryUsage(process.pid);
4
- return {
5
- ...process,
6
- memory: accurateMemoryUsage,
7
- };
8
- };
@@ -1,5 +0,0 @@
1
- import * as ParentIpc from '../ParentIpc/ParentIpc.js';
2
- export const createPidMap = async () => {
3
- const pidMap = await ParentIpc.invoke('CreatePidMap.createPidMap');
4
- return pidMap;
5
- };
@@ -1,6 +0,0 @@
1
- import * as ElectronBrowserView from './ElectronBrowserView.js';
2
- export const name = 'ElectronBrowserView';
3
- export const Commands = {
4
- createBrowserView: ElectronBrowserView.createBrowserView,
5
- disposeBrowserView: ElectronBrowserView.disposeBrowserView,
6
- };
@@ -1,21 +0,0 @@
1
- import * as ElectronBrowserViewIpcState from '../ElectronBrowserViewIpcState/ElectronBrowserViewIpcState.js';
2
- import * as ElectronBrowserViewState from '../ElectronBrowserViewState/ElectronBrowserViewState.js';
3
- import * as ElectronWebContents from '../ElectronWebContents/ElectronWebContents.js';
4
- import * as ParentIpc from '../ParentIpc/ParentIpc.js';
5
- export const createBrowserView = async (ipc, restoreId, fallthroughKeyBindings) => {
6
- const webContentsId = await ParentIpc.invoke('ElectronBrowserView.createBrowserView2', restoreId);
7
- ElectronBrowserViewIpcState.add(webContentsId, ipc);
8
- // TODO get window id from renderer worker
9
- await ParentIpc.invoke('ElectronBrowserView.attachEventListeners', webContentsId);
10
- await ParentIpc.invoke('ElectronBrowserViewFunctions.setBackgroundColor', webContentsId, 'white');
11
- return webContentsId;
12
- };
13
- export const disposeBrowserView = async (id) => {
14
- ElectronBrowserViewState.remove(id);
15
- await ParentIpc.invoke('ElectronBrowserView.disposeBrowserView', id);
16
- await ElectronWebContents.dispose(id);
17
- };
18
- export const handleBrowserViewCreated = (id) => {
19
- console.log('created', id);
20
- ElectronBrowserViewState.add(id);
21
- };
@@ -1,18 +0,0 @@
1
- import * as ElectronBrowserViewFunctions from './ElectronBrowserViewFunctions.js';
2
- export const name = 'ElectronBrowserViewFunctions';
3
- export const Commands = {
4
- resizeBrowserView: ElectronBrowserViewFunctions.resizeBrowserView,
5
- setIframeSrc: ElectronBrowserViewFunctions.setIframeSrc,
6
- focus: ElectronBrowserViewFunctions.focus,
7
- openDevtools: ElectronBrowserViewFunctions.openDevtools,
8
- reload: ElectronBrowserViewFunctions.reload,
9
- forward: ElectronBrowserViewFunctions.forward,
10
- backward: ElectronBrowserViewFunctions.backward,
11
- cancelNavigation: ElectronBrowserViewFunctions.cancelNavigation,
12
- show: ElectronBrowserViewFunctions.show,
13
- hide: ElectronBrowserViewFunctions.hide,
14
- inspectElement: ElectronBrowserViewFunctions.inspectElement,
15
- copyImageAt: ElectronBrowserViewFunctions.copyImageAt,
16
- setFallthroughKeyBindings: ElectronBrowserViewFunctions.setFallthroughKeyBindings,
17
- getStats: ElectronBrowserViewFunctions.getStats,
18
- };
@@ -1,35 +0,0 @@
1
- import * as ParentIpc from '../ParentIpc/ParentIpc.js';
2
- import * as ElectronWebContents from '../ElectronWebContents/ElectronWebContents.js';
3
- export const resizeBrowserView = (id, x, y, width, height) => {
4
- return ParentIpc.invoke('ElectronBrowserViewFunctions.resizeBrowserView', id, x, y, width, height);
5
- };
6
- export const setIframeSrc = async (id, iframeSrc) => {
7
- return ParentIpc.invoke('ElectronBrowserViewFunctions.setIframeSrc', id, iframeSrc);
8
- };
9
- const callFunction = (id, functionName) => {
10
- return ParentIpc.invoke('ElectronWebContents.callFunction', id, functionName);
11
- };
12
- export const focus = ElectronWebContents.focus;
13
- export const openDevtools = ElectronWebContents.openDevtools;
14
- export const reload = ElectronWebContents.reload;
15
- export const forward = ElectronWebContents.forward;
16
- export const backward = ElectronWebContents.backward;
17
- export const cancelNavigation = (id) => {
18
- return ParentIpc.invoke('ElectronBrowserViewFunctions.cancelNavigation', id);
19
- };
20
- export const show = (id) => {
21
- return ParentIpc.invoke('ElectronBrowserViewFunctions.show', id);
22
- };
23
- export const hide = (id) => {
24
- return ParentIpc.invoke('ElectronBrowserViewFunctions.hide', id);
25
- };
26
- export const inspectElement = ElectronWebContents.inspectElement;
27
- export const copyImageAt = (id, x, y) => {
28
- return ParentIpc.invoke('ElectronBrowserViewFunctions.copyImageAt', id, x, y);
29
- };
30
- export const setFallthroughKeyBindings = (fallthroughKeyBindings) => {
31
- return ParentIpc.invoke('ElectronBrowserViewFunctions.setFallthroughKeyBindings', fallthroughKeyBindings);
32
- };
33
- export const getStats = (id) => {
34
- return ParentIpc.invoke('ElectronWebContents.getStats', id);
35
- };
@@ -1,15 +0,0 @@
1
- export const state = {
2
- ipcMap: Object.create(null),
3
- };
4
- export const add = (id, ipc) => {
5
- state.ipcMap[id] = ipc;
6
- };
7
- export const get = (id) => {
8
- return state.ipcMap[id];
9
- };
10
- export const remove = (id) => {
11
- delete state.ipcMap[id];
12
- };
13
- export const getAll = () => {
14
- return Object.values(state.ipcMap);
15
- };
@@ -1,6 +0,0 @@
1
- import * as ElectronBrowserViewQuickPick from './ElectronBrowserViewQuickPick.js';
2
- export const name = 'ElectronBrowserViewQuickPick';
3
- export const Commands = {
4
- startLogging: ElectronBrowserViewQuickPick.createBrowserViewQuickPick,
5
- disposeBrowserViewQuickPick: ElectronBrowserViewQuickPick.disposeBrowserViewQuickPick,
6
- };
@@ -1,7 +0,0 @@
1
- import * as ParentIpc from '../ParentIpc/ParentIpc.js';
2
- export const createBrowserViewQuickPick = (x, y, width, height) => {
3
- return ParentIpc.invoke('ElectronBrowserViewQuickPick.createBrowserViewQuickPick', x, y, width, height);
4
- };
5
- export const disposeBrowserViewQuickPick = () => {
6
- return ParentIpc.invoke('ElectronBrowserViewQuickPick.disposeBrowserViewQuickPick');
7
- };
@@ -1,12 +0,0 @@
1
- const state = {
2
- browserViews: Object.create(null),
3
- };
4
- export const add = (id) => {
5
- state.browserViews[id] = id;
6
- };
7
- export const remove = (id) => {
8
- delete state.browserViews[id];
9
- };
10
- export const getAll = () => {
11
- return Object.values(state.browserViews);
12
- };
@@ -1,7 +0,0 @@
1
- import * as ElectronBrowserViewSuggestions from './ElectronBrowserViewSuggestions.js';
2
- export const name = 'ElectronBrowserViewSuggestions';
3
- export const Commands = {
4
- createBrowserView: ElectronBrowserViewSuggestions.createBrowserView,
5
- disposeBrowserView: ElectronBrowserViewSuggestions.disposeBrowserView,
6
- setSuggestions: ElectronBrowserViewSuggestions.setSuggestions,
7
- };
@@ -1,10 +0,0 @@
1
- import * as ParentIpc from '../ParentIpc/ParentIpc.js';
2
- export const createBrowserView = (x, y, width, height) => {
3
- return ParentIpc.invoke('ElectronBrowserViewSuggestions.createBrowserView', x, y, width, height);
4
- };
5
- export const disposeBrowserView = () => {
6
- return ParentIpc.invoke('ElectronBrowserViewSuggestions.disposeBrowserView');
7
- };
8
- export const setSuggestions = (suggestions) => {
9
- return ParentIpc.invoke('ElectronBrowserViewSuggestions.setSuggestions', suggestions);
10
- };
@@ -1,12 +0,0 @@
1
- import * as ElectronWebContents from './ElectronWebContents.js';
2
- export const name = 'ElectronWebContents';
3
- export const Commands = {
4
- dispose: ElectronWebContents.dispose,
5
- handleKeyBinding: ElectronWebContents.handleKeyBinding,
6
- handleWindowOpen: ElectronWebContents.handleWindowOpen,
7
- handleWillNavigate: ElectronWebContents.handleWillNavigate,
8
- handleDidNavigate: ElectronWebContents.handleDidNavigate,
9
- handleContextMenu: ElectronWebContents.handleContextMenu,
10
- handleTitleUpdated: ElectronWebContents.handleTitleUpdated,
11
- handleBrowserViewDestroyed: ElectronWebContents.handleBrowserViewDestroyed, // TODO rename to webcontents
12
- };
@@ -1,61 +0,0 @@
1
- import * as ElectronBrowserViewIpcState from '../ElectronBrowserViewIpcState/ElectronBrowserViewIpcState.js';
2
- import * as ElectronBrowserViewState from '../ElectronBrowserViewState/ElectronBrowserViewState.js';
3
- import * as ParentIpc from '../ParentIpc/ParentIpc.js';
4
- export const dispose = async (id) => {
5
- await ParentIpc.invoke('ElectronWebContents.dispose', id);
6
- };
7
- export const callFunction = (webContentsId, method, ...params) => {
8
- return ParentIpc.invoke(`ElectronWebContents.callFunction`, webContentsId, method, ...params);
9
- };
10
- export const focus = (webContentsId) => {
11
- return callFunction(webContentsId, 'focus');
12
- };
13
- export const openDevtools = (webContentsId) => {
14
- return callFunction(webContentsId, 'openDevTools');
15
- };
16
- export const reload = (webContentsId) => {
17
- return callFunction(webContentsId, 'reload');
18
- };
19
- export const forward = (webContentsId) => {
20
- return callFunction(webContentsId, 'goForward');
21
- };
22
- export const backward = (webContentsId) => {
23
- return callFunction(webContentsId, 'goBack');
24
- };
25
- export const inspectElement = (webContentsId, x, y) => {
26
- return callFunction(webContentsId, `inspectElement`, x, y);
27
- };
28
- export const handleWindowOpen = (webContentsId, url) => {
29
- // TODO
30
- };
31
- const forwardEvent = (method, webContentsId, ...params) => {
32
- const ipc = ElectronBrowserViewIpcState.get(webContentsId);
33
- if (!ipc) {
34
- console.log(`[shared-process] no ipc for webcontents ${webContentsId}`);
35
- return;
36
- }
37
- ipc.send({
38
- jsonrpc: '2.0',
39
- method: `SimpleBrowser.${method}`,
40
- params,
41
- });
42
- };
43
- export const handleWillNavigate = (...args) => {
44
- return forwardEvent('handleWillNavigate', ...args);
45
- };
46
- export const handleDidNavigate = (...args) => {
47
- return forwardEvent('handleDidNavigate', ...args);
48
- };
49
- export const handleContextMenu = (...args) => {
50
- return forwardEvent('handleContextMenu', ...args);
51
- };
52
- export const handleTitleUpdated = (...args) => {
53
- return forwardEvent('handleTitleUpdated', ...args);
54
- };
55
- export const handleKeyBinding = (...args) => {
56
- forwardEvent('handleKeyBinding', ...args);
57
- };
58
- export const handleBrowserViewDestroyed = (id) => {
59
- ElectronBrowserViewState.remove(id);
60
- ElectronBrowserViewIpcState.remove(id);
61
- };
@@ -1,6 +0,0 @@
1
- import * as ElectronWebContentsView from './ElectronWebContentsView.js';
2
- export const name = 'ElectronWebContentsView';
3
- export const Commands = {
4
- createWebContentsView: ElectronWebContentsView.createWebContentsView,
5
- disposeWebContentsView: ElectronWebContentsView.disposeWebContentsView,
6
- };
@@ -1,18 +0,0 @@
1
- import * as ElectronBrowserViewIpcState from '../ElectronBrowserViewIpcState/ElectronBrowserViewIpcState.js';
2
- import * as ElectronWebContents from '../ElectronWebContents/ElectronWebContents.js';
3
- import * as ParentIpc from '../ParentIpc/ParentIpc.js';
4
- import * as Assert from '../Assert/Assert.js';
5
- export const createWebContentsView = async (ipc, restoreId, fallthroughKeyBindings) => {
6
- Assert.object(ipc);
7
- Assert.number(restoreId);
8
- const webContentsId = await ParentIpc.invoke('ElectronWebContentsView.createWebContentsView', restoreId);
9
- ElectronBrowserViewIpcState.add(webContentsId, ipc);
10
- // TODO get window id from renderer worker
11
- await ParentIpc.invoke('ElectronWebContentsView.attachEventListeners', webContentsId);
12
- await ParentIpc.invoke('ElectronWebContentsViewFunctions.setBackgroundColor', webContentsId, 'white');
13
- return webContentsId;
14
- };
15
- export const disposeWebContentsView = async (id) => {
16
- await ParentIpc.invoke('ElectronWebContentsView.disposeWebContentsView', id);
17
- await ElectronWebContents.dispose(id);
18
- };
@@ -1,18 +0,0 @@
1
- import * as ElectronWebContentsViewFunctions from './ElectronWebContentsViewFunctions.js';
2
- export const name = 'ElectronWebContentsViewFunctions';
3
- export const Commands = {
4
- resizeBrowserView: ElectronWebContentsViewFunctions.resizeBrowserView,
5
- setIframeSrc: ElectronWebContentsViewFunctions.setIframeSrc,
6
- focus: ElectronWebContentsViewFunctions.focus,
7
- openDevtools: ElectronWebContentsViewFunctions.openDevtools,
8
- reload: ElectronWebContentsViewFunctions.reload,
9
- forward: ElectronWebContentsViewFunctions.forward,
10
- backward: ElectronWebContentsViewFunctions.backward,
11
- cancelNavigation: ElectronWebContentsViewFunctions.cancelNavigation,
12
- show: ElectronWebContentsViewFunctions.show,
13
- hide: ElectronWebContentsViewFunctions.hide,
14
- inspectElement: ElectronWebContentsViewFunctions.inspectElement,
15
- copyImageAt: ElectronWebContentsViewFunctions.copyImageAt,
16
- setFallthroughKeyBindings: ElectronWebContentsViewFunctions.setFallthroughKeyBindings,
17
- getStats: ElectronWebContentsViewFunctions.getStats,
18
- };
@@ -1,35 +0,0 @@
1
- import * as ParentIpc from '../ParentIpc/ParentIpc.js';
2
- import * as ElectronWebContents from '../ElectronWebContents/ElectronWebContents.js';
3
- export const resizeBrowserView = (id, x, y, width, height) => {
4
- return ParentIpc.invoke('ElectronWebContentsViewFunctions.resizeBrowserView', id, x, y, width, height);
5
- };
6
- export const setIframeSrc = async (id, iframeSrc) => {
7
- return ParentIpc.invoke('ElectronWebContentsViewFunctions.setIframeSrc', id, iframeSrc);
8
- };
9
- const callFunction = (id, functionName) => {
10
- return ParentIpc.invoke('ElectronWebContents.callFunction', id, functionName);
11
- };
12
- export const focus = ElectronWebContents.focus;
13
- export const openDevtools = ElectronWebContents.openDevtools;
14
- export const reload = ElectronWebContents.reload;
15
- export const forward = ElectronWebContents.forward;
16
- export const backward = ElectronWebContents.backward;
17
- export const cancelNavigation = (id) => {
18
- return ParentIpc.invoke('ElectronWebContentsViewFunctions.cancelNavigation', id);
19
- };
20
- export const show = (id) => {
21
- return ParentIpc.invoke('ElectronWebContentsViewFunctions.show', id);
22
- };
23
- export const hide = (id) => {
24
- return ParentIpc.invoke('ElectronWebContentsViewFunctions.hide', id);
25
- };
26
- export const inspectElement = ElectronWebContents.inspectElement;
27
- export const copyImageAt = (id, x, y) => {
28
- return ParentIpc.invoke('ElectronWebContentsViewFunctions.copyImageAt', id, x, y);
29
- };
30
- export const setFallthroughKeyBindings = (fallthroughKeyBindings) => {
31
- return ParentIpc.invoke('ElectronWebContentsViewFunctions.setFallthroughKeyBindings', fallthroughKeyBindings);
32
- };
33
- export const getStats = (id) => {
34
- return ParentIpc.invoke('ElectronWebContents.getStats', id);
35
- };
@@ -1,39 +0,0 @@
1
- import { readFile } from 'node:fs/promises';
2
- import { join } from 'node:path';
3
- import * as Assert from '../Assert/Assert.js';
4
- import * as EncodingType from '../EncodingType/EncodingType.js';
5
- import * as IsEnoentError from '../IsEnoentError/IsEnoentError.js';
6
- import * as IsEsrchError from '../IsEsrchError/IsEsrchError.js';
7
- import * as ParseMemory from '../ParseMemory/ParseMemory.js';
8
- import * as Platform from '../Platform/Platform.js';
9
- import { VError } from '../VError/VError.js';
10
- const getContent = async (pid) => {
11
- try {
12
- const filePath = join('/proc', `${pid}`, 'statm');
13
- const content = await readFile(filePath, EncodingType.Utf8);
14
- return content;
15
- }
16
- catch (error) {
17
- if (IsEnoentError.isEnoentError(error) || IsEsrchError.isEsrchError(error)) {
18
- return '';
19
- }
20
- throw error;
21
- }
22
- };
23
- export const getAccurateMemoryUsage = async (pid) => {
24
- try {
25
- Assert.number(pid);
26
- if (Platform.isMacOs) {
27
- return 0;
28
- }
29
- const content = await getContent(pid);
30
- if (!content) {
31
- return -1;
32
- }
33
- const memory = ParseMemory.parseMemory(content);
34
- return memory;
35
- }
36
- catch (error) {
37
- throw new VError(error, 'Failed to get accurate memory usage');
38
- }
39
- };
@@ -1,18 +0,0 @@
1
- import { execFile as _execFile } from 'node:child_process';
2
- import { promisify } from 'node:util';
3
- import * as Signal from '../Signal/Signal.js';
4
- import { VError } from '../VError/VError.js';
5
- const execFile = promisify(_execFile);
6
- export const getPsOutput = async () => {
7
- try {
8
- const { stdout } = await execFile('ps', ['-ax', '-o', 'pid=,ppid=,pcpu=,pmem=,command=']);
9
- return stdout.trim();
10
- }
11
- catch (error) {
12
- // @ts-ignore
13
- if (error && error.signal === Signal.SIGINT) {
14
- return '';
15
- }
16
- throw new VError(error, `Failed to execute ps`);
17
- }
18
- };
@@ -1,56 +0,0 @@
1
- import * as Assert from '../Assert/Assert.js';
2
- export const getName = (pid, cmd, rootPid, pidMap) => {
3
- Assert.number(pid);
4
- Assert.string(cmd);
5
- Assert.number(rootPid);
6
- Assert.object(pidMap);
7
- if (pid === rootPid) {
8
- return 'main';
9
- }
10
- if (cmd.includes('--type=zygote')) {
11
- return 'zygote';
12
- }
13
- if (cmd.includes('--type=gpu-process')) {
14
- return 'gpu-process';
15
- }
16
- if (cmd.includes('extensionHostMain.js')) {
17
- return 'extension-host';
18
- }
19
- if (cmd.includes('ptyHostMain.js')) {
20
- return 'pty-host';
21
- }
22
- if (cmd.includes('--lvce-window-kind=process-explorer')) {
23
- return 'process-explorer';
24
- }
25
- if (pid in pidMap) {
26
- return pidMap[pid] || `<unknown>`;
27
- }
28
- if (cmd.includes('--type=renderer')) {
29
- return `renderer`;
30
- }
31
- if (cmd.includes('--type=utility')) {
32
- return 'utility';
33
- }
34
- if (cmd.includes('tsserver.js')) {
35
- return 'tsserver.js';
36
- }
37
- if (cmd.includes('typingsInstaller.js')) {
38
- return 'typingsInstaller.js';
39
- }
40
- if (cmd.includes('extensionHostHelperProcessMain.js')) {
41
- return 'extension-host-helper-process';
42
- }
43
- if (cmd.includes('/bin/rg') || cmd.includes('rg.exe')) {
44
- return 'ripgrep';
45
- }
46
- if (cmd.startsWith('bash')) {
47
- return 'bash';
48
- }
49
- if (cmd.startsWith(`/opt/sublime_text/sublime_text `)) {
50
- return 'sublime-text';
51
- }
52
- if (cmd.includes('\\conhost.exe')) {
53
- return 'conhost.exe';
54
- }
55
- return `${cmd}`;
56
- };
@@ -1,5 +0,0 @@
1
- import * as ListProcessesWithMemoryUsage from './ListProcessesWithMemoryUsage.js';
2
- export const name = 'ListProcessesWithMemoryUsage';
3
- export const Commands = {
4
- listProcessesWithMemoryUsage: ListProcessesWithMemoryUsage.listProcessesWithMemoryUsage,
5
- };
@@ -1,11 +0,0 @@
1
- import * as Platform from '../Platform/Platform.js';
2
- const getModule = () => {
3
- if (Platform.isWindows) {
4
- return import('../ListProcessesWithMemoryUsageWindows/ListProcessesWithMemoryUsageWindows.js');
5
- }
6
- return import('../ListProcessesWithMemoryUsageUnix/ListProcessesWithMemoryUsageUnix.js');
7
- };
8
- export const listProcessesWithMemoryUsage = async (rootPid) => {
9
- const module = await getModule();
10
- return module.listProcessesWithMemoryUsage(rootPid);
11
- };
@@ -1,20 +0,0 @@
1
- import * as AddAccurateMemoryUsage from '../AddAccurateMemoryUsage/AddAccurateMemoryUsage.js';
2
- import * as CreatePidMap from '../CreatePidMap/CreatePidMap.js';
3
- import * as GetPsOutput from '../GetPsOutput/GetPsOutput.js';
4
- import * as HasPositiveMemoryUsage from '../HasPositiveMemoryUsage/HasPositiveMemoryUsage.js';
5
- import * as ParsePsOutput from '../ParsePsOutput/ParsePsOutput.js';
6
- export const listProcessesWithMemoryUsage = async (rootPid) => {
7
- // console.time('getPsOutput')
8
- const stdout = await GetPsOutput.getPsOutput();
9
- const pidMap = await CreatePidMap.createPidMap();
10
- // console.log({ stdout })
11
- // console.timeEnd('getPsOutput')
12
- // console.time('parsePsOutput')
13
- const parsed = ParsePsOutput.parsePsOutput(stdout, rootPid, pidMap);
14
- // console.timeEnd('parsePsOutput')
15
- // console.time('addAccurateMemoryUsage')
16
- const parsedWithAccurateMemoryUsage = await Promise.all(parsed.map(AddAccurateMemoryUsage.addAccurateMemoryUsage));
17
- // console.timeEnd('addAccurateMemoryUsage')
18
- const filtered = parsedWithAccurateMemoryUsage.filter(HasPositiveMemoryUsage.hasPositiveMemoryUsage);
19
- return filtered;
20
- };
@@ -1,48 +0,0 @@
1
- // listProcesses windows implementation based on https://github.com/microsoft/vscode/blob/c0769274fa136b45799edeccc0d0a2f645b75caf/src/vs/base/node/ps.ts (License MIT)
2
- import { VError } from '../VError/VError.js';
3
- import * as ListProcessGetName from '../ListProcessGetName/ListProcessGetName.js';
4
- import * as WindowsProcessTree from '../WindowsProcessTree/WindowsProcessTree.js';
5
- import * as WindowsProcessTreeDataFlag from '../WindowsProcessTreeDataFlag/WindowsProcessTreeDataFlag.js';
6
- import * as CreatePidMap from '../CreatePidMap/CreatePidMap.js';
7
- /**
8
- * @param {import('@vscode/windows-process-tree').IProcessCpuInfo} item
9
- * @param {number} rootPid
10
- * @param {object} pidMap
11
- */
12
- const toResultItem = (item, rootPid, pidMap) => {
13
- return {
14
- name: ListProcessGetName.getName(item.pid, item.commandLine, rootPid, pidMap),
15
- pid: item.pid,
16
- ppid: item.ppid,
17
- memory: item.memory,
18
- cmd: item.commandLine,
19
- };
20
- };
21
- /**
22
- *
23
- * @param {import('@vscode/windows-process-tree').IProcessCpuInfo[]} completeProcessList
24
- * @param {number} rootPid
25
- */
26
- const toResult = (completeProcessList, rootPid, pidMap) => {
27
- const results = [];
28
- for (const item of completeProcessList) {
29
- results.push(toResultItem(item, rootPid, pidMap));
30
- }
31
- return results;
32
- };
33
- export const listProcessesWithMemoryUsage = async (rootPid) => {
34
- try {
35
- const processList = await WindowsProcessTree.getProcessList(rootPid, WindowsProcessTreeDataFlag.CommandLine | WindowsProcessTreeDataFlag.Memory);
36
- if (!processList) {
37
- throw new VError(`Root process ${rootPid} not found`);
38
- }
39
- const pidMap = await CreatePidMap.createPidMap();
40
- const completeProcessList = await WindowsProcessTree.addCpuUsage(processList);
41
- const result = toResult(completeProcessList, rootPid, pidMap);
42
- return result;
43
- }
44
- catch (error) {
45
- // @ts-ignore
46
- throw new VError(error, `Failed to list processes`);
47
- }
48
- };
@@ -1,13 +0,0 @@
1
- import * as IsDlOpenError from '../IsDlOpenError/IsDlOpenError.js';
2
- import { VError } from '../VError/VError.js';
3
- export const loadWindowProcessTree = async () => {
4
- try {
5
- return await import('@vscode/windows-process-tree');
6
- }
7
- catch (error) {
8
- if (IsDlOpenError.isDlOpenError(error)) {
9
- throw new VError(`Failed to load windows process tree: The native module "@vscode/windows-process-tree" is not compatible with this node version and must be compiled against a matching electron version using electron-rebuild`);
10
- }
11
- throw new VError(error, `Failed to load windows process tree`);
12
- }
13
- };
@@ -1,10 +0,0 @@
1
- import * as Character from '../Character/Character.js';
2
- export const parseMemory = (content) => {
3
- const trimmedContent = content.trim();
4
- const numberBlocks = trimmedContent.split(Character.Space);
5
- const pageSize = 4096;
6
- const rss = Number.parseInt(numberBlocks[1]) * pageSize;
7
- const shared = Number.parseInt(numberBlocks[2]) * pageSize;
8
- const memory = rss - shared;
9
- return memory;
10
- };