@lvce-editor/shared-process 0.17.5 → 0.17.7

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 (45) hide show
  1. package/package.json +6 -6
  2. package/src/parts/AutoUpdateType/AutoUpdateType.js +2 -1
  3. package/src/parts/AutoUpdater/AutoUpdater.js +3 -0
  4. package/src/parts/CommandNotFoundError/CommandNotFoundError.js +1 -1
  5. package/src/parts/Crash/Crash.ipc.js +3 -0
  6. package/src/parts/Crash/Crash.js +5 -0
  7. package/src/parts/DesktopCapturer/DesktopCapturer.ipc.js +7 -0
  8. package/src/parts/DesktopCapturer/DesktopCapturer.js +5 -0
  9. package/src/parts/ElectronApplicationMenu/ElectronApplicationMenu.ipc.js +7 -0
  10. package/src/parts/ElectronApplicationMenu/ElectronApplicationMenu.js +5 -0
  11. package/src/parts/ElectronBrowserView/ElectronBrowserView.ipc.js +8 -0
  12. package/src/parts/ElectronBrowserView/ElectronBrowserView.js +9 -0
  13. package/src/parts/ElectronClipBoard/ElectronClipBoard.ipc.js +7 -0
  14. package/src/parts/ElectronClipBoard/ElectronClipBoard.js +5 -0
  15. package/src/parts/ElectronContentTracing/ElectronContentTracing.js +9 -0
  16. package/src/parts/ElectronDialog/ElectronDialog.ipc.js +8 -0
  17. package/src/parts/ElectronDialog/ElectronDialog.js +9 -0
  18. package/src/parts/ElectronNetLog/ElectronNetLog.ipc.js +8 -0
  19. package/src/parts/ElectronNetLog/ElectronNetLog.js +12 -0
  20. package/src/parts/ElectronWindowAbout/ElectronWindowAbout.ipc.js +7 -0
  21. package/src/parts/ElectronWindowAbout/ElectronWindowAbout.js +5 -0
  22. package/src/parts/Exec/Exec.js +4 -0
  23. package/src/parts/Exit/Exit.ipc.js +7 -0
  24. package/src/parts/Exit/Exit.js +6 -0
  25. package/src/parts/GetAccurateMemoryUsage/GetAccurateMemoryUsage.js +2 -12
  26. package/src/parts/Module/Module.js +26 -2
  27. package/src/parts/ModuleId/ModuleId.js +55 -42
  28. package/src/parts/ModuleMap/ModuleMap.js +56 -21
  29. package/src/parts/OpenExternal/OpenExternal.ipc.js +8 -0
  30. package/src/parts/OpenExternal/OpenExternal.js +9 -0
  31. package/src/parts/Os/Os.ipc.js +7 -0
  32. package/src/parts/Os/Os.js +5 -0
  33. package/src/parts/ParseMemory/ParseMemory.js +11 -0
  34. package/src/parts/Path/Path.js +0 -8
  35. package/src/parts/Platform/Platform.ipc.js +2 -1
  36. package/src/parts/Platform/Platform.js +9 -3
  37. package/src/parts/PrettyError/PrettyError.js +1 -29
  38. package/src/parts/Process/Process.ipc.js +1 -0
  39. package/src/parts/Process/Process.js +4 -0
  40. package/src/parts/ProcessId/ProcessId.ipc.js +8 -0
  41. package/src/parts/ProcessId/ProcessId.js +7 -0
  42. package/src/parts/WaitForProcessToExit/WaitForProcessToExit.js +2 -2
  43. package/src/sharedProcessMain.js +2 -0
  44. /package/src/parts/{Window → ElectronWindow}/ElectronWindow.ipc.js +0 -0
  45. /package/src/parts/{Window → ElectronWindow}/ElectronWindow.js +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/shared-process",
3
- "version": "0.17.5",
3
+ "version": "0.17.7",
4
4
  "description": "Utility package for @lvce-editor/server",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -17,12 +17,12 @@
17
17
  },
18
18
  "dependencies": {
19
19
  "@babel/code-frame": "^7.22.10",
20
- "@lvce-editor/extension-host": "0.17.5",
21
- "@lvce-editor/extension-host-helper-process": "0.17.5",
22
- "@lvce-editor/pretty-error": "^1.0.0",
23
- "@lvce-editor/pty-host": "0.17.5",
20
+ "@lvce-editor/extension-host": "0.17.7",
21
+ "@lvce-editor/extension-host-helper-process": "0.17.7",
22
+ "@lvce-editor/pretty-error": "^1.1.0",
23
+ "@lvce-editor/pty-host": "0.17.7",
24
24
  "debug": "^4.3.4",
25
- "execa": "^7.2.0",
25
+ "execa": "^8.0.0",
26
26
  "exit-hook": "^3.2.0",
27
27
  "got": "^13.0.0",
28
28
  "is-object": "^1.0.2",
@@ -1,3 +1,4 @@
1
1
  export const AppImage = 'AppImage'
2
- export const WindowsNsis = 'WindowsNsis'
2
+ export const Deb = 'Deb'
3
3
  export const None = 'None'
4
+ export const WindowsNsis = 'WindowsNsis'
@@ -6,6 +6,9 @@ import { VError } from '../VError/VError.js'
6
6
 
7
7
  export const getAutoUpdateType = async () => {
8
8
  try {
9
+ if (Platform.isDeb) {
10
+ return AutoUpdateType.Deb
11
+ }
9
12
  if (Platform.isWindows) {
10
13
  return AutoUpdateType.WindowsNsis
11
14
  }
@@ -3,7 +3,7 @@ import * as ProcessDisplayName from '../ProcessDisplayName/ProcessDisplayName.js
3
3
 
4
4
  export class CommandNotFoundError extends Error {
5
5
  constructor(id) {
6
- super(`command ${id} not found in ${ProcessDisplayName.processDisplayName}`)
6
+ super(`Command ${id} not found in ${ProcessDisplayName.processDisplayName}`)
7
7
  this.name = 'CommandNotFoundError'
8
8
  this.code = ErrorCodes.E_COMMAND_NOT_FOUND
9
9
  }
@@ -1,5 +1,8 @@
1
1
  import * as Crash from './Crash.js'
2
2
 
3
+ export const name = 'Crash'
4
+
3
5
  export const Commands = {
4
6
  crashSharedProcess: Crash.crashSharedProcess,
7
+ crashMainProcess: Crash.crashMainProcess,
5
8
  }
@@ -1,4 +1,5 @@
1
1
  import * as Timeout from '../Timeout/Timeout.js'
2
+ import * as ParentIpc from '../ParentIpc/ParentIpc.js'
2
3
 
3
4
  const handleTimeout = () => {
4
5
  throw new Error('oops')
@@ -7,3 +8,7 @@ const handleTimeout = () => {
7
8
  export const crashSharedProcess = () => {
8
9
  Timeout.setTimeout(handleTimeout, 0)
9
10
  }
11
+
12
+ export const crashMainProcess = () => {
13
+ return ParentIpc.invoke('Crash.crashMainProcess')
14
+ }
@@ -0,0 +1,7 @@
1
+ import * as DesktopCapturer from './DesktopCapturer.js'
2
+
3
+ export const name = 'DesktopCapturer'
4
+
5
+ export const Commands = {
6
+ getSources: DesktopCapturer.getSources,
7
+ }
@@ -0,0 +1,5 @@
1
+ import * as ParentIpc from '../ParentIpc/ParentIpc.js'
2
+
3
+ export const getSources = (options) => {
4
+ return ParentIpc.invoke('DesktopCapturer.getSources', options)
5
+ }
@@ -0,0 +1,7 @@
1
+ import * as ElectronApplicationMenu from './ElectronApplicationMenu.js'
2
+
3
+ export const name = 'ElectronApplicationMenu'
4
+
5
+ export const Commands = {
6
+ setItems: ElectronApplicationMenu.setItems,
7
+ }
@@ -0,0 +1,5 @@
1
+ import * as ParentIpc from '../ParentIpc/ParentIpc.js'
2
+
3
+ export const setItems = (items) => {
4
+ return ParentIpc.invoke('ElectronApplicationMenu.setItems', items)
5
+ }
@@ -0,0 +1,8 @@
1
+ import * as ElectronBrowserView from './ElectronBrowserView.js'
2
+
3
+ export const name = 'ElectronBrowserView'
4
+
5
+ export const Commands = {
6
+ createBrowserView: ElectronBrowserView.createBrowserView,
7
+ disposeBrowserView: ElectronBrowserView.disposeBrowserView,
8
+ }
@@ -0,0 +1,9 @@
1
+ import * as ParentIpc from '../ParentIpc/ParentIpc.js'
2
+
3
+ export const createBrowserView = (restoreId, fallthroughKeyBindings) => {
4
+ return ParentIpc.invoke('ElectronBrowserView.createBrowserView', restoreId, fallthroughKeyBindings)
5
+ }
6
+
7
+ export const disposeBrowserView = (id) => {
8
+ return ParentIpc.invoke('ElectronBrowserView.disposeBrowserView', id)
9
+ }
@@ -0,0 +1,7 @@
1
+ import * as ElectronClipBoard from './ElectronClipBoard.js'
2
+
3
+ export const name = 'ElectronClipBoard'
4
+
5
+ export const Commands = {
6
+ writeText: ElectronClipBoard.writeText,
7
+ }
@@ -0,0 +1,5 @@
1
+ import * as ParentIpc from '../ParentIpc/ParentIpc.js'
2
+
3
+ export const writeText = (text) => {
4
+ return ParentIpc.invoke('ElectronClipBoard.writeText', text)
5
+ }
@@ -0,0 +1,9 @@
1
+ import * as ParentIpc from '../ParentIpc/ParentIpc.js'
2
+
3
+ export const startRecording = (options) => {
4
+ return ParentIpc.invoke('ElectronContentTracing.startRecording', options)
5
+ }
6
+
7
+ export const stopRecording = () => {
8
+ return ParentIpc.invoke('ElectronContentTracing.stopRecording')
9
+ }
@@ -0,0 +1,8 @@
1
+ import * as ElectronDialog from './ElectronDialog.js'
2
+
3
+ export const name = 'ElectronDialog'
4
+
5
+ export const Commands = {
6
+ showMessageBox: ElectronDialog.showMessageBox,
7
+ showOpenDialog: ElectronDialog.showOpenDialog,
8
+ }
@@ -0,0 +1,9 @@
1
+ import * as ParentIpc from '../ParentIpc/ParentIpc.js'
2
+
3
+ export const showOpenDialog = (title, properties) => {
4
+ return ParentIpc.invoke('ELectronDialog.showOpenDialog', title, properties)
5
+ }
6
+
7
+ export const showMessageBox = (options) => {
8
+ return ParentIpc.invoke('ElectronDialog.showMessageBox', options)
9
+ }
@@ -0,0 +1,8 @@
1
+ import * as ElectronNetLog from './ElectronNetLog.js'
2
+
3
+ export const name = 'ElectronNetLog'
4
+
5
+ export const Commands = {
6
+ startLogging: ElectronNetLog.startLogging,
7
+ stopLogging: ElectronNetLog.stopLogging,
8
+ }
@@ -0,0 +1,12 @@
1
+ import * as ParentIpc from '../ParentIpc/ParentIpc.js'
2
+
3
+ /**
4
+ * @param {string} path
5
+ */
6
+ export const startLogging = (path) => {
7
+ return ParentIpc.invoke('ElectronNetLog.startLogging', path)
8
+ }
9
+
10
+ export const stopLogging = () => {
11
+ return ParentIpc.invoke('ElectronNetLog.stopLogging')
12
+ }
@@ -0,0 +1,7 @@
1
+ import * as ElectronWindowAbout from './ElectronWindowAbout.js'
2
+
3
+ export const name = 'ElectronWindowAbout'
4
+
5
+ export const Commands = {
6
+ open: ElectronWindowAbout.open,
7
+ }
@@ -0,0 +1,5 @@
1
+ import * as ParentIpc from '../ParentIpc/ParentIpc.js'
2
+
3
+ export const open = () => {
4
+ return ParentIpc.invoke('ElectronWindowAbout.open')
5
+ }
@@ -1,3 +1,4 @@
1
+ import * as Assert from '../Assert/Assert.js'
1
2
  import { execa } from 'execa'
2
3
 
3
4
  /**
@@ -8,6 +9,9 @@ import { execa } from 'execa'
8
9
  * @returns
9
10
  */
10
11
  export const exec = async (command, args, options) => {
12
+ Assert.string(command)
13
+ Assert.array(args)
14
+ Assert.object(options)
11
15
  const { stdout, stderr } = await execa(command, args, options)
12
16
  return {
13
17
  stdout,
@@ -0,0 +1,7 @@
1
+ import * as Exit from './Exit.js'
2
+
3
+ export const name = 'Exit'
4
+
5
+ export const Commands = {
6
+ exit: Exit.exit,
7
+ }
@@ -0,0 +1,6 @@
1
+ import * as ParentIpc from '../ParentIpc/ParentIpc.js'
2
+
3
+ export const exit = () => {
4
+ // TODO rename to Exit.exit
5
+ return ParentIpc.invoke('App.exit')
6
+ }
@@ -1,10 +1,10 @@
1
1
  import { readFile } from 'node:fs/promises'
2
2
  import { join } from 'node:path'
3
3
  import * as Assert from '../Assert/Assert.js'
4
- import * as Character from '../Character/Character.js'
5
4
  import * as EncodingType from '../EncodingType/EncodingType.js'
6
5
  import * as IsEnoentError from '../IsEnoentError/IsEnoentError.js'
7
6
  import * as IsEsrchError from '../IsEsrchError/IsEsrchError.js'
7
+ import * as ParseMemory from '../ParseMemory/ParseMemory.js'
8
8
  import { VError } from '../VError/VError.js'
9
9
 
10
10
  const getContent = async (pid) => {
@@ -20,16 +20,6 @@ const getContent = async (pid) => {
20
20
  }
21
21
  }
22
22
 
23
- const parseMemory = (content) => {
24
- const trimmedContent = content.trim()
25
- const numberBlocks = trimmedContent.split(Character.Space)
26
- const pageSize = 4096
27
- const rss = Number.parseInt(numberBlocks[1]) * pageSize
28
- const shared = Number.parseInt(numberBlocks[2]) * pageSize
29
- const memory = rss - shared
30
- return memory
31
- }
32
-
33
23
  export const getAccurateMemoryUsage = async (pid) => {
34
24
  try {
35
25
  Assert.number(pid)
@@ -37,7 +27,7 @@ export const getAccurateMemoryUsage = async (pid) => {
37
27
  if (!content) {
38
28
  return -1
39
29
  }
40
- const memory = parseMemory(content)
30
+ const memory = ParseMemory.parseMemory(content)
41
31
  return memory
42
32
  } catch (error) {
43
33
  throw new VError(error, 'Failed to get accurate memory usage')
@@ -16,18 +16,38 @@ export const load = (moduleId) => {
16
16
  return import('../ChromeExtension/ChromeExtension.ipc.js')
17
17
  case ModuleId.ClipBoard:
18
18
  return import('../ClipBoard/ClipBoard.ipc.js')
19
+ case ModuleId.Crash:
20
+ return import('../Crash/Crash.ipc.js')
21
+ case ModuleId.DesktopCapturer:
22
+ return import('../DesktopCapturer/DesktopCapturer.ipc.js')
19
23
  case ModuleId.Developer:
20
24
  return import('../Developer/Developer.ipc.js')
21
25
  case ModuleId.Download:
22
26
  return import('../Download/Download.ipc.js')
27
+ case ModuleId.ElectronApplicationMenu:
28
+ return import('../ElectronApplicationMenu/ElectronApplicationMenu.ipc.js')
29
+ case ModuleId.ElectronBrowserView:
30
+ return import('../ElectronBrowserView/ElectronBrowserView.ipc.js')
31
+ case ModuleId.ElectronContentTracing:
32
+ return import('../ElectronContentTracing/ElectronContentTracing.js')
23
33
  case ModuleId.ElectronContextMenu:
24
34
  return import('../ElectronContextMenu/ElectronContextMenu.ipc.js')
35
+ case ModuleId.ElectronDialog:
36
+ return import('../ElectronDialog/ElectronDialog.ipc.js')
25
37
  case ModuleId.ElectronInitialize:
26
38
  return import('../ElectronInitialize/ElectronInitialize.ipc.js')
39
+ case ModuleId.ElectronNetLog:
40
+ return import('../ElectronNetLog/ElectronNetLog.ipc.js')
27
41
  case ModuleId.ElectronProcess:
28
42
  return import('../ElectronProcess/ElectronProcess.ipc.js')
29
43
  case ModuleId.ElectronSafeStorage:
30
44
  return import('../ElectronSafeStorage/ElectronSafeStorage.ipc.js')
45
+ case ModuleId.Window:
46
+ return import('../ElectronWindow/ElectronWindow.ipc.js')
47
+ case ModuleId.ElectronWindowAbout:
48
+ return import('../ElectronWindowAbout/ElectronWindowAbout.ipc.js')
49
+ case ModuleId.Exit:
50
+ return import('../Exit/Exit.ipc.js')
31
51
  case ModuleId.ExtensionHost:
32
52
  return import('../ExtensionHost/ExtensionHost.ipc.js')
33
53
  case ModuleId.ExtensionManagement:
@@ -54,6 +74,8 @@ export const load = (moduleId) => {
54
74
  return import('../IsAutoUpdateSupported/IsAutoUpdateSupported.ipc.js')
55
75
  case ModuleId.ListProcessesWithMemoryUsage:
56
76
  return import('../ListProcessesWithMemoryUsage/ListProcessesWithMemoryUsage.ipc.js')
77
+ case ModuleId.OpenExternal:
78
+ return import('../OpenExternal/OpenExternal.ipc.js')
57
79
  case ModuleId.OpenNativeFolder:
58
80
  return import('../OpenNativeFolder/OpenNativeFolder.ipc.js')
59
81
  case ModuleId.OutputChannel:
@@ -66,6 +88,8 @@ export const load = (moduleId) => {
66
88
  return import('../Preferences/Preferences.ipc.js')
67
89
  case ModuleId.Process:
68
90
  return import('../Process/Process.ipc.js')
91
+ case ModuleId.ProcessId:
92
+ return import('../ProcessId/ProcessId.ipc.js')
69
93
  case ModuleId.RebuildNodePty:
70
94
  return import('../RebuildNodePty/RebuildNodePty.ipc.js')
71
95
  case ModuleId.RecentlyOpened:
@@ -80,10 +104,10 @@ export const load = (moduleId) => {
80
104
  return import('../TextSearch/TextSearch.ipc.js')
81
105
  case ModuleId.WebSocketServer:
82
106
  return import('../WebSocketServer/WebSocketServer.ipc.js')
83
- case ModuleId.Window:
84
- return import('../Window/ElectronWindow.ipc.js')
85
107
  case ModuleId.Workspace:
86
108
  return import('../Workspace/Workspace.ipc.js')
109
+ case ModuleId.Os:
110
+ return import('../Os/Os.ipc.js')
87
111
  default:
88
112
  throw new Error(`module ${moduleId} not found`)
89
113
  }
@@ -1,42 +1,55 @@
1
- export const ClipBoard = 1
2
- export const Developer = 2
3
- export const ExtensionHost = 3
4
- export const ExtensionManagement = 4
5
- export const FileSystem = 5
6
- export const OpenNativeFolder = 6
7
- export const OutputChannel = 7
8
- export const Platform = 8
9
- export const Preferences = 9
10
- export const RecentlyOpened = 10
11
- export const Search = 11
12
- export const SearchFile = 12
13
- export const Terminal = 13
14
- export const TextDocument = 14
15
- export const WebSocketServer = 15
16
- export const Workspace = 16
17
- export const ChromeExtension = 17
18
- export const Download = 18
19
- export const GitLsFiles = 19
20
- export const BulkReplacement = 20
21
- export const InstallExtension = 21
22
- export const AutoUpdater = 22
23
- export const IsAutoUpdateSupported = 23
24
- export const AutoUpdaterAppImage = 24
25
- export const AutoUpdaterWindowsNsis = 25
26
- export const RebuildNodePty = 26
27
- export const ElectronSafeStorage = 80
28
- export const ElectronInitialize = 27
29
- export const HandleWebSocket = 28
30
- export const Process = 29
31
- export const AttachDebugger = 30
32
- export const HandleElectronMessagePort = 31
33
- export const ElectronProcess = 70
34
- export const HandleNodeMessagePort = 32
35
- export const GetTerminalSpawnOptions = 33
36
- export const HandleCliArgs = 34
37
- export const ListProcessesWithMemoryUsage = 35
38
- export const ElectronContextMenu = 40
39
- export const IncrementalTextSearch = 36
40
- export const Performance = 37
41
- export const Window = 38
42
- export const PassThroughElectronMessagePort = 39
1
+ export const Crash = 1
2
+ export const ClipBoard = 2
3
+ export const Developer = 3
4
+ export const ElectronWindowAbout = 4
5
+ export const ExtensionHost = 5
6
+ export const ExtensionManagement = 6
7
+ export const FileSystem = 7
8
+ export const ElectronApplicationMenu = 8
9
+ export const OpenNativeFolder = 9
10
+ export const ElectronDialog = 10
11
+ export const OutputChannel = 11
12
+ export const Platform = 12
13
+ export const ElectronClipBoard = 13
14
+ export const Preferences = 14
15
+ export const RecentlyOpened = 15
16
+ export const Search = 16
17
+ export const SearchFile = 17
18
+ export const Terminal = 18
19
+ export const ProcessId = 19
20
+ export const TextDocument = 20
21
+ export const WebSocketServer = 21
22
+ export const Workspace = 22
23
+ export const ChromeExtension = 23
24
+ export const Download = 24
25
+ export const GitLsFiles = 25
26
+ export const BulkReplacement = 26
27
+ export const InstallExtension = 27
28
+ export const AutoUpdater = 28
29
+ export const IsAutoUpdateSupported = 29
30
+ export const AutoUpdaterAppImage = 30
31
+ export const AutoUpdaterWindowsNsis = 31
32
+ export const RebuildNodePty = 32
33
+ export const ElectronNetLog = 33
34
+ export const OpenExternal = 34
35
+ export const ElectronSafeStorage = 35
36
+ export const ElectronInitialize = 36
37
+ export const HandleWebSocket = 37
38
+ export const Process = 38
39
+ export const AttachDebugger = 39
40
+ export const HandleElectronMessagePort = 40
41
+ export const ElectronProcess = 41
42
+ export const HandleNodeMessagePort = 42
43
+ export const GetTerminalSpawnOptions = 43
44
+ export const HandleCliArgs = 44
45
+ export const ListProcessesWithMemoryUsage = 45
46
+ export const ElectronContextMenu = 46
47
+ export const IncrementalTextSearch = 47
48
+ export const Performance = 48
49
+ export const ElectronBrowserView = 49
50
+ export const Window = 50
51
+ export const PassThroughElectronMessagePort = 51
52
+ export const Exit = 52
53
+ export const DesktopCapturer = 53
54
+ export const ElectronContentTracing = 54
55
+ export const Os = 55
@@ -3,8 +3,6 @@ import * as ModuleId from '../ModuleId/ModuleId.js'
3
3
 
4
4
  export const getModuleId = (commandId) => {
5
5
  switch (commandId) {
6
- case 'PassthroughElectronMessagePort.passThroughElectronMessagePort':
7
- return ModuleId.PassThroughElectronMessagePort
8
6
  case 'AttachDebugger.attachDebugger':
9
7
  return ModuleId.AttachDebugger
10
8
  case 'AutoUpdater.getAutoUpdateType':
@@ -24,10 +22,11 @@ export const getModuleId = (commandId) => {
24
22
  case 'ClipBoard.readFiles':
25
23
  case 'ClipBoard.writeFiles':
26
24
  return ModuleId.ClipBoard
27
- case 'ElectronSafeStorage.encryptString':
28
- case 'ElectronSafeStorage.decryptString':
29
- case 'ElectronSafeStorage.isEncryptionAvailable':
30
- return ModuleId.ElectronSafeStorage
25
+ case 'Crash.crashMainProcess':
26
+ case 'Crash.crashSharedProcess':
27
+ return ModuleId.Crash
28
+ case 'DesktopCapturer.getSources':
29
+ return ModuleId.DesktopCapturer
31
30
  case 'Developer.allocateMemory':
32
31
  case 'Developer.crashSharedProcess':
33
32
  case 'Developer.createHeapSnapshot':
@@ -35,12 +34,39 @@ export const getModuleId = (commandId) => {
35
34
  case 'Developer.sharedProcessMemoryUsage':
36
35
  case 'Developer.sharedProcessStartupPerformance':
37
36
  return ModuleId.Developer
38
- case 'Performance.getNodeStartupTiming':
39
- return ModuleId.Performance
40
37
  case 'Download.download':
41
38
  return ModuleId.Download
39
+ case 'ElectronApplicationMenu.setItems':
40
+ return ModuleId.ElectronApplicationMenu
41
+ case 'ElectronBrowserView.createBrowserView':
42
+ case 'ElectronBrowserView.disposeBrowserView':
43
+ return ModuleId.ElectronBrowserView
44
+ case 'ElectronClipBoard.writeText':
45
+ return ModuleId.ElectronClipBoard
46
+ case 'ElectronContentTracing.startRecording':
47
+ case 'ElectronContentTracing.stopRecording':
48
+ return ModuleId.ElectronContentTracing
49
+ case 'ElectronContextMenu.openContextMenu':
50
+ return ModuleId.ElectronContextMenu
51
+ case 'ElectronDialog.showMessageBox':
52
+ case 'ElectronDialog.showOpenDialog':
53
+ return ModuleId.ElectronDialog
42
54
  case 'ElectronInitialize.electronInitialize':
43
55
  return ModuleId.ElectronInitialize
56
+ case 'ElectronNetLog.startLogging':
57
+ case 'ElectronNetLog.stopLogging':
58
+ return ModuleId.ElectronNetLog
59
+ case 'ElectronProcess.getChromeVersion':
60
+ case 'ElectronProcess.getElectronVersion':
61
+ return ModuleId.ElectronProcess
62
+ case 'ElectronSafeStorage.decryptString':
63
+ case 'ElectronSafeStorage.encryptString':
64
+ case 'ElectronSafeStorage.isEncryptionAvailable':
65
+ return ModuleId.ElectronSafeStorage
66
+ case 'ElectronWindowAbout.open':
67
+ return ModuleId.ElectronWindowAbout
68
+ case 'Exit.exit':
69
+ return ModuleId.Exit
44
70
  case 'ExtensionHost.dispose':
45
71
  case 'ExtensionHost.enableExtension':
46
72
  case 'ExtensionHost.executeCommand':
@@ -136,12 +162,19 @@ export const getModuleId = (commandId) => {
136
162
  return ModuleId.IsAutoUpdateSupported
137
163
  case 'ListProcessesWithMemoryUsage.listProcessesWithMemoryUsage':
138
164
  return ModuleId.ListProcessesWithMemoryUsage
165
+ case 'OpenExternal.openExternal':
166
+ case 'OpenExternal.showItemInFolder':
167
+ return ModuleId.OpenExternal
139
168
  case 'Native.openFolder':
140
169
  case 'OpenNativeFolder.openFolder':
141
170
  return ModuleId.OpenNativeFolder
142
171
  case 'OutputChannel.close':
143
172
  case 'OutputChannel.open':
144
173
  return ModuleId.OutputChannel
174
+ case 'PassthroughElectronMessagePort.passThroughElectronMessagePort':
175
+ return ModuleId.PassThroughElectronMessagePort
176
+ case 'Performance.getNodeStartupTiming':
177
+ return ModuleId.Performance
145
178
  case 'Platform.getAppDir':
146
179
  case 'Platform.getBuiltinExtensionsPath':
147
180
  case 'Platform.getCachedExtensionsPath':
@@ -156,13 +189,14 @@ export const getModuleId = (commandId) => {
156
189
  case 'Platform.getHomeDir':
157
190
  case 'Platform.getLogsDir':
158
191
  case 'Platform.getMarketplaceUrl':
192
+ case 'Platform.getProductNameLong':
159
193
  case 'Platform.getRecentlyOpenedPath':
160
194
  case 'Platform.getTestPath':
161
- case 'Platform.getUserSettingsPath':
162
195
  case 'Platform.getUserKeyBindingsPath':
196
+ case 'Platform.getUserSettingsPath':
163
197
  case 'Platform.getVersion':
164
198
  case 'Platform.setEnvironmentVariables':
165
- case 'Platform.getProductNameLong':
199
+ case 'Platform.getApplicationName':
166
200
  return ModuleId.Platform
167
201
  case 'Preferences.getAll':
168
202
  return ModuleId.Preferences
@@ -170,7 +204,11 @@ export const getModuleId = (commandId) => {
170
204
  case 'Process.getPid':
171
205
  case 'Process.getV8Version':
172
206
  case 'Process.kill':
207
+ case 'Process.getArch':
173
208
  return ModuleId.Process
209
+ case 'ProcessId.getMainProcessId':
210
+ case 'ProcessId.getSharedProcessId':
211
+ return ModuleId.ProcessId
174
212
  case 'RebuildNodePty.rebuildNodePty':
175
213
  return ModuleId.RebuildNodePty
176
214
  case 'RecentlyOpened.addPath':
@@ -184,25 +222,22 @@ export const getModuleId = (commandId) => {
184
222
  case 'Terminal.resize':
185
223
  case 'Terminal.write':
186
224
  return ModuleId.Terminal
187
- case 'ElectronProcess.getChromeVersion':
188
- case 'ElectronProcess.getElectronVersion':
189
- return ModuleId.ElectronProcess
190
225
  case 4820:
191
226
  return ModuleId.TextDocument
192
- case 'ElectronContextMenu.openContextMenu':
193
- return ModuleId.ElectronContextMenu
194
227
  case 'WebSocketServer.handleUpgrade':
195
228
  return ModuleId.WebSocketServer
196
- case 'Workspace.getHomeDir':
197
- case 'Workspace.resolveRoot':
198
- return ModuleId.Workspace
199
- case 'ElectronWindow.minimize':
229
+ case 'ElectronWindow.close':
200
230
  case 'ElectronWindow.maximize':
231
+ case 'ElectronWindow.minimize':
232
+ case 'ElectronWindow.reload':
201
233
  case 'ElectronWindow.toggleDevtools':
202
234
  case 'ElectronWindow.unmaximize':
203
- case 'ElectronWindow.close':
204
- case 'ElectronWindow.reload':
205
235
  return ModuleId.Window
236
+ case 'Workspace.getHomeDir':
237
+ case 'Workspace.resolveRoot':
238
+ return ModuleId.Workspace
239
+ case 'Os.getTmpDir':
240
+ return ModuleId.Os
206
241
  default:
207
242
  throw new CommandNotFoundError(commandId)
208
243
  }
@@ -0,0 +1,8 @@
1
+ import * as OpenExternal from './OpenExternal.js'
2
+
3
+ export const name = 'OpenExternal'
4
+
5
+ export const Commands = {
6
+ openExternal: OpenExternal.openExternal,
7
+ showItemInFolder: OpenExternal.showItemInFolder,
8
+ }
@@ -0,0 +1,9 @@
1
+ import * as ParentIpc from '../ParentIpc/ParentIpc.js'
2
+
3
+ export const showItemInFolder = (fullPath) => {
4
+ return ParentIpc.invoke('ElectronShell.showItemInFolder', fullPath)
5
+ }
6
+
7
+ export const openExternal = (url) => {
8
+ return ParentIpc.invoke('ElectronShell.openExternal', url)
9
+ }
@@ -0,0 +1,7 @@
1
+ import * as Os from './Os.js'
2
+
3
+ export const name = 'Os'
4
+
5
+ export const Commands = {
6
+ getTmpDir: Os.getTmpDir,
7
+ }
@@ -0,0 +1,5 @@
1
+ import { tmpdir } from 'node:os'
2
+
3
+ export const getTmpDir = () => {
4
+ return tmpdir()
5
+ }
@@ -0,0 +1,11 @@
1
+ import * as Character from '../Character/Character.js'
2
+
3
+ export const parseMemory = (content) => {
4
+ const trimmedContent = content.trim()
5
+ const numberBlocks = trimmedContent.split(Character.Space)
6
+ const pageSize = 4096
7
+ const rss = Number.parseInt(numberBlocks[1]) * pageSize
8
+ const shared = Number.parseInt(numberBlocks[2]) * pageSize
9
+ const memory = rss - shared
10
+ return memory
11
+ }
@@ -1,13 +1,5 @@
1
1
  import * as NodePath from 'node:path'
2
2
 
3
- export const getHomeDir = () => {}
4
-
5
- export const getTmpDir = () => {}
6
-
7
- export const getBuiltinExtensionDir = () => {}
8
-
9
- export const getMarketplaceExtensionDir = () => {}
10
-
11
3
  export const join = (...parts) => {
12
4
  return NodePath.join(...parts)
13
5
  }
@@ -7,6 +7,7 @@ export const Commands = {
7
7
  getBuiltinExtensionsPath: Platform.getBuiltinExtensionsPath,
8
8
  getCachedExtensionsPath: Platform.getCachedExtensionsPath,
9
9
  getCacheDir: Platform.getCacheDir,
10
+ getApplicationName: Platform.getApplicationName,
10
11
  getCommit: Platform.getCommit,
11
12
  getConfigDir: Platform.getConfigDir,
12
13
  getDataDir: Platform.getDataDir,
@@ -18,6 +19,7 @@ export const Commands = {
18
19
  getLogsDir: Platform.getLogsDir,
19
20
  getMarketplaceUrl: Platform.getMarketplaceUrl,
20
21
  getNodePath: Platform.getNodePath,
22
+ getProductNameLong: Platform.getProductNameLong,
21
23
  getRecentlyOpenedPath: Platform.getRecentlyOpenedPath,
22
24
  getTestPath: Platform.getTestPath,
23
25
  getTmpDir: Platform.getTmpDir,
@@ -25,5 +27,4 @@ export const Commands = {
25
27
  getUserSettingsPath: Platform.getUserSettingsPath,
26
28
  getVersion: Platform.getVersion,
27
29
  setEnvironmentVariables: Platform.setEnvironmentVariables,
28
- getProductNameLong: Platform.getProductNameLong,
29
30
  }
@@ -24,6 +24,8 @@ export const homeDir = isWindows ? '' : homedir()
24
24
 
25
25
  export const appDir = Root.root
26
26
 
27
+ export const isDeb = false
28
+
27
29
  export const isAppImage = () => {
28
30
  return Boolean(env.APPIMAGE)
29
31
  }
@@ -161,6 +163,10 @@ export const getRepository = () => {
161
163
  return `lvce-editor/lvce-editor`
162
164
  }
163
165
 
166
+ export const getApplicationName = () => {
167
+ return applicationName
168
+ }
169
+
164
170
  export const getAppImageName = () => {
165
171
  return 'Lvce'
166
172
  }
@@ -169,11 +175,11 @@ export const getSetupName = () => {
169
175
  return 'Lvce-Setup'
170
176
  }
171
177
 
172
- export const version = '0.17.5'
178
+ export const version = '0.17.7'
173
179
 
174
- export const commit = '0138fc9'
180
+ export const commit = '4902c14'
175
181
 
176
- export const date = '2023-08-16T21:34:45.000Z'
182
+ export const date = '2023-08-19T19:23:19.000Z'
177
183
 
178
184
  export const getVersion = () => {
179
185
  return version
@@ -1,29 +1 @@
1
- import { codeFrameColumns } from '@babel/code-frame'
2
- import { LinesAndColumns } from 'lines-and-columns'
3
- import * as Json from '../Json/Json.js'
4
- export { prepare } from '@lvce-editor/pretty-error'
5
-
6
- const fixBackslashes = (string) => {
7
- return string.replaceAll('\\\\', '\\')
8
- }
9
-
10
- export const prepareJsonError = (json, property, message) => {
11
- const string = fixBackslashes(Json.stringify(json))
12
- const stringifiedPropertyName = `"${property}"`
13
- const index = string.indexOf(stringifiedPropertyName) // TODO this could be wrong in some cases, find a better way
14
- console.log({ string, index })
15
- const jsonError = {
16
- stack: '',
17
- }
18
- if (index !== -1) {
19
- const lines = new LinesAndColumns(string)
20
- const location = lines.locationForIndex(index + stringifiedPropertyName.length + 1)
21
- const codeFrame = codeFrameColumns(string, {
22
- // @ts-ignore
23
- start: { line: location.line + 1, column: location.column + 1 },
24
- })
25
- jsonError.codeFrame = codeFrame
26
- }
27
- // jsonError.stack = `${bottomMessage}\n at ${filePath}`
28
- return jsonError
29
- }
1
+ export { prepare, prepareJsonError } from '@lvce-editor/pretty-error'
@@ -9,4 +9,5 @@ export const Commands = {
9
9
  getPid: Process.getPid,
10
10
  getV8Version: Process.getV8Version,
11
11
  kill: Process.kill,
12
+ getArch: Process.getArch,
12
13
  }
@@ -55,3 +55,7 @@ export const getV8Version = () => {
55
55
  export const getNodeVersion = () => {
56
56
  return process.versions.node
57
57
  }
58
+
59
+ export const getArch = () => {
60
+ return process.arch
61
+ }
@@ -0,0 +1,8 @@
1
+ import * as ProcessId from './ProcessId.js'
2
+
3
+ export const name = 'ProcessId'
4
+
5
+ export const Commands = {
6
+ getMainProcessId: ProcessId.getMainProcessId,
7
+ getSharedProcessId: ProcessId.getSharedProcessId,
8
+ }
@@ -0,0 +1,7 @@
1
+ export const getSharedProcessId = () => {
2
+ return process.pid
3
+ }
4
+
5
+ export const getMainProcessId = () => {
6
+ return process.ppid
7
+ }
@@ -1,7 +1,7 @@
1
- import * as ProcessExitEventType from '../ProcessExitEventType/ProcessExitEventType.js'
2
1
  import * as GetFirstEvent from '../GetFirstEvent/GetFirstEvent.js'
2
+ import * as ProcessExitEventType from '../ProcessExitEventType/ProcessExitEventType.js'
3
3
 
4
- export const waitForProcessToExit = async (childProcess) => {
4
+ export const waitForProcessToExit = (childProcess) => {
5
5
  return GetFirstEvent.getFirstEvent(childProcess, {
6
6
  error: ProcessExitEventType.Error,
7
7
  close: ProcessExitEventType.Exit,
@@ -1,3 +1,4 @@
1
+ import { setPriority } from 'node:os'
1
2
  import * as Command from './parts/Command/Command.js'
2
3
  import * as Module from './parts/Module/Module.js'
3
4
  import * as ParentIpc from './parts/ParentIpc/ParentIpc.js'
@@ -10,6 +11,7 @@ const main = async () => {
10
11
  process.on(Signal.SIGTERM, ProcessListeners.handleSigTerm)
11
12
  process.on('uncaughtExceptionMonitor', ProcessListeners.handleUncaughtExceptionMonitor)
12
13
  await ParentIpc.listen()
14
+ setPriority(process.pid, 19)
13
15
  }
14
16
 
15
17
  main()