hlambda / hlambda-core

Hlambda core - ECMAScript meta API service

Home Page:https://hlambda.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Hlambda (/hlæmdə/; Hλ;) [Hyper Lambda]

Patreon donate button Publish Docker Image Docker Image Size License

What is Hlambda (/hlæmdə/) [Hyper Lambda]

Hlambda is ECMAScript meta API service. It offers simple ways to deploy ECMAScript code to local or remote servers.

Hlambda Banner

It is the implementation of the idea to load your ECMAScript code as configuration (metadata). With Hlambda you can easily create a microservice that can load arbitrary code configurations.

The main use case was to implement a stateless REST microservice that will run Hasura custom actions in a separate container, containing any custom business logic.

For more details check "Getting started".

In production deployments, you can bake metadata and disable the UI console.

What it can do, and for what it was intended

  • Stateless REST Service. (Designed to do)
  • Offer custom business logic to awesome Hasura GraphQL Server. (Designed to do)
  • Hasura GraphQL Server authorization hook. (Designed to do)
  • Process Webhooks, and call other APIs (Apple subscriptions, Stripe). (Designed to do)
  • Encryption, JWT signing or validation.
  • Cron jobs.
  • File transformation, conversion service.
  • Serving static files.
  • Serving frontend artifacts.
  • Fast prototyping. (For hackathons, etc.)
  • Your own GraphQL Service.
  • Remote debugging.
  • Anything that you can think of...

How to use it

You can check "Getting started" on how to get started with Hlambda. In short, it goes like this:

  • Install latest hlambda CLI. (Hint: npm i -g hlambda-cli)
  • Spin up the Docker instance of the Hlambda server. (Hint: Use hl snip d to get the docker snippet)
  • Use CLI to generate a new Hlambda app. (Hint: hl init my-app)
  • (Optional) Configure multiple environments. (Hint: hl env add staging)
  • Deploy metadata (Hint: hl m a)
  • Test your endpoints :) (Hint: hl r g demo)

Known issues

  • Importing npm packages that are used by the Hlambda Core like;

    • "colors": "1.4.0"

can cause known issues... like the disabling inherited colors prototype chain unless FORCE_COLOR is set to true.

Until addressed this has a simple hotfix to just remove that package from the list of dependencies in your hlambda app, before applying metadata.

  • Some of the packages are provided with the hlambda core, but that does not necessarily mean you should use them, you can use your version of packages defined for your hlambda apps.

Notice

Any contributions are greatly appreciated.

Authors

Github Sponsors button

How to support the project

I've recently created Patreon which will enable me to work more on the Hlambda services.

Patreon donate button

You can also sponsor the developers directly through the GitHub Sponsors program.

About

Hlambda core - ECMAScript meta API service

https://hlambda.io

License:Apache License 2.0


Languages

Language:JavaScript 49.0%Language:HTML 41.8%Language:CSS 6.9%Language:Shell 1.9%Language:TypeScript 0.2%Language:Dockerfile 0.2%