import { type LintFormatTooling } from "../lint-format-tooling.js"; import { type NodeTarget } from "../node-target.js"; export type PackageManager = "pnpm" | "npm" | "yarn"; export type LicenseName = "MIT" | "ISC" | "Apache-2.0" | "UNLICENSED"; export type Bundler = "tsc" | "tsdown"; /** * Options that control the files emitted for a generated TypeScript library. */ export interface ScaffoldConfig { author: string; bundler: Bundler; /** * Copyright year stamped into the generated LICENSE. Recorded at scaffold * time and replayed by `update`, so re-running `update` in a later year keeps * the original year instead of silently rewriting it. */ copyrightYear: string; description: string; githubRepoUrl: string; includeCli: boolean; includeCodecov: boolean; includeCommunityFiles: boolean; includeJsr: boolean; includeSecurityWorkflows: boolean; includeZod: boolean; license: LicenseName; lintFormatTooling: LintFormatTooling; /** * Node major the generated project targets. Drives `engines.node`, the * `@types/node` pin, and the CI matrix together — see `../node-target.ts`. */ nodeTarget: NodeTarget; packageManager: PackageManager; projectName: string; /** * Scaffold as a package inside an existing workspace: root-owned files (git * ignore, CI workflows, Renovate, editor settings, hooks, the workspace * manifest) are left to the parent repository. Nothing outside the target * directory is ever written. */ workspaceMode: boolean; } export type ScaffoldConfigOverrides = { [Key in keyof ScaffoldConfig]?: ScaffoldConfig[Key] | undefined; }; /** * Read once at scaffold time. Every other code path takes the year from * `ScaffoldConfig`, keeping `buildProjectFiles` a pure function of its config. */ export declare const currentCopyrightYear: () => string; export declare const stripUndefinedOverrides: (overrides: ScaffoldConfigOverrides) => Partial; export declare const defaultScaffoldConfig: (overrides?: ScaffoldConfigOverrides) => ScaffoldConfig; export interface GeneratedFile { content: string; executable?: boolean; path: string; } export declare const packageManagerConfig: { npm: { addCommand: string; runPrefix: string; }; pnpm: { addCommand: string; runPrefix: string; }; yarn: { addCommand: string; runPrefix: string; }; }; export declare const getBinName: (projectName: string) => string; export declare const extractAuthorName: (author: string) => string; /** * Pulls the address out of an `Name ` author string. Returns undefined * when the author carries no email, so callers can fall back to a placeholder * rather than inventing a contact address. */ export declare const extractAuthorEmail: (author: string) => string | undefined; //# sourceMappingURL=scaffold-config.d.ts.map