Skip to content
This repository was archived by the owner on Jun 9, 2025. It is now read-only.

Commit 6180687

Browse files
feat: add TypeScript declarations (#26)
* feat: add TypeScript declarations * feat: add HandlerResponse export
1 parent 6034484 commit 6180687

File tree

7 files changed

+86
-0
lines changed

7 files changed

+86
-0
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"name": "@netlify/functions",
33
"main": "./src/main.js",
4+
"types": "./src/main.d.ts",
45
"version": "0.3.1",
56
"description": "JavaScript utilities for Netlify Functions",
67
"files": [

src/function/context.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// From https://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-context.html.
2+
export interface Context {
3+
callbackWaitsForEmptyEventLoop: boolean
4+
functionName: string
5+
functionVersion: string
6+
invokedFunctionArn: string
7+
memoryLimitInMB: string
8+
awsRequestId: string
9+
logGroupName: string
10+
logStreamName: string
11+
identity?: { [key: string]: any }
12+
clientContext?: { [key: string]: any }
13+
14+
getRemainingTimeInMillis(): number
15+
16+
/** @deprecated Use handler callback or promise result */
17+
done(error?: Error, result?: any): void
18+
/** @deprecated Use handler callback with first argument or reject a promise result */
19+
fail(error: Error | string): void
20+
/** @deprecated Use handler callback with second argument or resolve a promise result */
21+
succeed(messageOrObject: any): void
22+
/** @deprecated Use handler callback or promise result */
23+
succeed(message: string, object: any): void
24+
}

src/function/event.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
export interface Event {
2+
rawUrl: string
3+
rawQuery: string
4+
path: string
5+
httpMethod: string
6+
headers: EventHeaders
7+
multiValueHeaders: EventMultiValueHeaders
8+
queryStringParameters: EventQueryStringParameters | null
9+
multiValueQueryStringParameters: EventMultiValueQueryStringParameters | null
10+
body: string | null
11+
isBase64Encoded: boolean
12+
}
13+
14+
interface EventHeaders {
15+
[name: string]: string | undefined
16+
}
17+
18+
interface EventMultiValueHeaders {
19+
[name: string]: string[] | undefined
20+
}
21+
22+
interface EventPathParameters {
23+
[name: string]: string | undefined
24+
}
25+
26+
interface EventQueryStringParameters {
27+
[name: string]: string | undefined
28+
}
29+
30+
interface EventMultiValueQueryStringParameters {
31+
[name: string]: string[] | undefined
32+
}

src/function/handler.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import type { Context } from './context'
2+
import type { Event } from './event'
3+
import type { Response } from './response'
4+
5+
export interface HandlerCallback {
6+
(error: any, response: Response): void
7+
}
8+
9+
export interface Handler {
10+
(event: Event, context: Context, callback: HandlerCallback): void | Response | Promise<Response>
11+
}

src/function/index.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import type { Context } from './context'
2+
import type { Event } from './event'
3+
import type { Handler, HandlerCallback } from './handler'
4+
import { Response } from './response'
5+
6+
export type { Context as HandlerContext, Event as HandlerEvent, Handler, HandlerCallback, Response as HandlerResponse }

src/function/response.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
export interface Response {
2+
statusCode: number
3+
headers?: {
4+
[header: string]: boolean | number | string
5+
}
6+
multiValueHeaders?: {
7+
[header: string]: Array<boolean | number | string>
8+
}
9+
body: string
10+
isBase64Encoded?: boolean
11+
}

src/main.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './function'

0 commit comments

Comments
 (0)