@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
34 lines (32 loc) • 1.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.transpile = void 0;
const tslib_1 = require("tslib");
const ts_utils_1 = require("@neo-one/ts-utils");
const typescript_concatenator_1 = require("@neo-one/typescript-concatenator");
const typescript_1 = tslib_1.__importDefault(require("typescript"));
exports.transpile = ({ sourceFile, context }) => {
const isExternalFile = (node, _importPath, decl) => {
if (typescript_1.default.isImportDeclaration(decl) &&
!ts_utils_1.tsUtils.importExport.hasValueReference(context.program, context.languageService, decl)) {
return true;
}
return context.builtins.isBuiltinFile(node);
};
const concatenator = new typescript_concatenator_1.Concatenator({
context: {
typeChecker: context.typeChecker,
program: context.program,
languageService: context.languageService,
getSymbol: context.analysis.getSymbol.bind(context.analysis),
isExternalFile,
},
sourceFile,
});
const sourceFiles = concatenator.sourceFiles;
if (sourceFiles.length === 0 || sourceFiles.length === 1) {
return undefined;
}
return ts_utils_1.tsUtils.printBundle(context.program, sourceFiles, concatenator.substituteNode);
};
//# sourceMappingURL=transpile.js.map