Skip to main content
Module

x/fetch_event_adapter/README.md

Dispatches global fetch events using Deno's native http server.
Go to Latest
File

Deno Fetch Event Adapter

Dispatches global fetch events using Deno’s http module native HTTP server.

It is mostly intended as a temporary solution until Deno implements the Service Worker spec directly.

It works fine for local testing, developing Cloudflare Workers while offline, and similar use cases.

Example

// filename: "sw.js"
import 'https://deno.land/x/fetch_event_adapter/listen.ts';

if (typeof FetchEvent !== 'undefined') console.log(true);

self.addEventListener('fetch', event => {
  const ip = event.request.headers.get("x-forwarded-for");
  event.respondWith(new Response(`Hello ${ip}`, { 
    headers: [['content-type', 'text/plain']],
  }));
});

Your script needs the --allow-net permissions. It also requires a --location, to know on which port to listen for incoming connections:

deno run --allow-net --location=http://localhost:8000 sw.js

If you set the --location to either HTTPS or port 443, you have to provide a --cert and a --key parameter. Your script will also need the read permission to read the files:

deno run --allow-net --allow-read --location=https://localhost:8000 sw.js \
  --cert=./path/to/localhost.crt \
  --key=./path/to/localhost.key