/// <reference types="@fastly/js-compute" />

const handler = async (event) => {
  const responseLines = [];
  let input = "/foo///bar//baz";
  let regex = "/+";
  let replace = "/";
  let output = input.replace(new RegExp(regex, "g"), replace);
  let log_line = `Replace multiple //// in URL paths with a single one: ${input} ${output}`;
  console.log(log_line);
  responseLines.push(log_line);

  input = "www.example.com";
  output = input.replace(/^(www\.)/,"");
  log_line = `Remove leading www. from host header: ${input} ${output}`;
  console.log(log_line);
  responseLines.push(log_line);

  input = "/foo/bar/";
  output = input.replace(/\/$/,"");
  log_line = `Remove trailing slash: ${input} ${output}`;
  console.log(log_line);
  responseLines.push(log_line);

  input = "/products/furbles/12345/photos";
  regex = "^/products/(\w+)/(\d+)(/(\w+))?$";
  replace = "/legacy.cgi?cat=$1&id=$2&page=$4";
  output = input.replace(new RegExp(regex), replace);
  log_line = `Map path parameters: ${input} ${output}`;
  console.log(log_line);
  responseLines.push(log_line);

  let headers = new Headers({ "Content-Type": "text/plain" });

  let resp = new Response(responseLines.join("\n"), {
    headers,
  });

  return resp;
};

addEventListener("fetch", event => event.respondWith(handler(event)));