@router-cli/react-router-dev
Version:
File based routing cli for react-router-dom.
34 lines (33 loc) • 1.43 kB
JavaScript
import { template } from "../template";
export const CODE_NAMING = {
exportType: "export type",
exportConst: "export const",
never: "never",
empty: "{}",
pages: "pageImports",
layouts: "layoutImports"
};
export function populateTemplate(args) {
let content = template;
function replaceImportObject(src, type) {
if (src.length > 0) {
content = content.replaceAll(`${CODE_NAMING.exportConst} ${type} = ${CODE_NAMING.empty};`, `${CODE_NAMING.exportConst} ${type} = {
${src.sort().join(',\n ')}
};`);
}
}
replaceImportObject(args.layouts.imports, CODE_NAMING.layouts);
replaceImportObject(args.pages.imports, CODE_NAMING.pages);
content = content.replace("/*imports*/", args.imports.join("\n"));
content = content.replace("/*exports*/", args.exports.join("\n"));
content = content.replaceAll("/*{browserType}*/", args.routerType);
if (args.appRouteComponents.app)
content = content.replace("app: undefined,", `app: App,`);
if (args.appRouteComponents.notFound)
content = content.replace("notFound: undefined,", `notFound: NotFound,`);
if (args.appRouteComponents.error)
content = content.replace("error: undefined,", `error: DefaultErrorComponent,`);
if (args.appRouteComponents.pending)
content = content.replace("pending: undefined,", `pending: DefaultPendingComponent,`);
return content;
}