Skip to content

fahamutech/bfast-functions

Folders and files

NameName
Last commit message
Last commit date
Dec 9, 2020
May 7, 2020
Aug 16, 2020
Dec 9, 2020
May 7, 2020
Jan 28, 2020
Dec 4, 2020
Dec 3, 2020
Dec 4, 2020
Aug 12, 2019
Aug 16, 2020
Dec 4, 2020
Dec 3, 2020
Dec 4, 2020
Dec 9, 2020

Repository files navigation

BFast::Cloud::Functions

Serverless function engine for NodeJS on top of ExpressJS and Socket.IO.

Get Started Manually

When you use BFast::Cloud::Function you use this component automatically but if you want to use it manually for your project here is the step to follow.

1. Install required dependencies using npm

  • bfast-faas
john@pc:~/Desktop/my-workspace$ npm install bfast-faas --save
  • bfastnode
john@pc:~/Desktop/my-workspace$ npm install bfastnode --save

2. Create a functions folder

Create any folder in your working space

john@pc:~/Desktop/my-workspace$ mkdir functions

3. Create a functions file ( e.g example.js )

Create a file of any name in functions folder you already create from step 2 and past the following code

const {BFast} = require('bfastnode');

module.exports.myHelloFunction = BFast.functions().onHttpRequest('/hello', (request, response)=>{
    response.status(200).send('Hello, World!');
});

4. Start BfastFunctions engine

create index.js file in your root workspace and start the Faas server like the following

const {BfastFunctions} = require('bfast-faas');
const faasServer = new BfastFunctions({
    port: '3000',
    functionsConfig: {
        functionsDirPath: './functions',
    }
});

faasServer.start().catch(console.log);

then to start listening run ~$ node index.js

Full BfastFunctions engine option is as follows

 /**
     *
     * @param port {string} a port http server to listen to [required]
     * @param gitCloneUrl {string} a remote git repository [required]
     * @param gitUsername {string} a git username [required]
     * @param gitToken {string} personal access token ( if a git repository is private ) [optional, default is null]
     * @param appId {string} bfast::cloud application id [optional, default is null]
     * @param projectId {string} bfast::cloud projectId [optional, default is null]
     * @param functionsConfig {{
        functionsDirPath: string, 
        bfastJsonPath: string
    }} if functionsDirPath is specified bfast::functions engine will not use a git clone url [optional, default is null]
     * @param functionsController {BfastFunctionsController} your implementation o bfast functions controller or null [optional, default is null]
     */

  new BfastFunctions({
    port: "3000",
    gitCloneUrl: 'https://your-repo.git',
    gitUsername: 'git username',
    gitToken: 'your token',
    appId: 'any',
    projectId: 'any',
    functionsConfig: {
        functionsDirPath: '/path/to/your-functions-folder',
        bfastJsonPath: '/path/to/bfast-json-file'
    },
    functionsController: new MyCustomController()
});

bfast.json file is a JSON file contain configurations of for bfast functions engine. Its example is;

{
  "ignore": ["**/node_modules/**"]
}