brighterscript 1.0.0-alpha.44 → 1.0.0-alpha.46
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/bsconfig.schema.json +6 -1
- package/dist/AstValidationSegmenter.js +6 -1
- package/dist/AstValidationSegmenter.js.map +1 -1
- package/dist/BsConfig.d.ts +4 -0
- package/dist/BusyStatusTracker.d.ts +37 -7
- package/dist/BusyStatusTracker.js +73 -8
- package/dist/BusyStatusTracker.js.map +1 -1
- package/dist/Cache.d.ts +0 -4
- package/dist/Cache.js +0 -6
- package/dist/Cache.js.map +1 -1
- package/dist/CodeActionUtil.d.ts +6 -1
- package/dist/CodeActionUtil.js +3 -0
- package/dist/CodeActionUtil.js.map +1 -1
- package/dist/CrossScopeValidator.d.ts +1 -1
- package/dist/CrossScopeValidator.js +8 -7
- package/dist/CrossScopeValidator.js.map +1 -1
- package/dist/DiagnosticCollection.d.ts +19 -5
- package/dist/DiagnosticCollection.js +71 -23
- package/dist/DiagnosticCollection.js.map +1 -1
- package/dist/DiagnosticFilterer.d.ts +14 -1
- package/dist/DiagnosticFilterer.js +130 -12
- package/dist/DiagnosticFilterer.js.map +1 -1
- package/dist/DiagnosticManager.d.ts +11 -1
- package/dist/DiagnosticManager.js +192 -35
- package/dist/DiagnosticManager.js.map +1 -1
- package/dist/DiagnosticMessages.d.ts +19 -7
- package/dist/DiagnosticMessages.js +21 -9
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/LanguageServer.d.ts +82 -139
- package/dist/LanguageServer.js +402 -980
- package/dist/LanguageServer.js.map +1 -1
- package/dist/Logger.d.ts +9 -4
- package/dist/Logger.js +30 -6
- package/dist/Logger.js.map +1 -1
- package/dist/PluginInterface.d.ts +8 -8
- package/dist/PluginInterface.js.map +1 -1
- package/dist/Program.d.ts +23 -4
- package/dist/Program.js +294 -194
- package/dist/Program.js.map +1 -1
- package/dist/ProgramBuilder.d.ts +22 -7
- package/dist/ProgramBuilder.js +44 -21
- package/dist/ProgramBuilder.js.map +1 -1
- package/dist/Scope.d.ts +11 -6
- package/dist/Scope.js +60 -36
- package/dist/Scope.js.map +1 -1
- package/dist/SemanticTokenUtils.js +1 -1
- package/dist/SemanticTokenUtils.js.map +1 -1
- package/dist/astUtils/CachedLookups.js +0 -1
- package/dist/astUtils/CachedLookups.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +4 -4
- package/dist/astUtils/reflection.js +12 -10
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/bscPlugin/BscPlugin.d.ts +3 -3
- package/dist/bscPlugin/BscPlugin.js.map +1 -1
- package/dist/bscPlugin/CallExpressionInfo.js +4 -2
- package/dist/bscPlugin/CallExpressionInfo.js.map +1 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.d.ts +2 -0
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +147 -0
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +44 -0
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.js +15 -15
- package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +82 -5
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/hover/HoverProcessor.js +3 -0
- package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
- package/dist/bscPlugin/hover/HoverProcessor.spec.js +44 -0
- package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +4 -0
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +17 -0
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.js +21 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.spec.js +161 -7
- package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +4 -1
- package/dist/bscPlugin/validation/ScopeValidator.js +166 -63
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.spec.js +21 -9
- package/dist/bscPlugin/validation/ScopeValidator.spec.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 +2 -0
- package/dist/deferred.js +10 -0
- package/dist/deferred.js.map +1 -1
- package/dist/examples/plugins/removePrint.d.ts +2 -2
- package/dist/examples/plugins/removePrint.js.map +1 -1
- package/dist/files/BrsFile.d.ts +1 -1
- package/dist/files/BrsFile.js +22 -42
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +155 -4
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/files/BscFile.d.ts +1 -0
- package/dist/files/LazyFileData.d.ts +1 -0
- package/dist/files/XmlFile.spec.js +1 -1
- package/dist/files/XmlFile.spec.js.map +1 -1
- package/dist/globalCallables.js +189 -189
- package/dist/globalCallables.js.map +1 -1
- package/dist/interfaces.d.ts +56 -13
- package/dist/interfaces.js.map +1 -1
- package/dist/lexer/Lexer.js +1 -1
- package/dist/lexer/Lexer.js.map +1 -1
- package/dist/logging.d.ts +6 -1
- package/dist/logging.js +14 -1
- package/dist/logging.js.map +1 -1
- 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 +231 -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 +167 -0
- package/dist/lsp/Project.js +432 -0
- package/dist/lsp/Project.js.map +1 -0
- package/dist/lsp/Project.spec.d.ts +1 -0
- package/dist/lsp/Project.spec.js +220 -0
- package/dist/lsp/Project.spec.js.map +1 -0
- package/dist/lsp/ProjectManager.d.ts +221 -0
- package/dist/lsp/ProjectManager.js +754 -0
- package/dist/lsp/ProjectManager.js.map +1 -0
- package/dist/lsp/ProjectManager.spec.d.ts +1 -0
- package/dist/lsp/ProjectManager.spec.js +783 -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 +144 -0
- package/dist/lsp/worker/WorkerThreadProject.js +183 -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 +68 -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/parser/Expression.d.ts +1 -0
- package/dist/parser/Expression.js +65 -3
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.spec.js +12 -0
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/Statement.js +2 -2
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +47 -0
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js +51 -5
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/TernaryExpression.spec.js +44 -0
- package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
- package/dist/roku-types/data.json +880 -756
- package/dist/roku-types/index.d.ts +17 -0
- package/dist/types/BooleanType.d.ts +0 -2
- package/dist/types/BooleanType.js +4 -6
- package/dist/types/BooleanType.js.map +1 -1
- package/dist/types/BscType.js +5 -0
- package/dist/types/BscType.js.map +1 -1
- package/dist/types/BuiltInInterfaceAdder.d.ts +1 -0
- package/dist/types/BuiltInInterfaceAdder.js +24 -17
- package/dist/types/BuiltInInterfaceAdder.js.map +1 -1
- package/dist/types/DoubleType.d.ts +0 -2
- package/dist/types/DoubleType.js +4 -6
- package/dist/types/DoubleType.js.map +1 -1
- package/dist/types/DynamicType.d.ts +0 -2
- package/dist/types/DynamicType.js +3 -5
- package/dist/types/DynamicType.js.map +1 -1
- package/dist/types/FloatType.d.ts +0 -2
- package/dist/types/FloatType.js +4 -6
- package/dist/types/FloatType.js.map +1 -1
- package/dist/types/FunctionType.d.ts +0 -2
- package/dist/types/FunctionType.js +5 -7
- package/dist/types/FunctionType.js.map +1 -1
- package/dist/types/IntegerType.d.ts +0 -2
- package/dist/types/IntegerType.js +4 -6
- package/dist/types/IntegerType.js.map +1 -1
- package/dist/types/LongIntegerType.d.ts +0 -2
- package/dist/types/LongIntegerType.js +4 -6
- package/dist/types/LongIntegerType.js.map +1 -1
- package/dist/types/ObjectType.d.ts +3 -3
- package/dist/types/ObjectType.js +6 -8
- package/dist/types/ObjectType.js.map +1 -1
- package/dist/types/StringType.d.ts +0 -2
- package/dist/types/StringType.js +4 -6
- package/dist/types/StringType.js.map +1 -1
- package/dist/types/VoidType.d.ts +0 -2
- package/dist/types/VoidType.js +4 -6
- package/dist/types/VoidType.js.map +1 -1
- package/dist/types/helpers.d.ts +4 -0
- package/dist/types/helpers.js +5 -1
- package/dist/types/helpers.js.map +1 -1
- package/dist/util.d.ts +48 -16
- package/dist/util.js +203 -70
- package/dist/util.js.map +1 -1
- package/dist/validators/ClassValidator.js +2 -2
- package/dist/validators/ClassValidator.js.map +1 -1
- package/package.json +15 -5
- package/CHANGELOG.md +0 -2352
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Project = void 0;
|
|
4
|
+
const ProgramBuilder_1 = require("../ProgramBuilder");
|
|
5
|
+
const EventEmitter = require("eventemitter3");
|
|
6
|
+
const util_1 = require("../util");
|
|
7
|
+
const path = require("path");
|
|
8
|
+
const deferred_1 = require("../deferred");
|
|
9
|
+
const roku_deploy_1 = require("roku-deploy");
|
|
10
|
+
const vscode_languageserver_protocol_1 = require("vscode-languageserver-protocol");
|
|
11
|
+
const vscode_languageserver_protocol_2 = require("vscode-languageserver-protocol");
|
|
12
|
+
const logging_1 = require("../logging");
|
|
13
|
+
const fsExtra = require("fs-extra");
|
|
14
|
+
class Project {
|
|
15
|
+
constructor(options) {
|
|
16
|
+
var _a, _b;
|
|
17
|
+
this.isStandaloneProject = false;
|
|
18
|
+
/**
|
|
19
|
+
* Gets resolved when the project has finished activating
|
|
20
|
+
*/
|
|
21
|
+
this.activationDeferred = new deferred_1.Deferred();
|
|
22
|
+
this.emitter = new EventEmitter();
|
|
23
|
+
this.disposables = [];
|
|
24
|
+
this.logger = (_a = options === null || options === void 0 ? void 0 : options.logger) !== null && _a !== void 0 ? _a : (0, logging_1.createLogger)({
|
|
25
|
+
//when running inside a worker thread, we don't want to use colors
|
|
26
|
+
enableColor: false
|
|
27
|
+
});
|
|
28
|
+
this.projectIdentifier = (_b = options === null || options === void 0 ? void 0 : options.projectIdentifier) !== null && _b !== void 0 ? _b : '';
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Activates this project. Every call to `activate` should completely reset the project, clear all used ram and start from scratch.
|
|
32
|
+
*/
|
|
33
|
+
async activate(options) {
|
|
34
|
+
this.logger.info('Project.activate', options.projectPath);
|
|
35
|
+
this.activateOptions = options;
|
|
36
|
+
this.projectPath = options.projectPath ? util_1.default.standardizePath(options.projectPath) : options.projectPath;
|
|
37
|
+
this.workspaceFolder = options.workspaceFolder ? util_1.default.standardizePath(options.workspaceFolder) : options.workspaceFolder;
|
|
38
|
+
this.projectNumber = options.projectNumber;
|
|
39
|
+
this.bsconfigPath = await this.getConfigFilePath(options);
|
|
40
|
+
this.builder = new ProgramBuilder_1.ProgramBuilder({
|
|
41
|
+
//share our logger with ProgramBuilder, which will keep our level in sync with the one in the program
|
|
42
|
+
logger: this.logger
|
|
43
|
+
});
|
|
44
|
+
this.builder.logger.prefix = `[${this.projectIdentifier}]`;
|
|
45
|
+
this.disposables.push(this.builder);
|
|
46
|
+
let cwd;
|
|
47
|
+
//if the config file exists, use it and its folder as cwd
|
|
48
|
+
if (this.bsconfigPath && await util_1.default.pathExists(this.bsconfigPath)) {
|
|
49
|
+
cwd = path.dirname(this.bsconfigPath);
|
|
50
|
+
//load the bsconfig file contents (used for performance optimizations externally)
|
|
51
|
+
try {
|
|
52
|
+
this.bsconfigFileContents = (await fsExtra.readFile(this.bsconfigPath)).toString();
|
|
53
|
+
}
|
|
54
|
+
catch (_a) { }
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
cwd = this.projectPath;
|
|
58
|
+
//config file doesn't exist...let `brighterscript` resolve the default way
|
|
59
|
+
this.bsconfigPath = undefined;
|
|
60
|
+
}
|
|
61
|
+
const builderOptions = {
|
|
62
|
+
cwd: cwd,
|
|
63
|
+
project: this.bsconfigPath,
|
|
64
|
+
watch: false,
|
|
65
|
+
createPackage: false,
|
|
66
|
+
deploy: false,
|
|
67
|
+
copyToStaging: false,
|
|
68
|
+
showDiagnosticsInConsole: false,
|
|
69
|
+
validate: false
|
|
70
|
+
};
|
|
71
|
+
//Assign .files (mostly used for standalone projects) if available, as a dedicated assignment because `undefined` overrides the default value in the `bsconfig.json`
|
|
72
|
+
if (options.files) {
|
|
73
|
+
builderOptions.files = roku_deploy_1.rokuDeploy.normalizeFilesArray(options.files);
|
|
74
|
+
}
|
|
75
|
+
//run the builder to initialize the program. Skip validation for now, we'll trigger it soon in a more cancellable way
|
|
76
|
+
await this.builder.run(Object.assign(Object.assign({}, builderOptions), { validate: false,
|
|
77
|
+
//don't show diagnostics in the console since this is run via the language server, they're presented in a different way
|
|
78
|
+
showDiagnosticsInConsole: false }));
|
|
79
|
+
//flush diagnostics every time the program finishes validating
|
|
80
|
+
//this plugin must be added LAST to the program to ensure we can see all diagnostics
|
|
81
|
+
this.builder.plugins.add({
|
|
82
|
+
name: 'bsc-language-server',
|
|
83
|
+
afterProgramValidate: () => {
|
|
84
|
+
const diagnostics = this.getDiagnostics();
|
|
85
|
+
this.emit('diagnostics', {
|
|
86
|
+
diagnostics: diagnostics
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
//trigger a validation (but don't wait for it. That way we can cancel it sooner if we get new incoming data or requests)
|
|
91
|
+
void this.validate();
|
|
92
|
+
this.activationDeferred.resolve();
|
|
93
|
+
return {
|
|
94
|
+
bsconfigPath: this.bsconfigPath,
|
|
95
|
+
logLevel: this.builder.program.options.logLevel,
|
|
96
|
+
rootDir: this.builder.program.options.rootDir,
|
|
97
|
+
filePatterns: this.filePatterns
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
get rootDir() {
|
|
101
|
+
return this.builder.program.options.rootDir;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* The file patterns from bsconfig.json that were used to find all files for this project
|
|
105
|
+
*/
|
|
106
|
+
get filePatterns() {
|
|
107
|
+
if (!this.builder) {
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
const patterns = roku_deploy_1.rokuDeploy.normalizeFilesArray(this.builder.program.options.files);
|
|
111
|
+
return patterns.map(x => {
|
|
112
|
+
return typeof x === 'string' ? x : x.src;
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Promise that resolves when the project finishes activating
|
|
117
|
+
* @returns a promise that resolves when the project finishes activating
|
|
118
|
+
*/
|
|
119
|
+
whenActivated() {
|
|
120
|
+
return this.activationDeferred.promise;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Validate the project. This will trigger a full validation on any scopes that were changed since the last validation,
|
|
124
|
+
* and will also eventually emit a new 'diagnostics' event that includes all diagnostics for the project.
|
|
125
|
+
*
|
|
126
|
+
* This will cancel any currently running validation and then run a new one.
|
|
127
|
+
*/
|
|
128
|
+
async validate() {
|
|
129
|
+
this.logger.debug('Project.validate');
|
|
130
|
+
this.cancelValidate();
|
|
131
|
+
//store
|
|
132
|
+
this.validationCancelToken = new vscode_languageserver_protocol_2.CancellationTokenSource();
|
|
133
|
+
try {
|
|
134
|
+
this.emit('validate-begin', {});
|
|
135
|
+
await this.builder.program.validate({
|
|
136
|
+
async: true,
|
|
137
|
+
cancellationToken: this.validationCancelToken.token
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
finally {
|
|
141
|
+
this.emit('validate-end', {});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Cancel any active running validation
|
|
146
|
+
*/
|
|
147
|
+
cancelValidate() {
|
|
148
|
+
var _a;
|
|
149
|
+
(_a = this.validationCancelToken) === null || _a === void 0 ? void 0 : _a.cancel();
|
|
150
|
+
delete this.validationCancelToken;
|
|
151
|
+
}
|
|
152
|
+
getDiagnostics() {
|
|
153
|
+
const diagnostics = this.builder.getDiagnostics();
|
|
154
|
+
return diagnostics.map(x => {
|
|
155
|
+
const srcPath = util_1.default.uriToPath(x.location.uri);
|
|
156
|
+
return Object.assign(Object.assign({}, util_1.default.toDiagnostic(x, srcPath)), { uri: x.location.uri });
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Promise that resolves the next time the system is idle. If the system is already idle, it will resolve immediately
|
|
161
|
+
*/
|
|
162
|
+
async onIdle() {
|
|
163
|
+
await Promise.all([
|
|
164
|
+
this.activationDeferred.promise
|
|
165
|
+
]);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Add or replace the in-memory contents of the file at the specified path. This is typically called as the user is typing.
|
|
169
|
+
* This will cancel any pending validation cycles and queue a future validation cycle instead.
|
|
170
|
+
*/
|
|
171
|
+
async applyFileChanges(documentActions) {
|
|
172
|
+
var _a, _b;
|
|
173
|
+
this.logger.debug('Project.applyFileChanges', documentActions.map(x => x.srcPath));
|
|
174
|
+
await this.onIdle();
|
|
175
|
+
let didChangeFiles = false;
|
|
176
|
+
const result = [...documentActions];
|
|
177
|
+
// eslint-disable-next-line @typescript-eslint/prefer-for-of
|
|
178
|
+
for (let i = 0; i < result.length; i++) {
|
|
179
|
+
const action = result[i];
|
|
180
|
+
let didChangeThisFile = false;
|
|
181
|
+
//if this is a `set` and the file matches the project's files array, set it
|
|
182
|
+
if (action.type === 'set' && Project.willAcceptFile(action.srcPath, this.builder.program.options.files, this.builder.program.options.rootDir)) {
|
|
183
|
+
//load the file contents from disk if we don't have an in memory copy
|
|
184
|
+
const fileContents = (_a = action.fileContents) !== null && _a !== void 0 ? _a : (_b = util_1.default.readFileSync(action.srcPath)) === null || _b === void 0 ? void 0 : _b.toString();
|
|
185
|
+
//if we got file contents, set the file on the program
|
|
186
|
+
if (fileContents !== undefined) {
|
|
187
|
+
didChangeThisFile = this.setFile(action.srcPath, fileContents);
|
|
188
|
+
//this file was accepted by the program
|
|
189
|
+
action.status = 'accepted';
|
|
190
|
+
//if we can't get file contents, apply this as a delete
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
action.status = 'accepted';
|
|
194
|
+
result.push({
|
|
195
|
+
id: action.id,
|
|
196
|
+
srcPath: action.srcPath,
|
|
197
|
+
type: 'delete',
|
|
198
|
+
status: undefined,
|
|
199
|
+
allowStandaloneProject: false
|
|
200
|
+
});
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
//try to delete the file or directory
|
|
204
|
+
}
|
|
205
|
+
else if (action.type === 'delete') {
|
|
206
|
+
didChangeThisFile = this.removeFileOrDirectory(action.srcPath);
|
|
207
|
+
//if we deleted at least one file, mark this action as accepted
|
|
208
|
+
action.status = didChangeThisFile ? 'accepted' : 'rejected';
|
|
209
|
+
//we did not handle this action, so reject
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
action.status = 'rejected';
|
|
213
|
+
}
|
|
214
|
+
didChangeFiles = didChangeFiles || didChangeThisFile;
|
|
215
|
+
}
|
|
216
|
+
if (didChangeFiles) {
|
|
217
|
+
//trigger a validation (but don't wait for it. That way we can cancel it sooner if we get new incoming data or requests)
|
|
218
|
+
this.validate().catch(e => this.logger.error(e));
|
|
219
|
+
}
|
|
220
|
+
this.logger.debug('project.applyFileChanges done', documentActions.map(x => x.srcPath));
|
|
221
|
+
return result;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Determine if this project will accept the file at the specified path (i.e. does it match a pattern in the project's files array)
|
|
225
|
+
*/
|
|
226
|
+
static willAcceptFile(srcPath, files, rootDir) {
|
|
227
|
+
srcPath = util_1.default.standardizePath(srcPath);
|
|
228
|
+
if (roku_deploy_1.rokuDeploy.getDestPath(srcPath, files, rootDir) !== undefined) {
|
|
229
|
+
return true;
|
|
230
|
+
//is this exact path in the `files` array? (this check is mostly for standalone projects)
|
|
231
|
+
}
|
|
232
|
+
else if (files.find(x => (0, util_1.standardizePath) `${x.src}` === srcPath)) {
|
|
233
|
+
return true;
|
|
234
|
+
}
|
|
235
|
+
return false;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Set new contents for a file. This is safe to call any time. Changes will be queued and flushed at the correct times
|
|
239
|
+
* during the program's lifecycle flow
|
|
240
|
+
* @param srcPath absolute source path of the file
|
|
241
|
+
* @param fileContents the text contents of the file
|
|
242
|
+
* @returns true if this program accepted and added the file. false if the program didn't want the file, or if the contents didn't change
|
|
243
|
+
*/
|
|
244
|
+
setFile(srcPath, fileContents) {
|
|
245
|
+
this.logger.debug('Project.setFile', { srcPath: srcPath, fileContentsLength: fileContents.length });
|
|
246
|
+
const { files, rootDir } = this.builder.program.options;
|
|
247
|
+
//get the dest path for this file.
|
|
248
|
+
let destPath = roku_deploy_1.rokuDeploy.getDestPath(srcPath, files, rootDir);
|
|
249
|
+
//if we have a file and the contents haven't changed
|
|
250
|
+
let file = this.builder.program.getFile(destPath);
|
|
251
|
+
if (file && file.fileContents === fileContents) {
|
|
252
|
+
return false;
|
|
253
|
+
}
|
|
254
|
+
//if we got a dest path, then the program wants this file
|
|
255
|
+
if (destPath) {
|
|
256
|
+
this.builder.program.setFile({
|
|
257
|
+
src: srcPath,
|
|
258
|
+
dest: destPath
|
|
259
|
+
}, fileContents);
|
|
260
|
+
return true;
|
|
261
|
+
}
|
|
262
|
+
return false;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Remove the in-memory file at the specified path. This is typically called when the user (or file system watcher) triggers a file delete
|
|
266
|
+
* @param srcPath absolute path to the File
|
|
267
|
+
* @returns true if we found and removed at least one file, or false if no files were removed
|
|
268
|
+
*/
|
|
269
|
+
removeFileOrDirectory(srcPath) {
|
|
270
|
+
var _a;
|
|
271
|
+
this.logger.debug('Project.removeFileOrDirectory', srcPath);
|
|
272
|
+
srcPath = util_1.default.standardizePath(srcPath);
|
|
273
|
+
//if this is a direct file match, remove the file
|
|
274
|
+
if (this.builder.program.hasFile(srcPath)) {
|
|
275
|
+
this.builder.program.removeFile(srcPath);
|
|
276
|
+
return true;
|
|
277
|
+
}
|
|
278
|
+
//maybe this is a directory. Remove all files that start with this path
|
|
279
|
+
let removedSomeFiles = false;
|
|
280
|
+
let lowerSrcPath = srcPath.toLowerCase();
|
|
281
|
+
for (let file of Object.values(this.builder.program.files)) {
|
|
282
|
+
//if the file path starts with the parent path and the file path does not exactly match the folder path
|
|
283
|
+
if ((_a = file.srcPath) === null || _a === void 0 ? void 0 : _a.toLowerCase().startsWith(lowerSrcPath)) {
|
|
284
|
+
this.logger.debug('Project.removeFileOrDirectory removing file because it matches the given directory', { dir: srcPath, srcPath: file.srcPath });
|
|
285
|
+
this.builder.program.removeFile(file.srcPath, false);
|
|
286
|
+
removedSomeFiles = true;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
//return true if we removed at least one file
|
|
290
|
+
return removedSomeFiles;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Get the full list of semantic tokens for the given file path
|
|
294
|
+
* @param options options for getting semantic tokens
|
|
295
|
+
* @param options.srcPath absolute path to the source file
|
|
296
|
+
*/
|
|
297
|
+
async getSemanticTokens(options) {
|
|
298
|
+
await this.onIdle();
|
|
299
|
+
if (this.builder.program.hasFile(options.srcPath)) {
|
|
300
|
+
return this.builder.program.getSemanticTokens(options.srcPath);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
async transpileFile(options) {
|
|
304
|
+
await this.onIdle();
|
|
305
|
+
if (this.builder.program.hasFile(options.srcPath)) {
|
|
306
|
+
return this.builder.program.getTranspiledFileContents(options.srcPath);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
async getHover(options) {
|
|
310
|
+
await this.onIdle();
|
|
311
|
+
if (this.builder.program.hasFile(options.srcPath)) {
|
|
312
|
+
return this.builder.program.getHover(options.srcPath, options.position);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
async getDefinition(options) {
|
|
316
|
+
await this.onIdle();
|
|
317
|
+
if (this.builder.program.hasFile(options.srcPath)) {
|
|
318
|
+
return this.builder.program.getDefinition(options.srcPath, options.position);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
async getSignatureHelp(options) {
|
|
322
|
+
await this.onIdle();
|
|
323
|
+
if (this.builder.program.hasFile(options.srcPath)) {
|
|
324
|
+
return this.builder.program.getSignatureHelp(options.srcPath, options.position);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
async getDocumentSymbol(options) {
|
|
328
|
+
await this.onIdle();
|
|
329
|
+
if (this.builder.program.hasFile(options.srcPath)) {
|
|
330
|
+
return this.builder.program.getDocumentSymbols(options.srcPath);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
async getWorkspaceSymbol() {
|
|
334
|
+
await this.onIdle();
|
|
335
|
+
const result = this.builder.program.getWorkspaceSymbols();
|
|
336
|
+
return result;
|
|
337
|
+
}
|
|
338
|
+
async getReferences(options) {
|
|
339
|
+
await this.onIdle();
|
|
340
|
+
if (this.builder.program.hasFile(options.srcPath)) {
|
|
341
|
+
return this.builder.program.getReferences(options.srcPath, options.position);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
async getCodeActions(options) {
|
|
345
|
+
var _a;
|
|
346
|
+
await this.onIdle();
|
|
347
|
+
if (this.builder.program.hasFile(options.srcPath)) {
|
|
348
|
+
const codeActions = this.builder.program.getCodeActions(options.srcPath, options.range);
|
|
349
|
+
//clone each diagnostic since certain diagnostics can have circular reference properties that kill the language server if serialized
|
|
350
|
+
for (const codeAction of codeActions !== null && codeActions !== void 0 ? codeActions : []) {
|
|
351
|
+
if (codeAction.diagnostics) {
|
|
352
|
+
codeAction.diagnostics = (_a = codeAction.diagnostics) === null || _a === void 0 ? void 0 : _a.map(x => util_1.default.toDiagnostic(x, options.srcPath));
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
return codeActions;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
async getCompletions(options) {
|
|
359
|
+
await this.onIdle();
|
|
360
|
+
this.logger.debug('Project.getCompletions', options.srcPath, options.position);
|
|
361
|
+
if (this.builder.program.hasFile(options.srcPath)) {
|
|
362
|
+
const completions = this.builder.program.getCompletions(options.srcPath, options.position);
|
|
363
|
+
const result = vscode_languageserver_protocol_1.CompletionList.create(completions);
|
|
364
|
+
result.itemDefaults = {
|
|
365
|
+
commitCharacters: ['.']
|
|
366
|
+
};
|
|
367
|
+
return result;
|
|
368
|
+
}
|
|
369
|
+
return undefined;
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Find the path to the bsconfig.json file for this project
|
|
373
|
+
* @returns path to bsconfig.json, or undefined if unable to find it
|
|
374
|
+
*/
|
|
375
|
+
async getConfigFilePath(config) {
|
|
376
|
+
let configFilePath;
|
|
377
|
+
//if there's a setting, we need to find the file or show error if it can't be found
|
|
378
|
+
if (config === null || config === void 0 ? void 0 : config.configFilePath) {
|
|
379
|
+
configFilePath = path.resolve(config.projectPath, config.configFilePath);
|
|
380
|
+
if (await util_1.default.pathExists(configFilePath)) {
|
|
381
|
+
return util_1.default.standardizePath(configFilePath);
|
|
382
|
+
}
|
|
383
|
+
else {
|
|
384
|
+
this.emit('critical-failure', {
|
|
385
|
+
message: `Cannot find config file specified in user or workspace settings at '${configFilePath}'`
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
//the rest of these require a projectPath, so return early if we don't have one
|
|
390
|
+
if (!(config === null || config === void 0 ? void 0 : config.projectPath)) {
|
|
391
|
+
return undefined;
|
|
392
|
+
}
|
|
393
|
+
//default to config file path found in the root of the workspace
|
|
394
|
+
configFilePath = (0, util_1.standardizePath) `${config.projectPath}/bsconfig.json`;
|
|
395
|
+
if (await util_1.default.pathExists(configFilePath)) {
|
|
396
|
+
return util_1.default.standardizePath(configFilePath);
|
|
397
|
+
}
|
|
398
|
+
//look for the deprecated `brsconfig.json` file
|
|
399
|
+
configFilePath = (0, util_1.standardizePath) `${config.projectPath}/brsconfig.json`;
|
|
400
|
+
if (await util_1.default.pathExists(configFilePath)) {
|
|
401
|
+
return util_1.default.standardizePath(configFilePath);
|
|
402
|
+
}
|
|
403
|
+
//no config file could be found
|
|
404
|
+
return undefined;
|
|
405
|
+
}
|
|
406
|
+
on(eventName, handler) {
|
|
407
|
+
this.emitter.on(eventName, handler);
|
|
408
|
+
return () => {
|
|
409
|
+
this.emitter.removeListener(eventName, handler);
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
async emit(eventName, data) {
|
|
413
|
+
//emit these events on next tick, otherwise they will be processed immediately which could cause issues
|
|
414
|
+
await util_1.default.sleep(0);
|
|
415
|
+
this.emitter.emit(eventName, data);
|
|
416
|
+
//emit the 'all' event
|
|
417
|
+
this.emitter.emit('all', eventName, data);
|
|
418
|
+
}
|
|
419
|
+
dispose() {
|
|
420
|
+
var _a, _b, _c, _d;
|
|
421
|
+
for (let disposable of (_a = this.disposables) !== null && _a !== void 0 ? _a : []) {
|
|
422
|
+
(_b = disposable === null || disposable === void 0 ? void 0 : disposable.dispose) === null || _b === void 0 ? void 0 : _b.call(disposable);
|
|
423
|
+
}
|
|
424
|
+
this.disposables = [];
|
|
425
|
+
(_c = this.emitter) === null || _c === void 0 ? void 0 : _c.removeAllListeners();
|
|
426
|
+
if (((_d = this.activationDeferred) === null || _d === void 0 ? void 0 : _d.isCompleted) === false) {
|
|
427
|
+
this.activationDeferred.reject(new Error('Project was disposed, activation has been cancelled'));
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
exports.Project = Project;
|
|
432
|
+
//# sourceMappingURL=Project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Project.js","sourceRoot":"","sources":["../../src/lsp/Project.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AACnD,8CAA8C;AAC9C,kCAAqD;AACrD,6BAA6B;AAG7B,0CAAuC;AAEvC,6CAAyC;AAEzC,mFAAgE;AAChE,mFAAyE;AAKzE,wCAA0C;AAC1C,oCAAoC;AAIpC,MAAa,OAAO;IAChB,YACI,OAGC;;QA6FE,wBAAmB,GAAG,KAAK,CAAC;QAyBnC;;WAEG;QACK,uBAAkB,GAAG,IAAI,mBAAQ,EAAE,CAAC;QA6YpC,YAAO,GAAG,IAAI,YAAY,EAAE,CAAC;QAE9B,gBAAW,GAA8B,EAAE,CAAC;QAtgB/C,IAAI,CAAC,MAAM,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,mCAAI,IAAA,sBAAY,EAAC;YAC1C,kEAAkE;YAClE,WAAW,EAAE,KAAK;SACrB,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,iBAAiB,mCAAI,EAAE,CAAC;IAC9D,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ,CAAC,OAAsB;QACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAE1D,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,cAAI,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;QACzG,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,cAAI,CAAC,eAAe,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;QACzH,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAE1D,IAAI,CAAC,OAAO,GAAG,IAAI,+BAAc,CAAC;YAC9B,qGAAqG;YACrG,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC;QAC3D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpC,IAAI,GAAW,CAAC;QAChB,yDAAyD;QACzD,IAAI,IAAI,CAAC,YAAY,IAAI,MAAM,cAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YAC/D,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACtC,iFAAiF;YACjF,IAAI;gBACA,IAAI,CAAC,oBAAoB,GAAG,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;aACtF;YAAC,WAAM,GAAG;SAEd;aAAM;YACH,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;YACvB,0EAA0E;YAC1E,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;SACjC;QAED,MAAM,cAAc,GAAG;YACnB,GAAG,EAAE,GAAG;YACR,OAAO,EAAE,IAAI,CAAC,YAAY;YAC1B,KAAK,EAAE,KAAK;YACZ,aAAa,EAAE,KAAK;YACpB,MAAM,EAAE,KAAK;YACb,aAAa,EAAE,KAAK;YACpB,wBAAwB,EAAE,KAAK;YAC/B,QAAQ,EAAE,KAAK;SACN,CAAC;QAEd,oKAAoK;QACpK,IAAI,OAAO,CAAC,KAAK,EAAE;YACf,cAAc,CAAC,KAAK,GAAG,wBAAU,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACxE;QAED,qHAAqH;QACrH,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,iCACf,cAAc,KACjB,QAAQ,EAAE,KAAK;YACf,uHAAuH;YACvH,wBAAwB,EAAE,KAAK,IACjC,CAAC;QAEH,8DAA8D;QAC9D,oFAAoF;QACpF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;YACrB,IAAI,EAAE,qBAAqB;YAC3B,oBAAoB,EAAE,GAAG,EAAE;gBACvB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC1C,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;oBACrB,WAAW,EAAE,WAAW;iBAC3B,CAAC,CAAC;YACP,CAAC;SACM,CAAC,CAAC;QAEb,wHAAwH;QACxH,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;QAErB,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAElC,OAAO;YACH,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,QAAoB;YAC3D,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO;YAC7C,YAAY,EAAE,IAAI,CAAC,YAAY;SAClC,CAAC;IACN,CAAC;IAWD,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;IAChD,CAAC;IACD;;OAEG;IACH,IAAW,YAAY;QACnB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,OAAO,SAAS,CAAC;SACpB;QACD,MAAM,QAAQ,GAAG,wBAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpF,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACpB,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC7C,CAAC,CAAC,CAAC;IACP,CAAC;IAOD;;;OAGG;IACI,aAAa;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;IAC3C,CAAC;IAID;;;;;OAKG;IACI,KAAK,CAAC,QAAQ;QACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAEtC,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO;QACP,IAAI,CAAC,qBAAqB,GAAG,IAAI,wDAAuB,EAAE,CAAC;QAE3D,IAAI;YACA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAChC,KAAK,EAAE,IAAI;gBACX,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,CAAC,KAAK;aACtD,CAAC,CAAC;SACN;gBAAS;YACN,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;SACjC;IACL,CAAC;IAED;;OAEG;IACI,cAAc;;QACjB,MAAA,IAAI,CAAC,qBAAqB,0CAAE,MAAM,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACtC,CAAC;IAEM,cAAc;QACjB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAClD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACvB,MAAM,OAAO,GAAG,cAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC/C,uCACO,cAAI,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,KAChC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,IACrB;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,MAAM;QAChB,MAAM,OAAO,CAAC,GAAG,CAAC;YACd,IAAI,CAAC,kBAAkB,CAAC,OAAO;SAClC,CAAC,CAAC;IACP,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,gBAAgB,CAAC,eAAiC;;QAC3D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAEnF,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEpB,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,MAAM,MAAM,GAAG,CAAC,GAAG,eAAe,CAA+B,CAAC;QAClE,4DAA4D;QAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,iBAAiB,GAAG,KAAK,CAAC;YAC9B,2EAA2E;YAC3E,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC3I,qEAAqE;gBACrE,MAAM,YAAY,GAAG,MAAA,MAAM,CAAC,YAAY,mCAAI,MAAA,cAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,0CAAE,QAAQ,EAAE,CAAC;gBAE1F,sDAAsD;gBACtD,IAAI,YAAY,KAAK,SAAS,EAAE;oBAC5B,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;oBAC/D,uCAAuC;oBACvC,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;oBAE3B,uDAAuD;iBAC1D;qBAAM;oBACH,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC;wBACR,EAAE,EAAE,MAAM,CAAC,EAAE;wBACb,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,IAAI,EAAE,QAAQ;wBACd,MAAM,EAAE,SAAS;wBACjB,sBAAsB,EAAE,KAAK;qBAChC,CAAC,CAAC;oBACH,SAAS;iBACZ;gBAED,qCAAqC;aACxC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACjC,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC/D,+DAA+D;gBAC/D,MAAM,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;gBAE5D,0CAA0C;aAC7C;iBAAM;gBACH,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;aAC9B;YACD,cAAc,GAAG,cAAc,IAAI,iBAAiB,CAAC;SACxD;QACD,IAAI,cAAc,EAAE;YAChB,wHAAwH;YACxH,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACpD;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAExF,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,cAAc,CAAC,OAAe,EAAE,KAAwB,EAAE,OAAe;QACnF,OAAO,GAAG,cAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,wBAAU,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,SAAS,EAAE;YAC/D,OAAO,IAAI,CAAC;YACZ,yFAAyF;SAC5F;aAAM,IAAK,KAAiC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,sBAAC,EAAA,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,OAAO,CAAC,EAAE;YAC9E,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;;;;OAMG;IACK,OAAO,CAAC,OAAe,EAAE,YAAoB;QACjD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QAEpG,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;QAExD,kCAAkC;QAClC,IAAI,QAAQ,GAAG,wBAAU,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAE/D,oDAAoD;QACpD,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAoB,QAAQ,CAAC,CAAC;QACrE,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,EAAE;YAC5C,OAAO,KAAK,CAAC;SAChB;QAED,yDAAyD;QACzD,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CACxB;gBACI,GAAG,EAAE,OAAO;gBACZ,IAAI,EAAE,QAAQ;aACjB,EACD,YAAY,CACf,CAAC;YACF,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACK,qBAAqB,CAAC,OAAe;;QACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAC;QAE5D,OAAO,GAAG,cAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACxC,iDAAiD;QACjD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACvC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC;SACf;QAED,uEAAuE;QACvE,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,IAAI,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACzC,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxD,uGAAuG;YACvG,IAAI,MAAA,IAAI,CAAC,OAAO,0CAAE,WAAW,GAAG,UAAU,CAAC,YAAY,CAAC,EAAE;gBACtD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oFAAoF,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;gBAEjJ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACrD,gBAAgB,GAAG,IAAI,CAAC;aAC3B;SACJ;QACD,6CAA6C;QAC7C,OAAO,gBAAgB,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,iBAAiB,CAAC,OAA4B;QACvD,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SAClE;IACL,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,OAA4B;QACnD,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SAC1E;IACL,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,OAAgD;QAClE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;SAC3E;IACL,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,OAAgD;QACvE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;SAChF;IACL,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,OAAgD;QAC1E,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;SACnF;IACL,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,OAA4B;QACvD,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SACnE;IACL,CAAC;IAEM,KAAK,CAAC,kBAAkB;QAC3B,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;QAC1D,OAAO,MAAM,CAAC;IAClB,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,OAAgD;QACvE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;SAChF;IACL,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,OAA0C;;QAClE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEpB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACxF,oIAAoI;YACpI,KAAK,MAAM,UAAU,IAAI,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,EAAE,EAAE;gBACxC,IAAI,UAAU,CAAC,WAAW,EAAE;oBACxB,UAAU,CAAC,WAAW,GAAG,MAAA,UAAU,CAAC,WAAW,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAI,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;iBACpG;aACJ;YACD,OAAO,WAAW,CAAC;SACtB;IACL,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,OAAgD;QACxE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE/E,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC3F,MAAM,MAAM,GAAG,+CAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAClD,MAAM,CAAC,YAAY,GAAG;gBAClB,gBAAgB,EAAE,CAAC,GAAG,CAAC;aAC1B,CAAC;YACF,OAAO,MAAM,CAAC;SACjB;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAyCD;;;OAGG;IACK,KAAK,CAAC,iBAAiB,CAAC,MAAwD;QACpF,IAAI,cAAsB,CAAC;QAC3B,mFAAmF;QACnF,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,EAAE;YACxB,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;YACzE,IAAI,MAAM,cAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;gBACvC,OAAO,cAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;aAC/C;iBAAM;gBACH,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;oBAC1B,OAAO,EAAE,uEAAuE,cAAc,GAAG;iBACpG,CAAC,CAAC;aACN;SACJ;QAED,+EAA+E;QAC/E,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,CAAA,EAAE;YACtB,OAAO,SAAS,CAAC;SACpB;QAED,gEAAgE;QAChE,cAAc,GAAG,IAAA,sBAAC,EAAA,GAAG,MAAM,CAAC,WAAW,gBAAgB,CAAC;QACxD,IAAI,MAAM,cAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;YACvC,OAAO,cAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;SAC/C;QAED,+CAA+C;QAC/C,cAAc,GAAG,IAAA,sBAAC,EAAA,GAAG,MAAM,CAAC,WAAW,iBAAiB,CAAC;QACzD,IAAI,MAAM,cAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;YACvC,OAAO,cAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;SAC/C;QAED,+BAA+B;QAC/B,OAAO,SAAS,CAAC;IACrB,CAAC;IAOM,EAAE,CAAC,SAAiB,EAAE,OAA+C;QACxE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,OAAc,CAAC,CAAC;QAC3C,OAAO,GAAG,EAAE;YACR,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,OAAc,CAAC,CAAC;QAC3D,CAAC,CAAC;IACN,CAAC;IAMO,KAAK,CAAC,IAAI,CAAC,SAAiB,EAAE,IAAK;QACvC,uGAAuG;QACvG,MAAM,cAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACnC,sBAAsB;QACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAKM,OAAO;;QACV,KAAK,IAAI,UAAU,IAAI,MAAA,IAAI,CAAC,WAAW,mCAAI,EAAE,EAAE;YAC3C,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,0DAAI,CAAC;SAC3B;QACD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QAEtB,MAAA,IAAI,CAAC,OAAO,0CAAE,kBAAkB,EAAE,CAAC;QACnC,IAAI,CAAA,MAAA,IAAI,CAAC,kBAAkB,0CAAE,WAAW,MAAK,KAAK,EAAE;YAChD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAC1B,IAAI,KAAK,CAAC,qDAAqD,CAAC,CACnE,CAAC;SACL;IACL,CAAC;CACJ;AA5hBD,0BA4hBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|