From 132d3fd009cb24cd7f4721de70541960397a7c80 Mon Sep 17 00:00:00 2001 From: srgooglo Date: Thu, 26 Jan 2023 18:18:34 +0100 Subject: [PATCH] added support for endpoint function transformation --- src/server/classes/controller/index.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/server/classes/controller/index.js b/src/server/classes/controller/index.js index 14dc90a..85074b7 100644 --- a/src/server/classes/controller/index.js +++ b/src/server/classes/controller/index.js @@ -43,7 +43,7 @@ module.exports = class Controller { const methodEndpoints = Object.entries(endpointsByMethod) for (let [endpointKey, endpoint] of methodEndpoints) { - // check if endpoint is a class or an object, if it's a object, create a new class from it extending Endpoint + // Handle endpoint transformation as an object if (typeof endpoint === "object") { const objEndpoint = endpoint @@ -62,6 +62,21 @@ module.exports = class Controller { } } + // Handle endpoint transformation as a function + if (typeof endpoint === "function") { + const endpointFn = endpoint + + endpoint = class extends Endpoint { + static method = httpMethodKey + static route = endpointKey + + constructor(args) { + super(args) + this.fn = endpointFn + } + } + } + // check if endpoint is a class if (typeof endpoint !== "function") { throw new Error(`Invalid endpoint. Expected class or object, got ${typeof endpoint}`)