brighterscript 1.0.0-alpha.5 → 1.0.0-alpha.50
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 +76 -138
- package/bsconfig.schema.json +121 -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 +72 -39
- 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 +12 -4
- package/dist/CodeActionUtil.js +22 -5
- package/dist/CodeActionUtil.js.map +1 -1
- package/dist/CommentFlagProcessor.d.ts +7 -6
- package/dist/CommentFlagProcessor.js +11 -8
- package/dist/CommentFlagProcessor.js.map +1 -1
- package/dist/CrossScopeValidator.d.ts +68 -0
- package/dist/CrossScopeValidator.js +642 -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 +82 -0
- package/dist/DiagnosticManager.js +406 -0
- package/dist/DiagnosticManager.js.map +1 -0
- package/dist/DiagnosticMessages.d.ts +558 -196
- package/dist/DiagnosticMessages.js +870 -340
- 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 +100 -105
- package/dist/LanguageServer.js +444 -745
- 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 +241 -98
- package/dist/Program.js +1432 -717
- package/dist/Program.js.map +1 -1
- package/dist/ProgramBuilder.d.ts +47 -23
- package/dist/ProgramBuilder.js +224 -178
- package/dist/ProgramBuilder.js.map +1 -1
- package/dist/Scope.d.ts +149 -109
- package/dist/Scope.js +557 -550
- package/dist/Scope.js.map +1 -1
- 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 +136 -24
- package/dist/SymbolTable.js +565 -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 +334 -0
- package/dist/astUtils/CachedLookups.js.map +1 -0
- package/dist/astUtils/CachedLookups.spec.js +39 -0
- package/dist/astUtils/CachedLookups.spec.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/Editor.spec.js +258 -0
- package/dist/astUtils/Editor.spec.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/creators.spec.js +5 -5
- package/dist/astUtils/creators.spec.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +196 -85
- package/dist/astUtils/reflection.js +497 -144
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/astUtils/reflection.spec.js +267 -167
- package/dist/astUtils/reflection.spec.js.map +1 -1
- package/dist/astUtils/stackedVisitor.js.map +1 -1
- package/dist/astUtils/stackedVisitor.spec.js +14 -14
- package/dist/astUtils/stackedVisitor.spec.js.map +1 -1
- package/dist/astUtils/visitors.d.ts +116 -53
- package/dist/astUtils/visitors.js +95 -15
- package/dist/astUtils/visitors.js.map +1 -1
- package/dist/astUtils/visitors.spec.js +629 -51
- package/dist/astUtils/visitors.spec.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 +24 -4
- package/dist/bscPlugin/BscPlugin.js +88 -4
- package/dist/bscPlugin/BscPlugin.js.map +1 -1
- package/dist/bscPlugin/CallExpressionInfo.d.ts +36 -0
- package/dist/bscPlugin/CallExpressionInfo.js +143 -0
- package/dist/bscPlugin/CallExpressionInfo.js.map +1 -0
- package/dist/bscPlugin/FileWriter.d.ts +6 -0
- package/dist/bscPlugin/FileWriter.js +24 -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 +6 -5
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +173 -27
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +138 -21
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
- 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/completions/CompletionsProcessor.spec.js +2512 -0
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -0
- package/dist/bscPlugin/definition/DefinitionProvider.d.ts +13 -0
- package/dist/bscPlugin/definition/DefinitionProvider.js +212 -0
- package/dist/bscPlugin/definition/DefinitionProvider.js.map +1 -0
- package/dist/bscPlugin/definition/DefinitionProvider.spec.js +87 -0
- package/dist/bscPlugin/definition/DefinitionProvider.spec.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 +230 -0
- package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -0
- package/dist/bscPlugin/hover/HoverProcessor.spec.js +991 -0
- package/dist/bscPlugin/hover/HoverProcessor.spec.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/references/ReferencesProvider.spec.d.ts +1 -0
- package/dist/bscPlugin/references/ReferencesProvider.spec.js +51 -0
- package/dist/bscPlugin/references/ReferencesProvider.spec.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/semanticTokens/BrsFileSemanticTokensProcessor.spec.d.ts +1 -0
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +564 -0
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -0
- package/dist/bscPlugin/serialize/BslibInjector.spec.d.ts +1 -0
- package/dist/bscPlugin/serialize/BslibInjector.spec.js +33 -0
- package/dist/bscPlugin/serialize/BslibInjector.spec.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 +75 -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/DocumentSymbolProcessor.spec.d.ts +1 -0
- package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.js +291 -0
- package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.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/WorkspaceSymbolProcessor.spec.d.ts +1 -0
- package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.js +245 -0
- package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.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 +27 -0
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js +418 -0
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -0
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.d.ts +1 -0
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js +75 -0
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.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 +37 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js +638 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -0
- package/dist/bscPlugin/validation/BrsFileValidator.spec.d.ts +1 -0
- package/dist/bscPlugin/validation/BrsFileValidator.spec.js +1517 -0
- package/dist/bscPlugin/validation/BrsFileValidator.spec.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 +141 -0
- package/dist/bscPlugin/validation/ScopeValidator.js +1323 -0
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -0
- package/dist/bscPlugin/validation/ScopeValidator.spec.d.ts +1 -0
- package/dist/bscPlugin/validation/ScopeValidator.spec.js +6135 -0
- package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -0
- package/dist/bscPlugin/validation/XmlFileValidator.d.ts +8 -0
- package/dist/bscPlugin/validation/XmlFileValidator.js +36 -0
- package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -0
- package/dist/cli.js +126 -27
- 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/common/Sequencer.spec.d.ts +1 -0
- package/dist/common/Sequencer.spec.js +75 -0
- package/dist/common/Sequencer.spec.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 +10 -3
- package/dist/diagnosticUtils.js +64 -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.Class.spec.js +1213 -259
- package/dist/files/BrsFile.Class.spec.js.map +1 -1
- package/dist/files/BrsFile.d.ts +145 -87
- package/dist/files/BrsFile.js +836 -934
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +4226 -902
- package/dist/files/BrsFile.spec.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/LazyFileData.spec.d.ts +1 -0
- package/dist/files/LazyFileData.spec.js +27 -0
- package/dist/files/LazyFileData.spec.js.map +1 -0
- package/dist/files/XmlFile.d.ts +80 -41
- package/dist/files/XmlFile.js +161 -137
- package/dist/files/XmlFile.js.map +1 -1
- package/dist/files/XmlFile.spec.js +444 -336
- package/dist/files/XmlFile.spec.js.map +1 -1
- package/dist/files/tests/imports.spec.js +62 -52
- package/dist/files/tests/imports.spec.js.map +1 -1
- package/dist/files/tests/optionalChaning.spec.d.ts +1 -0
- package/dist/files/tests/optionalChaning.spec.js +152 -0
- package/dist/files/tests/optionalChaning.spec.js.map +1 -0
- 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 +942 -125
- package/dist/interfaces.js +21 -0
- package/dist/interfaces.js.map +1 -1
- package/dist/lexer/Character.spec.js +5 -5
- package/dist/lexer/Character.spec.js.map +1 -1
- package/dist/lexer/Lexer.d.ts +51 -12
- package/dist/lexer/Lexer.js +215 -65
- package/dist/lexer/Lexer.js.map +1 -1
- package/dist/lexer/Lexer.spec.js +812 -568
- package/dist/lexer/Lexer.spec.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 +40 -2
- package/dist/lexer/TokenKind.js +147 -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/ActionQueue.spec.d.ts +1 -0
- package/dist/lsp/ActionQueue.spec.js +80 -0
- package/dist/lsp/ActionQueue.spec.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/DocumentManager.spec.d.ts +1 -0
- package/dist/lsp/DocumentManager.spec.js +103 -0
- package/dist/lsp/DocumentManager.spec.js.map +1 -0
- package/dist/lsp/LspProject.d.ts +239 -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/PathFilterer.spec.d.ts +1 -0
- package/dist/lsp/PathFilterer.spec.js +182 -0
- package/dist/lsp/PathFilterer.spec.js.map +1 -0
- package/dist/lsp/Project.d.ts +168 -0
- package/dist/lsp/Project.js +437 -0
- package/dist/lsp/Project.js.map +1 -0
- package/dist/lsp/Project.spec.d.ts +1 -0
- package/dist/lsp/Project.spec.js +267 -0
- package/dist/lsp/Project.spec.js.map +1 -0
- package/dist/lsp/ProjectManager.d.ts +242 -0
- package/dist/lsp/ProjectManager.js +824 -0
- package/dist/lsp/ProjectManager.js.map +1 -0
- package/dist/lsp/ProjectManager.spec.d.ts +1 -0
- package/dist/lsp/ProjectManager.spec.js +913 -0
- package/dist/lsp/ProjectManager.spec.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/MessageHandler.spec.d.ts +1 -0
- package/dist/lsp/worker/MessageHandler.spec.js +64 -0
- package/dist/lsp/worker/MessageHandler.spec.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/WorkerPool.spec.d.ts +1 -0
- package/dist/lsp/worker/WorkerPool.spec.js +59 -0
- package/dist/lsp/worker/WorkerPool.spec.js.map +1 -0
- package/dist/lsp/worker/WorkerThreadProject.d.ts +143 -0
- package/dist/lsp/worker/WorkerThreadProject.js +189 -0
- package/dist/lsp/worker/WorkerThreadProject.js.map +1 -0
- package/dist/lsp/worker/WorkerThreadProject.spec.d.ts +2 -0
- package/dist/lsp/worker/WorkerThreadProject.spec.js +71 -0
- package/dist/lsp/worker/WorkerThreadProject.spec.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.d.ts +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 +203 -0
- package/dist/parser/AstNode.js +303 -0
- package/dist/parser/AstNode.js.map +1 -0
- package/dist/parser/AstNode.spec.d.ts +1 -0
- package/dist/parser/AstNode.spec.js +1455 -0
- package/dist/parser/AstNode.spec.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/BrightScriptDocParser.spec.d.ts +1 -0
- package/dist/parser/BrightScriptDocParser.spec.js +310 -0
- package/dist/parser/BrightScriptDocParser.spec.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 +553 -221
- package/dist/parser/Expression.js +1414 -505
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Expression.spec.d.ts +1 -0
- package/dist/parser/Expression.spec.js +40 -0
- package/dist/parser/Expression.spec.js.map +1 -0
- package/dist/parser/Parser.Class.spec.js +255 -125
- package/dist/parser/Parser.Class.spec.js.map +1 -1
- package/dist/parser/Parser.d.ts +117 -124
- package/dist/parser/Parser.js +1669 -982
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.d.ts +3 -1
- package/dist/parser/Parser.spec.js +2111 -525
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/SGParser.d.ts +29 -13
- package/dist/parser/SGParser.js +85 -56
- package/dist/parser/SGParser.js.map +1 -1
- package/dist/parser/SGParser.spec.js +30 -45
- package/dist/parser/SGParser.spec.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 +849 -267
- package/dist/parser/Statement.js +2412 -625
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/Statement.spec.js +133 -36
- package/dist/parser/Statement.spec.js.map +1 -1
- package/dist/parser/TranspileState.d.ts +26 -12
- package/dist/parser/TranspileState.js +115 -24
- package/dist/parser/TranspileState.js.map +1 -1
- package/dist/parser/tests/Parser.spec.d.ts +3 -9
- package/dist/parser/tests/Parser.spec.js +7 -13
- package/dist/parser/tests/Parser.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/For.spec.js +83 -75
- package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/ForEach.spec.js +85 -51
- package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/If.spec.js +382 -239
- package/dist/parser/tests/controlFlow/If.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/While.spec.js +52 -45
- package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
- package/dist/parser/tests/expression/Additive.spec.js +51 -43
- package/dist/parser/tests/expression/Additive.spec.js.map +1 -1
- package/dist/parser/tests/expression/ArrayLiterals.spec.js +192 -142
- package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +1 -1
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +236 -160
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +1 -1
- package/dist/parser/tests/expression/Boolean.spec.js +41 -34
- package/dist/parser/tests/expression/Boolean.spec.js.map +1 -1
- package/dist/parser/tests/expression/Call.spec.js +173 -55
- package/dist/parser/tests/expression/Call.spec.js.map +1 -1
- package/dist/parser/tests/expression/Exponential.spec.js +20 -20
- package/dist/parser/tests/expression/Exponential.spec.js.map +1 -1
- package/dist/parser/tests/expression/Function.spec.js +291 -282
- package/dist/parser/tests/expression/Function.spec.js.map +1 -1
- package/dist/parser/tests/expression/Indexing.spec.js +193 -110
- package/dist/parser/tests/expression/Indexing.spec.js.map +1 -1
- package/dist/parser/tests/expression/Multiplicative.spec.js +42 -42
- package/dist/parser/tests/expression/Multiplicative.spec.js.map +1 -1
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +260 -115
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/PrefixUnary.spec.js +58 -52
- package/dist/parser/tests/expression/PrefixUnary.spec.js.map +1 -1
- package/dist/parser/tests/expression/Primary.spec.js +76 -60
- package/dist/parser/tests/expression/Primary.spec.js.map +1 -1
- package/dist/parser/tests/expression/RegexLiteralExpression.spec.d.ts +1 -0
- package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +171 -0
- package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +1 -0
- package/dist/parser/tests/expression/Relational.spec.js +50 -50
- package/dist/parser/tests/expression/Relational.spec.js.map +1 -1
- package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +31 -31
- package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js +281 -94
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/TernaryExpression.spec.js +747 -192
- package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/TypeExpression.spec.d.ts +1 -0
- package/dist/parser/tests/expression/TypeExpression.spec.js +126 -0
- package/dist/parser/tests/expression/TypeExpression.spec.js.map +1 -0
- package/dist/parser/tests/expression/UnaryExpression.spec.d.ts +1 -0
- package/dist/parser/tests/expression/UnaryExpression.spec.js +52 -0
- package/dist/parser/tests/expression/UnaryExpression.spec.js.map +1 -0
- package/dist/parser/tests/statement/AssignmentOperators.spec.js +44 -44
- package/dist/parser/tests/statement/AssignmentOperators.spec.js.map +1 -1
- package/dist/parser/tests/statement/ConstStatement.spec.d.ts +1 -0
- package/dist/parser/tests/statement/ConstStatement.spec.js +500 -0
- package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -0
- package/dist/parser/tests/statement/Continue.spec.d.ts +1 -0
- package/dist/parser/tests/statement/Continue.spec.js +119 -0
- package/dist/parser/tests/statement/Continue.spec.js.map +1 -0
- package/dist/parser/tests/statement/Declaration.spec.js +61 -55
- package/dist/parser/tests/statement/Declaration.spec.js.map +1 -1
- package/dist/parser/tests/statement/Dim.spec.js +29 -22
- package/dist/parser/tests/statement/Dim.spec.js.map +1 -1
- package/dist/parser/tests/statement/Enum.spec.d.ts +1 -0
- package/dist/parser/tests/statement/Enum.spec.js +744 -0
- package/dist/parser/tests/statement/Enum.spec.js.map +1 -0
- package/dist/parser/tests/statement/For.spec.d.ts +1 -0
- package/dist/parser/tests/statement/For.spec.js +45 -0
- package/dist/parser/tests/statement/For.spec.js.map +1 -0
- package/dist/parser/tests/statement/ForEach.spec.d.ts +1 -0
- package/dist/parser/tests/statement/ForEach.spec.js +36 -0
- package/dist/parser/tests/statement/ForEach.spec.js.map +1 -0
- package/dist/parser/tests/statement/Function.spec.js +226 -215
- package/dist/parser/tests/statement/Function.spec.js.map +1 -1
- package/dist/parser/tests/statement/Goto.spec.js +16 -15
- package/dist/parser/tests/statement/Goto.spec.js.map +1 -1
- package/dist/parser/tests/statement/Increment.spec.js +64 -61
- package/dist/parser/tests/statement/Increment.spec.js.map +1 -1
- package/dist/parser/tests/statement/InterfaceStatement.spec.d.ts +1 -0
- package/dist/parser/tests/statement/InterfaceStatement.spec.js +110 -0
- package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -0
- package/dist/parser/tests/statement/LibraryStatement.spec.js +22 -22
- package/dist/parser/tests/statement/LibraryStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Misc.spec.js +127 -168
- package/dist/parser/tests/statement/Misc.spec.js.map +1 -1
- package/dist/parser/tests/statement/PrintStatement.spec.js +133 -114
- package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/ReturnStatement.spec.js +57 -54
- package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Set.spec.js +131 -117
- package/dist/parser/tests/statement/Set.spec.js.map +1 -1
- package/dist/parser/tests/statement/Stop.spec.js +14 -13
- package/dist/parser/tests/statement/Stop.spec.js.map +1 -1
- package/dist/parser/tests/statement/Throw.spec.js +11 -8
- package/dist/parser/tests/statement/Throw.spec.js.map +1 -1
- package/dist/parser/tests/statement/TryCatch.spec.js +26 -15
- package/dist/parser/tests/statement/TryCatch.spec.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/preprocessor/Manifest.spec.d.ts +1 -0
- package/dist/preprocessor/Manifest.spec.js +78 -103
- package/dist/preprocessor/Manifest.spec.js.map +1 -1
- package/dist/roku-types/data.json +20347 -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 +89 -24
- package/dist/types/ArrayType.js.map +1 -1
- package/dist/types/ArrayType.spec.js +39 -11
- package/dist/types/ArrayType.spec.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/BooleanType.spec.js +10 -4
- package/dist/types/BooleanType.spec.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/BuiltInInterfaceAdder.spec.d.ts +1 -0
- package/dist/types/BuiltInInterfaceAdder.spec.js +115 -0
- package/dist/types/BuiltInInterfaceAdder.spec.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 +60 -0
- package/dist/types/ClassType.js.map +1 -0
- package/dist/types/ClassType.spec.d.ts +1 -0
- package/dist/types/ClassType.spec.js +76 -0
- package/dist/types/ClassType.spec.js.map +1 -0
- package/dist/types/ComponentType.d.ts +22 -0
- package/dist/types/ComponentType.js +107 -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/DoubleType.spec.js +12 -4
- package/dist/types/DoubleType.spec.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/DynamicType.spec.js +16 -5
- package/dist/types/DynamicType.spec.js.map +1 -1
- package/dist/types/EnumType.d.ts +42 -0
- package/dist/types/EnumType.js +98 -0
- package/dist/types/EnumType.js.map +1 -0
- package/dist/types/EnumType.spec.d.ts +1 -0
- package/dist/types/EnumType.spec.js +33 -0
- package/dist/types/EnumType.spec.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/FloatType.spec.js +4 -4
- package/dist/types/FloatType.spec.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/IntegerType.spec.js +8 -4
- package/dist/types/IntegerType.spec.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/InterfaceType.spec.d.ts +1 -0
- package/dist/types/InterfaceType.spec.js +227 -0
- package/dist/types/InterfaceType.spec.js.map +1 -0
- package/dist/types/IntersectionType.d.ts +29 -0
- package/dist/types/IntersectionType.js +253 -0
- package/dist/types/IntersectionType.js.map +1 -0
- package/dist/types/IntersectionType.spec.d.ts +1 -0
- package/dist/types/IntersectionType.spec.js +150 -0
- package/dist/types/IntersectionType.spec.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/InvalidType.spec.js +8 -4
- package/dist/types/InvalidType.spec.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/LongIntegerType.spec.js +10 -4
- package/dist/types/LongIntegerType.spec.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/ObjectType.spec.js +3 -3
- package/dist/types/ObjectType.spec.js.map +1 -1
- package/dist/types/ReferenceType.d.ts +123 -0
- package/dist/types/ReferenceType.js +720 -0
- package/dist/types/ReferenceType.js.map +1 -0
- package/dist/types/ReferenceType.spec.d.ts +1 -0
- package/dist/types/ReferenceType.spec.js +151 -0
- package/dist/types/ReferenceType.spec.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/StringType.spec.js +3 -3
- package/dist/types/StringType.spec.js.map +1 -1
- package/dist/types/TypeStatementType.d.ts +18 -0
- package/dist/types/TypeStatementType.js +45 -0
- package/dist/types/TypeStatementType.js.map +1 -0
- package/dist/types/TypedFunctionType.d.ts +34 -0
- package/dist/types/TypedFunctionType.js +147 -0
- package/dist/types/TypedFunctionType.js.map +1 -0
- package/dist/types/TypedFunctionType.spec.d.ts +1 -0
- package/dist/types/TypedFunctionType.spec.js +122 -0
- package/dist/types/TypedFunctionType.spec.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 +193 -0
- package/dist/types/UnionType.js.map +1 -0
- package/dist/types/UnionType.spec.d.ts +1 -0
- package/dist/types/UnionType.spec.js +205 -0
- package/dist/types/UnionType.spec.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/VoidType.spec.js +3 -3
- package/dist/types/VoidType.spec.js.map +1 -1
- package/dist/types/helper.spec.d.ts +1 -0
- package/dist/types/helper.spec.js +174 -0
- package/dist/types/helper.spec.js.map +1 -0
- package/dist/types/helpers.d.ts +51 -0
- package/dist/types/helpers.js +323 -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/types/roFunctionType.spec.d.ts +1 -0
- package/dist/types/roFunctionType.spec.js +20 -0
- package/dist/types/roFunctionType.spec.js.map +1 -0
- package/dist/util.d.ts +288 -187
- package/dist/util.js +2018 -575
- 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 +185 -138
- package/CHANGELOG.md +0 -1188
- 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/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.js +0 -45
- package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.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/SGTypes.spec.js +0 -351
- package/dist/parser/SGTypes.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/preprocessor/Chunk.d.ts +0 -82
- package/dist/preprocessor/Chunk.js +0 -77
- package/dist/preprocessor/Chunk.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.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.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/CustomType.d.ts +0 -10
- package/dist/types/CustomType.js +0 -35
- package/dist/types/CustomType.js.map +0 -1
- package/dist/types/FunctionType.spec.js +0 -29
- package/dist/types/FunctionType.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/{bscPlugin/semanticTokens/SemanticTokensProcessor.spec.d.ts → astUtils/CachedLookups.spec.d.ts} +0 -0
- /package/dist/{parser/SGTypes.spec.d.ts → astUtils/Editor.spec.d.ts} +0 -0
- /package/dist/{preprocessor/Preprocessor.spec.d.ts → bscPlugin/completions/CompletionsProcessor.spec.d.ts} +0 -0
- /package/dist/{preprocessor/PreprocessorParser.spec.d.ts → bscPlugin/definition/DefinitionProvider.spec.d.ts} +0 -0
- /package/dist/{types/FunctionType.spec.d.ts → bscPlugin/hover/HoverProcessor.spec.d.ts} +0 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const chai_1 = require("chai");
|
|
4
|
+
const WorkerPool_1 = require("./WorkerPool");
|
|
5
|
+
describe('WorkerPool', () => {
|
|
6
|
+
let pool;
|
|
7
|
+
let workers = [];
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
workers = [];
|
|
10
|
+
//our factory will create empty objects. This prevents us from having to actually run threads.
|
|
11
|
+
pool = new WorkerPool_1.WorkerPool(() => {
|
|
12
|
+
const worker = {};
|
|
13
|
+
workers.push(worker);
|
|
14
|
+
return worker;
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
describe('preload', () => {
|
|
18
|
+
it('ensures enough free workers have been created', () => {
|
|
19
|
+
(0, chai_1.expect)(workers.length).to.eql(0);
|
|
20
|
+
pool.preload(5);
|
|
21
|
+
(0, chai_1.expect)(workers.length).to.eql(5);
|
|
22
|
+
pool.preload(7);
|
|
23
|
+
(0, chai_1.expect)(workers.length).to.eql(7);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
describe('releaseWorker', () => {
|
|
27
|
+
it('releases a worker back to the pool', () => {
|
|
28
|
+
const worker = pool.getWorker();
|
|
29
|
+
(0, chai_1.expect)(pool['freeWorkers']).lengthOf(0);
|
|
30
|
+
pool.releaseWorker(worker);
|
|
31
|
+
(0, chai_1.expect)(pool['freeWorkers']).lengthOf(1);
|
|
32
|
+
//doesn't crash if we do the same thing again
|
|
33
|
+
pool.releaseWorker(worker);
|
|
34
|
+
(0, chai_1.expect)(pool['freeWorkers']).lengthOf(1);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
describe('getWorker', () => {
|
|
38
|
+
it('creates a new worker when none exist', () => {
|
|
39
|
+
(0, chai_1.expect)(pool['allWorkers']).to.be.empty;
|
|
40
|
+
(0, chai_1.expect)(pool['freeWorkers']).to.be.empty;
|
|
41
|
+
const worker = pool.getWorker();
|
|
42
|
+
(0, chai_1.expect)(worker).to.eql(workers[0]);
|
|
43
|
+
(0, chai_1.expect)(pool['allWorkers']).to.be.lengthOf(1);
|
|
44
|
+
//should be same instance
|
|
45
|
+
(0, chai_1.expect)(pool['allWorkers'][0]).equals(workers[0]);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
describe('dispose', () => {
|
|
49
|
+
it('does not crash when worker.terminate() fails', () => {
|
|
50
|
+
const worker = pool.getWorker();
|
|
51
|
+
worker['terminate'] = () => {
|
|
52
|
+
throw new Error('Test crash');
|
|
53
|
+
};
|
|
54
|
+
//should not throw error
|
|
55
|
+
pool.dispose();
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=WorkerPool.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkerPool.spec.js","sourceRoot":"","sources":["../../../src/lsp/worker/WorkerPool.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import type { LspDiagnostic, ActivateResponse, ProjectConfig } from '../LspProject';
|
|
2
|
+
import { type LspProject } from '../LspProject';
|
|
3
|
+
import { WorkerPool } from './WorkerPool';
|
|
4
|
+
import type { Hover, MaybePromise, SemanticToken } from '../../interfaces';
|
|
5
|
+
import type { DocumentAction, DocumentActionWithStatus } from '../DocumentManager';
|
|
6
|
+
import type { FileTranspileResult, SignatureInfoObj } from '../../Program';
|
|
7
|
+
import type { Position, Range, Location, DocumentSymbol, WorkspaceSymbol, CodeAction, CompletionList } from 'vscode-languageserver-protocol';
|
|
8
|
+
import type { Logger } from '../../logging';
|
|
9
|
+
export declare const workerPool: WorkerPool;
|
|
10
|
+
export declare class WorkerThreadProject implements LspProject {
|
|
11
|
+
constructor(options?: {
|
|
12
|
+
logger?: Logger;
|
|
13
|
+
});
|
|
14
|
+
activate(options: ProjectConfig): Promise<ActivateResponse>;
|
|
15
|
+
logger: Logger;
|
|
16
|
+
isStandaloneProject: boolean;
|
|
17
|
+
private activationDeferred;
|
|
18
|
+
/**
|
|
19
|
+
* Options used to activate this project
|
|
20
|
+
*/
|
|
21
|
+
activateOptions: ProjectConfig;
|
|
22
|
+
/**
|
|
23
|
+
* The root directory of the project
|
|
24
|
+
*/
|
|
25
|
+
rootDir: string;
|
|
26
|
+
/**
|
|
27
|
+
* The file patterns from bsconfig.json that were used to find all files for this project
|
|
28
|
+
*/
|
|
29
|
+
filePatterns: string[];
|
|
30
|
+
/**
|
|
31
|
+
* Path to a bsconfig.json file that will be used for this project
|
|
32
|
+
*/
|
|
33
|
+
bsconfigPath?: string;
|
|
34
|
+
/**
|
|
35
|
+
* The contents of the bsconfig.json file. This is used to detect when the bsconfig file has not actually been changed (even if the fs says it did).
|
|
36
|
+
*
|
|
37
|
+
* Only available after `.activate()` has completed.
|
|
38
|
+
* @deprecated do not depend on this property. This will certainly be removed in a future release
|
|
39
|
+
*/
|
|
40
|
+
bsconfigFileContents?: string;
|
|
41
|
+
/**
|
|
42
|
+
* The worker thread where the actual project will execute
|
|
43
|
+
*/
|
|
44
|
+
private worker;
|
|
45
|
+
/**
|
|
46
|
+
* Path to the project. For directory-only projects, this is the path to the dir. For bsconfig.json projects, this is the path to the config.
|
|
47
|
+
*/
|
|
48
|
+
projectKey: string;
|
|
49
|
+
/**
|
|
50
|
+
* The directory for the root of this project (typically where the bsconfig.json or manifest is located)
|
|
51
|
+
*/
|
|
52
|
+
projectDir: string;
|
|
53
|
+
/**
|
|
54
|
+
* A unique number for this project, generated during this current language server session. Mostly used so we can identify which project is doing logging
|
|
55
|
+
*/
|
|
56
|
+
projectNumber: number;
|
|
57
|
+
/**
|
|
58
|
+
* The path to the workspace where this project resides. A workspace can have multiple projects (by adding a bsconfig.json to each folder).
|
|
59
|
+
* Defaults to `.projectPath` if not set
|
|
60
|
+
*/
|
|
61
|
+
workspaceFolder: string;
|
|
62
|
+
/**
|
|
63
|
+
* Promise that resolves when the project finishes activating
|
|
64
|
+
* @returns a promise that resolves when the project finishes activating
|
|
65
|
+
*/
|
|
66
|
+
whenActivated(): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* Validate the project. This will trigger a full validation on any scopes that were changed since the last validation,
|
|
69
|
+
* and will also eventually emit a new 'diagnostics' event that includes all diagnostics for the project
|
|
70
|
+
*/
|
|
71
|
+
validate(): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* Cancel any active validation that's running
|
|
74
|
+
*/
|
|
75
|
+
cancelValidate(): Promise<void>;
|
|
76
|
+
getDiagnostics(): Promise<LspDiagnostic[]>;
|
|
77
|
+
/**
|
|
78
|
+
* Apply a series of file changes to the project. This is safe to call any time. Changes will be queued and flushed at the correct times
|
|
79
|
+
* during the program's lifecycle flow
|
|
80
|
+
*/
|
|
81
|
+
applyFileChanges(documentActions: DocumentAction[]): Promise<DocumentActionWithStatus[]>;
|
|
82
|
+
/**
|
|
83
|
+
* Send a request with the standard structure
|
|
84
|
+
* @param name the name of the request
|
|
85
|
+
* @param data the array of data to send
|
|
86
|
+
* @returns the response from the request
|
|
87
|
+
*/
|
|
88
|
+
private sendStandardRequest;
|
|
89
|
+
/**
|
|
90
|
+
* Get the full list of semantic tokens for the given file path
|
|
91
|
+
*/
|
|
92
|
+
getSemanticTokens(options: {
|
|
93
|
+
srcPath: string;
|
|
94
|
+
}): Promise<SemanticToken[]>;
|
|
95
|
+
transpileFile(options: {
|
|
96
|
+
srcPath: string;
|
|
97
|
+
}): Promise<FileTranspileResult>;
|
|
98
|
+
getHover(options: {
|
|
99
|
+
srcPath: string;
|
|
100
|
+
position: Position;
|
|
101
|
+
}): Promise<Hover[]>;
|
|
102
|
+
getDefinition(options: {
|
|
103
|
+
srcPath: string;
|
|
104
|
+
position: Position;
|
|
105
|
+
}): Promise<Location[]>;
|
|
106
|
+
getSignatureHelp(options: {
|
|
107
|
+
srcPath: string;
|
|
108
|
+
position: Position;
|
|
109
|
+
}): Promise<SignatureInfoObj[]>;
|
|
110
|
+
getDocumentSymbol(options: {
|
|
111
|
+
srcPath: string;
|
|
112
|
+
}): Promise<DocumentSymbol[]>;
|
|
113
|
+
getWorkspaceSymbol(): Promise<WorkspaceSymbol[]>;
|
|
114
|
+
getReferences(options: {
|
|
115
|
+
srcPath: string;
|
|
116
|
+
position: Position;
|
|
117
|
+
}): Promise<Location[]>;
|
|
118
|
+
getCodeActions(options: {
|
|
119
|
+
srcPath: string;
|
|
120
|
+
range: Range;
|
|
121
|
+
}): Promise<CodeAction[]>;
|
|
122
|
+
getCompletions(options: {
|
|
123
|
+
srcPath: string;
|
|
124
|
+
position: Position;
|
|
125
|
+
}): Promise<CompletionList>;
|
|
126
|
+
/**
|
|
127
|
+
* Handles request/response/update messages from the worker thread
|
|
128
|
+
*/
|
|
129
|
+
private messageHandler;
|
|
130
|
+
private processRequest;
|
|
131
|
+
private processUpdate;
|
|
132
|
+
on(eventName: 'critical-failure', handler: (data: {
|
|
133
|
+
message: string;
|
|
134
|
+
}) => void): any;
|
|
135
|
+
on(eventName: 'diagnostics', handler: (data: {
|
|
136
|
+
diagnostics: LspDiagnostic[];
|
|
137
|
+
}) => MaybePromise<void>): any;
|
|
138
|
+
on(eventName: 'all', handler: (eventName: string, data: any) => MaybePromise<void>): any;
|
|
139
|
+
private emit;
|
|
140
|
+
private emitter;
|
|
141
|
+
disposables: LspProject['disposables'];
|
|
142
|
+
dispose(): void;
|
|
143
|
+
}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WorkerThreadProject = exports.workerPool = void 0;
|
|
4
|
+
const EventEmitter = require("eventemitter3");
|
|
5
|
+
const worker_threads_1 = require("worker_threads");
|
|
6
|
+
const MessageHandler_1 = require("./MessageHandler");
|
|
7
|
+
const util_1 = require("../../util");
|
|
8
|
+
const WorkerPool_1 = require("./WorkerPool");
|
|
9
|
+
const deferred_1 = require("../../deferred");
|
|
10
|
+
const logging_1 = require("../../logging");
|
|
11
|
+
const fsExtra = require("fs-extra");
|
|
12
|
+
const path = require("path");
|
|
13
|
+
const util_2 = require("../../util");
|
|
14
|
+
exports.workerPool = new WorkerPool_1.WorkerPool(() => {
|
|
15
|
+
var _a;
|
|
16
|
+
//construct the path to the `./run.ts` (or `./run.js`) script in this same directory
|
|
17
|
+
const runScriptPath = (0, util_2.standardizePath) `${__dirname}/run${path.extname(__filename)}`;
|
|
18
|
+
// Prepare execArgv for debugging support
|
|
19
|
+
const execArgv = [];
|
|
20
|
+
// Add ts-node if we're running TypeScript
|
|
21
|
+
if (/\.ts$/i.test(runScriptPath)) {
|
|
22
|
+
execArgv.push('--require', 'ts-node/register');
|
|
23
|
+
}
|
|
24
|
+
// Enable debugging for worker threads if the main process is being debugged
|
|
25
|
+
// Check if debugging is enabled via execArgv or environment variables
|
|
26
|
+
const isDebugging = process.execArgv.some(arg => arg.startsWith('--inspect')) || ((_a = process.env.NODE_OPTIONS) === null || _a === void 0 ? void 0 : _a.includes('--inspect'));
|
|
27
|
+
if (isDebugging) {
|
|
28
|
+
// Node.js will automatically assign a unique port for each worker when using --inspect=0
|
|
29
|
+
// This allows VSCode to automatically attach to worker threads
|
|
30
|
+
execArgv.push('--inspect=0');
|
|
31
|
+
}
|
|
32
|
+
return new worker_threads_1.Worker(runScriptPath, {
|
|
33
|
+
execArgv: execArgv.length > 0 ? execArgv : undefined
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
class WorkerThreadProject {
|
|
37
|
+
constructor(options) {
|
|
38
|
+
var _a;
|
|
39
|
+
this.isStandaloneProject = false;
|
|
40
|
+
this.activationDeferred = new deferred_1.Deferred();
|
|
41
|
+
this.emitter = new EventEmitter();
|
|
42
|
+
this.disposables = [];
|
|
43
|
+
this.logger = (_a = options === null || options === void 0 ? void 0 : options.logger) !== null && _a !== void 0 ? _a : (0, logging_1.createLogger)();
|
|
44
|
+
}
|
|
45
|
+
async activate(options) {
|
|
46
|
+
var _a;
|
|
47
|
+
this.activateOptions = options;
|
|
48
|
+
this.bsconfigPath = options.bsconfigPath ? util_1.default.standardizePath(options.bsconfigPath) : options.bsconfigPath;
|
|
49
|
+
this.projectDir = options.projectDir ? util_1.default.standardizePath(options.projectDir) : options.projectDir;
|
|
50
|
+
this.projectKey = options.projectKey ? util_1.default.standardizePath(options.projectKey) : (_a = options.bsconfigPath) !== null && _a !== void 0 ? _a : options.projectDir;
|
|
51
|
+
this.workspaceFolder = options.workspaceFolder ? util_1.default.standardizePath(options.workspaceFolder) : options.workspaceFolder;
|
|
52
|
+
this.projectNumber = options.projectNumber;
|
|
53
|
+
// start a new worker thread or get an unused existing thread
|
|
54
|
+
this.worker = exports.workerPool.getWorker();
|
|
55
|
+
this.messageHandler = new MessageHandler_1.MessageHandler({
|
|
56
|
+
name: 'MainThread',
|
|
57
|
+
port: this.worker,
|
|
58
|
+
onRequest: this.processRequest.bind(this),
|
|
59
|
+
onUpdate: this.processUpdate.bind(this)
|
|
60
|
+
});
|
|
61
|
+
this.disposables.push(this.messageHandler);
|
|
62
|
+
const activateResponse = await this.messageHandler.sendRequest('activate', { data: [options] });
|
|
63
|
+
this.bsconfigPath = activateResponse.data.bsconfigPath;
|
|
64
|
+
this.rootDir = activateResponse.data.rootDir;
|
|
65
|
+
this.filePatterns = activateResponse.data.filePatterns;
|
|
66
|
+
this.logger.logLevel = activateResponse.data.logLevel;
|
|
67
|
+
//load the bsconfig file contents (used for performance optimizations externally)
|
|
68
|
+
try {
|
|
69
|
+
this.bsconfigFileContents = (await fsExtra.readFile(this.bsconfigPath)).toString();
|
|
70
|
+
}
|
|
71
|
+
catch (_b) { }
|
|
72
|
+
this.activationDeferred.resolve();
|
|
73
|
+
return activateResponse.data;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Promise that resolves when the project finishes activating
|
|
77
|
+
* @returns a promise that resolves when the project finishes activating
|
|
78
|
+
*/
|
|
79
|
+
whenActivated() {
|
|
80
|
+
return this.activationDeferred.promise;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Validate the project. This will trigger a full validation on any scopes that were changed since the last validation,
|
|
84
|
+
* and will also eventually emit a new 'diagnostics' event that includes all diagnostics for the project
|
|
85
|
+
*/
|
|
86
|
+
async validate() {
|
|
87
|
+
const response = await this.messageHandler.sendRequest('validate');
|
|
88
|
+
return response.data;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Cancel any active validation that's running
|
|
92
|
+
*/
|
|
93
|
+
async cancelValidate() {
|
|
94
|
+
const response = await this.messageHandler.sendRequest('cancelValidate');
|
|
95
|
+
return response.data;
|
|
96
|
+
}
|
|
97
|
+
async getDiagnostics() {
|
|
98
|
+
const response = await this.messageHandler.sendRequest('getDiagnostics');
|
|
99
|
+
return response.data;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Apply a series of file changes to the project. This is safe to call any time. Changes will be queued and flushed at the correct times
|
|
103
|
+
* during the program's lifecycle flow
|
|
104
|
+
*/
|
|
105
|
+
async applyFileChanges(documentActions) {
|
|
106
|
+
const response = await this.messageHandler.sendRequest('applyFileChanges', {
|
|
107
|
+
data: [documentActions]
|
|
108
|
+
});
|
|
109
|
+
return response.data;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Send a request with the standard structure
|
|
113
|
+
* @param name the name of the request
|
|
114
|
+
* @param data the array of data to send
|
|
115
|
+
* @returns the response from the request
|
|
116
|
+
*/
|
|
117
|
+
async sendStandardRequest(name, ...data) {
|
|
118
|
+
const response = await this.messageHandler.sendRequest(name, {
|
|
119
|
+
data: data
|
|
120
|
+
});
|
|
121
|
+
return response.data;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Get the full list of semantic tokens for the given file path
|
|
125
|
+
*/
|
|
126
|
+
async getSemanticTokens(options) {
|
|
127
|
+
return this.sendStandardRequest('getSemanticTokens', options);
|
|
128
|
+
}
|
|
129
|
+
async transpileFile(options) {
|
|
130
|
+
return this.sendStandardRequest('transpileFile', options);
|
|
131
|
+
}
|
|
132
|
+
async getHover(options) {
|
|
133
|
+
return this.sendStandardRequest('getHover', options);
|
|
134
|
+
}
|
|
135
|
+
async getDefinition(options) {
|
|
136
|
+
return this.sendStandardRequest('getDefinition', options);
|
|
137
|
+
}
|
|
138
|
+
async getSignatureHelp(options) {
|
|
139
|
+
return this.sendStandardRequest('getSignatureHelp', options);
|
|
140
|
+
}
|
|
141
|
+
async getDocumentSymbol(options) {
|
|
142
|
+
return this.sendStandardRequest('getDocumentSymbol', options);
|
|
143
|
+
}
|
|
144
|
+
async getWorkspaceSymbol() {
|
|
145
|
+
return this.sendStandardRequest('getWorkspaceSymbol');
|
|
146
|
+
}
|
|
147
|
+
async getReferences(options) {
|
|
148
|
+
return this.sendStandardRequest('getReferences', options);
|
|
149
|
+
}
|
|
150
|
+
async getCodeActions(options) {
|
|
151
|
+
return this.sendStandardRequest('getCodeActions', options);
|
|
152
|
+
}
|
|
153
|
+
async getCompletions(options) {
|
|
154
|
+
return this.sendStandardRequest('getCompletions', options);
|
|
155
|
+
}
|
|
156
|
+
processRequest(request) {
|
|
157
|
+
}
|
|
158
|
+
processUpdate(update) {
|
|
159
|
+
//for now, all updates are treated like "events"
|
|
160
|
+
this.emit(update.name, update.data);
|
|
161
|
+
}
|
|
162
|
+
on(eventName, handler) {
|
|
163
|
+
this.emitter.on(eventName, handler);
|
|
164
|
+
return () => {
|
|
165
|
+
this.emitter.removeListener(eventName, handler);
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
async emit(eventName, data) {
|
|
169
|
+
//emit these events on next tick, otherwise they will be processed immediately which could cause issues
|
|
170
|
+
await util_1.default.sleep(0);
|
|
171
|
+
this.emitter.emit(eventName, data);
|
|
172
|
+
//emit the 'all' event
|
|
173
|
+
this.emitter.emit('all', eventName, data);
|
|
174
|
+
}
|
|
175
|
+
dispose() {
|
|
176
|
+
var _a, _b, _c;
|
|
177
|
+
for (let disposable of (_a = this.disposables) !== null && _a !== void 0 ? _a : []) {
|
|
178
|
+
(_b = disposable === null || disposable === void 0 ? void 0 : disposable.dispose) === null || _b === void 0 ? void 0 : _b.call(disposable);
|
|
179
|
+
}
|
|
180
|
+
this.disposables = [];
|
|
181
|
+
//move the worker back to the pool so it can be used again
|
|
182
|
+
if (this.worker) {
|
|
183
|
+
exports.workerPool.releaseWorker(this.worker);
|
|
184
|
+
}
|
|
185
|
+
(_c = this.emitter) === null || _c === void 0 ? void 0 : _c.removeAllListeners();
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
exports.WorkerThreadProject = WorkerThreadProject;
|
|
189
|
+
//# sourceMappingURL=WorkerThreadProject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkerThreadProject.js","sourceRoot":"","sources":["../../../src/lsp/worker/WorkerThreadProject.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getWakeWorkerThreadPromise = exports.wakeWorkerThread = void 0;
|
|
4
|
+
const testHelpers_spec_1 = require("../../testHelpers.spec");
|
|
5
|
+
const fsExtra = require("fs-extra");
|
|
6
|
+
const WorkerThreadProject_1 = require("./WorkerThreadProject");
|
|
7
|
+
const DiagnosticMessages_1 = require("../../DiagnosticMessages");
|
|
8
|
+
const chai_1 = require("chai");
|
|
9
|
+
async function wakeWorkerThread() {
|
|
10
|
+
console.log('waking up a worker thread');
|
|
11
|
+
const project = new WorkerThreadProject_1.WorkerThreadProject();
|
|
12
|
+
try {
|
|
13
|
+
await project.activate({
|
|
14
|
+
projectPath: testHelpers_spec_1.rootDir,
|
|
15
|
+
projectNumber: 1
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
finally {
|
|
19
|
+
project.dispose();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.wakeWorkerThread = wakeWorkerThread;
|
|
23
|
+
let wakeWorkerThreadPromise1;
|
|
24
|
+
function getWakeWorkerThreadPromise() {
|
|
25
|
+
if (wakeWorkerThreadPromise1 === undefined) {
|
|
26
|
+
wakeWorkerThreadPromise1 = wakeWorkerThread();
|
|
27
|
+
}
|
|
28
|
+
return wakeWorkerThreadPromise1;
|
|
29
|
+
}
|
|
30
|
+
exports.getWakeWorkerThreadPromise = getWakeWorkerThreadPromise;
|
|
31
|
+
after(() => {
|
|
32
|
+
WorkerThreadProject_1.workerPool.dispose();
|
|
33
|
+
});
|
|
34
|
+
describe('WorkerThreadProject', () => {
|
|
35
|
+
let project;
|
|
36
|
+
before(async function workerThreadWarmup() {
|
|
37
|
+
this.timeout(40000);
|
|
38
|
+
await getWakeWorkerThreadPromise();
|
|
39
|
+
});
|
|
40
|
+
beforeEach(() => {
|
|
41
|
+
project === null || project === void 0 ? void 0 : project.dispose();
|
|
42
|
+
project = new WorkerThreadProject_1.WorkerThreadProject();
|
|
43
|
+
fsExtra.emptyDirSync(testHelpers_spec_1.tempDir);
|
|
44
|
+
});
|
|
45
|
+
afterEach(() => {
|
|
46
|
+
fsExtra.emptyDirSync(testHelpers_spec_1.tempDir);
|
|
47
|
+
project === null || project === void 0 ? void 0 : project.dispose();
|
|
48
|
+
});
|
|
49
|
+
describe('activate', () => {
|
|
50
|
+
it('shows diagnostics after running', async () => {
|
|
51
|
+
fsExtra.outputFileSync(`${testHelpers_spec_1.rootDir}/source/main.brs`, `
|
|
52
|
+
sub main()
|
|
53
|
+
print varNotThere
|
|
54
|
+
end sub
|
|
55
|
+
`);
|
|
56
|
+
await project.activate({
|
|
57
|
+
projectKey: undefined,
|
|
58
|
+
projectDir: testHelpers_spec_1.rootDir,
|
|
59
|
+
workspaceFolder: testHelpers_spec_1.rootDir,
|
|
60
|
+
bsconfigPath: undefined,
|
|
61
|
+
projectNumber: 1
|
|
62
|
+
});
|
|
63
|
+
const diagnostics = await project.getDiagnostics();
|
|
64
|
+
(0, chai_1.expect)(diagnostics).lengthOf(1);
|
|
65
|
+
await (0, testHelpers_spec_1.expectDiagnosticsAsync)(diagnostics, [
|
|
66
|
+
DiagnosticMessages_1.DiagnosticMessages.cannotFindName('varNotThere').message
|
|
67
|
+
]);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=WorkerThreadProject.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkerThreadProject.spec.js","sourceRoot":"","sources":["../../../src/lsp/worker/WorkerThreadProject.spec.ts"],"names":[],"mappings":";;;AAAA,6DAAkF;AAClF,oCAAoC;AACpC,+DAAwE;AACxE,iEAA8D;AAC9D,+BAA8B;AAEvB,KAAK,UAAU,gBAAgB;IAClC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,yCAAmB,EAAE,CAAC;IAC1C,IAAI;QACA,MAAM,OAAO,CAAC,QAAQ,CAAC;YACnB,WAAW,EAAE,0BAAO;YACpB,aAAa,EAAE,CAAC;SACZ,CAAC,CAAC;KACb;YAAS;QACN,OAAO,CAAC,OAAO,EAAE,CAAC;KACrB;AACL,CAAC;AAXD,4CAWC;AAED,IAAI,wBAAsC,CAAC;AAC3C,SAAgB,0BAA0B;IACtC,IAAI,wBAAwB,KAAK,SAAS,EAAE;QACxC,wBAAwB,GAAG,gBAAgB,EAAE,CAAC;KACjD;IACD,OAAO,wBAAwB,CAAC;AACpC,CAAC;AALD,gEAKC;AAED,KAAK,CAAC,GAAG,EAAE;IACP,gCAAU,CAAC,OAAO,EAAE,CAAC;AACzB,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACjC,IAAI,OAA4B,CAAC;IACjC,MAAM,CAAC,KAAK,UAAU,kBAAkB;QACpC,IAAI,CAAC,OAAO,CAAC,KAAM,CAAC,CAAC;QACrB,MAAM,0BAA0B,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,GAAG,EAAE;QACZ,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,EAAE,CAAC;QACnB,OAAO,GAAG,IAAI,yCAAmB,EAAE,CAAC;QACpC,OAAO,CAAC,YAAY,CAAC,0BAAO,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,OAAO,CAAC,YAAY,CAAC,0BAAO,CAAC,CAAC;QAC9B,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC7C,OAAO,CAAC,cAAc,CAAC,GAAG,0BAAO,kBAAkB,EAAE;;;;aAIpD,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,QAAQ,CAAC;gBACnB,UAAU,EAAE,SAAS;gBACrB,UAAU,EAAE,0BAAO;gBACnB,eAAe,EAAE,0BAAO;gBACxB,YAAY,EAAE,SAAS;gBACvB,aAAa,EAAE,CAAC;aACnB,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;YACnD,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,IAAA,yCAAsB,EAAC,WAAW,EAAE;gBACtC,uCAAkB,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,OAAO;aAC3D,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { MessagePort } from 'worker_threads';
|
|
3
|
+
/**
|
|
4
|
+
* Runner logic for Running a Project in a worker thread.
|
|
5
|
+
*/
|
|
6
|
+
export declare class WorkerThreadProjectRunner {
|
|
7
|
+
private requestInterceptors;
|
|
8
|
+
private project;
|
|
9
|
+
private messageHandler;
|
|
10
|
+
run(parentPort: MessagePort): void;
|
|
11
|
+
/**
|
|
12
|
+
* Fired anytime we get an `activate` request from the client. This allows us to clean up the previous project and make a new one
|
|
13
|
+
*/
|
|
14
|
+
private onActivate;
|
|
15
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WorkerThreadProjectRunner = void 0;
|
|
4
|
+
const logging_1 = require("../../logging");
|
|
5
|
+
const Project_1 = require("../Project");
|
|
6
|
+
const MessageHandler_1 = require("./MessageHandler");
|
|
7
|
+
/**
|
|
8
|
+
* Runner logic for Running a Project in a worker thread.
|
|
9
|
+
*/
|
|
10
|
+
class WorkerThreadProjectRunner {
|
|
11
|
+
constructor() {
|
|
12
|
+
//collection of interceptors that will be called when events are fired
|
|
13
|
+
this.requestInterceptors = {};
|
|
14
|
+
}
|
|
15
|
+
run(parentPort) {
|
|
16
|
+
//ensure the lgoger is configured for LSP mode
|
|
17
|
+
(0, logging_1.setLspLoggerProps)();
|
|
18
|
+
this.messageHandler = new MessageHandler_1.MessageHandler({
|
|
19
|
+
name: 'WorkerThread',
|
|
20
|
+
port: parentPort,
|
|
21
|
+
onRequest: async (request) => {
|
|
22
|
+
var _a, _b, _c;
|
|
23
|
+
try {
|
|
24
|
+
//if we have a request interceptor registered for this event, call it
|
|
25
|
+
(_b = (_a = this.requestInterceptors)[request.name]) === null || _b === void 0 ? void 0 : _b.call(_a, request.data);
|
|
26
|
+
//only the LspProject interface method names will be passed as request names, so just call those functions on the Project class directly
|
|
27
|
+
let responseData = await this.project[request.name](...(_c = request.data) !== null && _c !== void 0 ? _c : []);
|
|
28
|
+
this.messageHandler.sendResponse(request, { data: responseData });
|
|
29
|
+
//we encountered a runtime crash. Pass that error along as the response to this request
|
|
30
|
+
}
|
|
31
|
+
catch (e) {
|
|
32
|
+
const error = e;
|
|
33
|
+
this.messageHandler.sendResponse(request, { error: error });
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
onUpdate: (update) => {
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
this.requestInterceptors.activate = this.onActivate.bind(this);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Fired anytime we get an `activate` request from the client. This allows us to clean up the previous project and make a new one
|
|
43
|
+
*/
|
|
44
|
+
onActivate() {
|
|
45
|
+
var _a;
|
|
46
|
+
//clean up any existing project
|
|
47
|
+
(_a = this.project) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
48
|
+
//make a new instance of the project (which is the same way we run it in the main thread).
|
|
49
|
+
this.project = new Project_1.Project();
|
|
50
|
+
this.project.on('all', (eventName, data) => {
|
|
51
|
+
this.messageHandler.sendUpdate(eventName, {
|
|
52
|
+
data: data
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.WorkerThreadProjectRunner = WorkerThreadProjectRunner;
|
|
58
|
+
//# sourceMappingURL=WorkerThreadProjectRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkerThreadProjectRunner.js","sourceRoot":"","sources":["../../../src/lsp/worker/WorkerThreadProjectRunner.ts"],"names":[],"mappings":";;;AAAA,2CAAkD;AAElD,wCAAqC;AAErC,qDAAkD;AAGlD;;GAEG;AACH,MAAa,yBAAyB;IAAtC;QACI,sEAAsE;QAC9D,wBAAmB,GAAG,EAAyD,CAAC;IAoD5F,CAAC;IA9CU,GAAG,CAAC,UAAuB;QAC9B,8CAA8C;QAC9C,IAAA,2BAAiB,GAAE,CAAC;QAEpB,IAAI,CAAC,cAAc,GAAG,IAAI,+BAAc,CAAC;YACrC,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,KAAK,EAAE,OAAsB,EAAE,EAAE;;gBACxC,IAAI;oBACA,qEAAqE;oBACrE,MAAA,MAAA,IAAI,CAAC,mBAAmB,EAAC,OAAO,CAAC,IAAI,CAAC,mDAAG,OAAO,CAAC,IAAI,CAAC,CAAC;oBAEvD,wIAAwI;oBACxI,IAAI,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,MAAA,OAAO,CAAC,IAAI,mCAAI,EAAE,CAAC,CAAC;oBAC3E,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;oBAElE,uFAAuF;iBAC1F;gBAAC,OAAO,CAAC,EAAE;oBACR,MAAM,KAAK,GAAU,CAAQ,CAAC;oBAC9B,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;iBAC/D;YACL,CAAC;YACD,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YAErB,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACK,UAAU;;QACd,+BAA+B;QAC/B,MAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,EAAE,CAAC;QAExB,0FAA0F;QAC1F,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;QAE7B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,SAAiB,EAAE,IAAS,EAAE,EAAE;YACpD,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE;gBACtC,IAAI,EAAE,IAAI;aACb,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAtDD,8DAsDC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* This script is the entry point for worker threads that run LSP Projects.
|
|
5
|
+
* It sets up the WorkerThreadProjectRunner to handle messages from the main thread.
|
|
6
|
+
*/
|
|
7
|
+
const worker_threads_1 = require("worker_threads");
|
|
8
|
+
const WorkerThreadProjectRunner_1 = require("./WorkerThreadProjectRunner");
|
|
9
|
+
const runner = new WorkerThreadProjectRunner_1.WorkerThreadProjectRunner();
|
|
10
|
+
if (!worker_threads_1.parentPort) {
|
|
11
|
+
throw new Error('This script must be run as a worker thread');
|
|
12
|
+
}
|
|
13
|
+
runner.run(worker_threads_1.parentPort);
|
|
14
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/lsp/worker/run.ts"],"names":[],"mappings":";;AAAA;;;GAGG;AACH,mDAA4C;AAC5C,2EAAwE;AAExE,MAAM,MAAM,GAAG,IAAI,qDAAyB,EAAE,CAAC;AAC/C,IAAI,CAAC,2BAAU,EAAE;IACb,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;CACjE;AACD,MAAM,CAAC,GAAG,CAAC,2BAAU,CAAC,CAAC"}
|