kevinkassimo / functions-framework-deno

An experimental Functions Framework for Deno

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Deno Functions Framework

WARNING: WIP

A lightweight, open source FaaS (Function as a Service) framework for Deno.

The framework allows you to go from:

import type { Context } from "https://deno.land/x/oak@v9.0.0/mod.ts";
export function hello(ctx: Context) {
  ctx.response.body = "Hello, World!";
}

To:

curl http://my-url
# Output: Hello, World!

All without needing to worry about writing an HTTP server or complicated request handling logic.

Features

  • Spin up a local development server for quick testing
  • Invoke a function in response to a request
  • Automatically unmarshal events conforming to the CloudEvents spec
  • Portable between serverless platforms

Installation

There's no installation step for this library. It's Deno.

Quickstart

Assumes you have Deno installed

  1. Create an test/hello.ts file with the following contents:

    import type { Context } from "https://deno.land/x/oak@v9.0.0/mod.ts";
    
    export function hello(ctx: Context) {
      ctx.response.body = "Hello, World!";
    }
  2. Start the local server:

    deno run -A ./run.ts --target=hello --source=test/hello.ts
  3. Send requests to this function using curl from another terminal window:

    curl localhost:8080
    Output: Hello, World!

Run in Container

TODO: FIXME

You can also run this server in a container:

docker build -t app . && docker run -it --init -p 8080:8080 app

Deploy to Cloud Run

gcloud beta run deploy deno-ff \
--source . \
--allow-unauthenticated

Publish

TODO: Publish this to a separate repo:

https://dev.to/craigmorten/how-to-publish-deno-modules-2cg6

About

An experimental Functions Framework for Deno

License:MIT License


Languages

Language:TypeScript 98.3%Language:Dockerfile 1.7%