@jayfong/x-server 1.10.3 → 1.11.2
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 +21 -0
- package/lib/_cjs/cli/api_generator.js +295 -0
- package/lib/_cjs/cli/build_util.js +146 -0
- package/lib/_cjs/cli/cli.js +190 -0
- package/lib/_cjs/cli/deploy_util.js +61 -0
- package/lib/_cjs/cli/env_util.js +145 -0
- package/lib/_cjs/cli/register.js +8 -0
- package/lib/_cjs/cli/template_util.js +77 -0
- package/lib/_cjs/cli/templates/handlers.ts +3 -0
- package/lib/_cjs/cli/templates/hooks.ts +2 -0
- package/lib/_cjs/cli/templates/models.ts +22 -0
- package/lib/_cjs/cli/templates/package.json +3 -0
- package/lib/_cjs/cli/templates/routes.ts +26 -0
- package/lib/_cjs/cli/templates/tasks.ts +2 -0
- package/lib/_cjs/core/define_bus.js +28 -0
- package/lib/_cjs/core/define_handler.js +43 -0
- package/lib/_cjs/core/define_hook.js +10 -0
- package/lib/_cjs/core/define_server.js +12 -0
- package/lib/_cjs/core/define_task.js +30 -0
- package/lib/_cjs/core/handler.js +90 -0
- package/lib/_cjs/core/http_error.js +9 -0
- package/lib/_cjs/core/http_method.js +12 -0
- package/lib/_cjs/core/server.js +145 -0
- package/lib/_cjs/core/types.js +18 -0
- package/lib/_cjs/index.js +179 -0
- package/lib/_cjs/plugins/base.js +3 -0
- package/lib/_cjs/plugins/cors.js +44 -0
- package/lib/_cjs/plugins/file_parser.js +24 -0
- package/lib/_cjs/plugins/ws_parser.js +24 -0
- package/lib/_cjs/plugins/xml_parser.js +61 -0
- package/lib/_cjs/services/base.js +3 -0
- package/lib/_cjs/services/cache.js +231 -0
- package/lib/_cjs/services/captcha.js +45 -0
- package/lib/_cjs/services/dispose.js +33 -0
- package/lib/_cjs/services/jwt.js +59 -0
- package/lib/_cjs/services/redis.js +18 -0
- package/lib/_cjs/x.js +20 -0
- package/lib/cli/api_generator.js +269 -332
- package/lib/cli/build_util.d.ts +1 -0
- package/lib/cli/build_util.js +108 -130
- package/lib/cli/cli.js +161 -181
- package/lib/cli/deploy_util.js +37 -41
- package/lib/cli/env_util.js +112 -120
- package/lib/cli/register.js +5 -7
- package/lib/cli/template_util.js +47 -52
- package/lib/core/define_bus.js +22 -14
- package/lib/core/define_handler.js +31 -36
- package/lib/core/define_hook.js +4 -8
- package/lib/core/define_server.js +6 -10
- package/lib/core/define_task.js +20 -25
- package/lib/core/handler.js +78 -74
- package/lib/core/http_error.js +2 -8
- package/lib/core/http_method.js +7 -10
- package/lib/core/server.js +125 -139
- package/lib/core/types.js +11 -2
- package/lib/index.js +23 -39
- package/lib/plugins/base.js +1 -2
- package/lib/plugins/cors.js +30 -36
- package/lib/plugins/file_parser.d.ts +1 -1
- package/lib/plugins/file_parser.js +12 -16
- package/lib/plugins/ws_parser.d.ts +1 -1
- package/lib/plugins/ws_parser.js +12 -16
- package/lib/plugins/xml_parser.d.ts +1 -1
- package/lib/plugins/xml_parser.js +47 -43
- package/lib/services/base.js +1 -2
- package/lib/services/cache.js +213 -190
- package/lib/services/captcha.js +32 -33
- package/lib/services/dispose.d.ts +1 -1
- package/lib/services/dispose.js +22 -23
- package/lib/services/jwt.js +45 -48
- package/lib/services/redis.js +8 -14
- package/lib/x.js +12 -15
- package/package.json +6 -4
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.Server = void 0;
|
|
7
|
+
|
|
8
|
+
var _interopRequireWildcard2 = _interopRequireDefault(require("@babel/runtime/helpers/interopRequireWildcard"));
|
|
9
|
+
|
|
10
|
+
var _fastify = _interopRequireDefault(require("fastify"));
|
|
11
|
+
|
|
12
|
+
var _vtils = require("vtils");
|
|
13
|
+
|
|
14
|
+
var _http_method = require("./http_method");
|
|
15
|
+
|
|
16
|
+
var _x = require("../x");
|
|
17
|
+
|
|
18
|
+
class Server {
|
|
19
|
+
constructor(options) {
|
|
20
|
+
this.options = options;
|
|
21
|
+
this.fastify = void 0;
|
|
22
|
+
this.routes = [];
|
|
23
|
+
Server.options = options;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
async start() {
|
|
27
|
+
this.applyServices();
|
|
28
|
+
await this.prepareFastify();
|
|
29
|
+
this.applyPlugins();
|
|
30
|
+
await this.prepareRoutes();
|
|
31
|
+
await this.applyRoutes();
|
|
32
|
+
await this.applyHooks();
|
|
33
|
+
await this.startFastify();
|
|
34
|
+
await this.startTasks();
|
|
35
|
+
await this.applyAutoClose();
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
async close() {
|
|
39
|
+
var _this$fastify;
|
|
40
|
+
|
|
41
|
+
await ((_this$fastify = this.fastify) == null ? void 0 : _this$fastify.close());
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
async prepareFastify() {
|
|
45
|
+
this.fastify = (0, _fastify.default)({
|
|
46
|
+
logger: process.env.NODE_ENV === 'development' ? {
|
|
47
|
+
prettyPrint: true
|
|
48
|
+
} : false
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
async startFastify() {
|
|
53
|
+
await this.fastify.listen({
|
|
54
|
+
host: this.options.host || '0.0.0.0',
|
|
55
|
+
port: this.options.port
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
async prepareRoutes() {
|
|
60
|
+
// @ts-ignore
|
|
61
|
+
const {
|
|
62
|
+
routes
|
|
63
|
+
} = await Promise.resolve().then(() => (0, _interopRequireWildcard2.default)(require('.x/routes')));
|
|
64
|
+
this.routes = routes;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
async applyHooks() {
|
|
68
|
+
// @ts-ignore
|
|
69
|
+
await Promise.resolve().then(() => (0, _interopRequireWildcard2.default)(require('.x/hooks')));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
applyServices() {
|
|
73
|
+
_x.x.register(...(this.options.services || []));
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
applyPlugins() {
|
|
77
|
+
const plugins = this.options.plugins || [];
|
|
78
|
+
|
|
79
|
+
for (const plugin of plugins) {
|
|
80
|
+
plugin.register(this.fastify);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
async applyRoutes() {
|
|
85
|
+
for (const item of this.routes) {
|
|
86
|
+
const handlerOptions = item.handler.options;
|
|
87
|
+
const handlerMethod = handlerOptions.requestMethod || 'POST';
|
|
88
|
+
const isWS = handlerMethod === 'WS';
|
|
89
|
+
const serverMethod = isWS ? 'GET' : _http_method.HandlerMethodToHttpMethod[handlerMethod];
|
|
90
|
+
this.fastify.route({
|
|
91
|
+
method: serverMethod,
|
|
92
|
+
url: item.path,
|
|
93
|
+
websocket: isWS,
|
|
94
|
+
handler: async (req, res) => {
|
|
95
|
+
if (isWS) {
|
|
96
|
+
await item.handler.handle(undefined, {
|
|
97
|
+
headers: req.headers,
|
|
98
|
+
redirect: undefined,
|
|
99
|
+
ws: req
|
|
100
|
+
});
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
let files = {};
|
|
105
|
+
|
|
106
|
+
if (handlerMethod === 'FILE') {
|
|
107
|
+
const part = await req.file();
|
|
108
|
+
files = Object.keys(part.fields).reduce((res, name) => {
|
|
109
|
+
;
|
|
110
|
+
res[name] = (0, _vtils.castArray)(part.fields[name]).map(item => item.file ? item : item.value)[0];
|
|
111
|
+
return res;
|
|
112
|
+
}, {});
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const data = await item.handler.handle({ // @ts-ignore
|
|
116
|
+
...req.params,
|
|
117
|
+
// @ts-ignore
|
|
118
|
+
...req.query,
|
|
119
|
+
// @ts-ignore
|
|
120
|
+
...req.body,
|
|
121
|
+
...files
|
|
122
|
+
}, {
|
|
123
|
+
headers: req.headers,
|
|
124
|
+
redirect: url => res.redirect(url),
|
|
125
|
+
ws: undefined
|
|
126
|
+
});
|
|
127
|
+
return data;
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
async startTasks() {
|
|
134
|
+
// @ts-ignore
|
|
135
|
+
await Promise.resolve().then(() => (0, _interopRequireWildcard2.default)(require('.x/tasks')));
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
async applyAutoClose() {
|
|
139
|
+
_x.x.dispose.add(() => this.close());
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
exports.Server = Server;
|
|
145
|
+
Server.options = {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.XTask = exports.XServer = exports.XHandler = void 0;
|
|
5
|
+
let XServer;
|
|
6
|
+
exports.XServer = XServer;
|
|
7
|
+
|
|
8
|
+
(function (_XServer) {})(XServer || (exports.XServer = XServer = {}));
|
|
9
|
+
|
|
10
|
+
let XHandler;
|
|
11
|
+
exports.XHandler = XHandler;
|
|
12
|
+
|
|
13
|
+
(function (_XHandler) {})(XHandler || (exports.XHandler = XHandler = {}));
|
|
14
|
+
|
|
15
|
+
let XTask;
|
|
16
|
+
exports.XTask = XTask;
|
|
17
|
+
|
|
18
|
+
(function (_XTask) {})(XTask || (exports.XTask = XTask = {}));
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
|
|
5
|
+
var _define_bus = require("./core/define_bus");
|
|
6
|
+
|
|
7
|
+
Object.keys(_define_bus).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _define_bus[key]) return;
|
|
10
|
+
exports[key] = _define_bus[key];
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
var _define_handler = require("./core/define_handler");
|
|
14
|
+
|
|
15
|
+
Object.keys(_define_handler).forEach(function (key) {
|
|
16
|
+
if (key === "default" || key === "__esModule") return;
|
|
17
|
+
if (key in exports && exports[key] === _define_handler[key]) return;
|
|
18
|
+
exports[key] = _define_handler[key];
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
var _define_hook = require("./core/define_hook");
|
|
22
|
+
|
|
23
|
+
Object.keys(_define_hook).forEach(function (key) {
|
|
24
|
+
if (key === "default" || key === "__esModule") return;
|
|
25
|
+
if (key in exports && exports[key] === _define_hook[key]) return;
|
|
26
|
+
exports[key] = _define_hook[key];
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
var _define_server = require("./core/define_server");
|
|
30
|
+
|
|
31
|
+
Object.keys(_define_server).forEach(function (key) {
|
|
32
|
+
if (key === "default" || key === "__esModule") return;
|
|
33
|
+
if (key in exports && exports[key] === _define_server[key]) return;
|
|
34
|
+
exports[key] = _define_server[key];
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
var _define_task = require("./core/define_task");
|
|
38
|
+
|
|
39
|
+
Object.keys(_define_task).forEach(function (key) {
|
|
40
|
+
if (key === "default" || key === "__esModule") return;
|
|
41
|
+
if (key in exports && exports[key] === _define_task[key]) return;
|
|
42
|
+
exports[key] = _define_task[key];
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
var _handler = require("./core/handler");
|
|
46
|
+
|
|
47
|
+
Object.keys(_handler).forEach(function (key) {
|
|
48
|
+
if (key === "default" || key === "__esModule") return;
|
|
49
|
+
if (key in exports && exports[key] === _handler[key]) return;
|
|
50
|
+
exports[key] = _handler[key];
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
var _http_error = require("./core/http_error");
|
|
54
|
+
|
|
55
|
+
Object.keys(_http_error).forEach(function (key) {
|
|
56
|
+
if (key === "default" || key === "__esModule") return;
|
|
57
|
+
if (key in exports && exports[key] === _http_error[key]) return;
|
|
58
|
+
exports[key] = _http_error[key];
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
var _server = require("./core/server");
|
|
62
|
+
|
|
63
|
+
Object.keys(_server).forEach(function (key) {
|
|
64
|
+
if (key === "default" || key === "__esModule") return;
|
|
65
|
+
if (key in exports && exports[key] === _server[key]) return;
|
|
66
|
+
exports[key] = _server[key];
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
var _types = require("./core/types");
|
|
70
|
+
|
|
71
|
+
Object.keys(_types).forEach(function (key) {
|
|
72
|
+
if (key === "default" || key === "__esModule") return;
|
|
73
|
+
if (key in exports && exports[key] === _types[key]) return;
|
|
74
|
+
exports[key] = _types[key];
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
var _base = require("./plugins/base");
|
|
78
|
+
|
|
79
|
+
Object.keys(_base).forEach(function (key) {
|
|
80
|
+
if (key === "default" || key === "__esModule") return;
|
|
81
|
+
if (key in exports && exports[key] === _base[key]) return;
|
|
82
|
+
exports[key] = _base[key];
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
var _cors = require("./plugins/cors");
|
|
86
|
+
|
|
87
|
+
Object.keys(_cors).forEach(function (key) {
|
|
88
|
+
if (key === "default" || key === "__esModule") return;
|
|
89
|
+
if (key in exports && exports[key] === _cors[key]) return;
|
|
90
|
+
exports[key] = _cors[key];
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
var _file_parser = require("./plugins/file_parser");
|
|
94
|
+
|
|
95
|
+
Object.keys(_file_parser).forEach(function (key) {
|
|
96
|
+
if (key === "default" || key === "__esModule") return;
|
|
97
|
+
if (key in exports && exports[key] === _file_parser[key]) return;
|
|
98
|
+
exports[key] = _file_parser[key];
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
var _ws_parser = require("./plugins/ws_parser");
|
|
102
|
+
|
|
103
|
+
Object.keys(_ws_parser).forEach(function (key) {
|
|
104
|
+
if (key === "default" || key === "__esModule") return;
|
|
105
|
+
if (key in exports && exports[key] === _ws_parser[key]) return;
|
|
106
|
+
exports[key] = _ws_parser[key];
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
var _xml_parser = require("./plugins/xml_parser");
|
|
110
|
+
|
|
111
|
+
Object.keys(_xml_parser).forEach(function (key) {
|
|
112
|
+
if (key === "default" || key === "__esModule") return;
|
|
113
|
+
if (key in exports && exports[key] === _xml_parser[key]) return;
|
|
114
|
+
exports[key] = _xml_parser[key];
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
var _base2 = require("./services/base");
|
|
118
|
+
|
|
119
|
+
Object.keys(_base2).forEach(function (key) {
|
|
120
|
+
if (key === "default" || key === "__esModule") return;
|
|
121
|
+
if (key in exports && exports[key] === _base2[key]) return;
|
|
122
|
+
exports[key] = _base2[key];
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
var _cache = require("./services/cache");
|
|
126
|
+
|
|
127
|
+
Object.keys(_cache).forEach(function (key) {
|
|
128
|
+
if (key === "default" || key === "__esModule") return;
|
|
129
|
+
if (key in exports && exports[key] === _cache[key]) return;
|
|
130
|
+
exports[key] = _cache[key];
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
var _captcha = require("./services/captcha");
|
|
134
|
+
|
|
135
|
+
Object.keys(_captcha).forEach(function (key) {
|
|
136
|
+
if (key === "default" || key === "__esModule") return;
|
|
137
|
+
if (key in exports && exports[key] === _captcha[key]) return;
|
|
138
|
+
exports[key] = _captcha[key];
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
var _dispose = require("./services/dispose");
|
|
142
|
+
|
|
143
|
+
Object.keys(_dispose).forEach(function (key) {
|
|
144
|
+
if (key === "default" || key === "__esModule") return;
|
|
145
|
+
if (key in exports && exports[key] === _dispose[key]) return;
|
|
146
|
+
exports[key] = _dispose[key];
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
var _jwt = require("./services/jwt");
|
|
150
|
+
|
|
151
|
+
Object.keys(_jwt).forEach(function (key) {
|
|
152
|
+
if (key === "default" || key === "__esModule") return;
|
|
153
|
+
if (key in exports && exports[key] === _jwt[key]) return;
|
|
154
|
+
exports[key] = _jwt[key];
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
var _redis = require("./services/redis");
|
|
158
|
+
|
|
159
|
+
Object.keys(_redis).forEach(function (key) {
|
|
160
|
+
if (key === "default" || key === "__esModule") return;
|
|
161
|
+
if (key in exports && exports[key] === _redis[key]) return;
|
|
162
|
+
exports[key] = _redis[key];
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
var _x = require("./x");
|
|
166
|
+
|
|
167
|
+
Object.keys(_x).forEach(function (key) {
|
|
168
|
+
if (key === "default" || key === "__esModule") return;
|
|
169
|
+
if (key in exports && exports[key] === _x[key]) return;
|
|
170
|
+
exports[key] = _x[key];
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
var _models = require(".x/models");
|
|
174
|
+
|
|
175
|
+
Object.keys(_models).forEach(function (key) {
|
|
176
|
+
if (key === "default" || key === "__esModule") return;
|
|
177
|
+
if (key in exports && exports[key] === _models[key]) return;
|
|
178
|
+
exports[key] = _models[key];
|
|
179
|
+
});
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.CorsPlugin = void 0;
|
|
7
|
+
|
|
8
|
+
var _fastifyCors = _interopRequireDefault(require("fastify-cors"));
|
|
9
|
+
|
|
10
|
+
var _vtils = require("vtils");
|
|
11
|
+
|
|
12
|
+
var _date = require("vtils/date");
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* CORS 支持插件
|
|
16
|
+
*/
|
|
17
|
+
class CorsPlugin {
|
|
18
|
+
constructor(options) {
|
|
19
|
+
this.options = options;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
register(fastify) {
|
|
23
|
+
const allows = this.options.allow.map(item => ({
|
|
24
|
+
type: item.startsWith('*.') ? 'endsWith' : 'equal',
|
|
25
|
+
domain: item.startsWith('*.') ? item.replace('*.', '.') : item
|
|
26
|
+
}));
|
|
27
|
+
const check = (0, _vtils.memoize)(origin => {
|
|
28
|
+
let i = origin.indexOf(':');
|
|
29
|
+
let j = origin.indexOf(':', i + 1);
|
|
30
|
+
i += 3;
|
|
31
|
+
j = j === -1 ? origin.length : j;
|
|
32
|
+
const domain = origin.substring(i, j);
|
|
33
|
+
const pass = allows.some(item => item.type === 'equal' ? domain === item.domain : domain.endsWith(item.domain));
|
|
34
|
+
return pass;
|
|
35
|
+
});
|
|
36
|
+
fastify.register(_fastifyCors.default, {
|
|
37
|
+
origin: (origin, cb) => cb(null, origin ? check(origin) : true),
|
|
38
|
+
maxAge: (0, _date.ms)(this.options.ttl, true)
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
exports.CorsPlugin = CorsPlugin;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.FileParserPlugin = void 0;
|
|
7
|
+
|
|
8
|
+
var _fastifyMultipart = _interopRequireDefault(require("fastify-multipart"));
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* file 解析器插件
|
|
12
|
+
*/
|
|
13
|
+
class FileParserPlugin {
|
|
14
|
+
constructor(options) {
|
|
15
|
+
this.options = options;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
register(fastify) {
|
|
19
|
+
fastify.register(_fastifyMultipart.default, this.options);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
exports.FileParserPlugin = FileParserPlugin;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.WsParserPlugin = void 0;
|
|
7
|
+
|
|
8
|
+
var _fastifyWebsocket = _interopRequireDefault(require("fastify-websocket"));
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* websocket 解析器插件
|
|
12
|
+
*/
|
|
13
|
+
class WsParserPlugin {
|
|
14
|
+
constructor(options) {
|
|
15
|
+
this.options = options;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
register(fastify) {
|
|
19
|
+
fastify.register(_fastifyWebsocket.default, this.options);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
exports.WsParserPlugin = WsParserPlugin;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.XmlParserPlugin = void 0;
|
|
7
|
+
|
|
8
|
+
var _fastXmlParser = _interopRequireDefault(require("fast-xml-parser"));
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* XML 解析器插件
|
|
12
|
+
*
|
|
13
|
+
* 底层解析器是 [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser)
|
|
14
|
+
*/
|
|
15
|
+
class XmlParserPlugin {
|
|
16
|
+
constructor(options) {
|
|
17
|
+
this.options = options;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
register(fastify) {
|
|
21
|
+
const {
|
|
22
|
+
contentType = ['text/xml', 'application/xml'],
|
|
23
|
+
...parseOptions
|
|
24
|
+
} = this.options || {};
|
|
25
|
+
fastify.addContentTypeParser(contentType, (req, payload, done) => {
|
|
26
|
+
let body = '';
|
|
27
|
+
|
|
28
|
+
const handleError = err => done(err);
|
|
29
|
+
|
|
30
|
+
const handleData = data => body += data;
|
|
31
|
+
|
|
32
|
+
const handleEnd = () => {
|
|
33
|
+
let data;
|
|
34
|
+
let err;
|
|
35
|
+
|
|
36
|
+
try {
|
|
37
|
+
data = _fastXmlParser.default.parse(body, parseOptions);
|
|
38
|
+
} catch (_err) {
|
|
39
|
+
err = _err;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
payload.removeListener('error', handleError);
|
|
43
|
+
payload.removeListener('data', handleData);
|
|
44
|
+
payload.removeListener('end', handleEnd);
|
|
45
|
+
|
|
46
|
+
if (err) {
|
|
47
|
+
done(err);
|
|
48
|
+
} else {
|
|
49
|
+
done(null, data);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
payload.on('error', handleError);
|
|
54
|
+
payload.on('data', handleData);
|
|
55
|
+
payload.on('end', handleEnd);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
exports.XmlParserPlugin = XmlParserPlugin;
|