@sanity/functions
v1.2.0
Published
Helper methods and type definitions for Sanity Functions
Maintainers
Readme
@sanity/functions
Helper methods and type definitions for Sanity Functions.
Installation
npm install @sanity/functionsUsage
Basic
import {documentEventHandler} from '@sanity/functions'
import {createClient} from '@sanity/client'
export const handler = documentEventHandler(async ({context, event}) => {
// Create a Sanity client using the context options
const client = createClient({
apiVersion: '2025-05-01',
...context.clientOptions,
})
// Access the event data
const data = event.data
// Your function implementation
console.log('Document updated:', data)
})Typescript: Passing type for data
By default, the event.data property is untyped (any). If you know what the shape of the data that will be delivered is, you can specify it as a generic to the function:
interface NotificationData {
documentId: string
text: string
}
export const handler = documentEventHandler<NotificationData>(async ({event}) => {
console.log(event.data.text) // Typed as `string`
console.log(event.data.notSet) // Will yield type error
})Type only (TypeScript)
import {type DocumentEventHandler} from '@sanity/functions'
import {createClient} from '@sanity/client'
export const handler: DocumentEventHandler = async ({context, event}) => {
// …
}
// …you can also define the data type:
export const handler: DocumentEventHandler<{text: string}> = async ({event}) => {
console.log(event.data.text)
}Type only (JavaScript)
/** @type {import('@sanity/functions').DocumentEventHandler} */
export const handler = async ({context, event}) => {
console.log(event.data.text)
}
// …you can also define the data type:
/** @type {import('@sanity/functions').DocumentEventHandler<{text: string}>} */
export const handler = async ({event}) => {
console.log(event.data.text)
}Development
To build this project:
npm run buildTo run tests:
npm testTo run type checking:
npm run lintRelease automation
This repository uses conventional commits and release-please. Any relevant changes to main will create a pull request for a new release. Approve it and merge it to trigger the actual release.
License
MIT © Sanity.io
