maestro-roku-bsc-plugin
Version:
Visual studio plugin for maestro brightscript development
52 lines • 2.53 kB
JavaScript
;
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