patchImportLines
The import lines that add imports (PatchImport), each checked.
import type { PatchImport } from "#codebase/tcmts/cli/main"; import { UsageError } from "#codebase/tcmts/cli/ui"; export function patchImportLines(imports: PatchImport[]): string[] { const word = /^[A-Za-z_$][\w$]*$/; return imports.map((i) => { const as = i.as || undefined; if (!i.from) throw new UsageError(`an import of ${i.name || "?"} says nothing it's from (\`from\`)`); if ( i.name === "*" || i.name === "default" ? !as || !word.test(as) : !word.test(i.name) || (as !== undefined && !word.test(as)) ) throw new UsageError( `an import of ${JSON.stringify(i.name)}${as ? ` as ${JSON.stringify(as)}` : ""} from ${i.from} isn't one: \`name\` is a name, or \`default\` or \`*\` with \`as\`; \`as\` another`, ); const kind = i.type ? "import type" : "import"; const from = JSON.stringify(i.from); if (i.name === "*") return `${kind} * as ${as} from ${from};`; if (i.name === "default") return `${kind} ${as} from ${from};`; return `${kind} { ${as && as !== i.name ? `${i.name} as ${as}` : i.name} } from ${from};`; }); }