@shuvi/platform-web 1.0.33 → 1.0.35
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/esm/shared/appTypes.d.ts +0 -2
- package/esm/shared/renderTypes.d.ts +0 -2
- package/esm/shuvi-app/app/server.js +3 -2
- package/esm/shuvi-app/react/view/ReactView.server.jsx +3 -2
- package/lib/node/features/filesystem-routes/api/middleware.js +4 -2
- package/lib/node/features/filesystem-routes/middleware/middleware.js +4 -2
- package/lib/node/features/html-render/lib/getPageMiddleware.js +11 -7
- package/lib/node/features/html-render/lib/renderToHTML.js +8 -5
- package/lib/node/features/html-render/lib/renderer/ssr.js +1 -3
- package/lib/node/features/html-render/serverHooks.d.ts +3 -3
- package/lib/shared/appTypes.d.ts +0 -2
- package/lib/shared/renderTypes.d.ts +0 -2
- package/package.json +11 -11
package/esm/shared/appTypes.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { IPageRouteRecord, IAppData, IAppState, Application as _Application } from '@shuvi/platform-shared/shared';
|
|
2
2
|
import { ApplicationImpl as _ApplicationImpl } from '@shuvi/platform-shared/shuvi-app/application';
|
|
3
3
|
import type { ShuviRequest } from '@shuvi/service';
|
|
4
|
-
import { Span } from '@shuvi/service/lib/trace';
|
|
5
4
|
export interface AppConfig {
|
|
6
5
|
ssr: boolean;
|
|
7
6
|
}
|
|
@@ -11,7 +10,6 @@ export interface CreateAppServer {
|
|
|
11
10
|
(options: {
|
|
12
11
|
req: ShuviRequest;
|
|
13
12
|
ssr: boolean;
|
|
14
|
-
serverCreateAppTrace: Span;
|
|
15
13
|
}): InternalApplication;
|
|
16
14
|
}
|
|
17
15
|
export interface CreateAppClient {
|
|
@@ -2,7 +2,6 @@ import type { ShuviRequest } from '@shuvi/service';
|
|
|
2
2
|
import { Response, IAppData } from '@shuvi/platform-shared/shared';
|
|
3
3
|
import { IManifest } from '../shared';
|
|
4
4
|
import { Application } from './appTypes';
|
|
5
|
-
import { Span } from '@shuvi/service/lib/trace';
|
|
6
5
|
export declare type IRenderViewOptions = {
|
|
7
6
|
app: Application;
|
|
8
7
|
};
|
|
@@ -39,7 +38,6 @@ export interface IClientRendererOptions<ExtraAppData = {}> extends IRenderOption
|
|
|
39
38
|
export interface IServerRendererOptions extends IRenderOptions {
|
|
40
39
|
req: ShuviRequest;
|
|
41
40
|
manifest: IManifest;
|
|
42
|
-
serverRequestTrace: Span;
|
|
43
41
|
}
|
|
44
42
|
export interface IViewClient<ExtraAppData = {}> extends IView<IClientRendererOptions<ExtraAppData>> {
|
|
45
43
|
}
|
|
@@ -17,7 +17,7 @@ import logger from '@shuvi/utils/logger';
|
|
|
17
17
|
import { serializeServerError } from '../helper/serializeServerError';
|
|
18
18
|
const { SHUVI_SERVER_RUN_LOADERS } = SERVER_CREATE_APP.events;
|
|
19
19
|
export const createApp = options => {
|
|
20
|
-
const { req, ssr
|
|
20
|
+
const { req, ssr } = options;
|
|
21
21
|
const history = createMemoryHistory({
|
|
22
22
|
initialEntries: [(req && req.url) || '/'],
|
|
23
23
|
initialIndex: 0
|
|
@@ -29,7 +29,8 @@ export const createApp = options => {
|
|
|
29
29
|
let app;
|
|
30
30
|
if (ssr) {
|
|
31
31
|
router.beforeResolve((to, from, next) => __awaiter(void 0, void 0, void 0, function* () {
|
|
32
|
-
const
|
|
32
|
+
const { serverCreateAppTrace } = req._traces;
|
|
33
|
+
const runLoadersTrace = serverCreateAppTrace.traceChild(SHUVI_SERVER_RUN_LOADERS.name, { [SHUVI_SERVER_RUN_LOADERS.attrs.requestId.name]: req._requestId });
|
|
33
34
|
const pageLoaders = yield app.getLoaders();
|
|
34
35
|
const matches = getRouteMatchesWithInvalidLoader(to, from, pageLoaders);
|
|
35
36
|
try {
|
|
@@ -22,7 +22,7 @@ import isThirdSite from '../../helper/isThirdSite';
|
|
|
22
22
|
const { SHUVI_SERVER_RENDER_TO_STRING } = SERVER_REQUEST.events;
|
|
23
23
|
export class ReactServerView {
|
|
24
24
|
constructor() {
|
|
25
|
-
this.renderApp = ({ req, app, manifest
|
|
25
|
+
this.renderApp = ({ req, app, manifest }) => __awaiter(this, void 0, void 0, function* () {
|
|
26
26
|
yield Loadable.preloadAll();
|
|
27
27
|
const { router, appComponent: AppComponent, setError: setAppError } = app;
|
|
28
28
|
yield router.ready;
|
|
@@ -54,7 +54,8 @@ export class ReactServerView {
|
|
|
54
54
|
</LoadableContext.Provider>
|
|
55
55
|
</AppContainer>
|
|
56
56
|
</Router>);
|
|
57
|
-
const
|
|
57
|
+
const { serverRequestTrace } = req._traces;
|
|
58
|
+
const renderToStringTrace = serverRequestTrace.traceChild(SHUVI_SERVER_RENDER_TO_STRING.name, { [SHUVI_SERVER_RENDER_TO_STRING.attrs.requestId.name]: req._requestId });
|
|
58
59
|
try {
|
|
59
60
|
htmlContent = renderToString(RootApp);
|
|
60
61
|
renderToStringTrace.setAttribute(SHUVI_SERVER_RENDER_TO_STRING.attrs.error.name, false);
|
|
@@ -32,8 +32,10 @@ function middleware(_ctx) {
|
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
if (tempApiModule) {
|
|
35
|
-
const { serverRequestTrace } =
|
|
36
|
-
const runApiMiddlewareTrace = serverRequestTrace.traceChild(SHUVI_SERVER_RUN_API_MIDDLEWARE.name
|
|
35
|
+
const { serverRequestTrace } = req._traces;
|
|
36
|
+
const runApiMiddlewareTrace = serverRequestTrace.traceChild(SHUVI_SERVER_RUN_API_MIDDLEWARE.name, {
|
|
37
|
+
[SHUVI_SERVER_RUN_API_MIDDLEWARE.attrs.requestId.name]: req._requestId
|
|
38
|
+
});
|
|
37
39
|
try {
|
|
38
40
|
const { config, default: resolver } = tempApiModule;
|
|
39
41
|
yield (0, apiRouteHandler_1.apiRouteHandler)(req, res, resolver, (config === null || config === void 0 ? void 0 : config.api) || { bodyParser: true });
|
|
@@ -18,10 +18,12 @@ const resources_1 = __importDefault(require("@shuvi/service/lib/resources"));
|
|
|
18
18
|
const trace_1 = require("@shuvi/shared/constants/trace");
|
|
19
19
|
const { SHUVI_SERVER_RUN_MIDDLEWARE_ROUTES } = trace_1.SERVER_REQUEST.events;
|
|
20
20
|
function middleware(_api) {
|
|
21
|
-
const { serverCreateAppTrace } = _api.traces;
|
|
22
21
|
return function (req, res, next) {
|
|
23
22
|
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
-
const
|
|
23
|
+
const { serverCreateAppTrace } = req._traces;
|
|
24
|
+
const middlewareRoutesTrace = serverCreateAppTrace.traceChild(SHUVI_SERVER_RUN_MIDDLEWARE_ROUTES.name, {
|
|
25
|
+
[SHUVI_SERVER_RUN_MIDDLEWARE_ROUTES.attrs.requestId.name]: req._requestId
|
|
26
|
+
});
|
|
25
27
|
try {
|
|
26
28
|
const { middlewareRoutes = [] } = resources_1.default.server;
|
|
27
29
|
// match path for get middlewares
|
|
@@ -16,9 +16,9 @@ const trace_1 = require("@shuvi/shared/constants/trace");
|
|
|
16
16
|
const renderToHTML_1 = require("./renderToHTML");
|
|
17
17
|
const { SHUVI_SERVER_SEND_HTML_ORIGINAL, SHUVI_SERVER_SEND_HTML_HOOK, SHUVI_SERVER_RENDER_TO_HTML, SHUVI_SERVER_RUN_PAGE_MIDDLEWARE } = trace_1.SERVER_REQUEST.events;
|
|
18
18
|
function createPageHandler(serverPluginContext) {
|
|
19
|
-
const { traces: { serverRequestTrace } } = serverPluginContext;
|
|
20
19
|
const wrappedSendHtml = (html, { req, res }) => __awaiter(this, void 0, void 0, function* () {
|
|
21
|
-
const
|
|
20
|
+
const { serverRequestTrace } = req._traces;
|
|
21
|
+
const sendHtmlOriginalTrace = serverRequestTrace.traceChild(SHUVI_SERVER_SEND_HTML_ORIGINAL.name, { [SHUVI_SERVER_SEND_HTML_ORIGINAL.attrs.requestId.name]: req._requestId });
|
|
22
22
|
(0, utils_1.sendHTML)(req, res, html);
|
|
23
23
|
sendHtmlOriginalTrace.stop();
|
|
24
24
|
});
|
|
@@ -26,8 +26,11 @@ function createPageHandler(serverPluginContext) {
|
|
|
26
26
|
let pendingSendHtml;
|
|
27
27
|
return function (req, res) {
|
|
28
28
|
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
const { serverRequestTrace } = req._traces;
|
|
29
30
|
const result = yield serverRequestTrace
|
|
30
|
-
.traceChild(SHUVI_SERVER_RENDER_TO_HTML.name
|
|
31
|
+
.traceChild(SHUVI_SERVER_RENDER_TO_HTML.name, {
|
|
32
|
+
[SHUVI_SERVER_RENDER_TO_HTML.attrs.requestId.name]: req._requestId
|
|
33
|
+
})
|
|
31
34
|
.traceAsyncFn(() => (0, renderToHTML_1.renderToHTML)({
|
|
32
35
|
req: req,
|
|
33
36
|
serverPluginContext
|
|
@@ -49,8 +52,7 @@ function createPageHandler(serverPluginContext) {
|
|
|
49
52
|
}
|
|
50
53
|
sendHtml = yield pendingSendHtml;
|
|
51
54
|
}
|
|
52
|
-
const
|
|
53
|
-
const sendHtmlHookTrace = serverRequestTrace.traceChild(SHUVI_SERVER_SEND_HTML_HOOK.name);
|
|
55
|
+
const sendHtmlHookTrace = serverRequestTrace.traceChild(SHUVI_SERVER_SEND_HTML_HOOK.name, { [SHUVI_SERVER_SEND_HTML_HOOK.attrs.requestId.name]: req._requestId });
|
|
54
56
|
yield sendHtml(textResp.data, { req, res });
|
|
55
57
|
sendHtmlHookTrace.stop();
|
|
56
58
|
}
|
|
@@ -68,8 +70,10 @@ function getPageMiddleware(api) {
|
|
|
68
70
|
let pendingPageHandler;
|
|
69
71
|
return function (req, res, next) {
|
|
70
72
|
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
-
const {
|
|
72
|
-
const runPageMiddlewareTrace = serverRequestTrace.traceChild(SHUVI_SERVER_RUN_PAGE_MIDDLEWARE.name
|
|
73
|
+
const { serverRequestTrace } = req._traces;
|
|
74
|
+
const runPageMiddlewareTrace = serverRequestTrace.traceChild(SHUVI_SERVER_RUN_PAGE_MIDDLEWARE.name, {
|
|
75
|
+
[SHUVI_SERVER_RUN_PAGE_MIDDLEWARE.attrs.requestId.name]: req._requestId
|
|
76
|
+
});
|
|
73
77
|
if (!pageHandler) {
|
|
74
78
|
if (!pendingPageHandler) {
|
|
75
79
|
pendingPageHandler =
|
|
@@ -20,18 +20,21 @@ function renderToHTML({ req, serverPluginContext }) {
|
|
|
20
20
|
return __awaiter(this, void 0, void 0, function* () {
|
|
21
21
|
let result;
|
|
22
22
|
const renderer = new renderer_1.Renderer({ serverPluginContext });
|
|
23
|
-
const {
|
|
23
|
+
const { serverCreateAppTrace } = req._traces;
|
|
24
24
|
const { application } = resources_1.default.server;
|
|
25
25
|
const app = serverCreateAppTrace
|
|
26
|
-
.traceChild(trace_1.SERVER_CREATE_APP.events.SHUVI_SERVER_CREATE_APP.name
|
|
26
|
+
.traceChild(trace_1.SERVER_CREATE_APP.events.SHUVI_SERVER_CREATE_APP.name, {
|
|
27
|
+
[trace_1.SERVER_CREATE_APP.events.SHUVI_SERVER_CREATE_APP.attrs.requestId.name]: req._requestId
|
|
28
|
+
})
|
|
27
29
|
.traceFn(() => application.createApp({
|
|
28
30
|
req,
|
|
29
|
-
ssr: serverPluginContext.config.ssr
|
|
30
|
-
serverCreateAppTrace
|
|
31
|
+
ssr: serverPluginContext.config.ssr
|
|
31
32
|
}));
|
|
32
33
|
try {
|
|
33
34
|
yield serverCreateAppTrace
|
|
34
|
-
.traceChild(trace_1.SERVER_CREATE_APP.events.SHUVI_SERVER_APP_INIT.name
|
|
35
|
+
.traceChild(trace_1.SERVER_CREATE_APP.events.SHUVI_SERVER_APP_INIT.name, {
|
|
36
|
+
[trace_1.SERVER_CREATE_APP.events.SHUVI_SERVER_APP_INIT.attrs.requestId.name]: req._requestId
|
|
37
|
+
})
|
|
35
38
|
.traceAsyncFn(() => app.init());
|
|
36
39
|
result = yield renderer.renderView({
|
|
37
40
|
req,
|
|
@@ -22,7 +22,6 @@ class SsrRenderer extends base_1.BaseRenderer {
|
|
|
22
22
|
return __awaiter(this, void 0, void 0, function* () {
|
|
23
23
|
const { store, router, context } = app;
|
|
24
24
|
const serverPluginContext = this._serverPluginContext;
|
|
25
|
-
const { traces: { serverRequestTrace } } = serverPluginContext;
|
|
26
25
|
const { view } = resources_1.default.server;
|
|
27
26
|
if (!router) {
|
|
28
27
|
throw new Error('router is null');
|
|
@@ -30,8 +29,7 @@ class SsrRenderer extends base_1.BaseRenderer {
|
|
|
30
29
|
const result = yield view.renderApp({
|
|
31
30
|
app,
|
|
32
31
|
req,
|
|
33
|
-
manifest: resources_1.default.clientManifest
|
|
34
|
-
serverRequestTrace
|
|
32
|
+
manifest: resources_1.default.clientManifest
|
|
35
33
|
});
|
|
36
34
|
if ((0, shared_1.isResponse)(result)) {
|
|
37
35
|
return result;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import {
|
|
2
|
+
import { ServerResponse } from 'http';
|
|
3
3
|
import { ShuviRequest } from '@shuvi/service';
|
|
4
4
|
import { IAppContext } from '@shuvi/platform-shared/shared';
|
|
5
5
|
import { IHtmlDocument } from '../html-render';
|
|
@@ -7,9 +7,9 @@ export interface ModifyHtmlContext {
|
|
|
7
7
|
req: ShuviRequest;
|
|
8
8
|
appContext: IAppContext;
|
|
9
9
|
}
|
|
10
|
-
export declare type IHandlePageRequest = (req:
|
|
10
|
+
export declare type IHandlePageRequest = (req: ShuviRequest, res: ServerResponse) => Promise<void>;
|
|
11
11
|
export declare type RequestContext = {
|
|
12
|
-
req:
|
|
12
|
+
req: ShuviRequest;
|
|
13
13
|
res: ServerResponse;
|
|
14
14
|
};
|
|
15
15
|
export declare type ISendHtml = (html: string, requestContext: RequestContext) => Promise<void>;
|
package/lib/shared/appTypes.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { IPageRouteRecord, IAppData, IAppState, Application as _Application } from '@shuvi/platform-shared/shared';
|
|
2
2
|
import { ApplicationImpl as _ApplicationImpl } from '@shuvi/platform-shared/shuvi-app/application';
|
|
3
3
|
import type { ShuviRequest } from '@shuvi/service';
|
|
4
|
-
import { Span } from '@shuvi/service/lib/trace';
|
|
5
4
|
export interface AppConfig {
|
|
6
5
|
ssr: boolean;
|
|
7
6
|
}
|
|
@@ -11,7 +10,6 @@ export interface CreateAppServer {
|
|
|
11
10
|
(options: {
|
|
12
11
|
req: ShuviRequest;
|
|
13
12
|
ssr: boolean;
|
|
14
|
-
serverCreateAppTrace: Span;
|
|
15
13
|
}): InternalApplication;
|
|
16
14
|
}
|
|
17
15
|
export interface CreateAppClient {
|
|
@@ -2,7 +2,6 @@ import type { ShuviRequest } from '@shuvi/service';
|
|
|
2
2
|
import { Response, IAppData } from '@shuvi/platform-shared/shared';
|
|
3
3
|
import { IManifest } from '../shared';
|
|
4
4
|
import { Application } from './appTypes';
|
|
5
|
-
import { Span } from '@shuvi/service/lib/trace';
|
|
6
5
|
export declare type IRenderViewOptions = {
|
|
7
6
|
app: Application;
|
|
8
7
|
};
|
|
@@ -39,7 +38,6 @@ export interface IClientRendererOptions<ExtraAppData = {}> extends IRenderOption
|
|
|
39
38
|
export interface IServerRendererOptions extends IRenderOptions {
|
|
40
39
|
req: ShuviRequest;
|
|
41
40
|
manifest: IManifest;
|
|
42
|
-
serverRequestTrace: Span;
|
|
43
41
|
}
|
|
44
42
|
export interface IViewClient<ExtraAppData = {}> extends IView<IClientRendererOptions<ExtraAppData>> {
|
|
45
43
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shuvi/platform-web",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.35",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/shuvijs/shuvi.git",
|
|
@@ -72,15 +72,15 @@
|
|
|
72
72
|
},
|
|
73
73
|
"dependencies": {
|
|
74
74
|
"@next/react-refresh-utils": "12.1.6",
|
|
75
|
-
"@shuvi/error-overlay": "1.0.
|
|
76
|
-
"@shuvi/hook": "1.0.
|
|
77
|
-
"@shuvi/platform-shared": "1.0.
|
|
78
|
-
"@shuvi/router": "1.0.
|
|
79
|
-
"@shuvi/router-react": "1.0.
|
|
80
|
-
"@shuvi/runtime": "1.0.
|
|
81
|
-
"@shuvi/shared": "1.0.
|
|
82
|
-
"@shuvi/toolpack": "1.0.
|
|
83
|
-
"@shuvi/utils": "1.0.
|
|
75
|
+
"@shuvi/error-overlay": "1.0.35",
|
|
76
|
+
"@shuvi/hook": "1.0.35",
|
|
77
|
+
"@shuvi/platform-shared": "1.0.35",
|
|
78
|
+
"@shuvi/router": "1.0.35",
|
|
79
|
+
"@shuvi/router-react": "1.0.35",
|
|
80
|
+
"@shuvi/runtime": "1.0.35",
|
|
81
|
+
"@shuvi/shared": "1.0.35",
|
|
82
|
+
"@shuvi/toolpack": "1.0.35",
|
|
83
|
+
"@shuvi/utils": "1.0.35",
|
|
84
84
|
"content-type": "1.0.4",
|
|
85
85
|
"core-js": "3.6.5",
|
|
86
86
|
"doura": "0.0.11",
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
"whatwg-fetch": "3.0.0"
|
|
99
99
|
},
|
|
100
100
|
"peerDependencies": {
|
|
101
|
-
"@shuvi/service": "1.0.
|
|
101
|
+
"@shuvi/service": "1.0.35"
|
|
102
102
|
},
|
|
103
103
|
"devDependencies": {
|
|
104
104
|
"@shuvi/service": "workspace:*",
|