Skip to content

Instantly share code, notes, and snippets.

View nathanclevenger's full-sized avatar
🚀

Nathan Clevenger nathanclevenger

🚀
View GitHub Profile
@nathanclevenger
nathanclevenger / worker.js
Last active October 1, 2022 15:05
Itty Router Example
import { Router } from 'https://pkg.do/itty-router'
import { withParams, json } from 'https://pkg.do/itty-router-extras'
const router = Router()
router.get('/', ({url}) => json({ url, 'Deploy your Gist 🚀': 'https://gist.do/6879562075da644e51a09440f30970da' }))
export default {
fetch: router.handle
}
export default api = (number = 5) => ({ number, squared: number^2, cubed: number^3 })
export default api = (number = 5) => { number, squared: number^2, cubed: number^3 })
import { apis, json } from 'https://pkg.do/apis.do'
export default {
fetch: () => json({apis})
}
@nathanclevenger
nathanclevenger / api.js
Last active September 29, 2022 15:17
Simple API
import { api } from 'https://pkg.do/apis.do'
const myAPI = api(number = 5 => { number, squared: number^2, cubed: number^3 })
export default myAPI
@nathanclevenger
nathanclevenger / config.capnp
Created September 28, 2022 19:14
workerd with TLS config
const config :Workerd.Config = (
services = [
(name = "site-worker", worker = .siteWorker),
],
sockets = [
(name = "https", address = "*:443", https = (tlsOptions = .tlsOptions), service = "site-worker")
],
);
@nathanclevenger
nathanclevenger / module.js
Last active September 13, 2022 16:53
Test ESBuild HTTP Import
export default obj => new Response(JSON.stringify(obj, null, 2))
@nathanclevenger
nathanclevenger / TypedDurableObjectStorage.ts
Created September 1, 2022 14:09 — forked from huw/TypedDurableObjectStorage.ts
Typed Durable Object Storage
import type { Jsonify } from "type-fest";
// Define new storage types here and below and the storage below will automatically use them.
// prettier-ignore
type TypedDurableObjectStorageValue<Key extends string> = Jsonify<
| Key extends "simple" ? boolean : never
| Key extends "complex" ? { age: number } | { name: string } : never
| Key extends `template:type:known` ? number : never
| Key extends `template:type:${string}` ? string | number : never
>;
// function replacer(key, value) {
// if(value instanceof Map) {
// return {
// dataType: 'Map',
// value: Array.from(value.entries()), // or with spread: value: [...value]
// };
// } else {
// return value;
// }
// }
@nathanclevenger
nathanclevenger / cloak.js
Created August 26, 2022 08:27 — forked from stickfigure/cloak.js
Cloudflare worker that proxies encrypted urls
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
const encoder = new TextEncoder();
const decoder = new TextDecoder();
const SECRET_KEY_DATA = encoder.encode('YOUR SECRET KEY');
function normalizeBase64(base64urlencoded) {
return base64urlencoded.replace(/-/g, '+').replace(/_/g, '/');