writeView

tcmts.cli.views.writeView · #gjh4oqra · term · runs on the server

uses node:fs

Write a definition's view file (if it changed); where its declaration starts in it. Not for a branch only read (--branch): where it would be is said, and nothing written.

import type { CodebaseCore } from "#codebase/tcmts/cli/codebase";
import type { Placement } from "#codebase/tcmts/cli/placement";
import { lineOf, srcDir, viewFile, viewText, writeViewsConfig } from "#codebase/tcmts/cli/views";
import { writeIfChanged } from "#codebase/tcmts/loader";
import fs from "node:fs";
import path_1 from "node:path";

export function writeView(
  cb: CodebaseCore,
  hash: string,
  placement?: Placement,
): { file: string; line: number; inserts: number[] } | undefined {
  const file = viewFile(cb, hash);
  const p = cb.store.pathsOf(hash)[0];
  const v = viewText(cb, p ? cb.lookup(p) : [hash], placement);
  if (!v) return undefined;
  if (cb.store.reading === undefined) {
    // (a session's first: TypeScript in an editor reads it as the project does)
    if (cb.sessionDir && !fs.existsSync(path_1.join(srcDir(cb), "tsconfig.json")))
      writeViewsConfig(cb);
    writeIfChanged(file, v.text);
  }
  return {
    file,
    line: lineOf(v.text, v.starts.get(hash) ?? 0),
    inserts: v.inserts.get(hash) ?? [],
  };
}

uses

used by