g1t/apps/web/app/lib/registry-paths.ts

19 lines808 bytesCodeBlame
1/**
2 * Which requests to g1t.sh belong to a service other than the site: git
3 * over HTTPS (the repos service) and the package registries (the packages
4 * service). `workers/app.ts` hands each to its binding as it is.
5 */
6
7const GIT_PATH = /\/(info\/refs|git-upload-pack|git-receive-pack)$/;
8/** The container registry: OCI Distribution's `/v2/`, and its token endpoint at `/v2/token`. */
9const REGISTRY_PATH = /^\/v2(?:\/|$)/;
10/** The npm registry: `/-/npm/`, which `.npmrc` names for a workspace's scope. */
11const NPM_PATH = /^\/-\/npm(?:\/|$)/;
12
13export type ServicePath = "git" | "packages" | null;
14
15export function servicePath(pathname: string): ServicePath {
16 if (REGISTRY_PATH.test(pathname) || NPM_PATH.test(pathname)) return "packages";
17 if (GIT_PATH.test(pathname)) return "git";
18 return null;
19}