# ![functions](functions.png)
[![Build](https://github.com/netlify/functions/workflows/Build/badge.svg)](https://github.com/netlify/functions/actions)
[![Node](https://img.shields.io/node/v/@netlify/functions.svg?logo=node.js)](https://www.npmjs.com/package/@netlify/functions)
JavaScript and TypeScript utilities for [Netlify Functions](https://docs.netlify.com/functions/overview/).
## Installation
```
npm install @netlify/functions
```
## Usage
### On-demand Builders
To use On-demand Builders, wrap your function handler with the `builder` function.
- With JavaScript:
```js
const { builder } = require('@netlify/functions')
const handler = async (event, context) => {
return {
statusCode: 200,
body: JSON.stringify({ message: 'Hello World' }),
}
}
exports.handler = builder(handler)
```
- With TypeScript:
```ts
import { builder, Handler } from '@netlify/functions'
const myHandler: Handler = async (event, context) => {
return {
statusCode: 200,
body: JSON.stringify({ message: 'Hello World' }),
}
}
const handler = builder(myHandler)
export { handler }
```
### Scheduled Functions (currently in beta)
To use Scheduled Functions, wrap your function handler with the `schedule` function.
- With JavaScript:
```js
const { schedule } = require('@netlify/functions')
exports.handler = schedule('5 4 * * *', async () => {
console.log("It's 04:05 AM!")
})
```
- With TypeScript:
```ts
import { schedule } from '@netlify/functions'
export const handler = schedule("5 4 * * *", async () => {
console.log("It's 04:05 AM!")
})
```
### TypeScript typings
This module exports typings for authoring Netlify Functions in TypeScript.
```ts
import { Handler } from '@netlify/functions'
const handler: Handler = async (event, context) => {
return {
statusCode: 200,
body: JSON.stringify({ message: 'Hello World' }),
}
}
export { handler }
```
The following types are exported:
- `Handler`
- `HandlerCallback`
- `HandlerContext`
- `HandlerEvent`
- `HandlerResponse`
## Contributors
Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for instructions on how to set up and work on this repository. Thanks
for contributing!