UNPKG

@softwareventures/maintain-project

Version:

Automatically create and maintain TypeScript projects with standard settings for Software Ventures Limited

30 lines 1.58 kB
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