memoryLock

tcmts.loader.packages.memoryLock · #5ydmaep2 · term · runs anywhere

import type { PackageLock } from "#codebase/tcmts/loader/packages";

export function memoryLock(): PackageLock {
  const m = new Map<string, { version: string; integrity?: string }>();
  return {
    get: (n, r) => m.get(`${n}@${r}`)?.version,
    set: (n, r, version, integrity) => {
      const was = m.get(`${n}@${r}`);
      m.set(`${n}@${r}`, { version, integrity: integrity ?? (was?.version === version ? was.integrity : undefined) });
    },
    integrity: (n, r) => m.get(`${n}@${r}`)?.integrity,
    all: () => [...m].map(([k, v]) => ({ name: k.slice(0, k.lastIndexOf("@")), range: k.slice(k.lastIndexOf("@") + 1), ...v })),
  };
}

uses

used by