From 5293cdea0346c8241e8436c08f392d84085582b4 Mon Sep 17 00:00:00 2001 From: Jack Kleeman Date: Mon, 24 Jun 2024 10:23:00 +0100 Subject: [PATCH] Cloudflare workers example (#154) * Cloudflare workers examples * Use /fetch component * Add README --- templates/cloudflare-worker/.gitignore | 1 + templates/cloudflare-worker/.prettierrc | 7 +++++++ templates/cloudflare-worker/README.md | 13 ++++++++++++ templates/cloudflare-worker/package.json | 21 ++++++++++++++++++++ templates/cloudflare-worker/src/index.ts | 17 ++++++++++++++++ templates/cloudflare-worker/tsconfig.json | 13 ++++++++++++ templates/cloudflare-worker/wrangler.toml | 4 ++++ templates/typescript-lambda-cdk/package.json | 2 +- 8 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 templates/cloudflare-worker/.gitignore create mode 100644 templates/cloudflare-worker/.prettierrc create mode 100644 templates/cloudflare-worker/README.md create mode 100644 templates/cloudflare-worker/package.json create mode 100644 templates/cloudflare-worker/src/index.ts create mode 100644 templates/cloudflare-worker/tsconfig.json create mode 100644 templates/cloudflare-worker/wrangler.toml diff --git a/templates/cloudflare-worker/.gitignore b/templates/cloudflare-worker/.gitignore new file mode 100644 index 00000000..e7137800 --- /dev/null +++ b/templates/cloudflare-worker/.gitignore @@ -0,0 +1 @@ +.wrangler diff --git a/templates/cloudflare-worker/.prettierrc b/templates/cloudflare-worker/.prettierrc new file mode 100644 index 00000000..da245af4 --- /dev/null +++ b/templates/cloudflare-worker/.prettierrc @@ -0,0 +1,7 @@ +{ + "trailingComma": "all", + "tabWidth": 2, + "semi": true, + "arrowParens": "always", + "printWidth": 120 +} diff --git a/templates/cloudflare-worker/README.md b/templates/cloudflare-worker/README.md new file mode 100644 index 00000000..e92044ce --- /dev/null +++ b/templates/cloudflare-worker/README.md @@ -0,0 +1,13 @@ +# Hello world - Cloudflare workers + Typescript example + +Sample project configuration of a Restate service using the TypeScript SDK and +Cloudflare Workers. + +Have a look at the [TypeScript Quickstart guide](https://docs.restate.dev/get_started/quickstart?sdk=ts) for more information about the SDK. + +You can run locally with `npm run dev` and register to Restate with +`restate dep add http://localhost:9080 --use-http1.1`. `--use-http1.1` is needed +with the local Workers dev server, as it does not expose HTTP2. + +You can deploy to cloudflare with `npm run deploy` and register to Restate with +`restate dep add https://restate-cloudflare-worker..workers.dev`. diff --git a/templates/cloudflare-worker/package.json b/templates/cloudflare-worker/package.json new file mode 100644 index 00000000..f6934b0c --- /dev/null +++ b/templates/cloudflare-worker/package.json @@ -0,0 +1,21 @@ +{ + "name": "restate-cloudflare-worker-template", + "type": "module", + "version": "0.0.1", + "scripts": { + "deploy": "wrangler deploy", + "dev": "wrangler dev --port 9080", + "start": "wrangler dev --port 9080", + "format": "prettier --write \"src/*.+(js|ts|json)\"" + }, + "dependencies": { + "@restatedev/restate-sdk": "^1.0.1" + }, + "devDependencies": { + "@cloudflare/workers-types": "^4.20240605.0", + "prettier": "^3.3.2", + "typescript": "^5.4.5", + "wrangler": "^3.0.0" + }, + "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" +} diff --git a/templates/cloudflare-worker/src/index.ts b/templates/cloudflare-worker/src/index.ts new file mode 100644 index 00000000..42101cc4 --- /dev/null +++ b/templates/cloudflare-worker/src/index.ts @@ -0,0 +1,17 @@ +import { Context, endpoint, service } from "@restatedev/restate-sdk/fetch"; + +// Template of a Restate service and handler +// +// Have a look at the TS QuickStart: https://docs.restate.dev/get_started/quickstart?sdk=ts +// + +const greeter = service({ + name: "greeter", + handlers: { + greet: async (ctx: Context, greeting: string) => { + return `${greeting}!`; + }, + }, +}); + +export default endpoint().bind(greeter).handler(); diff --git a/templates/cloudflare-worker/tsconfig.json b/templates/cloudflare-worker/tsconfig.json new file mode 100644 index 00000000..798432ee --- /dev/null +++ b/templates/cloudflare-worker/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "noEmit": true, + "module": "nodenext", + "target": "esnext", + "lib": ["esnext"], + "strict": true, + "moduleResolution": "nodenext", + "types": ["@cloudflare/workers-types"], + "skipLibCheck": true + }, + "exclude": ["node_modules", "dist", "test"] +} diff --git a/templates/cloudflare-worker/wrangler.toml b/templates/cloudflare-worker/wrangler.toml new file mode 100644 index 00000000..a84ff668 --- /dev/null +++ b/templates/cloudflare-worker/wrangler.toml @@ -0,0 +1,4 @@ +name = "restate-cloudflare-worker" +main = "./src/index.ts" +compatibility_date = "2024-05-13" +compatibility_flags = [ "nodejs_compat" ] diff --git a/templates/typescript-lambda-cdk/package.json b/templates/typescript-lambda-cdk/package.json index 4a33c0ab..029e14cd 100644 --- a/templates/typescript-lambda-cdk/package.json +++ b/templates/typescript-lambda-cdk/package.json @@ -23,7 +23,7 @@ "typescript": "^5.4.5" }, "dependencies": { - "@restatedev/restate-sdk": "^1.0.0", + "@restatedev/restate-sdk": "^1.0.1", "aws-cdk-lib": "^2.145.0", "constructs": "^10.3.0", "source-map-support": "^0.5.21"