Giter VIP home page Giter VIP logo

edge-runtime's Introduction

Supabase Edge Runtime

A web server based on Deno runtime, capable of running JavaScript, TypeScript, and WASM services.

You can use it to:

  • Locally test and self-host Supabase's Edge Functions (or any Deno Function)
  • As a programmable HTTP Proxy: You can intercept / route HTTP requests

WARNING: Beta Software. There will be breaking changes to APIs / Configuration Options

Architecture

The edge runtime can be divided into two runtimes with different purposes.

  • Main runtime:
    • An instance for the main runtime is responsible for proxying the transactions to the user runtime.
    • The main runtime is meant to be an entry point before running user functions, where you can authentication, etc. before calling the user function.
    • Has no user-facing limits
    • Has access to all environment variables.
  • User runtime:
    • An instance for the user runtime is responsible for executing users' code.
    • Limits are required to be set such as: Memory and Timeouts.
    • Has access to environment variables explictly allowed by the main runtime.

How to run locally

To serve all functions in the examples folder on port 9000, you can do this with the example main service provided with this repo

./run.sh start --main-service ./examples/main -p 9000

Test by calling the hello world function

curl --request POST 'http://localhost:9000/hello-world' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "John Doe"
}'

To run with a different entry point, you can pass a different main service like below

./run.sh start --main-service /path/to/main-service-directory -p 9000

using Docker:

docker build -t edge-runtime .
docker run -it --rm -p 9000:9000 -v /path/to/supabase/functions:/usr/services supabase/edge-runtime start --main-service /usr/services

How to run tests

Read about running tests here

How to update to a newer Deno version

Contributions

We welcome contributions to Supabase Edge Runtime!

To get started either open an issue on GitHub or drop us a message on Discord

Edge Runtime follows Supabase's Code of Conduct.

edge-runtime's People

Contributors

andreespirela avatar egor-romanov avatar inian avatar laktek avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.