@lvce-editor/shared-process 0.7.11 → 0.8.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 (27) hide show
  1. package/config/defaultSettings.json +2 -0
  2. package/extensions/builtin.language-basics-elm/src/tokenizeElm.js +276 -6
  3. package/extensions/builtin.theme-atom-one-dark/README.md +10 -0
  4. package/extensions/builtin.theme-atom-one-dark/color-theme.json +154 -0
  5. package/extensions/builtin.theme-atom-one-dark/extension.json +12 -0
  6. package/extensions/builtin.theme-ayu/README.md +10 -0
  7. package/extensions/builtin.theme-ayu/color-theme.json +174 -0
  8. package/extensions/builtin.theme-ayu/extension.json +12 -0
  9. package/extensions/builtin.theme-cobalt2/README.md +18 -0
  10. package/extensions/builtin.theme-cobalt2/color-theme.json +135 -0
  11. package/extensions/builtin.theme-cobalt2/extension.json +12 -0
  12. package/extensions/builtin.theme-high-contrast/README.md +9 -0
  13. package/extensions/builtin.theme-high-contrast/color-theme.json +86 -0
  14. package/extensions/builtin.theme-high-contrast/extension.json +11 -0
  15. package/extensions/builtin.theme-monokai/README.md +10 -0
  16. package/extensions/builtin.theme-monokai/color-theme.json +121 -0
  17. package/extensions/builtin.theme-monokai/extension.json +11 -0
  18. package/extensions/builtin.theme-palenight/README.md +10 -0
  19. package/extensions/builtin.theme-palenight/color-theme.json +161 -0
  20. package/extensions/builtin.theme-palenight/extension.json +12 -0
  21. package/extensions/builtin.theme-slime/README.md +1 -1
  22. package/package.json +3 -3
  23. package/src/parts/ExtensionManagement/ExtensionManagement.ipc.js +1 -0
  24. package/src/parts/ExtensionManagement/ExtensionManagementColorTheme.js +38 -12
  25. package/src/parts/FileSystemWatch/FileSystemWatch.js +6 -0
  26. package/src/parts/ModuleMap/ModuleMap.js +1 -0
  27. package/src/parts/RequiresSocket/RequiresSocket.js +1 -0
@@ -3,11 +3,12 @@ import * as Error from '../Error/Error.js'
3
3
  import * as ReadJson from '../JsonFile/JsonFile.js'
4
4
  import * as Path from '../Path/Path.js'
5
5
  import * as ExtensionManagement from './ExtensionManagement.js'
6
+ import * as FileSystemWatch from '../FileSystemWatch/FileSystemWatch.js'
6
7
 
7
8
  // TODO test this function
8
9
  // TODO very similar with getIconTheme
9
- export const getColorThemeJson = async (colorThemeId) => {
10
- const extensions = await ExtensionManagement.getExtensions()
10
+
11
+ const getColorThemePath = async (extensions, colorThemeId) => {
11
12
  for (const extension of extensions) {
12
13
  if (!extension.colorThemes) {
13
14
  continue
@@ -17,18 +18,27 @@ export const getColorThemeJson = async (colorThemeId) => {
17
18
  continue
18
19
  }
19
20
  const absolutePath = Path.join(extension.path, colorTheme.path)
20
- try {
21
- const json = await ReadJson.readJson(absolutePath)
22
- return json
23
- } catch (error) {
24
- throw new VError(error, `Failed to load color theme "${colorThemeId}"`)
25
- }
21
+ return absolutePath
26
22
  }
27
23
  }
28
- throw new Error.OperationalError({
29
- code: 'E_COLOR_THEME_NOT_FOUND',
30
- message: `Color theme "${colorThemeId}" not found in extensions folder`,
31
- })
24
+ return ''
25
+ }
26
+
27
+ export const getColorThemeJson = async (colorThemeId) => {
28
+ const extensions = await ExtensionManagement.getExtensions()
29
+ const colorThemePath = await getColorThemePath(extensions, colorThemeId)
30
+ if (!colorThemePath) {
31
+ throw new Error.OperationalError({
32
+ code: 'E_COLOR_THEME_NOT_FOUND',
33
+ message: `Color theme "${colorThemeId}" not found in extensions folder`,
34
+ })
35
+ }
36
+ try {
37
+ const json = await ReadJson.readJson(colorThemePath)
38
+ return json
39
+ } catch (error) {
40
+ throw new VError(error, `Failed to load color theme "${colorThemeId}"`)
41
+ }
32
42
  }
33
43
 
34
44
  const getColorThemeInfo = (extension) => {
@@ -56,3 +66,19 @@ export const getColorThemes = async () => {
56
66
  const colorThemes = extensions.flatMap(getColorThemeInfo)
57
67
  return colorThemes
58
68
  }
69
+
70
+ export const watch = async (socket, colorThemeId) => {
71
+ // console.log({ socket, colorThemeId })
72
+ const extensions = await ExtensionManagement.getExtensions()
73
+ const colorThemePath = await getColorThemePath(extensions, colorThemeId)
74
+ const verbose = process.argv.includes('--verbose')
75
+ if (verbose) {
76
+ console.info(
77
+ `[shared-process] starting to watch color theme ${colorThemeId} at ${colorThemePath}`
78
+ )
79
+ }
80
+ const watcher = FileSystemWatch.watchFile(colorThemePath)
81
+ for await (const event of watcher) {
82
+ socket.send({ jsonrpc: '2.0', method: 'ColorTheme.reload', params: [] })
83
+ }
84
+ }
@@ -0,0 +1,6 @@
1
+ import * as fs from 'node:fs/promises'
2
+
3
+ export const watchFile = (path) => {
4
+ const watcher = fs.watch(path)
5
+ return watcher
6
+ }
@@ -66,6 +66,7 @@ export const getModuleId = (commandId) => {
66
66
  case 'ExtensionHost.getIconThemeJson':
67
67
  case 'ExtensionHost.getLanguageConfiguration':
68
68
  case 'ExtensionHost.getLanguages':
69
+ case 'ExtensionHost.watchColorTheme':
69
70
  case 'ExtensionManagement.disable':
70
71
  case 'ExtensionManagement.enable':
71
72
  case 'ExtensionManagement.getAllExtensions':
@@ -5,6 +5,7 @@ const METHODS_THAT_REQUIRE_SOCKET = new Set([
5
5
  'OutputChannel.open',
6
6
  'ExtensionHost.start',
7
7
  'ExtensionHost.send',
8
+ 'ExtensionHost.watchColorTheme',
8
9
  ])
9
10
 
10
11
  export const requiresSocket = (method) => {