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);
- 🤗️ Join our online community for help, sharing feedback and talking to the community.
- 📖 Check out our documentation to get quickly started!
- 📣 Follow us on Twitter for staying up to date.
- 🙋 Create a GitHub issue for requesting a new feature or reporting a problem.
- 🏠 Visit our GitHub org for exploring other repositories.
Prerequisites:
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.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.
We’re excited if you join the Restate community and start contributing! Whether it is feature requests, bug reports, ideas & feedback or PRs, we appreciate any and all contributions. We know that your time is precious and, therefore, deeply value any effort to contribute!
For more info about developing the SDK, check the development guide.