@lvce-editor/shared-process 0.94.8 → 0.94.10

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.94.8",
3
+ "version": "0.94.10",
4
4
  "main": "index.js",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -19,28 +19,28 @@
19
19
  "dependencies": {
20
20
  "@lvce-editor/assert": "1.7.0",
21
21
  "@lvce-editor/auth-process": "1.12.0",
22
- "@lvce-editor/extension-host-helper-process": "0.94.8",
22
+ "@lvce-editor/extension-host-helper-process": "0.94.10",
23
23
  "@lvce-editor/ipc": "16.6.0",
24
24
  "@lvce-editor/json-rpc": "8.5.0",
25
25
  "@lvce-editor/jsonc-parser": "1.5.0",
26
26
  "@lvce-editor/pretty-error": "2.0.0",
27
- "@lvce-editor/process-explorer": "3.12.0",
28
- "@lvce-editor/rpc-registry": "9.42.0",
27
+ "@lvce-editor/process-explorer": "3.12.1",
28
+ "@lvce-editor/rpc-registry": "9.43.0",
29
29
  "@lvce-editor/verror": "1.7.0",
30
30
  "is-object": "^1.0.2",
31
31
  "markdown-it": "^14.3.0",
32
32
  "xdg-basedir": "^5.1.0"
33
33
  },
34
34
  "optionalDependencies": {
35
- "@lvce-editor/embeds-process": "4.12.0",
35
+ "@lvce-editor/embeds-process": "4.13.1",
36
36
  "@lvce-editor/file-system-process": "5.7.0",
37
- "@lvce-editor/file-watcher-process": "4.8.0",
37
+ "@lvce-editor/file-watcher-process": "4.9.0",
38
38
  "@lvce-editor/network-process": "5.2.0",
39
39
  "@lvce-editor/preload": "1.5.0",
40
40
  "@lvce-editor/preview-process": "11.0.0",
41
41
  "@lvce-editor/pty-host": "8.4.0",
42
- "@lvce-editor/search-process": "15.2.0",
43
- "@lvce-editor/typescript-compile-process": "5.5.0",
42
+ "@lvce-editor/search-process": "15.3.0",
43
+ "@lvce-editor/typescript-compile-process": "5.6.0",
44
44
  "open": "^11.0.0",
45
45
  "tail": "^2.2.6",
46
46
  "tmp-promise": "^3.0.3",
@@ -3,6 +3,6 @@ import { fileURLToPath } from 'url'
3
3
 
4
4
  export const getBuiltinExtensionsPath = () => {
5
5
  const staticServerPath = fileURLToPath(import.meta.resolve('@lvce-editor/static-server'))
6
- const builtinExtensionsPath = join(staticServerPath, '..', '..', 'static', 'a5f399e', 'extensions')
6
+ const builtinExtensionsPath = join(staticServerPath, '..', '..', 'static', '76f9b17', 'extensions')
7
7
  return builtinExtensionsPath
8
8
  }
@@ -0,0 +1,8 @@
1
+ import * as ChromeCookieImport from './ChromeCookieImport.js'
2
+
3
+ export const name = 'ChromeCookieImport'
4
+
5
+ export const Commands = {
6
+ getInfo: ChromeCookieImport.getInfo,
7
+ importCookies: ChromeCookieImport.importCookies,
8
+ }
@@ -0,0 +1,9 @@
1
+ import * as MainProcess from '../MainProcess/MainProcess.js'
2
+
3
+ export const getInfo = () => {
4
+ return MainProcess.invoke('ChromeCookieImport.getInfo')
5
+ }
6
+
7
+ export const importCookies = () => {
8
+ return MainProcess.invoke('ChromeCookieImport.importCookies')
9
+ }
@@ -12,6 +12,8 @@ export const load = (moduleId) => {
12
12
  return import('../AutoUpdaterWindowsNsis/AutoUpdaterWindowsNsis.ipc.js')
13
13
  case ModuleId.BulkReplacement:
14
14
  return import('../BulkReplacement/BulkReplacement.ipc.js')
15
+ case ModuleId.ChromeCookieImport:
16
+ return import('../ChromeCookieImport/ChromeCookieImport.ipc.js')
15
17
  case ModuleId.ClipBoard:
16
18
  return import('../ClipBoard/ClipBoard.ipc.js')
17
19
  case ModuleId.ContentSecurityPolicy:
@@ -140,6 +142,8 @@ export const load = (moduleId) => {
140
142
  return import('../RecentlyOpened/RecentlyOpened.ipc.js')
141
143
  case ModuleId.Screen:
142
144
  return import('../Screen/Screen.ipc.js')
145
+ case ModuleId.SecretStorage:
146
+ return import('../SecretStorage/SecretStorage.ipc.js')
143
147
  case ModuleId.SendMessagePortToMainProcess:
144
148
  return import('../SendMessagePortToMainProcess/SendMessagePortToMainProcess.ipc.js')
145
149
  case ModuleId.TemporaryMessagePort:
@@ -80,3 +80,5 @@ export const PlatformPaths = 84
80
80
  export const HandleMessagePortForAuthProcess = 86
81
81
  export const LanguageServer = 87
82
82
  export const SendMessagePortToMainProcess = 88
83
+ export const SecretStorage = 89
84
+ export const ChromeCookieImport = 90
@@ -18,6 +18,9 @@ export const getModuleId = (commandId) => {
18
18
  return ModuleId.AutoUpdaterWindowsNsis
19
19
  case 'BulkReplacement.applyBulkReplacement':
20
20
  return ModuleId.BulkReplacement
21
+ case 'ChromeCookieImport.getInfo':
22
+ case 'ChromeCookieImport.importCookies':
23
+ return ModuleId.ChromeCookieImport
21
24
  case 'ChromeExtension.install':
22
25
  case 'ChromeExtension.uninstall':
23
26
  return ModuleId.ChromeExtension
@@ -320,6 +323,10 @@ export const getModuleId = (commandId) => {
320
323
  case 'Screen.getHeight':
321
324
  case 'Screen.getWidth':
322
325
  return ModuleId.Screen
326
+ case 'SecretStorage.delete':
327
+ case 'SecretStorage.get':
328
+ case 'SecretStorage.store':
329
+ return ModuleId.SecretStorage
323
330
  case 'SendMessagePortToMainProcess.sendMessagePortToMainProcess':
324
331
  return ModuleId.SendMessagePortToMainProcess
325
332
  case 'TemporaryMessagePort.getPortTuple2':
@@ -61,11 +61,11 @@ export const getSetupName = () => {
61
61
  return 'Lvce-Setup'
62
62
  }
63
63
 
64
- export const version = '0.94.8'
64
+ export const version = '0.94.10'
65
65
 
66
- export const commit = 'a5f399e'
66
+ export const commit = '76f9b17'
67
67
 
68
- export const date = '2026-07-26T19:09:31.000Z'
68
+ export const date = '2026-07-27T17:58:54.000Z'
69
69
 
70
70
  export const getVersion = () => {
71
71
  return version
@@ -2,5 +2,5 @@ import { join } from 'node:path'
2
2
  import * as Root from '../Root/Root.js'
3
3
 
4
4
  export const getPreloadUrl = () => {
5
- return join(Root.root, 'static', 'a5f399e', 'packages', 'preload', 'dist', 'index.js')
5
+ return join(Root.root, 'static', '76f9b17', 'packages', 'preload', 'dist', 'index.js')
6
6
  }
@@ -0,0 +1,9 @@
1
+ import * as SecretStorage from './SecretStorage.js'
2
+
3
+ export const name = 'SecretStorage'
4
+
5
+ export const Commands = {
6
+ delete: SecretStorage.deleteSecret,
7
+ get: SecretStorage.get,
8
+ store: SecretStorage.store,
9
+ }
@@ -0,0 +1,71 @@
1
+ import * as ElectronSafeStorage from '../ElectronSafeStorage/ElectronSafeStorage.js'
2
+ import { FileNotFoundError } from '../FileNotFoundError/FileNotFoundError.js'
3
+ import * as JsonFile from '../JsonFile/JsonFile.js'
4
+ import * as Path from '../Path/Path.js'
5
+ import * as PlatformPaths from '../PlatformPaths/PlatformPaths.js'
6
+ import * as Queue from '../Queue/Queue.js'
7
+
8
+
9
+
10
+ const queueKey = 'secret-storage'
11
+
12
+ const getStoragePath = () => {
13
+ return Path.join(PlatformPaths.getConfigDir(), 'secrets.json')
14
+ }
15
+
16
+ const readStoredSecrets = async () => {
17
+ try {
18
+ const stored = await JsonFile.readJson(getStoragePath())
19
+ if (!stored || typeof stored !== 'object' || Array.isArray(stored)) {
20
+ return {}
21
+ }
22
+ return stored
23
+ } catch (error) {
24
+ if (error instanceof FileNotFoundError) {
25
+ return {}
26
+ }
27
+ throw error
28
+ }
29
+ }
30
+
31
+ export const get = async (extensionId, key) => {
32
+ const stored = await readStoredSecrets()
33
+ const encrypted = stored[extensionId]?.[key]
34
+ if (typeof encrypted !== 'string') {
35
+ return undefined
36
+ }
37
+ return ElectronSafeStorage.decryptString(encrypted)
38
+ }
39
+
40
+ export const store = async (extensionId, key, value) => {
41
+ await Queue.add(queueKey, async () => {
42
+ const encrypted = await ElectronSafeStorage.encryptString(value)
43
+ const stored = await readStoredSecrets()
44
+ await JsonFile.writeJson(getStoragePath(), {
45
+ ...stored,
46
+ [extensionId]: {
47
+ ...stored[extensionId],
48
+ [key]: encrypted,
49
+ },
50
+ })
51
+ })
52
+ }
53
+
54
+ export const deleteSecret = async (extensionId, key) => {
55
+ await Queue.add(queueKey, async () => {
56
+ const stored = await readStoredSecrets()
57
+ const extensionSecrets = stored[extensionId]
58
+ if (!extensionSecrets || typeof extensionSecrets[key] !== 'string') {
59
+ return
60
+ }
61
+ const nextExtensionSecrets = { ...extensionSecrets }
62
+ delete nextExtensionSecrets[key]
63
+ const nextStored = { ...stored }
64
+ if (Object.keys(nextExtensionSecrets).length === 0) {
65
+ delete nextStored[extensionId]
66
+ } else {
67
+ nextStored[extensionId] = nextExtensionSecrets
68
+ }
69
+ await JsonFile.writeJson(getStoragePath(), nextStored)
70
+ })
71
+ }