Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

do-functions

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

do-functions

A helper to develop and deploy serverless functions to Digital Ocean.

  • 1.3.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
10
decreased by-44.44%
Maintainers
1
Weekly downloads
 
Created
Source

DO Functions

A wrapper and CLI to help you develop and deploy serverless functions on Digital Ocean.

What's included

Build CLI

Bundle your function source code BEFORE deploying to make deploys much faster and less error-prone.

Uses esbuild to bundle all your source code into a single JavaScript file for each function, with dependencies inline.

See getting-started#packages-structure for how to structure your functions., and then run npm exec do-functions in your project root to build!

Then you can quickly deploy with doctl serverless deploy.

Function logic wrapper

Focus writing your actual function logic and leave the boilerplate to this libary.

Simply write functions like this:

import {wrapFunction} from 'do-functions'

async function logic(args) {
  return 'Hello from TypeScript'
}

export const main = wrapFunction(logic)

Will return an object like this (when main is called by invocation):

{
  "body": "\"Hello from TypeScript\"",
  "headers": {
    "content-type": "application/json"
  },
  "statusCode": 200
}
or use built-in JSON Schema validation

Because the schema specifies that "name" is required, any request that doesn't contain it will be rejected before the logic function is called, and a status 400 Bad request will be sent.

// note: import from do-functions/schema to use validation
import {wrapFunctionWithSchema} from 'do-functions/schema'
import type {InputSchema} from 'do-functions/schema'


const inputSchema: InputSchema = {
  type: 'object',
  properties: {
    name: {type: 'string'}
  },
  required: ['name']
}

async function logic(args: { name: string }) {
  console.log('Request with name:', args.name) // log request
  return `Hello ${args.name}`
}

export const main = wrapFunctionWithSchema(logic, inputSchema)

Sign up to Digital Ocean and get $100 free

If you do not already have a Digital Ocean account, and you would like to use Functions, please consider using my referral link to sign up by clicking the badge below:

DigitalOcean Referral Badge

How it works: if you use this link, you will get $100 of credit on Digital Ocean to spend in your first 60 days. If you spend more than $25, I will get $25 of credit as well.

Note: this project is not in any way affiliated with/supported by Digital Ocean. I'm just a regular Digital Ocean user who started using Functions and realised there must be a better way, so I created this to help, and made it available to others.

Keywords

FAQs

Package last updated on 19 Aug 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc