From 4720404228627bc0975dfb0e1b700cb6ea70304b Mon Sep 17 00:00:00 2001 From: Markus Rudolph Date: Mon, 11 Mar 2024 10:50:02 +0100 Subject: [PATCH 01/14] Fix most langium imports --- hugo/content/playground/Tree.tsx | 2 +- hugo/content/playground/common.ts | 5 +- hugo/content/playground/langium-worker.ts | 5 +- hugo/content/playground/monarch-generator.ts | 55 +- hugo/content/playground/preprocess.ts | 2 +- hugo/content/playground/types.ts | 2 +- hugo/content/playground/user-worker.ts | 4 +- hugo/package.json | 14 +- package-lock.json | 1655 ++++++++---------- 9 files changed, 739 insertions(+), 1005 deletions(-) diff --git a/hugo/content/playground/Tree.tsx b/hugo/content/playground/Tree.tsx index 2b15c1fd..d999031d 100644 --- a/hugo/content/playground/Tree.tsx +++ b/hugo/content/playground/Tree.tsx @@ -4,12 +4,12 @@ * terms of the MIT License, which is available in the project root. ******************************************************************************/ -import { AstNode } from "langium"; import React, { FC, useState } from "react"; import * as ReactDOM from "react-dom/client"; import { preprocessAstNodeObject, PropertyNode, ValueNode } from "./preprocess"; import { clsx } from "clsx"; import { AstNodeLocator } from "langium/lib/workspace/ast-node-locator"; +import { AstNode } from "langium/lib/syntax-tree"; export let treeRoot: ReactDOM.Root; diff --git a/hugo/content/playground/common.ts b/hugo/content/playground/common.ts index 2cfc45e9..30641631 100644 --- a/hugo/content/playground/common.ts +++ b/hugo/content/playground/common.ts @@ -12,11 +12,12 @@ import { import { generateMonarch } from "./monarch-generator"; import { decompressFromEncodedURIComponent } from 'lz-string'; import { Disposable } from "vscode-languageserver"; -import { DefaultAstNodeLocator, createServicesForGrammar } from "langium"; import { render } from './Tree'; import { overlay, throttle } from "./utils"; import { addMonacoStyles, createUserConfig, MonacoEditorLanguageClientWrapper } from "langium-website-core/bundle"; -import { DocumentChangeResponse } from "../../assets/scripts/langium-utils/langium-ast"; +import { DocumentChangeResponse } from "langium-ast-helper"; +import { createServicesForGrammar } from "langium/lib/grammar"; +import { DefaultAstNodeLocator } from "langium/lib/workspace/ast-node-locator"; export { share, overlay } from './utils'; export { addMonacoStyles, MonacoEditorLanguageClientWrapper }; diff --git a/hugo/content/playground/langium-worker.ts b/hugo/content/playground/langium-worker.ts index b69b74b3..a6bd9f81 100644 --- a/hugo/content/playground/langium-worker.ts +++ b/hugo/content/playground/langium-worker.ts @@ -4,9 +4,12 @@ * terms of the MIT License, which is available in the project root. ******************************************************************************/ -import { DocumentState, startLanguageServer, EmptyFileSystem, createLangiumGrammarServices } from 'langium'; import { NotificationType } from 'vscode-languageserver/browser'; import { DocumentChange, createServerConnection } from './worker-utils'; +import { createLangiumGrammarServices } from 'langium/lib/grammar'; +import { startLanguageServer } from 'langium/lib/lsp'; +import { DocumentState } from 'langium/lib/workspace/documents'; +import { EmptyFileSystem } from 'langium/lib/workspace/file-system-provider'; // establish a browser server connection const connection = createServerConnection(); diff --git a/hugo/content/playground/monarch-generator.ts b/hugo/content/playground/monarch-generator.ts index 1a6e5623..85ac25b1 100644 --- a/hugo/content/playground/monarch-generator.ts +++ b/hugo/content/playground/monarch-generator.ts @@ -4,15 +4,10 @@ * terms of the MIT License, which is available in the project root. ******************************************************************************/ -import * as langium from "langium"; -import { - getTerminalParts, - isCommentTerminal, - escapeRegExp, - stream, -} from "langium"; -import { isParserRule, isKeyword, isTerminalRule, isRegexToken, TerminalRule, AbstractElement, isAlternatives, isGroup, isUnorderedGroup, isAssignment } from "langium/lib/grammar/generated/ast"; -import { terminalRegex } from "langium/lib/grammar/internal-grammar-util"; +import { isCommentTerminal, terminalRegex } from "langium/lib/utils/grammar-utils"; +import { stream } from "langium/lib/utils/stream"; +import { escapeRegExp, getTerminalParts } from "langium/lib/utils/regexp-utils"; +import ast from "langium/lib/languages/generated/ast"; /** * Monarch Language Definition, describes aspects & token categories of target language @@ -125,7 +120,7 @@ interface MonarchGrammar { * @param config Langium Config to also use during generation * @returns Generated Monarch syntax highlighting file content */ -export function generateMonarch(grammar: langium.Grammar, id: string) { +export function generateMonarch(grammar: ast.Grammar, id: string) { const symbols = getSymbols(grammar); const regex = /[{}[\]()]/; const operators = symbols.filter((s) => !regex.test(s)); @@ -153,7 +148,7 @@ export function generateMonarch(grammar: langium.Grammar, id: string) { * @param grammar Langium grammar to source tokenizer states from * @returns Array of tokenizer states */ -function getTokenizerStates(grammar: langium.Grammar): State[] { +function getTokenizerStates(grammar: ast.Grammar): State[] { // initial state, name is arbitrary, just needs to come first const initialState: State = { name: "initial", @@ -306,7 +301,7 @@ function prettyPrintAction(action: Action | Case[]): Action { * @param rule Rule to convert to a Monarch token name * @returns Returns the equivalent monarch token name, or the original rule name */ -function getMonarchTokenName(rule: TerminalRule): string { +function getMonarchTokenName(rule: ast.TerminalRule): string { if (rule.name.toLowerCase() === "string") { // string is clarified as a terminal by name, but not necessarily by type return "string"; @@ -324,10 +319,10 @@ function getMonarchTokenName(rule: TerminalRule): string { * @param grammar Langium grammar to extract whitespace rules from * @returns Array of Monarch whitespace rules */ -function getWhitespaceRules(grammar: langium.Grammar): Rule[] { +function getWhitespaceRules(grammar: ast.Grammar): Rule[] { const rules: Rule[] = []; for (const rule of grammar.rules) { - if (isTerminalRule(rule) && isRegexToken(rule.definition)) { + if (ast.isTerminalRule(rule) && ast.isRegexToken(rule.definition)) { const regex = new RegExp(terminalRegex(rule)); if (!isCommentTerminal(rule) && !regex.test(" ")) { @@ -365,13 +360,13 @@ function getWhitespaceRules(grammar: langium.Grammar): Rule[] { * @param grammar Langium grammar to extract comment rules from * @returns Array of Monarch comment rules */ -function getCommentRules(grammar: langium.Grammar): Rule[] { +function getCommentRules(grammar: ast.Grammar): Rule[] { const rules: Rule[] = []; for (const rule of grammar.rules) { if ( - isTerminalRule(rule) && + ast.isTerminalRule(rule) && isCommentTerminal(rule) && - isRegexToken(rule.definition) + ast.isRegexToken(rule.definition) ) { const tokenName = "comment"; const part = getTerminalParts(terminalRegex(rule))[0]; @@ -410,13 +405,13 @@ function getCommentRules(grammar: langium.Grammar): Rule[] { * @param grammar Grammar to get non-comment terminals from * @returns Array of Rules to add to a Monarch tokenizer state */ -function getTerminalRules(grammar: langium.Grammar): Rule[] { +function getTerminalRules(grammar: ast.Grammar): Rule[] { const rules: Rule[] = []; for (const rule of grammar.rules) { if ( - isTerminalRule(rule) && + ast.isTerminalRule(rule) && !isCommentTerminal(rule) && - isRegexToken(rule.definition) + ast.isRegexToken(rule.definition) ) { const regex = new RegExp(terminalRegex(rule)); @@ -463,7 +458,7 @@ const KeywordRegex = /[A-Za-z]/; * @param grammar Grammar to get keywords from * @returns Array of keywords */ -function getKeywords(grammar: langium.Grammar): string[] { +function getKeywords(grammar: ast.Grammar): string[] { return collectKeywords(grammar).filter((kw) => KeywordRegex.test(kw)); } @@ -472,14 +467,14 @@ function getKeywords(grammar: langium.Grammar): string[] { * @param grammar Grammar to get symbols from * @returns Array of symbols, effective inverse of getKeywords */ -function getSymbols(grammar: langium.Grammar): string[] { +function getSymbols(grammar: ast.Grammar): string[] { return collectKeywords(grammar).filter((kw) => !KeywordRegex.test(kw)); } -export function collectKeywords(grammar: langium.Grammar): string[] { +export function collectKeywords(grammar: ast.Grammar): string[] { const keywords = new Set(); - for (const rule of stream(grammar.rules).filter(isParserRule)) { + for (const rule of stream(grammar.rules).filter(ast.isParserRule)) { collectElementKeywords(rule.definition, keywords); } @@ -487,20 +482,20 @@ export function collectKeywords(grammar: langium.Grammar): string[] { } function collectElementKeywords( - element: AbstractElement, + element: ast.AbstractElement, keywords: Set ) { if ( - isAlternatives(element) || - isGroup(element) || - isUnorderedGroup(element) + ast.isAlternatives(element) || + ast.isGroup(element) || + ast.isUnorderedGroup(element) ) { for (const item of element.elements) { collectElementKeywords(item, keywords); } - } else if (isAssignment(element)) { + } else if (ast.isAssignment(element)) { collectElementKeywords(element.terminal, keywords); - } else if (isKeyword(element)) { + } else if (ast.isKeyword(element)) { keywords.add(element.value); } } diff --git a/hugo/content/playground/preprocess.ts b/hugo/content/playground/preprocess.ts index f0adf6c2..a1ad43e8 100644 --- a/hugo/content/playground/preprocess.ts +++ b/hugo/content/playground/preprocess.ts @@ -4,7 +4,7 @@ * terms of the MIT License, which is available in the project root. ******************************************************************************/ -import { AstNode } from "langium"; +import { AstNode } from "langium/lib/syntax-tree"; import { AstNodeLocator } from "langium/lib/workspace/ast-node-locator"; /** diff --git a/hugo/content/playground/types.ts b/hugo/content/playground/types.ts index 90bcb875..82b6b747 100644 --- a/hugo/content/playground/types.ts +++ b/hugo/content/playground/types.ts @@ -4,7 +4,7 @@ * terms of the MIT License, which is available in the project root. ******************************************************************************/ - import { AstNode } from "langium"; +import { AstNode } from "langium/lib/syntax-tree"; import { Diagnostic } from "vscode-languageserver"; export declare type DedicatedWorkerGlobalScope = any; diff --git a/hugo/content/playground/user-worker.ts b/hugo/content/playground/user-worker.ts index 6177712d..a2c7c33d 100644 --- a/hugo/content/playground/user-worker.ts +++ b/hugo/content/playground/user-worker.ts @@ -4,9 +4,11 @@ * terms of the MIT License, which is available in the project root. ******************************************************************************/ -import { DocumentState, createServicesForGrammar, startLanguageServer } from 'langium'; import { NotificationType } from 'vscode-languageserver/browser.js'; import { DocumentChange, createServerConnection } from './worker-utils'; +import { createServicesForGrammar } from 'langium/lib/grammar'; +import { startLanguageServer } from 'langium/lib/lsp'; +import { DocumentState } from 'langium/lib/workspace/documents'; // listen for messages to trigger starting the LS with a given grammar addEventListener('message', async (event) => { diff --git a/hugo/package.json b/hugo/package.json index c6255185..26395076 100644 --- a/hugo/package.json +++ b/hugo/package.json @@ -38,19 +38,17 @@ "clsx": "^1.2.1", "d3": "^7.8.5", "hugo-extended": "~0.89.4", - "langium": "^1.2.0", - "langium-arithmetics-dsl": "~1.2.1", - "langium-domainmodel-dsl": "~1.2.0", - "langium-minilogo": "^1.2.0", - "langium-sql": "^0.2.3", - "langium-statemachine-dsl": "~1.2.0", + "langium": "^3.0.0", + "langium-arithmetics-dsl": "^3.0.0", + "langium-ast-helper": "0.1.2", + "langium-domainmodel-dsl": "^3.0.0", + "langium-statemachine-dsl": "^3.0.0", "langium-website-core": "~1.0.0", "lz-string": "^1.4.4", "monaco-editor-workers": "~0.44.0", "react": "~18.2.0", "react-dom": "~18.2.0", - "vscode-languageserver": "~8.0.2", - "langium-ast-helper": "0.1.2" + "vscode-languageserver": "~8.0.2" }, "volta": { "node": "18.18.1", diff --git a/package-lock.json b/package-lock.json index a62eea17..0c7f46b2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -78,13 +78,11 @@ "clsx": "^1.2.1", "d3": "^7.8.5", "hugo-extended": "~0.89.4", - "langium": "^1.2.0", - "langium-arithmetics-dsl": "~1.2.1", + "langium": "^3.0.0", + "langium-arithmetics-dsl": "^3.0.0", "langium-ast-helper": "0.1.2", - "langium-domainmodel-dsl": "~1.2.0", - "langium-minilogo": "^1.2.0", - "langium-sql": "^0.2.3", - "langium-statemachine-dsl": "~1.2.0", + "langium-domainmodel-dsl": "^3.0.0", + "langium-statemachine-dsl": "^3.0.0", "langium-website-core": "~1.0.0", "lz-string": "^1.4.4", "monaco-editor-workers": "~0.44.0", @@ -101,6 +99,107 @@ "esbuild": "~0.19.4" } }, + "hugo/node_modules/@chevrotain/cst-dts-gen": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", + "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", + "dependencies": { + "@chevrotain/gast": "11.0.3", + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "hugo/node_modules/@chevrotain/gast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", + "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", + "dependencies": { + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "hugo/node_modules/@chevrotain/types": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", + "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==" + }, + "hugo/node_modules/@chevrotain/utils": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", + "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==" + }, + "hugo/node_modules/chevrotain": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", + "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", + "dependencies": { + "@chevrotain/cst-dts-gen": "11.0.3", + "@chevrotain/gast": "11.0.3", + "@chevrotain/regexp-to-ast": "11.0.3", + "@chevrotain/types": "11.0.3", + "@chevrotain/utils": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "hugo/node_modules/chevrotain-allstar": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", + "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", + "dependencies": { + "lodash-es": "^4.17.21" + }, + "peerDependencies": { + "chevrotain": "^11.0.0" + } + }, + "hugo/node_modules/langium": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/langium/-/langium-3.0.0.tgz", + "integrity": "sha512-+Ez9EoiByeoTu/2BXmEaZ06iPNXM6thWJp02KfBO/raSMyCJ4jw7AkWWa+zBCTm0+Tw1Fj9FOxdqSskyN5nAwg==", + "dependencies": { + "chevrotain": "~11.0.3", + "chevrotain-allstar": "~0.3.0", + "vscode-languageserver": "~9.0.1", + "vscode-languageserver-textdocument": "~1.0.11", + "vscode-uri": "~3.0.8" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "hugo/node_modules/langium/node_modules/vscode-languageserver": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "hugo/node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "engines": { + "node": ">=14.0.0" + } + }, + "hugo/node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "hugo/node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==" + }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", @@ -709,34 +808,10 @@ "node": ">=6.9.0" } }, - "node_modules/@chevrotain/cst-dts-gen": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-10.4.2.tgz", - "integrity": "sha512-0+4bNjlndNWMoVLH/+y4uHnf6GrTipsC+YTppJxelVJo+xeRVQ0s2PpkdDCVTsu7efyj+8r1gFiwVXsp6JZ0iQ==", - "dependencies": { - "@chevrotain/gast": "10.4.2", - "@chevrotain/types": "10.4.2", - "lodash": "4.17.21" - } - }, - "node_modules/@chevrotain/gast": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-10.4.2.tgz", - "integrity": "sha512-4ZAn8/mjkmYonilSJ60gGj1tAF0cVWYUMlIGA0e4ATAc3a648aCnvpBw7zlPHDQjFp50XC13iyWEgWAKiRKTOA==", - "dependencies": { - "@chevrotain/types": "10.4.2", - "lodash": "4.17.21" - } - }, - "node_modules/@chevrotain/types": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-10.4.2.tgz", - "integrity": "sha512-QzSCjg6G4MvIoLeIgOiMR0IgzkGEQqrNJJIr3T5ETRa7l4Av4AMIiEctV99mvDr57iXwwk0/kr3RJxiU36Nevw==" - }, - "node_modules/@chevrotain/utils": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-10.4.2.tgz", - "integrity": "sha512-V34dacxWLwKcvcy32dx96ADJVdB7kOJLm7LyBkBQw5u5HC9WdEFw2G17zml+U3ivavGTrGPJHl8o9/UJm0PlUw==" + "node_modules/@chevrotain/regexp-to-ast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz", + "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==" }, "node_modules/@codingame/monaco-vscode-configuration-service-override": { "version": "1.83.2", @@ -1211,19 +1286,6 @@ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, - "node_modules/@lit-labs/ssr-dom-shim": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.1.tgz", - "integrity": "sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ==" - }, - "node_modules/@lit/reactive-element": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.2.tgz", - "integrity": "sha512-rDfl+QnCYjuIGf5xI2sVJWdYIi56CTCwWa+nidKYX6oIuBYwUbT/vX4qbUDlHiZKJ/3FRNQ/tWJui44p6/stSA==", - "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.0.0" - } - }, "node_modules/@nicolo-ribaudo/chokidar-2": { "version": "2.1.8-no-fsevents.3", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", @@ -1359,11 +1421,6 @@ "@types/responselike": "^1.0.0" } }, - "node_modules/@types/css-font-loading-module": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@types/css-font-loading-module/-/css-font-loading-module-0.0.8.tgz", - "integrity": "sha512-PdJeLlCJj/ShOA+c0dXdZ/e1P0Cdjhip+dRBtPaigOqwKd0DiFx3NeO6T2E7AQ5JszSR3dub3YkQjc2hcQyxSw==" - }, "node_modules/@types/d3": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.0.tgz", @@ -1676,29 +1733,12 @@ "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", "dev": true }, - "node_modules/@types/trusted-types": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz", - "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==" - }, "node_modules/@types/vscode": { "version": "1.83.0", "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.83.0.tgz", "integrity": "sha512-3mUtHqLAVz9hegut9au4xehuBrzRE3UJiQMpoEHkNl6XHliihO7eATx2BMHs0odsmmrwjJrlixx/Pte6M3ygDQ==", "dev": true }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -1756,6 +1796,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -1785,11 +1826,6 @@ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", "dev": true }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -1873,42 +1909,6 @@ "safe-buffer": "^5.1.1" } }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -2010,14 +2010,6 @@ "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==" }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/cacheable-lookup": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", @@ -2057,18 +2049,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/camelcase-css": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", @@ -2117,6 +2097,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2132,6 +2113,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -2139,30 +2121,6 @@ "node": ">=8" } }, - "node_modules/chevrotain": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-10.4.2.tgz", - "integrity": "sha512-gzF5GxE0Ckti5kZVuKEZycLntB5X2aj9RVY0r4/220GwQjdnljU+/t3kP74/FMWC7IzCDDEjQ9wsFUf0WCdSHg==", - "dependencies": { - "@chevrotain/cst-dts-gen": "10.4.2", - "@chevrotain/gast": "10.4.2", - "@chevrotain/types": "10.4.2", - "@chevrotain/utils": "10.4.2", - "lodash": "4.17.21", - "regexp-to-ast": "0.5.0" - } - }, - "node_modules/chevrotain-allstar": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.1.7.tgz", - "integrity": "sha512-oMSHkXVCDQxnj3tDCqcEoMnNIEiYlAYT0FVja1PaLrT3njXGvg5JXTXs/tk2NI42SR3LMJyqTNgjR4VyDIf19w==", - "dependencies": { - "lodash": "^4.17.21" - }, - "peerDependencies": { - "chevrotain": "~10.4.1" - } - }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -2235,6 +2193,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -2245,15 +2204,8 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "engines": { - "node": ">=0.1.90" - } + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/commander": { "version": "4.1.1", @@ -2295,43 +2247,11 @@ "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" } }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -3028,23 +2948,6 @@ "robust-predicates": "^3.0.0" } }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, "node_modules/detective": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", @@ -3085,11 +2988,6 @@ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", "dev": true }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, "node_modules/electron-to-chromium": { "version": "1.4.479", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.479.tgz", @@ -3101,14 +2999,6 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -3490,11 +3380,6 @@ "node": ">=6" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -3509,68 +3394,6 @@ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, "node_modules/fast-glob": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", @@ -3621,36 +3444,6 @@ "node": ">=8" } }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, "node_modules/find-up": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", @@ -3666,14 +3459,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/fraction.js": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", @@ -3687,14 +3472,6 @@ "url": "https://www.patreon.com/infusion" } }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -3759,20 +3536,6 @@ "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/get-stream": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", @@ -3894,32 +3657,11 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -3952,21 +3694,6 @@ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/http2-wrapper": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", @@ -3997,17 +3724,6 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -4074,14 +3790,6 @@ "node": ">= 0.10" } }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -4256,158 +3964,612 @@ "json-buffer": "3.0.1" } }, - "node_modules/langium": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/langium/-/langium-1.2.1.tgz", - "integrity": "sha512-tpUa1r47pxuUBNqX5X4GAB08qhWpVwWhxjwOV+948skElHO9OV6emngfY3jOYzchJS4H6UZwyKalsOb8GGPsnQ==", - "dependencies": { - "chevrotain": "~10.4.2", - "chevrotain-allstar": "~0.1.4", - "vscode-languageserver": "~8.0.2", - "vscode-languageserver-textdocument": "~1.0.8", - "vscode-uri": "~3.0.7" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/langium-arithmetics-dsl": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/langium-arithmetics-dsl/-/langium-arithmetics-dsl-1.2.1.tgz", - "integrity": "sha512-xFbiAVYJIOb1ld7q7cT6eahhbN6rdYkP2o13pCtRLVFP6/oJQ7tPF9CLDJJyQeZJtP4eSM/35VuNUwaljmm6Fw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/langium-arithmetics-dsl/-/langium-arithmetics-dsl-3.0.0.tgz", + "integrity": "sha512-U3cZYJzT4vQUWo95NCUZ+UwMvXBmnpzfsYzMGlGANuYDNvKQ/Iw8qxym6yRh5GGv2QxQk8VvOk/+YIpPzRCuJw==", "dependencies": { - "chalk": "~4.1.2", - "commander": "~10.0.0", - "langium": "~1.2.0", - "vscode-languageclient": "~8.0.2", - "vscode-languageserver": "~8.0.2" + "chalk": "~5.3.0", + "commander": "~11.0.0", + "langium": "~3.0.0", + "vscode-languageclient": "~9.0.1", + "vscode-languageserver": "~9.0.1" }, "bin": { - "arithmetics-cli": "bin/cli" + "arithmetics-cli": "bin/cli.js" }, "engines": { "vscode": "^1.67.0" } }, - "node_modules/langium-arithmetics-dsl/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "engines": { - "node": ">=14" + "node_modules/langium-arithmetics-dsl/node_modules/@chevrotain/cst-dts-gen": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", + "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", + "dependencies": { + "@chevrotain/gast": "11.0.3", + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" } }, - "node_modules/langium-ast-helper": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/langium-ast-helper/-/langium-ast-helper-0.1.2.tgz", - "integrity": "sha512-xS64ZOp3fOUcTnlQoLwYwJKi2SU8yPeKGLFZlhxFUR4zJCtJ0teFfwsC+TR7GXWS5Tf3pxG+/Lf4mgkpKhOY+Q==" - }, - "node_modules/langium-domainmodel-dsl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/langium-domainmodel-dsl/-/langium-domainmodel-dsl-1.2.0.tgz", - "integrity": "sha512-xlkXmltp5p096GueLMSXZiBiZC1kMMec1CRlnw6b6JoiLPw87b6oDPTQRyZbkwxjCRq6XPnpE5aHafwPxTr1dw==", + "node_modules/langium-arithmetics-dsl/node_modules/@chevrotain/gast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", + "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", "dependencies": { - "chalk": "~4.1.2", - "commander": "~10.0.0", - "langium": "~1.2.0", - "lodash": "~4.17.21", - "vscode-languageclient": "~8.0.2", - "vscode-languageserver": "~8.0.2" - }, - "bin": { - "domainmodel-cli": "bin/cli" - }, - "engines": { - "vscode": "^1.67.0" + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" } }, - "node_modules/langium-domainmodel-dsl/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "engines": { - "node": ">=14" - } + "node_modules/langium-arithmetics-dsl/node_modules/@chevrotain/types": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", + "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==" }, - "node_modules/langium-minilogo": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/langium-minilogo/-/langium-minilogo-1.2.0.tgz", - "integrity": "sha512-hmeY2VSR4GlcAJ1rLIQBm8Sc4sL0XaQjv4cgI/N+tHmsrGtXUaFO/s7s6hpzjUEfRZgfR38u6L3df9VXbZ7svQ==", - "dependencies": { - "colors": "^1.4.0", - "commander": "^8.0.0", - "express": "^4.18.2", - "langium": "~1.2.1", - "monaco-editor-comp": "~1.6.0", - "vscode-languageclient": "~8.0.2", - "vscode-languageserver": "~8.0.2" - }, - "bin": { - "minilogo-cli": "bin/cli" - }, - "engines": { - "vscode": "^1.56.0" + "node_modules/langium-arithmetics-dsl/node_modules/@chevrotain/utils": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", + "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==" + }, + "node_modules/langium-arithmetics-dsl/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/langium-minilogo/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "node_modules/langium-arithmetics-dsl/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "engines": { - "node": ">= 12" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/langium-sql": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/langium-sql/-/langium-sql-0.2.3.tgz", - "integrity": "sha512-OSRZttyyULW/1OsUBQQ9lj8qY+eJhsb+FeWWjUZWQadn8bubVYlaYL9UoYmsKeAwwP9kQvkQEKQZQLVevfsphQ==", + "node_modules/langium-arithmetics-dsl/node_modules/chevrotain": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", + "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", "dependencies": { - "langium": "~1.1.0", - "lodash": "^4.17.21" + "@chevrotain/cst-dts-gen": "11.0.3", + "@chevrotain/gast": "11.0.3", + "@chevrotain/regexp-to-ast": "11.0.3", + "@chevrotain/types": "11.0.3", + "@chevrotain/utils": "11.0.3", + "lodash-es": "4.17.21" } }, - "node_modules/langium-sql/node_modules/langium": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/langium/-/langium-1.1.0.tgz", - "integrity": "sha512-TsWY/DIOR73se9/YaMQZpvfFWWrhWP0FQS9MrpxWEnMJR0FoKVpMF1thPWXZexLSfyEm1pn2oYzCdW4KUBqXxA==", + "node_modules/langium-arithmetics-dsl/node_modules/chevrotain-allstar": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", + "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", "dependencies": { - "chevrotain": "~10.4.2", - "chevrotain-allstar": "~0.1.4", - "vscode-languageserver": "~8.0.2", - "vscode-languageserver-textdocument": "~1.0.8", - "vscode-uri": "~3.0.7" + "lodash-es": "^4.17.21" }, + "peerDependencies": { + "chevrotain": "^11.0.0" + } + }, + "node_modules/langium-arithmetics-dsl/node_modules/commander": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", + "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", "engines": { - "node": ">=14.0.0" + "node": ">=16" } }, - "node_modules/langium-statemachine-dsl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/langium-statemachine-dsl/-/langium-statemachine-dsl-1.2.0.tgz", - "integrity": "sha512-bOomgWpr5QD3uVhmuBpqLCT1Q1pc6BZypCV3BCRQ7A20MOS0QYjZlkbV7L/QC1pfLCGYR3teKqT+3cUSlXg2jA==", + "node_modules/langium-arithmetics-dsl/node_modules/langium": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/langium/-/langium-3.0.0.tgz", + "integrity": "sha512-+Ez9EoiByeoTu/2BXmEaZ06iPNXM6thWJp02KfBO/raSMyCJ4jw7AkWWa+zBCTm0+Tw1Fj9FOxdqSskyN5nAwg==", "dependencies": { - "chalk": "~4.1.2", - "commander": "~10.0.0", - "langium": "~1.2.0", - "lodash": "^4.17.21", - "vscode-languageclient": "~8.0.2", - "vscode-languageserver": "~8.0.2" + "chevrotain": "~11.0.3", + "chevrotain-allstar": "~0.3.0", + "vscode-languageserver": "~9.0.1", + "vscode-languageserver-textdocument": "~1.0.11", + "vscode-uri": "~3.0.8" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/langium-arithmetics-dsl/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/langium-arithmetics-dsl/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/langium-arithmetics-dsl/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/langium-arithmetics-dsl/node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/langium-arithmetics-dsl/node_modules/vscode-languageclient": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-9.0.1.tgz", + "integrity": "sha512-JZiimVdvimEuHh5olxhxkht09m3JzUGwggb5eRUkzzJhZ2KjCN0nh55VfiED9oez9DyF8/fz1g1iBV3h+0Z2EA==", + "dependencies": { + "minimatch": "^5.1.0", + "semver": "^7.3.7", + "vscode-languageserver-protocol": "3.17.5" + }, + "engines": { + "vscode": "^1.82.0" + } + }, + "node_modules/langium-arithmetics-dsl/node_modules/vscode-languageserver": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/langium-arithmetics-dsl/node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/langium-arithmetics-dsl/node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==" + }, + "node_modules/langium-arithmetics-dsl/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/langium-ast-helper": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/langium-ast-helper/-/langium-ast-helper-0.1.2.tgz", + "integrity": "sha512-xS64ZOp3fOUcTnlQoLwYwJKi2SU8yPeKGLFZlhxFUR4zJCtJ0teFfwsC+TR7GXWS5Tf3pxG+/Lf4mgkpKhOY+Q==" + }, + "node_modules/langium-domainmodel-dsl": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/langium-domainmodel-dsl/-/langium-domainmodel-dsl-3.0.0.tgz", + "integrity": "sha512-wBVjpPtT6D/j44+oPDnyEZlc3kDyFO4kfz+26jNDZ6Tpq1lOCdWqxMs6WD45YAai8yC8vuyzWumPOkqO/aFnKg==", + "dependencies": { + "chalk": "~5.3.0", + "commander": "~11.0.0", + "langium": "~3.0.0", + "lodash": "~4.17.21", + "vscode-languageclient": "~9.0.1", + "vscode-languageserver": "~9.0.1" + }, + "bin": { + "domainmodel-cli": "bin/cli.js" + }, + "engines": { + "vscode": "^1.67.0" + } + }, + "node_modules/langium-domainmodel-dsl/node_modules/@chevrotain/cst-dts-gen": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", + "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", + "dependencies": { + "@chevrotain/gast": "11.0.3", + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/langium-domainmodel-dsl/node_modules/@chevrotain/gast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", + "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", + "dependencies": { + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/langium-domainmodel-dsl/node_modules/@chevrotain/types": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", + "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==" + }, + "node_modules/langium-domainmodel-dsl/node_modules/@chevrotain/utils": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", + "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==" + }, + "node_modules/langium-domainmodel-dsl/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/langium-domainmodel-dsl/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/langium-domainmodel-dsl/node_modules/chevrotain": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", + "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", + "dependencies": { + "@chevrotain/cst-dts-gen": "11.0.3", + "@chevrotain/gast": "11.0.3", + "@chevrotain/regexp-to-ast": "11.0.3", + "@chevrotain/types": "11.0.3", + "@chevrotain/utils": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/langium-domainmodel-dsl/node_modules/chevrotain-allstar": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", + "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", + "dependencies": { + "lodash-es": "^4.17.21" + }, + "peerDependencies": { + "chevrotain": "^11.0.0" + } + }, + "node_modules/langium-domainmodel-dsl/node_modules/commander": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", + "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", + "engines": { + "node": ">=16" + } + }, + "node_modules/langium-domainmodel-dsl/node_modules/langium": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/langium/-/langium-3.0.0.tgz", + "integrity": "sha512-+Ez9EoiByeoTu/2BXmEaZ06iPNXM6thWJp02KfBO/raSMyCJ4jw7AkWWa+zBCTm0+Tw1Fj9FOxdqSskyN5nAwg==", + "dependencies": { + "chevrotain": "~11.0.3", + "chevrotain-allstar": "~0.3.0", + "vscode-languageserver": "~9.0.1", + "vscode-languageserver-textdocument": "~1.0.11", + "vscode-uri": "~3.0.8" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/langium-domainmodel-dsl/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/langium-domainmodel-dsl/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/langium-domainmodel-dsl/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/langium-domainmodel-dsl/node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/langium-domainmodel-dsl/node_modules/vscode-languageclient": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-9.0.1.tgz", + "integrity": "sha512-JZiimVdvimEuHh5olxhxkht09m3JzUGwggb5eRUkzzJhZ2KjCN0nh55VfiED9oez9DyF8/fz1g1iBV3h+0Z2EA==", + "dependencies": { + "minimatch": "^5.1.0", + "semver": "^7.3.7", + "vscode-languageserver-protocol": "3.17.5" + }, + "engines": { + "vscode": "^1.82.0" + } + }, + "node_modules/langium-domainmodel-dsl/node_modules/vscode-languageserver": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/langium-domainmodel-dsl/node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/langium-domainmodel-dsl/node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==" + }, + "node_modules/langium-domainmodel-dsl/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/langium-statemachine-dsl": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/langium-statemachine-dsl/-/langium-statemachine-dsl-3.0.0.tgz", + "integrity": "sha512-xLCskFijxSZs69CN02NpCgdYWMRIzsNzuW4uzO7gujIKAmmhIDhSJY4zpoZ7p9ahcF8fcjTHLbgq/CT4OtqiqA==", + "dependencies": { + "chalk": "~5.3.0", + "commander": "~11.0.0", + "langium": "~3.0.0", + "vscode-languageclient": "~9.0.1", + "vscode-languageserver": "~9.0.1" + }, + "bin": { + "statemachine-cli": "bin/cli.js" + }, + "engines": { + "vscode": "^1.67.0" + } + }, + "node_modules/langium-statemachine-dsl/node_modules/@chevrotain/cst-dts-gen": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", + "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", + "dependencies": { + "@chevrotain/gast": "11.0.3", + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/langium-statemachine-dsl/node_modules/@chevrotain/gast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", + "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", + "dependencies": { + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/langium-statemachine-dsl/node_modules/@chevrotain/types": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", + "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==" + }, + "node_modules/langium-statemachine-dsl/node_modules/@chevrotain/utils": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", + "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==" + }, + "node_modules/langium-statemachine-dsl/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/langium-statemachine-dsl/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/langium-statemachine-dsl/node_modules/chevrotain": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", + "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", + "dependencies": { + "@chevrotain/cst-dts-gen": "11.0.3", + "@chevrotain/gast": "11.0.3", + "@chevrotain/regexp-to-ast": "11.0.3", + "@chevrotain/types": "11.0.3", + "@chevrotain/utils": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/langium-statemachine-dsl/node_modules/chevrotain-allstar": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", + "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", + "dependencies": { + "lodash-es": "^4.17.21" + }, + "peerDependencies": { + "chevrotain": "^11.0.0" + } + }, + "node_modules/langium-statemachine-dsl/node_modules/commander": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", + "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", + "engines": { + "node": ">=16" + } + }, + "node_modules/langium-statemachine-dsl/node_modules/langium": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/langium/-/langium-3.0.0.tgz", + "integrity": "sha512-+Ez9EoiByeoTu/2BXmEaZ06iPNXM6thWJp02KfBO/raSMyCJ4jw7AkWWa+zBCTm0+Tw1Fj9FOxdqSskyN5nAwg==", + "dependencies": { + "chevrotain": "~11.0.3", + "chevrotain-allstar": "~0.3.0", + "vscode-languageserver": "~9.0.1", + "vscode-languageserver-textdocument": "~1.0.11", + "vscode-uri": "~3.0.8" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/langium-statemachine-dsl/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/langium-statemachine-dsl/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/langium-statemachine-dsl/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" }, "bin": { - "statemachine-cli": "bin/cli" + "semver": "bin/semver.js" }, "engines": { - "vscode": "^1.67.0" + "node": ">=10" } }, - "node_modules/langium-statemachine-dsl/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "node_modules/langium-statemachine-dsl/node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/langium-statemachine-dsl/node_modules/vscode-languageclient": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-9.0.1.tgz", + "integrity": "sha512-JZiimVdvimEuHh5olxhxkht09m3JzUGwggb5eRUkzzJhZ2KjCN0nh55VfiED9oez9DyF8/fz1g1iBV3h+0Z2EA==", + "dependencies": { + "minimatch": "^5.1.0", + "semver": "^7.3.7", + "vscode-languageserver-protocol": "3.17.5" + }, "engines": { - "node": ">=14" + "vscode": "^1.82.0" + } + }, + "node_modules/langium-statemachine-dsl/node_modules/vscode-languageserver": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/langium-statemachine-dsl/node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" } }, + "node_modules/langium-statemachine-dsl/node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==" + }, + "node_modules/langium-statemachine-dsl/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/langium-website-core": { "resolved": "core", "link": true @@ -4434,34 +4596,6 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, - "node_modules/lit": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/lit/-/lit-2.5.0.tgz", - "integrity": "sha512-DtnUP6vR3l4Q8nRPPNBD+UxbAhwJPeky+OVbi3pdgMqm0g57xFSl1Sj64D1rIB+nVNdiVVg8YxB0hqKjvdadZA==", - "dependencies": { - "@lit/reactive-element": "^1.5.0", - "lit-element": "^3.2.0", - "lit-html": "^2.5.0" - } - }, - "node_modules/lit-element": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.2.tgz", - "integrity": "sha512-xXAeVWKGr4/njq0rGC9dethMnYCq5hpKYrgQZYTzawt9YQhMiXfD+T1RgrdY3NamOxwq2aXlb0vOI6e29CKgVQ==", - "dependencies": { - "@lit-labs/ssr-dom-shim": "^1.1.0", - "@lit/reactive-element": "^1.3.0", - "lit-html": "^2.7.0" - } - }, - "node_modules/lit-html": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.7.5.tgz", - "integrity": "sha512-YqUzpisJodwKIlbMFCtyrp58oLloKGnnPLMJ1t23cbfIJjg/H9pvLWK4XS69YeubK5HUs1UE4ys9w5dP1zg6IA==", - "dependencies": { - "@types/trusted-types": "^2.0.2" - } - }, "node_modules/locate-path": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", @@ -4481,6 +4615,11 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, "node_modules/log-symbols": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", @@ -4582,19 +4721,6 @@ "semver": "bin/semver" } }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -4603,14 +4729,6 @@ "node": ">= 8" } }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -4623,36 +4741,6 @@ "node": ">=8.6" } }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", @@ -4686,98 +4774,6 @@ "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.44.0.tgz", "integrity": "sha512-5SmjNStN6bSuSE5WPT2ZV+iYn1/yI9sd4Igtk23ChvqB7kDk9lZbB9F5frsuvpB+2njdIeGGFf2G4gbE6rCC9Q==" }, - "node_modules/monaco-editor-comp": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/monaco-editor-comp/-/monaco-editor-comp-1.6.0.tgz", - "integrity": "sha512-LGOubZ2YdyiwvoJGU732wTTpQ5LqU/Mx/WiN4tDVTWrAlDUyLPMqMLiow5erA5Rc7b6i+whNhyq9M5/g9CGOhw==", - "dependencies": { - "lit": "~2.5.0", - "monaco-editor-wrapper": "1.6.0" - } - }, - "node_modules/monaco-editor-comp/node_modules/monaco-editor": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.34.1.tgz", - "integrity": "sha512-FKc80TyiMaruhJKKPz5SpJPIjL+dflGvz4CpuThaPMc94AyN7SeC9HQ8hrvaxX7EyHdJcUY5i4D0gNyJj1vSZQ==", - "peer": true - }, - "node_modules/monaco-editor-comp/node_modules/monaco-editor-wrapper": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/monaco-editor-wrapper/-/monaco-editor-wrapper-1.6.0.tgz", - "integrity": "sha512-ETGAicvsGER2QUl0aUhm0K3gXPiQnidrMXkUEzdipTtkNKfoCt3+IgxxoUY1oYbaPNEyN7Vj9Tp5NoTMYxd47Q==", - "dependencies": { - "@types/css-font-loading-module": "~0.0.7", - "monaco-languageclient": "4.0.3", - "normalize-url": "~8.0.0", - "vscode-languageserver-protocol": "3.17.2", - "vscode-ws-jsonrpc": "2.0.1" - } - }, - "node_modules/monaco-editor-comp/node_modules/monaco-languageclient": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/monaco-languageclient/-/monaco-languageclient-4.0.3.tgz", - "integrity": "sha512-1mGIUb5PFRknITBhNxgH0SnQy1/jntt9oo0cQpOl3HdhYEL/CYK2UrsZZX7Udqmz1PXKyRIzQ3tZ7dJn4mzWtA==", - "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@1.69.13", - "vscode-jsonrpc": "8.0.2", - "vscode-languageclient": "8.0.2" - }, - "engines": { - "node": ">=16.11.0", - "npm": ">=8.0.0" - }, - "peerDependencies": { - "vscode": ">= npm:@codingame/monaco-vscode-api@1.69.0 < npm:@codingame/monaco-vscode-api@1.70.0" - } - }, - "node_modules/monaco-editor-comp/node_modules/normalize-url": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", - "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/monaco-editor-comp/node_modules/vscode": { - "name": "@codingame/monaco-vscode-api", - "version": "1.69.13", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-api/-/monaco-vscode-api-1.69.13.tgz", - "integrity": "sha512-7+dQbQ5O8mQhFyUcAiiJkCotNjZUzRxh4NMBKc/BSIFi0jG47bay+jP/+ngsmxHBapjs/xUAPaKSGNnf9WBmAA==", - "peerDependencies": { - "monaco-editor": "~0.34.0", - "vscode-oniguruma": "^1.6.2", - "vscode-textmate": "^7.0.1" - } - }, - "node_modules/monaco-editor-comp/node_modules/vscode-jsonrpc": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.0.2.tgz", - "integrity": "sha512-RY7HwI/ydoC1Wwg4gJ3y6LpU9FJRZAUnTYMXthqhFXXu77ErDd/xkREpGuk4MyYkk4a+XDWAMqe0S3KkelYQEQ==", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/monaco-editor-comp/node_modules/vscode-textmate": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-7.0.4.tgz", - "integrity": "sha512-9hJp0xL7HW1Q5OgGe03NACo7yiCTMEk3WU/rtKXUbncLtdg6rVVNJnHwD88UhbIYU2KoxY0Dih0x+kIsmUKn2A==", - "peer": true - }, - "node_modules/monaco-editor-comp/node_modules/vscode-ws-jsonrpc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/vscode-ws-jsonrpc/-/vscode-ws-jsonrpc-2.0.1.tgz", - "integrity": "sha512-ne5DO8/qe8tHt1U4LafLiYS832Yd4OltkP4+YZVOQwqGEU5nwLwZowUBqqEWt8sOZ0eLdCLV9luotGC2aUQ+LA==", - "dependencies": { - "vscode-jsonrpc": "8.0.2" - }, - "engines": { - "node": ">=16.11.0", - "npm": ">=8.0.0" - } - }, "node_modules/monaco-editor-workers": { "version": "0.44.0", "resolved": "https://registry.npmjs.org/monaco-editor-workers/-/monaco-editor-workers-0.44.0.tgz", @@ -5038,14 +5034,6 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/node-releases": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", @@ -5141,25 +5129,6 @@ "node": ">= 6" } }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -5235,14 +5204,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/path-exists": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", @@ -5274,11 +5235,6 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -5471,18 +5427,6 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -5492,20 +5436,6 @@ "once": "^1.3.1" } }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -5536,28 +5466,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/react": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", @@ -5672,11 +5580,6 @@ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", "dev": true }, - "node_modules/regexp-to-ast": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.5.0.tgz", - "integrity": "sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==" - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -5856,66 +5759,6 @@ "semver": "bin/semver.js" } }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -5979,19 +5822,6 @@ "node": ">=6" } }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/slash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", @@ -6043,14 +5873,6 @@ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==" }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -6261,14 +6083,6 @@ "node": ">=8.0" } }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -6295,18 +6109,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/typescript": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", @@ -6351,14 +6153,6 @@ "node": ">= 10.0.0" } }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/update-browserslist-db": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", @@ -6393,14 +6187,6 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -6410,14 +6196,6 @@ "spdx-expression-parse": "^3.0.0" } }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/vite": { "version": "4.4.11", "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.11.tgz", @@ -6562,49 +6340,6 @@ "node": ">=14.0.0" } }, - "node_modules/vscode-languageclient": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.0.2.tgz", - "integrity": "sha512-lHlthJtphG9gibGb/y72CKqQUxwPsMXijJVpHEC2bvbFqxmkj9LwQ3aGU9dwjBLqsX1S4KjShYppLvg1UJDF/Q==", - "dependencies": { - "minimatch": "^3.0.4", - "semver": "^7.3.5", - "vscode-languageserver-protocol": "3.17.2" - }, - "engines": { - "vscode": "^1.67.0" - } - }, - "node_modules/vscode-languageclient/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/vscode-languageclient/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/vscode-languageclient/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/vscode-languageserver": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-8.0.2.tgz", @@ -6634,9 +6369,9 @@ } }, "node_modules/vscode-languageserver-textdocument": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz", - "integrity": "sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==" + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.11.tgz", + "integrity": "sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==" }, "node_modules/vscode-languageserver-types": { "version": "3.17.2", @@ -6654,9 +6389,9 @@ "integrity": "sha512-Cl65diFGxz7gpwbav10HqiY/eVYTO1sjQpmRmV991Bj7wAoOAjGQ97PpQcXorDE2Uc4hnGWLY17xme+5t6MlSg==" }, "node_modules/vscode-uri": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.7.tgz", - "integrity": "sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==" + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==" }, "node_modules/vscode-ws-jsonrpc": { "version": "3.0.0", From 0d63cd8db7ee6e939d1ed40b89081aff45236bd5 Mon Sep 17 00:00:00 2001 From: Markus Rudolph Date: Mon, 11 Mar 2024 11:30:03 +0100 Subject: [PATCH 02/14] Intermediate save --- hugo/content/playground/common.ts | 3 +- hugo/content/playground/langium-worker.ts | 6 +- hugo/content/playground/monarch-generator.ts | 37 +- hugo/content/playground/user-worker.ts | 5 +- hugo/package.json | 1 + package-lock.json | 587 +++++++------------ 6 files changed, 243 insertions(+), 396 deletions(-) diff --git a/hugo/content/playground/common.ts b/hugo/content/playground/common.ts index 30641631..054c916c 100644 --- a/hugo/content/playground/common.ts +++ b/hugo/content/playground/common.ts @@ -16,8 +16,7 @@ import { render } from './Tree'; import { overlay, throttle } from "./utils"; import { addMonacoStyles, createUserConfig, MonacoEditorLanguageClientWrapper } from "langium-website-core/bundle"; import { DocumentChangeResponse } from "langium-ast-helper"; -import { createServicesForGrammar } from "langium/lib/grammar"; -import { DefaultAstNodeLocator } from "langium/lib/workspace/ast-node-locator"; +import { createServicesForGrammar, DefaultAstNodeLocator } from "langium"; export { share, overlay } from './utils'; export { addMonacoStyles, MonacoEditorLanguageClientWrapper }; diff --git a/hugo/content/playground/langium-worker.ts b/hugo/content/playground/langium-worker.ts index a6bd9f81..05cdfc30 100644 --- a/hugo/content/playground/langium-worker.ts +++ b/hugo/content/playground/langium-worker.ts @@ -6,10 +6,8 @@ import { NotificationType } from 'vscode-languageserver/browser'; import { DocumentChange, createServerConnection } from './worker-utils'; -import { createLangiumGrammarServices } from 'langium/lib/grammar'; -import { startLanguageServer } from 'langium/lib/lsp'; -import { DocumentState } from 'langium/lib/workspace/documents'; -import { EmptyFileSystem } from 'langium/lib/workspace/file-system-provider'; +import { EmptyFileSystem, createLangiumGrammarServices, DocumentState } from 'langium'; +import { startLanguageServer } from 'langium/lsp'; // establish a browser server connection const connection = createServerConnection(); diff --git a/hugo/content/playground/monarch-generator.ts b/hugo/content/playground/monarch-generator.ts index 85ac25b1..59336082 100644 --- a/hugo/content/playground/monarch-generator.ts +++ b/hugo/content/playground/monarch-generator.ts @@ -4,10 +4,9 @@ * terms of the MIT License, which is available in the project root. ******************************************************************************/ -import { isCommentTerminal, terminalRegex } from "langium/lib/utils/grammar-utils"; -import { stream } from "langium/lib/utils/stream"; -import { escapeRegExp, getTerminalParts } from "langium/lib/utils/regexp-utils"; -import ast from "langium/lib/languages/generated/ast"; +import { isCommentTerminal, terminalRegex, stream, escapeRegExp, getTerminalParts } from "langium"; +import ast from "langium"; +import { languages } from "monaco-editor"; /** * Monarch Language Definition, describes aspects & token categories of target language @@ -120,7 +119,7 @@ interface MonarchGrammar { * @param config Langium Config to also use during generation * @returns Generated Monarch syntax highlighting file content */ -export function generateMonarch(grammar: ast.Grammar, id: string) { +export function generateMonarch(grammar: ast.Grammar, id: string): languages.IMonarchLanguage { const symbols = getSymbols(grammar); const regex = /[{}[\]()]/; const operators = symbols.filter((s) => !regex.test(s)); @@ -195,14 +194,14 @@ function getTokenizerStates(grammar: ast.Grammar): State[] { * @param monarchGrammar Grammar to pretty print * @returns Monarch grammar in concrete form */ -function prettyPrint(monarchGrammar: MonarchGrammar) { +function prettyPrint(monarchGrammar: MonarchGrammar): languages.IMonarchLanguage { const name = monarchGrammar.languageDefinition.name; const languages = prettyPrintLangDef(monarchGrammar.languageDefinition); const tokenizer = prettyPrintTokenizer(monarchGrammar.tokenizer); return { ...languages, - ...tokenizer + tokenizer }; } @@ -237,20 +236,20 @@ function prettyPrintLangDef( * Pretty prints the tokenizer portion of a Monarch grammar file * @param tokenizer Tokenizer portion to print out */ -function prettyPrintTokenizer(tokenizer: Tokenizer) { +function prettyPrintTokenizer(tokenizer: Tokenizer): { + [name: string]: languages.IMonarchLanguageRule[]; +} { const result = tokenizer.states .map((s) => prettyPrintState(s)) .reduce((lhs, rhs) => ({ ...lhs, ...rhs }), {}); - return { - tokenizer: result, - }; + return result; } /** * Pretty prints a tokenizer state, composed of various rules * @param state Tokenizer state to pretty print */ -function prettyPrintState(state: State) { +function prettyPrintState(state: State): {[name: string]: languages.IMonarchLanguageRule[]} { return { [state.name]: state.rules.map((r) => prettyPrintRule(r)), }; @@ -262,15 +261,13 @@ function prettyPrintState(state: State) { * @param ruleOrState Rule to pretty print. If it's a state, we include that state's contents implicitly within this context. * @returns Generator node containing this printed rule */ -function prettyPrintRule(ruleOrState: Rule | State): Rule { +function prettyPrintRule(ruleOrState: Rule | State): languages.IMonarchLanguageRule { if (isRegexRule(ruleOrState)) { - return { - regex: - ruleOrState.regex instanceof RegExp - ? ruleOrState.regex - : new RegExp(ruleOrState.regex), - action: prettyPrintAction(ruleOrState.action), - }; + const regex = ruleOrState.regex instanceof RegExp + ? ruleOrState.regex + : new RegExp(ruleOrState.regex); + const action = prettyPrintAction(ruleOrState.action); + return [regex, action] as const; } else if (isIncludeRule(ruleOrState)) { return ruleOrState; } else { diff --git a/hugo/content/playground/user-worker.ts b/hugo/content/playground/user-worker.ts index a2c7c33d..c77c2467 100644 --- a/hugo/content/playground/user-worker.ts +++ b/hugo/content/playground/user-worker.ts @@ -6,9 +6,8 @@ import { NotificationType } from 'vscode-languageserver/browser.js'; import { DocumentChange, createServerConnection } from './worker-utils'; -import { createServicesForGrammar } from 'langium/lib/grammar'; -import { startLanguageServer } from 'langium/lib/lsp'; -import { DocumentState } from 'langium/lib/workspace/documents'; +import { startLanguageServer } from 'langium/lsp'; +import { DocumentState, createServicesForGrammar } from 'langium'; // listen for messages to trigger starting the LS with a given grammar addEventListener('message', async (event) => { diff --git a/hugo/package.json b/hugo/package.json index 26395076..d08eb5a1 100644 --- a/hugo/package.json +++ b/hugo/package.json @@ -4,6 +4,7 @@ "author": "TypeFox", "license": "MIT", "private": true, + "type": "module", "scripts": { "clean:static": "shx rm -rf ./static/showcase ./static/playground ./static/libs", "copy:libs:prepare": "shx mkdir -p ./static/libs/monaco-editor-workers/workers", diff --git a/package-lock.json b/package-lock.json index 0c7f46b2..3dd569d2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -99,107 +99,6 @@ "esbuild": "~0.19.4" } }, - "hugo/node_modules/@chevrotain/cst-dts-gen": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", - "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", - "dependencies": { - "@chevrotain/gast": "11.0.3", - "@chevrotain/types": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "hugo/node_modules/@chevrotain/gast": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", - "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", - "dependencies": { - "@chevrotain/types": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "hugo/node_modules/@chevrotain/types": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", - "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==" - }, - "hugo/node_modules/@chevrotain/utils": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", - "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==" - }, - "hugo/node_modules/chevrotain": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", - "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", - "dependencies": { - "@chevrotain/cst-dts-gen": "11.0.3", - "@chevrotain/gast": "11.0.3", - "@chevrotain/regexp-to-ast": "11.0.3", - "@chevrotain/types": "11.0.3", - "@chevrotain/utils": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "hugo/node_modules/chevrotain-allstar": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", - "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", - "dependencies": { - "lodash-es": "^4.17.21" - }, - "peerDependencies": { - "chevrotain": "^11.0.0" - } - }, - "hugo/node_modules/langium": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/langium/-/langium-3.0.0.tgz", - "integrity": "sha512-+Ez9EoiByeoTu/2BXmEaZ06iPNXM6thWJp02KfBO/raSMyCJ4jw7AkWWa+zBCTm0+Tw1Fj9FOxdqSskyN5nAwg==", - "dependencies": { - "chevrotain": "~11.0.3", - "chevrotain-allstar": "~0.3.0", - "vscode-languageserver": "~9.0.1", - "vscode-languageserver-textdocument": "~1.0.11", - "vscode-uri": "~3.0.8" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "hugo/node_modules/langium/node_modules/vscode-languageserver": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", - "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", - "dependencies": { - "vscode-languageserver-protocol": "3.17.5" - }, - "bin": { - "installServerIntoExtension": "bin/installServerIntoExtension" - } - }, - "hugo/node_modules/vscode-jsonrpc": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", - "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", - "engines": { - "node": ">=14.0.0" - } - }, - "hugo/node_modules/vscode-languageserver-protocol": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", - "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", - "dependencies": { - "vscode-jsonrpc": "8.2.0", - "vscode-languageserver-types": "3.17.5" - } - }, - "hugo/node_modules/vscode-languageserver-types": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", - "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==" - }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", @@ -241,16 +140,73 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dependencies": { - "@babel/highlight": "^7.22.5" + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/compat-data": { "version": "7.22.9", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", @@ -289,11 +245,11 @@ } }, "node_modules/@babel/generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", - "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dependencies": { - "@babel/types": "^7.22.5", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -354,20 +310,20 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" @@ -493,17 +449,17 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "engines": { "node": ">=6.9.0" } @@ -530,12 +486,12 @@ } }, "node_modules/@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -599,9 +555,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", - "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", + "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -763,32 +719,32 @@ } }, "node_modules/@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.22.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", - "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", - "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.7", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", + "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -796,23 +752,52 @@ } }, "node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@chevrotain/cst-dts-gen": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", + "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", + "dependencies": { + "@chevrotain/gast": "11.0.3", + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/@chevrotain/gast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", + "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", + "dependencies": { + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, "node_modules/@chevrotain/regexp-to-ast": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz", "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==" }, + "node_modules/@chevrotain/types": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", + "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==" + }, + "node_modules/@chevrotain/utils": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", + "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==" + }, "node_modules/@codingame/monaco-vscode-configuration-service-override": { "version": "1.83.2", "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-configuration-service-override/-/monaco-vscode-configuration-service-override-1.83.2.tgz", @@ -2121,6 +2106,30 @@ "node": ">=8" } }, + "node_modules/chevrotain": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", + "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", + "dependencies": { + "@chevrotain/cst-dts-gen": "11.0.3", + "@chevrotain/gast": "11.0.3", + "@chevrotain/regexp-to-ast": "11.0.3", + "@chevrotain/types": "11.0.3", + "@chevrotain/utils": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/chevrotain-allstar": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", + "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", + "dependencies": { + "lodash-es": "^4.17.21" + }, + "peerDependencies": { + "chevrotain": "^11.0.0" + } + }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -3964,6 +3973,21 @@ "json-buffer": "3.0.1" } }, + "node_modules/langium": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/langium/-/langium-3.0.0.tgz", + "integrity": "sha512-+Ez9EoiByeoTu/2BXmEaZ06iPNXM6thWJp02KfBO/raSMyCJ4jw7AkWWa+zBCTm0+Tw1Fj9FOxdqSskyN5nAwg==", + "dependencies": { + "chevrotain": "~11.0.3", + "chevrotain-allstar": "~0.3.0", + "vscode-languageserver": "~9.0.1", + "vscode-languageserver-textdocument": "~1.0.11", + "vscode-uri": "~3.0.8" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/langium-arithmetics-dsl": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/langium-arithmetics-dsl/-/langium-arithmetics-dsl-3.0.0.tgz", @@ -3982,35 +4006,6 @@ "vscode": "^1.67.0" } }, - "node_modules/langium-arithmetics-dsl/node_modules/@chevrotain/cst-dts-gen": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", - "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", - "dependencies": { - "@chevrotain/gast": "11.0.3", - "@chevrotain/types": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/langium-arithmetics-dsl/node_modules/@chevrotain/gast": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", - "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", - "dependencies": { - "@chevrotain/types": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/langium-arithmetics-dsl/node_modules/@chevrotain/types": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", - "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==" - }, - "node_modules/langium-arithmetics-dsl/node_modules/@chevrotain/utils": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", - "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==" - }, "node_modules/langium-arithmetics-dsl/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -4030,30 +4025,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/langium-arithmetics-dsl/node_modules/chevrotain": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", - "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", - "dependencies": { - "@chevrotain/cst-dts-gen": "11.0.3", - "@chevrotain/gast": "11.0.3", - "@chevrotain/regexp-to-ast": "11.0.3", - "@chevrotain/types": "11.0.3", - "@chevrotain/utils": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/langium-arithmetics-dsl/node_modules/chevrotain-allstar": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", - "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", - "dependencies": { - "lodash-es": "^4.17.21" - }, - "peerDependencies": { - "chevrotain": "^11.0.0" - } - }, "node_modules/langium-arithmetics-dsl/node_modules/commander": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", @@ -4062,21 +4033,6 @@ "node": ">=16" } }, - "node_modules/langium-arithmetics-dsl/node_modules/langium": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/langium/-/langium-3.0.0.tgz", - "integrity": "sha512-+Ez9EoiByeoTu/2BXmEaZ06iPNXM6thWJp02KfBO/raSMyCJ4jw7AkWWa+zBCTm0+Tw1Fj9FOxdqSskyN5nAwg==", - "dependencies": { - "chevrotain": "~11.0.3", - "chevrotain-allstar": "~0.3.0", - "vscode-languageserver": "~9.0.1", - "vscode-languageserver-textdocument": "~1.0.11", - "vscode-uri": "~3.0.8" - }, - "engines": { - "node": ">=16.0.0" - } - }, "node_modules/langium-arithmetics-dsl/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -4188,35 +4144,6 @@ "vscode": "^1.67.0" } }, - "node_modules/langium-domainmodel-dsl/node_modules/@chevrotain/cst-dts-gen": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", - "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", - "dependencies": { - "@chevrotain/gast": "11.0.3", - "@chevrotain/types": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/langium-domainmodel-dsl/node_modules/@chevrotain/gast": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", - "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", - "dependencies": { - "@chevrotain/types": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/langium-domainmodel-dsl/node_modules/@chevrotain/types": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", - "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==" - }, - "node_modules/langium-domainmodel-dsl/node_modules/@chevrotain/utils": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", - "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==" - }, "node_modules/langium-domainmodel-dsl/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -4236,30 +4163,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/langium-domainmodel-dsl/node_modules/chevrotain": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", - "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", - "dependencies": { - "@chevrotain/cst-dts-gen": "11.0.3", - "@chevrotain/gast": "11.0.3", - "@chevrotain/regexp-to-ast": "11.0.3", - "@chevrotain/types": "11.0.3", - "@chevrotain/utils": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/langium-domainmodel-dsl/node_modules/chevrotain-allstar": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", - "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", - "dependencies": { - "lodash-es": "^4.17.21" - }, - "peerDependencies": { - "chevrotain": "^11.0.0" - } - }, "node_modules/langium-domainmodel-dsl/node_modules/commander": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", @@ -4268,21 +4171,6 @@ "node": ">=16" } }, - "node_modules/langium-domainmodel-dsl/node_modules/langium": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/langium/-/langium-3.0.0.tgz", - "integrity": "sha512-+Ez9EoiByeoTu/2BXmEaZ06iPNXM6thWJp02KfBO/raSMyCJ4jw7AkWWa+zBCTm0+Tw1Fj9FOxdqSskyN5nAwg==", - "dependencies": { - "chevrotain": "~11.0.3", - "chevrotain-allstar": "~0.3.0", - "vscode-languageserver": "~9.0.1", - "vscode-languageserver-textdocument": "~1.0.11", - "vscode-uri": "~3.0.8" - }, - "engines": { - "node": ">=16.0.0" - } - }, "node_modules/langium-domainmodel-dsl/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -4388,35 +4276,6 @@ "vscode": "^1.67.0" } }, - "node_modules/langium-statemachine-dsl/node_modules/@chevrotain/cst-dts-gen": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", - "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", - "dependencies": { - "@chevrotain/gast": "11.0.3", - "@chevrotain/types": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/langium-statemachine-dsl/node_modules/@chevrotain/gast": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", - "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", - "dependencies": { - "@chevrotain/types": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/langium-statemachine-dsl/node_modules/@chevrotain/types": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", - "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==" - }, - "node_modules/langium-statemachine-dsl/node_modules/@chevrotain/utils": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", - "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==" - }, "node_modules/langium-statemachine-dsl/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -4436,30 +4295,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/langium-statemachine-dsl/node_modules/chevrotain": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", - "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", - "dependencies": { - "@chevrotain/cst-dts-gen": "11.0.3", - "@chevrotain/gast": "11.0.3", - "@chevrotain/regexp-to-ast": "11.0.3", - "@chevrotain/types": "11.0.3", - "@chevrotain/utils": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/langium-statemachine-dsl/node_modules/chevrotain-allstar": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", - "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", - "dependencies": { - "lodash-es": "^4.17.21" - }, - "peerDependencies": { - "chevrotain": "^11.0.0" - } - }, "node_modules/langium-statemachine-dsl/node_modules/commander": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", @@ -4468,21 +4303,6 @@ "node": ">=16" } }, - "node_modules/langium-statemachine-dsl/node_modules/langium": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/langium/-/langium-3.0.0.tgz", - "integrity": "sha512-+Ez9EoiByeoTu/2BXmEaZ06iPNXM6thWJp02KfBO/raSMyCJ4jw7AkWWa+zBCTm0+Tw1Fj9FOxdqSskyN5nAwg==", - "dependencies": { - "chevrotain": "~11.0.3", - "chevrotain-allstar": "~0.3.0", - "vscode-languageserver": "~9.0.1", - "vscode-languageserver-textdocument": "~1.0.11", - "vscode-uri": "~3.0.8" - }, - "engines": { - "node": ">=16.0.0" - } - }, "node_modules/langium-statemachine-dsl/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -4582,6 +4402,39 @@ "resolved": "tailwind", "link": true }, + "node_modules/langium/node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/langium/node_modules/vscode-languageserver": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/langium/node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/langium/node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==" + }, "node_modules/lilconfig": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", @@ -5017,9 +4870,9 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, "funding": [ { @@ -5292,9 +5145,9 @@ } }, "node_modules/postcss": { - "version": "8.4.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz", - "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==", + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", "dev": true, "funding": [ { @@ -5311,7 +5164,7 @@ } ], "dependencies": { - "nanoid": "^3.3.6", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -6197,9 +6050,9 @@ } }, "node_modules/vite": { - "version": "4.4.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.11.tgz", - "integrity": "sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==", + "version": "4.4.12", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.12.tgz", + "integrity": "sha512-KtPlUbWfxzGVul8Nut8Gw2Qe8sBzWY+8QVc5SL8iRFnpnrcoCaNlzO40c1R6hPmcdTwIPEDkq0Y9+27a5tVbdQ==", "dev": true, "dependencies": { "esbuild": "^0.18.10", From ad2c78d1eced1f12b112d8f54f13a0f25c0256e7 Mon Sep 17 00:00:00 2001 From: Markus Rudolph Date: Mon, 11 Mar 2024 11:57:04 +0100 Subject: [PATCH 03/14] Rename Babel config --- hugo/{babel.config.js => babel.config.cjs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename hugo/{babel.config.js => babel.config.cjs} (100%) diff --git a/hugo/babel.config.js b/hugo/babel.config.cjs similarity index 100% rename from hugo/babel.config.js rename to hugo/babel.config.cjs From 52e034bd85146d62d988f23c3c786bcb897c3fa5 Mon Sep 17 00:00:00 2001 From: Markus Rudolph Date: Tue, 19 Mar 2024 09:50:42 +0100 Subject: [PATCH 04/14] Fix versions of Langium-dependent packages --- core/package.json | 4 +- .../scripts/arithmetics/arithmetics.tsx | 1 - .../scripts/domainmodel/domainmodel.tsx | 1 - hugo/assets/scripts/minilogo/minilogo.tsx | 3 +- hugo/assets/scripts/sql/language-server.ts | 9 +- hugo/assets/scripts/sql/ui.tsx | 25 +- .../scripts/statemachine/statemachine.tsx | 1 - hugo/package.json | 6 +- hugo/tsconfig.json | 15 + package-lock.json | 795 +++++++++++------- 10 files changed, 532 insertions(+), 328 deletions(-) create mode 100644 hugo/tsconfig.json diff --git a/core/package.json b/core/package.json index bcc0ab3a..7dad5219 100644 --- a/core/package.json +++ b/core/package.json @@ -5,7 +5,7 @@ "description": "Bundling complex sources for hugo", "author": "TypeFox", "license": "MIT", - "private": true, + "private": true, "main": "./dist/index.js", "module": "./dist/index.js", "exports": { @@ -46,7 +46,7 @@ "@types/react-dom": "~18.2.13", "@types/vscode": "~1.83.0", "typescript": "~5.2.2", - "vite": "~4.4.11" + "vite": "^4.5.2" }, "dependencies": { "@codingame/monaco-vscode-keybindings-service-override": "~1.83.2", diff --git a/hugo/assets/scripts/arithmetics/arithmetics.tsx b/hugo/assets/scripts/arithmetics/arithmetics.tsx index 84b29401..a3fad17a 100644 --- a/hugo/assets/scripts/arithmetics/arithmetics.tsx +++ b/hugo/assets/scripts/arithmetics/arithmetics.tsx @@ -192,7 +192,6 @@ class App extends React.Component<{}, AppState> { userConfig = createUserConfig({ languageId: 'arithmetics', code: examples[0], - htmlElement: document.getElementById('root')!, worker: '../../showcase/libs/worker/arithmeticsServerWorker.js', monarchGrammar: syntaxHighlighting }); diff --git a/hugo/assets/scripts/domainmodel/domainmodel.tsx b/hugo/assets/scripts/domainmodel/domainmodel.tsx index 92ed77a2..1f3af9ff 100644 --- a/hugo/assets/scripts/domainmodel/domainmodel.tsx +++ b/hugo/assets/scripts/domainmodel/domainmodel.tsx @@ -144,7 +144,6 @@ class App extends React.Component<{}, AppState> { userConfig = createUserConfig({ languageId: 'domainmodel', code: example, - htmlElement: document.getElementById('root')!, worker: '../../showcase/libs/worker/domainmodelServerWorker.js', monarchGrammar: syntaxHighlighting }); diff --git a/hugo/assets/scripts/minilogo/minilogo.tsx b/hugo/assets/scripts/minilogo/minilogo.tsx index c37802a1..605933e2 100644 --- a/hugo/assets/scripts/minilogo/minilogo.tsx +++ b/hugo/assets/scripts/minilogo/minilogo.tsx @@ -2,7 +2,7 @@ import { addMonacoStyles, createUserConfig, MonacoEditorReactComp, UserConfig } import { buildWorkerDefinition } from "monaco-editor-workers"; import React, { createRef } from "react"; import { createRoot } from "react-dom/client"; -import { Diagnostic, DocumentChangeResponse, LangiumAST } from "../langium-utils/langium-ast"; +import { Diagnostic, DocumentChangeResponse } from "langium-ast-helper"; import { ColorArgs, Command, MoveArgs, examples, syntaxHighlighting } from "./minilogo-tools"; import { compressToEncodedURIComponent, decompressFromEncodedURIComponent } from "lz-string"; @@ -351,7 +351,6 @@ let code = url.searchParams.get("code"); userConfig = createUserConfig({ languageId: 'minilogo', code: code ? decompressFromEncodedURIComponent(code) : examples[0].code, - htmlElement: document.getElementById('root')!, worker: '../../showcase/libs/worker/minilogoServerWorker.js', monarchGrammar: syntaxHighlighting }); diff --git a/hugo/assets/scripts/sql/language-server.ts b/hugo/assets/scripts/sql/language-server.ts index 7c4a8381..e8f558b6 100644 --- a/hugo/assets/scripts/sql/language-server.ts +++ b/hugo/assets/scripts/sql/language-server.ts @@ -4,15 +4,14 @@ * terms of the MIT License, which is available in the project root. ******************************************************************************/ -import { startLanguageServer, EmptyFileSystem } from "langium"; +import { EmptyFileSystem } from "langium"; +import { startLanguageServer } from "langium/lsp"; import { createConnection, BrowserMessageReader, BrowserMessageWriter, -} from "vscode-languageserver/browser"; -import { createSqlServices } from "langium-sql"; -import { MySqlDialectTypes } from "langium-sql/lib/dialects/mysql/data-types"; -import { DialectTypes } from "langium-sql/lib/sql-data-types"; +} from "vscode-languageserver/browser.js"; +import { DialectTypes, MySqlDialectTypes, createSqlServices } from "langium-sql"; /* browser specific setup code */ const messageReader = new BrowserMessageReader(self); diff --git a/hugo/assets/scripts/sql/ui.tsx b/hugo/assets/scripts/sql/ui.tsx index 8cdacf04..2f9c56a8 100644 --- a/hugo/assets/scripts/sql/ui.tsx +++ b/hugo/assets/scripts/sql/ui.tsx @@ -2,13 +2,11 @@ import { addMonacoStyles, createUserConfig, MonacoEditorReactComp, UserConfig } import { buildWorkerDefinition } from "monaco-editor-workers"; import React from "react"; import { createRoot } from "react-dom/client"; -import { - DocumentChangeResponse, -} from "../langium-utils/langium-ast"; import { defaultText, syntaxHighlighting, } from "./constants"; +import { DocumentChangeResponse } from "langium-ast-helper"; addMonacoStyles('monaco-styles-helper'); @@ -88,17 +86,15 @@ class App extends React.Component<{}> { is a Monaco editor driven by our SQL language server. The current setup mimics MySQL.

Features

-

-

    -
  • Schema-driven: Add a set of table definitions to spread out the world for your SELECT queries. The table definitions can be located in a different file of the same workspace. You can keep definitions and queries separated.
  • -
  • Code completion: Press Ctrl + Space keys to trigger the completion directly. You will get suggestions for the current context.
  • -
  • Syntax highlighting: to distinguish what are keywords, identifiers, numeric literals and for a better perception of the SQL syntax.
  • -
  • Symbol search: Use Cmd or Ctrl + mouse click on a column name to find the definition of it or explore the places where a column is used.
  • -
  • Fast feedback about contextual correctness: Whether referenced columns exist or types on certain operators are matching.
  • -
  • Super-set approach: Any piece of any dialect that is missing can be added to the main grammar and be protected from other dialects using validations.
  • -
  • Highly customizable: Any behavior or aspect that is missing for your specific use case can be easily overwritten.
  • -
-

+
    +
  • Schema-driven: Add a set of table definitions to spread out the world for your SELECT queries. The table definitions can be located in a different file of the same workspace. You can keep definitions and queries separated.
  • +
  • Code completion: Press Ctrl + Space keys to trigger the completion directly. You will get suggestions for the current context.
  • +
  • Syntax highlighting: to distinguish what are keywords, identifiers, numeric literals and for a better perception of the SQL syntax.
  • +
  • Symbol search: Use Cmd or Ctrl + mouse click on a column name to find the definition of it or explore the places where a column is used.
  • +
  • Fast feedback about contextual correctness: Whether referenced columns exist or types on certain operators are matching.
  • +
  • Super-set approach: Any piece of any dialect that is missing can be added to the main grammar and be protected from other dialects using validations.
  • +
  • Highly customizable: Any behavior or aspect that is missing for your specific use case can be easily overwritten.
  • +

About the given SQL document

The document contains the database schema of an airport. It is a copy of the Flughafen DB by Stefan Proell, Eva Zangerle, Wolfgang Gassler @@ -115,7 +111,6 @@ class App extends React.Component<{}> { userConfig = createUserConfig({ languageId: 'sql', code: defaultText, - htmlElement: document.getElementById('root')!, worker: '../../showcase/libs/worker/sqlServerWorker.js', monarchGrammar: syntaxHighlighting }); diff --git a/hugo/assets/scripts/statemachine/statemachine.tsx b/hugo/assets/scripts/statemachine/statemachine.tsx index 75ee5284..568ba52e 100644 --- a/hugo/assets/scripts/statemachine/statemachine.tsx +++ b/hugo/assets/scripts/statemachine/statemachine.tsx @@ -291,7 +291,6 @@ class StateMachineComponent extends React.Component<{ const langiumGlobalConfig: UserConfig = createUserConfig({ languageId: 'statemachine', code: defaultText, - htmlElement: document.getElementById('root')!, textmateGrammar: statemachineGrammar, worker: '../../showcase/libs/worker/statemachineServerWorker.js' }); diff --git a/hugo/package.json b/hugo/package.json index d08eb5a1..cbcec977 100644 --- a/hugo/package.json +++ b/hugo/package.json @@ -39,17 +39,19 @@ "clsx": "^1.2.1", "d3": "^7.8.5", "hugo-extended": "~0.89.4", - "langium": "^3.0.0", + "langium": "~3.0.0", "langium-arithmetics-dsl": "^3.0.0", "langium-ast-helper": "0.1.2", "langium-domainmodel-dsl": "^3.0.0", + "langium-minilogo": "^3.0.0", + "langium-sql": "^0.3.1", "langium-statemachine-dsl": "^3.0.0", "langium-website-core": "~1.0.0", "lz-string": "^1.4.4", "monaco-editor-workers": "~0.44.0", "react": "~18.2.0", "react-dom": "~18.2.0", - "vscode-languageserver": "~8.0.2" + "vscode-languageserver": "~9.0.1" }, "volta": { "node": "18.18.1", diff --git a/hugo/tsconfig.json b/hugo/tsconfig.json new file mode 100644 index 00000000..f85b0601 --- /dev/null +++ b/hugo/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "noImplicitAny": true, + "target": "ES2022", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "rootDir": ".", + "outDir": "dist", + "declaration": true, + "declarationDir": "dist" + }, + "include": [ + "**/*.ts", + ] +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 3dd569d2..cf4334d5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,7 +38,131 @@ "@types/react-dom": "~18.2.13", "@types/vscode": "~1.83.0", "typescript": "~5.2.2", - "vite": "~4.4.11" + "vite": "^4.5.2" + } + }, + "core/node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "core/node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "core/node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "core/node_modules/vite": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz", + "integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } } }, "foundation": { @@ -78,17 +202,19 @@ "clsx": "^1.2.1", "d3": "^7.8.5", "hugo-extended": "~0.89.4", - "langium": "^3.0.0", + "langium": "~3.0.0", "langium-arithmetics-dsl": "^3.0.0", "langium-ast-helper": "0.1.2", "langium-domainmodel-dsl": "^3.0.0", + "langium-minilogo": "^3.0.0", + "langium-sql": "^0.3.1", "langium-statemachine-dsl": "^3.0.0", "langium-website-core": "~1.0.0", "lz-string": "^1.4.4", "monaco-editor-workers": "~0.44.0", "react": "~18.2.0", "react-dom": "~18.2.0", - "vscode-languageserver": "~8.0.2" + "vscode-languageserver": "~9.0.1" }, "devDependencies": { "@rollup/plugin-inject": "~5.0.4", @@ -99,6 +225,39 @@ "esbuild": "~0.19.4" } }, + "hugo/node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "engines": { + "node": ">=14.0.0" + } + }, + "hugo/node_modules/vscode-languageserver": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "hugo/node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "hugo/node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==" + }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", @@ -1271,6 +1430,19 @@ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, + "node_modules/@lit-labs/ssr-dom-shim": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz", + "integrity": "sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==" + }, + "node_modules/@lit/reactive-element": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz", + "integrity": "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.0.0" + } + }, "node_modules/@nicolo-ribaudo/chokidar-2": { "version": "2.1.8-no-fsevents.3", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", @@ -1406,6 +1578,11 @@ "@types/responselike": "^1.0.0" } }, + "node_modules/@types/css-font-loading-module": { + "version": "0.0.13", + "resolved": "https://registry.npmjs.org/@types/css-font-loading-module/-/css-font-loading-module-0.0.13.tgz", + "integrity": "sha512-EnmFmshMT9rD3yohKkrbMMrRULUVkZbUAJFrFFO12mxiFWQvRKDQYsK1CB8tSUYZQ+uUui5RBvENNHqhL9xqgQ==" + }, "node_modules/@types/d3": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.0.tgz", @@ -1718,6 +1895,11 @@ "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", "dev": true }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" + }, "node_modules/@types/vscode": { "version": "1.83.0", "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.83.0.tgz", @@ -2216,6 +2398,14 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", @@ -4006,14 +4196,6 @@ "vscode": "^1.67.0" } }, - "node_modules/langium-arithmetics-dsl/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/langium-arithmetics-dsl/node_modules/chalk": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", @@ -4033,42 +4215,6 @@ "node": ">=16" } }, - "node_modules/langium-arithmetics-dsl/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/langium-arithmetics-dsl/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/langium-arithmetics-dsl/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/langium-arithmetics-dsl/node_modules/vscode-jsonrpc": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", @@ -4077,19 +4223,6 @@ "node": ">=14.0.0" } }, - "node_modules/langium-arithmetics-dsl/node_modules/vscode-languageclient": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-9.0.1.tgz", - "integrity": "sha512-JZiimVdvimEuHh5olxhxkht09m3JzUGwggb5eRUkzzJhZ2KjCN0nh55VfiED9oez9DyF8/fz1g1iBV3h+0Z2EA==", - "dependencies": { - "minimatch": "^5.1.0", - "semver": "^7.3.7", - "vscode-languageserver-protocol": "3.17.5" - }, - "engines": { - "vscode": "^1.82.0" - } - }, "node_modules/langium-arithmetics-dsl/node_modules/vscode-languageserver": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", @@ -4115,11 +4248,6 @@ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==" }, - "node_modules/langium-arithmetics-dsl/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/langium-ast-helper": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/langium-ast-helper/-/langium-ast-helper-0.1.2.tgz", @@ -4144,14 +4272,6 @@ "vscode": "^1.67.0" } }, - "node_modules/langium-domainmodel-dsl/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/langium-domainmodel-dsl/node_modules/chalk": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", @@ -4171,43 +4291,68 @@ "node": ">=16" } }, - "node_modules/langium-domainmodel-dsl/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, + "node_modules/langium-domainmodel-dsl/node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", "engines": { - "node": ">=10" + "node": ">=14.0.0" } }, - "node_modules/langium-domainmodel-dsl/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/langium-domainmodel-dsl/node_modules/vscode-languageserver": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", "dependencies": { - "brace-expansion": "^2.0.1" + "vscode-languageserver-protocol": "3.17.5" }, - "engines": { - "node": ">=10" + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" } }, - "node_modules/langium-domainmodel-dsl/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "node_modules/langium-domainmodel-dsl/node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/langium-domainmodel-dsl/node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==" + }, + "node_modules/langium-minilogo": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/langium-minilogo/-/langium-minilogo-3.0.0.tgz", + "integrity": "sha512-PBVw/xFsTSaw7fVngcZZ344Cn2X9O+yXxga7RUQl7AyEUC8VxxgJEy8lAbjrsm4LjiB9Z76gXlCGEO0yggxjQQ==", + "dependencies": { + "colors": "^1.4.0", + "commander": "^8.0.0", + "langium": "^3.0.0", + "monaco-editor-comp": "~1.6.0", + "vscode-languageclient": "~9.0.1", + "vscode-languageserver": "~9.0.1" + }, "bin": { - "semver": "bin/semver.js" + "minilogo-cli": "bin/minilogo.js" }, "engines": { - "node": ">=10" + "node": ">=16", + "vscode": "^1.56.0" } }, - "node_modules/langium-domainmodel-dsl/node_modules/vscode-jsonrpc": { + "node_modules/langium-minilogo/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/langium-minilogo/node_modules/vscode-jsonrpc": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", @@ -4215,20 +4360,7 @@ "node": ">=14.0.0" } }, - "node_modules/langium-domainmodel-dsl/node_modules/vscode-languageclient": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-9.0.1.tgz", - "integrity": "sha512-JZiimVdvimEuHh5olxhxkht09m3JzUGwggb5eRUkzzJhZ2KjCN0nh55VfiED9oez9DyF8/fz1g1iBV3h+0Z2EA==", - "dependencies": { - "minimatch": "^5.1.0", - "semver": "^7.3.7", - "vscode-languageserver-protocol": "3.17.5" - }, - "engines": { - "vscode": "^1.82.0" - } - }, - "node_modules/langium-domainmodel-dsl/node_modules/vscode-languageserver": { + "node_modules/langium-minilogo/node_modules/vscode-languageserver": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", @@ -4239,7 +4371,7 @@ "installServerIntoExtension": "bin/installServerIntoExtension" } }, - "node_modules/langium-domainmodel-dsl/node_modules/vscode-languageserver-protocol": { + "node_modules/langium-minilogo/node_modules/vscode-languageserver-protocol": { "version": "3.17.5", "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", @@ -4248,15 +4380,19 @@ "vscode-languageserver-types": "3.17.5" } }, - "node_modules/langium-domainmodel-dsl/node_modules/vscode-languageserver-types": { + "node_modules/langium-minilogo/node_modules/vscode-languageserver-types": { "version": "3.17.5", "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==" }, - "node_modules/langium-domainmodel-dsl/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "node_modules/langium-sql": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/langium-sql/-/langium-sql-0.3.1.tgz", + "integrity": "sha512-KCr6rJsVRXjHrh6+G9RX3LiyCWRnZ925MH9vlit9XNx1qtEXLAhNqynF+1yuHXTkdHNNLfBoRiVN7OyWgm/9yw==", + "dependencies": { + "langium": "^3.0.0", + "lodash": "^4.17.21" + } }, "node_modules/langium-statemachine-dsl": { "version": "3.0.0", @@ -4276,14 +4412,6 @@ "vscode": "^1.67.0" } }, - "node_modules/langium-statemachine-dsl/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/langium-statemachine-dsl/node_modules/chalk": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", @@ -4303,42 +4431,6 @@ "node": ">=16" } }, - "node_modules/langium-statemachine-dsl/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/langium-statemachine-dsl/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/langium-statemachine-dsl/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/langium-statemachine-dsl/node_modules/vscode-jsonrpc": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", @@ -4347,19 +4439,6 @@ "node": ">=14.0.0" } }, - "node_modules/langium-statemachine-dsl/node_modules/vscode-languageclient": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-9.0.1.tgz", - "integrity": "sha512-JZiimVdvimEuHh5olxhxkht09m3JzUGwggb5eRUkzzJhZ2KjCN0nh55VfiED9oez9DyF8/fz1g1iBV3h+0Z2EA==", - "dependencies": { - "minimatch": "^5.1.0", - "semver": "^7.3.7", - "vscode-languageserver-protocol": "3.17.5" - }, - "engines": { - "vscode": "^1.82.0" - } - }, "node_modules/langium-statemachine-dsl/node_modules/vscode-languageserver": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", @@ -4385,11 +4464,6 @@ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==" }, - "node_modules/langium-statemachine-dsl/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/langium-website-core": { "resolved": "core", "link": true @@ -4449,6 +4523,34 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, + "node_modules/lit": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/lit/-/lit-2.5.0.tgz", + "integrity": "sha512-DtnUP6vR3l4Q8nRPPNBD+UxbAhwJPeky+OVbi3pdgMqm0g57xFSl1Sj64D1rIB+nVNdiVVg8YxB0hqKjvdadZA==", + "dependencies": { + "@lit/reactive-element": "^1.5.0", + "lit-element": "^3.2.0", + "lit-html": "^2.5.0" + } + }, + "node_modules/lit-element": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.3.tgz", + "integrity": "sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.1.0", + "@lit/reactive-element": "^1.3.0", + "lit-html": "^2.8.0" + } + }, + "node_modules/lit-html": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.8.0.tgz", + "integrity": "sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, "node_modules/locate-path": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", @@ -4627,6 +4729,141 @@ "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.44.0.tgz", "integrity": "sha512-5SmjNStN6bSuSE5WPT2ZV+iYn1/yI9sd4Igtk23ChvqB7kDk9lZbB9F5frsuvpB+2njdIeGGFf2G4gbE6rCC9Q==" }, + "node_modules/monaco-editor-comp": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/monaco-editor-comp/-/monaco-editor-comp-1.6.0.tgz", + "integrity": "sha512-LGOubZ2YdyiwvoJGU732wTTpQ5LqU/Mx/WiN4tDVTWrAlDUyLPMqMLiow5erA5Rc7b6i+whNhyq9M5/g9CGOhw==", + "dependencies": { + "lit": "~2.5.0", + "monaco-editor-wrapper": "1.6.0" + } + }, + "node_modules/monaco-editor-comp/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/monaco-editor-comp/node_modules/monaco-editor": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.34.1.tgz", + "integrity": "sha512-FKc80TyiMaruhJKKPz5SpJPIjL+dflGvz4CpuThaPMc94AyN7SeC9HQ8hrvaxX7EyHdJcUY5i4D0gNyJj1vSZQ==", + "peer": true + }, + "node_modules/monaco-editor-comp/node_modules/monaco-editor-wrapper": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/monaco-editor-wrapper/-/monaco-editor-wrapper-1.6.0.tgz", + "integrity": "sha512-ETGAicvsGER2QUl0aUhm0K3gXPiQnidrMXkUEzdipTtkNKfoCt3+IgxxoUY1oYbaPNEyN7Vj9Tp5NoTMYxd47Q==", + "dependencies": { + "@types/css-font-loading-module": "~0.0.7", + "monaco-languageclient": "4.0.3", + "normalize-url": "~8.0.0", + "vscode-languageserver-protocol": "3.17.2", + "vscode-ws-jsonrpc": "2.0.1" + } + }, + "node_modules/monaco-editor-comp/node_modules/monaco-languageclient": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/monaco-languageclient/-/monaco-languageclient-4.0.3.tgz", + "integrity": "sha512-1mGIUb5PFRknITBhNxgH0SnQy1/jntt9oo0cQpOl3HdhYEL/CYK2UrsZZX7Udqmz1PXKyRIzQ3tZ7dJn4mzWtA==", + "dependencies": { + "vscode": "npm:@codingame/monaco-vscode-api@1.69.13", + "vscode-jsonrpc": "8.0.2", + "vscode-languageclient": "8.0.2" + }, + "engines": { + "node": ">=16.11.0", + "npm": ">=8.0.0" + }, + "peerDependencies": { + "vscode": ">= npm:@codingame/monaco-vscode-api@1.69.0 < npm:@codingame/monaco-vscode-api@1.70.0" + } + }, + "node_modules/monaco-editor-comp/node_modules/normalize-url": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/monaco-editor-comp/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/monaco-editor-comp/node_modules/vscode": { + "name": "@codingame/monaco-vscode-api", + "version": "1.69.13", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-api/-/monaco-vscode-api-1.69.13.tgz", + "integrity": "sha512-7+dQbQ5O8mQhFyUcAiiJkCotNjZUzRxh4NMBKc/BSIFi0jG47bay+jP/+ngsmxHBapjs/xUAPaKSGNnf9WBmAA==", + "peerDependencies": { + "monaco-editor": "~0.34.0", + "vscode-oniguruma": "^1.6.2", + "vscode-textmate": "^7.0.1" + } + }, + "node_modules/monaco-editor-comp/node_modules/vscode-jsonrpc": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.0.2.tgz", + "integrity": "sha512-RY7HwI/ydoC1Wwg4gJ3y6LpU9FJRZAUnTYMXthqhFXXu77ErDd/xkREpGuk4MyYkk4a+XDWAMqe0S3KkelYQEQ==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/monaco-editor-comp/node_modules/vscode-languageclient": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.0.2.tgz", + "integrity": "sha512-lHlthJtphG9gibGb/y72CKqQUxwPsMXijJVpHEC2bvbFqxmkj9LwQ3aGU9dwjBLqsX1S4KjShYppLvg1UJDF/Q==", + "dependencies": { + "minimatch": "^3.0.4", + "semver": "^7.3.5", + "vscode-languageserver-protocol": "3.17.2" + }, + "engines": { + "vscode": "^1.67.0" + } + }, + "node_modules/monaco-editor-comp/node_modules/vscode-textmate": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-7.0.4.tgz", + "integrity": "sha512-9hJp0xL7HW1Q5OgGe03NACo7yiCTMEk3WU/rtKXUbncLtdg6rVVNJnHwD88UhbIYU2KoxY0Dih0x+kIsmUKn2A==", + "peer": true + }, + "node_modules/monaco-editor-comp/node_modules/vscode-ws-jsonrpc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/vscode-ws-jsonrpc/-/vscode-ws-jsonrpc-2.0.1.tgz", + "integrity": "sha512-ne5DO8/qe8tHt1U4LafLiYS832Yd4OltkP4+YZVOQwqGEU5nwLwZowUBqqEWt8sOZ0eLdCLV9luotGC2aUQ+LA==", + "dependencies": { + "vscode-jsonrpc": "8.0.2" + }, + "engines": { + "node": ">=16.11.0", + "npm": ">=8.0.0" + } + }, + "node_modules/monaco-editor-comp/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/monaco-editor-workers": { "version": "0.44.0", "resolved": "https://registry.npmjs.org/monaco-editor-workers/-/monaco-editor-workers-0.44.0.tgz", @@ -6049,150 +6286,110 @@ "spdx-expression-parse": "^3.0.0" } }, - "node_modules/vite": { - "version": "4.4.12", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.12.tgz", - "integrity": "sha512-KtPlUbWfxzGVul8Nut8Gw2Qe8sBzWY+8QVc5SL8iRFnpnrcoCaNlzO40c1R6hPmcdTwIPEDkq0Y9+27a5tVbdQ==", - "dev": true, + "node_modules/vscode": { + "name": "@codingame/monaco-vscode-api", + "version": "1.83.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-api/-/monaco-vscode-api-1.83.2.tgz", + "integrity": "sha512-wTdkrnMZV85jyZQm9PZW98JMTwhzuETALAtTiMVX9Lvw/tdrbRQC5lBZjjEytHGxhSC141rd5JcwPrDkuimZGA==", "dependencies": { - "esbuild": "^0.18.10", - "postcss": "^8.4.27", - "rollup": "^3.27.1" + "monaco-editor": "0.44.0" }, "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } + "monaco-treemending": "monaco-treemending.js" } }, - "node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], + "node_modules/vscode-jsonrpc": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz", + "integrity": "sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==", "engines": { - "node": ">=12" + "node": ">=14.0.0" } }, - "node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "node_modules/vscode-languageclient": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-9.0.1.tgz", + "integrity": "sha512-JZiimVdvimEuHh5olxhxkht09m3JzUGwggb5eRUkzzJhZ2KjCN0nh55VfiED9oez9DyF8/fz1g1iBV3h+0Z2EA==", + "dependencies": { + "minimatch": "^5.1.0", + "semver": "^7.3.7", + "vscode-languageserver-protocol": "3.17.5" + }, "engines": { - "node": ">=12" + "vscode": "^1.82.0" } }, - "node_modules/vite/node_modules/esbuild": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", - "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" + "node_modules/vscode-languageclient/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/vscode-languageclient/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" + } + }, + "node_modules/vscode-languageclient/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" + "engines": { + "node": ">=10" } }, - "node_modules/vscode": { - "name": "@codingame/monaco-vscode-api", - "version": "1.83.2", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-api/-/monaco-vscode-api-1.83.2.tgz", - "integrity": "sha512-wTdkrnMZV85jyZQm9PZW98JMTwhzuETALAtTiMVX9Lvw/tdrbRQC5lBZjjEytHGxhSC141rd5JcwPrDkuimZGA==", + "node_modules/vscode-languageclient/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { - "monaco-editor": "0.44.0" + "lru-cache": "^6.0.0" }, "bin": { - "monaco-treemending": "monaco-treemending.js" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/vscode-jsonrpc": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz", - "integrity": "sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==", + "node_modules/vscode-languageclient/node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", "engines": { "node": ">=14.0.0" } }, + "node_modules/vscode-languageclient/node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/vscode-languageclient/node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==" + }, + "node_modules/vscode-languageclient/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/vscode-languageserver": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-8.0.2.tgz", From 2512ed548a8264b78ae3f0f83b6ad26d5f982664 Mon Sep 17 00:00:00 2001 From: Markus Rudolph Date: Tue, 19 Mar 2024 11:55:22 +0100 Subject: [PATCH 05/14] Fixing SQL showcase --- hugo/assets/scripts/sql/constants.ts | 135 -------------------- hugo/assets/scripts/sql/sql.tmLanguage.json | 71 ++++++++++ hugo/assets/scripts/sql/ui.tsx | 4 +- hugo/package.json | 2 +- hugo/sql.esbuild.mjs | 8 ++ package-lock.json | 9 +- 6 files changed, 88 insertions(+), 141 deletions(-) create mode 100644 hugo/assets/scripts/sql/sql.tmLanguage.json create mode 100644 hugo/sql.esbuild.mjs diff --git a/hugo/assets/scripts/sql/constants.ts b/hugo/assets/scripts/sql/constants.ts index 5d237a09..b1577475 100644 --- a/hugo/assets/scripts/sql/constants.ts +++ b/hugo/assets/scripts/sql/constants.ts @@ -1,138 +1,3 @@ -import { monaco } from "langium-website-core/bundle"; - -export const syntaxHighlighting: monaco.languages.IMonarchLanguage = { - tokenizer: { - initial: [ - { regex: /x\'[A-Fa-f0-9]+\'/, action: { token: "string" } }, - { regex: /"(\\.|[^"\\])*"|'(\\.|[^'\\])*'/, action: { token: "string" } }, - { regex: /\`(\\.|\\\\|[^`\\])*\`/, action: { token: "string" } }, - { - regex: /[_a-zA-Z][\w_]*/, - action: { - cases: { - "@keywords": { token: "keyword" }, - "@default": { token: "ID" }, - }, - }, - }, - { regex: /\d+((\.\d+)?([eE][\-+]?\d+)?)?/, action: { token: "number" } }, - { include: "@whitespace" }, - { - regex: /@symbols/, - action: { - cases: { - "@operators": { token: "operator" }, - "@default": { token: "" }, - }, - }, - }, - ], - whitespace: [ - { regex: /\s+/, action: { token: "white" } }, - { regex: /\/\*/, action: { token: "comment", next: "@comment" } }, - { regex: /\-\-[^\n\r]*/, action: { token: "comment" } }, - { regex: /\/\/[^\n\r]*/, action: { token: "comment" } }, - ], - comment: [ - { regex: /[^\/\*]+/, action: { token: "comment" } }, - { regex: /\*\//, action: { token: "comment", next: "@pop" } }, - { regex: /[\/\*]/, action: { token: "comment" } }, - ], - }, - keywords: [ - "ALL", - "AND", - "AS", - "ASC", - "BETWEEN", - "BY", - "CASCADE", - "CAST", - "CATALOG", - "CONSTRAINT", - "CREATE", - "CURRENT", - "DATABASE", - "DELETE", - "DESC", - "DISTINCT", - "EXCEPT", - "FALSE", - "FETCH", - "FIRST", - "FOLLOWING", - "FOREIGN", - "FROM", - "FUNCTION", - "GROUP", - "HAVING", - "IN", - "INDEX", - "INTERSECT", - "IS", - "JOIN", - "KEY", - "LEFT", - "LIKE", - "LIMIT", - "MINUS", - "NEXT", - "NOT", - "NULL", - "OFFSET", - "ON", - "ONLY", - "OR", - "ORDER", - "OVER", - "PARTITION", - "PERCENT", - "PRECEDING", - "PRIMARY", - "RANGE", - "RECURSIVE", - "REFERENCES", - "REPLACE", - "RIGHT", - "ROW", - "ROWS", - "SCHEMA", - "SELECT", - "TABLE", - "TIES", - "TOP", - "TRUE", - "UNBOUNDED", - "UNION", - "UNIQUE", - "USING", - "WHERE", - "WITH", - ], - symbols: /%|\(|\)|\*|\+|,|\-|\.|\/|::|::\$|::%|;|<|<=|<>|=|>|>=|\|\|/, - - operators: [ - "%", - "*", - "+", - ",", - "-", - ".", - "/", - "::", - "::$", - "::%", - ";", - "<", - "<=", - "<>", - "=", - ">", - ">=", - "||", - ], -}; - export const defaultText = `SELECT p.firstname, p.lastname FROM passenger p diff --git a/hugo/assets/scripts/sql/sql.tmLanguage.json b/hugo/assets/scripts/sql/sql.tmLanguage.json new file mode 100644 index 00000000..3662d7ae --- /dev/null +++ b/hugo/assets/scripts/sql/sql.tmLanguage.json @@ -0,0 +1,71 @@ +{ + "name": "sql", + "scopeName": "source.sql", + "fileTypes": [ + ".sql" + ], + "patterns": [ + { + "include": "#comments" + }, + { + "name": "keyword.control.sql", + "match": "\\b([aA][lL][lL]|[aA][nN][dD]|[aA][sS]|[aA][sS][cC]|[bB][eE][tT][wW][eE][eE][nN]|[bB][yY]|[cC][aA][sS][cC][aA][dD][eE]|[cC][aA][sS][tT]|[cC][aA][tT][aA][lL][oO][gG]|[cC][oO][nN][sS][tT][rR][aA][iI][nN][tT]|[cC][rR][eE][aA][tT][eE]|[cC][uU][rR][rR][eE][nN][tT]|[dD][aA][tT][aA][bB][aA][sS][eE]|[dD][eE][lL][eE][tT][eE]|[dD][eE][sS][cC]|[dD][iI][sS][tT][iI][nN][cC][tT]|[eE][xX][cC][eE][pP][tT]|[fF][aA][lL][sS][eE]|[fF][eE][tT][cC][hH]|[fF][iI][rR][sS][tT]|[fF][oO][lL][lL][oO][wW][iI][nN][gG]|[fF][oO][rR][eE][iI][gG][nN]|[fF][rR][oO][mM]|[fF][uU][nN][cC][tT][iI][oO][nN]|[gG][rR][oO][uU][pP]|[hH][aA][vV][iI][nN][gG]|[iI][nN]|[iI][nN][dD][eE][xX]|[iI][nN][tT][eE][rR][sS][eE][cC][tT]|[iI][sS]|[jJ][oO][iI][nN]|[kK][eE][yY]|[lL][eE][fF][tT]|[lL][iI][kK][eE]|[lL][iI][mM][iI][tT]|[mM][iI][nN][uU][sS]|[nN][eE][xX][tT]|[nN][oO][tT]|[nN][uU][lL][lL]|[oO][fF][fF][sS][eE][tT]|[oO][nN]|[oO][nN][lL][yY]|[oO][rR]|[oO][rR][dD][eE][rR]|[oO][vV][eE][rR]|[pP][aA][rR][tT][iI][tT][iI][oO][nN]|[pP][eE][rR][cC][eE][nN][tT]|[pP][rR][eE][cC][eE][dD][iI][nN][gG]|[pP][rR][iI][mM][aA][rR][yY]|[rR][aA][nN][gG][eE]|[rR][eE][cC][uU][rR][sS][iI][vV][eE]|[rR][eE][fF][eE][rR][eE][nN][cC][eE][sS]|[rR][eE][pP][lL][aA][cC][eE]|[rR][iI][gG][hH][tT]|[rR][oO][wW]|[rR][oO][wW][sS]|[sS][cC][hH][eE][mM][aA]|[sS][eE][lL][eE][cC][tT]|[tT][aA][bB][lL][eE]|[tT][iI][eE][sS]|[tT][oO][pP]|[tT][rR][uU][eE]|[uU][nN][bB][oO][uU][nN][dD][eE][dD]|[uU][nN][iI][oO][nN]|[uU][nN][iI][qQ][uU][eE]|[uU][sS][iI][nN][gG]|[wW][hH][eE][rR][eE]|[wW][iI][tT][hH])\\b" + }, + { + "name": "string.quoted.single.sql", + "begin": "'", + "end": "'", + "patterns": [ + { + "include": "#string-character-escape" + } + ] + } + ], + "repository": { + "comments": { + "patterns": [ + { + "name": "comment.block.sql", + "begin": "/\\*", + "beginCaptures": { + "0": { + "name": "punctuation.definition.comment.sql" + } + }, + "end": "\\*/", + "endCaptures": { + "0": { + "name": "punctuation.definition.comment.sql" + } + } + }, + { + "begin": "--", + "beginCaptures": { + "1": { + "name": "punctuation.whitespace.comment.leading.sql" + } + }, + "end": "(?=$)", + "name": "comment.line.sql" + }, + { + "begin": "//", + "beginCaptures": { + "1": { + "name": "punctuation.whitespace.comment.leading.sql" + } + }, + "end": "(?=$)", + "name": "comment.line.sql" + } + ] + }, + "string-character-escape": { + "name": "constant.character.escape.sql", + "match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)" + } + } +} diff --git a/hugo/assets/scripts/sql/ui.tsx b/hugo/assets/scripts/sql/ui.tsx index 2f9c56a8..9c55aed9 100644 --- a/hugo/assets/scripts/sql/ui.tsx +++ b/hugo/assets/scripts/sql/ui.tsx @@ -4,8 +4,8 @@ import React from "react"; import { createRoot } from "react-dom/client"; import { defaultText, - syntaxHighlighting, } from "./constants"; +import textMateGrammar from './sql.tmLanguage.json'; import { DocumentChangeResponse } from "langium-ast-helper"; addMonacoStyles('monaco-styles-helper'); @@ -112,7 +112,7 @@ userConfig = createUserConfig({ languageId: 'sql', code: defaultText, worker: '../../showcase/libs/worker/sqlServerWorker.js', - monarchGrammar: syntaxHighlighting + textmateGrammar: textMateGrammar }); const element = document.getElementById("root") as HTMLElement; diff --git a/hugo/package.json b/hugo/package.json index cbcec977..491145e5 100644 --- a/hugo/package.json +++ b/hugo/package.json @@ -15,7 +15,7 @@ "build:worker/playground-langium": "esbuild ./content/playground/langium-worker.ts --bundle --format=iife --outfile=./static/playground/libs/worker/langiumServerWorker.js", "build:worker/playground-user": "esbuild ./content/playground/user-worker.ts --bundle --format=iife --outfile=./static/playground/libs/worker/userServerWorker.js", "build:worker/playground-common": "esbuild ./content/playground/common.ts --bundle --format=esm --outfile=./static/playground/libs/worker/common.js", - "build:worker/sql": "esbuild ./assets/scripts/sql/language-server.ts --bundle --format=iife --outfile=./static/showcase/libs/worker/sqlServerWorker.js", + "build:worker/sql": "node sql.esbuild.mjs", "build:worker/minilogo": "esbuild ../node_modules/langium-minilogo/out/language-server/main-browser.js --bundle --format=iife --outfile=./static/showcase/libs/worker/minilogoServerWorker.js", "build:static": "npm run clean:static && npm run build:worker/statemachine && npm run build:worker/domainmodel && npm run build:worker/sql && npm run build:worker/minilogo && npm run build:worker/arithmetics && npm run build:worker/playground-common && npm run build:worker/playground-langium && npm run build:worker/playground-user && npm run copy:monaco-workers", "build": "npm run build:static && cross-env NODE_ENV=production hugo --config ./config.toml -b / -d ../public --gc --minify ", diff --git a/hugo/sql.esbuild.mjs b/hugo/sql.esbuild.mjs new file mode 100644 index 00000000..a4637b78 --- /dev/null +++ b/hugo/sql.esbuild.mjs @@ -0,0 +1,8 @@ +import * as esbuild from 'esbuild'; + +await esbuild.build({ + entryPoints: ['./assets/scripts/sql/language-server.ts'], + bundle: true, + format: "iife", + outfile: './static/showcase/libs/worker/sqlServerWorker.js', +}) \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index cf4334d5..a22a76ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3714,9 +3714,12 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/gensync": { "version": "1.0.0-beta.2", From 530f6b0b1bf2978e1ca86f6cec0618522924ff04 Mon Sep 17 00:00:00 2001 From: Markus Rudolph Date: Tue, 19 Mar 2024 14:57:00 +0100 Subject: [PATCH 06/14] Update Langium/SQL --- hugo/package.json | 4 ++-- package-lock.json | 26 +++++++++++++++++++++----- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/hugo/package.json b/hugo/package.json index 491145e5..358ea7a8 100644 --- a/hugo/package.json +++ b/hugo/package.json @@ -44,11 +44,11 @@ "langium-ast-helper": "0.1.2", "langium-domainmodel-dsl": "^3.0.0", "langium-minilogo": "^3.0.0", - "langium-sql": "^0.3.1", + "langium-sql": "^0.3.2", "langium-statemachine-dsl": "^3.0.0", "langium-website-core": "~1.0.0", "lz-string": "^1.4.4", - "monaco-editor-workers": "~0.44.0", + "monaco-editor-workers": "~0.45.0", "react": "~18.2.0", "react-dom": "~18.2.0", "vscode-languageserver": "~9.0.1" diff --git a/package-lock.json b/package-lock.json index a22a76ab..0f548b3d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -207,11 +207,11 @@ "langium-ast-helper": "0.1.2", "langium-domainmodel-dsl": "^3.0.0", "langium-minilogo": "^3.0.0", - "langium-sql": "^0.3.1", + "langium-sql": "^0.3.2", "langium-statemachine-dsl": "^3.0.0", "langium-website-core": "~1.0.0", "lz-string": "^1.4.4", - "monaco-editor-workers": "~0.44.0", + "monaco-editor-workers": "~0.45.0", "react": "~18.2.0", "react-dom": "~18.2.0", "vscode-languageserver": "~9.0.1" @@ -225,6 +225,22 @@ "esbuild": "~0.19.4" } }, + "hugo/node_modules/monaco-editor": { + "version": "0.45.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.45.0.tgz", + "integrity": "sha512-mjv1G1ZzfEE3k9HZN0dQ2olMdwIfaeAAjFiwNprLfYNRSz7ctv9XuCT7gPtBGrMUeV1/iZzYKj17Khu1hxoHOA==" + }, + "hugo/node_modules/monaco-editor-workers": { + "version": "0.45.0", + "resolved": "https://registry.npmjs.org/monaco-editor-workers/-/monaco-editor-workers-0.45.0.tgz", + "integrity": "sha512-KSN7FXdehjwnu1JbpfERVP8KGqioXabNmpDfmh1P5RcG2k6OTAyh5cmLg55AsI/upzUqbEuq1F4NUh7mASsY9w==", + "dependencies": { + "monaco-editor": "~0.45.0" + }, + "peerDependencies": { + "monaco-editor": "~0.45.0" + } + }, "hugo/node_modules/vscode-jsonrpc": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", @@ -4389,9 +4405,9 @@ "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==" }, "node_modules/langium-sql": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/langium-sql/-/langium-sql-0.3.1.tgz", - "integrity": "sha512-KCr6rJsVRXjHrh6+G9RX3LiyCWRnZ925MH9vlit9XNx1qtEXLAhNqynF+1yuHXTkdHNNLfBoRiVN7OyWgm/9yw==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/langium-sql/-/langium-sql-0.3.2.tgz", + "integrity": "sha512-Ut2Spt5FK461E2OW4ULgWb9GIzqjJLnjksz2DprPwaTpfwE1hAeizfshCCdT2wCJVESkWzHQFeMCgKT9Yd2jiw==", "dependencies": { "langium": "^3.0.0", "lodash": "^4.17.21" From 50acbd978bea941280dac7990c9e67dd03cb7263 Mon Sep 17 00:00:00 2001 From: Markus Rudolph Date: Wed, 20 Mar 2024 09:21:02 +0100 Subject: [PATCH 07/14] Fix playground except syntax highlighting --- hugo/content/playground/Tree.tsx | 7 +- hugo/content/playground/common.ts | 13 ++- hugo/content/playground/langium-worker.ts | 7 +- hugo/content/playground/monaco-utils.ts | 114 ------------------- hugo/content/playground/monarch-generator.ts | 66 +++++------ hugo/content/playground/preprocess.ts | 5 +- hugo/content/playground/types.ts | 4 +- hugo/content/playground/user-worker.ts | 5 +- hugo/content/playground/worker-utils.ts | 2 +- hugo/tsconfig.json | 3 +- 10 files changed, 57 insertions(+), 169 deletions(-) delete mode 100644 hugo/content/playground/monaco-utils.ts diff --git a/hugo/content/playground/Tree.tsx b/hugo/content/playground/Tree.tsx index d999031d..cbcb9060 100644 --- a/hugo/content/playground/Tree.tsx +++ b/hugo/content/playground/Tree.tsx @@ -4,12 +4,11 @@ * terms of the MIT License, which is available in the project root. ******************************************************************************/ -import React, { FC, useState } from "react"; +import { FC, useState } from "react"; import * as ReactDOM from "react-dom/client"; -import { preprocessAstNodeObject, PropertyNode, ValueNode } from "./preprocess"; +import { preprocessAstNodeObject, PropertyNode, ValueNode } from "./preprocess.js"; import { clsx } from "clsx"; -import { AstNodeLocator } from "langium/lib/workspace/ast-node-locator"; -import { AstNode } from "langium/lib/syntax-tree"; +import { AstNode, AstNodeLocator } from "langium"; export let treeRoot: ReactDOM.Root; diff --git a/hugo/content/playground/common.ts b/hugo/content/playground/common.ts index 054c916c..df5d166d 100644 --- a/hugo/content/playground/common.ts +++ b/hugo/content/playground/common.ts @@ -8,17 +8,18 @@ import { HelloWorldGrammar, LangiumMonarchContent, DSLInitialContent, -} from "./data"; -import { generateMonarch } from "./monarch-generator"; +} from "./data.js"; +import { generateMonarch } from "./monarch-generator.js"; import { decompressFromEncodedURIComponent } from 'lz-string'; import { Disposable } from "vscode-languageserver"; -import { render } from './Tree'; -import { overlay, throttle } from "./utils"; +import { render } from './Tree.js'; +import { overlay, throttle } from "./utils.js"; import { addMonacoStyles, createUserConfig, MonacoEditorLanguageClientWrapper } from "langium-website-core/bundle"; import { DocumentChangeResponse } from "langium-ast-helper"; -import { createServicesForGrammar, DefaultAstNodeLocator } from "langium"; +import { DefaultAstNodeLocator } from "langium"; +import { createServicesForGrammar } from "langium/grammar"; -export { share, overlay } from './utils'; +export { share, overlay } from './utils.js'; export { addMonacoStyles, MonacoEditorLanguageClientWrapper }; export interface PlaygroundParameters { diff --git a/hugo/content/playground/langium-worker.ts b/hugo/content/playground/langium-worker.ts index 05cdfc30..59eb71c3 100644 --- a/hugo/content/playground/langium-worker.ts +++ b/hugo/content/playground/langium-worker.ts @@ -4,10 +4,11 @@ * terms of the MIT License, which is available in the project root. ******************************************************************************/ -import { NotificationType } from 'vscode-languageserver/browser'; -import { DocumentChange, createServerConnection } from './worker-utils'; -import { EmptyFileSystem, createLangiumGrammarServices, DocumentState } from 'langium'; +import { NotificationType } from 'vscode-languageserver/browser.js'; +import { DocumentChange, createServerConnection } from './worker-utils.js'; +import { EmptyFileSystem, DocumentState } from 'langium'; import { startLanguageServer } from 'langium/lsp'; +import { createLangiumGrammarServices } from 'langium/grammar'; // establish a browser server connection const connection = createServerConnection(); diff --git a/hugo/content/playground/monaco-utils.ts b/hugo/content/playground/monaco-utils.ts deleted file mode 100644 index e74ae5db..00000000 --- a/hugo/content/playground/monaco-utils.ts +++ /dev/null @@ -1,114 +0,0 @@ -/****************************************************************************** - * Copyright 2022 TypeFox GmbH - * This program and the accompanying materials are made available under the - * terms of the MIT License, which is available in the project root. - ******************************************************************************/ - - import { MagicAction, Message, MessageWrapper, PlaygroundMessage, Notification, isNotification, DedicatedWorkerGlobalScope, MessageCallback } from "./types"; -import { - AbstractMessageReader, - BrowserMessageReader, - BrowserMessageWriter, - DataCallback, - Disposable, - Emitter, - MessageReader, - } from "vscode-languageserver/browser"; - -export { BrowserMessageReader, BrowserMessageWriter }; - -export class PlaygroundWrapper implements MessageWrapper { - wrap(message: PlaygroundMessage): Message { - return { - jsonrpc: "2.0", - method: MagicAction, - params: [message], - } as Notification; - } - unwrap(message: Message): PlaygroundMessage | null { - if (isNotification(message) && message.method === MagicAction) { - return message.params![0] as PlaygroundMessage; - } - return null; - } -} - -export class ByPassingMessageReader - extends AbstractMessageReader - implements MessageReader -{ - private _onData: Emitter; - private _onByPass: Emitter; - private _messageListener: (event: MessageEvent) => void; - - public constructor( - port: MessagePort | Worker | DedicatedWorkerGlobalScope, - wrapper: MessageWrapper - ) { - super(); - this._onData = new Emitter(); - this._onByPass = new Emitter(); - this._messageListener = (event: MessageEvent) => { - const unwrapped = wrapper.unwrap(event.data); - if (unwrapped) { - this._onByPass.fire(unwrapped); - return; - } - this._onData.fire(event.data); - }; - port.addEventListener("error", (event) => this.fireError(event)); - port.onmessage = this._messageListener; - } - - public listen(callback: DataCallback): Disposable { - return this._onData.event((x) => callback(x as any)); - } - - public listenByPass(callback: MessageCallback): Disposable { - return this._onByPass.event(callback); - } -} - -export class ByPassingMessageWriter extends BrowserMessageWriter { - public constructor( - port: MessagePort | Worker | DedicatedWorkerGlobalScope, - private wrapper: MessageWrapper - ) { - super(port); - } - - public byPassWrite(message: T) { - return this.write(this.wrapper.wrap(message)); - } -} - -export interface MonacoConnection { - reader: ByPassingMessageReader; - writer: ByPassingMessageWriter; -} - -export interface MonacoEditorResult { - out: ByPassingMessageReader; - in: ByPassingMessageWriter; - editor: MonacoClient; -} - -export interface MonacoConfig { - getMainCode(): string; - setMainCode(code: string): void; - setMainLanguageId(name: string): void; - setMonarchTokensProvider(monarch: any): void; - theme: string; - useLanguageClient: boolean; - useWebSocket: boolean; - setMonacoEditorOptions(monacoEditorOptions: Record): void; -} - -export interface MonacoClient { - getEditorConfig(): MonacoConfig; - setWorker(worker: Worker, connection: MonacoConnection): void; - startEditor(domElement: HTMLElement): void; - updateLayout(): void; - dispose(): Promise; - getMainCode(): string; -} diff --git a/hugo/content/playground/monarch-generator.ts b/hugo/content/playground/monarch-generator.ts index 59336082..e0c0c68d 100644 --- a/hugo/content/playground/monarch-generator.ts +++ b/hugo/content/playground/monarch-generator.ts @@ -4,8 +4,8 @@ * terms of the MIT License, which is available in the project root. ******************************************************************************/ -import { isCommentTerminal, terminalRegex, stream, escapeRegExp, getTerminalParts } from "langium"; -import ast from "langium"; +import { GrammarUtils, stream, RegExpUtils } from "langium"; +import { GrammarAST } from "langium"; import { languages } from "monaco-editor"; /** @@ -119,7 +119,7 @@ interface MonarchGrammar { * @param config Langium Config to also use during generation * @returns Generated Monarch syntax highlighting file content */ -export function generateMonarch(grammar: ast.Grammar, id: string): languages.IMonarchLanguage { +export function generateMonarch(grammar: GrammarAST.Grammar, id: string): languages.IMonarchLanguage { const symbols = getSymbols(grammar); const regex = /[{}[\]()]/; const operators = symbols.filter((s) => !regex.test(s)); @@ -147,7 +147,7 @@ export function generateMonarch(grammar: ast.Grammar, id: string): languages.IMo * @param grammar Langium grammar to source tokenizer states from * @returns Array of tokenizer states */ -function getTokenizerStates(grammar: ast.Grammar): State[] { +function getTokenizerStates(grammar: GrammarAST.Grammar): State[] { // initial state, name is arbitrary, just needs to come first const initialState: State = { name: "initial", @@ -224,7 +224,7 @@ function prettyPrintLangDef( ) { const keywords = genLanguageDefEntry("keywords", languageDef.keywords); const operators = genLanguageDefEntry("operators", languageDef.operators); - const symbols = { symbols: new RegExp(languageDef.symbols.map(escapeRegExp).join("|"))} + const symbols = { symbols: new RegExp(languageDef.symbols.map(RegExpUtils.escapeRegExp).join("|"))} return { ...keywords, ...operators, @@ -298,7 +298,7 @@ function prettyPrintAction(action: Action | Case[]): Action { * @param rule Rule to convert to a Monarch token name * @returns Returns the equivalent monarch token name, or the original rule name */ -function getMonarchTokenName(rule: ast.TerminalRule): string { +function getMonarchTokenName(rule: GrammarAST.TerminalRule): string { if (rule.name.toLowerCase() === "string") { // string is clarified as a terminal by name, but not necessarily by type return "string"; @@ -316,24 +316,24 @@ function getMonarchTokenName(rule: ast.TerminalRule): string { * @param grammar Langium grammar to extract whitespace rules from * @returns Array of Monarch whitespace rules */ -function getWhitespaceRules(grammar: ast.Grammar): Rule[] { +function getWhitespaceRules(grammar: GrammarAST.Grammar): Rule[] { const rules: Rule[] = []; for (const rule of grammar.rules) { - if (ast.isTerminalRule(rule) && ast.isRegexToken(rule.definition)) { - const regex = new RegExp(terminalRegex(rule)); + if (GrammarAST.isTerminalRule(rule) && GrammarAST.isRegexToken(rule.definition)) { + const regex = new RegExp(GrammarUtils.terminalRegex(rule)); - if (!isCommentTerminal(rule) && !regex.test(" ")) { + if (!GrammarUtils.isCommentTerminal(rule) && !regex.test(" ")) { // skip rules that are not comments or whitespace continue; } // token name is either comment or whitespace - const tokenName = isCommentTerminal(rule) ? "comment" : "white"; + const tokenName = GrammarUtils.isCommentTerminal(rule) ? "comment" : "white"; - const part = getTerminalParts(terminalRegex(rule))[0]; + const part = RegExpUtils.getTerminalParts(GrammarUtils.terminalRegex(rule))[0]; // check if this is a comment terminal w/ a start & end sequence (multi-line) - if (part.start !== "" && part.end !== "" && isCommentTerminal(rule)) { + if (part.start !== "" && part.end !== "" && GrammarUtils.isCommentTerminal(rule)) { // state-based comment rule, only add push to jump into it rules.push({ regex: part.start.replace("/", "\\/"), @@ -357,16 +357,16 @@ function getWhitespaceRules(grammar: ast.Grammar): Rule[] { * @param grammar Langium grammar to extract comment rules from * @returns Array of Monarch comment rules */ -function getCommentRules(grammar: ast.Grammar): Rule[] { +function getCommentRules(grammar: GrammarAST.Grammar): Rule[] { const rules: Rule[] = []; for (const rule of grammar.rules) { if ( - ast.isTerminalRule(rule) && - isCommentTerminal(rule) && - ast.isRegexToken(rule.definition) + GrammarAST.isTerminalRule(rule) && + GrammarUtils.isCommentTerminal(rule) && + GrammarAST.isRegexToken(rule.definition) ) { const tokenName = "comment"; - const part = getTerminalParts(terminalRegex(rule))[0]; + const part = RegExpUtils.getTerminalParts(GrammarUtils.terminalRegex(rule))[0]; if (part.start !== "" && part.end !== "") { // rules to manage comment start/end // rule order matters @@ -402,15 +402,15 @@ function getCommentRules(grammar: ast.Grammar): Rule[] { * @param grammar Grammar to get non-comment terminals from * @returns Array of Rules to add to a Monarch tokenizer state */ -function getTerminalRules(grammar: ast.Grammar): Rule[] { +function getTerminalRules(grammar: GrammarAST.Grammar): Rule[] { const rules: Rule[] = []; for (const rule of grammar.rules) { if ( - ast.isTerminalRule(rule) && - !isCommentTerminal(rule) && - ast.isRegexToken(rule.definition) + GrammarAST.isTerminalRule(rule) && + !GrammarUtils.isCommentTerminal(rule) && + GrammarAST.isRegexToken(rule.definition) ) { - const regex = new RegExp(terminalRegex(rule)); + const regex = new RegExp(GrammarUtils.terminalRegex(rule)); if (regex.test(" ")) { // disallow terminal rules that match whitespace @@ -455,7 +455,7 @@ const KeywordRegex = /[A-Za-z]/; * @param grammar Grammar to get keywords from * @returns Array of keywords */ -function getKeywords(grammar: ast.Grammar): string[] { +function getKeywords(grammar: GrammarAST.Grammar): string[] { return collectKeywords(grammar).filter((kw) => KeywordRegex.test(kw)); } @@ -464,14 +464,14 @@ function getKeywords(grammar: ast.Grammar): string[] { * @param grammar Grammar to get symbols from * @returns Array of symbols, effective inverse of getKeywords */ -function getSymbols(grammar: ast.Grammar): string[] { +function getSymbols(grammar: GrammarAST.Grammar): string[] { return collectKeywords(grammar).filter((kw) => !KeywordRegex.test(kw)); } -export function collectKeywords(grammar: ast.Grammar): string[] { +export function collectKeywords(grammar: GrammarAST.Grammar): string[] { const keywords = new Set(); - for (const rule of stream(grammar.rules).filter(ast.isParserRule)) { + for (const rule of stream(grammar.rules).filter(GrammarAST.isParserRule)) { collectElementKeywords(rule.definition, keywords); } @@ -479,20 +479,20 @@ export function collectKeywords(grammar: ast.Grammar): string[] { } function collectElementKeywords( - element: ast.AbstractElement, + element: GrammarAST.AbstractElement, keywords: Set ) { if ( - ast.isAlternatives(element) || - ast.isGroup(element) || - ast.isUnorderedGroup(element) + GrammarAST.isAlternatives(element) || + GrammarAST.isGroup(element) || + GrammarAST.isUnorderedGroup(element) ) { for (const item of element.elements) { collectElementKeywords(item, keywords); } - } else if (ast.isAssignment(element)) { + } else if (GrammarAST.isAssignment(element)) { collectElementKeywords(element.terminal, keywords); - } else if (ast.isKeyword(element)) { + } else if (GrammarAST.isKeyword(element)) { keywords.add(element.value); } } diff --git a/hugo/content/playground/preprocess.ts b/hugo/content/playground/preprocess.ts index a1ad43e8..d9bfd51f 100644 --- a/hugo/content/playground/preprocess.ts +++ b/hugo/content/playground/preprocess.ts @@ -4,8 +4,7 @@ * terms of the MIT License, which is available in the project root. ******************************************************************************/ -import { AstNode } from "langium/lib/syntax-tree"; -import { AstNodeLocator } from "langium/lib/workspace/ast-node-locator"; +import { AstNode, AstNodeLocator } from "langium"; /** * Represents a serialized version of a reference to an AstNode @@ -104,7 +103,7 @@ export function preprocessAstNodeObject( const properties: PropertyNode[] = Object.keys(node) .filter((n) => !n.startsWith("$")) .map((n) => { - const valueOrValues = node[n] as + const valueOrValues = ((node as any)[n]) as | AstNode | AstNode[] | "string" diff --git a/hugo/content/playground/types.ts b/hugo/content/playground/types.ts index 82b6b747..7d86432b 100644 --- a/hugo/content/playground/types.ts +++ b/hugo/content/playground/types.ts @@ -4,7 +4,7 @@ * terms of the MIT License, which is available in the project root. ******************************************************************************/ -import { AstNode } from "langium/lib/syntax-tree"; +import { AstNode } from "langium"; import { Diagnostic } from "vscode-languageserver"; export declare type DedicatedWorkerGlobalScope = any; @@ -71,7 +71,7 @@ export interface PlaygroundParameters { } export function isNotification(msg: Message): msg is Notification { - return !msg["id"] && msg["method"]; + return !("id" in msg) && ("method" in msg); } export type Message = Request | ResponseError | ResponseOK | Notification; diff --git a/hugo/content/playground/user-worker.ts b/hugo/content/playground/user-worker.ts index c77c2467..e752a43d 100644 --- a/hugo/content/playground/user-worker.ts +++ b/hugo/content/playground/user-worker.ts @@ -5,9 +5,10 @@ ******************************************************************************/ import { NotificationType } from 'vscode-languageserver/browser.js'; -import { DocumentChange, createServerConnection } from './worker-utils'; +import { DocumentChange, createServerConnection } from './worker-utils.js'; import { startLanguageServer } from 'langium/lsp'; -import { DocumentState, createServicesForGrammar } from 'langium'; +import { DocumentState } from 'langium'; +import { createServicesForGrammar } from 'langium/grammar'; // listen for messages to trigger starting the LS with a given grammar addEventListener('message', async (event) => { diff --git a/hugo/content/playground/worker-utils.ts b/hugo/content/playground/worker-utils.ts index 344d7a23..7a6ee503 100644 --- a/hugo/content/playground/worker-utils.ts +++ b/hugo/content/playground/worker-utils.ts @@ -1,4 +1,4 @@ -import { Diagnostic, BrowserMessageReader, BrowserMessageWriter, createConnection, Connection } from 'vscode-languageserver/browser'; +import { Diagnostic, BrowserMessageReader, BrowserMessageWriter, createConnection, Connection } from 'vscode-languageserver/browser.js'; /** * Describes a notification that can be sent from the LS, diff --git a/hugo/tsconfig.json b/hugo/tsconfig.json index f85b0601..0c1fa7ba 100644 --- a/hugo/tsconfig.json +++ b/hugo/tsconfig.json @@ -7,7 +7,8 @@ "rootDir": ".", "outDir": "dist", "declaration": true, - "declarationDir": "dist" + "declarationDir": "dist", + "jsx": "react-jsx" }, "include": [ "**/*.ts", From e0e3ec5f37f9cf69826f3a96c815d944d62efec1 Mon Sep 17 00:00:00 2001 From: Markus Rudolph Date: Wed, 20 Mar 2024 10:15:37 +0100 Subject: [PATCH 08/14] Save the migration of MonarchGenerator --- hugo/content/playground/common.ts | 10 +- hugo/content/playground/data.ts | 349 +++++++++++++++---- hugo/content/playground/monarch-generator.ts | 34 +- hugo/package.json | 2 +- package-lock.json | 2 +- 5 files changed, 300 insertions(+), 97 deletions(-) diff --git a/hugo/content/playground/common.ts b/hugo/content/playground/common.ts index df5d166d..df1ebc94 100644 --- a/hugo/content/playground/common.ts +++ b/hugo/content/playground/common.ts @@ -6,7 +6,7 @@ import { HelloWorldGrammar, - LangiumMonarchContent, + LangiumTextMateContent, DSLInitialContent, } from "./data.js"; import { generateMonarch } from "./monarch-generator.js"; @@ -158,7 +158,7 @@ export async function setupPlayground( await setupDSLWrapper(); overlay(false, false); - }).catch(async (e) => { + }).catch(async (e: any) => { // failed to dispose, report & discard this error // can happen when a previous editor was not started correctly console.error('DSL editor disposal error: ' + e); @@ -224,7 +224,7 @@ async function getFreshDSLWrapper( monarchGrammar: generateMonarch(Grammar, languageId) }), htmlElement).then(() => { return wrapper; - }).catch(async (e) => { + }).catch(async (e: any) => { console.error('Failed to start DSL wrapper: ' + e); // don't leak the worker on failure to start // normally we wouldn't need to manually terminate, but if the LC is stuck in the 'starting' state, the following dispose will fail prematurely @@ -235,7 +235,7 @@ async function getFreshDSLWrapper( try { await wrapper.dispose(); } catch (e) {} - return undefined; + return undefined as MonacoEditorLanguageClientWrapper|undefined; }); } @@ -252,7 +252,7 @@ async function getFreshLangiumWrapper(htmlElement: HTMLElement): Promise", - ",", - ";", - ":", - "!", - "?", - "?=", - ".", - "..", - "@", - "*", - "&", - "+", - "+=", - "<", - "=", - "=>", - ">", - "|", + "patterns": [ + { + "include": "#regex" + }, + { + "include": "#comments" + }, + { + "name": "keyword.control.langium", + "match": "\\b(current|entry|extends|fragment|grammar|hidden|import|infer|infers|interface|returns|terminal|type|with)\\b" + }, + { + "name": "constant.language.langium", + "match": "\\b(?i:true|false)\\b" + }, + { + "name": "keyword.symbol.langium", + "match": "(\\{|\\}|\\:|\\]|\\[|\\(|\\)|(\\??|\\+?)\\=|->|\\=>|<|>|\\,|\\*|\\+|\\@|\\||\\&|\\?|\\!|\\;)" + }, + { + "name": "string.quoted.double.langium", + "begin": "\"", + "end": "\"", + "patterns": [ + { + "include": "#string-character-escape" + } + ] + }, + { + "name": "string.quoted.single.langium", + "begin": "'", + "end": "'", + "patterns": [ + { + "include": "#string-character-escape" + } + ] + } ], - symbols: - /->|,|;|:|!|\?|\?=|\.|\.\.|\(|\)|\[|\[\]|\]|\{|\}|@|\*|&|\+|\+=|<|=|=>|>|\|/, - - tokenizer: { - initial: [ + "repository": { + "comments": { + "patterns": [ + { + "name": "comment.block.langium", + "begin": "/\\*", + "beginCaptures": { + "0": { + "name": "punctuation.definition.comment.langium" + } + }, + "end": "\\*/", + "endCaptures": { + "0": { + "name": "punctuation.definition.comment.langium" + } + } + }, + { + "begin": "(^\\s+)?(?=//)", + "beginCaptures": { + "1": { + "name": "punctuation.whitespace.comment.leading.cs" + } + }, + "end": "(?=$)", + "name": "comment.line.langium" + } + ] + }, + "string-character-escape": { + "name": "constant.character.escape.langium", + "match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)" + }, + "regex": { + "patterns": [ + { + "name": "string.regexp.ts", + "begin": "(?|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([a-z]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))", + "beginCaptures": { + "1": { + "name": "punctuation.definition.string.begin.ts" + } + }, + "end": "(/)([a-z]*)", + "endCaptures": { + "1": { + "name": "punctuation.definition.string.end.ts" + }, + "2": { + "name": "keyword.other.ts" + } + }, + "patterns": [ + { + "include": "#regexp" + } + ] + }, + { + "name": "string.regexp.ts", + "begin": "((?", + "captures": { + "0": { + "name": "keyword.other.back-reference.regexp" }, + "1": { + "name": "variable.other.regexp" + } + } + }, + { + "name": "keyword.operator.quantifier.regexp", + "match": "[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??" + }, + { + "name": "keyword.operator.or.regexp", + "match": "\\|" + }, + { + "name": "meta.group.assertion.regexp", + "begin": "(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?))?", + "beginCaptures": { + "0": { + "name": "punctuation.definition.group.regexp" + }, + "1": { + "name": "punctuation.definition.group.no-capture.regexp" + }, + "2": { + "name": "variable.other.regexp" + } + }, + "end": "\\)", + "endCaptures": { + "0": { + "name": "punctuation.definition.group.regexp" + } }, + "patterns": [ + { + "include": "#regexp" + } + ] }, - { regex: /"[^"]*"|'[^']*'/, action: { token: "string" } }, - { include: "@whitespace" }, { - regex: /@symbols/, - action: { - cases: { - "@operators": { token: "operator" }, - "@default": { token: "" }, + "name": "constant.other.character-class.set.regexp", + "begin": "(\\[)(\\^)?", + "beginCaptures": { + "1": { + "name": "punctuation.definition.character-class.regexp" }, + "2": { + "name": "keyword.operator.negation.regexp" + } }, + "end": "(\\])", + "endCaptures": { + "1": { + "name": "punctuation.definition.character-class.regexp" + } + }, + "patterns": [ + { + "name": "constant.other.character-class.range.regexp", + "match": "(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))", + "captures": { + "1": { + "name": "constant.character.numeric.regexp" + }, + "2": { + "name": "constant.character.control.regexp" + }, + "3": { + "name": "constant.character.escape.backslash.regexp" + }, + "4": { + "name": "constant.character.numeric.regexp" + }, + "5": { + "name": "constant.character.control.regexp" + }, + "6": { + "name": "constant.character.escape.backslash.regexp" + } + } + }, + { + "include": "#regex-character-class" + } + ] }, - ], - whitespace: [ - { regex: /\s+/, action: { token: "white" } }, - { regex: /\/\*/, action: { token: "comment", next: "@comment" } }, - { regex: /\/\/[^\n\r]*/, action: { token: "comment" } }, - ], - comment: [ - { regex: /[^\/\*]+/, action: { token: "comment" } }, - { regex: /\*\//, action: { token: "comment", next: "@pop" } }, - { regex: /[\/\*]/, action: { token: "comment" } }, - ], + { + "include": "#regex-character-class" + } + ] }, + "regex-character-class": { + "patterns": [ + { + "name": "constant.other.character-class.regexp", + "match": "\\\\[wWsSdDtrnvf]|\\." + }, + { + "name": "constant.character.numeric.regexp", + "match": "\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})" + }, + { + "name": "constant.character.control.regexp", + "match": "\\\\c[A-Z]" + }, + { + "name": "constant.character.escape.backslash.regexp", + "match": "\\\\." + } + ] + } + } }; export const HelloWorldGrammar = `grammar HelloWorld diff --git a/hugo/content/playground/monarch-generator.ts b/hugo/content/playground/monarch-generator.ts index e0c0c68d..f8ac8006 100644 --- a/hugo/content/playground/monarch-generator.ts +++ b/hugo/content/playground/monarch-generator.ts @@ -4,9 +4,7 @@ * terms of the MIT License, which is available in the project root. ******************************************************************************/ -import { GrammarUtils, stream, RegExpUtils } from "langium"; -import { GrammarAST } from "langium"; -import { languages } from "monaco-editor"; +import { GrammarAST, GrammarUtils, RegExpUtils, stream } from "langium"; /** * Monarch Language Definition, describes aspects & token categories of target language @@ -119,7 +117,7 @@ interface MonarchGrammar { * @param config Langium Config to also use during generation * @returns Generated Monarch syntax highlighting file content */ -export function generateMonarch(grammar: GrammarAST.Grammar, id: string): languages.IMonarchLanguage { +export function generateMonarch(grammar: GrammarAST.Grammar, id: string) { const symbols = getSymbols(grammar); const regex = /[{}[\]()]/; const operators = symbols.filter((s) => !regex.test(s)); @@ -194,14 +192,14 @@ function getTokenizerStates(grammar: GrammarAST.Grammar): State[] { * @param monarchGrammar Grammar to pretty print * @returns Monarch grammar in concrete form */ -function prettyPrint(monarchGrammar: MonarchGrammar): languages.IMonarchLanguage { +function prettyPrint(monarchGrammar: MonarchGrammar) { const name = monarchGrammar.languageDefinition.name; const languages = prettyPrintLangDef(monarchGrammar.languageDefinition); const tokenizer = prettyPrintTokenizer(monarchGrammar.tokenizer); return { ...languages, - tokenizer + ...tokenizer }; } @@ -236,20 +234,20 @@ function prettyPrintLangDef( * Pretty prints the tokenizer portion of a Monarch grammar file * @param tokenizer Tokenizer portion to print out */ -function prettyPrintTokenizer(tokenizer: Tokenizer): { - [name: string]: languages.IMonarchLanguageRule[]; -} { +function prettyPrintTokenizer(tokenizer: Tokenizer) { const result = tokenizer.states .map((s) => prettyPrintState(s)) .reduce((lhs, rhs) => ({ ...lhs, ...rhs }), {}); - return result; + return { + tokenizer: result, + }; } /** * Pretty prints a tokenizer state, composed of various rules * @param state Tokenizer state to pretty print */ -function prettyPrintState(state: State): {[name: string]: languages.IMonarchLanguageRule[]} { +function prettyPrintState(state: State) { return { [state.name]: state.rules.map((r) => prettyPrintRule(r)), }; @@ -261,13 +259,15 @@ function prettyPrintState(state: State): {[name: string]: languages.IMonarchLang * @param ruleOrState Rule to pretty print. If it's a state, we include that state's contents implicitly within this context. * @returns Generator node containing this printed rule */ -function prettyPrintRule(ruleOrState: Rule | State): languages.IMonarchLanguageRule { +function prettyPrintRule(ruleOrState: Rule | State): Rule { if (isRegexRule(ruleOrState)) { - const regex = ruleOrState.regex instanceof RegExp - ? ruleOrState.regex - : new RegExp(ruleOrState.regex); - const action = prettyPrintAction(ruleOrState.action); - return [regex, action] as const; + return { + regex: + ruleOrState.regex instanceof RegExp + ? ruleOrState.regex + : new RegExp(ruleOrState.regex), + action: prettyPrintAction(ruleOrState.action), + }; } else if (isIncludeRule(ruleOrState)) { return ruleOrState; } else { diff --git a/hugo/package.json b/hugo/package.json index 358ea7a8..7b46358e 100644 --- a/hugo/package.json +++ b/hugo/package.json @@ -48,7 +48,7 @@ "langium-statemachine-dsl": "^3.0.0", "langium-website-core": "~1.0.0", "lz-string": "^1.4.4", - "monaco-editor-workers": "~0.45.0", + "monaco-editor-workers": "~0.44.0", "react": "~18.2.0", "react-dom": "~18.2.0", "vscode-languageserver": "~9.0.1" diff --git a/package-lock.json b/package-lock.json index 0f548b3d..4d451611 100644 --- a/package-lock.json +++ b/package-lock.json @@ -211,7 +211,7 @@ "langium-statemachine-dsl": "^3.0.0", "langium-website-core": "~1.0.0", "lz-string": "^1.4.4", - "monaco-editor-workers": "~0.45.0", + "monaco-editor-workers": "~0.44.0", "react": "~18.2.0", "react-dom": "~18.2.0", "vscode-languageserver": "~9.0.1" From 8e6a210284968e0d049ab176c91af0f9e5d0305d Mon Sep 17 00:00:00 2001 From: Markus Rudolph Date: Wed, 20 Mar 2024 10:32:01 +0100 Subject: [PATCH 09/14] Fix syntax highlighting --- hugo/content/playground/common.ts | 7 +- hugo/content/playground/monarch-generator.ts | 498 ------------------ hugo/content/playground/textmate-generator.ts | 255 +++++++++ 3 files changed, 258 insertions(+), 502 deletions(-) delete mode 100644 hugo/content/playground/monarch-generator.ts create mode 100644 hugo/content/playground/textmate-generator.ts diff --git a/hugo/content/playground/common.ts b/hugo/content/playground/common.ts index df1ebc94..a5fe6017 100644 --- a/hugo/content/playground/common.ts +++ b/hugo/content/playground/common.ts @@ -9,7 +9,6 @@ import { LangiumTextMateContent, DSLInitialContent, } from "./data.js"; -import { generateMonarch } from "./monarch-generator.js"; import { decompressFromEncodedURIComponent } from 'lz-string'; import { Disposable } from "vscode-languageserver"; import { render } from './Tree.js'; @@ -18,7 +17,7 @@ import { addMonacoStyles, createUserConfig, MonacoEditorLanguageClientWrapper } import { DocumentChangeResponse } from "langium-ast-helper"; import { DefaultAstNodeLocator } from "langium"; import { createServicesForGrammar } from "langium/grammar"; - +import { generateTextMate } from "./textmate-generator.js"; export { share, overlay } from './utils.js'; export { addMonacoStyles, MonacoEditorLanguageClientWrapper }; @@ -221,7 +220,7 @@ async function getFreshDSLWrapper( languageId, code, worker, - monarchGrammar: generateMonarch(Grammar, languageId) + textmateGrammar: generateTextMate(Grammar, {id: languageId, grammar: 'UserGrammar'}) }), htmlElement).then(() => { return wrapper; }).catch(async (e: any) => { @@ -252,7 +251,7 @@ async function getFreshLangiumWrapper(htmlElement: HTMLElement): Promise; -} - -/** - * A rule that matches input. Can have either an action, or an array of cases. - */ -interface RegexRule { - regex: RegExp | string; - action: Action | Case[]; -} - -interface IncludeRule { - include: string; -} - -type Rule = RegexRule | IncludeRule; - -/** - * A case that selects a specific action by matching a guard pattern - */ -interface Case { - guard: string; - action: Action; -} - -/** - * Determines whether a given object is a Rule instance - * @param obj Object to check - * @returns Whether this object is a Rule - */ -function isRegexRule(obj: State | Rule): obj is RegexRule { - return ( - (obj as RegexRule).regex !== undefined && - (obj as RegexRule).action !== undefined - ); -} - -function isIncludeRule(obj: State | Rule): obj is IncludeRule { - return (obj as IncludeRule).include !== undefined; -} - -/** - * Name of a token type, such as 'string' - */ -type Token = string; - -/** - * Token class to be used for CSS rendering, such as 'keyword', 'component', or 'type.identifer' - */ -type TokenClass = string; - -/** - * Next state that proceeds from an action, can also be a pop or a push of the current state (like for nested block comments) - */ -type NextState = StateName | "@pop" | "@push"; - -/** - * An action performed when a rule (or a case) matches token. - * It can determine the token class, as well whether to push/pop a tokenizer state - */ -interface Action { - token?: Token; - tokenClass?: TokenClass; - next?: NextState; - cases?: { [name: string]: Action }; - // other more advanced states omitted... -} - -/** - * Abstract representation of a Monarch grammar file - */ -interface MonarchGrammar { - readonly languageDefinition: LanguageDefinition; - readonly tokenizer: Tokenizer; -} - -/** - * Generates a Monarch highlighting grammar file's contents, based on the passed Langium grammar - * @param grammar Langium grammar to use in generating this Monarch syntax highlighting file content - * @param config Langium Config to also use during generation - * @returns Generated Monarch syntax highlighting file content - */ -export function generateMonarch(grammar: GrammarAST.Grammar, id: string) { - const symbols = getSymbols(grammar); - const regex = /[{}[\]()]/; - const operators = symbols.filter((s) => !regex.test(s)); - - // build absract monarch grammar representation - const monarchGrammar: MonarchGrammar = { - languageDefinition: { - name: id, // identifier for generating the grammar export - keywords: getKeywords(grammar), - operators, - symbols, - tokenPostfix: "." + id, // category appended to all tokens - }, - tokenizer: { - states: getTokenizerStates(grammar), - }, - }; - - // return concrete monarch grammar representation - return prettyPrint(monarchGrammar); -} - -/** - * Gets Monarch tokenizer states from a Langium grammar - * @param grammar Langium grammar to source tokenizer states from - * @returns Array of tokenizer states - */ -function getTokenizerStates(grammar: GrammarAST.Grammar): State[] { - // initial state, name is arbitrary, just needs to come first - const initialState: State = { - name: "initial", - rules: getTerminalRules(grammar), - }; - - const whitespaceState: State = { - name: "whitespace", - rules: getWhitespaceRules(grammar), - }; - - const commentState: State = { - name: "comment", - rules: getCommentRules(grammar), - }; - - // order the following additional rules, to prevent - // comment sequences being classified as symbols - - // add include for the whitespace state - initialState.rules.push(whitespaceState); - - // add operator & symbol case handling - initialState.rules.push({ - regex: "@symbols", - action: [ - { - guard: "@operators", - action: { token: "operator" }, - }, - // by default, leave the symbol alone - { - guard: "@default", - action: { token: "" }, - }, - ], - }); - - return [initialState, whitespaceState, commentState]; -} - -/** - * Pretty prints a monarch grammar into a concrete form, suitable for writing to a file - * @param monarchGrammar Grammar to pretty print - * @returns Monarch grammar in concrete form - */ -function prettyPrint(monarchGrammar: MonarchGrammar) { - const name = monarchGrammar.languageDefinition.name; - - const languages = prettyPrintLangDef(monarchGrammar.languageDefinition); - const tokenizer = prettyPrintTokenizer(monarchGrammar.tokenizer); - return { - ...languages, - ...tokenizer - }; -} - -/** - * Generates an entry for a language definition, given a name (token category) and values - * @param name Category of language definition to add - * @param values Values to add under the given category - * @returns GeneratorNode containing this printed language definition entry - */ -function genLanguageDefEntry(name: string, values: string[]) { - return { [name]: values }; -} - -/** - * Pretty prints the language definition portion of a Monarch grammar - * @param languageDef LanguageDefinition to pretty print - */ -function prettyPrintLangDef( - languageDef: LanguageDefinition, -) { - const keywords = genLanguageDefEntry("keywords", languageDef.keywords); - const operators = genLanguageDefEntry("operators", languageDef.operators); - const symbols = { symbols: new RegExp(languageDef.symbols.map(RegExpUtils.escapeRegExp).join("|"))} - return { - ...keywords, - ...operators, - ...symbols - }; -} - -/** - * Pretty prints the tokenizer portion of a Monarch grammar file - * @param tokenizer Tokenizer portion to print out - */ -function prettyPrintTokenizer(tokenizer: Tokenizer) { - const result = tokenizer.states - .map((s) => prettyPrintState(s)) - .reduce((lhs, rhs) => ({ ...lhs, ...rhs }), {}); - return { - tokenizer: result, - }; -} - -/** - * Pretty prints a tokenizer state, composed of various rules - * @param state Tokenizer state to pretty print - */ -function prettyPrintState(state: State) { - return { - [state.name]: state.rules.map((r) => prettyPrintRule(r)), - }; -} - -/** - * Pretty prints a Rule. - * This can either be a literal rule to match w/ an action, or a reference to a state to include here - * @param ruleOrState Rule to pretty print. If it's a state, we include that state's contents implicitly within this context. - * @returns Generator node containing this printed rule - */ -function prettyPrintRule(ruleOrState: Rule | State): Rule { - if (isRegexRule(ruleOrState)) { - return { - regex: - ruleOrState.regex instanceof RegExp - ? ruleOrState.regex - : new RegExp(ruleOrState.regex), - action: prettyPrintAction(ruleOrState.action), - }; - } else if (isIncludeRule(ruleOrState)) { - return ruleOrState; - } else { - // include another state by name, implicitly includes all of its contents - return { include: `@${ruleOrState.name}` }; - } -} - -/** - * Pretty prints the action of a Rule - * @param action Action to print. Can have several keywords to control what the state machine should do next. - * @returns Action in concrete form - */ -function prettyPrintAction(action: Action | Case[]): Action { - if (!Array.isArray(action)) { - return action; - } else { - const cases: { [name: string]: Action } = {}; - action.forEach((a) => { - cases[a.guard] = prettyPrintAction(a.action); - }); - return { cases }; - } -} - -/** - * Extracts Monarch token name from a Langium terminal rule, using either name or type. - * @param rule Rule to convert to a Monarch token name - * @returns Returns the equivalent monarch token name, or the original rule name - */ -function getMonarchTokenName(rule: GrammarAST.TerminalRule): string { - if (rule.name.toLowerCase() === "string") { - // string is clarified as a terminal by name, but not necessarily by type - return "string"; - } else if (rule.type) { - // use rule type - return rule.type.name; - } else { - // fallback to the original name - return rule.name; - } -} - -/** - * Gets whitespace rules from the langium grammar. Includes starting comment sequence. - * @param grammar Langium grammar to extract whitespace rules from - * @returns Array of Monarch whitespace rules - */ -function getWhitespaceRules(grammar: GrammarAST.Grammar): Rule[] { - const rules: Rule[] = []; - for (const rule of grammar.rules) { - if (GrammarAST.isTerminalRule(rule) && GrammarAST.isRegexToken(rule.definition)) { - const regex = new RegExp(GrammarUtils.terminalRegex(rule)); - - if (!GrammarUtils.isCommentTerminal(rule) && !regex.test(" ")) { - // skip rules that are not comments or whitespace - continue; - } - - // token name is either comment or whitespace - const tokenName = GrammarUtils.isCommentTerminal(rule) ? "comment" : "white"; - - const part = RegExpUtils.getTerminalParts(GrammarUtils.terminalRegex(rule))[0]; - - // check if this is a comment terminal w/ a start & end sequence (multi-line) - if (part.start !== "" && part.end !== "" && GrammarUtils.isCommentTerminal(rule)) { - // state-based comment rule, only add push to jump into it - rules.push({ - regex: part.start.replace("/", "\\/"), - action: { token: tokenName, next: "@" + tokenName }, - }); - } else { - // single regex rule, generally for whitespace - rules.push({ - regex: rule.definition.regex, - action: { token: tokenName }, - }); - } - } - } - return rules; -} - -/** - * Gets comment state rules from the Langium grammar. - * Accounts for multi-line comments, but without nesting. - * @param grammar Langium grammar to extract comment rules from - * @returns Array of Monarch comment rules - */ -function getCommentRules(grammar: GrammarAST.Grammar): Rule[] { - const rules: Rule[] = []; - for (const rule of grammar.rules) { - if ( - GrammarAST.isTerminalRule(rule) && - GrammarUtils.isCommentTerminal(rule) && - GrammarAST.isRegexToken(rule.definition) - ) { - const tokenName = "comment"; - const part = RegExpUtils.getTerminalParts(GrammarUtils.terminalRegex(rule))[0]; - if (part.start !== "" && part.end !== "") { - // rules to manage comment start/end - // rule order matters - - const start = part.start.replace("/", "\\/"); - const end = part.end.replace("/", "\\/"); - - // 1st, add anything that's not in the start sequence - rules.push({ - regex: `[^${start}]+`, - action: { token: tokenName }, - }); - - // 2nd, end of sequence, pop this state, keeping others on the stack - rules.push({ - regex: end, - action: { token: tokenName, next: "@pop" }, - }); - - // 3rd, otherwise, start sequence characters are OK in this state - rules.push({ - regex: `[${start}]`, - action: { token: tokenName }, - }); - } - } - } - return rules; -} - -/** - * Retrieves non-comment terminal rules, creating associated actions for them - * @param grammar Grammar to get non-comment terminals from - * @returns Array of Rules to add to a Monarch tokenizer state - */ -function getTerminalRules(grammar: GrammarAST.Grammar): Rule[] { - const rules: Rule[] = []; - for (const rule of grammar.rules) { - if ( - GrammarAST.isTerminalRule(rule) && - !GrammarUtils.isCommentTerminal(rule) && - GrammarAST.isRegexToken(rule.definition) - ) { - const regex = new RegExp(GrammarUtils.terminalRegex(rule)); - - if (regex.test(" ")) { - // disallow terminal rules that match whitespace - continue; - } - - const tokenName = getMonarchTokenName(rule); - // default action... - let action: Action | Case[] = { token: tokenName }; - - if (getKeywords(grammar).some((keyword) => regex.test(keyword))) { - // this rule overlaps with at least one keyword - // add case so keywords aren't tagged incorrectly as this token type - action = [ - { - guard: "@keywords", - action: { token: "keyword" }, - }, - { - guard: "@default", - action, // include default action from above - }, - ]; - } - - rules.push({ - regex: rule.definition.regex, - action, - }); - } - } - return rules; -} - -/** - * Keyword regex for matching keyword terminals, or for only collecting symbol terminals - */ -const KeywordRegex = /[A-Za-z]/; - -/** - * Retrieves keywords from the current grammar - * @param grammar Grammar to get keywords from - * @returns Array of keywords - */ -function getKeywords(grammar: GrammarAST.Grammar): string[] { - return collectKeywords(grammar).filter((kw) => KeywordRegex.test(kw)); -} - -/** - * Retrieve symbols from langium grammar - * @param grammar Grammar to get symbols from - * @returns Array of symbols, effective inverse of getKeywords - */ -function getSymbols(grammar: GrammarAST.Grammar): string[] { - return collectKeywords(grammar).filter((kw) => !KeywordRegex.test(kw)); -} - -export function collectKeywords(grammar: GrammarAST.Grammar): string[] { - const keywords = new Set(); - - for (const rule of stream(grammar.rules).filter(GrammarAST.isParserRule)) { - collectElementKeywords(rule.definition, keywords); - } - - return Array.from(keywords).sort((a, b) => a.localeCompare(b)); -} - -function collectElementKeywords( - element: GrammarAST.AbstractElement, - keywords: Set -) { - if ( - GrammarAST.isAlternatives(element) || - GrammarAST.isGroup(element) || - GrammarAST.isUnorderedGroup(element) - ) { - for (const item of element.elements) { - collectElementKeywords(item, keywords); - } - } else if (GrammarAST.isAssignment(element)) { - collectElementKeywords(element.terminal, keywords); - } else if (GrammarAST.isKeyword(element)) { - keywords.add(element.value); - } -} diff --git a/hugo/content/playground/textmate-generator.ts b/hugo/content/playground/textmate-generator.ts new file mode 100644 index 00000000..c6458606 --- /dev/null +++ b/hugo/content/playground/textmate-generator.ts @@ -0,0 +1,255 @@ +/****************************************************************************** + * Copyright 2021-2022 TypeFox GmbH + * This program and the accompanying materials are made available under the + * terms of the MIT License, which is available in the project root. +******************************************************************************/ +//ATTENTION!!! This file is basically copied from langium-cli! +import type { Grammar } from 'langium'; +import { AstUtils, GrammarAST, GrammarUtils, RegExpUtils, stream, IParserConfig } from 'langium'; + +/* eslint-disable dot-notation */ + +export interface LangiumLanguageConfig { + /** The identifier of your language as used in vscode */ + id: string + /** Path to the grammar file */ + grammar: string + /** File extensions with leading `.` */ + fileExtensions?: string[] + /** Enable case-insensitive keywords parsing */ + caseInsensitive?: boolean + /** Enable generating a TextMate syntax highlighting file */ + textMate?: { + /** Output path to syntax highlighting file */ + out: string + } + /** Enable generating a Monarch syntax highlighting file */ + monarch?: { + /** Output path to syntax highlighting file */ + out: string + } + /** Enable generating a Prism syntax highlighting file */ + prism?: { + /** Output path to syntax highlighting file */ + out: string + } + /** Enable generating railroad syntax diagrams */ + railroad?: { + /** Output path for railroad diagrams */ + out: string; + /** Whether to print diagrams all into a single html file or in separate svg files */ + mode?: 'html' | 'svg'; + /** Path to a css file that will be included in the generated output files */ + css?: string; + } + /** Configure the chevrotain parser for a single language */ + chevrotainParserConfig?: IParserConfig +} + + +export interface TextMateGrammar { + repository: Repository; + readonly scopeName: string; + readonly patterns: Pattern[]; + readonly injections?: { [expression: string]: Pattern }; + readonly injectionSelector?: string; + readonly fileTypes?: string[]; + readonly name?: string; + readonly firstLineMatch?: string; +} + +export interface Repository { + [name: string]: Pattern; +} + +export interface Pattern { + id?: number; + readonly include?: string; + readonly name?: string; + readonly contentName?: string; + readonly match?: string; + readonly captures?: Captures; + readonly begin?: string; + readonly beginCaptures?: Captures; + readonly end?: string; + readonly endCaptures?: Captures; + readonly while?: string; + readonly whileCaptures?: Captures; + readonly patterns?: Pattern[]; + readonly repository?: Repository; + readonly applyEndPatternLast?: boolean; +} + +export interface Captures { + [captureId: string]: Pattern; +} + +export function generateTextMate(grammar: Grammar, config: LangiumLanguageConfig): TextMateGrammar { + const json: TextMateGrammar = { + name: config.id, + scopeName: `source.${config.id}`, + fileTypes: config.fileExtensions ?? [], + patterns: getPatterns(grammar, config), + repository: getRepository(grammar, config) + }; + + return json; +} + +function getPatterns(grammar: Grammar, config: LangiumLanguageConfig): Pattern[] { + const patterns: Pattern[] = []; + patterns.push({ + include: '#comments' + }); + patterns.push(getControlKeywords(grammar, config)); + patterns.push(...getStringPatterns(grammar, config)); + return patterns; +} + +function getRepository(grammar: Grammar, config: LangiumLanguageConfig): Repository { + const repository: Repository = {}; + const commentPatterns: Pattern[] = []; + let stringEscapePattern: Pattern | undefined; + for (const rule of grammar.rules) { + if (GrammarAST.isTerminalRule(rule) && GrammarUtils.isCommentTerminal(rule)) { + const parts = RegExpUtils.getTerminalParts(GrammarUtils.terminalRegex(rule)); + for (const part of parts) { + if (part.end) { + commentPatterns.push({ + 'name': `comment.block.${config.id}`, + 'begin': part.start, + 'beginCaptures': { + '0': { + 'name': `punctuation.definition.comment.${config.id}` + } + }, + 'end': part.end, + 'endCaptures': { + '0': { + 'name': `punctuation.definition.comment.${config.id}` + } + } + }); + } else { + commentPatterns.push({ + 'begin': part.start, + 'beginCaptures': { + '1': { + 'name': `punctuation.whitespace.comment.leading.${config.id}` + } + }, + 'end': '(?=$)', + 'name': `comment.line.${config.id}` + }); + } + } + } else if (GrammarAST.isTerminalRule(rule) && rule.name.toLowerCase() === 'string') { + stringEscapePattern = { + 'name': `constant.character.escape.${config.id}`, + 'match': '\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)' + }; + } + } + + if (commentPatterns.length > 0) { + repository['comments'] = { + 'patterns': commentPatterns + }; + } + if (stringEscapePattern) { + repository['string-character-escape'] = stringEscapePattern; + } + return repository; +} + +function getControlKeywords(grammar: Grammar, pack: LangiumLanguageConfig): Pattern { + const regex = /[A-Za-z]/; + const controlKeywords = collectKeywords(grammar).filter(kw => regex.test(kw)); + const groups = groupKeywords(controlKeywords, pack.caseInsensitive); + return { + 'name': `keyword.control.${pack.id}`, + 'match': groups.join('|') + }; +} + +function groupKeywords(keywords: string[], caseInsensitive: boolean | undefined): string[] { + const groups: { + letter: string[], + leftSpecial: string[], + rightSpecial: string[], + special: string[]; + } = { letter: [], leftSpecial: [], rightSpecial: [], special: [] }; + + keywords.forEach(keyword => { + const keywordPattern = caseInsensitive ? RegExpUtils.getCaseInsensitivePattern(keyword) : RegExpUtils.escapeRegExp(keyword); + if (/\w/.test(keyword[0])) { + if (/\w/.test(keyword[keyword.length - 1])) { + groups.letter.push(keywordPattern); + } else { + groups.rightSpecial.push(keywordPattern); + } + } else { + if ((/\w/).test(keyword[keyword.length - 1])) { + groups.leftSpecial.push(keywordPattern); + } else { + groups.special.push(keywordPattern); + } + } + }); + + const res = []; + if (groups.letter.length) res.push(`\\b(${groups.letter.join('|')})\\b`); + if (groups.leftSpecial.length) res.push(`\\B(${groups.leftSpecial.join('|')})\\b`); + if (groups.rightSpecial.length) res.push(`\\b(${groups.rightSpecial.join('|')})\\B`); + if (groups.special.length) res.push(`\\B(${groups.special.join('|')})\\B`); + return res; +} + +function getStringPatterns(grammar: Grammar, pack: LangiumLanguageConfig): Pattern[] { + const terminals = stream(grammar.rules).filter(GrammarAST.isTerminalRule); + const stringTerminal = terminals.find(e => e.name.toLowerCase() === 'string'); + const stringPatterns: Pattern[] = []; + if (stringTerminal) { + const parts = RegExpUtils.getTerminalParts(GrammarUtils.terminalRegex(stringTerminal)); + for (const part of parts) { + if (part.end) { + stringPatterns.push({ + 'name': `string.quoted.${delimiterName(part.start)}.${pack.id}`, + 'begin': part.start, + 'end': part.end, + 'patterns': [ + { + 'include': '#string-character-escape' + } + ] + }); + } + } + } + return stringPatterns; +} + +function delimiterName(delimiter: string): string { + if (delimiter === "'") { + return 'single'; + } else if (delimiter === '"') { + return 'double'; + } else if (delimiter === '`') { + return 'backtick'; + } else { + return 'delimiter'; + } +} + +export function collectKeywords(grammar: Grammar): string[] { + const keywords = new Set(); + const reachableRules = GrammarUtils.getAllReachableRules(grammar, false); + + for (const keyword of stream(reachableRules) + .filter(GrammarAST.isParserRule) + .flatMap(rule => AstUtils.streamAllContents(rule).filter(GrammarAST.isKeyword))) { + keywords.add(keyword.value); + } + + return Array.from(keywords).sort(); +} \ No newline at end of file From 67e47429bf952795cdbcc4209a0bb6a63651e804 Mon Sep 17 00:00:00 2001 From: Markus Rudolph Date: Wed, 20 Mar 2024 10:45:29 +0100 Subject: [PATCH 10/14] Remove ESBuild file, Renaming data to constants --- hugo/content/playground/common.ts | 2 +- hugo/content/playground/{data.ts => constants.ts} | 0 hugo/package.json | 2 +- hugo/sql.esbuild.mjs | 8 -------- 4 files changed, 2 insertions(+), 10 deletions(-) rename hugo/content/playground/{data.ts => constants.ts} (100%) delete mode 100644 hugo/sql.esbuild.mjs diff --git a/hugo/content/playground/common.ts b/hugo/content/playground/common.ts index a5fe6017..fbf825aa 100644 --- a/hugo/content/playground/common.ts +++ b/hugo/content/playground/common.ts @@ -8,7 +8,7 @@ import { HelloWorldGrammar, LangiumTextMateContent, DSLInitialContent, -} from "./data.js"; +} from "./constants.js"; import { decompressFromEncodedURIComponent } from 'lz-string'; import { Disposable } from "vscode-languageserver"; import { render } from './Tree.js'; diff --git a/hugo/content/playground/data.ts b/hugo/content/playground/constants.ts similarity index 100% rename from hugo/content/playground/data.ts rename to hugo/content/playground/constants.ts diff --git a/hugo/package.json b/hugo/package.json index 7b46358e..fbc78ff0 100644 --- a/hugo/package.json +++ b/hugo/package.json @@ -15,7 +15,7 @@ "build:worker/playground-langium": "esbuild ./content/playground/langium-worker.ts --bundle --format=iife --outfile=./static/playground/libs/worker/langiumServerWorker.js", "build:worker/playground-user": "esbuild ./content/playground/user-worker.ts --bundle --format=iife --outfile=./static/playground/libs/worker/userServerWorker.js", "build:worker/playground-common": "esbuild ./content/playground/common.ts --bundle --format=esm --outfile=./static/playground/libs/worker/common.js", - "build:worker/sql": "node sql.esbuild.mjs", + "build:worker/sql": "esbuild ./assets/scripts/sql/language-server.ts --bundle --format=iife --outfile=./static/showcase/libs/worker/sqlServerWorker.js", "build:worker/minilogo": "esbuild ../node_modules/langium-minilogo/out/language-server/main-browser.js --bundle --format=iife --outfile=./static/showcase/libs/worker/minilogoServerWorker.js", "build:static": "npm run clean:static && npm run build:worker/statemachine && npm run build:worker/domainmodel && npm run build:worker/sql && npm run build:worker/minilogo && npm run build:worker/arithmetics && npm run build:worker/playground-common && npm run build:worker/playground-langium && npm run build:worker/playground-user && npm run copy:monaco-workers", "build": "npm run build:static && cross-env NODE_ENV=production hugo --config ./config.toml -b / -d ../public --gc --minify ", diff --git a/hugo/sql.esbuild.mjs b/hugo/sql.esbuild.mjs deleted file mode 100644 index a4637b78..00000000 --- a/hugo/sql.esbuild.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import * as esbuild from 'esbuild'; - -await esbuild.build({ - entryPoints: ['./assets/scripts/sql/language-server.ts'], - bundle: true, - format: "iife", - outfile: './static/showcase/libs/worker/sqlServerWorker.js', -}) \ No newline at end of file From 9f67db6cd627d656572ec506af97706f525707aa Mon Sep 17 00:00:00 2001 From: Markus Rudolph Date: Tue, 2 Apr 2024 08:58:41 +0200 Subject: [PATCH 11/14] Resolve first comments --- hugo/content/playground/preprocess.ts | 20 +++++--------------- hugo/package.json | 2 +- package-lock.json | 2 +- 3 files changed, 7 insertions(+), 17 deletions(-) diff --git a/hugo/content/playground/preprocess.ts b/hugo/content/playground/preprocess.ts index d9bfd51f..c877922b 100644 --- a/hugo/content/playground/preprocess.ts +++ b/hugo/content/playground/preprocess.ts @@ -59,15 +59,11 @@ export interface PropertyNode { name: string; type: ValueNode; } + +export type AstValue = AstNode | AstNode[] | string | number | boolean | Reference | undefined; + export function preprocessAstNodeValue( - valueOrValues: - | AstNode - | AstNode[] - | string - | number - | boolean - | Reference - | undefined, + valueOrValues: AstValue, locator: AstNodeLocator ): ValueNode { if (Array.isArray(valueOrValues)) { @@ -103,13 +99,7 @@ export function preprocessAstNodeObject( const properties: PropertyNode[] = Object.keys(node) .filter((n) => !n.startsWith("$")) .map((n) => { - const valueOrValues = ((node as any)[n]) as - | AstNode - | AstNode[] - | "string" - | "number" - | "boolean" - | Reference; + const valueOrValues = ((node as any)[n]) as AstValue; return { name: n, type: preprocessAstNodeValue(valueOrValues, locator), diff --git a/hugo/package.json b/hugo/package.json index fbc78ff0..55c3dc86 100644 --- a/hugo/package.json +++ b/hugo/package.json @@ -39,7 +39,7 @@ "clsx": "^1.2.1", "d3": "^7.8.5", "hugo-extended": "~0.89.4", - "langium": "~3.0.0", + "langium": "^3.0.0", "langium-arithmetics-dsl": "^3.0.0", "langium-ast-helper": "0.1.2", "langium-domainmodel-dsl": "^3.0.0", diff --git a/package-lock.json b/package-lock.json index 4d451611..98ea9bbe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -202,7 +202,7 @@ "clsx": "^1.2.1", "d3": "^7.8.5", "hugo-extended": "~0.89.4", - "langium": "~3.0.0", + "langium": "^3.0.0", "langium-arithmetics-dsl": "^3.0.0", "langium-ast-helper": "0.1.2", "langium-domainmodel-dsl": "^3.0.0", From cf9f6d03333136b00fe8f4acc83da70d9976213c Mon Sep 17 00:00:00 2001 From: Markus Rudolph Date: Tue, 2 Apr 2024 09:05:24 +0200 Subject: [PATCH 12/14] Splitting tsconfig.json to have base part and specific non-redundant configs --- core/tsconfig.json | 6 +----- hugo/tsconfig.json | 6 +----- tsconfig.json | 10 ++++++++++ 3 files changed, 12 insertions(+), 10 deletions(-) create mode 100644 tsconfig.json diff --git a/core/tsconfig.json b/core/tsconfig.json index 501bcbcb..0681bfee 100644 --- a/core/tsconfig.json +++ b/core/tsconfig.json @@ -1,12 +1,8 @@ { + "extends": "../tsconfig.json", "compilerOptions": { - "noImplicitAny": true, - "target": "ES2022", - "module": "Node16", - "moduleResolution": "Node16", "rootDir": "src", "outDir": "dist", - "declaration": true, "declarationDir": "dist" }, "include": [ diff --git a/hugo/tsconfig.json b/hugo/tsconfig.json index 0c1fa7ba..dd1f6c10 100644 --- a/hugo/tsconfig.json +++ b/hugo/tsconfig.json @@ -1,12 +1,8 @@ { + "extends": "../tsconfig.json", "compilerOptions": { - "noImplicitAny": true, - "target": "ES2022", - "module": "NodeNext", - "moduleResolution": "NodeNext", "rootDir": ".", "outDir": "dist", - "declaration": true, "declarationDir": "dist", "jsx": "react-jsx" }, diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..d6ce28a3 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "noImplicitAny": true, + "target": "ES2022", + "module": "Node16", + "moduleResolution": "Node16", + "declaration": true, + "sourceMap": true + } +} \ No newline at end of file From 7ea70ead71c52e525de89b83ce697c28a40da012 Mon Sep 17 00:00:00 2001 From: Markus Rudolph Date: Tue, 23 Apr 2024 09:41:37 +0200 Subject: [PATCH 13/14] Remove TextMate generator and use the one fro the CLI --- hugo/content/playground/common.ts | 8 +- hugo/content/playground/textmate-generator.ts | 255 ------------------ hugo/package.json | 1 + package-lock.json | 75 ++++++ 4 files changed, 79 insertions(+), 260 deletions(-) delete mode 100644 hugo/content/playground/textmate-generator.ts diff --git a/hugo/content/playground/common.ts b/hugo/content/playground/common.ts index fbf825aa..b67af5fe 100644 --- a/hugo/content/playground/common.ts +++ b/hugo/content/playground/common.ts @@ -3,7 +3,6 @@ * This program and the accompanying materials are made available under the * terms of the MIT License, which is available in the project root. ******************************************************************************/ - import { HelloWorldGrammar, LangiumTextMateContent, @@ -17,7 +16,7 @@ import { addMonacoStyles, createUserConfig, MonacoEditorLanguageClientWrapper } import { DocumentChangeResponse } from "langium-ast-helper"; import { DefaultAstNodeLocator } from "langium"; import { createServicesForGrammar } from "langium/grammar"; -import { generateTextMate } from "./textmate-generator.js"; +import { generateTextMate } from "langium-cli/textmate"; export { share, overlay } from './utils.js'; export { addMonacoStyles, MonacoEditorLanguageClientWrapper }; @@ -210,17 +209,16 @@ async function getFreshDSLWrapper( code: string, grammarText: string ): Promise { - // construct and set a new monarch syntax onto the editor const { Grammar } = await createServicesForGrammar({ grammar: grammarText }); - const worker = await getLSWorkerForGrammar(grammarText); const wrapper = new MonacoEditorLanguageClientWrapper(); + const textmateGrammar = JSON.parse(generateTextMate(Grammar, { id: languageId, grammar: 'UserGrammar' })); return wrapper.start(createUserConfig({ languageId, code, worker, - textmateGrammar: generateTextMate(Grammar, {id: languageId, grammar: 'UserGrammar'}) + textmateGrammar }), htmlElement).then(() => { return wrapper; }).catch(async (e: any) => { diff --git a/hugo/content/playground/textmate-generator.ts b/hugo/content/playground/textmate-generator.ts deleted file mode 100644 index c6458606..00000000 --- a/hugo/content/playground/textmate-generator.ts +++ /dev/null @@ -1,255 +0,0 @@ -/****************************************************************************** - * Copyright 2021-2022 TypeFox GmbH - * This program and the accompanying materials are made available under the - * terms of the MIT License, which is available in the project root. -******************************************************************************/ -//ATTENTION!!! This file is basically copied from langium-cli! -import type { Grammar } from 'langium'; -import { AstUtils, GrammarAST, GrammarUtils, RegExpUtils, stream, IParserConfig } from 'langium'; - -/* eslint-disable dot-notation */ - -export interface LangiumLanguageConfig { - /** The identifier of your language as used in vscode */ - id: string - /** Path to the grammar file */ - grammar: string - /** File extensions with leading `.` */ - fileExtensions?: string[] - /** Enable case-insensitive keywords parsing */ - caseInsensitive?: boolean - /** Enable generating a TextMate syntax highlighting file */ - textMate?: { - /** Output path to syntax highlighting file */ - out: string - } - /** Enable generating a Monarch syntax highlighting file */ - monarch?: { - /** Output path to syntax highlighting file */ - out: string - } - /** Enable generating a Prism syntax highlighting file */ - prism?: { - /** Output path to syntax highlighting file */ - out: string - } - /** Enable generating railroad syntax diagrams */ - railroad?: { - /** Output path for railroad diagrams */ - out: string; - /** Whether to print diagrams all into a single html file or in separate svg files */ - mode?: 'html' | 'svg'; - /** Path to a css file that will be included in the generated output files */ - css?: string; - } - /** Configure the chevrotain parser for a single language */ - chevrotainParserConfig?: IParserConfig -} - - -export interface TextMateGrammar { - repository: Repository; - readonly scopeName: string; - readonly patterns: Pattern[]; - readonly injections?: { [expression: string]: Pattern }; - readonly injectionSelector?: string; - readonly fileTypes?: string[]; - readonly name?: string; - readonly firstLineMatch?: string; -} - -export interface Repository { - [name: string]: Pattern; -} - -export interface Pattern { - id?: number; - readonly include?: string; - readonly name?: string; - readonly contentName?: string; - readonly match?: string; - readonly captures?: Captures; - readonly begin?: string; - readonly beginCaptures?: Captures; - readonly end?: string; - readonly endCaptures?: Captures; - readonly while?: string; - readonly whileCaptures?: Captures; - readonly patterns?: Pattern[]; - readonly repository?: Repository; - readonly applyEndPatternLast?: boolean; -} - -export interface Captures { - [captureId: string]: Pattern; -} - -export function generateTextMate(grammar: Grammar, config: LangiumLanguageConfig): TextMateGrammar { - const json: TextMateGrammar = { - name: config.id, - scopeName: `source.${config.id}`, - fileTypes: config.fileExtensions ?? [], - patterns: getPatterns(grammar, config), - repository: getRepository(grammar, config) - }; - - return json; -} - -function getPatterns(grammar: Grammar, config: LangiumLanguageConfig): Pattern[] { - const patterns: Pattern[] = []; - patterns.push({ - include: '#comments' - }); - patterns.push(getControlKeywords(grammar, config)); - patterns.push(...getStringPatterns(grammar, config)); - return patterns; -} - -function getRepository(grammar: Grammar, config: LangiumLanguageConfig): Repository { - const repository: Repository = {}; - const commentPatterns: Pattern[] = []; - let stringEscapePattern: Pattern | undefined; - for (const rule of grammar.rules) { - if (GrammarAST.isTerminalRule(rule) && GrammarUtils.isCommentTerminal(rule)) { - const parts = RegExpUtils.getTerminalParts(GrammarUtils.terminalRegex(rule)); - for (const part of parts) { - if (part.end) { - commentPatterns.push({ - 'name': `comment.block.${config.id}`, - 'begin': part.start, - 'beginCaptures': { - '0': { - 'name': `punctuation.definition.comment.${config.id}` - } - }, - 'end': part.end, - 'endCaptures': { - '0': { - 'name': `punctuation.definition.comment.${config.id}` - } - } - }); - } else { - commentPatterns.push({ - 'begin': part.start, - 'beginCaptures': { - '1': { - 'name': `punctuation.whitespace.comment.leading.${config.id}` - } - }, - 'end': '(?=$)', - 'name': `comment.line.${config.id}` - }); - } - } - } else if (GrammarAST.isTerminalRule(rule) && rule.name.toLowerCase() === 'string') { - stringEscapePattern = { - 'name': `constant.character.escape.${config.id}`, - 'match': '\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)' - }; - } - } - - if (commentPatterns.length > 0) { - repository['comments'] = { - 'patterns': commentPatterns - }; - } - if (stringEscapePattern) { - repository['string-character-escape'] = stringEscapePattern; - } - return repository; -} - -function getControlKeywords(grammar: Grammar, pack: LangiumLanguageConfig): Pattern { - const regex = /[A-Za-z]/; - const controlKeywords = collectKeywords(grammar).filter(kw => regex.test(kw)); - const groups = groupKeywords(controlKeywords, pack.caseInsensitive); - return { - 'name': `keyword.control.${pack.id}`, - 'match': groups.join('|') - }; -} - -function groupKeywords(keywords: string[], caseInsensitive: boolean | undefined): string[] { - const groups: { - letter: string[], - leftSpecial: string[], - rightSpecial: string[], - special: string[]; - } = { letter: [], leftSpecial: [], rightSpecial: [], special: [] }; - - keywords.forEach(keyword => { - const keywordPattern = caseInsensitive ? RegExpUtils.getCaseInsensitivePattern(keyword) : RegExpUtils.escapeRegExp(keyword); - if (/\w/.test(keyword[0])) { - if (/\w/.test(keyword[keyword.length - 1])) { - groups.letter.push(keywordPattern); - } else { - groups.rightSpecial.push(keywordPattern); - } - } else { - if ((/\w/).test(keyword[keyword.length - 1])) { - groups.leftSpecial.push(keywordPattern); - } else { - groups.special.push(keywordPattern); - } - } - }); - - const res = []; - if (groups.letter.length) res.push(`\\b(${groups.letter.join('|')})\\b`); - if (groups.leftSpecial.length) res.push(`\\B(${groups.leftSpecial.join('|')})\\b`); - if (groups.rightSpecial.length) res.push(`\\b(${groups.rightSpecial.join('|')})\\B`); - if (groups.special.length) res.push(`\\B(${groups.special.join('|')})\\B`); - return res; -} - -function getStringPatterns(grammar: Grammar, pack: LangiumLanguageConfig): Pattern[] { - const terminals = stream(grammar.rules).filter(GrammarAST.isTerminalRule); - const stringTerminal = terminals.find(e => e.name.toLowerCase() === 'string'); - const stringPatterns: Pattern[] = []; - if (stringTerminal) { - const parts = RegExpUtils.getTerminalParts(GrammarUtils.terminalRegex(stringTerminal)); - for (const part of parts) { - if (part.end) { - stringPatterns.push({ - 'name': `string.quoted.${delimiterName(part.start)}.${pack.id}`, - 'begin': part.start, - 'end': part.end, - 'patterns': [ - { - 'include': '#string-character-escape' - } - ] - }); - } - } - } - return stringPatterns; -} - -function delimiterName(delimiter: string): string { - if (delimiter === "'") { - return 'single'; - } else if (delimiter === '"') { - return 'double'; - } else if (delimiter === '`') { - return 'backtick'; - } else { - return 'delimiter'; - } -} - -export function collectKeywords(grammar: Grammar): string[] { - const keywords = new Set(); - const reachableRules = GrammarUtils.getAllReachableRules(grammar, false); - - for (const keyword of stream(reachableRules) - .filter(GrammarAST.isParserRule) - .flatMap(rule => AstUtils.streamAllContents(rule).filter(GrammarAST.isKeyword))) { - keywords.add(keyword.value); - } - - return Array.from(keywords).sort(); -} \ No newline at end of file diff --git a/hugo/package.json b/hugo/package.json index 55c3dc86..4b4ec22d 100644 --- a/hugo/package.json +++ b/hugo/package.json @@ -42,6 +42,7 @@ "langium": "^3.0.0", "langium-arithmetics-dsl": "^3.0.0", "langium-ast-helper": "0.1.2", + "langium-cli": "^3.0.2", "langium-domainmodel-dsl": "^3.0.0", "langium-minilogo": "^3.0.0", "langium-sql": "^0.3.2", diff --git a/package-lock.json b/package-lock.json index 98ea9bbe..9893a4a5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -205,6 +205,7 @@ "langium": "^3.0.0", "langium-arithmetics-dsl": "^3.0.0", "langium-ast-helper": "0.1.2", + "langium-cli": "^3.0.2", "langium-domainmodel-dsl": "^3.0.0", "langium-minilogo": "^3.0.0", "langium-sql": "^0.3.2", @@ -4174,6 +4175,14 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonschema": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", + "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", + "engines": { + "node": "*" + } + }, "node_modules/keyv": { "version": "4.5.3", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", @@ -4272,6 +4281,58 @@ "resolved": "https://registry.npmjs.org/langium-ast-helper/-/langium-ast-helper-0.1.2.tgz", "integrity": "sha512-xS64ZOp3fOUcTnlQoLwYwJKi2SU8yPeKGLFZlhxFUR4zJCtJ0teFfwsC+TR7GXWS5Tf3pxG+/Lf4mgkpKhOY+Q==" }, + "node_modules/langium-cli": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/langium-cli/-/langium-cli-3.0.2.tgz", + "integrity": "sha512-5+YMBIxth0RbQAFdTl/LekIidQaUKwUIailYbn4z33FCSIxj/2N+ohPTqkzBwbjaJZbmJicHTxXV59/9jBn7wQ==", + "dependencies": { + "chalk": "~5.3.0", + "commander": "~11.0.0", + "fs-extra": "~11.1.1", + "jsonschema": "~1.4.1", + "langium": "~3.0.0", + "langium-railroad": "~3.0.0", + "lodash": "~4.17.21" + }, + "bin": { + "langium": "bin/langium.js" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/langium-cli/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/langium-cli/node_modules/commander": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", + "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", + "engines": { + "node": ">=16" + } + }, + "node_modules/langium-cli/node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/langium-domainmodel-dsl": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/langium-domainmodel-dsl/-/langium-domainmodel-dsl-3.0.0.tgz", @@ -4404,6 +4465,15 @@ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==" }, + "node_modules/langium-railroad": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/langium-railroad/-/langium-railroad-3.0.0.tgz", + "integrity": "sha512-GQOnQBGl5gJqzgK/4bKvJO5QhJGNnprpYH6Fghbl4FviVLHwP6yzyqiouDelLSoCadChCr2JqKaBp5HXv7CgWw==", + "dependencies": { + "langium": "~3.0.0", + "railroad-diagrams": "~1.0.0" + } + }, "node_modules/langium-sql": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/langium-sql/-/langium-sql-0.3.2.tgz", @@ -5575,6 +5645,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/railroad-diagrams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", + "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==" + }, "node_modules/react": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", From 3d326f7d4578732dbbb9729f1cae56980e2bb6b9 Mon Sep 17 00:00:00 2001 From: Markus Rudolph Date: Tue, 23 Apr 2024 11:18:53 +0200 Subject: [PATCH 14/14] Update Langium-CLI --- hugo/package.json | 2 +- package-lock.json | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/hugo/package.json b/hugo/package.json index 4b4ec22d..bb8189bf 100644 --- a/hugo/package.json +++ b/hugo/package.json @@ -42,7 +42,7 @@ "langium": "^3.0.0", "langium-arithmetics-dsl": "^3.0.0", "langium-ast-helper": "0.1.2", - "langium-cli": "^3.0.2", + "langium-cli": "^3.0.3", "langium-domainmodel-dsl": "^3.0.0", "langium-minilogo": "^3.0.0", "langium-sql": "^0.3.2", diff --git a/package-lock.json b/package-lock.json index 9893a4a5..6abb9bfd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -205,7 +205,7 @@ "langium": "^3.0.0", "langium-arithmetics-dsl": "^3.0.0", "langium-ast-helper": "0.1.2", - "langium-cli": "^3.0.2", + "langium-cli": "^3.0.3", "langium-domainmodel-dsl": "^3.0.0", "langium-minilogo": "^3.0.0", "langium-sql": "^0.3.2", @@ -4282,9 +4282,9 @@ "integrity": "sha512-xS64ZOp3fOUcTnlQoLwYwJKi2SU8yPeKGLFZlhxFUR4zJCtJ0teFfwsC+TR7GXWS5Tf3pxG+/Lf4mgkpKhOY+Q==" }, "node_modules/langium-cli": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/langium-cli/-/langium-cli-3.0.2.tgz", - "integrity": "sha512-5+YMBIxth0RbQAFdTl/LekIidQaUKwUIailYbn4z33FCSIxj/2N+ohPTqkzBwbjaJZbmJicHTxXV59/9jBn7wQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/langium-cli/-/langium-cli-3.0.3.tgz", + "integrity": "sha512-g6PdhEq5IiYWK/oiySILglPvFdK6ofQdzC+U7PJmFH++bDKu0DGdxjWzDauUN5WUDyVQETWKgtYDmmbcxPzN0w==", "dependencies": { "chalk": "~5.3.0", "commander": "~11.0.0",