Skip to content

Where people and agents ship software together. The open-source git platform for the whole job: issues, agents, checks and deploys to the edge.

g1t.sh
34 linesCodeBlameRaw

Pick any line to see why it is the way it is: the commit, the pull request and issue it came from, and what the agent was thinking.

An issue being worked on no longer offers Bring your own agent beside the pull request doing it1/**
2 * Things that never change once they exist, such as a commit and its diff,
3 * kept in the data centre's cache so only the first visit pays for them.
4 *
5 * Call this only after the viewer is known to be allowed to see the thing:
6 * the cache is shared by everyone who asks for the same key.
7 */
8const ORIGIN = "https://immutable.g1t.internal/";
9/** A year: what is cached here does not go stale. */
10const MAX_AGE_SECONDS = 365 * 24 * 60 * 60;
11
12export async function immutable<T>(key: string, load: () => Promise<T | null>): Promise<T | null> {
13 const url = ORIGIN + encodeURIComponent(key);
14 let cache: Cache | null = null;
15 try {
16 cache = (caches as unknown as { default: Cache }).default;
17 const hit = await cache.match(url);
18 if (hit) return (await hit.json()) as T;
19 } catch {
20 // No cache (local development): load it every time.
21 }
22 const value = await load();
23 if (value != null && cache) {
24 await cache
25 .put(
26 url,
27 new Response(JSON.stringify(value), {
28 headers: { "content-type": "application/json", "cache-control": `max-age=${MAX_AGE_SECONDS}, immutable` },
29 }),
30 )
31 .catch(() => {});
32 }
33 return value;
34}

This file's history is long; its oldest lines are credited to the oldest commit read.