0.2.2 • Published 5 years ago

@lund-org/cherry v0.2.2

Weekly downloads
1
License
MIT
Repository
github
Last release
5 years ago

🍒 Cherry

Build Status Maintainability Test Coverage

Cherry is a lightweight framework to quickly generate a web server

:electric_plug: Installation

Use the package manager npm to install Cherry.

npm install @lund-org/cherry

:wrench: Usage

Checkout the example in the example folder.

For the development : To use the https mode, you need to generate the ssl keys, you can use this command in the config folder :

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes -subj "/C=FR/ST=./L=./O=./OU=./CN=."

Warning : It doesn't work on Windows, you will only get the key.pem with this command. Let's find the way to do it on stackoverflow :joy:


Hooks

Example here

You can hook some events and retrieve informations. It is useful to add some code at specific moment of the workflow.

Hook NameData sent
beforeStartServer{ cherry: <Cherry>, server: <CherryHTTPSServer or CherryHTTPServer> }
afterStartServer{ cherry: <Cherry>, server: <CherryHTTPSServer or CherryHTTPServer> }
beforeStopServer{ cherry: <Cherry>, server: <CherryHTTPSServer or CherryHTTPServer> }
afterStopServer{ cherry: <Cherry>, server: <CherryHTTPSServer or CherryHTTPServer> }
beforeStartOrm{ cherry: <Cherry>, orm: <The ORM plugin instance> }
afterStartOrm{ cherry: <Cherry>, orm: <The ORM plugin instance> }
beforeStopOrm{ cherry: <Cherry>, orm: <The ORM plugin instance> }
afterStopOrm{ cherry: <Cherry>, orm: <The ORM plugin instance> }
beforeProcess{ request: <CherryIncomingMessage>, response: <CherryServerResponse>, middlewares: <Array<Function>> }
afterProcess{ request: <CherryIncomingMessage>, response: <CherryServerResponse>, processResult: <The return value of the callback> }

Route types

Example here and here

There is 2 types of route, the public folders to retrieve raw resources and the configured routes.

:warning: The public routes are always resolved at first

Public routes
Route NameDescriptionOptions
PUBLIC_ROUTE_PUBLIC_FOLDERThe folder where we will find a resource.It's an entrypoint, it means that if you request a route /my/route.html, if you have it as a configured route and the same path available in your public folder, it will retrieve the file in the public folder and then quitpath : The absolute path of the folderpriority (optionnal) : The priority of check
Configured routes
Route NameDescriptionOptions
ROUTE_CONTEXTA wrapper of routes which allows to avoid to set the same thing for a bunch of routes.For example, if you have an admin, you will have a middleware to check the authentication and the rights of the user. To not set it to every routes, you can put in on the ROUTE_CONTEXT and it will apply to subsequent routestype : The type of route, here ROUTE_CONTEXTcollection : The array of subroutesname (optionnal) : The name of the route which will be added before the name of the subroutesmethod (optionnal) : The default HTTP method of the subroute, can be overridingpath (optionnal) : The leading path which will be added before the path of the subroutesmiddlewares (optionnal) : The middlewares to execute for each subroutesrules (optionnal) : The rules for route parameters if there is some in the path
ROUTEA configured route which will execute your code when requestedtype : The type of route, here ROUTEpath : The path of the routecallback : The method to execute when the route is requestedname (optionnal) : The name of the route. It can be useful to detect it in a hookmethod (optionnal) : The HTTP method of the route, it overrides the value set in the context (if present)middlewares (optionnal) : The middlewares to execute before accessing to the callbackrules (optionnal) : The rules for route parameters if there is some in the path

:scroll: To do list

:open_file_folder: Resources

View engine plugin

ORM plugin

:computer: Applications using Cherry (as a real example)

  • Livedeck-server : This project is the core of the livedeck project. It's the central point between the web/smartphone client and the software client. Like a bridge but with a database.

:pencil2: Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

:book: License

MIT

0.2.2

5 years ago

0.2.1

5 years ago

0.2.0

5 years ago

0.1.3

5 years ago

0.1.2

5 years ago

0.1.1

5 years ago

0.1.0

5 years ago

0.0.1

5 years ago