brighterscript 1.0.0-alpha.5 → 1.0.0-alpha.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +79 -138
- package/bsconfig.schema.json +196 -5
- package/dist/ActionPipeline.d.ts +10 -0
- package/dist/ActionPipeline.js +40 -0
- package/dist/ActionPipeline.js.map +1 -0
- package/dist/AstValidationSegmenter.d.ts +45 -0
- package/dist/AstValidationSegmenter.js +322 -0
- package/dist/AstValidationSegmenter.js.map +1 -0
- package/dist/BsConfig.d.ts +161 -43
- package/dist/BusyStatusTracker.d.ts +61 -0
- package/dist/BusyStatusTracker.js +148 -0
- package/dist/BusyStatusTracker.js.map +1 -0
- package/dist/Cache.d.ts +3 -8
- package/dist/Cache.js +9 -14
- package/dist/Cache.js.map +1 -1
- package/dist/CacheVerifier.d.ts +7 -0
- package/dist/CacheVerifier.js +20 -0
- package/dist/CacheVerifier.js.map +1 -0
- package/dist/CodeActionUtil.d.ts +29 -4
- package/dist/CodeActionUtil.js +22 -5
- package/dist/CodeActionUtil.js.map +1 -1
- package/dist/CommentFlagProcessor.d.ts +20 -15
- package/dist/CommentFlagProcessor.js +143 -58
- package/dist/CommentFlagProcessor.js.map +1 -1
- package/dist/CrossScopeValidator.d.ts +68 -0
- package/dist/CrossScopeValidator.js +650 -0
- package/dist/CrossScopeValidator.js.map +1 -0
- package/dist/DependencyGraph.d.ts +8 -3
- package/dist/DependencyGraph.js +49 -16
- package/dist/DependencyGraph.js.map +1 -1
- package/dist/DiagnosticCollection.d.ts +21 -5
- package/dist/DiagnosticCollection.js +77 -24
- package/dist/DiagnosticCollection.js.map +1 -1
- package/dist/DiagnosticFilterer.d.ts +27 -6
- package/dist/DiagnosticFilterer.js +273 -60
- package/dist/DiagnosticFilterer.js.map +1 -1
- package/dist/DiagnosticManager.d.ts +83 -0
- package/dist/DiagnosticManager.js +422 -0
- package/dist/DiagnosticManager.js.map +1 -0
- package/dist/DiagnosticMessages.d.ts +602 -196
- package/dist/DiagnosticMessages.js +926 -342
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/DiagnosticSeverityAdjuster.d.ts +7 -0
- package/dist/DiagnosticSeverityAdjuster.js +45 -0
- package/dist/DiagnosticSeverityAdjuster.js.map +1 -0
- package/dist/FunctionScope.d.ts +28 -0
- package/dist/FunctionScope.js +52 -0
- package/dist/FunctionScope.js.map +1 -0
- package/dist/KeyedThrottler.d.ts +3 -3
- package/dist/KeyedThrottler.js +3 -3
- package/dist/KeyedThrottler.js.map +1 -1
- package/dist/LanguageServer.d.ts +136 -104
- package/dist/LanguageServer.js +577 -741
- package/dist/LanguageServer.js.map +1 -1
- package/dist/Logger.d.ts +17 -13
- package/dist/Logger.js +64 -34
- package/dist/Logger.js.map +1 -1
- package/dist/PluginInterface.d.ts +32 -10
- package/dist/PluginInterface.js +117 -7
- package/dist/PluginInterface.js.map +1 -1
- package/dist/Program.d.ts +302 -98
- package/dist/Program.js +1613 -726
- package/dist/Program.js.map +1 -1
- package/dist/ProgramBuilder.d.ts +39 -22
- package/dist/ProgramBuilder.js +245 -179
- package/dist/ProgramBuilder.js.map +1 -1
- package/dist/Scope.d.ts +227 -106
- package/dist/Scope.js +609 -557
- package/dist/Scope.js.map +1 -1
- package/dist/ScopeNamespaceLookup.d.ts +73 -0
- package/dist/ScopeNamespaceLookup.js +242 -0
- package/dist/ScopeNamespaceLookup.js.map +1 -0
- package/dist/SemanticTokenUtils.js +5 -1
- package/dist/SemanticTokenUtils.js.map +1 -1
- package/dist/Stopwatch.d.ts +4 -0
- package/dist/Stopwatch.js +8 -1
- package/dist/Stopwatch.js.map +1 -1
- package/dist/SymbolTable.d.ts +145 -26
- package/dist/SymbolTable.js +575 -64
- package/dist/SymbolTable.js.map +1 -1
- package/dist/SymbolTypeFlag.d.ts +9 -0
- package/dist/SymbolTypeFlag.js +14 -0
- package/dist/SymbolTypeFlag.js.map +1 -0
- package/dist/Throttler.d.ts +12 -0
- package/dist/Throttler.js +39 -0
- package/dist/Throttler.js.map +1 -1
- package/dist/Watcher.d.ts +0 -3
- package/dist/Watcher.js +0 -3
- package/dist/Watcher.js.map +1 -1
- package/dist/XmlScope.d.ts +5 -15
- package/dist/XmlScope.js +34 -90
- package/dist/XmlScope.js.map +1 -1
- package/dist/astUtils/CachedLookups.d.ts +50 -0
- package/dist/astUtils/CachedLookups.js +337 -0
- package/dist/astUtils/CachedLookups.js.map +1 -0
- package/dist/astUtils/Editor.d.ts +69 -0
- package/dist/astUtils/Editor.js +245 -0
- package/dist/astUtils/Editor.js.map +1 -0
- package/dist/astUtils/creators.d.ts +54 -19
- package/dist/astUtils/creators.js +242 -42
- package/dist/astUtils/creators.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +199 -85
- package/dist/astUtils/reflection.js +518 -145
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/astUtils/stackedVisitor.js.map +1 -1
- package/dist/astUtils/visitors.d.ts +117 -53
- package/dist/astUtils/visitors.js +95 -15
- package/dist/astUtils/visitors.js.map +1 -1
- package/dist/astUtils/xml.d.ts +9 -8
- package/dist/astUtils/xml.js +12 -7
- package/dist/astUtils/xml.js.map +1 -1
- package/dist/bscPlugin/BscPlugin.d.ts +26 -4
- package/dist/bscPlugin/BscPlugin.js +96 -4
- package/dist/bscPlugin/BscPlugin.js.map +1 -1
- package/dist/bscPlugin/CallExpressionInfo.d.ts +36 -0
- package/dist/bscPlugin/CallExpressionInfo.js +142 -0
- package/dist/bscPlugin/CallExpressionInfo.js.map +1 -0
- package/dist/bscPlugin/FileWriter.d.ts +19 -0
- package/dist/bscPlugin/FileWriter.js +79 -0
- package/dist/bscPlugin/FileWriter.js.map +1 -0
- package/dist/bscPlugin/SignatureHelpUtil.d.ts +10 -0
- package/dist/bscPlugin/SignatureHelpUtil.js +137 -0
- package/dist/bscPlugin/SignatureHelpUtil.js.map +1 -0
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.d.ts +109 -7
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +676 -26
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
- package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.d.ts +17 -0
- package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.js +66 -0
- package/dist/bscPlugin/codeActions/FixAllCodeActionsProcessor.js.map +1 -0
- package/dist/bscPlugin/codeActions/codeActionHelpers.d.ts +18 -0
- package/dist/bscPlugin/codeActions/codeActionHelpers.js +31 -0
- package/dist/bscPlugin/codeActions/codeActionHelpers.js.map +1 -0
- package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +65 -0
- package/dist/bscPlugin/completions/CompletionsProcessor.js +633 -0
- package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -0
- package/dist/bscPlugin/definition/DefinitionProvider.d.ts +13 -0
- package/dist/bscPlugin/definition/DefinitionProvider.js +220 -0
- package/dist/bscPlugin/definition/DefinitionProvider.js.map +1 -0
- package/dist/bscPlugin/fileProviders/FileProvider.d.ts +9 -0
- package/dist/bscPlugin/fileProviders/FileProvider.js +51 -0
- package/dist/bscPlugin/fileProviders/FileProvider.js.map +1 -0
- package/dist/bscPlugin/hover/HoverProcessor.d.ts +18 -0
- package/dist/bscPlugin/hover/HoverProcessor.js +238 -0
- package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -0
- package/dist/bscPlugin/references/ReferencesProvider.d.ts +12 -0
- package/dist/bscPlugin/references/ReferencesProvider.js +57 -0
- package/dist/bscPlugin/references/ReferencesProvider.js.map +1 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.d.ts +7 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.js +77 -0
- package/dist/bscPlugin/selectionRanges/SelectionRangesProcessor.js.map +1 -0
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +14 -0
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +164 -0
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -0
- package/dist/bscPlugin/serialize/BslibManager.d.ts +12 -0
- package/dist/bscPlugin/serialize/BslibManager.js +46 -0
- package/dist/bscPlugin/serialize/BslibManager.js.map +1 -0
- package/dist/bscPlugin/serialize/FileSerializer.d.ts +9 -0
- package/dist/bscPlugin/serialize/FileSerializer.js +80 -0
- package/dist/bscPlugin/serialize/FileSerializer.js.map +1 -0
- package/dist/bscPlugin/symbols/DocumentSymbolProcessor.d.ts +7 -0
- package/dist/bscPlugin/symbols/DocumentSymbolProcessor.js +22 -0
- package/dist/bscPlugin/symbols/DocumentSymbolProcessor.js.map +1 -0
- package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.d.ts +7 -0
- package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.js +26 -0
- package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.js.map +1 -0
- package/dist/bscPlugin/symbols/symbolUtils.d.ts +5 -0
- package/dist/bscPlugin/symbols/symbolUtils.js +141 -0
- package/dist/bscPlugin/symbols/symbolUtils.js.map +1 -0
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.d.ts +34 -0
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js +504 -0
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -0
- package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.d.ts +12 -0
- package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js +99 -0
- package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js.map +1 -0
- package/dist/bscPlugin/validation/BrsFileAfterValidator.d.ts +7 -0
- package/dist/bscPlugin/validation/BrsFileAfterValidator.js +18 -0
- package/dist/bscPlugin/validation/BrsFileAfterValidator.js.map +1 -0
- package/dist/bscPlugin/validation/BrsFileValidator.d.ts +51 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js +714 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -0
- package/dist/bscPlugin/validation/ProgramValidator.d.ts +11 -0
- package/dist/bscPlugin/validation/ProgramValidator.js +33 -0
- package/dist/bscPlugin/validation/ProgramValidator.js.map +1 -0
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +158 -0
- package/dist/bscPlugin/validation/ScopeValidator.js +1481 -0
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -0
- package/dist/bscPlugin/validation/XmlFileValidator.d.ts +8 -0
- package/dist/bscPlugin/validation/XmlFileValidator.js +50 -0
- package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -0
- package/dist/cli.js +140 -28
- package/dist/cli.js.map +1 -1
- package/dist/common/Sequencer.d.ts +53 -0
- package/dist/common/Sequencer.js +233 -0
- package/dist/common/Sequencer.js.map +1 -0
- package/dist/deferred.d.ts +5 -3
- package/dist/deferred.js +10 -0
- package/dist/deferred.js.map +1 -1
- package/dist/diagnosticUtils.d.ts +61 -4
- package/dist/diagnosticUtils.js +285 -25
- package/dist/diagnosticUtils.js.map +1 -1
- package/dist/examples/plugins/removePrint.d.ts +2 -2
- package/dist/examples/plugins/removePrint.js +8 -12
- package/dist/examples/plugins/removePrint.js.map +1 -1
- package/dist/files/AssetFile.d.ts +24 -0
- package/dist/files/AssetFile.js +25 -0
- package/dist/files/AssetFile.js.map +1 -0
- package/dist/files/BrsFile.d.ts +161 -87
- package/dist/files/BrsFile.js +919 -936
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BscFile.d.ts +102 -0
- package/dist/files/BscFile.js +15 -0
- package/dist/files/BscFile.js.map +1 -0
- package/dist/files/Factory.d.ts +25 -0
- package/dist/files/Factory.js +22 -0
- package/dist/files/Factory.js.map +1 -0
- package/dist/files/LazyFileData.d.ts +21 -0
- package/dist/files/LazyFileData.js +54 -0
- package/dist/files/LazyFileData.js.map +1 -0
- package/dist/files/XmlFile.d.ts +80 -41
- package/dist/files/XmlFile.js +162 -137
- package/dist/files/XmlFile.js.map +1 -1
- package/dist/globalCallables.d.ts +3 -1
- package/dist/globalCallables.js +424 -184
- package/dist/globalCallables.js.map +1 -1
- package/dist/index.d.ts +32 -4
- package/dist/index.js +54 -7
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +987 -125
- package/dist/interfaces.js +21 -0
- package/dist/interfaces.js.map +1 -1
- package/dist/lexer/Lexer.d.ts +51 -12
- package/dist/lexer/Lexer.js +214 -65
- package/dist/lexer/Lexer.js.map +1 -1
- package/dist/lexer/Token.d.ts +27 -11
- package/dist/lexer/Token.js +10 -2
- package/dist/lexer/Token.js.map +1 -1
- package/dist/lexer/TokenKind.d.ts +48 -2
- package/dist/lexer/TokenKind.js +167 -10
- package/dist/lexer/TokenKind.js.map +1 -1
- package/dist/logging.d.ts +14 -0
- package/dist/logging.js +29 -0
- package/dist/logging.js.map +1 -0
- package/dist/lsp/ActionQueue.d.ts +35 -0
- package/dist/lsp/ActionQueue.js +115 -0
- package/dist/lsp/ActionQueue.js.map +1 -0
- package/dist/lsp/DocumentManager.d.ts +63 -0
- package/dist/lsp/DocumentManager.js +122 -0
- package/dist/lsp/DocumentManager.js.map +1 -0
- package/dist/lsp/LspProject.d.ts +287 -0
- package/dist/lsp/LspProject.js +3 -0
- package/dist/lsp/LspProject.js.map +1 -0
- package/dist/lsp/PathFilterer.d.ts +75 -0
- package/dist/lsp/PathFilterer.js +196 -0
- package/dist/lsp/PathFilterer.js.map +1 -0
- package/dist/lsp/Project.d.ts +200 -0
- package/dist/lsp/Project.js +562 -0
- package/dist/lsp/Project.js.map +1 -0
- package/dist/lsp/ProjectManager.d.ts +288 -0
- package/dist/lsp/ProjectManager.js +967 -0
- package/dist/lsp/ProjectManager.js.map +1 -0
- package/dist/lsp/ReaderWriterManager.d.ts +21 -0
- package/dist/lsp/ReaderWriterManager.js +60 -0
- package/dist/lsp/ReaderWriterManager.js.map +1 -0
- package/dist/lsp/worker/MessageHandler.d.ts +99 -0
- package/dist/lsp/worker/MessageHandler.js +138 -0
- package/dist/lsp/worker/MessageHandler.js.map +1 -0
- package/dist/lsp/worker/WorkerPool.d.ts +38 -0
- package/dist/lsp/worker/WorkerPool.js +78 -0
- package/dist/lsp/worker/WorkerPool.js.map +1 -0
- package/dist/lsp/worker/WorkerThreadProject.d.ts +168 -0
- package/dist/lsp/worker/WorkerThreadProject.js +205 -0
- package/dist/lsp/worker/WorkerThreadProject.js.map +1 -0
- package/dist/lsp/worker/WorkerThreadProjectRunner.d.ts +15 -0
- package/dist/lsp/worker/WorkerThreadProjectRunner.js +58 -0
- package/dist/lsp/worker/WorkerThreadProjectRunner.js.map +1 -0
- package/dist/lsp/worker/run.js +14 -0
- package/dist/lsp/worker/run.js.map +1 -0
- package/dist/parser/AstNode.d.ts +205 -0
- package/dist/parser/AstNode.js +305 -0
- package/dist/parser/AstNode.js.map +1 -0
- package/dist/parser/BrightScriptDocParser.d.ts +56 -0
- package/dist/parser/BrightScriptDocParser.js +294 -0
- package/dist/parser/BrightScriptDocParser.js.map +1 -0
- package/dist/parser/BrsTranspileState.d.ts +22 -3
- package/dist/parser/BrsTranspileState.js +19 -0
- package/dist/parser/BrsTranspileState.js.map +1 -1
- package/dist/parser/Expression.d.ts +601 -220
- package/dist/parser/Expression.js +1516 -502
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.d.ts +137 -121
- package/dist/parser/Parser.js +1808 -982
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/SGParser.d.ts +30 -13
- package/dist/parser/SGParser.js +94 -56
- package/dist/parser/SGParser.js.map +1 -1
- package/dist/parser/SGTypes.d.ts +134 -46
- package/dist/parser/SGTypes.js +206 -115
- package/dist/parser/SGTypes.js.map +1 -1
- package/dist/parser/Statement.d.ts +854 -267
- package/dist/parser/Statement.js +2416 -621
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/TranspileState.d.ts +30 -14
- package/dist/parser/TranspileState.js +124 -27
- package/dist/parser/TranspileState.js.map +1 -1
- package/dist/preprocessor/Manifest.d.ts +6 -6
- package/dist/preprocessor/Manifest.js +17 -38
- package/dist/preprocessor/Manifest.js.map +1 -1
- package/dist/roku-types/data.json +20554 -0
- package/dist/roku-types/index.d.ts +5726 -0
- package/dist/roku-types/index.js +11 -0
- package/dist/roku-types/index.js.map +1 -0
- package/dist/types/ArrayType.d.ts +12 -5
- package/dist/types/ArrayType.js +95 -25
- package/dist/types/ArrayType.js.map +1 -1
- package/dist/types/AssociativeArrayType.d.ts +15 -0
- package/dist/types/AssociativeArrayType.js +64 -0
- package/dist/types/AssociativeArrayType.js.map +1 -0
- package/dist/types/BaseFunctionType.d.ts +10 -0
- package/dist/types/BaseFunctionType.js +26 -0
- package/dist/types/BaseFunctionType.js.map +1 -0
- package/dist/types/BooleanType.d.ts +9 -5
- package/dist/types/BooleanType.js +19 -8
- package/dist/types/BooleanType.js.map +1 -1
- package/dist/types/BscType.d.ts +41 -3
- package/dist/types/BscType.js +152 -0
- package/dist/types/BscType.js.map +1 -1
- package/dist/types/BscTypeKind.d.ts +28 -0
- package/dist/types/BscTypeKind.js +33 -0
- package/dist/types/BscTypeKind.js.map +1 -0
- package/dist/types/BuiltInInterfaceAdder.d.ts +28 -0
- package/dist/types/BuiltInInterfaceAdder.js +212 -0
- package/dist/types/BuiltInInterfaceAdder.js.map +1 -0
- package/dist/types/CallFuncableType.d.ts +24 -0
- package/dist/types/CallFuncableType.js +91 -0
- package/dist/types/CallFuncableType.js.map +1 -0
- package/dist/types/ClassType.d.ts +17 -0
- package/dist/types/ClassType.js +63 -0
- package/dist/types/ClassType.js.map +1 -0
- package/dist/types/ComponentType.d.ts +22 -0
- package/dist/types/ComponentType.js +110 -0
- package/dist/types/ComponentType.js.map +1 -0
- package/dist/types/DoubleType.d.ts +10 -5
- package/dist/types/DoubleType.js +21 -17
- package/dist/types/DoubleType.js.map +1 -1
- package/dist/types/DynamicType.d.ts +13 -5
- package/dist/types/DynamicType.js +26 -5
- package/dist/types/DynamicType.js.map +1 -1
- package/dist/types/EnumType.d.ts +42 -0
- package/dist/types/EnumType.js +101 -0
- package/dist/types/EnumType.js.map +1 -0
- package/dist/types/FloatType.d.ts +10 -5
- package/dist/types/FloatType.js +21 -17
- package/dist/types/FloatType.js.map +1 -1
- package/dist/types/FunctionType.d.ts +8 -22
- package/dist/types/FunctionType.js +25 -63
- package/dist/types/FunctionType.js.map +1 -1
- package/dist/types/InheritableType.d.ts +29 -0
- package/dist/types/InheritableType.js +173 -0
- package/dist/types/InheritableType.js.map +1 -0
- package/dist/types/InlineInterfaceType.d.ts +5 -0
- package/dist/types/InlineInterfaceType.js +17 -0
- package/dist/types/InlineInterfaceType.js.map +1 -0
- package/dist/types/IntegerType.d.ts +10 -5
- package/dist/types/IntegerType.js +21 -17
- package/dist/types/IntegerType.js.map +1 -1
- package/dist/types/InterfaceType.d.ts +14 -6
- package/dist/types/InterfaceType.js +30 -15
- package/dist/types/InterfaceType.js.map +1 -1
- package/dist/types/IntersectionType.d.ts +29 -0
- package/dist/types/IntersectionType.js +256 -0
- package/dist/types/IntersectionType.js.map +1 -0
- package/dist/types/InvalidType.d.ts +10 -5
- package/dist/types/InvalidType.js +21 -9
- package/dist/types/InvalidType.js.map +1 -1
- package/dist/types/LongIntegerType.d.ts +10 -5
- package/dist/types/LongIntegerType.js +21 -17
- package/dist/types/LongIntegerType.js.map +1 -1
- package/dist/types/NamespaceType.d.ts +12 -0
- package/dist/types/NamespaceType.js +28 -0
- package/dist/types/NamespaceType.js.map +1 -0
- package/dist/types/ObjectType.d.ts +12 -5
- package/dist/types/ObjectType.js +25 -8
- package/dist/types/ObjectType.js.map +1 -1
- package/dist/types/ReferenceType.d.ts +123 -0
- package/dist/types/ReferenceType.js +726 -0
- package/dist/types/ReferenceType.js.map +1 -0
- package/dist/types/StringType.d.ts +12 -5
- package/dist/types/StringType.js +23 -8
- package/dist/types/StringType.js.map +1 -1
- package/dist/types/TypeStatementType.d.ts +19 -0
- package/dist/types/TypeStatementType.js +56 -0
- package/dist/types/TypeStatementType.js.map +1 -0
- package/dist/types/TypedFunctionType.d.ts +34 -0
- package/dist/types/TypedFunctionType.js +157 -0
- package/dist/types/TypedFunctionType.js.map +1 -0
- package/dist/types/UninitializedType.d.ts +11 -6
- package/dist/types/UninitializedType.js +20 -11
- package/dist/types/UninitializedType.js.map +1 -1
- package/dist/types/UnionType.d.ts +27 -0
- package/dist/types/UnionType.js +196 -0
- package/dist/types/UnionType.js.map +1 -0
- package/dist/types/VoidType.d.ts +11 -5
- package/dist/types/VoidType.js +22 -8
- package/dist/types/VoidType.js.map +1 -1
- package/dist/types/helpers.d.ts +51 -0
- package/dist/types/helpers.js +329 -0
- package/dist/types/helpers.js.map +1 -0
- package/dist/types/index.d.ts +22 -0
- package/dist/types/index.js +39 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/roFunctionType.d.ts +11 -0
- package/dist/types/roFunctionType.js +37 -0
- package/dist/types/roFunctionType.js.map +1 -0
- package/dist/util.d.ts +325 -185
- package/dist/util.js +2135 -568
- package/dist/util.js.map +1 -1
- package/dist/validators/ClassValidator.d.ts +9 -15
- package/dist/validators/ClassValidator.js +93 -138
- package/dist/validators/ClassValidator.js.map +1 -1
- package/package.json +183 -138
- package/CHANGELOG.md +0 -1188
- package/dist/astUtils/creators.spec.js +0 -21
- package/dist/astUtils/creators.spec.js.map +0 -1
- package/dist/astUtils/index.d.ts +0 -7
- package/dist/astUtils/index.js +0 -26
- package/dist/astUtils/index.js.map +0 -1
- package/dist/astUtils/reflection.spec.d.ts +0 -1
- package/dist/astUtils/reflection.spec.js +0 -292
- package/dist/astUtils/reflection.spec.js.map +0 -1
- package/dist/astUtils/stackedVisitor.spec.d.ts +0 -1
- package/dist/astUtils/stackedVisitor.spec.js +0 -79
- package/dist/astUtils/stackedVisitor.spec.js.map +0 -1
- package/dist/astUtils/visitors.spec.d.ts +0 -1
- package/dist/astUtils/visitors.spec.js +0 -854
- package/dist/astUtils/visitors.spec.js.map +0 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.d.ts +0 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +0 -194
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +0 -1
- package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.d.ts +0 -7
- package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.js +0 -63
- package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.js.map +0 -1
- package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.spec.d.ts +0 -1
- package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.spec.js +0 -45
- package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.spec.js.map +0 -1
- package/dist/files/BrsFile.Class.spec.d.ts +0 -1
- package/dist/files/BrsFile.Class.spec.js +0 -1081
- package/dist/files/BrsFile.Class.spec.js.map +0 -1
- package/dist/files/BrsFile.spec.d.ts +0 -1
- package/dist/files/BrsFile.spec.js +0 -2524
- package/dist/files/BrsFile.spec.js.map +0 -1
- package/dist/files/XmlFile.spec.d.ts +0 -1
- package/dist/files/XmlFile.spec.js +0 -1065
- package/dist/files/XmlFile.spec.js.map +0 -1
- package/dist/files/tests/imports.spec.d.ts +0 -1
- package/dist/files/tests/imports.spec.js +0 -241
- package/dist/files/tests/imports.spec.js.map +0 -1
- package/dist/lexer/Character.spec.d.ts +0 -1
- package/dist/lexer/Character.spec.js +0 -27
- package/dist/lexer/Character.spec.js.map +0 -1
- package/dist/lexer/Lexer.spec.d.ts +0 -1
- package/dist/lexer/Lexer.spec.js +0 -1101
- package/dist/lexer/Lexer.spec.js.map +0 -1
- package/dist/lexer/index.d.ts +0 -3
- package/dist/lexer/index.js +0 -17
- package/dist/lexer/index.js.map +0 -1
- package/dist/parser/Parser.Class.spec.d.ts +0 -1
- package/dist/parser/Parser.Class.spec.js +0 -390
- package/dist/parser/Parser.Class.spec.js.map +0 -1
- package/dist/parser/Parser.spec.d.ts +0 -4
- package/dist/parser/Parser.spec.js +0 -1216
- package/dist/parser/Parser.spec.js.map +0 -1
- package/dist/parser/SGParser.spec.d.ts +0 -1
- package/dist/parser/SGParser.spec.js +0 -145
- package/dist/parser/SGParser.spec.js.map +0 -1
- package/dist/parser/SGTypes.spec.d.ts +0 -1
- package/dist/parser/SGTypes.spec.js +0 -351
- package/dist/parser/SGTypes.spec.js.map +0 -1
- package/dist/parser/Statement.spec.d.ts +0 -1
- package/dist/parser/Statement.spec.js +0 -94
- package/dist/parser/Statement.spec.js.map +0 -1
- package/dist/parser/index.d.ts +0 -3
- package/dist/parser/index.js +0 -16
- package/dist/parser/index.js.map +0 -1
- package/dist/parser/tests/Parser.spec.d.ts +0 -18
- package/dist/parser/tests/Parser.spec.js +0 -35
- package/dist/parser/tests/Parser.spec.js.map +0 -1
- package/dist/parser/tests/controlFlow/For.spec.d.ts +0 -1
- package/dist/parser/tests/controlFlow/For.spec.js +0 -161
- package/dist/parser/tests/controlFlow/For.spec.js.map +0 -1
- package/dist/parser/tests/controlFlow/ForEach.spec.d.ts +0 -1
- package/dist/parser/tests/controlFlow/ForEach.spec.js +0 -106
- package/dist/parser/tests/controlFlow/ForEach.spec.js.map +0 -1
- package/dist/parser/tests/controlFlow/If.spec.d.ts +0 -1
- package/dist/parser/tests/controlFlow/If.spec.js +0 -551
- package/dist/parser/tests/controlFlow/If.spec.js.map +0 -1
- package/dist/parser/tests/controlFlow/While.spec.d.ts +0 -1
- package/dist/parser/tests/controlFlow/While.spec.js +0 -107
- package/dist/parser/tests/controlFlow/While.spec.js.map +0 -1
- package/dist/parser/tests/expression/Additive.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Additive.spec.js +0 -99
- package/dist/parser/tests/expression/Additive.spec.js.map +0 -1
- package/dist/parser/tests/expression/ArrayLiterals.spec.d.ts +0 -1
- package/dist/parser/tests/expression/ArrayLiterals.spec.js +0 -254
- package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +0 -1
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.d.ts +0 -1
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +0 -266
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +0 -1
- package/dist/parser/tests/expression/Boolean.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Boolean.spec.js +0 -83
- package/dist/parser/tests/expression/Boolean.spec.js.map +0 -1
- package/dist/parser/tests/expression/Call.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Call.spec.js +0 -134
- package/dist/parser/tests/expression/Call.spec.js.map +0 -1
- package/dist/parser/tests/expression/Exponential.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Exponential.spec.js +0 -37
- package/dist/parser/tests/expression/Exponential.spec.js.map +0 -1
- package/dist/parser/tests/expression/Function.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Function.spec.js +0 -403
- package/dist/parser/tests/expression/Function.spec.js.map +0 -1
- package/dist/parser/tests/expression/Indexing.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Indexing.spec.js +0 -219
- package/dist/parser/tests/expression/Indexing.spec.js.map +0 -1
- package/dist/parser/tests/expression/Multiplicative.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Multiplicative.spec.js +0 -67
- package/dist/parser/tests/expression/Multiplicative.spec.js.map +0 -1
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.d.ts +0 -1
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +0 -201
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +0 -1
- package/dist/parser/tests/expression/PrefixUnary.spec.d.ts +0 -1
- package/dist/parser/tests/expression/PrefixUnary.spec.js +0 -105
- package/dist/parser/tests/expression/PrefixUnary.spec.js.map +0 -1
- package/dist/parser/tests/expression/Primary.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Primary.spec.js +0 -149
- package/dist/parser/tests/expression/Primary.spec.js.map +0 -1
- package/dist/parser/tests/expression/Relational.spec.d.ts +0 -1
- package/dist/parser/tests/expression/Relational.spec.js +0 -83
- package/dist/parser/tests/expression/Relational.spec.js.map +0 -1
- package/dist/parser/tests/expression/SourceLiteralExpression.spec.d.ts +0 -1
- package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +0 -201
- package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +0 -1
- package/dist/parser/tests/expression/TemplateStringExpression.spec.d.ts +0 -1
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js +0 -202
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +0 -1
- package/dist/parser/tests/expression/TernaryExpression.spec.d.ts +0 -1
- package/dist/parser/tests/expression/TernaryExpression.spec.js +0 -323
- package/dist/parser/tests/expression/TernaryExpression.spec.js.map +0 -1
- package/dist/parser/tests/statement/AssignmentOperators.spec.d.ts +0 -1
- package/dist/parser/tests/statement/AssignmentOperators.spec.js +0 -79
- package/dist/parser/tests/statement/AssignmentOperators.spec.js.map +0 -1
- package/dist/parser/tests/statement/Declaration.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Declaration.spec.js +0 -108
- package/dist/parser/tests/statement/Declaration.spec.js.map +0 -1
- package/dist/parser/tests/statement/Dim.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Dim.spec.js +0 -73
- package/dist/parser/tests/statement/Dim.spec.js.map +0 -1
- package/dist/parser/tests/statement/Function.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Function.spec.js +0 -332
- package/dist/parser/tests/statement/Function.spec.js.map +0 -1
- package/dist/parser/tests/statement/Goto.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Goto.spec.js +0 -50
- package/dist/parser/tests/statement/Goto.spec.js.map +0 -1
- package/dist/parser/tests/statement/Increment.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Increment.spec.js +0 -117
- package/dist/parser/tests/statement/Increment.spec.js.map +0 -1
- package/dist/parser/tests/statement/LibraryStatement.spec.d.ts +0 -1
- package/dist/parser/tests/statement/LibraryStatement.spec.js +0 -74
- package/dist/parser/tests/statement/LibraryStatement.spec.js.map +0 -1
- package/dist/parser/tests/statement/Misc.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Misc.spec.js +0 -333
- package/dist/parser/tests/statement/Misc.spec.js.map +0 -1
- package/dist/parser/tests/statement/PrintStatement.spec.d.ts +0 -1
- package/dist/parser/tests/statement/PrintStatement.spec.js +0 -181
- package/dist/parser/tests/statement/PrintStatement.spec.js.map +0 -1
- package/dist/parser/tests/statement/ReturnStatement.spec.d.ts +0 -1
- package/dist/parser/tests/statement/ReturnStatement.spec.js +0 -94
- package/dist/parser/tests/statement/ReturnStatement.spec.js.map +0 -1
- package/dist/parser/tests/statement/Set.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Set.spec.js +0 -218
- package/dist/parser/tests/statement/Set.spec.js.map +0 -1
- package/dist/parser/tests/statement/Stop.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Stop.spec.js +0 -37
- package/dist/parser/tests/statement/Stop.spec.js.map +0 -1
- package/dist/parser/tests/statement/Throw.spec.d.ts +0 -1
- package/dist/parser/tests/statement/Throw.spec.js +0 -35
- package/dist/parser/tests/statement/Throw.spec.js.map +0 -1
- package/dist/parser/tests/statement/TryCatch.spec.d.ts +0 -1
- package/dist/parser/tests/statement/TryCatch.spec.js +0 -140
- package/dist/parser/tests/statement/TryCatch.spec.js.map +0 -1
- package/dist/preprocessor/Chunk.d.ts +0 -82
- package/dist/preprocessor/Chunk.js +0 -77
- package/dist/preprocessor/Chunk.js.map +0 -1
- package/dist/preprocessor/Manifest.spec.d.ts +0 -0
- package/dist/preprocessor/Manifest.spec.js +0 -105
- package/dist/preprocessor/Manifest.spec.js.map +0 -1
- package/dist/preprocessor/Preprocessor.d.ts +0 -60
- package/dist/preprocessor/Preprocessor.js +0 -156
- package/dist/preprocessor/Preprocessor.js.map +0 -1
- package/dist/preprocessor/Preprocessor.spec.d.ts +0 -1
- package/dist/preprocessor/Preprocessor.spec.js +0 -152
- package/dist/preprocessor/Preprocessor.spec.js.map +0 -1
- package/dist/preprocessor/PreprocessorParser.d.ts +0 -61
- package/dist/preprocessor/PreprocessorParser.js +0 -194
- package/dist/preprocessor/PreprocessorParser.js.map +0 -1
- package/dist/preprocessor/PreprocessorParser.spec.d.ts +0 -1
- package/dist/preprocessor/PreprocessorParser.spec.js +0 -116
- package/dist/preprocessor/PreprocessorParser.spec.js.map +0 -1
- package/dist/preprocessor/index.d.ts +0 -3
- package/dist/preprocessor/index.js +0 -16
- package/dist/preprocessor/index.js.map +0 -1
- package/dist/types/ArrayType.spec.d.ts +0 -1
- package/dist/types/ArrayType.spec.js +0 -30
- package/dist/types/ArrayType.spec.js.map +0 -1
- package/dist/types/BooleanType.spec.d.ts +0 -1
- package/dist/types/BooleanType.spec.js +0 -12
- package/dist/types/BooleanType.spec.js.map +0 -1
- package/dist/types/CustomType.d.ts +0 -10
- package/dist/types/CustomType.js +0 -35
- package/dist/types/CustomType.js.map +0 -1
- package/dist/types/DoubleType.spec.d.ts +0 -1
- package/dist/types/DoubleType.spec.js +0 -12
- package/dist/types/DoubleType.spec.js.map +0 -1
- package/dist/types/DynamicType.spec.d.ts +0 -1
- package/dist/types/DynamicType.spec.js +0 -12
- package/dist/types/DynamicType.spec.js.map +0 -1
- package/dist/types/FloatType.spec.d.ts +0 -1
- package/dist/types/FloatType.spec.js +0 -12
- package/dist/types/FloatType.spec.js.map +0 -1
- package/dist/types/FunctionType.spec.d.ts +0 -1
- package/dist/types/FunctionType.spec.js +0 -29
- package/dist/types/FunctionType.spec.js.map +0 -1
- package/dist/types/IntegerType.spec.d.ts +0 -1
- package/dist/types/IntegerType.spec.js +0 -12
- package/dist/types/IntegerType.spec.js.map +0 -1
- package/dist/types/InvalidType.spec.d.ts +0 -1
- package/dist/types/InvalidType.spec.js +0 -12
- package/dist/types/InvalidType.spec.js.map +0 -1
- package/dist/types/LazyType.d.ts +0 -15
- package/dist/types/LazyType.js +0 -32
- package/dist/types/LazyType.js.map +0 -1
- package/dist/types/LongIntegerType.spec.d.ts +0 -1
- package/dist/types/LongIntegerType.spec.js +0 -12
- package/dist/types/LongIntegerType.spec.js.map +0 -1
- package/dist/types/ObjectType.spec.d.ts +0 -1
- package/dist/types/ObjectType.spec.js +0 -12
- package/dist/types/ObjectType.spec.js.map +0 -1
- package/dist/types/StringType.spec.d.ts +0 -1
- package/dist/types/StringType.spec.js +0 -12
- package/dist/types/StringType.spec.js.map +0 -1
- package/dist/types/VoidType.spec.d.ts +0 -1
- package/dist/types/VoidType.spec.js +0 -12
- package/dist/types/VoidType.spec.js.map +0 -1
- /package/dist/{astUtils/creators.spec.d.ts → lsp/worker/run.d.ts} +0 -0
|
@@ -0,0 +1,562 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Project = void 0;
|
|
4
|
+
const ProgramBuilder_1 = require("../ProgramBuilder");
|
|
5
|
+
const EventEmitter = require("eventemitter3");
|
|
6
|
+
const util_1 = require("../util");
|
|
7
|
+
const path = require("path");
|
|
8
|
+
const reflection_1 = require("../astUtils/reflection");
|
|
9
|
+
const deferred_1 = require("../deferred");
|
|
10
|
+
const roku_deploy_1 = require("roku-deploy");
|
|
11
|
+
const vscode_languageserver_protocol_1 = require("vscode-languageserver-protocol");
|
|
12
|
+
const vscode_languageserver_protocol_2 = require("vscode-languageserver-protocol");
|
|
13
|
+
const logging_1 = require("../logging");
|
|
14
|
+
const fsExtra = require("fs-extra");
|
|
15
|
+
class Project {
|
|
16
|
+
constructor(options) {
|
|
17
|
+
var _a;
|
|
18
|
+
this.isStandaloneProject = false;
|
|
19
|
+
/**
|
|
20
|
+
* Gets resolved when the project has finished activating
|
|
21
|
+
*/
|
|
22
|
+
this.activationDeferred = new deferred_1.Deferred();
|
|
23
|
+
this.emitter = new EventEmitter();
|
|
24
|
+
this.disposables = [];
|
|
25
|
+
this.logger = (_a = options === null || options === void 0 ? void 0 : options.logger) !== null && _a !== void 0 ? _a : (0, logging_1.createLogger)({
|
|
26
|
+
//when running inside a worker thread, we don't want to use colors
|
|
27
|
+
enableColor: false
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Activates this project. Every call to `activate` should completely reset the project, clear all used ram and start from scratch.
|
|
32
|
+
*/
|
|
33
|
+
async activate(options) {
|
|
34
|
+
this.logger.info(`Project.activate. projectKey: ${options.projectKey}`);
|
|
35
|
+
this.activateOptions = options;
|
|
36
|
+
this.projectKey = options.projectKey ? util_1.default.standardizePath(options.projectKey) : options.projectKey;
|
|
37
|
+
this.projectDir = options.projectDir ? util_1.default.standardizePath(options.projectDir) : options.projectDir;
|
|
38
|
+
this.workspaceFolder = options.workspaceFolder ? util_1.default.standardizePath(options.workspaceFolder) : options.workspaceFolder;
|
|
39
|
+
this.projectNumber = options.projectNumber;
|
|
40
|
+
this.bsconfigPath = await this.getConfigFilePath(options);
|
|
41
|
+
this.builder = new ProgramBuilder_1.ProgramBuilder({
|
|
42
|
+
//share our logger with ProgramBuilder, which will keep our level in sync with the one in the program
|
|
43
|
+
logger: this.logger
|
|
44
|
+
});
|
|
45
|
+
this.builder.logger.prefix = util_1.default.getProjectLogName(this);
|
|
46
|
+
this.disposables.push(this.builder);
|
|
47
|
+
let cwd;
|
|
48
|
+
//if the config file exists, use it and its folder as cwd
|
|
49
|
+
if (this.bsconfigPath && await util_1.default.pathExists(this.bsconfigPath)) {
|
|
50
|
+
cwd = path.dirname(this.bsconfigPath);
|
|
51
|
+
//load the bsconfig file contents (used for performance optimizations externally)
|
|
52
|
+
try {
|
|
53
|
+
this.bsconfigFileContents = (await fsExtra.readFile(this.bsconfigPath)).toString();
|
|
54
|
+
}
|
|
55
|
+
catch (_a) { }
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
cwd = this.projectDir;
|
|
59
|
+
//config file doesn't exist...let `brighterscript` resolve the default way
|
|
60
|
+
this.bsconfigPath = undefined;
|
|
61
|
+
}
|
|
62
|
+
const builderOptions = {
|
|
63
|
+
cwd: cwd,
|
|
64
|
+
project: this.bsconfigPath,
|
|
65
|
+
watch: false,
|
|
66
|
+
noEmit: true,
|
|
67
|
+
showDiagnosticsInConsole: false,
|
|
68
|
+
validate: false
|
|
69
|
+
};
|
|
70
|
+
//Assign .files (mostly used for standalone projects) if available, as a dedicated assignment because `undefined` overrides the default value in the `bsconfig.json`
|
|
71
|
+
if (options.files) {
|
|
72
|
+
builderOptions.files = roku_deploy_1.rokuDeploy.normalizeFilesArray(options.files);
|
|
73
|
+
}
|
|
74
|
+
//run the builder to initialize the program. Skip validation for now, we'll trigger it soon in a more cancellable way
|
|
75
|
+
await this.builder.run(Object.assign(Object.assign({}, builderOptions), { validate: false,
|
|
76
|
+
//don't show diagnostics in the console since this is run via the language server, they're presented in a different way
|
|
77
|
+
showDiagnosticsInConsole: false }));
|
|
78
|
+
//flush diagnostics every time the program FINISHES validating.
|
|
79
|
+
//this plugin must be added LAST to the program to ensure we can see all diagnostics.
|
|
80
|
+
//skip cancelled validations: those fire afterValidateProgram with whatever partial
|
|
81
|
+
//state was reached, and downstream consumers (e.g. test specs awaiting
|
|
82
|
+
//onNextDiagnostics) end up reading the partial emit instead of the completed one
|
|
83
|
+
//that follows.
|
|
84
|
+
this.builder.plugins.add({
|
|
85
|
+
name: 'bsc-language-server',
|
|
86
|
+
afterValidateProgram: (event) => {
|
|
87
|
+
if (event === null || event === void 0 ? void 0 : event.wasCancelled) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
const diagnostics = this.getDiagnostics();
|
|
91
|
+
this.emit('diagnostics', {
|
|
92
|
+
diagnostics: diagnostics
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
this.manifestSrcPath = this.builder.program.manifestPath;
|
|
97
|
+
//load the manifest file contents (used for change detection to trigger project reloads)
|
|
98
|
+
if (this.manifestSrcPath) {
|
|
99
|
+
try {
|
|
100
|
+
this.manifestFileContents = (await fsExtra.readFile(this.manifestSrcPath)).toString();
|
|
101
|
+
}
|
|
102
|
+
catch (_b) { }
|
|
103
|
+
}
|
|
104
|
+
//trigger a validation (but don't wait for it. That way we can cancel it sooner if we get new incoming data or requests)
|
|
105
|
+
void this.validate();
|
|
106
|
+
this.activationDeferred.resolve();
|
|
107
|
+
return {
|
|
108
|
+
bsconfigPath: this.bsconfigPath,
|
|
109
|
+
logLevel: this.builder.program.options.logLevel,
|
|
110
|
+
rootDir: this.builder.program.options.rootDir,
|
|
111
|
+
filePatterns: this.filePatterns,
|
|
112
|
+
manifestSrcPath: this.manifestSrcPath
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
get rootDir() {
|
|
116
|
+
return this.builder.program.options.rootDir;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* The file patterns from bsconfig.json that were used to find all files for this project
|
|
120
|
+
*/
|
|
121
|
+
get filePatterns() {
|
|
122
|
+
if (!this.builder) {
|
|
123
|
+
return undefined;
|
|
124
|
+
}
|
|
125
|
+
const patterns = roku_deploy_1.rokuDeploy.normalizeFilesArray(this.builder.program.options.files);
|
|
126
|
+
return patterns.map(x => {
|
|
127
|
+
return typeof x === 'string' ? x : x.src;
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Promise that resolves when the project finishes activating
|
|
132
|
+
* @returns a promise that resolves when the project finishes activating
|
|
133
|
+
*/
|
|
134
|
+
whenActivated() {
|
|
135
|
+
return this.activationDeferred.promise;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Validate the project. This will trigger a full validation on any scopes that were changed since the last validation,
|
|
139
|
+
* and will also eventually emit a new 'diagnostics' event that includes all diagnostics for the project.
|
|
140
|
+
*
|
|
141
|
+
* This will cancel any currently running validation and then run a new one.
|
|
142
|
+
*/
|
|
143
|
+
async validate() {
|
|
144
|
+
var _a;
|
|
145
|
+
this.logger.debug('Project.validate');
|
|
146
|
+
//a sync that started during a previous Phase 2 may have disposed this project before
|
|
147
|
+
//runWithConcurrencyLimit reached our slot. Skip validate() if the builder is gone.
|
|
148
|
+
if (!((_a = this.builder) === null || _a === void 0 ? void 0 : _a.program)) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
this.cancelValidate();
|
|
152
|
+
//store
|
|
153
|
+
this.validationCancelToken = new vscode_languageserver_protocol_2.CancellationTokenSource();
|
|
154
|
+
try {
|
|
155
|
+
this.emit('validate-begin', {});
|
|
156
|
+
await this.builder.program.validate({
|
|
157
|
+
async: true,
|
|
158
|
+
cancellationToken: this.validationCancelToken.token
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
finally {
|
|
162
|
+
this.emit('validate-end', {});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Cancel any active running validation
|
|
167
|
+
*/
|
|
168
|
+
cancelValidate() {
|
|
169
|
+
var _a;
|
|
170
|
+
(_a = this.validationCancelToken) === null || _a === void 0 ? void 0 : _a.cancel();
|
|
171
|
+
delete this.validationCancelToken;
|
|
172
|
+
}
|
|
173
|
+
getDiagnostics() {
|
|
174
|
+
var _a;
|
|
175
|
+
const result = [];
|
|
176
|
+
for (const diagnostic of this.builder.getDiagnostics()) {
|
|
177
|
+
//skip diagnostics that have no location
|
|
178
|
+
if (!((_a = diagnostic === null || diagnostic === void 0 ? void 0 : diagnostic.location) === null || _a === void 0 ? void 0 : _a.uri)) {
|
|
179
|
+
this.logger.debug('Skipping diagnostic that has no location', diagnostic);
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
const srcPath = util_1.default.uriToPath(diagnostic.location.uri);
|
|
183
|
+
result.push(Object.assign(Object.assign({}, util_1.default.toDiagnostic(diagnostic, srcPath)), { uri: diagnostic.location.uri }));
|
|
184
|
+
}
|
|
185
|
+
return result;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Promise that resolves the next time the system is idle. If the system is already idle, it will resolve immediately
|
|
189
|
+
*/
|
|
190
|
+
async onIdle() {
|
|
191
|
+
await Promise.all([
|
|
192
|
+
this.activationDeferred.promise
|
|
193
|
+
]);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Add or replace the in-memory contents of the file at the specified path. This is typically called as the user is typing.
|
|
197
|
+
* This will cancel any pending validation cycles and queue a future validation cycle instead.
|
|
198
|
+
*/
|
|
199
|
+
async applyFileChanges(documentActions) {
|
|
200
|
+
var _a, _b;
|
|
201
|
+
this.logger.debug('Project.applyFileChanges', documentActions.map(x => x.srcPath));
|
|
202
|
+
await this.onIdle();
|
|
203
|
+
let didChangeFiles = false;
|
|
204
|
+
const result = [...documentActions];
|
|
205
|
+
// eslint-disable-next-line @typescript-eslint/prefer-for-of
|
|
206
|
+
for (let i = 0; i < result.length; i++) {
|
|
207
|
+
const action = result[i];
|
|
208
|
+
let didChangeThisFile = false;
|
|
209
|
+
//if this is a `set` and the file matches the project's files array, set it
|
|
210
|
+
if (action.type === 'set' && Project.willAcceptFile(action.srcPath, this.builder.program.options.files, this.builder.program.options.rootDir)) {
|
|
211
|
+
//load the file contents from disk if we don't have an in memory copy
|
|
212
|
+
const fileContents = (_a = action.fileContents) !== null && _a !== void 0 ? _a : (_b = util_1.default.readFileSync(action.srcPath)) === null || _b === void 0 ? void 0 : _b.toString();
|
|
213
|
+
//if we got file contents, set the file on the program
|
|
214
|
+
if (fileContents !== undefined) {
|
|
215
|
+
didChangeThisFile = this.setFile(action.srcPath, fileContents);
|
|
216
|
+
//this file was accepted by the program
|
|
217
|
+
action.status = 'accepted';
|
|
218
|
+
//if we can't get file contents, apply this as a delete
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
action.status = 'accepted';
|
|
222
|
+
result.push({
|
|
223
|
+
id: action.id,
|
|
224
|
+
srcPath: action.srcPath,
|
|
225
|
+
type: 'delete',
|
|
226
|
+
status: undefined,
|
|
227
|
+
allowStandaloneProject: false
|
|
228
|
+
});
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
//try to delete the file or directory
|
|
232
|
+
}
|
|
233
|
+
else if (action.type === 'delete') {
|
|
234
|
+
didChangeThisFile = this.removeFileOrDirectory(action.srcPath);
|
|
235
|
+
//if we deleted at least one file, mark this action as accepted
|
|
236
|
+
action.status = didChangeThisFile ? 'accepted' : 'rejected';
|
|
237
|
+
//we did not handle this action, so reject
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
action.status = 'rejected';
|
|
241
|
+
}
|
|
242
|
+
didChangeFiles = didChangeFiles || didChangeThisFile;
|
|
243
|
+
}
|
|
244
|
+
if (didChangeFiles) {
|
|
245
|
+
//trigger a validation (but don't wait for it. That way we can cancel it sooner if we get new incoming data or requests)
|
|
246
|
+
this.validate().catch(e => this.logger.error(e));
|
|
247
|
+
}
|
|
248
|
+
this.logger.debug('project.applyFileChanges done', documentActions.map(x => x.srcPath));
|
|
249
|
+
return result;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Determine if this project will accept the file at the specified path (i.e. does it match a pattern in the project's files array)
|
|
253
|
+
*/
|
|
254
|
+
static willAcceptFile(srcPath, files, rootDir) {
|
|
255
|
+
srcPath = util_1.default.standardizePath(srcPath);
|
|
256
|
+
if (roku_deploy_1.rokuDeploy.getDestPath(srcPath, files, rootDir) !== undefined) {
|
|
257
|
+
return true;
|
|
258
|
+
//is this exact path in the `files` array? (this check is mostly for standalone projects)
|
|
259
|
+
}
|
|
260
|
+
else if (files.find(x => (0, util_1.standardizePath) `${x.src}` === srcPath)) {
|
|
261
|
+
return true;
|
|
262
|
+
}
|
|
263
|
+
return false;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Set new contents for a file. This is safe to call any time. Changes will be queued and flushed at the correct times
|
|
267
|
+
* during the program's lifecycle flow
|
|
268
|
+
* @param srcPath absolute source path of the file
|
|
269
|
+
* @param fileContents the text contents of the file
|
|
270
|
+
* @returns true if this program accepted and added the file. false if the program didn't want the file, or if the contents didn't change
|
|
271
|
+
*/
|
|
272
|
+
setFile(srcPath, fileContents) {
|
|
273
|
+
this.logger.debug('Project.setFile', { srcPath: srcPath, fileContentsLength: fileContents.length });
|
|
274
|
+
const { files, rootDir } = this.builder.program.options;
|
|
275
|
+
//get the dest path for this file.
|
|
276
|
+
let destPath = roku_deploy_1.rokuDeploy.getDestPath(srcPath, files, rootDir);
|
|
277
|
+
//if we have a file and the contents haven't changed
|
|
278
|
+
let file = this.builder.program.getFile(destPath);
|
|
279
|
+
if (file && file.fileContents === fileContents) {
|
|
280
|
+
return false;
|
|
281
|
+
}
|
|
282
|
+
//if we got a dest path, then the program wants this file
|
|
283
|
+
if (destPath) {
|
|
284
|
+
this.builder.program.setFile({
|
|
285
|
+
src: srcPath,
|
|
286
|
+
dest: destPath
|
|
287
|
+
}, fileContents);
|
|
288
|
+
return true;
|
|
289
|
+
}
|
|
290
|
+
return false;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Remove the in-memory file at the specified path. This is typically called when the user (or file system watcher) triggers a file delete
|
|
294
|
+
* @param srcPath absolute path to the File
|
|
295
|
+
* @returns true if we found and removed at least one file, or false if no files were removed
|
|
296
|
+
*/
|
|
297
|
+
removeFileOrDirectory(srcPath) {
|
|
298
|
+
var _a;
|
|
299
|
+
this.logger.debug('Project.removeFileOrDirectory', srcPath);
|
|
300
|
+
srcPath = util_1.default.standardizePath(srcPath);
|
|
301
|
+
//if this is a direct file match, remove the file
|
|
302
|
+
if (this.builder.program.hasFile(srcPath)) {
|
|
303
|
+
this.builder.program.removeFile(srcPath);
|
|
304
|
+
return true;
|
|
305
|
+
}
|
|
306
|
+
//maybe this is a directory. Remove all files that start with this path
|
|
307
|
+
let removedSomeFiles = false;
|
|
308
|
+
let lowerSrcPath = srcPath.toLowerCase();
|
|
309
|
+
for (let file of Object.values(this.builder.program.files)) {
|
|
310
|
+
//if the file path starts with the parent path and the file path does not exactly match the folder path
|
|
311
|
+
if ((_a = file.srcPath) === null || _a === void 0 ? void 0 : _a.toLowerCase().startsWith(lowerSrcPath)) {
|
|
312
|
+
this.logger.debug('Project.removeFileOrDirectory removing file because it matches the given directory', { dir: srcPath, srcPath: file.srcPath });
|
|
313
|
+
this.builder.program.removeFile(file.srcPath, false);
|
|
314
|
+
removedSomeFiles = true;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
//return true if we removed at least one file
|
|
318
|
+
return removedSomeFiles;
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Get the full list of semantic tokens for the given file path
|
|
322
|
+
* @param options options for getting semantic tokens
|
|
323
|
+
* @param options.srcPath absolute path to the source file
|
|
324
|
+
*/
|
|
325
|
+
async getSemanticTokens(options) {
|
|
326
|
+
await this.onIdle();
|
|
327
|
+
if (this.builder.program.hasFile(options.srcPath)) {
|
|
328
|
+
return this.builder.program.getSemanticTokens(options.srcPath);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
async transpileFile(options) {
|
|
332
|
+
await this.onIdle();
|
|
333
|
+
if (this.builder.program.hasFile(options.srcPath)) {
|
|
334
|
+
return this.builder.program.getTranspiledFileContents(options.srcPath);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
async getHover(options) {
|
|
338
|
+
await this.onIdle();
|
|
339
|
+
if (this.builder.program.hasFile(options.srcPath)) {
|
|
340
|
+
return this.builder.program.getHover(options.srcPath, options.position);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
async getDefinition(options) {
|
|
344
|
+
await this.onIdle();
|
|
345
|
+
if (this.builder.program.hasFile(options.srcPath)) {
|
|
346
|
+
return this.builder.program.getDefinition(options.srcPath, options.position);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
async getSignatureHelp(options) {
|
|
350
|
+
await this.onIdle();
|
|
351
|
+
if (this.builder.program.hasFile(options.srcPath)) {
|
|
352
|
+
return this.builder.program.getSignatureHelp(options.srcPath, options.position);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
async getDocumentSymbol(options) {
|
|
356
|
+
await this.onIdle();
|
|
357
|
+
if (this.builder.program.hasFile(options.srcPath)) {
|
|
358
|
+
return this.builder.program.getDocumentSymbols(options.srcPath);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
async getWorkspaceSymbol() {
|
|
362
|
+
await this.onIdle();
|
|
363
|
+
const result = this.builder.program.getWorkspaceSymbols();
|
|
364
|
+
return result;
|
|
365
|
+
}
|
|
366
|
+
async getReferences(options) {
|
|
367
|
+
await this.onIdle();
|
|
368
|
+
if (this.builder.program.hasFile(options.srcPath)) {
|
|
369
|
+
return this.builder.program.getReferences(options.srcPath, options.position);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
async getFileRenameEdits(options) {
|
|
373
|
+
var _a, _b, _c, _d, _e;
|
|
374
|
+
await this.onIdle();
|
|
375
|
+
const oldFile = this.builder.program.getFile(options.oldSrcPath);
|
|
376
|
+
if (!oldFile) {
|
|
377
|
+
return [];
|
|
378
|
+
}
|
|
379
|
+
const programOptions = this.builder.program.options;
|
|
380
|
+
const newDestPath = this.computeDestPathForNewSrcPath(options.newSrcPath, programOptions);
|
|
381
|
+
if (!newDestPath) {
|
|
382
|
+
return [];
|
|
383
|
+
}
|
|
384
|
+
//rename comparisons happen at the source-extension level (destPath), since import
|
|
385
|
+
//statements reference source paths (e.g. "pkg:/source/lib.bs"), not the transpiled
|
|
386
|
+
//pkgPath (e.g. "source/lib.brs"). A new file at "source/lib2.bs" needs to be
|
|
387
|
+
//identified by its destPath, not its pkgPath.
|
|
388
|
+
const oldDestPath = util_1.default.standardizePath(oldFile.destPath).toLowerCase();
|
|
389
|
+
//if the rename doesn't change the dest path, nothing to do
|
|
390
|
+
if (oldDestPath === newDestPath.toLowerCase()) {
|
|
391
|
+
return [];
|
|
392
|
+
}
|
|
393
|
+
const result = [];
|
|
394
|
+
for (const file of Object.values(this.builder.program.files)) {
|
|
395
|
+
if ((0, reflection_1.isBrsFile)(file)) {
|
|
396
|
+
// eslint-disable-next-line @typescript-eslint/dot-notation
|
|
397
|
+
for (const importStatement of (_b = (_a = file['_cachedLookups']) === null || _a === void 0 ? void 0 : _a.importStatements) !== null && _b !== void 0 ? _b : []) {
|
|
398
|
+
if (!importStatement.tokens.path || !importStatement.filePath) {
|
|
399
|
+
continue;
|
|
400
|
+
}
|
|
401
|
+
const resolvedPkgPath = util_1.default.getPkgPathFromTarget(file.destPath, importStatement.filePath);
|
|
402
|
+
if (!resolvedPkgPath || util_1.default.standardizePath(resolvedPkgPath).toLowerCase() !== oldDestPath) {
|
|
403
|
+
continue;
|
|
404
|
+
}
|
|
405
|
+
const newText = util_1.default.computeRenamedReferencePath(importStatement.filePath, file.destPath, newDestPath);
|
|
406
|
+
if (newText === null) {
|
|
407
|
+
continue;
|
|
408
|
+
}
|
|
409
|
+
result.push({
|
|
410
|
+
uri: util_1.default.pathToUri(file.srcPath),
|
|
411
|
+
range: importStatement.tokens.path.location.range,
|
|
412
|
+
newText: newText
|
|
413
|
+
});
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
else if ((0, reflection_1.isXmlFile)(file)) {
|
|
417
|
+
for (const scriptTag of (_e = (_d = (_c = file.parser) === null || _c === void 0 ? void 0 : _c.references) === null || _d === void 0 ? void 0 : _d.scriptTagImports) !== null && _e !== void 0 ? _e : []) {
|
|
418
|
+
if (!scriptTag.filePathRange || !scriptTag.text) {
|
|
419
|
+
continue;
|
|
420
|
+
}
|
|
421
|
+
const resolvedPkgPath = util_1.default.getPkgPathFromTarget(file.destPath, scriptTag.text);
|
|
422
|
+
if (!resolvedPkgPath || util_1.default.standardizePath(resolvedPkgPath).toLowerCase() !== oldDestPath) {
|
|
423
|
+
continue;
|
|
424
|
+
}
|
|
425
|
+
const newText = util_1.default.computeRenamedReferencePath(scriptTag.text, file.destPath, newDestPath);
|
|
426
|
+
if (newText === null) {
|
|
427
|
+
continue;
|
|
428
|
+
}
|
|
429
|
+
result.push({
|
|
430
|
+
uri: util_1.default.pathToUri(file.srcPath),
|
|
431
|
+
range: scriptTag.filePathRange,
|
|
432
|
+
newText: newText
|
|
433
|
+
});
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
return result;
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* Determine the pkg path for a (not-yet-existing) renamed file. Tries the project's `files` glob first
|
|
441
|
+
* so custom dest mappings keep working, and falls back to a plain rootDir-relative path so renames into
|
|
442
|
+
* folders that aren't yet in the glob still get their imports rewritten.
|
|
443
|
+
* Returns undefined if the new path is outside this project's rootDir.
|
|
444
|
+
*/
|
|
445
|
+
computeDestPathForNewSrcPath(newSrcPath, programOptions) {
|
|
446
|
+
if (!programOptions.rootDir) {
|
|
447
|
+
return undefined;
|
|
448
|
+
}
|
|
449
|
+
const destFromGlob = roku_deploy_1.rokuDeploy.getDestPath(newSrcPath, programOptions.files, programOptions.rootDir);
|
|
450
|
+
if (destFromGlob) {
|
|
451
|
+
return util_1.default.standardizePath(destFromGlob);
|
|
452
|
+
}
|
|
453
|
+
const rootDir = util_1.default.standardizePath(programOptions.rootDir);
|
|
454
|
+
const newSrc = util_1.default.standardizePath(newSrcPath);
|
|
455
|
+
const rootPrefix = rootDir.endsWith(path.sep) ? rootDir : rootDir + path.sep;
|
|
456
|
+
if (!newSrc.toLowerCase().startsWith(rootPrefix.toLowerCase())) {
|
|
457
|
+
return undefined;
|
|
458
|
+
}
|
|
459
|
+
return newSrc.substring(rootPrefix.length);
|
|
460
|
+
}
|
|
461
|
+
async getSelectionRanges(options) {
|
|
462
|
+
await this.onIdle();
|
|
463
|
+
if (this.builder.program.hasFile(options.srcPath)) {
|
|
464
|
+
return this.builder.program.getSelectionRanges(options.srcPath, options.positions);
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
async getCodeActions(options) {
|
|
468
|
+
var _a;
|
|
469
|
+
await this.onIdle();
|
|
470
|
+
if (this.builder.program.hasFile(options.srcPath)) {
|
|
471
|
+
const codeActions = this.builder.program.getCodeActions(options.srcPath, options.range);
|
|
472
|
+
//clone each diagnostic since certain diagnostics can have circular reference properties that kill the language server if serialized
|
|
473
|
+
for (const codeAction of codeActions !== null && codeActions !== void 0 ? codeActions : []) {
|
|
474
|
+
if (codeAction.diagnostics) {
|
|
475
|
+
codeAction.diagnostics = (_a = codeAction.diagnostics) === null || _a === void 0 ? void 0 : _a.map(x => util_1.default.toDiagnostic(x, options.srcPath));
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
return codeActions;
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
async getSourceFixAllCodeActions(options) {
|
|
482
|
+
await this.onIdle();
|
|
483
|
+
if (this.builder.program.hasFile(options.srcPath)) {
|
|
484
|
+
return this.builder.program.getSourceFixAllCodeActions(options.srcPath);
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
async getCompletions(options) {
|
|
488
|
+
await this.onIdle();
|
|
489
|
+
this.logger.debug('Project.getCompletions', options.srcPath, options.position);
|
|
490
|
+
if (this.builder.program.hasFile(options.srcPath)) {
|
|
491
|
+
const completions = this.builder.program.getCompletions(options.srcPath, options.position);
|
|
492
|
+
const result = vscode_languageserver_protocol_1.CompletionList.create(completions);
|
|
493
|
+
result.itemDefaults = {
|
|
494
|
+
commitCharacters: ['.']
|
|
495
|
+
};
|
|
496
|
+
return result;
|
|
497
|
+
}
|
|
498
|
+
return undefined;
|
|
499
|
+
}
|
|
500
|
+
/**
|
|
501
|
+
* Find the path to the bsconfig.json file for this project
|
|
502
|
+
* @returns path to bsconfig.json, or undefined if unable to find it
|
|
503
|
+
*/
|
|
504
|
+
async getConfigFilePath(config) {
|
|
505
|
+
let bsconfigPath;
|
|
506
|
+
//if there's a setting, we need to find the file or show error if it can't be found
|
|
507
|
+
if (config === null || config === void 0 ? void 0 : config.bsconfigPath) {
|
|
508
|
+
bsconfigPath = path.resolve(config.projectDir, config.bsconfigPath);
|
|
509
|
+
if (await util_1.default.pathExists(bsconfigPath)) {
|
|
510
|
+
return util_1.default.standardizePath(bsconfigPath);
|
|
511
|
+
}
|
|
512
|
+
else {
|
|
513
|
+
this.emit('critical-failure', {
|
|
514
|
+
message: `Cannot find config file specified in user or workspace settings at '${bsconfigPath}'`
|
|
515
|
+
});
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
//the rest of these require a path to a project directory, so return early if we don't have one
|
|
519
|
+
if (!(config === null || config === void 0 ? void 0 : config.projectDir)) {
|
|
520
|
+
return undefined;
|
|
521
|
+
}
|
|
522
|
+
//default to config file path found in the root of the workspace
|
|
523
|
+
bsconfigPath = (0, util_1.standardizePath) `${config.projectDir}/bsconfig.json`;
|
|
524
|
+
if (await util_1.default.pathExists(bsconfigPath)) {
|
|
525
|
+
return util_1.default.standardizePath(bsconfigPath);
|
|
526
|
+
}
|
|
527
|
+
//look for the deprecated `brsconfig.json` file
|
|
528
|
+
bsconfigPath = (0, util_1.standardizePath) `${config.projectDir}/brsconfig.json`;
|
|
529
|
+
if (await util_1.default.pathExists(bsconfigPath)) {
|
|
530
|
+
return util_1.default.standardizePath(bsconfigPath);
|
|
531
|
+
}
|
|
532
|
+
//no config file could be found
|
|
533
|
+
return undefined;
|
|
534
|
+
}
|
|
535
|
+
on(eventName, handler) {
|
|
536
|
+
this.emitter.on(eventName, handler);
|
|
537
|
+
return () => {
|
|
538
|
+
this.emitter.removeListener(eventName, handler);
|
|
539
|
+
};
|
|
540
|
+
}
|
|
541
|
+
async emit(eventName, data) {
|
|
542
|
+
//emit these events on next tick, otherwise they will be processed immediately which could cause issues
|
|
543
|
+
await util_1.default.sleep(0);
|
|
544
|
+
this.emitter.emit(eventName, data);
|
|
545
|
+
//emit the 'all' event
|
|
546
|
+
this.emitter.emit('all', eventName, data);
|
|
547
|
+
}
|
|
548
|
+
dispose() {
|
|
549
|
+
var _a, _b, _c, _d;
|
|
550
|
+
this.cancelValidate();
|
|
551
|
+
for (let disposable of (_a = this.disposables) !== null && _a !== void 0 ? _a : []) {
|
|
552
|
+
(_b = disposable === null || disposable === void 0 ? void 0 : disposable.dispose) === null || _b === void 0 ? void 0 : _b.call(disposable);
|
|
553
|
+
}
|
|
554
|
+
this.disposables = [];
|
|
555
|
+
(_c = this.emitter) === null || _c === void 0 ? void 0 : _c.removeAllListeners();
|
|
556
|
+
if (((_d = this.activationDeferred) === null || _d === void 0 ? void 0 : _d.isCompleted) === false) {
|
|
557
|
+
this.activationDeferred.reject(new Error('Project was disposed, activation has been cancelled'));
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
exports.Project = Project;
|
|
562
|
+
//# sourceMappingURL=Project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Project.js","sourceRoot":"","sources":["../../src/lsp/Project.ts"],"names":[],"mappings":"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"}
|