{"_id":"@msw/cloudflare","_rev":"4-4886596656f32d4e5602b376162b9fb7","name":"@msw/cloudflare","dist-tags":{"latest":"0.2.0"},"versions":{"0.0.0":{"name":"@msw/cloudflare","version":"0.0.0","keywords":["cloudflare","mock","api","intercept","request","network","test"],"author":{"name":"Artem Zakharchenko","email":"kettanaito@gmail.com"},"license":"MIT","_id":"@msw/cloudflare@0.0.0","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"homepage":"https://github.com/mswjs/cloudflare","bugs":{"url":"https://github.com/mswjs/cloudflare/issues"},"dist":{"shasum":"fac1bd35f61b9040af46c46f9f04cb80427586bc","tarball":"https://registry.npmjs.org/@msw/cloudflare/-/cloudflare-0.0.0.tgz","fileCount":5,"integrity":"sha512-gSIvxgrE3dnpsm/+Oe7m0iVPA5+o5X+mbp2sNPvbPZxDOb4Mof1CtRcWsrATjRQFiVRPHxtQsYnJutwsoIEDnQ==","signatures":[{"sig":"MEUCIQDaqOvumVwIPxwSl4GiKbMl+O8eSMKiw3lHW0Lq2OvsUAIgKUa1+Ot2onK03OoysEA+fHu6lxi2R/V3/mjUHOrChp4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13365},"type":"module","exports":{".":"./build/index.mjs"},"gitHead":"4a91369d41ede8aff1c35e874c198021ce32e113","scripts":{"lint":"publint","test":"vitest","build":"tsdown","start":"tsdown -w","publish":"release publish"},"_npmUser":{"name":"kettanaito","email":"kettanaito@gmail.com"},"repository":{"url":"git+https://github.com/mswjs/cloudflare.git","type":"git"},"_npmVersion":"11.12.1","description":"Mock API in Cloudflare with Mock Service Worker.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@mswjs/interceptors":"^0.41.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.14.6","tsdown":"^0.21.10","vitest":"^4.1.5","publint":"^0.3.18","typescript":"^6.0.3","@ossjs/release":"^0.11.0","@epic-web/test-server":"^0.1.6","@cloudflare/workers-types":"^4.20260424.1","@cloudflare/vitest-pool-workers":"^0.14.9"},"peerDependencies":{"msw":">=2.14.1"},"_npmOperationalInternal":{"tmp":"tmp/cloudflare_0.0.0_1782833382679_0.7661653125581025","host":"s3://npm-registry-packages-npm-production"}},"0.0.1":{"name":"@msw/cloudflare","version":"0.0.1","keywords":["cloudflare","mock","api","intercept","request","network","test"],"author":"Artem Zakharchenko <kettanaito@gmail.com>","license":"MIT","_id":"@msw/cloudflare@0.0.1","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"homepage":"https://github.com/mswjs/cloudflare","dist":{"shasum":"6f0603f769ac964ff9f3d150825f67307bca1381","tarball":"https://registry.npmjs.org/@msw/cloudflare/-/cloudflare-0.0.1.tgz","fileCount":5,"integrity":"sha512-baTWdbz1Aeiyk7/Gjw9xv6OscQuvXvVTAgvX3OYZuAbI+lI2Lys/38EFqyfmB055p1k3I+u0HdH+ZwOr4jFyZg==","signatures":[{"sig":"MEQCIBJ6D41Mg8epXEIlZXKGObtGAh5ZhHGWvz1GZXW9YmPYAiBAkmZfH/3e1jKCjVINjoKy3z8TJH5rU3FULd9wCPffGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@msw%2fcloudflare@0.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13319},"type":"module","exports":{".":"./build/index.mjs"},"scripts":{"lint":"publint","test":"vitest","build":"tsdown","start":"tsdown -w","release":"release publish"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ddacf365-a11b-4e19-b5bd-853a13d52814"}},"repository":{"url":"git+https://github.com/mswjs/cloudflare.git","type":"git"},"description":"Mock API in Cloudflare with Mock Service Worker.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"@mswjs/interceptors":"^0.41.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.14.6","tsdown":"^0.21.10","vitest":"^4.1.5","publint":"^0.3.18","typescript":"^6.0.3","@ossjs/release":"^0.11.0","@epic-web/test-server":"^0.1.6","@cloudflare/workers-types":"^4.20260424.1","@cloudflare/vitest-pool-workers":"^0.14.9"},"peerDependencies":{"msw":">=2.14.1"},"_npmOperationalInternal":{"tmp":"tmp/cloudflare_0.0.1_1782833969761_0.7532555758520589","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@msw/cloudflare","version":"0.1.0","keywords":["cloudflare","mock","api","intercept","request","network","test"],"author":"Artem Zakharchenko <kettanaito@gmail.com>","license":"MIT","_id":"@msw/cloudflare@0.1.0","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"homepage":"https://github.com/mswjs/cloudflare","dist":{"shasum":"8ac43bc63fe216bc69b3a5e18bf42b63c8fd70aa","tarball":"https://registry.npmjs.org/@msw/cloudflare/-/cloudflare-0.1.0.tgz","fileCount":5,"integrity":"sha512-KzfkSz29FJ3oI+xQldkXqYOmO4F24+EhYHTJboGR02q9MDaC634pQMzzafuth9PH1e4hc8qcb0qQt4npLmP9RA==","signatures":[{"sig":"MEQCIG6LeUtp0JhyFnNhDF24sPaa4g+MMR4jmp9THJIy+SrtAiBBDhU2xf77fFRjspKivxLzBRkU24Wh6Uvr/VIOCcTlgw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHQ+H+XYBxeYLtglilSlzaN6l04tjSpAsaQaTmQznkR/AiBSCcl8GWnQL69AO2vlyB8D3utnQwusTmAw5GyFsM7WZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@msw%2fcloudflare@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13319},"type":"module","exports":{".":"./build/index.mjs"},"scripts":{"lint":"publint","test":"vitest","build":"tsdown","start":"tsdown -w","release":"release publish"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ddacf365-a11b-4e19-b5bd-853a13d52814"}},"repository":{"url":"git+https://github.com/mswjs/cloudflare.git","type":"git"},"description":"Mock API in Cloudflare with Mock Service Worker.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"@mswjs/interceptors":"^0.41.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.14.6","tsdown":"^0.21.10","vitest":"^4.1.5","publint":"^0.3.18","typescript":"^6.0.3","@ossjs/release":"^0.11.2","@epic-web/test-server":"^0.1.6","@cloudflare/workers-types":"^4.20260424.1","@cloudflare/vitest-pool-workers":"^0.14.9"},"peerDependencies":{"msw":">=2.14.1"},"_npmOperationalInternal":{"tmp":"tmp/cloudflare_0.1.0_1790340751342_0.27702739740778703","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"_id":"@msw/cloudflare@0.2.0","dist":{"shasum":"8dbd2a622efc19a4c989adee579f6cdcfa298631","tarball":"https://registry.npmjs.org/@msw/cloudflare/-/cloudflare-0.2.0.tgz","fileCount":5,"integrity":"sha512-Df/0SfMVTRuNiFquyD1GtZcZJmSCo47V3MMOWEqFvFs6/Ik/XED7fjW3wjreY6wmS8hzOxlR7WoeCPU/J2yVEg==","signatures":[{"sig":"MEUCIGtBZZWsZRL+uOSN7mRqj7aojinHJCjYKOVFB6X1xJC+AiEApWH78CudkDe2Ue9h2igDeq+VGZZmChhia1q1DFlgvoo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDUbZDpNqAm3cNjvfRn3tn1dwZ1JLVSOMJz7sdn+KHosAIhAJOKywuRkImAS7U0weyNiIewzaZTNrEaWq38ZPKQ39o0"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@msw%2fcloudflare@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13426},"name":"@msw/cloudflare","type":"module","author":"Artem Zakharchenko <kettanaito@gmail.com>","exports":{".":"./build/index.mjs"},"license":"MIT","scripts":{"lint":"publint","test":"vitest","build":"tsdown","start":"tsdown -w","release":"release publish"},"version":"0.2.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ddacf365-a11b-4e19-b5bd-853a13d52814"}},"homepage":"https://github.com/mswjs/cloudflare","keywords":["cloudflare","mock","api","intercept","request","network","test"],"repository":{"url":"git+https://github.com/mswjs/cloudflare.git","type":"git"},"description":"Mock API in Cloudflare with Mock Service Worker.","directories":{},"maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"@mswjs/interceptors":"^0.45.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^3.0.0","tsdown":"^0.23.0","vitest":"^4.1.5","publint":"^0.3.24","typescript":"^6.0.3","@ossjs/release":"^0.11.2","@epic-web/test-server":"^0.1.6","@cloudflare/workers-types":"^4.20260424.1","@cloudflare/vitest-pool-workers":"^0.14.9"},"peerDependencies":{"msw":">=3"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cloudflare_0.2.0_1790611306125_0.4374985418504025"}}},"time":{"created":"2026-06-30T15:29:42.503Z","modified":"2026-09-28T16:01:46.613Z","0.0.0":"2026-06-30T15:29:42.842Z","0.0.1":"2026-06-30T15:39:29.900Z","0.1.0":"2026-09-25T12:52:31.423Z","0.2.0":"2026-09-28T16:01:46.235Z"},"author":"Artem Zakharchenko <kettanaito@gmail.com>","license":"MIT","homepage":"https://github.com/mswjs/cloudflare","keywords":["cloudflare","mock","api","intercept","request","network","test"],"repository":{"url":"git+https://github.com/mswjs/cloudflare.git","type":"git"},"description":"Mock API in Cloudflare with Mock Service Worker.","maintainers":[{"name":"kettanaito","email":"kettanaito@gmail.com"}],"readme":"# `@msw/cloudflare`\n\nDevelop and test Cloudflare applications with Mock Service Worker.\n\n## Getting started\n\n### Install\n\n```sh\nnpm i @msw/cloudflare\n```\n\n> This package requires `msw` as a peer dependency.\n\n### Usage\n\nLet's say your worker performs a GET request to `https://example.com/user`.\n\n```ts\n// worker.ts\nexport default {\n  async fetch(req, env, ctx) {\n    const response = await fetch('https://api.example.com/user')\n    const user = await response.json()\n\n    return new Response(user.id, {\n      headers: { 'content-type': 'text/plain' },\n    })\n  },\n}\n```\n\nHere's how you can intercept and mock that third-party request in order to reliably test your worker in Vitest.\n\n```ts\nimport { env } from 'cloudflare:workers'\nimport { createExecutionContext } from 'cloudflare:test'\nimport { http, HttpResponse } from 'msw'\nimport { setupNetwork } from '@msw/cloudflare'\nimport worker from './worker'\n\nconst network = setupNetwork()\n\nbeforeAll(() => {\n  network.enable()\n})\n\nafterEach(() => {\n  network.resetHandlers()\n})\n\nafterAll(() => {\n  network.disable()\n})\n\nit('responds with the user id', async () => {\n  network.use(\n    http.get('https://api.example.com/user', () => {\n      return HttpResponse.json({ id: 1, name: 'John Maverick' })\n    }),\n  )\n\n  const ctx = createExecutionContext()\n  const response = await worker.fetch(\n    new Request('http://localhost/'),\n    env,\n    ctx,\n  )\n\n  expect.soft(response.status).toBe(200)\n  await expect.soft(response.text()).resolves.toBe('1')\n})\n```\n\n## Related materials\n\n- [**Write your first test in Cloudflare Docs**](https://developers.cloudflare.com/workers/testing/vitest-integration/write-your-first-test/)\n- [Mocking HTTP with MSW](https://mswjs.io/docs/http/)\n- [Mocking GraphQL with MSW](https://mswjs.io/docs/graphql/)\n- [Mocking WebSocket with MSW](https://mswjs.io/docs/websocket/)\n","readmeFilename":""}