@spec2ts/core
Version:
Core module for @spec2ts modules, includes codegen helpers and common parsing methods
36 lines (35 loc) • 1.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.replaceSourceFileStatement = exports.prependSourceFileStatements = exports.appendSourceFileStatements = exports.updateSourceFileStatements = exports.createSourceFileFromFile = void 0;
const ts = require("typescript");
const fs_1 = require("fs");
async function createSourceFileFromFile(file) {
const content = await fs_1.promises.readFile(file, "utf8");
return ts.createSourceFile(file, content, ts.ScriptTarget.Latest,
/*setParentNodes*/ false, ts.ScriptKind.TS);
}
exports.createSourceFileFromFile = createSourceFileFromFile;
function updateSourceFileStatements(file, statements) {
return ts.factory.updateSourceFile(file, ts.factory.createNodeArray(statements), file.isDeclarationFile, file.referencedFiles, file.typeReferenceDirectives, file.hasNoDefaultLib, file.libReferenceDirectives);
}
exports.updateSourceFileStatements = updateSourceFileStatements;
function appendSourceFileStatements(file, ...statements) {
return updateSourceFileStatements(file, [...file.statements, ...statements]);
}
exports.appendSourceFileStatements = appendSourceFileStatements;
function prependSourceFileStatements(file, ...statements) {
return updateSourceFileStatements(file, [...statements, ...file.statements]);
}
exports.prependSourceFileStatements = prependSourceFileStatements;
function replaceSourceFileStatement(file, oldStatement, newStatement) {
const i = file.statements.indexOf(oldStatement);
if (i === -1) {
throw new Error(`Unable to find this statement!`);
}
return updateSourceFileStatements(file, [
...file.statements.slice(0, i),
newStatement,
...file.statements.slice(i + 1)
]);
}
exports.replaceSourceFileStatement = replaceSourceFileStatement;