functioneer-express
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

Functioneer-express

Helper functions for Functioneer - for use with Express framework.

Installation

Run npm install i functioneer-express and import to your project.

Usage

Declare a function:

import {Functioneer} from "functioneer";
import { getExpressHandler} from "functioneer-express";
const func = new Functioneer();
//Declare a function to add two numbers
func.registerFunction("add", "Adds two numbers", (a: number, b: number) => {
    return a + b;
})
.addField("a", "number", "The first number to add")
.addField("b", "number", "The second number to add");

Use the express handler for a path

const app = express();
app.post("/functions", getExpressHandler(func, "BODY");
await app.listen(8080);

Exposed methods

Both methods exposed by functioneer-express run a declared function based on request parameters: getExpressHandler(functioneerInstance,dataSource,functionName?) getExpressMiddleware(functioneerInstance,dataSource,functionName?)

| arguement | type | | | ------------------- | ----------- | ------------------------------------------------------------------------------------- | -------- | -------- | | functioneerInstance | Functioneer | An instance of Functioneer | | dataSource | string | Where to get the function arguements from ("BODY" | "PARAMS" | "QUERY") | | functionName | string? | The function to be called. If null then select the function name from the data source |

The behavior after running the exposed methods is different:

method
getExpressHandler Runs function and retuns result to client as request body with 200 status
getExpressMiddleware Runs a function and stores the result in request.functionResult. When function execution execution of the middleware stack continues

Dynamic function selection

As mentioned before you can either hardcode the function to run or parse it through the dataSource:

const func = new Functioneer();
func.registerFunction("add", "Adds two numbers", (a: number, b: number) => { return a + b; }).
addField("a", "number", "The first number to add").
addField("b", "number", "The second number to add");

const app = express();
// This will run the add function
app.post("/functionsAdd", getExpressHandler(func,"BODY","add"));

// This will run any function specified in request.body.functionName
app.post("/functionsAll", getExpressHandler(func,"BODY"));

Data sources

The following data sources are supported:

Data source value
Request body "BODY" JSON data from request body
URL parameters "PARAMS" URL parameters as set up in express. For example : app.post("/functionsAdd/:a/:b",getExpressHandler(func,"PARAMS","add"));
Query string "QUERY" Query string parameters as set by client. For example a request to /functionsAdd?a=1&b=2 will match app.get("/funtionsAdd",getExpressHandler(func,"QUERY","add"))

Building and testing

You can build the project by running npm run build. Tests are run by running npm run test

License

Functioneer-express is licensed under MIT license

Readme

Keywords

none

Package Sidebar

Install

npm i functioneer-express

Weekly Downloads

1

Version

1.0.0

License

MIT

Unpacked Size

39 kB

Total Files

9

Last publish

Collaborators

  • cemalb