Skip to content

Instantly share code, notes, and snippets.

import { TemplateResult } from "lit-html";
type Render = (tpl: TemplateResult) => void;
type Step<In, Out> = {
template: (args: {
next: (arg: Out) => void;
state: In;
back?: () => void;
}) => TemplateResult;
@nmattia
nmattia / netlify-edge.ts
Created December 6, 2023 09:52
Netlify Edge Function for token-based website access (using cookie)
// On first access looks up a search param: `?token=...`
// If the token is valid, saves it in cookies so that
// subsequent requests don't need the search param.
import type { Config, Context } from "@netlify/edge-functions";
// Ideally look up from the environment
const EXPECTED_TOKEN = "very-secret";
const TOKEN_COOKIE_NAME = "my-token";
const TOKEN_HEADER_NAME = "x-my-token";
@nmattia
nmattia / netlify-edge-basicauth.ts
Created December 6, 2023 10:30
Netlify Edge Function Basic Auth authorization
import type { Config, Context } from "@netlify/edge-functions";
// https://datatracker.ietf.org/doc/html/rfc7617
// base64 encoded "user:pass"
const USER_PASS_ENCODED = "dXNlcjpwYXNz";
export default async (request: Request, context: Context) => {
const requestAuthentication = () => {
const response = new Response(null, {
status: 401,