@stone-js/azure-functions-adapter
v0.8.15
Published
General-purpose Azure Functions adapter for Stone.js, run any app on event-driven Azure Functions triggers, beyond HTTP. Supports Queue Storage, Service Bus, Event Grid, Event Hub, Timer and Blob.
Maintainers
Readme
Stone.js - Azure Functions Adapter
The Azure Functions Adapter lets your Stone.js application run on event-driven Azure Functions, beyond HTTP. It normalizes any non-HTTP trigger (Queue Storage, Service Bus, Event Grid, Event Hub, Timer, Blob) into a Stone.js IncomingEvent, fully aligned with the Continuum Architecture.
For HTTP-triggered functions, use
@stone-js/azure-functions-http-adapter.
Introduction
In Stone.js, adapters are the translation layer between a platform and your domain. This adapter targets the non-HTTP Azure Functions triggers: the Functions host invokes your function with a trigger input and an InvocationContext, and the adapter turns that into a standardized IncomingEvent, runs it through your kernel, and returns a raw response. The trigger input is exposed on the event metadata (alongside context.triggerMetadata), so one handler can dispatch on the trigger.
It does not own a server: run() returns the handler you register with @azure/functions.
Installation
npm install @stone-js/azure-functions-adapter
# or
pnpm add @stone-js/azure-functions-adapter
# or
yarn add @stone-js/azure-functions-adapterRequires
@stone-js/coreand@stone-js/envas peer dependencies.
Usage
Declarative (decorator):
import { StoneApp } from '@stone-js/core'
import { AzureFunctions } from '@stone-js/azure-functions-adapter'
@AzureFunctions()
@StoneApp({ name: 'workers' })
export class Application {}Imperative (blueprint):
import { defineStoneApp } from '@stone-js/core'
import { azureFunctionsAdapterBlueprint } from '@stone-js/azure-functions-adapter'
export const App = defineStoneApp({ name: 'workers' }, [azureFunctionsAdapterBlueprint])run() returns the trigger handler you register with @azure/functions:
import { app } from '@azure/functions'
app.storageQueue('stone', {
queueName: 'jobs',
connection: 'AzureWebJobsStorage',
handler: await stoneApp.run()
})Failures and retries
Azure treats a trigger invocation as failed only when the handler rejects. On failure the adapter rethrows by default so the trigger's retry / poison-queue policy applies, set stone.adapter.rethrowOnError = false to opt out and manage failures yourself.
Documentation
See the official documentation for the full guide.
