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.endpoint()
.bind(greeter)
.listen(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
This library follows Semantic Versioning.
The compatibility with Restate is described in the following table:
Restate Server\sdk-typescript | 1.0 - 1.3 | 1.4 | 1.5 - 1.6 | 1.7 |
---|---|---|---|---|
1.0 | ✅ | ❌ | ❌ | ❌ |
1.1 | ✅ (1) | ✅ | ❌ | ❌ |
1.2 | ✅ | ✅ | ❌ | ❌ |
1.3 | ✅ | ✅ | ✅ | ✅ (2) |
1.4 | ✅ | ✅ | ✅ | ✅ |
(1) Only when upgrading from 1.0 to 1.1 you MUST rediscover all the existing deployments using restate dp register <address> --force
. You don't need to update the SDK, nor change the code.
(2) 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.