Skip to content

Commit

Permalink
feat: add preferStatic type to config (#443)
Browse files Browse the repository at this point in the history
**Which problem is this pull request solving?**

Adds a new `preferStatic` type to the functions config.

Also, makes the `path` and `schedule` properties mutually exclusive.

Finally, it adds some JSDoc comments to each property.
  • Loading branch information
eduardoboucas authored Nov 9, 2023
1 parent d558f36 commit 9abc987
Showing 1 changed file with 37 additions and 5 deletions.
42 changes: 37 additions & 5 deletions src/function/v2.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,45 @@
export type { Context } from '@netlify/serverless-functions-api'

type Path = `/${string}`

type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS'

type CronSchedule = string

export interface Config {
path?: Path | Path[]
interface BaseConfig {
/**
* Configures the function to serve any static files that match the request
* URL and render the function only if no matching files exist.
*/
preferStatic?: boolean

/**
* Limits the HTTP methods for which the function will run. If not set, the
* function will run for all supported methods.
*/
method?: HTTPMethod | HTTPMethod[]
schedule?: CronSchedule
}

interface ConfigWithPath extends BaseConfig {
/**
* One or more URL paths for which the function will run. Paths must begin
* with a forward slash.
*
* {@link} https://ntl.fyi/func-routing
*/
path?: Path | Path[]

schedule?: never
}

interface ConfigWithSchedule extends BaseConfig {
path?: never

/**
* Cron expression representing the schedule at which the function will be
* automatically invoked.
*
* {@link} https://ntl.fyi/sched-func
*/
schedule: CronSchedule
}

export type Config = ConfigWithPath | ConfigWithSchedule

0 comments on commit 9abc987

Please sign in to comment.