@lvce-editor/shared-process 0.25.8 → 0.25.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 +5 -6
- package/src/parts/ContentSecurityPolicyDocument/ContentSecurityPolicyDocument.js +3 -6
- package/src/parts/ContentSecurityPolicySyntaxHighlightingWorker/ContentSecurityPolicySyntaxHighlightingWorker.js +3 -0
- package/src/parts/ContentSecurityPolicyTerminalWorker/ContentSecurityPolicyTerminalWorker.js +2 -3
- package/src/parts/ContentSecurityPolicyTestWorker/ContentSecurityPolicyTestWorker.js +2 -3
- package/src/parts/ContentSecurityPolicyWorker/ContentSecurityPolicyWorker.js +3 -7
- package/src/parts/GetContentSecurityPolicy/GetContentSecurityPolicy.js +6 -0
- package/src/parts/GetHeaders/GetHeaders.js +5 -1
- package/src/parts/GetHeadersSyntaxHighlightingWorker/GetHeadersSyntaxHighlightingWorker.js +10 -0
- package/src/parts/IpcChildModule/IpcChildModule.js +10 -4
- package/src/parts/IpcParentModule/IpcParentModule.js +3 -2
- package/src/parts/Module/Module.js +0 -2
- package/src/parts/Platform/Platform.js +3 -3
- package/src/parts/ChromeExtension/ChromeExtension.ipc.js +0 -8
- package/src/parts/ChromeExtension/ChromeExtension.js +0 -46
- package/src/parts/ExtractZip/ExtractZip.js +0 -12
- package/src/parts/IpcChildWithNodeForkedProcess/IpcChildWithNodeForkedProcess.js +0 -46
- package/src/parts/IpcChildWithNodeWorker/IpcChildWithNodeWorker.js +0 -45
- package/src/parts/IpcParentWithNodeForkedProcess/IpcParentWithNodeForkedProcess.js +0 -5
- package/src/parts/IpcParentWithNodeWorker/IpcParentWithNodeWorker.js +0 -36
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lvce-editor/shared-process",
|
|
3
|
-
"version": "0.25.
|
|
3
|
+
"version": "0.25.10",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
@@ -18,18 +18,18 @@
|
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@lvce-editor/assert": "^1.2.0",
|
|
21
|
-
"@lvce-editor/extension-host-helper-process": "0.25.
|
|
22
|
-
"@lvce-editor/ipc": "^3.
|
|
21
|
+
"@lvce-editor/extension-host-helper-process": "0.25.10",
|
|
22
|
+
"@lvce-editor/ipc": "^3.7.1",
|
|
23
23
|
"@lvce-editor/json-rpc": "^1.3.0",
|
|
24
24
|
"@lvce-editor/jsonc-parser": "^1.2.0",
|
|
25
25
|
"@lvce-editor/pretty-error": "^1.5.0",
|
|
26
|
-
"@lvce-editor/pty-host": "0.25.
|
|
26
|
+
"@lvce-editor/pty-host": "0.25.10",
|
|
27
27
|
"@lvce-editor/verror": "^1.2.0",
|
|
28
28
|
"@lvce-editor/web-socket-server": "^1.1.0",
|
|
29
29
|
"debug": "^4.3.4",
|
|
30
30
|
"execa": "^8.0.1",
|
|
31
31
|
"exit-hook": "^4.0.0",
|
|
32
|
-
"got": "^
|
|
32
|
+
"got": "^14.2.1",
|
|
33
33
|
"is-object": "^1.0.2",
|
|
34
34
|
"p-queue": "^8.0.1",
|
|
35
35
|
"tar-fs": "^3.0.5",
|
|
@@ -37,7 +37,6 @@
|
|
|
37
37
|
},
|
|
38
38
|
"optionalDependencies": {
|
|
39
39
|
"@lvce-editor/ripgrep": "^1.0.2",
|
|
40
|
-
"extract-zip": "^2.0.1",
|
|
41
40
|
"open": "^10.1.0",
|
|
42
41
|
"tail": "^2.2.6",
|
|
43
42
|
"tmp-promise": "^3.0.3",
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import * as Character from '../Character/Character.js'
|
|
1
|
+
import * as GetContentSecurityPolicy from '../GetContentSecurityPolicy/GetContentSecurityPolicy.js'
|
|
3
2
|
|
|
4
|
-
export const value = [
|
|
3
|
+
export const value = GetContentSecurityPolicy.getContentSecurityPolicy([
|
|
5
4
|
`default-src 'none'`,
|
|
6
5
|
`font-src 'self'`,
|
|
7
6
|
`frame-src *`,
|
|
@@ -9,6 +8,4 @@ export const value = [
|
|
|
9
8
|
`script-src 'self'`,
|
|
10
9
|
`media-src 'self'`,
|
|
11
10
|
`style-src 'self'`,
|
|
12
|
-
]
|
|
13
|
-
.map(AddSemiColon.addSemicolon)
|
|
14
|
-
.join(Character.Space)
|
|
11
|
+
])
|
package/src/parts/ContentSecurityPolicyTerminalWorker/ContentSecurityPolicyTerminalWorker.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import * as AddSemiColon from '../AddSemiColon/AddSemiColon.js'
|
|
1
|
+
import * as GetContentSecurityPolicy from '../GetContentSecurityPolicy/GetContentSecurityPolicy.js'
|
|
3
2
|
|
|
4
|
-
export const value = [`default-src 'none'`, `script-src 'self'`, `connect-src 'self'`]
|
|
3
|
+
export const value = GetContentSecurityPolicy.getContentSecurityPolicy([`default-src 'none'`, `script-src 'self'`, `connect-src 'self'`])
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import * as AddSemiColon from '../AddSemiColon/AddSemiColon.js'
|
|
1
|
+
import * as GetContentSecurityPolicy from '../GetContentSecurityPolicy/GetContentSecurityPolicy.js'
|
|
3
2
|
|
|
4
|
-
export const value = [`default-src 'none'`, `script-src 'self'`]
|
|
3
|
+
export const value = GetContentSecurityPolicy.getContentSecurityPolicy([`default-src 'none'`, `script-src 'self'`])
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import * as AddSemiColon from '../AddSemiColon/AddSemiColon.js'
|
|
1
|
+
import * as GetContentSecurityPolicy from '../GetContentSecurityPolicy/GetContentSecurityPolicy.js'
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
export const value = [
|
|
3
|
+
export const value = GetContentSecurityPolicy.getContentSecurityPolicy([
|
|
6
4
|
`default-src 'none'`,
|
|
7
5
|
`connect-src 'self'`,
|
|
8
6
|
`script-src 'self'`,
|
|
9
7
|
`font-src 'self'`,
|
|
10
|
-
]
|
|
11
|
-
.map(AddSemiColon.addSemicolon)
|
|
12
|
-
.join(Character.Space)
|
|
8
|
+
])
|
|
@@ -3,11 +3,12 @@ import * as GetHeadersDefault from '../GetHeadersDefault/GetHeadersDefault.js'
|
|
|
3
3
|
import * as GetHeadersExtensionHostWorker from '../GetHeadersExtensionHostWorker/GetHeadersExtensionHostWorker.js'
|
|
4
4
|
import * as GetHeadersMainFrame from '../GetHeadersMainFrame/GetHeadersMainFrame.js'
|
|
5
5
|
import * as GetHeadersOtherWorker from '../GetHeadersOtherWorker/GetHeadersOtherWorker.js'
|
|
6
|
-
import * as HttpHeader from '../HttpHeader/HttpHeader.js'
|
|
7
6
|
import * as GetHeadersRendererWorker from '../GetHeadersRendererWorker/GetHeadersRendererWorker.js'
|
|
7
|
+
import * as GetHeadersSyntaxHighlightingWorker from '../GetHeadersSyntaxHighlightingWorker/GetHeadersSyntaxHighlightingWorker.js'
|
|
8
8
|
import * as GetHeadersTerminalWorker from '../GetHeadersTerminalWorker/GetHeadersTerminalWorker.js'
|
|
9
9
|
import * as GetHeadersTestWorker from '../GetHeadersTestWorker/GetHeadersTestWorker.js'
|
|
10
10
|
import * as GetMimeType from '../GetMimeType/GetMimeType.js'
|
|
11
|
+
import * as HttpHeader from '../HttpHeader/HttpHeader.js'
|
|
11
12
|
|
|
12
13
|
const getExtraHeaders = (pathName, fileExtension) => {
|
|
13
14
|
switch (fileExtension) {
|
|
@@ -27,6 +28,9 @@ const getExtraHeaders = (pathName, fileExtension) => {
|
|
|
27
28
|
if (pathName.endsWith('terminalWorkerMain.js') || pathName.endsWith('terminalWorkerMain.ts')) {
|
|
28
29
|
return GetHeadersTerminalWorker.getHeadersTerminalWorker()
|
|
29
30
|
}
|
|
31
|
+
if (pathName.endsWith('syntaxHighlightingWorkerMain.js') || pathName.endsWith('syntaxHighlightingWorkerMain.ts')) {
|
|
32
|
+
return GetHeadersSyntaxHighlightingWorker.getHeadersSyntaxHighlightingWorker()
|
|
33
|
+
}
|
|
30
34
|
if (pathName.endsWith('WorkerMain.js') || pathName.endsWith('WorkerMain.ts')) {
|
|
31
35
|
return GetHeadersOtherWorker.getHeadersOtherWorker(pathName)
|
|
32
36
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as ContentSecurityPolicySyntaxHighlightingWorker from '../ContentSecurityPolicySyntaxHighlightingWorker/ContentSecurityPolicySyntaxHighlightingWorker.js'
|
|
2
|
+
import * as HttpHeader from '../HttpHeader/HttpHeader.js'
|
|
3
|
+
import * as CrossOriginEmbedderPolicy from '../CrossOriginEmbedderPolicy/CrossOriginEmbedderPolicy.js'
|
|
4
|
+
|
|
5
|
+
export const getHeadersSyntaxHighlightingWorker = () => {
|
|
6
|
+
return {
|
|
7
|
+
[HttpHeader.CrossOriginEmbedderPolicy]: CrossOriginEmbedderPolicy.value,
|
|
8
|
+
[HttpHeader.ContentSecurityPolicy]: ContentSecurityPolicySyntaxHighlightingWorker.value,
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -1,16 +1,22 @@
|
|
|
1
|
+
import {
|
|
2
|
+
IpcChildWithElectronMessagePort,
|
|
3
|
+
IpcChildWithElectronUtilityProcess,
|
|
4
|
+
IpcChildWithNodeForkedProcess,
|
|
5
|
+
IpcChildWithNodeWorker,
|
|
6
|
+
IpcChildWithWebSocket,
|
|
7
|
+
} from '@lvce-editor/ipc'
|
|
1
8
|
import * as IpcChildType from '../IpcChildType/IpcChildType.js'
|
|
2
|
-
import { IpcChildWithElectronUtilityProcess, IpcChildWithWebSocket } from '@lvce-editor/ipc'
|
|
3
9
|
|
|
4
10
|
export const getModule = (method) => {
|
|
5
11
|
switch (method) {
|
|
6
12
|
case IpcChildType.NodeForkedProcess:
|
|
7
|
-
return
|
|
13
|
+
return IpcChildWithNodeForkedProcess
|
|
8
14
|
case IpcChildType.NodeWorker:
|
|
9
|
-
return
|
|
15
|
+
return IpcChildWithNodeWorker
|
|
10
16
|
case IpcChildType.ElectronUtilityProcess:
|
|
11
17
|
return IpcChildWithElectronUtilityProcess
|
|
12
18
|
case IpcChildType.ElectronMessagePort:
|
|
13
|
-
return
|
|
19
|
+
return IpcChildWithElectronMessagePort
|
|
14
20
|
case IpcChildType.NodeMessagePort:
|
|
15
21
|
return import('../IpcChildWithNodeMessagePort/IpcChildWithNodeMessagePort.js')
|
|
16
22
|
case IpcChildType.WebSocket:
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
+
import { IpcParentWithNodeForkedProcess, IpcParentWithNodeWorker } from '@lvce-editor/ipc'
|
|
1
2
|
import * as IpcParentType from '../IpcParentType/IpcParentType.js'
|
|
2
3
|
|
|
3
4
|
export const getModule = (method) => {
|
|
4
5
|
switch (method) {
|
|
5
6
|
case IpcParentType.NodeWorker:
|
|
6
|
-
return
|
|
7
|
+
return IpcParentWithNodeWorker
|
|
7
8
|
case IpcParentType.NodeForkedProcess:
|
|
8
|
-
return
|
|
9
|
+
return IpcParentWithNodeForkedProcess
|
|
9
10
|
case IpcParentType.ElectronUtilityProcess:
|
|
10
11
|
return import('../IpcParentWithElectronUtilityProcess/IpcParentWithElectronUtilityProcess.js')
|
|
11
12
|
default:
|
|
@@ -16,8 +16,6 @@ export const load = (moduleId) => {
|
|
|
16
16
|
return import('../AutoUpdaterWindowsNsis/AutoUpdaterWindowsNsis.ipc.js')
|
|
17
17
|
case ModuleId.BulkReplacement:
|
|
18
18
|
return import('../BulkReplacement/BulkReplacement.ipc.js')
|
|
19
|
-
case ModuleId.ChromeExtension:
|
|
20
|
-
return import('../ChromeExtension/ChromeExtension.ipc.js')
|
|
21
19
|
case ModuleId.ClipBoard:
|
|
22
20
|
return import('../ClipBoard/ClipBoard.ipc.js')
|
|
23
21
|
case ModuleId.Crash:
|
|
@@ -61,11 +61,11 @@ export const getSetupName = () => {
|
|
|
61
61
|
return 'Lvce-Setup'
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
export const version = '0.25.
|
|
64
|
+
export const version = '0.25.10'
|
|
65
65
|
|
|
66
|
-
export const commit = '
|
|
66
|
+
export const commit = 'c9592d8'
|
|
67
67
|
|
|
68
|
-
export const date = '2024-04-
|
|
68
|
+
export const date = '2024-04-14T11:11:32.000Z'
|
|
69
69
|
|
|
70
70
|
export const getVersion = () => {
|
|
71
71
|
return version
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import * as Assert from '../Assert/Assert.js'
|
|
2
|
-
import * as Download from '../Download/Download.js'
|
|
3
|
-
import * as ExtractZip from '../ExtractZip/ExtractZip.js'
|
|
4
|
-
import * as FileSystem from '../FileSystem/FileSystem.js'
|
|
5
|
-
import * as Path from '../Path/Path.js'
|
|
6
|
-
import * as PlatformPaths from '../PlatformPaths/PlatformPaths.js'
|
|
7
|
-
import { VError } from '../VError/VError.js'
|
|
8
|
-
|
|
9
|
-
const getExtensionPath = async (tmpDir) => {
|
|
10
|
-
const dirents = await FileSystem.readDirWithFileTypes(tmpDir)
|
|
11
|
-
// @ts-ignore
|
|
12
|
-
if (dirents.length === 1 && dirents[0].type === 'directory') {
|
|
13
|
-
return Path.join(tmpDir, dirents[0].name)
|
|
14
|
-
}
|
|
15
|
-
return tmpDir
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export const install = async (name, url) => {
|
|
19
|
-
try {
|
|
20
|
-
Assert.string(name)
|
|
21
|
-
Assert.string(url)
|
|
22
|
-
const cachedChromeExtensionsPath = PlatformPaths.getCachedExtensionsPath()
|
|
23
|
-
const tempFileCompressed = Path.join(cachedChromeExtensionsPath, `${name}.zip`)
|
|
24
|
-
const tmpDir = Path.join(cachedChromeExtensionsPath, name)
|
|
25
|
-
const chromeExtensionsPath = PlatformPaths.getChromeExtensionsPath()
|
|
26
|
-
await Download.download(url, tempFileCompressed)
|
|
27
|
-
await ExtractZip.extractZip({ inFile: tempFileCompressed, outDir: tmpDir })
|
|
28
|
-
const cachedExtensionPath = await getExtensionPath(tmpDir)
|
|
29
|
-
const outDir = Path.join(chromeExtensionsPath, name)
|
|
30
|
-
await FileSystem.remove(outDir)
|
|
31
|
-
await FileSystem.rename(cachedExtensionPath, outDir)
|
|
32
|
-
} catch (error) {
|
|
33
|
-
throw new VError(error, `Failed to install chrome extension ${name}`)
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export const uninstall = async (name) => {
|
|
38
|
-
try {
|
|
39
|
-
Assert.string(name)
|
|
40
|
-
// TODO
|
|
41
|
-
// figure out extension path
|
|
42
|
-
// remove file
|
|
43
|
-
} catch (error) {
|
|
44
|
-
throw new VError(error, `Failed to uninstall chrome extension ${name}`)
|
|
45
|
-
}
|
|
46
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { mkdir } from 'node:fs/promises'
|
|
2
|
-
import extract from 'extract-zip'
|
|
3
|
-
import { VError } from '../VError/VError.js'
|
|
4
|
-
|
|
5
|
-
export const extractZip = async ({ inFile, outDir }) => {
|
|
6
|
-
try {
|
|
7
|
-
await mkdir(outDir, { recursive: true })
|
|
8
|
-
await extract(inFile, { dir: outDir })
|
|
9
|
-
} catch (error) {
|
|
10
|
-
throw new VError(error, `Failed to extract ${inFile}`)
|
|
11
|
-
}
|
|
12
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
export const listen = async () => {
|
|
2
|
-
if (!process.send) {
|
|
3
|
-
throw new Error('process.send must be defined')
|
|
4
|
-
}
|
|
5
|
-
return process
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export const signal = (process) => {
|
|
9
|
-
process.send('ready')
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const getActualData = (message, handle) => {
|
|
13
|
-
if (handle) {
|
|
14
|
-
return {
|
|
15
|
-
...message,
|
|
16
|
-
params: [...message.params, handle],
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
return message
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export const wrap = (process) => {
|
|
23
|
-
return {
|
|
24
|
-
process,
|
|
25
|
-
on(event, listener) {
|
|
26
|
-
if (event === 'message') {
|
|
27
|
-
const wrappedListener = (event, handle) => {
|
|
28
|
-
const actualData = getActualData(event, handle)
|
|
29
|
-
listener(actualData)
|
|
30
|
-
}
|
|
31
|
-
this.process.on(event, wrappedListener)
|
|
32
|
-
} else if (event === 'close') {
|
|
33
|
-
this.process.on('close', listener)
|
|
34
|
-
} else {
|
|
35
|
-
throw new Error('unsupported event type')
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
off(event, listener) {
|
|
39
|
-
this.process.off(event, listener)
|
|
40
|
-
},
|
|
41
|
-
send(message) {
|
|
42
|
-
this.process.send(message)
|
|
43
|
-
},
|
|
44
|
-
dispose() {},
|
|
45
|
-
}
|
|
46
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { parentPort } from 'node:worker_threads'
|
|
2
|
-
import * as IsElectron from '../IsElectron/IsElectron.js'
|
|
3
|
-
|
|
4
|
-
export const listen = async () => {
|
|
5
|
-
if (!parentPort) {
|
|
6
|
-
throw new Error('parentPort is required')
|
|
7
|
-
}
|
|
8
|
-
return parentPort
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export const signal = (parentPort) => {
|
|
12
|
-
parentPort.postMessage('ready')
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
const getActualData = (message) => {
|
|
16
|
-
return message
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export const wrap = (parentPort) => {
|
|
20
|
-
return {
|
|
21
|
-
parentPort,
|
|
22
|
-
on(event, listener) {
|
|
23
|
-
if (event === 'message') {
|
|
24
|
-
const wrappedListener = (event) => {
|
|
25
|
-
const actualData = getActualData(event)
|
|
26
|
-
listener(actualData)
|
|
27
|
-
}
|
|
28
|
-
this.parentPort.on(event, wrappedListener)
|
|
29
|
-
} else if (event === 'close') {
|
|
30
|
-
this.parentPort.on('close', listener)
|
|
31
|
-
} else {
|
|
32
|
-
throw new Error('unsupported event type')
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
off(event, listener) {
|
|
36
|
-
this.parentPort.off(event, listener)
|
|
37
|
-
},
|
|
38
|
-
send(message) {
|
|
39
|
-
this.parentPort.postMessage(message)
|
|
40
|
-
},
|
|
41
|
-
dispose() {
|
|
42
|
-
this.parentPort.close()
|
|
43
|
-
},
|
|
44
|
-
}
|
|
45
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { Worker } from 'node:worker_threads'
|
|
2
|
-
import * as Assert from '../Assert/Assert.js'
|
|
3
|
-
import * as FirstNodeWorkerEventType from '../FirstNodeWorkerEventType/FirstNodeWorkerEventType.js'
|
|
4
|
-
import * as GetFirstNodeWorkerEvent from '../GetFirstNodeWorkerEvent/GetFirstNodeWorkerEvent.js'
|
|
5
|
-
|
|
6
|
-
export const create = async ({ path, argv, env, execArgv }) => {
|
|
7
|
-
Assert.string(path)
|
|
8
|
-
const worker = new Worker(path, {
|
|
9
|
-
argv,
|
|
10
|
-
env,
|
|
11
|
-
execArgv,
|
|
12
|
-
})
|
|
13
|
-
const { type, event } = await GetFirstNodeWorkerEvent.getFirstNodeWorkerEvent(worker)
|
|
14
|
-
if (type === FirstNodeWorkerEventType.Error) {
|
|
15
|
-
throw event
|
|
16
|
-
}
|
|
17
|
-
return worker
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export const wrap = (worker) => {
|
|
21
|
-
return {
|
|
22
|
-
worker,
|
|
23
|
-
on(event, listener) {
|
|
24
|
-
this.worker.on(event, listener)
|
|
25
|
-
},
|
|
26
|
-
send(message) {
|
|
27
|
-
this.worker.postMessage(message)
|
|
28
|
-
},
|
|
29
|
-
sendAndTransfer(message, transfer) {
|
|
30
|
-
this.worker.postMessage(message, transfer)
|
|
31
|
-
},
|
|
32
|
-
dispose() {
|
|
33
|
-
this.worker.terminate()
|
|
34
|
-
},
|
|
35
|
-
}
|
|
36
|
-
}
|