Awesome
Restate Typescript SDK
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);
Community
- π€οΈ 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.
Using the SDK
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
Versions
This library follows Semantic Versioning.
The compatibility with Restate is described in the following table:
Restate Server\sdk-typescript | 1.0/1.1/1.2/1.3 | 1.4 |
---|---|---|
1.0 | β | β |
1.1 | β <sup>(1)</sup> | β |
<sup>(1)</sup> 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.
Contributing
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!
Building the SDK
Prerequisites
- NodeJS (and npm) installed
Install the dependencies and transpile the TypeScript code:
npm install
npm run build
If everything goes well, the artifact would be created at dist/
.
Testing Changes
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
Testing end-to-end with Restate Server
See https://github.com/restatedev/e2e/ for more details.
Releasing the package
Releasing via release-it
Releasing a new npm package from this repo requires:
- SSH access configured for Github in order to push commits and tags to GitHub
- A GitHub personal access token with access to https://github.com/restatedev/sdk-typescript in your environment as
GITHUB_TOKEN
in order to create a Github release
release-it
The actual npm publish
is run by GitHub actions once a GitHub release is created.
Releasing manually
- Bump the version field in package.json to
X.Y.Z
- Create and push a tag of the form
vX.Y.Z
to the upstream repository - Create a new GitHub release
Creating the GitHub release will trigger npm publish
via GitHub actions.
After having created a new SDK release, you need to: