Documentation
    Preparing search index...

    Documentation

    Documentation Examples Discord Twitter

    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);

    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
    

    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 handlers 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!

    Install the dependencies and transpile the TypeScript code:

    npm install
    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 -w packages/restate-sdk-examples greeter
    npm run -w packages/restate-sdk-examples object
    npm run -w packages/restate-sdk-examples workflow

    See https://github.com/restatedev/e2e/ for more details.

    npx --package=json-schema-to-typescript json2ts endpoint_manifest_schema.json packages/restate-sdk/src/types/discovery.ts
    

    Releasing a new npm package from this repo requires:

    release-it
    

    The actual npm publish is run by GitHub actions once a GitHub release is created.

    1. Bump the version field in package.json to X.Y.Z
    2. Create and push a tag of the form vX.Y.Z to the upstream repository
    3. 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:

    1. Update and release the tour of Restate
    2. Update the Typescript SDK and Tour version in the documentation and release it
    3. Update and release the Node template generator
    4. Update the examples