UNPKG

maestro-roku-bsc-plugin

Version:

Visual studio plugin for maestro brightscript development

52 lines 2.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const brighterscript_1 = require("brighterscript"); const Diagnostics_1 = require("../utils/Diagnostics"); /** * Manages build imports */ class ImportProcessor { constructor(config) { this.config = config; } getImportStatements(file, buildKey, previousImport, program) { let imports = []; let importValues = this.config.buildTimeImports ? this.config.buildTimeImports[buildKey] : null; if (importValues) { if (importValues.length > 0) { for (const pkg of this.config.buildTimeImports[buildKey]) { let importToken = (0, brighterscript_1.createToken)(brighterscript_1.TokenKind.Import, 'import', previousImport.importToken.range); let filePathToken = (0, brighterscript_1.createToken)(brighterscript_1.TokenKind.SourceFilePathLiteral, `"${pkg}"`, previousImport.importToken.range); imports.push(new brighterscript_1.ImportStatement(importToken, filePathToken)); } } else { //this is not an error - it can happen // addBuildTimeErrorImportNoImports(file, buildKey, previousImport.range.start.line); } } else { (0, Diagnostics_1.addBuildTimeErrorImportMissingKey)(file, buildKey, previousImport.range.start.line); } return imports; } processDynamicImports(file, program) { let statementsToRemove = []; let statementsToAdd = []; for (let importStatement of file.parser.references.importStatements) { if (importStatement.filePath.startsWith('build:/')) { let key = importStatement.filePath.replace('build:/', ''); statementsToRemove.push(importStatement); statementsToAdd = statementsToAdd.concat(this.getImportStatements(file, key, importStatement, program)); } } if (statementsToRemove.length > 0) { file.parser.ast.statements = file.parser.ast.statements.filter((el) => !statementsToRemove.includes(el)); file.parser.ast.statements = statementsToAdd.concat(file.parser.ast.statements); file.parser.ast.statements = file.parser.ast.statements.filter((el) => !statementsToRemove.includes(el)); file.parser.invalidateReferences(); } } } exports.default = ImportProcessor; //# sourceMappingURL=ImportProcessor.js.map