From d125640fe703f418428ae9bcbd737b1108fb2273 Mon Sep 17 00:00:00 2001 From: obvTiger Date: Tue, 1 Apr 2025 15:22:15 +0200 Subject: [PATCH] beta/code-blocks (#1) Reviewed-on: https://git.eplg.services/epilogue/blueprint/pulls/1 Co-authored-by: obvTiger Co-committed-by: obvTiger --- examples/reactive-example.bp | 190 ++++++++++++ examples/server-form-example.bp | 163 +++++++++++ extension/blueprint-language-0.0.1.vsix | Bin 584343 -> 586172 bytes extension/client/out/.tsbuildinfo | 2 +- extension/out/tsconfig.tsbuildinfo | 2 +- extension/server/out/.tsbuildinfo | 2 +- extension/server/out/server.js | 78 ++++- extension/server/out/server.js.map | 2 +- extension/server/src/server.ts | 83 +++++- extension/syntaxes/blueprint.tmLanguage.json | 23 +- index.js | 23 ++ lib/ASTBuilder.js | 35 +++ lib/BlueprintBuilder.js | 16 + lib/BlueprintCompiler.js | 9 + lib/HTMLGenerator.js | 136 ++++++++- lib/StandardElementGenerator.js | 179 ++++++++++++ lib/TokenParser.js | 136 +++++++++ lib/generators/ButtonElementGenerator.js | 16 + lib/generators/InputElementGenerator.js | 21 +- lib/generators/JavaScriptGenerator.js | 239 +++++++++++++++ lib/generators/ServerCodeGenerator.js | 236 +++++++++++++++ lib/generators/StandardElementGenerator.js | 16 + lib/mappings.js | 2 +- lib/server.js | 291 ++++++++++++++----- lib/utils/StringUtils.js | 17 +- package.json | 1 + 26 files changed, 1816 insertions(+), 102 deletions(-) create mode 100644 examples/reactive-example.bp create mode 100644 examples/server-form-example.bp create mode 100644 index.js create mode 100644 lib/StandardElementGenerator.js create mode 100644 lib/generators/JavaScriptGenerator.js create mode 100644 lib/generators/ServerCodeGenerator.js diff --git a/examples/reactive-example.bp b/examples/reactive-example.bp new file mode 100644 index 0000000..67dc39a --- /dev/null +++ b/examples/reactive-example.bp @@ -0,0 +1,190 @@ +page(favicon:"/favicon.ico") { + title { "Blueprint - Reactive Example" } + description { "Example of reactive values in Blueprint" } + keywords { "blueprint, javascript, reactive, state" } + author { "Blueprint Team" } +} + +navbar { + horizontal { + link(href:index) { text(bold) { "Blueprint" } } + links { + link(href:index) { "Home" } + link(href:examples) { "Examples" } + link(href:docs) { "Docs" } + } + } +} + +section(wide, centered) { + vertical(centered) { + title(huge) { "Reactive Values Demo" } + text { "Demonstration of reactive state management in Blueprint" } + } +} + +section(wide) { + title { "Counter Example" } + + vertical(centered) { + // Notice the ID uses underscore format. - is not allowed + text(id:counter_value) { "0" } + + horizontal(centered) { + button-secondary(id:decrease_btn) { + "Decrease" + + @client { + // Use the reactive counter_value with numberValue + const currentValue = counter_value.numberValue; + counter_value.setNumber(currentValue - 1); + console.log("Counter decreased to", currentValue - 1); + } + } + + button(id:increase_btn) { + "Increase" + + @client { + // Use the reactive counter_value with numberValue + const currentValue = counter_value.numberValue; + counter_value.setNumber(currentValue + 1); + console.log("Counter increased to", currentValue + 1); + } + } + } + } +} + +section(wide) { + title { "Color Changer with Reactive Elements" } + + vertical(centered) { + // Element with explicit ID that will be styled + card(id:color_target, raised) { + title { "Change My Background" } + text { "Click the buttons below to change my background color" } + } + + // Display the current color + text(subtle, id:color_display) { "Current color: None" } + + horizontal(centered) { + button-secondary(id:red_btn) { + "Red" + + @client { + // Using reactive methods + color_target.setStyle("backgroundColor", "#e74c3c"); + color_display.set("Current color: Red"); + } + } + + button-secondary(id:green_btn) { + "Green" + + @client { + // Using reactive methods + color_target.setStyle("backgroundColor", "#2ecc71"); + color_display.set("Current color: Green"); + } + } + + button-secondary(id:blue_btn) { + "Blue" + + @client { + // Using reactive methods + color_target.setStyle("backgroundColor", "#3498db"); + color_display.set("Current color: Blue"); + } + } + + button-secondary(id:reset_btn) { + "Reset" + + @client { + // Using reactive methods + color_target.setStyle("backgroundColor", ""); + color_display.set("Current color: None"); + } + } + } + } +} + +section(wide) { + title { "Data Types Example" } + + vertical(centered) { + horizontal(centered) { + vertical { + text(bold) { "Number:" } + text(id:number_display) { "42" } + } + + vertical { + text(bold) { "Text:" } + text(id:text_display) { "Hello Blueprint" } + } + + vertical { + text(bold) { "Boolean:" } + text(id:boolean_display) { "true" } + } + } + + horizontal(centered) { + button-secondary(id:modify_values_btn) { + "Modify Values" + + @client { + // Use type-specific methods + number_display.setNumber(number_display.numberValue * 2); + text_display.set(text_display.value + "!"); + boolean_display.set(!boolean_display.booleanValue); + + console.log("Number value:", number_display.numberValue); + console.log("Text value:", text_display.textValue); + console.log("Boolean value:", boolean_display.booleanValue); + } + } + + button-secondary(id:reset_values_btn) { + "Reset Values" + + @client { + number_display.setNumber(42); + text_display.set("Hello Blueprint"); + boolean_display.set("true"); + } + } + } + } +} + +section(wide) { + title { "Subscription Example" } + + vertical(centered) { + // Input and subscribed elements + input(id:user_input) { "Type something..." } + + text(bold) { "Live Preview:" } + text(id:preview_output) { "Type something..." } + + // Add a client block to handle typing + @client { + // Set up the input to update the preview on input + user_input.element.addEventListener("input", function(e) { + // Use the reactive API to update the preview + preview_output.set(e.target.value); + }); + + // Example of subscription - will log changes to the console + preview_output.subscribe(function(newValue) { + console.log("Preview content changed to:", newValue); + }); + } + } +} \ No newline at end of file diff --git a/examples/server-form-example.bp b/examples/server-form-example.bp new file mode 100644 index 0000000..26c8fcf --- /dev/null +++ b/examples/server-form-example.bp @@ -0,0 +1,163 @@ +page(favicon:"/favicon.ico") { + title { "Blueprint - Server Form Example" } + description { "Example of server-side form processing in Blueprint" } + keywords { "blueprint, javascript, server, api, form" } + author { "Blueprint Team" } +} + +navbar { + horizontal { + link(href:index) { text(bold) { "Blueprint" } } + links { + link(href:index) { "Home" } + link(href:examples) { "Examples" } + link(href:docs) { "Docs" } + } + } +} + +section(wide, centered) { + vertical(centered) { + title(huge) { "Server-Side Form Processing" } + text { "Demonstration of server-side form handling with Blueprint" } + } +} + +section(wide) { + title { "Contact Form Example" } + + vertical(centered) { + card(raised) { + title { "Submit a Message" } + text { "Fill out the form below to submit a message to the server." } + + vertical { + text(bold) { "Your Name" } + input(id:user_name) { "John Doe" } + + text(bold) { "Your Email" } + input(id:user_email) { "john@example.com" } + + text(bold) { "Your Message" } + textarea(id:user_message) { "Hello from Blueprint!" } + + // Display the server response + text(id:form_result) { "" } + + button(id:submit_form) { + "Submit Form" + + // Server block with parameters specifying which input values to include + @server(user_name, user_email, user_message) { + console.log("Form submission received:"); + console.log("Name:", user_name); + console.log("Email:", user_email); + console.log("Message:", user_message); + + // Validate inputs + const errors = []; + + if (!user_name || user_name.length < 2) { + errors.push("Name is too short"); + } + + if (!user_email || !user_email.includes('@')) { + errors.push("Invalid email address"); + } + + if (!user_message || user_message.length < 5) { + errors.push("Message is too short"); + } + + // Return error message if validation fails + if (errors.length > 0) { + return res.status(400).json({ + form_result: "Error: " + errors.join(", ") + }); + } + + // Process the form (in a real app, this might save to a database) + const timestamp = new Date().toISOString(); + + // Return success response that will update the form_result element + return res.status(200).json({ + form_result: `Thank you, ${user_name}! Your message was received at ${timestamp}.` + }); + } + } + } + } + } +} + +section(wide) { + title { "User Registration Example" } + + vertical(centered) { + card(raised) { + title { "Register a New Account" } + text { "Fill out the form below to register a new account." } + + vertical { + text(bold) { "Username" } + input(id:username) { "newuser123" } + + text(bold) { "Email" } + input(id:email) { "newuser@example.com" } + + text(bold) { "Password" } + input(id:password) { "password123" } + + text(bold) { "Confirm Password" } + input(id:confirm_password) { "password123" } + + // Display the registration status + text(id:registration_status) { "" } + + button(id:register_user) { + "Register" + + @server(username, email, password, confirm_password) { + console.log("Registration request for username:", username); + + // Validate username + if (!username || username.length < 4) { + return res.status(400).json({ + registration_status: "Error: Username must be at least 4 characters" + }); + } + + // Validate email + if (!email || !email.includes('@')) { + return res.status(400).json({ + registration_status: "Error: Invalid email address" + }); + } + + // Validate password + if (!password || password.length < 8) { + return res.status(400).json({ + registration_status: "Error: Password must be at least 8 characters" + }); + } + + // Check password matching + if (password !== confirm_password) { + return res.status(400).json({ + registration_status: "Error: Passwords do not match" + }); + } + + // In a real app, this would create the user account + const userId = Math.floor(Math.random() * 10000); + + // Return success response + return res.status(200).json({ + registration_status: `Success! User ${username} registered with ID #${userId}` + }); + } + } + } + } + } +} \ No newline at end of file diff --git a/extension/blueprint-language-0.0.1.vsix b/extension/blueprint-language-0.0.1.vsix index c03e9ad109b0c1305833d6da561c958f3ec10e7f..c69c64698cf548384305a38268e1edea70ceebc0 100644 GIT binary patch delta 95513 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 l_!5V+Z)Qu&|`8gYkvs{{fHgARhn# delta 93992 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 odL?+aEriDiaySpo!>fgDIThKPf!*@Bjb+ diff --git a/extension/client/out/.tsbuildinfo b/extension/client/out/.tsbuildinfo index ab54d4c..b945de0 100644 --- a/extension/client/out/.tsbuildinfo +++ b/extension/client/out/.tsbuildinfo @@ -1 +1 @@ -{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/@types/vscode/index.d.ts","../../node_modules/@types/node/compatibility/indexable.d.ts","../../node_modules/@types/node/compatibility/iterators.d.ts","../../node_modules/@types/node/compatibility/index.d.ts","../../node_modules/@types/node/globals.typedarray.d.ts","../../node_modules/@types/node/buffer.buffer.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/assert.d.ts","../../node_modules/@types/node/assert/strict.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/dns/promises.d.ts","../../node_modules/@types/node/dom-events.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/fs/promises.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/stream/promises.d.ts","../../node_modules/@types/node/stream/consumers.d.ts","../../node_modules/@types/node/stream/web.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/test.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/timers/promises.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/wasi.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/index.d.ts","../../node_modules/vscode-languageserver-types/lib/umd/main.d.ts","../../node_modules/vscode-jsonrpc/typings/thenable.d.ts","../../node_modules/vscode-jsonrpc/lib/common/messages.d.ts","../../node_modules/vscode-jsonrpc/lib/common/linkedmap.d.ts","../../node_modules/vscode-jsonrpc/lib/common/disposable.d.ts","../../node_modules/vscode-jsonrpc/lib/common/events.d.ts","../../node_modules/vscode-jsonrpc/lib/common/cancellation.d.ts","../../node_modules/vscode-jsonrpc/lib/common/encoding.d.ts","../../node_modules/vscode-jsonrpc/lib/common/ral.d.ts","../../node_modules/vscode-jsonrpc/lib/common/messagereader.d.ts","../../node_modules/vscode-jsonrpc/lib/common/messagewriter.d.ts","../../node_modules/vscode-jsonrpc/lib/common/connection.d.ts","../../node_modules/vscode-jsonrpc/lib/common/sharedarraycancellation.d.ts","../../node_modules/vscode-jsonrpc/lib/common/messagebuffer.d.ts","../../node_modules/vscode-jsonrpc/lib/common/api.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/messages.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.typedefinition.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.workspacefolder.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.colorprovider.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingrange.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionrange.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.callhierarchy.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.semantictokens.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.showdocument.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.linkededitingrange.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.fileoperations.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.typehierarchy.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.inlinevalue.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayhint.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/connection.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/api.d.ts","../../node_modules/vscode-languageclient/lib/common/codeconverter.d.ts","../../node_modules/vscode-languageclient/lib/common/protocolcompletionitem.d.ts","../../node_modules/vscode-languageclient/lib/common/protocolconverter.d.ts","../../node_modules/vscode-languageclient/lib/common/semantictokens.d.ts","../../node_modules/vscode-languageclient/lib/common/textsynchronization.d.ts","../../node_modules/vscode-languageclient/lib/common/codelens.d.ts","../../node_modules/vscode-languageclient/lib/common/inlinevalue.d.ts","../../node_modules/vscode-languageclient/lib/common/inlayhint.d.ts","../../node_modules/vscode-languageclient/lib/common/diagnostic.d.ts","../../node_modules/vscode-languageclient/lib/common/notebook.d.ts","../../node_modules/vscode-languageclient/lib/common/features.d.ts","../../node_modules/vscode-languageclient/lib/common/configuration.d.ts","../../node_modules/vscode-languageclient/lib/common/completion.d.ts","../../node_modules/vscode-languageclient/lib/common/hover.d.ts","../../node_modules/vscode-languageclient/lib/common/definition.d.ts","../../node_modules/vscode-languageclient/lib/common/signaturehelp.d.ts","../../node_modules/vscode-languageclient/lib/common/documenthighlight.d.ts","../../node_modules/vscode-languageclient/lib/common/documentsymbol.d.ts","../../node_modules/vscode-languageclient/lib/common/workspacesymbol.d.ts","../../node_modules/vscode-languageclient/lib/common/reference.d.ts","../../node_modules/vscode-languageclient/lib/common/typedefinition.d.ts","../../node_modules/vscode-languageclient/lib/common/implementation.d.ts","../../node_modules/vscode-languageclient/lib/common/colorprovider.d.ts","../../node_modules/vscode-languageclient/lib/common/codeaction.d.ts","../../node_modules/vscode-languageclient/lib/common/formatting.d.ts","../../node_modules/vscode-languageclient/lib/common/rename.d.ts","../../node_modules/vscode-languageclient/lib/common/documentlink.d.ts","../../node_modules/vscode-languageclient/lib/common/executecommand.d.ts","../../node_modules/vscode-languageclient/lib/common/foldingrange.d.ts","../../node_modules/vscode-languageclient/lib/common/declaration.d.ts","../../node_modules/vscode-languageclient/lib/common/selectionrange.d.ts","../../node_modules/vscode-languageclient/lib/common/callhierarchy.d.ts","../../node_modules/vscode-languageclient/lib/common/linkededitingrange.d.ts","../../node_modules/vscode-languageclient/lib/common/typehierarchy.d.ts","../../node_modules/vscode-languageclient/lib/common/workspacefolder.d.ts","../../node_modules/vscode-languageclient/lib/common/fileoperations.d.ts","../../node_modules/vscode-languageclient/lib/common/client.d.ts","../../node_modules/vscode-jsonrpc/lib/node/main.d.ts","../../node_modules/vscode-jsonrpc/node.d.ts","../../node_modules/vscode-languageserver-protocol/lib/node/main.d.ts","../../node_modules/vscode-languageserver-protocol/node.d.ts","../../node_modules/vscode-languageclient/lib/common/api.d.ts","../../node_modules/vscode-languageclient/lib/node/main.d.ts","../../node_modules/vscode-languageclient/node.d.ts","../src/extension.ts","../../node_modules/@types/json-schema/index.d.ts","../../node_modules/@types/semver/classes/semver.d.ts","../../node_modules/@types/semver/functions/parse.d.ts","../../node_modules/@types/semver/functions/valid.d.ts","../../node_modules/@types/semver/functions/clean.d.ts","../../node_modules/@types/semver/functions/inc.d.ts","../../node_modules/@types/semver/functions/diff.d.ts","../../node_modules/@types/semver/functions/major.d.ts","../../node_modules/@types/semver/functions/minor.d.ts","../../node_modules/@types/semver/functions/patch.d.ts","../../node_modules/@types/semver/functions/prerelease.d.ts","../../node_modules/@types/semver/functions/compare.d.ts","../../node_modules/@types/semver/functions/rcompare.d.ts","../../node_modules/@types/semver/functions/compare-loose.d.ts","../../node_modules/@types/semver/functions/compare-build.d.ts","../../node_modules/@types/semver/functions/sort.d.ts","../../node_modules/@types/semver/functions/rsort.d.ts","../../node_modules/@types/semver/functions/gt.d.ts","../../node_modules/@types/semver/functions/lt.d.ts","../../node_modules/@types/semver/functions/eq.d.ts","../../node_modules/@types/semver/functions/neq.d.ts","../../node_modules/@types/semver/functions/gte.d.ts","../../node_modules/@types/semver/functions/lte.d.ts","../../node_modules/@types/semver/functions/cmp.d.ts","../../node_modules/@types/semver/functions/coerce.d.ts","../../node_modules/@types/semver/classes/comparator.d.ts","../../node_modules/@types/semver/classes/range.d.ts","../../node_modules/@types/semver/functions/satisfies.d.ts","../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../node_modules/@types/semver/ranges/min-version.d.ts","../../node_modules/@types/semver/ranges/valid.d.ts","../../node_modules/@types/semver/ranges/outside.d.ts","../../node_modules/@types/semver/ranges/gtr.d.ts","../../node_modules/@types/semver/ranges/ltr.d.ts","../../node_modules/@types/semver/ranges/intersects.d.ts","../../node_modules/@types/semver/ranges/simplify.d.ts","../../node_modules/@types/semver/ranges/subset.d.ts","../../node_modules/@types/semver/internals/identifiers.d.ts","../../node_modules/@types/semver/index.d.ts"],"fileIdsList":[[46,51,56,78,186],[51,56],[51,53,56],[51,55,56],[56],[51,56,61,88],[51,56,57,68,69,76,85,96],[51,56,57,58,68,76],[47,48,51,56],[51,56,59,97],[51,56,60,61,69,77],[51,56,61,85,93],[51,56,62,64,68,76],[51,56,63],[51,56,64,65],[51,56,68],[51,56,67,68],[51,55,56,68],[51,56,68,69,70,85,96],[51,56,68,69,70,85],[51,56,68,71,76,85,96],[51,56,68,69,71,72,76,85,93,96],[51,56,71,73,85,93,96],[49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102],[51,56,68,74],[51,56,75,96,101],[51,56,64,68,76,85],[51,56,77],[51,56,78],[51,55,56,79],[51,56,80,95,101],[51,56,81],[51,56,82],[51,56,68,83],[51,56,83,84,97,99],[51,56,68,85,86,87],[51,56,85,87],[51,56,85,86],[51,56,88],[51,56,89],[51,56,68,91,92],[51,56,91,92],[51,56,61,76,85,93],[51,56,94],[51,56,76,95],[51,56,71,82,96],[51,56,61,97],[51,56,85,98],[51,56,99],[51,56,100],[51,56,61,68,70,79,85,96,99,101],[51,56,85,102],[51,56,189,228],[51,56,189,213,228],[51,56,228],[51,56,189],[51,56,189,214,228],[51,56,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227],[51,56,214,228],[51,56,105,106,107,108,109,110,111,112,113,114,115,116,117],[51,56,108,109],[51,56,106,108,109,110,113,114],[51,56,106,112],[51,56,108],[51,56,112],[51,56,106,109,111,112,118],[51,56,106,109,111,112],[51,56,108,111],[51,56,106,110,115],[51,56,57,76,101,103,118],[51,56,180],[51,56,142,143,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,177,178,179],[46,51,56,142,153],[46,51,56,142,143,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178],[46,51,56,142],[46,51,56,142,143,145,146,147,148,149,150,151,152],[46,51,56,142,144],[46,51,56,57,103,179,183,184],[51,56,185],[51,56,104,118,119,140,141],[51,56,118,119],[51,56,118],[51,56,104,118,119,140],[51,56,104,118,119],[51,56,104,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139],[51,56,119,140],[51,56,104,119,140],[51,56,103,142,181],[51,56,182]],"fileInfos":[{"version":"e41c290ef7dd7dab3493e6cbe5909e0148edf4a8dad0271be08edec368a0f7b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"62bb211266ee48b2d0edf0d8d1b191f0c24fc379a82bd4c1692a082c540bc6b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"f1e2a172204962276504466a6393426d2ca9c54894b1ad0a6c9dad867a65f876","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"caaf6bf4dd0a3f88b50670f5786141b209edb54ba17eb6268c2d28919c813606","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e864ea827318e5f490863a8cd412744d9ddb175acf488dd02a941703dad1e38","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"23301069cfa7a4c6dd68915eeccc7a2ae0bd3018ff4a6288dd9e0c8b4238fab6","affectsGlobalScope":true,"impliedFormat":1},{"version":"df01885cc27c14632a8c38bdeb053295e69209107bb6c53988b78db5f450cb3c","affectsGlobalScope":true,"impliedFormat":1},{"version":"38379fa748cc5d259c96da356a849bd290a159ae218e06ec1daa166850e4bf50","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"f51b4042a3ac86f1f707500a9768f88d0b0c1fc3f3e45a73333283dea720cdc6","impliedFormat":1},{"version":"a29bc8aa8cc100d0c09370c03508f1245853efe017bb98699d4c690868371fc7","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f95830ca11e2c7e82235b73dc149e68a0632b41e671724d12adc83a6750746d","impliedFormat":1},{"version":"7aa011cda7cf0b9e87c85d128b2eeac9930bda215b0fee265d8bf2cec039fb5f","impliedFormat":1},{"version":"92ec1aeca4e94bdab04083daa6039f807c0fce8f09bc42e8b24bf49fa5cdbbff","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"8463ab6a156dc96200b3d8b8a52dc8d878f13a6b7404439aa2f911d568132808","impliedFormat":1},{"version":"6c39d4dbdb372b364442854e42d8c473e2ec67badb226745af17ed5ac41ce6f5","impliedFormat":1},{"version":"7693b90b3075deaccafd5efb467bf9f2b747a3075be888652ef73e64396d8628","impliedFormat":1},{"version":"bd01a987f0fcf2344a405e542ee681e420651eaff1222a5a6e0c02fda52343bc","impliedFormat":1},{"version":"693e50962e90a3548f41bff2c22676e3964212a836022d82e49eca0b20320a38","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"300b0c12998391154d7b9115a85554e91632a3d3e1b66038e98f2b9cb3c1061d","impliedFormat":1},{"version":"222e742815b14d54db034788a7bee2d51197a2588c35b1fbefe04add6393021c","affectsGlobalScope":true,"impliedFormat":1},{"version":"93891e576a698609695e5b8117bb128336e4b7b28772e7d7e38e8075790eb42f","impliedFormat":1},{"version":"5293d799856f47259146ccf0be9a1cc0a4a5343696182d7206ed25ea67d67920","impliedFormat":1},{"version":"d723063c56101b34a7be5b28dbde80a3ae3dfd5e08fd49a3b569473337ead1f9","impliedFormat":1},{"version":"fab49059d6c2026bdb2e53e4e5cde1a39da44e61daff1867c8b3b10b507bfe17","impliedFormat":1},{"version":"5a551275f85bcc4003e543a1951a5b2f682cfba9b2922f65ae0df40ab71724a5","impliedFormat":1},{"version":"22d1a3163b9a961dbe78b0aedbd7bcbc071ce1f31efb76eb013b0aee230fef0e","impliedFormat":1},{"version":"c31695696ade4514cfcbb22799997b690d3dca7fb72beab68fb2e73b6ef450dd","affectsGlobalScope":true,"impliedFormat":1},{"version":"d99ad56d57f2c96daaf4475a8b64344b24dedafdb8f3c32d43552bcc72279a75","impliedFormat":1},{"version":"a101ef17aece908c1029a1bd3f97132794dcff21b4ca0b997d9a633f962c46aa","impliedFormat":1},{"version":"511575e18249b64b90d8f884fdb8a383c767d1a7efccd9d66a4e125a4dc5c462","impliedFormat":1},{"version":"6d8001f2c3b86c4f1de1d45ecb3f87f287ed7313d6999f8c8318cec4f50e6323","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e413bb587e01ba0cb1a87828cc9116669a4a71a61fe3a89b252f86f0c824bc2","affectsGlobalScope":true,"impliedFormat":1},{"version":"9c3d1222e6e3d8c35a4293d7a54d4142ebb8f7f70ec4111b8136df07fdc66169","impliedFormat":1},{"version":"70173c475c6e76ccebc37412b02b2e26f62bf45fc1534c3ebe6d7fa60fb88819","impliedFormat":1},{"version":"87ced739f77d80886ef2b923a7c52c363c549ad8799ae28eb8cc810892f511ad","impliedFormat":1},{"version":"863bc4e31de6c75423bb02da16190d582b0a69b8964b61d45920e5b2cb3832dd","impliedFormat":1},{"version":"849484324695b587f06abee7579641efe061b7338f9694ec410a76f477fe4df3","impliedFormat":1},{"version":"269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","impliedFormat":1},{"version":"6e191fea1db6e9e4fa828259cf489e820ec9170effff57fb081a2f3295db4722","impliedFormat":1},{"version":"49e0da63a2398d2ae88467f60a69b07e594b7777e01120cd9ebcefa1932484cf","impliedFormat":1},{"version":"0435070b07e646b406b1c9b8b1b1878ea6917c32abc47e6435ec26d71212d513","impliedFormat":1},{"version":"f71188f97c9f7d309798ec02a56dd3bf50a4e4d079b3480f275ac13719953898","impliedFormat":1},{"version":"c4454589a0aa92c10d684c8c9584574bc404d1db556d72196cd31f8f7651af1a","affectsGlobalScope":true,"impliedFormat":1},{"version":"b17790866e140a630fa8891d7105c728a1bd60f4e35822e4b345af166a4a728c","impliedFormat":1},{"version":"c50c75f4360f6fc06c4be29dafe28210e15c50cd6b04ad19c4808fa504efb51a","impliedFormat":1},{"version":"d4a1f5f7ee89b2afffd3c74282f8ee65b24266c92b7d40398c12a27054ed745c","impliedFormat":1},{"version":"900b5a9802192bc77eba35a5b87ce770df7b867a6d61772c554058c9ed635386","impliedFormat":1},{"version":"d291d3d16fa252f6d460687491ea2c5c23098c9dc0d3e106b2803fdc98f48f29","affectsGlobalScope":true,"impliedFormat":1},{"version":"f43fcf89d75f13d0908a77cd3fa32b9fd28c915deded9b2778b08f2e242d07a7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b9a616dec7430044ae735250f8d6a7183f5a9fba63f813e3d29dcab819fd7058","impliedFormat":1},{"version":"aebf613f7831125038942eba891005fd25fa5cadcc3e3d13af4768dc7549161f","impliedFormat":1},{"version":"0faee6b555890a1cb106e2adc5d3ffd89545b1da894d474e9d436596d654998f","impliedFormat":1},{"version":"247e5c34784d185bc81442e8b1a371a36c4a5307a766a3725454c0a191b5cfad","impliedFormat":1},{"version":"1c382a6446d63340be549a616ff5142a91653cea45d6d137e25b929130a4f29a","impliedFormat":1},{"version":"9cf81848d806418e203efa6df299e0c5bfb5c137369337b0547117b2f0d44892","impliedFormat":1},{"version":"f0142b712ca22ad863476d9f3ae74e8b2766f3507a6fb5018882074f65ed0195","impliedFormat":1},{"version":"65b9243c80068ec9696b1fbdd23c9acf80d51df02f97b2d7a0514312b0a9fe7d","affectsGlobalScope":true,"impliedFormat":1},{"version":"0def2c37cadfd7bf074fe9566cb83518f24d67193c79741b2d83ec290b945725","impliedFormat":1},{"version":"049e3511439f11e1285bec4647ab8aac53e0c06951b93ba507565dbde851ba31","impliedFormat":1},{"version":"f0745ab78e18a2befaf1d9951481973318722c4e2f33e859239f55fa999ff2b1","impliedFormat":1},{"version":"886e183dd0199e7de45d6308ac3e2185dac6f83283d1b8200ea62cf5c43966a1","impliedFormat":1},{"version":"392dd7b1117b588cba36c04909efd24b0458980506e8e8c1966114f8989058e2","impliedFormat":1},{"version":"ec9d55888e353f9b5cdda761308dffc7eeb6aa0b7b25d328c64d3776a1cf2a7e","impliedFormat":1},{"version":"1f8fedf144a967560be9e58fa32de75e4ca379c3549710d027a07be6a9414073","impliedFormat":1},{"version":"3ca7b2e8012b9a6be09fafd62f8f3937388b9e1600a59c98887d2b11f6d01b43","impliedFormat":1},{"version":"b138b3f30708386023a7dc9981bb867808e5ff3383429ac7f69b7bfd0dcc5bd5","impliedFormat":1},{"version":"a42c8992e2cf55a4a2d661fac251bc803fe119dad49327477d439268e42953d8","impliedFormat":1},{"version":"13ec544ab0a3a7ff96afac1016f55b264c812428e37d595dc33b688296435469","impliedFormat":1},{"version":"4962729121c2cb97a4481cdb06dfc720a79a3bc2fc9330ff2bcf604cfc541177","impliedFormat":1},{"version":"bc641da6705e45737a6c85bf6c7460e9298e5f5b1021abf035cb760d313cda1a","impliedFormat":1},{"version":"4284412700d89f927c8f5092a8e8c2a20a596349f2819148952b07f2cba9177a","impliedFormat":1},{"version":"4d08d58c94c1462506783c35009ddaeb70e54632310e384aa572ed7667333c8f","impliedFormat":1},{"version":"067f06a3d8abb66e4db6c22e34a076808b4c39418e45690f1abf37bcd4725f1c","impliedFormat":1},{"version":"05f6b2b3bef27dfc0e2464197510d08f275f2464363b441def7f309cbf42f51d","impliedFormat":1},{"version":"15055a0f3fe6c7e9d98bf9de36bdc9102ab324debbe2d4170ffe557115a199fc","impliedFormat":1},{"version":"33e11cee43184a95afe9a450f7dde6bd2b6a03fc9643f898268e8594c266554a","impliedFormat":1},{"version":"c13aaf7191fbccaf0f4e9e520c720b870c6339080eb1699439a392589fc85a96","impliedFormat":1},{"version":"41af0cbfe30738008b3765c30059580972362b70b8dcafd791908923e907c3a6","impliedFormat":1},{"version":"b5d49f459d2efc77cff4ab27d929aa67d0c9121bc20763d84942c7fca2cc7b8f","impliedFormat":1},{"version":"96c0c4b30165eaedb3ade3b4e9f491113a1816c448d67fff542b2793bf565b04","impliedFormat":1},{"version":"29a456c61c3d93e36f5eba4c0ed567d7896a9c08a38b537c3fc192a99d03b348","impliedFormat":1},{"version":"3b67dd4fbeec66a7d2acd2be4f65219d85abd04e6eb9cc96fd862ddf70e02eec","impliedFormat":1},{"version":"0a61f7b50171225629903175e062d3f43225e6eba24eb2e50f88ca05fb441aa6","impliedFormat":1},{"version":"818d9a0841c884447fbd61b934c6743aea1fa6f1c0159ef44ef55b8f02b9120f","impliedFormat":1},{"version":"b5f234cb0cb6ceb839fe2875ada30e62082707eaa7a36bfc4a4df9d287b901c7","impliedFormat":1},{"version":"facdb012edb0931c21556ace5bf7c0194c8389b1248fdbd94d09f793b311517c","impliedFormat":1},{"version":"98528506b6a07d49efdd7a65da416af50bfbfea67fbdca941ba55753e171a3db","impliedFormat":1},{"version":"8370c10834a51543556e92367c7c564723ae83b97199413a8eca6f5d70036cd5","impliedFormat":1},{"version":"8c1036c47d3e04eca9bd5fc5e0cdd219a78e4061a4bb4b55f4a4f0cbc621e66f","impliedFormat":1},{"version":"8db15e1da6050330d9e36bddd03131d5a02d56fac2e919fd8360892616357863","impliedFormat":1},{"version":"44874584b7c30882ea2cb1b9b0df0e198221afee1ee5cc4d04deb4c8a3c6345a","impliedFormat":1},{"version":"09839c769382d4763700d97d6e9ceae5c9ab3c34cf288229d9879b63c7206c60","impliedFormat":1},{"version":"c0c205fec8b10f3ad0e65af65dd20ea7cf633df0964c84305e375ccdc4f5557e","impliedFormat":1},{"version":"37c2423005b2ec6130903de29aec9fcf1680ab1b2336efa0ff828980e92da7e9","impliedFormat":1},{"version":"49cdd2b992fe2447994e995576addbc286913ddbebf928750074a6b1fcb24671","impliedFormat":1},{"version":"8479e373e70dedc75d9b1250a349e1efc4553af8a76bbd2ab4de7d9923fb6d1a","impliedFormat":1},{"version":"162e1ddfbe11f8052e38c8d6f69ea4df6fc12dab3902a79321ac0d5f88fe409e","impliedFormat":1},{"version":"d7a0eb5c9aff2237ec7b74a8d40e4221e5c0ef95019114e4a445eecf8f3d5946","impliedFormat":1},{"version":"6ec38a746ebcc6293af84cbf97f66b5a525a6d10424a0475e130ff8b6636a0a4","impliedFormat":1},{"version":"601d0bb63ace18781df556257caa4c3912ffefb599a59de91370b78d60c82969","impliedFormat":1},{"version":"bc9440b60655653ba1f5b94e02e831f1e935c652e2dc005836e7613c3a1d978d","impliedFormat":1},{"version":"2663a2923b6a66ae1729a9ad57db83a8b7578cdf1a545cd8a77ccc19b754038e","impliedFormat":1},{"version":"3062a3cccb480f7c798b8ca39128e368528f8b7f3fe3b72589bed8f5c7782d09","impliedFormat":1},{"version":"c983813ab0f99f37cf8b175a6761c2335df4cf1ed7515c7a19359797e9aa2639","impliedFormat":1},{"version":"7078d4a06f8f6944d23a57b0576bce9fe9eed5da1e02e89939cd5f534101a7d5","impliedFormat":1},{"version":"7dfd08c6f2628f5e2d4751d0a658bd12fa80e7c193f8845adda34eb46573457c","impliedFormat":1},{"version":"3f89dd0b5281bb1bcfe8207f88ecfa4d8de5388088f54cb012696f259d0f342c","impliedFormat":1},{"version":"46a2abc591dbc99debdb61cd1d25cfd80dd2fba1b9d341abb422a6e40e43449c","impliedFormat":1},{"version":"6a74f94c6f4282c5d0689e9b3edc08c6f744e7be8447e915c61aadd81339fe54","impliedFormat":1},{"version":"404d27a1f6dffc4dfbfeffcf483931faa4efd392a8b46c7e0ed9c1cb59f7ad15","impliedFormat":1},{"version":"ecb2d23ac823bf3c5d6735a973006fff1a0a1a5b5a5290f102426ffa00adda68","impliedFormat":1},{"version":"536044ec95d80b94b1fc6301205a0c8fe53887851d39a61d4d3c5564a6dd51eb","impliedFormat":1},{"version":"394ecd2838c8c55972676fe04b930bb32cd7aa0e8b7761b15527e71179bc2684","impliedFormat":1},{"version":"500ab366288ecf09ec637b0d984d41c6dd3ad8115c83da8ab9e004e3e63aa8bd","impliedFormat":1},{"version":"7429792de33c2c59148b2a26f29b26dda256a8d29e9f7b08d4aa5835f8b5e39f","impliedFormat":1},{"version":"d331cdb16cfded5638a2fcce3edb40452afbc3b486c5f0286af44a1aedb7a345","impliedFormat":1},{"version":"542178afcf014b2eab72333f205fc2ccc41217495bcc4cc1ed6e60ad9f1bd11b","impliedFormat":1},{"version":"d2e09ad5eb8111c3564ee743948b4e5915f5aee3d81c480d425eb5cee026fae6","impliedFormat":1},{"version":"ea3ea9ee8165da7b3432e4a4e94e9a0980d6aaf22bcd2d71204d407f106f2fa0","impliedFormat":1},{"version":"83567a9792c293d0f9d90feb9918e88b454ee8544e3d0ea06f9454477df010d1","impliedFormat":1},{"version":"eb314a7ab84c4f504444b53ec2b2d2557b0a06d79a7ce98e9bd2608cee5f946d","impliedFormat":1},{"version":"179f43f3b09b175b85e326ed59b1a2347b4d12fe7d67a4d88dee831f513119bd","impliedFormat":1},{"version":"b9e644c0e84188695a1d3d6d7d03740d7eaaf4bde5d6d25cbdb11df8347657d7","impliedFormat":1},{"version":"bd217bd008c0e8ec5332b6e905768fbadb3d925991dbf821307effd330e182d8","impliedFormat":1},{"version":"b355f2c3451ebc59d3b2fe47346f6a55da91dbcb9f2ad3b48b6bb5173fe77bb1","impliedFormat":1},{"version":"44263a5f285acc47f07cfa058edd282d7d06b026d85741b436372165337d6d2e","impliedFormat":1},{"version":"270314b700dfa1219abce94c5d46da873bfc958129426645ceff8cf559c2fec3","impliedFormat":1},{"version":"37ff500e6e9fe54a3a7e6f8533d4e65dfbb581625d0127836019ab6c86c64462","impliedFormat":1},{"version":"a9d6d153f6ca6ed0e992f3ecc9d684f16cbc0acaa33ab999aa826e80bb67365c","impliedFormat":1},{"version":"b19ef881994f1e0256e37589fadee9a93997400af999f33e2c3e638a6fcccb02","impliedFormat":1},{"version":"6b761b42779653f857ed9d9504f84a016cdfd16a95d044999a2b71331a18bcfd","impliedFormat":1},{"version":"67d37ef881a81aefe3a0f70f78e3835be950f2359487d3eb61b0a3bb9af172bc","impliedFormat":1},{"version":"9c98df0145d99011af92c397fa787fc39d42cc04019614ab5581febe71fb32e1","impliedFormat":1},{"version":"d789022bf705385490fe89811bc7850225c207f37dd706ada2509eb1d8f31f12","impliedFormat":1},{"version":"9c98df0145d99011af92c397fa787fc39d42cc04019614ab5581febe71fb32e1","impliedFormat":1},{"version":"e06388af85e67651e7bd2d13170e4dd9399ee93858cb1142fadfd99873535624","impliedFormat":1},{"version":"9a8bbbe55d20a047e89677cafc553879afb38d41a100ed7e6bb78e4b71203578","impliedFormat":1},{"version":"9c98df0145d99011af92c397fa787fc39d42cc04019614ab5581febe71fb32e1","impliedFormat":1},{"version":"ba7789cb1790df485402b99531fb5f863194bcb76d64656bdec53a00bb200b0a","signature":"28fd02b23f22a42df03edc496d91b458cbb5c0b39a9933a40f136e465bf6dc1f"},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"cf3d384d082b933d987c4e2fe7bfb8710adfd9dc8155190056ed6695a25a559e","impliedFormat":1},{"version":"9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","impliedFormat":1},{"version":"c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","impliedFormat":1},{"version":"8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","impliedFormat":1},{"version":"86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","impliedFormat":1},{"version":"42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","impliedFormat":1},{"version":"ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","impliedFormat":1},{"version":"83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","impliedFormat":1},{"version":"1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","impliedFormat":1},{"version":"0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","impliedFormat":1},{"version":"cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","impliedFormat":1},{"version":"c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","impliedFormat":1},{"version":"f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","impliedFormat":1},{"version":"0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","impliedFormat":1},{"version":"7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","impliedFormat":1},{"version":"bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","impliedFormat":1},{"version":"52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","impliedFormat":1},{"version":"770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","impliedFormat":1},{"version":"d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","impliedFormat":1},{"version":"799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","impliedFormat":1},{"version":"2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","impliedFormat":1},{"version":"9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","impliedFormat":1},{"version":"397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","impliedFormat":1},{"version":"a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","impliedFormat":1},{"version":"a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","impliedFormat":1},{"version":"c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","impliedFormat":1},{"version":"4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","impliedFormat":1},{"version":"f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","impliedFormat":1},{"version":"cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","impliedFormat":1},{"version":"b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","impliedFormat":1},{"version":"c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","impliedFormat":1},{"version":"14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","impliedFormat":1},{"version":"a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","impliedFormat":1},{"version":"f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","impliedFormat":1},{"version":"3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","impliedFormat":1},{"version":"662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","impliedFormat":1},{"version":"c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","impliedFormat":1},{"version":"2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"7d8ddf0f021c53099e34ee831a06c394d50371816caa98684812f089b4c6b3d4","impliedFormat":1}],"root":[187],"options":{"composite":true,"module":1,"outDir":"./","rootDir":"../src","sourceMap":true,"strict":true,"target":7,"tsBuildInfoFile":"./.tsbuildinfo"},"referencedMap":[[187,1],[188,2],[53,3],[54,3],[55,4],[51,5],[56,6],[57,7],[58,8],[49,9],[47,2],[48,2],[59,10],[60,11],[61,12],[62,13],[63,14],[64,15],[65,15],[66,16],[67,17],[68,18],[69,19],[70,20],[52,2],[50,2],[71,21],[72,22],[73,23],[103,24],[74,25],[75,26],[76,27],[77,28],[78,29],[79,30],[80,31],[81,32],[82,33],[83,34],[84,35],[85,36],[87,37],[86,38],[88,39],[89,40],[90,2],[91,41],[92,42],[93,43],[94,44],[95,45],[96,46],[97,47],[98,48],[99,49],[100,50],[101,51],[102,52],[213,53],[214,54],[189,55],[192,55],[211,53],[212,53],[202,53],[201,56],[199,53],[194,53],[207,53],[205,53],[209,53],[193,53],[206,53],[210,53],[195,53],[196,53],[208,53],[190,53],[197,53],[198,53],[200,53],[204,53],[215,57],[203,53],[191,53],[228,58],[227,2],[222,57],[224,59],[223,57],[216,57],[217,57],[219,57],[221,57],[225,59],[226,59],[218,59],[220,59],[46,2],[44,2],[45,2],[9,2],[8,2],[2,2],[10,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[3,2],[18,2],[19,2],[4,2],[20,2],[24,2],[21,2],[22,2],[23,2],[25,2],[26,2],[27,2],[5,2],[28,2],[29,2],[30,2],[31,2],[6,2],[35,2],[32,2],[33,2],[34,2],[36,2],[7,2],[37,2],[42,2],[43,2],[38,2],[39,2],[40,2],[41,2],[1,2],[118,60],[110,61],[115,62],[108,2],[111,63],[109,64],[107,2],[117,65],[113,66],[106,2],[114,67],[112,68],[116,69],[180,70],[181,71],[105,2],[184,72],[174,73],[179,74],[166,73],[143,75],[148,73],[165,73],[155,73],[154,73],[172,73],[157,73],[151,73],[159,73],[169,73],[160,73],[170,73],[153,76],[178,73],[171,73],[167,73],[156,73],[164,73],[150,73],[149,73],[175,73],[152,73],[144,75],[145,77],[162,73],[168,73],[173,73],[146,73],[158,73],[147,73],[163,73],[176,73],[177,73],[161,73],[185,78],[186,79],[142,80],[141,81],[119,82],[129,83],[124,83],[123,84],[140,85],[126,83],[138,83],[133,84],[125,83],[120,83],[137,83],[136,83],[132,83],[134,86],[139,87],[128,84],[127,83],[130,83],[131,84],[121,83],[135,83],[122,84],[182,88],[183,89],[104,2]],"latestChangedDtsFile":"./extension.d.ts","version":"5.7.3"} \ No newline at end of file +{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/@types/vscode/index.d.ts","../../node_modules/@types/node/compatibility/indexable.d.ts","../../node_modules/@types/node/compatibility/iterators.d.ts","../../node_modules/@types/node/compatibility/index.d.ts","../../node_modules/@types/node/globals.typedarray.d.ts","../../node_modules/@types/node/buffer.buffer.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/assert.d.ts","../../node_modules/@types/node/assert/strict.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/dns/promises.d.ts","../../node_modules/@types/node/dom-events.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/fs/promises.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/stream/promises.d.ts","../../node_modules/@types/node/stream/consumers.d.ts","../../node_modules/@types/node/stream/web.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/test.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/timers/promises.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/wasi.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/index.d.ts","../../node_modules/vscode-languageserver-types/lib/umd/main.d.ts","../../node_modules/vscode-jsonrpc/typings/thenable.d.ts","../../node_modules/vscode-jsonrpc/lib/common/messages.d.ts","../../node_modules/vscode-jsonrpc/lib/common/linkedmap.d.ts","../../node_modules/vscode-jsonrpc/lib/common/disposable.d.ts","../../node_modules/vscode-jsonrpc/lib/common/events.d.ts","../../node_modules/vscode-jsonrpc/lib/common/cancellation.d.ts","../../node_modules/vscode-jsonrpc/lib/common/encoding.d.ts","../../node_modules/vscode-jsonrpc/lib/common/ral.d.ts","../../node_modules/vscode-jsonrpc/lib/common/messagereader.d.ts","../../node_modules/vscode-jsonrpc/lib/common/messagewriter.d.ts","../../node_modules/vscode-jsonrpc/lib/common/connection.d.ts","../../node_modules/vscode-jsonrpc/lib/common/sharedarraycancellation.d.ts","../../node_modules/vscode-jsonrpc/lib/common/messagebuffer.d.ts","../../node_modules/vscode-jsonrpc/lib/common/api.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/messages.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.typedefinition.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.workspacefolder.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.colorprovider.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingrange.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionrange.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.callhierarchy.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.semantictokens.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.showdocument.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.linkededitingrange.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.fileoperations.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.typehierarchy.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.inlinevalue.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayhint.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/connection.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/api.d.ts","../../node_modules/vscode-languageclient/lib/common/codeconverter.d.ts","../../node_modules/vscode-languageclient/lib/common/protocolcompletionitem.d.ts","../../node_modules/vscode-languageclient/lib/common/protocolconverter.d.ts","../../node_modules/vscode-languageclient/lib/common/semantictokens.d.ts","../../node_modules/vscode-languageclient/lib/common/textsynchronization.d.ts","../../node_modules/vscode-languageclient/lib/common/codelens.d.ts","../../node_modules/vscode-languageclient/lib/common/inlinevalue.d.ts","../../node_modules/vscode-languageclient/lib/common/inlayhint.d.ts","../../node_modules/vscode-languageclient/lib/common/diagnostic.d.ts","../../node_modules/vscode-languageclient/lib/common/notebook.d.ts","../../node_modules/vscode-languageclient/lib/common/features.d.ts","../../node_modules/vscode-languageclient/lib/common/configuration.d.ts","../../node_modules/vscode-languageclient/lib/common/completion.d.ts","../../node_modules/vscode-languageclient/lib/common/hover.d.ts","../../node_modules/vscode-languageclient/lib/common/definition.d.ts","../../node_modules/vscode-languageclient/lib/common/signaturehelp.d.ts","../../node_modules/vscode-languageclient/lib/common/documenthighlight.d.ts","../../node_modules/vscode-languageclient/lib/common/documentsymbol.d.ts","../../node_modules/vscode-languageclient/lib/common/workspacesymbol.d.ts","../../node_modules/vscode-languageclient/lib/common/reference.d.ts","../../node_modules/vscode-languageclient/lib/common/typedefinition.d.ts","../../node_modules/vscode-languageclient/lib/common/implementation.d.ts","../../node_modules/vscode-languageclient/lib/common/colorprovider.d.ts","../../node_modules/vscode-languageclient/lib/common/codeaction.d.ts","../../node_modules/vscode-languageclient/lib/common/formatting.d.ts","../../node_modules/vscode-languageclient/lib/common/rename.d.ts","../../node_modules/vscode-languageclient/lib/common/documentlink.d.ts","../../node_modules/vscode-languageclient/lib/common/executecommand.d.ts","../../node_modules/vscode-languageclient/lib/common/foldingrange.d.ts","../../node_modules/vscode-languageclient/lib/common/declaration.d.ts","../../node_modules/vscode-languageclient/lib/common/selectionrange.d.ts","../../node_modules/vscode-languageclient/lib/common/callhierarchy.d.ts","../../node_modules/vscode-languageclient/lib/common/linkededitingrange.d.ts","../../node_modules/vscode-languageclient/lib/common/typehierarchy.d.ts","../../node_modules/vscode-languageclient/lib/common/workspacefolder.d.ts","../../node_modules/vscode-languageclient/lib/common/fileoperations.d.ts","../../node_modules/vscode-languageclient/lib/common/client.d.ts","../../node_modules/vscode-jsonrpc/lib/node/main.d.ts","../../node_modules/vscode-jsonrpc/node.d.ts","../../node_modules/vscode-languageserver-protocol/lib/node/main.d.ts","../../node_modules/vscode-languageserver-protocol/node.d.ts","../../node_modules/vscode-languageclient/lib/common/api.d.ts","../../node_modules/vscode-languageclient/lib/node/main.d.ts","../../node_modules/vscode-languageclient/node.d.ts","../src/extension.ts","../../node_modules/@types/json-schema/index.d.ts","../../node_modules/@types/semver/classes/semver.d.ts","../../node_modules/@types/semver/functions/parse.d.ts","../../node_modules/@types/semver/functions/valid.d.ts","../../node_modules/@types/semver/functions/clean.d.ts","../../node_modules/@types/semver/functions/inc.d.ts","../../node_modules/@types/semver/functions/diff.d.ts","../../node_modules/@types/semver/functions/major.d.ts","../../node_modules/@types/semver/functions/minor.d.ts","../../node_modules/@types/semver/functions/patch.d.ts","../../node_modules/@types/semver/functions/prerelease.d.ts","../../node_modules/@types/semver/functions/compare.d.ts","../../node_modules/@types/semver/functions/rcompare.d.ts","../../node_modules/@types/semver/functions/compare-loose.d.ts","../../node_modules/@types/semver/functions/compare-build.d.ts","../../node_modules/@types/semver/functions/sort.d.ts","../../node_modules/@types/semver/functions/rsort.d.ts","../../node_modules/@types/semver/functions/gt.d.ts","../../node_modules/@types/semver/functions/lt.d.ts","../../node_modules/@types/semver/functions/eq.d.ts","../../node_modules/@types/semver/functions/neq.d.ts","../../node_modules/@types/semver/functions/gte.d.ts","../../node_modules/@types/semver/functions/lte.d.ts","../../node_modules/@types/semver/functions/cmp.d.ts","../../node_modules/@types/semver/functions/coerce.d.ts","../../node_modules/@types/semver/classes/comparator.d.ts","../../node_modules/@types/semver/classes/range.d.ts","../../node_modules/@types/semver/functions/satisfies.d.ts","../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../node_modules/@types/semver/ranges/min-version.d.ts","../../node_modules/@types/semver/ranges/valid.d.ts","../../node_modules/@types/semver/ranges/outside.d.ts","../../node_modules/@types/semver/ranges/gtr.d.ts","../../node_modules/@types/semver/ranges/ltr.d.ts","../../node_modules/@types/semver/ranges/intersects.d.ts","../../node_modules/@types/semver/ranges/simplify.d.ts","../../node_modules/@types/semver/ranges/subset.d.ts","../../node_modules/@types/semver/internals/identifiers.d.ts","../../node_modules/@types/semver/index.d.ts"],"fileIdsList":[[46,51,56,78,186],[51,56],[51,53,56],[51,55,56],[56],[51,56,61,88],[51,56,57,68,69,76,85,96],[51,56,57,58,68,76],[47,48,51,56],[51,56,59,97],[51,56,60,61,69,77],[51,56,61,85,93],[51,56,62,64,68,76],[51,56,63],[51,56,64,65],[51,56,68],[51,56,67,68],[51,55,56,68],[51,56,68,69,70,85,96],[51,56,68,69,70,85],[51,56,68,71,76,85,96],[51,56,68,69,71,72,76,85,93,96],[51,56,71,73,85,93,96],[49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102],[51,56,68,74],[51,56,75,96,101],[51,56,64,68,76,85],[51,56,77],[51,56,78],[51,55,56,79],[51,56,80,95,101],[51,56,81],[51,56,82],[51,56,68,83],[51,56,83,84,97,99],[51,56,68,85,86,87],[51,56,85,87],[51,56,85,86],[51,56,88],[51,56,89],[51,56,68,91,92],[51,56,91,92],[51,56,61,76,85,93],[51,56,94],[51,56,76,95],[51,56,71,82,96],[51,56,61,97],[51,56,85,98],[51,56,99],[51,56,100],[51,56,61,68,70,79,85,96,99,101],[51,56,85,102],[51,56,189,228],[51,56,189,213,228],[51,56,228],[51,56,189],[51,56,189,214,228],[51,56,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227],[51,56,214,228],[51,56,105,106,107,108,109,110,111,112,113,114,115,116,117],[51,56,108,109],[51,56,106,108,109,110,113,114],[51,56,106,112],[51,56,108],[51,56,112],[51,56,106,109,111,112,118],[51,56,106,109,111,112],[51,56,108,111],[51,56,106,110,115],[51,56,57,76,101,103,118],[51,56,180],[51,56,142,143,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,177,178,179],[46,51,56,142,153],[46,51,56,142,143,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178],[46,51,56,142],[46,51,56,142,143,145,146,147,148,149,150,151,152],[46,51,56,142,144],[46,51,56,57,103,179,183,184],[51,56,185],[51,56,104,118,119,140,141],[51,56,118,119],[51,56,118],[51,56,104,118,119,140],[51,56,104,118,119],[51,56,104,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139],[51,56,119,140],[51,56,104,119,140],[51,56,103,142,181],[51,56,182]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b3098756b32d6029cd9889b087a32e890298bd7953d05b72b02f6a3ad4f318a","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e864ea827318e5f490863a8cd412744d9ddb175acf488dd02a941703dad1e38","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"23301069cfa7a4c6dd68915eeccc7a2ae0bd3018ff4a6288dd9e0c8b4238fab6","affectsGlobalScope":true,"impliedFormat":1},{"version":"df01885cc27c14632a8c38bdeb053295e69209107bb6c53988b78db5f450cb3c","affectsGlobalScope":true,"impliedFormat":1},{"version":"38379fa748cc5d259c96da356a849bd290a159ae218e06ec1daa166850e4bf50","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"f51b4042a3ac86f1f707500a9768f88d0b0c1fc3f3e45a73333283dea720cdc6","impliedFormat":1},{"version":"a29bc8aa8cc100d0c09370c03508f1245853efe017bb98699d4c690868371fc7","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f95830ca11e2c7e82235b73dc149e68a0632b41e671724d12adc83a6750746d","impliedFormat":1},{"version":"7aa011cda7cf0b9e87c85d128b2eeac9930bda215b0fee265d8bf2cec039fb5f","impliedFormat":1},{"version":"92ec1aeca4e94bdab04083daa6039f807c0fce8f09bc42e8b24bf49fa5cdbbff","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"8463ab6a156dc96200b3d8b8a52dc8d878f13a6b7404439aa2f911d568132808","impliedFormat":1},{"version":"5289750c112b5dd0e29dfa9089ddbf5d3ed1b544d99731093881e6967f5af4d1","impliedFormat":1},{"version":"7693b90b3075deaccafd5efb467bf9f2b747a3075be888652ef73e64396d8628","impliedFormat":1},{"version":"bd01a987f0fcf2344a405e542ee681e420651eaff1222a5a6e0c02fda52343bc","impliedFormat":1},{"version":"693e50962e90a3548f41bff2c22676e3964212a836022d82e49eca0b20320a38","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"300b0c12998391154d7b9115a85554e91632a3d3e1b66038e98f2b9cb3c1061d","impliedFormat":1},{"version":"222e742815b14d54db034788a7bee2d51197a2588c35b1fbefe04add6393021c","affectsGlobalScope":true,"impliedFormat":1},{"version":"93891e576a698609695e5b8117bb128336e4b7b28772e7d7e38e8075790eb42f","impliedFormat":1},{"version":"69d90a2f13511eeaae271905c8615a93e20335530d1062a93cb04e754e5f04ad","impliedFormat":1},{"version":"d723063c56101b34a7be5b28dbde80a3ae3dfd5e08fd49a3b569473337ead1f9","impliedFormat":1},{"version":"fab49059d6c2026bdb2e53e4e5cde1a39da44e61daff1867c8b3b10b507bfe17","impliedFormat":1},{"version":"5a551275f85bcc4003e543a1951a5b2f682cfba9b2922f65ae0df40ab71724a5","impliedFormat":1},{"version":"22d1a3163b9a961dbe78b0aedbd7bcbc071ce1f31efb76eb013b0aee230fef0e","impliedFormat":1},{"version":"c31695696ade4514cfcbb22799997b690d3dca7fb72beab68fb2e73b6ef450dd","affectsGlobalScope":true,"impliedFormat":1},{"version":"d99ad56d57f2c96daaf4475a8b64344b24dedafdb8f3c32d43552bcc72279a75","impliedFormat":1},{"version":"a101ef17aece908c1029a1bd3f97132794dcff21b4ca0b997d9a633f962c46aa","impliedFormat":1},{"version":"511575e18249b64b90d8f884fdb8a383c767d1a7efccd9d66a4e125a4dc5c462","impliedFormat":1},{"version":"6d8001f2c3b86c4f1de1d45ecb3f87f287ed7313d6999f8c8318cec4f50e6323","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e413bb587e01ba0cb1a87828cc9116669a4a71a61fe3a89b252f86f0c824bc2","affectsGlobalScope":true,"impliedFormat":1},{"version":"9c3d1222e6e3d8c35a4293d7a54d4142ebb8f7f70ec4111b8136df07fdc66169","impliedFormat":1},{"version":"70173c475c6e76ccebc37412b02b2e26f62bf45fc1534c3ebe6d7fa60fb88819","impliedFormat":1},{"version":"87ced739f77d80886ef2b923a7c52c363c549ad8799ae28eb8cc810892f511ad","impliedFormat":1},{"version":"863bc4e31de6c75423bb02da16190d582b0a69b8964b61d45920e5b2cb3832dd","impliedFormat":1},{"version":"849484324695b587f06abee7579641efe061b7338f9694ec410a76f477fe4df3","impliedFormat":1},{"version":"269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","impliedFormat":1},{"version":"6e191fea1db6e9e4fa828259cf489e820ec9170effff57fb081a2f3295db4722","impliedFormat":1},{"version":"49e0da63a2398d2ae88467f60a69b07e594b7777e01120cd9ebcefa1932484cf","impliedFormat":1},{"version":"0435070b07e646b406b1c9b8b1b1878ea6917c32abc47e6435ec26d71212d513","impliedFormat":1},{"version":"f71188f97c9f7d309798ec02a56dd3bf50a4e4d079b3480f275ac13719953898","impliedFormat":1},{"version":"c4454589a0aa92c10d684c8c9584574bc404d1db556d72196cd31f8f7651af1a","affectsGlobalScope":true,"impliedFormat":1},{"version":"b17790866e140a630fa8891d7105c728a1bd60f4e35822e4b345af166a4a728c","impliedFormat":1},{"version":"c50c75f4360f6fc06c4be29dafe28210e15c50cd6b04ad19c4808fa504efb51a","impliedFormat":1},{"version":"d4a1f5f7ee89b2afffd3c74282f8ee65b24266c92b7d40398c12a27054ed745c","impliedFormat":1},{"version":"900b5a9802192bc77eba35a5b87ce770df7b867a6d61772c554058c9ed635386","impliedFormat":1},{"version":"d291d3d16fa252f6d460687491ea2c5c23098c9dc0d3e106b2803fdc98f48f29","affectsGlobalScope":true,"impliedFormat":1},{"version":"f43fcf89d75f13d0908a77cd3fa32b9fd28c915deded9b2778b08f2e242d07a7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b9a616dec7430044ae735250f8d6a7183f5a9fba63f813e3d29dcab819fd7058","impliedFormat":1},{"version":"aebf613f7831125038942eba891005fd25fa5cadcc3e3d13af4768dc7549161f","impliedFormat":1},{"version":"0faee6b555890a1cb106e2adc5d3ffd89545b1da894d474e9d436596d654998f","impliedFormat":1},{"version":"247e5c34784d185bc81442e8b1a371a36c4a5307a766a3725454c0a191b5cfad","impliedFormat":1},{"version":"1c382a6446d63340be549a616ff5142a91653cea45d6d137e25b929130a4f29a","impliedFormat":1},{"version":"9cf81848d806418e203efa6df299e0c5bfb5c137369337b0547117b2f0d44892","impliedFormat":1},{"version":"f0142b712ca22ad863476d9f3ae74e8b2766f3507a6fb5018882074f65ed0195","impliedFormat":1},{"version":"65b9243c80068ec9696b1fbdd23c9acf80d51df02f97b2d7a0514312b0a9fe7d","affectsGlobalScope":true,"impliedFormat":1},{"version":"0def2c37cadfd7bf074fe9566cb83518f24d67193c79741b2d83ec290b945725","impliedFormat":1},{"version":"049e3511439f11e1285bec4647ab8aac53e0c06951b93ba507565dbde851ba31","impliedFormat":1},{"version":"f0745ab78e18a2befaf1d9951481973318722c4e2f33e859239f55fa999ff2b1","impliedFormat":1},{"version":"886e183dd0199e7de45d6308ac3e2185dac6f83283d1b8200ea62cf5c43966a1","impliedFormat":1},{"version":"392dd7b1117b588cba36c04909efd24b0458980506e8e8c1966114f8989058e2","impliedFormat":1},{"version":"ec9d55888e353f9b5cdda761308dffc7eeb6aa0b7b25d328c64d3776a1cf2a7e","impliedFormat":1},{"version":"1f8fedf144a967560be9e58fa32de75e4ca379c3549710d027a07be6a9414073","impliedFormat":1},{"version":"3ca7b2e8012b9a6be09fafd62f8f3937388b9e1600a59c98887d2b11f6d01b43","impliedFormat":1},{"version":"b138b3f30708386023a7dc9981bb867808e5ff3383429ac7f69b7bfd0dcc5bd5","impliedFormat":1},{"version":"a42c8992e2cf55a4a2d661fac251bc803fe119dad49327477d439268e42953d8","impliedFormat":1},{"version":"13ec544ab0a3a7ff96afac1016f55b264c812428e37d595dc33b688296435469","impliedFormat":1},{"version":"4962729121c2cb97a4481cdb06dfc720a79a3bc2fc9330ff2bcf604cfc541177","impliedFormat":1},{"version":"bc641da6705e45737a6c85bf6c7460e9298e5f5b1021abf035cb760d313cda1a","impliedFormat":1},{"version":"4284412700d89f927c8f5092a8e8c2a20a596349f2819148952b07f2cba9177a","impliedFormat":1},{"version":"4d08d58c94c1462506783c35009ddaeb70e54632310e384aa572ed7667333c8f","impliedFormat":1},{"version":"067f06a3d8abb66e4db6c22e34a076808b4c39418e45690f1abf37bcd4725f1c","impliedFormat":1},{"version":"05f6b2b3bef27dfc0e2464197510d08f275f2464363b441def7f309cbf42f51d","impliedFormat":1},{"version":"15055a0f3fe6c7e9d98bf9de36bdc9102ab324debbe2d4170ffe557115a199fc","impliedFormat":1},{"version":"33e11cee43184a95afe9a450f7dde6bd2b6a03fc9643f898268e8594c266554a","impliedFormat":1},{"version":"c13aaf7191fbccaf0f4e9e520c720b870c6339080eb1699439a392589fc85a96","impliedFormat":1},{"version":"41af0cbfe30738008b3765c30059580972362b70b8dcafd791908923e907c3a6","impliedFormat":1},{"version":"b5d49f459d2efc77cff4ab27d929aa67d0c9121bc20763d84942c7fca2cc7b8f","impliedFormat":1},{"version":"96c0c4b30165eaedb3ade3b4e9f491113a1816c448d67fff542b2793bf565b04","impliedFormat":1},{"version":"29a456c61c3d93e36f5eba4c0ed567d7896a9c08a38b537c3fc192a99d03b348","impliedFormat":1},{"version":"3b67dd4fbeec66a7d2acd2be4f65219d85abd04e6eb9cc96fd862ddf70e02eec","impliedFormat":1},{"version":"0a61f7b50171225629903175e062d3f43225e6eba24eb2e50f88ca05fb441aa6","impliedFormat":1},{"version":"818d9a0841c884447fbd61b934c6743aea1fa6f1c0159ef44ef55b8f02b9120f","impliedFormat":1},{"version":"b5f234cb0cb6ceb839fe2875ada30e62082707eaa7a36bfc4a4df9d287b901c7","impliedFormat":1},{"version":"facdb012edb0931c21556ace5bf7c0194c8389b1248fdbd94d09f793b311517c","impliedFormat":1},{"version":"98528506b6a07d49efdd7a65da416af50bfbfea67fbdca941ba55753e171a3db","impliedFormat":1},{"version":"8370c10834a51543556e92367c7c564723ae83b97199413a8eca6f5d70036cd5","impliedFormat":1},{"version":"8c1036c47d3e04eca9bd5fc5e0cdd219a78e4061a4bb4b55f4a4f0cbc621e66f","impliedFormat":1},{"version":"8db15e1da6050330d9e36bddd03131d5a02d56fac2e919fd8360892616357863","impliedFormat":1},{"version":"44874584b7c30882ea2cb1b9b0df0e198221afee1ee5cc4d04deb4c8a3c6345a","impliedFormat":1},{"version":"09839c769382d4763700d97d6e9ceae5c9ab3c34cf288229d9879b63c7206c60","impliedFormat":1},{"version":"c0c205fec8b10f3ad0e65af65dd20ea7cf633df0964c84305e375ccdc4f5557e","impliedFormat":1},{"version":"37c2423005b2ec6130903de29aec9fcf1680ab1b2336efa0ff828980e92da7e9","impliedFormat":1},{"version":"49cdd2b992fe2447994e995576addbc286913ddbebf928750074a6b1fcb24671","impliedFormat":1},{"version":"8479e373e70dedc75d9b1250a349e1efc4553af8a76bbd2ab4de7d9923fb6d1a","impliedFormat":1},{"version":"162e1ddfbe11f8052e38c8d6f69ea4df6fc12dab3902a79321ac0d5f88fe409e","impliedFormat":1},{"version":"d7a0eb5c9aff2237ec7b74a8d40e4221e5c0ef95019114e4a445eecf8f3d5946","impliedFormat":1},{"version":"6ec38a746ebcc6293af84cbf97f66b5a525a6d10424a0475e130ff8b6636a0a4","impliedFormat":1},{"version":"601d0bb63ace18781df556257caa4c3912ffefb599a59de91370b78d60c82969","impliedFormat":1},{"version":"bc9440b60655653ba1f5b94e02e831f1e935c652e2dc005836e7613c3a1d978d","impliedFormat":1},{"version":"2663a2923b6a66ae1729a9ad57db83a8b7578cdf1a545cd8a77ccc19b754038e","impliedFormat":1},{"version":"3062a3cccb480f7c798b8ca39128e368528f8b7f3fe3b72589bed8f5c7782d09","impliedFormat":1},{"version":"c983813ab0f99f37cf8b175a6761c2335df4cf1ed7515c7a19359797e9aa2639","impliedFormat":1},{"version":"7078d4a06f8f6944d23a57b0576bce9fe9eed5da1e02e89939cd5f534101a7d5","impliedFormat":1},{"version":"7dfd08c6f2628f5e2d4751d0a658bd12fa80e7c193f8845adda34eb46573457c","impliedFormat":1},{"version":"3f89dd0b5281bb1bcfe8207f88ecfa4d8de5388088f54cb012696f259d0f342c","impliedFormat":1},{"version":"46a2abc591dbc99debdb61cd1d25cfd80dd2fba1b9d341abb422a6e40e43449c","impliedFormat":1},{"version":"6a74f94c6f4282c5d0689e9b3edc08c6f744e7be8447e915c61aadd81339fe54","impliedFormat":1},{"version":"404d27a1f6dffc4dfbfeffcf483931faa4efd392a8b46c7e0ed9c1cb59f7ad15","impliedFormat":1},{"version":"ecb2d23ac823bf3c5d6735a973006fff1a0a1a5b5a5290f102426ffa00adda68","impliedFormat":1},{"version":"536044ec95d80b94b1fc6301205a0c8fe53887851d39a61d4d3c5564a6dd51eb","impliedFormat":1},{"version":"394ecd2838c8c55972676fe04b930bb32cd7aa0e8b7761b15527e71179bc2684","impliedFormat":1},{"version":"500ab366288ecf09ec637b0d984d41c6dd3ad8115c83da8ab9e004e3e63aa8bd","impliedFormat":1},{"version":"7429792de33c2c59148b2a26f29b26dda256a8d29e9f7b08d4aa5835f8b5e39f","impliedFormat":1},{"version":"d331cdb16cfded5638a2fcce3edb40452afbc3b486c5f0286af44a1aedb7a345","impliedFormat":1},{"version":"542178afcf014b2eab72333f205fc2ccc41217495bcc4cc1ed6e60ad9f1bd11b","impliedFormat":1},{"version":"d2e09ad5eb8111c3564ee743948b4e5915f5aee3d81c480d425eb5cee026fae6","impliedFormat":1},{"version":"ea3ea9ee8165da7b3432e4a4e94e9a0980d6aaf22bcd2d71204d407f106f2fa0","impliedFormat":1},{"version":"83567a9792c293d0f9d90feb9918e88b454ee8544e3d0ea06f9454477df010d1","impliedFormat":1},{"version":"eb314a7ab84c4f504444b53ec2b2d2557b0a06d79a7ce98e9bd2608cee5f946d","impliedFormat":1},{"version":"179f43f3b09b175b85e326ed59b1a2347b4d12fe7d67a4d88dee831f513119bd","impliedFormat":1},{"version":"b9e644c0e84188695a1d3d6d7d03740d7eaaf4bde5d6d25cbdb11df8347657d7","impliedFormat":1},{"version":"bd217bd008c0e8ec5332b6e905768fbadb3d925991dbf821307effd330e182d8","impliedFormat":1},{"version":"b355f2c3451ebc59d3b2fe47346f6a55da91dbcb9f2ad3b48b6bb5173fe77bb1","impliedFormat":1},{"version":"44263a5f285acc47f07cfa058edd282d7d06b026d85741b436372165337d6d2e","impliedFormat":1},{"version":"270314b700dfa1219abce94c5d46da873bfc958129426645ceff8cf559c2fec3","impliedFormat":1},{"version":"37ff500e6e9fe54a3a7e6f8533d4e65dfbb581625d0127836019ab6c86c64462","impliedFormat":1},{"version":"a9d6d153f6ca6ed0e992f3ecc9d684f16cbc0acaa33ab999aa826e80bb67365c","impliedFormat":1},{"version":"b19ef881994f1e0256e37589fadee9a93997400af999f33e2c3e638a6fcccb02","impliedFormat":1},{"version":"6b761b42779653f857ed9d9504f84a016cdfd16a95d044999a2b71331a18bcfd","impliedFormat":1},{"version":"67d37ef881a81aefe3a0f70f78e3835be950f2359487d3eb61b0a3bb9af172bc","impliedFormat":1},{"version":"9c98df0145d99011af92c397fa787fc39d42cc04019614ab5581febe71fb32e1","impliedFormat":1},{"version":"d789022bf705385490fe89811bc7850225c207f37dd706ada2509eb1d8f31f12","impliedFormat":1},{"version":"9c98df0145d99011af92c397fa787fc39d42cc04019614ab5581febe71fb32e1","impliedFormat":1},{"version":"e06388af85e67651e7bd2d13170e4dd9399ee93858cb1142fadfd99873535624","impliedFormat":1},{"version":"9a8bbbe55d20a047e89677cafc553879afb38d41a100ed7e6bb78e4b71203578","impliedFormat":1},{"version":"9c98df0145d99011af92c397fa787fc39d42cc04019614ab5581febe71fb32e1","impliedFormat":1},{"version":"997c8a1255d042705607c66044922fcb4cc735b14f56c8915eb099d20da12ba5","signature":"28fd02b23f22a42df03edc496d91b458cbb5c0b39a9933a40f136e465bf6dc1f"},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"cf3d384d082b933d987c4e2fe7bfb8710adfd9dc8155190056ed6695a25a559e","impliedFormat":1},{"version":"9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","impliedFormat":1},{"version":"c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","impliedFormat":1},{"version":"8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","impliedFormat":1},{"version":"86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","impliedFormat":1},{"version":"42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","impliedFormat":1},{"version":"ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","impliedFormat":1},{"version":"83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","impliedFormat":1},{"version":"1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","impliedFormat":1},{"version":"0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","impliedFormat":1},{"version":"cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","impliedFormat":1},{"version":"c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","impliedFormat":1},{"version":"f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","impliedFormat":1},{"version":"0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","impliedFormat":1},{"version":"7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","impliedFormat":1},{"version":"bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","impliedFormat":1},{"version":"52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","impliedFormat":1},{"version":"770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","impliedFormat":1},{"version":"d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","impliedFormat":1},{"version":"799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","impliedFormat":1},{"version":"2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","impliedFormat":1},{"version":"9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","impliedFormat":1},{"version":"397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","impliedFormat":1},{"version":"a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","impliedFormat":1},{"version":"a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","impliedFormat":1},{"version":"c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","impliedFormat":1},{"version":"4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","impliedFormat":1},{"version":"f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","impliedFormat":1},{"version":"cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","impliedFormat":1},{"version":"b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","impliedFormat":1},{"version":"c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","impliedFormat":1},{"version":"14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","impliedFormat":1},{"version":"a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","impliedFormat":1},{"version":"f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","impliedFormat":1},{"version":"3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","impliedFormat":1},{"version":"662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","impliedFormat":1},{"version":"c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","impliedFormat":1},{"version":"2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"844ab83672160ca57a2a2ea46da4c64200d8c18d4ebb2087819649cad099ff0e","impliedFormat":1}],"root":[187],"options":{"composite":true,"module":1,"outDir":"./","rootDir":"../src","sourceMap":true,"strict":true,"target":7,"tsBuildInfoFile":"./.tsbuildinfo"},"referencedMap":[[187,1],[188,2],[53,3],[54,3],[55,4],[51,5],[56,6],[57,7],[58,8],[49,9],[47,2],[48,2],[59,10],[60,11],[61,12],[62,13],[63,14],[64,15],[65,15],[66,16],[67,17],[68,18],[69,19],[70,20],[52,2],[50,2],[71,21],[72,22],[73,23],[103,24],[74,25],[75,26],[76,27],[77,28],[78,29],[79,30],[80,31],[81,32],[82,33],[83,34],[84,35],[85,36],[87,37],[86,38],[88,39],[89,40],[90,2],[91,41],[92,42],[93,43],[94,44],[95,45],[96,46],[97,47],[98,48],[99,49],[100,50],[101,51],[102,52],[213,53],[214,54],[189,55],[192,55],[211,53],[212,53],[202,53],[201,56],[199,53],[194,53],[207,53],[205,53],[209,53],[193,53],[206,53],[210,53],[195,53],[196,53],[208,53],[190,53],[197,53],[198,53],[200,53],[204,53],[215,57],[203,53],[191,53],[228,58],[227,2],[222,57],[224,59],[223,57],[216,57],[217,57],[219,57],[221,57],[225,59],[226,59],[218,59],[220,59],[46,2],[44,2],[45,2],[9,2],[8,2],[2,2],[10,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[3,2],[18,2],[19,2],[4,2],[20,2],[24,2],[21,2],[22,2],[23,2],[25,2],[26,2],[27,2],[5,2],[28,2],[29,2],[30,2],[31,2],[6,2],[35,2],[32,2],[33,2],[34,2],[36,2],[7,2],[37,2],[42,2],[43,2],[38,2],[39,2],[40,2],[41,2],[1,2],[118,60],[110,61],[115,62],[108,2],[111,63],[109,64],[107,2],[117,65],[113,66],[106,2],[114,67],[112,68],[116,69],[180,70],[181,71],[105,2],[184,72],[174,73],[179,74],[166,73],[143,75],[148,73],[165,73],[155,73],[154,73],[172,73],[157,73],[151,73],[159,73],[169,73],[160,73],[170,73],[153,76],[178,73],[171,73],[167,73],[156,73],[164,73],[150,73],[149,73],[175,73],[152,73],[144,75],[145,77],[162,73],[168,73],[173,73],[146,73],[158,73],[147,73],[163,73],[176,73],[177,73],[161,73],[185,78],[186,79],[142,80],[141,81],[119,82],[129,83],[124,83],[123,84],[140,85],[126,83],[138,83],[133,84],[125,83],[120,83],[137,83],[136,83],[132,83],[134,86],[139,87],[128,84],[127,83],[130,83],[131,84],[121,83],[135,83],[122,84],[182,88],[183,89],[104,2]],"latestChangedDtsFile":"./extension.d.ts","version":"5.8.2"} \ No newline at end of file diff --git a/extension/out/tsconfig.tsbuildinfo b/extension/out/tsconfig.tsbuildinfo index b05e939..bbaae2f 100644 --- a/extension/out/tsconfig.tsbuildinfo +++ b/extension/out/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"root":["../client/src/extension.ts","../server/src/server.ts"],"version":"5.7.3"} \ No newline at end of file +{"root":["../client/src/extension.ts","../server/src/server.ts"],"version":"5.8.2"} \ No newline at end of file diff --git a/extension/server/out/.tsbuildinfo b/extension/server/out/.tsbuildinfo index 11c62bb..2afa413 100644 --- a/extension/server/out/.tsbuildinfo +++ b/extension/server/out/.tsbuildinfo @@ -1 +1 @@ -{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/vscode-languageserver/typings/thenable.d.ts","../../node_modules/@types/node/compatibility/indexable.d.ts","../../node_modules/@types/node/compatibility/iterators.d.ts","../../node_modules/@types/node/compatibility/index.d.ts","../../node_modules/@types/node/globals.typedarray.d.ts","../../node_modules/@types/node/buffer.buffer.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/assert.d.ts","../../node_modules/@types/node/assert/strict.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/dns/promises.d.ts","../../node_modules/@types/node/dom-events.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/fs/promises.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/stream/promises.d.ts","../../node_modules/@types/node/stream/consumers.d.ts","../../node_modules/@types/node/stream/web.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/test.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/timers/promises.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/wasi.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/index.d.ts","../../node_modules/vscode-languageserver-types/lib/umd/main.d.ts","../../node_modules/vscode-jsonrpc/typings/thenable.d.ts","../../node_modules/vscode-jsonrpc/lib/common/messages.d.ts","../../node_modules/vscode-jsonrpc/lib/common/linkedmap.d.ts","../../node_modules/vscode-jsonrpc/lib/common/disposable.d.ts","../../node_modules/vscode-jsonrpc/lib/common/events.d.ts","../../node_modules/vscode-jsonrpc/lib/common/cancellation.d.ts","../../node_modules/vscode-jsonrpc/lib/common/encoding.d.ts","../../node_modules/vscode-jsonrpc/lib/common/ral.d.ts","../../node_modules/vscode-jsonrpc/lib/common/messagereader.d.ts","../../node_modules/vscode-jsonrpc/lib/common/messagewriter.d.ts","../../node_modules/vscode-jsonrpc/lib/common/connection.d.ts","../../node_modules/vscode-jsonrpc/lib/common/sharedarraycancellation.d.ts","../../node_modules/vscode-jsonrpc/lib/common/messagebuffer.d.ts","../../node_modules/vscode-jsonrpc/lib/common/api.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/messages.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.typedefinition.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.workspacefolder.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.colorprovider.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingrange.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionrange.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.callhierarchy.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.semantictokens.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.showdocument.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.linkededitingrange.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.fileoperations.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.typehierarchy.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.inlinevalue.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayhint.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/connection.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/api.d.ts","../../node_modules/vscode-languageserver/lib/common/progress.d.ts","../../node_modules/vscode-languageserver/lib/common/configuration.d.ts","../../node_modules/vscode-languageserver/lib/common/workspacefolder.d.ts","../../node_modules/vscode-languageserver/lib/common/callhierarchy.d.ts","../../node_modules/vscode-languageserver/lib/common/semantictokens.d.ts","../../node_modules/vscode-languageserver/lib/common/showdocument.d.ts","../../node_modules/vscode-languageserver/lib/common/fileoperations.d.ts","../../node_modules/vscode-languageserver/lib/common/linkededitingrange.d.ts","../../node_modules/vscode-languageserver/lib/common/typehierarchy.d.ts","../../node_modules/vscode-languageserver/lib/common/inlinevalue.d.ts","../../node_modules/vscode-languageserver/lib/common/inlayhint.d.ts","../../node_modules/vscode-languageserver/lib/common/diagnostic.d.ts","../../node_modules/vscode-languageserver/lib/common/textdocuments.d.ts","../../node_modules/vscode-languageserver/lib/common/notebook.d.ts","../../node_modules/vscode-languageserver/lib/common/moniker.d.ts","../../node_modules/vscode-languageserver/lib/common/server.d.ts","../../node_modules/vscode-languageserver/lib/node/files.d.ts","../../node_modules/vscode-jsonrpc/lib/node/main.d.ts","../../node_modules/vscode-jsonrpc/node.d.ts","../../node_modules/vscode-languageserver-protocol/lib/node/main.d.ts","../../node_modules/vscode-languageserver-protocol/node.d.ts","../../node_modules/vscode-languageserver/lib/common/api.d.ts","../../node_modules/vscode-languageserver/lib/node/main.d.ts","../../node_modules/vscode-languageserver/node.d.ts","../../node_modules/vscode-languageserver-textdocument/lib/umd/main.d.ts","../src/server.ts","../../node_modules/@types/json-schema/index.d.ts","../../node_modules/@types/semver/classes/semver.d.ts","../../node_modules/@types/semver/functions/parse.d.ts","../../node_modules/@types/semver/functions/valid.d.ts","../../node_modules/@types/semver/functions/clean.d.ts","../../node_modules/@types/semver/functions/inc.d.ts","../../node_modules/@types/semver/functions/diff.d.ts","../../node_modules/@types/semver/functions/major.d.ts","../../node_modules/@types/semver/functions/minor.d.ts","../../node_modules/@types/semver/functions/patch.d.ts","../../node_modules/@types/semver/functions/prerelease.d.ts","../../node_modules/@types/semver/functions/compare.d.ts","../../node_modules/@types/semver/functions/rcompare.d.ts","../../node_modules/@types/semver/functions/compare-loose.d.ts","../../node_modules/@types/semver/functions/compare-build.d.ts","../../node_modules/@types/semver/functions/sort.d.ts","../../node_modules/@types/semver/functions/rsort.d.ts","../../node_modules/@types/semver/functions/gt.d.ts","../../node_modules/@types/semver/functions/lt.d.ts","../../node_modules/@types/semver/functions/eq.d.ts","../../node_modules/@types/semver/functions/neq.d.ts","../../node_modules/@types/semver/functions/gte.d.ts","../../node_modules/@types/semver/functions/lte.d.ts","../../node_modules/@types/semver/functions/cmp.d.ts","../../node_modules/@types/semver/functions/coerce.d.ts","../../node_modules/@types/semver/classes/comparator.d.ts","../../node_modules/@types/semver/classes/range.d.ts","../../node_modules/@types/semver/functions/satisfies.d.ts","../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../node_modules/@types/semver/ranges/min-version.d.ts","../../node_modules/@types/semver/ranges/valid.d.ts","../../node_modules/@types/semver/ranges/outside.d.ts","../../node_modules/@types/semver/ranges/gtr.d.ts","../../node_modules/@types/semver/ranges/ltr.d.ts","../../node_modules/@types/semver/ranges/intersects.d.ts","../../node_modules/@types/semver/ranges/simplify.d.ts","../../node_modules/@types/semver/ranges/subset.d.ts","../../node_modules/@types/semver/internals/identifiers.d.ts","../../node_modules/@types/semver/index.d.ts","../../node_modules/@types/vscode/index.d.ts"],"fileIdsList":[[51,56],[51,53,56],[51,55,56],[56],[51,56,61,88],[51,56,57,68,69,76,85,96],[51,56,57,58,68,76],[47,48,51,56],[51,56,59,97],[51,56,60,61,69,77],[51,56,61,85,93],[51,56,62,64,68,76],[51,56,63],[51,56,64,65],[51,56,68],[51,56,67,68],[51,55,56,68],[51,56,68,69,70,85,96],[51,56,68,69,70,85],[51,56,68,71,76,85,96],[51,56,68,69,71,72,76,85,93,96],[51,56,71,73,85,93,96],[49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102],[51,56,68,74],[51,56,75,96,101],[51,56,64,68,76,85],[51,56,77],[51,56,78],[51,55,56,79],[51,56,80,95,101],[51,56,81],[51,56,82],[51,56,68,83],[51,56,83,84,97,99],[51,56,68,85,86,87],[51,56,85,87],[51,56,85,86],[51,56,88],[51,56,89],[51,56,68,91,92],[51,56,91,92],[51,56,61,76,85,93],[51,56,94],[51,56,76,95],[51,56,71,82,96],[51,56,61,97],[51,56,85,98],[51,56,99],[51,56,100],[51,56,61,68,70,79,85,96,99,101],[51,56,85,102],[51,56,170,209],[51,56,170,194,209],[51,56,209],[51,56,170],[51,56,170,195,209],[51,56,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208],[51,56,195,209],[51,56,105,106,107,108,109,110,111,112,113,114,115,116,117],[51,56,108,109],[51,56,106,108,109,110,113,114],[51,56,106,112],[51,56,108],[51,56,112],[51,56,106,109,111,112,118],[51,56,106,109,111,112],[51,56,108,111],[51,56,106,110,115],[51,56,57,76,101,103,118],[51,56,160],[51,56,104,118,119,140,141],[51,56,118,119],[51,56,118],[51,56,104,118,119,140],[51,56,104,118,119],[51,56,104,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139],[51,56,119,140],[51,56,104,119,140],[51,56,103,142,161],[51,56,162],[51,56,142,143,147,155,156,158],[51,56,142,158],[51,56,142,155,158],[51,56,142,143,144,145,146,147,148,149,150,151,152,153,154,156,157],[51,56,142],[46,51,56,103,158,159,163,164],[51,56,165],[51,56,166,167]],"fileInfos":[{"version":"e41c290ef7dd7dab3493e6cbe5909e0148edf4a8dad0271be08edec368a0f7b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"62bb211266ee48b2d0edf0d8d1b191f0c24fc379a82bd4c1692a082c540bc6b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"f1e2a172204962276504466a6393426d2ca9c54894b1ad0a6c9dad867a65f876","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"65b9243c80068ec9696b1fbdd23c9acf80d51df02f97b2d7a0514312b0a9fe7d","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e864ea827318e5f490863a8cd412744d9ddb175acf488dd02a941703dad1e38","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"23301069cfa7a4c6dd68915eeccc7a2ae0bd3018ff4a6288dd9e0c8b4238fab6","affectsGlobalScope":true,"impliedFormat":1},{"version":"df01885cc27c14632a8c38bdeb053295e69209107bb6c53988b78db5f450cb3c","affectsGlobalScope":true,"impliedFormat":1},{"version":"38379fa748cc5d259c96da356a849bd290a159ae218e06ec1daa166850e4bf50","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"f51b4042a3ac86f1f707500a9768f88d0b0c1fc3f3e45a73333283dea720cdc6","impliedFormat":1},{"version":"a29bc8aa8cc100d0c09370c03508f1245853efe017bb98699d4c690868371fc7","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f95830ca11e2c7e82235b73dc149e68a0632b41e671724d12adc83a6750746d","impliedFormat":1},{"version":"7aa011cda7cf0b9e87c85d128b2eeac9930bda215b0fee265d8bf2cec039fb5f","impliedFormat":1},{"version":"92ec1aeca4e94bdab04083daa6039f807c0fce8f09bc42e8b24bf49fa5cdbbff","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"8463ab6a156dc96200b3d8b8a52dc8d878f13a6b7404439aa2f911d568132808","impliedFormat":1},{"version":"6c39d4dbdb372b364442854e42d8c473e2ec67badb226745af17ed5ac41ce6f5","impliedFormat":1},{"version":"7693b90b3075deaccafd5efb467bf9f2b747a3075be888652ef73e64396d8628","impliedFormat":1},{"version":"bd01a987f0fcf2344a405e542ee681e420651eaff1222a5a6e0c02fda52343bc","impliedFormat":1},{"version":"693e50962e90a3548f41bff2c22676e3964212a836022d82e49eca0b20320a38","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"300b0c12998391154d7b9115a85554e91632a3d3e1b66038e98f2b9cb3c1061d","impliedFormat":1},{"version":"222e742815b14d54db034788a7bee2d51197a2588c35b1fbefe04add6393021c","affectsGlobalScope":true,"impliedFormat":1},{"version":"93891e576a698609695e5b8117bb128336e4b7b28772e7d7e38e8075790eb42f","impliedFormat":1},{"version":"5293d799856f47259146ccf0be9a1cc0a4a5343696182d7206ed25ea67d67920","impliedFormat":1},{"version":"d723063c56101b34a7be5b28dbde80a3ae3dfd5e08fd49a3b569473337ead1f9","impliedFormat":1},{"version":"fab49059d6c2026bdb2e53e4e5cde1a39da44e61daff1867c8b3b10b507bfe17","impliedFormat":1},{"version":"5a551275f85bcc4003e543a1951a5b2f682cfba9b2922f65ae0df40ab71724a5","impliedFormat":1},{"version":"22d1a3163b9a961dbe78b0aedbd7bcbc071ce1f31efb76eb013b0aee230fef0e","impliedFormat":1},{"version":"c31695696ade4514cfcbb22799997b690d3dca7fb72beab68fb2e73b6ef450dd","affectsGlobalScope":true,"impliedFormat":1},{"version":"d99ad56d57f2c96daaf4475a8b64344b24dedafdb8f3c32d43552bcc72279a75","impliedFormat":1},{"version":"a101ef17aece908c1029a1bd3f97132794dcff21b4ca0b997d9a633f962c46aa","impliedFormat":1},{"version":"511575e18249b64b90d8f884fdb8a383c767d1a7efccd9d66a4e125a4dc5c462","impliedFormat":1},{"version":"6d8001f2c3b86c4f1de1d45ecb3f87f287ed7313d6999f8c8318cec4f50e6323","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e413bb587e01ba0cb1a87828cc9116669a4a71a61fe3a89b252f86f0c824bc2","affectsGlobalScope":true,"impliedFormat":1},{"version":"9c3d1222e6e3d8c35a4293d7a54d4142ebb8f7f70ec4111b8136df07fdc66169","impliedFormat":1},{"version":"70173c475c6e76ccebc37412b02b2e26f62bf45fc1534c3ebe6d7fa60fb88819","impliedFormat":1},{"version":"87ced739f77d80886ef2b923a7c52c363c549ad8799ae28eb8cc810892f511ad","impliedFormat":1},{"version":"863bc4e31de6c75423bb02da16190d582b0a69b8964b61d45920e5b2cb3832dd","impliedFormat":1},{"version":"849484324695b587f06abee7579641efe061b7338f9694ec410a76f477fe4df3","impliedFormat":1},{"version":"269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","impliedFormat":1},{"version":"6e191fea1db6e9e4fa828259cf489e820ec9170effff57fb081a2f3295db4722","impliedFormat":1},{"version":"49e0da63a2398d2ae88467f60a69b07e594b7777e01120cd9ebcefa1932484cf","impliedFormat":1},{"version":"0435070b07e646b406b1c9b8b1b1878ea6917c32abc47e6435ec26d71212d513","impliedFormat":1},{"version":"f71188f97c9f7d309798ec02a56dd3bf50a4e4d079b3480f275ac13719953898","impliedFormat":1},{"version":"c4454589a0aa92c10d684c8c9584574bc404d1db556d72196cd31f8f7651af1a","affectsGlobalScope":true,"impliedFormat":1},{"version":"b17790866e140a630fa8891d7105c728a1bd60f4e35822e4b345af166a4a728c","impliedFormat":1},{"version":"c50c75f4360f6fc06c4be29dafe28210e15c50cd6b04ad19c4808fa504efb51a","impliedFormat":1},{"version":"d4a1f5f7ee89b2afffd3c74282f8ee65b24266c92b7d40398c12a27054ed745c","impliedFormat":1},{"version":"900b5a9802192bc77eba35a5b87ce770df7b867a6d61772c554058c9ed635386","impliedFormat":1},{"version":"d291d3d16fa252f6d460687491ea2c5c23098c9dc0d3e106b2803fdc98f48f29","affectsGlobalScope":true,"impliedFormat":1},{"version":"f43fcf89d75f13d0908a77cd3fa32b9fd28c915deded9b2778b08f2e242d07a7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b9a616dec7430044ae735250f8d6a7183f5a9fba63f813e3d29dcab819fd7058","impliedFormat":1},{"version":"aebf613f7831125038942eba891005fd25fa5cadcc3e3d13af4768dc7549161f","impliedFormat":1},{"version":"0faee6b555890a1cb106e2adc5d3ffd89545b1da894d474e9d436596d654998f","impliedFormat":1},{"version":"247e5c34784d185bc81442e8b1a371a36c4a5307a766a3725454c0a191b5cfad","impliedFormat":1},{"version":"1c382a6446d63340be549a616ff5142a91653cea45d6d137e25b929130a4f29a","impliedFormat":1},{"version":"9cf81848d806418e203efa6df299e0c5bfb5c137369337b0547117b2f0d44892","impliedFormat":1},{"version":"f0142b712ca22ad863476d9f3ae74e8b2766f3507a6fb5018882074f65ed0195","impliedFormat":1},{"version":"65b9243c80068ec9696b1fbdd23c9acf80d51df02f97b2d7a0514312b0a9fe7d","affectsGlobalScope":true,"impliedFormat":1},{"version":"0def2c37cadfd7bf074fe9566cb83518f24d67193c79741b2d83ec290b945725","impliedFormat":1},{"version":"049e3511439f11e1285bec4647ab8aac53e0c06951b93ba507565dbde851ba31","impliedFormat":1},{"version":"f0745ab78e18a2befaf1d9951481973318722c4e2f33e859239f55fa999ff2b1","impliedFormat":1},{"version":"886e183dd0199e7de45d6308ac3e2185dac6f83283d1b8200ea62cf5c43966a1","impliedFormat":1},{"version":"392dd7b1117b588cba36c04909efd24b0458980506e8e8c1966114f8989058e2","impliedFormat":1},{"version":"ec9d55888e353f9b5cdda761308dffc7eeb6aa0b7b25d328c64d3776a1cf2a7e","impliedFormat":1},{"version":"1f8fedf144a967560be9e58fa32de75e4ca379c3549710d027a07be6a9414073","impliedFormat":1},{"version":"3ca7b2e8012b9a6be09fafd62f8f3937388b9e1600a59c98887d2b11f6d01b43","impliedFormat":1},{"version":"b138b3f30708386023a7dc9981bb867808e5ff3383429ac7f69b7bfd0dcc5bd5","impliedFormat":1},{"version":"a42c8992e2cf55a4a2d661fac251bc803fe119dad49327477d439268e42953d8","impliedFormat":1},{"version":"13ec544ab0a3a7ff96afac1016f55b264c812428e37d595dc33b688296435469","impliedFormat":1},{"version":"4962729121c2cb97a4481cdb06dfc720a79a3bc2fc9330ff2bcf604cfc541177","impliedFormat":1},{"version":"bc641da6705e45737a6c85bf6c7460e9298e5f5b1021abf035cb760d313cda1a","impliedFormat":1},{"version":"4284412700d89f927c8f5092a8e8c2a20a596349f2819148952b07f2cba9177a","impliedFormat":1},{"version":"4d08d58c94c1462506783c35009ddaeb70e54632310e384aa572ed7667333c8f","impliedFormat":1},{"version":"067f06a3d8abb66e4db6c22e34a076808b4c39418e45690f1abf37bcd4725f1c","impliedFormat":1},{"version":"05f6b2b3bef27dfc0e2464197510d08f275f2464363b441def7f309cbf42f51d","impliedFormat":1},{"version":"15055a0f3fe6c7e9d98bf9de36bdc9102ab324debbe2d4170ffe557115a199fc","impliedFormat":1},{"version":"33e11cee43184a95afe9a450f7dde6bd2b6a03fc9643f898268e8594c266554a","impliedFormat":1},{"version":"c13aaf7191fbccaf0f4e9e520c720b870c6339080eb1699439a392589fc85a96","impliedFormat":1},{"version":"41af0cbfe30738008b3765c30059580972362b70b8dcafd791908923e907c3a6","impliedFormat":1},{"version":"b5d49f459d2efc77cff4ab27d929aa67d0c9121bc20763d84942c7fca2cc7b8f","impliedFormat":1},{"version":"96c0c4b30165eaedb3ade3b4e9f491113a1816c448d67fff542b2793bf565b04","impliedFormat":1},{"version":"29a456c61c3d93e36f5eba4c0ed567d7896a9c08a38b537c3fc192a99d03b348","impliedFormat":1},{"version":"3b67dd4fbeec66a7d2acd2be4f65219d85abd04e6eb9cc96fd862ddf70e02eec","impliedFormat":1},{"version":"0a61f7b50171225629903175e062d3f43225e6eba24eb2e50f88ca05fb441aa6","impliedFormat":1},{"version":"818d9a0841c884447fbd61b934c6743aea1fa6f1c0159ef44ef55b8f02b9120f","impliedFormat":1},{"version":"b5f234cb0cb6ceb839fe2875ada30e62082707eaa7a36bfc4a4df9d287b901c7","impliedFormat":1},{"version":"facdb012edb0931c21556ace5bf7c0194c8389b1248fdbd94d09f793b311517c","impliedFormat":1},{"version":"98528506b6a07d49efdd7a65da416af50bfbfea67fbdca941ba55753e171a3db","impliedFormat":1},{"version":"8370c10834a51543556e92367c7c564723ae83b97199413a8eca6f5d70036cd5","impliedFormat":1},{"version":"8c1036c47d3e04eca9bd5fc5e0cdd219a78e4061a4bb4b55f4a4f0cbc621e66f","impliedFormat":1},{"version":"8db15e1da6050330d9e36bddd03131d5a02d56fac2e919fd8360892616357863","impliedFormat":1},{"version":"44874584b7c30882ea2cb1b9b0df0e198221afee1ee5cc4d04deb4c8a3c6345a","impliedFormat":1},{"version":"09839c769382d4763700d97d6e9ceae5c9ab3c34cf288229d9879b63c7206c60","impliedFormat":1},{"version":"c0c205fec8b10f3ad0e65af65dd20ea7cf633df0964c84305e375ccdc4f5557e","impliedFormat":1},{"version":"37c2423005b2ec6130903de29aec9fcf1680ab1b2336efa0ff828980e92da7e9","impliedFormat":1},{"version":"f1f23acd4a8193453749f69d4432f5f122d6d572b793a8b630dd12fe80b0c3d3","impliedFormat":1},{"version":"7662d6994d28c9ebbe61b88cc35c3d705804351eedbf363df30ea9fe8c4961dc","impliedFormat":1},{"version":"1fb68106bddae35448e5279095461a4b54c4bbb42787cd629f70924b17e9a11e","impliedFormat":1},{"version":"46a9b0122b230cb2fab65999ba92f98a16fd8f1c25efaed47141cbf5056f6928","impliedFormat":1},{"version":"5a9a4741aa510bdee406441f77186c6d2005be78e78c2e0da8201d9991950164","impliedFormat":1},{"version":"351bbf43d585484825ee6c4b4805aac137ffc8e8a3b9812af99945a202db7c02","impliedFormat":1},{"version":"3990ae796cc23fb9829eae206eff1eddded9465504467a4433f2509e18ef1aed","impliedFormat":1},{"version":"b557ea3605e52406e35eeea468cb96f25b1ca906f2055f376597f0b02492d94c","impliedFormat":1},{"version":"f384bb303dbc114af6460e7cb30b766cc92eed33fccb331126b08bb63f15a034","impliedFormat":1},{"version":"8a9bd1cf8c1f75435f83595b43737c135e7f73bde39ba4c9339dc6a31e8bb069","impliedFormat":1},{"version":"8274bfd5de49f9f072be2f39c34e390101a8b69844e55eda36c7df23ba6d03e2","impliedFormat":1},{"version":"f8b482dddda55dd6677d7895a3fef8cd9d067f8c36c63cc7fe93b82a6dd4f10c","impliedFormat":1},{"version":"71d11ad1f05b0b90e95591fa85c1c8043e590d67972dcaba9b50435a0c04d8fa","impliedFormat":1},{"version":"c77c8f4aa3f4b849eda044768882bb102edf211b1c26b04a3c6ad921110f2fa4","impliedFormat":1},{"version":"a980ce9470dc95ac355d7efb729f9cfb0564505eba96da4bbde504299efb833a","impliedFormat":1},{"version":"eed44483a64b3c5a643663f8827c868ef3888965c7f3654e816debd03c621da0","impliedFormat":1},{"version":"a58402dc75738c188a741ccca86ccf898b0af98d305ad075c428171f193a6cd5","impliedFormat":1},{"version":"67d37ef881a81aefe3a0f70f78e3835be950f2359487d3eb61b0a3bb9af172bc","impliedFormat":1},{"version":"9c98df0145d99011af92c397fa787fc39d42cc04019614ab5581febe71fb32e1","impliedFormat":1},{"version":"d789022bf705385490fe89811bc7850225c207f37dd706ada2509eb1d8f31f12","impliedFormat":1},{"version":"9c98df0145d99011af92c397fa787fc39d42cc04019614ab5581febe71fb32e1","impliedFormat":1},{"version":"d29fa1f984b6d5ec55c37e6f65474ea4acaf9ba92d2b1d502ca824abca86b430","impliedFormat":1},{"version":"abd02654e7ae1f70f68ec509b2c3c1e388c0142d169ba37a157f558709efe2a1","impliedFormat":1},{"version":"9c98df0145d99011af92c397fa787fc39d42cc04019614ab5581febe71fb32e1","impliedFormat":1},{"version":"96a56b3bbf8346c584c5d58db4fb8adc58982e4e9f2929488ad5aeb89ddc19f8","impliedFormat":1},{"version":"db744053fe42f80b7777c89f39bc6cf351f7796b1c828550a37cdc17cba0e056","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"cf3d384d082b933d987c4e2fe7bfb8710adfd9dc8155190056ed6695a25a559e","impliedFormat":1},{"version":"9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","impliedFormat":1},{"version":"c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","impliedFormat":1},{"version":"8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","impliedFormat":1},{"version":"86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","impliedFormat":1},{"version":"42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","impliedFormat":1},{"version":"ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","impliedFormat":1},{"version":"83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","impliedFormat":1},{"version":"1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","impliedFormat":1},{"version":"0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","impliedFormat":1},{"version":"cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","impliedFormat":1},{"version":"c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","impliedFormat":1},{"version":"f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","impliedFormat":1},{"version":"0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","impliedFormat":1},{"version":"7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","impliedFormat":1},{"version":"bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","impliedFormat":1},{"version":"52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","impliedFormat":1},{"version":"770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","impliedFormat":1},{"version":"d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","impliedFormat":1},{"version":"799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","impliedFormat":1},{"version":"2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","impliedFormat":1},{"version":"9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","impliedFormat":1},{"version":"397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","impliedFormat":1},{"version":"a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","impliedFormat":1},{"version":"a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","impliedFormat":1},{"version":"c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","impliedFormat":1},{"version":"4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","impliedFormat":1},{"version":"f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","impliedFormat":1},{"version":"cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","impliedFormat":1},{"version":"b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","impliedFormat":1},{"version":"c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","impliedFormat":1},{"version":"14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","impliedFormat":1},{"version":"a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","impliedFormat":1},{"version":"f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","impliedFormat":1},{"version":"3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","impliedFormat":1},{"version":"662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","impliedFormat":1},{"version":"c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","impliedFormat":1},{"version":"2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"7d8ddf0f021c53099e34ee831a06c394d50371816caa98684812f089b4c6b3d4","impliedFormat":1},{"version":"caaf6bf4dd0a3f88b50670f5786141b209edb54ba17eb6268c2d28919c813606","affectsGlobalScope":true,"impliedFormat":1}],"root":[168],"options":{"composite":true,"module":1,"outDir":"./","rootDir":"../src","sourceMap":true,"strict":true,"target":7,"tsBuildInfoFile":"./.tsbuildinfo"},"referencedMap":[[169,1],[53,2],[54,2],[55,3],[51,4],[56,5],[57,6],[58,7],[49,8],[47,1],[48,1],[59,9],[60,10],[61,11],[62,12],[63,13],[64,14],[65,14],[66,15],[67,16],[68,17],[69,18],[70,19],[52,1],[50,1],[71,20],[72,21],[73,22],[103,23],[74,24],[75,25],[76,26],[77,27],[78,28],[79,29],[80,30],[81,31],[82,32],[83,33],[84,34],[85,35],[87,36],[86,37],[88,38],[89,39],[90,1],[91,40],[92,41],[93,42],[94,43],[95,44],[96,45],[97,46],[98,47],[99,48],[100,49],[101,50],[102,51],[194,52],[195,53],[170,54],[173,54],[192,52],[193,52],[183,52],[182,55],[180,52],[175,52],[188,52],[186,52],[190,52],[174,52],[187,52],[191,52],[176,52],[177,52],[189,52],[171,52],[178,52],[179,52],[181,52],[185,52],[196,56],[184,52],[172,52],[209,57],[208,1],[203,56],[205,58],[204,56],[197,56],[198,56],[200,56],[202,56],[206,58],[207,58],[199,58],[201,58],[210,1],[44,1],[45,1],[9,1],[8,1],[2,1],[10,1],[11,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[3,1],[18,1],[19,1],[4,1],[20,1],[24,1],[21,1],[22,1],[23,1],[25,1],[26,1],[27,1],[5,1],[28,1],[29,1],[30,1],[31,1],[6,1],[35,1],[32,1],[33,1],[34,1],[36,1],[7,1],[37,1],[42,1],[43,1],[38,1],[39,1],[40,1],[41,1],[1,1],[118,59],[110,60],[115,61],[108,1],[111,62],[109,63],[107,1],[117,64],[113,65],[106,1],[114,66],[112,67],[116,68],[160,69],[161,70],[105,1],[142,71],[141,72],[119,73],[129,74],[124,74],[123,75],[140,76],[126,74],[138,74],[133,75],[125,74],[120,74],[137,74],[136,74],[132,74],[134,77],[139,78],[128,75],[127,74],[130,74],[131,75],[121,74],[135,74],[122,75],[162,79],[163,80],[167,1],[104,1],[164,81],[146,82],[144,82],[154,82],[149,82],[153,82],[152,82],[150,82],[157,82],[156,83],[143,82],[147,82],[158,84],[148,82],[155,85],[151,82],[145,82],[159,1],[165,86],[166,87],[46,1],[168,88]],"latestChangedDtsFile":"./server.d.ts","version":"5.7.3"} \ No newline at end of file +{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/vscode-languageserver/typings/thenable.d.ts","../../node_modules/@types/node/compatibility/indexable.d.ts","../../node_modules/@types/node/compatibility/iterators.d.ts","../../node_modules/@types/node/compatibility/index.d.ts","../../node_modules/@types/node/globals.typedarray.d.ts","../../node_modules/@types/node/buffer.buffer.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/assert.d.ts","../../node_modules/@types/node/assert/strict.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/dns/promises.d.ts","../../node_modules/@types/node/dom-events.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/fs/promises.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/stream/promises.d.ts","../../node_modules/@types/node/stream/consumers.d.ts","../../node_modules/@types/node/stream/web.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/test.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/timers/promises.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/wasi.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/index.d.ts","../../node_modules/vscode-languageserver-types/lib/umd/main.d.ts","../../node_modules/vscode-jsonrpc/typings/thenable.d.ts","../../node_modules/vscode-jsonrpc/lib/common/messages.d.ts","../../node_modules/vscode-jsonrpc/lib/common/linkedmap.d.ts","../../node_modules/vscode-jsonrpc/lib/common/disposable.d.ts","../../node_modules/vscode-jsonrpc/lib/common/events.d.ts","../../node_modules/vscode-jsonrpc/lib/common/cancellation.d.ts","../../node_modules/vscode-jsonrpc/lib/common/encoding.d.ts","../../node_modules/vscode-jsonrpc/lib/common/ral.d.ts","../../node_modules/vscode-jsonrpc/lib/common/messagereader.d.ts","../../node_modules/vscode-jsonrpc/lib/common/messagewriter.d.ts","../../node_modules/vscode-jsonrpc/lib/common/connection.d.ts","../../node_modules/vscode-jsonrpc/lib/common/sharedarraycancellation.d.ts","../../node_modules/vscode-jsonrpc/lib/common/messagebuffer.d.ts","../../node_modules/vscode-jsonrpc/lib/common/api.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/messages.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.typedefinition.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.workspacefolder.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.colorprovider.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingrange.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionrange.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.callhierarchy.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.semantictokens.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.showdocument.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.linkededitingrange.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.fileoperations.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.typehierarchy.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.inlinevalue.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayhint.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/protocol.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/connection.d.ts","../../node_modules/vscode-languageserver-protocol/lib/common/api.d.ts","../../node_modules/vscode-languageserver/lib/common/progress.d.ts","../../node_modules/vscode-languageserver/lib/common/configuration.d.ts","../../node_modules/vscode-languageserver/lib/common/workspacefolder.d.ts","../../node_modules/vscode-languageserver/lib/common/callhierarchy.d.ts","../../node_modules/vscode-languageserver/lib/common/semantictokens.d.ts","../../node_modules/vscode-languageserver/lib/common/showdocument.d.ts","../../node_modules/vscode-languageserver/lib/common/fileoperations.d.ts","../../node_modules/vscode-languageserver/lib/common/linkededitingrange.d.ts","../../node_modules/vscode-languageserver/lib/common/typehierarchy.d.ts","../../node_modules/vscode-languageserver/lib/common/inlinevalue.d.ts","../../node_modules/vscode-languageserver/lib/common/inlayhint.d.ts","../../node_modules/vscode-languageserver/lib/common/diagnostic.d.ts","../../node_modules/vscode-languageserver/lib/common/textdocuments.d.ts","../../node_modules/vscode-languageserver/lib/common/notebook.d.ts","../../node_modules/vscode-languageserver/lib/common/moniker.d.ts","../../node_modules/vscode-languageserver/lib/common/server.d.ts","../../node_modules/vscode-languageserver/lib/node/files.d.ts","../../node_modules/vscode-jsonrpc/lib/node/main.d.ts","../../node_modules/vscode-jsonrpc/node.d.ts","../../node_modules/vscode-languageserver-protocol/lib/node/main.d.ts","../../node_modules/vscode-languageserver-protocol/node.d.ts","../../node_modules/vscode-languageserver/lib/common/api.d.ts","../../node_modules/vscode-languageserver/lib/node/main.d.ts","../../node_modules/vscode-languageserver/node.d.ts","../../node_modules/vscode-languageserver-textdocument/lib/umd/main.d.ts","../src/server.ts","../../node_modules/@types/json-schema/index.d.ts","../../node_modules/@types/semver/classes/semver.d.ts","../../node_modules/@types/semver/functions/parse.d.ts","../../node_modules/@types/semver/functions/valid.d.ts","../../node_modules/@types/semver/functions/clean.d.ts","../../node_modules/@types/semver/functions/inc.d.ts","../../node_modules/@types/semver/functions/diff.d.ts","../../node_modules/@types/semver/functions/major.d.ts","../../node_modules/@types/semver/functions/minor.d.ts","../../node_modules/@types/semver/functions/patch.d.ts","../../node_modules/@types/semver/functions/prerelease.d.ts","../../node_modules/@types/semver/functions/compare.d.ts","../../node_modules/@types/semver/functions/rcompare.d.ts","../../node_modules/@types/semver/functions/compare-loose.d.ts","../../node_modules/@types/semver/functions/compare-build.d.ts","../../node_modules/@types/semver/functions/sort.d.ts","../../node_modules/@types/semver/functions/rsort.d.ts","../../node_modules/@types/semver/functions/gt.d.ts","../../node_modules/@types/semver/functions/lt.d.ts","../../node_modules/@types/semver/functions/eq.d.ts","../../node_modules/@types/semver/functions/neq.d.ts","../../node_modules/@types/semver/functions/gte.d.ts","../../node_modules/@types/semver/functions/lte.d.ts","../../node_modules/@types/semver/functions/cmp.d.ts","../../node_modules/@types/semver/functions/coerce.d.ts","../../node_modules/@types/semver/classes/comparator.d.ts","../../node_modules/@types/semver/classes/range.d.ts","../../node_modules/@types/semver/functions/satisfies.d.ts","../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../node_modules/@types/semver/ranges/min-version.d.ts","../../node_modules/@types/semver/ranges/valid.d.ts","../../node_modules/@types/semver/ranges/outside.d.ts","../../node_modules/@types/semver/ranges/gtr.d.ts","../../node_modules/@types/semver/ranges/ltr.d.ts","../../node_modules/@types/semver/ranges/intersects.d.ts","../../node_modules/@types/semver/ranges/simplify.d.ts","../../node_modules/@types/semver/ranges/subset.d.ts","../../node_modules/@types/semver/internals/identifiers.d.ts","../../node_modules/@types/semver/index.d.ts","../../node_modules/@types/vscode/index.d.ts"],"fileIdsList":[[51,56],[51,53,56],[51,55,56],[56],[51,56,61,88],[51,56,57,68,69,76,85,96],[51,56,57,58,68,76],[47,48,51,56],[51,56,59,97],[51,56,60,61,69,77],[51,56,61,85,93],[51,56,62,64,68,76],[51,56,63],[51,56,64,65],[51,56,68],[51,56,67,68],[51,55,56,68],[51,56,68,69,70,85,96],[51,56,68,69,70,85],[51,56,68,71,76,85,96],[51,56,68,69,71,72,76,85,93,96],[51,56,71,73,85,93,96],[49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102],[51,56,68,74],[51,56,75,96,101],[51,56,64,68,76,85],[51,56,77],[51,56,78],[51,55,56,79],[51,56,80,95,101],[51,56,81],[51,56,82],[51,56,68,83],[51,56,83,84,97,99],[51,56,68,85,86,87],[51,56,85,87],[51,56,85,86],[51,56,88],[51,56,89],[51,56,68,91,92],[51,56,91,92],[51,56,61,76,85,93],[51,56,94],[51,56,76,95],[51,56,71,82,96],[51,56,61,97],[51,56,85,98],[51,56,99],[51,56,100],[51,56,61,68,70,79,85,96,99,101],[51,56,85,102],[51,56,170,209],[51,56,170,194,209],[51,56,209],[51,56,170],[51,56,170,195,209],[51,56,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208],[51,56,195,209],[51,56,105,106,107,108,109,110,111,112,113,114,115,116,117],[51,56,108,109],[51,56,106,108,109,110,113,114],[51,56,106,112],[51,56,108],[51,56,112],[51,56,106,109,111,112,118],[51,56,106,109,111,112],[51,56,108,111],[51,56,106,110,115],[51,56,57,76,101,103,118],[51,56,160],[51,56,104,118,119,140,141],[51,56,118,119],[51,56,118],[51,56,104,118,119,140],[51,56,104,118,119],[51,56,104,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139],[51,56,119,140],[51,56,104,119,140],[51,56,103,142,161],[51,56,162],[51,56,142,143,147,155,156,158],[51,56,142,158],[51,56,142,155,158],[51,56,142,143,144,145,146,147,148,149,150,151,152,153,154,156,157],[51,56,142],[46,51,56,103,158,159,163,164],[51,56,165],[51,56,166,167]],"fileInfos":[{"version":"69684132aeb9b5642cbcd9e22dff7818ff0ee1aa831728af0ecf97d3364d5546","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"65b9243c80068ec9696b1fbdd23c9acf80d51df02f97b2d7a0514312b0a9fe7d","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e864ea827318e5f490863a8cd412744d9ddb175acf488dd02a941703dad1e38","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"23301069cfa7a4c6dd68915eeccc7a2ae0bd3018ff4a6288dd9e0c8b4238fab6","affectsGlobalScope":true,"impliedFormat":1},{"version":"df01885cc27c14632a8c38bdeb053295e69209107bb6c53988b78db5f450cb3c","affectsGlobalScope":true,"impliedFormat":1},{"version":"38379fa748cc5d259c96da356a849bd290a159ae218e06ec1daa166850e4bf50","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"f51b4042a3ac86f1f707500a9768f88d0b0c1fc3f3e45a73333283dea720cdc6","impliedFormat":1},{"version":"a29bc8aa8cc100d0c09370c03508f1245853efe017bb98699d4c690868371fc7","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f95830ca11e2c7e82235b73dc149e68a0632b41e671724d12adc83a6750746d","impliedFormat":1},{"version":"7aa011cda7cf0b9e87c85d128b2eeac9930bda215b0fee265d8bf2cec039fb5f","impliedFormat":1},{"version":"92ec1aeca4e94bdab04083daa6039f807c0fce8f09bc42e8b24bf49fa5cdbbff","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"8463ab6a156dc96200b3d8b8a52dc8d878f13a6b7404439aa2f911d568132808","impliedFormat":1},{"version":"5289750c112b5dd0e29dfa9089ddbf5d3ed1b544d99731093881e6967f5af4d1","impliedFormat":1},{"version":"7693b90b3075deaccafd5efb467bf9f2b747a3075be888652ef73e64396d8628","impliedFormat":1},{"version":"bd01a987f0fcf2344a405e542ee681e420651eaff1222a5a6e0c02fda52343bc","impliedFormat":1},{"version":"693e50962e90a3548f41bff2c22676e3964212a836022d82e49eca0b20320a38","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"300b0c12998391154d7b9115a85554e91632a3d3e1b66038e98f2b9cb3c1061d","impliedFormat":1},{"version":"222e742815b14d54db034788a7bee2d51197a2588c35b1fbefe04add6393021c","affectsGlobalScope":true,"impliedFormat":1},{"version":"93891e576a698609695e5b8117bb128336e4b7b28772e7d7e38e8075790eb42f","impliedFormat":1},{"version":"69d90a2f13511eeaae271905c8615a93e20335530d1062a93cb04e754e5f04ad","impliedFormat":1},{"version":"d723063c56101b34a7be5b28dbde80a3ae3dfd5e08fd49a3b569473337ead1f9","impliedFormat":1},{"version":"fab49059d6c2026bdb2e53e4e5cde1a39da44e61daff1867c8b3b10b507bfe17","impliedFormat":1},{"version":"5a551275f85bcc4003e543a1951a5b2f682cfba9b2922f65ae0df40ab71724a5","impliedFormat":1},{"version":"22d1a3163b9a961dbe78b0aedbd7bcbc071ce1f31efb76eb013b0aee230fef0e","impliedFormat":1},{"version":"c31695696ade4514cfcbb22799997b690d3dca7fb72beab68fb2e73b6ef450dd","affectsGlobalScope":true,"impliedFormat":1},{"version":"d99ad56d57f2c96daaf4475a8b64344b24dedafdb8f3c32d43552bcc72279a75","impliedFormat":1},{"version":"a101ef17aece908c1029a1bd3f97132794dcff21b4ca0b997d9a633f962c46aa","impliedFormat":1},{"version":"511575e18249b64b90d8f884fdb8a383c767d1a7efccd9d66a4e125a4dc5c462","impliedFormat":1},{"version":"6d8001f2c3b86c4f1de1d45ecb3f87f287ed7313d6999f8c8318cec4f50e6323","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e413bb587e01ba0cb1a87828cc9116669a4a71a61fe3a89b252f86f0c824bc2","affectsGlobalScope":true,"impliedFormat":1},{"version":"9c3d1222e6e3d8c35a4293d7a54d4142ebb8f7f70ec4111b8136df07fdc66169","impliedFormat":1},{"version":"70173c475c6e76ccebc37412b02b2e26f62bf45fc1534c3ebe6d7fa60fb88819","impliedFormat":1},{"version":"87ced739f77d80886ef2b923a7c52c363c549ad8799ae28eb8cc810892f511ad","impliedFormat":1},{"version":"863bc4e31de6c75423bb02da16190d582b0a69b8964b61d45920e5b2cb3832dd","impliedFormat":1},{"version":"849484324695b587f06abee7579641efe061b7338f9694ec410a76f477fe4df3","impliedFormat":1},{"version":"269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","impliedFormat":1},{"version":"6e191fea1db6e9e4fa828259cf489e820ec9170effff57fb081a2f3295db4722","impliedFormat":1},{"version":"49e0da63a2398d2ae88467f60a69b07e594b7777e01120cd9ebcefa1932484cf","impliedFormat":1},{"version":"0435070b07e646b406b1c9b8b1b1878ea6917c32abc47e6435ec26d71212d513","impliedFormat":1},{"version":"f71188f97c9f7d309798ec02a56dd3bf50a4e4d079b3480f275ac13719953898","impliedFormat":1},{"version":"c4454589a0aa92c10d684c8c9584574bc404d1db556d72196cd31f8f7651af1a","affectsGlobalScope":true,"impliedFormat":1},{"version":"b17790866e140a630fa8891d7105c728a1bd60f4e35822e4b345af166a4a728c","impliedFormat":1},{"version":"c50c75f4360f6fc06c4be29dafe28210e15c50cd6b04ad19c4808fa504efb51a","impliedFormat":1},{"version":"d4a1f5f7ee89b2afffd3c74282f8ee65b24266c92b7d40398c12a27054ed745c","impliedFormat":1},{"version":"900b5a9802192bc77eba35a5b87ce770df7b867a6d61772c554058c9ed635386","impliedFormat":1},{"version":"d291d3d16fa252f6d460687491ea2c5c23098c9dc0d3e106b2803fdc98f48f29","affectsGlobalScope":true,"impliedFormat":1},{"version":"f43fcf89d75f13d0908a77cd3fa32b9fd28c915deded9b2778b08f2e242d07a7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b9a616dec7430044ae735250f8d6a7183f5a9fba63f813e3d29dcab819fd7058","impliedFormat":1},{"version":"aebf613f7831125038942eba891005fd25fa5cadcc3e3d13af4768dc7549161f","impliedFormat":1},{"version":"0faee6b555890a1cb106e2adc5d3ffd89545b1da894d474e9d436596d654998f","impliedFormat":1},{"version":"247e5c34784d185bc81442e8b1a371a36c4a5307a766a3725454c0a191b5cfad","impliedFormat":1},{"version":"1c382a6446d63340be549a616ff5142a91653cea45d6d137e25b929130a4f29a","impliedFormat":1},{"version":"9cf81848d806418e203efa6df299e0c5bfb5c137369337b0547117b2f0d44892","impliedFormat":1},{"version":"f0142b712ca22ad863476d9f3ae74e8b2766f3507a6fb5018882074f65ed0195","impliedFormat":1},{"version":"65b9243c80068ec9696b1fbdd23c9acf80d51df02f97b2d7a0514312b0a9fe7d","affectsGlobalScope":true,"impliedFormat":1},{"version":"0def2c37cadfd7bf074fe9566cb83518f24d67193c79741b2d83ec290b945725","impliedFormat":1},{"version":"049e3511439f11e1285bec4647ab8aac53e0c06951b93ba507565dbde851ba31","impliedFormat":1},{"version":"f0745ab78e18a2befaf1d9951481973318722c4e2f33e859239f55fa999ff2b1","impliedFormat":1},{"version":"886e183dd0199e7de45d6308ac3e2185dac6f83283d1b8200ea62cf5c43966a1","impliedFormat":1},{"version":"392dd7b1117b588cba36c04909efd24b0458980506e8e8c1966114f8989058e2","impliedFormat":1},{"version":"ec9d55888e353f9b5cdda761308dffc7eeb6aa0b7b25d328c64d3776a1cf2a7e","impliedFormat":1},{"version":"1f8fedf144a967560be9e58fa32de75e4ca379c3549710d027a07be6a9414073","impliedFormat":1},{"version":"3ca7b2e8012b9a6be09fafd62f8f3937388b9e1600a59c98887d2b11f6d01b43","impliedFormat":1},{"version":"b138b3f30708386023a7dc9981bb867808e5ff3383429ac7f69b7bfd0dcc5bd5","impliedFormat":1},{"version":"a42c8992e2cf55a4a2d661fac251bc803fe119dad49327477d439268e42953d8","impliedFormat":1},{"version":"13ec544ab0a3a7ff96afac1016f55b264c812428e37d595dc33b688296435469","impliedFormat":1},{"version":"4962729121c2cb97a4481cdb06dfc720a79a3bc2fc9330ff2bcf604cfc541177","impliedFormat":1},{"version":"bc641da6705e45737a6c85bf6c7460e9298e5f5b1021abf035cb760d313cda1a","impliedFormat":1},{"version":"4284412700d89f927c8f5092a8e8c2a20a596349f2819148952b07f2cba9177a","impliedFormat":1},{"version":"4d08d58c94c1462506783c35009ddaeb70e54632310e384aa572ed7667333c8f","impliedFormat":1},{"version":"067f06a3d8abb66e4db6c22e34a076808b4c39418e45690f1abf37bcd4725f1c","impliedFormat":1},{"version":"05f6b2b3bef27dfc0e2464197510d08f275f2464363b441def7f309cbf42f51d","impliedFormat":1},{"version":"15055a0f3fe6c7e9d98bf9de36bdc9102ab324debbe2d4170ffe557115a199fc","impliedFormat":1},{"version":"33e11cee43184a95afe9a450f7dde6bd2b6a03fc9643f898268e8594c266554a","impliedFormat":1},{"version":"c13aaf7191fbccaf0f4e9e520c720b870c6339080eb1699439a392589fc85a96","impliedFormat":1},{"version":"41af0cbfe30738008b3765c30059580972362b70b8dcafd791908923e907c3a6","impliedFormat":1},{"version":"b5d49f459d2efc77cff4ab27d929aa67d0c9121bc20763d84942c7fca2cc7b8f","impliedFormat":1},{"version":"96c0c4b30165eaedb3ade3b4e9f491113a1816c448d67fff542b2793bf565b04","impliedFormat":1},{"version":"29a456c61c3d93e36f5eba4c0ed567d7896a9c08a38b537c3fc192a99d03b348","impliedFormat":1},{"version":"3b67dd4fbeec66a7d2acd2be4f65219d85abd04e6eb9cc96fd862ddf70e02eec","impliedFormat":1},{"version":"0a61f7b50171225629903175e062d3f43225e6eba24eb2e50f88ca05fb441aa6","impliedFormat":1},{"version":"818d9a0841c884447fbd61b934c6743aea1fa6f1c0159ef44ef55b8f02b9120f","impliedFormat":1},{"version":"b5f234cb0cb6ceb839fe2875ada30e62082707eaa7a36bfc4a4df9d287b901c7","impliedFormat":1},{"version":"facdb012edb0931c21556ace5bf7c0194c8389b1248fdbd94d09f793b311517c","impliedFormat":1},{"version":"98528506b6a07d49efdd7a65da416af50bfbfea67fbdca941ba55753e171a3db","impliedFormat":1},{"version":"8370c10834a51543556e92367c7c564723ae83b97199413a8eca6f5d70036cd5","impliedFormat":1},{"version":"8c1036c47d3e04eca9bd5fc5e0cdd219a78e4061a4bb4b55f4a4f0cbc621e66f","impliedFormat":1},{"version":"8db15e1da6050330d9e36bddd03131d5a02d56fac2e919fd8360892616357863","impliedFormat":1},{"version":"44874584b7c30882ea2cb1b9b0df0e198221afee1ee5cc4d04deb4c8a3c6345a","impliedFormat":1},{"version":"09839c769382d4763700d97d6e9ceae5c9ab3c34cf288229d9879b63c7206c60","impliedFormat":1},{"version":"c0c205fec8b10f3ad0e65af65dd20ea7cf633df0964c84305e375ccdc4f5557e","impliedFormat":1},{"version":"37c2423005b2ec6130903de29aec9fcf1680ab1b2336efa0ff828980e92da7e9","impliedFormat":1},{"version":"f1f23acd4a8193453749f69d4432f5f122d6d572b793a8b630dd12fe80b0c3d3","impliedFormat":1},{"version":"7662d6994d28c9ebbe61b88cc35c3d705804351eedbf363df30ea9fe8c4961dc","impliedFormat":1},{"version":"1fb68106bddae35448e5279095461a4b54c4bbb42787cd629f70924b17e9a11e","impliedFormat":1},{"version":"46a9b0122b230cb2fab65999ba92f98a16fd8f1c25efaed47141cbf5056f6928","impliedFormat":1},{"version":"5a9a4741aa510bdee406441f77186c6d2005be78e78c2e0da8201d9991950164","impliedFormat":1},{"version":"351bbf43d585484825ee6c4b4805aac137ffc8e8a3b9812af99945a202db7c02","impliedFormat":1},{"version":"3990ae796cc23fb9829eae206eff1eddded9465504467a4433f2509e18ef1aed","impliedFormat":1},{"version":"b557ea3605e52406e35eeea468cb96f25b1ca906f2055f376597f0b02492d94c","impliedFormat":1},{"version":"f384bb303dbc114af6460e7cb30b766cc92eed33fccb331126b08bb63f15a034","impliedFormat":1},{"version":"8a9bd1cf8c1f75435f83595b43737c135e7f73bde39ba4c9339dc6a31e8bb069","impliedFormat":1},{"version":"8274bfd5de49f9f072be2f39c34e390101a8b69844e55eda36c7df23ba6d03e2","impliedFormat":1},{"version":"f8b482dddda55dd6677d7895a3fef8cd9d067f8c36c63cc7fe93b82a6dd4f10c","impliedFormat":1},{"version":"71d11ad1f05b0b90e95591fa85c1c8043e590d67972dcaba9b50435a0c04d8fa","impliedFormat":1},{"version":"c77c8f4aa3f4b849eda044768882bb102edf211b1c26b04a3c6ad921110f2fa4","impliedFormat":1},{"version":"a980ce9470dc95ac355d7efb729f9cfb0564505eba96da4bbde504299efb833a","impliedFormat":1},{"version":"eed44483a64b3c5a643663f8827c868ef3888965c7f3654e816debd03c621da0","impliedFormat":1},{"version":"a58402dc75738c188a741ccca86ccf898b0af98d305ad075c428171f193a6cd5","impliedFormat":1},{"version":"67d37ef881a81aefe3a0f70f78e3835be950f2359487d3eb61b0a3bb9af172bc","impliedFormat":1},{"version":"9c98df0145d99011af92c397fa787fc39d42cc04019614ab5581febe71fb32e1","impliedFormat":1},{"version":"d789022bf705385490fe89811bc7850225c207f37dd706ada2509eb1d8f31f12","impliedFormat":1},{"version":"9c98df0145d99011af92c397fa787fc39d42cc04019614ab5581febe71fb32e1","impliedFormat":1},{"version":"d29fa1f984b6d5ec55c37e6f65474ea4acaf9ba92d2b1d502ca824abca86b430","impliedFormat":1},{"version":"abd02654e7ae1f70f68ec509b2c3c1e388c0142d169ba37a157f558709efe2a1","impliedFormat":1},{"version":"9c98df0145d99011af92c397fa787fc39d42cc04019614ab5581febe71fb32e1","impliedFormat":1},{"version":"96a56b3bbf8346c584c5d58db4fb8adc58982e4e9f2929488ad5aeb89ddc19f8","impliedFormat":1},{"version":"1713061564333834e61dc7607b418038e7bc722f28b2f1fd6d749a00cc25d880","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"cf3d384d082b933d987c4e2fe7bfb8710adfd9dc8155190056ed6695a25a559e","impliedFormat":1},{"version":"9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","impliedFormat":1},{"version":"c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","impliedFormat":1},{"version":"8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","impliedFormat":1},{"version":"86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","impliedFormat":1},{"version":"42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","impliedFormat":1},{"version":"ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","impliedFormat":1},{"version":"83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","impliedFormat":1},{"version":"1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","impliedFormat":1},{"version":"0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","impliedFormat":1},{"version":"cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","impliedFormat":1},{"version":"c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","impliedFormat":1},{"version":"f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","impliedFormat":1},{"version":"0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","impliedFormat":1},{"version":"7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","impliedFormat":1},{"version":"bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","impliedFormat":1},{"version":"52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","impliedFormat":1},{"version":"770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","impliedFormat":1},{"version":"d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","impliedFormat":1},{"version":"799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","impliedFormat":1},{"version":"2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","impliedFormat":1},{"version":"9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","impliedFormat":1},{"version":"397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","impliedFormat":1},{"version":"a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","impliedFormat":1},{"version":"a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","impliedFormat":1},{"version":"c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","impliedFormat":1},{"version":"4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","impliedFormat":1},{"version":"f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","impliedFormat":1},{"version":"cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","impliedFormat":1},{"version":"b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","impliedFormat":1},{"version":"c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","impliedFormat":1},{"version":"14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","impliedFormat":1},{"version":"a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","impliedFormat":1},{"version":"f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","impliedFormat":1},{"version":"3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","impliedFormat":1},{"version":"662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","impliedFormat":1},{"version":"c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","impliedFormat":1},{"version":"2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"844ab83672160ca57a2a2ea46da4c64200d8c18d4ebb2087819649cad099ff0e","impliedFormat":1},{"version":"7b3098756b32d6029cd9889b087a32e890298bd7953d05b72b02f6a3ad4f318a","affectsGlobalScope":true,"impliedFormat":1}],"root":[168],"options":{"composite":true,"module":1,"outDir":"./","rootDir":"../src","sourceMap":true,"strict":true,"target":7,"tsBuildInfoFile":"./.tsbuildinfo"},"referencedMap":[[169,1],[53,2],[54,2],[55,3],[51,4],[56,5],[57,6],[58,7],[49,8],[47,1],[48,1],[59,9],[60,10],[61,11],[62,12],[63,13],[64,14],[65,14],[66,15],[67,16],[68,17],[69,18],[70,19],[52,1],[50,1],[71,20],[72,21],[73,22],[103,23],[74,24],[75,25],[76,26],[77,27],[78,28],[79,29],[80,30],[81,31],[82,32],[83,33],[84,34],[85,35],[87,36],[86,37],[88,38],[89,39],[90,1],[91,40],[92,41],[93,42],[94,43],[95,44],[96,45],[97,46],[98,47],[99,48],[100,49],[101,50],[102,51],[194,52],[195,53],[170,54],[173,54],[192,52],[193,52],[183,52],[182,55],[180,52],[175,52],[188,52],[186,52],[190,52],[174,52],[187,52],[191,52],[176,52],[177,52],[189,52],[171,52],[178,52],[179,52],[181,52],[185,52],[196,56],[184,52],[172,52],[209,57],[208,1],[203,56],[205,58],[204,56],[197,56],[198,56],[200,56],[202,56],[206,58],[207,58],[199,58],[201,58],[210,1],[44,1],[45,1],[9,1],[8,1],[2,1],[10,1],[11,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[3,1],[18,1],[19,1],[4,1],[20,1],[24,1],[21,1],[22,1],[23,1],[25,1],[26,1],[27,1],[5,1],[28,1],[29,1],[30,1],[31,1],[6,1],[35,1],[32,1],[33,1],[34,1],[36,1],[7,1],[37,1],[42,1],[43,1],[38,1],[39,1],[40,1],[41,1],[1,1],[118,59],[110,60],[115,61],[108,1],[111,62],[109,63],[107,1],[117,64],[113,65],[106,1],[114,66],[112,67],[116,68],[160,69],[161,70],[105,1],[142,71],[141,72],[119,73],[129,74],[124,74],[123,75],[140,76],[126,74],[138,74],[133,75],[125,74],[120,74],[137,74],[136,74],[132,74],[134,77],[139,78],[128,75],[127,74],[130,74],[131,75],[121,74],[135,74],[122,75],[162,79],[163,80],[167,1],[104,1],[164,81],[146,82],[144,82],[154,82],[149,82],[153,82],[152,82],[150,82],[157,82],[156,83],[143,82],[147,82],[158,84],[148,82],[155,85],[151,82],[145,82],[159,1],[165,86],[166,87],[46,1],[168,88]],"latestChangedDtsFile":"./server.d.ts","version":"5.8.2"} \ No newline at end of file diff --git a/extension/server/out/server.js b/extension/server/out/server.js index 527af30..cd7a4d2 100644 --- a/extension/server/out/server.js +++ b/extension/server/out/server.js @@ -38,6 +38,10 @@ const elements = [ 'card', 'badge', 'alert', 'tooltip', 'input', 'textarea', 'select', 'checkbox', 'radio', 'switch', 'list', 'table', 'progress', 'slider' ]; +// Script blocks +const scriptBlocks = [ + 'client', 'server' +]; // Single instance elements const singleElements = ['page', 'navbar']; // Blueprint properties @@ -52,6 +56,8 @@ const properties = [ ]; // Page configuration properties const pageProperties = ['title', 'description', 'keywords', 'author']; +// ID attribute suggestion - using underscore format +const idAttributeTemplate = 'id:$1_$2'; // Container elements that can have children const containerElements = [ 'horizontal', 'vertical', 'section', 'grid', 'navbar', @@ -85,6 +91,18 @@ connection.onCompletion((textDocumentPosition) => { const position = textDocumentPosition.position; const line = lines[position.line]; const linePrefix = line.slice(0, position.character); + // Suggest script blocks after @ symbol + if (linePrefix.trim().endsWith('@')) { + return scriptBlocks.map(block => ({ + label: `@${block}`, + kind: node_1.CompletionItemKind.Snippet, + insertText: `@${block} {\n $1\n}`, + insertTextFormat: node_1.InsertTextFormat.Snippet, + documentation: block === 'client' ? + 'Create a client-side JavaScript block that runs when the element is clicked. The "e" event object is available.' : + 'Create a server-side JavaScript block that runs on the server.' + })); + } // Check if this is a template completion trigger if (linePrefix.trim() === '!') { return [{ @@ -114,13 +132,22 @@ connection.onCompletion((textDocumentPosition) => { documentation: `Add ${prop} to the page configuration` })); } - // After an opening parenthesis, suggest properties + // After an opening parenthesis, suggest properties including ID with underscore format if (linePrefix.trim().endsWith('(')) { - return properties.map(prop => ({ - label: prop, - kind: node_1.CompletionItemKind.Property, - documentation: `Apply ${prop} property` - })); + return [ + ...properties.map(prop => ({ + label: prop, + kind: node_1.CompletionItemKind.Property, + documentation: `Apply ${prop} property` + })), + { + label: 'id', + kind: node_1.CompletionItemKind.Property, + insertText: idAttributeTemplate, + insertTextFormat: node_1.InsertTextFormat.Snippet, + documentation: 'Add an ID to the element (use underscores instead of hyphens for JavaScript compatibility)' + } + ]; } // After a container element's opening brace, suggest child elements const containerMatch = /\b(horizontal|vertical|section|grid|navbar|links|card)\s*{\s*$/.exec(linePrefix); @@ -139,6 +166,25 @@ connection.onCompletion((textDocumentPosition) => { suggestedElements = ['title', 'text', 'button', 'image']; break; } + // Include client/server block suggestions for interactive elements + if (['button', 'button-light', 'button-secondary', 'button-compact'].includes(parentElement)) { + return [ + ...suggestedElements.map(element => ({ + label: element, + kind: node_1.CompletionItemKind.Class, + insertText: `${element} {\n $1\n}`, + insertTextFormat: node_1.InsertTextFormat.Snippet, + documentation: `Create a ${element} block inside ${parentElement}` + })), + { + label: '@client', + kind: node_1.CompletionItemKind.Snippet, + insertText: `@client {\n $1\n}`, + insertTextFormat: node_1.InsertTextFormat.Snippet, + documentation: 'Create a client-side JavaScript block that runs when the element is clicked. The "e" event object is available.' + } + ]; + } return suggestedElements.map(element => ({ label: element, kind: node_1.CompletionItemKind.Class, @@ -147,6 +193,26 @@ connection.onCompletion((textDocumentPosition) => { documentation: `Create a ${element} block inside ${parentElement}` })); } + // Inside interactive elements, suggest @client blocks + const interactiveElementMatch = /\b(button|button-light|button-secondary|button-compact|input|textarea|select|checkbox|radio|switch)\s*(?:\([^)]*\))?\s*{\s*$/.exec(linePrefix); + if (interactiveElementMatch) { + return [ + { + label: '@client', + kind: node_1.CompletionItemKind.Snippet, + insertText: `@client {\n $1\n}`, + insertTextFormat: node_1.InsertTextFormat.Snippet, + documentation: 'Create a client-side JavaScript block that runs when the element is clicked. The "e" event object is available.' + }, + { + label: 'text', + kind: node_1.CompletionItemKind.Class, + insertText: `"$1"`, + insertTextFormat: node_1.InsertTextFormat.Snippet, + documentation: 'Add text content to the element' + } + ]; + } // Get available single instance elements const availableSingleElements = singleElements.filter(element => !elementExists(text, element)); // Combine regular elements with available single instance elements diff --git a/extension/server/out/server.js.map b/extension/server/out/server.js.map index 383896b..ab29847 100644 --- a/extension/server/out/server.js.map +++ b/extension/server/out/server.js.map @@ -1 +1 @@ -{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/extension/server/src/server.ts b/extension/server/src/server.ts index 2eb0f5f..4e19180 100644 --- a/extension/server/src/server.ts +++ b/extension/server/src/server.ts @@ -58,6 +58,11 @@ const elements = [ 'checkbox', 'radio', 'switch', 'list', 'table', 'progress', 'slider' ]; +// Script blocks +const scriptBlocks = [ + 'client', 'server' +]; + // Single instance elements const singleElements = ['page', 'navbar']; @@ -75,6 +80,9 @@ const properties = [ // Page configuration properties const pageProperties = ['title', 'description', 'keywords', 'author']; +// ID attribute suggestion - using underscore format +const idAttributeTemplate = 'id:$1_$2'; + // Container elements that can have children const containerElements = [ 'horizontal', 'vertical', 'section', 'grid', 'navbar', @@ -114,6 +122,19 @@ connection.onCompletion( const line = lines[position.line]; const linePrefix = line.slice(0, position.character); + // Suggest script blocks after @ symbol + if (linePrefix.trim().endsWith('@')) { + return scriptBlocks.map(block => ({ + label: `@${block}`, + kind: CompletionItemKind.Snippet, + insertText: `@${block} {\n $1\n}`, + insertTextFormat: InsertTextFormat.Snippet, + documentation: block === 'client' ? + 'Create a client-side JavaScript block that runs when the element is clicked. The "e" event object is available.' : + 'Create a server-side JavaScript block that runs on the server.' + })); + } + // Check if this is a template completion trigger if (linePrefix.trim() === '!') { return [{ @@ -145,13 +166,22 @@ connection.onCompletion( })); } - // After an opening parenthesis, suggest properties + // After an opening parenthesis, suggest properties including ID with underscore format if (linePrefix.trim().endsWith('(')) { - return properties.map(prop => ({ - label: prop, - kind: CompletionItemKind.Property, - documentation: `Apply ${prop} property` - })); + return [ + ...properties.map(prop => ({ + label: prop, + kind: CompletionItemKind.Property, + documentation: `Apply ${prop} property` + })), + { + label: 'id', + kind: CompletionItemKind.Property, + insertText: idAttributeTemplate, + insertTextFormat: InsertTextFormat.Snippet, + documentation: 'Add an ID to the element (use underscores instead of hyphens for JavaScript compatibility)' + } + ]; } // After a container element's opening brace, suggest child elements @@ -173,6 +203,26 @@ connection.onCompletion( break; } + // Include client/server block suggestions for interactive elements + if (['button', 'button-light', 'button-secondary', 'button-compact'].includes(parentElement)) { + return [ + ...suggestedElements.map(element => ({ + label: element, + kind: CompletionItemKind.Class, + insertText: `${element} {\n $1\n}`, + insertTextFormat: InsertTextFormat.Snippet, + documentation: `Create a ${element} block inside ${parentElement}` + })), + { + label: '@client', + kind: CompletionItemKind.Snippet, + insertText: `@client {\n $1\n}`, + insertTextFormat: InsertTextFormat.Snippet, + documentation: 'Create a client-side JavaScript block that runs when the element is clicked. The "e" event object is available.' + } + ]; + } + return suggestedElements.map(element => ({ label: element, kind: CompletionItemKind.Class, @@ -181,6 +231,27 @@ connection.onCompletion( documentation: `Create a ${element} block inside ${parentElement}` })); } + + // Inside interactive elements, suggest @client blocks + const interactiveElementMatch = /\b(button|button-light|button-secondary|button-compact|input|textarea|select|checkbox|radio|switch)\s*(?:\([^)]*\))?\s*{\s*$/.exec(linePrefix); + if (interactiveElementMatch) { + return [ + { + label: '@client', + kind: CompletionItemKind.Snippet, + insertText: `@client {\n $1\n}`, + insertTextFormat: InsertTextFormat.Snippet, + documentation: 'Create a client-side JavaScript block that runs when the element is clicked. The "e" event object is available.' + }, + { + label: 'text', + kind: CompletionItemKind.Class, + insertText: `"$1"`, + insertTextFormat: InsertTextFormat.Snippet, + documentation: 'Add text content to the element' + } + ]; + } // Get available single instance elements const availableSingleElements = singleElements.filter(element => !elementExists(text, element)); diff --git a/extension/syntaxes/blueprint.tmLanguage.json b/extension/syntaxes/blueprint.tmLanguage.json index 4071964..3668950 100644 --- a/extension/syntaxes/blueprint.tmLanguage.json +++ b/extension/syntaxes/blueprint.tmLanguage.json @@ -18,6 +18,9 @@ { "include": "#strings" }, + { + "include": "#script-blocks" + }, { "include": "#punctuation" } @@ -64,6 +67,24 @@ } ] }, + "script-blocks": { + "patterns": [ + { + "begin": "@(client|server)\\s*\\{", + "end": "\\}", + "beginCaptures": { + "0": { "name": "keyword.control.blueprint" }, + "1": { "name": "entity.name.function.blueprint" } + }, + "contentName": "source.js.embedded.blueprint", + "patterns": [ + { + "include": "source.js" + } + ] + } + ] + }, "properties": { "patterns": [ { @@ -71,7 +92,7 @@ "name": "support.type.property-name.blueprint" }, { - "match": "(? { + app.get("/", async (req, res) => { + try { + const data = req.body; + + // input valiation + + // business logic + + // output validation + + // output + const response = { + + }; + + res.json({ response }); + } catch (error) { + console.log('Error:', error); + res.status(500).json({ error: 'Internal server error' }); + } + }); +} \ No newline at end of file diff --git a/lib/ASTBuilder.js b/lib/ASTBuilder.js index 1893540..92be55c 100644 --- a/lib/ASTBuilder.js +++ b/lib/ASTBuilder.js @@ -129,6 +129,41 @@ class ASTBuilder { ); } + if (token.type === "client" || token.type === "server") { + if (this.options.debug) { + console.log( + `\n[ASTBuilder] Processing ${token.type} block at line ${token.line}, column ${token.column}` + ); + } + + const node = { + type: token.type, + script: token.value, + line: token.line, + column: token.column, + }; + + if (token.type === "server" && token.params) { + node.params = token.params; + if (this.options.debug) { + console.log( + `[ASTBuilder] Server block parameters: ${node.params.join(", ")}` + ); + } + } + + if (this.options.debug) { + console.log(`[ASTBuilder] Created node for ${token.type} block`); + console.log( + "[ASTBuilder] Script content (first 50 chars):", + node.script.substring(0, 50) + (node.script.length > 50 ? "..." : "") + ); + } + + current++; + return node; + } + if (token.type === "identifier") { if (this.options.debug) { console.log( diff --git a/lib/BlueprintBuilder.js b/lib/BlueprintBuilder.js index 71f1139..931a0e7 100644 --- a/lib/BlueprintBuilder.js +++ b/lib/BlueprintBuilder.js @@ -46,6 +46,20 @@ class BlueprintBuilder { if (result.success) { this.fileHandler.writeCompiledFiles(outputDir, baseName, result.html, result.css); + if (result.hasServerCode && result.serverCode) { + const serverDir = path.join(outputDir, 'server'); + if (!fs.existsSync(serverDir)) { + fs.mkdirSync(serverDir, { recursive: true }); + } + + const serverFilePath = path.join(serverDir, `${baseName}-server.js`); + fs.writeFileSync(serverFilePath, result.serverCode, 'utf8'); + + if (this.options.debug) { + console.log(`[DEBUG] Server code written to ${serverFilePath}`); + } + } + if (this.options.debug) { console.log("[DEBUG] Build completed successfully"); } @@ -54,6 +68,7 @@ class BlueprintBuilder { return { success: result.success, errors: result.errors, + hasServerCode: result.hasServerCode }; } catch (error) { if (this.options.debug) { @@ -61,6 +76,7 @@ class BlueprintBuilder { } return { success: false, + hasServerCode: false, errors: [ { message: error.message, diff --git a/lib/BlueprintCompiler.js b/lib/BlueprintCompiler.js index c875b2b..a63684e 100644 --- a/lib/BlueprintCompiler.js +++ b/lib/BlueprintCompiler.js @@ -51,18 +51,25 @@ class BlueprintCompiler { const html = this.htmlGenerator.generateHTML(ast); const css = this.cssGenerator.generateCSS(); + const hasServerCode = this.htmlGenerator.hasServerCode(); + const serverCode = hasServerCode ? this.htmlGenerator.generateServerCode() : ''; const headContent = this.metadataManager.generateHeadContent(baseName); const finalHtml = this.htmlGenerator.generateFinalHtml(headContent, html); if (this.options.debug) { console.log("[DEBUG] Compilation completed successfully"); + if (hasServerCode) { + console.log("[DEBUG] Server code generated"); + } } return { success: true, html: finalHtml, css: css, + hasServerCode: hasServerCode, + serverCode: serverCode, errors: [], }; } catch (error) { @@ -73,6 +80,8 @@ class BlueprintCompiler { success: false, html: null, css: null, + hasServerCode: false, + serverCode: null, errors: [ { message: error.message, diff --git a/lib/HTMLGenerator.js b/lib/HTMLGenerator.js index 9dc8bdd..04d51af 100644 --- a/lib/HTMLGenerator.js +++ b/lib/HTMLGenerator.js @@ -6,6 +6,8 @@ const StandardElementGenerator = require("./generators/StandardElementGenerator" const RootNodeGenerator = require("./generators/RootNodeGenerator"); const InputElementGenerator = require("./generators/InputElementGenerator"); const MediaElementGenerator = require("./generators/MediaElementGenerator"); +const JavaScriptGenerator = require("./generators/JavaScriptGenerator"); +const ServerCodeGenerator = require("./generators/ServerCodeGenerator"); const HTMLTemplate = require("./templates/HTMLTemplate"); const StringUtils = require("./utils/StringUtils"); @@ -21,6 +23,9 @@ class HTMLGenerator { this.options = options; this.cssGenerator = cssGenerator; this.htmlTemplate = new HTMLTemplate(options); + this.serverGenerator = new ServerCodeGenerator(options); + this.jsGenerator = new JavaScriptGenerator(options, this.serverGenerator); + this.currentElement = null; this.generators = [ @@ -86,6 +91,10 @@ class HTMLGenerator { console.log("[HTMLGenerator] Node details:", StringUtils.safeStringify(node)); } + // Handle client and server blocks + if (node.type === "client" || node.type === "server") { + return this.handleScriptBlock(node); + } if (node.type === "element" && node.tag === "page") { if (this.options.debug) { @@ -94,20 +103,120 @@ class HTMLGenerator { return ""; } + const prevElement = this.currentElement; + this.currentElement = node; + // Check if this element has an explicit ID in its props + if (node.type === "element") { + const idProp = node.props.find(p => typeof p === "string" && p.startsWith("id:")); + if (idProp) { + const idValue = idProp.substring(idProp.indexOf(":") + 1).trim().replace(/^"|"$/g, ""); + node.elementId = idValue; + + // Register this element as reactive + this.jsGenerator.registerReactiveElement(idValue); + + if (this.options.debug) { + console.log(`[HTMLGenerator] Found explicit ID: ${idValue}, registered as reactive`); + } + } + } + + let result = ""; for (const generator of this.generators) { if (generator.canHandle(node)) { if (this.options.debug) { console.log(`[HTMLGenerator] Using ${generator.constructor.name} for node`); } - return generator.generate(node); + + // If this is an element that might have event handlers, + // add a unique ID to it for client scripts if it doesn't already have one + if (node.type === "element" && node.children.some(child => child.type === "client")) { + // Generate a unique ID for this element if it doesn't already have one + if (!node.elementId) { + node.elementId = this.jsGenerator.generateElementId(); + if (this.options.debug) { + console.log(`[HTMLGenerator] Generated ID for element: ${node.elementId}`); + } + } + + result = generator.generate(node); + + // Process all client blocks inside this element + node.children + .filter(child => child.type === "client") + .forEach(clientBlock => { + this.handleScriptBlock(clientBlock, node.elementId); + }); + } else { + result = generator.generate(node); + } + + this.currentElement = prevElement; + return result; } } - if (this.options.debug) { console.log(`[HTMLGenerator] No generator found for node type: ${node.type}`); } + + this.currentElement = prevElement; + return ""; + } + + /** + * Handles client and server script blocks. + * @param {Object} node - The script node to handle + * @param {string} [elementId] - The ID of the parent element, if any + * @returns {string} - Empty string as script blocks don't directly generate HTML + */ + handleScriptBlock(node, elementId = null) { + if (this.options.debug) { + console.log(`\n[HTMLGenerator] Processing ${node.type} script block`); + console.log(`[HTMLGenerator] Script content (first 50 chars): "${node.script.substring(0, 50)}..."`); + if (elementId) { + console.log(`[HTMLGenerator] Attaching to element: ${elementId}`); + } + } + + if (node.type === "client") { + if (!elementId && this.currentElement) { + if (!this.currentElement.elementId) { + this.currentElement.elementId = this.jsGenerator.generateElementId(); + } + elementId = this.currentElement.elementId; + } + + if (elementId) { + this.jsGenerator.addClientScript(elementId, node.script); + } else { + if (this.options.debug) { + console.log(`[HTMLGenerator] Warning: Client script with no parent element`); + } + } + } else if (node.type === "server") { + if (!elementId && this.currentElement) { + if (!this.currentElement.elementId) { + this.currentElement.elementId = this.jsGenerator.generateElementId(); + } + elementId = this.currentElement.elementId; + } + + if (elementId) { + const params = node.params || []; + if (this.options.debug && params.length > 0) { + console.log(`[HTMLGenerator] Server block parameters: ${params.join(", ")}`); + } + + this.jsGenerator.addServerScript(elementId, node.script, params); + } else { + if (this.options.debug) { + console.log(`[HTMLGenerator] Warning: Server script with no parent element`); + } + } + } + return ""; } @@ -177,7 +286,28 @@ class HTMLGenerator { * @returns {string} - A complete HTML document containing the provided head and body content. */ generateFinalHtml(headContent, bodyContent) { - return this.htmlTemplate.generateDocument(headContent, bodyContent); + const clientScripts = this.jsGenerator.generateClientScripts(); + + return this.htmlTemplate.generateDocument( + headContent, + bodyContent + clientScripts + ); + } + + /** + * Generates server-side code for Express.js API routes. + * @returns {string} - Express.js server code + */ + generateServerCode() { + return this.serverGenerator.generateServerCode(); + } + + /** + * Checks if there is any server code to generate. + * @returns {boolean} - Whether there is server code + */ + hasServerCode() { + return this.serverGenerator.hasServerCodeToGenerate(); } } diff --git a/lib/StandardElementGenerator.js b/lib/StandardElementGenerator.js new file mode 100644 index 0000000..ad9499e --- /dev/null +++ b/lib/StandardElementGenerator.js @@ -0,0 +1,179 @@ +/** + * Generates HTML for standard HTML elements. + */ +class StandardElementGenerator { + /** + * Creates a new StandardElementGenerator instance. + * @param {Object} options - Generator options + * @param {CSSGenerator} cssGenerator - CSS generator instance + * @param {HTMLGenerator} htmlGenerator - HTML generator instance + */ + constructor(options = {}, cssGenerator, htmlGenerator) { + this.options = options; + this.cssGenerator = cssGenerator; + this.htmlGenerator = htmlGenerator; + this.parentGenerator = htmlGenerator; + } + + /** + * Determines whether this generator can handle a given node. + * @param {Object} node - Node to check + * @returns {boolean} - True if this generator can handle the node + */ + canHandle(node) { + return node.type === "element"; + } + + /** + * Generates HTML for a standard element. + * @param {Object} node - Node to generate HTML for + * @returns {string} - Generated HTML + */ + generate(node) { + if (this.options.debug) { + console.log(`[StandardElementGenerator] Processing element node: ${node.tag || node.name}`); + } + + const mapping = ELEMENT_MAPPINGS ? ELEMENT_MAPPINGS[node.tag] : null; + + const tagName = mapping ? mapping.tag : (node.name || node.tag || "div"); + + let className = ""; + if (this.cssGenerator) { + className = this.cssGenerator.generateClassName(node.tag); + const { cssProps, nestedRules } = this.cssGenerator.nodeToCSSProperties(node); + this.cssGenerator.cssRules.set(`.${className}`, { + cssProps, + nestedRules, + }); + } + + const fullClassName = this.generateClassName(node); + if (className && fullClassName) { + className = `${className} ${fullClassName}`; + } else if (fullClassName) { + className = fullClassName; + } + + const attributes = this.generateAttributes(node, node.elementId, className); + + let content = ""; + const children = node.children || []; + + for (const child of children) { + if ( + child.type === "client" || + child.type === "server" || + (child.type === "element" && (child.name === "script" || child.tag === "script")) + ) { + continue; + } + child.parent = node; + content += this.htmlGenerator.generateHTML(child); + if (!this.options.minified) { + content += "\n"; + } + } + + return `<${tagName}${attributes}>${this.options.minified ? "" : "\n"}${content}${this.options.minified ? "" : ""}${this.options.minified ? "" : "\n"}`; + } + + /** + * Generates a className string for the element. + * @param {Object} node - The node to generate class for + * @returns {string} - The generated class name + */ + generateClassName(node) { + let classNames = []; + + if (node.attributes && Array.isArray(node.attributes)) { + const classAttr = node.attributes.find(attr => attr.name === "class"); + if (classAttr && classAttr.value) { + classNames.push(classAttr.value); + } + } + + if (node.props && Array.isArray(node.props)) { + for (const prop of node.props) { + if (typeof prop === "string") { + if (prop.startsWith("class:")) { + classNames.push(prop.substring(prop.indexOf(":") + 1).trim().replace(/^"|"$/g, "")); + } + } + } + } + + return classNames.join(" "); + } + + /** + * Generates an attributes string for the element. + * @param {Object} node - The node to generate attributes for + * @param {string} id - The element ID + * @param {string} className - The element class name + * @returns {string} - The generated attributes string + */ + generateAttributes(node, id, className) { + let attributes = ""; + + if (id) { + attributes += ` id="${id}"`; + } else if (node.props && Array.isArray(node.props)) { + const idProp = node.props.find(p => typeof p === "string" && p.startsWith("id:")); + if (idProp) { + const idValue = idProp.substring(idProp.indexOf(":") + 1).trim().replace(/^"|"$/g, ""); + attributes += ` id="${idValue}"`; + node.elementId = idValue; + } + } + + if (className) { + attributes += ` class="${className}"`; + } + + if (node.props && Array.isArray(node.props)) { + const dataProps = node.props.filter(p => typeof p === "string" && p.startsWith("data-")); + if (dataProps.length) { + attributes += " " + dataProps.join(" "); + } + } + + if (node.attributes && Array.isArray(node.attributes)) { + for (const attr of node.attributes) { + if (attr.name === "id" || attr.name === "class") continue; + + if (attr.value === true) { + attributes += ` ${attr.name}`; + } else if (attr.value !== false && attr.value !== undefined && attr.value !== null) { + attributes += ` ${attr.name}="${attr.value}"`; + } + } + } + + if (node.props && Array.isArray(node.props)) { + for (const prop of node.props) { + if (typeof prop === "string") { + if (prop.startsWith("id:") || prop.startsWith("class:") || prop.startsWith("data-")) continue; + + const colonIndex = prop.indexOf(":"); + if (colonIndex !== -1) { + const name = prop.substring(0, colonIndex).trim(); + const value = prop.substring(colonIndex + 1).trim().replace(/^"|"$/g, ""); + + if (!attributes.includes(` ${name}="`)) { + attributes += ` ${name}="${value}"`; + } + } else { + if (!attributes.includes(` ${prop}`)) { + attributes += ` ${prop}`; + } + } + } + } + } + + return attributes; + } +} + +module.exports = StandardElementGenerator; \ No newline at end of file diff --git a/lib/TokenParser.js b/lib/TokenParser.js index 62f6776..e6a1db9 100644 --- a/lib/TokenParser.js +++ b/lib/TokenParser.js @@ -102,6 +102,142 @@ class TokenParser { continue; } + if (char === "@") { + const startPos = current; + const startColumn = column; + const startLine = line; + current++; + column++; + + let blockType = ""; + char = input[current]; + + while (current < input.length && /[a-zA-Z]/.test(char)) { + blockType += char; + current++; + column++; + char = input[current]; + } + + if (blockType === "client" || blockType === "server") { + if (this.options.debug) { + console.log(`[TokenParser] ${blockType} block found at line ${startLine}, column ${startColumn}`); + } + + while (current < input.length && /\s/.test(char)) { + if (char === "\n") { + line++; + column = 1; + } else { + column++; + } + current++; + char = input[current]; + } + + let params = []; + if (blockType === "server" && char === "(") { + current++; + column++; + let paramString = ""; + let depth = 1; + + while (current < input.length && depth > 0) { + char = input[current]; + + if (char === "(") depth++; + if (char === ")") depth--; + + if (depth === 0) break; + + paramString += char; + if (char === "\n") { + line++; + column = 1; + } else { + column++; + } + current++; + } + + current++; + column++; + + params = paramString.split(",").map(p => p.trim()).filter(p => p); + + if (this.options.debug) { + console.log(`[TokenParser] Server block parameters: ${params.join(", ")}`); + } + + char = input[current]; + while (current < input.length && /\s/.test(char)) { + if (char === "\n") { + line++; + column = 1; + } else { + column++; + } + current++; + char = input[current]; + } + } + + if (char === "{") { + current++; + column++; + let script = ""; + let braceCount = 1; + + while (current < input.length && braceCount > 0) { + char = input[current]; + + if (char === "{") braceCount++; + if (char === "}") braceCount--; + + if (braceCount === 0) break; + + script += char; + if (char === "\n") { + line++; + column = 1; + } else { + column++; + } + current++; + } + + current++; + column++; + + tokens.push({ + type: blockType, + value: script.trim(), + params: params, + line: startLine, + column: startColumn, + }); + + if (this.options.debug) { + console.log(`[TokenParser] ${blockType} block script: "${script.trim().substring(0, 50)}..."`); + } + + continue; + } else { + throw new BlueprintError( + `Expected opening brace after @${blockType}${params.length ? '(...)' : ''}`, + line, + column + ); + } + } else { + throw new BlueprintError( + `Unknown block type: @${blockType}`, + startLine, + startColumn + ); + } + } + if (/[a-zA-Z]/.test(char)) { let value = ""; const startColumn = column; diff --git a/lib/generators/ButtonElementGenerator.js b/lib/generators/ButtonElementGenerator.js index 2312585..ea51c49 100644 --- a/lib/generators/ButtonElementGenerator.js +++ b/lib/generators/ButtonElementGenerator.js @@ -49,6 +49,22 @@ class ButtonElementGenerator { let attributes = ""; + const idProp = node.props.find((p) => typeof p === "string" && p.startsWith("id:")); + if (idProp) { + const idValue = idProp.substring(idProp.indexOf(":") + 1).trim().replace(/^"|"$/g, ""); + attributes += ` id="${idValue}"`; + node.elementId = idValue; + if (this.options.debug) { + console.log(`[ButtonElementGenerator] Added explicit ID attribute: ${idValue}`); + } + } + else if (node.elementId) { + attributes += ` id="${node.elementId}"`; + if (this.options.debug) { + console.log(`[ButtonElementGenerator] Adding generated ID attribute: ${node.elementId}`); + } + } + if (node.parent?.tag === "link") { const linkInfo = this.linkProcessor.processLink(node.parent); attributes += this.linkProcessor.getButtonClickHandler(linkInfo); diff --git a/lib/generators/InputElementGenerator.js b/lib/generators/InputElementGenerator.js index 70a9cb4..639155c 100644 --- a/lib/generators/InputElementGenerator.js +++ b/lib/generators/InputElementGenerator.js @@ -55,6 +55,23 @@ class InputElementGenerator { attributes = ' type="range"'; } + // Extract and handle ID attribute + let idAttr = ""; + const idProp = node.props.find(p => typeof p === "string" && p.startsWith("id:")); + if (idProp) { + const idValue = idProp.substring(idProp.indexOf(":") + 1).trim().replace(/^"|"$/g, ""); + idAttr = ` id="${idValue}"`; + node.elementId = idValue; + + // Register as reactive element with the parent generator + if (this.parentGenerator && this.parentGenerator.jsGenerator) { + this.parentGenerator.jsGenerator.registerReactiveElement(idValue); + if (this.options.debug) { + console.log(`[InputElementGenerator] Registered checkbox with ID: ${idValue} as reactive`); + } + } + } + const valueProp = node.props.find((p) => p.startsWith("value:")); if (valueProp) { const value = valueProp.substring(valueProp.indexOf(":") + 1).trim(); @@ -70,7 +87,7 @@ class InputElementGenerator { if (node.children.length > 0) { let html = ``; return html; } else { - return ``; + return ``; } } } diff --git a/lib/generators/JavaScriptGenerator.js b/lib/generators/JavaScriptGenerator.js new file mode 100644 index 0000000..cc16c45 --- /dev/null +++ b/lib/generators/JavaScriptGenerator.js @@ -0,0 +1,239 @@ +const StringUtils = require("../utils/StringUtils"); + +/** + * Generates JavaScript code for client and server blocks with reactive data handling. + */ +class JavaScriptGenerator { + /** + * Creates a new JavaScript generator. + * @param {Object} options - Options for the generator + * @param {ServerCodeGenerator} [serverGenerator] - Server code generator instance + */ + constructor(options = {}, serverGenerator = null) { + this.options = options; + this.clientScripts = new Map(); + this.serverScripts = []; + this.reactiveElements = new Set(); + this.serverGenerator = serverGenerator; + } + + /** + * Sets the server code generator instance + * @param {ServerCodeGenerator} serverGenerator - Server code generator instance + */ + setServerGenerator(serverGenerator) { + this.serverGenerator = serverGenerator; + } + + /** + * Registers a client-side script to be executed when an element is clicked. + * @param {string} elementId - The ID of the element to attach the event to + * @param {string} code - The JavaScript code to execute + */ + addClientScript(elementId, code) { + if (this.options.debug) { + console.log(`[JavaScriptGenerator] Adding client script for element ${elementId}`); + } + this.clientScripts.set(elementId, code); + } + + /** + * Adds a server-side script to be executed on the server. + * @param {string} elementId - The ID of the element that triggers the server action + * @param {string} code - The JavaScript code to execute + * @param {Array} params - The input parameters to retrieve from the client + */ + addServerScript(elementId, code, params = []) { + if (this.options.debug) { + console.log(`[JavaScriptGenerator] Adding server script for element ${elementId}`); + if (params.length > 0) { + console.log(`[JavaScriptGenerator] Script parameters: ${params.join(", ")}`); + } + } + + this.serverScripts.push({ + elementId, + code, + params + }); + + if (this.serverGenerator) { + this.serverGenerator.addServerRoute(elementId, code, params); + } + + this.clientScripts.set(elementId, `_bp_serverAction_${elementId}(e);`); + } + + /** + * Registers an element as reactive, meaning it will have state management functions + * @param {string} elementId - The ID of the element to make reactive + */ + registerReactiveElement(elementId) { + if (this.options.debug) { + console.log(`[JavaScriptGenerator] Registering reactive element: ${elementId}`); + } + this.reactiveElements.add(elementId); + } + + /** + * Generates a unique element ID. + * @returns {string} - A unique element ID with bp_ prefix + */ + generateElementId() { + return StringUtils.generateRandomId(); + } + + /** + * Generates the reactive store and helper functions for state management + * @returns {string} - JavaScript code for reactive functionality + */ + generateReactiveStore() { + if (this.reactiveElements.size === 0) { + return ''; + } + + return ` +const _bp_store = { + listeners: new Map(), + subscribe: function(id, callback) { + if (!this.listeners.has(id)) { + this.listeners.set(id, []); + } + this.listeners.get(id).push(callback); + }, + notify: function(id, newValue) { + if (this.listeners.has(id)) { + this.listeners.get(id).forEach(callback => callback(newValue)); + } + } +}; + +function _bp_makeElementReactive(id) { + const element = document.getElementById(id); + if (!element) { + console.log(\`[Blueprint] Element with ID \${id} not found\`); + return null; + } + + return { + element: element, + get value() { + return element.textContent; + }, + set: function(newValue) { + const valueString = String(newValue); + element.textContent = valueString; + _bp_store.notify(id, valueString); + return this; + }, + setNumber: function(num) { + const valueString = String(Number(num)); + element.textContent = valueString; + _bp_store.notify(id, valueString); + return this; + }, + setHtml: function(html) { + element.innerHTML = html; + _bp_store.notify(id, html); + return this; + }, + setStyle: function(property, value) { + element.style[property] = value; + return this; + }, + setClass: function(className, add = true) { + if (add) { + element.classList.add(className); + } else { + element.classList.remove(className); + } + return this; + }, + on: function(event, callback) { + element.addEventListener(event, callback); + return this; + }, + subscribe: function(callback) { + _bp_store.subscribe(id, callback); + return this; + }, + get textValue() { + return element.textContent; + }, + get numberValue() { + return Number(element.textContent); + }, + get booleanValue() { + const text = element.textContent.toLowerCase(); + return text === 'true' || text === '1' || text === 'yes'; + } + }; +} + +// Initialize reactive elements`; + } + + /** + * Generates initialization code for reactive elements + * @returns {string} - JavaScript initialization code for reactive elements + */ + generateReactiveElementInit() { + if (this.reactiveElements.size === 0) { + return ''; + } + + const initCode = Array.from(this.reactiveElements) + .map(id => `const ${id} = _bp_makeElementReactive('${id}');`) + .join('\n '); + + return ` + ${initCode}`; + } + + /** + * Generates all client-side JavaScript code. + * @returns {string} - The generated JavaScript code + */ + generateClientScripts() { + if (this.clientScripts.size === 0 && this.reactiveElements.size === 0 && !this.serverGenerator) { + return ''; + } + + let initCode = ''; + if (this.reactiveElements.size > 0) { + initCode = this.generateReactiveElementInit(); + } + + let scripts = ''; + this.clientScripts.forEach((code, elementId) => { + scripts += ` document.getElementById('${elementId}').addEventListener('click', function(e) { + ${code} + });\n`; + }); + + let serverClientCode = ''; + if (this.serverGenerator) { + serverClientCode = this.serverGenerator.generateClientAPICalls(); + } + + return ``; + } + + /** + * Gets all server-side scripts. + * @returns {Array} - Array of server-side script objects + */ + getServerScripts() { + return this.serverScripts; + } +} + +module.exports = JavaScriptGenerator; \ No newline at end of file diff --git a/lib/generators/ServerCodeGenerator.js b/lib/generators/ServerCodeGenerator.js new file mode 100644 index 0000000..c10a6f6 --- /dev/null +++ b/lib/generators/ServerCodeGenerator.js @@ -0,0 +1,236 @@ +const crypto = require('crypto'); +const StringUtils = require("../utils/StringUtils"); + +/** + * Generates server-side Express.js routes for server blocks. + */ +class ServerCodeGenerator { + /** + * Creates a new server code generator. + * @param {Object} options - Options for the generator + */ + constructor(options = {}) { + this.options = options; + this.serverRoutes = new Map(); + this.hasServerCode = false; + } + + /** + * Registers a server-side route to be executed when requested. + * @param {string} elementId - The ID of the element that triggers the route + * @param {string} code - The JavaScript code to execute + * @param {Array} params - The input parameters to retrieve from the client + */ + addServerRoute(elementId, code, params = []) { + if (this.options.debug) { + console.log(`[ServerCodeGenerator] Adding server route for element ${elementId}`); + if (params.length > 0) { + console.log(`[ServerCodeGenerator] Route parameters: ${params.join(", ")}`); + } + } + + const endpoint = this.generateEndpointPath(elementId); + + this.serverRoutes.set(elementId, { + endpoint, + code, + params + }); + + this.hasServerCode = true; + } + + /** + * Generates a unique endpoint path for a server route. + * @param {string} elementId - The element ID for the route + * @returns {string} - A unique endpoint path + */ + generateEndpointPath(elementId) { + const hash = crypto.createHash('sha256') + .update(elementId + Math.random().toString()) + .digest('hex') + .substring(0, 12); + + return `/api/${StringUtils.toKebabCase(elementId)}-${hash}`; + } + + /** + * Generates client-side JavaScript for making API calls to server routes. + * @returns {string} - JavaScript code for making API calls + */ + generateClientAPICalls() { + if (this.serverRoutes.size === 0) { + return ''; + } + + let apiCode = ` +const _bp_api = { + post: async function(url, data) { + try { + const serverPort = window.blueprintServerPort || 3001; + + const fullUrl = \`http://\${window.location.hostname}:\${serverPort}\${url}\`; + + const response = await fetch(fullUrl, { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(data) + }); + + if (!response.ok) { + throw new Error(\`API request failed: \${response.status}\`); + } + + return await response.json(); + } catch (error) { + console.error('[Blueprint API]', error); + return { error: error.message }; + } + } +}; + + +`; + + + this.serverRoutes.forEach((route, elementId) => { + const { endpoint, params } = route; + + apiCode += `async function _bp_serverAction_${elementId}(e) { + const data = {}; +${params.map(param => ` const ${param}_element = document.getElementById('${param}'); + if (${param}_element) { + console.log('Found element: ${param}', ${param}_element); + if (${param}_element.type === 'checkbox') { + data.${param} = ${param}_element.checked; + console.log('Checkbox ${param} value:', ${param}_element.checked); + } else if (${param}_element.type === 'radio') { + data.${param} = ${param}_element.checked; + } else if (${param}_element.value !== undefined) { + data.${param} = ${param}_element.value; + } else { + data.${param} = ${param}_element.textContent; + } + } else { + console.error('[Blueprint] Element with ID ${param} not found'); + data.${param} = null; + }`).join('\n')} + + console.log('Submitting data:', data); + + try { + const result = await _bp_api.post('${endpoint}', data); + console.log('[Blueprint API] Server response:', result); + + if (result && typeof result === 'object') { + Object.keys(result).forEach(key => { + if (window[key] && typeof window[key].set === 'function') { + window[key].set(result[key]); + } + else { + const element = document.getElementById(key); + if (element) { + if (element.tagName.toLowerCase() === 'input') { + element.value = result[key]; + } else { + element.textContent = result[key]; + } + console.log(\`[Blueprint API] Updated element #\${key} with value: \${result[key]}\`); + } + } + }); + } + + return result; + } catch (error) { + console.error('[Blueprint API] Error in server action:', error); + } +}\n`; + }); + + return apiCode; + } + + /** + * Generates Express.js server code for all registered server routes. + * @returns {string} - Express.js server code + */ + generateServerCode() { + if (this.serverRoutes.size === 0) { + return ''; + } + + let serverCode = ` +const express = require('express'); +const bodyParser = require('body-parser'); +const cors = require('cors'); + +function createBlueprintApiServer(port = 3001) { + const app = express(); + + app.use(cors()); + app.use(bodyParser.json()); + + app.use((req, res, next) => { + console.log(\`[\${new Date().toISOString()}] \${req.method} \${req.url}\`); + next(); + }); + +`; + + this.serverRoutes.forEach((route, elementId) => { + const { endpoint, code, params } = route; + + serverCode += ` + app.post('${endpoint}', async (req, res) => { + try { + ${params.map(param => { + return `const ${param} = req.body.${param} !== undefined ? req.body.${param} : null; + if (${param} === null) { + console.error(\`Missing parameter: ${param}\`); + }`; + }).join('\n ')} + + let result; + try { + ${code} + } catch (error) { + console.error(\`Error in server block \${error.message}\`); + return res.status(500).json({ error: error.message }); + } + + return res.json(result || {}); + } catch (error) { + console.error(\`Error processing request: \${error.message}\`); + return res.status(500).json({ error: error.message }); + } + });`; + }); + + serverCode += ` + + app.listen(port, () => { + console.log(\`Blueprint API server running at http://localhost:\${port}\`); + }); + + return app; +} + +module.exports = createBlueprintApiServer; +`; + + return serverCode; + } + + /** + * Checks if there is any server code to generate. + * @returns {boolean} - Whether there is server code + */ + hasServerCodeToGenerate() { + return this.hasServerCode; + } +} + +module.exports = ServerCodeGenerator; \ No newline at end of file diff --git a/lib/generators/StandardElementGenerator.js b/lib/generators/StandardElementGenerator.js index e899423..4397b8c 100644 --- a/lib/generators/StandardElementGenerator.js +++ b/lib/generators/StandardElementGenerator.js @@ -54,6 +54,22 @@ class StandardElementGenerator { let attributes = ""; + const idProp = node.props.find((p) => typeof p === "string" && p.startsWith("id:")); + if (idProp) { + const idValue = idProp.substring(idProp.indexOf(":") + 1).trim().replace(/^"|"$/g, ""); + attributes += ` id="${idValue}"`; + node.elementId = idValue; + if (this.options.debug) { + console.log(`[StandardElementGenerator] Added explicit ID attribute: ${idValue}`); + } + } + else if (node.elementId) { + attributes += ` id="${node.elementId}"`; + if (this.options.debug) { + console.log(`[StandardElementGenerator] Adding generated ID attribute: ${node.elementId}`); + } + } + if (node.props.find((p) => typeof p === "string" && p.startsWith("data-"))) { const dataProps = node.props.filter( (p) => typeof p === "string" && p.startsWith("data-") diff --git a/lib/mappings.js b/lib/mappings.js index b47f83d..7b63c3c 100644 --- a/lib/mappings.js +++ b/lib/mappings.js @@ -538,7 +538,7 @@ const ELEMENT_MAPPINGS = { }, card: { tag: "div", - defaultProps: ["raised", "card"], + defaultProps: ["card"], }, grid: { tag: "div", diff --git a/lib/server.js b/lib/server.js index 6c2552e..49198f4 100644 --- a/lib/server.js +++ b/lib/server.js @@ -11,6 +11,7 @@ class BlueprintServer { this.wsInstance = expressWs(this.app); this.options = { port: 3000, + apiPort: 3001, srcDir: "./src", outDir: "./dist", liveReload: false, @@ -19,6 +20,8 @@ class BlueprintServer { }; this.clients = new Map(); this.filesWithErrors = new Set(); + this.apiServers = new Map(); + this.apiPorts = new Map(); this.setupServer(); if (this.options.liveReload) { const watcher = chokidar.watch([], { @@ -51,6 +54,27 @@ class BlueprintServer { ); } + async buildFile(filePath) { + const relativePath = path.relative(this.options.srcDir, filePath); + const outputPath = path.join( + this.options.outDir, + relativePath.replace(/\.bp$/, ".html") + ); + this.ensureDirectoryExistence(outputPath); + + const builder = new BlueprintBuilder({ + minified: this.options.minified, + debug: this.options.debug, + }); + const buildResult = builder.build(filePath, path.dirname(outputPath)); + + if (buildResult.success && buildResult.hasServerCode) { + this.startApiServer(relativePath.replace(/\.bp$/, "")); + } + + return buildResult; + } + async buildAll() { this.log("INFO", "Building all Blueprint files...", "lightGray"); if (fs.existsSync(this.options.outDir)) { @@ -70,8 +94,17 @@ class BlueprintServer { ); this.ensureDirectoryExistence(outputPath); - const builder = new BlueprintBuilder({ minified: this.options.minified }); + const builder = new BlueprintBuilder({ + minified: this.options.minified, + debug: this.options.debug + }); const result = builder.build(file, path.dirname(outputPath)); + + if (result.success && result.hasServerCode) { + const fileName = relativePath.replace(/\.bp$/, ""); + this.startApiServer(fileName); + } + if (!result.success) { success = false; errors.push({ file, errors: result.errors }); @@ -138,8 +171,19 @@ class BlueprintServer { fs.readFile(htmlPath, "utf8", (err, data) => { if (err) return next(); let html = data; + + const filePath = req.path.endsWith(".html") + ? req.path.slice(0, -5) + : req.path === "/" + ? "index" + : req.path.replace(/^\//, ""); + + const apiPort = this.apiPorts.get(filePath) || this.options.apiPort; + const script = ` + `; + html = html.replace("", script + ""); + } + + res.setHeader("Content-Type", "text/html"); + res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); + res.setHeader("Pragma", "no-cache"); + res.setHeader("Expires", "0"); + return res.send(html); + }); } else if (req.path === "/") { const pages = fs .readdirSync(this.options.outDir) @@ -311,83 +381,35 @@ class BlueprintServer { } setupWatcher(watcher) { - watcher.on("change", async (filepath) => { - if (filepath.endsWith(".bp")) { - this.log("INFO", `File ${filepath} has been changed`, "blue"); - try { - const builder = new BlueprintBuilder({ - minified: this.options.minified, - debug: this.options.debug, - }); - const relativePath = path.relative(this.options.srcDir, filepath); - const outputPath = path.join( - this.options.outDir, - relativePath.replace(/\.bp$/, ".html") - ); - this.ensureDirectoryExistence(outputPath); - const result = builder.build(filepath, path.dirname(outputPath)); - - if (result.success) { - this.log("SUCCESS", "Rebuilt successfully", "green"); - - this.filesWithErrors.delete(filepath); - - const htmlFile = relativePath.replace(/\.bp$/, ".html"); - const htmlPath = path.join(this.options.outDir, htmlFile); - - try { - const newContent = fs.readFileSync(htmlPath, "utf8"); - - for (const [client, page] of this.clients.entries()) { - if ( - page === htmlFile.replace(/\\/g, "/") && - client.readyState === 1 - ) { - try { - client.send( - JSON.stringify({ - type: "reload", - content: newContent, - }) - ); - } catch (error) { - this.log("ERROR", "Error sending content:", "red"); - this.clients.delete(client); - } - } - } - } catch (error) { - this.log("ERROR", "Error reading new content:", "red"); - } - } else { - this.filesWithErrors.add(filepath); - this.log("ERROR", `Build failed: ${result.errors.map(e => e.message).join(", ")}`, "red"); - this.log("INFO", "Waiting for next file change...", "orange"); - - for (const [client, page] of this.clients.entries()) { - const htmlFile = relativePath.replace(/\.bp$/, ".html"); - if ( - page === htmlFile.replace(/\\/g, "/") && - client.readyState === 1 - ) { - try { - client.send( - JSON.stringify({ - type: "buildError", - errors: result.errors, - }) - ); - } catch (error) { - this.log("ERROR", "Error sending error notification:", "red"); - this.clients.delete(client); - } - } - } - } - } catch (error) { - this.log("ERROR", "Unexpected error during build:", "red"); - this.filesWithErrors.add(filepath); + watcher.on("change", async (filePath) => { + if (!filePath.endsWith(".bp")) return; + this.log("INFO", `File changed: ${filePath}`, "blue"); + + const result = await this.buildFile(filePath); + + if (result.success) { + this.log("SUCCESS", `Rebuilt ${filePath}`, "green"); + this.filesWithErrors.delete(filePath); + + if (result.hasServerCode) { + const relativePath = path.relative(this.options.srcDir, filePath); + const fileName = relativePath.replace(/\.bp$/, ""); + this.startApiServer(fileName); } + + if (this.options.liveReload) { + this.notifyClients(filePath); + } + } else { + this.log("ERROR", `Build failed for ${filePath}`, "red"); + result.errors.forEach((err) => { + this.log( + "ERROR", + `${err.type} at line ${err.line}, column ${err.column}: ${err.message}`, + "red" + ); + }); + this.filesWithErrors.add(filePath); } }); @@ -468,6 +490,119 @@ class BlueprintServer { } }); } + + startApiServer(fileName) { + const serverFilePath = path.join(this.options.outDir, 'server', `${fileName}-server.js`); + + if (!fs.existsSync(serverFilePath)) { + this.log("ERROR", `API server file not found: ${serverFilePath}`, "red"); + return; + } + + let apiPort; + + if (this.apiPorts.has(fileName)) { + apiPort = this.apiPorts.get(fileName); + this.log("INFO", `Reusing port ${apiPort} for ${fileName}`, "blue"); + } else { + apiPort = this.options.apiPort; + this.options.apiPort++; + this.log("INFO", `Assigning new port ${apiPort} for ${fileName}`, "blue"); + } + + const startNewServer = () => { + try { + delete require.cache[require.resolve(path.resolve(serverFilePath))]; + + const createApiServer = require(path.resolve(serverFilePath)); + const apiServer = createApiServer(apiPort); + + this.apiServers.set(fileName, apiServer); + this.apiPorts.set(fileName, apiPort); + + this.log("SUCCESS", `API server started for ${fileName} on port ${apiPort}`, "green"); + } catch (error) { + this.log("ERROR", `Failed to start API server: ${error.message}`, "red"); + console.error(error); + } + }; + + if (this.apiServers.has(fileName)) { + const existingServer = this.apiServers.get(fileName); + this.log("INFO", `Stopping previous API server for ${fileName}`, "blue"); + + try { + if (existingServer && typeof existingServer.close === 'function') { + existingServer.close(() => { + this.log("INFO", `Previous server closed, starting new one`, "blue"); + setTimeout(startNewServer, 300); + }); + return; + } + + if (existingServer && existingServer.server && existingServer.server.close) { + existingServer.server.close(() => { + this.log("INFO", `Previous server closed, starting new one`, "blue"); + setTimeout(startNewServer, 300); + }); + return; + } + + this.log("WARNING", `Could not properly close previous server, waiting longer`, "orange"); + setTimeout(startNewServer, 1000); + } catch (err) { + this.log("WARNING", `Error closing previous server: ${err.message}`, "orange"); + setTimeout(startNewServer, 2000); + } + } else { + startNewServer(); + } + } + + notifyClients(filePath) { + const relativePath = path.relative(this.options.srcDir, filePath); + const htmlFile = relativePath.replace(/\.bp$/, ".html"); + const htmlPath = path.join(this.options.outDir, htmlFile); + const fileName = relativePath.replace(/\.bp$/, ""); + + try { + let newContent = fs.readFileSync(htmlPath, "utf8"); + + const apiPort = this.apiPorts.get(fileName) || this.options.apiPort; + + if (!newContent.includes('window.blueprintServerPort =')) { + newContent = newContent.replace( + '', + ` + ` + ); + } + + for (const [client, page] of this.clients.entries()) { + if ( + page === htmlFile.replace(/\\/g, "/") && + client.readyState === 1 + ) { + try { + client.send( + JSON.stringify({ + type: "reload", + content: newContent, + }) + ); + this.log("INFO", `Sent update to client for ${htmlFile}`, "blue"); + } catch (error) { + this.log("ERROR", "Error sending content:", "red"); + this.clients.delete(client); + } + } + } + } catch (error) { + this.log("ERROR", `Error reading new content from ${htmlPath}: ${error.message}`, "red"); + } + } } module.exports = BlueprintServer; diff --git a/lib/utils/StringUtils.js b/lib/utils/StringUtils.js index e609ad2..8ba7f7c 100644 --- a/lib/utils/StringUtils.js +++ b/lib/utils/StringUtils.js @@ -52,8 +52,23 @@ const safeStringify = (obj) => { } }; +/** + * Generates a random ID string suitable for use as an HTML element ID. + * @param {number} [length=8] - The length of the random ID + * @returns {string} - A random alphanumeric ID with bp_ prefix + */ +const generateRandomId = (length = 8) => { + const chars = 'abcdefghijklmnopqrstuvwxyz0123456789'; + let result = 'bp_'; + for (let i = 0; i < length; i++) { + result += chars.charAt(Math.floor(Math.random() * chars.length)); + } + return result; +}; + module.exports = { escapeHTML, toKebabCase, - safeStringify + safeStringify, + generateRandomId }; \ No newline at end of file diff --git a/package.json b/package.json index c0c6ed3..5f5508f 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "dependencies": { "axios": "^1.7.9", "chokidar": "^3.5.3", + "cors": "^2.8.5", "express": "^4.18.2", "express-ws": "^5.0.2", "ws": "^8.18.0"