Restate is a system for easily building resilient applications using distributed durable async/await. This repository contains the Restate SDK for writing services in Node.js / Typescript.
Restate applications are composed of durably executed, stateful RPC handlers that can run either as part of long-running processes, or as FaaS (AWS Lambda).
import * as restate from "@restatedev/restate-sdk";
const greeter = restate.service({
name: "greeter",
handlers: {
greet: async (ctx: restate.Context, name: string) => {
return `Hello ${name}!`;
},
},
});
restate.serve({ services: [greeter], port: 9080 });
To use this SDK, add the dependency to your project:
npm install @restatedev/restate-sdk
For brand-new projects, we recommend using the Restate Node Template:
npx -y @restatedev/create-app@latest
Check the Quickstart for more info.
This library follows Semantic Versioning.
The compatibility with Restate is described in the following table:
| Restate Server\sdk-typescript | 1.11 - 1.14 | 1.15 - 1.16 |
|---|---|---|
| 1.5 | ✅ | ✅ |
| 1.6 | ✅ | ✅ |
| 1.7 | ✅ | ✅ |
Some features require a minimum version of both Restate and the SDK:
TerminalError.metadata: requires Restate >= 1.6 with sdk-typescript >= 1.11. Check the in-code documentation for more details.ctx.run's retryPolicy pause and PauseError: requires Restate >= 1.7 with sdk-typescript >= 1.15, setting RESTATE_EXPERIMENTAL_ENABLE_PROTOCOL_V7=true on the Restate Server. Check the in-code documentation for more details.