merge

tcmts.cli.npm.merge · #xpau6isw · term · runs anywhere

into and what u uses, together.

import type { Unit } from "#codebase/tcmts/cli/npm";

export function merge(into: Unit, u: Unit) {
  const add = (a: string[], b: string[]) => {
    for (const x of b) if (!a.includes(x)) a.push(x);
  };
  add(into.globals, u.globals);
  add(into.members, u.members);
  add(into.locals, u.locals);
  add(into.opaque, u.opaque);
  for (const i of u.imports)
    if (!into.imports.some((j) => j.spec === i.spec && j.name === i.name)) into.imports.push(i);
  into.state ||= u.state;
  into.clock ||= u.clock;
}

uses

used by