UNPKG

4.22 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.ExpressAdapter = void 0;
4const common_1 = require("@nestjs/common");
5const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
6const http_adapter_1 = require("@nestjs/core/adapters/http-adapter");
7const bodyParser = require("body-parser");
8const cors = require("cors");
9const express = require("express");
10const http = require("http");
11const https = require("https");
12class ExpressAdapter extends http_adapter_1.AbstractHttpAdapter {
13 constructor(instance) {
14 super(instance || express());
15 }
16 reply(response, body, statusCode) {
17 if (statusCode) {
18 response.status(statusCode);
19 }
20 if (shared_utils_1.isNil(body)) {
21 return response.send();
22 }
23 if (body instanceof common_1.StreamableFile) {
24 if (response.getHeader('Content-Type') === undefined) {
25 response.setHeader('Content-Type', 'application/octet-stream');
26 }
27 return body.getStream().pipe(response);
28 }
29 return shared_utils_1.isObject(body) ? response.json(body) : response.send(String(body));
30 }
31 status(response, statusCode) {
32 return response.status(statusCode);
33 }
34 render(response, view, options) {
35 return response.render(view, options);
36 }
37 redirect(response, statusCode, url) {
38 return response.redirect(statusCode, url);
39 }
40 setErrorHandler(handler, prefix) {
41 return this.use(handler);
42 }
43 setNotFoundHandler(handler, prefix) {
44 return this.use(handler);
45 }
46 setHeader(response, name, value) {
47 return response.set(name, value);
48 }
49 listen(port, ...args) {
50 return this.httpServer.listen(port, ...args);
51 }
52 close() {
53 if (!this.httpServer) {
54 return undefined;
55 }
56 return new Promise(resolve => this.httpServer.close(resolve));
57 }
58 set(...args) {
59 return this.instance.set(...args);
60 }
61 enable(...args) {
62 return this.instance.enable(...args);
63 }
64 disable(...args) {
65 return this.instance.disable(...args);
66 }
67 engine(...args) {
68 return this.instance.engine(...args);
69 }
70 useStaticAssets(path, options) {
71 if (options && options.prefix) {
72 return this.use(options.prefix, express.static(path, options));
73 }
74 return this.use(express.static(path, options));
75 }
76 setBaseViewsDir(path) {
77 return this.set('views', path);
78 }
79 setViewEngine(engine) {
80 return this.set('view engine', engine);
81 }
82 getRequestHostname(request) {
83 return request.hostname;
84 }
85 getRequestMethod(request) {
86 return request.method;
87 }
88 getRequestUrl(request) {
89 return request.originalUrl;
90 }
91 enableCors(options) {
92 return this.use(cors(options));
93 }
94 createMiddlewareFactory(requestMethod) {
95 return this.instance.use.bind(this.instance);
96 }
97 initHttpServer(options) {
98 const isHttpsEnabled = options && options.httpsOptions;
99 if (isHttpsEnabled) {
100 this.httpServer = https.createServer(options.httpsOptions, this.getInstance());
101 return;
102 }
103 this.httpServer = http.createServer(this.getInstance());
104 }
105 registerParserMiddleware() {
106 const parserMiddleware = {
107 jsonParser: bodyParser.json(),
108 urlencodedParser: bodyParser.urlencoded({ extended: true }),
109 };
110 Object.keys(parserMiddleware)
111 .filter(parser => !this.isMiddlewareApplied(parser))
112 .forEach(parserKey => this.use(parserMiddleware[parserKey]));
113 }
114 setLocal(key, value) {
115 this.instance.locals[key] = value;
116 return this;
117 }
118 getType() {
119 return 'express';
120 }
121 isMiddlewareApplied(name) {
122 const app = this.getInstance();
123 return (!!app._router &&
124 !!app._router.stack &&
125 shared_utils_1.isFunction(app._router.stack.filter) &&
126 app._router.stack.some((layer) => layer && layer.handle && layer.handle.name === name));
127 }
128}
129exports.ExpressAdapter = ExpressAdapter;