{"id":13474056,"url":"https://github.com/udacity/cloudflare-typescript-workers","last_synced_at":"2025-03-26T20:31:48.778Z","repository":{"id":50075033,"uuid":"190517978","full_name":"udacity/cloudflare-typescript-workers","owner":"udacity","description":"Types and mocks for building a tested Typescript Cloudflare Worker, generates three NPM packages","archived":true,"fork":false,"pushed_at":"2022-08-07T04:17:57.000Z","size":580,"stargazers_count":139,"open_issues_count":7,"forks_count":12,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-10-30T07:45:34.426Z","etag":null,"topics":["cdn","cloudflare","cloudflare-worker","edge-computing","javascript","typescript","webpack"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/udacity.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-06-06T05:12:09.000Z","updated_at":"2024-09-17T18:42:57.000Z","dependencies_parsed_at":"2022-09-13T03:11:53.555Z","dependency_job_id":null,"html_url":"https://github.com/udacity/cloudflare-typescript-workers","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/udacity%2Fcloudflare-typescript-workers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/udacity%2Fcloudflare-typescript-workers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/udacity%2Fcloudflare-typescript-workers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/udacity%2Fcloudflare-typescript-workers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/udacity","download_url":"https://codeload.github.com/udacity/cloudflare-typescript-workers/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245731590,"owners_count":20663212,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cdn","cloudflare","cloudflare-worker","edge-computing","javascript","typescript","webpack"],"created_at":"2024-07-31T16:01:09.201Z","updated_at":"2025-03-26T20:31:46.975Z","avatar_url":"https://github.com/udacity.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","Local-dev","Workers"],"sub_categories":["Recipes"],"readme":"# Cloudflare Workers with TypeScript and Webpack\n\n_**Retired: as of 2022, Cloudflare's official types package\n[`@cloudflare/workers-types`](https://github.com/cloudflare/workers-types)\nis more up-to-date and better supported.**_\n\n[Cloudflare Workers][about-workers] allow you to run JavaScript on Cloudflare's\nedge servers around the world. You can modify your site’s HTTP requests and\nresponses, make parallel requests, or generate responses from the edge. This\nproject develops, tests, and deploys NPM packages supporting the development of\nCloudflare Workers using TypeScript.\n\n[Get started on your own TypeScript Cloudflare Worker using the\nTemplate.][starter-template]\n\n* [`types-cloudflare-worker`][types-cloudflare-worker] - Complete types for all\n  public features provided by Cloudflare Workers. Supports the `Request.cf`\n  object, the Cache API and KV API.\n* [`cloudflare-worker-mock`][cloudflare-worker-mock] - Wraps\n  `service-worker-mock` for name consistency, developer experience and to\n  provide a simple mockable Cache API and KV API implementation.\n* [`@udacity/types-service-worker-mock`][types-service-worker-mock] - Incomplete\n  types for the `pinterest/service-worker-mock` to support Cloudflare Worker\n  Testing. May be pushed to the NPM `@types` project in the future, but needs\n  additional work before that is reasonable.\n\nThe [Cloudflare Worker API implements a subset][worker-api-reference] of the\n[Service Worker API][service-worker-api] specification, therefore Service Worker\nTypeScript types are a useful starting point.\n\n[about-workers]:https://developers.cloudflare.com/workers/about/\n[starter-template]:https://github.com/udacity/cloudflare-typescript-worker-template\n[types-service-worker-mock]:https://www.npmjs.com/package/@udacity/types-service-worker-mock\n[types-cloudflare-worker]:https://www.npmjs.com/package/types-cloudflare-worker\n[cloudflare-worker-mock]:https://www.npmjs.com/package/cloudflare-worker-mock\n[worker-api-reference]:https://developers.cloudflare.com/workers/reference/\n[service-worker-api]:https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API\n\n## Example\n\nA small example of a strictly typed worker:\n\n```typescript\nimport CloudflareWorkerGlobalScope from 'types-cloudflare-worker';\ndeclare var self: CloudflareWorkerGlobalScope;\n\nexport class Worker {\n  public async handle(event: FetchEvent) {\n    const originResponse = fetch(event.request, {\n      cf: {\n        minify: {\n          html: true,\n        },\n      },\n    });\n\n    return originResponse;\n  }\n}\n\nself.addEventListener('fetch', (event: FetchEvent) =\u003e {\n  const worker = new Worker();\n  event.respondWith(worker.handle(event));\n});\n```\n\n## Getting started\n\nStart with the [Starter Template][starter-template] or run the following\ncommands:\n\n```bash\nnpm init\n# Add TypeScript\nnpm i -D \\\n  typescript \\\n  @types/node\n# Setup the Cloudflare Worker Types and Mock\nnpm i -D \\\n  @udacity/types-service-worker-mock \\\n  types-cloudflare-worker \\\n  cloudflare-worker-mock\n\n# Init TypeScript\ntsc --init\n```\n\nSet the TypeScript compiler options in `tsconfig.json`:\n\n```js\n\"compilerOptions\": {\n  /* https://developers.cloudflare.com/workers/reference/ */\n  /* Cloudflare Workers use the V8 JavaScript engine from Google Chrome. The\n    * Workers runtime is updated at least once a week, to at least the version\n    * that is currently used by Chrome’s stable release. This means you can\n    * safely use latest JavaScript features, with no need for \"transpilers\".\n    */\n  \"target\": \"ESNext\",\n  /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */\n  \"module\": \"commonjs\",\n  /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */\n  \"lib\": [\"esnext\", \"webworker\"],\n  /* Specify library files to be included in the compilation. */\n\n  /* Recommend enabling all Strict Type-Checking Options and Additional Checks */\n}\n```\n\n## Building the Worker(s)\n\nThere are two implementations of the same test worker in this repository.\n\n### demo/src/helloworker.ts\n\nThis is the demo worker. It uses the published packages. Reference it as an\nexample implementation and starting point for your project.\n\n```bash\ncd demo\nnpm i\njest\nnpm run build\n```\n\n### src/helloworker.ts\n\nThis is the development worker. It uses the local packages.\n\n```bash\nnpm i\njest\nnpm run build\n```\n\n## Testing and deploying the packages\n\n```bash\nnpm i\nnpm run test-all\nscripts/publish.sh $VERSION $OTP # New version and 2FA\n```\n\n## Author\n\nBrad Erickson ([@13rac1](https://github.com/13rac1))\n\n## License\n\nLicensed under the Apache License, Version 2.0.\n\n© 2019 Udacity, Inc.\n\nContent derived from Cloudflare Developer Documentation. © 2019 Cloudflare, Inc.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fudacity%2Fcloudflare-typescript-workers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fudacity%2Fcloudflare-typescript-workers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fudacity%2Fcloudflare-typescript-workers/lists"}