@lvce-editor/shared-process 0.22.2 → 0.22.3
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 +4 -4
- package/src/parts/GetElectronFileResponse/GetElectronFileResponse.js +21 -1
- package/src/parts/GetEtag/GetEtag.js +3 -0
- package/src/parts/GetMimeType/GetMimeType.js +1 -0
- package/src/parts/HandleRemoteRequest/HandleRemoteRequest.js +3 -10
- package/src/parts/HttpServerResponse/HttpServerResponse.js +17 -0
- package/src/parts/HttpStatusCode/HttpStatusCode.js +1 -0
- package/src/parts/IpcChildWithWebSocket/IpcChildWithWebSocket.js +0 -1
- package/src/parts/Platform/Platform.js +3 -3
- package/src/parts/SetHeaders/SetHeaders.js +5 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lvce-editor/shared-process",
|
|
3
|
-
"version": "0.22.
|
|
3
|
+
"version": "0.22.3",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@lvce-editor/assert": "^1.1.0",
|
|
21
|
-
"@lvce-editor/extension-host-helper-process": "0.22.
|
|
21
|
+
"@lvce-editor/extension-host-helper-process": "0.22.3",
|
|
22
22
|
"@lvce-editor/json-rpc": "^1.0.0",
|
|
23
23
|
"@lvce-editor/jsonc-parser": "^1.1.0",
|
|
24
24
|
"@lvce-editor/pretty-error": "^1.4.0",
|
|
25
|
-
"@lvce-editor/pty-host": "0.22.
|
|
25
|
+
"@lvce-editor/pty-host": "0.22.3",
|
|
26
26
|
"@lvce-editor/verror": "^1.1.2",
|
|
27
27
|
"@lvce-editor/web-socket-server": "^1.1.0",
|
|
28
28
|
"debug": "^4.3.4",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"optionalDependencies": {
|
|
38
38
|
"@lvce-editor/ripgrep": "^1.0.2",
|
|
39
39
|
"extract-zip": "^2.0.1",
|
|
40
|
-
"open": "^10.0.
|
|
40
|
+
"open": "^10.0.3",
|
|
41
41
|
"tail": "^2.2.6",
|
|
42
42
|
"tmp-promise": "^3.0.3",
|
|
43
43
|
"trash": "^8.1.1"
|
|
@@ -1,17 +1,37 @@
|
|
|
1
|
+
import { stat } from 'fs/promises'
|
|
1
2
|
import * as GetElectronFileResponseAbsolutePath from '../GetElectronFileResponseAbsolutePath/GetElectronFileResponseAbsolutePath.js'
|
|
2
3
|
import * as GetElectronFileResponseContent from '../GetElectronFileResponseContent/GetElectronFileResponseContent.js'
|
|
3
4
|
import * as GetElectronFileResponseRelativePath from '../GetElectronFileResponseRelativePath/GetElectronFileResponseRelativePath.js'
|
|
5
|
+
import * as GetEtag from '../GetEtag/GetEtag.js'
|
|
4
6
|
import * as GetHeaders from '../GetHeaders/GetHeaders.js'
|
|
5
7
|
import * as HttpStatusCode from '../HttpStatusCode/HttpStatusCode.js'
|
|
6
8
|
import * as IsEnoentError from '../IsEnoentError/IsEnoentError.js'
|
|
7
9
|
import * as Logger from '../Logger/Logger.js'
|
|
8
10
|
|
|
9
|
-
export const getElectronFileResponse = async (url) => {
|
|
11
|
+
export const getElectronFileResponse = async (url, request) => {
|
|
10
12
|
try {
|
|
11
13
|
const pathName = GetElectronFileResponseRelativePath.getElectronFileResponseRelativePath(url)
|
|
12
14
|
const absolutePath = GetElectronFileResponseAbsolutePath.getElectronFileResponseAbsolutePath(pathName)
|
|
15
|
+
let etag
|
|
16
|
+
if (request) {
|
|
17
|
+
const stats = await stat(absolutePath)
|
|
18
|
+
etag = GetEtag.getEtag(stats)
|
|
19
|
+
if (request.headers['if-none-match'] === etag) {
|
|
20
|
+
return {
|
|
21
|
+
body: '',
|
|
22
|
+
init: {
|
|
23
|
+
status: HttpStatusCode.NotModifed,
|
|
24
|
+
headers: {},
|
|
25
|
+
},
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
13
29
|
const content = await GetElectronFileResponseContent.getElectronFileResponseContent(absolutePath, url)
|
|
14
30
|
const headers = GetHeaders.getHeaders(absolutePath)
|
|
31
|
+
headers['Cache-Control'] = 'public, max-age=0, must-revalidate'
|
|
32
|
+
if (etag) {
|
|
33
|
+
headers['Etag'] = etag
|
|
34
|
+
}
|
|
15
35
|
return {
|
|
16
36
|
body: content,
|
|
17
37
|
init: {
|
|
@@ -1,17 +1,10 @@
|
|
|
1
|
-
import { ServerResponse } from 'node:http'
|
|
2
1
|
import * as Assert from '../Assert/Assert.js'
|
|
3
2
|
import * as GetElectronFileResponse from '../GetElectronFileResponse/GetElectronFileResponse.js'
|
|
3
|
+
import * as HttpServerResponse from '../HttpServerResponse/HttpServerResponse.js'
|
|
4
4
|
|
|
5
5
|
export const handleRemoteRequest = async (request, socket) => {
|
|
6
6
|
Assert.object(request)
|
|
7
7
|
Assert.object(socket)
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
const result = await GetElectronFileResponse.getElectronFileResponse(request.url)
|
|
11
|
-
response.statusCode = result.init.status
|
|
12
|
-
for (const [key, value] of Object.entries(result.init.headers)) {
|
|
13
|
-
response.setHeader(key, value)
|
|
14
|
-
}
|
|
15
|
-
response.setHeader('Connection', 'close')
|
|
16
|
-
response.end(result.body)
|
|
8
|
+
const result = await GetElectronFileResponse.getElectronFileResponse(request.url, request)
|
|
9
|
+
HttpServerResponse.send(request, socket, result)
|
|
17
10
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ServerResponse } from 'node:http'
|
|
2
|
+
import * as Assert from '../Assert/Assert.js'
|
|
3
|
+
import * as SetHeaders from '../SetHeaders/SetHeaders.js'
|
|
4
|
+
|
|
5
|
+
export const send = (request, socket, result) => {
|
|
6
|
+
Assert.object(request)
|
|
7
|
+
Assert.object(socket)
|
|
8
|
+
Assert.object(result)
|
|
9
|
+
const response = new ServerResponse(request)
|
|
10
|
+
response.assignSocket(socket)
|
|
11
|
+
response.statusCode = result.init.status
|
|
12
|
+
SetHeaders.setHeaders(response, {
|
|
13
|
+
...result.init.headers,
|
|
14
|
+
Connection: 'close',
|
|
15
|
+
})
|
|
16
|
+
response.end(result.body)
|
|
17
|
+
}
|
|
@@ -15,7 +15,6 @@ export const listen = async ({ request, handle }) => {
|
|
|
15
15
|
webSocket.pause()
|
|
16
16
|
if (!IsWebSocketOpen.isWebSocketOpen(webSocket)) {
|
|
17
17
|
const { type, event } = await GetFirstWebSocketEvent.getFirstWebSocketEvent(webSocket)
|
|
18
|
-
console.log({ type, event })
|
|
19
18
|
}
|
|
20
19
|
return webSocket
|
|
21
20
|
}
|
|
@@ -61,11 +61,11 @@ export const getSetupName = () => {
|
|
|
61
61
|
return 'Lvce-Setup'
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
export const version = '0.22.
|
|
64
|
+
export const version = '0.22.3'
|
|
65
65
|
|
|
66
|
-
export const commit = '
|
|
66
|
+
export const commit = '5c984c2'
|
|
67
67
|
|
|
68
|
-
export const date = '2024-01-
|
|
68
|
+
export const date = '2024-01-13T15:58:30.000Z'
|
|
69
69
|
|
|
70
70
|
export const getVersion = () => {
|
|
71
71
|
return version
|