testGroupImports

tcmts.loader.testGroupImports · #b4lsj2iw · term

A scratch file's imports read as written by hand: one statement per module, type-only names apart, wrapped when long.

import { groupImports } from "#codebase/tcmts/loader";
import assert from "node:assert/strict";

export const testGroupImports = () => {
  assert.deepEqual(
    groupImports([`import { a } from "#codebase/lib";`, `import fs from "node:fs";`, `import type { T } from "#codebase/lib";`, `import { b as c } from "#codebase/lib";`]),
    [`import { a, b as c } from "#codebase/lib";`, `import type { T } from "#codebase/lib";`, `import fs from "node:fs";`],
  );
  const many = Array.from({ length: 30 }, (_, i) => `import { name${i} } from "#codebase/a";`);
  const [wrapped] = groupImports(many);
  assert.match(wrapped!, /^import \{\n  name0, name1, (?:[^\n]*,\n  )+[^\n]*,\n\} from "#codebase\/a";$/);
  assert.ok(wrapped!.split("\n").every((l) => l.length <= 120));
}

uses