@lvce-editor/shared-process 0.94.7 → 0.94.9
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 +2 -2
- package/src/parts/BuiltinExtensionsPath/BuiltinExtensionsPath.js +1 -1
- package/src/parts/Module/Module.js +2 -0
- package/src/parts/ModuleId/ModuleId.js +1 -0
- package/src/parts/ModuleMap/ModuleMap.js +4 -0
- package/src/parts/Platform/Platform.js +3 -3
- package/src/parts/PreloadUrl/PreloadUrl.js +1 -1
- package/src/parts/SecretStorage/SecretStorage.ipc.js +9 -0
- package/src/parts/SecretStorage/SecretStorage.js +71 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lvce-editor/shared-process",
|
|
3
|
-
"version": "0.94.
|
|
3
|
+
"version": "0.94.9",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
@@ -19,7 +19,7 @@
|
|
|
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.
|
|
22
|
+
"@lvce-editor/extension-host-helper-process": "0.94.9",
|
|
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",
|
|
@@ -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', '
|
|
6
|
+
const builtinExtensionsPath = join(staticServerPath, '..', '..', 'static', '0716cb3', 'extensions')
|
|
7
7
|
return builtinExtensionsPath
|
|
8
8
|
}
|
|
@@ -140,6 +140,8 @@ export const load = (moduleId) => {
|
|
|
140
140
|
return import('../RecentlyOpened/RecentlyOpened.ipc.js')
|
|
141
141
|
case ModuleId.Screen:
|
|
142
142
|
return import('../Screen/Screen.ipc.js')
|
|
143
|
+
case ModuleId.SecretStorage:
|
|
144
|
+
return import('../SecretStorage/SecretStorage.ipc.js')
|
|
143
145
|
case ModuleId.SendMessagePortToMainProcess:
|
|
144
146
|
return import('../SendMessagePortToMainProcess/SendMessagePortToMainProcess.ipc.js')
|
|
145
147
|
case ModuleId.TemporaryMessagePort:
|
|
@@ -320,6 +320,10 @@ export const getModuleId = (commandId) => {
|
|
|
320
320
|
case 'Screen.getHeight':
|
|
321
321
|
case 'Screen.getWidth':
|
|
322
322
|
return ModuleId.Screen
|
|
323
|
+
case 'SecretStorage.delete':
|
|
324
|
+
case 'SecretStorage.get':
|
|
325
|
+
case 'SecretStorage.store':
|
|
326
|
+
return ModuleId.SecretStorage
|
|
323
327
|
case 'SendMessagePortToMainProcess.sendMessagePortToMainProcess':
|
|
324
328
|
return ModuleId.SendMessagePortToMainProcess
|
|
325
329
|
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.
|
|
64
|
+
export const version = '0.94.9'
|
|
65
65
|
|
|
66
|
-
export const commit = '
|
|
66
|
+
export const commit = '0716cb3'
|
|
67
67
|
|
|
68
|
-
export const date = '2026-07-
|
|
68
|
+
export const date = '2026-07-27T12:58:03.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', '
|
|
5
|
+
return join(Root.root, 'static', '0716cb3', 'packages', 'preload', 'dist', 'index.js')
|
|
6
6
|
}
|
|
@@ -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
|
+
}
|