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.4 | 1.5 - 1.6 | 1.7 - 1.8 | 1.9 |
---|---|---|---|---|
<= 1.2 | ✅ | ❌ | ❌ | ❌ |
1.3 | ✅ | ✅ | ✅ (1) | ✅ (2) |
1.4 | ✅ | ✅ | ✅ | ✅ (2) |
1.5 | ⚠ (3) | ✅ | ✅ | ✅ |
(1) Note the new options
in service/object/workflow constructors, together with some of the new options in the handler
s too, work only from Restate 1.4 onward. Check the in-code documentation for more details.
(2) Note the new options.retryPolicy
work only from Restate 1.5 onward. Check the in-code documentation for more details.
(3) Warning SDK versions <= 1.4 are deprecated, and cannot be registered anymore. Check the Restate 1.5 release notes for more info.