1 | "use strict";
|
2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3 | if (k2 === undefined) k2 = k;
|
4 | var desc = Object.getOwnPropertyDescriptor(m, k);
|
5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6 | desc = { enumerable: true, get: function() { return m[k]; } };
|
7 | }
|
8 | Object.defineProperty(o, k2, desc);
|
9 | }) : (function(o, m, k, k2) {
|
10 | if (k2 === undefined) k2 = k;
|
11 | o[k2] = m[k];
|
12 | }));
|
13 | var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14 | Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15 | }) : function(o, v) {
|
16 | o["default"] = v;
|
17 | });
|
18 | var __importStar = (this && this.__importStar) || function (mod) {
|
19 | if (mod && mod.__esModule) return mod;
|
20 | var result = {};
|
21 | if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22 | __setModuleDefault(result, mod);
|
23 | return result;
|
24 | };
|
25 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
26 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
27 | };
|
28 | Object.defineProperty(exports, "__esModule", { value: true });
|
29 | exports.compression = exports.cors = exports.authenticate = exports.parseAuthentication = exports.notFound = exports.errorHandler = exports.formatter = exports.rest = exports.query = exports.urlencoded = exports.text = exports.raw = exports.json = exports.static = exports.serveStatic = exports.original = void 0;
|
30 | const express_1 = __importDefault(require("express"));
|
31 | const feathers_1 = require("@feathersjs/feathers");
|
32 | const transport_commons_1 = require("@feathersjs/transport-commons");
|
33 | const commons_1 = require("@feathersjs/commons");
|
34 | const cors_1 = __importDefault(require("cors"));
|
35 | exports.cors = cors_1.default;
|
36 | const compression_1 = __importDefault(require("compression"));
|
37 | exports.compression = compression_1.default;
|
38 | const rest_1 = require("./rest");
|
39 | Object.defineProperty(exports, "rest", { enumerable: true, get: function () { return rest_1.rest; } });
|
40 | Object.defineProperty(exports, "formatter", { enumerable: true, get: function () { return rest_1.formatter; } });
|
41 | const handlers_1 = require("./handlers");
|
42 | Object.defineProperty(exports, "errorHandler", { enumerable: true, get: function () { return handlers_1.errorHandler; } });
|
43 | Object.defineProperty(exports, "notFound", { enumerable: true, get: function () { return handlers_1.notFound; } });
|
44 | const authentication_1 = require("./authentication");
|
45 | Object.defineProperty(exports, "authenticate", { enumerable: true, get: function () { return authentication_1.authenticate; } });
|
46 | Object.defineProperty(exports, "parseAuthentication", { enumerable: true, get: function () { return authentication_1.parseAuthentication; } });
|
47 | const express_2 = __importStar(require("express"));
|
48 | Object.defineProperty(exports, "original", { enumerable: true, get: function () { return express_2.default; } });
|
49 | Object.defineProperty(exports, "serveStatic", { enumerable: true, get: function () { return express_2.static; } });
|
50 | Object.defineProperty(exports, "static", { enumerable: true, get: function () { return express_2.static; } });
|
51 | Object.defineProperty(exports, "json", { enumerable: true, get: function () { return express_2.json; } });
|
52 | Object.defineProperty(exports, "raw", { enumerable: true, get: function () { return express_2.raw; } });
|
53 | Object.defineProperty(exports, "text", { enumerable: true, get: function () { return express_2.text; } });
|
54 | Object.defineProperty(exports, "urlencoded", { enumerable: true, get: function () { return express_2.urlencoded; } });
|
55 | Object.defineProperty(exports, "query", { enumerable: true, get: function () { return express_2.query; } });
|
56 | const debug = (0, commons_1.createDebug)('@feathersjs/express');
|
57 | function feathersExpress(feathersApp, expressApp = (0, express_1.default)()) {
|
58 | if (!feathersApp) {
|
59 | return expressApp;
|
60 | }
|
61 | if (typeof feathersApp.setup !== 'function') {
|
62 | throw new Error('@feathersjs/express requires a valid Feathers application instance');
|
63 | }
|
64 | const app = expressApp;
|
65 | const { use: expressUse, listen: expressListen } = expressApp;
|
66 | const { use: feathersUse, teardown: feathersTeardown } = feathersApp;
|
67 | Object.assign(app, {
|
68 | use(location, ...rest) {
|
69 | let service;
|
70 | let options = {};
|
71 | const middleware = rest.reduce(function (middleware, arg) {
|
72 | if (typeof arg === 'function' || Array.isArray(arg)) {
|
73 | middleware[service ? 'after' : 'before'].push(arg);
|
74 | }
|
75 | else if (!service) {
|
76 | service = arg;
|
77 | }
|
78 | else if (arg.methods || arg.events || arg.express || arg.koa) {
|
79 | options = arg;
|
80 | }
|
81 | else {
|
82 | throw new Error('Invalid options passed to app.use');
|
83 | }
|
84 | return middleware;
|
85 | }, {
|
86 | before: [],
|
87 | after: []
|
88 | });
|
89 | const hasMethod = (methods) => methods.some((name) => service && typeof service[name] === 'function');
|
90 |
|
91 | if (hasMethod(['handle', 'set']) || !hasMethod(feathers_1.defaultServiceMethods)) {
|
92 | debug('Passing app.use call to Express app');
|
93 | return expressUse.call(this, location, ...rest);
|
94 | }
|
95 | debug('Registering service with middleware', middleware);
|
96 |
|
97 | feathersUse.call(this, location, service, {
|
98 | express: middleware,
|
99 | ...options
|
100 | });
|
101 | return this;
|
102 | },
|
103 | async listen(...args) {
|
104 | const server = expressListen.call(this, ...args);
|
105 | this.server = server;
|
106 | await this.setup(server);
|
107 | debug('Feathers application listening');
|
108 | return server;
|
109 | }
|
110 | });
|
111 | const appDescriptors = {
|
112 | ...Object.getOwnPropertyDescriptors(Object.getPrototypeOf(app)),
|
113 | ...Object.getOwnPropertyDescriptors(app)
|
114 | };
|
115 | const newDescriptors = {
|
116 | ...Object.getOwnPropertyDescriptors(Object.getPrototypeOf(feathersApp)),
|
117 | ...Object.getOwnPropertyDescriptors(feathersApp)
|
118 | };
|
119 |
|
120 |
|
121 | Object.keys(newDescriptors).forEach((prop) => {
|
122 | const appProp = appDescriptors[prop];
|
123 | const newProp = newDescriptors[prop];
|
124 | if (appProp === undefined && newProp !== undefined) {
|
125 | Object.defineProperty(expressApp, prop, newProp);
|
126 | }
|
127 | });
|
128 |
|
129 | app.setup = feathersApp.setup;
|
130 | app.teardown = async function teardown(server) {
|
131 | return feathersTeardown.call(this, server).then(() => new Promise((resolve, reject) => {
|
132 | if (this.server) {
|
133 | this.server.close((e) => (e ? reject(e) : resolve(this)));
|
134 | }
|
135 | else {
|
136 | resolve(this);
|
137 | }
|
138 | }));
|
139 | };
|
140 | app.configure((0, transport_commons_1.routing)());
|
141 | app.use((req, _res, next) => {
|
142 | req.feathers = { ...req.feathers, provider: 'rest' };
|
143 | return next();
|
144 | });
|
145 | return app;
|
146 | }
|
147 | exports.default = feathersExpress;
|
148 | if (typeof module !== 'undefined') {
|
149 | module.exports = Object.assign(feathersExpress, module.exports);
|
150 | }
|
151 |
|
\ | No newline at end of file |