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.1 |
---|---|---|
1.0 | β | β |
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!
Install the dependencies, build the Restate protocol types (from ProtoBuf), and transpile the TypeScript code:
npm install
npm run proto
npm run build
If everything goes well, the artifact would be created at dist/
.
Run the tests via
npm run test
Run the formatter and linter via
npm run format
npm run lint
Launch a sample program (requires no build)
npm run example
See https://github.com/restatedev/e2e/ for more details.
Releasing a new npm package from this repo requires:
GITHUB_TOKEN
in order to create a Github releaserelease-it
The actual npm publish
is run by GitHub actions once a GitHub release is created.
X.Y.Z
vX.Y.Z
to the upstream repositoryCreating the GitHub release will trigger npm publish
via GitHub actions.
After having created a new SDK release, you need to: