diff --git a/.vscode/settings.json b/.vscode/settings.json index faa23854..26631c51 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,7 @@ { "files.exclude": { "**/.husky": true, - "**/.vscode": true, + ".vscode": true, "**/.yarn": true, "**/coverage": true, "**/dist": true, diff --git a/package.json b/package.json index 611f1b24..0689d0dc 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ }, "dependencies": { "@codecharacter-2022/client": "workspace:packages/client", + "@codecharacter-2022/extension": "workspace:packages/extension", "@codecharacter-2022/map-designer": "workspace:packages/map-designer", "@codecharacter-2022/renderer": "workspace:packages/renderer", "@fortawesome/fontawesome-svg-core": "^1.2.36", @@ -133,7 +134,8 @@ }, "jest": { "preset": "ts-jest", - "testEnvironment": "node" + "testEnvironment": "node", + "testRegex": "/__tests__/.*test.[jt]sx?$" }, "lint-staged": { "*.{ts,.tsx}": [ diff --git a/packages/extension/.eslintrc.json b/packages/extension/.eslintrc.json new file mode 100644 index 00000000..5dfecab7 --- /dev/null +++ b/packages/extension/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "root": true, + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 6, + "sourceType": "module" + }, + "plugins": ["@typescript-eslint"], + "rules": { + "@typescript-eslint/naming-convention": "warn", + "@typescript-eslint/semi": "warn", + "curly": "warn", + "eqeqeq": "warn", + "no-throw-literal": "warn", + "semi": "off" + }, + "ignorePatterns": ["out", "dist", "**/*.d.ts"] +} diff --git a/packages/extension/.gitignore b/packages/extension/.gitignore new file mode 100644 index 00000000..31030798 --- /dev/null +++ b/packages/extension/.gitignore @@ -0,0 +1,4 @@ +.vscode-test +dist +out +src/config/config.ts diff --git a/packages/extension/.vscode/extensions.json b/packages/extension/.vscode/extensions.json new file mode 100644 index 00000000..57dbdae4 --- /dev/null +++ b/packages/extension/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + // See http://go.microsoft.com/fwlink/?LinkId=827846 + // for the documentation about the extensions.json format + "recommendations": ["dbaeumer.vscode-eslint", "amodio.tsl-problem-matcher"] +} diff --git a/packages/extension/.vscode/launch.json b/packages/extension/.vscode/launch.json new file mode 100644 index 00000000..cd540529 --- /dev/null +++ b/packages/extension/.vscode/launch.json @@ -0,0 +1,31 @@ +// A launch configuration that compiles the extension and then opens it inside a new window +// Use IntelliSense to learn about possible attributes. +// Hover to view descriptions of existing attributes. +// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Run Extension", + "type": "extensionHost", + "request": "launch", + "args": ["--extensionDevelopmentPath=${workspaceFolder}"], + "outFiles": ["${workspaceFolder}/dist/**/*.js"], + "preLaunchTask": "${defaultBuildTask}" + }, + { + "name": "Extension Tests", + "type": "extensionHost", + "request": "launch", + "args": [ + "--extensionDevelopmentPath=${workspaceFolder}", + "--extensionTestsPath=${workspaceFolder}/out/test/suite/index" + ], + "outFiles": [ + "${workspaceFolder}/out/**/*.js", + "${workspaceFolder}/dist/**/*.js" + ], + "preLaunchTask": "tasks: watch-tests" + } + ] +} diff --git a/packages/extension/.vscode/settings.json b/packages/extension/.vscode/settings.json new file mode 100644 index 00000000..64ee9296 --- /dev/null +++ b/packages/extension/.vscode/settings.json @@ -0,0 +1,13 @@ +// Place your settings in this file to overwrite default and user settings. +{ + "files.exclude": { + "out": false, // set this to true to hide the "out" folder with the compiled JS files + "dist": false // set this to true to hide the "dist" folder with the compiled JS files + }, + "search.exclude": { + "out": true, // set this to false to include "out" folder in search results + "dist": true // set this to false to include "dist" folder in search results + }, + // Turn off tsc task auto detection since we have the necessary tasks as npm scripts + "typescript.tsc.autoDetect": "off" +} diff --git a/packages/extension/.vscode/tasks.json b/packages/extension/.vscode/tasks.json new file mode 100644 index 00000000..bb452adf --- /dev/null +++ b/packages/extension/.vscode/tasks.json @@ -0,0 +1,37 @@ +// See https://go.microsoft.com/fwlink/?LinkId=733558 +// for the documentation about the tasks.json format +{ + "version": "2.0.0", + "tasks": [ + { + "type": "npm", + "script": "watch", + "problemMatcher": ["$ts-webpack-watch", "$tslint-webpack-watch"], + "isBackground": true, + "presentation": { + "reveal": "never", + "group": "watchers" + }, + "group": { + "kind": "build", + "isDefault": true + } + }, + { + "type": "npm", + "script": "watch-tests", + "problemMatcher": "$tsc-watch", + "isBackground": true, + "presentation": { + "reveal": "never", + "group": "watchers" + }, + "group": "build" + }, + { + "label": "tasks: watch-tests", + "dependsOn": ["npm: watch", "npm: watch-tests"], + "problemMatcher": [] + } + ] +} diff --git a/packages/extension/.vscodeignore b/packages/extension/.vscodeignore new file mode 100644 index 00000000..c6136798 --- /dev/null +++ b/packages/extension/.vscodeignore @@ -0,0 +1,13 @@ +.vscode/** +.vscode-test/** +out/** +node_modules/** +src/** +.gitignore +.yarnrc +webpack.config.js +vsc-extension-quickstart.md +**/tsconfig.json +**/.eslintrc.json +**/*.map +**/*.ts diff --git a/packages/extension/.yarnrc b/packages/extension/.yarnrc new file mode 100644 index 00000000..f757a6ac --- /dev/null +++ b/packages/extension/.yarnrc @@ -0,0 +1 @@ +--ignore-engines true \ No newline at end of file diff --git a/packages/extension/README.md b/packages/extension/README.md new file mode 100644 index 00000000..1a5727fb --- /dev/null +++ b/packages/extension/README.md @@ -0,0 +1,16 @@ +# CodeCharacter 2022 VSCode Extension + +An extension for VSCode that allows players to play CodeCharacter from the comfort of their IDE. + +## Testing the extension locally + +1. Open just the `packages/extension` folder in VSCode. +2. Run `yarn install` +3. Open the run panel from the left sidebar or do Ctrl + Shift + D +4. Click the run button or press F5 to start the extension. (Wait for the webpack compilation to get over - might take a couple of minutes and refresh it) + +In the extension: + +1. The extension will be available in the last entry of the left sidebar. +2. Create and save some maps/source files. +3. Use files from [here](https://gist.github.com/CaptainIRS/9d8d162e2a7b7b62ae1ffa13b23a18fa) for testing renderer. diff --git a/packages/extension/assets b/packages/extension/assets new file mode 120000 index 00000000..1ea7d147 --- /dev/null +++ b/packages/extension/assets @@ -0,0 +1 @@ +../../public/assets/ \ No newline at end of file diff --git a/packages/extension/media/icon.svg b/packages/extension/media/icon.svg new file mode 100644 index 00000000..1d6873ea --- /dev/null +++ b/packages/extension/media/icon.svg @@ -0,0 +1,66 @@ + + + + + Rook + + Western white-side Rook + + + + + + + + + Rook + + + + diff --git a/packages/extension/package.json b/packages/extension/package.json new file mode 100644 index 00000000..ab019697 --- /dev/null +++ b/packages/extension/package.json @@ -0,0 +1,150 @@ +{ + "name": "@codecharacter-2022/extension", + "displayName": "CodeCharacter 2022", + "description": "An extension for simulating code for CodeCharacter 2022 locally", + "version": "2022.0.1", + "engines": { + "vscode": "^1.63.0" + }, + "categories": [ + "Other" + ], + "activationEvents": [ + "onView:codecharacter-2022-codes" + ], + "main": "./dist/extension.js", + "contributes": { + "commands": [ + { + "command": "codecharacter-2022.helloWorld", + "title": "Hello World" + }, + { + "command": "codecharacter-2022.addMapFile", + "title": "Add Map File", + "icon": "$(add)" + }, + { + "command": "codecharacter-2022.deleteMapFile", + "title": "Delete Map File", + "icon": "$(trash)" + }, + { + "command": "codecharacter-2022.runCode", + "title": "Run Code", + "icon": "media/icon.svg" + }, + { + "command": "codecharacter-2022.deleteCodeFile", + "title": "Delete Code", + "icon": "$(trash)" + }, + { + "command": "codecharacter-2022.addCodeFile", + "title": "Add Code", + "icon": "$(add)" + } + ], + "viewsContainers": { + "activitybar": [ + { + "id": "codecharacter-2022", + "title": "CodeCharacter 2022", + "icon": "media/icon.svg" + } + ] + }, + "menus": { + "editor/title": [ + { + "command": "codecharacter-2022.runCode", + "group": "navigation", + "when": "resourceFilename =~ /\\.(c|cpp|js|py|java)$/ && resourcePath =~ /codes/ && editorFocus" + } + ], + "view/title": [ + { + "command": "codecharacter-2022.addMapFile", + "when": "view == codecharacter-2022-maps", + "group": "navigation" + } + ], + "view/item/context": [ + { + "command": "codecharacter-2022.deleteCodeFile", + "when": "view == codecharacter-2022-codes && viewItem == sourceFile", + "group": "inline" + }, + { + "command": "codecharacter-2022.deleteMapFile", + "when": "view == codecharacter-2022-maps && viewItem == map", + "group": "inline" + }, + { + "command": "codecharacter-2022.addCodeFile", + "when": "view == codecharacter-2022-codes && viewItem == sourceFolder", + "group": "inline" + } + ] + }, + "views": { + "codecharacter-2022": [ + { + "id": "codecharacter-2022-codes", + "name": "Local Source Code Files", + "icon": "media/icons.svg", + "contextualTitle": "Source Code Files" + }, + { + "id": "codecharacter-2022-maps", + "name": "Local Maps", + "icon": "media/icons.svg", + "contextualTitle": "Map Files" + } + ] + }, + "viewsWelcome": [ + { + "view": "codecharacter-2022-codes", + "contents": "No local source file found.\n[Add Source File](command:codecharacter-2022.addSourceFile)" + }, + { + "view": "codecharacter-2022-maps", + "contents": "No local map found.\n[Add Map File](command:codecharacter-2022.addMapFile)" + } + ] + }, + "scripts": { + "vscode:prepublish": "yarn run package", + "compile": "webpack", + "watch": "webpack --watch", + "package": "webpack --mode production --devtool hidden-source-map", + "compile-tests": "tsc -p . --outDir out", + "watch-tests": "tsc -p . -w --outDir out", + "pretest": "yarn run compile-tests && yarn run compile && yarn run lint", + "lint": "eslint src --ext ts", + "test": "node ./out/test/runTest.js" + }, + "devDependencies": { + "@types/glob": "^7.2.0", + "@types/mocha": "^9.0.0", + "@types/node": "14.x", + "@types/rimraf": "^3.0.2", + "@types/vscode": "^1.63.0", + "@typescript-eslint/eslint-plugin": "^5.9.1", + "@typescript-eslint/parser": "^5.9.1", + "@vscode/test-electron": "^2.0.3", + "eslint": "^8.6.0", + "glob": "^7.2.0", + "mocha": "^9.1.3", + "ts-loader": "^9.2.6", + "typescript": "^4.5.4", + "webpack": "^5.66.0", + "webpack-cli": "^4.9.1" + }, + "dependencies": { + "@codecharacter-2022/map-designer": "workspace:^", + "@codecharacter-2022/renderer": "workspace:^", + "rimraf": "^3.0.2" + } +} diff --git a/packages/extension/src/executors/cExecutor.ts b/packages/extension/src/executors/cExecutor.ts new file mode 100644 index 00000000..cc906826 --- /dev/null +++ b/packages/extension/src/executors/cExecutor.ts @@ -0,0 +1,80 @@ +import * as vscode from 'vscode'; +import * as fs from 'fs'; +import * as path from 'path'; +import * as os from 'os'; +import { spawn, spawnSync } from 'child_process'; +import { + getLogFromSimulatorLog, + outputChannel, + provideInitialInput, +} from './executor'; + +export class CCodeExecutor { + async execute( + mapData: Array>, + uri: vscode.Uri, + context: vscode.ExtensionContext, + ): Promise { + const executablePath = this._compile(uri); + const userExecutable = spawn(executablePath); + const simulatorExecutable = spawn( + path.join(context.globalStorageUri.fsPath, 'simulator'), + ); + return new Promise((resolve, reject) => { + let simulatorLog = ''; + outputChannel?.show(); + userExecutable.stdout.on('data', data => { + simulatorExecutable.stdin.write(data); + outputChannel?.append(data.toString()); + }); + simulatorExecutable.stdout.on('data', data => { + userExecutable.stdin.write(data); + outputChannel?.append(data.toString()); + }); + + userExecutable.stderr.on('data', data => { + outputChannel?.append(`[E] ${data.toString()}`); + }); + simulatorExecutable.stderr.on('data', data => { + simulatorLog += data.toString(); + outputChannel?.append(`[E] ${data.toString()}`); + }); + + userExecutable.on('close', () => { + simulatorExecutable.kill(); + setTimeout(() => resolve(getLogFromSimulatorLog(simulatorLog)), 1000); + }); + simulatorExecutable.on('close', () => { + userExecutable.kill(); + setTimeout(() => resolve(getLogFromSimulatorLog(simulatorLog)), 1000); + }); + userExecutable.on('error', err => { + reject(err); + }); + simulatorExecutable.on('error', err => { + reject(err); + }); + + provideInitialInput( + mapData, + userExecutable.stdin, + simulatorExecutable.stdin, + ); + }); + } + + private _compile(uri: vscode.Uri): string { + const tmpdir = fs.mkdtempSync(path.join(os.tmpdir(), 'cc_')); + const executablePath = path.join(tmpdir, 'main'); + const child = spawnSync('gcc', ['-o', executablePath, uri.fsPath]); + outputChannel?.clear(); + outputChannel?.append(child.stdout.toString()); + outputChannel?.append(child.stderr.toString()); + if (child.status !== 0) { + throw new Error('Compilation failed'); + } else { + vscode.window.showInformationMessage('Compilation succeeded'); + return executablePath; + } + } +} diff --git a/packages/extension/src/executors/cppExecutor.ts b/packages/extension/src/executors/cppExecutor.ts new file mode 100644 index 00000000..c6878c63 --- /dev/null +++ b/packages/extension/src/executors/cppExecutor.ts @@ -0,0 +1,80 @@ +import * as vscode from 'vscode'; +import * as fs from 'fs'; +import * as path from 'path'; +import * as os from 'os'; +import { spawn, spawnSync } from 'child_process'; +import { + getLogFromSimulatorLog, + outputChannel, + provideInitialInput, +} from './executor'; + +export class CppCodeExecutor { + async execute( + mapData: Array>, + uri: vscode.Uri, + context: vscode.ExtensionContext, + ): Promise { + const executablePath = this._compile(uri); + const userExecutable = spawn(executablePath); + const simulatorExecutable = spawn( + path.join(context.globalStorageUri.fsPath, 'simulator'), + ); + return new Promise((resolve, reject) => { + let simulatorLog = ''; + outputChannel?.show(); + userExecutable.stdout.on('data', data => { + simulatorExecutable.stdin.write(data); + outputChannel?.append(`>>> ${data.toString()}`); + }); + simulatorExecutable.stdout.on('data', data => { + userExecutable.stdin.write(data); + outputChannel?.append(`<<< ${data.toString()}`); + }); + + userExecutable.stderr.on('data', data => { + outputChannel?.append(`[E] ${data.toString()}`); + }); + simulatorExecutable.stderr.on('data', data => { + simulatorLog += data.toString(); + outputChannel?.append(`[E] ${data.toString()}`); + }); + + userExecutable.on('close', () => { + simulatorExecutable.kill(); + setTimeout(() => resolve(getLogFromSimulatorLog(simulatorLog)), 1000); + }); + simulatorExecutable.on('close', () => { + userExecutable.kill(); + setTimeout(() => resolve(getLogFromSimulatorLog(simulatorLog)), 1000); + }); + userExecutable.on('error', err => { + reject(err); + }); + simulatorExecutable.on('error', err => { + reject(err); + }); + + provideInitialInput( + mapData, + userExecutable.stdin, + simulatorExecutable.stdin, + ); + }); + } + + private _compile(uri: vscode.Uri): string { + const tmpdir = fs.mkdtempSync(path.join(os.tmpdir(), 'cc_')); + const executablePath = path.join(tmpdir, 'main'); + const child = spawnSync('g++', ['-o', executablePath, uri.fsPath]); + outputChannel?.clear(); + outputChannel?.append(child.stdout.toString()); + outputChannel?.append(child.stderr.toString()); + if (child.status !== 0) { + throw new Error('Compilation failed'); + } else { + vscode.window.showInformationMessage('Compilation succeeded'); + return executablePath; + } + } +} diff --git a/packages/extension/src/executors/executor.ts b/packages/extension/src/executors/executor.ts new file mode 100644 index 00000000..efa5e417 --- /dev/null +++ b/packages/extension/src/executors/executor.ts @@ -0,0 +1,119 @@ +import * as vscode from 'vscode'; +import { Writable } from 'stream'; +import { rendererPanel } from '../panels/rendererPanel'; +import { CCodeExecutor } from './cExecutor'; +import { CppCodeExecutor } from './cppExecutor'; +import { PythonCodeExecutor } from './pythonExecutor'; +import { JavaCodeExecutor } from './javaExecutor'; + +export const outputChannel = vscode.window.createOutputChannel( + 'Code Character Executor', +); + +export const provideInitialInput = ( + mapData: Array>, + userStdin: Writable, + simulatorStdin: Writable, +) => { + for (let writeable of [userStdin, simulatorStdin]) { + writeable.write('100 1000\n'); + writeable.write('2\n'); + writeable.write('10 3 3 3 1\n'); + writeable.write('10 3 3 3 1\n'); + writeable.write('2\n'); + writeable.write('10 4 5 1 1\n'); + writeable.write('10 6 5 1 1\n'); + writeable.write('64 64 '); + for (let y = 0; y < mapData.length; y++) { + for (let x = 0; x < mapData[y].length; x++) { + writeable.write(`${mapData[y][x]} `); + } + } + writeable.write('\n'); + } +}; + +export const getLogFromSimulatorLog = (log: string): string => { + const indexOfInit = log.indexOf('INIT'); + const indexOfEnd = log.indexOf('END'); + return log.substring(indexOfInit, indexOfEnd + 3); +}; + +class Executor { + cExecutor: CCodeExecutor; + cppExecutor: CppCodeExecutor; + javaExecutor: JavaCodeExecutor; + pythonExecutor: PythonCodeExecutor; + + constructor() { + this.cExecutor = new CCodeExecutor(); + this.cppExecutor = new CppCodeExecutor(); + this.javaExecutor = new JavaCodeExecutor(); + this.pythonExecutor = new PythonCodeExecutor(); + } + + async execute( + context: vscode.ExtensionContext, + mapData: Array>, + uri: vscode.Uri, + languageId: string, + ): Promise { + return new Promise((resolve, reject) => { + switch (languageId) { + case 'c': + this.cExecutor + .execute(mapData, uri, context) + .then(log => { + rendererPanel.renderLog(log, context); + vscode.window.showInformationMessage('Execution succeeded'); + resolve(); + }) + .catch(err => { + reject(err); + vscode.window.showErrorMessage(`Execution failed: ${err}`); + }); + break; + case 'cpp': + this.cppExecutor + .execute(mapData, uri, context) + .then(log => { + rendererPanel.renderLog(log, context); + vscode.window.showInformationMessage('Execution succeeded'); + resolve(); + }) + .catch(err => { + reject(err); + }); + break; + case 'java': + this.javaExecutor + .execute(mapData, uri, context) + .then(log => { + rendererPanel.renderLog(log, context); + vscode.window.showInformationMessage('Execution succeeded'); + resolve(); + }) + .catch(err => { + reject(err); + }); + break; + case 'python': + this.pythonExecutor + .execute(mapData, uri, context) + .then(log => { + rendererPanel.renderLog(log, context); + vscode.window.showInformationMessage('Execution succeeded'); + resolve(); + }) + .catch(err => { + reject(err); + }); + break; + default: + reject('Unsupported language'); + } + }); + } +} + +export const executor = new Executor(); diff --git a/packages/extension/src/executors/javaExecutor.ts b/packages/extension/src/executors/javaExecutor.ts new file mode 100644 index 00000000..074e02a9 --- /dev/null +++ b/packages/extension/src/executors/javaExecutor.ts @@ -0,0 +1,62 @@ +import * as vscode from 'vscode'; +import * as path from 'path'; +import { spawn } from 'child_process'; +import { + getLogFromSimulatorLog, + outputChannel, + provideInitialInput, +} from './executor'; + +export class JavaCodeExecutor { + async execute( + mapData: Array>, + uri: vscode.Uri, + context: vscode.ExtensionContext, + ): Promise { + const userExecutable = spawn('java', [uri.fsPath]); + const simulatorExecutable = spawn( + path.join(context.globalStorageUri.fsPath, 'simulator'), + ); + return new Promise((resolve, reject) => { + let simulatorLog = ''; + outputChannel?.show(); + userExecutable.stdout.on('data', data => { + simulatorExecutable.stdin.write(data); + outputChannel?.append(`>>> ${data.toString()}`); + }); + simulatorExecutable.stdout.on('data', data => { + userExecutable.stdin.write(data); + outputChannel?.append(`<<< ${data.toString()}`); + }); + + userExecutable.stderr.on('data', data => { + outputChannel?.append(`[E] ${data.toString()}`); + }); + simulatorExecutable.stderr.on('data', data => { + simulatorLog += data.toString(); + outputChannel?.append(`[E] ${data.toString()}`); + }); + + userExecutable.on('close', () => { + simulatorExecutable.kill(); + setTimeout(() => resolve(getLogFromSimulatorLog(simulatorLog)), 1000); + }); + simulatorExecutable.on('close', () => { + userExecutable.kill(); + setTimeout(() => resolve(getLogFromSimulatorLog(simulatorLog)), 1000); + }); + userExecutable.on('error', err => { + reject(err); + }); + simulatorExecutable.on('error', err => { + reject(err); + }); + + provideInitialInput( + mapData, + userExecutable.stdin, + simulatorExecutable.stdin, + ); + }); + } +} diff --git a/packages/extension/src/executors/pythonExecutor.ts b/packages/extension/src/executors/pythonExecutor.ts new file mode 100644 index 00000000..3d433637 --- /dev/null +++ b/packages/extension/src/executors/pythonExecutor.ts @@ -0,0 +1,62 @@ +import * as vscode from 'vscode'; +import * as path from 'path'; +import { spawn } from 'child_process'; +import { + getLogFromSimulatorLog, + outputChannel, + provideInitialInput, +} from './executor'; + +export class PythonCodeExecutor { + async execute( + mapData: Array>, + uri: vscode.Uri, + context: vscode.ExtensionContext, + ): Promise { + const userExecutable = spawn('python3', ['-u', uri.fsPath]); + const simulatorExecutable = spawn( + path.join(context.globalStorageUri.fsPath, 'simulator'), + ); + return new Promise((resolve, reject) => { + let simulatorLog = ''; + outputChannel?.show(); + userExecutable.stdout.on('data', data => { + simulatorExecutable.stdin.write(data); + outputChannel?.append(`>>> ${data.toString()}`); + }); + simulatorExecutable.stdout.on('data', data => { + userExecutable.stdin.write(data); + outputChannel?.append(`<<< ${data.toString()}`); + }); + + userExecutable.stderr.on('data', data => { + outputChannel?.append(`[E] ${data.toString()}`); + }); + simulatorExecutable.stderr.on('data', data => { + simulatorLog += data.toString(); + outputChannel?.append(`[E] ${data.toString()}`); + }); + + userExecutable.on('close', () => { + simulatorExecutable.kill(); + setTimeout(() => resolve(getLogFromSimulatorLog(simulatorLog)), 1000); + }); + simulatorExecutable.on('close', () => { + userExecutable.kill(); + setTimeout(() => resolve(getLogFromSimulatorLog(simulatorLog)), 1000); + }); + userExecutable.on('error', err => { + reject(err); + }); + simulatorExecutable.on('error', err => { + reject(err); + }); + + provideInitialInput( + mapData, + userExecutable.stdin, + simulatorExecutable.stdin, + ); + }); + } +} diff --git a/packages/extension/src/extension.ts b/packages/extension/src/extension.ts new file mode 100644 index 00000000..b0898728 --- /dev/null +++ b/packages/extension/src/extension.ts @@ -0,0 +1,64 @@ +import { MapProvider } from './providers/tree-data/mapProvider'; +import { SourceCodeProvider } from './providers/tree-data/sourceCodeProvider'; +import * as path from 'path'; +import * as fs from 'fs'; +import * as vscode from 'vscode'; +import fetch from 'node-fetch'; + +export function activate(context: vscode.ExtensionContext) { + console.log('CodeCharacter 2022 extension is now active'); + + fetch( + 'https://api.github.com/repos/delta/codecharacter-simulator-2022/releases/latest', + ) + .then(res => res.json()) + .then(async res => { + const createdAt = new Date(res.created_at); + const existingSimulatorReleaseTimestamp = context.globalState.get( + 'simulatorReleaseTimestamp', + ); + if ( + existingSimulatorReleaseTimestamp === undefined || + existingSimulatorReleaseTimestamp < createdAt || + fs.existsSync( + path.join(context.globalStorageUri.fsPath, 'simulator'), + ) === false + ) { + vscode.window.showInformationMessage( + `CodeCharacter 2022 simulator is out of date. Updating to version ${res.tag_name}...`, + ); + const simulatorBinary = await fetch(res.assets[0].browser_download_url); + const fileStream = fs.createWriteStream( + path.join(context.globalStorageUri.fsPath, 'simulator'), + ); + await new Promise((resolve, reject) => { + simulatorBinary?.body?.pipe(fileStream); + simulatorBinary?.body?.on('error', reject); + fileStream.on('finish', resolve); + }); + fs.chmodSync( + path.join(context.globalStorageUri.fsPath, 'simulator'), + '755', + ); + context.globalState.update('simulatorReleaseTimestamp', createdAt); + vscode.window.showInformationMessage( + `Simulator updated to version ${res.tag_name}`, + ); + } else { + vscode.window.showInformationMessage('Simulator binary is up to date'); + } + }); + vscode.commands.executeCommand('codecharacter-2022-codes.focus'); + + const mapProvider = new MapProvider(context); + vscode.window.createTreeView('codecharacter-2022-maps', { + treeDataProvider: mapProvider, + }); + + const sourceCodeProvider = new SourceCodeProvider(context); + vscode.window.createTreeView('codecharacter-2022-codes', { + treeDataProvider: sourceCodeProvider, + }); +} + +export function deactivate() {} diff --git a/packages/extension/src/pages/mapDesignerStatic.ts b/packages/extension/src/pages/mapDesignerStatic.ts new file mode 100644 index 00000000..e8a0b6d8 --- /dev/null +++ b/packages/extension/src/pages/mapDesignerStatic.ts @@ -0,0 +1,43 @@ +import * as ReactDOM from 'react-dom'; +import * as React from 'react'; +import { + MapDesignerComponent, + MapDesignerUtils, +} from '@codecharacter-2022/map-designer'; + +type VSCode = { + postMessage(message: any): void; + getState(): any; + setState(state: any): void; +}; + +declare var vscode: VSCode; + +const saveMapCallback = (mapData: Array>) => { + vscode.postMessage({ + command: 'saveMap', + mapData: mapData, + }); +}; + +window.addEventListener('message', event => { + const message = event.data; + switch (message.command) { + case 'loadMap': + const mapData = message.mapData; + MapDesignerUtils.preloadMap(mapData); + MapDesignerUtils.loadMap(mapData); + break; + default: + break; + } +}); + +ReactDOM.render( + React.createElement(MapDesignerComponent, { saveMapCallback }), + document.getElementById('root'), +); + +vscode.postMessage({ + command: 'ready', +}); diff --git a/packages/extension/src/pages/rendererStatic.ts b/packages/extension/src/pages/rendererStatic.ts new file mode 100644 index 00000000..cde1ee37 --- /dev/null +++ b/packages/extension/src/pages/rendererStatic.ts @@ -0,0 +1,32 @@ +import * as ReactDOM from 'react-dom'; +import * as React from 'react'; +import { RendererComponent, RendererUtils } from '@codecharacter-2022/renderer'; + +type VSCode = { + postMessage(message: any): void; + getState(): any; + setState(state: any): void; +}; + +declare var vscode: VSCode; + +window.addEventListener('message', event => { + const message = event.data; + switch (message.command) { + case 'loadLog': + const log = message.log; + RendererUtils.loadLog(log); + break; + default: + break; + } +}); + +ReactDOM.render( + React.createElement(RendererComponent), + document.getElementById('root'), +); + +vscode.postMessage({ + command: 'ready', +}); diff --git a/packages/extension/src/panels/mapDesignerPanel.ts b/packages/extension/src/panels/mapDesignerPanel.ts new file mode 100644 index 00000000..9b8a6eb6 --- /dev/null +++ b/packages/extension/src/panels/mapDesignerPanel.ts @@ -0,0 +1,181 @@ +import * as vscode from 'vscode'; +import * as path from 'path'; +import * as fs from 'fs'; + +export class MapDesignerPanel { + panel: vscode.WebviewPanel | undefined; + + currentMapFilePath!: string; + + latestMapData!: Array>; + + context!: vscode.ExtensionContext; + + loadMap(mapFile: string, context: vscode.ExtensionContext) { + this.context = context; + this.currentMapFilePath = path.join( + context.globalStorageUri.fsPath, + 'data', + 'maps', + mapFile, + ); + + if (!this.panel) { + this.panel = vscode.window.createWebviewPanel( + 'mapDesignerPanel', + 'Map Designer', + vscode.ViewColumn.One, + { + enableScripts: true, + retainContextWhenHidden: true, + }, + ); + + const staticScriptPath = vscode.Uri.file( + path.join(context.extensionPath, 'dist', 'map-designer-static.js'), + ); + + const assetsPath = vscode.Uri.file( + path.join(context.extensionPath, 'assets'), + ); + + const staticScriptSrc = this.panel.webview.asWebviewUri(staticScriptPath); + const assetsSrc = this.panel.webview.asWebviewUri(assetsPath); + + this.panel.webview.html = this._getMapDesignerWebView( + staticScriptSrc, + assetsSrc, + ); + + this.panel.onDidDispose(() => { + this.panel = undefined; + }); + + this.panel.webview.onDidReceiveMessage(message => { + switch (message.command) { + case 'saveMap': + fs.writeFile( + this.currentMapFilePath, + JSON.stringify(message.mapData), + err => { + if (err) { + vscode.window.showErrorMessage(err.message); + } else { + vscode.commands.executeCommand( + 'codecharacter-2022.refreshMaps', + ); + vscode.window.showInformationMessage( + 'Map saved successfully', + ); + } + }, + ); + break; + case 'ready': + this.panel?.webview.postMessage({ + command: 'loadMap', + mapData: this.latestMapData, + }); + break; + default: + vscode.window.showInformationMessage('Message not recognized'); + break; + } + }); + } else { + this.panel.reveal(); + } + + fs.readFile(this.currentMapFilePath, (err, data) => { + if (err) { + vscode.window.showErrorMessage(err.message); + } + if (data && this.panel) { + try { + this.latestMapData = JSON.parse(data.toString()); + } catch (e) { + vscode.window.showErrorMessage('Map file is not valid JSON'); + return; + } + this.panel.title = `${mapFile} (Map)`; + this.panel.iconPath = vscode.Uri.file( + path.join(context.extensionPath, 'media', 'icon.svg'), + ); + this.panel.webview.postMessage({ + command: 'loadMap', + mapData: this.latestMapData, + }); + } + }); + } + + closePanelOnDelete(fileName: string) { + if (this.panel) { + if ( + this.currentMapFilePath === + path.join( + this.context.globalStorageUri.fsPath, + 'data', + 'maps', + fileName, + ) + ) { + this.panel.dispose(); + } + } + } + + _getMapDesignerWebView(staticScriptSrc: vscode.Uri, assetsSrc: vscode.Uri) { + return ` + + + + + Map Designer + + + + + + + +
+ + + + `; + } +} + +export const mapDesignerPanel = new MapDesignerPanel(); diff --git a/packages/extension/src/panels/rendererPanel.ts b/packages/extension/src/panels/rendererPanel.ts new file mode 100644 index 00000000..c1c7ea35 --- /dev/null +++ b/packages/extension/src/panels/rendererPanel.ts @@ -0,0 +1,124 @@ +import * as vscode from 'vscode'; +import * as path from 'path'; + +class RendererPanel { + panel: vscode.WebviewPanel | undefined; + + renderLog(log: string, context: vscode.ExtensionContext) { + let logLocal: string = log; + if (!this.panel) { + this.panel = vscode.window.createWebviewPanel( + 'rendererPanel', + 'Renderer', + vscode.ViewColumn.Beside, + { + enableScripts: true, + retainContextWhenHidden: true, + }, + ); + + const staticScriptPath = vscode.Uri.file( + path.join(context.extensionPath, 'dist', 'renderer-static.js'), + ); + + const assetsPath = vscode.Uri.file( + path.join(context.extensionPath, 'assets'), + ); + + const staticScriptSrc = this.panel.webview.asWebviewUri(staticScriptPath); + const assetsSrc = this.panel.webview.asWebviewUri(assetsPath); + + this.panel.webview.html = this._getRendererWebView( + staticScriptSrc, + assetsSrc, + ); + + this.panel.iconPath = vscode.Uri.file( + path.join(context.extensionPath, 'media', 'icon.svg'), + ); + + this.panel.onDidDispose(() => { + this.panel = undefined; + }); + } else { + this.panel.reveal(vscode.ViewColumn.Beside); + } + + this.panel?.webview.postMessage({ + command: 'loadLog', + log: logLocal, + }); + this.panel.webview.onDidReceiveMessage(message => { + switch (message.command) { + case 'ready': + setTimeout(() => { + this.panel?.webview.postMessage({ + command: 'loadLog', + log: logLocal, + }); + logLocal = ''; + }, 3000); + break; + default: + break; + } + }); + } + + private _getRendererWebView( + staticScriptSrc: vscode.Uri, + assetsSrc: vscode.Uri, + ) { + return ` + + + + + Renderer + + + + + + + +
+ + + + `; + } +} + +export const rendererPanel = new RendererPanel(); diff --git a/packages/extension/src/providers/tree-data/mapProvider.ts b/packages/extension/src/providers/tree-data/mapProvider.ts new file mode 100644 index 00000000..945cbdc6 --- /dev/null +++ b/packages/extension/src/providers/tree-data/mapProvider.ts @@ -0,0 +1,149 @@ +import * as fs from 'fs'; +import * as path from 'path'; +import * as vscode from 'vscode'; +import { mapDesignerPanel } from '../../panels/mapDesignerPanel'; + +export class CodeCharacterMap extends vscode.TreeItem { + constructor(public readonly fileName: string) { + super(fileName.split('.json')[0], vscode.TreeItemCollapsibleState.None); + this.fileName = fileName; + } + + iconPath = new vscode.ThemeIcon('globe'); + + command = { + command: 'codecharacter-2022.openMapFile', + title: 'Open Map File', + arguments: [this.fileName], + }; + + contextValue = 'map'; +} + +export class MapProvider implements vscode.TreeDataProvider { + panel: vscode.WebviewPanel | undefined; + + latestMapData: Array> | undefined; + + constructor(private readonly context: vscode.ExtensionContext) { + context.subscriptions.push( + vscode.commands.registerCommand('codecharacter-2022.refreshMaps', () => + this.refresh(), + ), + ); + context.subscriptions.push( + vscode.commands.registerCommand( + 'codecharacter-2022.openMapFile', + (mapFile: string) => { + mapDesignerPanel.loadMap(mapFile, context); + }, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + 'codecharacter-2022.deleteMapFile', + (map: CodeCharacterMap) => { + const mapPath = path.join( + context.globalStorageUri.fsPath, + 'data', + 'maps', + map.fileName, + ); + fs.unlink(mapPath, err => { + if (err) { + vscode.window.showErrorMessage(err.message); + } else { + vscode.commands.executeCommand('codecharacter-2022.refreshMaps'); + mapDesignerPanel.closePanelOnDelete(map.fileName); + vscode.window.showInformationMessage( + `Map file ${map.fileName} deleted successfully`, + ); + } + }); + }, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand('codecharacter-2022.addMapFile', () => { + vscode.window + .showInputBox({ + prompt: 'Enter the name of the file', + placeHolder: `map`, + }) + .then((fileName?: string) => { + if (!fileName || !/^[A-Za-z0-9_-]+$/.test(fileName)) { + throw new Error('Invalid file name'); + } + const mapFilePath = path.join( + context.globalStorageUri.fsPath, + 'data', + 'maps', + `${fileName}.json`, + ); + let defaultMapData = []; + for (let i = 0; i < 64; i++) { + let row = []; + for (let j = 0; j < 64; j++) { + row.push(0); + } + defaultMapData.push(row); + } + fs.writeFile(mapFilePath, JSON.stringify(defaultMapData), err => { + if (err) { + vscode.window.showErrorMessage(err.message); + } else { + vscode.commands.executeCommand( + 'codecharacter-2022.refreshMaps', + ); + vscode.commands.executeCommand( + 'codecharacter-2022.openMapFile', + `${fileName}.json`, + ); + vscode.window.showInformationMessage( + 'Map file created successfully', + ); + } + }); + }); + }), + ); + } + + private _onDidChangeTreeData: vscode.EventEmitter< + CodeCharacterMap | undefined + > = new vscode.EventEmitter(); + + readonly onDidChangeTreeData: vscode.Event = + this._onDidChangeTreeData.event; + + refresh(): void { + this._onDidChangeTreeData.fire(undefined); + } + + getTreeItem(element: CodeCharacterMap): vscode.TreeItem { + return element; + } + + getChildren(element?: CodeCharacterMap): Thenable { + const mapsFolderPath = path.join( + this.context.globalStorageUri.fsPath, + 'data', + 'maps', + ); + if (!fs.existsSync(mapsFolderPath)) { + fs.mkdirSync(mapsFolderPath, { recursive: true }); + } + return new Promise((resolve, reject) => { + fs.readdir(mapsFolderPath, (err, files) => { + if (err) { + reject(err); + } else { + const mapFiles = files.filter(file => file.endsWith('.json')); + resolve(mapFiles.map(file => new CodeCharacterMap(file))); + } + }); + }); + } +} diff --git a/packages/extension/src/providers/tree-data/sourceCodeProvider.ts b/packages/extension/src/providers/tree-data/sourceCodeProvider.ts new file mode 100644 index 00000000..48a8e6fa --- /dev/null +++ b/packages/extension/src/providers/tree-data/sourceCodeProvider.ts @@ -0,0 +1,260 @@ +import * as vscode from 'vscode'; +import * as fs from 'fs'; +import path = require('path'); +import { executor } from '../../executors/executor'; +import rimraf = require('rimraf'); + +enum TreeItemType { + file, + folder, +} + +export class SourceTreeItem extends vscode.TreeItem { + children: SourceTreeItem[] = []; + + constructor( + readonly itemType: TreeItemType, + readonly itemPath: string, + readonly language: string, + readonly name?: string, + ) { + super( + name + ? vscode.Uri.file(path.join(itemPath, `${name}.${language}`)) + : vscode.Uri.file(itemPath), + vscode.TreeItemCollapsibleState.None, + ); + if (this.itemType === TreeItemType.folder) { + this.collapsibleState = vscode.TreeItemCollapsibleState.Collapsed; + this.iconPath = vscode.ThemeIcon.Folder; + this.contextValue = 'sourceFolder'; + + fs.readdir(this.itemPath, (err, files) => { + if (err) { + vscode.window.showErrorMessage( + `Error reading directory ${this.itemPath}`, + ); + return; + } else { + files = files.filter(file => + fs.statSync(path.join(this.itemPath, file)).isDirectory(), + ); + this.children = files.map(file => { + const filePath = path.join(this.itemPath, file); + return new SourceTreeItem( + TreeItemType.file, + filePath, + this.language, + file, + ); + }); + } + }); + } else { + this.collapsibleState = vscode.TreeItemCollapsibleState.None; + this.iconPath = new vscode.ThemeIcon('file'); + this.contextValue = 'sourceFile'; + this.command = { + command: 'codecharacter-2022.openCodeFile', + title: 'Open Code', + arguments: [this.name, this.language], + }; + } + } +} + +export class SourceCodeProvider + implements vscode.TreeDataProvider +{ + panel: vscode.WebviewPanel | undefined; + children: SourceTreeItem[] = []; + + constructor(private readonly context: vscode.ExtensionContext) { + this._populateChildren(context); + + context.subscriptions.push( + vscode.commands.registerCommand('codecharacter-2022.refreshCodes', () => + this.refresh(), + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + 'codecharacter-2022.openCodeFile', + (name: string, language: string) => { + const codeFilePath = path.join( + context.globalStorageUri.fsPath, + 'data', + 'codes', + language, + name, + `${name}.${language}`, + ); + const codeFileUri = vscode.Uri.file(codeFilePath); + vscode.workspace.openTextDocument(codeFileUri).then(doc => { + vscode.window.showTextDocument(doc); + }); + }, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + 'codecharacter-2022.addCodeFile', + (folder: SourceTreeItem) => { + vscode.window + .showInputBox({ + prompt: 'Enter the name of the file (without any extension)', + placeHolder: 'file', + }) + .then((fileName?: string) => { + if (!fileName || !/^[A-Za-z0-9_-]+$/.test(fileName)) { + throw new Error('Invalid file name'); + } + const folderPath = path.join(folder.itemPath, fileName); + fs.mkdir(folderPath, err => { + if (err) { + vscode.window.showErrorMessage( + `Error creating directory ${folderPath}`, + ); + return; + } + const codeFilePath = path.join( + folderPath, + `${fileName}.${folder.language}`, + ); + fs.writeFile(codeFilePath, '', err => { + if (err) { + vscode.window.showErrorMessage( + `Error writing file ${codeFilePath}`, + ); + return; + } else { + vscode.commands.executeCommand( + 'codecharacter-2022.refreshCodes', + ); + vscode.window.showInformationMessage( + `Created file ${codeFilePath}`, + ); + } + }); + }); + }); + }, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + 'codecharacter-2022.deleteCodeFile', + (codeFile: SourceTreeItem) => { + const folderPath = codeFile.itemPath; + rimraf(folderPath, err => { + if (err) { + vscode.window.showErrorMessage( + `Error deleting directory ${folderPath}`, + ); + return; + } + vscode.window.showInformationMessage( + `Deleted code file ${path.basename(codeFile.itemPath)}`, + ); + vscode.commands.executeCommand('codecharacter-2022.refreshCodes'); + }); + }, + ), + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + 'codecharacter-2022.runCode', + async () => { + if (!vscode.window.activeTextEditor) { + return; + } + let { document } = vscode.window.activeTextEditor; + const maps = fs.readdirSync( + path.join(context.globalStorageUri.fsPath, 'data', 'maps'), + ); + vscode.window.showQuickPick(maps).then(async map => { + if (!map) { + return; + } + const mapPath = path.join( + context.globalStorageUri.fsPath, + 'data', + 'maps', + map, + ); + const mapData = JSON.parse(fs.readFileSync(mapPath, 'utf8')); + executor + .execute(context, mapData, document.uri, document.languageId) + .then(() => vscode.window.showInformationMessage('Code executed')) + .catch(() => + vscode.window.showErrorMessage('Error executing code'), + ); + }); + }, + ), + ); + } + + private async _populateChildren( + context: vscode.ExtensionContext, + ): Promise { + return new Promise((resolve, reject) => { + const codesDirectoryPath = path.join( + context.globalStorageUri.fsPath, + 'data', + 'codes', + ); + for (const language of ['c', 'cpp', 'java', 'py']) { + if (!fs.existsSync(path.join(codesDirectoryPath, language))) { + fs.mkdirSync(path.join(codesDirectoryPath, language), { + recursive: true, + }); + } + } + fs.readdir(codesDirectoryPath, (err, languages) => { + if (err) { + vscode.window.showErrorMessage('Error reading code folders'); + reject(); + } + this.children = languages.map( + language => + new SourceTreeItem( + TreeItemType.folder, + path.join(codesDirectoryPath, language), + language, + ), + ); + resolve(); + }); + }); + } + + private _onDidChangeTreeData: vscode.EventEmitter< + SourceTreeItem | undefined + > = new vscode.EventEmitter(); + + readonly onDidChangeTreeData: vscode.Event = + this._onDidChangeTreeData.event; + + refresh(): void { + this._onDidChangeTreeData.fire(undefined); + } + + getTreeItem(element: SourceTreeItem): vscode.TreeItem { + return element; + } + + getChildren(element?: SourceTreeItem): Thenable { + return new Promise(async resolve => { + await this._populateChildren(this.context); + if (!element) { + resolve(this.children); + } + resolve(element?.children ?? []); + }); + } +} diff --git a/packages/extension/tsconfig.json b/packages/extension/tsconfig.json new file mode 100644 index 00000000..b2002e04 --- /dev/null +++ b/packages/extension/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "ES2020", + "lib": ["ES2020", "DOM"], + "sourceMap": true, + "rootDir": "src", + "strict": true /* enable all strict type-checking options */ + /* Additional Checks */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + }, + "exclude": ["node_modules", ".vscode-test"] +} diff --git a/packages/extension/webpack.config.js b/packages/extension/webpack.config.js new file mode 100644 index 00000000..5e4eaf58 --- /dev/null +++ b/packages/extension/webpack.config.js @@ -0,0 +1,110 @@ +//@ts-check + +'use strict'; + +const path = require('path'); + +//@ts-check +/** @typedef {import('webpack').Configuration} WebpackConfig **/ + +/** @type WebpackConfig */ +const extensionConfig = { + target: 'node', // vscode 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 + }, +}; + +/** @type WebpackConfig */ +const mapDesignerStaticConfig = { + target: 'web', + mode: 'production', + entry: './src/pages/mapDesignerStatic.ts', + output: { + path: path.resolve(__dirname, 'dist'), + filename: 'map-designer-static.js', + libraryTarget: 'umd', + library: 'static', + }, + resolve: { + extensions: ['.ts', '.tsx', '.js', '.jsx'], + }, + module: { + rules: [ + { + test: /\.ts$/, + exclude: /node_modules/, + use: [ + { + loader: 'ts-loader', + }, + ], + }, + ], + }, +}; + +/** @type WebpackConfig */ +const rendererStaticConfig = { + target: 'web', + mode: 'production', + entry: './src/pages/rendererStatic.ts', + output: { + path: path.resolve(__dirname, 'dist'), + filename: 'renderer-static.js', + libraryTarget: 'umd', + library: 'static', + }, + resolve: { + extensions: ['.ts', '.tsx', '.js', '.jsx'], + }, + module: { + rules: [ + { + test: /\.ts$/, + exclude: /node_modules/, + use: [ + { + loader: 'ts-loader', + }, + ], + }, + ], + }, +}; +module.exports = [ + extensionConfig, + mapDesignerStaticConfig, + rendererStaticConfig, +]; diff --git a/packages/map-designer/package.json b/packages/map-designer/package.json index 5af9304a..baddd61e 100644 --- a/packages/map-designer/package.json +++ b/packages/map-designer/package.json @@ -4,7 +4,7 @@ "license": "MIT", "author": "Delta Force", "version": "2022.0.0", - "main": "./dist/codecharacter-map-designer-2022.es.js", + "main": "./dist/codecharacter-map-designer-2022.umd.js", "module": "./dist/codecharacter-map-designer-2022.es.js", "types": "./dist/src/index.d.ts", "files": [ @@ -12,7 +12,8 @@ ], "exports": { ".": { - "import": "./dist/codecharacter-map-designer-2022.es.js" + "import": "./dist/codecharacter-map-designer-2022.es.js", + "require": "./dist/codecharacter-map-designer-2022.umd.js" } }, "scripts": { diff --git a/packages/map-designer/vite.prod.config.ts b/packages/map-designer/vite.prod.config.ts index 672382fd..b3e988ce 100644 --- a/packages/map-designer/vite.prod.config.ts +++ b/packages/map-designer/vite.prod.config.ts @@ -7,7 +7,7 @@ export default defineConfig({ plugins: [dts()], build: { lib: { - formats: ['es'], + formats: ['es', 'umd'], name: 'codecharacter-map-designer-2022', entry: path.resolve(__dirname, 'src/index.ts'), fileName: 'codecharacter-map-designer-2022', @@ -16,12 +16,12 @@ export default defineConfig({ external: ['phaser', 'lit', 'react'], plugins: [ replace({ - 'typeof CANVAS_RENDERER': "'true'", - 'typeof WEBGL_RENDERER': "'true'", - 'typeof EXPERIMENTAL': "'false'", - 'typeof PLUGIN_CAMERA3D': "'false'", - 'typeof PLUGIN_FBINSTANT': "'false'", - 'typeof FEATURE_SOUND': "'false'", + 'typeof CANVAS_RENDERER': 'false', + 'typeof WEBGL_RENDERER': 'false', + 'typeof EXPERIMENTAL': 'false', + 'typeof PLUGIN_CAMERA3D': 'false', + 'typeof PLUGIN_FBINSTANT': 'false', + 'typeof FEATURE_SOUND': 'false', preventAssignment: true, }), ], diff --git a/packages/renderer/package.json b/packages/renderer/package.json index c1cea268..1d0ef3bb 100644 --- a/packages/renderer/package.json +++ b/packages/renderer/package.json @@ -4,7 +4,7 @@ "license": "MIT", "author": "Delta Force", "version": "2022.0.0", - "main": "./dist/codecharacter-renderer-2022.es.js", + "main": "./dist/codecharacter-renderer-2022.umd.js", "module": "./dist/codecharacter-renderer-2022.es.js", "types": "./dist/src/index.d.ts", "files": [ @@ -12,7 +12,8 @@ ], "exports": { ".": { - "import": "./dist/codecharacter-renderer-2022.es.js" + "import": "./dist/codecharacter-renderer-2022.es.js", + "require": "./dist/codecharacter-renderer-2022.umd.js" } }, "scripts": { diff --git a/packages/renderer/vite.prod.config.ts b/packages/renderer/vite.prod.config.ts index f262485f..31e4b5db 100644 --- a/packages/renderer/vite.prod.config.ts +++ b/packages/renderer/vite.prod.config.ts @@ -7,7 +7,7 @@ export default defineConfig({ plugins: [dts()], build: { lib: { - formats: ['es'], + formats: ['es', 'umd'], name: 'codecharacter-renderer-2022', entry: path.resolve(__dirname, 'src/index.ts'), fileName: 'codecharacter-renderer-2022', @@ -16,12 +16,12 @@ export default defineConfig({ external: ['phaser', 'lit', 'react'], plugins: [ replace({ - 'typeof CANVAS_RENDERER': "'true'", - 'typeof WEBGL_RENDERER': "'true'", - 'typeof EXPERIMENTAL': "'false'", - 'typeof PLUGIN_CAMERA3D': "'false'", - 'typeof PLUGIN_FBINSTANT': "'false'", - 'typeof FEATURE_SOUND': "'false'", + 'typeof CANVAS_RENDERER': 'false', + 'typeof WEBGL_RENDERER': 'false', + 'typeof EXPERIMENTAL': 'false', + 'typeof PLUGIN_CAMERA3D': 'false', + 'typeof PLUGIN_FBINSTANT': 'false', + 'typeof FEATURE_SOUND': 'false', preventAssignment: true, }), ], diff --git a/vite.prod.config.ts b/vite.prod.config.ts index b8ba73a6..e3824aeb 100644 --- a/vite.prod.config.ts +++ b/vite.prod.config.ts @@ -20,12 +20,12 @@ export default defineConfig({ rollupOptions: { plugins: [ replace({ - 'typeof CANVAS_RENDERER': "'true'", - 'typeof WEBGL_RENDERER': "'true'", - 'typeof EXPERIMENTAL': "'false'", - 'typeof PLUGIN_CAMERA3D': "'false'", - 'typeof PLUGIN_FBINSTANT': "'false'", - 'typeof FEATURE_SOUND': "'false'", + 'typeof CANVAS_RENDERER': 'false', + 'typeof WEBGL_RENDERER': 'false', + 'typeof EXPERIMENTAL': 'false', + 'typeof PLUGIN_CAMERA3D': 'false', + 'typeof PLUGIN_FBINSTANT': 'false', + 'typeof FEATURE_SOUND': 'false', preventAssignment: true, }), html({ diff --git a/yarn.lock b/yarn.lock index 635d1289..184cedf1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1614,7 +1614,32 @@ __metadata: languageName: unknown linkType: soft -"@codecharacter-2022/map-designer@workspace:packages/map-designer": +"@codecharacter-2022/extension@workspace:packages/extension": + version: 0.0.0-use.local + resolution: "@codecharacter-2022/extension@workspace:packages/extension" + dependencies: + "@codecharacter-2022/map-designer": "workspace:^" + "@codecharacter-2022/renderer": "workspace:^" + "@types/glob": ^7.2.0 + "@types/mocha": ^9.0.0 + "@types/node": 14.x + "@types/rimraf": ^3.0.2 + "@types/vscode": ^1.63.0 + "@typescript-eslint/eslint-plugin": ^5.9.1 + "@typescript-eslint/parser": ^5.9.1 + "@vscode/test-electron": ^2.0.3 + eslint: ^8.6.0 + glob: ^7.2.0 + mocha: ^9.1.3 + rimraf: ^3.0.2 + ts-loader: ^9.2.6 + typescript: ^4.5.4 + webpack: ^5.66.0 + webpack-cli: ^4.9.1 + languageName: unknown + linkType: soft + +"@codecharacter-2022/map-designer@workspace:^, @codecharacter-2022/map-designer@workspace:packages/map-designer": version: 0.0.0-use.local resolution: "@codecharacter-2022/map-designer@workspace:packages/map-designer" dependencies: @@ -1638,7 +1663,7 @@ __metadata: languageName: unknown linkType: soft -"@codecharacter-2022/renderer@workspace:packages/renderer": +"@codecharacter-2022/renderer@workspace:^, @codecharacter-2022/renderer@workspace:packages/renderer": version: 0.0.0-use.local resolution: "@codecharacter-2022/renderer@workspace:packages/renderer" dependencies: @@ -1670,6 +1695,7 @@ __metadata: dependencies: "@babel/core": ^7.16.5 "@codecharacter-2022/client": "workspace:packages/client" + "@codecharacter-2022/extension": "workspace:packages/extension" "@codecharacter-2022/map-designer": "workspace:packages/map-designer" "@codecharacter-2022/renderer": "workspace:packages/renderer" "@fortawesome/fontawesome-svg-core": ^1.2.36 @@ -1754,7 +1780,7 @@ __metadata: languageName: node linkType: hard -"@discoveryjs/json-ext@npm:^0.5.3": +"@discoveryjs/json-ext@npm:^0.5.0, @discoveryjs/json-ext@npm:^0.5.3": version: 0.5.6 resolution: "@discoveryjs/json-ext@npm:0.5.6" checksum: e97df618511fb202dffa2eb0d23e17dfb02943a70e5bc38f6b9603ad1cb1d6b525aa2b07ff9fb00b041abe425b341146ddd9e487f1e35ddadc8c6b8c56358ae0 @@ -1916,6 +1942,23 @@ __metadata: languageName: node linkType: hard +"@eslint/eslintrc@npm:^1.1.0": + version: 1.1.0 + resolution: "@eslint/eslintrc@npm:1.1.0" + dependencies: + ajv: ^6.12.4 + debug: ^4.3.2 + espree: ^9.3.1 + globals: ^13.9.0 + ignore: ^4.0.6 + import-fresh: ^3.2.1 + js-yaml: ^4.1.0 + minimatch: ^3.0.4 + strip-json-comments: ^3.1.1 + checksum: 784aa2157e2808b52bbbaf1d1cfca9a6ba0b2faaa3696eb7a1229d4b357400fbd8a6aa09a16e7ae0868ea075d3a8f365cf5928b6d05a1df47f40a1167423a4fa + languageName: node + linkType: hard + "@fortawesome/fontawesome-common-types@npm:^0.2.36": version: 0.2.36 resolution: "@fortawesome/fontawesome-common-types@npm:0.2.36" @@ -1987,7 +2030,18 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^1.2.0": +"@humanwhocodes/config-array@npm:^0.9.2": + version: 0.9.3 + resolution: "@humanwhocodes/config-array@npm:0.9.3" + dependencies: + "@humanwhocodes/object-schema": ^1.2.1 + debug: ^4.1.1 + minimatch: ^3.0.4 + checksum: 6e5d7d274941c459bab0a14a87e372206d89fad3e4879d982edc942e8cc34da6510ea3644b8535a2a9edaa6527e91dccceabc6837ffa8ee506d66bca5d269ebc + languageName: node + linkType: hard + +"@humanwhocodes/object-schema@npm:^1.2.0, @humanwhocodes/object-schema@npm:^1.2.1": version: 1.2.1 resolution: "@humanwhocodes/object-schema@npm:1.2.1" checksum: a824a1ec31591231e4bad5787641f59e9633827d0a2eaae131a288d33c9ef0290bd16fda8da6f7c0fcb014147865d12118df10db57f27f41e20da92369fcb3f1 @@ -2529,14 +2583,14 @@ __metadata: linkType: hard "@rollup/plugin-replace@npm:^3.0.0": - version: 3.0.1 - resolution: "@rollup/plugin-replace@npm:3.0.1" + version: 3.1.0 + resolution: "@rollup/plugin-replace@npm:3.1.0" dependencies: "@rollup/pluginutils": ^3.1.0 magic-string: ^0.25.7 peerDependencies: rollup: ^1.20.0 || ^2.0.0 - checksum: 0cd97439783d3d23ba4f0c74146f5cdf0965d57977cc8227a77dfdd9604930905619e405c961ae146a0e68c8239b9a3a817704fa90f7d62d5087ed84d8c33ead + checksum: 9f833d40f7ebd6bb32b1c7a118fedd27a6d63e591018543740c78d3bc6fe67efa7048c6457bcadf8f982385b78e33ff8e38a67ddd4d11c15d9c81898a0757c13 languageName: node linkType: hard @@ -2668,17 +2722,17 @@ __metadata: languageName: node linkType: hard -"@storybook/addons@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/addons@npm:6.4.18" +"@storybook/addons@npm:6.4.19": + version: 6.4.19 + resolution: "@storybook/addons@npm:6.4.19" dependencies: - "@storybook/api": 6.4.18 - "@storybook/channels": 6.4.18 - "@storybook/client-logger": 6.4.18 - "@storybook/core-events": 6.4.18 + "@storybook/api": 6.4.19 + "@storybook/channels": 6.4.19 + "@storybook/client-logger": 6.4.19 + "@storybook/core-events": 6.4.19 "@storybook/csf": 0.0.2--canary.87bc651.0 - "@storybook/router": 6.4.18 - "@storybook/theming": 6.4.18 + "@storybook/router": 6.4.19 + "@storybook/theming": 6.4.19 "@types/webpack-env": ^1.16.0 core-js: ^3.8.2 global: ^4.4.0 @@ -2686,7 +2740,7 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 - checksum: 9ab25ff5eb24c1a8c701181fba654a0837fd52b0f1a5f5c8242a4b4408018a7a520c889f1ececc68a4f32e25eb98d36c38e8f1ac05b2ebb2aeeccc5650b19735 + checksum: 867e93a83c1145443693a4af04a83b597afde2663d779cf81db53cc1f77d53da1d4255bd7b403a19685cd0df739c4863eed31f2ef2f1a5c9ca4ae025e191240a languageName: node linkType: hard @@ -2712,17 +2766,17 @@ __metadata: languageName: node linkType: hard -"@storybook/api@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/api@npm:6.4.18" +"@storybook/api@npm:6.4.19": + version: 6.4.19 + resolution: "@storybook/api@npm:6.4.19" dependencies: - "@storybook/channels": 6.4.18 - "@storybook/client-logger": 6.4.18 - "@storybook/core-events": 6.4.18 + "@storybook/channels": 6.4.19 + "@storybook/client-logger": 6.4.19 + "@storybook/core-events": 6.4.19 "@storybook/csf": 0.0.2--canary.87bc651.0 - "@storybook/router": 6.4.18 + "@storybook/router": 6.4.19 "@storybook/semver": ^7.3.2 - "@storybook/theming": 6.4.18 + "@storybook/theming": 6.4.19 core-js: ^3.8.2 fast-deep-equal: ^3.1.3 global: ^4.4.0 @@ -2736,7 +2790,7 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 - checksum: 497a835d414345e278aeaee3318ee7200132fb7178f19d44716adcf97dcea1e0e16f31afb914d2181d83328ea7b02f8431bc56bd6099178331a318ad70cb2972 + checksum: 305c413ee81f98c0064bbefdd88ee61f4ce0af18465412d7e771ba7af9825c4aa134d827d21f5e7e0dafbb41fafd5a68c65df29525de8bd382b24a960b78e97a languageName: node linkType: hard @@ -2879,14 +2933,14 @@ __metadata: languageName: node linkType: hard -"@storybook/channels@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/channels@npm:6.4.18" +"@storybook/channels@npm:6.4.19": + version: 6.4.19 + resolution: "@storybook/channels@npm:6.4.19" dependencies: core-js: ^3.8.2 ts-dedent: ^2.0.0 util-deprecate: ^1.0.2 - checksum: 4c7aeed645a0d0513375ef5a0631cc9a76db2386cb46764b95c0aa352401b860010a070571854ede84d663132be7cadbb31bdd7e5301e9d4abc9875bdda6d3bd + checksum: 034c26467cb6dad9b893ee1655a5a550b588fa96d3306d38a775e8fb5b3b9e9da22da2111fc315c0c85a8aaf31f417242b1bd2238e1df84a56d6cef22fac9f64 languageName: node linkType: hard @@ -2932,13 +2986,13 @@ __metadata: languageName: node linkType: hard -"@storybook/client-logger@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/client-logger@npm:6.4.18" +"@storybook/client-logger@npm:6.4.19": + version: 6.4.19 + resolution: "@storybook/client-logger@npm:6.4.19" dependencies: core-js: ^3.8.2 global: ^4.4.0 - checksum: 22327fae35478fffd38a7dfd060139177186cbfd5ed717dcf1a61dc0d165ae9b481f5a1f688a7fea1cce1f2d41c9896c5f7fe3bd83c12a663581aadfc655552b + checksum: 06eb583d05c951d526c7a7e2de461a693d2b491fc35f35a716762e031b3978d4d479c9dcdd81c855d3051318ee4fbd43fe0718b66d560b9d97e28bde1ce7378c languageName: node linkType: hard @@ -3067,12 +3121,12 @@ __metadata: languageName: node linkType: hard -"@storybook/core-events@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/core-events@npm:6.4.18" +"@storybook/core-events@npm:6.4.19": + version: 6.4.19 + resolution: "@storybook/core-events@npm:6.4.19" dependencies: core-js: ^3.8.2 - checksum: 173ed8721b3e9c4199a2a400315c5eac63bcfd03bf5786baa4732dd784ff941c9b35c2ea501d6c77d9aeedd83b8a87662620c94d1cac2d7694d999f4f1374af4 + checksum: a10620f3f6b6e0dd22951c3c2287482bdb3e53c98b4b482f142aa2e979ae993a9ee626686a7320f97ce2fe82dcb5afec037346abfda4f33c2f612b1cd83c74a2 languageName: node linkType: hard @@ -3194,8 +3248,8 @@ __metadata: linkType: hard "@storybook/csf-tools@npm:^6.3.3": - version: 6.4.18 - resolution: "@storybook/csf-tools@npm:6.4.18" + version: 6.4.19 + resolution: "@storybook/csf-tools@npm:6.4.19" dependencies: "@babel/core": ^7.12.10 "@babel/generator": ^7.12.11 @@ -3214,7 +3268,7 @@ __metadata: prettier: ">=2.2.1 <=2.3.0" regenerator-runtime: ^0.13.7 ts-dedent: ^2.0.0 - checksum: 63e5c64d25e54a4bafaf3fb7a1e76bbc20dcb58109c18263dbc8f3eb99b6f75eeaab6cc0ca716cdb9b41da3b41cbcf606fefe879c6f198607c1288273c634366 + checksum: 33c01f8837fb001129aa28c5aefb6c46bd3f3780e73ec108545f2f87aef1041bfed1bde04578d68c6b759e19839e084052c5b3c532733ff762285f1e8040a37c languageName: node linkType: hard @@ -3380,11 +3434,11 @@ __metadata: languageName: node linkType: hard -"@storybook/router@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/router@npm:6.4.18" +"@storybook/router@npm:6.4.19": + version: 6.4.19 + resolution: "@storybook/router@npm:6.4.19" dependencies: - "@storybook/client-logger": 6.4.18 + "@storybook/client-logger": 6.4.19 core-js: ^3.8.2 fast-deep-equal: ^3.1.3 global: ^4.4.0 @@ -3398,7 +3452,7 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 - checksum: 556c3ed4f8fd92b5935b33afc3a5384401d08e3886bddc9a3b5ae5ca5e5554683aa6be9002c96722f8078aefcd2239c8815fa538bfe722578289ed15416e91c2 + checksum: 80aafb3f492113e49ead84e5ad6458df5e49c09adad72d63db4fb6218309cd11160109b0b07f9f17199717fe30313a2831b516200d206c6023368610d6868211 languageName: node linkType: hard @@ -3428,11 +3482,11 @@ __metadata: linkType: hard "@storybook/source-loader@npm:^6.3.12": - version: 6.4.18 - resolution: "@storybook/source-loader@npm:6.4.18" + version: 6.4.19 + resolution: "@storybook/source-loader@npm:6.4.19" dependencies: - "@storybook/addons": 6.4.18 - "@storybook/client-logger": 6.4.18 + "@storybook/addons": 6.4.19 + "@storybook/client-logger": 6.4.19 "@storybook/csf": 0.0.2--canary.87bc651.0 core-js: ^3.8.2 estraverse: ^5.2.0 @@ -3444,7 +3498,7 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 - checksum: fe43a4b5e184a768f4ae6e528ef11e3e4004a5508ca0a5fb0b3c285268e2f0991521849f0ac5984b1cb09e47d571ef75f1ef13506ecdb4a700ffd1615d968a83 + checksum: b4dfcaef03b74e348be746bf6f5db0a18ef956a767dcee6cdf933ef9200fbbac0e1dbbf5b2e92c810430daee976d3d713b1403f8744e4df263e4bd3d988de620 languageName: node linkType: hard @@ -3474,14 +3528,14 @@ __metadata: languageName: node linkType: hard -"@storybook/theming@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/theming@npm:6.4.18" +"@storybook/theming@npm:6.4.19": + version: 6.4.19 + resolution: "@storybook/theming@npm:6.4.19" dependencies: "@emotion/core": ^10.1.1 "@emotion/is-prop-valid": ^0.8.6 "@emotion/styled": ^10.0.27 - "@storybook/client-logger": 6.4.18 + "@storybook/client-logger": 6.4.19 core-js: ^3.8.2 deep-object-diff: ^1.1.0 emotion-theming: ^10.0.27 @@ -3493,7 +3547,7 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 - checksum: 842351390563a082189c1d489a2de81a8eceb9ad5fc20dd90fbcac523bff790024968003065bcd002055b155938d49e8118020c81d247735ccd1685fb9eb80bb + checksum: 59e980a602bfff4f7643c9f43fdd09d75b6c08cf8eed59da45f2d9b8a8fc3233057eda953c2de98e5440d29196d0abc7f3d7838f98d66f41b57579e7b2cef5e5 languageName: node linkType: hard @@ -3655,7 +3709,7 @@ __metadata: languageName: node linkType: hard -"@types/glob@npm:*, @types/glob@npm:^7.1.1, @types/glob@npm:^7.1.3": +"@types/glob@npm:*, @types/glob@npm:^7.1.1, @types/glob@npm:^7.1.3, @types/glob@npm:^7.2.0": version: 7.2.0 resolution: "@types/glob@npm:7.2.0" dependencies: @@ -3767,7 +3821,7 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.7, @types/json-schema@npm:^7.0.8": +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.7, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": version: 7.0.9 resolution: "@types/json-schema@npm:7.0.9" checksum: 259d0e25f11a21ba5c708f7ea47196bd396e379fddb79c76f9f4f62c945879dc21657904914313ec2754e443c5018ea8372362f323f30e0792897fdb2098a705 @@ -3797,27 +3851,41 @@ __metadata: languageName: node linkType: hard +"@types/mocha@npm:^9.0.0": + version: 9.1.0 + resolution: "@types/mocha@npm:9.1.0" + checksum: 21e1000dafcfe387c6812be41c44a47b48c27a74d5a70c3d5ef1bb5c88eadadfc74dba06e93f160e7248c8a57b3977b590f82504c801c9927816ecd4668023c0 + languageName: node + linkType: hard + "@types/node-fetch@npm:^2.5.7": - version: 2.5.12 - resolution: "@types/node-fetch@npm:2.5.12" + version: 2.6.0 + resolution: "@types/node-fetch@npm:2.6.0" dependencies: "@types/node": "*" - form-data: ^3.0.0 - checksum: ad63c85ba6a9477b8e057ec8682257738130d98e8ece4e31141789bd99df9d9147985cc8bc0cb5c8983ed5aa6bb95d46df23d1e055f4ad5cf8b82fc69cf626c7 + form-data: ^2.3.3 + checksum: 25fff9aa151e59fa6f66461fa5599e5d2a9a99e03a80dbbe8e991b2362b223d1635fc61e75128a1de91112ffc13c371212ea644cbc888d4b54662ea48ff3ff16 languageName: node linkType: hard "@types/node@npm:*": - version: 17.0.17 - resolution: "@types/node@npm:17.0.17" - checksum: 8ddba2829acdf1684fbd8fd248ec13f033efb70ecd1085677b547c40ef8e936a006b95eac3bdc28c47939c62526f3f027afeb4a930e30e4394923bbae4626476 + version: 17.0.18 + resolution: "@types/node@npm:17.0.18" + checksum: 6c4edfc2b3ba2342a9c3d56e934c5245948ab752f4dc04bd6790b9603e6ebc53bc4f5befc3662e207f7dba2ddd17ccf657f915e319ea7cdd4f77b851079d1611 + languageName: node + linkType: hard + +"@types/node@npm:14.x": + version: 14.18.12 + resolution: "@types/node@npm:14.18.12" + checksum: 8a0273caa0584020adb8802784fc7d4f18f05e6c205335b7f3818a91d6b0c22736b9f51da3428d5bc54076ad47f1a4d6d57990a3ce8489a520ac66b2b3ff24bc languageName: node linkType: hard "@types/node@npm:^14.0.10 || ^16.0.0, @types/node@npm:^14.14.20 || ^16.0.0": - version: 16.11.24 - resolution: "@types/node@npm:16.11.24" - checksum: d4827d548c04ca55db30901ea248ce1a1f8d2958b3143a7e71fd86d3d7b804faebfa9b80b934c7c6030a82553323dfe70f01dd0000176561a2cb3fc9db06a7b3 + version: 16.11.25 + resolution: "@types/node@npm:16.11.25" + checksum: 0b6e25a81364be89256ad1a36341e27b387e646d3186e270108a8bb7b6ecdfdf5ae037aa1c75a5117b8a7509c80093b75431cd5cfcfbc4d553b52e7db2ca272e languageName: node linkType: hard @@ -3894,11 +3962,11 @@ __metadata: linkType: hard "@types/react-google-recaptcha@npm:^2.1.3": - version: 2.1.3 - resolution: "@types/react-google-recaptcha@npm:2.1.3" + version: 2.1.4 + resolution: "@types/react-google-recaptcha@npm:2.1.4" dependencies: "@types/react": "*" - checksum: b322326e3614035392b760ebbf546a4a23abda7fe5e4c357512ff914bce8dac524fde3ce3f532602e09d215bd2352928c06328b4a817767f43dc0c762ecb5b86 + checksum: 8b88bbdb9cd4fb3842cf4f11f68e2354888ac4ff9298bb275fd766d38f0a713f8f490575aa2f48f8eb08dfae37d4e183c855f3b659a0bfccb1e0c6da145fbfc4 languageName: node linkType: hard @@ -3968,6 +4036,16 @@ __metadata: languageName: node linkType: hard +"@types/rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "@types/rimraf@npm:3.0.2" + dependencies: + "@types/glob": "*" + "@types/node": "*" + checksum: b47fa302f46434cba704d20465861ad250df79467d3d289f9d6490d3aeeb41e8cb32dd80bd1a8fd833d1e185ac719fbf9be12e05ad9ce9be094d8ee8f1405347 + languageName: node + linkType: hard + "@types/scheduler@npm:*": version: 0.16.2 resolution: "@types/scheduler@npm:0.16.2" @@ -4019,6 +4097,13 @@ __metadata: languageName: node linkType: hard +"@types/vscode@npm:^1.63.0": + version: 1.64.0 + resolution: "@types/vscode@npm:1.64.0" + checksum: 428cfce7f31ebf2d2a82e6ffdc2d903487adecd72147463e7b679d3280532b805e37e69065fbfd66fa144898a8fab86eaf3a0c4ac2861df1135ab41050a6888d + languageName: node + linkType: hard + "@types/warning@npm:^3.0.0": version: 3.0.0 resolution: "@types/warning@npm:3.0.0" @@ -4096,6 +4181,29 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/eslint-plugin@npm:^5.9.1": + version: 5.12.0 + resolution: "@typescript-eslint/eslint-plugin@npm:5.12.0" + dependencies: + "@typescript-eslint/scope-manager": 5.12.0 + "@typescript-eslint/type-utils": 5.12.0 + "@typescript-eslint/utils": 5.12.0 + debug: ^4.3.2 + functional-red-black-tree: ^1.0.1 + ignore: ^5.1.8 + regexpp: ^3.2.0 + semver: ^7.3.5 + tsutils: ^3.21.0 + peerDependencies: + "@typescript-eslint/parser": ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: ac7074b51456748ef8770d82f5b4e691e1b93bb1353b448bb1b43db5b5a9722a6a012dc1dc0a3b35ab0c0ca7c1b5412f535ad992115132ed84ed6f4179778d37 + languageName: node + linkType: hard + "@typescript-eslint/experimental-utils@npm:4.33.0": version: 4.33.0 resolution: "@typescript-eslint/experimental-utils@npm:4.33.0" @@ -4129,6 +4237,23 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/parser@npm:^5.9.1": + version: 5.12.0 + resolution: "@typescript-eslint/parser@npm:5.12.0" + dependencies: + "@typescript-eslint/scope-manager": 5.12.0 + "@typescript-eslint/types": 5.12.0 + "@typescript-eslint/typescript-estree": 5.12.0 + debug: ^4.3.2 + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 0453c14d967ebba4ebe0d763882b7a1258f23a710d127f53196d360b78722d880cc8c0299feb52ecc4e10600834c22559bf543211249d878efad864f7ec856bc + languageName: node + linkType: hard + "@typescript-eslint/scope-manager@npm:4.33.0": version: 4.33.0 resolution: "@typescript-eslint/scope-manager@npm:4.33.0" @@ -4139,6 +4264,32 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:5.12.0": + version: 5.12.0 + resolution: "@typescript-eslint/scope-manager@npm:5.12.0" + dependencies: + "@typescript-eslint/types": 5.12.0 + "@typescript-eslint/visitor-keys": 5.12.0 + checksum: 87cc4e8ab3b495293e51685566cafca6f217c7328fc1210e4a9c3a89e864c5e3a04ddde11708e07820185fd158cb448980607a93fd658fa2089c152f27a847d0 + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:5.12.0": + version: 5.12.0 + resolution: "@typescript-eslint/type-utils@npm:5.12.0" + dependencies: + "@typescript-eslint/utils": 5.12.0 + debug: ^4.3.2 + tsutils: ^3.21.0 + peerDependencies: + eslint: "*" + peerDependenciesMeta: + typescript: + optional: true + checksum: 90390603319441493b62611730db78f8a732e32a5d9097d1e9c6581da6caeb71cc08a3ed6c716f2fc490b153f956c9a2471d9fbe97c22214ca86f58511c7581a + languageName: node + linkType: hard + "@typescript-eslint/types@npm:4.33.0": version: 4.33.0 resolution: "@typescript-eslint/types@npm:4.33.0" @@ -4146,6 +4297,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:5.12.0": + version: 5.12.0 + resolution: "@typescript-eslint/types@npm:5.12.0" + checksum: f5e7f8270cb0f9f18886bf00f8f1fd589b793f4c05dc2de53cc826beb969161e19ffc10f51237402fb9f3d24f5aaf3bb41b1d8da70e115ec3ff11e79b3471988 + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:4.33.0": version: 4.33.0 resolution: "@typescript-eslint/typescript-estree@npm:4.33.0" @@ -4164,6 +4322,40 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:5.12.0": + version: 5.12.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.12.0" + dependencies: + "@typescript-eslint/types": 5.12.0 + "@typescript-eslint/visitor-keys": 5.12.0 + debug: ^4.3.2 + globby: ^11.0.4 + is-glob: ^4.0.3 + semver: ^7.3.5 + tsutils: ^3.21.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 6a8e852c210b20370eb564f3beb245c425e65a4de3e78a1e2f278a241b6acf72ba43b10767df18fc1654b529453529f721fa673569406ace4011712c9c837900 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:5.12.0": + version: 5.12.0 + resolution: "@typescript-eslint/utils@npm:5.12.0" + dependencies: + "@types/json-schema": ^7.0.9 + "@typescript-eslint/scope-manager": 5.12.0 + "@typescript-eslint/types": 5.12.0 + "@typescript-eslint/typescript-estree": 5.12.0 + eslint-scope: ^5.1.1 + eslint-utils: ^3.0.0 + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 34c394db0510be78c5cbb8928c9eb81405a117dd9e5903a149e4f3c20218dcda89a29e5012984d07c8ce9e5c7f5d7c38f5c3061558028f3f518ac98bbeb9a006 + languageName: node + linkType: hard + "@typescript-eslint/visitor-keys@npm:4.33.0": version: 4.33.0 resolution: "@typescript-eslint/visitor-keys@npm:4.33.0" @@ -4174,6 +4366,23 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:5.12.0": + version: 5.12.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.12.0" + dependencies: + "@typescript-eslint/types": 5.12.0 + eslint-visitor-keys: ^3.0.0 + checksum: c3774f542aae801926edf86fe6cab534c4cdac914b035730912443ed53fcc701b0f0e7b1a0d5fc959484637c55f63409fc43df5508c334e202d66d4654484d11 + languageName: node + linkType: hard + +"@ungap/promise-all-settled@npm:1.1.2": + version: 1.1.2 + resolution: "@ungap/promise-all-settled@npm:1.1.2" + checksum: 08d37fdfa23a6fe8139f1305313562ebad973f3fac01bcce2773b2bda5bcb0146dfdcf3cb6a722cf0a5f2ca0bc56a827eac8f1e7b3beddc548f654addf1fc34c + languageName: node + linkType: hard + "@vitejs/plugin-react@npm:^1.0.7, @vitejs/plugin-react@npm:^1.0.8": version: 1.2.0 resolution: "@vitejs/plugin-react@npm:1.2.0" @@ -4190,6 +4399,18 @@ __metadata: languageName: node linkType: hard +"@vscode/test-electron@npm:^2.0.3": + version: 2.1.2 + resolution: "@vscode/test-electron@npm:2.1.2" + dependencies: + http-proxy-agent: ^4.0.1 + https-proxy-agent: ^5.0.0 + rimraf: ^3.0.2 + unzipper: ^0.10.11 + checksum: a6bdedde7580e831c77cb30ec0470b29f9c975274e9c4e287e3270ae2b922e515e8e40c0020c982c9607e76405efba321bc6e7bbcd79a32166e96f61ea0efc7f + languageName: node + linkType: hard + "@web/config-loader@npm:^0.1.3": version: 0.1.3 resolution: "@web/config-loader@npm:0.1.3" @@ -4553,6 +4774,39 @@ __metadata: languageName: node linkType: hard +"@webpack-cli/configtest@npm:^1.1.1": + version: 1.1.1 + resolution: "@webpack-cli/configtest@npm:1.1.1" + peerDependencies: + webpack: 4.x.x || 5.x.x + webpack-cli: 4.x.x + checksum: c4e7fca21315e487655fbdc7d079092c3f88b274a720d245ca2e13dce7553009fb3f9d82218c33f5c9b208832d72bb4114a9cca97d53b66212eff5da1d3ad44b + languageName: node + linkType: hard + +"@webpack-cli/info@npm:^1.4.1": + version: 1.4.1 + resolution: "@webpack-cli/info@npm:1.4.1" + dependencies: + envinfo: ^7.7.3 + peerDependencies: + webpack-cli: 4.x.x + checksum: 7a7cac2ba4f2528caa329311599da1685b1bc099bfc5b7210932b7c86024c1277fd7857b08557902b187ea01247a8e8f72f7f5719af72b0c8d97f22087aa0c14 + languageName: node + linkType: hard + +"@webpack-cli/serve@npm:^1.6.1": + version: 1.6.1 + resolution: "@webpack-cli/serve@npm:1.6.1" + peerDependencies: + webpack-cli: 4.x.x + peerDependenciesMeta: + webpack-dev-server: + optional: true + checksum: 8b273f906aeffa60c7d5700ae25f98d4b66b7e922cad38acb9575d55ff83872cd20b9894aacfa81c4d54e5b51b16253ae0e70c5e9e0608dc8768276e15c74536 + languageName: node + linkType: hard + "@xtuc/ieee754@npm:^1.2.0": version: 1.2.0 resolution: "@xtuc/ieee754@npm:1.2.0" @@ -4644,7 +4898,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.2.4, acorn@npm:^8.4.1": +"acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.7.0": version: 8.7.0 resolution: "acorn@npm:8.7.0" bin: @@ -4766,6 +5020,13 @@ __metadata: languageName: node linkType: hard +"ansi-colors@npm:4.1.1, ansi-colors@npm:^4.1.1": + version: 4.1.1 + resolution: "ansi-colors@npm:4.1.1" + checksum: 138d04a51076cb085da0a7e2d000c5c0bb09f6e772ed5c65c53cb118d37f6c5f1637506d7155fb5f330f0abcf6f12fa2e489ac3f8cdab9da393bf1bb4f9a32b0 + languageName: node + linkType: hard + "ansi-colors@npm:^3.0.0": version: 3.2.4 resolution: "ansi-colors@npm:3.2.4" @@ -4773,13 +5034,6 @@ __metadata: languageName: node linkType: hard -"ansi-colors@npm:^4.1.1": - version: 4.1.1 - resolution: "ansi-colors@npm:4.1.1" - checksum: 138d04a51076cb085da0a7e2d000c5c0bb09f6e772ed5c65c53cb118d37f6c5f1637506d7155fb5f330f0abcf6f12fa2e489ac3f8cdab9da393bf1bb4f9a32b0 - languageName: node - linkType: hard - "ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0": version: 4.3.2 resolution: "ansi-escapes@npm:4.3.2" @@ -5486,7 +5740,7 @@ __metadata: languageName: node linkType: hard -"big-integer@npm:^1.6.7": +"big-integer@npm:^1.6.17, big-integer@npm:^1.6.7": version: 1.6.51 resolution: "big-integer@npm:1.6.51" checksum: 3d444173d1b2e20747e2c175568bedeebd8315b0637ea95d75fd27830d3b8e8ba36c6af40374f36bdaea7b5de376dcada1b07587cb2a79a928fccdb6e6e3c518 @@ -5514,6 +5768,16 @@ __metadata: languageName: node linkType: hard +"binary@npm:~0.3.0": + version: 0.3.0 + resolution: "binary@npm:0.3.0" + dependencies: + buffers: ~0.1.1 + chainsaw: ~0.1.0 + checksum: b4699fda9e2c2981e74a46b0115cf0d472eda9b68c0e9d229ef494e92f29ce81acf0a834415094cffcc340dfee7c4ef8ce5d048c65c18067a7ed850323f777af + languageName: node + linkType: hard + "bindings@npm:^1.5.0": version: 1.5.0 resolution: "bindings@npm:1.5.0" @@ -5530,6 +5794,13 @@ __metadata: languageName: node linkType: hard +"bluebird@npm:~3.4.1": + version: 3.4.7 + resolution: "bluebird@npm:3.4.7" + checksum: bffa9dee7d3a41ab15c4f3f24687b49959b4e64e55c058a062176feb8ccefc2163414fb4e1a0f3053bf187600936509660c3ebd168fd9f0e48c7eba23b019466 + languageName: node + linkType: hard + "bn.js@npm:^4.0.0, bn.js@npm:^4.1.0, bn.js@npm:^4.11.9": version: 4.12.0 resolution: "bn.js@npm:4.12.0" @@ -5654,6 +5925,13 @@ __metadata: languageName: node linkType: hard +"browser-stdout@npm:1.3.1": + version: 1.3.1 + resolution: "browser-stdout@npm:1.3.1" + checksum: b717b19b25952dd6af483e368f9bcd6b14b87740c3d226c2977a65e84666ffd67000bddea7d911f111a9b6ddc822b234de42d52ab6507bce4119a4cc003ef7b3 + languageName: node + linkType: hard + "browserify-aes@npm:^1.0.0, browserify-aes@npm:^1.0.4": version: 1.2.0 resolution: "browserify-aes@npm:1.2.0" @@ -5767,6 +6045,13 @@ __metadata: languageName: node linkType: hard +"buffer-indexof-polyfill@npm:~1.0.0": + version: 1.0.2 + resolution: "buffer-indexof-polyfill@npm:1.0.2" + checksum: fbfb2d69c6bb2df235683126f9dc140150c08ac3630da149913a9971947b667df816a913b6993bc48f4d611999cb99a1589914d34c02dccd2234afda5cb75bbc + languageName: node + linkType: hard + "buffer-xor@npm:^1.0.3": version: 1.0.3 resolution: "buffer-xor@npm:1.0.3" @@ -5785,6 +6070,13 @@ __metadata: languageName: node linkType: hard +"buffers@npm:~0.1.1": + version: 0.1.1 + resolution: "buffers@npm:0.1.1" + checksum: ad6f8e483efab39cefd92bdc04edbff6805e4211b002f4d1cfb70c6c472a61cc89fb18c37bcdfdd4ee416ca096e9ff606286698a7d41a18b539bac12fd76d4d5 + languageName: node + linkType: hard + "builtin-modules@npm:^3.1.0": version: 3.2.0 resolution: "builtin-modules@npm:3.2.0" @@ -5976,7 +6268,7 @@ __metadata: languageName: node linkType: hard -"camelcase@npm:^6.2.0": +"camelcase@npm:^6.0.0, camelcase@npm:^6.2.0": version: 6.3.0 resolution: "camelcase@npm:6.3.0" checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d @@ -5984,9 +6276,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001109, caniuse-lite@npm:^1.0.30001286": - version: 1.0.30001311 - resolution: "caniuse-lite@npm:1.0.30001311" - checksum: a96a2724db91f7d820d7c83d98d6d80f71f4ef5542fd9af49478e6f5057a92d61fbb6c2a2c151e13323c760c7d9f046f422a9b1ac77ab08dc2cacc62bd22f941 + version: 1.0.30001312 + resolution: "caniuse-lite@npm:1.0.30001312" + checksum: 753fb9ea1e02e999430b323a71b5acab5120f3b5fc0161b01669f54a3ef5c5296240b6ae9b79b12a3742e3aed216aa9ee3d5398a23c16d08625ccd376b79545d languageName: node linkType: hard @@ -6004,6 +6296,15 @@ __metadata: languageName: node linkType: hard +"chainsaw@npm:~0.1.0": + version: 0.1.0 + resolution: "chainsaw@npm:0.1.0" + dependencies: + traverse: ">=0.3.0 <0.4" + checksum: 22a96b9fb0cd9fb20813607c0869e61817d1acc81b5d455cc6456b5e460ea1dd52630e0f76b291cf8294bfb6c1fc42e299afb52104af9096242699d6d3aa6d3e + languageName: node + linkType: hard + "chalk@npm:^2.0.0, chalk@npm:^2.4.1, chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" @@ -6060,6 +6361,25 @@ __metadata: languageName: node linkType: hard +"chokidar@npm:3.5.3, chokidar@npm:^3.4.1, chokidar@npm:^3.4.2, chokidar@npm:^3.5.2": + version: 3.5.3 + resolution: "chokidar@npm:3.5.3" + dependencies: + anymatch: ~3.1.2 + braces: ~3.0.2 + fsevents: ~2.3.2 + glob-parent: ~5.1.2 + is-binary-path: ~2.1.0 + is-glob: ~4.0.1 + normalize-path: ~3.0.0 + readdirp: ~3.6.0 + dependenciesMeta: + fsevents: + optional: true + checksum: b49fcde40176ba007ff361b198a2d35df60d9bb2a5aab228279eb810feae9294a6b4649ab15981304447afe1e6ffbf4788ad5db77235dc770ab777c6e771980c + languageName: node + linkType: hard + "chokidar@npm:^2.0.4, chokidar@npm:^2.1.8": version: 2.1.8 resolution: "chokidar@npm:2.1.8" @@ -6083,25 +6403,6 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^3.4.1, chokidar@npm:^3.4.2, chokidar@npm:^3.5.2": - version: 3.5.3 - resolution: "chokidar@npm:3.5.3" - dependencies: - anymatch: ~3.1.2 - braces: ~3.0.2 - fsevents: ~2.3.2 - glob-parent: ~5.1.2 - is-binary-path: ~2.1.0 - is-glob: ~4.0.1 - normalize-path: ~3.0.0 - readdirp: ~3.6.0 - dependenciesMeta: - fsevents: - optional: true - checksum: b49fcde40176ba007ff361b198a2d35df60d9bb2a5aab228279eb810feae9294a6b4649ab15981304447afe1e6ffbf4788ad5db77235dc770ab777c6e771980c - languageName: node - linkType: hard - "chownr@npm:^1.1.1": version: 1.1.4 resolution: "chownr@npm:1.1.4" @@ -6344,7 +6645,7 @@ __metadata: languageName: node linkType: hard -"colorette@npm:^2.0.16": +"colorette@npm:^2.0.14, colorette@npm:^2.0.16": version: 2.0.16 resolution: "colorette@npm:2.0.16" checksum: cd55596a3a2d1071c1a28eee7fd8a5387593ff1bd10a3e8d0a6221499311fe34a9f2b9272d77c391e0e003dcdc8934fb2f8d106e7ef1f7516f8060c901d41a27 @@ -6358,7 +6659,7 @@ __metadata: languageName: node linkType: hard -"combined-stream@npm:^1.0.8": +"combined-stream@npm:^1.0.6, combined-stream@npm:^1.0.8": version: 1.0.8 resolution: "combined-stream@npm:1.0.8" dependencies: @@ -6407,6 +6708,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^7.0.0": + version: 7.2.0 + resolution: "commander@npm:7.2.0" + checksum: 53501cbeee61d5157546c0bef0fedb6cdfc763a882136284bed9a07225f09a14b82d2a84e7637edfd1a679fb35ed9502fd58ef1d091e6287f60d790147f68ddc + languageName: node + linkType: hard + "commander@npm:^8.3.0": version: 8.3.0 resolution: "commander@npm:8.3.0" @@ -6929,7 +7237,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.0.1, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.2.0, debug@npm:^4.3.1": +"debug@npm:4, debug@npm:4.3.3, debug@npm:^4.0.1, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.2.0, debug@npm:^4.3.1, debug@npm:^4.3.2": version: 4.3.3 resolution: "debug@npm:4.3.3" dependencies: @@ -6957,6 +7265,13 @@ __metadata: languageName: node linkType: hard +"decamelize@npm:^4.0.0": + version: 4.0.0 + resolution: "decamelize@npm:4.0.0" + checksum: b7d09b82652c39eead4d6678bb578e3bebd848add894b76d0f6b395bc45b2d692fb88d977e7cfb93c4ed6c119b05a1347cef261174916c2e75c0a8ca57da1809 + languageName: node + linkType: hard + "decimal.js@npm:^10.2.1": version: 10.3.1 resolution: "decimal.js@npm:10.3.1" @@ -7144,6 +7459,13 @@ __metadata: languageName: node linkType: hard +"diff@npm:5.0.0": + version: 5.0.0 + resolution: "diff@npm:5.0.0" + checksum: f19fe29284b633afdb2725c2a8bb7d25761ea54d321d8e67987ac851c5294be4afeab532bd84531e02583a3fe7f4014aa314a3eda84f5590e7a9e6b371ef3b46 + languageName: node + linkType: hard + "diffie-hellman@npm:^5.0.0": version: 5.0.3 resolution: "diffie-hellman@npm:5.0.3" @@ -7304,6 +7626,15 @@ __metadata: languageName: node linkType: hard +"duplexer2@npm:~0.1.4": + version: 0.1.4 + resolution: "duplexer2@npm:0.1.4" + dependencies: + readable-stream: ^2.0.2 + checksum: 744961f03c7f54313f90555ac20284a3fb7bf22fdff6538f041a86c22499560eb6eac9d30ab5768054137cb40e6b18b40f621094e0261d7d8c35a37b7a5ad241 + languageName: node + linkType: hard + "duplexer@npm:~0.1.1": version: 0.1.2 resolution: "duplexer@npm:0.1.2" @@ -7342,9 +7673,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.4.17": - version: 1.4.68 - resolution: "electron-to-chromium@npm:1.4.68" - checksum: d7654d07ab7c504a0683cf29715db227bdbd3e397ad3a41bad3d1e35e9f837447be2bc5dea54b3350d51be5c9c7b79756dcbe44903fbee5949d67d783e788acb + version: 1.4.71 + resolution: "electron-to-chromium@npm:1.4.71" + checksum: ecb2546eed6b0e95003d787c259de730f32e2f5c0fa2acb27069c0cd21378cbc2a6c7516f4ec677a5960db4e180644f87ed91a729825a238454e31e4e74617db languageName: node linkType: hard @@ -7452,7 +7783,7 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.8.3": +"enhanced-resolve@npm:^5.0.0, enhanced-resolve@npm:^5.8.3": version: 5.9.0 resolution: "enhanced-resolve@npm:5.9.0" dependencies: @@ -7485,6 +7816,15 @@ __metadata: languageName: node linkType: hard +"envinfo@npm:^7.7.3": + version: 7.8.1 + resolution: "envinfo@npm:7.8.1" + bin: + envinfo: dist/cli.js + checksum: de736c98d6311c78523628ff127af138451b162e57af5293c1b984ca821d0aeb9c849537d2fde0434011bed33f6bca5310ca2aab8a51a3f28fc719e89045d648 + languageName: node + linkType: hard + "err-code@npm:^2.0.2": version: 2.0.3 resolution: "err-code@npm:2.0.3" @@ -8000,6 +8340,13 @@ __metadata: languageName: node linkType: hard +"escape-string-regexp@npm:4.0.0, escape-string-regexp@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 + languageName: node + linkType: hard + "escape-string-regexp@npm:^1.0.5": version: 1.0.5 resolution: "escape-string-regexp@npm:1.0.5" @@ -8014,13 +8361,6 @@ __metadata: languageName: node linkType: hard -"escape-string-regexp@npm:^4.0.0": - version: 4.0.0 - resolution: "escape-string-regexp@npm:4.0.0" - checksum: 98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 - languageName: node - linkType: hard - "escodegen@npm:^2.0.0": version: 2.0.0 resolution: "escodegen@npm:2.0.0" @@ -8153,6 +8493,16 @@ __metadata: languageName: node linkType: hard +"eslint-scope@npm:^7.1.1": + version: 7.1.1 + resolution: "eslint-scope@npm:7.1.1" + dependencies: + esrecurse: ^4.3.0 + estraverse: ^5.2.0 + checksum: 9f6e974ab2db641ca8ab13508c405b7b859e72afe9f254e8131ff154d2f40c99ad4545ce326fd9fde3212ff29707102562a4834f1c48617b35d98c71a97fbf3e + languageName: node + linkType: hard + "eslint-utils@npm:^2.1.0": version: 2.1.0 resolution: "eslint-utils@npm:2.1.0" @@ -8187,6 +8537,13 @@ __metadata: languageName: node linkType: hard +"eslint-visitor-keys@npm:^3.0.0, eslint-visitor-keys@npm:^3.3.0": + version: 3.3.0 + resolution: "eslint-visitor-keys@npm:3.3.0" + checksum: d59e68a7c5a6d0146526b0eec16ce87fbf97fe46b8281e0d41384224375c4e52f5ffb9e16d48f4ea50785cde93f766b0c898e31ab89978d88b0e1720fbfb7808 + languageName: node + linkType: hard + "eslint@npm:^7.32.0": version: 7.32.0 resolution: "eslint@npm:7.32.0" @@ -8237,6 +8594,51 @@ __metadata: languageName: node linkType: hard +"eslint@npm:^8.6.0": + version: 8.9.0 + resolution: "eslint@npm:8.9.0" + dependencies: + "@eslint/eslintrc": ^1.1.0 + "@humanwhocodes/config-array": ^0.9.2 + ajv: ^6.10.0 + chalk: ^4.0.0 + cross-spawn: ^7.0.2 + debug: ^4.3.2 + doctrine: ^3.0.0 + escape-string-regexp: ^4.0.0 + eslint-scope: ^7.1.1 + eslint-utils: ^3.0.0 + eslint-visitor-keys: ^3.3.0 + espree: ^9.3.1 + esquery: ^1.4.0 + esutils: ^2.0.2 + fast-deep-equal: ^3.1.3 + file-entry-cache: ^6.0.1 + functional-red-black-tree: ^1.0.1 + glob-parent: ^6.0.1 + globals: ^13.6.0 + ignore: ^5.2.0 + import-fresh: ^3.0.0 + imurmurhash: ^0.1.4 + is-glob: ^4.0.0 + js-yaml: ^4.1.0 + json-stable-stringify-without-jsonify: ^1.0.1 + levn: ^0.4.1 + lodash.merge: ^4.6.2 + minimatch: ^3.0.4 + natural-compare: ^1.4.0 + optionator: ^0.9.1 + regexpp: ^3.2.0 + strip-ansi: ^6.0.1 + strip-json-comments: ^3.1.0 + text-table: ^0.2.0 + v8-compile-cache: ^2.0.3 + bin: + eslint: bin/eslint.js + checksum: 8efecdb9752ee6cb4d2787a14e00cbeab29562ed95dd71c6f3f8ac410426a067d5aa659416d2290e46ca44bc5607e6a6e6c62f814694d8639f80666f522022a7 + languageName: node + linkType: hard + "espree@npm:^7.3.0, espree@npm:^7.3.1": version: 7.3.1 resolution: "espree@npm:7.3.1" @@ -8248,6 +8650,17 @@ __metadata: languageName: node linkType: hard +"espree@npm:^9.3.1": + version: 9.3.1 + resolution: "espree@npm:9.3.1" + dependencies: + acorn: ^8.7.0 + acorn-jsx: ^5.3.1 + eslint-visitor-keys: ^3.3.0 + checksum: d7161db30b65427e0799383699ac4c441533a38faee005153694b68b933ba7a24666680edfc490fa77e3a84a22dbd955768034a6f811af5049774eead83063a5 + languageName: node + linkType: hard + "esprima@npm:^4.0.0, esprima@npm:^4.0.1": version: 4.0.1 resolution: "esprima@npm:4.0.1" @@ -8593,6 +9006,13 @@ __metadata: languageName: node linkType: hard +"fastest-levenshtein@npm:^1.0.12": + version: 1.0.12 + resolution: "fastest-levenshtein@npm:1.0.12" + checksum: e1a013698dd1d302c7a78150130c7d50bb678c2c2f8839842a796d66cc7cdf50ea6b3d7ca930b0c8e7e8c2cd84fea8ab831023b382f7aab6922c318c1451beab + languageName: node + linkType: hard + "fastq@npm:^1.6.0": version: 1.13.0 resolution: "fastq@npm:1.13.0" @@ -8749,6 +9169,16 @@ __metadata: languageName: node linkType: hard +"find-up@npm:5.0.0, find-up@npm:^5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" + dependencies: + locate-path: ^6.0.0 + path-exists: ^4.0.0 + checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 + languageName: node + linkType: hard + "find-up@npm:^1.0.0": version: 1.1.2 resolution: "find-up@npm:1.1.2" @@ -8787,16 +9217,6 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^5.0.0": - version: 5.0.0 - resolution: "find-up@npm:5.0.0" - dependencies: - locate-path: ^6.0.0 - path-exists: ^4.0.0 - checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 - languageName: node - linkType: hard - "flat-cache@npm:^3.0.4": version: 3.0.4 resolution: "flat-cache@npm:3.0.4" @@ -8807,6 +9227,15 @@ __metadata: languageName: node linkType: hard +"flat@npm:^5.0.2": + version: 5.0.2 + resolution: "flat@npm:5.0.2" + bin: + flat: cli.js + checksum: 12a1536ac746db74881316a181499a78ef953632ddd28050b7a3a43c62ef5462e3357c8c29d76072bb635f147f7a9a1f0c02efef6b4be28f8db62ceb3d5c7f5d + languageName: node + linkType: hard + "flatted@npm:^3.1.0": version: 3.2.5 resolution: "flatted@npm:3.2.5" @@ -8887,6 +9316,17 @@ __metadata: languageName: node linkType: hard +"form-data@npm:^2.3.3": + version: 2.5.1 + resolution: "form-data@npm:2.5.1" + dependencies: + asynckit: ^0.4.0 + combined-stream: ^1.0.6 + mime-types: ^2.1.12 + checksum: 5134ada56cc246b293a1ac7678dba6830000603a3979cf83ff7b2f21f2e3725202237cfb89e32bcb38a1d35727efbd3c3a22e65b42321e8ade8eec01ce755d08 + languageName: node + linkType: hard + "form-data@npm:^3.0.0": version: 3.0.1 resolution: "form-data@npm:3.0.1" @@ -9049,6 +9489,18 @@ __metadata: languageName: node linkType: hard +"fstream@npm:^1.0.12": + version: 1.0.12 + resolution: "fstream@npm:1.0.12" + dependencies: + graceful-fs: ^4.1.2 + inherits: ~2.0.0 + mkdirp: ">=0.5 0" + rimraf: 2 + checksum: e6998651aeb85fd0f0a8a68cec4d05a3ada685ecc4e3f56e0d063d0564a4fc39ad11a856f9020f926daf869fc67f7a90e891def5d48e4cadab875dc313094536 + languageName: node + linkType: hard + "function-bind@npm:^1.1.1": version: 1.1.1 resolution: "function-bind@npm:1.1.1" @@ -9214,6 +9666,15 @@ __metadata: languageName: node linkType: hard +"glob-parent@npm:^6.0.1": + version: 6.0.2 + resolution: "glob-parent@npm:6.0.2" + dependencies: + is-glob: ^4.0.3 + checksum: c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8 + languageName: node + linkType: hard + "glob-promise@npm:^3.4.0": version: 3.4.0 resolution: "glob-promise@npm:3.4.0" @@ -9250,7 +9711,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.1.1, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.2.0": +"glob@npm:7.2.0, glob@npm:^7.1.1, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.2.0": version: 7.2.0 resolution: "glob@npm:7.2.0" dependencies: @@ -9330,21 +9791,28 @@ __metadata: linkType: hard "goober@npm:^2.1.1": - version: 2.1.7 - resolution: "goober@npm:2.1.7" + version: 2.1.8 + resolution: "goober@npm:2.1.8" peerDependencies: - csstype: ^2.6.2 - checksum: f26e056e3ea58c6e7810fb620773f19dfee6f791f316a53c082834aa44c8ab7248b591c4a6f348bbdeb2da54c11e046b87bf359648711f99c0ccd1b423be1f29 + csstype: ^3.0.10 + checksum: c877e854814e29c085c0d3f7879492788ceff9b1a0a0d731bfe22e59a2d206f991c3fb44ad14a32a9c2f396e3280ad6a8e597a95bb2d052c59dd7c25814f1c67 languageName: node linkType: hard -"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.2, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.9 resolution: "graceful-fs@npm:4.2.9" checksum: 68ea4e07ff2c041ada184f9278b830375f8e0b75154e3f080af6b70f66172fabb4108d19b3863a96b53fc068a310b9b6493d86d1291acc5f3861eb4b79d26ad6 languageName: node linkType: hard +"growl@npm:1.10.5": + version: 1.10.5 + resolution: "growl@npm:1.10.5" + checksum: 4b86685de6831cebcbb19f93870bea624afee61124b0a20c49017013987cd129e73a8c4baeca295728f41d21265e1f859d25ef36731b142ca59c655fea94bb1a + languageName: node + linkType: hard + "handlebars@npm:^4.7.7": version: 4.7.7 resolution: "handlebars@npm:4.7.7" @@ -9565,7 +10033,7 @@ __metadata: languageName: node linkType: hard -"he@npm:^1.2.0": +"he@npm:1.2.0, he@npm:^1.2.0": version: 1.2.0 resolution: "he@npm:1.2.0" bin: @@ -9973,7 +10441,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.0, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3": +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.0, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.0, inherits@npm:~2.0.1, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 @@ -10369,7 +10837,7 @@ __metadata: languageName: node linkType: hard -"is-plain-obj@npm:^2.0.0": +"is-plain-obj@npm:^2.0.0, is-plain-obj@npm:^2.1.0": version: 2.1.0 resolution: "is-plain-obj@npm:2.1.0" checksum: cec9100678b0a9fe0248a81743041ed990c2d4c99f893d935545cfbc42876cbe86d207f3b895700c690ad2fa520e568c44afc1605044b535a7820c1d40e38daa @@ -11156,26 +11624,26 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^3.13.1": - version: 3.14.1 - resolution: "js-yaml@npm:3.14.1" +"js-yaml@npm:4.1.0, js-yaml@npm:^4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" dependencies: - argparse: ^1.0.7 - esprima: ^4.0.0 + argparse: ^2.0.1 bin: js-yaml: bin/js-yaml.js - checksum: bef146085f472d44dee30ec34e5cf36bf89164f5d585435a3d3da89e52622dff0b188a580e4ad091c3341889e14cb88cac6e4deb16dc5b1e9623bb0601fc255c + checksum: c7830dfd456c3ef2c6e355cc5a92e6700ceafa1d14bba54497b34a99f0376cecbb3e9ac14d3e5849b426d5a5140709a66237a8c991c675431271c4ce5504151a languageName: node linkType: hard -"js-yaml@npm:^4.1.0": - version: 4.1.0 - resolution: "js-yaml@npm:4.1.0" +"js-yaml@npm:^3.13.1": + version: 3.14.1 + resolution: "js-yaml@npm:3.14.1" dependencies: - argparse: ^2.0.1 + argparse: ^1.0.7 + esprima: ^4.0.0 bin: js-yaml: bin/js-yaml.js - checksum: c7830dfd456c3ef2c6e355cc5a92e6700ceafa1d14bba54497b34a99f0376cecbb3e9ac14d3e5849b426d5a5140709a66237a8c991c675431271c4ce5504151a + checksum: bef146085f472d44dee30ec34e5cf36bf89164f5d585435a3d3da89e52622dff0b188a580e4ad091c3341889e14cb88cac6e4deb16dc5b1e9623bb0601fc255c languageName: node linkType: hard @@ -11480,6 +11948,13 @@ __metadata: languageName: node linkType: hard +"listenercount@npm:~1.0.1": + version: 1.0.1 + resolution: "listenercount@npm:1.0.1" + checksum: 0f1c9077cdaf2ebc16473c7d72eb7de6d983898ca42500f03da63c3914b6b312dd5f7a90d2657691ea25adf3fe0ac5a43226e8b2c673fd73415ed038041f4757 + languageName: node + linkType: hard + "listr2@npm:^3.2.2": version: 3.14.0 resolution: "listr2@npm:3.14.0" @@ -11697,7 +12172,7 @@ __metadata: languageName: node linkType: hard -"log-symbols@npm:^4.0.0": +"log-symbols@npm:4.1.0, log-symbols@npm:^4.0.0": version: 4.1.0 resolution: "log-symbols@npm:4.1.0" dependencies: @@ -12064,7 +12539,7 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4": +"micromatch@npm:^4.0.0, micromatch@npm:^4.0.2, micromatch@npm:^4.0.4": version: 4.0.4 resolution: "micromatch@npm:4.0.4" dependencies: @@ -12170,12 +12645,21 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:3.0.4": + version: 3.0.4 + resolution: "minimatch@npm:3.0.4" + dependencies: + brace-expansion: ^1.1.7 + checksum: 66ac295f8a7b59788000ea3749938b0970344c841750abd96694f80269b926ebcafad3deeb3f1da2522978b119e6ae3a5869b63b13a7859a456b3408bd18a078 + languageName: node + linkType: hard + "minimatch@npm:^3.0.2, minimatch@npm:^3.0.4": - version: 3.0.5 - resolution: "minimatch@npm:3.0.5" + version: 3.1.1 + resolution: "minimatch@npm:3.1.1" dependencies: brace-expansion: ^1.1.7 - checksum: a3b84b426eafca947741b864502cee02860c4e7b145de11ad98775cfcf3066fef422583bc0ffce0952ddf4750c1ccf4220b1556430d4ce10139f66247d87d69e + checksum: e9e3772e4ea06ea3a888d39bc7690d3c812ee7e5a70c2d2f568ccadac0249a027f865589d19ad03ed937e6ca3b4ad35f85411db9670f7877d8fc2ed452f1cd37 languageName: node linkType: hard @@ -12284,7 +12768,7 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.3": +"mkdirp@npm:>=0.5 0, mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.3": version: 0.5.5 resolution: "mkdirp@npm:0.5.5" dependencies: @@ -12304,6 +12788,41 @@ __metadata: languageName: node linkType: hard +"mocha@npm:^9.1.3": + version: 9.2.0 + resolution: "mocha@npm:9.2.0" + dependencies: + "@ungap/promise-all-settled": 1.1.2 + ansi-colors: 4.1.1 + browser-stdout: 1.3.1 + chokidar: 3.5.3 + debug: 4.3.3 + diff: 5.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 7.2.0 + growl: 1.10.5 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 3.0.4 + ms: 2.1.3 + nanoid: 3.2.0 + serialize-javascript: 6.0.0 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + which: 2.0.2 + workerpool: 6.2.0 + yargs: 16.2.0 + yargs-parser: 20.2.4 + yargs-unparser: 2.0.0 + bin: + _mocha: bin/_mocha + mocha: bin/mocha + checksum: 49efc4724cf17087c7e107bc8f6890db24525e6dcc153b801da58de3c2a2f940e22f7600ef195b8ac62a0dfd7baee5cf289fc4641a6b1fdf8bc9c819efc1a8ba + languageName: node + linkType: hard + "morgan@npm:^1.9.1": version: 1.10.0 resolution: "morgan@npm:1.10.0" @@ -12368,7 +12887,7 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.2.0": +"nanoid@npm:3.2.0": version: 3.2.0 resolution: "nanoid@npm:3.2.0" bin: @@ -12377,6 +12896,15 @@ __metadata: languageName: node linkType: hard +"nanoid@npm:^3.2.0": + version: 3.3.0 + resolution: "nanoid@npm:3.3.0" + bin: + nanoid: bin/nanoid.cjs + checksum: 183d7da5c910a717a6058c7d4485d69de6f50fe3eb903830fa965430c7bbd516d70b9eb523a25cf32550bebe835a7adf080b6059808d50c9a8895fa9204e7499 + languageName: node + linkType: hard + "nanomatch@npm:^1.2.9": version: 1.2.13 resolution: "nanomatch@npm:1.2.13" @@ -14378,6 +14906,15 @@ __metadata: languageName: node linkType: hard +"rechoir@npm:^0.7.0": + version: 0.7.1 + resolution: "rechoir@npm:0.7.1" + dependencies: + resolve: ^1.9.0 + checksum: 2a04aab4e28c05fcd6ee6768446bc8b859d8f108e71fc7f5bcbc5ef25e53330ce2c11d10f82a24591a2df4c49c4f61feabe1fd11f844c66feedd4cd7bb61146a + languageName: node + linkType: hard + "redent@npm:^1.0.0": version: 1.0.0 resolution: "redent@npm:1.0.0" @@ -14458,7 +14995,7 @@ __metadata: languageName: node linkType: hard -"regexpp@npm:^3.1.0": +"regexpp@npm:^3.1.0, regexpp@npm:^3.2.0": version: 3.2.0 resolution: "regexpp@npm:3.2.0" checksum: a78dc5c7158ad9ddcfe01aa9144f46e192ddbfa7b263895a70a5c6c73edd9ce85faf7c0430e59ac38839e1734e275b9c3de5c57ee3ab6edc0e0b1bdebefccef8 @@ -14668,7 +15205,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.10.0, resolve@npm:^1.12.0, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.0, resolve@npm:^1.3.2": +"resolve@npm:^1.10.0, resolve@npm:^1.12.0, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.0, resolve@npm:^1.3.2, resolve@npm:^1.9.0": version: 1.22.0 resolution: "resolve@npm:1.22.0" dependencies: @@ -14691,7 +15228,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.12.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.0#~builtin, resolve@patch:resolve@^1.3.2#~builtin": +"resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.12.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.0#~builtin, resolve@patch:resolve@^1.3.2#~builtin, resolve@patch:resolve@^1.9.0#~builtin": version: 1.22.0 resolution: "resolve@patch:resolve@npm%3A1.22.0#~builtin::version=1.22.0&hash=07638b" dependencies: @@ -14752,7 +15289,7 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^2.2.8, rimraf@npm:^2.5.4, rimraf@npm:^2.6.3": +"rimraf@npm:2, rimraf@npm:^2.2.8, rimraf@npm:^2.5.4, rimraf@npm:^2.6.3": version: 2.7.1 resolution: "rimraf@npm:2.7.1" dependencies: @@ -15055,6 +15592,15 @@ __metadata: languageName: node linkType: hard +"serialize-javascript@npm:6.0.0, serialize-javascript@npm:^6.0.0": + version: 6.0.0 + resolution: "serialize-javascript@npm:6.0.0" + dependencies: + randombytes: ^2.1.0 + checksum: 56f90b562a1bdc92e55afb3e657c6397c01a902c588c0fe3d4c490efdcc97dcd2a3074ba12df9e94630f33a5ce5b76a74784a7041294628a6f4306e0ec84bf93 + languageName: node + linkType: hard + "serialize-javascript@npm:^4.0.0": version: 4.0.0 resolution: "serialize-javascript@npm:4.0.0" @@ -15073,15 +15619,6 @@ __metadata: languageName: node linkType: hard -"serialize-javascript@npm:^6.0.0": - version: 6.0.0 - resolution: "serialize-javascript@npm:6.0.0" - dependencies: - randombytes: ^2.1.0 - checksum: 56f90b562a1bdc92e55afb3e657c6397c01a902c588c0fe3d4c490efdcc97dcd2a3074ba12df9e94630f33a5ce5b76a74784a7041294628a6f4306e0ec84bf93 - languageName: node - linkType: hard - "serve-favicon@npm:^2.5.0": version: 2.5.0 resolution: "serve-favicon@npm:2.5.0" @@ -15141,7 +15678,7 @@ __metadata: languageName: node linkType: hard -"setimmediate@npm:^1.0.4": +"setimmediate@npm:^1.0.4, setimmediate@npm:~1.0.4": version: 1.0.5 resolution: "setimmediate@npm:1.0.5" checksum: c9a6f2c5b51a2dabdc0247db9c46460152ffc62ee139f3157440bd48e7c59425093f42719ac1d7931f054f153e2d26cf37dfeb8da17a794a58198a2705e527fd @@ -15513,9 +16050,9 @@ __metadata: linkType: hard "stackframe@npm:^1.1.1": - version: 1.2.0 - resolution: "stackframe@npm:1.2.0" - checksum: 37d659bdd574e118a48c445a9a054a2b8dee6d6ad54eb16c51c7dae622c0f4994b9ff4e47d744aa6cfd14c00b477e145f34db3df78771f3e783ce8f357616d00 + version: 1.2.1 + resolution: "stackframe@npm:1.2.1" + checksum: 1a3f281014bb1d2178b7c2ab26d657fb0f83c21d7d34ab33d858fd0b652a035254619fce8601278a2cf22ddb3382af21c4ea29b429806da75f3077fbd5e5bf17 languageName: node linkType: hard @@ -15830,7 +16367,7 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": +"strip-json-comments@npm:3.1.1, strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 @@ -15858,6 +16395,15 @@ __metadata: languageName: node linkType: hard +"supports-color@npm:8.1.1, supports-color@npm:^8.0.0": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: ^4.0.0 + checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 + languageName: node + linkType: hard + "supports-color@npm:^5.3.0": version: 5.5.0 resolution: "supports-color@npm:5.5.0" @@ -15885,15 +16431,6 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^8.0.0": - version: 8.1.1 - resolution: "supports-color@npm:8.1.1" - dependencies: - has-flag: ^4.0.0 - checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 - languageName: node - linkType: hard - "supports-hyperlinks@npm:^2.0.0": version: 2.2.0 resolution: "supports-hyperlinks@npm:2.2.0" @@ -16276,6 +16813,13 @@ __metadata: languageName: node linkType: hard +"traverse@npm:>=0.3.0 <0.4": + version: 0.3.9 + resolution: "traverse@npm:0.3.9" + checksum: 982982e4e249e9bbf063732a41fe5595939892758524bbef5d547c67cdf371b13af72b5434c6a61d88d4bb4351d6dabc6e22d832e0d16bc1bc684ef97a1cc59e + languageName: node + linkType: hard + "tree-kill@npm:^1.2.2": version: 1.2.2 resolution: "tree-kill@npm:1.2.2" @@ -16354,6 +16898,21 @@ __metadata: languageName: node linkType: hard +"ts-loader@npm:^9.2.6": + version: 9.2.6 + resolution: "ts-loader@npm:9.2.6" + dependencies: + chalk: ^4.1.0 + enhanced-resolve: ^5.0.0 + micromatch: ^4.0.0 + semver: ^7.3.4 + peerDependencies: + typescript: "*" + webpack: ^5.0.0 + checksum: 309d8fb6348c0c3a7166d42c1238c585ede00f816155b24217dbca489406a72409395d7954bc5801ddb9ca71c71e7e0b2375dbc342337e0ab1a461944598a7fe + languageName: node + linkType: hard + "ts-morph@npm:^13.0.0": version: 13.0.3 resolution: "ts-morph@npm:13.0.3" @@ -16504,7 +17063,7 @@ __metadata: languageName: node linkType: hard -"typescript@npm:*, typescript@npm:^2.9.2 || ^3.0.0 || ^4.0.0, typescript@npm:^4.3.2, typescript@npm:^4.5.2": +"typescript@npm:*, typescript@npm:^2.9.2 || ^3.0.0 || ^4.0.0, typescript@npm:^4.3.2, typescript@npm:^4.5.2, typescript@npm:^4.5.4": version: 4.5.5 resolution: "typescript@npm:4.5.5" bin: @@ -16514,7 +17073,7 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@*#~builtin, typescript@patch:typescript@^2.9.2 || ^3.0.0 || ^4.0.0#~builtin, typescript@patch:typescript@^4.3.2#~builtin, typescript@patch:typescript@^4.5.2#~builtin": +"typescript@patch:typescript@*#~builtin, typescript@patch:typescript@^2.9.2 || ^3.0.0 || ^4.0.0#~builtin, typescript@patch:typescript@^4.3.2#~builtin, typescript@patch:typescript@^4.5.2#~builtin, typescript@patch:typescript@^4.5.4#~builtin": version: 4.5.5 resolution: "typescript@patch:typescript@npm%3A4.5.5#~builtin::version=4.5.5&hash=493e53" bin: @@ -16804,6 +17363,24 @@ __metadata: languageName: node linkType: hard +"unzipper@npm:^0.10.11": + version: 0.10.11 + resolution: "unzipper@npm:0.10.11" + dependencies: + big-integer: ^1.6.17 + binary: ~0.3.0 + bluebird: ~3.4.1 + buffer-indexof-polyfill: ~1.0.0 + duplexer2: ~0.1.4 + fstream: ^1.0.12 + graceful-fs: ^4.2.2 + listenercount: ~1.0.1 + readable-stream: ~2.3.6 + setimmediate: ~1.0.4 + checksum: 006cd43ec4d6df47d86aa6b15044a606f50cdcd6a3d6f96f64f54ca0b663c09abb221f76edca0e9592511036d37ea094b1d76ce92c5bf10d7c6eb56f0be678f8 + languageName: node + linkType: hard + "upath@npm:^1.1.1, upath@npm:^1.2.0": version: 1.2.0 resolution: "upath@npm:1.2.0" @@ -17028,8 +17605,8 @@ __metadata: linkType: hard "vite@npm:^2.7.4": - version: 2.8.1 - resolution: "vite@npm:2.8.1" + version: 2.8.2 + resolution: "vite@npm:2.8.2" dependencies: esbuild: ^0.14.14 fsevents: ~2.3.2 @@ -17052,7 +17629,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 4ce8acc2dd2a7ca8727511ff575f72de162114402e55e5d081001f05ef1656782cd5611d4f6091c29efb455e72d30967467bad5b6b329bfe5279fbe8d5169d67 + checksum: 2e5ace113e34fbcd335ea9e83292086fb464a0029df5b4547ae89d109de509210bd0027dc2c041f11d24a0af6136ee31e78dd605a1d93fa23e968db5a4e81c7e languageName: node linkType: hard @@ -17177,6 +17754,39 @@ __metadata: languageName: node linkType: hard +"webpack-cli@npm:^4.9.1": + version: 4.9.2 + resolution: "webpack-cli@npm:4.9.2" + dependencies: + "@discoveryjs/json-ext": ^0.5.0 + "@webpack-cli/configtest": ^1.1.1 + "@webpack-cli/info": ^1.4.1 + "@webpack-cli/serve": ^1.6.1 + colorette: ^2.0.14 + commander: ^7.0.0 + execa: ^5.0.0 + fastest-levenshtein: ^1.0.12 + import-local: ^3.0.2 + interpret: ^2.2.0 + rechoir: ^0.7.0 + webpack-merge: ^5.7.3 + peerDependencies: + webpack: 4.x.x || 5.x.x + peerDependenciesMeta: + "@webpack-cli/generators": + optional: true + "@webpack-cli/migrate": + optional: true + webpack-bundle-analyzer: + optional: true + webpack-dev-server: + optional: true + bin: + webpack-cli: bin/cli.js + checksum: ffb4c5d53ab65ce9f1e8efd34fca4cb858ec6afc91ece0d9375094edff2e7615708c8a586991057fd9cc8d37aab0eb0511913b178daac534e51bcf7d3583e61c + languageName: node + linkType: hard + "webpack-dev-middleware@npm:^3.7.3": version: 3.7.3 resolution: "webpack-dev-middleware@npm:3.7.3" @@ -17223,6 +17833,16 @@ __metadata: languageName: node linkType: hard +"webpack-merge@npm:^5.7.3": + version: 5.8.0 + resolution: "webpack-merge@npm:5.8.0" + dependencies: + clone-deep: ^4.0.1 + wildcard: ^2.0.0 + checksum: 88786ab91013f1bd2a683834ff381be81c245a4b0f63304a5103e90f6653f44dab496a0768287f8531761f8ad957d1f9f3ccb2cb55df0de1bd9ee343e079da26 + languageName: node + linkType: hard + "webpack-sources@npm:^1.4.0, webpack-sources@npm:^1.4.1, webpack-sources@npm:^1.4.3": version: 1.4.3 resolution: "webpack-sources@npm:1.4.3" @@ -17287,7 +17907,7 @@ __metadata: languageName: node linkType: hard -"webpack@npm:>=4.43.0 <6.0.0": +"webpack@npm:>=4.43.0 <6.0.0, webpack@npm:^5.66.0": version: 5.68.0 resolution: "webpack@npm:5.68.0" dependencies: @@ -17410,7 +18030,7 @@ __metadata: languageName: node linkType: hard -"which@npm:^2.0.1, which@npm:^2.0.2": +"which@npm:2.0.2, which@npm:^2.0.1, which@npm:^2.0.2": version: 2.0.2 resolution: "which@npm:2.0.2" dependencies: @@ -17439,6 +18059,13 @@ __metadata: languageName: node linkType: hard +"wildcard@npm:^2.0.0": + version: 2.0.0 + resolution: "wildcard@npm:2.0.0" + checksum: 1f4fe4c03dfc492777c60f795bbba597ac78794f1b650d68f398fbee9adb765367c516ebd4220889b6a81e9626e7228bbe0d66237abb311573c2ee1f4902a5ad + languageName: node + linkType: hard + "word-wrap@npm:^1.2.3, word-wrap@npm:~1.2.3": version: 1.2.3 resolution: "word-wrap@npm:1.2.3" @@ -17662,6 +18289,13 @@ __metadata: languageName: node linkType: hard +"workerpool@npm:6.2.0": + version: 6.2.0 + resolution: "workerpool@npm:6.2.0" + checksum: 3493b4f0ef979a23d2c1583d7ef85f62fc9463cc02f82829d3e7e663b517f8ae9707da0249b382e46ac58986deb0ca2232ee1081713741211bda9254b429c9bb + languageName: node + linkType: hard + "wrap-ansi@npm:^5.1.0": version: 5.1.0 resolution: "wrap-ansi@npm:5.1.0" @@ -17814,6 +18448,13 @@ __metadata: languageName: node linkType: hard +"yargs-parser@npm:20.2.4": + version: 20.2.4 + resolution: "yargs-parser@npm:20.2.4" + checksum: d251998a374b2743a20271c2fd752b9fbef24eb881d53a3b99a7caa5e8227fcafd9abf1f345ac5de46435821be25ec12189a11030c12ee6481fef6863ed8b924 + languageName: node + linkType: hard + "yargs-parser@npm:20.x, yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.7": version: 20.2.9 resolution: "yargs-parser@npm:20.2.9" @@ -17831,25 +18472,19 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^13.3.0": - version: 13.3.2 - resolution: "yargs@npm:13.3.2" +"yargs-unparser@npm:2.0.0": + version: 2.0.0 + resolution: "yargs-unparser@npm:2.0.0" dependencies: - cliui: ^5.0.0 - find-up: ^3.0.0 - get-caller-file: ^2.0.1 - require-directory: ^2.1.1 - require-main-filename: ^2.0.0 - set-blocking: ^2.0.0 - string-width: ^3.0.0 - which-module: ^2.0.0 - y18n: ^4.0.0 - yargs-parser: ^13.1.2 - checksum: 75c13e837eb2bb25717957ba58d277e864efc0cca7f945c98bdf6477e6ec2f9be6afa9ed8a876b251a21423500c148d7b91e88dee7adea6029bdec97af1ef3e8 + camelcase: ^6.0.0 + decamelize: ^4.0.0 + flat: ^5.0.2 + is-plain-obj: ^2.1.0 + checksum: 68f9a542c6927c3768c2f16c28f71b19008710abd6b8f8efbac6dcce26bbb68ab6503bed1d5994bdbc2df9a5c87c161110c1dfe04c6a3fe5c6ad1b0e15d9a8a3 languageName: node linkType: hard -"yargs@npm:^16.2.0": +"yargs@npm:16.2.0, yargs@npm:^16.2.0": version: 16.2.0 resolution: "yargs@npm:16.2.0" dependencies: @@ -17864,6 +18499,24 @@ __metadata: languageName: node linkType: hard +"yargs@npm:^13.3.0": + version: 13.3.2 + resolution: "yargs@npm:13.3.2" + dependencies: + cliui: ^5.0.0 + find-up: ^3.0.0 + get-caller-file: ^2.0.1 + require-directory: ^2.1.1 + require-main-filename: ^2.0.0 + set-blocking: ^2.0.0 + string-width: ^3.0.0 + which-module: ^2.0.0 + y18n: ^4.0.0 + yargs-parser: ^13.1.2 + checksum: 75c13e837eb2bb25717957ba58d277e864efc0cca7f945c98bdf6477e6ec2f9be6afa9ed8a876b251a21423500c148d7b91e88dee7adea6029bdec97af1ef3e8 + languageName: node + linkType: hard + "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0"