UNPKG

@spec2ts/core

Version:

Core module for @spec2ts modules, includes codegen helpers and common parsing methods

36 lines (35 loc) 1.81 kB
"use strict"; 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;