From 3bfb81444f58e676a2a15dba5a9abf75b9773202 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 7 Feb 2024 00:38:59 -0800 Subject: [PATCH 01/45] Add request to get serialized AST. --- .vscode/launch.json | 11 ++++++----- .vscode/tasks.json | 11 +++++++++++ lingua-franca | 2 +- package.json | 4 ++++ src/build_commands.ts | 13 ++++++++++++- 5 files changed, 34 insertions(+), 7 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index d9f6ea6e1..4ea112335 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -5,12 +5,13 @@ "args": [ "--extensionDevelopmentPath=${workspaceFolder}" ], - "name": "Launch Extension", + "name": "Launch LF Extension", "outFiles": [ "${workspaceFolder}/out/**/*.js" ], "request": "launch", - "type": "extensionHost" + "type": "extensionHost", + "preLaunchTask": "${defaultBuildTask}" }, { "name": "Launch VS Code Extension (Socket) LF with Klighd Extension", @@ -18,14 +19,14 @@ "request": "launch", "args": [ "--disable-extensions", - "--extensionDevelopmentPath=${workspaceFolder}/../klighd-vscode/applications/klighd-vscode", + "--extensionDevelopmentPath=${workspaceFolder}/../klighd-vscode/applications/klighd-vscode", "--extensionDevelopmentPath=${workspaceFolder}/", ], "env": { "LF_LS_PORT": "7670" }, "skipFiles": [ - "/**" + "/**" ], "sourceMaps": true, "smartStep": true, @@ -49,7 +50,7 @@ "LF_LS_PORT": "7670" }, "skipFiles": [ - "/**" + "/**" ], "sourceMaps": true, "smartStep": true, diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 53eb4df46..e32950a57 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -4,6 +4,17 @@ { "type": "npm", "script": "compile-tests" + }, + { + "type": "npm", + "script": "compile", + "group": { + "kind": "build", + "isDefault": true + }, + "problemMatcher": [], + "label": "npm: compile", + "detail": "npm run esbuild-base -- --sourcemap" } ] } diff --git a/lingua-franca b/lingua-franca index d4201912c..9e909a822 160000 --- a/lingua-franca +++ b/lingua-franca @@ -1 +1 @@ -Subproject commit d4201912c65cfe6e944dbf12c6ce9cf446d6c90c +Subproject commit 9e909a822efbf8adb68a83ae50576aa5217b23e4 diff --git a/package.json b/package.json index 94ff5096b..8804822b4 100644 --- a/package.json +++ b/package.json @@ -69,6 +69,10 @@ } ], "commands": [ + { + "command": "linguafranca.getAst", + "title": "Lingua Franca: Get AST" + }, { "command": "linguafranca.build", "title": "Lingua Franca: Build" diff --git a/src/build_commands.ts b/src/build_commands.ts index 8adbad1b8..439b4fead 100644 --- a/src/build_commands.ts +++ b/src/build_commands.ts @@ -24,6 +24,15 @@ function getLfUri(textDocument: vscode.TextDocument, failSilently = false): stri type MessageShowerTransformer = (MessageDisplayHelper: MessageDisplayHelper) => ((message: string) => void); +const getAst = (withLogs: MessageShowerTransformer, client: LanguageClient) => (textEditor: vscode.TextEditor) => { + const uri = getLfUri(textEditor.document); + if (!uri) return; + client.sendRequest('parser/ast', uri).then((ast: string) => { + if (ast) withLogs(vscode.window.showInformationMessage)(ast); + else withLogs(vscode.window.showErrorMessage)('Failed to get AST.'); + }); +} + /** * Return the action that should be taken in case of a request to build. * @param withLogs A messageShowerTransformer that lets the user request to view logs. @@ -86,7 +95,9 @@ export function registerBuildCommands(context: vscode.ExtensionContext, client: ).then(choice => { if (choice === 'Show output') client.outputChannel.show(); }); - + context.subscriptions.push(vscode.commands.registerTextEditorCommand( + 'linguafranca.getAst', getAst(withLogs, client) + )); context.subscriptions.push(vscode.commands.registerTextEditorCommand( 'linguafranca.build', build(withLogs, client) )); From d9c677c8eacc449b29c411b8ea52a3232d6405c1 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 7 Feb 2024 17:35:18 -0800 Subject: [PATCH 02/45] Let other extensions request the AST. --- src/build_commands.ts | 28 ++++++++++++++++++---------- src/extension.ts | 6 ++++-- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/build_commands.ts b/src/build_commands.ts index 439b4fead..f6aec5b18 100644 --- a/src/build_commands.ts +++ b/src/build_commands.ts @@ -24,14 +24,22 @@ function getLfUri(textDocument: vscode.TextDocument, failSilently = false): stri type MessageShowerTransformer = (MessageDisplayHelper: MessageDisplayHelper) => ((message: string) => void); -const getAst = (withLogs: MessageShowerTransformer, client: LanguageClient) => (textEditor: vscode.TextEditor) => { - const uri = getLfUri(textEditor.document); - if (!uri) return; - client.sendRequest('parser/ast', uri).then((ast: string) => { - if (ast) withLogs(vscode.window.showInformationMessage)(ast); - else withLogs(vscode.window.showErrorMessage)('Failed to get AST.'); - }); -} +const getAst = + (withLogs: MessageShowerTransformer, client: LanguageClient) => + async () => { + vscode.window.showInformationMessage("Getting AST..."); + const uri = getLfUri(vscode.window.activeTextEditor.document); + if (!uri) { + return "The currently active file is not a Lingua Franca source file."; + } + let ret = await client.sendRequest("parser/ast", uri); + if (ret === undefined) { + withLogs(vscode.window.showErrorMessage)("Failed to get AST."); + return; + } + vscode.window.showInformationMessage("AST received: " + ret); + return ret; + }; /** * Return the action that should be taken in case of a request to build. @@ -95,8 +103,8 @@ export function registerBuildCommands(context: vscode.ExtensionContext, client: ).then(choice => { if (choice === 'Show output') client.outputChannel.show(); }); - context.subscriptions.push(vscode.commands.registerTextEditorCommand( - 'linguafranca.getAst', getAst(withLogs, client) + context.subscriptions.push(vscode.commands.registerCommand( + "linguafranca.getAst", getAst(withLogs, client) )); context.subscriptions.push(vscode.commands.registerTextEditorCommand( 'linguafranca.build', build(withLogs, client) diff --git a/src/extension.ts b/src/extension.ts index c1199d5ff..dbb2b1dee 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -13,7 +13,7 @@ import { registerBuildCommands, registerNewFileCommand } from './build_commands' import * as checkDependencies from './check_dependencies'; let client: LanguageClient; -let socket: Socket +let socket: Socket; export async function activate(context: vscode.ExtensionContext) { @@ -30,7 +30,9 @@ export async function activate(context: vscode.ExtensionContext) { (checkDependencies.Dependency.Java) (vscode.window.showErrorMessage) () - )) return; + )) { + return; + } const serverOptions: ServerOptions = createServerOptions(context); From 552176cb431741909a8dc9fa76bd13ce4e6dd83b Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Thu, 8 Feb 2024 01:07:14 -0800 Subject: [PATCH 03/45] Add command to get info about the entire workspace --- package.json | 4 ++++ src/build_commands.ts | 44 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/package.json b/package.json index 8804822b4..b11abf96d 100644 --- a/package.json +++ b/package.json @@ -73,6 +73,10 @@ "command": "linguafranca.getAst", "title": "Lingua Franca: Get AST" }, + { + "command": "linguafranca.getWorkspace", + "title": "Lingua Franca: Get Workspace" + }, { "command": "linguafranca.build", "title": "Lingua Franca: Build" diff --git a/src/build_commands.ts b/src/build_commands.ts index f6aec5b18..ce64dfeae 100644 --- a/src/build_commands.ts +++ b/src/build_commands.ts @@ -41,6 +41,47 @@ const getAst = return ret; }; +const getWorkspace = + (withLogs: MessageShowerTransformer, client: LanguageClient) => + async () => { + vscode.window.showInformationMessage("Getting workspace..."); + const roots = vscode.workspace.workspaceFolders; + let lf_files: vscode.Uri[] = []; + let lingo_tomls: vscode.Uri[] = []; + if (roots) { + for (const root of roots) { + const files: vscode.Uri[] = await vscode.workspace.findFiles( + new vscode.RelativePattern(root, "**/*.lf") + ); + lf_files = lf_files.concat(files); + lingo_tomls = lingo_tomls.concat(await vscode.workspace.findFiles( + new vscode.RelativePattern(root, "**/Lingo.toml") + )); + lingo_tomls = lingo_tomls.concat(await vscode.workspace.findFiles( + new vscode.RelativePattern(root, "**/lingo.toml") + )); + } + } + lf_files.sort((a, b) => a.fsPath.localeCompare(b.fsPath)); + lingo_tomls.sort((a, b) => a.fsPath.localeCompare(b.fsPath)); + let lf_asts = []; + for (const lf_file of lf_files) { + const ast = await client.sendRequest("parser/ast", lf_file.toString()); + lf_asts.push(ast); + } + let toml_contents = []; + for (const toml of lingo_tomls) { + const content = await vscode.workspace.fs.readFile(toml); + toml_contents.push(content); + } + const ret = { + lf: lf_asts, + config: toml_contents + }; + vscode.window.showInformationMessage("Workspace received: " + ret); + return ret; + }; + /** * Return the action that should be taken in case of a request to build. * @param withLogs A messageShowerTransformer that lets the user request to view logs. @@ -106,6 +147,9 @@ export function registerBuildCommands(context: vscode.ExtensionContext, client: context.subscriptions.push(vscode.commands.registerCommand( "linguafranca.getAst", getAst(withLogs, client) )); + context.subscriptions.push(vscode.commands.registerCommand( + "linguafranca.getWorkspace", getWorkspace(withLogs, client) + )); context.subscriptions.push(vscode.commands.registerTextEditorCommand( 'linguafranca.build', build(withLogs, client) )); From e7eda27849ff4ecbb0026abf48fb30a5a8570644 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Tue, 13 Feb 2024 20:45:59 -0800 Subject: [PATCH 04/45] Expose command to check Docker version. This coupling between extensions might not be what we want -- it might be preferable to librarify the version checking code -- but it is the easiest thing to do right now and it isn't obviously a terrible idea. --- package.json | 4 ++++ src/build_commands.ts | 6 +++++- src/check_dependencies.ts | 29 ++++++++++++++++++++++++++++- src/config.ts | 3 +++ src/extension.ts | 3 +++ src/version_checker.ts | 1 + 6 files changed, 44 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index b11abf96d..0d2063111 100644 --- a/package.json +++ b/package.json @@ -85,6 +85,10 @@ "command": "linguafranca.buildAndRun", "title": "Lingua Franca: Build and Run" }, + { + "command": "linguafranca.checkDocker", + "title": "Lingua Franca: Check Docker Version" + }, { "command": "linguafranca.createNewFile", "title": "New Lingua Franca File", diff --git a/src/build_commands.ts b/src/build_commands.ts index ce64dfeae..1827a6167 100644 --- a/src/build_commands.ts +++ b/src/build_commands.ts @@ -127,8 +127,12 @@ const buildAndRun = (withLogs: MessageShowerTransformer, client: LanguageClient) }; function buildOnSaveEnabled() { + let zerothFolder = vscode.workspace.workspaceFolders[0]; + if (!zerothFolder) { + return false; + } const configuration: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration( - 'linguafranca', vscode.workspace.workspaceFolders[0].uri + 'linguafranca', zerothFolder.uri ); return configuration.get('generateCodeOnSave'); } diff --git a/src/check_dependencies.ts b/src/check_dependencies.ts index 808c4a761..69874ac05 100644 --- a/src/check_dependencies.ts +++ b/src/check_dependencies.ts @@ -26,8 +26,9 @@ export const rustMessage = 'The Rust compiler is required for compiling LF progr + 'target.'; export const cmakeMessage = `CMake version ${config.cmakeVersion} or higher is recommended for ` + `compiling LF programs with the C or C++ target.`; +export const dockerMessage = 'Docker is required for running LF programs in a container.'; -export enum Dependency { Pylint, Java, Python3, Node, Rti, Pnpm, Rust, Cmake } +export enum Dependency { Pylint, Java, Python3, Node, Rti, Docker, Pnpm, Rust, Cmake } const wrongVersionMessageOf = (originalMessage: string) => (badResult: versionChecker.VersionCheckResult) => @@ -266,6 +267,20 @@ export const watcherConfig: CheckSet[] = [ }, ] }, + { + regexp: /docker\s*:/, + checks: [ + { + name: Dependency.Docker, + checker: versionChecker.dockerVersionChecker, + message: () => dockerMessage, + requiredVersion: config.dockerVersion, + installLink: 'https://docs.docker.com/engine/install/', + installCommand: () => null, + isEssential: true + }, + ] + } ]; export const caveat = 'If this dependency is already on your system, start VS Code from a terminal emulator so that VS Code sees the same value of your PATH that you see in your terminal.' @@ -336,6 +351,18 @@ const doDependencyCheck = (document: vscode.TextDocument) => { } }; +export function checkDocker(message: string) { + checkDependency({ + name: Dependency.Docker, + checker: versionChecker.dockerVersionChecker, + message: () => message || dockerMessage, + requiredVersion: config.dockerVersion, + installLink: 'https://docs.docker.com/engine/install/', + installCommand: () => null, + isEssential: true + })(vscode.window.showErrorMessage)(); +} + export function registerDependencyWatcher() { vscode.workspace.onDidOpenTextDocument(doDependencyCheck); vscode.workspace.onDidSaveTextDocument(doDependencyCheck); diff --git a/src/config.ts b/src/config.ts index dd77df570..a56e1e1d9 100644 --- a/src/config.ts +++ b/src/config.ts @@ -50,6 +50,9 @@ export const rustLatestKnownGoodVersion: Version = new Version('1.61.0'); /** The minimum RTI version required for executing federated LF programs. */ export const rtiVersion: Version = new Version('0.0.0'); +/** The minimum Docker version on which containerized execution with LF programs has been tested. */ +export const dockerVersion: Version = new Version('24.0.0'); + /** Name of the Language and Diagram Server jar as stored in the packaged extension. */ export const ldsJarName = 'lflang-lds.jar'; diff --git a/src/extension.ts b/src/extension.ts index dbb2b1dee..84e2d4e04 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -58,6 +58,9 @@ export async function activate(context: vscode.ExtensionContext) { registerBuildCommands(context, client); registerNewFileCommand(context); + context.subscriptions.push(vscode.commands.registerCommand( + "linguafranca.checkDocker", checkDependencies.checkDocker + )); } /** diff --git a/src/version_checker.ts b/src/version_checker.ts index fcd365e85..51a7189fd 100644 --- a/src/version_checker.ts +++ b/src/version_checker.ts @@ -110,3 +110,4 @@ export const rtiVersionChecker = async () => { } return { version: new Version('0.0.0'), isCorrect: exists }; }; +export const dockerVersionChecker = basicChecker(config.dockerVersion, 'docker -v', false); From c19f2b33fed3fa94347443576129c1ce9fb617aa Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Tue, 13 Feb 2024 21:19:38 -0800 Subject: [PATCH 05/45] Bugfix in previous commit --- src/check_dependencies.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/check_dependencies.ts b/src/check_dependencies.ts index 69874ac05..25b70ccce 100644 --- a/src/check_dependencies.ts +++ b/src/check_dependencies.ts @@ -351,8 +351,8 @@ const doDependencyCheck = (document: vscode.TextDocument) => { } }; -export function checkDocker(message: string) { - checkDependency({ +export async function checkDocker(message: string): Promise { + return await checkDependency({ name: Dependency.Docker, checker: versionChecker.dockerVersionChecker, message: () => message || dockerMessage, From 741a382b7659d67aba256f1c95c134e2b589f73f Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Tue, 13 Feb 2024 21:28:27 -0800 Subject: [PATCH 06/45] Another bugfix --- src/build_commands.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/build_commands.ts b/src/build_commands.ts index 1827a6167..8dd7f023a 100644 --- a/src/build_commands.ts +++ b/src/build_commands.ts @@ -127,7 +127,7 @@ const buildAndRun = (withLogs: MessageShowerTransformer, client: LanguageClient) }; function buildOnSaveEnabled() { - let zerothFolder = vscode.workspace.workspaceFolders[0]; + let zerothFolder = vscode.workspace?.workspaceFolders?.[0]; if (!zerothFolder) { return false; } From fcb033bb3368ebc4d3a8d7315109d653000bb466 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Thu, 15 Feb 2024 15:20:47 -0800 Subject: [PATCH 07/45] Create command for getting version info --- package.json | 12 +++++++++++- src/extension.ts | 4 ++++ src/extension_version.ts | 3 +++ write-version-to-file.sh | 1 + 4 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 src/extension_version.ts create mode 100755 write-version-to-file.sh diff --git a/package.json b/package.json index 0d2063111..d0cb23fe6 100644 --- a/package.json +++ b/package.json @@ -93,6 +93,10 @@ "command": "linguafranca.createNewFile", "title": "New Lingua Franca File", "shortTitle": "Lingua Franca File" + }, + { + "command": "linguafranca.getVersion", + "title": "Lingua Franca: Get Version" } ], "configuration": { @@ -136,6 +140,12 @@ { "command": "linguafranca.createNewFile" } + ], + "commandPalette": [ + { + "command": "linguafranca.getVersion", + "when": "false" + } ] } }, @@ -177,7 +187,7 @@ "clean": "rimraf out && rimraf lib && rimraf vscode-lingua-franca-*.vsix", "esbuild-base": "esbuild ./src/extension.ts --bundle --outfile=out/extension.js --external:vscode --format=cjs --platform=node", "vscode:prepublish": "npm run esbuild-base -- --minify", - "compile": "npm run esbuild-base -- --sourcemap", + "compile": "./write-version-to-file.sh src/extension_version.ts && npm run esbuild-base -- --sourcemap", "watch": "npm run esbuild-base -- --sourcemap --watch", "build": "npx ts-node src/build_lds.ts", "compile-tests": "npx tsc --lib \"dom\" --outDir out/test --inlineSourceMap", diff --git a/src/extension.ts b/src/extension.ts index 84e2d4e04..cec0cd84a 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -11,6 +11,7 @@ import { legend, semanticTokensProvider } from './highlight'; import * as config from './config'; import { registerBuildCommands, registerNewFileCommand } from './build_commands'; import * as checkDependencies from './check_dependencies'; +import * as extensionVersion from './extension_version'; let client: LanguageClient; let socket: Socket; @@ -61,6 +62,9 @@ export async function activate(context: vscode.ExtensionContext) { context.subscriptions.push(vscode.commands.registerCommand( "linguafranca.checkDocker", checkDependencies.checkDocker )); + context.subscriptions.push(vscode.commands.registerCommand( + "linguafranca.getVersion", () => extensionVersion.version + )); } /** diff --git a/src/extension_version.ts b/src/extension_version.ts new file mode 100644 index 000000000..14a183088 --- /dev/null +++ b/src/extension_version.ts @@ -0,0 +1,3 @@ +'use strict'; +// This is a generated file. Do not edit. +export const version = "fe7bb171ee79706b762d795af62034fdf117d013"; diff --git a/write-version-to-file.sh b/write-version-to-file.sh new file mode 100755 index 000000000..951be8129 --- /dev/null +++ b/write-version-to-file.sh @@ -0,0 +1 @@ +echo "'use strict';" > $1 && echo "// This is a generated file. Do not edit." >> $1 && echo "export const version = \"$(git ls-files | grep -v "$1" | git hash-object --stdin)\";" >> $1 From b33e1815b6bfef9e0073a28251c7ff709109d7a5 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Sat, 24 Feb 2024 16:44:09 -0800 Subject: [PATCH 08/45] Add debug messages --- src/build_commands.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/build_commands.ts b/src/build_commands.ts index 8dd7f023a..ffd54748c 100644 --- a/src/build_commands.ts +++ b/src/build_commands.ts @@ -48,6 +48,7 @@ const getWorkspace = const roots = vscode.workspace.workspaceFolders; let lf_files: vscode.Uri[] = []; let lingo_tomls: vscode.Uri[] = []; + vscode.window.showInformationMessage("roots: " + JSON.stringify(lf_files)); if (roots) { for (const root of roots) { const files: vscode.Uri[] = await vscode.workspace.findFiles( @@ -64,9 +65,14 @@ const getWorkspace = } lf_files.sort((a, b) => a.fsPath.localeCompare(b.fsPath)); lingo_tomls.sort((a, b) => a.fsPath.localeCompare(b.fsPath)); + vscode.window.showInformationMessage("lf_files: " + JSON.stringify(lf_files)); + vscode.window.showInformationMessage("lingo_tomls: " + JSON.stringify(lingo_tomls)); let lf_asts = []; for (const lf_file of lf_files) { + vscode.window.showInformationMessage("getting ast for " + lf_file.toString()); const ast = await client.sendRequest("parser/ast", lf_file.toString()); + vscode.window.showInformationMessage("got ast"); + vscode.window.showInformationMessage("ast: " + JSON.stringify(ast)); lf_asts.push(ast); } let toml_contents = []; From b0bf81eb98aa91dc773281398b645b412c87bb00 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Sat, 24 Feb 2024 17:17:21 -0800 Subject: [PATCH 09/45] Wait for language client to be ready --- src/build_commands.ts | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/build_commands.ts b/src/build_commands.ts index ffd54748c..dc7362383 100644 --- a/src/build_commands.ts +++ b/src/build_commands.ts @@ -48,7 +48,6 @@ const getWorkspace = const roots = vscode.workspace.workspaceFolders; let lf_files: vscode.Uri[] = []; let lingo_tomls: vscode.Uri[] = []; - vscode.window.showInformationMessage("roots: " + JSON.stringify(lf_files)); if (roots) { for (const root of roots) { const files: vscode.Uri[] = await vscode.workspace.findFiles( @@ -65,13 +64,10 @@ const getWorkspace = } lf_files.sort((a, b) => a.fsPath.localeCompare(b.fsPath)); lingo_tomls.sort((a, b) => a.fsPath.localeCompare(b.fsPath)); - vscode.window.showInformationMessage("lf_files: " + JSON.stringify(lf_files)); - vscode.window.showInformationMessage("lingo_tomls: " + JSON.stringify(lingo_tomls)); let lf_asts = []; for (const lf_file of lf_files) { - vscode.window.showInformationMessage("getting ast for " + lf_file.toString()); - const ast = await client.sendRequest("parser/ast", lf_file.toString()); - vscode.window.showInformationMessage("got ast"); + await client.onReady(); + const ast = await client.sendRequest("parser/ast", lf_file.fsPath); vscode.window.showInformationMessage("ast: " + JSON.stringify(ast)); lf_asts.push(ast); } From 418b0ea0f98949824771d896463d9bdda3706241 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 28 Feb 2024 01:04:35 -0800 Subject: [PATCH 10/45] Be more quiet --- src/build_commands.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/build_commands.ts b/src/build_commands.ts index dc7362383..ccbccaf76 100644 --- a/src/build_commands.ts +++ b/src/build_commands.ts @@ -68,7 +68,7 @@ const getWorkspace = for (const lf_file of lf_files) { await client.onReady(); const ast = await client.sendRequest("parser/ast", lf_file.fsPath); - vscode.window.showInformationMessage("ast: " + JSON.stringify(ast)); + // vscode.window.showInformationMessage("ast: " + JSON.stringify(ast)); lf_asts.push(ast); } let toml_contents = []; From 62fb42a6ee7616068697841ea3dd2b8ce0e39290 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 28 Feb 2024 15:59:37 -0800 Subject: [PATCH 11/45] Remote debug messages. --- src/build_commands.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/build_commands.ts b/src/build_commands.ts index ccbccaf76..23bcb09d9 100644 --- a/src/build_commands.ts +++ b/src/build_commands.ts @@ -27,7 +27,7 @@ type MessageShowerTransformer = (MessageDisplayHelper: MessageDisplayHelper) => const getAst = (withLogs: MessageShowerTransformer, client: LanguageClient) => async () => { - vscode.window.showInformationMessage("Getting AST..."); + // vscode.window.showInformationMessage("Getting AST..."); const uri = getLfUri(vscode.window.activeTextEditor.document); if (!uri) { return "The currently active file is not a Lingua Franca source file."; @@ -37,14 +37,14 @@ const getAst = withLogs(vscode.window.showErrorMessage)("Failed to get AST."); return; } - vscode.window.showInformationMessage("AST received: " + ret); + // vscode.window.showInformationMessage("AST received: " + ret); return ret; }; const getWorkspace = (withLogs: MessageShowerTransformer, client: LanguageClient) => async () => { - vscode.window.showInformationMessage("Getting workspace..."); + // vscode.window.showInformationMessage("Getting workspace..."); const roots = vscode.workspace.workspaceFolders; let lf_files: vscode.Uri[] = []; let lingo_tomls: vscode.Uri[] = []; @@ -80,7 +80,7 @@ const getWorkspace = lf: lf_asts, config: toml_contents }; - vscode.window.showInformationMessage("Workspace received: " + ret); + // vscode.window.showInformationMessage("Workspace received: " + ret); return ret; }; From 00f46bbedf3de6bf0c3d5d2a27fdf14ce26c6e94 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Mon, 4 Mar 2024 14:05:56 -0800 Subject: [PATCH 12/45] Add lfwasm as dep and turn strict type checks on --- .gitignore | 1 + CONTRIBUTING.md | 4 ++++ package-lock.json | 11 +++++++++++ package.json | 1 + src/build_commands.ts | 21 ++++++++++++++++++--- tsconfig.json | 15 ++++++++++++--- 6 files changed, 47 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 183a375d3..d0b8408b0 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ node_modules/* out/* .gradle/* __pycache__/* +lfw-pkg/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e96c2b0b0..d40c086f2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -13,15 +13,19 @@ To check out the repository, build from source, and install the VS Code plugin, ``` git clone git@github.com:lf-lang/vscode-lingua-franca.git \ && cd vscode-lingua-franca \ +&& cp -r /path/to/the/wasm/dependency/packaged/for/use/with/typescript ./lfw-pkg \ && npm install ``` If you do not have a public key set up for authentication with GitHub, you can also use HTTPS: ``` git clone https://github.com/lf-lang/vscode-lingua-franca.git \ && cd vscode-lingua-franca \ +&& cp -r /path/to/the/wasm/dependency/packaged/for/use/with/typescript ./lfw-pkg \ && npm install ``` +Note that this assumes that you have the WASM dependency somewhere on your system. Eventually, the WASM will probably be published; however, that hasn't been done yet, and it isn't currently possible to build it from source from this open-source repo because it is closed-source. + ### Trouble Shooting #### VS Code is not detected on Mac OS X diff --git a/package-lock.json b/package-lock.json index 3acc37a8d..e253874ff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "hasInstallScript": true, "license": "BSD-2-Clause", "dependencies": { + "lfwasm": "file:lfw-pkg", "vscode-languageclient": "^6.1.3" }, "devDependencies": { @@ -47,6 +48,9 @@ "vscode": "^1.63.0" } }, + "lfw-pkg": { + "version": "0.1.0" + }, "node_modules/@babel/code-frame": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", @@ -2063,6 +2067,10 @@ "node": ">=6" } }, + "node_modules/lfwasm": { + "resolved": "lfw-pkg", + "link": true + }, "node_modules/lie": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", @@ -5361,6 +5369,9 @@ "version": "3.1.0", "dev": true }, + "lfwasm": { + "version": "file:lfw-pkg" + }, "lie": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", diff --git a/package.json b/package.json index d0cb23fe6..330b0be2f 100644 --- a/package.json +++ b/package.json @@ -181,6 +181,7 @@ "which": "^2.0.2" }, "dependencies": { + "lfwasm": "file:lfw-pkg", "vscode-languageclient": "^6.1.3" }, "scripts": { diff --git a/src/build_commands.ts b/src/build_commands.ts index 23bcb09d9..ac6b1aa35 100644 --- a/src/build_commands.ts +++ b/src/build_commands.ts @@ -1,6 +1,7 @@ import * as vscode from 'vscode'; import { LanguageClient } from 'vscode-languageclient'; import { getTerminal, MessageDisplayHelper } from './utils'; +import * as lfw from 'lfwasm'; /** * Return the URI of the given document, if the document is a Lingua Franca file; else, return @@ -28,7 +29,11 @@ const getAst = (withLogs: MessageShowerTransformer, client: LanguageClient) => async () => { // vscode.window.showInformationMessage("Getting AST..."); - const uri = getLfUri(vscode.window.activeTextEditor.document); + const current_file = vscode.window.activeTextEditor?.document; + if (!current_file) { + return "There is no currently active file, so it is not clear which AST to return."; + } + const uri = getLfUri(current_file); if (!uri) { return "The currently active file is not a Lingua Franca source file."; } @@ -96,13 +101,22 @@ const build = (withLogs: MessageShowerTransformer, client: LanguageClient) => if (!uri) return; vscode.workspace.saveAll().then((successful: boolean) => { if (!successful) return; - client.sendRequest('generator/build', uri).then((message: string) => { + client.sendRequest('generator/build', [uri, getJson(uri)]).then((messageAny: any) => { + const message: string = messageAny; if (message) withLogs(vscode.window.showInformationMessage)(message); else withLogs(vscode.window.showErrorMessage)('Build failed.'); }); }); }; +function getJson(uri: string): string { + let json: string | undefined = lfw.lfc_json(vscode.Uri.parse(uri).fsPath, (p: string) => vscode.workspace.fs.readFile(vscode.Uri.file(p))); + if (!json) { + json = ""; + } + return json; +} + /** * Return the action that should be taken in case of a request to build and run. * @param withLogs A messageShowerTransformer that lets the user request to view logs. @@ -115,7 +129,8 @@ const buildAndRun = (withLogs: MessageShowerTransformer, client: LanguageClient) if (!uri) return; vscode.workspace.saveAll().then((successful: boolean) => { if (!successful) return; - client.sendRequest('generator/buildAndRun', uri).then((command: string[]) => { + client.sendRequest('generator/buildAndRun', [uri, getJson(uri)]).then((commandAny: any) => { + const command: string[] = commandAny; if (!command || !command.length) { withLogs(vscode.window.showErrorMessage)('Build failed.'); return; diff --git a/tsconfig.json b/tsconfig.json index 5e734adb8..d9b8679c6 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,14 +2,23 @@ "compilerOptions": { "esModuleInterop": true, "inlineSources": false, - "lib": ["esnext"], + "lib": [ + "esnext" + ], "module": "commonjs", "moduleResolution": "node", "outDir": "./out", "sourceMap": false, "target": "esnext", "rootDir": "./src", + "strict": true }, - "exclude": ["node_modules", ".vscode-test", ".gradle"], - "include": ["./src"] + "exclude": [ + "node_modules", + ".vscode-test", + ".gradle" + ], + "include": [ + "./src" + ] } From f1aebfa6195c8661aab4d63680bcc638fe103e75 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Mon, 4 Mar 2024 14:31:30 -0800 Subject: [PATCH 13/45] Address issues from strict type checks --- package-lock.json | 1 + src/build_lds.ts | 2 +- src/check_dependencies.ts | 6 +++--- src/config.ts | 2 +- src/extension.ts | 2 +- src/highlight.ts | 20 ++++++++++---------- src/version.ts | 8 ++++---- src/version_checker.ts | 2 +- 8 files changed, 22 insertions(+), 21 deletions(-) diff --git a/package-lock.json b/package-lock.json index e253874ff..f8dc1833d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -49,6 +49,7 @@ } }, "lfw-pkg": { + "name": "lfwasm", "version": "0.1.0" }, "node_modules/@babel/code-frame": { diff --git a/src/build_lds.ts b/src/build_lds.ts index 2145bb0bb..a51d6b5b1 100644 --- a/src/build_lds.ts +++ b/src/build_lds.ts @@ -138,7 +138,7 @@ async function build() { * @param deps Array of dependencies. */ async function checkInstalled(deps: string[]) { - let missing = []; + let missing: string[] = []; console.log("> checking dependencies...") for (let dep of deps) { await which(dep) diff --git a/src/check_dependencies.ts b/src/check_dependencies.ts index 25b70ccce..016c7b616 100644 --- a/src/check_dependencies.ts +++ b/src/check_dependencies.ts @@ -50,7 +50,7 @@ type DependencyInfo = { wrongVersionMessage?: (v: versionChecker.VersionCheckResult) => string, requiredVersion: Version, installLink: string | null, - installCommand: (v: versionChecker.VersionCheckResult) => Promise | null, + installCommand: (v: versionChecker.VersionCheckResult) => Promise | null, isEssential: boolean, alreadyChecked?: boolean, satisfied?: boolean @@ -298,7 +298,7 @@ const checkDependency: UserFacingVersionCheckerMaker = (dependency: DependencyIn dependency.wrongVersionMessage?.(checkerResult) ?? dependency.message(checkerResult) ) : dependency.message(checkerResult))) + ' ' + caveat; - const installCommand: InstallCommand = await dependency.installCommand?.(checkerResult); + const installCommand: InstallCommand | null = await dependency.installCommand?.(checkerResult); if (!installCommand && !dependency.installLink) { MessageDisplayHelper(message); return false; @@ -325,7 +325,7 @@ ${installCommand.description}` return false; }; -type CheckerGetter = (name: Dependency) => UserFacingVersionChecker; +type CheckerGetter = (name: Dependency) => UserFacingVersionChecker | undefined; export const checkerFor: CheckerGetter = (name: Dependency) => { for (const cs of watcherConfig) { diff --git a/src/config.ts b/src/config.ts index a56e1e1d9..1065e6088 100644 --- a/src/config.ts +++ b/src/config.ts @@ -66,7 +66,7 @@ export const libDirName = 'lib'; export const repoURL = 'https://github.com/lf-lang/lingua-franca.git'; /** Absolute path to the root directory of the vscode-lingua-franca repo. */ -export const baseDirPath = path.resolve(path.dirname(require.main.filename), '..'); +export const baseDirPath = path.resolve(path.dirname(require.main!.filename), '..'); /** Absolute path to the directory in which to put the jar files. */ export const libDirPath = path.resolve(baseDirPath, libDirName); diff --git a/src/extension.ts b/src/extension.ts index cec0cd84a..07a433ade 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -28,7 +28,7 @@ export async function activate(context: vscode.ExtensionContext) { if (!( await checkDependencies.checkerFor - (checkDependencies.Dependency.Java) + (checkDependencies.Dependency.Java)! (vscode.window.showErrorMessage) () )) { diff --git a/src/highlight.ts b/src/highlight.ts index 4e4f2e2d6..6b66c2be5 100644 --- a/src/highlight.ts +++ b/src/highlight.ts @@ -47,7 +47,7 @@ function contains(r: Range, other: Range | Position): boolean { * @param shadow The regions of the document to ignore. */ function getWords(document: TextDocument, range: Range, shadow: Range[]): Range[] { - function getWords(range?: Range): Range[] { + function getWords(range: Range): Range[] { const ret: Range[] = []; let pos = range.start; const getCurrentLineLength = () => document.lineAt(pos.line).text.length; @@ -68,7 +68,7 @@ function getWords(document: TextDocument, range: Range, shadow: Range[]): Range[ } return ret; } - return [].concat(...setDiff(document, range, shadow).map(getWords)); + return ([] as Range[]).concat(...setDiff(document, range, shadow).map(getWords)); } /** Returns a Range containing the entirety of a given TextDocument. */ @@ -166,7 +166,7 @@ function getMutuallyExclusiveRanges( initialOffset: number, finalOffset: number ): {comments: Range[], strings: Range[], code: Range[]} { - const ret = {comments: [], strings: [], code: []}; + const ret: any = {comments: [], strings: [], code: []}; const text = document.getText(); var currentOffset = initialOffset; while (true) { @@ -187,10 +187,10 @@ function getMutuallyExclusiveRanges( return ret; } let endOffset = text.indexOf( - firstPair[1], firstOffset + firstPair[0].length); + firstPair![1], firstOffset + firstPair![0].length); endOffset = endOffset === -1 ? text.length - : endOffset + firstPair[1].length - ret[firstBlockType].push(new Range( + : endOffset + firstPair![1].length + ret[firstBlockType!].push(new Range( document.positionAt(firstOffset), document.positionAt(endOffset) )); @@ -308,7 +308,7 @@ function getContainedRanges( depth--; if (depth === 0) { ret.push( - new Range(rangeStart, document.positionAt(nextEnd)) + new Range(rangeStart!, document.positionAt(nextEnd)) ); } } @@ -367,7 +367,7 @@ function applyTokenType( const rangeOffset = document.offsetAt(range.start); const rangeText = document.getText(range); const regex = new RegExp('\\b' + tokens.join('\\b|\\b') + '\\b', 'g'); - let groups: string[]; + let groups: string[] | null; while ((groups = regex.exec(rangeText)) != null) { let token = new Range( document.positionAt( @@ -499,10 +499,10 @@ function provideVariables( .map(range => document.getText(range)) .join(''); // FIXME: '' might not be the best placeholder // for shadowed regions. - const variables: string[] = lfContent.match( + const variables: string[] | null = lfContent.match( /((?<=(action|timer|state|((mutable\s+input|output)(\[[^\]]*\])?))\s+)(\w+))/g ); - const constants: string[] = lfContent.match( + const constants: string[] | null = lfContent.match( /(?<=(? async () => { const nullResult = { version: new Version('0.0.0'), isCorrect: null }; let stdout: string; From 9f7e3181db8426cd945ba6b46089d40c91df049b Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Mon, 4 Mar 2024 15:03:52 -0800 Subject: [PATCH 14/45] Get wasm to build. --- package.json | 2 +- src/tsbuild.mjs | 67 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 src/tsbuild.mjs diff --git a/package.json b/package.json index 330b0be2f..0e9e66395 100644 --- a/package.json +++ b/package.json @@ -186,7 +186,7 @@ }, "scripts": { "clean": "rimraf out && rimraf lib && rimraf vscode-lingua-franca-*.vsix", - "esbuild-base": "esbuild ./src/extension.ts --bundle --outfile=out/extension.js --external:vscode --format=cjs --platform=node", + "esbuild-base": "node src/tsbuild.mjs", "vscode:prepublish": "npm run esbuild-base -- --minify", "compile": "./write-version-to-file.sh src/extension_version.ts && npm run esbuild-base -- --sourcemap", "watch": "npm run esbuild-base -- --sourcemap --watch", diff --git a/src/tsbuild.mjs b/src/tsbuild.mjs new file mode 100644 index 000000000..2f6180747 --- /dev/null +++ b/src/tsbuild.mjs @@ -0,0 +1,67 @@ +// This JS script is needed to compile the TS code. + +import * as esbuild from 'esbuild'; +import path from 'node:path'; +import fs from 'node:fs'; + +let wasmPlugin = { + name: 'wasm', + setup(build) { + // Resolve ".wasm" files to a path with a namespace + build.onResolve({ filter: /\.wasm$/ }, args => { + // If this is the import inside the stub module, import the + // binary itself. Put the path in the "wasm-binary" namespace + // to tell our binary load callback to load the binary file. + if (args.namespace === 'wasm-stub') { + return { + path: args.path, + namespace: 'wasm-binary', + }; + } + + // Otherwise, generate the JavaScript stub module for this + // ".wasm" file. Put it in the "wasm-stub" namespace to tell + // our stub load callback to fill it with JavaScript. + // + // Resolve relative paths to absolute paths here since this + // resolve callback is given "resolveDir", the directory to + // resolve imports against. + if (args.resolveDir === '') { + return; // Ignore unresolvable paths + } + return { + path: path.isAbsolute(args.path) ? args.path : path.join(args.resolveDir, args.path), + namespace: 'wasm-stub', + }; + }); + + // Virtual modules in the "wasm-stub" namespace are filled with + // the JavaScript code for compiling the WebAssembly binary. The + // binary itself is imported from a second virtual module. + build.onLoad({ filter: /.*/, namespace: 'wasm-stub' }, async (args) => ({ + contents: `import wasm from ${JSON.stringify(args.path)} + export default (imports) => + WebAssembly.instantiate(wasm, imports).then( + result => result.instance.exports)`, + })); + + // Virtual modules in the "wasm-binary" namespace contain the + // actual bytes of the WebAssembly file. This uses esbuild's + // built-in "binary" loader instead of manually embedding the + // binary data inside JavaScript code ourselves. + build.onLoad({ filter: /.*/, namespace: 'wasm-binary' }, async (args) => ({ + contents: await fs.promises.readFile(args.path), + loader: 'binary', + })); + }, +}; + +await esbuild.build({ + entryPoints: ['./src/extension.js'], + bundle: true, + outfile: 'out/extension.js', + plugins: [wasmPlugin], + external: ['vscode'], + format: 'cjs', + platform: 'node' +}); From 3cb4710ba3998643bc12c11a97ba41f116119257 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Mon, 4 Mar 2024 17:26:44 -0800 Subject: [PATCH 15/45] Ditch esbuild https://github.com/evanw/esbuild/issues/253 Webpack is slow, but it seems to be full-featured. --- .gitignore | 1 + package-lock.json | 2429 +++++++++++++++++++++------ package.json | 13 +- src/build_commands.ts | 34 +- src/test/check_dependencies.test.ts | 26 +- src/test/check_highlighting.test.ts | 2 +- src/test/dependency_status.ts | 2 +- src/test/test_runner.ts | 2 +- src/tsbuild.mjs | 67 - src/utils.ts | 2 +- tsconfig.json | 11 +- webpack.config.js | 51 + 12 files changed, 1990 insertions(+), 650 deletions(-) delete mode 100644 src/tsbuild.mjs create mode 100644 webpack.config.js diff --git a/.gitignore b/.gitignore index d0b8408b0..128b49bbf 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ out/* .gradle/* __pycache__/* lfw-pkg/ +dist/ diff --git a/package-lock.json b/package-lock.json index f8dc1833d..e230e81c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,6 @@ "chai-spies": "^1.0.0", "colorette": "^2.0.16", "commander": "^8.3.0", - "esbuild": "^0.14.2", "glob": "^8.0.3", "maven": "^5.0.0", "mocha": "^10.0.0", @@ -42,6 +41,8 @@ "url-exist": "^3.0.0", "vscode-oniguruma": "^1.7.0", "vscode-textmate": "^9.0.0", + "webpack": "^5.90.0", + "webpack-cli": "^5.1.4", "which": "^2.0.2" }, "engines": { @@ -98,20 +99,37 @@ "node": ">=12" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", - "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", - "cpu": [ - "loong64" - ], + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">=10.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@jridgewell/resolve-uri": { @@ -122,6 +140,25 @@ "node": ">=6.0.0" } }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.14", "dev": true, @@ -192,6 +229,32 @@ "@types/chai": "*" } }, + "node_modules/@types/eslint": { + "version": "8.56.5", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.5.tgz", + "integrity": "sha512-u5/YPJHo1tvkSF2CE0USEkxon82Z5DBy2xR+qfyYNszpX9qcs4sT6uq2kBbj4BXY1+DBGDPnrhMZV3pKWGNukw==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, "node_modules/@types/glob": { "version": "7.2.0", "dev": true, @@ -201,6 +264,12 @@ "@types/node": "*" } }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, "node_modules/@types/minimatch": { "version": "3.0.5", "dev": true, @@ -410,6 +479,208 @@ "node": ">=4.0.0" } }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -423,9 +694,10 @@ } }, "node_modules/acorn": { - "version": "8.6.0", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -433,6 +705,40 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, "node_modules/ansi-colors": { "version": "4.1.1", "dev": true, @@ -608,6 +914,38 @@ "dev": true, "license": "ISC" }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, "node_modules/buffer": { "version": "5.7.1", "dev": true, @@ -640,6 +978,12 @@ "node": "*" } }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, "node_modules/call-bind": { "version": "1.0.2", "dev": true, @@ -678,6 +1022,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/caniuse-lite": { + "version": "1.0.30001593", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001593.tgz", + "integrity": "sha512-UWM1zlo3cZfkpBysd7AS+z+v007q9G1+fLTUU42rQnY6t2axoogPW/xol6T7juU5EUoOhML4WgBIdG+9yYqAjQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, "node_modules/chai": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", @@ -795,6 +1159,15 @@ "license": "ISC", "optional": true }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, "node_modules/cliui": { "version": "7.0.4", "dev": true, @@ -845,6 +1218,20 @@ "node": ">=8" } }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/code-point-at": { "version": "1.1.0", "dev": true, @@ -903,6 +1290,20 @@ "dev": true, "license": "MIT" }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/css-select": { "version": "4.1.2", "dev": true, @@ -1114,6 +1515,12 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/electron-to-chromium": { + "version": "1.4.692", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.692.tgz", + "integrity": "sha512-d5rZRka9n2Y3MkWRN74IoAsxR0HK3yaAt7T50e3iT9VZmCCQDT3geXUO5ZRMhDToa1pkCeQXuNo+0g+NfDOVPA==", + "dev": true + }, "node_modules/emoji-regex": { "version": "8.0.0", "dev": true, @@ -1128,393 +1535,111 @@ "once": "^1.4.0" } }, - "node_modules/entities": { - "version": "2.2.0", - "dev": true, - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/enhanced-resolve": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.1.tgz", + "integrity": "sha512-3d3JRbwsCLJsYgvb6NuWEG44jjPSOMuS73L/6+7BZuoKm3W+qXnSoIYVHi8dG7Qcg4inAY4jbzkZ7MnskePeDg==", "dev": true, "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/esbuild": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", - "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/linux-loong64": "0.14.54", - "esbuild-android-64": "0.14.54", - "esbuild-android-arm64": "0.14.54", - "esbuild-darwin-64": "0.14.54", - "esbuild-darwin-arm64": "0.14.54", - "esbuild-freebsd-64": "0.14.54", - "esbuild-freebsd-arm64": "0.14.54", - "esbuild-linux-32": "0.14.54", - "esbuild-linux-64": "0.14.54", - "esbuild-linux-arm": "0.14.54", - "esbuild-linux-arm64": "0.14.54", - "esbuild-linux-mips64le": "0.14.54", - "esbuild-linux-ppc64le": "0.14.54", - "esbuild-linux-riscv64": "0.14.54", - "esbuild-linux-s390x": "0.14.54", - "esbuild-netbsd-64": "0.14.54", - "esbuild-openbsd-64": "0.14.54", - "esbuild-sunos-64": "0.14.54", - "esbuild-windows-32": "0.14.54", - "esbuild-windows-64": "0.14.54", - "esbuild-windows-arm64": "0.14.54" - } - }, - "node_modules/esbuild-android-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", - "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", - "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", - "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", - "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", - "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", - "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-32": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", - "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", - "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", - "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", - "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", - "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", - "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", - "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, "engines": { - "node": ">=12" + "node": ">=10.13.0" } }, - "node_modules/esbuild-linux-s390x": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", - "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", - "cpu": [ - "s390x" - ], + "node_modules/entities": { + "version": "2.2.0", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/esbuild-netbsd-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", - "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", - "cpu": [ - "x64" - ], + "node_modules/envinfo": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.1.tgz", + "integrity": "sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==", "dev": true, - "optional": true, - "os": [ - "netbsd" - ], + "bin": { + "envinfo": "dist/cli.js" + }, "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/esbuild-openbsd-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", - "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", - "cpu": [ - "x64" - ], + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" + "dependencies": { + "is-arrayish": "^0.2.1" } }, - "node_modules/esbuild-sunos-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", - "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", - "cpu": [ - "x64" - ], + "node_modules/es-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", "dev": true, - "optional": true, - "os": [ - "sunos" - ], + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/esbuild-windows-32": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", - "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", - "cpu": [ - "ia32" - ], + "node_modules/escape-string-regexp": { + "version": "1.0.5", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=0.8.0" } }, - "node_modules/esbuild-windows-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", - "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", - "cpu": [ - "x64" - ], + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, "engines": { - "node": ">=12" + "node": ">=8.0.0" } }, - "node_modules/esbuild-windows-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", - "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", - "cpu": [ - "arm64" - ], + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "estraverse": "^5.2.0" + }, "engines": { - "node": ">=12" + "node": ">=4.0" } }, - "node_modules/escalade": { - "version": "3.1.1", + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "MIT", "engines": { - "node": ">=6" + "node": ">=4.0" } }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=4.0" } }, "node_modules/event-target-shim": { @@ -1526,6 +1651,15 @@ "node": ">=6" } }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, "node_modules/expand-template": { "version": "2.0.3", "dev": true, @@ -1535,6 +1669,27 @@ "node": ">=6" } }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, "node_modules/fd-slicer": { "version": "1.1.0", "dev": true, @@ -1708,6 +1863,12 @@ "node": ">= 6" } }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, "node_modules/glob/node_modules/brace-expansion": { "version": "2.0.1", "dev": true, @@ -1727,6 +1888,12 @@ "node": ">=10" } }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, "node_modules/hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -1835,6 +2002,25 @@ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", "dev": true }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -1864,6 +2050,15 @@ "license": "ISC", "optional": true }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -1940,6 +2135,18 @@ "node": ">=8" } }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-unicode-supported": { "version": "0.1.0", "dev": true, @@ -1973,6 +2180,53 @@ "dev": true, "license": "ISC" }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "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/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -1985,6 +2239,12 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "node_modules/jsonc-parser": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", @@ -2095,6 +2355,15 @@ "uc.micro": "^1.0.1" } }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -2289,6 +2558,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "node_modules/mime": { "version": "1.6.0", "dev": true, @@ -2300,6 +2575,27 @@ "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/mimic-response": { "version": "2.1.0", "dev": true, @@ -2761,6 +3057,12 @@ "ncp": "bin/ncp" } }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, "node_modules/node": { "version": "18.16.0", "resolved": "https://registry.npmjs.org/node/-/node-18.16.0.tgz", @@ -2839,6 +3141,12 @@ "url": "https://opencollective.com/node-fetch" } }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, "node_modules/node/node_modules/node-bin-setup": { "version": "1.1.3", "dev": true, @@ -3052,6 +3360,15 @@ "node": ">=0.10.0" } }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -3071,6 +3388,12 @@ "dev": true, "license": "MIT" }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, "node_modules/picomatch": { "version": "2.3.1", "dev": true, @@ -3082,6 +3405,18 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/prebuild-install": { "version": "6.1.4", "dev": true, @@ -3133,6 +3468,15 @@ "once": "^1.3.1" } }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/qs": { "version": "6.11.0", "dev": true, @@ -3265,6 +3609,18 @@ "node": ">=8.10.0" } }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, "node_modules/redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", @@ -3303,6 +3659,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -3348,6 +3725,24 @@ "dev": true, "license": "ISC" }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -3376,6 +3771,39 @@ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", "dev": true }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/side-channel": { "version": "1.0.4", "dev": true, @@ -3441,6 +3869,25 @@ "url": "https://github.com/steveukx/git-js?sponsor=1" } }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -3551,6 +3998,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/tar-fs": { "version": "2.1.1", "dev": true, @@ -3593,6 +4049,83 @@ "node": ">= 6" } }, + "node_modules/terser": { + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.28.1.tgz", + "integrity": "sha512-wM+bZp54v/E9eRRGXb5ZFDvinrJIOaTapx3WUokyVGZu5ucVCK55zEgGd5Dl2fSr3jUo5sDiERErUWLY6QPFyA==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "node_modules/tmp": { "version": "0.2.1", "dev": true, @@ -3753,6 +4286,45 @@ "dev": true, "license": "MIT" }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, "node_modules/url-exist": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/url-exist/-/url-exist-3.0.1.tgz", @@ -3849,6 +4421,19 @@ "integrity": "sha512-Cl65diFGxz7gpwbav10HqiY/eVYTO1sjQpmRmV991Bj7wAoOAjGQ97PpQcXorDE2Uc4hnGWLY17xme+5t6MlSg==", "dev": true }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/web-streams-polyfill": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", @@ -3858,6 +4443,130 @@ "node": ">= 8" } }, + "node_modules/webpack": { + "version": "5.90.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", + "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -3882,6 +4591,12 @@ "string-width": "^1.0.2 || 2 || 3 || 4" } }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, "node_modules/workerpool": { "version": "6.2.1", "dev": true, @@ -4117,17 +4832,55 @@ "@jridgewell/trace-mapping": "0.3.9" } }, - "@esbuild/linux-loong64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", - "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, - "optional": true + "requires": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + } + } }, "@jridgewell/resolve-uri": { "version": "3.1.0", "dev": true }, + "@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, "@jridgewell/sourcemap-codec": { "version": "1.4.14", "dev": true @@ -4186,6 +4939,32 @@ "@types/chai": "*" } }, + "@types/eslint": { + "version": "8.56.5", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.5.tgz", + "integrity": "sha512-u5/YPJHo1tvkSF2CE0USEkxon82Z5DBy2xR+qfyYNszpX9qcs4sT6uq2kBbj4BXY1+DBGDPnrhMZV3pKWGNukw==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, "@types/glob": { "version": "7.2.0", "dev": true, @@ -4194,6 +4973,12 @@ "@types/node": "*" } }, + "@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, "@types/minimatch": { "version": "3.0.5", "dev": true @@ -4357,6 +5142,185 @@ } } }, + "@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "requires": {} + }, + "@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "requires": {} + }, + "@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "requires": {} + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, "abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -4367,9 +5331,37 @@ } }, "acorn": { - "version": "8.6.0", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true }, + "acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, "ansi-colors": { "version": "4.1.1", "dev": true @@ -4488,6 +5480,18 @@ "version": "1.3.1", "dev": true }, + "browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + } + }, "buffer": { "version": "5.7.1", "dev": true, @@ -4501,6 +5505,12 @@ "version": "0.2.13", "dev": true }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, "call-bind": { "version": "1.0.2", "dev": true, @@ -4526,6 +5536,12 @@ "quick-lru": "^4.0.1" } }, + "caniuse-lite": { + "version": "1.0.30001593", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001593.tgz", + "integrity": "sha512-UWM1zlo3cZfkpBysd7AS+z+v007q9G1+fLTUU42rQnY6t2axoogPW/xol6T7juU5EUoOhML4WgBIdG+9yYqAjQ==", + "dev": true + }, "chai": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", @@ -4602,6 +5618,12 @@ "dev": true, "optional": true }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, "cliui": { "version": "7.0.4", "dev": true, @@ -4637,6 +5659,17 @@ } } }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, "code-point-at": { "version": "1.1.0", "dev": true, @@ -4682,6 +5715,17 @@ "version": "1.1.1", "dev": true }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, "css-select": { "version": "4.1.2", "dev": true, @@ -4809,6 +5853,12 @@ "domhandler": "^4.2.0" } }, + "electron-to-chromium": { + "version": "1.4.692", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.692.tgz", + "integrity": "sha512-d5rZRka9n2Y3MkWRN74IoAsxR0HK3yaAt7T50e3iT9VZmCCQDT3geXUO5ZRMhDToa1pkCeQXuNo+0g+NfDOVPA==", + "dev": true + }, "emoji-regex": { "version": "8.0.0", "dev": true @@ -4821,10 +5871,26 @@ "once": "^1.4.0" } }, + "enhanced-resolve": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.1.tgz", + "integrity": "sha512-3d3JRbwsCLJsYgvb6NuWEG44jjPSOMuS73L/6+7BZuoKm3W+qXnSoIYVHi8dG7Qcg4inAY4jbzkZ7MnskePeDg==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, "entities": { "version": "2.2.0", "dev": true }, + "envinfo": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.1.tgz", + "integrity": "sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==", + "dev": true + }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -4834,174 +5900,11 @@ "is-arrayish": "^0.2.1" } }, - "esbuild": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", - "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", - "dev": true, - "requires": { - "@esbuild/linux-loong64": "0.14.54", - "esbuild-android-64": "0.14.54", - "esbuild-android-arm64": "0.14.54", - "esbuild-darwin-64": "0.14.54", - "esbuild-darwin-arm64": "0.14.54", - "esbuild-freebsd-64": "0.14.54", - "esbuild-freebsd-arm64": "0.14.54", - "esbuild-linux-32": "0.14.54", - "esbuild-linux-64": "0.14.54", - "esbuild-linux-arm": "0.14.54", - "esbuild-linux-arm64": "0.14.54", - "esbuild-linux-mips64le": "0.14.54", - "esbuild-linux-ppc64le": "0.14.54", - "esbuild-linux-riscv64": "0.14.54", - "esbuild-linux-s390x": "0.14.54", - "esbuild-netbsd-64": "0.14.54", - "esbuild-openbsd-64": "0.14.54", - "esbuild-sunos-64": "0.14.54", - "esbuild-windows-32": "0.14.54", - "esbuild-windows-64": "0.14.54", - "esbuild-windows-arm64": "0.14.54" - } - }, - "esbuild-android-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", - "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", - "dev": true, - "optional": true - }, - "esbuild-android-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", - "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", - "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", - "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", - "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", - "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", - "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", - "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", - "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", - "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", - "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", - "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-riscv64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", - "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", - "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", - "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", - "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", - "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", - "dev": true, - "optional": true - }, - "esbuild-windows-32": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", - "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", - "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.14.54", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", - "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", - "dev": true, - "optional": true + "es-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", + "dev": true }, "escalade": { "version": "3.1.1", @@ -5011,17 +5914,74 @@ "version": "1.0.5", "dev": true }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, "event-target-shim": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "dev": true }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, "expand-template": { "version": "2.0.3", "dev": true, "optional": true }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true + }, "fd-slicer": { "version": "1.1.0", "dev": true, @@ -5157,6 +6117,18 @@ "is-glob": "^4.0.1" } }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, "hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -5215,6 +6187,16 @@ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", "dev": true }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -5238,6 +6220,12 @@ "dev": true, "optional": true }, + "interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -5287,6 +6275,15 @@ "version": "2.1.0", "dev": true }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, "is-unicode-supported": { "version": "0.1.0", "dev": true @@ -5305,6 +6302,40 @@ "version": "2.0.0", "dev": true }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -5317,6 +6348,12 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "jsonc-parser": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", @@ -5395,6 +6432,12 @@ "uc.micro": "^1.0.1" } }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true + }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -5525,10 +6568,31 @@ "yargs-parser": "^18.1.3" } }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "mime": { "version": "1.6.0", "dev": true }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, "mimic-response": { "version": "2.1.0", "dev": true, @@ -5830,6 +6894,12 @@ "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", "dev": true }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, "node": { "version": "18.16.0", "resolved": "https://registry.npmjs.org/node/-/node-18.16.0.tgz", @@ -5884,6 +6954,12 @@ "formdata-polyfill": "^4.0.10" } }, + "node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -6039,6 +7115,12 @@ "version": "1.0.1", "dev": true }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -6053,10 +7135,25 @@ "version": "1.2.0", "dev": true }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, "picomatch": { "version": "2.3.1", "dev": true }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, "prebuild-install": { "version": "6.1.4", "dev": true, @@ -6096,6 +7193,12 @@ "once": "^1.3.1" } }, + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true + }, "qs": { "version": "6.11.0", "dev": true, @@ -6193,6 +7296,15 @@ "picomatch": "^2.2.1" } }, + "rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "requires": { + "resolve": "^1.20.0" + } + }, "redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", @@ -6218,6 +7330,21 @@ "supports-preserve-symlinks-flag": "^1.0.0" } }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -6251,6 +7378,17 @@ "version": "1.2.4", "dev": true }, + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, "semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -6274,6 +7412,30 @@ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", "dev": true }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, "side-channel": { "version": "1.0.4", "dev": true, @@ -6314,6 +7476,22 @@ "debug": "^4.3.4" } }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -6398,6 +7576,12 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, "tar-fs": { "version": "2.1.1", "dev": true, @@ -6433,6 +7617,60 @@ } } }, + "terser": { + "version": "5.28.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.28.1.tgz", + "integrity": "sha512-wM+bZp54v/E9eRRGXb5ZFDvinrJIOaTapx3WUokyVGZu5ucVCK55zEgGd5Dl2fSr3jUo5sDiERErUWLY6QPFyA==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + } + } + }, "tmp": { "version": "0.2.1", "dev": true, @@ -6529,6 +7767,25 @@ "version": "1.13.1", "dev": true }, + "update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, "url-exist": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/url-exist/-/url-exist-3.0.1.tgz", @@ -6611,12 +7868,100 @@ "integrity": "sha512-Cl65diFGxz7gpwbav10HqiY/eVYTO1sjQpmRmV991Bj7wAoOAjGQ97PpQcXorDE2Uc4hnGWLY17xme+5t6MlSg==", "dev": true }, + "watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, "web-streams-polyfill": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", "dev": true }, + "webpack": { + "version": "5.90.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", + "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + } + }, + "webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "dependencies": { + "commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true + } + } + }, + "webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -6634,6 +7979,12 @@ "string-width": "^1.0.2 || 2 || 3 || 4" } }, + "wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, "workerpool": { "version": "6.2.1", "dev": true diff --git a/package.json b/package.json index 0e9e66395..8dc65aa15 100644 --- a/package.json +++ b/package.json @@ -163,7 +163,6 @@ "chai-spies": "^1.0.0", "colorette": "^2.0.16", "commander": "^8.3.0", - "esbuild": "^0.14.2", "glob": "^8.0.3", "maven": "^5.0.0", "mocha": "^10.0.0", @@ -178,7 +177,9 @@ "url-exist": "^3.0.0", "vscode-oniguruma": "^1.7.0", "vscode-textmate": "^9.0.0", - "which": "^2.0.2" + "which": "^2.0.2", + "webpack": "^5.90.0", + "webpack-cli": "^5.1.4" }, "dependencies": { "lfwasm": "file:lfw-pkg", @@ -186,10 +187,10 @@ }, "scripts": { "clean": "rimraf out && rimraf lib && rimraf vscode-lingua-franca-*.vsix", - "esbuild-base": "node src/tsbuild.mjs", - "vscode:prepublish": "npm run esbuild-base -- --minify", - "compile": "./write-version-to-file.sh src/extension_version.ts && npm run esbuild-base -- --sourcemap", - "watch": "npm run esbuild-base -- --sourcemap --watch", + "transpile": "webpack", + "vscode:prepublish": "npm run transpile -- --minify", + "compile": "./write-version-to-file.sh src/extension_version.ts && npm run transpile -- --sourcemap", + "watch": "npm run transpile -- --sourcemap --watch", "build": "npx ts-node src/build_lds.ts", "compile-tests": "npx tsc --lib \"dom\" --outDir out/test --inlineSourceMap", "package": "move-cli lingua-franca ../temp-lingua-franca89539275 && vsce package && move-cli ../temp-lingua-franca89539275 lingua-franca", diff --git a/src/build_commands.ts b/src/build_commands.ts index ac6b1aa35..0216e99e1 100644 --- a/src/build_commands.ts +++ b/src/build_commands.ts @@ -42,7 +42,7 @@ const getAst = withLogs(vscode.window.showErrorMessage)("Failed to get AST."); return; } - // vscode.window.showInformationMessage("AST received: " + ret); + vscode.window.showInformationMessage("AST received: " + ret); return ret; }; @@ -109,7 +109,7 @@ const build = (withLogs: MessageShowerTransformer, client: LanguageClient) => }); }; -function getJson(uri: string): string { +async function getJson(uri: string): Promise { let json: string | undefined = lfw.lfc_json(vscode.Uri.parse(uri).fsPath, (p: string) => vscode.workspace.fs.readFile(vscode.Uri.file(p))); if (!json) { json = ""; @@ -124,22 +124,24 @@ function getJson(uri: string): string { * @returns The action that should be taken in case of a request to build and run. */ const buildAndRun = (withLogs: MessageShowerTransformer, client: LanguageClient) => - (textEditor: vscode.TextEditor) => { + async (textEditor: vscode.TextEditor) => { const uri = getLfUri(textEditor.document); if (!uri) return; - vscode.workspace.saveAll().then((successful: boolean) => { - if (!successful) return; - client.sendRequest('generator/buildAndRun', [uri, getJson(uri)]).then((commandAny: any) => { - const command: string[] = commandAny; - if (!command || !command.length) { - withLogs(vscode.window.showErrorMessage)('Build failed.'); - return; - } - const terminal = getTerminal('Lingua Franca: Run', command[0]); - terminal.sendText(`cd "${command[0]}"`); - terminal.show(true); - terminal.sendText(command.slice(1).join(' ')); - }); + const successful = vscode.workspace.saveAll(); + if (!successful) { + return; + } + vscode.window.showInformationMessage("DEBUG: doing build and run."); + client.sendRequest('generator/buildAndRun', [uri, await getJson(uri)]).then((commandAny: any) => { + const command: string[] = commandAny; + if (!command || !command.length) { + withLogs(vscode.window.showErrorMessage)('Build failed.'); + return; + } + const terminal = getTerminal('Lingua Franca: Run', command[0]); + terminal.sendText(`cd "${command[0]}"`); + terminal.show(true); + terminal.sendText(command.slice(1).join(' ')); }); }; diff --git a/src/test/check_dependencies.test.ts b/src/test/check_dependencies.test.ts index 329f36bf5..5c1930742 100644 --- a/src/test/check_dependencies.test.ts +++ b/src/test/check_dependencies.test.ts @@ -38,7 +38,7 @@ suite('test dependency checking', () => { const dependencies: DependencyStatus = dependency_status(); - type Spy = ChaiSpies.SpyFunc1Proxy>; + type Spy = ChaiSpies.SpyFunc1Proxy>; function getMockMessageShower(): Spy { const mock: MessageDisplayHelper = (message: string, ...items: string[]) => @@ -49,7 +49,7 @@ suite('test dependency checking', () => { }; function checkBasicDependency(dependency: Dependency, depMissingMessage: string): Test { - return async function () { + return async function (this: any) { this.timeout(basicTimeoutMilliseconds); const spy = getMockMessageShower(); switch (dependencies) { @@ -57,13 +57,13 @@ suite('test dependency checking', () => { await expectSuccess(dependency, spy); break; case DependencyStatus.Outdated: - this.test.skip(); + this.test?.skip(); case DependencyStatus.Missing0: await expectFailure(dependency, spy); expect(spy).to.have.been.called.with(depMissingMessage + " " + checkDependencies.caveat); break; case DependencyStatus.Missing1: - this.test.skip(); + this.test?.skip(); default: throw new Error('unreachable'); } @@ -71,11 +71,11 @@ suite('test dependency checking', () => { } const expectSuccess = async (dependency: Dependency, spy: Spy) => { - expect(await checkDependencies.checkerFor(dependency)(spy)()).to.be.true; + expect(await checkDependencies.checkerFor(dependency)!(spy)()).to.be.true; expect(spy).not.to.have.been.called; }; const expectFailure = async (dependency: Dependency, spy: Spy) => { - expect(await checkDependencies.checkerFor(dependency)(spy)()).to.be.false; + expect(await checkDependencies.checkerFor(dependency)!(spy)()).to.be.false; expect(spy).to.have.been.called; }; @@ -93,7 +93,7 @@ suite('test dependency checking', () => { await expectSuccess(Dependency.Pylint, spy); break; case DependencyStatus.Missing0: - this.test.skip(); + this.test?.skip(); case DependencyStatus.Missing1: await expectFailure(Dependency.Pylint, spy); expect(spy).to.have.been.called.with(checkDependencies.pylintMessage + " " + checkDependencies.caveat); @@ -138,7 +138,7 @@ suite('test dependency checking', () => { await expectSuccess(Dependency.Pnpm, spy); break; case DependencyStatus.Outdated: - this.test.skip(); + this.test?.skip(); default: throw new Error('unreachable'); } @@ -161,14 +161,14 @@ suite('test dependency checking', () => { expect(spy).to.have.been.called.with(checkDependencies.rustMessage + " " + checkDependencies.caveat); break; case DependencyStatus.Missing1: - this.test.skip(); + this.test?.skip(); default: throw new Error('unreachable'); } }); test('rti', async function() { - if (os.platform() == 'win32') this.test.skip(); // No Windows federated support. + if (os.platform() == 'win32') this.test?.skip(); // No Windows federated support. this.timeout(basicTimeoutMilliseconds); const spy = getMockMessageShower(); switch (dependencies) { @@ -177,7 +177,7 @@ suite('test dependency checking', () => { break; case DependencyStatus.Missing0: case DependencyStatus.Outdated: - this.test.skip(); + this.test?.skip(); case DependencyStatus.Missing1: await expectFailure(Dependency.Rti, spy); expect(spy).to.have.been.called.with(checkDependencies.rtiMessage + " " + checkDependencies.caveat); @@ -189,7 +189,7 @@ suite('test dependency checking', () => { test('hyperlinks', async function() { this.timeout(linkCheckingTimeoutMilliseconds); - if (dependencies != DependencyStatus.Present) this.test.skip(); + if (dependencies != DependencyStatus.Present) this.test?.skip(); for (const checkset of checkDependencies.watcherConfig) { for (const check of checkset.checks) { if (check.installLink) { @@ -200,7 +200,7 @@ suite('test dependency checking', () => { { host: installUrl.host, path: installUrl.pathname }, res => { console.log(`Got status=${res.statusCode}`); - resolve(res.statusCode); + resolve(res.statusCode!); } ).end(); }))).to.be.lessThan(400); diff --git a/src/test/check_highlighting.test.ts b/src/test/check_highlighting.test.ts index c040d0fd6..ef2c6cfa1 100644 --- a/src/test/check_highlighting.test.ts +++ b/src/test/check_highlighting.test.ts @@ -73,7 +73,7 @@ suite('test syntax highlighting', () => { let files = glob.sync(`lingua-franca/test/**/**.lf`, { cwd: root, ignore: "**/*-gen/**" }) for (const file of files.map(it => path.resolve(root, it))) { const code = fs.readFileSync(file).toString() - const annotated = annotateCode(code, grammar) + const annotated = annotateCode(code, grammar!) const relPath = path.relative(path.join(root, "lingua-franca", "test"), file) const testPath = path.resolve(root, "test", "known-good", relPath.replace(".lf", ".html")) if (fs.existsSync(testPath)) { diff --git a/src/test/dependency_status.ts b/src/test/dependency_status.ts index 5ece649bb..b01beb42b 100644 --- a/src/test/dependency_status.ts +++ b/src/test/dependency_status.ts @@ -9,7 +9,7 @@ export default () => { const dependenciesString = process.env.dependencies.toLowerCase(); for (const v in DependencyStatus) { if (v === undefined) return DependencyStatus.Present - if (v.toLowerCase() === dependenciesString) return DependencyStatus[v]; + if (v.toLowerCase() === dependenciesString) return (DependencyStatus as any)[v]; } throw new Error( `"${dependenciesString}" is not a valid dependency state. diff --git a/src/test/test_runner.ts b/src/test/test_runner.ts index e1f42fe6a..80c8b3a6b 100644 --- a/src/test/test_runner.ts +++ b/src/test/test_runner.ts @@ -21,7 +21,7 @@ const minimalDependenciesPath = 'temporary_test_deps_please_remove'; async function getFreshPath(): Promise { fs.mkdirSync(minimalDependenciesPath); for (const d of minimalDependencies) { - let currentLocation: string; + let currentLocation: string | undefined; try { currentLocation = await which(d); } catch (e) { /* Do nothing */ } diff --git a/src/tsbuild.mjs b/src/tsbuild.mjs deleted file mode 100644 index 2f6180747..000000000 --- a/src/tsbuild.mjs +++ /dev/null @@ -1,67 +0,0 @@ -// This JS script is needed to compile the TS code. - -import * as esbuild from 'esbuild'; -import path from 'node:path'; -import fs from 'node:fs'; - -let wasmPlugin = { - name: 'wasm', - setup(build) { - // Resolve ".wasm" files to a path with a namespace - build.onResolve({ filter: /\.wasm$/ }, args => { - // If this is the import inside the stub module, import the - // binary itself. Put the path in the "wasm-binary" namespace - // to tell our binary load callback to load the binary file. - if (args.namespace === 'wasm-stub') { - return { - path: args.path, - namespace: 'wasm-binary', - }; - } - - // Otherwise, generate the JavaScript stub module for this - // ".wasm" file. Put it in the "wasm-stub" namespace to tell - // our stub load callback to fill it with JavaScript. - // - // Resolve relative paths to absolute paths here since this - // resolve callback is given "resolveDir", the directory to - // resolve imports against. - if (args.resolveDir === '') { - return; // Ignore unresolvable paths - } - return { - path: path.isAbsolute(args.path) ? args.path : path.join(args.resolveDir, args.path), - namespace: 'wasm-stub', - }; - }); - - // Virtual modules in the "wasm-stub" namespace are filled with - // the JavaScript code for compiling the WebAssembly binary. The - // binary itself is imported from a second virtual module. - build.onLoad({ filter: /.*/, namespace: 'wasm-stub' }, async (args) => ({ - contents: `import wasm from ${JSON.stringify(args.path)} - export default (imports) => - WebAssembly.instantiate(wasm, imports).then( - result => result.instance.exports)`, - })); - - // Virtual modules in the "wasm-binary" namespace contain the - // actual bytes of the WebAssembly file. This uses esbuild's - // built-in "binary" loader instead of manually embedding the - // binary data inside JavaScript code ourselves. - build.onLoad({ filter: /.*/, namespace: 'wasm-binary' }, async (args) => ({ - contents: await fs.promises.readFile(args.path), - loader: 'binary', - })); - }, -}; - -await esbuild.build({ - entryPoints: ['./src/extension.js'], - bundle: true, - outfile: 'out/extension.js', - plugins: [wasmPlugin], - external: ['vscode'], - format: 'cjs', - platform: 'node' -}); diff --git a/src/utils.ts b/src/utils.ts index 66ee50846..c7dd587b6 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,7 +1,7 @@ import * as vscode from 'vscode'; export function getTerminal(name: string, cwd?: string) { - let terminal: vscode.Terminal = vscode.window.terminals.find( + let terminal: vscode.Terminal | undefined = vscode.window.terminals.find( t => t.name === name ); if (!terminal) { diff --git a/tsconfig.json b/tsconfig.json index d9b8679c6..cf94e778a 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,15 +1,16 @@ { "compilerOptions": { - "esModuleInterop": true, + // "esModuleInterop": true, "inlineSources": false, "lib": [ - "esnext" + "ES2022", + "DOM" // hackily added to include wasm support ], - "module": "commonjs", - "moduleResolution": "node", + "module": "Node16", + // "moduleResolution": "node", "outDir": "./out", "sourceMap": false, - "target": "esnext", + "target": "ES2022", "rootDir": "./src", "strict": true }, diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 000000000..fd333241c --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,51 @@ +//@ts-check + +'use strict'; + +const path = require('path'); + +//@ts-check +/** @typedef {import('webpack').Configuration} WebpackConfig **/ + +/** @type WebpackConfig */ +const extensionConfig = { + target: 'node', // VS Code extensions run in a Node.js-context 📖 -> https://webpack.js.org/configuration/node/ + mode: 'none', // this leaves the source code as close as possible to the original (when packaging we set this to 'production') + + entry: './src/extension.ts', // the entry point of this extension, 📖 -> https://webpack.js.org/configuration/entry-context/ + output: { + // the bundle is stored in the 'dist' folder (check package.json), 📖 -> https://webpack.js.org/configuration/output/ + path: path.resolve(__dirname, 'dist'), + filename: 'extension.js', + libraryTarget: 'commonjs2' + }, + externals: { + vscode: 'commonjs vscode' // the vscode-module is created on-the-fly and must be excluded. Add other modules that cannot be webpack'ed, 📖 -> https://webpack.js.org/configuration/externals/ + // modules added here also need to be added in the .vscodeignore file + }, + resolve: { + // support reading TypeScript and JavaScript files, 📖 -> https://github.com/TypeStrong/ts-loader + extensions: ['.ts', '.js'] + }, + module: { + rules: [ + { + test: /\.ts$/, + exclude: /node_modules/, + use: [ + { + loader: 'ts-loader' + } + ] + } + ] + }, + devtool: 'nosources-source-map', + infrastructureLogging: { + level: "log", // enables logging required for problem matchers + }, + experiments: { + asyncWebAssembly: true + } +}; +module.exports = [ extensionConfig ]; From fae3c6d14f798989ada9061a0ecb329814d8a974 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Tue, 5 Mar 2024 14:54:39 -0800 Subject: [PATCH 16/45] Get webpack to work properly Webpack was generating __dirname code that threw runtime errors :( --- .gitignore | 2 +- .vscodeignore | 1 + package.json | 10 +++++----- src/build_commands.ts | 39 +++++++++++++++++++++++---------------- src/config.ts | 2 +- src/extension_version.ts | 2 +- webpack.config.js | 7 +++++-- 7 files changed, 37 insertions(+), 26 deletions(-) diff --git a/.gitignore b/.gitignore index 128b49bbf..e32b49b15 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,7 @@ *.vsix .vscode-test node_modules/* -out/* +out/ .gradle/* __pycache__/* lfw-pkg/ diff --git a/.vscodeignore b/.vscodeignore index ba8e0b490..d6d8180a5 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -18,3 +18,4 @@ tslint.json uf.py package-lock.json developer-notes.md +temp* diff --git a/package.json b/package.json index 8dc65aa15..104a7743b 100644 --- a/package.json +++ b/package.json @@ -188,13 +188,13 @@ "scripts": { "clean": "rimraf out && rimraf lib && rimraf vscode-lingua-franca-*.vsix", "transpile": "webpack", - "vscode:prepublish": "npm run transpile -- --minify", - "compile": "./write-version-to-file.sh src/extension_version.ts && npm run transpile -- --sourcemap", - "watch": "npm run transpile -- --sourcemap --watch", + "vscode:prepublish": "npm run transpile", + "compile": "./write-version-to-file.sh src/extension_version.ts && npm run transpile", + "watch": "npm run transpile --watch", "build": "npx ts-node src/build_lds.ts", "compile-tests": "npx tsc --lib \"dom\" --outDir out/test --inlineSourceMap", - "package": "move-cli lingua-franca ../temp-lingua-franca89539275 && vsce package && move-cli ../temp-lingua-franca89539275 lingua-franca", - "package-pre-release": "move-cli lingua-franca ../temp-lingua-franca89539275 && vsce package --pre-release && move-cli ../temp-lingua-franca89539275 lingua-franca", + "package": "move-cli lingua-franca ../temp-lingua-franca89539275 && (vsce package; move-cli ../temp-lingua-franca89539275 lingua-franca)", + "package-pre-release": "move-cli lingua-franca ../temp-lingua-franca89539275 && (vsce package --pre-release; move-cli ../temp-lingua-franca89539275 lingua-franca)", "deploy": "echo \"Y\r\n\" | code --install-extension vscode-lingua-franca-*.vsix --force", "install": "npm run clean && npm run build && npm run package && npm run deploy", "test": "npm run compile-tests && node ./out/test/test/test_runner.js --dependencies=present", diff --git a/src/build_commands.ts b/src/build_commands.ts index 0216e99e1..946e1452b 100644 --- a/src/build_commands.ts +++ b/src/build_commands.ts @@ -89,6 +89,22 @@ const getWorkspace = return ret; }; +const fsReadCapability = (p: string) => { + try { + return require('node:fs').readFileSync(p, {encoding: "utf-8"}); + } catch { + return undefined; + }; +}; + +async function getJson(uri: string): Promise { + let json: string | undefined = (await import('lfwasm')).lfc_json(vscode.Uri.parse(uri).fsPath, fsReadCapability); + if (!json) { + json = ""; + } + return json; +} + /** * Return the action that should be taken in case of a request to build. * @param withLogs A messageShowerTransformer that lets the user request to view logs. @@ -96,27 +112,18 @@ const getWorkspace = * @returns The action that should be taken in case of a request to build. */ const build = (withLogs: MessageShowerTransformer, client: LanguageClient) => - (textEditor: vscode.TextEditor) => { + async (textEditor: vscode.TextEditor) => { const uri = getLfUri(textEditor.document); if (!uri) return; - vscode.workspace.saveAll().then((successful: boolean) => { - if (!successful) return; - client.sendRequest('generator/build', [uri, getJson(uri)]).then((messageAny: any) => { - const message: string = messageAny; - if (message) withLogs(vscode.window.showInformationMessage)(message); - else withLogs(vscode.window.showErrorMessage)('Build failed.'); - }); + const successful = vscode.workspace.saveAll(); + if (!successful) return; + client.sendRequest('generator/build', [uri, await getJson(uri)]).then((messageAny: any) => { + const message: string = messageAny; + if (message) withLogs(vscode.window.showInformationMessage)(message); + else withLogs(vscode.window.showErrorMessage)('Build failed.'); }); }; -async function getJson(uri: string): Promise { - let json: string | undefined = lfw.lfc_json(vscode.Uri.parse(uri).fsPath, (p: string) => vscode.workspace.fs.readFile(vscode.Uri.file(p))); - if (!json) { - json = ""; - } - return json; -} - /** * Return the action that should be taken in case of a request to build and run. * @param withLogs A messageShowerTransformer that lets the user request to view logs. diff --git a/src/config.ts b/src/config.ts index 1065e6088..9b91d8993 100644 --- a/src/config.ts +++ b/src/config.ts @@ -66,7 +66,7 @@ export const libDirName = 'lib'; export const repoURL = 'https://github.com/lf-lang/lingua-franca.git'; /** Absolute path to the root directory of the vscode-lingua-franca repo. */ -export const baseDirPath = path.resolve(path.dirname(require.main!.filename), '..'); +export const baseDirPath = path.resolve(__dirname, '..'); /** Absolute path to the directory in which to put the jar files. */ export const libDirPath = path.resolve(baseDirPath, libDirName); diff --git a/src/extension_version.ts b/src/extension_version.ts index 14a183088..508fc2033 100644 --- a/src/extension_version.ts +++ b/src/extension_version.ts @@ -1,3 +1,3 @@ 'use strict'; // This is a generated file. Do not edit. -export const version = "fe7bb171ee79706b762d795af62034fdf117d013"; +export const version = "807cd213f6cfa3c434fa62ba030af7ac409075f9"; diff --git a/webpack.config.js b/webpack.config.js index fd333241c..d817f7124 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -14,8 +14,8 @@ const extensionConfig = { entry: './src/extension.ts', // the entry point of this extension, 📖 -> https://webpack.js.org/configuration/entry-context/ output: { - // the bundle is stored in the 'dist' folder (check package.json), 📖 -> https://webpack.js.org/configuration/output/ - path: path.resolve(__dirname, 'dist'), + // the bundle is stored in the 'out' folder (check package.json), 📖 -> https://webpack.js.org/configuration/output/ + path: path.resolve(__dirname, 'out'), filename: 'extension.js', libraryTarget: 'commonjs2' }, @@ -46,6 +46,9 @@ const extensionConfig = { }, experiments: { asyncWebAssembly: true + }, + node: { + __dirname: true } }; module.exports = [ extensionConfig ]; From 81f894c276b9ba76fe08b8e6abe2ab74614851b4 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Tue, 5 Mar 2024 16:54:17 -0800 Subject: [PATCH 17/45] Improve the build --- CONTRIBUTING.md | 49 +++++++++++++++++++++++++++++++++++-------------- package.json | 2 +- 2 files changed, 36 insertions(+), 15 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d40c086f2..a2634a602 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,4 +1,5 @@ # Contributing + This repo provides the [Lingua Franca](https://www.lf-lang.org/) (LF) [Visual Studio Code](https://code.visualstudio.com/) (VSCode) extension built around the LF Language and Diagram Server (LDS). @@ -9,18 +10,22 @@ from the VSCode marketplace. See [README.md](https://github.com/lf-lang/vscode-lingua-franca/) for more info. ## Getting started + To check out the repository, build from source, and install the VS Code plugin, run the following command: + ``` git clone git@github.com:lf-lang/vscode-lingua-franca.git \ && cd vscode-lingua-franca \ -&& cp -r /path/to/the/wasm/dependency/packaged/for/use/with/typescript ./lfw-pkg \ +&& export LF_EDITOR_SUPPORT_REPO_PATH=/path/to/root/of/editor/support/repo \ && npm install ``` + If you do not have a public key set up for authentication with GitHub, you can also use HTTPS: + ``` git clone https://github.com/lf-lang/vscode-lingua-franca.git \ && cd vscode-lingua-franca \ -&& cp -r /path/to/the/wasm/dependency/packaged/for/use/with/typescript ./lfw-pkg \ +&& export LF_EDITOR_SUPPORT_REPO_PATH=/path/to/root/of/editor/support/repo/which/has/the/wasm/dependency/packaged/for/use/with/typescript \ && npm install ``` @@ -29,61 +34,77 @@ Note that this assumes that you have the WASM dependency somewhere on your syste ### Trouble Shooting #### VS Code is not detected on Mac OS X + If you have VS Code installed, it might not get recognized if it is not on your `PATH`. To add `code` to your `PATH` and allow our install script to find it, open the command pallete in VS Code (ctrl+p) and type `Install 'code' command in PATH`. #### Maven uses an incompatible JDK + Maven may come with an OpenJDK, depending on how it is installed. If this JDK is not the right version, the build process will fail. To point `mvn` to the correct JDK, set the `JAVA_HOME` environment variable accordingly. To see which version of Java is used, run `mvn --version`. ## Running the tests + To run integration tests with the assumption that the correct dependencies are installed, run: + ```bash npm run test ``` To test the Textmate syntax highlighting only, run + ```bash npm run test-syntax ``` To save the current Textmate syntax highlighting as the correct "known good" behavior, run + ```bash npm run update-known-good ``` ## Adding tests + Tests are located in the `src` directory and are marked using the `.test.ts` extension. We use [Mocha](https://mochajs.org/) as our testing framework. ## Submitting a Pull Request (PR) + Please keep your PRs manageable and easy to review. - - Provide a clear title and description of the proposed changes; - - Keep the changes limited to a particular feature, fix, or enhancement; - - Mark the PR as "draft" until it is ready for review; - - Provide tests along with your code; and - - Follow the [TypeScript style - guide](https://google.github.io/styleguide/tsguide.html) to avoid trivial - review feedback. + +- Provide a clear title and description of the proposed changes; +- Keep the changes limited to a particular feature, fix, or enhancement; +- Mark the PR as "draft" until it is ready for review; +- Provide tests along with your code; and +- Follow the [TypeScript style + guide](https://google.github.io/styleguide/tsguide.html) to avoid trivial + review feedback. ## Suggested debugging workflow + For development purposes, it is possible to manually perform an incremental build simply by bypassing Maven and Gradle entirely and instead running the Python script `./uf.py`. This script will re-compile Java and Kotlin files and add them to the fat jar using the `jar` command with the `-uf` flag. We suggest the following workflow for debugging the extension (implemented in TypeScript): + 1. Run the command `npm run compile` to generate JavaScript together with a source map (in the `out` directory). The source map is necessary for breakpoints to work. 2. Set breakpoints in the TypeScript source files. 3. Open `./src/extension.ts` in Visual Studio Code. 4. Press F5 to run the extension in a new Extension Development Host window. We suggest the following workflow for debugging the language server (implemented in Java/Kotlin): + 1. Ensure that the appropriate compiler is on your PATH. - * To build Java files, `javac` is required. - * To build Kotlin files, [the Kotlin JVM compiler](https://github.com/JetBrains/kotlin/releases/tag/v1.5.30) `kotlinc` is required. It must be the JVM compiler, not the native compiler. + +- To build Java files, `javac` is required. +- To build Kotlin files, [the Kotlin JVM compiler](https://github.com/JetBrains/kotlin/releases/tag/v1.5.30) `kotlinc` is required. It must be the JVM compiler, not the native compiler. + 2. Ensure that the language and diagram server fat JAR exists. This file is called `./lib/lflang-lds.jar`. If it does not exist, then it is necessary to build it using the build task: `npm run build`. -3. Run the command: ```./uf.py ``` or ```npm run amend-jar -- ```, where is either: - * the canonical name of a package that you would like to update, or - * the canonical name of the class that you would like to update. An example would be: ```./uf.py org.lflang.FileConfig```. This will also update any nested classes, and it should work as you would expect even for Kotlin files that do not include exactly one top-level class. +3. Run the command: `./uf.py ` or `npm run amend-jar -- `, where is either: + +- the canonical name of a package that you would like to update, or +- the canonical name of the class that you would like to update. An example would be: `./uf.py org.lflang.FileConfig`. This will also update any nested classes, and it should work as you would expect even for Kotlin files that do not include exactly one top-level class. + 4. Open `./src/extension.ts` in Visual Studio Code. 5. Press F5 to run the extension in a new Extension Development Host window. diff --git a/package.json b/package.json index 104a7743b..3335430c5 100644 --- a/package.json +++ b/package.json @@ -196,7 +196,7 @@ "package": "move-cli lingua-franca ../temp-lingua-franca89539275 && (vsce package; move-cli ../temp-lingua-franca89539275 lingua-franca)", "package-pre-release": "move-cli lingua-franca ../temp-lingua-franca89539275 && (vsce package --pre-release; move-cli ../temp-lingua-franca89539275 lingua-franca)", "deploy": "echo \"Y\r\n\" | code --install-extension vscode-lingua-franca-*.vsix --force", - "install": "npm run clean && npm run build && npm run package && npm run deploy", + "install": "cd $LF_EDITOR_SUPPORT_REPO_PATH/lfwasm && make && cd - && rm -rf ./lfw-pkg && cp -r $LF_EDITOR_SUPPORT_REPO_PATH/lfwasm/pkg ./lfw-pkg && npm run clean && npm run build && npm run package && npm run deploy", "test": "npm run compile-tests && node ./out/test/test/test_runner.js --dependencies=present", "test-dependencies-outdated": "npm run compile-tests && node ./out/test/test/test_runner.js --dependencies=outdated", "test-dependencies-missing-basic": "npm run compile-tests && node ./out/test/test/test_runner.js --dependencies=missing0", From 110d44ef468046fad67e2077043e34b44595bc2b Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Tue, 5 Mar 2024 16:59:49 -0800 Subject: [PATCH 18/45] Sync with lingua-franca LSP changes --- src/build_commands.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/build_commands.ts b/src/build_commands.ts index 946e1452b..ff4463261 100644 --- a/src/build_commands.ts +++ b/src/build_commands.ts @@ -117,7 +117,9 @@ const build = (withLogs: MessageShowerTransformer, client: LanguageClient) => if (!uri) return; const successful = vscode.workspace.saveAll(); if (!successful) return; - client.sendRequest('generator/build', [uri, await getJson(uri)]).then((messageAny: any) => { + const args = {"uri": uri, "json": await getJson(uri)}; + // const args = [ uri, await getJson(uri)]; + client.sendRequest('generator/build', args).then((messageAny: any) => { const message: string = messageAny; if (message) withLogs(vscode.window.showInformationMessage)(message); else withLogs(vscode.window.showErrorMessage)('Build failed.'); @@ -139,7 +141,9 @@ const buildAndRun = (withLogs: MessageShowerTransformer, client: LanguageClient) return; } vscode.window.showInformationMessage("DEBUG: doing build and run."); - client.sendRequest('generator/buildAndRun', [uri, await getJson(uri)]).then((commandAny: any) => { + const args = {"uri": uri, "json": await getJson(uri)}; + // const args = [ uri, await getJson(uri)]; + client.sendRequest('generator/buildAndRun', args).then((commandAny: any) => { const command: string[] = commandAny; if (!command || !command.length) { withLogs(vscode.window.showErrorMessage)('Build failed.'); From bbee808f0cd14d2b100663557c9eaf7346c16c79 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 12:32:03 -0700 Subject: [PATCH 19/45] Add missing ts-loader dependency --- package-lock.json | 243 ++++++++++++++++++++++++++++++++++++++++++++-- package.json | 5 +- 2 files changed, 236 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index e230e81c7..e8f473d10 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,6 +36,7 @@ "path": "^0.12.7", "rimraf": "^3.0.2", "simple-git": "^3.7.1", + "ts-loader": "^9.5.1", "ts-node": "^10.9.1", "typescript": "^4.6.4", "url-exist": "^3.0.0", @@ -899,11 +900,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, - "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -1722,9 +1724,10 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, - "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -2121,8 +2124,9 @@ }, "node_modules/is-number": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -2564,6 +2568,19 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/mime": { "version": "1.6.0", "dev": true, @@ -4139,8 +4156,9 @@ }, "node_modules/to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -4157,6 +4175,117 @@ "node": ">=8" } }, + "node_modules/ts-loader": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", + "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-loader/node_modules/ansi-styles": { + "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" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/chalk": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/color-convert": { + "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" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ts-loader/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==", + "dev": true + }, + "node_modules/ts-loader/node_modules/has-flag": { + "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/ts-loader/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-loader/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/ts-loader/node_modules/supports-color": { + "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" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ts-node": { "version": "10.9.1", "dev": true, @@ -5470,10 +5599,12 @@ } }, "braces": { - "version": "3.0.2", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" } }, "browser-stdout": { @@ -6000,7 +6131,9 @@ } }, "fill-range": { - "version": "7.0.1", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "requires": { "to-regex-range": "^5.0.1" @@ -6269,6 +6402,8 @@ }, "is-number": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, "is-plain-obj": { @@ -6574,6 +6709,16 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, + "micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dev": true, + "requires": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + } + }, "mime": { "version": "1.6.0", "dev": true @@ -7680,6 +7825,8 @@ }, "to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { "is-number": "^7.0.0" @@ -7691,6 +7838,82 @@ "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true }, + "ts-loader": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", + "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true + }, + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true + }, + "supports-color": { + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "ts-node": { "version": "10.9.1", "dev": true, diff --git a/package.json b/package.json index 3335430c5..9ef34ca7d 100644 --- a/package.json +++ b/package.json @@ -172,14 +172,15 @@ "path": "^0.12.7", "rimraf": "^3.0.2", "simple-git": "^3.7.1", + "ts-loader": "^9.5.1", "ts-node": "^10.9.1", "typescript": "^4.6.4", "url-exist": "^3.0.0", "vscode-oniguruma": "^1.7.0", "vscode-textmate": "^9.0.0", - "which": "^2.0.2", "webpack": "^5.90.0", - "webpack-cli": "^5.1.4" + "webpack-cli": "^5.1.4", + "which": "^2.0.2" }, "dependencies": { "lfwasm": "file:lfw-pkg", From d1e693e014f018ded7479affe98466ac058b623d Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 12:32:22 -0700 Subject: [PATCH 20/45] Clean up debug prints --- src/build_commands.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/build_commands.ts b/src/build_commands.ts index ff4463261..eb07eac35 100644 --- a/src/build_commands.ts +++ b/src/build_commands.ts @@ -28,7 +28,6 @@ type MessageShowerTransformer = (MessageDisplayHelper: MessageDisplayHelper) => const getAst = (withLogs: MessageShowerTransformer, client: LanguageClient) => async () => { - // vscode.window.showInformationMessage("Getting AST..."); const current_file = vscode.window.activeTextEditor?.document; if (!current_file) { return "There is no currently active file, so it is not clear which AST to return."; @@ -42,14 +41,12 @@ const getAst = withLogs(vscode.window.showErrorMessage)("Failed to get AST."); return; } - vscode.window.showInformationMessage("AST received: " + ret); return ret; }; const getWorkspace = (withLogs: MessageShowerTransformer, client: LanguageClient) => async () => { - // vscode.window.showInformationMessage("Getting workspace..."); const roots = vscode.workspace.workspaceFolders; let lf_files: vscode.Uri[] = []; let lingo_tomls: vscode.Uri[] = []; @@ -73,7 +70,6 @@ const getWorkspace = for (const lf_file of lf_files) { await client.onReady(); const ast = await client.sendRequest("parser/ast", lf_file.fsPath); - // vscode.window.showInformationMessage("ast: " + JSON.stringify(ast)); lf_asts.push(ast); } let toml_contents = []; @@ -85,7 +81,6 @@ const getWorkspace = lf: lf_asts, config: toml_contents }; - // vscode.window.showInformationMessage("Workspace received: " + ret); return ret; }; @@ -140,7 +135,6 @@ const buildAndRun = (withLogs: MessageShowerTransformer, client: LanguageClient) if (!successful) { return; } - vscode.window.showInformationMessage("DEBUG: doing build and run."); const args = {"uri": uri, "json": await getJson(uri)}; // const args = [ uri, await getJson(uri)]; client.sendRequest('generator/buildAndRun', args).then((commandAny: any) => { From 8e53e669943a0e43b0274b84ee446794a11fbb40 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 13:39:30 -0700 Subject: [PATCH 21/45] Add proprietary-extension-support submodule --- .gitmodules | 3 +++ CONTRIBUTING.md | 2 -- editor-support | 1 + package.json | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) create mode 160000 editor-support diff --git a/.gitmodules b/.gitmodules index c7b48d7f8..66038299a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "lingua-franca"] path = lingua-franca url = https://github.com/lf-lang/lingua-franca.git +[submodule "editor-support"] + path = editor-support + url = https://github.com/xronos-inc/editor-support.git diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a2634a602..49e2e394b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -16,7 +16,6 @@ To check out the repository, build from source, and install the VS Code plugin, ``` git clone git@github.com:lf-lang/vscode-lingua-franca.git \ && cd vscode-lingua-franca \ -&& export LF_EDITOR_SUPPORT_REPO_PATH=/path/to/root/of/editor/support/repo \ && npm install ``` @@ -25,7 +24,6 @@ If you do not have a public key set up for authentication with GitHub, you can a ``` git clone https://github.com/lf-lang/vscode-lingua-franca.git \ && cd vscode-lingua-franca \ -&& export LF_EDITOR_SUPPORT_REPO_PATH=/path/to/root/of/editor/support/repo/which/has/the/wasm/dependency/packaged/for/use/with/typescript \ && npm install ``` diff --git a/editor-support b/editor-support new file mode 160000 index 000000000..83df49114 --- /dev/null +++ b/editor-support @@ -0,0 +1 @@ +Subproject commit 83df4911453c4f22669c748e4183266c022a807d diff --git a/package.json b/package.json index 9ef34ca7d..babb4f428 100644 --- a/package.json +++ b/package.json @@ -197,7 +197,7 @@ "package": "move-cli lingua-franca ../temp-lingua-franca89539275 && (vsce package; move-cli ../temp-lingua-franca89539275 lingua-franca)", "package-pre-release": "move-cli lingua-franca ../temp-lingua-franca89539275 && (vsce package --pre-release; move-cli ../temp-lingua-franca89539275 lingua-franca)", "deploy": "echo \"Y\r\n\" | code --install-extension vscode-lingua-franca-*.vsix --force", - "install": "cd $LF_EDITOR_SUPPORT_REPO_PATH/lfwasm && make && cd - && rm -rf ./lfw-pkg && cp -r $LF_EDITOR_SUPPORT_REPO_PATH/lfwasm/pkg ./lfw-pkg && npm run clean && npm run build && npm run package && npm run deploy", + "install": "cd ./editor-support/lfwasm && make && cd - && rm -rf ./lfw-pkg && cp -r ./editor-support/lfwasm/pkg ./lfw-pkg && npm run clean && npm run build && npm run package && npm run deploy", "test": "npm run compile-tests && node ./out/test/test/test_runner.js --dependencies=present", "test-dependencies-outdated": "npm run compile-tests && node ./out/test/test/test_runner.js --dependencies=outdated", "test-dependencies-missing-basic": "npm run compile-tests && node ./out/test/test/test_runner.js --dependencies=missing0", From 412a876a8ffbf4e2d4720788f59cd2a1dff4840a Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 14:16:19 -0700 Subject: [PATCH 22/45] Fix non-reproducibility in build --- package-lock.json | 226 +++++++++++++++++++++++----------------------- package.json | 6 +- 2 files changed, 116 insertions(+), 116 deletions(-) diff --git a/package-lock.json b/package-lock.json index e8f473d10..3620d9465 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,7 +42,7 @@ "url-exist": "^3.0.0", "vscode-oniguruma": "^1.7.0", "vscode-textmate": "^9.0.0", - "webpack": "^5.90.0", + "webpack": "^5.91.0", "webpack-cli": "^5.1.4", "which": "^2.0.2" }, @@ -481,9 +481,9 @@ } }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "dev": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", @@ -503,9 +503,9 @@ "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { @@ -526,15 +526,15 @@ "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" + "@webassemblyjs/wasm-gen": "1.12.1" } }, "node_modules/@webassemblyjs/ieee754": { @@ -562,28 +562,28 @@ "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", "@webassemblyjs/leb128": "1.11.6", @@ -591,24 +591,24 @@ } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-api-error": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", @@ -617,12 +617,12 @@ } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, @@ -1538,9 +1538,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.1.tgz", - "integrity": "sha512-3d3JRbwsCLJsYgvb6NuWEG44jjPSOMuS73L/6+7BZuoKm3W+qXnSoIYVHi8dG7Qcg4inAY4jbzkZ7MnskePeDg==", + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", + "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -4551,9 +4551,9 @@ "dev": true }, "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -4573,26 +4573,26 @@ } }, "node_modules/webpack": { - "version": "5.90.3", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", - "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", + "version": "5.91.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", + "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", "acorn-import-assertions": "^1.9.0", "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", + "enhanced-resolve": "^5.16.0", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", + "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", @@ -4600,7 +4600,7 @@ "schema-utils": "^3.2.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.0", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, "bin": { @@ -5272,9 +5272,9 @@ } }, "@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "dev": true, "requires": { "@webassemblyjs/helper-numbers": "1.11.6", @@ -5294,9 +5294,9 @@ "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", "dev": true }, "@webassemblyjs/helper-numbers": { @@ -5317,15 +5317,15 @@ "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" + "@webassemblyjs/wasm-gen": "1.12.1" } }, "@webassemblyjs/ieee754": { @@ -5353,28 +5353,28 @@ "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, "@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", "@webassemblyjs/leb128": "1.11.6", @@ -5382,24 +5382,24 @@ } }, "@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, "@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-api-error": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", "@webassemblyjs/ieee754": "1.11.6", @@ -5408,12 +5408,12 @@ } }, "@webassemblyjs/wast-printer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, @@ -6003,9 +6003,9 @@ } }, "enhanced-resolve": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.1.tgz", - "integrity": "sha512-3d3JRbwsCLJsYgvb6NuWEG44jjPSOMuS73L/6+7BZuoKm3W+qXnSoIYVHi8dG7Qcg4inAY4jbzkZ7MnskePeDg==", + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", + "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -8092,9 +8092,9 @@ "dev": true }, "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", "dev": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -8108,26 +8108,26 @@ "dev": true }, "webpack": { - "version": "5.90.3", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", - "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", + "version": "5.91.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", + "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", "acorn-import-assertions": "^1.9.0", "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", + "enhanced-resolve": "^5.16.0", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", + "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", @@ -8135,7 +8135,7 @@ "schema-utils": "^3.2.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.0", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" } }, diff --git a/package.json b/package.json index babb4f428..c878b5661 100644 --- a/package.json +++ b/package.json @@ -190,14 +190,14 @@ "clean": "rimraf out && rimraf lib && rimraf vscode-lingua-franca-*.vsix", "transpile": "webpack", "vscode:prepublish": "npm run transpile", - "compile": "./write-version-to-file.sh src/extension_version.ts && npm run transpile", + "compile": "cd ./editor-support/lfwasm && make && cd - && rm -rf ./lfw-pkg && cp -r ./editor-support/lfwasm/pkg ./lfw-pkg && ./write-version-to-file.sh src/extension_version.ts && npm run transpile", "watch": "npm run transpile --watch", "build": "npx ts-node src/build_lds.ts", - "compile-tests": "npx tsc --lib \"dom\" --outDir out/test --inlineSourceMap", + "compile-tests": "npm run compile && npx tsc --lib \"dom\" --outDir out/test --inlineSourceMap", "package": "move-cli lingua-franca ../temp-lingua-franca89539275 && (vsce package; move-cli ../temp-lingua-franca89539275 lingua-franca)", "package-pre-release": "move-cli lingua-franca ../temp-lingua-franca89539275 && (vsce package --pre-release; move-cli ../temp-lingua-franca89539275 lingua-franca)", "deploy": "echo \"Y\r\n\" | code --install-extension vscode-lingua-franca-*.vsix --force", - "install": "cd ./editor-support/lfwasm && make && cd - && rm -rf ./lfw-pkg && cp -r ./editor-support/lfwasm/pkg ./lfw-pkg && npm run clean && npm run build && npm run package && npm run deploy", + "install": "npm run clean && npm run build && npm run package && npm run deploy", "test": "npm run compile-tests && node ./out/test/test/test_runner.js --dependencies=present", "test-dependencies-outdated": "npm run compile-tests && node ./out/test/test/test_runner.js --dependencies=outdated", "test-dependencies-missing-basic": "npm run compile-tests && node ./out/test/test/test_runner.js --dependencies=missing0", From 81924d7cd504e4f7a162eeac2f550bb00b91358b Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 14:16:39 -0700 Subject: [PATCH 23/45] Update known good --- src/extension_version.ts | 2 +- .../C/src/ImportInstanceInMode.html | 123 +++++ .../C/src/federated/ImportsInModes.html | 187 +++++++ .../failing/EnclaveFederatedRequestStop.html | 476 ++++++++++++++++ test/known-good/C/src/lib/InstanceInMode.html | 168 ++++++ .../Cpp/src/target/GenericComposition.html | 520 ++++++++++++++++++ 6 files changed, 1475 insertions(+), 1 deletion(-) create mode 100644 test/known-good/C/src/ImportInstanceInMode.html create mode 100644 test/known-good/C/src/federated/ImportsInModes.html create mode 100644 test/known-good/C/src/federated/failing/EnclaveFederatedRequestStop.html create mode 100644 test/known-good/C/src/lib/InstanceInMode.html create mode 100644 test/known-good/Cpp/src/target/GenericComposition.html diff --git a/src/extension_version.ts b/src/extension_version.ts index 508fc2033..75c2dd357 100644 --- a/src/extension_version.ts +++ b/src/extension_version.ts @@ -1,3 +1,3 @@ 'use strict'; // This is a generated file. Do not edit. -export const version = "807cd213f6cfa3c434fa62ba030af7ac409075f9"; +export const version = "6560e1f527c3f82f6febfc5e0df074111cf61cd1"; diff --git a/test/known-good/C/src/ImportInstanceInMode.html b/test/known-good/C/src/ImportInstanceInMode.html new file mode 100644 index 000000000..eaba5d160 --- /dev/null +++ b/test/known-good/C/src/ImportInstanceInMode.html @@ -0,0 +1,123 @@ + +// Test that importing from a file with a reactor that is only instantiated in + + + +// a mode does not trigger a NPE. + + + +target + + + + + +C + + + { + + + + timeout + + +: + + +0 + + + s + + + +} + + + + + + + +import + + + + + +B + + + + + +from + + + + + +" + + +lib/InstanceInMode.lf + + +" + + + + + + + +main + + + + + +reactor + + + { + + + + + + +b + + + + + += + + + + + +new + + + + + +B + + +() + + + +} + + + + + + diff --git a/test/known-good/C/src/federated/ImportsInModes.html b/test/known-good/C/src/federated/ImportsInModes.html new file mode 100644 index 000000000..e1f93c2ba --- /dev/null +++ b/test/known-good/C/src/federated/ImportsInModes.html @@ -0,0 +1,187 @@ + +target + + + + + +C + + + { + + + + timeout + + +: + + +1 + + + + + +msec + + + +} + + + + + + + +import + + + + + +Count + + + + + +from + + + + + +" + + +../lib/Count.lf + + +" + + + + + + + +reactor + + + + + +R + + + { + + + + + + +initial + + + + + +mode + + + { + + + + + + +c + + + + + += + + + + + +new + + + + + +Count + + +() + + + + } + + + +} + + + + + + + +federated + + + + + +reactor + + + { + + + + + + +fed + + + + + += + + + + + +new + + + + + +R + + +() + + + +} + + + + + + diff --git a/test/known-good/C/src/federated/failing/EnclaveFederatedRequestStop.html b/test/known-good/C/src/federated/failing/EnclaveFederatedRequestStop.html new file mode 100644 index 000000000..afe7e0004 --- /dev/null +++ b/test/known-good/C/src/federated/failing/EnclaveFederatedRequestStop.html @@ -0,0 +1,476 @@ + +/** + + + + * Test that enclaves within federates all stop at the time requested by the first enclave to + + + + * request a stop. Note that the test has no timeout because any finite timeout can, in theory, + + + + * cause the test to fail. The first federate to request a stop does so at 50 ms, so the program + + + + * should terminate quickly if all goes well. + + + + * Placed in failing as we do not have full support for scheduling enclaves yet. + + + + + + +*/ + + + +target + + + + + +C + + + + + + + +reactor + + + + + +Stop + + +( + + + + + + +// Zero value here means "don't stop". + + + + stop_time: + + +time + + + + + += + + + + + +0 + + +) { + + + + + + +timer + + + t(stop_time) + + + + + + + + + + +reaction + + +( + + +t) { + + += + + + + if (self + + +-> + + +stop_time > + + +0 + + +) lf_request_stop(); + + + + + + += + + +} + + + + + + + + + + +reaction + + +( + + +shutdown + + +) { + + += + + + + lf_print( + + +" + + +Stopped at tag ( + + +" + + + PRINTF_TIME + + +" + + +, %d) + + +" + + +, lf_time_logical_elapsed(), lf_tag() + + +. + + +microstep); + + + + if (lf_time_logical_elapsed() ! + + += + + + 50000000LL || lf_tag() + + +. + + +microstep ! + + += + + + + + +1 + + +) { + + + + lf_print_error_and_exit( + + +" + + +Expected stop tag to be (50ms, 1). + + +" + + +); + + + + } + + + + + + += + + +} + + + +} + + + + + + + +reactor + + + + + +Fed + + +(least_stop_time: + + +time + + + + + += + + + + + +0 + + +) { + + + + + + +@ + + +enclave + + + + + + +s1 + + + + + += + + + + + +new + + + + + +Stop + + +() + + + + + + +@ + + +enclave + + + + + + +s2 + + + + + += + + + + + +new + + + + + +Stop + + +(stop_time + + += + + +least_stop_time) + + + +} + + + + + + + +federated + + + + + +reactor + + + { + + + + + + +f1 + + + + + += + + + + + +new + + + + + +Fed + + +() + + + + + + +f2 + + + + + += + + + + + +new + + + + + +Fed + + +(least_stop_time + + += + + + + + +50 + + + ms) + + + +} + + + + + + diff --git a/test/known-good/C/src/lib/InstanceInMode.html b/test/known-good/C/src/lib/InstanceInMode.html new file mode 100644 index 000000000..350729609 --- /dev/null +++ b/test/known-good/C/src/lib/InstanceInMode.html @@ -0,0 +1,168 @@ + +// Define a reactor that is only instantiated inside a mode. + + + +target + + + + + +C + + + + + + + +reactor + + + + + +U + + + { + + + + + + +reaction + + +( + + +startup + + +) { + + += + + + + + += + + +} + + + +} + + + + + + + +reactor + + + + + +B + + + { + + + + + + +reaction + + +( + + +startup + + +) { + + += + + + + + += + + +} + + + + + + + + + + +initial + + + + + +mode + + + A { + + + + + + +u + + + + + += + + + + + +new + + + + + +U + + +() + + + + } + + + +} + + + + + + diff --git a/test/known-good/Cpp/src/target/GenericComposition.html b/test/known-good/Cpp/src/target/GenericComposition.html new file mode 100644 index 000000000..132196106 --- /dev/null +++ b/test/known-good/Cpp/src/target/GenericComposition.html @@ -0,0 +1,520 @@ + +target + + + + + +Cpp + + + { + + + + timeout + + +: + + +1 + + + + + +sec + + + +} + + + + + + + +reactor + + + + + +Counter + + + { + + + + + + +state + + + + + +count + + +: + + + + + +T + + +( + + +0 + + +) + + + + + + +timer + + + t( + + +0 + + +, + + +1 + + + + + +sec + + +) + + + + + + +output + + + + + +out + + +: + + + + + +T + + + + + + + + + + +reaction + + +( + + +t) + + +-> + + + out { + + += + + + + + + +out + + +. + + +set + + +(count); + + + + count + + ++ + + += + + + + + +1 + + +; + + + + + + += + + +} + + + +} + + + + + + + +reactor + + + + + +Printer + + + { + + + + + + +input + + + + + +in + + +: + + + + + +T + + + + + + + + + + +reaction + + +( + + +in) { + + += + + + + auto msg + + += + + + + + +* + + +in + + +. + + +get + + +(); + + + + + + +std + + +:: + + +cout + + + << msg << + + +std + + +:: + + +endl + + +; + + + + + + += + + +} + + + +} + + + + + + + +reactor + + + + + +MyWrapper + + + { + + + + + + +c + + + + + += + + + + + +new + + + + + +Counter + + +< + + +T + + +> + + +() + + + + + + +p + + + + + += + + + + + +new + + + + + +Printer + + +< + + +T + + +> + + +() + + + + + + +c + + +. + + +out + + + + + +-> + + + + + +p + + +. + + +in + + + +} + + + + + + + +main + + + + + +reactor + + + { + + + + + + +m + + + + + += + + + + + +new + + + + + +MyWrapper + + +< + + +int + + +> + + +() + + + +} + + + + + + From dc79c61c04b02345c1120544e9dab01aff1137cd Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 14:36:40 -0700 Subject: [PATCH 24/45] Install wasm-pack --- .github/actions/build/action.yml | 3 +++ tsconfig.json | 2 -- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/actions/build/action.yml b/.github/actions/build/action.yml index 1b6d82c8d..0133ab943 100644 --- a/.github/actions/build/action.yml +++ b/.github/actions/build/action.yml @@ -32,6 +32,9 @@ runs: echo $JAVA_HOME working-directory: lingua-franca shell: bash + - name: Install the wasm-pack dev dependency globally + run: npm install -g wasm-pack + shell: bash - name: Build the VS Code extension run: npm install --ignore-scripts shell: bash diff --git a/tsconfig.json b/tsconfig.json index cf94e778a..ecd15dd46 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,13 +1,11 @@ { "compilerOptions": { - // "esModuleInterop": true, "inlineSources": false, "lib": [ "ES2022", "DOM" // hackily added to include wasm support ], "module": "Node16", - // "moduleResolution": "node", "outDir": "./out", "sourceMap": false, "target": "ES2022", From b68a4090a6fd01e1a70b5d879f747cb95812e72e Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 14:51:23 -0700 Subject: [PATCH 25/45] Add missing git clone step --- .github/workflows/dependency-tests.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/dependency-tests.yml b/.github/workflows/dependency-tests.yml index c501920bc..61e231dcd 100644 --- a/.github/workflows/dependency-tests.yml +++ b/.github/workflows/dependency-tests.yml @@ -76,6 +76,11 @@ jobs: platform: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.platform }} steps: + - name: Check out vscode-lingua-franca repository + uses: actions/checkout@v3 + with: + submodules: recursive + fetch-depth: 1 - uses: lf-lang/vscode-lingua-franca/.github/actions/build@main with: partial: "true" From 62f5bef287a4b20fe7ab61677bb3e14d148a47d3 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 14:59:50 -0700 Subject: [PATCH 26/45] Attempt to rearrange the CI builds --- .github/actions/build/action.yml | 13 ++++++------- .github/workflows/dependency-tests.yml | 4 ++++ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/.github/actions/build/action.yml b/.github/actions/build/action.yml index 0133ab943..d6fda97b4 100644 --- a/.github/actions/build/action.yml +++ b/.github/actions/build/action.yml @@ -35,8 +35,13 @@ runs: - name: Install the wasm-pack dev dependency globally run: npm install -g wasm-pack shell: bash + - name: Setup Rust + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + components: clippy - name: Build the VS Code extension - run: npm install --ignore-scripts + run: npm install --ignore-scripts && npm run compile shell: bash - name: Install Code run: | @@ -64,12 +69,6 @@ runs: run: npm i -g pnpm shell: bash if: ${{ inputs.partial == 'false' }} - - name: Setup Rust - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - components: clippy - if: ${{ inputs.partial == 'false' }} - name: Install RTI run: | cd lingua-franca diff --git a/.github/workflows/dependency-tests.yml b/.github/workflows/dependency-tests.yml index 61e231dcd..beb90f286 100644 --- a/.github/workflows/dependency-tests.yml +++ b/.github/workflows/dependency-tests.yml @@ -64,6 +64,7 @@ jobs: - name: Uninstall dependencies run: | python3 -m pip uninstall -y pylint + rustup self uninstall -y - name: Run tests (Linux) run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test-dependencies-missing-extended if: ${{ runner.os == 'Linux' }} @@ -84,6 +85,9 @@ jobs: - uses: lf-lang/vscode-lingua-franca/.github/actions/build@main with: partial: "true" + - name: Uninstall dependencies + run: | + rustup self uninstall -y - name: Run tests (Linux) run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test-dependencies-missing-basic if: ${{ runner.os == 'Linux' }} From 3e144178fa93dac508982e8e0898acbe54340fac Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 15:16:41 -0700 Subject: [PATCH 27/45] Hack to move Rust uninstall to specific place --- .github/workflows/dependency-tests.yml | 8 ++------ package.json | 4 ++-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/.github/workflows/dependency-tests.yml b/.github/workflows/dependency-tests.yml index beb90f286..fdb9770d1 100644 --- a/.github/workflows/dependency-tests.yml +++ b/.github/workflows/dependency-tests.yml @@ -64,12 +64,11 @@ jobs: - name: Uninstall dependencies run: | python3 -m pip uninstall -y pylint - rustup self uninstall -y - name: Run tests (Linux) run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test-dependencies-missing-extended if: ${{ runner.os == 'Linux' }} - name: Run tests (non-Linux) - run: npm run test-dependencies-missing-extended + run: export LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS=OK && npm run test-dependencies-missing-extended if: ${{ runner.os != 'Linux' }} test-dependencies-missing-basic: strategy: @@ -85,12 +84,9 @@ jobs: - uses: lf-lang/vscode-lingua-franca/.github/actions/build@main with: partial: "true" - - name: Uninstall dependencies - run: | - rustup self uninstall -y - name: Run tests (Linux) run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test-dependencies-missing-basic if: ${{ runner.os == 'Linux' }} - name: Run tests (non-Linux) - run: npm run test-dependencies-missing-basic + run: export LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS=OK && npm run test-dependencies-missing-basic if: ${{ runner.os != 'Linux' }} diff --git a/package.json b/package.json index c878b5661..e7a4b1249 100644 --- a/package.json +++ b/package.json @@ -200,8 +200,8 @@ "install": "npm run clean && npm run build && npm run package && npm run deploy", "test": "npm run compile-tests && node ./out/test/test/test_runner.js --dependencies=present", "test-dependencies-outdated": "npm run compile-tests && node ./out/test/test/test_runner.js --dependencies=outdated", - "test-dependencies-missing-basic": "npm run compile-tests && node ./out/test/test/test_runner.js --dependencies=missing0", - "test-dependencies-missing-extended": "npm run compile-tests && node ./out/test/test/test_runner.js --dependencies=missing1", + "test-dependencies-missing-basic": "if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else npm run compile-tests && rustup self uninstall -y && node ./out/test/test/test_runner.js --dependencies=missing0; fi", + "test-dependencies-missing-extended": "if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else npm run compile-tests && rustup self uninstall -y && node ./out/test/test/test_runner.js --dependencies=missing1; fi", "test-syntax": "npm run compile-tests && npx mocha out/test/test/check_highlighting.test.js --ui tdd --reporter-option maxDiffSize=0", "update-known-good": "rm -rf test/known-good && npm run compile-tests && npx mocha out/test/test/check_highlighting.test.js --ui tdd", "amend-jar": "./uf.py" From bcfe9fa212223a27caa42fe898b7175904aecf19 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 16:35:16 -0700 Subject: [PATCH 28/45] Try to fix build in macOS CI --- .github/actions/build/action.yml | 6 +++--- .github/workflows/dependency-tests.yml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/actions/build/action.yml b/.github/actions/build/action.yml index d6fda97b4..a5fc61e75 100644 --- a/.github/actions/build/action.yml +++ b/.github/actions/build/action.yml @@ -32,14 +32,14 @@ runs: echo $JAVA_HOME working-directory: lingua-franca shell: bash - - name: Install the wasm-pack dev dependency globally - run: npm install -g wasm-pack - shell: bash - name: Setup Rust uses: actions-rs/toolchain@v1 with: toolchain: stable components: clippy + - name: Install the wasm-pack dev dependency globally + run: cargo install wasm-pack + shell: bash - name: Build the VS Code extension run: npm install --ignore-scripts && npm run compile shell: bash diff --git a/.github/workflows/dependency-tests.yml b/.github/workflows/dependency-tests.yml index fdb9770d1..71fde897a 100644 --- a/.github/workflows/dependency-tests.yml +++ b/.github/workflows/dependency-tests.yml @@ -35,7 +35,7 @@ jobs: partial: true - name: Uninstall dependencies run: | - python3 -m pip uninstall -y pylint + python3 -m pip uninstall -y pylint --break-system-packages - name: Downgrade dependencies run: | pip install -I pylint==2.10.0 @@ -63,7 +63,7 @@ jobs: partial: true - name: Uninstall dependencies run: | - python3 -m pip uninstall -y pylint + python3 -m pip uninstall -y pylint --break-system-packages - name: Run tests (Linux) run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test-dependencies-missing-extended if: ${{ runner.os == 'Linux' }} From 63e0507a6e957af19bebc418f15b393fed264a79 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 16:40:03 -0700 Subject: [PATCH 29/45] More fixes in CI --- .github/actions/build/action.yml | 2 +- .github/workflows/dependency-tests.yml | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/actions/build/action.yml b/.github/actions/build/action.yml index a5fc61e75..b360e0c8a 100644 --- a/.github/actions/build/action.yml +++ b/.github/actions/build/action.yml @@ -62,7 +62,7 @@ runs: - name: Install pylint run: | python -m pip install --upgrade pip - pip3 install pylint --break-system-packages + PIP_BREAK_SYSTEM_PACKAGES=1 pip3 install pylint shell: bash if: ${{ inputs.partial == 'false' }} - name: Install pnpm diff --git a/.github/workflows/dependency-tests.yml b/.github/workflows/dependency-tests.yml index 71fde897a..2a6cd8981 100644 --- a/.github/workflows/dependency-tests.yml +++ b/.github/workflows/dependency-tests.yml @@ -35,7 +35,7 @@ jobs: partial: true - name: Uninstall dependencies run: | - python3 -m pip uninstall -y pylint --break-system-packages + PIP_BREAK_SYSTEM_PACKAGES=1 python3 -m pip uninstall -y pylint - name: Downgrade dependencies run: | pip install -I pylint==2.10.0 @@ -63,7 +63,7 @@ jobs: partial: true - name: Uninstall dependencies run: | - python3 -m pip uninstall -y pylint --break-system-packages + PIP_BREAK_SYSTEM_PACKAGES=1 python3 -m pip uninstall -y pylint - name: Run tests (Linux) run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test-dependencies-missing-extended if: ${{ runner.os == 'Linux' }} @@ -81,9 +81,10 @@ jobs: with: submodules: recursive fetch-depth: 1 - - uses: lf-lang/vscode-lingua-franca/.github/actions/build@main + - name: Build the extension + uses: ./.github/actions/build with: - partial: "true" + partial: true - name: Run tests (Linux) run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test-dependencies-missing-basic if: ${{ runner.os == 'Linux' }} From f533bc03df1b4e6d045c370babed127f9a9e066a Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 16:53:12 -0700 Subject: [PATCH 30/45] More fixes in CI --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index e7a4b1249..df76e5cbd 100644 --- a/package.json +++ b/package.json @@ -200,8 +200,8 @@ "install": "npm run clean && npm run build && npm run package && npm run deploy", "test": "npm run compile-tests && node ./out/test/test/test_runner.js --dependencies=present", "test-dependencies-outdated": "npm run compile-tests && node ./out/test/test/test_runner.js --dependencies=outdated", - "test-dependencies-missing-basic": "if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else npm run compile-tests && rustup self uninstall -y && node ./out/test/test/test_runner.js --dependencies=missing0; fi", - "test-dependencies-missing-extended": "if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else npm run compile-tests && rustup self uninstall -y && node ./out/test/test/test_runner.js --dependencies=missing1; fi", + "test-dependencies-missing-basic": "if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else npm run compile-tests && mv $HOME/.cargo $HOME/.cargo.bak && node ./out/test/test/test_runner.js --dependencies=missing0; fi", + "test-dependencies-missing-extended": "if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else npm run compile-tests && mv $HOME/.cargo $HOME/.cargo.bak && node ./out/test/test/test_runner.js --dependencies=missing1; fi", "test-syntax": "npm run compile-tests && npx mocha out/test/test/check_highlighting.test.js --ui tdd --reporter-option maxDiffSize=0", "update-known-good": "rm -rf test/known-good && npm run compile-tests && npx mocha out/test/test/check_highlighting.test.js --ui tdd", "amend-jar": "./uf.py" From 48ab70fbeb2f569c71b522a84edfeb756fdd508a Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 17:21:25 -0700 Subject: [PATCH 31/45] Try to make build more cross-platform --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index df76e5cbd..597f0a54b 100644 --- a/package.json +++ b/package.json @@ -178,7 +178,7 @@ "url-exist": "^3.0.0", "vscode-oniguruma": "^1.7.0", "vscode-textmate": "^9.0.0", - "webpack": "^5.90.0", + "webpack": "^5.91.0", "webpack-cli": "^5.1.4", "which": "^2.0.2" }, @@ -190,7 +190,7 @@ "clean": "rimraf out && rimraf lib && rimraf vscode-lingua-franca-*.vsix", "transpile": "webpack", "vscode:prepublish": "npm run transpile", - "compile": "cd ./editor-support/lfwasm && make && cd - && rm -rf ./lfw-pkg && cp -r ./editor-support/lfwasm/pkg ./lfw-pkg && ./write-version-to-file.sh src/extension_version.ts && npm run transpile", + "compile": "cd ./editor-support/lfwasm && make && cd ../.. && rm -rf ./lfw-pkg && move-cli ./editor-support/lfwasm/pkg ./lfw-pkg && ./write-version-to-file.sh src/extension_version.ts && npm run transpile", "watch": "npm run transpile --watch", "build": "npx ts-node src/build_lds.ts", "compile-tests": "npm run compile && npx tsc --lib \"dom\" --outDir out/test --inlineSourceMap", From cb78db6753c38debd49b4025f37b5dd264ef730c Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 17:36:12 -0700 Subject: [PATCH 32/45] Hack to move Rust downgrade to specific place --- .github/workflows/dependency-tests.yml | 1 - package.json | 8 ++++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/dependency-tests.yml b/.github/workflows/dependency-tests.yml index 2a6cd8981..d93e651cb 100644 --- a/.github/workflows/dependency-tests.yml +++ b/.github/workflows/dependency-tests.yml @@ -39,7 +39,6 @@ jobs: - name: Downgrade dependencies run: | pip install -I pylint==2.10.0 - rustup default 1.26.0 - name: Run tests (Linux) run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test-dependencies-outdated if: ${{ runner.os == 'Linux' }} diff --git a/package.json b/package.json index 597f0a54b..5b93e3a1f 100644 --- a/package.json +++ b/package.json @@ -190,7 +190,7 @@ "clean": "rimraf out && rimraf lib && rimraf vscode-lingua-franca-*.vsix", "transpile": "webpack", "vscode:prepublish": "npm run transpile", - "compile": "cd ./editor-support/lfwasm && make && cd ../.. && rm -rf ./lfw-pkg && move-cli ./editor-support/lfwasm/pkg ./lfw-pkg && ./write-version-to-file.sh src/extension_version.ts && npm run transpile", + "compile": "cd ./editor-support/lfwasm && bash make && cd ../.. && rm -rf ./lfw-pkg && move-cli ./editor-support/lfwasm/pkg ./lfw-pkg && ./write-version-to-file.sh src/extension_version.ts && npm run transpile", "watch": "npm run transpile --watch", "build": "npx ts-node src/build_lds.ts", "compile-tests": "npm run compile && npx tsc --lib \"dom\" --outDir out/test --inlineSourceMap", @@ -199,9 +199,9 @@ "deploy": "echo \"Y\r\n\" | code --install-extension vscode-lingua-franca-*.vsix --force", "install": "npm run clean && npm run build && npm run package && npm run deploy", "test": "npm run compile-tests && node ./out/test/test/test_runner.js --dependencies=present", - "test-dependencies-outdated": "npm run compile-tests && node ./out/test/test/test_runner.js --dependencies=outdated", - "test-dependencies-missing-basic": "if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else npm run compile-tests && mv $HOME/.cargo $HOME/.cargo.bak && node ./out/test/test/test_runner.js --dependencies=missing0; fi", - "test-dependencies-missing-extended": "if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else npm run compile-tests && mv $HOME/.cargo $HOME/.cargo.bak && node ./out/test/test/test_runner.js --dependencies=missing1; fi", + "test-dependencies-outdated": "if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else npm run compile-tests && rustup default 1.26.0 && node ./out/test/test/test_runner.js --dependencies=outdated; fi", + "test-dependencies-missing-basic": "if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else npm run compile-tests && move-cli $HOME/.cargo $HOME/.cargo.bak && node ./out/test/test/test_runner.js --dependencies=missing0; fi", + "test-dependencies-missing-extended": "if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else npm run compile-tests && move-cli $HOME/.cargo $HOME/.cargo.bak && node ./out/test/test/test_runner.js --dependencies=missing1; fi", "test-syntax": "npm run compile-tests && npx mocha out/test/test/check_highlighting.test.js --ui tdd --reporter-option maxDiffSize=0", "update-known-good": "rm -rf test/known-good && npm run compile-tests && npx mocha out/test/test/check_highlighting.test.js --ui tdd", "amend-jar": "./uf.py" From 7cea0d243b85fdc1362e3abee444deb1a213ec9d Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 18:00:38 -0700 Subject: [PATCH 33/45] Cross-platform export --- .github/workflows/dependency-tests.yml | 4 ++-- src/extension_version.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dependency-tests.yml b/.github/workflows/dependency-tests.yml index d93e651cb..bd9a9abec 100644 --- a/.github/workflows/dependency-tests.yml +++ b/.github/workflows/dependency-tests.yml @@ -67,7 +67,7 @@ jobs: run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test-dependencies-missing-extended if: ${{ runner.os == 'Linux' }} - name: Run tests (non-Linux) - run: export LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS=OK && npm run test-dependencies-missing-extended + run: npx --yes cross-env LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS=OK npm run test-dependencies-missing-extended if: ${{ runner.os != 'Linux' }} test-dependencies-missing-basic: strategy: @@ -88,5 +88,5 @@ jobs: run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test-dependencies-missing-basic if: ${{ runner.os == 'Linux' }} - name: Run tests (non-Linux) - run: export LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS=OK && npm run test-dependencies-missing-basic + run: npx --yes cross-env LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS=OK npm run test-dependencies-missing-basic if: ${{ runner.os != 'Linux' }} diff --git a/src/extension_version.ts b/src/extension_version.ts index 75c2dd357..24cf01610 100644 --- a/src/extension_version.ts +++ b/src/extension_version.ts @@ -1,3 +1,3 @@ 'use strict'; // This is a generated file. Do not edit. -export const version = "6560e1f527c3f82f6febfc5e0df074111cf61cd1"; +export const version = "426949a7925883823923c4547899eb749391ed8f"; From b9a0d1e7a87046a5799322fa26f06c4b1ea7a975 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 18:38:09 -0700 Subject: [PATCH 34/45] More bash hackery --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 5b93e3a1f..32fbce92c 100644 --- a/package.json +++ b/package.json @@ -199,9 +199,9 @@ "deploy": "echo \"Y\r\n\" | code --install-extension vscode-lingua-franca-*.vsix --force", "install": "npm run clean && npm run build && npm run package && npm run deploy", "test": "npm run compile-tests && node ./out/test/test/test_runner.js --dependencies=present", - "test-dependencies-outdated": "if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else npm run compile-tests && rustup default 1.26.0 && node ./out/test/test/test_runner.js --dependencies=outdated; fi", - "test-dependencies-missing-basic": "if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else npm run compile-tests && move-cli $HOME/.cargo $HOME/.cargo.bak && node ./out/test/test/test_runner.js --dependencies=missing0; fi", - "test-dependencies-missing-extended": "if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else npm run compile-tests && move-cli $HOME/.cargo $HOME/.cargo.bak && node ./out/test/test/test_runner.js --dependencies=missing1; fi", + "test-dependencies-outdated": "bash -c \"if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else false; fi\" || npm run compile-tests && rustup default 1.26.0 && node ./out/test/test/test_runner.js --dependencies=outdated;", + "test-dependencies-missing-basic": "bash -c \"if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else false; fi\" npm run compile-tests && move-cli $HOME/.cargo $HOME/.cargo.bak && node ./out/test/test/test_runner.js --dependencies=missing0", + "test-dependencies-missing-extended": "bash -c \"if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else false; fi\" npm run compile-tests && move-cli $HOME/.cargo $HOME/.cargo.bak && node ./out/test/test/test_runner.js --dependencies=missing1", "test-syntax": "npm run compile-tests && npx mocha out/test/test/check_highlighting.test.js --ui tdd --reporter-option maxDiffSize=0", "update-known-good": "rm -rf test/known-good && npm run compile-tests && npx mocha out/test/test/check_highlighting.test.js --ui tdd", "amend-jar": "./uf.py" From 1201c7ef3ad6386584a8150683ebbad8b72918e7 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 18:42:20 -0700 Subject: [PATCH 35/45] Add missing environment variable --- .github/workflows/dependency-tests.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dependency-tests.yml b/.github/workflows/dependency-tests.yml index bd9a9abec..08d086ca3 100644 --- a/.github/workflows/dependency-tests.yml +++ b/.github/workflows/dependency-tests.yml @@ -40,7 +40,7 @@ jobs: run: | pip install -I pylint==2.10.0 - name: Run tests (Linux) - run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test-dependencies-outdated + run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npx --yes cross-env LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS=OK npm run test-dependencies-outdated if: ${{ runner.os == 'Linux' }} - name: Run tests (non-Linux) run: npm run test-dependencies-outdated @@ -67,7 +67,7 @@ jobs: run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test-dependencies-missing-extended if: ${{ runner.os == 'Linux' }} - name: Run tests (non-Linux) - run: npx --yes cross-env LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS=OK npm run test-dependencies-missing-extended + run: npx --yes cross-env LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS=OK npx --yes cross-env LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS=OK npm run test-dependencies-missing-extended if: ${{ runner.os != 'Linux' }} test-dependencies-missing-basic: strategy: @@ -85,7 +85,7 @@ jobs: with: partial: true - name: Run tests (Linux) - run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test-dependencies-missing-basic + run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npx --yes cross-env LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS=OK npm run test-dependencies-missing-basic if: ${{ runner.os == 'Linux' }} - name: Run tests (non-Linux) run: npx --yes cross-env LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS=OK npm run test-dependencies-missing-basic From 125443f9b0cab57010d7f7e212ed259569f2c72f Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 18:49:24 -0700 Subject: [PATCH 36/45] Fix typo --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 32fbce92c..0cfc1a5f6 100644 --- a/package.json +++ b/package.json @@ -200,8 +200,8 @@ "install": "npm run clean && npm run build && npm run package && npm run deploy", "test": "npm run compile-tests && node ./out/test/test/test_runner.js --dependencies=present", "test-dependencies-outdated": "bash -c \"if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else false; fi\" || npm run compile-tests && rustup default 1.26.0 && node ./out/test/test/test_runner.js --dependencies=outdated;", - "test-dependencies-missing-basic": "bash -c \"if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else false; fi\" npm run compile-tests && move-cli $HOME/.cargo $HOME/.cargo.bak && node ./out/test/test/test_runner.js --dependencies=missing0", - "test-dependencies-missing-extended": "bash -c \"if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else false; fi\" npm run compile-tests && move-cli $HOME/.cargo $HOME/.cargo.bak && node ./out/test/test/test_runner.js --dependencies=missing1", + "test-dependencies-missing-basic": "bash -c \"if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else false; fi\" || npm run compile-tests && move-cli $HOME/.cargo $HOME/.cargo.bak && node ./out/test/test/test_runner.js --dependencies=missing0", + "test-dependencies-missing-extended": "bash -c \"if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else false; fi\" || npm run compile-tests && move-cli $HOME/.cargo $HOME/.cargo.bak && node ./out/test/test/test_runner.js --dependencies=missing1", "test-syntax": "npm run compile-tests && npx mocha out/test/test/check_highlighting.test.js --ui tdd --reporter-option maxDiffSize=0", "update-known-good": "rm -rf test/known-good && npm run compile-tests && npx mocha out/test/test/check_highlighting.test.js --ui tdd", "amend-jar": "./uf.py" From 88fc404b037d47cfa817d4448e6d79978d0f6579 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 18:54:37 -0700 Subject: [PATCH 37/45] Add forgotten environment variable --- .github/workflows/dependency-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dependency-tests.yml b/.github/workflows/dependency-tests.yml index 08d086ca3..8f15f321f 100644 --- a/.github/workflows/dependency-tests.yml +++ b/.github/workflows/dependency-tests.yml @@ -64,7 +64,7 @@ jobs: run: | PIP_BREAK_SYSTEM_PACKAGES=1 python3 -m pip uninstall -y pylint - name: Run tests (Linux) - run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test-dependencies-missing-extended + run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npx --yes cross-env LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS=OK npm run test-dependencies-missing-extended if: ${{ runner.os == 'Linux' }} - name: Run tests (non-Linux) run: npx --yes cross-env LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS=OK npx --yes cross-env LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS=OK npm run test-dependencies-missing-extended From 2f2a0f347c43077ef90c8148c90f112aca115c7d Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 19:07:27 -0700 Subject: [PATCH 38/45] Try again to hide Rust binaries in a hacky way --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 0cfc1a5f6..b366209a9 100644 --- a/package.json +++ b/package.json @@ -200,8 +200,8 @@ "install": "npm run clean && npm run build && npm run package && npm run deploy", "test": "npm run compile-tests && node ./out/test/test/test_runner.js --dependencies=present", "test-dependencies-outdated": "bash -c \"if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else false; fi\" || npm run compile-tests && rustup default 1.26.0 && node ./out/test/test/test_runner.js --dependencies=outdated;", - "test-dependencies-missing-basic": "bash -c \"if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else false; fi\" || npm run compile-tests && move-cli $HOME/.cargo $HOME/.cargo.bak && node ./out/test/test/test_runner.js --dependencies=missing0", - "test-dependencies-missing-extended": "bash -c \"if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else false; fi\" || npm run compile-tests && move-cli $HOME/.cargo $HOME/.cargo.bak && node ./out/test/test/test_runner.js --dependencies=missing1", + "test-dependencies-missing-basic": "bash -c \"if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else false; fi\" || npm run compile-tests && move-cli $INIT_CWD/../../../.cargo $INIT_CWD/../../../.cargo.bak && node ./out/test/test/test_runner.js --dependencies=missing0", + "test-dependencies-missing-extended": "bash -c \"if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else false; fi\" || npm run compile-tests && move-cli $INIT_CWD/../../../.cargo $INIT_CWD/../../../.cargo.bak && node ./out/test/test/test_runner.js --dependencies=missing1", "test-syntax": "npm run compile-tests && npx mocha out/test/test/check_highlighting.test.js --ui tdd --reporter-option maxDiffSize=0", "update-known-good": "rm -rf test/known-good && npm run compile-tests && npx mocha out/test/test/check_highlighting.test.js --ui tdd", "amend-jar": "./uf.py" From 10e514028fcf23761110bdee8b7ac14214649b06 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 19:13:13 -0700 Subject: [PATCH 39/45] Another cross-platform export --- .github/workflows/dependency-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dependency-tests.yml b/.github/workflows/dependency-tests.yml index 8f15f321f..1328030e4 100644 --- a/.github/workflows/dependency-tests.yml +++ b/.github/workflows/dependency-tests.yml @@ -62,7 +62,7 @@ jobs: partial: true - name: Uninstall dependencies run: | - PIP_BREAK_SYSTEM_PACKAGES=1 python3 -m pip uninstall -y pylint + npx --yes cross-env PIP_BREAK_SYSTEM_PACKAGES=1 python3 -m pip uninstall -y pylint - name: Run tests (Linux) run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npx --yes cross-env LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS=OK npm run test-dependencies-missing-extended if: ${{ runner.os == 'Linux' }} From 7ca5e53782f2d68fcf9d13b5bb69661d324cd81f Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 19:29:32 -0700 Subject: [PATCH 40/45] Try to pass macOS dependency install test --- src/version_checker.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/version_checker.ts b/src/version_checker.ts index 3f1dce9b1..e99c2f93e 100644 --- a/src/version_checker.ts +++ b/src/version_checker.ts @@ -88,7 +88,7 @@ export const python3VersionChecker = theBetterOfEither( pythonAliasVersionChecker ); export const nodeVersionChecker = basicChecker(config.nodeVersion, 'node -v', false); -export const pylintVersionChecker = basicChecker(config.pylintVersion, 'pip3 show pylint', false); +export const pylintVersionChecker = basicChecker(config.pylintVersion, 'pylint --version', false); export const npmVersionChecker = basicChecker(config.npmVersion, 'npm --version', false); export const pnpmVersionChecker = basicChecker(config.pnpmVersion, 'pnpm --version', false); export const brewVersionChecker = basicChecker(new Version('0.0.0'), 'brew -v', false); From b77b4e02a725f9e2963f9604fd0be44e14af73a0 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 19:37:50 -0700 Subject: [PATCH 41/45] A brittle fix for Windows --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index b366209a9..fc27fbd74 100644 --- a/package.json +++ b/package.json @@ -200,8 +200,8 @@ "install": "npm run clean && npm run build && npm run package && npm run deploy", "test": "npm run compile-tests && node ./out/test/test/test_runner.js --dependencies=present", "test-dependencies-outdated": "bash -c \"if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else false; fi\" || npm run compile-tests && rustup default 1.26.0 && node ./out/test/test/test_runner.js --dependencies=outdated;", - "test-dependencies-missing-basic": "bash -c \"if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else false; fi\" || npm run compile-tests && move-cli $INIT_CWD/../../../.cargo $INIT_CWD/../../../.cargo.bak && node ./out/test/test/test_runner.js --dependencies=missing0", - "test-dependencies-missing-extended": "bash -c \"if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else false; fi\" || npm run compile-tests && move-cli $INIT_CWD/../../../.cargo $INIT_CWD/../../../.cargo.bak && node ./out/test/test/test_runner.js --dependencies=missing1", + "test-dependencies-missing-basic": "bash -c \"if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else false; fi\" || npm run compile-tests && (move-cli $INIT_CWD/../../../.cargo $INIT_CWD/../../../.cargo.bak || move-cli C:\\Users\\runneradmin\\.cargo C:\\Users\\runneradmin\\.cargo.bak) && node ./out/test/test/test_runner.js --dependencies=missing0", + "test-dependencies-missing-extended": "bash -c \"if [ -z ${LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS+x} ]; then echo 'If you are sure that you want to run a test which may uninstall binaries from your machine, set the environment variable LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS' ; else false; fi\" || npm run compile-tests && (move-cli $INIT_CWD/../../../.cargo $INIT_CWD/../../../.cargo.bak || move-cli C:\\Users\\runneradmin\\.cargo C:\\Users\\runneradmin\\.cargo.bak) && node ./out/test/test/test_runner.js --dependencies=missing1", "test-syntax": "npm run compile-tests && npx mocha out/test/test/check_highlighting.test.js --ui tdd --reporter-option maxDiffSize=0", "update-known-good": "rm -rf test/known-good && npm run compile-tests && npx mocha out/test/test/check_highlighting.test.js --ui tdd", "amend-jar": "./uf.py" From 9add193ea4fc92242de05c092edd50e39ef614a4 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 19:55:15 -0700 Subject: [PATCH 42/45] Try again to pass macOS dependency install test --- .github/workflows/dependency-tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dependency-tests.yml b/.github/workflows/dependency-tests.yml index 1328030e4..f1251664b 100644 --- a/.github/workflows/dependency-tests.yml +++ b/.github/workflows/dependency-tests.yml @@ -35,7 +35,7 @@ jobs: partial: true - name: Uninstall dependencies run: | - PIP_BREAK_SYSTEM_PACKAGES=1 python3 -m pip uninstall -y pylint + (brew uninstall pylint || echo 'pylint was not installed using brew') && python3 -m pip uninstall -y pylint - name: Downgrade dependencies run: | pip install -I pylint==2.10.0 @@ -62,7 +62,7 @@ jobs: partial: true - name: Uninstall dependencies run: | - npx --yes cross-env PIP_BREAK_SYSTEM_PACKAGES=1 python3 -m pip uninstall -y pylint + (brew uninstall pylint || echo 'pylint was not installed using brew') && python3 -m pip uninstall -y pylint - name: Run tests (Linux) run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npx --yes cross-env LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS=OK npm run test-dependencies-missing-extended if: ${{ runner.os == 'Linux' }} From a004449c6abb4e2b515608aa70071c2a7027a806 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 20:12:26 -0700 Subject: [PATCH 43/45] Remove unnecessary uninstall --- .github/workflows/dependency-tests.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/dependency-tests.yml b/.github/workflows/dependency-tests.yml index f1251664b..c5b7d5cf6 100644 --- a/.github/workflows/dependency-tests.yml +++ b/.github/workflows/dependency-tests.yml @@ -33,9 +33,6 @@ jobs: uses: ./.github/actions/build with: partial: true - - name: Uninstall dependencies - run: | - (brew uninstall pylint || echo 'pylint was not installed using brew') && python3 -m pip uninstall -y pylint - name: Downgrade dependencies run: | pip install -I pylint==2.10.0 @@ -60,9 +57,6 @@ jobs: uses: ./.github/actions/build with: partial: true - - name: Uninstall dependencies - run: | - (brew uninstall pylint || echo 'pylint was not installed using brew') && python3 -m pip uninstall -y pylint - name: Run tests (Linux) run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npx --yes cross-env LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS=OK npm run test-dependencies-missing-extended if: ${{ runner.os == 'Linux' }} From 9757e1698e1c12dba333cfcb3dcb32dcef711fb7 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 20:40:06 -0700 Subject: [PATCH 44/45] Try again to pass macOS dependency install test --- .github/workflows/dependency-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dependency-tests.yml b/.github/workflows/dependency-tests.yml index c5b7d5cf6..12680df1f 100644 --- a/.github/workflows/dependency-tests.yml +++ b/.github/workflows/dependency-tests.yml @@ -61,7 +61,7 @@ jobs: run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npx --yes cross-env LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS=OK npm run test-dependencies-missing-extended if: ${{ runner.os == 'Linux' }} - name: Run tests (non-Linux) - run: npx --yes cross-env LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS=OK npx --yes cross-env LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS=OK npm run test-dependencies-missing-extended + run: npx --yes cross-env LF_VS_CODE_ALLOW_GLOBAL_UNINSTALLS=OK npx --yes cross-env PIP_BREAK_SYSTEM_PACKAGES=1 npm run test-dependencies-missing-extended if: ${{ runner.os != 'Linux' }} test-dependencies-missing-basic: strategy: From c8b303e946611fd723c9149f632b362676116e65 Mon Sep 17 00:00:00 2001 From: Peter Donovan Date: Wed, 22 May 2024 21:19:58 -0700 Subject: [PATCH 45/45] Fix silly error from rebase --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fc27fbd74..7b75c9625 100644 --- a/package.json +++ b/package.json @@ -190,7 +190,7 @@ "clean": "rimraf out && rimraf lib && rimraf vscode-lingua-franca-*.vsix", "transpile": "webpack", "vscode:prepublish": "npm run transpile", - "compile": "cd ./editor-support/lfwasm && bash make && cd ../.. && rm -rf ./lfw-pkg && move-cli ./editor-support/lfwasm/pkg ./lfw-pkg && ./write-version-to-file.sh src/extension_version.ts && npm run transpile", + "compile": "cd ./editor-support/lfwasm && make && cd ../.. && rimraf ./lfw-pkg && move-cli ./editor-support/lfwasm/pkg ./lfw-pkg && bash ./write-version-to-file.sh src/extension_version.ts && npm run transpile", "watch": "npm run transpile --watch", "build": "npx ts-node src/build_lds.ts", "compile-tests": "npm run compile && npx tsc --lib \"dom\" --outDir out/test --inlineSourceMap",