@shuvi/service 1.0.33 → 1.0.34
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/server/http-server/router.js +7 -4
- package/lib/server/http-server/server.js +5 -0
- package/lib/server/http-server/serverTypes.d.ts +6 -0
- package/lib/server/middlewares/getAssetMiddleware.js +2 -2
- package/lib/server/plugin.d.ts +0 -5
- package/lib/server/plugin.js +1 -6
- package/lib/server/trace.d.ts +4 -2
- package/lib/server/trace.js +12 -3
- package/package.json +11 -9
|
@@ -8,8 +8,7 @@ const util_1 = require("util");
|
|
|
8
8
|
const utils_1 = require("@shuvi/utils");
|
|
9
9
|
const invariant_1 = __importDefault(require("@shuvi/utils/invariant"));
|
|
10
10
|
const router_1 = require("@shuvi/router");
|
|
11
|
-
const trace_1 = require("
|
|
12
|
-
const trace_2 = require("@shuvi/shared/constants/trace");
|
|
11
|
+
const trace_1 = require("@shuvi/shared/constants/trace");
|
|
13
12
|
class RouterImpl {
|
|
14
13
|
constructor(options) {
|
|
15
14
|
this._routes = [];
|
|
@@ -37,8 +36,12 @@ class RouterImpl {
|
|
|
37
36
|
return this;
|
|
38
37
|
}
|
|
39
38
|
handleRequest(req, res, out) {
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
const { serverRequestTrace } = req._traces;
|
|
40
|
+
serverRequestTrace
|
|
41
|
+
.traceChild(trace_1.SERVER_REQUEST.events.SHUVI_SERVER_HANDLE_REQUEST_START.name, {
|
|
42
|
+
[trace_1.SERVER_REQUEST.events.SHUVI_SERVER_HANDLE_REQUEST_START.attrs
|
|
43
|
+
.requestId]: req._requestId
|
|
44
|
+
})
|
|
42
45
|
.stop();
|
|
43
46
|
let index = 0;
|
|
44
47
|
let done = err => out(err);
|
|
@@ -38,11 +38,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
38
38
|
exports.Server = void 0;
|
|
39
39
|
const http = __importStar(require("http"));
|
|
40
40
|
const url_1 = require("url");
|
|
41
|
+
const uuid_1 = require("uuid");
|
|
41
42
|
const router_1 = require("@shuvi/router");
|
|
42
43
|
const logger_1 = __importDefault(require("@shuvi/utils/logger"));
|
|
43
44
|
const detect_port_1 = __importDefault(require("detect-port"));
|
|
44
45
|
const utils_1 = require("../utils");
|
|
45
46
|
const router_2 = require("./router");
|
|
47
|
+
const trace_1 = require("../trace");
|
|
46
48
|
const prepareReq = (req, res, next) => {
|
|
47
49
|
const url = (0, url_1.parse)(req.url, false);
|
|
48
50
|
req.pathname = url.pathname || '/';
|
|
@@ -140,6 +142,9 @@ class Server {
|
|
|
140
142
|
return router;
|
|
141
143
|
}
|
|
142
144
|
_handleRequest(req, res, next) {
|
|
145
|
+
const requestId = (0, uuid_1.v4)();
|
|
146
|
+
req._traces = (0, trace_1.initTrace)(requestId);
|
|
147
|
+
req._requestId = requestId;
|
|
143
148
|
this._router.handleRequest(req, res, next || ((err) => this._finalhandler(req, res, err)));
|
|
144
149
|
}
|
|
145
150
|
_checkPort(port) {
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { IncomingMessage, ServerResponse } from 'http';
|
|
3
3
|
import { IParams, ParsedQuery as IQuery } from '@shuvi/router';
|
|
4
|
+
import { Span } from '../../trace';
|
|
4
5
|
export interface IRequest extends IncomingMessage {
|
|
5
6
|
url: string;
|
|
6
7
|
pathname: string;
|
|
7
8
|
query: IQuery;
|
|
8
9
|
params: IParams;
|
|
10
|
+
_requestId: string;
|
|
11
|
+
_traces: {
|
|
12
|
+
serverCreateAppTrace: Span;
|
|
13
|
+
serverRequestTrace: Span;
|
|
14
|
+
};
|
|
9
15
|
}
|
|
10
16
|
export interface IResponse extends ServerResponse {
|
|
11
17
|
}
|
|
@@ -16,7 +16,7 @@ const utils_1 = require("../utils");
|
|
|
16
16
|
const { SHUVI_SERVER_RUN_ASSET_MIDDLEWARE } = trace_1.SERVER_REQUEST.events;
|
|
17
17
|
const getAssetMiddleware = (context) => {
|
|
18
18
|
return (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
|
|
19
|
-
const { serverRequestTrace } =
|
|
19
|
+
const { serverRequestTrace } = req._traces;
|
|
20
20
|
const candidatePaths = [];
|
|
21
21
|
try {
|
|
22
22
|
const fullUrl = new URL(req.url, `http://${req.headers.host}`);
|
|
@@ -46,7 +46,7 @@ const getAssetMiddleware = (context) => {
|
|
|
46
46
|
if (!(0, utils_1.isStaticFileExist)(assetAbsPath)) {
|
|
47
47
|
continue;
|
|
48
48
|
}
|
|
49
|
-
const runAssetMiddlewareTrace = serverRequestTrace.traceChild(SHUVI_SERVER_RUN_ASSET_MIDDLEWARE.name);
|
|
49
|
+
const runAssetMiddlewareTrace = serverRequestTrace.traceChild(SHUVI_SERVER_RUN_ASSET_MIDDLEWARE.name, { [SHUVI_SERVER_RUN_ASSET_MIDDLEWARE.attrs.requestId]: req._requestId });
|
|
50
50
|
let err = null;
|
|
51
51
|
try {
|
|
52
52
|
yield (0, utils_1.serveStatic)(req, res, assetAbsPath);
|
package/lib/server/plugin.d.ts
CHANGED
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
import { IPluginInstance, IPluginHandlers, HookMap } from '@shuvi/hook';
|
|
2
2
|
import { IPluginContext } from '../core';
|
|
3
3
|
import { CustomServerPluginHooks } from './pluginTypes';
|
|
4
|
-
import { Span } from '../trace';
|
|
5
4
|
export * from './pluginTypes';
|
|
6
5
|
export interface IServerPluginContext extends IPluginContext {
|
|
7
6
|
serverPluginRunner: PluginManager['runner'];
|
|
8
|
-
traces: {
|
|
9
|
-
serverCreateAppTrace: Span;
|
|
10
|
-
serverRequestTrace: Span;
|
|
11
|
-
};
|
|
12
7
|
}
|
|
13
8
|
export declare type PluginManager = ReturnType<typeof getManager>;
|
|
14
9
|
export declare type PluginRunner = PluginManager['runner'];
|
package/lib/server/plugin.js
CHANGED
|
@@ -18,7 +18,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
exports.initServerPlugins = exports.createServerPluginAfter = exports.createServerPlugin = exports.createServerPluginBefore = exports.getManager = void 0;
|
|
19
19
|
const hook_1 = require("@shuvi/hook");
|
|
20
20
|
const plugins_1 = require("@shuvi/shared/plugins");
|
|
21
|
-
const trace_1 = require("./trace");
|
|
22
21
|
__exportStar(require("./pluginTypes"), exports);
|
|
23
22
|
const listen = (0, hook_1.createAsyncParallelHook)();
|
|
24
23
|
const internalHooks = {
|
|
@@ -29,11 +28,7 @@ exports.getManager = getManager;
|
|
|
29
28
|
_a = (0, plugins_1.createPluginCreator)(), exports.createServerPluginBefore = _a.createPluginBefore, exports.createServerPlugin = _a.createPlugin, exports.createServerPluginAfter = _a.createPluginAfter;
|
|
30
29
|
const initServerPlugins = (manager, serverPlugins, pluginContext) => {
|
|
31
30
|
const serverContext = Object.assign({
|
|
32
|
-
serverPluginRunner: manager.runner
|
|
33
|
-
traces: {
|
|
34
|
-
serverCreateAppTrace: trace_1.serverCreateAppTrace,
|
|
35
|
-
serverRequestTrace: trace_1.serverRequestTrace
|
|
36
|
-
}
|
|
31
|
+
serverPluginRunner: manager.runner
|
|
37
32
|
}, pluginContext);
|
|
38
33
|
manager.setContext(serverContext);
|
|
39
34
|
serverPlugins.forEach(plugin => {
|
package/lib/server/trace.d.ts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
export declare
|
|
2
|
-
|
|
1
|
+
export declare function initTrace(requestId: string): {
|
|
2
|
+
serverCreateAppTrace: import("../trace").Span;
|
|
3
|
+
serverRequestTrace: import("../trace").Span;
|
|
4
|
+
};
|
package/lib/server/trace.js
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.initTrace = void 0;
|
|
4
4
|
const trace_1 = require("@shuvi/shared/constants/trace");
|
|
5
5
|
const trace_2 = require("../trace");
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
function initTrace(requestId) {
|
|
7
|
+
const serverCreateAppTrace = (0, trace_2.trace)(trace_1.SERVER_CREATE_APP.name);
|
|
8
|
+
serverCreateAppTrace.setAttribute(trace_1.SERVER_CREATE_APP.attrs.requestId, requestId);
|
|
9
|
+
const serverRequestTrace = (0, trace_2.trace)(trace_1.SERVER_REQUEST.name);
|
|
10
|
+
serverRequestTrace.setAttribute(trace_1.SERVER_REQUEST.attrs.requestId, requestId);
|
|
11
|
+
return {
|
|
12
|
+
serverCreateAppTrace,
|
|
13
|
+
serverRequestTrace
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
exports.initTrace = initTrace;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shuvi/service",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.34",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/shuvijs/shuvi.git",
|
|
@@ -29,14 +29,14 @@
|
|
|
29
29
|
"@babel/generator": "7.14.5",
|
|
30
30
|
"@babel/parser": "7.14.7",
|
|
31
31
|
"@babel/traverse": "7.14.7",
|
|
32
|
-
"@shuvi/hook": "1.0.
|
|
33
|
-
"@shuvi/router": "1.0.
|
|
34
|
-
"@shuvi/runtime": "1.0.
|
|
35
|
-
"@shuvi/shared": "1.0.
|
|
36
|
-
"@shuvi/toolpack": "1.0.
|
|
37
|
-
"@shuvi/utils": "1.0.
|
|
38
|
-
"@shuvi/error-overlay": "1.0.
|
|
39
|
-
"@shuvi/reporters": "1.0.
|
|
32
|
+
"@shuvi/hook": "1.0.34",
|
|
33
|
+
"@shuvi/router": "1.0.34",
|
|
34
|
+
"@shuvi/runtime": "1.0.34",
|
|
35
|
+
"@shuvi/shared": "1.0.34",
|
|
36
|
+
"@shuvi/toolpack": "1.0.34",
|
|
37
|
+
"@shuvi/utils": "1.0.34",
|
|
38
|
+
"@shuvi/error-overlay": "1.0.34",
|
|
39
|
+
"@shuvi/reporters": "1.0.34",
|
|
40
40
|
"commander": "5.1.0",
|
|
41
41
|
"comment-json": "4.2.2",
|
|
42
42
|
"cross-spawn": "7.0.3",
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"cookie": "0.4.1",
|
|
48
48
|
"send": "0.17.1",
|
|
49
49
|
"ws": "8.2.3",
|
|
50
|
+
"uuid": "9.0.0",
|
|
50
51
|
"dotenv": "16.0.3",
|
|
51
52
|
"dotenv-expand": "9.0.0",
|
|
52
53
|
"find-up": "4.1.0"
|
|
@@ -60,6 +61,7 @@
|
|
|
60
61
|
"@types/detect-port": "1.3.0",
|
|
61
62
|
"@types/cookie": "^0.4.1",
|
|
62
63
|
"@types/ejs": "3.0.4",
|
|
64
|
+
"@types/uuid": "^9.0.2",
|
|
63
65
|
"@types/ws": "8.2.0"
|
|
64
66
|
}
|
|
65
67
|
}
|