@modern-js/prod-server 1.22.1 → 2.0.0-alpha.0
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/CHANGELOG.md +271 -17
- package/dist/js/modern/constants.js +32 -27
- package/dist/js/modern/index.js +11 -7
- package/dist/js/modern/libs/context/context.js +54 -132
- package/dist/js/modern/libs/context/index.js +5 -2
- package/dist/js/modern/libs/hook-api/index.js +134 -0
- package/dist/js/modern/libs/hook-api/route.js +13 -37
- package/dist/js/modern/libs/hook-api/template.js +41 -32
- package/dist/js/modern/libs/loadConfig.js +46 -32
- package/dist/js/modern/libs/metrics.js +6 -7
- package/dist/js/modern/libs/proxy.js +70 -44
- package/dist/js/modern/libs/render/cache/__tests__/cache.fun.test.js +112 -68
- package/dist/js/modern/libs/render/cache/__tests__/cache.test.js +246 -225
- package/dist/js/modern/libs/render/cache/__tests__/cacheable.js +43 -49
- package/dist/js/modern/libs/render/cache/__tests__/error-configuration.js +36 -34
- package/dist/js/modern/libs/render/cache/__tests__/matched-cache.js +83 -113
- package/dist/js/modern/libs/render/cache/index.js +93 -50
- package/dist/js/modern/libs/render/cache/page-caches/index.js +31 -8
- package/dist/js/modern/libs/render/cache/page-caches/lru.js +6 -16
- package/dist/js/modern/libs/render/cache/spr.js +133 -167
- package/dist/js/modern/libs/render/cache/type.js +0 -1
- package/dist/js/modern/libs/render/cache/util.js +71 -45
- package/dist/js/modern/libs/render/index.js +76 -61
- package/dist/js/modern/libs/render/measure.js +42 -34
- package/dist/js/modern/libs/render/reader.js +68 -76
- package/dist/js/modern/libs/render/ssr.js +63 -33
- package/dist/js/modern/libs/render/static.js +51 -37
- package/dist/js/modern/libs/render/type.js +9 -7
- package/dist/js/modern/libs/route/index.js +12 -30
- package/dist/js/modern/libs/route/matcher.js +28 -50
- package/dist/js/modern/libs/route/route.js +9 -31
- package/dist/js/modern/libs/serve-file.js +40 -20
- package/dist/js/modern/server/index.js +152 -168
- package/dist/js/modern/server/modern-server-split.js +44 -60
- package/dist/js/modern/server/modern-server.js +416 -526
- package/dist/js/modern/type.js +0 -1
- package/dist/js/modern/utils.js +62 -58
- package/dist/js/modern/worker-server.js +54 -0
- package/dist/js/node/constants.js +53 -32
- package/dist/js/node/index.js +37 -67
- package/dist/js/node/libs/context/context.js +84 -150
- package/dist/js/node/libs/context/index.js +28 -16
- package/dist/js/node/libs/hook-api/index.js +164 -0
- package/dist/js/node/libs/hook-api/route.js +35 -45
- package/dist/js/node/libs/hook-api/template.js +64 -40
- package/dist/js/node/libs/loadConfig.js +74 -55
- package/dist/js/node/libs/metrics.js +28 -12
- package/dist/js/node/libs/proxy.js +90 -55
- package/dist/js/node/libs/render/cache/__tests__/cache.fun.test.js +99 -61
- package/dist/js/node/libs/render/cache/__tests__/cache.test.js +147 -140
- package/dist/js/node/libs/render/cache/__tests__/cacheable.js +65 -55
- package/dist/js/node/libs/render/cache/__tests__/error-configuration.js +58 -40
- package/dist/js/node/libs/render/cache/__tests__/matched-cache.js +105 -119
- package/dist/js/node/libs/render/cache/index.js +115 -65
- package/dist/js/node/libs/render/cache/page-caches/index.js +54 -16
- package/dist/js/node/libs/render/cache/page-caches/lru.js +33 -26
- package/dist/js/node/libs/render/cache/spr.js +161 -188
- package/dist/js/node/libs/render/cache/type.js +15 -5
- package/dist/js/node/libs/render/cache/util.js +99 -63
- package/dist/js/node/libs/render/index.js +106 -87
- package/dist/js/node/libs/render/measure.js +61 -44
- package/dist/js/node/libs/render/reader.js +98 -100
- package/dist/js/node/libs/render/ssr.js +92 -58
- package/dist/js/node/libs/render/static.js +80 -53
- package/dist/js/node/libs/render/type.js +31 -13
- package/dist/js/node/libs/route/index.js +35 -44
- package/dist/js/node/libs/route/matcher.js +48 -65
- package/dist/js/node/libs/route/route.js +29 -37
- package/dist/js/node/libs/serve-file.js +74 -37
- package/dist/js/node/server/index.js +170 -203
- package/dist/js/node/server/modern-server-split.js +70 -73
- package/dist/js/node/server/modern-server.js +432 -577
- package/dist/js/node/type.js +15 -3
- package/dist/js/node/utils.js +87 -93
- package/dist/js/node/worker-server.js +77 -0
- package/dist/js/treeshaking/constants.js +29 -0
- package/dist/js/treeshaking/index.js +13 -0
- package/dist/js/treeshaking/libs/context/context.js +274 -0
- package/dist/js/treeshaking/libs/context/index.js +5 -0
- package/dist/js/treeshaking/libs/hook-api/index.js +281 -0
- package/dist/js/treeshaking/libs/hook-api/route.js +68 -0
- package/dist/js/treeshaking/libs/hook-api/template.js +127 -0
- package/dist/js/treeshaking/libs/loadConfig.js +82 -0
- package/dist/js/treeshaking/libs/metrics.js +6 -0
- package/dist/js/treeshaking/libs/proxy.js +244 -0
- package/dist/js/treeshaking/libs/render/cache/__tests__/cache.fun.test.js +291 -0
- package/dist/js/treeshaking/libs/render/cache/__tests__/cache.test.js +781 -0
- package/dist/js/treeshaking/libs/render/cache/__tests__/cacheable.js +67 -0
- package/dist/js/treeshaking/libs/render/cache/__tests__/error-configuration.js +45 -0
- package/dist/js/treeshaking/libs/render/cache/__tests__/matched-cache.js +147 -0
- package/dist/js/treeshaking/libs/render/cache/index.js +346 -0
- package/dist/js/treeshaking/libs/render/cache/page-caches/index.js +154 -0
- package/dist/js/treeshaking/libs/render/cache/page-caches/lru.js +84 -0
- package/dist/js/treeshaking/libs/render/cache/spr.js +492 -0
- package/dist/js/treeshaking/libs/render/cache/type.js +1 -0
- package/dist/js/treeshaking/libs/render/cache/util.js +280 -0
- package/dist/js/treeshaking/libs/render/index.js +233 -0
- package/dist/js/treeshaking/libs/render/measure.js +146 -0
- package/dist/js/treeshaking/libs/render/reader.js +339 -0
- package/dist/js/treeshaking/libs/render/ssr.js +223 -0
- package/dist/js/treeshaking/libs/render/static.js +216 -0
- package/dist/js/treeshaking/libs/render/type.js +7 -0
- package/dist/js/treeshaking/libs/route/index.js +130 -0
- package/dist/js/treeshaking/libs/route/matcher.js +138 -0
- package/dist/js/treeshaking/libs/route/route.js +40 -0
- package/dist/js/treeshaking/libs/serve-file.js +184 -0
- package/dist/js/treeshaking/server/index.js +505 -0
- package/dist/js/treeshaking/server/modern-server-split.js +360 -0
- package/dist/js/treeshaking/server/modern-server.js +1083 -0
- package/dist/js/treeshaking/type.js +1 -0
- package/dist/js/treeshaking/utils.js +147 -0
- package/dist/js/treeshaking/worker-server.js +177 -0
- package/dist/types/libs/context/context.d.ts +1 -1
- package/dist/types/libs/hook-api/index.d.ts +5 -0
- package/dist/types/libs/hook-api/route.d.ts +9 -14
- package/dist/types/libs/hook-api/template.d.ts +19 -9
- package/dist/types/libs/render/cache/index.d.ts +4 -2
- package/dist/types/libs/render/type.d.ts +3 -1
- package/dist/types/libs/route/route.d.ts +0 -1
- package/dist/types/libs/serve-file.d.ts +2 -1
- package/dist/types/server/index.d.ts +2 -0
- package/dist/types/server/modern-server.d.ts +11 -11
- package/dist/types/type.d.ts +8 -10
- package/dist/types/utils.d.ts +3 -4
- package/dist/types/worker-server.d.ts +15 -0
- package/package.json +31 -45
- package/dist/js/modern/libs/render/modern/browser-list.js +0 -7
- package/dist/js/modern/libs/render/modern/index.js +0 -48
- package/dist/js/node/libs/render/modern/browser-list.js +0 -14
- package/dist/js/node/libs/render/modern/index.js +0 -64
- package/dist/types/libs/render/modern/browser-list.d.ts +0 -1
- package/dist/types/libs/render/modern/index.d.ts +0 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,39 +1,293 @@
|
|
|
1
1
|
# @modern-js/prod-server
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## 2.0.0-beta.4
|
|
4
4
|
|
|
5
|
-
###
|
|
5
|
+
### Major Changes
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
- @modern-js/utils@1.22.1
|
|
7
|
+
- dda38c9c3e: chore: v2
|
|
9
8
|
|
|
10
|
-
|
|
9
|
+
### Minor Changes
|
|
11
10
|
|
|
12
|
-
|
|
11
|
+
- c9e800d39a: feat: support React18 streaming SSR
|
|
12
|
+
feat: 支持 React18 流式 SSR
|
|
13
|
+
- 543be9558e: feat: compile server loader and support handle loader request
|
|
14
|
+
feat: 编译 server loader 并支持处理 loader 的请求
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- 7879e8f: refactor: remove enableModernMode config
|
|
19
|
+
|
|
20
|
+
refactor: 不再支持 enableModernMode 配置项
|
|
21
|
+
|
|
22
|
+
- d032d49e09: export createHandle
|
|
23
|
+
导出 createHandle 函数
|
|
24
|
+
- 15bf09d9c8: feat: support completely custom server, export render() api for render single page
|
|
25
|
+
feat: 支持完全自定义 Server,导出 render() 方法用来渲染单个页面
|
|
26
|
+
- cc971eabfc: refactor: move server plugin load logic in `@modern-js/core`
|
|
27
|
+
refactor:移除在 `@modern-js/core` 中的 server 插件加载逻辑
|
|
28
|
+
- 40ed5874c6: feat: inject css chunk into html for streaming ssr
|
|
29
|
+
feat: streaming ssr 返回的 html 注入 css chunk
|
|
30
|
+
- 102d32e4ba: feat(server): add `req` and `res` to SSR context
|
|
31
|
+
|
|
32
|
+
feat(server): 添加 `req` 和 `res` 到 SSR context 中
|
|
33
|
+
|
|
34
|
+
- 3bbea92b2a: feat: support Hook、Middleware new API
|
|
35
|
+
feat: 支持 Hook、Middleware 的新 API
|
|
36
|
+
- 73cd29dd9f: fix(server): add favicon fallback handler
|
|
37
|
+
|
|
38
|
+
fix(server): 添加 favicon 兜底处理逻辑
|
|
39
|
+
|
|
40
|
+
- cce8ecee2d: fix: handle some `TODO` & `FIXME`, change some tests
|
|
41
|
+
fix: 处理一些 `TODO` 和 `FIXME`, 修改了一些 tests
|
|
42
|
+
- 18aaf42249: fix: fix server loader redirects
|
|
43
|
+
fix: 修复 server loader 重定向错误
|
|
44
|
+
- 14b712da84: fix: use consistent alias type and default value across packages
|
|
45
|
+
|
|
46
|
+
fix: 在各个包中使用一致的 alias 类型定义和默认值
|
|
47
|
+
|
|
48
|
+
- Updated dependencies [7879e8f]
|
|
49
|
+
- Updated dependencies [6aca875]
|
|
50
|
+
- Updated dependencies [15bf09d9c8]
|
|
51
|
+
- Updated dependencies [2e6031955e]
|
|
52
|
+
- Updated dependencies [7b7d12c]
|
|
53
|
+
- Updated dependencies [92f0eade39]
|
|
54
|
+
- Updated dependencies [edd1cfb1af]
|
|
55
|
+
- Updated dependencies [cc971eabfc]
|
|
56
|
+
- Updated dependencies [5b9049f2e9]
|
|
57
|
+
- Updated dependencies [92004d1906]
|
|
58
|
+
- Updated dependencies [b8bbe036c7]
|
|
59
|
+
- Updated dependencies [d5a31df781]
|
|
60
|
+
- Updated dependencies [dda38c9c3e]
|
|
61
|
+
- Updated dependencies [3bbea92b2a]
|
|
62
|
+
- Updated dependencies [b710adb843]
|
|
63
|
+
- Updated dependencies [ea7cf06]
|
|
64
|
+
- Updated dependencies [bbe4c4a]
|
|
65
|
+
- Updated dependencies [e4558a0]
|
|
66
|
+
- Updated dependencies [abf3421a75]
|
|
67
|
+
- Updated dependencies [543be9558e]
|
|
68
|
+
- Updated dependencies [14b712da84]
|
|
69
|
+
- @modern-js/utils@2.0.0-beta.4
|
|
70
|
+
- @modern-js/server-core@2.0.0-beta.4
|
|
71
|
+
|
|
72
|
+
## 2.0.0-beta.3
|
|
73
|
+
|
|
74
|
+
### Major Changes
|
|
75
|
+
|
|
76
|
+
- dda38c9c3e: chore: v2
|
|
13
77
|
|
|
14
|
-
|
|
15
|
-
- @modern-js/utils@1.21.6
|
|
78
|
+
### Minor Changes
|
|
16
79
|
|
|
17
|
-
|
|
80
|
+
- c9e800d39a: feat: support React18 streaming SSR
|
|
81
|
+
feat: 支持 React18 流式 SSR
|
|
82
|
+
- 543be9558e: feat: compile server loader and support handle loader request
|
|
83
|
+
feat: 编译 server loader 并支持处理 loader 的请求
|
|
84
|
+
|
|
85
|
+
### Patch Changes
|
|
86
|
+
|
|
87
|
+
- d032d49e09: export createHandle
|
|
88
|
+
导出 createHandle 函数
|
|
89
|
+
- 15bf09d9c8: feat: support completely custom server, export render() api for render single page
|
|
90
|
+
feat: 支持完全自定义 Server,导出 render() 方法用来渲染单个页面
|
|
91
|
+
- cc971eabfc: refactor: move server plugin load logic in `@modern-js/core`
|
|
92
|
+
refactor:移除在 `@modern-js/core` 中的 server 插件加载逻辑
|
|
93
|
+
- 40ed5874c6: feat: inject css chunk into html for streaming ssr
|
|
94
|
+
feat: streaming ssr 返回的 html 注入 css chunk
|
|
95
|
+
- 102d32e4ba: feat(server): add `req` and `res` to SSR context
|
|
96
|
+
|
|
97
|
+
feat(server): 添加 `req` 和 `res` 到 SSR context 中
|
|
98
|
+
|
|
99
|
+
- 3bbea92b2a: feat: support Hook、Middleware new API
|
|
100
|
+
feat: 支持 Hook、Middleware 的新 API
|
|
101
|
+
- 73cd29dd9f: fix(server): add favicon fallback handler
|
|
102
|
+
|
|
103
|
+
fix(server): 添加 favicon 兜底处理逻辑
|
|
104
|
+
|
|
105
|
+
- cce8ece: fix: handle some `TODO` & `FIXME`, change some tests
|
|
106
|
+
fix: 处理一些 `TODO` 和 `FIXME`, 修改了一些 tests
|
|
107
|
+
- 18aaf42249: fix: fix server loader redirects
|
|
108
|
+
fix: 修复 server loader 重定向错误
|
|
109
|
+
- 14b712da84: fix: use consistent alias type and default value across packages
|
|
110
|
+
|
|
111
|
+
fix: 在各个包中使用一致的 alias 类型定义和默认值
|
|
112
|
+
|
|
113
|
+
- Updated dependencies [6aca875]
|
|
114
|
+
- Updated dependencies [15bf09d9c8]
|
|
115
|
+
- Updated dependencies [2e60319]
|
|
116
|
+
- Updated dependencies [92f0eade39]
|
|
117
|
+
- Updated dependencies [edd1cfb1af]
|
|
118
|
+
- Updated dependencies [cc971eabfc]
|
|
119
|
+
- Updated dependencies [5b9049f2e9]
|
|
120
|
+
- Updated dependencies [92004d1906]
|
|
121
|
+
- Updated dependencies [b8bbe036c7]
|
|
122
|
+
- Updated dependencies [d5a31df781]
|
|
123
|
+
- Updated dependencies [dda38c9c3e]
|
|
124
|
+
- Updated dependencies [3bbea92b2a]
|
|
125
|
+
- Updated dependencies [b710adb]
|
|
126
|
+
- Updated dependencies [ea7cf06]
|
|
127
|
+
- Updated dependencies [bbe4c4a]
|
|
128
|
+
- Updated dependencies [e4558a0]
|
|
129
|
+
- Updated dependencies [abf3421a75]
|
|
130
|
+
- Updated dependencies [543be9558e]
|
|
131
|
+
- Updated dependencies [14b712da84]
|
|
132
|
+
- @modern-js/utils@2.0.0-beta.3
|
|
133
|
+
- @modern-js/server-core@2.0.0-beta.3
|
|
134
|
+
|
|
135
|
+
## 2.0.0-beta.2
|
|
136
|
+
|
|
137
|
+
### Major Changes
|
|
138
|
+
|
|
139
|
+
- dda38c9c3e: chore: v2
|
|
140
|
+
|
|
141
|
+
### Minor Changes
|
|
142
|
+
|
|
143
|
+
- c9e800d39a: feat: support React18 streaming SSR
|
|
144
|
+
feat: 支持 React18 流式 SSR
|
|
145
|
+
- 543be9558e: feat: compile server loader and support handle loader request
|
|
146
|
+
feat: 编译 server loader 并支持处理 loader 的请求
|
|
18
147
|
|
|
19
148
|
### Patch Changes
|
|
20
149
|
|
|
21
|
-
-
|
|
22
|
-
|
|
150
|
+
- d032d49: export createHandle
|
|
151
|
+
导出 createHandle 函数
|
|
152
|
+
- 15bf09d9c8: feat: support completely custom server, export render() api for render single page
|
|
153
|
+
feat: 支持完全自定义 Server,导出 render() 方法用来渲染单个页面
|
|
154
|
+
- cc971eabfc: refactor: move server plugin load logic in `@modern-js/core`
|
|
155
|
+
refactor:移除在 `@modern-js/core` 中的 server 插件加载逻辑
|
|
156
|
+
- 40ed587: feat: inject css chunk into html for streaming ssr
|
|
157
|
+
feat: streaming ssr 返回的 html 注入 css chunk
|
|
158
|
+
- 102d32e4ba: feat(server): add `req` and `res` to SSR context
|
|
159
|
+
|
|
160
|
+
feat(server): 添加 `req` 和 `res` 到 SSR context 中
|
|
161
|
+
|
|
162
|
+
- 3bbea92b2a: feat: support Hook、Middleware new API
|
|
163
|
+
feat: 支持 Hook、Middleware 的新 API
|
|
164
|
+
- 73cd29dd9f: fix(server): add favicon fallback handler
|
|
165
|
+
|
|
166
|
+
fix(server): 添加 favicon 兜底处理逻辑
|
|
167
|
+
|
|
168
|
+
- 18aaf42: fix: fix server loader redirects
|
|
169
|
+
fix: 修复 server loader 重定向错误
|
|
170
|
+
- 14b712da84: fix: use consistent alias type and default value across packages
|
|
171
|
+
|
|
172
|
+
fix: 在各个包中使用一致的 alias 类型定义和默认值
|
|
173
|
+
|
|
174
|
+
- Updated dependencies [15bf09d9c8]
|
|
175
|
+
- Updated dependencies [92f0ead]
|
|
176
|
+
- Updated dependencies [edd1cfb1af]
|
|
177
|
+
- Updated dependencies [cc971eabfc]
|
|
178
|
+
- Updated dependencies [5b9049f2e9]
|
|
179
|
+
- Updated dependencies [92004d1]
|
|
180
|
+
- Updated dependencies [b8bbe036c7]
|
|
181
|
+
- Updated dependencies [d5a31df781]
|
|
182
|
+
- Updated dependencies [dda38c9c3e]
|
|
183
|
+
- Updated dependencies [3bbea92b2a]
|
|
184
|
+
- Updated dependencies [abf3421a75]
|
|
185
|
+
- Updated dependencies [543be9558e]
|
|
186
|
+
- Updated dependencies [14b712da84]
|
|
187
|
+
- @modern-js/server-core@2.0.0-beta.2
|
|
188
|
+
- @modern-js/utils@2.0.0-beta.2
|
|
189
|
+
|
|
190
|
+
## 2.0.0-beta.1
|
|
191
|
+
|
|
192
|
+
### Major Changes
|
|
193
|
+
|
|
194
|
+
- dda38c9: chore: v2
|
|
195
|
+
|
|
196
|
+
### Minor Changes
|
|
23
197
|
|
|
24
|
-
|
|
198
|
+
- c9e800d39a: feat: support React18 streaming SSR
|
|
199
|
+
feat: 支持 React18 流式 SSR
|
|
200
|
+
- 543be9558e: feat: compile server loader and support handle loader request
|
|
201
|
+
feat: 编译 server loader 并支持处理 loader 的请求
|
|
25
202
|
|
|
26
203
|
### Patch Changes
|
|
27
204
|
|
|
28
|
-
-
|
|
29
|
-
|
|
205
|
+
- d032d49: export createHandle
|
|
206
|
+
导出 createHandle 函数
|
|
207
|
+
- 15bf09d9c8: feat: support completely custom server, export render() api for render single page
|
|
208
|
+
feat: 支持完全自定义 Server,导出 render() 方法用来渲染单个页面
|
|
209
|
+
- cc971eabfc: refactor: move server plugin load logic in `@modern-js/core`
|
|
210
|
+
refactor:移除在 `@modern-js/core` 中的 server 插件加载逻辑
|
|
211
|
+
- 40ed587: feat: inject css chunk into html for streaming ssr
|
|
212
|
+
feat: streaming ssr 返回的 html 注入 css chunk
|
|
213
|
+
- 102d32e4ba: feat(server): add `req` and `res` to SSR context
|
|
30
214
|
|
|
31
|
-
|
|
215
|
+
feat(server): 添加 `req` 和 `res` 到 SSR context 中
|
|
216
|
+
|
|
217
|
+
- 3bbea92b2a: feat: support Hook、Middleware new API
|
|
218
|
+
feat: 支持 Hook、Middleware 的新 API
|
|
219
|
+
- 73cd29dd9f: fix(server): add favicon fallback handler
|
|
220
|
+
|
|
221
|
+
fix(server): 添加 favicon 兜底处理逻辑
|
|
222
|
+
|
|
223
|
+
- 18aaf42: fix: fix server loader redirects
|
|
224
|
+
fix: 修复 server loader 重定向错误
|
|
225
|
+
- 14b712d: fix: use consistent alias type and default value across packages
|
|
226
|
+
|
|
227
|
+
fix: 在各个包中使用一致的 alias 类型定义和默认值
|
|
228
|
+
|
|
229
|
+
- Updated dependencies [15bf09d9c8]
|
|
230
|
+
- Updated dependencies [92f0ead]
|
|
231
|
+
- Updated dependencies [edd1cfb1af]
|
|
232
|
+
- Updated dependencies [cc971eabfc]
|
|
233
|
+
- Updated dependencies [5b9049f]
|
|
234
|
+
- Updated dependencies [92004d1]
|
|
235
|
+
- Updated dependencies [b8bbe036c7]
|
|
236
|
+
- Updated dependencies [d5a31df781]
|
|
237
|
+
- Updated dependencies [dda38c9]
|
|
238
|
+
- Updated dependencies [3bbea92b2a]
|
|
239
|
+
- Updated dependencies [abf3421]
|
|
240
|
+
- Updated dependencies [543be9558e]
|
|
241
|
+
- Updated dependencies [14b712d]
|
|
242
|
+
- @modern-js/server-core@2.0.0-beta.1
|
|
243
|
+
- @modern-js/utils@2.0.0-beta.1
|
|
244
|
+
|
|
245
|
+
## 2.0.0-beta.0
|
|
246
|
+
|
|
247
|
+
### Major Changes
|
|
248
|
+
|
|
249
|
+
- dda38c9: chore: v2
|
|
250
|
+
|
|
251
|
+
### Minor Changes
|
|
252
|
+
|
|
253
|
+
- c9e800d39: feat: support React18 streaming SSR
|
|
254
|
+
feat: 支持 React18 流式 SSR
|
|
255
|
+
- 543be95: feat: compile server loader and support handle loader request
|
|
256
|
+
feat: 编译 server loader 并支持处理 loader 的请求
|
|
32
257
|
|
|
33
258
|
### Patch Changes
|
|
34
259
|
|
|
35
|
-
-
|
|
36
|
-
|
|
260
|
+
- 15bf09d9c: feat: support completely custom server, export render() api for render single page
|
|
261
|
+
feat: 支持完全自定义 Server,导出 render() 方法用来渲染单个页面
|
|
262
|
+
- cc971eabf: refactor: move server plugin load logic in `@modern-js/core`
|
|
263
|
+
refactor:移除在 `@modern-js/core` 中的 server 插件加载逻辑
|
|
264
|
+
- 102d32e4b: feat(server): add `req` and `res` to SSR context
|
|
265
|
+
|
|
266
|
+
feat(server): 添加 `req` 和 `res` 到 SSR context 中
|
|
267
|
+
|
|
268
|
+
- 3bbea92b2: feat: support Hook、Middleware new API
|
|
269
|
+
feat: 支持 Hook、Middleware 的新 API
|
|
270
|
+
- 73cd29dd9: fix(server): add favicon fallback handler
|
|
271
|
+
|
|
272
|
+
fix(server): 添加 favicon 兜底处理逻辑
|
|
273
|
+
|
|
274
|
+
- 14b712d: fix: use consistent alias type and default value across packages
|
|
275
|
+
|
|
276
|
+
fix: 在各个包中使用一致的 alias 类型定义和默认值
|
|
277
|
+
|
|
278
|
+
- Updated dependencies [15bf09d9c]
|
|
279
|
+
- Updated dependencies [edd1cfb1a]
|
|
280
|
+
- Updated dependencies [cc971eabf]
|
|
281
|
+
- Updated dependencies [5b9049f]
|
|
282
|
+
- Updated dependencies [b8bbe036c]
|
|
283
|
+
- Updated dependencies [d5a31df78]
|
|
284
|
+
- Updated dependencies [dda38c9]
|
|
285
|
+
- Updated dependencies [3bbea92b2]
|
|
286
|
+
- Updated dependencies [abf3421]
|
|
287
|
+
- Updated dependencies [543be95]
|
|
288
|
+
- Updated dependencies [14b712d]
|
|
289
|
+
- @modern-js/server-core@2.0.0-beta.0
|
|
290
|
+
- @modern-js/utils@2.0.0-beta.0
|
|
37
291
|
|
|
38
292
|
## 1.21.2
|
|
39
293
|
|
|
@@ -1,30 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
mock:
|
|
3
|
-
server:
|
|
4
|
-
api:
|
|
5
|
-
shared:
|
|
6
|
-
lambda:
|
|
1
|
+
const AGGRED_DIR = {
|
|
2
|
+
mock: "config/mock",
|
|
3
|
+
server: "server",
|
|
4
|
+
api: "api",
|
|
5
|
+
shared: "shared",
|
|
6
|
+
lambda: "lambda"
|
|
7
7
|
};
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
ERENDER: 'SSR render failed',
|
|
21
|
-
EMICROINJ: 'Get micro-frontend info failed'
|
|
8
|
+
var ApiServerMode = /* @__PURE__ */ ((ApiServerMode2) => {
|
|
9
|
+
ApiServerMode2["func"] = "function";
|
|
10
|
+
ApiServerMode2["frame"] = "framework";
|
|
11
|
+
return ApiServerMode2;
|
|
12
|
+
})(ApiServerMode || {});
|
|
13
|
+
const ERROR_DIGEST = {
|
|
14
|
+
INIT: "Server init error",
|
|
15
|
+
ENOTF: "Page could not be found",
|
|
16
|
+
WARMUP: "SSR warmup failed",
|
|
17
|
+
EINTER: "Internal server error",
|
|
18
|
+
ERENDER: "SSR render failed",
|
|
19
|
+
EMICROINJ: "Get micro-frontend info failed"
|
|
22
20
|
};
|
|
23
|
-
|
|
24
|
-
404:
|
|
25
|
-
500:
|
|
21
|
+
const ERROR_PAGE_TEXT = {
|
|
22
|
+
404: "This page could not be found.",
|
|
23
|
+
500: "Internal Server Error."
|
|
24
|
+
};
|
|
25
|
+
const RUN_MODE = {
|
|
26
|
+
FULL: "full",
|
|
27
|
+
TYPE: "type"
|
|
28
|
+
};
|
|
29
|
+
export {
|
|
30
|
+
AGGRED_DIR,
|
|
31
|
+
ApiServerMode,
|
|
32
|
+
ERROR_DIGEST,
|
|
33
|
+
ERROR_PAGE_TEXT,
|
|
34
|
+
RUN_MODE
|
|
26
35
|
};
|
|
27
|
-
export const RUN_MODE = {
|
|
28
|
-
FULL: 'full',
|
|
29
|
-
TYPE: 'type'
|
|
30
|
-
};
|
package/dist/js/modern/index.js
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { Server } from "./server";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export { createProxyHandler } from "./libs/proxy";
|
|
2
|
+
import { ModernServer } from "./server/modern-server";
|
|
3
|
+
import { createProxyHandler } from "./libs/proxy";
|
|
5
4
|
export * from "./type";
|
|
6
5
|
export * from "./constants";
|
|
7
|
-
|
|
6
|
+
var src_default = (options) => {
|
|
8
7
|
if (options == null) {
|
|
9
|
-
throw new Error(
|
|
8
|
+
throw new Error("can not start mserver without options");
|
|
10
9
|
}
|
|
11
|
-
|
|
12
10
|
const server = new Server(options);
|
|
13
11
|
return server.init();
|
|
14
|
-
}
|
|
12
|
+
};
|
|
13
|
+
export {
|
|
14
|
+
ModernServer,
|
|
15
|
+
Server,
|
|
16
|
+
createProxyHandler,
|
|
17
|
+
src_default as default
|
|
18
|
+
};
|
|
@@ -1,238 +1,160 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import createEtag from 'etag';
|
|
7
|
-
import fresh from 'fresh';
|
|
1
|
+
import { URL } from "url";
|
|
2
|
+
import qs from "querystring";
|
|
3
|
+
import { Buffer } from "buffer";
|
|
4
|
+
import createEtag from "etag";
|
|
5
|
+
import fresh from "fresh";
|
|
8
6
|
import { headersWithoutCookie } from "../../utils";
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* http request
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* http response
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* url params
|
|
20
|
-
*/
|
|
21
|
-
get logger() {
|
|
22
|
-
return this.req.logger;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
get metrics() {
|
|
26
|
-
return this.req.metrics;
|
|
27
|
-
}
|
|
28
|
-
|
|
7
|
+
class ModernServerContext {
|
|
29
8
|
constructor(req, res, options) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
_defineProperty(this, "res", void 0);
|
|
33
|
-
|
|
34
|
-
_defineProperty(this, "params", {});
|
|
35
|
-
|
|
36
|
-
_defineProperty(this, "serverData", void 0);
|
|
37
|
-
|
|
38
|
-
_defineProperty(this, "options", {});
|
|
39
|
-
|
|
9
|
+
this.params = {};
|
|
10
|
+
this.options = {};
|
|
40
11
|
this.req = req;
|
|
41
12
|
this.res = res;
|
|
42
13
|
this.options = options || {};
|
|
43
14
|
this.serverData = {};
|
|
44
15
|
this.bind();
|
|
45
16
|
}
|
|
46
|
-
|
|
17
|
+
get logger() {
|
|
18
|
+
return this.req.logger;
|
|
19
|
+
}
|
|
20
|
+
get metrics() {
|
|
21
|
+
return this.req.metrics;
|
|
22
|
+
}
|
|
47
23
|
bind() {
|
|
48
|
-
const {
|
|
49
|
-
|
|
50
|
-
res
|
|
51
|
-
} = this;
|
|
52
|
-
|
|
53
|
-
req.get = key => this.getReqHeader(key);
|
|
54
|
-
|
|
24
|
+
const { req, res } = this;
|
|
25
|
+
req.get = (key) => this.getReqHeader(key);
|
|
55
26
|
res.set = (key, value) => this.res.setHeader(key, value);
|
|
56
|
-
|
|
57
|
-
res.send = body => {
|
|
27
|
+
res.send = (body) => {
|
|
58
28
|
this.send(body);
|
|
59
29
|
};
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
|
|
30
|
+
}
|
|
63
31
|
send(body) {
|
|
64
32
|
try {
|
|
65
|
-
const generateETag = !this.res.getHeader(
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const encoding = typeof body === 'string' ? 'utf-8' : undefined;
|
|
33
|
+
const generateETag = !this.res.getHeader("ETag") && this.options.etag;
|
|
34
|
+
if (body !== void 0 && generateETag) {
|
|
35
|
+
const encoding = typeof body === "string" ? "utf-8" : void 0;
|
|
69
36
|
const buf = !Buffer.isBuffer(body) ? Buffer.from(body, encoding) : body;
|
|
70
|
-
const etag = createEtag(buf, {
|
|
71
|
-
weak: true
|
|
72
|
-
});
|
|
73
|
-
|
|
37
|
+
const etag = createEtag(buf, { weak: true });
|
|
74
38
|
if (etag) {
|
|
75
|
-
this.res.setHeader(
|
|
39
|
+
this.res.setHeader("ETag", etag);
|
|
76
40
|
}
|
|
77
41
|
}
|
|
78
|
-
|
|
79
42
|
if (this.fresh) {
|
|
80
43
|
this.status = 304;
|
|
81
44
|
}
|
|
82
45
|
} catch (e) {
|
|
83
46
|
this.logger.error(e.message);
|
|
84
47
|
}
|
|
85
|
-
|
|
86
48
|
this.res.end(body);
|
|
87
49
|
}
|
|
88
|
-
|
|
89
50
|
setParams(params) {
|
|
90
51
|
this.params = params;
|
|
91
52
|
}
|
|
92
|
-
|
|
93
53
|
setServerData(key, value) {
|
|
94
54
|
this.serverData[key] = value;
|
|
95
55
|
}
|
|
96
|
-
|
|
97
56
|
getReqHeader(key) {
|
|
98
|
-
const {
|
|
99
|
-
req
|
|
100
|
-
} = this;
|
|
57
|
+
const { req } = this;
|
|
101
58
|
const field = key.toLowerCase();
|
|
102
|
-
|
|
103
59
|
switch (field) {
|
|
104
|
-
case
|
|
105
|
-
case
|
|
106
|
-
return req.headers.referrer || req.headers.referer ||
|
|
107
|
-
|
|
60
|
+
case "referer":
|
|
61
|
+
case "referrer":
|
|
62
|
+
return req.headers.referrer || req.headers.referer || "";
|
|
108
63
|
default:
|
|
109
|
-
return req.headers[field] ||
|
|
64
|
+
return req.headers[field] || "";
|
|
110
65
|
}
|
|
111
66
|
}
|
|
112
|
-
|
|
113
67
|
get fresh() {
|
|
114
|
-
const {
|
|
115
|
-
|
|
116
|
-
res,
|
|
117
|
-
method
|
|
118
|
-
} = this; // GET or HEAD for weak freshness validation only
|
|
119
|
-
|
|
120
|
-
if ('GET' !== method && 'HEAD' !== method) {
|
|
68
|
+
const { status, res, method } = this;
|
|
69
|
+
if ("GET" !== method && "HEAD" !== method) {
|
|
121
70
|
return false;
|
|
122
71
|
}
|
|
123
|
-
|
|
124
72
|
if (status >= 200 && status < 300 || 304 === status) {
|
|
125
73
|
return fresh(this.headers, {
|
|
126
|
-
etag: res.getHeader(
|
|
127
|
-
|
|
74
|
+
etag: res.getHeader("ETag"),
|
|
75
|
+
"last-modified": res.getHeader("Last-Modified")
|
|
128
76
|
});
|
|
129
77
|
}
|
|
130
|
-
|
|
131
78
|
return false;
|
|
132
79
|
}
|
|
133
|
-
/* request property */
|
|
134
|
-
|
|
135
|
-
|
|
136
80
|
get headers() {
|
|
137
81
|
return this.req.headers;
|
|
138
82
|
}
|
|
139
|
-
|
|
140
83
|
get method() {
|
|
141
84
|
return this.req.method;
|
|
142
85
|
}
|
|
143
|
-
|
|
144
86
|
get url() {
|
|
145
|
-
return this.req.url ||
|
|
87
|
+
return this.req.url || "";
|
|
146
88
|
}
|
|
147
|
-
|
|
148
89
|
set url(val) {
|
|
149
90
|
this.req.url = val;
|
|
150
91
|
}
|
|
151
|
-
|
|
152
92
|
get host() {
|
|
153
|
-
let host = this.getReqHeader(
|
|
154
|
-
|
|
93
|
+
let host = this.getReqHeader("X-Forwarded-Host");
|
|
155
94
|
if (!host) {
|
|
156
|
-
host = this.getReqHeader(
|
|
95
|
+
host = this.getReqHeader("Host");
|
|
157
96
|
}
|
|
158
|
-
|
|
159
|
-
return host.split(/\s*,\s*/, 1)[0] || '';
|
|
97
|
+
return host.split(/\s*,\s*/, 1)[0] || "";
|
|
160
98
|
}
|
|
161
|
-
|
|
162
99
|
get protocol() {
|
|
163
100
|
if (this.req.socket.encrypted) {
|
|
164
|
-
return
|
|
101
|
+
return "https";
|
|
165
102
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
return proto ? proto.split(/\s*,\s*/, 1)[0] : 'http';
|
|
103
|
+
const proto = this.getReqHeader("X-Forwarded-Proto");
|
|
104
|
+
return proto ? proto.split(/\s*,\s*/, 1)[0] : "http";
|
|
169
105
|
}
|
|
170
|
-
|
|
171
106
|
get origin() {
|
|
172
107
|
return `${this.protocol}://${this.host}`;
|
|
173
108
|
}
|
|
174
|
-
|
|
175
109
|
get href() {
|
|
176
110
|
return this.origin + this.url;
|
|
177
111
|
}
|
|
178
|
-
|
|
179
112
|
get parsedURL() {
|
|
180
113
|
const url = new URL(this.req.url, this.origin);
|
|
181
114
|
return url;
|
|
182
115
|
}
|
|
183
|
-
|
|
184
116
|
get path() {
|
|
185
117
|
return this.parsedURL.pathname;
|
|
186
118
|
}
|
|
187
|
-
|
|
188
119
|
set path(p) {
|
|
189
|
-
const url = new URL(this.req.url, this.origin);
|
|
190
|
-
|
|
120
|
+
const url = new URL(this.req.url, this.origin);
|
|
191
121
|
if (!url || !p) {
|
|
192
122
|
return;
|
|
193
123
|
}
|
|
194
|
-
|
|
195
124
|
if (url.pathname === p) {
|
|
196
125
|
return;
|
|
197
126
|
}
|
|
198
|
-
|
|
199
127
|
url.pathname = p;
|
|
200
128
|
this.url = url.toString();
|
|
201
129
|
}
|
|
202
|
-
|
|
203
130
|
get querystring() {
|
|
204
131
|
if (!this.req) {
|
|
205
|
-
return
|
|
132
|
+
return "";
|
|
206
133
|
}
|
|
207
|
-
|
|
208
|
-
return this.parsedURL.search.replace(/^\?/, '') || '';
|
|
134
|
+
return this.parsedURL.search.replace(/^\?/, "") || "";
|
|
209
135
|
}
|
|
210
|
-
|
|
211
136
|
get query() {
|
|
212
137
|
const str = this.querystring;
|
|
213
138
|
return qs.parse(str);
|
|
214
139
|
}
|
|
215
|
-
/* response property */
|
|
216
|
-
|
|
217
|
-
|
|
218
140
|
get status() {
|
|
219
141
|
return this.res.statusCode;
|
|
220
142
|
}
|
|
221
|
-
|
|
222
143
|
set status(statusCode) {
|
|
223
144
|
this.res.statusCode = statusCode;
|
|
224
145
|
}
|
|
225
|
-
/**
|
|
226
|
-
* 判断链接是否已经关闭
|
|
227
|
-
*/
|
|
228
|
-
|
|
229
|
-
|
|
230
146
|
resHasHandled() {
|
|
231
147
|
return this.res.writableEnded;
|
|
232
148
|
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
149
|
+
error(dig, e = "") {
|
|
150
|
+
this.logger.error(
|
|
151
|
+
`Web Server Error - ${dig}, error = %s, req.url = %s, req.headers = %o`,
|
|
152
|
+
e instanceof Error ? e.stack || e.message : e,
|
|
153
|
+
this.path,
|
|
154
|
+
headersWithoutCookie(this.headers)
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
export {
|
|
159
|
+
ModernServerContext
|
|
160
|
+
};
|