import { type Except } from '@knapsack/utils'; import { type JsonSchemaObject, type RendererId, type PkgPathAliases, type KnapsackPattern, type TemplateSuggestionsGetFn, type KnapsackFile, type KnapsackPatternTemplate, type TemplateRendererMeta, type Demo, type KsRenderResults, type ContentStateForRendering, type TemplateInfo, type CodeSrc, type CodeSrcUserConfig, type DemoWithData, normalizeTemplateInfo, type RendererDiscovery } from '@knapsack/types'; import { type PathAbsolute } from '@knapsack/file-utils'; import type { Creator } from '@knapsack/creator-utils'; import { log } from '../../../cli/log'; import { CliLifecycle } from '../../../types/cli-lifecycle'; import type { RouteInspect } from '../../../types/endpoints'; export type RendererBaseHydrateData = { codeSrcs: Record; }; export declare abstract class RendererBase implements CliLifecycle { #private; id: TheRendererId; language: string; logPrefix: string; log: typeof log; /** * Aliases for package paths * Example: * ```js * { * 'my-pkg': '../path/to/my-pkg', * } * ``` */ pkgPathAliases?: PkgPathAliases; creators?: Creator[]; codeSrcs: Map; codeSrcsUserConfig: CodeSrcUserConfig[]; constructor({ id, language, codeSrcsUserConfig, }: { id: TheRendererId; language: string; codeSrcsUserConfig: CodeSrcUserConfig[]; }); /** * This is ran after constructor and before any other methods * We do this to pass in things that the users do no pass into the constructor in `knapsack.config.js` */ setConfig({ userConfigDir, dataDir, }: { /** * directory path where `knapsack.config.js` can be found * non-absolute paths in `knapsack.config.js` will be relative from this */ userConfigDir: PathAbsolute; dataDir: PathAbsolute; }): void; init(this: Renderer, _: Parameters[0]): ReturnType; build(this: Renderer): ReturnType['build']>; hydrate(this: Renderer, { hydrateData, }: Parameters['hydrate']>[0]): ReturnType['hydrate']>; /** * directory path where `knapsack.config.js` can be found * non-absolute paths in `knapsack.config.js` will be relative from this */ get userConfigDir(): PathAbsolute; get dataDir(): PathAbsolute; get outputDir(): PathAbsolute; get publicPath(): `/${string}/`; get hydrateDataFilePath(): string; onChange(): void; watch(this: Renderer): Promise; changeCase: (str: string) => string; normalizeTemplateInfo(this: Renderer, opt: Except[0], 'rendererId'>): TemplateInfo; normalizeDemo(this: Renderer, { demo, state, }: { demo: DemoWithData; state: ContentStateForRendering; }): TemplateInfo; resolvePath: (path: string | { path: string; resolveFromDir?: string; }) => Promise<{ exists: boolean; absolutePath: PathAbsolute; originalPath: string; type: "absolute" | "relative" | "package" | "unknown"; }>; /** @deprecated use async `resolvePath` instead */ resolvePathSync: (path: string | { path: string; resolveFromDir?: string; }) => { exists: boolean; absolutePath: PathAbsolute; originalPath: string; type: "absolute" | "relative" | "package" | "unknown"; }; addCodeSrc({ path, relativePathsFrom, }: { path: string; relativePathsFrom?: 'data-dir' | 'config-file'; }): Promise; getCodeSrcs({ includePrototypePaths, }?: { includePrototypePaths?: boolean; }): CodeSrc[]; abstract getDiscovery(this: Renderer): Promise>; getUnusedTemplatePaths({ globPaths, state, cwd, }: { globPaths: string[]; cwd?: string; state: ContentStateForRendering; }): Promise<{ unusedPaths: string[]; usedPaths: string[]; }>; static convertSchemaToTypeScriptDefs({ schema, title, description, patternId, templateId, preBanner, postBanner, }: { schema: JsonSchemaObject; /** * Will become the `export`-ed `interface` */ title: string; description?: string; patternId: string; templateId: string; preBanner?: string; postBanner?: string; }): Promise; writeHydrateData: (data: TheHydrateData) => Promise; readHydrateData: () => Promise; abstract getMeta: () => TemplateRendererMeta; } export interface Renderable { render(opt: { state: ContentStateForRendering; demo: Demo; }): Promise; getUsage(opt: Parameters[0]): Promise; getTemplateSuggestions?(_opt: Parameters[0]): ReturnType; inspect?(templateInfo: TemplateInfo): Promise; getTemplateMeta?(_opt: { pattern: KnapsackPattern; template: KnapsackPatternTemplate; }): Promise; /** * The result of all the `getTemplateMeta` runs aggregated together * @see {Renderer['getTemplateMeta']} * @see getTemplateMeta * @see {getTemplateMeta} */ alterTemplateMetaFiles?(opt: { files: KnapsackFile[]; metaDir: string; }): Promise; } export type Renderer = Renderable & RendererBase & CliLifecycle; //# sourceMappingURL=renderer-base.d.ts.map