UNPKG

6.01 kBJavaScriptView Raw
1"use strict";
2var __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}));
13var __exportStar = (this && this.__exportStar) || function(m, exports) {
14 for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15};
16var __importDefault = (this && this.__importDefault) || function (mod) {
17 return (mod && mod.__esModule) ? mod : { "default": mod };
18};
19Object.defineProperty(exports, "__esModule", { value: true });
20exports.query = exports.urlencoded = exports.text = exports.raw = exports.json = exports.serveStatic = exports.static = exports.original = void 0;
21const express_1 = __importDefault(require("express"));
22const feathers_1 = require("@feathersjs/feathers");
23const transport_commons_1 = require("@feathersjs/transport-commons");
24const commons_1 = require("@feathersjs/commons");
25var express_2 = require("express");
26Object.defineProperty(exports, "original", { enumerable: true, get: function () { return __importDefault(express_2).default; } });
27Object.defineProperty(exports, "static", { enumerable: true, get: function () { return express_2.static; } });
28Object.defineProperty(exports, "serveStatic", { enumerable: true, get: function () { return express_2.static; } });
29Object.defineProperty(exports, "json", { enumerable: true, get: function () { return express_2.json; } });
30Object.defineProperty(exports, "raw", { enumerable: true, get: function () { return express_2.raw; } });
31Object.defineProperty(exports, "text", { enumerable: true, get: function () { return express_2.text; } });
32Object.defineProperty(exports, "urlencoded", { enumerable: true, get: function () { return express_2.urlencoded; } });
33Object.defineProperty(exports, "query", { enumerable: true, get: function () { return express_2.query; } });
34__exportStar(require("./authentication"), exports);
35__exportStar(require("./declarations"), exports);
36__exportStar(require("./handlers"), exports);
37__exportStar(require("./rest"), exports);
38const debug = (0, commons_1.createDebug)('@feathersjs/express');
39function feathersExpress(feathersApp, expressApp = (0, express_1.default)()) {
40 if (!feathersApp) {
41 return expressApp;
42 }
43 if (typeof feathersApp.setup !== 'function') {
44 throw new Error('@feathersjs/express requires a valid Feathers application instance');
45 }
46 const app = expressApp;
47 const { use: expressUse, listen: expressListen } = expressApp;
48 const { use: feathersUse, teardown: feathersTeardown } = feathersApp;
49 Object.assign(app, {
50 use(location, ...rest) {
51 let service;
52 let options = {};
53 const middleware = rest.reduce(function (middleware, arg) {
54 if (typeof arg === 'function' || Array.isArray(arg)) {
55 middleware[service ? 'after' : 'before'].push(arg);
56 }
57 else if (!service) {
58 service = arg;
59 }
60 else if (arg.methods || arg.events) {
61 options = arg;
62 }
63 else {
64 throw new Error('Invalid options passed to app.use');
65 }
66 return middleware;
67 }, {
68 before: [],
69 after: []
70 });
71 const hasMethod = (methods) => methods.some(name => (service && typeof service[name] === 'function'));
72 // Check for service (any object with at least one service method)
73 if (hasMethod(['handle', 'set']) || !hasMethod(feathers_1.defaultServiceMethods)) {
74 debug('Passing app.use call to Express app');
75 return expressUse.call(this, location, ...rest);
76 }
77 debug('Registering service with middleware', middleware);
78 // Since this is a service, call Feathers `.use`
79 feathersUse.call(this, location, service, {
80 ...options,
81 express: middleware
82 });
83 return this;
84 },
85 async listen(...args) {
86 const server = expressListen.call(this, ...args);
87 this.server = server;
88 await this.setup(server);
89 debug('Feathers application listening');
90 return server;
91 },
92 async teardown(server) {
93 return feathersTeardown.call(this, server).then(() => new Promise((resolve, reject) => this.server.close(e => e ? reject(e) : resolve(this))));
94 }
95 });
96 const appDescriptors = {
97 ...Object.getOwnPropertyDescriptors(Object.getPrototypeOf(app)),
98 ...Object.getOwnPropertyDescriptors(app)
99 };
100 const newDescriptors = {
101 ...Object.getOwnPropertyDescriptors(Object.getPrototypeOf(feathersApp)),
102 ...Object.getOwnPropertyDescriptors(feathersApp)
103 };
104 // Copy all non-existing properties (including non-enumerables)
105 // that don't already exist on the Express app
106 Object.keys(newDescriptors).forEach(prop => {
107 const appProp = appDescriptors[prop];
108 const newProp = newDescriptors[prop];
109 if (appProp === undefined && newProp !== undefined) {
110 Object.defineProperty(expressApp, prop, newProp);
111 }
112 });
113 app.configure((0, transport_commons_1.routing)());
114 app.use((req, _res, next) => {
115 req.feathers = { ...req.feathers, provider: 'rest' };
116 return next();
117 });
118 return app;
119}
120exports.default = feathersExpress;
121if (typeof module !== 'undefined') {
122 module.exports = Object.assign(feathersExpress, module.exports);
123}
124//# sourceMappingURL=index.js.map
\No newline at end of file