@softwareventures/maintain-project
Version:
Automatically create and maintain TypeScript projects with standard settings for Software Ventures Limited
30 lines • 1.58 kB
JavaScript
import { insert, insertFn } from "../fs-stage/fs-stage.js";
import { chainAsyncResultsFn, chainResults, success } from "../result/result.js";
import { copyFromTemplate } from "../template/copy.js";
import { projectTemplateId } from "../template/project-template-id.js";
export function writeTypeScriptFiles(project) {
return chainAsyncResultsFn([
async (fsStage) => copyFromTemplate(projectTemplateId(project), "index.ts").then(file => insert(fsStage, "index.ts", file)),
async (fsStage) => copyFromTemplate(projectTemplateId(project), "index.test.ts").then(file => insert(fsStage, "index.test.ts", file)),
writeTsConfigFiles(project),
writeTypeDeclarations(project)
]);
}
function writeTsConfigFiles(project) {
const tsConfigJson = copyFromTemplate(projectTemplateId(project), "tsconfig.json");
const tsConfigTestJson = copyFromTemplate(projectTemplateId(project), "tsconfig.test.json");
return async (fsStage) => Promise.all([tsConfigJson, tsConfigTestJson]).then(([tsConfigJson, tsConfigTestJson]) => chainResults(fsStage, [
insertFn("tsconfig.json", tsConfigJson),
insertFn("tsconfig.test.json", tsConfigTestJson)
]));
}
function writeTypeDeclarations(project) {
if (project.target === "webapp") {
const file = copyFromTemplate(projectTemplateId(project), "types/preact-debug.d.ts");
return async (fsStage) => file.then(file => insert(fsStage, "types/preact-debug.d.ts", file));
}
else {
return async (fsStage) => success(fsStage);
}
}
//# sourceMappingURL=write.js.map