@live-change/server 0.9.120 → 0.9.122
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/lib/Renderer.js +41 -7
- package/package.json +7 -7
package/lib/Renderer.js
CHANGED
|
@@ -4,6 +4,8 @@ import * as vite from 'vite'
|
|
|
4
4
|
import serialize from 'serialize-javascript'
|
|
5
5
|
import renderTemplate from './renderTemplate.js'
|
|
6
6
|
import { SitemapStream } from 'sitemap'
|
|
7
|
+
import vm from 'vm'
|
|
8
|
+
import { createRequire } from 'module'
|
|
7
9
|
|
|
8
10
|
class Renderer {
|
|
9
11
|
constructor(manifest, settings) {
|
|
@@ -16,10 +18,17 @@ class Renderer {
|
|
|
16
18
|
if(this.settings.dev) {
|
|
17
19
|
await this.setupVite()
|
|
18
20
|
} else {
|
|
19
|
-
const serverEntryPath = path.resolve(this.root, this.settings.serverEntry ?? './dist/server/
|
|
20
|
-
|
|
21
|
-
this.
|
|
22
|
-
|
|
21
|
+
const serverEntryPath = path.resolve(this.root, this.settings.serverEntry ?? './dist/server/server.cjs')
|
|
22
|
+
const serverEntryCode = await fs.promises.readFile(serverEntryPath, { encoding: 'utf-8' })
|
|
23
|
+
this.script = new vm.Script(serverEntryCode, {
|
|
24
|
+
filename: serverEntryPath,
|
|
25
|
+
lineOffset: 0,
|
|
26
|
+
columnOffset: 0
|
|
27
|
+
})
|
|
28
|
+
this.baseContext = {
|
|
29
|
+
require: createRequire(serverEntryPath),
|
|
30
|
+
__dirname: path.dirname(serverEntryPath),
|
|
31
|
+
}
|
|
23
32
|
const templatePath = path.resolve(this.root, this.settings.templatePath ?? './dist/client/index.html')
|
|
24
33
|
this.template = await fs.promises.readFile(templatePath, { encoding: 'utf-8' })
|
|
25
34
|
}
|
|
@@ -44,7 +53,7 @@ class Renderer {
|
|
|
44
53
|
}
|
|
45
54
|
|
|
46
55
|
async renderPage(params) {
|
|
47
|
-
const { url, headers, dao, clientIp, credentials, windowId, version, now, domain } = params
|
|
56
|
+
const { url, headers, dao, clientIp, credentials, windowId, version, now, domain } = params
|
|
48
57
|
|
|
49
58
|
const render = await this.getRenderFunction()
|
|
50
59
|
const { html: appHtml, modules, data, meta, response } = await render(params)
|
|
@@ -118,13 +127,37 @@ class Renderer {
|
|
|
118
127
|
return template
|
|
119
128
|
}
|
|
120
129
|
|
|
130
|
+
async createRenderContext() {
|
|
131
|
+
const contextObject = {
|
|
132
|
+
//...globalThis,
|
|
133
|
+
...this.baseContext,
|
|
134
|
+
exports: {},
|
|
135
|
+
//process: process,
|
|
136
|
+
process: {
|
|
137
|
+
env: {
|
|
138
|
+
NODE_ENV: 'production'
|
|
139
|
+
},
|
|
140
|
+
stdout: process.stdout,
|
|
141
|
+
stderr: process.stderr,
|
|
142
|
+
nextTick: process.nextTick
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
const requestContext = vm.createContext(contextObject, {
|
|
146
|
+
name: 'SSR Render '+(new Date().toISOString()),
|
|
147
|
+
///microtaskMode: 'afterEvaluate'
|
|
148
|
+
})
|
|
149
|
+
this.script.runInContext(requestContext)
|
|
150
|
+
return contextObject
|
|
151
|
+
}
|
|
152
|
+
|
|
121
153
|
async getRenderFunction() {
|
|
122
154
|
if(this.settings.dev) {
|
|
123
155
|
/// Reload every request
|
|
124
156
|
const entryPath = path.resolve(this.root, this.settings.serverEntry || 'src/entry-server.js')
|
|
125
157
|
return (await this.vite.ssrLoadModule(entryPath)).render
|
|
126
158
|
} else {
|
|
127
|
-
|
|
159
|
+
const context = await this.createRenderContext()
|
|
160
|
+
return context.exports.render
|
|
128
161
|
}
|
|
129
162
|
}
|
|
130
163
|
|
|
@@ -134,7 +167,8 @@ class Renderer {
|
|
|
134
167
|
const entryPath = path.resolve(this.root, this.settings.serverEntry || 'src/entry-server.js')
|
|
135
168
|
return (await this.vite.ssrLoadModule(entryPath)).sitemap
|
|
136
169
|
} else {
|
|
137
|
-
|
|
170
|
+
const context = await this.createRenderContext()
|
|
171
|
+
return context.exports.sitemap
|
|
138
172
|
}
|
|
139
173
|
}
|
|
140
174
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@live-change/server",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.122",
|
|
4
4
|
"description": "Live Change Framework - server",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -22,12 +22,12 @@
|
|
|
22
22
|
"type": "module",
|
|
23
23
|
"homepage": "https://github.com/live-change/live-change-stack",
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@live-change/dao": "^0.9.
|
|
26
|
-
"@live-change/dao-sockjs": "^0.9.
|
|
27
|
-
"@live-change/db-server": "^0.9.
|
|
28
|
-
"@live-change/framework": "^0.9.
|
|
25
|
+
"@live-change/dao": "^0.9.122",
|
|
26
|
+
"@live-change/dao-sockjs": "^0.9.122",
|
|
27
|
+
"@live-change/db-server": "^0.9.122",
|
|
28
|
+
"@live-change/framework": "^0.9.122",
|
|
29
29
|
"@live-change/sockjs": "0.4.1",
|
|
30
|
-
"@live-change/uid": "^0.9.
|
|
30
|
+
"@live-change/uid": "^0.9.122",
|
|
31
31
|
"dotenv": "^17.2.1",
|
|
32
32
|
"express": "^4.18.2",
|
|
33
33
|
"express-static-gzip": "2.1.7",
|
|
@@ -39,5 +39,5 @@
|
|
|
39
39
|
"websocket": "^1.0.34",
|
|
40
40
|
"yargs": "^17.7.2"
|
|
41
41
|
},
|
|
42
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "e65f06f76a839f3ddf55a23eb4ff17cafafc2b84"
|
|
43
43
|
}
|