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
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const
|
|
3
|
+
const chai_config_spec_1 = require("../chai-config.spec");
|
|
4
|
+
const path = require("path");
|
|
4
5
|
const sinonImport = require("sinon");
|
|
5
6
|
const vscode_languageserver_1 = require("vscode-languageserver");
|
|
6
7
|
const fsExtra = require("fs-extra");
|
|
@@ -9,21 +10,25 @@ const Program_1 = require("../Program");
|
|
|
9
10
|
const XmlFile_1 = require("./XmlFile");
|
|
10
11
|
const util_1 = require("../util");
|
|
11
12
|
const testHelpers_spec_1 = require("../testHelpers.spec");
|
|
13
|
+
const ProgramBuilder_1 = require("../ProgramBuilder");
|
|
14
|
+
const logging_1 = require("../logging");
|
|
15
|
+
const reflection_1 = require("../astUtils/reflection");
|
|
16
|
+
const testHelpers_spec_2 = require("../testHelpers.spec");
|
|
12
17
|
describe('XmlFile', () => {
|
|
13
|
-
const tempDir = util_1.standardizePath `${process.cwd()}/.tmp`;
|
|
14
|
-
const rootDir = util_1.standardizePath `${tempDir}/rootDir`;
|
|
15
|
-
const stagingDir = util_1.standardizePath `${tempDir}/stagingDir`;
|
|
16
18
|
let program;
|
|
17
19
|
let sinon = sinonImport.createSandbox();
|
|
18
20
|
let file;
|
|
19
|
-
let testTranspile = testHelpers_spec_1.getTestTranspile(() => [program, rootDir]);
|
|
21
|
+
let testTranspile = (0, testHelpers_spec_1.getTestTranspile)(() => [program, testHelpers_spec_2.rootDir]);
|
|
20
22
|
beforeEach(() => {
|
|
21
|
-
fsExtra.
|
|
22
|
-
fsExtra.
|
|
23
|
-
fsExtra.ensureDirSync(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
fsExtra.emptyDirSync(testHelpers_spec_2.tempDir);
|
|
24
|
+
fsExtra.ensureDirSync(testHelpers_spec_2.rootDir);
|
|
25
|
+
fsExtra.ensureDirSync(testHelpers_spec_2.outDir);
|
|
26
|
+
program = new Program_1.Program({ rootDir: testHelpers_spec_2.rootDir, outDir: testHelpers_spec_2.outDir });
|
|
27
|
+
file = new XmlFile_1.XmlFile({
|
|
28
|
+
srcPath: `${testHelpers_spec_2.rootDir}/components/MainComponent.xml`,
|
|
29
|
+
destPath: 'components/MainComponent.xml',
|
|
30
|
+
program: program
|
|
31
|
+
});
|
|
27
32
|
});
|
|
28
33
|
afterEach(() => {
|
|
29
34
|
sinon.restore();
|
|
@@ -34,34 +39,37 @@ describe('XmlFile', () => {
|
|
|
34
39
|
const expected = 'OtherName';
|
|
35
40
|
program.plugins.add({
|
|
36
41
|
name: 'allows modifying the parsed XML model',
|
|
37
|
-
|
|
38
|
-
|
|
42
|
+
afterProvideFile: (event) => {
|
|
43
|
+
var _a, _b, _c;
|
|
44
|
+
const file = event.files[0];
|
|
45
|
+
if ((0, reflection_1.isXmlFile)(file) && ((_c = (_b = (_a = file.parser.ast.rootElement) === null || _a === void 0 ? void 0 : _a.attributes) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.value)) {
|
|
46
|
+
file.parser.ast.rootElement.attributes[0].value = expected;
|
|
47
|
+
}
|
|
39
48
|
}
|
|
40
49
|
});
|
|
41
|
-
file = program.setFile('components/ChildScene.xml', testHelpers_spec_1.trim `
|
|
50
|
+
file = program.setFile('components/ChildScene.xml', (0, testHelpers_spec_1.trim) `
|
|
42
51
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
43
52
|
<component name="ChildScene" extends="Scene">
|
|
44
|
-
<script type="text/brightscript" uri="ChildScene1.brs" /> <script type="text/brightscript" uri="ChildScene2.brs" /> <script type="text/brightscript" uri="ChildScene3.brs" />
|
|
45
53
|
</component>
|
|
46
54
|
`);
|
|
47
|
-
|
|
55
|
+
(0, chai_config_spec_1.expect)(file.componentName.text).to.equal(expected);
|
|
48
56
|
});
|
|
49
57
|
it('only removes specified attribute when calling setAttribute', () => {
|
|
50
|
-
file = new XmlFile_1.XmlFile('abs', 'rel', program);
|
|
58
|
+
const file = new XmlFile_1.XmlFile({ srcPath: 'abs', destPath: 'rel', program: program });
|
|
51
59
|
program.plugins.add({
|
|
52
60
|
name: 'allows modifying the parsed XML model',
|
|
53
|
-
|
|
54
|
-
let child = file.parser.ast.
|
|
55
|
-
|
|
61
|
+
afterProvideFile: () => {
|
|
62
|
+
let child = file.parser.ast.componentElement.childrenElement.elements[0];
|
|
63
|
+
(0, chai_config_spec_1.expect)(child.attributes).to.have.lengthOf(4);
|
|
56
64
|
child.setAttributeValue('text', undefined);
|
|
57
|
-
|
|
58
|
-
|
|
65
|
+
(0, chai_config_spec_1.expect)(child.getAttribute('id').value).to.equal('one');
|
|
66
|
+
(0, chai_config_spec_1.expect)(child.attributes).to.have.lengthOf(3);
|
|
59
67
|
child.setAttributeValue('text3', undefined);
|
|
60
|
-
|
|
61
|
-
|
|
68
|
+
(0, chai_config_spec_1.expect)(child.getAttribute('id').value).to.equal('one');
|
|
69
|
+
(0, chai_config_spec_1.expect)(child.attributes).to.have.lengthOf(2);
|
|
62
70
|
}
|
|
63
71
|
});
|
|
64
|
-
file.parse(testHelpers_spec_1.trim `
|
|
72
|
+
file.parse((0, testHelpers_spec_1.trim) `
|
|
65
73
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
66
74
|
<component name="ChildScene" extends="Scene">
|
|
67
75
|
<script type="text/brightscript" uri="ChildScene1.brs" /> <script type="text/brightscript" uri="ChildScene2.brs" /> <script type="text/brightscript" uri="ChildScene3.brs" />
|
|
@@ -76,17 +84,17 @@ describe('XmlFile', () => {
|
|
|
76
84
|
`);
|
|
77
85
|
});
|
|
78
86
|
it('supports importing BrighterScript files', () => {
|
|
79
|
-
file = program.setFile(
|
|
87
|
+
file = program.setFile('components/custom.xml', (0, testHelpers_spec_1.trim) `
|
|
80
88
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
81
89
|
<component name="ChildScene" extends="Scene">
|
|
82
90
|
<script type="text/brightscript" uri="ChildScene.bs" />
|
|
83
91
|
</component>
|
|
84
92
|
`);
|
|
85
|
-
|
|
93
|
+
(0, chai_config_spec_1.expect)(file.scriptTagImports.map(x => x.destPath)[0]).to.equal((0, util_1.standardizePath) `components/ChildScene.bs`);
|
|
86
94
|
});
|
|
87
95
|
it('does not include commented-out script imports', () => {
|
|
88
96
|
var _a, _b;
|
|
89
|
-
file = program.setFile(
|
|
97
|
+
file = program.setFile('components/custom.xml', (0, testHelpers_spec_1.trim) `
|
|
90
98
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
91
99
|
<component name="ChildScene" extends="Scene">
|
|
92
100
|
<script type="text/brightscript" uri="ChildScene.brs" />
|
|
@@ -95,58 +103,56 @@ describe('XmlFile', () => {
|
|
|
95
103
|
-->
|
|
96
104
|
</component>
|
|
97
105
|
`);
|
|
98
|
-
|
|
106
|
+
(0, chai_config_spec_1.expect)((_b = (_a = file.scriptTagImports) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.destPath).to.eql((0, util_1.standardizePath) `components/ChildScene.brs`);
|
|
99
107
|
});
|
|
100
108
|
it('finds scripts when more than one per line', () => {
|
|
101
|
-
file = new XmlFile_1.XmlFile('abs', 'rel', program);
|
|
102
|
-
file.parse(testHelpers_spec_1.trim `
|
|
109
|
+
file = new XmlFile_1.XmlFile({ srcPath: 'abs', destPath: 'rel', program: program });
|
|
110
|
+
file.parse((0, testHelpers_spec_1.trim) `
|
|
103
111
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
104
112
|
<component name="ChildScene" extends="Scene">
|
|
105
113
|
<script type="text/brightscript" uri="ChildScene1.brs" /> <script type="text/brightscript" uri="ChildScene2.brs" /> <script type="text/brightscript" uri="ChildScene3.brs" />
|
|
106
114
|
</component>
|
|
107
115
|
`);
|
|
108
|
-
|
|
109
|
-
|
|
116
|
+
(0, chai_config_spec_1.expect)(file.scriptTagImports).to.be.lengthOf(3);
|
|
117
|
+
(0, chai_config_spec_1.expect)(file.scriptTagImports[0]).to.deep.include({
|
|
110
118
|
text: 'ChildScene1.brs',
|
|
111
119
|
filePathRange: vscode_languageserver_1.Range.create(2, 42, 2, 57)
|
|
112
120
|
});
|
|
113
|
-
|
|
121
|
+
(0, chai_config_spec_1.expect)(file.scriptTagImports[1]).to.deep.include({
|
|
114
122
|
text: 'ChildScene2.brs',
|
|
115
123
|
filePathRange: vscode_languageserver_1.Range.create(2, 100, 2, 115)
|
|
116
124
|
});
|
|
117
|
-
|
|
125
|
+
(0, chai_config_spec_1.expect)(file.scriptTagImports[2]).to.deep.include({
|
|
118
126
|
text: 'ChildScene3.brs',
|
|
119
127
|
filePathRange: vscode_languageserver_1.Range.create(2, 158, 2, 173)
|
|
120
128
|
});
|
|
121
129
|
});
|
|
122
130
|
it('finds component names', () => {
|
|
123
|
-
file = new XmlFile_1.XmlFile('abs', 'rel', program);
|
|
124
|
-
file.parse(testHelpers_spec_1.trim `
|
|
131
|
+
file = new XmlFile_1.XmlFile({ srcPath: 'abs', destPath: 'rel', program: program });
|
|
132
|
+
file.parse((0, testHelpers_spec_1.trim) `
|
|
125
133
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
126
134
|
<component name="ChildScene" extends="ParentScene">
|
|
127
135
|
<script type="text/brightscript" uri="ChildScene.brs" />
|
|
128
136
|
</component>
|
|
129
137
|
`);
|
|
130
|
-
|
|
131
|
-
|
|
138
|
+
(0, chai_config_spec_1.expect)(file.parentComponentName.text).to.equal('ParentScene');
|
|
139
|
+
(0, chai_config_spec_1.expect)(file.componentName.text).to.equal('ChildScene');
|
|
132
140
|
});
|
|
133
141
|
it('Adds error when whitespace appears before the prolog', () => {
|
|
134
|
-
file = new XmlFile_1.XmlFile('abs', 'rel', program);
|
|
142
|
+
file = new XmlFile_1.XmlFile({ srcPath: 'abs', destPath: 'rel', program: program });
|
|
135
143
|
file.parse(/* not trimmed */ `
|
|
136
144
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
137
145
|
<component name="ChildScene" extends="ParentScene">
|
|
138
146
|
<script type="text/brightscript" uri="ChildScene.brs" />
|
|
139
147
|
</component>`);
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
range: vscode_languageserver_1.Range.create(
|
|
144
|
-
});
|
|
145
|
-
chai_1.expect(file.diagnostics[1]).to.deep.include(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlGenericParseError('Syntax error: whitespace found before the XML prolog')), { range: vscode_languageserver_1.Range.create(0, 0, 1, 16) }));
|
|
148
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [{
|
|
149
|
+
code: DiagnosticMessages_1.DiagnosticMessages.syntaxError('').code,
|
|
150
|
+
location: { range: vscode_languageserver_1.Range.create(1, 16, 1, 22) }
|
|
151
|
+
}, Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.syntaxError('Syntax error: whitespace found before the XML prolog')), { location: { range: vscode_languageserver_1.Range.create(0, 0, 1, 16) } })]);
|
|
146
152
|
});
|
|
147
153
|
it('Adds error when an unknown tag is found in xml', () => {
|
|
148
|
-
file = new XmlFile_1.XmlFile('abs', 'rel', program);
|
|
149
|
-
file.parse(testHelpers_spec_1.trim `
|
|
154
|
+
file = new XmlFile_1.XmlFile({ srcPath: 'abs', destPath: 'rel', program: program });
|
|
155
|
+
file.parse((0, testHelpers_spec_1.trim) `
|
|
150
156
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
151
157
|
<component name="ChildScene" extends="ParentScene">
|
|
152
158
|
<interface>
|
|
@@ -155,223 +161,174 @@ describe('XmlFile', () => {
|
|
|
155
161
|
<unexpectedToo />
|
|
156
162
|
</component>
|
|
157
163
|
`);
|
|
158
|
-
|
|
159
|
-
chai_1.expect(file.diagnostics[0]).to.deep.include(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlUnexpectedTag('unexpected')), { range: vscode_languageserver_1.Range.create(3, 9, 3, 19) }));
|
|
160
|
-
chai_1.expect(file.diagnostics[1]).to.deep.include(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlUnexpectedTag('unexpectedToo')), { range: vscode_languageserver_1.Range.create(5, 5, 5, 18) }));
|
|
164
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlUnexpectedTag('unexpected')), { location: { range: vscode_languageserver_1.Range.create(3, 9, 3, 19) } }), Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlUnexpectedTag('unexpectedToo')), { location: { range: vscode_languageserver_1.Range.create(5, 5, 5, 18) } })]);
|
|
161
165
|
});
|
|
162
166
|
it('Adds error when no component is declared in xml', () => {
|
|
163
|
-
|
|
167
|
+
program.setFile('components/comp.xml', '<script type="text/brightscript" uri="ChildScene.brs" />');
|
|
164
168
|
program.validate();
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
169
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [
|
|
170
|
+
Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlUnexpectedTag('script')), { location: { range: vscode_languageserver_1.Range.create(0, 1, 0, 7) } }),
|
|
171
|
+
DiagnosticMessages_1.DiagnosticMessages.xmlComponentMissingComponentDeclaration()
|
|
172
|
+
]);
|
|
168
173
|
});
|
|
169
174
|
it('adds error when component does not declare a name', () => {
|
|
170
|
-
file = program.setFile('components/
|
|
175
|
+
file = program.setFile('components/comp.xml', (0, testHelpers_spec_1.trim) `
|
|
171
176
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
172
177
|
<component extends="ParentScene">
|
|
173
178
|
<script type="text/brightscript" uri="ChildScene.brs" />
|
|
174
179
|
</component>
|
|
175
180
|
`);
|
|
176
181
|
program.validate();
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
});
|
|
182
|
+
(0, testHelpers_spec_1.expectDiagnosticsIncludes)(program, [{
|
|
183
|
+
message: DiagnosticMessages_1.DiagnosticMessages.xmlComponentMissingNameAttribute().message,
|
|
184
|
+
location: { range: vscode_languageserver_1.Range.create(1, 1, 1, 10) }
|
|
185
|
+
}]);
|
|
182
186
|
});
|
|
183
187
|
it('catches xml parse errors', () => {
|
|
184
|
-
file = program.setFile('components/
|
|
188
|
+
file = program.setFile('components/comp.xml', (0, testHelpers_spec_1.trim) `
|
|
185
189
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
186
190
|
<component 1extends="ParentScene">
|
|
187
191
|
</component>
|
|
188
192
|
`);
|
|
189
193
|
program.validate();
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
194
|
+
const diagnostics = program.getDiagnostics();
|
|
195
|
+
(0, chai_config_spec_1.expect)(diagnostics).to.be.lengthOf(2);
|
|
196
|
+
(0, chai_config_spec_1.expect)(diagnostics[0].code).to.equal(DiagnosticMessages_1.DiagnosticMessages.syntaxError('').code); //unexpected character '1'
|
|
197
|
+
(0, chai_config_spec_1.expect)(diagnostics[1]).to.deep.include({
|
|
193
198
|
code: DiagnosticMessages_1.DiagnosticMessages.xmlComponentMissingNameAttribute().code,
|
|
194
|
-
|
|
199
|
+
location: util_1.default.createLocationFromFileRange(file, vscode_languageserver_1.Range.create(1, 1, 1, 10))
|
|
195
200
|
});
|
|
196
201
|
});
|
|
197
202
|
it('finds script imports', () => {
|
|
198
|
-
file = new XmlFile_1.XmlFile('abspath/components/cmp1.xml', 'components/cmp1.xml', program);
|
|
199
|
-
file.parse(testHelpers_spec_1.trim `
|
|
203
|
+
file = new XmlFile_1.XmlFile({ srcPath: 'abspath/components/cmp1.xml', destPath: 'components/cmp1.xml', program: program });
|
|
204
|
+
file.parse((0, testHelpers_spec_1.trim) `
|
|
200
205
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
201
206
|
<component name="Cmp1" extends="Scene">
|
|
202
207
|
<script type="text/brightscript" uri="pkg:/components/cmp1.brs" />
|
|
203
208
|
</component>
|
|
204
209
|
`);
|
|
205
|
-
|
|
206
|
-
|
|
210
|
+
(0, chai_config_spec_1.expect)(file.scriptTagImports.length).to.equal(1);
|
|
211
|
+
(0, chai_config_spec_1.expect)(file.scriptTagImports[0]).to.deep.include({
|
|
207
212
|
sourceFile: file,
|
|
208
213
|
text: 'pkg:/components/cmp1.brs',
|
|
209
|
-
|
|
214
|
+
destPath: `components${path.sep}cmp1.brs`,
|
|
210
215
|
filePathRange: vscode_languageserver_1.Range.create(2, 42, 2, 66)
|
|
211
216
|
});
|
|
212
217
|
});
|
|
213
218
|
it('throws an error if the file has already been parsed', () => {
|
|
214
|
-
file = new XmlFile_1.XmlFile('abspath', 'relpath', program);
|
|
219
|
+
file = new XmlFile_1.XmlFile({ srcPath: 'abspath', destPath: 'relpath', program: program });
|
|
215
220
|
file.parse('a comment');
|
|
216
221
|
try {
|
|
217
222
|
file.parse(`'a new comment`);
|
|
218
|
-
|
|
223
|
+
chai_config_spec_1.assert.fail(null, null, 'Should have thrown an exception, but did not');
|
|
219
224
|
}
|
|
220
225
|
catch (e) {
|
|
221
226
|
//test passes
|
|
222
227
|
}
|
|
223
228
|
});
|
|
224
229
|
it('resolves relative paths', () => {
|
|
225
|
-
file = program.setFile(
|
|
226
|
-
src: `${rootDir}/components/comp1.xml`,
|
|
227
|
-
dest: 'components/comp1.xml'
|
|
228
|
-
}, testHelpers_spec_1.trim `
|
|
230
|
+
file = program.setFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
|
|
229
231
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
230
232
|
<component name="Cmp1" extends="Scene">
|
|
231
233
|
<script type="text/brightscript" uri="cmp1.brs" />
|
|
232
234
|
</component>
|
|
233
235
|
`);
|
|
234
|
-
|
|
235
|
-
|
|
236
|
+
(0, chai_config_spec_1.expect)(file.scriptTagImports.length).to.equal(1);
|
|
237
|
+
(0, chai_config_spec_1.expect)(file.scriptTagImports[0]).to.deep.include({
|
|
236
238
|
text: 'cmp1.brs',
|
|
237
|
-
|
|
239
|
+
destPath: `components${path.sep}cmp1.brs`
|
|
238
240
|
});
|
|
239
241
|
});
|
|
240
242
|
it('finds correct position for empty uri in script tag', () => {
|
|
241
243
|
var _a;
|
|
242
|
-
file = program.setFile(
|
|
243
|
-
src: `${rootDir}/components/comp1.xml`,
|
|
244
|
-
dest: 'components/comp1.xml'
|
|
245
|
-
}, testHelpers_spec_1.trim `
|
|
244
|
+
file = program.setFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
|
|
246
245
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
247
246
|
<component name="Cmp1" extends="Scene">
|
|
248
247
|
<script type="text/brightscript" uri="" />
|
|
249
248
|
</component>
|
|
250
249
|
`);
|
|
251
|
-
|
|
252
|
-
|
|
250
|
+
(0, chai_config_spec_1.expect)(file.scriptTagImports.length).to.equal(1);
|
|
251
|
+
(0, chai_config_spec_1.expect)((_a = file.scriptTagImports[0]) === null || _a === void 0 ? void 0 : _a.filePathRange).to.eql(vscode_languageserver_1.Range.create(2, 42, 2, 42));
|
|
253
252
|
});
|
|
254
253
|
});
|
|
255
254
|
describe('doesReferenceFile', () => {
|
|
256
255
|
it('compares case insensitive', () => {
|
|
257
|
-
let xmlFile = program.setFile(
|
|
258
|
-
src: `${rootDir}/components/comp1.xml`,
|
|
259
|
-
dest: 'components/comp1.xml'
|
|
260
|
-
}, testHelpers_spec_1.trim `
|
|
256
|
+
let xmlFile = program.setFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
|
|
261
257
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
262
258
|
<component name="Cmp1" extends="Scene">
|
|
263
259
|
<script type="text/brightscript" uri="HeroGrid.brs" />
|
|
264
260
|
</component>
|
|
265
261
|
`);
|
|
266
|
-
let brsFile = program.setFile(
|
|
267
|
-
|
|
268
|
-
dest: `components/HEROGRID.brs`
|
|
269
|
-
}, ``);
|
|
270
|
-
chai_1.expect(xmlFile.doesReferenceFile(brsFile)).to.be.true;
|
|
262
|
+
let brsFile = program.setFile(`components/HEROGRID.brs`, ``);
|
|
263
|
+
(0, chai_config_spec_1.expect)(xmlFile.doesReferenceFile(brsFile)).to.be.true;
|
|
271
264
|
});
|
|
272
265
|
});
|
|
273
266
|
describe('autoImportComponentScript', () => {
|
|
274
267
|
it('is not enabled by default', () => {
|
|
275
|
-
program.setFile(
|
|
268
|
+
program.setFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
|
|
276
269
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
277
270
|
<component name="ParentScene" extends="GrandparentScene">
|
|
278
271
|
<script type="text/brightscript" uri="./lib.brs" />
|
|
279
272
|
</component>
|
|
280
273
|
`);
|
|
281
|
-
program.setFile(
|
|
274
|
+
program.setFile('components/lib.brs', `
|
|
282
275
|
function libFunc()
|
|
283
276
|
end function
|
|
284
277
|
`);
|
|
285
|
-
program.setFile(
|
|
278
|
+
program.setFile('components/comp1.bs', `
|
|
286
279
|
function init()
|
|
287
280
|
libFunc()
|
|
288
281
|
end function
|
|
289
282
|
`);
|
|
290
283
|
program.validate();
|
|
291
|
-
|
|
284
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [
|
|
285
|
+
DiagnosticMessages_1.DiagnosticMessages.fileNotReferencedByAnyOtherFile()
|
|
286
|
+
]);
|
|
292
287
|
});
|
|
293
288
|
it('is not enabled by default', () => {
|
|
294
289
|
program = new Program_1.Program({
|
|
295
|
-
rootDir: rootDir,
|
|
290
|
+
rootDir: testHelpers_spec_2.rootDir,
|
|
296
291
|
autoImportComponentScript: true
|
|
297
292
|
});
|
|
298
|
-
program.setFile(
|
|
293
|
+
program.setFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
|
|
299
294
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
300
295
|
<component name="ParentScene" extends="GrandparentScene">
|
|
301
296
|
<script type="text/brightscript" uri="./lib.brs" />
|
|
302
297
|
</component>
|
|
303
298
|
`);
|
|
304
|
-
program.setFile(
|
|
299
|
+
program.setFile('components/lib.brs', `
|
|
305
300
|
function libFunc()
|
|
306
301
|
end function
|
|
307
302
|
`);
|
|
308
|
-
program.setFile(
|
|
303
|
+
program.setFile('components/comp1.bs', `
|
|
309
304
|
function init()
|
|
310
305
|
libFunc()
|
|
311
306
|
end function
|
|
312
307
|
`);
|
|
313
308
|
program.validate();
|
|
314
309
|
//there should be no errors
|
|
315
|
-
|
|
316
|
-
});
|
|
317
|
-
});
|
|
318
|
-
describe('getCompletions', () => {
|
|
319
|
-
it('formats completion paths with proper slashes', () => {
|
|
320
|
-
program.setFile('pkg:/components/component1/component1.brs', '');
|
|
321
|
-
const xmlFile = program.setFile('components/component1/component1.xml', testHelpers_spec_1.trim `
|
|
322
|
-
<?xml version="1.0" encoding="utf-8" ?>
|
|
323
|
-
<component name="Component1" extends="Group">
|
|
324
|
-
</component
|
|
325
|
-
`);
|
|
326
|
-
xmlFile.parser.references.scriptTagImports.push({
|
|
327
|
-
pkgPath: 'pkg:/components/component1/component1.brs',
|
|
328
|
-
text: 'component1.brs',
|
|
329
|
-
filePathRange: vscode_languageserver_1.Range.create(1, 1, 1, 1)
|
|
330
|
-
});
|
|
331
|
-
chai_1.expect(xmlFile.getCompletions(vscode_languageserver_1.Position.create(1, 1))[0]).to.include({
|
|
332
|
-
label: 'component1.brs',
|
|
333
|
-
kind: vscode_languageserver_1.CompletionItemKind.File
|
|
334
|
-
});
|
|
335
|
-
chai_1.expect(xmlFile.getCompletions(vscode_languageserver_1.Position.create(1, 1))[1]).to.include({
|
|
336
|
-
label: 'pkg:/components/component1/component1.brs',
|
|
337
|
-
kind: vscode_languageserver_1.CompletionItemKind.File
|
|
338
|
-
});
|
|
339
|
-
});
|
|
340
|
-
it('returns empty set when out of range', () => {
|
|
341
|
-
program.setFile({ src: `${rootDir}/components/Component1.brs`, dest: 'components/component1.brs' }, ``);
|
|
342
|
-
chai_1.expect(file.getCompletions(vscode_languageserver_1.Position.create(99, 99))).to.be.empty;
|
|
343
|
-
});
|
|
344
|
-
//TODO - refine this test once cdata scripts are supported
|
|
345
|
-
it('prevents scope completions entirely', () => {
|
|
346
|
-
program.setFile({ src: `${rootDir}/components/Component1.brs`, dest: 'components/component1.brs' }, ``);
|
|
347
|
-
let xmlFile = program.setFile({ src: `${rootDir}/components/Component1.xml`, dest: 'components/component1.xml' }, testHelpers_spec_1.trim `
|
|
348
|
-
<?xml version="1.0" encoding="utf-8" ?>
|
|
349
|
-
<component name="ParentScene" extends="GrandparentScene">
|
|
350
|
-
<script type="text/brightscript" uri="./Component1.brs" />
|
|
351
|
-
</component>
|
|
352
|
-
`);
|
|
353
|
-
chai_1.expect(program.getCompletions(xmlFile.srcPath, vscode_languageserver_1.Position.create(1, 1))).to.be.empty;
|
|
310
|
+
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
354
311
|
});
|
|
355
312
|
});
|
|
356
313
|
describe('getAllDependencies', () => {
|
|
357
314
|
it('returns own imports', () => {
|
|
358
|
-
file = program.setFile('components/comp1.xml', testHelpers_spec_1.trim `
|
|
315
|
+
file = program.setFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
|
|
359
316
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
360
317
|
<component name="ChildScene" extends="BaseScene">
|
|
361
318
|
<script type="text/brightscript" uri="pkg:/source/lib.brs" />
|
|
362
319
|
</component>
|
|
363
320
|
`);
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
321
|
+
(0, chai_config_spec_1.expect)(file.getOwnDependencies().sort()).to.eql([
|
|
322
|
+
(0, util_1.standardizePath) `source/lib.brs`,
|
|
323
|
+
(0, util_1.standardizePath) `source/lib.d.bs`
|
|
367
324
|
]);
|
|
368
325
|
});
|
|
369
326
|
});
|
|
370
327
|
it('invalidates dependent scopes on change', () => {
|
|
371
328
|
let xmlFile = program.setFile({
|
|
372
|
-
src: `${rootDir}/components/comp1.xml`,
|
|
329
|
+
src: `${testHelpers_spec_2.rootDir}/components/comp1.xml`,
|
|
373
330
|
dest: `components/comp1.xml`
|
|
374
|
-
}, testHelpers_spec_1.trim `
|
|
331
|
+
}, (0, testHelpers_spec_1.trim) `
|
|
375
332
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
376
333
|
<component name="ChildScene" extends="BaseScene">
|
|
377
334
|
<script type="text/brightscript" uri="pkg:/source/lib.bs" />
|
|
@@ -380,204 +337,210 @@ describe('XmlFile', () => {
|
|
|
380
337
|
program.validate();
|
|
381
338
|
let scope = program.getScopesForFile(xmlFile)[0];
|
|
382
339
|
//scope should be validated
|
|
383
|
-
|
|
340
|
+
(0, chai_config_spec_1.expect)(scope.isValidated);
|
|
384
341
|
//add lib1
|
|
385
|
-
program.setFile(
|
|
386
|
-
src: `${rootDir}/source/lib.bs`,
|
|
387
|
-
dest: `source/lib.bs`
|
|
388
|
-
}, ``);
|
|
342
|
+
program.setFile(`source/lib.bs`, ``);
|
|
389
343
|
//adding a dependent file should have invalidated the scope
|
|
390
|
-
|
|
344
|
+
(0, chai_config_spec_1.expect)(scope.isValidated).to.be.false;
|
|
391
345
|
program.validate();
|
|
392
|
-
|
|
346
|
+
(0, chai_config_spec_1.expect)(scope.isValidated).to.be.true;
|
|
393
347
|
//update lib1 to include an import
|
|
394
|
-
program.setFile(
|
|
395
|
-
src: `${rootDir}/source/lib.bs`,
|
|
396
|
-
dest: `source/lib.bs`
|
|
397
|
-
}, `
|
|
348
|
+
program.setFile(`source/lib.bs`, `
|
|
398
349
|
import "lib2.bs"
|
|
399
350
|
`);
|
|
400
351
|
//scope should have been invalidated again
|
|
401
|
-
|
|
352
|
+
(0, chai_config_spec_1.expect)(scope.isValidated).to.be.false;
|
|
402
353
|
program.validate();
|
|
403
|
-
|
|
354
|
+
(0, chai_config_spec_1.expect)(scope.isValidated).to.be.true;
|
|
404
355
|
//add the lib2 imported from lib
|
|
405
|
-
program.setFile(
|
|
406
|
-
src: `${rootDir}/source/lib2.bs`,
|
|
407
|
-
dest: `source/lib2.bs`
|
|
408
|
-
}, ``);
|
|
356
|
+
program.setFile(`source/lib2.bs`, ``);
|
|
409
357
|
//scope should have been invalidated again because of chained dependency
|
|
410
|
-
|
|
358
|
+
(0, chai_config_spec_1.expect)(scope.isValidated).to.be.false;
|
|
411
359
|
program.validate();
|
|
412
|
-
|
|
413
|
-
program.removeFile(`${rootDir}/source/lib.bs`);
|
|
414
|
-
|
|
360
|
+
(0, chai_config_spec_1.expect)(scope.isValidated).to.be.true;
|
|
361
|
+
program.removeFile(`${testHelpers_spec_2.rootDir}/source/lib.bs`);
|
|
362
|
+
(0, chai_config_spec_1.expect)(scope.isValidated).to.be.false;
|
|
415
363
|
});
|
|
416
364
|
it('does not invalidate unrelated scopes on change', () => {
|
|
417
365
|
let xmlFile1 = program.setFile({
|
|
418
|
-
src: `${rootDir}/components/comp1.xml`,
|
|
366
|
+
src: `${testHelpers_spec_2.rootDir}/components/comp1.xml`,
|
|
419
367
|
dest: `components/comp1.xml`
|
|
420
|
-
}, testHelpers_spec_1.trim `
|
|
368
|
+
}, (0, testHelpers_spec_1.trim) `
|
|
421
369
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
422
370
|
<component name="ChildScene1" extends="BaseScene">
|
|
423
371
|
<script type="text/brightscript" uri="pkg:/source/lib.brs" />
|
|
424
372
|
</component>
|
|
425
373
|
`);
|
|
426
374
|
let xmlFile2 = program.setFile({
|
|
427
|
-
src: `${rootDir}/components/comp2.xml`,
|
|
375
|
+
src: `${testHelpers_spec_2.rootDir}/components/comp2.xml`,
|
|
428
376
|
dest: `components/comp2.xml`
|
|
429
|
-
}, testHelpers_spec_1.trim `
|
|
377
|
+
}, (0, testHelpers_spec_1.trim) `
|
|
430
378
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
431
379
|
<component name="ChildScene2" extends="BaseScene">
|
|
432
380
|
</component>
|
|
433
381
|
`);
|
|
434
382
|
program.validate();
|
|
435
383
|
//scope should be validated
|
|
436
|
-
|
|
437
|
-
|
|
384
|
+
(0, chai_config_spec_1.expect)(program.getScopesForFile(xmlFile1)[0].isValidated).to.be.true;
|
|
385
|
+
(0, chai_config_spec_1.expect)(program.getScopesForFile(xmlFile2)[0].isValidated).to.be.true;
|
|
438
386
|
//add the lib file
|
|
439
|
-
program.setFile(
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
}, ``);
|
|
443
|
-
chai_1.expect(program.getScopesForFile(xmlFile1)[0].isValidated).to.be.false;
|
|
444
|
-
chai_1.expect(program.getScopesForFile(xmlFile2)[0].isValidated).to.be.true;
|
|
445
|
-
});
|
|
446
|
-
it('allows adding diagnostics', () => {
|
|
447
|
-
const expected = [{
|
|
448
|
-
message: 'message',
|
|
449
|
-
file: undefined,
|
|
450
|
-
range: undefined
|
|
451
|
-
}];
|
|
452
|
-
file.addDiagnostics(expected);
|
|
453
|
-
const actual = file.getDiagnostics();
|
|
454
|
-
chai_1.expect(actual).deep.equal(expected);
|
|
387
|
+
program.setFile(`source/lib.brs`, ``);
|
|
388
|
+
(0, chai_config_spec_1.expect)(program.getScopesForFile(xmlFile1)[0].isValidated).to.be.false;
|
|
389
|
+
(0, chai_config_spec_1.expect)(program.getScopesForFile(xmlFile2)[0].isValidated).to.be.true;
|
|
455
390
|
});
|
|
456
391
|
describe('component extends', () => {
|
|
457
392
|
it('works for single-line', () => {
|
|
393
|
+
var _a;
|
|
458
394
|
file = program.setFile({
|
|
459
|
-
src: `${rootDir}/components/comp1.xml`,
|
|
395
|
+
src: `${testHelpers_spec_2.rootDir}/components/comp1.xml`,
|
|
460
396
|
dest: `components/comp1.xml`
|
|
461
|
-
}, testHelpers_spec_1.trim `
|
|
397
|
+
}, (0, testHelpers_spec_1.trim) `
|
|
462
398
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
463
399
|
<component name="ChildScene" extends="BaseScene">
|
|
464
400
|
</component>
|
|
465
401
|
`);
|
|
466
|
-
|
|
402
|
+
(0, chai_config_spec_1.expect)((_a = file.parentComponentName.location) === null || _a === void 0 ? void 0 : _a.range).to.eql(vscode_languageserver_1.Range.create(1, 38, 1, 47));
|
|
467
403
|
});
|
|
468
404
|
it('works for multi-line', () => {
|
|
405
|
+
var _a;
|
|
469
406
|
file = program.setFile({
|
|
470
|
-
src: `${rootDir}/components/comp1.xml`,
|
|
407
|
+
src: `${testHelpers_spec_2.rootDir}/components/comp1.xml`,
|
|
471
408
|
dest: `components/comp1.xml`
|
|
472
|
-
}, testHelpers_spec_1.trim `
|
|
409
|
+
}, (0, testHelpers_spec_1.trim) `
|
|
473
410
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
474
411
|
<component name="ChildScene"
|
|
475
412
|
extends="BaseScene">
|
|
476
413
|
</component>
|
|
477
414
|
`);
|
|
478
|
-
|
|
415
|
+
(0, chai_config_spec_1.expect)((_a = file.parentComponentName.location) === null || _a === void 0 ? void 0 : _a.range).to.eql(vscode_languageserver_1.Range.create(2, 13, 2, 22));
|
|
479
416
|
});
|
|
480
417
|
it('does not throw when unable to find extends', () => {
|
|
481
418
|
file = program.setFile({
|
|
482
|
-
src: `${rootDir}/components/comp1.xml`,
|
|
419
|
+
src: `${testHelpers_spec_2.rootDir}/components/comp1.xml`,
|
|
483
420
|
dest: `components/comp1.xml`
|
|
484
|
-
}, testHelpers_spec_1.trim `
|
|
421
|
+
}, (0, testHelpers_spec_1.trim) `
|
|
485
422
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
486
423
|
<component name="ChildScene">
|
|
487
424
|
</component>
|
|
488
425
|
`);
|
|
489
|
-
|
|
426
|
+
(0, chai_config_spec_1.expect)(file.parentComponentName).to.not.exist;
|
|
490
427
|
});
|
|
491
428
|
it('adds warning when no "extends" attribute is found', () => {
|
|
492
|
-
|
|
493
|
-
src: `${rootDir}/components/comp1.xml`,
|
|
429
|
+
program.setFile({
|
|
430
|
+
src: `${testHelpers_spec_2.rootDir}/components/comp1.xml`,
|
|
494
431
|
dest: `components/comp1.xml`
|
|
495
|
-
}, testHelpers_spec_1.trim `
|
|
432
|
+
}, (0, testHelpers_spec_1.trim) `
|
|
496
433
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
497
434
|
<component name="ChildScene">
|
|
498
435
|
</component>
|
|
499
436
|
`);
|
|
500
437
|
program.validate();
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
});
|
|
505
|
-
});
|
|
506
|
-
});
|
|
507
|
-
it('detects when importing the codebehind file unnecessarily', () => {
|
|
508
|
-
var _a;
|
|
509
|
-
program = new Program_1.Program({
|
|
510
|
-
autoImportComponentScript: true,
|
|
511
|
-
rootDir: rootDir
|
|
438
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [
|
|
439
|
+
DiagnosticMessages_1.DiagnosticMessages.xmlComponentMissingExtendsAttribute()
|
|
440
|
+
]);
|
|
512
441
|
});
|
|
513
|
-
program.setFile({
|
|
514
|
-
src: `${rootDir}/components/SimpleScene.bs`,
|
|
515
|
-
dest: `components/SimpleScene.bs`
|
|
516
|
-
}, '');
|
|
517
|
-
program.setFile({
|
|
518
|
-
src: `${rootDir}/components/SimpleScene.xml`,
|
|
519
|
-
dest: `components/SimpleScene.xml`
|
|
520
|
-
}, testHelpers_spec_1.trim `
|
|
521
|
-
<?xml version="1.0" encoding="utf-8" ?>
|
|
522
|
-
<component name="SimpleScene" extends="Scene">
|
|
523
|
-
<script type="text/brighterscript" uri="SimpleScene.bs" />
|
|
524
|
-
</component>
|
|
525
|
-
`);
|
|
526
|
-
program.validate();
|
|
527
|
-
chai_1.expect((_a = program.getDiagnostics()[0]) === null || _a === void 0 ? void 0 : _a.message).to.equal(DiagnosticMessages_1.DiagnosticMessages.unnecessaryCodebehindScriptImport().message);
|
|
528
442
|
});
|
|
529
443
|
describe('transpile', () => {
|
|
530
|
-
it(
|
|
444
|
+
it('handles single quotes properly', async () => {
|
|
445
|
+
await testTranspile((0, testHelpers_spec_1.trim) `
|
|
446
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
|
447
|
+
<component name="AnimationExample" extends="Scene">
|
|
448
|
+
<children>
|
|
449
|
+
<Animated frames='["pkg:/images/animation-1.png"]' />
|
|
450
|
+
</children>
|
|
451
|
+
</component>
|
|
452
|
+
`, (0, testHelpers_spec_1.trim) `
|
|
453
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
|
454
|
+
<component name="AnimationExample" extends="Scene">
|
|
455
|
+
<script type="text/brightscript" uri="pkg:/source/bslib.brs" />
|
|
456
|
+
<children>
|
|
457
|
+
<Animated frames='["pkg:/images/animation-1.png"]' />
|
|
458
|
+
</children>
|
|
459
|
+
</component>
|
|
460
|
+
`, 'none', 'components/Comp.xml');
|
|
461
|
+
});
|
|
462
|
+
it('supports instantresume <customization> elements', async () => {
|
|
463
|
+
fsExtra.outputFileSync(`${testHelpers_spec_2.rootDir}/manifest`, '');
|
|
464
|
+
fsExtra.outputFileSync(`${testHelpers_spec_2.rootDir}/source/main.brs`, `sub main()\nend sub`);
|
|
465
|
+
fsExtra.outputFileSync(`${testHelpers_spec_2.rootDir}/components/MainScene.xml`, (0, testHelpers_spec_1.trim) `
|
|
466
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
|
467
|
+
<component name="MainScene" extends="Scene">
|
|
468
|
+
<customization resumehandler="customResume" />
|
|
469
|
+
<customization suspendhandler="customSuspend" />
|
|
470
|
+
<children>
|
|
471
|
+
<Rectangle width="1920" height="1080" />
|
|
472
|
+
</children>
|
|
473
|
+
</component>
|
|
474
|
+
`);
|
|
475
|
+
const builder = new ProgramBuilder_1.ProgramBuilder();
|
|
476
|
+
await builder.run({
|
|
477
|
+
cwd: testHelpers_spec_2.rootDir,
|
|
478
|
+
outDir: testHelpers_spec_2.outDir,
|
|
479
|
+
logLevel: logging_1.LogLevel.off
|
|
480
|
+
});
|
|
481
|
+
(0, chai_config_spec_1.expect)((0, testHelpers_spec_1.trim)(fsExtra.readFileSync(`${testHelpers_spec_2.outDir}/components/MainScene.xml`).toString())).to.eql((0, testHelpers_spec_1.trim) `
|
|
482
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
|
483
|
+
<component name="MainScene" extends="Scene">
|
|
484
|
+
<script type="text/brightscript" uri="pkg:/source/bslib.brs" />
|
|
485
|
+
<customization resumehandler="customResume" />
|
|
486
|
+
<customization suspendhandler="customSuspend" />
|
|
487
|
+
<children>
|
|
488
|
+
<Rectangle width="1920" height="1080" />
|
|
489
|
+
</children>
|
|
490
|
+
</component>
|
|
491
|
+
`);
|
|
492
|
+
});
|
|
493
|
+
it(`honors the 'needsTranspiled' flag when set in 'afterProvideFile'`, () => {
|
|
531
494
|
program.plugins.add({
|
|
532
495
|
name: 'test',
|
|
533
|
-
|
|
496
|
+
afterProvideFile: (event) => {
|
|
534
497
|
//enable transpile for every file
|
|
535
|
-
event.
|
|
498
|
+
event.files[0].needsTranspiled = true;
|
|
536
499
|
}
|
|
537
500
|
});
|
|
538
|
-
const file = program.setFile('components/file.xml', testHelpers_spec_1.trim `
|
|
501
|
+
const file = program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
|
|
539
502
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
540
503
|
<component name="Comp" extends="Group">
|
|
541
504
|
</component>
|
|
542
505
|
`);
|
|
543
|
-
|
|
506
|
+
(0, chai_config_spec_1.expect)(file['needsTranspiled']).to.be.true;
|
|
544
507
|
});
|
|
545
|
-
it('includes bslib script', () => {
|
|
546
|
-
testTranspile(testHelpers_spec_1.trim `
|
|
508
|
+
it('includes bslib script', async () => {
|
|
509
|
+
await testTranspile((0, testHelpers_spec_1.trim) `
|
|
547
510
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
548
511
|
<component name="Comp" extends="Group">
|
|
549
512
|
</component>
|
|
550
|
-
`, testHelpers_spec_1.trim `
|
|
513
|
+
`, (0, testHelpers_spec_1.trim) `
|
|
551
514
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
552
515
|
<component name="Comp" extends="Group">
|
|
553
516
|
<script type="text/brightscript" uri="pkg:/source/bslib.brs" />
|
|
554
517
|
</component>
|
|
555
518
|
`, 'none', 'components/Comp.xml');
|
|
556
519
|
});
|
|
557
|
-
it('does not include additional bslib script if already there ', () => {
|
|
558
|
-
testTranspile(testHelpers_spec_1.trim `
|
|
520
|
+
it('does not include additional bslib script if already there ', async () => {
|
|
521
|
+
await testTranspile((0, testHelpers_spec_1.trim) `
|
|
559
522
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
560
523
|
<component name="Comp" extends="Group">
|
|
561
524
|
<script type="text/brightscript" uri="pkg:/source/bslib.brs" />
|
|
562
525
|
</component>
|
|
563
|
-
`, testHelpers_spec_1.trim `
|
|
526
|
+
`, (0, testHelpers_spec_1.trim) `
|
|
564
527
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
565
528
|
<component name="Comp" extends="Group">
|
|
566
529
|
<script type="text/brightscript" uri="pkg:/source/bslib.brs" />
|
|
567
530
|
</component>
|
|
568
531
|
`, 'none', 'components/child.xml');
|
|
569
532
|
});
|
|
570
|
-
it('does not include bslib script if already there from ropm', () => {
|
|
533
|
+
it('does not include bslib script if already there from ropm', async () => {
|
|
571
534
|
program.setFile('source/roku_modules/bslib/bslib.brs', ``);
|
|
572
535
|
program.setFile('source/lib.bs', ``);
|
|
573
536
|
//include a bs file to force transpile for the xml file
|
|
574
|
-
testTranspile(testHelpers_spec_1.trim `
|
|
537
|
+
await testTranspile((0, testHelpers_spec_1.trim) `
|
|
575
538
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
576
539
|
<component name="Comp" extends="Group">
|
|
577
540
|
<script type="text/brightscript" uri="pkg:/source/lib.bs" />
|
|
578
541
|
<script type="text/brightscript" uri="pkg:/source/roku_modules/bslib/bslib.brs" />
|
|
579
542
|
</component>
|
|
580
|
-
`, testHelpers_spec_1.trim `
|
|
543
|
+
`, (0, testHelpers_spec_1.trim) `
|
|
581
544
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
582
545
|
<component name="Comp" extends="Group">
|
|
583
546
|
<script type="text/brightscript" uri="pkg:/source/lib.brs" />
|
|
@@ -586,47 +549,99 @@ describe('XmlFile', () => {
|
|
|
586
549
|
`, 'none', 'components/child.xml');
|
|
587
550
|
});
|
|
588
551
|
it('does not transpile xml file when bslib script is already present', () => {
|
|
589
|
-
const file = program.setFile('components/comp.xml', testHelpers_spec_1.trim `
|
|
552
|
+
const file = program.setFile('components/comp.xml', (0, testHelpers_spec_1.trim) `
|
|
590
553
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
591
554
|
<component name="Comp" extends="Group">
|
|
592
555
|
<script type="text/brightscript" uri="pkg:/source/bslib.brs" />
|
|
593
556
|
</component>
|
|
594
557
|
`);
|
|
595
558
|
program.validate();
|
|
596
|
-
testHelpers_spec_1.expectZeroDiagnostics(program);
|
|
597
|
-
|
|
559
|
+
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
560
|
+
(0, chai_config_spec_1.expect)(file['needsTranspiled']).to.be.false;
|
|
598
561
|
});
|
|
599
562
|
/**
|
|
600
563
|
* There was a bug that would incorrectly replace one of the script paths on the second or third transpile, so this test verifies it doesn't do that anymore
|
|
601
564
|
*/
|
|
602
565
|
it('does not mangle scripts on multiple transpile', async () => {
|
|
603
566
|
program.setFile('components/SimpleScene.bs', ``);
|
|
604
|
-
program.setFile(`components/SimpleScene.xml`, testHelpers_spec_1.trim `
|
|
567
|
+
program.setFile(`components/SimpleScene.xml`, (0, testHelpers_spec_1.trim) `
|
|
605
568
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
606
569
|
<component name="SimpleScene" extends="Scene">
|
|
607
570
|
<script type="text/brightscript" uri="SimpleScene.bs" />
|
|
608
571
|
</component>
|
|
609
572
|
`);
|
|
610
|
-
const expected = testHelpers_spec_1.trim `
|
|
573
|
+
const expected = (0, testHelpers_spec_1.trim) `
|
|
611
574
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
612
575
|
<component name="SimpleScene" extends="Scene">
|
|
613
576
|
<script type="text/brightscript" uri="SimpleScene.brs" />
|
|
614
577
|
<script type="text/brightscript" uri="pkg:/source/bslib.brs" />
|
|
615
578
|
</component>
|
|
616
579
|
`;
|
|
617
|
-
await program.
|
|
618
|
-
|
|
580
|
+
await program.build();
|
|
581
|
+
(0, chai_config_spec_1.expect)((0, testHelpers_spec_1.trim)(fsExtra.readFileSync(`${testHelpers_spec_2.outDir}/components/SimpleScene.xml`).toString())).to.eql(expected);
|
|
619
582
|
//clear the output folder
|
|
620
|
-
fsExtra.emptyDirSync(
|
|
621
|
-
await program.
|
|
622
|
-
|
|
583
|
+
fsExtra.emptyDirSync(testHelpers_spec_2.outDir);
|
|
584
|
+
await program.build();
|
|
585
|
+
(0, chai_config_spec_1.expect)((0, testHelpers_spec_1.trim)(fsExtra.readFileSync(`${testHelpers_spec_2.outDir}/components/SimpleScene.xml`).toString())).to.eql(expected);
|
|
623
586
|
});
|
|
624
|
-
it('
|
|
587
|
+
it('injects new scripts near existing scripts', async () => {
|
|
625
588
|
program.setFile(`components/SimpleScene.bs`, `
|
|
626
589
|
sub b()
|
|
627
590
|
end sub
|
|
628
591
|
`);
|
|
629
|
-
testTranspile(testHelpers_spec_1.trim `
|
|
592
|
+
await testTranspile((0, testHelpers_spec_1.trim) `
|
|
593
|
+
<component name="SimpleScene" extends="group">
|
|
594
|
+
<script type="text/brightscript" uri="SimpleScene.bs"/>
|
|
595
|
+
<children>
|
|
596
|
+
<aa id="aa">
|
|
597
|
+
<bb id="bb" />
|
|
598
|
+
</aa>
|
|
599
|
+
</children>
|
|
600
|
+
</component>
|
|
601
|
+
`, (0, testHelpers_spec_1.trim) `
|
|
602
|
+
<component name="SimpleScene" extends="group">
|
|
603
|
+
<script type="text/brightscript" uri="SimpleScene.brs" />
|
|
604
|
+
<script type="text/brightscript" uri="pkg:/source/bslib.brs" />
|
|
605
|
+
<children>
|
|
606
|
+
<aa id="aa">
|
|
607
|
+
<bb id="bb" />
|
|
608
|
+
</aa>
|
|
609
|
+
</children>
|
|
610
|
+
</component>
|
|
611
|
+
`, 'none', 'components/SimpleScene.xml');
|
|
612
|
+
});
|
|
613
|
+
it('injects new scripts at top of component when no scripts were present', async () => {
|
|
614
|
+
program.setFile(`components/SimpleScene.bs`, `
|
|
615
|
+
sub b()
|
|
616
|
+
end sub
|
|
617
|
+
`);
|
|
618
|
+
program.options.autoImportComponentScript = true;
|
|
619
|
+
await testTranspile((0, testHelpers_spec_1.trim) `
|
|
620
|
+
<component name="SimpleScene" extends="group">
|
|
621
|
+
<children>
|
|
622
|
+
<aa id="aa">
|
|
623
|
+
<bb id="bb" />
|
|
624
|
+
</aa>
|
|
625
|
+
</children>
|
|
626
|
+
</component>
|
|
627
|
+
`, (0, testHelpers_spec_1.trim) `
|
|
628
|
+
<component name="SimpleScene" extends="group">
|
|
629
|
+
<script type="text/brightscript" uri="pkg:/components/SimpleScene.brs" />
|
|
630
|
+
<script type="text/brightscript" uri="pkg:/source/bslib.brs" />
|
|
631
|
+
<children>
|
|
632
|
+
<aa id="aa">
|
|
633
|
+
<bb id="bb" />
|
|
634
|
+
</aa>
|
|
635
|
+
</children>
|
|
636
|
+
</component>
|
|
637
|
+
`, 'none', 'components/SimpleScene.xml');
|
|
638
|
+
});
|
|
639
|
+
it('keeps all content of the XML', async () => {
|
|
640
|
+
program.setFile(`components/SimpleScene.bs`, `
|
|
641
|
+
sub b()
|
|
642
|
+
end sub
|
|
643
|
+
`);
|
|
644
|
+
await testTranspile((0, testHelpers_spec_1.trim) `
|
|
630
645
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
631
646
|
<component
|
|
632
647
|
name="SimpleScene" extends="Scene"
|
|
@@ -644,7 +659,7 @@ describe('XmlFile', () => {
|
|
|
644
659
|
</aa>
|
|
645
660
|
</children>
|
|
646
661
|
</component>
|
|
647
|
-
`, testHelpers_spec_1.trim `
|
|
662
|
+
`, (0, testHelpers_spec_1.trim) `
|
|
648
663
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
649
664
|
<component name="SimpleScene" extends="Scene" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://devtools.web.roku.com/schema/RokuSceneGraph.xsd">
|
|
650
665
|
<interface>
|
|
@@ -652,26 +667,26 @@ describe('XmlFile', () => {
|
|
|
652
667
|
<function name="b" />
|
|
653
668
|
</interface>
|
|
654
669
|
<script type="text/brightscript" uri="SimpleScene.brs" />
|
|
670
|
+
<script type="text/brightscript" uri="pkg:/source/bslib.brs" />
|
|
655
671
|
<children>
|
|
656
672
|
<aa id="aa">
|
|
657
673
|
<bb id="bb" />
|
|
658
674
|
</aa>
|
|
659
675
|
</children>
|
|
660
|
-
<script type="text/brightscript" uri="pkg:/source/bslib.brs" />
|
|
661
676
|
</component>
|
|
662
677
|
`, 'none', 'components/SimpleScene.xml');
|
|
663
678
|
});
|
|
664
|
-
it('changes file extensions from bs to brs', () => {
|
|
679
|
+
it('changes file extensions from bs to brs', async () => {
|
|
665
680
|
program.setFile(`components/SimpleScene.bs`, `
|
|
666
681
|
import "pkg:/source/lib.bs"
|
|
667
682
|
`);
|
|
668
683
|
program.setFile('source/lib.bs', ``);
|
|
669
|
-
testTranspile(testHelpers_spec_1.trim `
|
|
684
|
+
await testTranspile((0, testHelpers_spec_1.trim) `
|
|
670
685
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
671
686
|
<component name="SimpleScene" extends="Scene">
|
|
672
687
|
<script type="text/brighterscript" uri="SimpleScene.bs"/>
|
|
673
688
|
</component>
|
|
674
|
-
`, testHelpers_spec_1.trim `
|
|
689
|
+
`, (0, testHelpers_spec_1.trim) `
|
|
675
690
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
676
691
|
<component name="SimpleScene" extends="Scene">
|
|
677
692
|
<script type="text/brightscript" uri="SimpleScene.brs" />
|
|
@@ -680,14 +695,14 @@ describe('XmlFile', () => {
|
|
|
680
695
|
</component>
|
|
681
696
|
`, 'none', 'components/SimpleScene.xml');
|
|
682
697
|
});
|
|
683
|
-
it('does not fail on missing script type', () => {
|
|
698
|
+
it('does not fail on missing script type', async () => {
|
|
684
699
|
program.setFile('components/SimpleScene.brs', '');
|
|
685
|
-
testTranspile(testHelpers_spec_1.trim `
|
|
700
|
+
await testTranspile((0, testHelpers_spec_1.trim) `
|
|
686
701
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
687
702
|
<component name="SimpleScene" extends="Scene">
|
|
688
703
|
<script uri="SimpleScene.brs"/>
|
|
689
704
|
</component>
|
|
690
|
-
`, testHelpers_spec_1.trim `
|
|
705
|
+
`, (0, testHelpers_spec_1.trim) `
|
|
691
706
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
692
707
|
<component name="SimpleScene" extends="Scene">
|
|
693
708
|
<script uri="SimpleScene.brs" type="text/brightscript" />
|
|
@@ -696,7 +711,7 @@ describe('XmlFile', () => {
|
|
|
696
711
|
`, null, 'components/comp.xml');
|
|
697
712
|
});
|
|
698
713
|
it('returns the XML unmodified if needsTranspiled is false', () => {
|
|
699
|
-
let file = program.setFile('components/SimpleScene.xml', testHelpers_spec_1.trim `
|
|
714
|
+
let file = program.setFile('components/SimpleScene.xml', (0, testHelpers_spec_1.trim) `
|
|
700
715
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
701
716
|
<!-- should stay as-is -->
|
|
702
717
|
<component name="SimpleScene" extends="Scene" >
|
|
@@ -705,7 +720,7 @@ describe('XmlFile', () => {
|
|
|
705
720
|
`);
|
|
706
721
|
//prevent the default auto-imports to ensure no transpilation from AST
|
|
707
722
|
file.getMissingImportsForTranspile = () => [];
|
|
708
|
-
|
|
723
|
+
(0, chai_config_spec_1.expect)((0, testHelpers_spec_1.trimMap)(file.transpile().code)).to.equal((0, testHelpers_spec_1.trim) `
|
|
709
724
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
710
725
|
<!-- should stay as-is -->
|
|
711
726
|
<component name="SimpleScene" extends="Scene" >
|
|
@@ -714,26 +729,25 @@ describe('XmlFile', () => {
|
|
|
714
729
|
`);
|
|
715
730
|
});
|
|
716
731
|
it('needsTranspiled is false by default', () => {
|
|
717
|
-
let file = program.setFile('components/SimpleScene.xml', testHelpers_spec_1.trim `
|
|
732
|
+
let file = program.setFile('components/SimpleScene.xml', (0, testHelpers_spec_1.trim) `
|
|
718
733
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
719
734
|
<component name="SimpleScene" extends="Scene" >
|
|
720
735
|
</component>
|
|
721
736
|
`);
|
|
722
|
-
|
|
737
|
+
(0, chai_config_spec_1.expect)(file['needsTranspiled']).to.be.false;
|
|
723
738
|
});
|
|
724
739
|
it('needsTranspiled is true if an import is brighterscript', () => {
|
|
725
|
-
let file = program.setFile('components/SimpleScene.xml', testHelpers_spec_1.trim `
|
|
740
|
+
let file = program.setFile('components/SimpleScene.xml', (0, testHelpers_spec_1.trim) `
|
|
726
741
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
727
742
|
<component name="SimpleScene" extends="Scene" >
|
|
728
743
|
<script type="text/brightscript" uri="SimpleScene.bs"/>
|
|
729
744
|
</component>
|
|
730
745
|
`);
|
|
731
|
-
|
|
732
|
-
chai_1.expect(file.needsTranspiled).to.be.true;
|
|
746
|
+
(0, chai_config_spec_1.expect)(file['needsTranspiled']).to.be.true;
|
|
733
747
|
});
|
|
734
748
|
it('simple source mapping includes sourcemap reference', () => {
|
|
735
749
|
program.options.sourceMap = true;
|
|
736
|
-
let file = program.setFile('components/SimpleScene.xml', testHelpers_spec_1.trim `
|
|
750
|
+
let file = program.setFile('components/SimpleScene.xml', (0, testHelpers_spec_1.trim) `
|
|
737
751
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
738
752
|
<component name="SimpleScene" extends="Scene">
|
|
739
753
|
</component>
|
|
@@ -741,18 +755,110 @@ describe('XmlFile', () => {
|
|
|
741
755
|
//prevent the default auto-imports to ensure no transpilation from AST
|
|
742
756
|
file.getMissingImportsForTranspile = () => [];
|
|
743
757
|
const code = file.transpile().code;
|
|
744
|
-
|
|
758
|
+
(0, chai_config_spec_1.expect)(code.endsWith(`<!--//# sourceMappingURL=./SimpleScene.xml.map -->`)).to.be.true;
|
|
745
759
|
});
|
|
746
760
|
it('AST-based source mapping includes sourcemap reference', () => {
|
|
747
761
|
program.options.sourceMap = true;
|
|
748
|
-
let file = program.setFile('components/SimpleScene.xml', testHelpers_spec_1.trim `
|
|
762
|
+
let file = program.setFile('components/SimpleScene.xml', (0, testHelpers_spec_1.trim) `
|
|
749
763
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
750
764
|
<component name="SimpleScene" extends="Scene">
|
|
751
765
|
</component>
|
|
752
766
|
`);
|
|
753
|
-
file
|
|
767
|
+
file['needsTranspiled'] = true;
|
|
754
768
|
const code = file.transpile().code;
|
|
755
|
-
|
|
769
|
+
(0, chai_config_spec_1.expect)(code.endsWith(`<!--//# sourceMappingURL=./SimpleScene.xml.map -->`)).to.be.true;
|
|
770
|
+
});
|
|
771
|
+
it('removes script imports if given file is not publishable', async () => {
|
|
772
|
+
program.options.pruneEmptyCodeFiles = true;
|
|
773
|
+
program.setFile(`components/SimpleScene.bs`, `
|
|
774
|
+
enum simplescenetypes
|
|
775
|
+
hero
|
|
776
|
+
intro
|
|
777
|
+
end enum
|
|
778
|
+
`);
|
|
779
|
+
await testTranspile((0, testHelpers_spec_1.trim) `
|
|
780
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
|
781
|
+
<component
|
|
782
|
+
name="SimpleScene" extends="Scene"
|
|
783
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
784
|
+
xsi:noNamespaceSchemaLocation="https://devtools.web.roku.com/schema/RokuSceneGraph.xsd"
|
|
785
|
+
>
|
|
786
|
+
<script type="text/brightscript" uri="SimpleScene.bs"/>
|
|
787
|
+
</component>
|
|
788
|
+
`, (0, testHelpers_spec_1.trim) `
|
|
789
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
|
790
|
+
<component name="SimpleScene" extends="Scene" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://devtools.web.roku.com/schema/RokuSceneGraph.xsd">
|
|
791
|
+
<script type="text/brightscript" uri="pkg:/source/bslib.brs" />
|
|
792
|
+
</component>
|
|
793
|
+
`, 'none', 'components/SimpleScene.xml');
|
|
794
|
+
});
|
|
795
|
+
it('removes extra imports found via dependencies if given file is not publishable', async () => {
|
|
796
|
+
program.options.pruneEmptyCodeFiles = true;
|
|
797
|
+
program.setFile(`source/simplescenetypes.bs`, `
|
|
798
|
+
enum SimpleSceneTypes
|
|
799
|
+
world = "world"
|
|
800
|
+
end enum
|
|
801
|
+
`);
|
|
802
|
+
program.setFile(`components/SimpleScene.bs`, `
|
|
803
|
+
import "pkg:/source/simplescenetypes.bs"
|
|
804
|
+
|
|
805
|
+
sub init()
|
|
806
|
+
? "Hello " + SimpleSceneTypes.world
|
|
807
|
+
end sub
|
|
808
|
+
`);
|
|
809
|
+
await testTranspile((0, testHelpers_spec_1.trim) `
|
|
810
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
|
811
|
+
<component
|
|
812
|
+
name="SimpleScene" extends="Scene"
|
|
813
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
814
|
+
xsi:noNamespaceSchemaLocation="https://devtools.web.roku.com/schema/RokuSceneGraph.xsd"
|
|
815
|
+
>
|
|
816
|
+
<script type="text/brightscript" uri="SimpleScene.bs"/>
|
|
817
|
+
</component>
|
|
818
|
+
`, (0, testHelpers_spec_1.trim) `
|
|
819
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
|
820
|
+
<component name="SimpleScene" extends="Scene" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://devtools.web.roku.com/schema/RokuSceneGraph.xsd">
|
|
821
|
+
<script type="text/brightscript" uri="SimpleScene.brs" />
|
|
822
|
+
<script type="text/brightscript" uri="pkg:/source/bslib.brs" />
|
|
823
|
+
</component>
|
|
824
|
+
`, 'none', 'components/SimpleScene.xml');
|
|
825
|
+
});
|
|
826
|
+
it('removes imports of empty brightscript files', async () => {
|
|
827
|
+
program.options.pruneEmptyCodeFiles = true;
|
|
828
|
+
program.setFile(`components/EmptyFile.brs`, '');
|
|
829
|
+
program.setFile(`components/SimpleScene.brs`, `
|
|
830
|
+
sub init()
|
|
831
|
+
? "Hello World"
|
|
832
|
+
end sub
|
|
833
|
+
`);
|
|
834
|
+
await testTranspile((0, testHelpers_spec_1.trim) `
|
|
835
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
|
836
|
+
<component
|
|
837
|
+
name="SimpleScene" extends="Scene"
|
|
838
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
839
|
+
xsi:noNamespaceSchemaLocation="https://devtools.web.roku.com/schema/RokuSceneGraph.xsd"
|
|
840
|
+
>
|
|
841
|
+
<script type="text/brightscript" uri="SimpleScene.brs"/>
|
|
842
|
+
<script type="text/brightscript" uri="EmptyFile.brs"/>
|
|
843
|
+
</component>
|
|
844
|
+
`, (0, testHelpers_spec_1.trim) `
|
|
845
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
|
846
|
+
<component name="SimpleScene" extends="Scene" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://devtools.web.roku.com/schema/RokuSceneGraph.xsd">
|
|
847
|
+
<script type="text/brightscript" uri="SimpleScene.brs" />
|
|
848
|
+
<script type="text/brightscript" uri="pkg:/source/bslib.brs" />
|
|
849
|
+
</component>
|
|
850
|
+
`, 'none', 'components/SimpleScene.xml');
|
|
851
|
+
});
|
|
852
|
+
it('includes script tags in self closing component', async () => {
|
|
853
|
+
await testTranspile((0, testHelpers_spec_1.trim) `
|
|
854
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
|
855
|
+
<component name="Comp" extends="Group" />
|
|
856
|
+
`, (0, testHelpers_spec_1.trim) `
|
|
857
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
|
858
|
+
<component name="Comp" extends="Group">
|
|
859
|
+
<script type="text/brightscript" uri="pkg:/source/bslib.brs" />
|
|
860
|
+
</component>
|
|
861
|
+
`, 'none', 'components/Comp.xml');
|
|
756
862
|
});
|
|
757
863
|
});
|
|
758
864
|
describe('Transform plugins', () => {
|
|
@@ -763,50 +869,52 @@ describe('XmlFile', () => {
|
|
|
763
869
|
});
|
|
764
870
|
program.plugins.add({
|
|
765
871
|
name: 'Transform plugins',
|
|
766
|
-
|
|
872
|
+
validateFile: event => validateXml(event.file)
|
|
767
873
|
});
|
|
768
|
-
|
|
874
|
+
file = program.setFile('components/component.xml', (0, testHelpers_spec_1.trim) `
|
|
769
875
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
770
876
|
<component name="Cmp1" extends="Scene">
|
|
771
877
|
</component>
|
|
772
878
|
`);
|
|
879
|
+
program.validate();
|
|
880
|
+
return file;
|
|
773
881
|
}
|
|
774
882
|
it('Calls XML file validation plugins', () => {
|
|
775
883
|
const validateXml = sinon.spy();
|
|
776
884
|
const file = parseFileWithPlugins(validateXml);
|
|
777
|
-
|
|
778
|
-
|
|
885
|
+
(0, chai_config_spec_1.expect)(validateXml.callCount).to.be.greaterThan(0);
|
|
886
|
+
(0, chai_config_spec_1.expect)(validateXml.getCalls().flatMap(x => x.args)).to.include(file);
|
|
779
887
|
});
|
|
780
888
|
});
|
|
781
889
|
it('plugin diagnostics work for xml files', () => {
|
|
782
890
|
program.plugins.add({
|
|
783
891
|
name: 'Xml diagnostic test',
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
892
|
+
afterProvideFile: (event) => {
|
|
893
|
+
for (const file of event.files) {
|
|
894
|
+
if ((0, reflection_1.isXmlFile)(file)) {
|
|
895
|
+
program.diagnostics.register({
|
|
788
896
|
message: 'Test diagnostic',
|
|
789
|
-
|
|
897
|
+
location: util_1.default.createLocationFromFileRange(file, vscode_languageserver_1.Range.create(0, 0, 0, 0)),
|
|
790
898
|
code: 9999
|
|
791
|
-
}
|
|
899
|
+
});
|
|
900
|
+
}
|
|
792
901
|
}
|
|
793
902
|
}
|
|
794
903
|
});
|
|
795
|
-
program.setFile('components/comp.xml', testHelpers_spec_1.trim `
|
|
904
|
+
program.setFile('components/comp.xml', (0, testHelpers_spec_1.trim) `
|
|
796
905
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
797
906
|
<component name="Cmp1" extends="Scene">
|
|
798
907
|
</component>
|
|
799
908
|
`);
|
|
800
909
|
program.validate();
|
|
801
|
-
|
|
910
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [{
|
|
802
911
|
message: 'Test diagnostic',
|
|
803
912
|
code: 9999
|
|
804
913
|
}]);
|
|
805
914
|
});
|
|
806
915
|
describe('typedef', () => {
|
|
807
916
|
it('loads d.bs files from parent scope', () => {
|
|
808
|
-
|
|
809
|
-
program.setFile('components/ParentComponent.xml', testHelpers_spec_1.trim `
|
|
917
|
+
program.setFile('components/ParentComponent.xml', (0, testHelpers_spec_1.trim) `
|
|
810
918
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
811
919
|
<component name="ParentComponent" extends="Scene">
|
|
812
920
|
<script uri="ParentComponent.brs" />
|
|
@@ -833,7 +941,7 @@ describe('XmlFile', () => {
|
|
|
833
941
|
sub Lib_log()
|
|
834
942
|
end sub
|
|
835
943
|
`);
|
|
836
|
-
program.setFile('components/ChildComponent.xml', testHelpers_spec_1.trim `
|
|
944
|
+
program.setFile('components/ChildComponent.xml', (0, testHelpers_spec_1.trim) `
|
|
837
945
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
838
946
|
<component name="ChildComponent" extends="ParentComponent">
|
|
839
947
|
<script uri="ChildComponent.bs" />
|
|
@@ -846,15 +954,15 @@ describe('XmlFile', () => {
|
|
|
846
954
|
end sub
|
|
847
955
|
`);
|
|
848
956
|
program.validate();
|
|
849
|
-
|
|
957
|
+
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
850
958
|
const scope = program.getComponentScope('ChildComponent');
|
|
851
|
-
|
|
959
|
+
(0, chai_config_spec_1.expect)([...scope.namespaceNameSet.keys()].sort()).to.eql([
|
|
852
960
|
'lib',
|
|
853
961
|
'parent'
|
|
854
962
|
]);
|
|
855
963
|
});
|
|
856
964
|
it('loads `d.bs` files into scope', () => {
|
|
857
|
-
const xmlFile = program.setFile('components/Component1.xml', testHelpers_spec_1.trim `
|
|
965
|
+
const xmlFile = program.setFile('components/Component1.xml', (0, testHelpers_spec_1.trim) `
|
|
858
966
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
859
967
|
<component name="Component1" extends="Scene">
|
|
860
968
|
<script uri="Component1.brs" />
|
|
@@ -864,9 +972,9 @@ describe('XmlFile', () => {
|
|
|
864
972
|
sub logInfo()
|
|
865
973
|
end sub
|
|
866
974
|
`);
|
|
867
|
-
|
|
975
|
+
(0, chai_config_spec_1.expect)(program.getScopesForFile(xmlFile)[0].getAllCallables().map(x => x.callable.name)).to.include('logInfo');
|
|
868
976
|
});
|
|
869
|
-
it('does not include `d.bs` script during transpile', () => {
|
|
977
|
+
it('does not include `d.bs` script during transpile', async () => {
|
|
870
978
|
program.setFile('source/logger.d.bs', `
|
|
871
979
|
sub logInfo()
|
|
872
980
|
end sub
|
|
@@ -880,12 +988,12 @@ describe('XmlFile', () => {
|
|
|
880
988
|
sub init()
|
|
881
989
|
end sub
|
|
882
990
|
`);
|
|
883
|
-
testTranspile(testHelpers_spec_1.trim `
|
|
991
|
+
await testTranspile((0, testHelpers_spec_1.trim) `
|
|
884
992
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
885
993
|
<component name="Component1" extends="Scene">
|
|
886
994
|
<script type="text/brighterscript" uri="Component1.bs" />
|
|
887
995
|
</component>
|
|
888
|
-
`, testHelpers_spec_1.trim `
|
|
996
|
+
`, (0, testHelpers_spec_1.trim) `
|
|
889
997
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
890
998
|
<component name="Component1" extends="Scene">
|
|
891
999
|
<script type="text/brightscript" uri="Component1.brs" />
|
|
@@ -895,7 +1003,7 @@ describe('XmlFile', () => {
|
|
|
895
1003
|
`, 'none', 'components/Component1.xml');
|
|
896
1004
|
});
|
|
897
1005
|
it('does not load .brs information into scope if related d.bs is in scope', () => {
|
|
898
|
-
const xmlFile = program.setFile('components/Component1.xml', testHelpers_spec_1.trim `
|
|
1006
|
+
const xmlFile = program.setFile('components/Component1.xml', (0, testHelpers_spec_1.trim) `
|
|
899
1007
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
900
1008
|
<component name="Component1" extends="Scene">
|
|
901
1009
|
<script uri="Component1.brs" />
|
|
@@ -910,20 +1018,20 @@ describe('XmlFile', () => {
|
|
|
910
1018
|
end sub
|
|
911
1019
|
`);
|
|
912
1020
|
let functionNames = scope.getAllCallables().map(x => x.callable.name);
|
|
913
|
-
|
|
914
|
-
|
|
1021
|
+
(0, chai_config_spec_1.expect)(functionNames).to.include('logInfo');
|
|
1022
|
+
(0, chai_config_spec_1.expect)(functionNames).to.include('logWarning');
|
|
915
1023
|
//load d.bs file, which should shadow out the .brs file
|
|
916
1024
|
program.setFile('components/Component1.d.bs', `
|
|
917
1025
|
sub logError()
|
|
918
1026
|
end sub
|
|
919
1027
|
`);
|
|
920
1028
|
functionNames = scope.getAllCallables().map(x => x.callable.name);
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
1029
|
+
(0, chai_config_spec_1.expect)(functionNames).to.include('logError');
|
|
1030
|
+
(0, chai_config_spec_1.expect)(functionNames).not.to.include('logInfo');
|
|
1031
|
+
(0, chai_config_spec_1.expect)(functionNames).not.to.include('logWarning');
|
|
924
1032
|
});
|
|
925
1033
|
it('updates xml scope when typedef disappears', () => {
|
|
926
|
-
const xmlFile = program.setFile('components/Component1.xml', testHelpers_spec_1.trim `
|
|
1034
|
+
const xmlFile = program.setFile('components/Component1.xml', (0, testHelpers_spec_1.trim) `
|
|
927
1035
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
928
1036
|
<component name="Component1" extends="Scene">
|
|
929
1037
|
<script uri="Component1.brs" />
|
|
@@ -942,78 +1050,78 @@ describe('XmlFile', () => {
|
|
|
942
1050
|
`);
|
|
943
1051
|
program.validate();
|
|
944
1052
|
let functionNames = scope.getOwnCallables().map(x => x.callable.name);
|
|
945
|
-
|
|
946
|
-
|
|
1053
|
+
(0, chai_config_spec_1.expect)(functionNames).to.include('logTypedef');
|
|
1054
|
+
(0, chai_config_spec_1.expect)(functionNames).not.to.include('logBrs');
|
|
947
1055
|
//remove the typdef file
|
|
948
1056
|
program.removeFile(typedef.srcPath);
|
|
949
1057
|
program.validate();
|
|
950
1058
|
functionNames = scope.getOwnCallables().map(x => x.callable.name);
|
|
951
|
-
|
|
952
|
-
|
|
1059
|
+
(0, chai_config_spec_1.expect)(functionNames).not.to.include('logTypedef');
|
|
1060
|
+
(0, chai_config_spec_1.expect)(functionNames).to.include('logBrs');
|
|
953
1061
|
});
|
|
954
1062
|
});
|
|
955
1063
|
it('finds script imports for single-quoted script tags', () => {
|
|
956
1064
|
var _a;
|
|
957
|
-
const file = program.setFile('components/file.xml', testHelpers_spec_1.trim `
|
|
1065
|
+
const file = program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
|
|
958
1066
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
959
1067
|
<component name="Cmp1" extends="Scene">
|
|
960
1068
|
<script uri='SingleQuotedFile.brs' />
|
|
961
1069
|
</component>
|
|
962
1070
|
`);
|
|
963
|
-
|
|
1071
|
+
(0, chai_config_spec_1.expect)((_a = file.scriptTagImports[0]) === null || _a === void 0 ? void 0 : _a.text).to.eql('SingleQuotedFile.brs');
|
|
964
1072
|
});
|
|
965
1073
|
describe('commentFlags', () => {
|
|
966
1074
|
it('ignores warning from previous line comment', () => {
|
|
967
1075
|
//component without a name attribute
|
|
968
|
-
program.setFile('components/file.xml', testHelpers_spec_1.trim `
|
|
1076
|
+
program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
|
|
969
1077
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
970
1078
|
<!--bs:disable-next-line-->
|
|
971
1079
|
<component>
|
|
972
1080
|
</component>
|
|
973
1081
|
`);
|
|
974
1082
|
program.validate();
|
|
975
|
-
testHelpers_spec_1.expectZeroDiagnostics(program);
|
|
1083
|
+
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
976
1084
|
});
|
|
977
|
-
it('ignores
|
|
1085
|
+
it('ignores a specific diagnostic on next line', () => {
|
|
978
1086
|
//component without a name attribute
|
|
979
|
-
program.setFile('components/file.xml', testHelpers_spec_1.trim `
|
|
1087
|
+
program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
|
|
980
1088
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
981
1089
|
<!--bs:disable-next-line 1006-->
|
|
982
1090
|
<component>
|
|
983
1091
|
</component>
|
|
984
1092
|
`);
|
|
985
1093
|
program.validate();
|
|
986
|
-
|
|
987
|
-
DiagnosticMessages_1.DiagnosticMessages.xmlComponentMissingExtendsAttribute()
|
|
1094
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [
|
|
1095
|
+
DiagnosticMessages_1.DiagnosticMessages.xmlComponentMissingExtendsAttribute()
|
|
988
1096
|
]);
|
|
989
1097
|
});
|
|
990
|
-
it('ignores
|
|
1098
|
+
it('ignores all warnings from previous line comment', () => {
|
|
991
1099
|
//component without a name attribute
|
|
992
|
-
program.setFile('components/file.xml', testHelpers_spec_1.trim `
|
|
1100
|
+
program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
|
|
993
1101
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
994
1102
|
<component> <!--bs:disable-line-->
|
|
995
1103
|
</component>
|
|
996
1104
|
`);
|
|
997
1105
|
program.validate();
|
|
998
|
-
testHelpers_spec_1.expectZeroDiagnostics(program);
|
|
1106
|
+
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
999
1107
|
});
|
|
1000
1108
|
it('ignores warning from previous line just for the specified code', () => {
|
|
1001
1109
|
//component without a name attribute
|
|
1002
|
-
program.setFile('components/file.xml', testHelpers_spec_1.trim `
|
|
1110
|
+
program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
|
|
1003
1111
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
1004
|
-
<component> <!--bs:disable-line 1006-->
|
|
1112
|
+
<component name="ButtonCustom"> <!--bs:disable-line 1006-->
|
|
1005
1113
|
</component>
|
|
1006
1114
|
`);
|
|
1007
1115
|
program.validate();
|
|
1008
|
-
|
|
1009
|
-
DiagnosticMessages_1.DiagnosticMessages.xmlComponentMissingExtendsAttribute()
|
|
1116
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [
|
|
1117
|
+
DiagnosticMessages_1.DiagnosticMessages.xmlComponentMissingExtendsAttribute()
|
|
1010
1118
|
]);
|
|
1011
1119
|
});
|
|
1012
1120
|
});
|
|
1013
1121
|
describe('duplicate components', () => {
|
|
1014
1122
|
it('more gracefully handles multiple components with the same name', () => {
|
|
1015
1123
|
program.setFile('components/comp1.brs', ``);
|
|
1016
|
-
program.setFile('components/comp1.xml', testHelpers_spec_1.trim `
|
|
1124
|
+
program.setFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
|
|
1017
1125
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
1018
1126
|
<component name="comp1" extends="Group">
|
|
1019
1127
|
<script uri="comp1.brs" />
|
|
@@ -1021,44 +1129,44 @@ describe('XmlFile', () => {
|
|
|
1021
1129
|
`);
|
|
1022
1130
|
//add another component with the same name
|
|
1023
1131
|
program.setFile('components/comp2.brs', ``);
|
|
1024
|
-
program.setFile('components/comp2.xml', testHelpers_spec_1.trim `
|
|
1132
|
+
program.setFile('components/comp2.xml', (0, testHelpers_spec_1.trim) `
|
|
1025
1133
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
1026
1134
|
<component name="comp1" extends="Group">
|
|
1027
1135
|
<script uri="comp2.brs" />
|
|
1028
1136
|
</component>
|
|
1029
1137
|
`);
|
|
1030
1138
|
program.validate();
|
|
1031
|
-
|
|
1032
|
-
DiagnosticMessages_1.DiagnosticMessages.duplicateComponentName('comp1')
|
|
1033
|
-
DiagnosticMessages_1.DiagnosticMessages.duplicateComponentName('comp1')
|
|
1139
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [
|
|
1140
|
+
DiagnosticMessages_1.DiagnosticMessages.duplicateComponentName('comp1'),
|
|
1141
|
+
DiagnosticMessages_1.DiagnosticMessages.duplicateComponentName('comp1')
|
|
1034
1142
|
]);
|
|
1035
1143
|
});
|
|
1036
1144
|
it('maintains consistent component selection', () => {
|
|
1037
1145
|
//add comp2 first
|
|
1038
|
-
const comp2 = program.setFile('components/comp2.xml', testHelpers_spec_1.trim `
|
|
1146
|
+
const comp2 = program.setFile('components/comp2.xml', (0, testHelpers_spec_1.trim) `
|
|
1039
1147
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
1040
1148
|
<component name="comp1">
|
|
1041
1149
|
</component>
|
|
1042
1150
|
`);
|
|
1043
|
-
|
|
1151
|
+
(0, chai_config_spec_1.expect)(program.getComponent('comp1').file.destPath).to.equal(comp2.destPath);
|
|
1044
1152
|
//add comp1. it should become the main component with this name
|
|
1045
|
-
const comp1 = program.setFile('components/comp1.xml', testHelpers_spec_1.trim `
|
|
1153
|
+
const comp1 = program.setFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
|
|
1046
1154
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
1047
1155
|
<component name="comp1" extends="Group">
|
|
1048
1156
|
</component>
|
|
1049
1157
|
`);
|
|
1050
|
-
|
|
1158
|
+
(0, chai_config_spec_1.expect)(program.getComponent('comp1').file.destPath).to.equal(comp1.destPath);
|
|
1051
1159
|
//remove comp1, comp2 should be the primary again
|
|
1052
|
-
program.removeFile(util_1.standardizePath `${rootDir}/components/comp1.xml`);
|
|
1053
|
-
|
|
1160
|
+
program.removeFile((0, util_1.standardizePath) `${testHelpers_spec_2.rootDir}/components/comp1.xml`);
|
|
1161
|
+
(0, chai_config_spec_1.expect)(program.getComponent('comp1').file.destPath).to.equal(comp2.destPath);
|
|
1054
1162
|
//add comp3
|
|
1055
|
-
program.setFile('components/comp3.xml', testHelpers_spec_1.trim `
|
|
1163
|
+
program.setFile('components/comp3.xml', (0, testHelpers_spec_1.trim) `
|
|
1056
1164
|
<?xml version="1.0" encoding="utf-8" ?>
|
|
1057
1165
|
<component name="comp1">
|
|
1058
1166
|
</component>
|
|
1059
1167
|
`);
|
|
1060
1168
|
//...the 2nd file should still be main
|
|
1061
|
-
|
|
1169
|
+
(0, chai_config_spec_1.expect)(program.getComponent('comp1').file.destPath).to.equal(comp2.destPath);
|
|
1062
1170
|
});
|
|
1063
1171
|
});
|
|
1064
1172
|
});
|