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 __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 | };
|
16 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
17 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
18 | };
|
19 | Object.defineProperty(exports, "__esModule", { value: true });
|
20 | exports.query = exports.urlencoded = exports.text = exports.raw = exports.json = exports.serveStatic = exports.static = exports.original = void 0;
|
21 | const express_1 = __importDefault(require("express"));
|
22 | const feathers_1 = require("@feathersjs/feathers");
|
23 | const transport_commons_1 = require("@feathersjs/transport-commons");
|
24 | const commons_1 = require("@feathersjs/commons");
|
25 | var express_2 = require("express");
|
26 | Object.defineProperty(exports, "original", { enumerable: true, get: function () { return __importDefault(express_2).default; } });
|
27 | Object.defineProperty(exports, "static", { enumerable: true, get: function () { return express_2.static; } });
|
28 | Object.defineProperty(exports, "serveStatic", { enumerable: true, get: function () { return express_2.static; } });
|
29 | Object.defineProperty(exports, "json", { enumerable: true, get: function () { return express_2.json; } });
|
30 | Object.defineProperty(exports, "raw", { enumerable: true, get: function () { return express_2.raw; } });
|
31 | Object.defineProperty(exports, "text", { enumerable: true, get: function () { return express_2.text; } });
|
32 | Object.defineProperty(exports, "urlencoded", { enumerable: true, get: function () { return express_2.urlencoded; } });
|
33 | Object.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);
|
38 | const debug = (0, commons_1.createDebug)('@feathersjs/express');
|
39 | function 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 |
|
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 |
|
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 |
|
105 |
|
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 | }
|
120 | exports.default = feathersExpress;
|
121 | if (typeof module !== 'undefined') {
|
122 | module.exports = Object.assign(feathersExpress, module.exports);
|
123 | }
|
124 |
|
\ | No newline at end of file |