diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index c01bbd75f6..25fa789321 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -26,9 +26,6 @@ jobs: - name: Set up Node.js uses: ./.github/actions/setup-node - - name: Compile - run: pnpm --color compile - - name: Build run: pnpm --color --filter '!cursorless-org' --filter '!cursorless-org-*' build env: @@ -67,9 +64,6 @@ jobs: - name: Set up Node.js uses: ./.github/actions/setup-node - - name: Compile - run: pnpm --color compile - - name: Build run: pnpm --color --filter '!cursorless-org' --filter '!cursorless-org-*' build env: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c1a152747e..b10656fd73 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -75,9 +75,6 @@ jobs: run: mkdir -p "${{ env.VSCODE_CRASH_DIR }}" "${{ env.VSCODE_LOGS_DIR }}" "${{ env.TEMP_DIR }}" shell: bash - - name: Compile - run: pnpm --color compile - - name: Build run: pnpm --color --filter '!cursorless-org' --filter '!cursorless-org-*' build @@ -105,15 +102,15 @@ jobs: run: pnpm -F @cursorless/test-harness test:talonJs if: runner.os != 'Linux' - - name: Run Cursorless-everywhere-talon tests (Linux) + - name: Run QuickJS tests (Linux) run: xvfb-run -a pnpm -F @cursorless/cursorless-everywhere-talon-e2e test:quickjs if: runner.os == 'Linux' && matrix.app_version == 'stable' - - name: Run Cursorless-everywhere-talon tests (Win,Mac) + - name: Run QuickJS tests (Win,Mac) run: pnpm -F @cursorless/cursorless-everywhere-talon-e2e test:quickjs if: runner.os != 'Linux' - - name: Create vscode dist that can be installed locally + - name: Create VSCode dist that can be installed locally run: pnpm -F @cursorless/cursorless-vscode populate-dist --local-install if: runner.os == 'Linux' && matrix.app_version == 'stable' @@ -163,9 +160,6 @@ jobs: - name: Set up Node.js uses: ./.github/actions/setup-node - - name: Compile - run: pnpm --color compile - - name: Build run: pnpm --color --filter '!cursorless-org' --filter '!cursorless-org-*' build @@ -184,7 +178,7 @@ jobs: NEOVIM_PATH: ${{ steps.vim.outputs.executable }} - name: Run neovim lua tests - uses: ./.github/actions/test-neovim-lua/ + uses: ./.github/actions/test-neovim-lua - name: Run neovim lua lint - uses: ./.github/actions/lint-lua-ls/ + uses: ./.github/actions/lint-lua-ls diff --git a/.vscode/launch.json b/.vscode/launch.json index 5c80886a82..038b22e9cc 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,13 +1,8 @@ -// 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": [ - // VSCode launch configs { - "name": "VSCode: Run", + "name": "Run", "type": "extensionHost", "request": "launch", "env": { @@ -19,14 +14,14 @@ "--profile=cursorlessDevelopment" ], "outFiles": ["${workspaceFolder}/**/out/**/*.js"], - "preLaunchTask": "VSCode: Build extension", + "preLaunchTask": "Build extension", "resolveSourceMapLocations": [ "${workspaceFolder}/**", "!**/node_modules/**" ] }, { - "name": "VSCode: Test", + "name": "Test", "type": "extensionHost", "request": "launch", "env": { @@ -37,17 +32,17 @@ "args": [ "--profile=cursorlessDevelopment", "--extensionDevelopmentPath=${workspaceFolder}/packages/cursorless-vscode/dist", - "--extensionTestsPath=${workspaceFolder}/packages/test-harness/dist/extensionTestsVscode.cjs" + "--extensionTestsPath=${workspaceFolder}/packages/test-harness/out/extensionTestsVscode.cjs" ], "outFiles": ["${workspaceFolder}/**/out/**/*.js"], - "preLaunchTask": "VSCode: Build extension and tests", + "preLaunchTask": "Build extension and tests", "resolveSourceMapLocations": [ "${workspaceFolder}/**", "!**/node_modules/**" ] }, { - "name": "VSCode: Test (subset)", + "name": "Test (subset)", "type": "extensionHost", "request": "launch", "env": { @@ -59,17 +54,17 @@ "args": [ "--profile=cursorlessDevelopment", "--extensionDevelopmentPath=${workspaceFolder}/packages/cursorless-vscode/dist", - "--extensionTestsPath=${workspaceFolder}/packages/test-harness/dist/extensionTestsVscode.cjs" + "--extensionTestsPath=${workspaceFolder}/packages/test-harness/out/extensionTestsVscode.cjs" ], "outFiles": ["${workspaceFolder}/**/out/**/*.js"], - "preLaunchTask": "VSCode: Prepare test subset", + "preLaunchTask": "Build extension and tests (subset)", "resolveSourceMapLocations": [ "${workspaceFolder}/**", "!**/node_modules/**" ] }, { - "name": "VSCode: Update test fixtures", + "name": "Update test fixtures", "type": "extensionHost", "request": "launch", "env": { @@ -80,17 +75,17 @@ "args": [ "--profile=cursorlessDevelopment", "--extensionDevelopmentPath=${workspaceFolder}/packages/cursorless-vscode/dist", - "--extensionTestsPath=${workspaceFolder}/packages/test-harness/dist/extensionTestsVscode.cjs" + "--extensionTestsPath=${workspaceFolder}/packages/test-harness/out/extensionTestsVscode.cjs" ], "outFiles": ["${workspaceFolder}/**/out/**/*.js"], - "preLaunchTask": "VSCode: Build extension and tests", + "preLaunchTask": "Build extension and tests", "resolveSourceMapLocations": [ "${workspaceFolder}/**", "!**/node_modules/**" ] }, { - "name": "VSCode: Update test fixtures (subset)", + "name": "Update test fixtures (subset)", "type": "extensionHost", "request": "launch", "env": { @@ -102,145 +97,14 @@ "args": [ "--profile=cursorlessDevelopment", "--extensionDevelopmentPath=${workspaceFolder}/packages/cursorless-vscode/dist", - "--extensionTestsPath=${workspaceFolder}/packages/test-harness/dist/extensionTestsVscode.cjs" + "--extensionTestsPath=${workspaceFolder}/packages/test-harness/out/extensionTestsVscode.cjs" ], "outFiles": ["${workspaceFolder}/**/out/**/*.js"], - "preLaunchTask": "VSCode: Build extension and tests", + "preLaunchTask": "Build extension and tests (subset)", "resolveSourceMapLocations": [ "${workspaceFolder}/**", "!**/node_modules/**" ] - }, - - // Neovim launch configs - { - "name": "Neovim: Run", - "request": "attach", - "continueOnAttach": true, - "skipFiles": ["/**"], - "preLaunchTask": "Neovim: Build extension", - "type": "node" - }, - { - "name": "Neovim: Test", - "request": "attach", - "continueOnAttach": true, - "skipFiles": ["/**"], - "preLaunchTask": "Neovim: Build extension and tests", - "type": "node" - }, - - // Talon launch configs - { - "name": "Talon: Test grammar", - "type": "node", - "request": "launch", - "program": "${workspaceFolder}/packages/test-harness/dist/runTalonTests.cjs", - "env": { - "CURSORLESS_MODE": "test", - "CURSORLESS_LOG_FAILED": "true", - "CURSORLESS_REPO_ROOT": "${workspaceFolder}" - }, - "outFiles": ["${workspaceFolder}/**/out/**/*.js"], - "preLaunchTask": "VSCode: Build extension and tests", - "resolveSourceMapLocations": [ - "${workspaceFolder}/**", - "!**/node_modules/**" - ] - }, - { - "name": "Talon: Test grammar (subset)", - "type": "node", - "request": "launch", - "program": "${workspaceFolder}/packages/test-harness/dist/runTalonTests.cjs", - "env": { - "CURSORLESS_MODE": "test", - "CURSORLESS_RUN_TEST_SUBSET": "true", - "CURSORLESS_REPO_ROOT": "${workspaceFolder}" - }, - "outFiles": ["${workspaceFolder}/**/out/**/*.js"], - "preLaunchTask": "VSCode: Build extension and tests", - "resolveSourceMapLocations": [ - "${workspaceFolder}/**", - "!**/node_modules/**" - ] - }, - - // Talon everywhere/JS launch configs - { - "name": "TalonJS: Test", - "type": "node", - "request": "launch", - "program": "${workspaceFolder}/packages/test-harness/dist/runTalonJsTests.cjs", - "env": { - "CURSORLESS_MODE": "test", - "CURSORLESS_LOG_FAILED": "true", - "CURSORLESS_REPO_ROOT": "${workspaceFolder}" - }, - "outFiles": ["${workspaceFolder}/**/out/**/*.js"], - "preLaunchTask": "VSCode: Build extension and tests", - "resolveSourceMapLocations": [ - "${workspaceFolder}/**", - "!**/node_modules/**" - ] - }, - { - "name": "TalonJS: Test (subset)", - "type": "node", - "request": "launch", - "program": "${workspaceFolder}/packages/test-harness/dist/runTalonJsTests.cjs", - "env": { - "CURSORLESS_MODE": "test", - "CURSORLESS_RUN_TEST_SUBSET": "true", - "CURSORLESS_REPO_ROOT": "${workspaceFolder}" - }, - "outFiles": ["${workspaceFolder}/**/out/**/*.js"], - "preLaunchTask": "VSCode: Build extension and tests", - "resolveSourceMapLocations": [ - "${workspaceFolder}/**", - "!**/node_modules/**" - ] - }, - - // Docusaurus launch configs - { - "name": "Docusaurus: Run", - "type": "node", - "request": "launch", - "env": { - "CURSORLESS_REPO_ROOT": "${workspaceFolder}" - }, - "cwd": "${workspaceFolder}/packages/cursorless-org-docs", - "runtimeExecutable": "pnpm", - "runtimeArgs": ["start"], - "resolveSourceMapLocations": [ - "${workspaceFolder}/**", - "!**/node_modules/**" - ] - }, - { - "name": "Docusaurus: Build", - "type": "node", - "request": "launch", - "env": { - "CURSORLESS_REPO_ROOT": "${workspaceFolder}" - }, - "cwd": "${workspaceFolder}/packages/cursorless-org-docs", - "runtimeExecutable": "pnpm", - "runtimeArgs": ["build"], - "resolveSourceMapLocations": [ - "${workspaceFolder}/**", - "!**/node_modules/**" - ] - }, - - // cursorless.org launch configs - { - "name": "cursorless.org: Run client-side", - "type": "chrome", - "request": "launch", - "url": "http://localhost:3000", - "webRoot": "${workspaceFolder}/packages/cursorless-org" } ] } diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 57c9c596cb..a05ce5abf7 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -1,332 +1,62 @@ -// See https://go.microsoft.com/fwlink/?LinkId=733558 -// for the documentation about the tasks.json format { "version": "2.0.0", "tasks": [ - // Generic build tasks + // Launch tasks { - "label": "TSBuild", + "label": "Build extension", "type": "npm", - "script": "compile", - "problemMatcher": "$tsc", + "script": "dev", + "path": "packages/cursorless-vscode", + "group": "build", "presentation": { "reveal": "silent" - }, - "group": "build" + } }, { - "label": "Build test harness", - "type": "npm", - "script": "build", - "path": "packages/test-harness", - "presentation": { - "reveal": "silent" - }, + "label": "Build extension and tests", + "dependsOn": ["Build extension", "Build test harness"], "group": "build" }, { - "label": "Generate grammar", - "type": "npm", - "script": "generate-grammar", - "presentation": { - "reveal": "silent" - }, - "group": "build" + "label": "Build extension and tests (subset)", + "group": "test", + "dependsOrder": "sequence", + "dependsOn": [ + "Ensure test subset file exists", + "Build extension and tests" + ] }, - // Generic watch tasks - { - "label": "watch", - "dependsOn": ["Watch esbuild", "Watch typescript"], - "group": "build" - }, - { - "type": "npm", - "script": "watch:esbuild", - "label": "Watch esbuild", - "isBackground": true, - "presentation": { - "reveal": "never" - }, - "group": "build" - }, + // Helper tasks { + "label": "Build test harness", "type": "npm", - "script": "watch:tsc", - "label": "Watch typescript", - "problemMatcher": "$tsc-watch", - "isBackground": true, + "script": "build", + "path": "packages/test-harness", "presentation": { - "reveal": "never" + "reveal": "silent" }, "group": "build" }, - - // Generic test tasks { "label": "Ensure test subset file exists", "type": "npm", "script": "generate-test-subset-file-strict", "path": "packages/test-harness", + "group": "test", "presentation": { "reveal": "silent" - }, - "group": "test" + } }, { "label": "Generate test subset file", "type": "npm", "script": "generate-test-subset-file", "path": "packages/test-harness", - "presentation": { - "reveal": "silent" - }, "group": "none", - "problemMatcher": [] - }, - - // VSCode tasks - { - "label": "VSCode: Build extension", - "dependsOn": ["VSCode: Populate dist", "VSCode: ESBuild"], - "group": "build" - }, - { - "label": "VSCode: Build extension and tests", - "dependsOn": ["VSCode: Build extension", "TSBuild", "Build test harness"], - "group": { - "kind": "build", - "isDefault": true - } - }, - { - "label": "VSCode: ESBuild", - "type": "npm", - "script": "esbuild", - "path": "packages/cursorless-vscode", - "dependsOn": ["Generate grammar"], "presentation": { "reveal": "silent" - }, - "group": "build" - }, - { - "label": "VSCode: Populate dist", - "type": "npm", - "script": "populate-dist", - "path": "packages/cursorless-vscode", - "dependsOn": ["VSCode: Build tutorial webview"], - "presentation": { - "reveal": "silent" - }, - "group": "build" - }, - { - "label": "VSCode: Build tutorial webview", - "type": "npm", - "script": "build:dev", - "path": "packages/cursorless-vscode-tutorial-webview", - "presentation": { - "reveal": "silent" - }, - "group": "build" - }, - { - "label": "VSCode: Watch tutorial", - "type": "npm", - "script": "watch", - "isBackground": true, - "presentation": { - "reveal": "never" - }, - "path": "packages/cursorless-vscode-tutorial-webview", - "group": "build" - }, - { - "label": "VSCode: Prepare test subset", - "dependsOn": [ - "Ensure test subset file exists", - "VSCode: Build extension and tests" - ], - "dependsOrder": "sequence", - "group": "test" - }, - - // Neovim tasks - { - "label": "Neovim: Build extension", - "dependsOn": [ - "Neovim: Launch neovim", - "Neovim: ESBuild", - "Neovim: Populate dist" - ], - "group": "build" - }, - { - "label": "Neovim: Build extension and tests", - "dependsOn": [ - "Neovim: Launch neovim (test)", - "Neovim: ESBuild", - "Neovim: Populate dist", - "TSBuild", - "Build test harness" - ], - "group": "build" - }, - { - "label": "Neovim: ESBuild", - "type": "npm", - "script": "esbuild", - "path": "packages/cursorless-neovim", - "dependsOn": ["Generate grammar"], - "presentation": { - "reveal": "silent" - }, - "group": "build" - }, - { - "label": "Neovim: Populate dist", - "type": "npm", - "script": "populate-dist", - "path": "packages/cursorless-neovim", - "presentation": { - "reveal": "silent" - }, - "options": { - "env": { - "CURSORLESS_REPO_ROOT": "${workspaceFolder}" - } - }, - "group": "build" - }, - { - "label": "Neovim: Launch neovim", - "type": "process", - "command": "packages/cursorless-neovim/scripts/linux-terminal.sh", - "args": [ - "${workspaceFolder}/packages/cursorless-neovim/scripts/debug-neovim.sh ${workspaceFolder} development" - ], - "osx": { - "command": "osascript", - "args": [ - "-e", - "tell app \"Terminal\" to do script \"${workspaceFolder}/packages/cursorless-neovim/scripts/debug-neovim.sh ${workspaceFolder} development\" activate" - ] - }, - "windows": { - "command": "powershell", - "args": [ - "(New-Object -ComObject WScript.Shell).Run(\"\"\"${workspaceFolder}/packages/cursorless-neovim/scripts/debug-neovim.bat\"\"\", 1, $false)" - ] - }, - "group": "build", - "presentation": { - "reveal": "silent" - }, - "options": { - "env": { - "CURSORLESS_REPO_ROOT": "${workspaceFolder}", - "NVIM_NODE_HOST_DEBUG": "1", - "NVIM_NODE_LOG_FILE": "${workspaceFolder}/packages/cursorless-neovim/out/nvim_node.log", - "NVIM_NODE_LOG_LEVEL": "info", - "CURSORLESS_MODE": "development" - } - } - }, - { - "label": "Neovim: Launch neovim (test)", - "type": "process", - "command": "packages/cursorless-neovim/scripts/linux-terminal.sh", - "args": [ - "${workspaceFolder}/packages/cursorless-neovim/scripts/debug-neovim.sh ${workspaceFolder} test" - ], - "osx": { - "command": "osascript", - "args": [ - "-e", - "tell app \"Terminal\" to do script \"${workspaceFolder}/packages/cursorless-neovim/scripts/debug-neovim.sh ${workspaceFolder} test\" activate" - ] - }, - "windows": { - "command": "powershell", - "args": [ - "(New-Object -ComObject WScript.Shell).Run(\"\"\"${workspaceFolder}/packages/cursorless-neovim/scripts/debug-neovim.bat\"\"\", 1, $false)" - ] - }, - "group": "build", - "presentation": { - "reveal": "silent" - }, - "options": { - "env": { - "CURSORLESS_REPO_ROOT": "${workspaceFolder}", - "NVIM_NODE_HOST_DEBUG": "1", - "NVIM_NODE_LOG_FILE": "${workspaceFolder}/packages/cursorless-neovim/out/nvim_node.log", - "NVIM_NODE_LOG_LEVEL": "info", - "CURSORLESS_MODE": "test" - } - } - }, - { - "label": "Neovim: Show logs", - "type": "shell", - "command": "packages/cursorless-neovim/scripts/show-logs.sh", - "problemMatcher": [], - "isBackground": true, - "presentation": { - "echo": false, - "reveal": "always", - "focus": false, - "panel": "dedicated", - "showReuseMessage": false, - "clear": true - }, - "options": { - "env": { - "CURSORLESS_REPO_ROOT": "${workspaceFolder}" - } } - // NOTE: We don't have a way on Windows atm due to command with argument inside Run() not working - // so we need to show logs outside of vscode (see #2454) - }, - { - "label": "Neovim: Launch neovim (lua test)", - "type": "shell", - "command": "busted --run unit", - "options": { - "cwd": "cursorless.nvim" - } - }, - - // cursorless.org - { - "label": "Serve cursorless.org", - "type": "shell", - "command": "nx serve cursorless-org", - "options": { - "cwd": "cursorless-nx" - }, - "problemMatcher": [] - }, - { - "label": "Install local", - "type": "npm", - "path": "packages/cursorless-vscode", - "script": "install-local", - "problemMatcher": [] - }, - { - "label": "Uninstall local", - "type": "npm", - "path": "packages/cursorless-vscode", - "script": "uninstall-local", - "problemMatcher": [] - }, - { - "label": "Run pre commit", - "type": "shell", - "command": "pre-commit run", - "presentation": {} } ] } diff --git a/AGENTS.md b/AGENTS.md index f3bd40d041..3762dfacdb 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -15,9 +15,8 @@ ## Build and Test -- Always run lint and compile when making changes: +- Always run lint when making changes: - `pnpm run lint` - - `pnpm run compile` - Tests can be run with: - `pnpm test` diff --git a/cursorless.nvim/node/command-server/package.json b/cursorless.nvim/node/command-server/package.json index 59a89c4ff7..35482431f7 100644 --- a/cursorless.nvim/node/command-server/package.json +++ b/cursorless.nvim/node/command-server/package.json @@ -17,7 +17,7 @@ "@types/vscode": "^1.98.0", "@typescript-eslint/eslint-plugin": "^8.32.1", "@typescript-eslint/parser": "^8.32.1", - "esbuild": "^0.27.0", + "esbuild": "^0.27.4", "eslint": "^10.0.0", "glob": "^13.0.0", "mocha": "^8.1.3", diff --git a/package.json b/package.json index d7a6f92156..4d26c2eb9e 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "scripts": { "build": "pnpm -r build", "clean": "pnpm -r clean", - "compile": "tsc --build && pnpm -r compile:esbuild", + "typecheck": "pnpm -r typecheck", "fix:meta": "pnpm run meta-updater && pnpm -r exec prettier --write tsconfig.json package.json", "fix:syncpack": "syncpack fix", "fix:eslint": "pnpm lint:ts --fix", @@ -23,20 +23,16 @@ "lint:ts": "eslint packages", "lint:prettier": "prettier --check .", "lint:style": "stylelint '**/*.{css,scss}'", - "lint": "pnpm run lint:meta && pnpm run lint:syncpack && pnpm run lint:ts && pnpm run lint:style", + "lint": "pnpm run typecheck && pnpm run lint:meta && pnpm run lint:syncpack && pnpm run lint:ts && pnpm run lint:style", "init-vscode-sandbox": "pnpm -F @cursorless/cursorless-vscode init-launch-sandbox", - "meta-updater": "env NODE_OPTIONS='--import=tsx --conditions=cursorless:bundler' meta-updater", + "meta-updater": "env NODE_OPTIONS=--import=tsx meta-updater", "preinstall": "npx only-allow pnpm", - "test-compile": "tsc --build", "test": "pnpm -r test", "test:subset": "pnpm -r test:subset", "test:update": "pnpm -r test:update", "test:update:subset": "pnpm -r test:update:subset", "generate-grammar": "pnpm -r generate-grammar", - "transform-recorded-tests": "pnpm exec ./packages/common/scripts/my-ts-node.js ./packages/cursorless-engine/src/scripts/transformRecordedTests/index.ts", - "watch": "pnpm run -w --parallel '/^watch:.*/'", - "watch:esbuild": "pnpm run -r --parallel watch:esbuild", - "watch:tsc": "tsc --build --watch" + "transform-recorded-tests": "pnpm exec ./packages/common/scripts/c-tsx.js ./packages/cursorless-engine/src/scripts/transformRecordedTests/index.ts" }, "devDependencies": { "@eslint/config-helpers": "^0.5.3", @@ -59,7 +55,7 @@ "syncpack": "^14.2.0", "tsx": "^4.21.0", "typescript": "^5.9.3", - "typescript-eslint": "^8.57.0" + "typescript-eslint": "^8.57.1" }, "pnpm": { "patchedDependencies": { diff --git a/packages/cheatsheet-local/README.md b/packages/cheatsheet-local/README.md index 9f3373ffb1..4a72cf7c4e 100644 --- a/packages/cheatsheet-local/README.md +++ b/packages/cheatsheet-local/README.md @@ -2,16 +2,16 @@ This app just bundles up the cheatsheet into a single file to be used when the user says `"cursorless cheatsheet"`. The file inlines all css and js so that it can be opened as a single file by the end user. During actual production use, Talon will send the user's custom spoken forms to the Cursorless engine, which will [inject them](../cursorless-engine/src/core/Cheatsheet.ts) into the cheatsheet using a global variable. -Note that there is no development server for this app. It is just a build step. If you want a live development environment for the cheatsheet, you should use the cheatsheet page in [the `cursorless-org` package (our webpage defined in Next.js)](../cursorless-org). +Note that there is no development server for this app. It is just a bundle step. If you want a live development environment for the cheatsheet, you should use the cheatsheet page in [the `cursorless-org` package](../cursorless-org). ## Tasks -### build +### bundle Builds the cheatsheet into a single file for deployment. -``` -pnpm run build +```bash +pnpm bundle:prod ``` -The output will be in `dist/index.html`. Note that this file includes a bit of fake data so that it can be opened to check that it is functioning, but in production it will be replaced with the real data (see above). +The output will be in `out/index.html`. Note that this file includes a bit of fake data so that it can be opened to check that it is functioning, but in production it will be replaced with the real data (see above). diff --git a/packages/cheatsheet-local/jest.config.ts b/packages/cheatsheet-local/jest.config.ts index 0997b3e91f..af74c7a652 100644 --- a/packages/cheatsheet-local/jest.config.ts +++ b/packages/cheatsheet-local/jest.config.ts @@ -1,12 +1,11 @@ import type { Config } from "jest"; -import { preactModuleNameMapper } from "@cursorless/common"; +import { preactModuleNameMapper } from "@cursorless/common/jest"; const config: Config = { preset: "ts-jest", testEnvironment: "jsdom", moduleNameMapper: { ...preactModuleNameMapper, - "^@cursorless/cheatsheet$": "/../cheatsheet/src/index.ts", "\\.(css|scss)$": "/src/test/styleMock.ts", }, }; diff --git a/packages/cheatsheet-local/package.json b/packages/cheatsheet-local/package.json index 518abb7eee..efb43d28c7 100644 --- a/packages/cheatsheet-local/package.json +++ b/packages/cheatsheet-local/package.json @@ -8,20 +8,16 @@ "main": "./out/index.js", "types": "./out/index.d.ts", "exports": { - ".": { - "cursorless:bundler": "./src/index.ts", - "default": "./out/index.js" - } + ".": "./out/index.js" }, "scripts": { + "typecheck": "tsc", + "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", "test": "jest", - "compile": "tsc --build", - "watch": "tsc --build --watch", - "serve": "vite serve", - "preview": "vite preview", - "build": "vite build", - "build:dev": "vite build --mode development", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" + "dev": "env NODE_OPTIONS=--import=tsx vite serve", + "bundle:prod": "env NODE_OPTIONS=--import=tsx vite build", + "bundle:dev": "env NODE_OPTIONS=--import=tsx vite build --mode development", + "bundle:watch": "env NODE_OPTIONS=--import=tsx vite build --mode development --watch" }, "dependencies": { "@cursorless/cheatsheet": "workspace:*", diff --git a/packages/cheatsheet-local/tsconfig.json b/packages/cheatsheet-local/tsconfig.json index 1af66ad93a..dde103acad 100644 --- a/packages/cheatsheet-local/tsconfig.json +++ b/packages/cheatsheet-local/tsconfig.json @@ -1,30 +1,12 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../tsconfig.web.json", "compilerOptions": { - "target": "es2022", - "lib": ["dom", "es2022"], - "jsx": "react-jsx", - "jsxImportSource": "preact", - "allowSyntheticDefaultImports": true, - "skipLibCheck": true, - "esModuleInterop": true, - "allowJs": true + "skipLibCheck": true }, - "ts-node": { - "esm": true - }, - "references": [ - { - "path": "../cheatsheet" - }, - { - "path": "../common" - } - ], "include": [ "src/**/*.ts", - "src/**/*.json", "src/**/*.tsx", + "src/**/*.json", "../../typings/**/*.d.ts" ] } diff --git a/packages/cheatsheet-local/vite.config.ts b/packages/cheatsheet-local/vite.config.ts index 0f535e6b03..edf7ba61d2 100644 --- a/packages/cheatsheet-local/vite.config.ts +++ b/packages/cheatsheet-local/vite.config.ts @@ -1,5 +1,5 @@ -import { defaultCheatsheetInfo } from "@cursorless/cheatsheet"; -import { viteHtmlParams, vitePreactAlias } from "@cursorless/common"; +import defaultCheatsheetInfo from "@cursorless/cheatsheet/defaultSpokenForms"; +import { viteHtmlParams, vitePreactAlias } from "@cursorless/common/vite"; import { defineConfig, type UserConfig } from "vite"; import purgeCss from "vite-plugin-purgecss"; import { viteSingleFile } from "vite-plugin-singlefile"; @@ -7,11 +7,10 @@ import { viteSingleFile } from "vite-plugin-singlefile"; export default defineConfig((): UserConfig => { return { build: { - outDir: "dist", + outDir: "out", }, resolve: { - conditions: ["cursorless:bundler"], alias: vitePreactAlias, }, diff --git a/packages/cheatsheet/jest.config.ts b/packages/cheatsheet/jest.config.ts index 9bc59a449c..af74c7a652 100644 --- a/packages/cheatsheet/jest.config.ts +++ b/packages/cheatsheet/jest.config.ts @@ -1,5 +1,5 @@ import type { Config } from "jest"; -import { preactModuleNameMapper } from "@cursorless/common"; +import { preactModuleNameMapper } from "@cursorless/common/jest"; const config: Config = { preset: "ts-jest", diff --git a/packages/cheatsheet/package.json b/packages/cheatsheet/package.json index 077cdb8cdd..3611f73e41 100644 --- a/packages/cheatsheet/package.json +++ b/packages/cheatsheet/package.json @@ -4,26 +4,17 @@ "description": "Core cheatsheet Preact component", "license": "MIT", "type": "module", - "main": "./out/index.js", - "types": "./out/index.d.ts", "exports": { - ".": { - "cursorless:bundler": "./src/index.ts", - "default": "./out/index.js" - } + ".": "./src/index.ts", + "./defaultSpokenForms": "./src/lib/sampleSpokenFormInfos/defaults.json" }, "sideEffects": [ "*.css" ], "scripts": { - "test": "jest", + "typecheck": "tsc", "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", - "compile:tsc": "tsc --build", - "compile:esbuild": "bash ../../scripts/compile-esbuild.sh", - "compile": "pnpm compile:tsc && pnpm compile:esbuild", - "watch:tsc": "pnpm compile:tsc --watch", - "watch:esbuild": "pnpm compile:esbuild --watch", - "watch": "pnpm run --filter @cursorless/cheatsheet --parallel '/^watch:.*/'" + "test": "jest" }, "dependencies": { "@cursorless/common": "workspace:*", diff --git a/packages/cheatsheet/src/index.ts b/packages/cheatsheet/src/index.ts index c35e9fb1a5..3a37b41635 100644 --- a/packages/cheatsheet/src/index.ts +++ b/packages/cheatsheet/src/index.ts @@ -1,4 +1,3 @@ export * from "./lib/Cheatsheet"; export * from "./lib/cheatsheet.types"; export * from "./lib/utils/fakeCheatsheetInfo"; -export { default as defaultCheatsheetInfo } from "./lib/sampleSpokenFormInfos/defaults.json"; diff --git a/packages/cheatsheet/tsconfig.json b/packages/cheatsheet/tsconfig.json index 8a0fde570c..dde103acad 100644 --- a/packages/cheatsheet/tsconfig.json +++ b/packages/cheatsheet/tsconfig.json @@ -1,22 +1,12 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../tsconfig.web.json", "compilerOptions": { - "target": "es2022", - "lib": ["dom", "es2022"], - "jsx": "react-jsx", - "jsxImportSource": "preact", - "esModuleInterop": true, "skipLibCheck": true }, - "references": [ - { - "path": "../common" - } - ], "include": [ "src/**/*.ts", - "src/**/*.json", "src/**/*.tsx", + "src/**/*.json", "../../typings/**/*.d.ts" ] } diff --git a/packages/common/package.json b/packages/common/package.json index c13a005a9c..e04c16b265 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -4,25 +4,17 @@ "description": "Common utilities for use anywhere in our codebase", "license": "MIT", "type": "module", - "main": "./out/index.js", - "types": "./out/index.d.ts", "bin": { - "my-ts-node": "./scripts/my-ts-node.js" + "c-tsx": "./scripts/c-tsx.js" }, "exports": { - ".": { - "cursorless:bundler": "./src/index.ts", - "default": "./out/index.js" - } + ".": "./src/index.ts", + "./jest": "./src/tooling/jest.ts", + "./vite": "./src/tooling/vite.ts" }, "scripts": { - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", - "compile:tsc": "tsc --build", - "compile:esbuild": "bash ../../scripts/compile-esbuild.sh", - "compile": "pnpm compile:tsc && pnpm compile:esbuild", - "watch:tsc": "pnpm compile:tsc --watch", - "watch:esbuild": "pnpm compile:esbuild --watch", - "watch": "pnpm run --filter @cursorless/common --parallel '/^watch:.*/'" + "typecheck": "tsc", + "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" }, "dependencies": { "itertools": "^2.6.0", diff --git a/packages/common/scripts/my-ts-node.js b/packages/common/scripts/c-tsx.js similarity index 86% rename from packages/common/scripts/my-ts-node.js rename to packages/common/scripts/c-tsx.js index 5f0b65bf39..93783e56b1 100755 --- a/packages/common/scripts/my-ts-node.js +++ b/packages/common/scripts/c-tsx.js @@ -1,5 +1,4 @@ #!/usr/bin/env node -// @ts-check /* global process, console */ // This script runs a TypeScript file using Node.js by first bundling it with @@ -36,7 +35,7 @@ function createTempDirectory(baseDir) { const tempDir = join( baseDir, "out", - "my-ts-node-tmp", + "c-tsx-tmp", randomBytes(16).toString("hex"), ); @@ -62,7 +61,7 @@ async function main() { // Check if the input file is specified if (args.length === 0) { console.error("Error: No input file specified."); - console.error("Usage: my-ts-node [script args...]"); + console.error("Usage: c-tsx [script args...]"); process.exit(1); } @@ -91,19 +90,24 @@ async function main() { external: ["./reporters/parallel-buffered", "./worker.js"], }); + const scriptDirectory = dirname(fileURLToPath(import.meta.url)); + const repoRoot = join(scriptDirectory, "..", "..", ".."); + const nodeProcess = runCommand( process.execPath, ["--enable-source-maps", outFile, ...childArgs], { - ["CURSORLESS_REPO_ROOT"]: join( - dirname(fileURLToPath(import.meta.url)), - "..", - "..", - "..", - ), + ["CURSORLESS_REPO_ROOT"]: repoRoot, }, ); + nodeProcess.on("error", (error) => { + console.error(error); + process.exit(1); + }); nodeProcess.on("close", (code) => process.exit(code ?? undefined)); } -main(); +main().catch((error) => { + console.error(error); + process.exit(1); +}); diff --git a/packages/common/src/Debouncer.ts b/packages/common/src/Debouncer.ts index 6a8674519a..a4f5281342 100644 --- a/packages/common/src/Debouncer.ts +++ b/packages/common/src/Debouncer.ts @@ -3,7 +3,7 @@ * value to determine the debounce delay. */ export class Debouncer { - private timeoutHandle: NodeJS.Timeout | null = null; + private timeoutHandle: ReturnType | null = null; constructor( /** The callback to debounce */ diff --git a/packages/common/src/ide/fake/FakeIDE.ts b/packages/common/src/ide/fake/FakeIDE.ts index 58e951cf2e..0fde1eed4b 100644 --- a/packages/common/src/ide/fake/FakeIDE.ts +++ b/packages/common/src/ide/fake/FakeIDE.ts @@ -1,14 +1,11 @@ import { pull } from "lodash-es"; -import type { - EditableTextEditor, - Messages, - NotebookEditor, - TextEditor, -} from "../.."; import type { GeneralizedRange } from "../../types/GeneralizedRange"; +import type { NotebookEditor } from "../../types/NotebookEditor"; import type { TextDocument } from "../../types/TextDocument"; +import type { EditableTextEditor, TextEditor } from "../../types/TextEditor"; import type { TextDocumentChangeEvent } from "../types/Events"; import type { FlashDescriptor } from "../types/FlashDescriptor"; +import type { Messages } from "../types/Messages"; import type { QuickPickOptions } from "../types/QuickPickOptions"; import type { Emit, diff --git a/packages/common/src/ide/inMemoryTextEditor/test/InMemoryTextDocumentEdit.test.ts b/packages/common/src/ide/inMemoryTextEditor/test/InMemoryTextDocumentEdit.test.ts index bead770d1b..b63e98c75d 100644 --- a/packages/common/src/ide/inMemoryTextEditor/test/InMemoryTextDocumentEdit.test.ts +++ b/packages/common/src/ide/inMemoryTextEditor/test/InMemoryTextDocumentEdit.test.ts @@ -1,5 +1,5 @@ import * as assert from "node:assert"; -import { Range } from "../../.."; +import { Range } from "../../../types/Range"; import { createTestDocument } from "./createTestDocument"; const text = "hello\nworld"; diff --git a/packages/common/src/ide/types/Configuration.ts b/packages/common/src/ide/types/Configuration.ts index dd9cf32d69..67c1ee6751 100644 --- a/packages/common/src/ide/types/Configuration.ts +++ b/packages/common/src/ide/types/Configuration.ts @@ -1,4 +1,4 @@ -import type { Listener } from "../.."; +import type { Listener } from "../../util/Notifier"; import { HatStability } from "./HatStability"; import type { Disposable } from "./ide.types"; import type { GetFieldType, Paths } from "./Paths"; diff --git a/packages/common/src/ide/types/Events.ts b/packages/common/src/ide/types/Events.ts index 09f39e9a59..f3dde1fd8f 100644 --- a/packages/common/src/ide/types/Events.ts +++ b/packages/common/src/ide/types/Events.ts @@ -1,4 +1,5 @@ -import type { TextDocument, Range } from "../.."; +import type { Range } from "../../types/Range"; +import type { TextDocument } from "../../types/TextDocument"; /** * An event describing a transactional {@link TextDocument document} change. diff --git a/packages/common/src/ide/types/FlashDescriptor.ts b/packages/common/src/ide/types/FlashDescriptor.ts index db9613b588..3e9e652fc2 100644 --- a/packages/common/src/ide/types/FlashDescriptor.ts +++ b/packages/common/src/ide/types/FlashDescriptor.ts @@ -1,5 +1,5 @@ -import type { TextEditor } from "../.."; import type { GeneralizedRange } from "../../types/GeneralizedRange"; +import type { TextEditor } from "../../types/TextEditor"; export enum FlashStyle { pendingDelete = "pendingDelete", diff --git a/packages/common/src/ide/types/ide.types.ts b/packages/common/src/ide/types/ide.types.ts index b61a10745e..ef0f47786d 100644 --- a/packages/common/src/ide/types/ide.types.ts +++ b/packages/common/src/ide/types/ide.types.ts @@ -1,12 +1,9 @@ import type { URI } from "vscode-uri"; -import type { - EditableTextEditor, - InputBoxOptions, - NotebookEditor, - TextDocument, - TextEditor, -} from "../.."; import type { GeneralizedRange } from "../../types/GeneralizedRange"; +import type { InputBoxOptions } from "../../types/InputBoxOptions"; +import type { NotebookEditor } from "../../types/NotebookEditor"; +import type { TextDocument } from "../../types/TextDocument"; +import type { EditableTextEditor, TextEditor } from "../../types/TextEditor"; import type { Capabilities } from "./Capabilities"; import type { Clipboard } from "./Clipboard"; import type { Configuration } from "./Configuration"; diff --git a/packages/common/src/index.ts b/packages/common/src/index.ts index d675713b5c..69b194422d 100644 --- a/packages/common/src/index.ts +++ b/packages/common/src/index.ts @@ -1,5 +1,3 @@ -export * from "./buildUtil/viteHtmlParamsPlugin"; -export * from "./buildUtil/vitePreactAlias"; export * from "./constants"; export * from "./cursorlessCommandIds"; export * from "./cursorlessSideBarIds"; @@ -47,7 +45,6 @@ export * from "./testUtil/asyncSafety"; export * from "./testUtil/extractTargetedMarks"; export * from "./testUtil/fromPlainObject"; export * from "./testUtil/getSnapshotForComparison"; -export * from "./testUtil/preactModuleNameMapper"; export * from "./testUtil/serialize"; export * from "./testUtil/serializeTestFixture"; export * from "./testUtil/shouldUpdateFixtures"; diff --git a/packages/common/src/scopeVisualizerUtil/generateDecorationsForCharacterRange/generateLineInfos.ts b/packages/common/src/scopeVisualizerUtil/generateDecorationsForCharacterRange/generateLineInfos.ts index 50452270a9..bf09bd60d6 100644 --- a/packages/common/src/scopeVisualizerUtil/generateDecorationsForCharacterRange/generateLineInfos.ts +++ b/packages/common/src/scopeVisualizerUtil/generateDecorationsForCharacterRange/generateLineInfos.ts @@ -1,4 +1,4 @@ -import type { Range } from "../.."; +import type { Range } from "../../types/Range"; /** * Generates a line info for each line in the given range, which includes diff --git a/packages/common/src/scopeVisualizerUtil/generateDecorationsForCharacterRange/handleMultipleLines.test.ts b/packages/common/src/scopeVisualizerUtil/generateDecorationsForCharacterRange/handleMultipleLines.test.ts index a4da8afef0..62e31a5ef9 100644 --- a/packages/common/src/scopeVisualizerUtil/generateDecorationsForCharacterRange/handleMultipleLines.test.ts +++ b/packages/common/src/scopeVisualizerUtil/generateDecorationsForCharacterRange/handleMultipleLines.test.ts @@ -1,6 +1,6 @@ import assert from "assert"; import { map } from "itertools"; -import { Range } from "../.."; +import { Range } from "../../types/Range"; import { BorderStyle } from "../decorationStyle.types"; import { handleMultipleLines } from "./handleMultipleLines"; diff --git a/packages/common/src/scopeVisualizerUtil/generateDecorationsForCharacterRange/handleMultipleLines.ts b/packages/common/src/scopeVisualizerUtil/generateDecorationsForCharacterRange/handleMultipleLines.ts index 7b668f824b..d6749c3f01 100644 --- a/packages/common/src/scopeVisualizerUtil/generateDecorationsForCharacterRange/handleMultipleLines.ts +++ b/packages/common/src/scopeVisualizerUtil/generateDecorationsForCharacterRange/handleMultipleLines.ts @@ -1,5 +1,5 @@ import { flatmap } from "itertools"; -import { Range } from "../.."; +import { Range } from "../../types/Range"; import type { DecorationStyle, StyledRange } from "../decorationStyle.types"; import { BorderStyle } from "../decorationStyle.types"; import type { LineInfo } from "./generateLineInfos"; diff --git a/packages/common/src/testUtil/extractTargetedMarks.ts b/packages/common/src/testUtil/extractTargetedMarks.ts index 40a1bc60ec..454dc43571 100644 --- a/packages/common/src/testUtil/extractTargetedMarks.ts +++ b/packages/common/src/testUtil/extractTargetedMarks.ts @@ -1,4 +1,4 @@ -import { splitKey } from ".."; +import { splitKey } from "../util/splitKey"; import type { ReadOnlyHatMap } from "../types/HatTokenMap"; import type { Token } from "../types/Token"; diff --git a/packages/common/src/testUtil/shouldUpdateFixtures.ts b/packages/common/src/testUtil/shouldUpdateFixtures.ts index 9f0eb7b498..747fb7e5ac 100644 --- a/packages/common/src/testUtil/shouldUpdateFixtures.ts +++ b/packages/common/src/testUtil/shouldUpdateFixtures.ts @@ -1,7 +1,9 @@ +import { getProcessEnv } from "../util/getProcessEnv"; + /** * Used to check weather the update fixtures launch config was used. * @returns `true` if developer used to the update fixtures launch config */ export function shouldUpdateFixtures() { - return process.env.CURSORLESS_TEST_UPDATE_FIXTURES === "true"; + return getProcessEnv().CURSORLESS_TEST_UPDATE_FIXTURES === "true"; } diff --git a/packages/common/src/testUtil/spyToPlainObject.ts b/packages/common/src/testUtil/spyToPlainObject.ts index 91ae297a4d..8c3ea4b6a5 100644 --- a/packages/common/src/testUtil/spyToPlainObject.ts +++ b/packages/common/src/testUtil/spyToPlainObject.ts @@ -1,4 +1,5 @@ -import type { Message, SpyIDERecordedValues } from ".."; +import type { SpyIDERecordedValues } from "../ide/spy/SpyIDE"; +import type { Message } from "../ide/spy/SpyMessages"; import type { PlainFlashDescriptor, PlainHighlight, diff --git a/packages/common/src/testUtil/testConstants.ts b/packages/common/src/testUtil/testConstants.ts index 1184a5f121..25c2f940ac 100644 --- a/packages/common/src/testUtil/testConstants.ts +++ b/packages/common/src/testUtil/testConstants.ts @@ -1,4 +1,4 @@ -import type { TextEditorOptions } from ".."; +import type { TextEditorOptions } from "../types/TextEditorOptions"; export const DEFAULT_TEXT_EDITOR_OPTIONS_FOR_TEST: TextEditorOptions = { tabSize: 4, diff --git a/packages/common/src/testUtil/preactModuleNameMapper.ts b/packages/common/src/tooling/jest.ts similarity index 100% rename from packages/common/src/testUtil/preactModuleNameMapper.ts rename to packages/common/src/tooling/jest.ts diff --git a/packages/common/src/tooling/vite.ts b/packages/common/src/tooling/vite.ts new file mode 100644 index 0000000000..b801b03561 --- /dev/null +++ b/packages/common/src/tooling/vite.ts @@ -0,0 +1,2 @@ +export * from "./viteHtmlParamsPlugin"; +export * from "./vitePreactAlias"; diff --git a/packages/common/src/buildUtil/viteHtmlParamsPlugin.ts b/packages/common/src/tooling/viteHtmlParamsPlugin.ts similarity index 100% rename from packages/common/src/buildUtil/viteHtmlParamsPlugin.ts rename to packages/common/src/tooling/viteHtmlParamsPlugin.ts diff --git a/packages/common/src/buildUtil/vitePreactAlias.ts b/packages/common/src/tooling/vitePreactAlias.ts similarity index 100% rename from packages/common/src/buildUtil/vitePreactAlias.ts rename to packages/common/src/tooling/vitePreactAlias.ts diff --git a/packages/common/src/types/Edit.ts b/packages/common/src/types/Edit.ts index 30c63280f6..2a81262ca3 100644 --- a/packages/common/src/types/Edit.ts +++ b/packages/common/src/types/Edit.ts @@ -1,4 +1,4 @@ -import type { Range } from ".."; +import type { Range } from "./Range"; /** Represent a single edit/change in the document */ export interface Edit { diff --git a/packages/common/src/types/Position.ts b/packages/common/src/types/Position.ts index 5a17845a25..f78fb21214 100644 --- a/packages/common/src/types/Position.ts +++ b/packages/common/src/types/Position.ts @@ -1,5 +1,6 @@ -import type { TextDocument } from ".."; -import { Range, stringToInteger } from ".."; +import { stringToInteger } from "../util/stringUtils"; +import type { TextDocument } from "./TextDocument"; +import { Range } from "./Range"; export class Position { /** diff --git a/packages/common/src/types/Range.ts b/packages/common/src/types/Range.ts index 536fa82bb9..441c66f94f 100644 --- a/packages/common/src/types/Range.ts +++ b/packages/common/src/types/Range.ts @@ -1,4 +1,4 @@ -import { Position, Selection } from ".."; +import { Position } from "./Position"; export class Range { /** @@ -151,17 +151,6 @@ export class Range { return new Range(start ?? this.start, end ?? this.end); } - /** - * Construct a new selection from this range - * @param isReversed If true active is before anchor - * @returns A new selection - */ - public toSelection(isReversed: boolean): Selection { - return isReversed - ? new Selection(this.end, this.start) - : new Selection(this.start, this.end); - } - /** * Return a concise string representation of the range. 0-based. * @returns concise representation diff --git a/packages/common/src/types/ScopeProvider.ts b/packages/common/src/types/ScopeProvider.ts index 6d25b7613d..b3c5da5bba 100644 --- a/packages/common/src/types/ScopeProvider.ts +++ b/packages/common/src/types/ScopeProvider.ts @@ -1,11 +1,9 @@ -import type { - Disposable, - GeneralizedRange, - Range, - ScopeType, - SpokenForm, - TextEditor, -} from ".."; +import type { GeneralizedRange } from "./GeneralizedRange"; +import type { SpokenForm } from "./SpokenForm"; +import type { Range } from "./Range"; +import type { TextEditor } from "./TextEditor"; +import type { Disposable } from "../ide/types/ide.types"; +import type { ScopeType } from "./command/PartialTargetDescriptor.types"; export interface ScopeProvider { /** diff --git a/packages/common/src/types/Selection.ts b/packages/common/src/types/Selection.ts index 8415e9a624..5de52f161d 100644 --- a/packages/common/src/types/Selection.ts +++ b/packages/common/src/types/Selection.ts @@ -1,4 +1,5 @@ -import { Position, Range } from ".."; +import { Position } from "./Position"; +import { Range } from "./Range"; export class Selection extends Range { /** @@ -60,6 +61,22 @@ export class Selection extends Range { this.active = active; } + /** + * Create a selection from a range. By default, the selection will not be reversed, but you can set `isReversed` to `true` to create a reversed selection. + * + * @param range A range. + * @param isReversed Whether the selection should be reversed. Defaults to `false`. + * @returns A selection created from the given range. + */ + public static fromRange( + range: Range, + isReversed: boolean = false, + ): Selection { + return isReversed + ? new Selection(range.end, range.start) + : new Selection(range.start, range.end); + } + /** * Check if `other` equals this range. * diff --git a/packages/common/src/types/TestCaseFixture.ts b/packages/common/src/types/TestCaseFixture.ts index c3030e2b40..7d761dbb49 100644 --- a/packages/common/src/types/TestCaseFixture.ts +++ b/packages/common/src/types/TestCaseFixture.ts @@ -1,4 +1,5 @@ -import type { Command, CommandLatest, Fallback, FocusedElementType } from ".."; +import type { FocusedElementType } from "./CommandServerApi"; +import type { Command, CommandLatest, Fallback } from "./command/command.types"; import type { TestCaseSnapshot } from "../testUtil/TestCaseSnapshot"; import type { PlainSpyIDERecordedValues } from "../testUtil/spyToPlainObject"; diff --git a/packages/common/src/types/TextDocument.ts b/packages/common/src/types/TextDocument.ts index f5eb26d0d8..93c7f33c2b 100644 --- a/packages/common/src/types/TextDocument.ts +++ b/packages/common/src/types/TextDocument.ts @@ -1,5 +1,8 @@ import type { URI } from "vscode-uri"; -import type { EndOfLine, Position, Range, TextLine } from ".."; +import type { EndOfLine } from "../ide/types/ide.types"; +import type { Position } from "./Position"; +import type { Range } from "./Range"; +import type { TextLine } from "./TextLine"; export interface TextDocument { /** diff --git a/packages/common/src/types/TextEditor.ts b/packages/common/src/types/TextEditor.ts index 6670a63c1b..56b688cd08 100644 --- a/packages/common/src/types/TextEditor.ts +++ b/packages/common/src/types/TextEditor.ts @@ -1,12 +1,10 @@ -import type { - Edit, - GeneralizedRange, - Range, - RevealLineAt, - Selection, - TextDocument, - TextEditorOptions, -} from ".."; +import type { Edit } from "./Edit"; +import type { GeneralizedRange } from "./GeneralizedRange"; +import type { Range } from "./Range"; +import type { RevealLineAt } from "./RevealLineAt"; +import type { Selection } from "./Selection"; +import type { TextDocument } from "./TextDocument"; +import type { TextEditorOptions } from "./TextEditorOptions"; /** * Represents a read-only reference to a text editor. If you need to modify the diff --git a/packages/common/src/types/TextEditorEdit.ts b/packages/common/src/types/TextEditorEdit.ts index ed1f1f68cc..80fb9be54e 100644 --- a/packages/common/src/types/TextEditorEdit.ts +++ b/packages/common/src/types/TextEditorEdit.ts @@ -1,4 +1,6 @@ -import type { EndOfLine, Position, Range } from ".."; +import type { EndOfLine } from "../ide/types/ide.types"; +import type { Position } from "./Position"; +import type { Range } from "./Range"; /** * A complex edit that will be applied in one transaction on a TextEditor. diff --git a/packages/common/src/types/TextLine.ts b/packages/common/src/types/TextLine.ts index 949b871914..e03232bd43 100644 --- a/packages/common/src/types/TextLine.ts +++ b/packages/common/src/types/TextLine.ts @@ -1,4 +1,4 @@ -import type { Range } from ".."; +import type { Range } from "./Range"; /** * Represents a line of text, such as a line of source code. diff --git a/packages/common/src/types/generalizedRangeContains.test.ts b/packages/common/src/types/generalizedRangeContains.test.ts index d9727d890a..56475874b8 100644 --- a/packages/common/src/types/generalizedRangeContains.test.ts +++ b/packages/common/src/types/generalizedRangeContains.test.ts @@ -1,5 +1,6 @@ import assert from "assert"; -import { generalizedRangeContains, Position } from ".."; +import { generalizedRangeContains } from "./GeneralizedRange"; +import { Position } from "./Position"; suite("generalizedRangeContains", () => { test("character", () => { diff --git a/packages/common/src/types/generalizedRangeTouches.test.ts b/packages/common/src/types/generalizedRangeTouches.test.ts index 6eca341be2..a3622a5ed0 100644 --- a/packages/common/src/types/generalizedRangeTouches.test.ts +++ b/packages/common/src/types/generalizedRangeTouches.test.ts @@ -1,6 +1,7 @@ import assert from "assert"; -import type { GeneralizedRange } from ".."; -import { generalizedRangeTouches, Position } from ".."; +import type { GeneralizedRange } from "./GeneralizedRange"; +import { generalizedRangeTouches } from "./GeneralizedRange"; +import { Position } from "./Position"; suite("generalizedRangeTouches", () => { test("character", () => { diff --git a/packages/common/src/types/position.test.ts b/packages/common/src/types/position.test.ts index af095df91e..5757bf0af8 100644 --- a/packages/common/src/types/position.test.ts +++ b/packages/common/src/types/position.test.ts @@ -1,5 +1,5 @@ import * as assert from "assert"; -import { Position } from ".."; +import { Position } from "./Position"; suite("Position", () => { test("constructor", () => { diff --git a/packages/common/src/types/range.test.ts b/packages/common/src/types/range.test.ts index ade8585b07..c499a1c7c9 100644 --- a/packages/common/src/types/range.test.ts +++ b/packages/common/src/types/range.test.ts @@ -1,5 +1,7 @@ import * as assert from "assert"; -import { Position, Range } from ".."; +import { Position } from "./Position"; +import { Range } from "./Range"; +import { Selection } from "./Selection"; suite("Range", () => { test("constructor", () => { @@ -110,8 +112,8 @@ suite("Range", () => { }); test("toSelection", () => { - assert.ok(new Range(1, 2, 3, 4).toSelection(true).isReversed); - assert.ok(!new Range(1, 2, 3, 4).toSelection(false).isReversed); + assert.ok(Selection.fromRange(new Range(1, 2, 3, 4), true).isReversed); + assert.ok(!Selection.fromRange(new Range(1, 2, 3, 4), false).isReversed); }); test("concise", () => { diff --git a/packages/common/src/types/selection.test.ts b/packages/common/src/types/selection.test.ts index 4b967e1c82..592ee7475f 100644 --- a/packages/common/src/types/selection.test.ts +++ b/packages/common/src/types/selection.test.ts @@ -1,5 +1,6 @@ import * as assert from "assert"; -import { Position, Selection } from ".."; +import { Position } from "./Position"; +import { Selection } from "./Selection"; suite("Selection", () => { test("constructor", () => { @@ -18,6 +19,13 @@ suite("Selection", () => { ); }); + test("fromRange", () => { + assert.ok(Selection.fromRange(new Selection(1, 2, 3, 4), true).isReversed); + assert.ok( + !Selection.fromRange(new Selection(1, 2, 3, 4), false).isReversed, + ); + }); + test("isReversed", () => { assert.ok(!new Selection(0, 0, 0, 0).isReversed); assert.ok(new Selection(1, 0, 0, 0).isReversed); @@ -45,11 +53,6 @@ suite("Selection", () => { ); }); - test("toSelection", () => { - assert.ok(new Selection(1, 2, 3, 4).toSelection(true).isReversed); - assert.ok(!new Selection(1, 2, 3, 4).toSelection(false).isReversed); - }); - test("concise", () => { assert.equal(new Selection(1, 2, 3, 4).concise(), "1:2->3:4"); assert.equal(new Selection(1, 2, 3, 4).conciseOneBased(), "2:3->4:5"); diff --git a/packages/common/src/util/getEnvironmentVariableStrict.ts b/packages/common/src/util/getEnvironmentVariableStrict.ts index 9b05dacd70..3443e19d4f 100644 --- a/packages/common/src/util/getEnvironmentVariableStrict.ts +++ b/packages/common/src/util/getEnvironmentVariableStrict.ts @@ -1,5 +1,7 @@ +import { getProcessEnv } from "./getProcessEnv"; + export function getEnvironmentVariableStrict(name: string): string { - const value = process.env[name]; + const value = getProcessEnv()[name]; if (value == null) { throw new Error(`Missing environment variable ${name}`); } diff --git a/packages/common/src/util/getProcessEnv.ts b/packages/common/src/util/getProcessEnv.ts new file mode 100644 index 0000000000..1fb94adf80 --- /dev/null +++ b/packages/common/src/util/getProcessEnv.ts @@ -0,0 +1,9 @@ +export function getProcessEnv() { + return ( + ( + globalThis as typeof globalThis & { + process?: { env?: Record }; + } + ).process?.env ?? {} + ); +} diff --git a/packages/common/tsconfig.json b/packages/common/tsconfig.json index 984fd3bbe5..d4fbbd0828 100644 --- a/packages/common/tsconfig.json +++ b/packages/common/tsconfig.json @@ -1,5 +1,4 @@ { "extends": "../../tsconfig.base.json", - "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"], - "references": [] + "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"] } diff --git a/packages/cursorless-cheatsheet/package.json b/packages/cursorless-cheatsheet/package.json index 67f97f1b2b..26f3f0810b 100644 --- a/packages/cursorless-cheatsheet/package.json +++ b/packages/cursorless-cheatsheet/package.json @@ -4,21 +4,11 @@ "description": "Cursorless cheatsheet implementation", "license": "MIT", "type": "module", - "main": "./out/index.js", - "types": "./out/index.d.ts", "exports": { - ".": { - "cursorless:bundler": "./src/index.ts", - "default": "./out/index.js" - } + ".": "./src/index.ts" }, "scripts": { - "compile:tsc": "tsc --build", - "compile:esbuild": "bash ../../scripts/compile-esbuild.sh", - "compile": "pnpm compile:tsc && pnpm compile:esbuild", - "watch:tsc": "pnpm compile:tsc --watch", - "watch:esbuild": "pnpm compile:esbuild --watch", - "watch": "pnpm run --filter @cursorless/cursorless-cheatsheet --parallel '/^watch:.*/'", + "typecheck": "tsc", "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" }, "dependencies": { diff --git a/packages/cursorless-cheatsheet/tsconfig.json b/packages/cursorless-cheatsheet/tsconfig.json index 28f94c07f4..d4fbbd0828 100644 --- a/packages/cursorless-cheatsheet/tsconfig.json +++ b/packages/cursorless-cheatsheet/tsconfig.json @@ -1,12 +1,4 @@ { "extends": "../../tsconfig.base.json", - "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"], - "references": [ - { - "path": "../common" - }, - { - "path": "../node-common" - } - ] + "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"] } diff --git a/packages/cursorless-engine/package.json b/packages/cursorless-engine/package.json index b4839d8688..2078e8bbf8 100644 --- a/packages/cursorless-engine/package.json +++ b/packages/cursorless-engine/package.json @@ -4,33 +4,23 @@ "description": "The core Cursorless engine, which is responsible for parsing and executing commands, allocating hats, etc", "license": "MIT", "type": "module", - "main": "./out/index.js", - "types": "./out/index.d.ts", "exports": { - ".": { - "cursorless:bundler": "./src/index.ts", - "default": "./out/index.js" - } + ".": "./src/index.ts" }, "scripts": { + "typecheck": "tsc", "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", - "compile:tsc": "tsc --build", - "compile:esbuild": "bash ../../scripts/compile-esbuild.sh", - "compile": "pnpm compile:tsc && pnpm compile:esbuild", + "test": "pnpm ensure-grammar-up-to-date", "generate-grammar:base": "nearleyc src/customCommandGrammar/grammar.ne", "ensure-grammar-up-to-date": "pnpm -s generate-grammar:base | diff -u src/customCommandGrammar/generated/grammar.ts -", "generate-grammar": "pnpm generate-grammar:base -o src/customCommandGrammar/generated/grammar.ts", - "generate-railroad": "nearley-railroad src/customCommandGrammar/grammar.ne -o out/railroad.html", - "test": "pnpm ensure-grammar-up-to-date", - "watch:tsc": "pnpm compile:tsc --watch", - "watch:esbuild": "pnpm compile:esbuild --watch", - "watch": "pnpm run --filter @cursorless/cursorless-engine --parallel '/^watch:.*/'" + "generate-railroad": "mkdir out && nearley-railroad src/customCommandGrammar/grammar.ne -o out/railroad.html" }, "dependencies": { "@cursorless/common": "workspace:*", "@cursorless/node-common": "workspace:*", "@cursorless/sentence-parser": "workspace:*", - "@cursorless/talon-tools": "^0.7.0", + "@cursorless/talon-tools": "^0.8.0", "immer": "^11.1.4", "immutability-helper": "^3.1.1", "itertools": "^2.6.0", @@ -51,7 +41,7 @@ "chai": "^6.2.2", "js-yaml": "^4.1.1", "mocha": "^11.7.5", - "sinon": "^21.0.2", + "sinon": "^21.0.3", "vscode-uri": "^3.1.0", "web-tree-sitter": "^0.26.7" } diff --git a/packages/cursorless-engine/src/actions/BreakLine.ts b/packages/cursorless-engine/src/actions/BreakLine.ts index 4cd6611484..3284e4f78e 100644 --- a/packages/cursorless-engine/src/actions/BreakLine.ts +++ b/packages/cursorless-engine/src/actions/BreakLine.ts @@ -1,5 +1,5 @@ import type { Edit, IDE, TextEditor } from "@cursorless/common"; -import { FlashStyle, Position, Range } from "@cursorless/common"; +import { FlashStyle, Position, Range, Selection } from "@cursorless/common"; import { flatten, zip } from "lodash-es"; import type { RangeUpdater } from "../core/updateSelections/RangeUpdater"; import { performEditsAndUpdateSelections } from "../core/updateSelections/updateSelections"; @@ -36,7 +36,7 @@ export class BreakLine { return zip(targets, updatedRanges).map(([target, range]) => ({ editor: target!.editor, - selection: range!.toSelection(target!.isReversed), + selection: Selection.fromRange(range!, target!.isReversed), })); }), ); diff --git a/packages/cursorless-engine/src/actions/BringMoveSwap.ts b/packages/cursorless-engine/src/actions/BringMoveSwap.ts index 3e55800bc2..8a7cde55bf 100644 --- a/packages/cursorless-engine/src/actions/BringMoveSwap.ts +++ b/packages/cursorless-engine/src/actions/BringMoveSwap.ts @@ -2,10 +2,13 @@ import type { GeneralizedRange, IDE, Range, - Selection, TextEditor, } from "@cursorless/common"; -import { FlashStyle, RangeExpansionBehavior } from "@cursorless/common"; +import { + FlashStyle, + RangeExpansionBehavior, + Selection, +} from "@cursorless/common"; import { flatten } from "lodash-es"; import type { RangeUpdater } from "../core/updateSelections/RangeUpdater"; import { performEditsAndUpdateSelections } from "../core/updateSelections/updateSelections"; @@ -220,7 +223,7 @@ abstract class BringMoveSwap { const target = edit.originalTarget; return { editor: edit.editor, - selection: range.toSelection(target.isReversed), + selection: Selection.fromRange(range, target.isReversed), isSource: edit.isSource, target, }; diff --git a/packages/cursorless-engine/src/actions/EditNew/EditNew.ts b/packages/cursorless-engine/src/actions/EditNew/EditNew.ts index e9cef44d17..562ad03658 100644 --- a/packages/cursorless-engine/src/actions/EditNew/EditNew.ts +++ b/packages/cursorless-engine/src/actions/EditNew/EditNew.ts @@ -1,4 +1,5 @@ import type { IDE } from "@cursorless/common"; +import { Selection } from "@cursorless/common"; import type { RangeUpdater } from "../../core/updateSelections/RangeUpdater"; import type { Destination } from "../../typings/target.types"; import { createThatMark, ensureSingleEditor } from "../../util/targetUtils"; @@ -74,7 +75,7 @@ export class EditNew { if (cursorRange == null) { throw Error("Cursor range is undefined for destination"); } - return cursorRange.toSelection(destination.target.isReversed); + return Selection.fromRange(cursorRange, destination.target.isReversed); }); await editableEditor.setSelections(newSelections, { focusEditor: true }); diff --git a/packages/cursorless-engine/src/actions/EditNew/runInsertLineAfterTargets.ts b/packages/cursorless-engine/src/actions/EditNew/runInsertLineAfterTargets.ts index 63fac52b92..a121ae2531 100644 --- a/packages/cursorless-engine/src/actions/EditNew/runInsertLineAfterTargets.ts +++ b/packages/cursorless-engine/src/actions/EditNew/runInsertLineAfterTargets.ts @@ -2,6 +2,7 @@ import type { CommandCapabilities, EditableTextEditor, } from "@cursorless/common"; +import { Selection } from "@cursorless/common"; import type { RangeUpdater } from "../../core/updateSelections/RangeUpdater"; import { performEditsAndUpdateSelections } from "../../core/updateSelections/updateSelections"; import type { EditDestination, State } from "./EditNew.types"; @@ -51,7 +52,7 @@ export async function runInsertLineAfterTargets( await editor.insertLineAfter(contentRanges); } else { await editor.setSelections( - contentRanges.map((range) => range.toSelection(false)), + contentRanges.map((range) => Selection.fromRange(range)), ); await editor.focus(); await editor.insertLineAfter(); diff --git a/packages/cursorless-engine/src/actions/GenerateSnippet/GenerateSnippet.ts b/packages/cursorless-engine/src/actions/GenerateSnippet/GenerateSnippet.ts index 2ac317af32..648f83b527 100644 --- a/packages/cursorless-engine/src/actions/GenerateSnippet/GenerateSnippet.ts +++ b/packages/cursorless-engine/src/actions/GenerateSnippet/GenerateSnippet.ts @@ -1,10 +1,5 @@ -import type { - EditableTextEditor, - IDE, - Selection, - TextEditor, -} from "@cursorless/common"; -import { FlashStyle, Range, matchAll } from "@cursorless/common"; +import type { EditableTextEditor, IDE, TextEditor } from "@cursorless/common"; +import { FlashStyle, Range, matchAll, Selection } from "@cursorless/common"; import type { Snippet, SnippetFile, @@ -153,7 +148,7 @@ export default class GenerateSnippet { } await editableEditor.setSelections([ - editableEditor.document.range.toSelection(false), + Selection.fromRange(editableEditor.document.range), ]); /** The next placeholder index to use for the meta snippet */ diff --git a/packages/cursorless-engine/src/actions/IndentLine.ts b/packages/cursorless-engine/src/actions/IndentLine.ts index 8d0a7d146c..b590bf3a44 100644 --- a/packages/cursorless-engine/src/actions/IndentLine.ts +++ b/packages/cursorless-engine/src/actions/IndentLine.ts @@ -1,5 +1,5 @@ import type { IDE, TextEditor } from "@cursorless/common"; -import { FlashStyle, Range } from "@cursorless/common"; +import { FlashStyle, Range, Selection } from "@cursorless/common"; import { flatten, zip } from "lodash-es"; import { selectionToStoredTarget } from "../core/commandRunner/selectionToStoredTarget"; import type { RangeUpdater } from "../core/updateSelections/RangeUpdater"; @@ -71,7 +71,7 @@ abstract class IndentLineBase { return zip(targets, updatedTargetSelections).map(([target, range]) => selectionToStoredTarget({ editor, - selection: range!.toSelection(target!.isReversed), + selection: Selection.fromRange(range!, target!.isReversed), }), ); } diff --git a/packages/cursorless-engine/src/actions/JoinLines.ts b/packages/cursorless-engine/src/actions/JoinLines.ts index 90620104f6..c59e1c2e26 100644 --- a/packages/cursorless-engine/src/actions/JoinLines.ts +++ b/packages/cursorless-engine/src/actions/JoinLines.ts @@ -1,5 +1,5 @@ import type { Edit, IDE, TextEditor } from "@cursorless/common"; -import { FlashStyle, Range, zipStrict } from "@cursorless/common"; +import { FlashStyle, Range, Selection, zipStrict } from "@cursorless/common"; import { range as iterRange, map, pairwise } from "itertools"; import { flatten } from "lodash-es"; import type { RangeUpdater } from "../core/updateSelections/RangeUpdater"; @@ -47,7 +47,7 @@ export default class JoinLines { return zipStrict(targets, updatedThatRanges).map(([target, range]) => ({ editor, - selection: range.toSelection(target.isReversed), + selection: Selection.fromRange(range, target.isReversed), })); }), ); diff --git a/packages/cursorless-engine/src/actions/PasteFromClipboardDirectly.ts b/packages/cursorless-engine/src/actions/PasteFromClipboardDirectly.ts index e01e5ae23f..19947d4fe4 100644 --- a/packages/cursorless-engine/src/actions/PasteFromClipboardDirectly.ts +++ b/packages/cursorless-engine/src/actions/PasteFromClipboardDirectly.ts @@ -2,6 +2,7 @@ import type { IDE, TextEditor } from "@cursorless/common"; import { FlashStyle, RangeExpansionBehavior, + Selection, toCharacterRange, zipStrict, } from "@cursorless/common"; @@ -73,7 +74,7 @@ export class PasteFromClipboardDirectly { const thatTargetSelections = zipStrict(edits, updatedEditSelections).map( ([edit, selection]) => - edit.updateRange(selection).toSelection(selection.isReversed), + Selection.fromRange(edit.updateRange(selection), selection.isReversed), ); await this.ide.flashRanges( diff --git a/packages/cursorless-engine/src/actions/Replace.ts b/packages/cursorless-engine/src/actions/Replace.ts index 72e905a035..a0bb7fef50 100644 --- a/packages/cursorless-engine/src/actions/Replace.ts +++ b/packages/cursorless-engine/src/actions/Replace.ts @@ -1,5 +1,9 @@ import type { IDE, ReplaceWith } from "@cursorless/common"; -import { FlashStyle, RangeExpansionBehavior } from "@cursorless/common"; +import { + FlashStyle, + RangeExpansionBehavior, + Selection, +} from "@cursorless/common"; import { zip } from "lodash-es"; import type { RangeUpdater } from "../core/updateSelections/RangeUpdater"; import { performEditsAndUpdateSelections } from "../core/updateSelections/updateSelections"; @@ -93,7 +97,7 @@ export default class Replace { for (const [wrapper, range] of zip(editWrappers, updatedEditRanges)) { thatSelections.push({ editor, - selection: wrapper!.edit.updateRange(range!).toSelection(false), + selection: Selection.fromRange(wrapper!.edit.updateRange(range!)), }); } }, diff --git a/packages/cursorless-engine/src/processTargets/targets/BaseTarget.ts b/packages/cursorless-engine/src/processTargets/targets/BaseTarget.ts index 7f24efb096..8bd6b2e464 100644 --- a/packages/cursorless-engine/src/processTargets/targets/BaseTarget.ts +++ b/packages/cursorless-engine/src/processTargets/targets/BaseTarget.ts @@ -3,11 +3,10 @@ import type { GeneralizedRange, InsertionMode, Range, - Selection, TargetPlainObject, TextEditor, } from "@cursorless/common"; -import { rangeToPlainObject } from "@cursorless/common"; +import { rangeToPlainObject, Selection } from "@cursorless/common"; import { isEqual } from "lodash-es"; import type { EditWithRangeUpdater } from "../../typings/Types"; import type { @@ -81,7 +80,7 @@ export abstract class BaseTarget< } get contentSelection(): Selection { - return this.contentRange.toSelection(this.isReversed); + return Selection.fromRange(this.contentRange, this.isReversed); } get contentRange(): Range { diff --git a/packages/cursorless-engine/src/processTargets/targets/DestinationImpl.ts b/packages/cursorless-engine/src/processTargets/targets/DestinationImpl.ts index 2070544772..37d95de65b 100644 --- a/packages/cursorless-engine/src/processTargets/targets/DestinationImpl.ts +++ b/packages/cursorless-engine/src/processTargets/targets/DestinationImpl.ts @@ -1,5 +1,5 @@ -import type { InsertionMode, Selection, TextEditor } from "@cursorless/common"; -import { Range } from "@cursorless/common"; +import type { InsertionMode, TextEditor } from "@cursorless/common"; +import { Range, Selection } from "@cursorless/common"; import type { EditWithRangeUpdater } from "../../typings/Types"; import type { Destination, @@ -34,7 +34,7 @@ export class DestinationImpl implements Destination { } get contentSelection(): Selection { - return this.contentRange.toSelection(this.target.isReversed); + return Selection.fromRange(this.contentRange, this.target.isReversed); } get editor(): TextEditor { diff --git a/packages/cursorless-engine/src/testUtil/TalonRepl.ts b/packages/cursorless-engine/src/testUtil/TalonRepl.ts index 03f2727235..2a1e69e111 100644 --- a/packages/cursorless-engine/src/testUtil/TalonRepl.ts +++ b/packages/cursorless-engine/src/testUtil/TalonRepl.ts @@ -19,7 +19,7 @@ export class TalonRepl { const path = getReplPath(); this.child = childProcess.spawn(path, { shell: true }); - if (!this.child.stdin) { + if (this.child?.stdin == null) { reject("stdin is null"); return; } diff --git a/packages/cursorless-engine/src/util/allocateHats/getDisplayLineMap.ts b/packages/cursorless-engine/src/util/allocateHats/getDisplayLineMap.ts index e6692a7abb..bf55100370 100644 --- a/packages/cursorless-engine/src/util/allocateHats/getDisplayLineMap.ts +++ b/packages/cursorless-engine/src/util/allocateHats/getDisplayLineMap.ts @@ -1,5 +1,5 @@ import type { TextEditor } from "@cursorless/common"; -import { concat, flatten, flow, range, uniq } from "lodash-es"; +import { range, uniq } from "lodash-es"; /** * Returns a map from line numbers in the file to display lines, which skip @@ -12,19 +12,12 @@ export function getDisplayLineMap( editor: TextEditor, extraLines: number[] = [], ): Map { - return new Map( - flow( - flatten, - uniq, - )( - concat( - [extraLines], - editor.visibleRanges.map((visibleRange) => - range(visibleRange.start.line, visibleRange.end.line + 1), - ), - ), - ) - .sort((a, b) => a - b) - .map((value, index) => [value, index]), - ); + const lines = uniq([ + ...extraLines, + ...editor.visibleRanges.flatMap((visibleRange) => + range(visibleRange.start.line, visibleRange.end.line + 1), + ), + ]).sort((a, b) => a - b); + + return new Map(lines.map((value, index) => [value, index])); } diff --git a/packages/cursorless-engine/tsconfig.json b/packages/cursorless-engine/tsconfig.json index abf496b58c..d4fbbd0828 100644 --- a/packages/cursorless-engine/tsconfig.json +++ b/packages/cursorless-engine/tsconfig.json @@ -1,15 +1,4 @@ { "extends": "../../tsconfig.base.json", - "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"], - "references": [ - { - "path": "../common" - }, - { - "path": "../node-common" - }, - { - "path": "../sentence-parser" - } - ] + "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"] } diff --git a/packages/cursorless-everywhere-talon-core/package.json b/packages/cursorless-everywhere-talon-core/package.json index 77d4a298cd..dae5e8701a 100644 --- a/packages/cursorless-everywhere-talon-core/package.json +++ b/packages/cursorless-everywhere-talon-core/package.json @@ -4,21 +4,11 @@ "description": "cursorless in talon js core packagee", "license": "MIT", "type": "module", - "main": "./out/index.js", - "types": "./out/index.d.ts", "exports": { - ".": { - "cursorless:bundler": "./src/index.ts", - "default": "./out/index.js" - } + ".": "./src/index.ts" }, "scripts": { - "compile:tsc": "tsc --build", - "compile:esbuild": "bash ../../scripts/compile-esbuild.sh", - "compile": "pnpm compile:tsc && pnpm compile:esbuild", - "watch:tsc": "pnpm compile:tsc --watch", - "watch:esbuild": "pnpm compile:esbuild --watch", - "watch": "pnpm run --filter @cursorless/cursorless-everywhere-talon-core --parallel '/^watch:.*/'", + "typecheck": "tsc", "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" }, "dependencies": { diff --git a/packages/cursorless-everywhere-talon-core/src/extension.ts b/packages/cursorless-everywhere-talon-core/src/extension.ts index cba24b63bf..6f25e17119 100644 --- a/packages/cursorless-everywhere-talon-core/src/extension.ts +++ b/packages/cursorless-everywhere-talon-core/src/extension.ts @@ -11,7 +11,7 @@ import { constructTestHelpers } from "./constructTestHelpers"; import { TalonJsIDE } from "./ide/TalonJsIDE"; import { TalonJsTestHats } from "./ide/TalonJsTestHats"; import { registerCommands } from "./registerCommands"; -import type { Talon } from "./types/talon.types"; +import type { Talon } from "./types/talon"; import type { ActivateReturnValue } from "./types/types"; export async function activate( diff --git a/packages/cursorless-everywhere-talon-core/src/ide/TalonJsClipboard.ts b/packages/cursorless-everywhere-talon-core/src/ide/TalonJsClipboard.ts index 2181328fab..35ad874172 100644 --- a/packages/cursorless-everywhere-talon-core/src/ide/TalonJsClipboard.ts +++ b/packages/cursorless-everywhere-talon-core/src/ide/TalonJsClipboard.ts @@ -1,5 +1,5 @@ import type { Clipboard } from "@cursorless/common"; -import type { Talon } from "../types/talon.types"; +import type { Talon } from "../types/talon"; export class TalonJsClipboard implements Clipboard { constructor(private talon: Talon) {} diff --git a/packages/cursorless-everywhere-talon-core/src/ide/TalonJsIDE.ts b/packages/cursorless-everywhere-talon-core/src/ide/TalonJsIDE.ts index 9fb4ba49f5..eac659d459 100644 --- a/packages/cursorless-everywhere-talon-core/src/ide/TalonJsIDE.ts +++ b/packages/cursorless-everywhere-talon-core/src/ide/TalonJsIDE.ts @@ -24,7 +24,7 @@ import type { } from "@cursorless/common"; import { InMemoryTextEditor, Notifier } from "@cursorless/common"; import { pull } from "lodash-es"; -import type { Talon } from "../types/talon.types"; +import type { Talon } from "../types/talon"; import type { EditorEdit, EditorState } from "../types/types"; import { flashRanges } from "./flashRanges"; import { TalonJsCapabilities } from "./TalonJsCapabilities"; diff --git a/packages/cursorless-everywhere-talon-core/src/ide/TalonJsMessages.ts b/packages/cursorless-everywhere-talon-core/src/ide/TalonJsMessages.ts index 0d1d7a2d66..5f555edd88 100644 --- a/packages/cursorless-everywhere-talon-core/src/ide/TalonJsMessages.ts +++ b/packages/cursorless-everywhere-talon-core/src/ide/TalonJsMessages.ts @@ -1,6 +1,6 @@ import type { Messages } from "@cursorless/common"; import { MessageType } from "@cursorless/common"; -import type { Talon } from "../types/talon.types"; +import type { Talon } from "../types/talon"; export class TalonJsMessages implements Messages { constructor(private talon: Talon) {} diff --git a/packages/cursorless-everywhere-talon-core/src/ide/flashRanges.ts b/packages/cursorless-everywhere-talon-core/src/ide/flashRanges.ts index d9d47c635f..81f10574d8 100644 --- a/packages/cursorless-everywhere-talon-core/src/ide/flashRanges.ts +++ b/packages/cursorless-everywhere-talon-core/src/ide/flashRanges.ts @@ -1,5 +1,5 @@ import type { FlashDescriptor, RangeOffsets } from "@cursorless/common"; -import type { Talon } from "../types/talon.types"; +import type { Talon } from "../types/talon"; import { toCharacterRangeOffsets } from "./toCharacterRangeOffsets"; export function flashRanges( diff --git a/packages/cursorless-everywhere-talon-core/src/index.ts b/packages/cursorless-everywhere-talon-core/src/index.ts index 8f8b2eab03..3843120999 100644 --- a/packages/cursorless-everywhere-talon-core/src/index.ts +++ b/packages/cursorless-everywhere-talon-core/src/index.ts @@ -1,4 +1,4 @@ export * from "./extension"; export * from "./ide/TalonJsIDE"; -export * from "./types/talon.types"; +export * from "./types/talon"; export * from "./types/types"; diff --git a/packages/cursorless-everywhere-talon-core/src/polyfill.ts b/packages/cursorless-everywhere-talon-core/src/polyfill.ts index a87c308e48..bf08b80819 100644 --- a/packages/cursorless-everywhere-talon-core/src/polyfill.ts +++ b/packages/cursorless-everywhere-talon-core/src/polyfill.ts @@ -1,5 +1,15 @@ const global = globalThis as any; +// Allows us to use `console.*` with quickjs +if (typeof global.print === "function") { + global.console = { + log: global.print, + error: global.print, + warn: global.print, + debug: global.print, + }; +} + // process.env is used by `immer` if (global.process == null) { global.process = { @@ -7,19 +17,20 @@ if (global.process == null) { }; } -// Allows us to use `console.*` with quickjs -if (typeof print !== "undefined") { - global.console = { - log: print, - error: print, - warn: print, - debug: print, +if (global.performance == null) { + global.performance = { + now: () => Date.now(), }; } // In quickjs `setTimeout` is not available. // FIXME: Remove dependency on `setTimeout` in the future. // https://github.com/cursorless-dev/cursorless/issues/2596 -global.setTimeout = (callback: () => void, _delay: number) => { - callback(); -}; +if (global.setTimeout == null) { + global.setTimeout = (callback: () => void, _delay: number) => { + callback(); + }; + global.clearTimeout = (_timeoutId: unknown) => { + // no-op + }; +} diff --git a/packages/cursorless-everywhere-talon-core/src/registerCommands.ts b/packages/cursorless-everywhere-talon-core/src/registerCommands.ts index 0f5e52055b..0824002e43 100644 --- a/packages/cursorless-everywhere-talon-core/src/registerCommands.ts +++ b/packages/cursorless-everywhere-talon-core/src/registerCommands.ts @@ -1,7 +1,7 @@ import { CURSORLESS_COMMAND_ID } from "@cursorless/common"; import type { CommandApi } from "@cursorless/cursorless-engine"; import type { TalonJsIDE } from "./ide/TalonJsIDE"; -import type { Talon } from "./types/talon.types"; +import type { Talon } from "./types/talon"; export function registerCommands( talon: Talon, diff --git a/packages/cursorless-everywhere-talon-core/src/types/Global.d.ts b/packages/cursorless-everywhere-talon-core/src/types/Global.d.ts deleted file mode 100644 index 9c682c6f7c..0000000000 --- a/packages/cursorless-everywhere-talon-core/src/types/Global.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -// This file contains global type definitions. We are not compiling as node or -// browser so by default console doesn't exist and print is something that -// quickjs adds. - -declare function print(...objs: any): void; - -declare namespace console { - function debug(...objs: any): void; - function log(...objs: any): void; - function warn(...objs: any): void; - function error(...objs: any): void; -} diff --git a/packages/cursorless-everywhere-talon-core/src/types/talon.types.ts b/packages/cursorless-everywhere-talon-core/src/types/talon.ts similarity index 98% rename from packages/cursorless-everywhere-talon-core/src/types/talon.types.ts rename to packages/cursorless-everywhere-talon-core/src/types/talon.ts index 65f2d11fd8..eceb2278f8 100644 --- a/packages/cursorless-everywhere-talon-core/src/types/talon.types.ts +++ b/packages/cursorless-everywhere-talon-core/src/types/talon.ts @@ -75,7 +75,7 @@ export interface TalonSettings { ): T | null; } -interface TalonContextConstructor { +export interface TalonContextConstructor { new (): TalonContext; } diff --git a/packages/cursorless-everywhere-talon-core/tsconfig.json b/packages/cursorless-everywhere-talon-core/tsconfig.json index fe0f62e62c..d4fbbd0828 100644 --- a/packages/cursorless-everywhere-talon-core/tsconfig.json +++ b/packages/cursorless-everywhere-talon-core/tsconfig.json @@ -1,15 +1,4 @@ { "extends": "../../tsconfig.base.json", - "compilerOptions": { - "typeRoots": ["src/types", "node_modules/@types"] - }, - "references": [ - { - "path": "../common" - }, - { - "path": "../cursorless-engine" - } - ], "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"] } diff --git a/packages/cursorless-everywhere-talon-e2e/package.json b/packages/cursorless-everywhere-talon-e2e/package.json index a8b748c3c1..54276757c7 100644 --- a/packages/cursorless-everywhere-talon-e2e/package.json +++ b/packages/cursorless-everywhere-talon-e2e/package.json @@ -7,9 +7,9 @@ "type": "module", "main": "./out/index.js", "scripts": { - "compile": "tsc --build", - "test:quickjs": "bash scripts/test-quickjs.sh", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" + "typecheck": "tsc", + "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", + "test:quickjs": "bash ./scripts/test-quickjs.sh" }, "dependencies": { "@cursorless/common": "workspace:*", @@ -19,6 +19,7 @@ }, "devDependencies": { "@types/mocha": "^10.0.10", + "esbuild": "^0.27.4", "mocha": "^11.7.5" } } diff --git a/packages/cursorless-everywhere-talon-e2e/scripts/test-quickjs.sh b/packages/cursorless-everywhere-talon-e2e/scripts/test-quickjs.sh index 581be1444a..fd1e3e2afb 100755 --- a/packages/cursorless-everywhere-talon-e2e/scripts/test-quickjs.sh +++ b/packages/cursorless-everywhere-talon-e2e/scripts/test-quickjs.sh @@ -1,30 +1,25 @@ #!/usr/bin/env bash -set -euo pipefail -set -euo pipefail +set -euox pipefail QUICKJS_VERSION=2024-01-13 -echo $ esbuild ... src/quickjsTest.ts esbuild \ - --outfile=testOut/quickjsTest.mjs \ + src/quickjsTest.ts \ + --outfile=out/quickjsTest.mjs \ --platform=neutral \ --format=esm \ --main-fields=main,module \ - --conditions=cursorless:bundler \ --bundle \ --external:std \ - --external:node:crypto \ - src/quickjsTest.ts + --external:node:crypto -echo $ cd testOut -cd testOut +cd out if [[ "$OSTYPE" == "darwin"* ]]; then brew install quickjs # Brew doesn't actually publish different versions of the quickjs binary # brew install quickjs@$QUICKJS_VERSION - echo $ qjs -I quickjsTest.mjs qjs -I quickjsTest.mjs exit 0 @@ -47,11 +42,8 @@ else exit 1 fi -echo $ curl -o $QUICKJS_FILE $QUICKJS_URL curl -o $QUICKJS_FILE $QUICKJS_URL -echo $ unzip $QUICKJS_FILE unzip $QUICKJS_FILE -echo $ ./qjs -I quickjsTest.mjs ./qjs -I quickjsTest.mjs diff --git a/packages/cursorless-everywhere-talon-e2e/src/quickjsTest.ts b/packages/cursorless-everywhere-talon-e2e/src/quickjsTest.ts index 0112ecbf91..1efc34276c 100644 --- a/packages/cursorless-everywhere-talon-e2e/src/quickjsTest.ts +++ b/packages/cursorless-everywhere-talon-e2e/src/quickjsTest.ts @@ -5,7 +5,7 @@ import { } from "@cursorless/common"; import { activate } from "@cursorless/cursorless-everywhere-talon-core"; import * as std from "std"; -import talonMock from "./talonMock"; +import { talonMock } from "./talonMock"; let hasFailed = false; diff --git a/packages/cursorless-everywhere-talon-e2e/src/recorded.talonjs.test.ts b/packages/cursorless-everywhere-talon-e2e/src/recorded.talonjs.test.ts index f20f9a8211..e697bd97fb 100644 --- a/packages/cursorless-everywhere-talon-e2e/src/recorded.talonjs.test.ts +++ b/packages/cursorless-everywhere-talon-e2e/src/recorded.talonjs.test.ts @@ -15,7 +15,7 @@ import { } from "@cursorless/node-common"; import { constructTestHelpers } from "./constructTestHelpers"; import { endToEndTestSetup } from "./endToEndTestSetUp"; -import talonMock from "./talonMock"; +import { talonMock } from "./talonMock"; suite("TalonJS: Recorded test cases", async function () { const ide = await activate(talonMock, "test"); diff --git a/packages/cursorless-everywhere-talon-e2e/src/talonMock.ts b/packages/cursorless-everywhere-talon-e2e/src/talonMock.ts index 459c719381..5ac021dbef 100644 --- a/packages/cursorless-everywhere-talon-e2e/src/talonMock.ts +++ b/packages/cursorless-everywhere-talon-e2e/src/talonMock.ts @@ -99,11 +99,9 @@ interface TalonInTests extends Talon { getTestHelpers(): TalonTestHelpers; } -const talonMock: TalonInTests = { +export const talonMock: TalonInTests = { actions, settings, ["Context"]: Context, getTestHelpers, }; - -export default talonMock; diff --git a/packages/cursorless-everywhere-talon-e2e/tsconfig.json b/packages/cursorless-everywhere-talon-e2e/tsconfig.json index a6b67fbd55..d4fbbd0828 100644 --- a/packages/cursorless-everywhere-talon-e2e/tsconfig.json +++ b/packages/cursorless-everywhere-talon-e2e/tsconfig.json @@ -1,18 +1,4 @@ { "extends": "../../tsconfig.base.json", - "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"], - "references": [ - { - "path": "../common" - }, - { - "path": "../cursorless-everywhere-talon-core" - }, - { - "path": "../node-common" - }, - { - "path": "../test-case-recorder" - } - ] + "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"] } diff --git a/packages/cursorless-everywhere-talon/package.json b/packages/cursorless-everywhere-talon/package.json index 32ce6ff01c..22174951f7 100644 --- a/packages/cursorless-everywhere-talon/package.json +++ b/packages/cursorless-everywhere-talon/package.json @@ -7,14 +7,15 @@ "type": "module", "main": "./out/index.js", "scripts": { - "esbuild:dev": "pnpm run esbuild:base src/mainDevelopment.ts", - "esbuild:prod": "pnpm run esbuild:base --minify src/mainProduction.ts", - "esbuild:watch": "pnpm run esbuild:base --watch src/mainDevelopment.ts", - "esbuild:profile": "pnpm run esbuild:base --metafile=meta.json src/mainDevelopment.ts", - "esbuild:base": "bash scripts/esbuild.sh", - "compile": "tsc --build", - "compile:esbuild": "pnpm run esbuild:prod", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" + "typecheck": "tsc", + "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", + "dev": "pnpm run compile:watch", + "build": "pnpm run compile:prod", + "compile:prod": "pnpm run compile:base --minify src/mainProduction.ts", + "compile:dev": "pnpm run compile:base src/mainDevelopment.ts", + "compile:watch": "pnpm run compile:base --watch src/mainDevelopment.ts", + "compile:profile": "pnpm run compile:base --metafile=meta.json src/mainDevelopment.ts", + "compile:base": "bash scripts/esbuild.sh" }, "dependencies": { "@cursorless/common": "workspace:*", diff --git a/packages/cursorless-everywhere-talon/scripts/esbuild.sh b/packages/cursorless-everywhere-talon/scripts/esbuild.sh index 47c61e4ba6..93337184dc 100755 --- a/packages/cursorless-everywhere-talon/scripts/esbuild.sh +++ b/packages/cursorless-everywhere-talon/scripts/esbuild.sh @@ -6,7 +6,6 @@ esbuild \ --platform=neutral \ --format=esm \ --main-fields=main,module \ - --conditions=cursorless:bundler \ --bundle \ --sourcemap \ --external:talon \ diff --git a/packages/cursorless-everywhere-talon/src/types/talon.d.ts b/packages/cursorless-everywhere-talon/src/types/talon.d.ts index 65d867db5e..adfbfd34ad 100644 --- a/packages/cursorless-everywhere-talon/src/types/talon.d.ts +++ b/packages/cursorless-everywhere-talon/src/types/talon.d.ts @@ -1,19 +1,11 @@ -import type { - TalonActions, - TalonContext, - TalonContextActions, - TalonSettings, -} from "@cursorless/cursorless-everywhere-talon-core"; - declare module "talon" { - const actions: TalonActions; - const settings: TalonSettings; + import type { + TalonActions, + TalonContextConstructor, + TalonSettings, + } from "@cursorless/cursorless-everywhere-talon-core"; - class Context implements TalonContext { - matches: string; - tags: string[]; - settings: Record; - lists: Record | string[]>; - action_class(name: "user", actions: TalonContextActions): void; - } + export const actions: TalonActions; + export const settings: TalonSettings; + export const Context: TalonContextConstructor; } diff --git a/packages/cursorless-everywhere-talon/tsconfig.json b/packages/cursorless-everywhere-talon/tsconfig.json index e60cb3c225..d4fbbd0828 100644 --- a/packages/cursorless-everywhere-talon/tsconfig.json +++ b/packages/cursorless-everywhere-talon/tsconfig.json @@ -1,16 +1,4 @@ { "extends": "../../tsconfig.base.json", - "compilerOptions": { - "noEmit": true, - "typeRoots": ["src/types", "node_modules/@types"] - }, - "references": [ - { - "path": "../common" - }, - { - "path": "../cursorless-everywhere-talon-core" - } - ], "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"] } diff --git a/packages/cursorless-neovim-e2e/package.json b/packages/cursorless-neovim-e2e/package.json index 8d3ac076a4..48b0fb09fb 100644 --- a/packages/cursorless-neovim-e2e/package.json +++ b/packages/cursorless-neovim-e2e/package.json @@ -8,14 +8,10 @@ "main": "./out/index.js", "types": "./out/index.d.ts", "exports": { - ".": { - "cursorless:bundler": "./src/index.ts", - "default": "./out/index.js" - } + ".": "./out/index.js" }, "scripts": { - "compile": "tsc --build", - "watch": "tsc --build --watch", + "typecheck": "tsc", "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" }, "dependencies": { @@ -32,6 +28,6 @@ "@types/sinon": "^21.0.0", "js-yaml": "^4.1.1", "neovim": "^5.4.0", - "sinon": "^21.0.2" + "sinon": "^21.0.3" } } diff --git a/packages/cursorless-neovim-e2e/tsconfig.json b/packages/cursorless-neovim-e2e/tsconfig.json index fa151fb52b..d4fbbd0828 100644 --- a/packages/cursorless-neovim-e2e/tsconfig.json +++ b/packages/cursorless-neovim-e2e/tsconfig.json @@ -1,25 +1,4 @@ { "extends": "../../tsconfig.base.json", - "compilerOptions": { - "rootDir": "src", - "outDir": "out" - }, - "references": [ - { - "path": "../common" - }, - { - "path": "../neovim-common" - }, - { - "path": "../neovim-registry" - }, - { - "path": "../node-common" - }, - { - "path": "../test-case-recorder" - } - ], "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"] } diff --git a/packages/cursorless-neovim/package.json b/packages/cursorless-neovim/package.json index 8859471472..d0a949bd79 100644 --- a/packages/cursorless-neovim/package.json +++ b/packages/cursorless-neovim/package.json @@ -7,23 +7,18 @@ "main": "./out/index.cjs", "types": "./out/index.d.ts", "exports": { - ".": { - "cursorless:bundler": "./src/index.ts", - "default": "./out/index.cjs" - } + ".": "./out/index.cjs" }, "scripts": { - "build": "pnpm run esbuild:prod && pnpm run populate-dist", - "compile": "tsc --build", - "esbuild:base": "bash ./scripts/compile-esbuild.sh", - "esbuild": "pnpm run esbuild:base --sourcemap", - "esbuild:prod": "pnpm run esbuild:base --minify", - "populate-dist": "bash ./scripts/populate-dist.sh", - "populate-dist:prod": "bash ./scripts/populate-dist.sh", - "watch:tsc": "pnpm compile --watch", - "watch:esbuild": "pnpm esbuild --watch", - "watch": "pnpm run --filter @cursorless/cursorless-neovim --parallel '/^watch:.*/'", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" + "typecheck": "tsc", + "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", + "dev": "pnpm run compile:dev && pnpm run populate-dist", + "build": "pnpm run compile:prod && pnpm run populate-dist", + "compile:prod": "pnpm run compile:base --minify", + "compile:dev": "pnpm run compile:base --sourcemap", + "compile:watch": "pnpm run compile:base --sourcemap --watch", + "compile:base": "bash ./scripts/compile-esbuild.sh", + "populate-dist": "bash ./scripts/populate-dist.sh" }, "dependencies": { "@cursorless/common": "workspace:*", diff --git a/packages/cursorless-neovim/scripts/compile-esbuild.sh b/packages/cursorless-neovim/scripts/compile-esbuild.sh index beca2717a6..8488720560 100755 --- a/packages/cursorless-neovim/scripts/compile-esbuild.sh +++ b/packages/cursorless-neovim/scripts/compile-esbuild.sh @@ -8,5 +8,4 @@ esbuild \ --format=cjs \ --bundle \ --platform=node \ - --conditions=cursorless:bundler \ "$@" diff --git a/packages/cursorless-neovim/scripts/populate-dist.sh b/packages/cursorless-neovim/scripts/populate-dist.sh index 83de5f1f0d..971877f540 100755 --- a/packages/cursorless-neovim/scripts/populate-dist.sh +++ b/packages/cursorless-neovim/scripts/populate-dist.sh @@ -28,8 +28,7 @@ if [[ "${CI:-x}" == "true" ]]; then test_harness_node_out_dir="$cursorless_nvim_dist_dir/node/test-harness" mkdir -p "$test_harness_node_out_dir/out" cp "$test_harness_node_in_dir/package.json" "$test_harness_node_out_dir" - mkdir -p "$test_harness_node_out_dir/out/runners" - cp "$test_harness_node_in_dir/out/runners/extensionTestsNeovim.cjs" "$test_harness_node_out_dir/out/runners" + cp "$test_harness_node_in_dir/out/extensionTestsNeovim.cjs" "$test_harness_node_out_dir/out" else # Symlink so we inherit the .map files as well, but only if uname doesn't # start with "MINGW" (Windows Git Bash) diff --git a/packages/cursorless-neovim/tsconfig.json b/packages/cursorless-neovim/tsconfig.json index ebb84f2ad6..d4fbbd0828 100644 --- a/packages/cursorless-neovim/tsconfig.json +++ b/packages/cursorless-neovim/tsconfig.json @@ -1,28 +1,4 @@ { "extends": "../../tsconfig.base.json", - "compilerOptions": { - "rootDir": "src", - "outDir": "out" - }, - "references": [ - { - "path": "../common" - }, - { - "path": "../cursorless-engine" - }, - { - "path": "../neovim-common" - }, - { - "path": "../neovim-registry" - }, - { - "path": "../node-common" - }, - { - "path": "../test-case-recorder" - } - ], "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"] } diff --git a/packages/cursorless-org-docs/package.json b/packages/cursorless-org-docs/package.json index a389d5f7ea..9e48dc413c 100644 --- a/packages/cursorless-org-docs/package.json +++ b/packages/cursorless-org-docs/package.json @@ -7,10 +7,7 @@ "main": "./out/index.js", "types": "./out/index.d.ts", "exports": { - ".": { - "cursorless:bundler": "./src/index.ts", - "default": "./out/index.js" - } + ".": "./out/index.js" }, "browserslist": { "production": [ @@ -25,18 +22,10 @@ ] }, "scripts": { - "docusaurus": "docusaurus", - "start": "docusaurus start", - "build": "docusaurus build", - "swizzle": "docusaurus swizzle", - "deploy": "docusaurus deploy", - "clear": "docusaurus clear", - "serve": "docusaurus serve", - "write-translations": "docusaurus write-translations", - "write-heading-ids": "docusaurus write-heading-ids", - "compile": "tsc --build", - "watch": "tsc --build --watch", - "clean": "pnpm clear && rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" + "typecheck": "tsc", + "clean": "docusaurus clear && rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", + "dev": "docusaurus start", + "build": "docusaurus build" }, "dependencies": { "@algolia/client-search": "^5.49.2", diff --git a/packages/cursorless-org-docs/src/css/custom.scss b/packages/cursorless-org-docs/src/css/custom.scss index 6c1525ceff..b7168287c5 100644 --- a/packages/cursorless-org-docs/src/css/custom.scss +++ b/packages/cursorless-org-docs/src/css/custom.scss @@ -1,5 +1,7 @@ -@use "sass:map"; +@use "./github-link"; +// Bootstrap 5.3 still composes these partials via legacy `@import`. +// Keep that chain intact until the upstream Sass entrypoints are modernized. @import "bootstrap/scss/functions"; @import "bootstrap/scss/variables"; @import "bootstrap/scss/variables-dark"; @@ -12,8 +14,6 @@ @import "bootstrap/scss/forms/form-select"; @import "bootstrap/scss/card"; -@import "./github-link"; - [data-theme="dark"] .dark-mode-invert { filter: invert(90%) hue-rotate(180deg); } diff --git a/packages/cursorless-org-docs/src/docs/contributing/CONTRIBUTING.mdx b/packages/cursorless-org-docs/src/docs/contributing/CONTRIBUTING.mdx index 799b436dbe..3921adcf56 100644 --- a/packages/cursorless-org-docs/src/docs/contributing/CONTRIBUTING.mdx +++ b/packages/cursorless-org-docs/src/docs/contributing/CONTRIBUTING.mdx @@ -23,7 +23,6 @@ Welcome! So glad you've decided to help make Cursorless better. You'll want to s ```bash pnpm install - pnpm compile ``` 4. Run the following in the terminal: diff --git a/packages/cursorless-org-docs/src/docs/contributing/adding-a-new-package.md b/packages/cursorless-org-docs/src/docs/contributing/adding-a-new-package.md index 72abeac26d..ecf1201e2d 100644 --- a/packages/cursorless-org-docs/src/docs/contributing/adding-a-new-package.md +++ b/packages/cursorless-org-docs/src/docs/contributing/adding-a-new-package.md @@ -6,15 +6,17 @@ Replace `foo` with your new package name in the instructions below. 2. `mkdir foo && cd foo` 3. `pnpm init` 4. `code package.json` and update the `description` field. If your package is - not a library (ie it's an entrypoint), add a `"private": true,` line to your + not a top-level application package, add a `"private": true,` line to your `package.json`. 5. `pnpm install` 6. `pnpm -w fix:meta` -If your package is not a library, you get a bit less scaffolding for free, so -you may want to steal some of the scripts, as well as possibly the `main`, -`types`, and `exports` fields, from one of our library's `package.json`s. The -`@cursorless/common` package is a decent one to steal from. +Internal source-only packages should generally just expose `typecheck`, and if +needed `test`. + +If your package is a top-level application package, you will usually also want +`dev` and `build`, and possibly helper `bundle:*` scripts if it produces +internal artifacts for another package. For any packages that you need to depend on, you can run diff --git a/packages/cursorless-org-docs/src/docs/contributing/architecture/neovim-test-infrastructure.md b/packages/cursorless-org-docs/src/docs/contributing/architecture/neovim-test-infrastructure.md index c528ae2a9f..f60b9b2958 100644 --- a/packages/cursorless-org-docs/src/docs/contributing/architecture/neovim-test-infrastructure.md +++ b/packages/cursorless-org-docs/src/docs/contributing/architecture/neovim-test-infrastructure.md @@ -17,7 +17,7 @@ init.lua And here is the call path when running Neovim tests on CI: ``` -.github/workflows/test.yml -> packages/test-harness/package.json -> my-ts-node src/scripts/runNeovimTestsCI.ts -> packages/test-harness/src/launchNeovimAndRunTests.ts +.github/workflows/test.yml -> packages/test-harness/package.json -> c-tsx src/scripts/runNeovimTestsCI.ts -> packages/test-harness/src/launchNeovimAndRunTests.ts launchNeovimAndRunTests.ts -> copies packages/test-harness/src/config/init.lua to default nvim config folder @@ -215,7 +215,7 @@ if: runner.os == 'Linux' && matrix.app_version == 'stable' This triggers the script in `packages/test-harness/package.json`: ```json -"test:neovim": "env CURSORLESS_MODE=test my-ts-node src/scripts/runNeovimTestsCI.ts", +"test:neovim": "c-tsx src/scripts/runNeovimTestsCI.ts", ``` This ends up calling the default function from `package/test-harness/src/scripts/runNeovimTestsCI.ts` which calls `launchNeovimAndRunTests()` from `packages/test-harness/src/launchNeovimAndRunTests.ts`: diff --git a/packages/cursorless-org-docs/src/docs/contributing/architecture/package-scripts.md b/packages/cursorless-org-docs/src/docs/contributing/architecture/package-scripts.md new file mode 100644 index 0000000000..4f6efbcce4 --- /dev/null +++ b/packages/cursorless-org-docs/src/docs/contributing/architecture/package-scripts.md @@ -0,0 +1,150 @@ +# Package Scripts + +This page describes the script architecture used in the Cursorless monorepo. + +## Overview + +The repository uses four main script concepts: + +- `typecheck`: Validate TypeScript for a package or the whole workspace +- `bundle`: Produce an internal runtime artifact for another package to consume +- `build`: Produce a top-level distributable artifact +- `dev`: Run the primary development workflow for a top-level package + +The main distinction is between internal packages and top-level application packages. + +## Internal packages + +Internal packages are not published independently. They are consumed only from +within this repository. + +There are two important kinds of internal packages: + +- Source-only shared code packages, such as `common` or `cursorless-engine` +- Internal asset packages, such as `cheatsheet-local` or + `cursorless-vscode-tutorial-webview` + +### Source-only shared code packages + +These packages should expose `typecheck`, but they should not expose public +`build`, `compile`, or `clean` scripts. + +These packages export source directly from `src`, and they should not rely on an +`out` directory as part of their package contract. + +### Internal asset packages + +Some internal packages still need to generate runtime artifacts, but these +artifacts are implementation details of another package. + +These packages expose `bundle` scripts instead of `build` scripts. For example: + +- `bundle` +- `bundle:dev` +- `bundle:watch` + +These scripts are intended to be called by another package, not to define the +main top-level workflow for the repository. + +## Top-level application packages + +Top-level application packages expose the primary workflows that developers +actually use directly. + +These packages generally expose: + +- `typecheck` +- `dev` +- `build` + +Examples include: + +- `@cursorless/cursorless-vscode` +- `@cursorless/cursorless-neovim` +- `@cursorless/cursorless-org` +- `@cursorless/cursorless-org-docs` +- `@cursorless/cursorless-everywhere-talon` + +## Script meanings + +### `typecheck` + +`typecheck` validates TypeScript for the package. At the repository root, it +walks the project reference graph without emitting compiled output. + +Use this when you want to validate the codebase without implying that a +distributable artifact should be produced. + +### `bundle` + +`bundle` means "produce an internal runtime artifact". It is used for packages +that generate files consumed by another package, but which are not themselves +top-level deliverables. + +Examples: + +- the local cheatsheet single-file bundle +- the VS Code tutorial webview bundle +- test harness runner bundles + +### `build` + +`build` means "produce the final artifact for a top-level application package". + +`build` scripts should be self-contained. If a top-level package depends on +internal bundle-producing packages, its `build` script should invoke their +`bundle` scripts itself. + +For example: + +- `cursorless-vscode build` is responsible for building the assets it embeds +- `cursorless-neovim build` is responsible for building the support artifacts it + packages + +### `dev` + +`dev` is the main development entrypoint for a top-level application package. + +For web applications this is usually a long-running development server, such as +Vite or Docusaurus. + +For extension-style packages, `dev` currently means "prepare a development +build" rather than a fully self-updating hot-deploy pipeline. If more advanced +hot-deploy behavior is needed, it should still hang off the top-level `dev` +entrypoint rather than reintroducing older script names like `build:dev`. + +## Repository-level rules + +At the repository root: + +- use `pnpm typecheck` to validate the TypeScript graph +- use `pnpm build` to build top-level distributable packages +- do not use root-level `compile` or generic `watch:*` scripts + +For internal source-only packages, `typecheck` should not create an `out` +directory. + +The goal is to keep the public vocabulary small and make each script name mean +one thing consistently across the repository. + +## Naming guidelines + +Use `bundle` when: + +- the package is internal +- the output is consumed by another package +- the script is mostly an implementation detail + +Use `build` when: + +- the package is a top-level application or distributable +- the script produces the main artifact developers care about + +Use `dev` when: + +- the script is the primary entrypoint for local development of a top-level + package + +Use `typecheck` when: + +- the goal is validating TypeScript rather than producing a runtime artifact diff --git a/packages/cursorless-org-docs/tsconfig.json b/packages/cursorless-org-docs/tsconfig.json index 561c8d4a1b..c82379e86b 100644 --- a/packages/cursorless-org-docs/tsconfig.json +++ b/packages/cursorless-org-docs/tsconfig.json @@ -1,26 +1,14 @@ { - "extends": ["@tsconfig/docusaurus/tsconfig.json", "../../tsconfig.base.json"], + "extends": ["@tsconfig/docusaurus/tsconfig.json", "../../tsconfig.web.json"], "compilerOptions": { - "target": "es2022", - "lib": ["dom", "es2022"], - "moduleResolution": "nodenext", - "module": "nodenext", - "jsx": "react", - "esModuleInterop": true + "jsx": "react-jsx", + "jsxImportSource": "react" }, "include": [ "src/**/*.ts", - "src/**/*.json", "src/**/*.tsx", + "src/**/*.json", "../../typings/**/*.d.ts" ], - "exclude": ["node_modules"], - "references": [ - { - "path": "../common" - }, - { - "path": "../node-common" - } - ] + "exclude": ["node_modules"] } diff --git a/packages/cursorless-org/package.json b/packages/cursorless-org/package.json index 58e3675713..2341333905 100644 --- a/packages/cursorless-org/package.json +++ b/packages/cursorless-org/package.json @@ -8,18 +8,13 @@ "main": "./out/index.js", "types": "./out/index.d.ts", "exports": { - ".": { - "cursorless:bundler": "./src/index.ts", - "default": "./out/index.js" - } + ".": "./out/index.js" }, "scripts": { - "compile": "tsc --build", - "watch": "tsc --build --watch", - "serve": "vite serve", - "build": "vite build", - "preview": "vite preview", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" + "typecheck": "tsc", + "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", + "dev": "env NODE_OPTIONS=--import=tsx vite serve", + "build": "env NODE_OPTIONS=--import=tsx vite build" }, "dependencies": { "@cursorless/cheatsheet": "workspace:*", diff --git a/packages/cursorless-org/src/Cheatsheet.tsx b/packages/cursorless-org/src/Cheatsheet.tsx index 2f0828f63b..7d95fcec0c 100644 --- a/packages/cursorless-org/src/Cheatsheet.tsx +++ b/packages/cursorless-org/src/Cheatsheet.tsx @@ -1,7 +1,5 @@ -import { - Cheatsheet as OriginalCheatsheet, - defaultCheatsheetInfo, -} from "@cursorless/cheatsheet"; +import { Cheatsheet as OriginalCheatsheet } from "@cursorless/cheatsheet"; +import defaultCheatsheetInfo from "@cursorless/cheatsheet/defaultSpokenForms"; export function Cheatsheet() { return ( diff --git a/packages/cursorless-org/tsconfig.json b/packages/cursorless-org/tsconfig.json index 55af974f02..4e63517cbd 100644 --- a/packages/cursorless-org/tsconfig.json +++ b/packages/cursorless-org/tsconfig.json @@ -1,30 +1,13 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../tsconfig.web.json", "compilerOptions": { - "target": "es2022", - "lib": ["dom", "es2022"], - "jsx": "react-jsx", - "jsxImportSource": "preact", - "skipLibCheck": true, - "noEmit": true, - "esModuleInterop": true, - "resolveJsonModule": true, - "isolatedModules": true, - "incremental": true + "skipLibCheck": true }, "include": [ "src/**/*.ts", - "src/**/*.json", "src/**/*.tsx", + "src/**/*.json", "../../typings/**/*.d.ts" ], - "references": [ - { - "path": "../cheatsheet" - }, - { - "path": "../common" - } - ], "exclude": ["node_modules"] } diff --git a/packages/cursorless-org/vite.config.ts b/packages/cursorless-org/vite.config.ts index 89639cb123..364d3dc9d6 100644 --- a/packages/cursorless-org/vite.config.ts +++ b/packages/cursorless-org/vite.config.ts @@ -1,8 +1,5 @@ -import { - CURSORLESS_ORG_URL, - viteHtmlParams, - vitePreactAlias, -} from "@cursorless/common"; +import { CURSORLESS_ORG_URL } from "@cursorless/common"; +import { viteHtmlParams, vitePreactAlias } from "@cursorless/common/vite"; import type { UserConfig } from "vite"; import { defineConfig } from "vite"; import purgeCss from "vite-plugin-purgecss"; @@ -32,7 +29,6 @@ export default defineConfig((): UserConfig => { }, resolve: { - conditions: ["cursorless:bundler"], alias: vitePreactAlias, }, diff --git a/packages/cursorless-tutorial/package.json b/packages/cursorless-tutorial/package.json index 4043300064..946fc11b27 100644 --- a/packages/cursorless-tutorial/package.json +++ b/packages/cursorless-tutorial/package.json @@ -4,21 +4,11 @@ "description": "Cursorless tutorial driver code", "license": "MIT", "type": "module", - "main": "./out/index.js", - "types": "./out/index.d.ts", "exports": { - ".": { - "cursorless:bundler": "./src/index.ts", - "default": "./out/index.js" - } + ".": "./src/index.ts" }, "scripts": { - "compile:tsc": "tsc --build", - "compile:esbuild": "bash ../../scripts/compile-esbuild.sh", - "compile": "pnpm compile:tsc && pnpm compile:esbuild", - "watch:tsc": "pnpm compile:tsc --watch", - "watch:esbuild": "pnpm compile:esbuild --watch", - "watch": "pnpm run --filter @cursorless/cursorless-tutorial --parallel '/^watch:.*/'", + "typecheck": "tsc", "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" }, "dependencies": { diff --git a/packages/cursorless-tutorial/tsconfig.json b/packages/cursorless-tutorial/tsconfig.json index 8f5961799f..d4fbbd0828 100644 --- a/packages/cursorless-tutorial/tsconfig.json +++ b/packages/cursorless-tutorial/tsconfig.json @@ -1,16 +1,4 @@ { "extends": "../../tsconfig.base.json", - "compilerOptions": { - "rootDir": "src", - "outDir": "out" - }, - "references": [ - { - "path": "../common" - }, - { - "path": "../cursorless-engine" - } - ], "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"] } diff --git a/packages/cursorless-vscode-e2e/package.json b/packages/cursorless-vscode-e2e/package.json index 73e0edab3a..3b8bc65922 100644 --- a/packages/cursorless-vscode-e2e/package.json +++ b/packages/cursorless-vscode-e2e/package.json @@ -8,14 +8,10 @@ "main": "./out/index.js", "types": "./out/index.d.ts", "exports": { - ".": { - "cursorless:bundler": "./src/index.ts", - "default": "./out/index.js" - } + ".": "./out/index.js" }, "scripts": { - "compile": "tsc --build", - "watch": "tsc --build --watch", + "typecheck": "tsc", "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" }, "dependencies": { @@ -37,6 +33,6 @@ "js-yaml": "^4.1.1", "mocha": "^11.7.5", "semver": "^7.7.4", - "sinon": "^21.0.2" + "sinon": "^21.0.3" } } diff --git a/packages/cursorless-vscode-e2e/src/suite/crossCellsSetSelection.vscode.test.ts b/packages/cursorless-vscode-e2e/src/suite/crossCellsSetSelection.vscode.test.ts index db3b8e4781..9cd9b43aab 100644 --- a/packages/cursorless-vscode-e2e/src/suite/crossCellsSetSelection.vscode.test.ts +++ b/packages/cursorless-vscode-e2e/src/suite/crossCellsSetSelection.vscode.test.ts @@ -47,9 +47,6 @@ async function runTest() { const editor = window.activeTextEditor; - if (editor == null) { - assert(false, "No editor was focused"); - } - + assert.ok(editor != null, "No editor was focused"); assert.deepStrictEqual(editor.document.getText(editor.selection), "world"); } diff --git a/packages/cursorless-vscode-e2e/src/suite/intraCellSetSelection.vscode.test.ts b/packages/cursorless-vscode-e2e/src/suite/intraCellSetSelection.vscode.test.ts index ae98c1c1ee..09454b47bf 100644 --- a/packages/cursorless-vscode-e2e/src/suite/intraCellSetSelection.vscode.test.ts +++ b/packages/cursorless-vscode-e2e/src/suite/intraCellSetSelection.vscode.test.ts @@ -52,9 +52,7 @@ async function runTest() { const editor = window.activeTextEditor; - if (editor == null) { - assert(false, "No editor was focused"); - } + assert.ok(editor != null, "No editor was focused"); assert.deepStrictEqual(editor.document.getText(editor.selection), "world"); } diff --git a/packages/cursorless-vscode-e2e/tsconfig.json b/packages/cursorless-vscode-e2e/tsconfig.json index 01add93940..d4fbbd0828 100644 --- a/packages/cursorless-vscode-e2e/tsconfig.json +++ b/packages/cursorless-vscode-e2e/tsconfig.json @@ -1,15 +1,4 @@ { "extends": "../../tsconfig.base.json", - "references": [ - { - "path": "../common" - }, - { - "path": "../node-common" - }, - { - "path": "../vscode-common" - } - ], "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"] } diff --git a/packages/cursorless-vscode-tutorial-webview/README.md b/packages/cursorless-vscode-tutorial-webview/README.md index e4d3fabb04..5be2e3d9a9 100644 --- a/packages/cursorless-vscode-tutorial-webview/README.md +++ b/packages/cursorless-vscode-tutorial-webview/README.md @@ -5,8 +5,8 @@ the user opens any tutorial in VSCode. It is rendered in the sidebar. ## Development -To enable hot reloading, run the following command: +To rebuild the bundle on every change, run the following command: ```bash -pnpm watch +pnpm bundle:watch ``` diff --git a/packages/cursorless-vscode-tutorial-webview/package.json b/packages/cursorless-vscode-tutorial-webview/package.json index 846a4fa6ef..26ec95ad8c 100644 --- a/packages/cursorless-vscode-tutorial-webview/package.json +++ b/packages/cursorless-vscode-tutorial-webview/package.json @@ -7,11 +7,12 @@ "type": "module", "main": "./out/index.js", "scripts": { - "compile": "tsc --build", - "watch": "tsc --build --watch", - "build": "vite build", - "build:dev": "vite build --mode development", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" + "typecheck": "tsc", + "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", + "dev": "env NODE_OPTIONS=--import=tsx vite serve", + "bundle:prod": "env NODE_OPTIONS=--import=tsx vite build", + "bundle:dev": "env NODE_OPTIONS=--import=tsx vite build --mode development", + "bundle:watch": "env NODE_OPTIONS=--import=tsx vite build --mode development --watch" }, "dependencies": { "@cursorless/common": "workspace:*", diff --git a/packages/cursorless-vscode-tutorial-webview/tsconfig.json b/packages/cursorless-vscode-tutorial-webview/tsconfig.json index 3886a30398..13f9279bff 100644 --- a/packages/cursorless-vscode-tutorial-webview/tsconfig.json +++ b/packages/cursorless-vscode-tutorial-webview/tsconfig.json @@ -1,19 +1,9 @@ { - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "lib": ["dom", "es2022"], - "jsx": "react-jsx", - "jsxImportSource": "preact" - }, - "references": [ - { - "path": "../common" - } - ], + "extends": "../../tsconfig.web.json", "include": [ "src/**/*.ts", - "src/**/*.json", "src/**/*.tsx", + "src/**/*.json", "../../typings/**/*.d.ts" ] } diff --git a/packages/cursorless-vscode-tutorial-webview/vite.config.ts b/packages/cursorless-vscode-tutorial-webview/vite.config.ts index eb54cfeca2..c5714580e0 100644 --- a/packages/cursorless-vscode-tutorial-webview/vite.config.ts +++ b/packages/cursorless-vscode-tutorial-webview/vite.config.ts @@ -1,4 +1,4 @@ -import { vitePreactAlias } from "@cursorless/common"; +import { vitePreactAlias } from "@cursorless/common/vite"; import { defineConfig, type UserConfig } from "vite"; import purgeCss from "vite-plugin-purgecss"; @@ -22,7 +22,6 @@ export default defineConfig((): UserConfig => { }, resolve: { - conditions: ["cursorless:bundler"], alias: vitePreactAlias, }, diff --git a/packages/cursorless-vscode/package.json b/packages/cursorless-vscode/package.json index 8c3d4c2866..01bc59a0e2 100644 --- a/packages/cursorless-vscode/package.json +++ b/packages/cursorless-vscode/package.json @@ -1281,29 +1281,28 @@ ] }, "scripts": { - "build": "pnpm run esbuild:prod && pnpm run populate-dist", - "build:dev": "pnpm generate-grammar && pnpm run esbuild && pnpm run populate-dist", - "esbuild:base": "bash ./scripts/compile-esbuild.sh", + "typecheck": "tsc", + "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", + "test": "pnpm ensure-grammar-up-to-date", + "dev": "pnpm generate-grammar && pnpm run compile:dev && pnpm -F @cursorless/cursorless-vscode-tutorial-webview bundle:dev && pnpm run populate-dist", + "build": "pnpm generate-grammar && pnpm run compile:prod && pnpm -F @cursorless/cursorless-vscode-tutorial-webview bundle:prod && pnpm -F @cursorless/cheatsheet-local bundle:prod && pnpm run populate-dist", + "compile:prod": "pnpm run compile:base --minify", + "compile:dev": "pnpm run compile:base --sourcemap", + "compile:watch": "pnpm run compile:base --sourcemap --watch", + "compile:meta": "pnpm run compile:base --metafile=meta.json", + "compile:base": "bash ./scripts/compile-esbuild.sh", "install-local": "bash ./scripts/install-local.sh", "install-from-pr": "bash ./scripts/install-from-pr.sh", "uninstall-local": "bash ./scripts/uninstall-local.sh", - "esbuild": "pnpm run esbuild:base --sourcemap", - "esbuild:watch": "pnpm run esbuild:base --sourcemap --watch", - "esbuild:prod": "pnpm run esbuild:base --minify", - "esbuild:meta": "pnpm run esbuild:base --metafile=meta.json", - "populate-dist": "my-ts-node ./src/scripts/populateDist/index.ts", - "init-launch-sandbox": "my-ts-node src/scripts/initLaunchSandbox.ts", - "preprocess-svg-hats": "my-ts-node src/scripts/preprocessSvgHats.ts", - "hat-adjustment-add": "my-ts-node src/scripts/hatAdjustments/add.ts", - "hat-adjustment-average": "my-ts-node src/scripts/hatAdjustments/average.ts", - "generate-grammar:base": "nearleyc src/keyboard/grammar/grammar.ne", - "ensure-grammar-up-to-date": "pnpm -s generate-grammar:base | diff -u src/keyboard/grammar/generated/grammar.ts -", - "generate-grammar": "pnpm generate-grammar:base -o src/keyboard/grammar/generated/grammar.ts", - "generate-railroad": "nearley-railroad src/keyboard/grammar/grammar.ne -o out/railroad.html", - "test": "pnpm ensure-grammar-up-to-date", - "compile": "tsc --build", - "watch": "tsc --build --watch", - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" + "populate-dist": "c-tsx ./src/scripts/populateDist/index.ts", + "init-launch-sandbox": "c-tsx ./src/scripts/initLaunchSandbox.ts", + "preprocess-svg-hats": "c-tsx ./src/scripts/preprocessSvgHats.ts", + "hat-adjustment-add": "c-tsx ./src/scripts/hatAdjustments/add.ts", + "hat-adjustment-average": "c-tsx ./src/scripts/hatAdjustments/average.ts", + "ensure-grammar-up-to-date": "pnpm -s generate-grammar:base | diff -u ./src/keyboard/grammar/generated/grammar.ts -", + "generate-grammar:base": "nearleyc ./src/keyboard/grammar/grammar.ne", + "generate-grammar": "pnpm generate-grammar:base -o ./src/keyboard/grammar/generated/grammar.ts", + "generate-railroad": "mkdir out && nearley-railroad ./src/keyboard/grammar/grammar.ne -o out/railroad.html" }, "extensionDependencies": [ "pokey.parse-tree" @@ -1335,8 +1334,9 @@ "@types/sinon": "^21.0.0", "@types/vscode": "1.98.0", "esbuild": "^0.27.4", - "fast-xml-parser": "^5.5.5", + "fast-xml-parser": "^5.5.6", "fs-extra": "^11.3.4", - "sinon": "^21.0.2" + "sinon": "^21.0.3", + "tsx": "^4.21.0" } } diff --git a/packages/cursorless-vscode/scripts/compile-esbuild.sh b/packages/cursorless-vscode/scripts/compile-esbuild.sh index a0436f515b..6ca4f51105 100755 --- a/packages/cursorless-vscode/scripts/compile-esbuild.sh +++ b/packages/cursorless-vscode/scripts/compile-esbuild.sh @@ -9,5 +9,4 @@ esbuild \ --bundle \ --external:vscode \ --platform=node \ - --conditions=cursorless:bundler \ "$@" diff --git a/packages/cursorless-vscode/scripts/install-local.sh b/packages/cursorless-vscode/scripts/install-local.sh index 73a8f301ff..525d39029c 100755 --- a/packages/cursorless-vscode/scripts/install-local.sh +++ b/packages/cursorless-vscode/scripts/install-local.sh @@ -16,10 +16,9 @@ fi # Cursorless first and using a special extension id to break update chain # 1. Build local cursorless, using special extension id to break update chain -pnpm esbuild:prod -pnpm -F cheatsheet-local build -pnpm -F cursorless-vscode-tutorial-webview build -pnpm populate-dist --local-install +pnpm -F @cursorless/cheatsheet-local bundle:prod +pnpm -F @cursorless/cursorless-vscode-tutorial-webview bundle:prod +pnpm build --local-install # 2. Bundle the extension cd dist diff --git a/packages/cursorless-vscode/src/ide/vscode/VscodeInsertSnippets.ts b/packages/cursorless-vscode/src/ide/vscode/VscodeInsertSnippets.ts index f9ae223cb2..608de60299 100644 --- a/packages/cursorless-vscode/src/ide/vscode/VscodeInsertSnippets.ts +++ b/packages/cursorless-vscode/src/ide/vscode/VscodeInsertSnippets.ts @@ -1,5 +1,6 @@ import * as vscode from "vscode"; import type { Range } from "@cursorless/common"; +import { Selection } from "@cursorless/common"; import type { VscodeTextEditor } from "./VscodeTextEditor"; export async function vscodeInsertSnippet( @@ -8,7 +9,9 @@ export async function vscodeInsertSnippet( ranges: Range[] | undefined, ): Promise { if (ranges != null) { - await editor.setSelections(ranges.map((range) => range.toSelection(false))); + await editor.setSelections( + ranges.map((range) => Selection.fromRange(range)), + ); } await editor.focus(); diff --git a/packages/cursorless-vscode/src/ide/vscode/VscodeOpenLink.ts b/packages/cursorless-vscode/src/ide/vscode/VscodeOpenLink.ts index 0250358ee7..0c9dce8cd9 100644 --- a/packages/cursorless-vscode/src/ide/vscode/VscodeOpenLink.ts +++ b/packages/cursorless-vscode/src/ide/vscode/VscodeOpenLink.ts @@ -1,6 +1,7 @@ import * as vscode from "vscode"; import type { VscodeTextEditor } from "./VscodeTextEditor"; import type { OpenLinkOptions, Range } from "@cursorless/common"; +import { Selection } from "@cursorless/common"; import { toVscodePositionOrRange } from "@cursorless/vscode-common"; export default async function vscodeOpenLink( @@ -43,7 +44,7 @@ async function runCommandAtRange( command: string, range: Range, ) { - await editor.setSelections([range.toSelection(false)], { + await editor.setSelections([Selection.fromRange(range)], { focusEditor: true, }); await vscode.commands.executeCommand(command); diff --git a/packages/cursorless-vscode/src/scripts/populateDist/assets.ts b/packages/cursorless-vscode/src/scripts/populateDist/assets.ts index 50d7a1027b..5cea6271a6 100644 --- a/packages/cursorless-vscode/src/scripts/populateDist/assets.ts +++ b/packages/cursorless-vscode/src/scripts/populateDist/assets.ts @@ -8,7 +8,7 @@ export const assets: Asset[] = [ { source: "../../NOTICE.md", destination: "NOTICE.md" }, { source: "../../README.md", destination: "README.md" }, { - source: "../cheatsheet-local/dist/index.html", + source: "../cheatsheet-local/out/index.html", destination: "cheatsheet.html", // We allow this to be optional in dev mode because it is expensive to // build, and is only used when they say "cursorless cheatsheet". diff --git a/packages/cursorless-vscode/tsconfig.json b/packages/cursorless-vscode/tsconfig.json index 8a62c77d93..d4fbbd0828 100644 --- a/packages/cursorless-vscode/tsconfig.json +++ b/packages/cursorless-vscode/tsconfig.json @@ -1,27 +1,4 @@ { "extends": "../../tsconfig.base.json", - "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"], - "references": [ - { - "path": "../common" - }, - { - "path": "../cursorless-cheatsheet" - }, - { - "path": "../cursorless-engine" - }, - { - "path": "../cursorless-tutorial" - }, - { - "path": "../node-common" - }, - { - "path": "../test-case-recorder" - }, - { - "path": "../vscode-common" - } - ] + "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"] } diff --git a/packages/meta-updater/package.json b/packages/meta-updater/package.json index 385a4e3b84..4b4006d9a5 100644 --- a/packages/meta-updater/package.json +++ b/packages/meta-updater/package.json @@ -6,8 +6,7 @@ "private": true, "type": "module", "scripts": { - "compile": "tsc --build", - "watch": "tsc --build --watch", + "typecheck": "tsc", "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" }, "devDependencies": { @@ -21,7 +20,6 @@ "js-yaml": "^4.1.1", "lodash-es": "^4.17.23", "normalize-path": "^3.0.0", - "path-exists": "^5.0.0", "type-fest": "^5.4.4" } } diff --git a/packages/meta-updater/src/updatePackageJson.ts b/packages/meta-updater/src/updatePackageJson.ts index ab9700cfa9..bab0dd56ac 100644 --- a/packages/meta-updater/src/updatePackageJson.ts +++ b/packages/meta-updater/src/updatePackageJson.ts @@ -6,8 +6,6 @@ import type { Context } from "./Context"; import { getCursorlessVscodeFields } from "./getCursorlessVscodeFields"; const LIB_ENTRY_POINT = "./src/index.ts"; -const LIB_JS_OUTPUT = "./out/index.js"; -const LIB_TS_DECL_OUTPUT = "./out/index.d.ts"; /** * Given a package.json, update it to match our conventions. This function is @@ -43,25 +41,19 @@ export async function updatePackageJson( const isLib = !isRoot && !input.private; - const exportFields: Partial = !isLib - ? {} - : { - main: LIB_JS_OUTPUT, - types: LIB_TS_DECL_OUTPUT, - exports: { - ["."]: { - // We add a custom condition called `cursorless:bundler` for use with esbuild to - // ensure that it uses source .ts files when importing from another - // package in our monorepo. We use this both for esbuild and for tsx. - // See - // https://github.com/evanw/esbuild/issues/1250#issuecomment-1463826174 - // and - // https://github.com/esbuild-kit/tsx/issues/96#issuecomment-1463825643 - ["cursorless:bundler"]: LIB_ENTRY_POINT, - default: LIB_JS_OUTPUT, - }, - }, - }; + const exportFields: Partial = (() => { + if (!isLib) { + return {}; + } + const exports = + input.exports != null && + typeof input.exports === "object" && + !Array.isArray(input.exports) + ? input.exports + : {}; + exports["."] = LIB_ENTRY_POINT; + return { exports }; + })(); const isCursorlessVscode = input.name === "@cursorless/cursorless-vscode"; @@ -93,38 +85,46 @@ async function getScripts( name: string | undefined, packageDir: string, isRoot: boolean, - isLib: boolean, + _isLib: boolean, ) { const scripts: PackageJson.Scripts = { ...(inputScripts ?? {}), - ...(isLib - ? { - ["compile:tsc"]: "tsc --build", - ["compile:esbuild"]: `bash ../../scripts/compile-esbuild.sh`, - compile: "pnpm compile:tsc && pnpm compile:esbuild", - ["watch:tsc"]: "pnpm compile:tsc --watch", - ["watch:esbuild"]: "pnpm compile:esbuild --watch", - watch: `pnpm run --filter ${name} --parallel '/^watch:.*/'`, - } - : {}), }; if (isRoot) { return scripts; } - const cleanDirs = ["./out", "tsconfig.tsbuildinfo", "./dist", "./build"]; + scripts.typecheck = "tsc"; + const cleanDirs = ["./out", "tsconfig.tsbuildinfo", "./dist", "./build"]; const clean = `rm -rf ${cleanDirs.join(" ")}`; - const cleanScripts = name === "@cursorless/cursorless-org-docs" - ? ["pnpm clear", clean] + ? ["docusaurus clear", clean] : [clean]; scripts.clean = cleanScripts.join(" && "); - return scripts; + const orderedKeys = [ + "typecheck", + "clean", + "test", + "pretest", + "dev", + "build", + "bundle", + ]; + const getOrder = (key: string) => { + const index = orderedKeys.findIndex((k) => key.startsWith(k)); + return index === -1 ? Number.POSITIVE_INFINITY : index; + }; + + return Object.fromEntries( + Object.entries(scripts).sort( + ([keyA], [keyB]) => getOrder(keyA) - getOrder(keyB), + ), + ); } function removeEmptyFields(obj: Record) { diff --git a/packages/meta-updater/src/updateTSConfig.ts b/packages/meta-updater/src/updateTSConfig.ts index aa3f75d610..14cb0ccc7b 100644 --- a/packages/meta-updater/src/updateTSConfig.ts +++ b/packages/meta-updater/src/updateTSConfig.ts @@ -1,13 +1,14 @@ +import { getLockfileImporterId } from "@pnpm/lockfile-file"; import type { FormatPluginFnOptions } from "@pnpm/meta-updater"; +import { cloneDeep, isEqual } from "lodash-es"; import normalizePath from "normalize-path"; import * as path from "path"; -import { pathExists } from "path-exists"; -import type { PackageJson, TsConfigJson } from "type-fest"; -import { toPosixPath } from "./toPosixPath"; +import type { TsConfigJson } from "type-fest"; import type { Context } from "./Context"; -import { cloneDeep, isEqual, uniq } from "lodash-es"; -import { readFile } from "fs/promises"; -import { getLockfileImporterId } from "@pnpm/lockfile-file"; +import { toPosixPath } from "./toPosixPath"; + +const baseName = "tsconfig.base.json"; +const webJsonName = "tsconfig.web.json"; /** * Given a tsconfig.json, update it to match our conventions. This function is @@ -56,61 +57,27 @@ export async function updateTSConfig( throw new Error(`No importer found for ${pathFromRootToPackage}`); } - const deps = { - ...lockFilePackageInfo.dependencies, - ...lockFilePackageInfo.devDependencies, - }; - - /** Computed tsconfig.json references based on dependencies. */ - const references = [] as Array<{ path: string }>; - for (const spec of Object.values(deps)) { - if (!spec.startsWith("link:") || spec.length === 5) { - // Only consider references to other packages in monorepo. - continue; - } - const relativePath = spec.slice(5); - if ( - !(await pathExists(path.join(packageDir, relativePath, "tsconfig.json"))) - ) { - throw new Error(`No tsconfig found for ${relativePath}`); - } - if ( - ( - JSON.parse( - await readFile(path.join(packageDir, relativePath, "package.json"), { - encoding: "utf-8", - }), - ) as PackageJson - ).private - ) { - throw new Error(`Dependency ${relativePath} is private`); - } - references.push({ path: relativePath }); - } - const compilerOptions = { ...(cloneDeep(input.compilerOptions) ?? {}), }; delete compilerOptions.outDir; delete compilerOptions.rootDir; + const extendsList = getExtends(pathFromPackageToRoot, input.extends); + const isWeb = + input.compilerOptions?.jsx != null || + extendsList.some((e) => e.endsWith(webJsonName)); + return { ...input, - extends: getExtends(pathFromPackageToRoot, input.extends), + extends: extendsList.length === 1 ? extendsList[0] : extendsList, ...(isEqual(compilerOptions, {}) ? {} : { compilerOptions }), - references: references.sort((r1, r2) => r1.path.localeCompare(r2.path)), include: [ "src/**/*.ts", + ...(isWeb ? ["src/**/*.tsx"] : []), "src/**/*.json", - - ...(input.compilerOptions?.jsx == null ? [] : ["src/**/*.tsx"]), - - ...((await pathExists(path.join(packageDir, "next.config.js"))) - ? ["next-env.d.ts"] - : []), - toPosixPath(path.join(pathFromPackageToRoot, "typings", "**/*.d.ts")), ], }; @@ -120,18 +87,19 @@ function getExtends( pathFromPackageToRoot: string, inputExtends: string | string[] | undefined, ) { - let extendsList = + const extendsList = inputExtends == null ? [] : Array.isArray(inputExtends) ? [...inputExtends] : [inputExtends]; - extendsList.push( - toPosixPath(path.join(pathFromPackageToRoot, "tsconfig.base.json")), - ); + const basePath = toPosixPath(path.join(pathFromPackageToRoot, baseName)); + const webPath = toPosixPath(path.join(pathFromPackageToRoot, webJsonName)); - extendsList = uniq(extendsList); + if (!extendsList.includes(basePath) && !extendsList.includes(webPath)) { + extendsList.push(basePath); + } - return extendsList.length === 1 ? extendsList[0] : extendsList; + return extendsList; } diff --git a/packages/meta-updater/tsconfig.json b/packages/meta-updater/tsconfig.json index 525f87033c..d4fbbd0828 100644 --- a/packages/meta-updater/tsconfig.json +++ b/packages/meta-updater/tsconfig.json @@ -1,13 +1,4 @@ { "extends": "../../tsconfig.base.json", - "compilerOptions": { - "moduleResolution": "node", - "esModuleInterop": true - }, - "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"], - "references": [ - { - "path": "../common" - } - ] + "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"] } diff --git a/packages/neovim-common/package.json b/packages/neovim-common/package.json index af49f11750..bf041e35ae 100644 --- a/packages/neovim-common/package.json +++ b/packages/neovim-common/package.json @@ -4,21 +4,11 @@ "description": "Common utility functions usable anywhere that neovim api is available", "license": "MIT", "type": "module", - "main": "./out/index.js", - "types": "./out/index.d.ts", "exports": { - ".": { - "cursorless:bundler": "./src/index.ts", - "default": "./out/index.js" - } + ".": "./src/index.ts" }, "scripts": { - "compile:tsc": "tsc --build", - "compile:esbuild": "bash ../../scripts/compile-esbuild.sh", - "compile": "pnpm compile:tsc && pnpm compile:esbuild", - "watch:tsc": "pnpm compile:tsc --watch", - "watch:esbuild": "pnpm compile:esbuild --watch", - "watch": "pnpm run --filter @cursorless/neovim-common --parallel '/^watch:.*/'", + "typecheck": "tsc", "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" }, "dependencies": { diff --git a/packages/neovim-common/tsconfig.json b/packages/neovim-common/tsconfig.json index ef71cc5ee9..d4fbbd0828 100644 --- a/packages/neovim-common/tsconfig.json +++ b/packages/neovim-common/tsconfig.json @@ -1,19 +1,4 @@ { "extends": "../../tsconfig.base.json", - "compilerOptions": { - "rootDir": "src", - "outDir": "out" - }, - "references": [ - { - "path": "../common" - }, - { - "path": "../neovim-registry" - }, - { - "path": "../node-common" - } - ], "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"] } diff --git a/packages/neovim-registry/package.json b/packages/neovim-registry/package.json index dc06a2ab0e..2f23211194 100644 --- a/packages/neovim-registry/package.json +++ b/packages/neovim-registry/package.json @@ -4,22 +4,12 @@ "description": "Registry to share apis and commands between packages for neovim", "license": "MIT", "type": "module", - "main": "./out/index.js", - "types": "./out/index.d.ts", "exports": { - ".": { - "cursorless:bundler": "./src/index.ts", - "default": "./out/index.js" - } + ".": "./src/index.ts" }, "scripts": { - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", - "compile:tsc": "tsc --build", - "compile:esbuild": "bash ../../scripts/compile-esbuild.sh", - "compile": "pnpm compile:tsc && pnpm compile:esbuild", - "watch:tsc": "pnpm compile:tsc --watch", - "watch:esbuild": "pnpm compile:esbuild --watch", - "watch": "pnpm run --filter @cursorless/neovim-registry --parallel '/^watch:.*/'" + "typecheck": "tsc", + "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" }, "devDependencies": { "neovim": "^5.4.0" diff --git a/packages/neovim-registry/tsconfig.json b/packages/neovim-registry/tsconfig.json index cea565539b..d4fbbd0828 100644 --- a/packages/neovim-registry/tsconfig.json +++ b/packages/neovim-registry/tsconfig.json @@ -1,9 +1,4 @@ { "extends": "../../tsconfig.base.json", - "compilerOptions": { - "rootDir": "src", - "outDir": "out" - }, - "references": [], "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"] } diff --git a/packages/node-common/package.json b/packages/node-common/package.json index afef752b72..4c6e7d7ac8 100644 --- a/packages/node-common/package.json +++ b/packages/node-common/package.json @@ -4,21 +4,11 @@ "description": "Package containing node utilities", "license": "MIT", "type": "module", - "main": "./out/index.js", - "types": "./out/index.d.ts", "exports": { - ".": { - "cursorless:bundler": "./src/index.ts", - "default": "./out/index.js" - } + ".": "./src/index.ts" }, "scripts": { - "compile:tsc": "tsc --build", - "compile:esbuild": "bash ../../scripts/compile-esbuild.sh", - "compile": "pnpm compile:tsc && pnpm compile:esbuild", - "watch:tsc": "pnpm compile:tsc --watch", - "watch:esbuild": "pnpm compile:esbuild --watch", - "watch": "pnpm run --filter @cursorless/node-common --parallel '/^watch:.*/'", + "typecheck": "tsc", "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" }, "dependencies": { diff --git a/packages/node-common/tsconfig.json b/packages/node-common/tsconfig.json index 0f90f239b4..d4fbbd0828 100644 --- a/packages/node-common/tsconfig.json +++ b/packages/node-common/tsconfig.json @@ -1,9 +1,4 @@ { "extends": "../../tsconfig.base.json", - "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"], - "references": [ - { - "path": "../common" - } - ] + "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"] } diff --git a/packages/sentence-parser/package.json b/packages/sentence-parser/package.json index 41c0dc34e3..5641631e5f 100644 --- a/packages/sentence-parser/package.json +++ b/packages/sentence-parser/package.json @@ -4,21 +4,11 @@ "description": "Parse text for sentence boundary detection", "license": "MIT", "type": "module", - "main": "./out/index.js", - "types": "./out/index.d.ts", "exports": { - ".": { - "cursorless:bundler": "./src/index.ts", - "default": "./out/index.js" - } + ".": "./src/index.ts" }, "scripts": { - "compile:tsc": "tsc --build", - "compile:esbuild": "bash ../../scripts/compile-esbuild.sh", - "compile": "pnpm compile:tsc && pnpm compile:esbuild", - "watch:tsc": "pnpm compile:tsc --watch", - "watch:esbuild": "pnpm compile:esbuild --watch", - "watch": "pnpm run --filter @cursorless/sentence-parser --parallel '/^watch:.*/'", + "typecheck": "tsc", "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" }, "devDependencies": { diff --git a/packages/sentence-parser/tsconfig.json b/packages/sentence-parser/tsconfig.json index 1eba1fa892..d4fbbd0828 100644 --- a/packages/sentence-parser/tsconfig.json +++ b/packages/sentence-parser/tsconfig.json @@ -1,5 +1,4 @@ { "extends": "../../tsconfig.base.json", - "references": [], "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"] } diff --git a/packages/test-case-recorder/package.json b/packages/test-case-recorder/package.json index 5324785bf4..ce8264a7e5 100644 --- a/packages/test-case-recorder/package.json +++ b/packages/test-case-recorder/package.json @@ -4,21 +4,11 @@ "description": "Package containing the test case recorder", "license": "MIT", "type": "module", - "main": "./out/index.js", - "types": "./out/index.d.ts", "exports": { - ".": { - "cursorless:bundler": "./src/index.ts", - "default": "./out/index.js" - } + ".": "./src/index.ts" }, "scripts": { - "compile:tsc": "tsc --build", - "compile:esbuild": "bash ../../scripts/compile-esbuild.sh", - "compile": "pnpm compile:tsc && pnpm compile:esbuild", - "watch:tsc": "pnpm compile:tsc --watch", - "watch:esbuild": "pnpm compile:esbuild --watch", - "watch": "pnpm run --filter @cursorless/test-case-recorder --parallel '/^watch:.*/'", + "typecheck": "tsc", "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" }, "dependencies": { diff --git a/packages/test-case-recorder/tsconfig.json b/packages/test-case-recorder/tsconfig.json index d66e443d06..d4fbbd0828 100644 --- a/packages/test-case-recorder/tsconfig.json +++ b/packages/test-case-recorder/tsconfig.json @@ -1,15 +1,4 @@ { "extends": "../../tsconfig.base.json", - "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"], - "references": [ - { - "path": "../common" - }, - { - "path": "../cursorless-engine" - }, - { - "path": "../node-common" - } - ] + "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"] } diff --git a/packages/test-harness/package.json b/packages/test-harness/package.json index c2c1f18670..85688908a6 100644 --- a/packages/test-harness/package.json +++ b/packages/test-harness/package.json @@ -5,31 +5,27 @@ "license": "MIT", "private": true, "type": "module", - "main": "./out/runners/extensionTestsNeovim.cjs", - "types": "./out/runners/extensionTestsNeovim.d.ts", + "main": "./out/extensionTestsNeovim.cjs", + "types": "./out/extensionTestsNeovim.d.ts", "exports": { ".": { - "default": "./out/runners/extensionTestsNeovim.cjs" + "default": "./out/extensionTestsNeovim.cjs" } }, "scripts": { - "test": "my-ts-node src/scripts/runUnitTestsOnly.ts", - "test:subset": "my-ts-node src/scripts/runUnitTestsOnly.ts --subset", - "test:update": "my-ts-node src/scripts/runUnitTestsOnly.ts --update", - "test:update:subset": "my-ts-node src/scripts/runUnitTestsOnly.ts --update --subset", - "test:vscode": "my-ts-node src/scripts/runVscodeTestsCI.ts", - "test:neovim": "my-ts-node src/scripts/runNeovimTestsCI.ts", - "test:talonJs": "my-ts-node src/scripts/runTalonJsTests.ts", - "build:base": "bash ./scripts/compile-esbuild.sh", - "build": "pnpm run build:runner:vscode && pnpm run build:runner:neovim && pnpm run build:tests", - "build:runner:vscode": "pnpm run build:base ./src/runners/extensionTestsVscode.ts --outfile=dist/extensionTestsVscode.cjs", - "build:runner:neovim": "pnpm run build:base ./src/runners/extensionTestsNeovim.ts --outfile=out/runners/extensionTestsNeovim.cjs", - "build:tests": "bash ./scripts/build-tests.sh", - "compile": "tsc --build", - "watch": "tsc --build --watch", + "typecheck": "tsc", "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", - "generate-test-subset-file": "my-ts-node ./src/scripts/generateTestSubsetFile.ts --always-open", - "generate-test-subset-file-strict": "my-ts-node ./src/scripts/generateTestSubsetFile.ts --fail-if-not-exists" + "test": "c-tsx ./src/scripts/runUnitTests.ts", + "test:subset": "c-tsx ./src/scripts/runUnitTests.ts --subset", + "test:update": "c-tsx ./src/scripts/runUnitTests.ts --update", + "test:update:subset": "c-tsx ./src/scripts/runUnitTests.ts --update --subset", + "test:vscode": "c-tsx ./src/scripts/runVscodeTestsCI.ts", + "test:neovim": "c-tsx ./src/scripts/runNeovimTestsCI.ts", + "test:talon": "c-tsx ./src/scripts/runTalonTests.ts", + "test:talonJs": "c-tsx ./src/scripts/runTalonJsTests.ts", + "build": "bash ./scripts/compile-esbuild.sh", + "generate-test-subset-file": "c-tsx ./src/scripts/generateTestSubsetFile.ts --always-open", + "generate-test-subset-file-strict": "c-tsx ./src/scripts/generateTestSubsetFile.ts --fail-if-not-exists" }, "dependencies": { "@cursorless/common": "workspace:*", @@ -48,6 +44,7 @@ "@vscode/test-electron": "^2.5.2", "cross-spawn": "^7.0.6", "mocha": "^11.7.5", + "tsx": "^4.21.0", "web-tree-sitter": "^0.26.7" } } diff --git a/packages/test-harness/scripts/build-tests.sh b/packages/test-harness/scripts/build-tests.sh deleted file mode 100755 index c738692a89..0000000000 --- a/packages/test-harness/scripts/build-tests.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -find .. -name '*.test.ts' -print0 | xargs -0 -n 50 pnpm run build:base --outdir=dist --out-extension:.js=.cjs diff --git a/packages/test-harness/scripts/compile-esbuild.sh b/packages/test-harness/scripts/compile-esbuild.sh index 45fee394eb..926026df28 100755 --- a/packages/test-harness/scripts/compile-esbuild.sh +++ b/packages/test-harness/scripts/compile-esbuild.sh @@ -1,15 +1,16 @@ #!/usr/bin/env bash - set -euo pipefail -esbuild \ - --format=cjs \ - --bundle \ - --conditions=cursorless:bundler \ - --external:vscode \ - --external:./reporters/parallel-buffered \ - --external:./worker.js \ - --external:talon \ - --platform=node \ - --sourcemap \ - "$@" +# Compile vscode test runner +./scripts/run-esbuild.sh \ + ./src/runners/extensionTestsVscode.ts \ + --outfile=out/extensionTestsVscode.cjs + +# Compile neovim test runner +./scripts/run-esbuild.sh \ + ./src/runners/extensionTestsNeovim.ts \ + --outfile=out/extensionTestsNeovim.cjs + +# Compile test cases +find .. -name '*.test.ts' -print0 | + xargs -0 -n 50 ./scripts/run-esbuild.sh --outdir=out --out-extension:.js=.cjs diff --git a/packages/test-harness/scripts/run-esbuild.sh b/packages/test-harness/scripts/run-esbuild.sh new file mode 100755 index 0000000000..791bd6e0ae --- /dev/null +++ b/packages/test-harness/scripts/run-esbuild.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +set -euo pipefail + +esbuild \ + --format=cjs \ + --bundle \ + --external:vscode \ + --external:./reporters/parallel-buffered \ + --external:./worker.js \ + --external:talon \ + --platform=node \ + --sourcemap \ + "$@" diff --git a/packages/test-harness/src/launchVscodeAndRunTests.ts b/packages/test-harness/src/launchVscodeAndRunTests.ts index 0f88add038..f9ae463856 100644 --- a/packages/test-harness/src/launchVscodeAndRunTests.ts +++ b/packages/test-harness/src/launchVscodeAndRunTests.ts @@ -69,6 +69,9 @@ export async function launchVscodeAndRunTests(extensionTestsPath: string) { vscodeExecutablePath, extensionDevelopmentPath, extensionTestsPath, + extensionTestsEnv: { + ["CURSORLESS_MODE"]: "test", + }, // Note: Crash dump causes legacy VSCode and Windows to hang, so we just // don't bother. Can be re-enabled if we ever need it; on windows it only // hangs some of the time, so might be enough to get a crash dump when you diff --git a/packages/test-harness/src/runAllTests.ts b/packages/test-harness/src/runAllTests.ts index dba53163a6..867fe2b4c8 100644 --- a/packages/test-harness/src/runAllTests.ts +++ b/packages/test-harness/src/runAllTests.ts @@ -30,6 +30,8 @@ export enum TestType { } export function runAllTests(type: TestType): Promise { + parseArgumentsAndUpdateEnv(); + return runTestsInDir( path.join(getCursorlessRepoRoot(), "packages"), (files) => @@ -68,6 +70,12 @@ async function runTestsInDir( const files = filterFiles(await glob("**/**.test.cjs", { cwd: testRoot })); + if (files.length === 0) { + throw new Error( + `No test files found. Do you need to run "pnpm run build" first?`, + ); + } + // Add files to the test suite files.forEach((f) => mocha.addFile(path.resolve(testRoot, f))); @@ -97,3 +105,17 @@ async function runTestsInDir( throw err; } } + +function parseArgumentsAndUpdateEnv() { + const args = new Set(process.argv.slice(2)); + + process.env.CURSORLESS_MODE = "test"; + + if (args.has("--subset")) { + process.env.CURSORLESS_RUN_TEST_SUBSET = "true"; + } + + if (args.has("--update")) { + process.env.CURSORLESS_TEST_UPDATE_FIXTURES = "true"; + } +} diff --git a/packages/test-harness/src/scripts/runNeovimTestsCI.ts b/packages/test-harness/src/scripts/runNeovimTestsCI.ts index 331d3f16c0..1163e4ebd9 100644 --- a/packages/test-harness/src/scripts/runNeovimTestsCI.ts +++ b/packages/test-harness/src/scripts/runNeovimTestsCI.ts @@ -4,8 +4,4 @@ import { launchNeovimAndRunTests } from "../launchNeovimAndRunTests"; -process.env.CURSORLESS_MODE = "test"; - -void (async () => { - await launchNeovimAndRunTests(); -})(); +void launchNeovimAndRunTests(); diff --git a/packages/test-harness/src/scripts/runTalonJsTests.ts b/packages/test-harness/src/scripts/runTalonJsTests.ts index 2fd1f4f2c8..555ca83798 100644 --- a/packages/test-harness/src/scripts/runTalonJsTests.ts +++ b/packages/test-harness/src/scripts/runTalonJsTests.ts @@ -2,14 +2,6 @@ * Runs all Talon everywhere/JS tests. */ -process.env.CURSORLESS_MODE = "test"; +import { TestType, runAllTests } from "../runAllTests"; -void (async () => { - const { TestType, runAllTests } = await import("../runAllTests"); - - try { - await runAllTests(TestType.talonJs); - } catch (_ex) { - process.exit(1); - } -})(); +void runAllTests(TestType.talonJs); diff --git a/packages/test-harness/src/scripts/runTalonTests.ts b/packages/test-harness/src/scripts/runTalonTests.ts index 7b90ff06bd..8b8aab4526 100644 --- a/packages/test-harness/src/scripts/runTalonTests.ts +++ b/packages/test-harness/src/scripts/runTalonTests.ts @@ -1,6 +1,7 @@ /** * Runs all Talon tests. */ + import { TestType, runAllTests } from "../runAllTests"; void runAllTests(TestType.talon); diff --git a/packages/test-harness/src/scripts/runUnitTests.ts b/packages/test-harness/src/scripts/runUnitTests.ts new file mode 100644 index 0000000000..0d62c31fc4 --- /dev/null +++ b/packages/test-harness/src/scripts/runUnitTests.ts @@ -0,0 +1,7 @@ +/** + * Runs all tests that don't have to be run within a particular environment. + */ + +import { TestType, runAllTests } from "../runAllTests"; + +void runAllTests(TestType.unit); diff --git a/packages/test-harness/src/scripts/runUnitTestsOnly.ts b/packages/test-harness/src/scripts/runUnitTestsOnly.ts deleted file mode 100644 index d33b75a7f1..0000000000 --- a/packages/test-harness/src/scripts/runUnitTestsOnly.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Runs all tests that don't have to be run within VSCode. - */ - -const supportedArgs = new Set(["--subset", "--update"]); - -const args = new Set(process.argv.slice(2)); -const unsupportedArgs = [...args].filter((arg) => !supportedArgs.has(arg)); - -if (unsupportedArgs.length > 0) { - throw new Error(`Unsupported arguments: ${unsupportedArgs.join(", ")}`); -} - -process.env.CURSORLESS_MODE = "test"; - -if (args.has("--subset")) { - process.env.CURSORLESS_RUN_TEST_SUBSET = "true"; -} - -if (args.has("--update")) { - process.env.CURSORLESS_TEST_UPDATE_FIXTURES = "true"; -} - -void (async () => { - const { TestType, runAllTests } = await import("../runAllTests"); - - await runAllTests(TestType.unit); -})(); diff --git a/packages/test-harness/src/scripts/runVscodeTestsCI.ts b/packages/test-harness/src/scripts/runVscodeTestsCI.ts index 9439cd6b51..4cde3f5837 100644 --- a/packages/test-harness/src/scripts/runVscodeTestsCI.ts +++ b/packages/test-harness/src/scripts/runVscodeTestsCI.ts @@ -6,13 +6,9 @@ import { getCursorlessRepoRoot } from "@cursorless/node-common"; import * as path from "node:path"; import { launchVscodeAndRunTests } from "../launchVscodeAndRunTests"; -process.env.CURSORLESS_MODE = "test"; +const extensionTestsPath = path.resolve( + getCursorlessRepoRoot(), + "packages/test-harness/out/extensionTestsVscode.cjs", +); -void (async () => { - const extensionTestsPath = path.resolve( - getCursorlessRepoRoot(), - "packages/test-harness/dist/extensionTestsVscode.cjs", - ); - - await launchVscodeAndRunTests(extensionTestsPath); -})(); +void launchVscodeAndRunTests(extensionTestsPath); diff --git a/packages/test-harness/tsconfig.json b/packages/test-harness/tsconfig.json index e49927123b..d4fbbd0828 100644 --- a/packages/test-harness/tsconfig.json +++ b/packages/test-harness/tsconfig.json @@ -1,18 +1,4 @@ { "extends": "../../tsconfig.base.json", - "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"], - "references": [ - { - "path": "../common" - }, - { - "path": "../neovim-common" - }, - { - "path": "../neovim-registry" - }, - { - "path": "../node-common" - } - ] + "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"] } diff --git a/packages/vscode-common/package.json b/packages/vscode-common/package.json index de4bb44675..09b733c9f2 100644 --- a/packages/vscode-common/package.json +++ b/packages/vscode-common/package.json @@ -4,22 +4,12 @@ "description": "Common utility functions usable anywhere that VSCode api is available", "license": "MIT", "type": "module", - "main": "./out/index.js", - "types": "./out/index.d.ts", "exports": { - ".": { - "cursorless:bundler": "./src/index.ts", - "default": "./out/index.js" - } + ".": "./src/index.ts" }, "scripts": { - "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build", - "compile:tsc": "tsc --build", - "compile:esbuild": "bash ../../scripts/compile-esbuild.sh", - "compile": "pnpm compile:tsc && pnpm compile:esbuild", - "watch:tsc": "pnpm compile:tsc --watch", - "watch:esbuild": "pnpm compile:esbuild --watch", - "watch": "pnpm run --filter @cursorless/vscode-common --parallel '/^watch:.*/'" + "typecheck": "tsc", + "clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build" }, "dependencies": { "@cursorless/common": "workspace:*" diff --git a/packages/vscode-common/tsconfig.json b/packages/vscode-common/tsconfig.json index 0f90f239b4..d4fbbd0828 100644 --- a/packages/vscode-common/tsconfig.json +++ b/packages/vscode-common/tsconfig.json @@ -1,9 +1,4 @@ { "extends": "../../tsconfig.base.json", - "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"], - "references": [ - { - "path": "../common" - } - ] + "include": ["src/**/*.ts", "src/**/*.json", "../../typings/**/*.d.ts"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 502c7aad6b..5e2a09a62c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -49,7 +49,7 @@ importers: version: 4.4.4(eslint-plugin-import@2.32.0)(eslint@10.0.3(jiti@2.6.1)) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.57.0(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.3(jiti@2.6.1)) + version: 2.32.0(@typescript-eslint/parser@8.57.1(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.3(jiti@2.6.1)) eslint-plugin-mocha: specifier: ^11.2.0 version: 11.2.0(eslint@10.0.3(jiti@2.6.1)) @@ -58,7 +58,7 @@ importers: version: 63.0.0(eslint@10.0.3(jiti@2.6.1)) eslint-plugin-unused-imports: specifier: ^4.4.1 - version: 4.4.1(@typescript-eslint/eslint-plugin@8.57.0(@typescript-eslint/parser@8.57.0(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.3(jiti@2.6.1)) + version: 4.4.1(@typescript-eslint/eslint-plugin@8.57.1(@typescript-eslint/parser@8.57.1(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.3(jiti@2.6.1)) prettier: specifier: ^3.8.1 version: 3.8.1 @@ -81,8 +81,8 @@ importers: specifier: ^5.9.3 version: 5.9.3 typescript-eslint: - specifier: ^8.57.0 - version: 8.57.0(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3) + specifier: ^8.57.1 + version: 8.57.1(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3) packages/cheatsheet: dependencies: @@ -144,13 +144,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.0 - version: 8.0.0(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + version: 8.0.0(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) vite-plugin-purgecss: specifier: ^0.2.13 - version: 0.2.13(@swc/core@1.15.18)(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(postcss@8.5.8)(sass@1.98.0)(terser@5.46.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) + version: 0.2.13(@swc/core@1.15.18)(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(postcss@8.5.8)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) vite-plugin-singlefile: specifier: ^2.3.2 - version: 2.3.2(rollup@4.59.0)(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + version: 2.3.2(rollup@4.59.0)(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) packages/common: dependencies: @@ -229,8 +229,8 @@ importers: specifier: workspace:* version: link:../sentence-parser '@cursorless/talon-tools': - specifier: ^0.7.0 - version: 0.7.0 + specifier: ^0.8.0 + version: 0.8.0 immer: specifier: ^11.1.4 version: 11.1.4 @@ -287,8 +287,8 @@ importers: specifier: ^11.7.5 version: 11.7.5 sinon: - specifier: ^21.0.2 - version: 21.0.2 + specifier: ^21.0.3 + version: 21.0.3 vscode-uri: specifier: ^3.1.0 version: 3.1.0 @@ -342,6 +342,9 @@ importers: '@types/mocha': specifier: ^10.0.10 version: 10.0.10 + esbuild: + specifier: ^0.27.4 + version: 0.27.4 mocha: specifier: ^11.7.5 version: 11.7.5 @@ -423,8 +426,8 @@ importers: specifier: ^5.4.0 version: 5.4.0 sinon: - specifier: ^21.0.2 - version: 21.0.2 + specifier: ^21.0.3 + version: 21.0.3 packages/cursorless-org: dependencies: @@ -461,13 +464,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.0 - version: 8.0.0(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + version: 8.0.0(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) vite-plugin-purgecss: specifier: ^0.2.13 - version: 0.2.13(@swc/core@1.15.18)(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(postcss@8.5.8)(sass@1.98.0)(terser@5.46.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) + version: 0.2.13(@swc/core@1.15.18)(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(postcss@8.5.8)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) vite-plugin-svgr: specifier: ^4.5.0 - version: 4.5.0(rollup@4.59.0)(typescript@5.9.3)(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.5.0(rollup@4.59.0)(typescript@5.9.3)(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)) packages/cursorless-org-docs: dependencies: @@ -482,22 +485,22 @@ importers: version: 4.6.0(@algolia/client-search@5.49.2)(@types/react@19.2.14)(algoliasearch@5.49.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3) '@docusaurus/core': specifier: ^3.9.2 - version: 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + version: 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/faster': specifier: ^3.9.2 version: 3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4) '@docusaurus/preset-classic': specifier: ^3.9.2 - version: 3.9.2(@algolia/client-search@5.49.2)(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(@types/react@19.2.14)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@5.9.3) + version: 3.9.2(@algolia/client-search@5.49.2)(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(@types/react@19.2.14)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@5.9.3) '@docusaurus/theme-classic': specifier: ^3.9.2 - version: 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(@types/react@19.2.14)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + version: 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(@types/react@19.2.14)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/theme-common': specifier: ^3.9.2 - version: 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/theme-search-algolia': specifier: ^3.9.2 - version: 3.9.2(@algolia/client-search@5.49.2)(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(@types/react@19.2.14)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@5.9.3) + version: 3.9.2(@algolia/client-search@5.49.2)(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(@types/react@19.2.14)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@5.9.3) '@mdx-js/react': specifier: ^3.1.1 version: 3.1.1(@types/react@19.2.14)(react@19.2.4) @@ -509,7 +512,7 @@ importers: version: 2.1.1 docusaurus-plugin-sass: specifier: ^0.2.6 - version: 0.2.6(@docusaurus/core@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@rspack/core@1.7.8)(sass@1.98.0)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)) + version: 0.2.6(@docusaurus/core@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@rspack/core@1.7.9)(sass@1.98.0)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)) mdast-util-find-and-replace: specifier: ^3.0.2 version: 3.0.2 @@ -652,14 +655,17 @@ importers: specifier: ^0.27.4 version: 0.27.4 fast-xml-parser: - specifier: ^5.5.5 - version: 5.5.5 + specifier: ^5.5.6 + version: 5.5.6 fs-extra: specifier: ^11.3.4 version: 11.3.4 sinon: - specifier: ^21.0.2 - version: 21.0.2 + specifier: ^21.0.3 + version: 21.0.3 + tsx: + specifier: ^4.21.0 + version: 4.21.0 packages/cursorless-vscode-e2e: dependencies: @@ -713,8 +719,8 @@ importers: specifier: ^7.7.4 version: 7.7.4 sinon: - specifier: ^21.0.2 - version: 21.0.2 + specifier: ^21.0.3 + version: 21.0.3 packages/cursorless-vscode-tutorial-webview: dependencies: @@ -733,10 +739,10 @@ importers: version: 1.57.5 vite: specifier: ^8.0.0 - version: 8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + version: 8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) vite-plugin-purgecss: specifier: ^0.2.13 - version: 0.2.13(@swc/core@1.15.18)(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.32.0)(postcss@8.5.8)(sass@1.98.0)(terser@5.46.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) + version: 0.2.13(@swc/core@1.15.18)(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.32.0)(postcss@8.5.8)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) packages/meta-updater: devDependencies: @@ -770,9 +776,6 @@ importers: normalize-path: specifier: ^3.0.0 version: 3.0.0 - path-exists: - specifier: ^5.0.0 - version: 5.0.0 type-fest: specifier: ^5.4.4 version: 5.4.4 @@ -921,6 +924,9 @@ importers: mocha: specifier: ^11.7.5 version: 11.7.5 + tsx: + specifier: ^4.21.0 + version: 4.21.0 web-tree-sitter: specifier: ^0.26.7 version: 0.26.7 @@ -1049,8 +1055,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-define-polyfill-provider@0.6.7': - resolution: {integrity: sha512-6Fqi8MtQ/PweQ9xvux65emkLQ83uB+qAVtfHkC9UodyHMIZdxNI01HjLCLUtybElp2KY2XNE0nOgyP1E1vXw9w==} + '@babel/helper-define-polyfill-provider@0.6.8': + resolution: {integrity: sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -1112,12 +1118,12 @@ packages: resolution: {integrity: sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.28.6': - resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} + '@babel/helpers@7.29.2': + resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.0': - resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} + '@babel/parser@7.29.2': + resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} engines: {node: '>=6.0.0'} hasBin: true @@ -1613,8 +1619,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.29.0': - resolution: {integrity: sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w==} + '@babel/preset-env@7.29.2': + resolution: {integrity: sha512-DYD23veRYGvBFhcTY1iUvJnDNpuqNd/BzBwCvzOTKUnJjKg5kpUBh3/u9585Agdkgj+QuygG7jLfOPWMa2KVNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1636,12 +1642,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime-corejs3@7.29.0': - resolution: {integrity: sha512-TgUkdp71C9pIbBcHudc+gXZnihEDOjUAmXO1VO4HHGES7QLZcShR0stfKIxLSNIYx2fqhmJChOjm/wkF8wv4gA==} + '@babel/runtime-corejs3@7.29.2': + resolution: {integrity: sha512-Lc94FOD5+0aXhdb0Tdg3RUtqT6yWbI/BbFWvlaSJ3gAb9Ks+99nHRDKADVqC37er4eCB0fHyWT+y+K3QOvJKbw==} engines: {node: '>=6.9.0'} - '@babel/runtime@7.28.6': - resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} + '@babel/runtime@7.29.2': + resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} engines: {node: '>=6.9.0'} '@babel/template@7.28.6': @@ -2021,8 +2027,8 @@ packages: peerDependencies: postcss: ^8.4 - '@cursorless/talon-tools@0.7.0': - resolution: {integrity: sha512-P7sJyKC61UfhX2P+5KIV9pME7qx6M7L4tgDGOO7RNSrfoTXsP+SSjFDh/0zxyXinO9J3J6acCf/z+acIEIbVWA==} + '@cursorless/talon-tools@0.8.0': + resolution: {integrity: sha512-JGcwGfX57dcgIykJVBmZRyeiTptBuunamhw0kTjERb3ob0K1YyS6BzqVEDwtj58We5VqQF8myHnhVzbu0+VyGw==} hasBin: true '@cursorless/tree-sitter-wasms@0.7.0': @@ -2967,6 +2973,10 @@ packages: '@napi-rs/wasm-runtime@1.1.1': resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -3085,6 +3095,40 @@ packages: resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} engines: {node: '>= 10.0.0'} + '@peculiar/asn1-cms@2.6.1': + resolution: {integrity: sha512-vdG4fBF6Lkirkcl53q6eOdn3XYKt+kJTG59edgRZORlg/3atWWEReRCx5rYE1ZzTTX6vLK5zDMjHh7vbrcXGtw==} + + '@peculiar/asn1-csr@2.6.1': + resolution: {integrity: sha512-WRWnKfIocHyzFYQTka8O/tXCiBquAPSrRjXbOkHbO4qdmS6loffCEGs+rby6WxxGdJCuunnhS2duHURhjyio6w==} + + '@peculiar/asn1-ecc@2.6.1': + resolution: {integrity: sha512-+Vqw8WFxrtDIN5ehUdvlN2m73exS2JVG0UAyfVB31gIfor3zWEAQPD+K9ydCxaj3MLen9k0JhKpu9LqviuCE1g==} + + '@peculiar/asn1-pfx@2.6.1': + resolution: {integrity: sha512-nB5jVQy3MAAWvq0KY0R2JUZG8bO/bTLpnwyOzXyEh/e54ynGTatAR+csOnXkkVD9AFZ2uL8Z7EV918+qB1qDvw==} + + '@peculiar/asn1-pkcs8@2.6.1': + resolution: {integrity: sha512-JB5iQ9Izn5yGMw3ZG4Nw3Xn/hb/G38GYF3lf7WmJb8JZUydhVGEjK/ZlFSWhnlB7K/4oqEs8HnfFIKklhR58Tw==} + + '@peculiar/asn1-pkcs9@2.6.1': + resolution: {integrity: sha512-5EV8nZoMSxeWmcxWmmcolg22ojZRgJg+Y9MX2fnE2bGRo5KQLqV5IL9kdSQDZxlHz95tHvIq9F//bvL1OeNILw==} + + '@peculiar/asn1-rsa@2.6.1': + resolution: {integrity: sha512-1nVMEh46SElUt5CB3RUTV4EG/z7iYc7EoaDY5ECwganibQPkZ/Y2eMsTKB/LeyrUJ+W/tKoD9WUqIy8vB+CEdA==} + + '@peculiar/asn1-schema@2.6.0': + resolution: {integrity: sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==} + + '@peculiar/asn1-x509-attr@2.6.1': + resolution: {integrity: sha512-tlW6cxoHwgcQghnJwv3YS+9OO1737zgPogZ+CgWRUK4roEwIPzRH4JEiG770xe5HX2ATfCpmX60gurfWIF9dcQ==} + + '@peculiar/asn1-x509@2.6.1': + resolution: {integrity: sha512-O9jT5F1A2+t3r7C4VT7LYGXqkGLK7Kj1xFpz7U0isPrubwU5PbDoyYtx6MiGst29yq7pXN5vZbQFKRCP+lLZlA==} + + '@peculiar/x509@1.14.3': + resolution: {integrity: sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==} + engines: {node: '>=20.0.0'} + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -3969,64 +4013,64 @@ packages: cpu: [x64] os: [win32] - '@rspack/binding-darwin-arm64@1.7.8': - resolution: {integrity: sha512-KS6SRc+4VYRdX1cKr1j1HEuMNyEzt7onBS0rkenaiCRRYF0z4WNZNyZqRiuxgM3qZ3TISF7gdmgJQyd4ZB43ig==} + '@rspack/binding-darwin-arm64@1.7.9': + resolution: {integrity: sha512-64dgstte0If5czi9bA/cpOe0ryY6wC9AIQRtyJ3DlOF6Tt+y9cKkmUoGu3V+WYaYIZRT7HNk8V7kL8amVjFTYw==} cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-x64@1.7.8': - resolution: {integrity: sha512-uyXSDKLg2CtqIJrsJDlCqQH80YIPsCUiTToJ59cXAG3v4eke0Qbiv6d/+pV0h/mc0u4inAaSkr5dD18zkMIghw==} + '@rspack/binding-darwin-x64@1.7.9': + resolution: {integrity: sha512-2QSLs3w4rLy4UUGVnIlkt6IlIKOzR1e0RPsq2FYQW6s3p9JrwRCtOeHohyh7EJSqF54dtfhe9UZSAwba3LqH1Q==} cpu: [x64] os: [darwin] - '@rspack/binding-linux-arm64-gnu@1.7.8': - resolution: {integrity: sha512-dD6gSHA18Uj0eqc1FCwwQ5IO5mIckrpYN4H4kPk9Pjau+1mxWvC4y5Lryz1Z8P/Rh1lnQ/wwGE0XL9nd80+LqQ==} + '@rspack/binding-linux-arm64-gnu@1.7.9': + resolution: {integrity: sha512-qhUGI/uVfvLmKWts4QkVHGL8yfUyJkblZs+OFD5Upa2y676EOsbQgWsCwX4xGB6Tv+TOzFP0SLh/UfO8ZfdE+w==} cpu: [arm64] os: [linux] libc: [glibc] - '@rspack/binding-linux-arm64-musl@1.7.8': - resolution: {integrity: sha512-m+uBi9mEVGkZ02PPOAYN2BSmmvc00XGa6v9CjV8qLpolpUXQIMzDNG+i1fD5SHp8LO+XWsZJOHypMsT0MzGTGw==} + '@rspack/binding-linux-arm64-musl@1.7.9': + resolution: {integrity: sha512-VjfmR1hgO9n3L6MaE5KG+DXSrrLVqHHOkVcOtS2LMq3bjMTwbBywY7ycymcLnX5KJsol8d3ZGYep6IfSOt3lFA==} cpu: [arm64] os: [linux] libc: [musl] - '@rspack/binding-linux-x64-gnu@1.7.8': - resolution: {integrity: sha512-IAPp2L3yS33MAEkcGn/I1gO+a+WExJHXz2ZlRlL2oFCUGpYi2ZQHyAcJ3o2tJqkXmdqsTiN+OjEVMd/RcLa24g==} + '@rspack/binding-linux-x64-gnu@1.7.9': + resolution: {integrity: sha512-0kldV+3WTs/VYDWzxJ7K40hCW26IHtnk8xPK3whKoo1649rgeXXa0EdsU5P7hG8Ef5SWQjHHHZ/fuHYSO3Y6HA==} cpu: [x64] os: [linux] libc: [glibc] - '@rspack/binding-linux-x64-musl@1.7.8': - resolution: {integrity: sha512-do/QNzb4GWdXCsipblDcroqRDR3BFcbyzpZpAw/3j9ajvEqsOKpdHZpILT2NZX/VahhjqfqB3k0kJVt3uK7UYQ==} + '@rspack/binding-linux-x64-musl@1.7.9': + resolution: {integrity: sha512-Gi4872cFtc2d83FKATR6Qcf2VBa/tFCqffI/IwRRl6Hx5FulEBqx+tH7gAuRVF693vrbXNxK+FQ+k4iEsEJxrw==} cpu: [x64] os: [linux] libc: [musl] - '@rspack/binding-wasm32-wasi@1.7.8': - resolution: {integrity: sha512-mHtgYTpdhx01i0XNKFYBZyCjtv9YUe/sDfpD1QK4FytPFB+1VpYnmZiaJIMM77VpNsjxGAqWhmUYxi2P6jWifw==} + '@rspack/binding-wasm32-wasi@1.7.9': + resolution: {integrity: sha512-5QEzqo6EaolpuZmK6w/mgSueorgGnnzp7dJaAvBj6ECFIg/aLXhXXmWCWbxt7Ws2gKvG5/PgaxDqbUxYL51juA==} cpu: [wasm32] - '@rspack/binding-win32-arm64-msvc@1.7.8': - resolution: {integrity: sha512-Mkxg86F7kIT4pM9XvE/1LAGjK5NOQi/GJxKyyiKbUAeKM8XBUizVeNuvKR0avf2V5IDAIRXiH1SX8SpujMJteA==} + '@rspack/binding-win32-arm64-msvc@1.7.9': + resolution: {integrity: sha512-MMqvcrIc8aOqTuHjWkjdzilvoZ3Hv07Od0Foogiyq3JMudsS3Wcmh7T1dFerGg19MOJcRUeEkrg2NQOMOQ6xDA==} cpu: [arm64] os: [win32] - '@rspack/binding-win32-ia32-msvc@1.7.8': - resolution: {integrity: sha512-VmTOZ/X7M85lKFNwb2qJpCRzr4SgO42vucq/X7Uz1oSoTPAf8UUMNdi7BPnu+D4lgy6l8PwV804ZyHO3gGsvPA==} + '@rspack/binding-win32-ia32-msvc@1.7.9': + resolution: {integrity: sha512-4kYYS+NZ2CuNbKjq40yB/UEyB51o1PHj5wpr+Y943oOJXpEKWU2Q4vkF8VEohPEcnA9cKVotYCnqStme+02suA==} cpu: [ia32] os: [win32] - '@rspack/binding-win32-x64-msvc@1.7.8': - resolution: {integrity: sha512-BK0I4HAwp/yQLnmdJpUtGHcht3x11e9fZwyaiMzznznFc+Oypbf+FS5h+aBgpb53QnNkPpdG7MfAPoKItOcU8A==} + '@rspack/binding-win32-x64-msvc@1.7.9': + resolution: {integrity: sha512-1g+QyXXvs+838Un/4GaUvJfARDGHMCs15eXDYWBl5m/Skubyng8djWAgr6ag1+cVoJZXCPOvybTItcblWF3gbQ==} cpu: [x64] os: [win32] - '@rspack/binding@1.7.8': - resolution: {integrity: sha512-P4fbrQx5hRhAiC8TBTEMCTnNawrIzJLjWwAgrTwRxjgenpjNvimEkQBtSGrXOY+c+MV5Q74P+9wPvVWLKzRkQQ==} + '@rspack/binding@1.7.9': + resolution: {integrity: sha512-A56e0NdfNwbOSJoilMkxzaPuVYaKCNn1shuiwWnCIBmhV9ix1n9S1XvquDjkGyv+gCdR1+zfJBOa5DMB7htLHw==} - '@rspack/core@1.7.8': - resolution: {integrity: sha512-kT6yYo8xjKoDfM7iB8N9AmN9DJIlrs7UmQDbpTu1N4zaZocN1/t2fIAWOKjr5+3eJlZQR2twKZhDVHNLbLPjOw==} + '@rspack/core@1.7.9': + resolution: {integrity: sha512-VHuSKvRkuv42Ya+TxEGO0LE0r9+8P4tKGokmomj4R1f/Nu2vtS3yoaIMfC4fR6VuHGd3MZ+KTI0cNNwHfFcskw==} engines: {node: '>=18.12.0'} peerDependencies: '@swc/helpers': ^0.5.17 @@ -4112,8 +4156,8 @@ packages: '@sinonjs/fake-timers@15.1.1': resolution: {integrity: sha512-cO5W33JgAPbOh07tvZjUOJ7oWhtaqGHiZw+11DPbyqh2kHTBc3eF/CjJDeQ4205RLQsX6rxCuYOroFQwl7JDRw==} - '@sinonjs/samsam@9.0.2': - resolution: {integrity: sha512-H/JSxa4GNKZuuU41E3b8Y3tbSEx8y4uq4UH1C56ONQac16HblReJomIvv3Ud7ANQHQmkeSowY49Ij972e/pGxQ==} + '@sinonjs/samsam@9.0.3': + resolution: {integrity: sha512-ZgYY7Dc2RW+OUdnZ1DEHg00lhRt+9BjymPKHog4PRFzr1U3MbK57+djmscWyKxzO1qfunHqs4N45WWyKIFKpiQ==} '@slorber/react-helmet-async@1.3.0': resolution: {integrity: sha512-e9/OK8VhwUSc67diWI8Rb3I0YgI9/SBQtnhe9aEuK6MhZm7ntZZimXgwXnd8W96YTmSOb9M4d8LwhRZyhWr/1A==} @@ -4577,9 +4621,6 @@ packages: '@types/nearley@2.11.5': resolution: {integrity: sha512-dM7TrN0bVxGGXTYGx4YhGear8ysLO5SOuouAWM9oltjQ3m9oYa13qi8Z1DJp5zxVMPukvQdsrnZmgzpeuTSEQA==} - '@types/node-forge@1.3.14': - resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} - '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} @@ -4685,63 +4726,63 @@ packages: '@types/yargs@17.0.35': resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} - '@typescript-eslint/eslint-plugin@8.57.0': - resolution: {integrity: sha512-qeu4rTHR3/IaFORbD16gmjq9+rEs9fGKdX0kF6BKSfi+gCuG3RCKLlSBYzn/bGsY9Tj7KE/DAQStbp8AHJGHEQ==} + '@typescript-eslint/eslint-plugin@8.57.1': + resolution: {integrity: sha512-Gn3aqnvNl4NGc6x3/Bqk1AOn0thyTU9bqDRhiRnUWezgvr2OnhYCWCgC8zXXRVqBsIL1pSDt7T9nJUe0oM0kDQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.57.0 + '@typescript-eslint/parser': ^8.57.1 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.57.0': - resolution: {integrity: sha512-XZzOmihLIr8AD1b9hL9ccNMzEMWt/dE2u7NyTY9jJG6YNiNthaD5XtUHVF2uCXZ15ng+z2hT3MVuxnUYhq6k1g==} + '@typescript-eslint/parser@8.57.1': + resolution: {integrity: sha512-k4eNDan0EIMTT/dUKc/g+rsJ6wcHYhNPdY19VoX/EOtaAG8DLtKCykhrUnuHPYvinn5jhAPgD2Qw9hXBwrahsw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.57.0': - resolution: {integrity: sha512-pR+dK0BlxCLxtWfaKQWtYr7MhKmzqZxuii+ZjuFlZlIGRZm22HnXFqa2eY+90MUz8/i80YJmzFGDUsi8dMOV5w==} + '@typescript-eslint/project-service@8.57.1': + resolution: {integrity: sha512-vx1F37BRO1OftsYlmG9xay1TqnjNVlqALymwWVuYTdo18XuKxtBpCj1QlzNIEHlvlB27osvXFWptYiEWsVdYsg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.57.0': - resolution: {integrity: sha512-nvExQqAHF01lUM66MskSaZulpPL5pgy5hI5RfrxviLgzZVffB5yYzw27uK/ft8QnKXI2X0LBrHJFr1TaZtAibw==} + '@typescript-eslint/scope-manager@8.57.1': + resolution: {integrity: sha512-hs/QcpCwlwT2L5S+3fT6gp0PabyGk4Q0Rv2doJXA0435/OpnSR3VRgvrp8Xdoc3UAYSg9cyUjTeFXZEPg/3OKg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.57.0': - resolution: {integrity: sha512-LtXRihc5ytjJIQEH+xqjB0+YgsV4/tW35XKX3GTZHpWtcC8SPkT/d4tqdf1cKtesryHm2bgp6l555NYcT2NLvA==} + '@typescript-eslint/tsconfig-utils@8.57.1': + resolution: {integrity: sha512-0lgOZB8cl19fHO4eI46YUx2EceQqhgkPSuCGLlGi79L2jwYY1cxeYc1Nae8Aw1xjgW3PKVDLlr3YJ6Bxx8HkWg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.57.0': - resolution: {integrity: sha512-yjgh7gmDcJ1+TcEg8x3uWQmn8ifvSupnPfjP21twPKrDP/pTHlEQgmKcitzF/rzPSmv7QjJ90vRpN4U+zoUjwQ==} + '@typescript-eslint/type-utils@8.57.1': + resolution: {integrity: sha512-+Bwwm0ScukFdyoJsh2u6pp4S9ktegF98pYUU0hkphOOqdMB+1sNQhIz8y5E9+4pOioZijrkfNO/HUJVAFFfPKA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.57.0': - resolution: {integrity: sha512-dTLI8PEXhjUC7B9Kre+u0XznO696BhXcTlOn0/6kf1fHaQW8+VjJAVHJ3eTI14ZapTxdkOmc80HblPQLaEeJdg==} + '@typescript-eslint/types@8.57.1': + resolution: {integrity: sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.57.0': - resolution: {integrity: sha512-m7faHcyVg0BT3VdYTlX8GdJEM7COexXxS6KqGopxdtkQRvBanK377QDHr4W/vIPAR+ah9+B/RclSW5ldVniO1Q==} + '@typescript-eslint/typescript-estree@8.57.1': + resolution: {integrity: sha512-ybe2hS9G6pXpqGtPli9Gx9quNV0TWLOmh58ADlmZe9DguLq0tiAKVjirSbtM1szG6+QH6rVXyU6GTLQbWnMY+g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.57.0': - resolution: {integrity: sha512-5iIHvpD3CZe06riAsbNxxreP+MuYgVUsV0n4bwLH//VJmgtt54sQeY2GszntJ4BjYCpMzrfVh2SBnUQTtys2lQ==} + '@typescript-eslint/utils@8.57.1': + resolution: {integrity: sha512-XUNSJ/lEVFttPMMoDVA2r2bwrl8/oPx8cURtczkSEswY5T3AeLmCy+EKWQNdL4u0MmAHOjcWrqJp2cdvgjn8dQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.57.0': - resolution: {integrity: sha512-zm6xx8UT/Xy2oSr2ZXD0pZo7Jx2XsCoID2IUh9YSTFRu7z+WdwYTRk6LhUftm1crwqbuoF6I8zAFeCMw0YjwDg==} + '@typescript-eslint/visitor-keys@8.57.1': + resolution: {integrity: sha512-YWnmJkXbofiz9KbnbbwuA2rpGkFPLbAIetcCNO6mJ8gdhdZ/v7WDXsoGFAJuM6ikUFKTlSQnjWnVO4ux+UzS6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -5135,6 +5176,10 @@ packages: as-table@1.0.55: resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} + asn1js@3.0.7: + resolution: {integrity: sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==} + engines: {node: '>=12.0.0'} + assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -5189,8 +5234,8 @@ packages: resolution: {integrity: sha512-+TRkByhsws6sfPjVaitzadk1I0F5sPvOVUH5tyTSzhePpsGIVrdeunHSw/C36QeocS95OOk8lunc4rlu5Anwsg==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - babel-plugin-polyfill-corejs2@0.4.16: - resolution: {integrity: sha512-xaVwwSfebXf0ooE11BJovZYKhFjIvQo7TsyVpETuIeH2JHv0k/T6Y5j22pPTvqYqmpkxdlPAJlyJ0tfOJAoMxw==} + babel-plugin-polyfill-corejs2@0.4.17: + resolution: {integrity: sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -5199,13 +5244,13 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-corejs3@0.14.1: - resolution: {integrity: sha512-ENp89vM9Pw4kv/koBb5N2f9bDZsR0hpf3BdPMOg/pkS3pwO4dzNnQZVXtBbeyAadgm865DmQG2jMMLqmZXvuCw==} + babel-plugin-polyfill-corejs3@0.14.2: + resolution: {integrity: sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-regenerator@0.6.7: - resolution: {integrity: sha512-OTYbUlSwXhNgr4g6efMZgsO8//jA61P7ZbRX3iTT53VON8l+WQS8IAUEVo4a4cWknrg2W8Cj4gQhRYNCJ8GkAA==} + babel-plugin-polyfill-regenerator@0.6.8: + resolution: {integrity: sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -5349,6 +5394,10 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} + bytestreamjs@2.0.1: + resolution: {integrity: sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==} + engines: {node: '>=6.0.0'} + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -5418,8 +5467,8 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001779: - resolution: {integrity: sha512-U5og2PN7V4DMgF50YPNtnZJGWVLFjjsN3zb6uMT5VGYIewieDj1upwfuVNXf4Kor+89c3iCRJnSzMD5LmTvsfA==} + caniuse-lite@1.0.30001780: + resolution: {integrity: sha512-llngX0E7nQci5BPJDqoZSbuZ5Bcs9F5db7EtgfwBerX9XGtkkiO4NwfDDIRzHTTwcYC8vC7bmeUEPGrKlR/TkQ==} castable-video@1.1.11: resolution: {integrity: sha512-LCRTK6oe7SB1SiUQFzZCo6D6gcEzijqBTVIuj3smKpQdesXM18QTbCVqWgh9MfOeQgTx/i9ji5jGcdqNPeWg2g==} @@ -5719,14 +5768,14 @@ packages: peerDependencies: webpack: ^5.1.0 - core-js-compat@3.48.0: - resolution: {integrity: sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==} + core-js-compat@3.49.0: + resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} - core-js-pure@3.48.0: - resolution: {integrity: sha512-1slJgk89tWC51HQ1AEqG+s2VuwpTRr8ocu4n20QUcH1v9lAN0RXen0Q0AABa/DK1I7RrNWLucplOHMx8hfTGTw==} + core-js-pure@3.49.0: + resolution: {integrity: sha512-XM4RFka59xATyJv/cS3O3Kml72hQXUeGRuuTmMYFxwzc9/7C8OYTaIR/Ji+Yt8DXzsFLNhat15cE/JP15HrCgw==} - core-js@3.48.0: - resolution: {integrity: sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==} + core-js@3.49.0: + resolution: {integrity: sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -6223,8 +6272,8 @@ packages: encoding@0.1.13: resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - enhanced-resolve@5.20.0: - resolution: {integrity: sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ==} + enhanced-resolve@5.20.1: + resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==} engines: {node: '>=10.13.0'} entities@2.2.0: @@ -6568,11 +6617,11 @@ packages: fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - fast-xml-builder@1.1.3: - resolution: {integrity: sha512-1o60KoFw2+LWKQu3IdcfcFlGTW4dpqEWmjhYec6H82AYZU2TVBXep6tMl8Z1Y+wM+ZrzCwe3BZ9Vyd9N2rIvmg==} + fast-xml-builder@1.1.4: + resolution: {integrity: sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==} - fast-xml-parser@5.5.5: - resolution: {integrity: sha512-NLY+V5NNbdmiEszx9n14mZBseJTC50bRq1VHsaxOmR72JDuZt+5J1Co+dC/4JPnyq+WrIHNM69r0sqf7BMb3Mg==} + fast-xml-parser@5.5.6: + resolution: {integrity: sha512-3+fdZyBRVg29n4rXP0joHthhcHdPUHaIC16cuyyd1iLsuaO6Vea36MPrxgAzbZna8lhvZeRL8Bc9GP56/J9xEw==} hasBin: true fastest-levenshtein@1.0.16: @@ -6682,8 +6731,8 @@ packages: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true - flatted@3.4.1: - resolution: {integrity: sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==} + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} fn.name@1.1.0: resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} @@ -8541,10 +8590,6 @@ packages: resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==} engines: {node: '>=18'} - node-forge@1.3.3: - resolution: {integrity: sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==} - engines: {node: '>= 6.13.0'} - node-gyp@11.5.0: resolution: {integrity: sha512-ra7Kvlhxn5V9Slyus0ygMa2h+UqExPqUIkfk7Pc8QTLT956JLSy51uWFwHtIYy0vI8cB4BDhc/S03+880My/LQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -8940,6 +8985,10 @@ packages: pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + pkijs@3.3.3: + resolution: {integrity: sha512-+KD8hJtqQMYoTuL1bbGOqxb4z+nZkTAwVdNtWwe8Tc2xNbEmdJYIYoc6Qt0uF55e6YW6KuTHw1DjQ18gMhzepw==} + engines: {node: '>=16.0.0'} + player.style@0.3.1: resolution: {integrity: sha512-z/T8hJGaTkHT9vdXgWdOgF37eB1FV7/j52VXQZ2lgEhpru9oT8TaUWIxp6GoxTnhPBM4X6nSbpkAHrT7UTjUKg==} @@ -9479,13 +9528,20 @@ packages: pure-rand@7.0.1: resolution: {integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==} - pure-rand@8.0.0: - resolution: {integrity: sha512-7rgWlxG2gAvFPIQfUreo1XYlNvrQ9VnQPFWdncPkdl3icucLK0InOxsaafbvxGTnI6Bk/Rxmslg0lQlRCuzOXw==} + pure-rand@8.2.0: + resolution: {integrity: sha512-KHnUjm68KSO/hqpWlVwagMDPrIjnDNY9r0DbKN79xEa5RU2MLUe0lICBGpWDF8cwmhUiN8r9A8DLGPVcFB62/A==} purgecss@4.1.3: resolution: {integrity: sha512-99cKy4s+VZoXnPxaoM23e5ABcP851nC2y2GROkkjS8eJaJtlciGavd7iYAw2V84WeBqggZ12l8ef44G99HmTaw==} hasBin: true + pvtsutils@1.3.6: + resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} + + pvutils@1.1.5: + resolution: {integrity: sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==} + engines: {node: '>=16.0.0'} + qified@0.6.0: resolution: {integrity: sha512-tsSGN1x3h569ZSU1u6diwhltLyfUWDp3YbFHedapTmpBl0B3P6U3+Qptg7xu+v+1io1EwhdPyyRHYbEw0KN2FA==} engines: {node: '>=20'} @@ -9667,6 +9723,9 @@ packages: resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} engines: {node: '>=12'} + reflect-metadata@0.2.2: + resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} + reflect.getprototypeof@1.0.10: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} @@ -9943,8 +10002,8 @@ packages: sax@1.2.1: resolution: {integrity: sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==} - sax@1.5.0: - resolution: {integrity: sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==} + sax@1.6.0: + resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} engines: {node: '>=11.0.0'} saxes@6.0.0: @@ -9982,9 +10041,9 @@ packages: select-hose@2.0.0: resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} - selfsigned@2.4.1: - resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} - engines: {node: '>=10'} + selfsigned@5.5.0: + resolution: {integrity: sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==} + engines: {node: '>=18'} semver-diff@4.0.0: resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} @@ -10091,8 +10150,8 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - sinon@21.0.2: - resolution: {integrity: sha512-VHV4UaoxIe5jrMd89Y9duI76T5g3Lp+ET+ctLhLDaZtSznDPah1KKpRElbdBV4RwqWSw2vadFiVs9Del7MbVeQ==} + sinon@21.0.3: + resolution: {integrity: sha512-0x8TQFr8EjADhSME01u1ZK31yv2+bd6Z5NrBCHVM+n4qL1wFqbxftmeyi3bwlr49FbbzRfrqSFOpyHCOh/YmYA==} sirv@2.0.4: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} @@ -10568,8 +10627,8 @@ packages: uglify-js: optional: true - terser@5.46.0: - resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==} + terser@5.46.1: + resolution: {integrity: sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==} engines: {node: '>=10'} hasBin: true @@ -10746,6 +10805,9 @@ packages: tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -10773,6 +10835,10 @@ packages: engines: {node: '>=18.0.0'} hasBin: true + tsyringe@4.10.0: + resolution: {integrity: sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==} + engines: {node: '>= 6.0.0'} + twitch-video-element@0.1.6: resolution: {integrity: sha512-X7l8gy+DEFKJ/EztUwaVnAYwQN9fUJxPkOVJj2sE62sGvGU4DNLyvmOsmVulM+8Plc5dMg6hYIMNRAPaH+39Uw==} @@ -10850,8 +10916,8 @@ packages: typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - typescript-eslint@8.57.0: - resolution: {integrity: sha512-W8GcigEMEeB07xEZol8oJ26rigm3+bfPHxHvwbYUlu1fUDsGuQ7Hiskx5xGW/xM4USc9Ephe3jtv7ZYPQntHeA==} + typescript-eslint@8.57.1: + resolution: {integrity: sha512-fLvZWf+cAGw3tqMCYzGIU6yR8K+Y9NT2z23RwOjlNFF2HwSB3KhdEFI5lSBv8tNmFkkBShSjsCjzx1vahZfISA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -11205,8 +11271,8 @@ packages: webpack: optional: true - webpack-dev-server@5.2.2: - resolution: {integrity: sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==} + webpack-dev-server@5.2.3: + resolution: {integrity: sha512-9Gyu2F7+bg4Vv+pjbovuYDhHX+mqdqITykfzdM9UyKqKHlsE5aAjRhR+oOEfXW5vBeu8tarzlJFIZva4ZjAdrQ==} engines: {node: '>= 18.12.0'} hasBin: true peerDependencies: @@ -11605,8 +11671,8 @@ snapshots: '@babel/generator': 7.29.1 '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helpers': 7.28.6 - '@babel/parser': 7.29.0 + '@babel/helpers': 7.29.2 + '@babel/parser': 7.29.2 '@babel/template': 7.28.6 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 @@ -11621,7 +11687,7 @@ snapshots: '@babel/generator@7.29.1': dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/types': 7.29.0 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 @@ -11659,7 +11725,7 @@ snapshots: regexpu-core: 6.4.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.7(@babel/core@7.29.0)': + '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-compilation-targets': 7.28.6 @@ -11740,12 +11806,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helpers@7.28.6': + '@babel/helpers@7.29.2': dependencies: '@babel/template': 7.28.6 '@babel/types': 7.29.0 - '@babel/parser@7.29.0': + '@babel/parser@7.29.2': dependencies: '@babel/types': 7.29.0 @@ -12210,9 +12276,9 @@ snapshots: '@babel/core': 7.29.0 '@babel/helper-module-imports': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - babel-plugin-polyfill-corejs2: 0.4.16(@babel/core@7.29.0) + babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.0) babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.0) - babel-plugin-polyfill-regenerator: 0.6.7(@babel/core@7.29.0) + babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.0) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -12279,7 +12345,7 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 - '@babel/preset-env@7.29.0(@babel/core@7.29.0)': + '@babel/preset-env@7.29.2(@babel/core@7.29.0)': dependencies: '@babel/compat-data': 7.29.0 '@babel/core': 7.29.0 @@ -12347,10 +12413,10 @@ snapshots: '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.29.0) '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.29.0) '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.0) - babel-plugin-polyfill-corejs2: 0.4.16(@babel/core@7.29.0) - babel-plugin-polyfill-corejs3: 0.14.1(@babel/core@7.29.0) - babel-plugin-polyfill-regenerator: 0.6.7(@babel/core@7.29.0) - core-js-compat: 3.48.0 + babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.0) + babel-plugin-polyfill-corejs3: 0.14.2(@babel/core@7.29.0) + babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.0) + core-js-compat: 3.49.0 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -12385,16 +12451,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/runtime-corejs3@7.29.0': + '@babel/runtime-corejs3@7.29.2': dependencies: - core-js-pure: 3.48.0 + core-js-pure: 3.49.0 - '@babel/runtime@7.28.6': {} + '@babel/runtime@7.29.2': {} '@babel/template@7.28.6': dependencies: '@babel/code-frame': 7.29.0 - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/types': 7.29.0 '@babel/traverse@7.29.0': @@ -12402,7 +12468,7 @@ snapshots: '@babel/code-frame': 7.29.0 '@babel/generator': 7.29.1 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/template': 7.28.6 '@babel/types': 7.29.0 debug: 4.4.3(supports-color@8.1.1) @@ -12775,7 +12841,7 @@ snapshots: dependencies: postcss: 8.5.8 - '@cursorless/talon-tools@0.7.0': + '@cursorless/talon-tools@0.8.0': dependencies: '@cursorless/tree-sitter-wasms': 0.7.0 editorconfig: 3.0.2 @@ -12821,11 +12887,11 @@ snapshots: '@babel/generator': 7.29.1 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.0) '@babel/plugin-transform-runtime': 7.29.0(@babel/core@7.29.0) - '@babel/preset-env': 7.29.0(@babel/core@7.29.0) + '@babel/preset-env': 7.29.2(@babel/core@7.29.0) '@babel/preset-react': 7.28.5(@babel/core@7.29.0) '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) - '@babel/runtime': 7.28.6 - '@babel/runtime-corejs3': 7.29.0 + '@babel/runtime': 7.29.2 + '@babel/runtime-corejs3': 7.29.2 '@babel/traverse': 7.29.0 '@docusaurus/logger': 3.9.2 '@docusaurus/utils': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -12841,7 +12907,7 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/bundler@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/bundler@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: '@babel/core': 7.29.0 '@docusaurus/babel': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -12852,7 +12918,7 @@ snapshots: babel-loader: 9.2.1(@babel/core@7.29.0)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)) clean-css: 5.3.3 copy-webpack-plugin: 11.0.0(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)) - css-loader: 6.11.0(@rspack/core@1.7.8)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)) + css-loader: 6.11.0(@rspack/core@1.7.9)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)) css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(esbuild@0.27.4)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)) cssnano: 6.1.2(postcss@8.5.8) file-loader: 6.2.0(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)) @@ -12884,10 +12950,10 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/core@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/core@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: '@docusaurus/babel': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/bundler': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/bundler': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/logger': 3.9.2 '@docusaurus/mdx-loader': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -12900,7 +12966,7 @@ snapshots: cli-table3: 0.6.5 combine-promises: 1.2.0 commander: 5.1.0 - core-js: 3.48.0 + core-js: 3.49.0 detect-port: 1.6.1 escape-html: 1.0.3 eta: 2.2.0 @@ -12908,7 +12974,7 @@ snapshots: execa: 5.1.1 fs-extra: 11.3.4 html-tags: 3.3.1 - html-webpack-plugin: 5.6.6(@rspack/core@1.7.8)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)) + html-webpack-plugin: 5.6.6(@rspack/core@1.7.9)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)) leven: 3.1.0 lodash: 4.17.23 open: 8.4.2 @@ -12929,7 +12995,7 @@ snapshots: update-notifier: 6.0.2 webpack: 5.105.4(@swc/core@1.15.18)(esbuild@0.27.4) webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 5.2.2(tslib@2.8.1)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)) + webpack-dev-server: 5.2.3(tslib@2.8.1)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)) webpack-merge: 6.0.1 transitivePeerDependencies: - '@docusaurus/faster' @@ -12958,7 +13024,7 @@ snapshots: '@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4)': dependencies: '@docusaurus/types': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@rspack/core': 1.7.8 + '@rspack/core': 1.7.9 '@swc/core': 1.15.18 '@swc/html': 1.15.18 browserslist: 4.28.1 @@ -13030,13 +13096,13 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/plugin-content-blog@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/plugin-content-blog@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/logger': 3.9.2 '@docusaurus/mdx-loader': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/plugin-content-docs': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/plugin-content-docs': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/types': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils-common': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -13071,13 +13137,13 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/logger': 3.9.2 '@docusaurus/mdx-loader': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/module-type-aliases': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/types': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils-common': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -13111,9 +13177,9 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-content-pages@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/plugin-content-pages@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/mdx-loader': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/types': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -13141,9 +13207,9 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-css-cascade-layers@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/plugin-css-cascade-layers@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/types': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -13168,9 +13234,9 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-debug@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/plugin-debug@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/types': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) fs-extra: 11.3.4 @@ -13196,9 +13262,9 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-analytics@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/plugin-google-analytics@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/types': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: 19.2.4 @@ -13222,9 +13288,9 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-gtag@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/plugin-google-gtag@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/types': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@types/gtag.js': 0.0.12 @@ -13249,9 +13315,9 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-tag-manager@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/plugin-google-tag-manager@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/types': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: 19.2.4 @@ -13275,9 +13341,9 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-sitemap@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/plugin-sitemap@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/logger': 3.9.2 '@docusaurus/types': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -13306,9 +13372,9 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-svgr@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/plugin-svgr@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/types': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -13336,22 +13402,22 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/preset-classic@3.9.2(@algolia/client-search@5.49.2)(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(@types/react@19.2.14)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@5.9.3)': - dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/plugin-content-blog': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/plugin-content-docs': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/plugin-content-pages': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/plugin-css-cascade-layers': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/plugin-debug': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/plugin-google-analytics': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/plugin-google-gtag': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/plugin-google-tag-manager': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/plugin-sitemap': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/plugin-svgr': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/theme-classic': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(@types/react@19.2.14)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/theme-search-algolia': 3.9.2(@algolia/client-search@5.49.2)(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(@types/react@19.2.14)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@5.9.3) + '@docusaurus/preset-classic@3.9.2(@algolia/client-search@5.49.2)(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(@types/react@19.2.14)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@5.9.3)': + dependencies: + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-content-blog': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-content-docs': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-content-pages': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-css-cascade-layers': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-debug': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-google-analytics': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-google-gtag': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-google-tag-manager': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-sitemap': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-svgr': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/theme-classic': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(@types/react@19.2.14)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/theme-search-algolia': 3.9.2(@algolia/client-search@5.49.2)(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(@types/react@19.2.14)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@5.9.3) '@docusaurus/types': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) @@ -13381,16 +13447,16 @@ snapshots: '@types/react': 19.2.14 react: 19.2.4 - '@docusaurus/theme-classic@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(@types/react@19.2.14)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/theme-classic@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(@types/react@19.2.14)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/logger': 3.9.2 '@docusaurus/mdx-loader': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/module-type-aliases': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/plugin-content-blog': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/plugin-content-docs': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/plugin-content-pages': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/plugin-content-blog': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-content-docs': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-content-pages': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/theme-translations': 3.9.2 '@docusaurus/types': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -13428,11 +13494,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/theme-common@3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@docusaurus/theme-common@3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@docusaurus/mdx-loader': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/module-type-aliases': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/plugin-content-docs': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-content-docs': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/utils': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils-common': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@types/history': 4.7.11 @@ -13452,13 +13518,13 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/theme-search-algolia@3.9.2(@algolia/client-search@5.49.2)(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(@types/react@19.2.14)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@5.9.3)': + '@docusaurus/theme-search-algolia@3.9.2(@algolia/client-search@5.49.2)(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(@types/react@19.2.14)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@5.9.3)': dependencies: '@docsearch/react': 4.6.0(@algolia/client-search@5.49.2)(@types/react@19.2.14)(algoliasearch@5.49.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3) - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/logger': 3.9.2 - '@docusaurus/plugin-content-docs': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/plugin-content-docs': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/theme-translations': 3.9.2 '@docusaurus/utils': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils-validation': 3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -14333,6 +14399,8 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true + '@noble/hashes@1.4.0': {} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -14426,6 +14494,96 @@ snapshots: '@parcel/watcher-win32-x64': 2.5.6 optional: true + '@peculiar/asn1-cms@2.6.1': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.1 + '@peculiar/asn1-x509-attr': 2.6.1 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-csr@2.6.1': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.1 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-ecc@2.6.1': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.1 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-pfx@2.6.1': + dependencies: + '@peculiar/asn1-cms': 2.6.1 + '@peculiar/asn1-pkcs8': 2.6.1 + '@peculiar/asn1-rsa': 2.6.1 + '@peculiar/asn1-schema': 2.6.0 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-pkcs8@2.6.1': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.1 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-pkcs9@2.6.1': + dependencies: + '@peculiar/asn1-cms': 2.6.1 + '@peculiar/asn1-pfx': 2.6.1 + '@peculiar/asn1-pkcs8': 2.6.1 + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.1 + '@peculiar/asn1-x509-attr': 2.6.1 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-rsa@2.6.1': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.1 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-schema@2.6.0': + dependencies: + asn1js: 3.0.7 + pvtsutils: 1.3.6 + tslib: 2.8.1 + + '@peculiar/asn1-x509-attr@2.6.1': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.1 + asn1js: 3.0.7 + tslib: 2.8.1 + + '@peculiar/asn1-x509@2.6.1': + dependencies: + '@peculiar/asn1-schema': 2.6.0 + asn1js: 3.0.7 + pvtsutils: 1.3.6 + tslib: 2.8.1 + + '@peculiar/x509@1.14.3': + dependencies: + '@peculiar/asn1-cms': 2.6.1 + '@peculiar/asn1-csr': 2.6.1 + '@peculiar/asn1-ecc': 2.6.1 + '@peculiar/asn1-pkcs9': 2.6.1 + '@peculiar/asn1-rsa': 2.6.1 + '@peculiar/asn1-schema': 2.6.0 + '@peculiar/asn1-x509': 2.6.1 + pvtsutils: 1.3.6 + reflect-metadata: 0.2.2 + tslib: 2.8.1 + tsyringe: 4.10.0 + '@pkgjs/parseargs@0.11.0': optional: true @@ -15703,55 +15861,55 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.59.0': optional: true - '@rspack/binding-darwin-arm64@1.7.8': + '@rspack/binding-darwin-arm64@1.7.9': optional: true - '@rspack/binding-darwin-x64@1.7.8': + '@rspack/binding-darwin-x64@1.7.9': optional: true - '@rspack/binding-linux-arm64-gnu@1.7.8': + '@rspack/binding-linux-arm64-gnu@1.7.9': optional: true - '@rspack/binding-linux-arm64-musl@1.7.8': + '@rspack/binding-linux-arm64-musl@1.7.9': optional: true - '@rspack/binding-linux-x64-gnu@1.7.8': + '@rspack/binding-linux-x64-gnu@1.7.9': optional: true - '@rspack/binding-linux-x64-musl@1.7.8': + '@rspack/binding-linux-x64-musl@1.7.9': optional: true - '@rspack/binding-wasm32-wasi@1.7.8': + '@rspack/binding-wasm32-wasi@1.7.9': dependencies: '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@rspack/binding-win32-arm64-msvc@1.7.8': + '@rspack/binding-win32-arm64-msvc@1.7.9': optional: true - '@rspack/binding-win32-ia32-msvc@1.7.8': + '@rspack/binding-win32-ia32-msvc@1.7.9': optional: true - '@rspack/binding-win32-x64-msvc@1.7.8': + '@rspack/binding-win32-x64-msvc@1.7.9': optional: true - '@rspack/binding@1.7.8': + '@rspack/binding@1.7.9': optionalDependencies: - '@rspack/binding-darwin-arm64': 1.7.8 - '@rspack/binding-darwin-x64': 1.7.8 - '@rspack/binding-linux-arm64-gnu': 1.7.8 - '@rspack/binding-linux-arm64-musl': 1.7.8 - '@rspack/binding-linux-x64-gnu': 1.7.8 - '@rspack/binding-linux-x64-musl': 1.7.8 - '@rspack/binding-wasm32-wasi': 1.7.8 - '@rspack/binding-win32-arm64-msvc': 1.7.8 - '@rspack/binding-win32-ia32-msvc': 1.7.8 - '@rspack/binding-win32-x64-msvc': 1.7.8 - - '@rspack/core@1.7.8': + '@rspack/binding-darwin-arm64': 1.7.9 + '@rspack/binding-darwin-x64': 1.7.9 + '@rspack/binding-linux-arm64-gnu': 1.7.9 + '@rspack/binding-linux-arm64-musl': 1.7.9 + '@rspack/binding-linux-x64-gnu': 1.7.9 + '@rspack/binding-linux-x64-musl': 1.7.9 + '@rspack/binding-wasm32-wasi': 1.7.9 + '@rspack/binding-win32-arm64-msvc': 1.7.9 + '@rspack/binding-win32-ia32-msvc': 1.7.9 + '@rspack/binding-win32-x64-msvc': 1.7.9 + + '@rspack/core@1.7.9': dependencies: '@module-federation/runtime-tools': 0.22.0 - '@rspack/binding': 1.7.8 + '@rspack/binding': 1.7.9 '@rspack/lite-tapable': 1.1.0 '@rspack/lite-tapable@1.1.0': {} @@ -15828,14 +15986,14 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 - '@sinonjs/samsam@9.0.2': + '@sinonjs/samsam@9.0.3': dependencies: '@sinonjs/commons': 3.0.1 type-detect: 4.1.0 '@slorber/react-helmet-async@1.3.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 invariant: 2.2.4 prop-types: 15.8.1 react: 19.2.4 @@ -15937,7 +16095,7 @@ snapshots: dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-constant-elements': 7.27.1(@babel/core@7.29.0) - '@babel/preset-env': 7.29.0(@babel/core@7.29.0) + '@babel/preset-env': 7.29.2(@babel/core@7.29.0) '@babel/preset-react': 7.28.5(@babel/core@7.29.0) '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) '@svgr/core': 8.1.0(typescript@5.9.3) @@ -16111,7 +16269,7 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/types': 7.29.0 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 @@ -16123,7 +16281,7 @@ snapshots: '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/types': 7.29.0 '@types/babel__traverse@7.28.0': @@ -16275,10 +16433,6 @@ snapshots: '@types/nearley@2.11.5(patch_hash=72ccc6b9fd704c6d457027e12d6e1d005695ab3508558a08c6aaf73fb608ef69)': {} - '@types/node-forge@1.3.14': - dependencies: - '@types/node': 24.12.0 - '@types/node@17.0.45': {} '@types/node@24.12.0': @@ -16390,14 +16544,14 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.57.0(@typescript-eslint/parser@8.57.0(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.57.1(@typescript-eslint/parser@8.57.1(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.57.0(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.57.0 - '@typescript-eslint/type-utils': 8.57.0(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.0(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.57.0 + '@typescript-eslint/parser': 8.57.1(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.1 + '@typescript-eslint/type-utils': 8.57.1(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.1(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.1 eslint: 10.0.3(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 @@ -16406,41 +16560,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.57.0(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.57.1(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.57.0 - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.57.0 + '@typescript-eslint/scope-manager': 8.57.1 + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.1 debug: 4.4.3(supports-color@8.1.1) eslint: 10.0.3(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.57.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.57.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.3) - '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/tsconfig-utils': 8.57.1(typescript@5.9.3) + '@typescript-eslint/types': 8.57.1 debug: 4.4.3(supports-color@8.1.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.57.0': + '@typescript-eslint/scope-manager@8.57.1': dependencies: - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/visitor-keys': 8.57.0 + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/visitor-keys': 8.57.1 - '@typescript-eslint/tsconfig-utils@8.57.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.57.1(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.57.0(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.57.1(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.0(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.1(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@8.1.1) eslint: 10.0.3(jiti@2.6.1) ts-api-utils: 2.4.0(typescript@5.9.3) @@ -16448,14 +16602,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.57.0': {} + '@typescript-eslint/types@8.57.1': {} - '@typescript-eslint/typescript-estree@8.57.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.57.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.57.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.3) - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/visitor-keys': 8.57.0 + '@typescript-eslint/project-service': 8.57.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.57.1(typescript@5.9.3) + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/visitor-keys': 8.57.1 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.4 semver: 7.7.4 @@ -16465,20 +16619,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.57.0(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.57.1(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.3(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.57.0 - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.1 + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) eslint: 10.0.3(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.57.0': + '@typescript-eslint/visitor-keys@8.57.1': dependencies: - '@typescript-eslint/types': 8.57.0 + '@typescript-eslint/types': 8.57.1 eslint-visitor-keys: 5.0.1 '@ungap/structured-clone@1.3.0': {} @@ -16892,6 +17046,12 @@ snapshots: dependencies: printable-characters: 1.0.42 + asn1js@3.0.7: + dependencies: + pvtsutils: 1.3.6 + pvutils: 1.1.5 + tslib: 2.8.1 + assertion-error@2.0.1: {} astral-regex@2.0.0: {} @@ -16905,7 +17065,7 @@ snapshots: autoprefixer@10.4.27(postcss@8.5.8): dependencies: browserslist: 4.28.1 - caniuse-lite: 1.0.30001779 + caniuse-lite: 1.0.30001780 fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.8 @@ -16953,11 +17113,11 @@ snapshots: dependencies: '@types/babel__core': 7.20.5 - babel-plugin-polyfill-corejs2@0.4.16(@babel/core@7.29.0): + babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.0): dependencies: '@babel/compat-data': 7.29.0 '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.7(@babel/core@7.29.0) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -16965,23 +17125,23 @@ snapshots: babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.0): dependencies: '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.7(@babel/core@7.29.0) - core-js-compat: 3.48.0 + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) + core-js-compat: 3.49.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.14.1(@babel/core@7.29.0): + babel-plugin-polyfill-corejs3@0.14.2(@babel/core@7.29.0): dependencies: '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.7(@babel/core@7.29.0) - core-js-compat: 3.48.0 + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) + core-js-compat: 3.49.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.7(@babel/core@7.29.0): + babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.0): dependencies: '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.7(@babel/core@7.29.0) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) transitivePeerDependencies: - supports-color @@ -17129,7 +17289,7 @@ snapshots: browserslist@4.28.1: dependencies: baseline-browser-mapping: 2.10.8 - caniuse-lite: 1.0.30001779 + caniuse-lite: 1.0.30001780 electron-to-chromium: 1.5.313 node-releases: 2.0.36 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -17163,6 +17323,8 @@ snapshots: bytes@3.1.2: {} + bytestreamjs@2.0.1: {} + cac@6.7.14: {} cacache@19.0.1: @@ -17252,11 +17414,11 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.28.1 - caniuse-lite: 1.0.30001779 + caniuse-lite: 1.0.30001780 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001779: {} + caniuse-lite@1.0.30001780: {} castable-video@1.1.11: dependencies: @@ -17523,13 +17685,13 @@ snapshots: serialize-javascript: 6.0.2 webpack: 5.105.4(@swc/core@1.15.18)(esbuild@0.27.4) - core-js-compat@3.48.0: + core-js-compat@3.49.0: dependencies: browserslist: 4.28.1 - core-js-pure@3.48.0: {} + core-js-pure@3.49.0: {} - core-js@3.48.0: {} + core-js@3.49.0: {} core-util-is@1.0.3: {} @@ -17592,7 +17754,7 @@ snapshots: dependencies: hyphenate-style-name: 1.1.0 - css-loader@6.11.0(@rspack/core@1.7.8)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)): + css-loader@6.11.0(@rspack/core@1.7.9)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)): dependencies: icss-utils: 5.1.0(postcss@8.5.8) postcss: 8.5.8 @@ -17603,7 +17765,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.4 optionalDependencies: - '@rspack/core': 1.7.8 + '@rspack/core': 1.7.9 webpack: 5.105.4(@swc/core@1.15.18)(esbuild@0.27.4) css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(esbuild@0.27.4)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)): @@ -17934,11 +18096,11 @@ snapshots: dependencies: esutils: 2.0.3 - docusaurus-plugin-sass@0.2.6(@docusaurus/core@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@rspack/core@1.7.8)(sass@1.98.0)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)): + docusaurus-plugin-sass@0.2.6(@docusaurus/core@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@rspack/core@1.7.9)(sass@1.98.0)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)): dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.8)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(esbuild@0.27.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@rspack/core@1.7.9)(@swc/core@1.15.18)(esbuild@0.27.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) sass: 1.98.0 - sass-loader: 16.0.7(@rspack/core@1.7.8)(sass@1.98.0)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)) + sass-loader: 16.0.7(@rspack/core@1.7.9)(sass@1.98.0)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)) transitivePeerDependencies: - '@rspack/core' - node-sass @@ -18040,7 +18202,7 @@ snapshots: iconv-lite: 0.6.3 optional: true - enhanced-resolve@5.20.0: + enhanced-resolve@5.20.1: dependencies: graceful-fs: 4.2.11 tapable: 2.3.0 @@ -18263,22 +18425,22 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.57.0(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.3(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.57.1(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.3(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.57.0(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.3(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.57.1(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.3(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.57.0(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.57.1(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3) eslint: 10.0.3(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0)(eslint@10.0.3(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.0(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.3(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.1(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.3(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -18289,7 +18451,7 @@ snapshots: doctrine: 2.1.0 eslint: 10.0.3(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.57.0(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.3(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.57.1(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@10.0.3(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -18301,7 +18463,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.57.0(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.57.1(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -18320,7 +18482,7 @@ snapshots: change-case: 5.4.4 ci-info: 4.4.0 clean-regexp: 1.0.0 - core-js-compat: 3.48.0 + core-js-compat: 3.49.0 eslint: 10.0.3(jiti@2.6.1) find-up-simple: 1.0.1 globals: 16.5.0 @@ -18333,11 +18495,11 @@ snapshots: semver: 7.7.4 strip-indent: 4.1.1 - eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.57.0(@typescript-eslint/parser@8.57.0(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.3(jiti@2.6.1)): + eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.57.1(@typescript-eslint/parser@8.57.1(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.3(jiti@2.6.1)): dependencies: eslint: 10.0.3(jiti@2.6.1) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.57.0(@typescript-eslint/parser@8.57.0(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.57.1(@typescript-eslint/parser@8.57.1(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3) eslint-scope@5.1.1: dependencies: @@ -18543,7 +18705,7 @@ snapshots: fast-check@4.6.0: dependencies: - pure-rand: 8.0.0 + pure-rand: 8.2.0 fast-deep-equal@3.1.3: {} @@ -18565,13 +18727,13 @@ snapshots: fast-uri@3.1.0: {} - fast-xml-builder@1.1.3: + fast-xml-builder@1.1.4: dependencies: path-expression-matcher: 1.1.3 - fast-xml-parser@5.5.5: + fast-xml-parser@5.5.6: dependencies: - fast-xml-builder: 1.1.3 + fast-xml-builder: 1.1.4 path-expression-matcher: 1.1.3 strnum: 2.2.0 @@ -18676,18 +18838,18 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.4.1 + flatted: 3.4.2 keyv: 4.5.4 flat-cache@6.1.20: dependencies: cacheable: 2.3.3 - flatted: 3.4.1 + flatted: 3.4.2 hookified: 1.15.1 flat@5.0.2: {} - flatted@3.4.1: {} + flatted@3.4.2: {} fn.name@1.1.0: {} @@ -19093,7 +19255,7 @@ snapshots: history@4.10.1: dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 loose-envify: 1.4.0 resolve-pathname: 3.0.0 tiny-invariant: 1.3.3 @@ -19153,7 +19315,7 @@ snapshots: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.46.0 + terser: 5.46.1 html-minifier-terser@7.2.0: dependencies: @@ -19163,7 +19325,7 @@ snapshots: entities: 4.5.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.46.0 + terser: 5.46.1 html-tags@3.3.1: {} @@ -19171,7 +19333,7 @@ snapshots: html-void-elements@3.0.0: {} - html-webpack-plugin@5.6.6(@rspack/core@1.7.8)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)): + html-webpack-plugin@5.6.6(@rspack/core@1.7.9)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -19179,7 +19341,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.3.0 optionalDependencies: - '@rspack/core': 1.7.8 + '@rspack/core': 1.7.9 webpack: 5.105.4(@swc/core@1.15.18)(esbuild@0.27.4) htmlparser2@6.1.0: @@ -19616,7 +19778,7 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: '@babel/core': 7.29.0 - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.7.4 @@ -21111,8 +21273,6 @@ snapshots: emojilib: 2.4.0 skin-tone: 2.0.0 - node-forge@1.3.3: {} - node-gyp@11.5.0: dependencies: env-paths: 2.2.1 @@ -21518,6 +21678,15 @@ snapshots: mlly: 1.8.1 pathe: 2.0.3 + pkijs@3.3.3: + dependencies: + '@noble/hashes': 1.4.0 + asn1js: 3.0.7 + bytestreamjs: 2.0.1 + pvtsutils: 1.3.6 + pvutils: 1.1.5 + tslib: 2.8.1 + player.style@0.3.1(react@19.2.4): dependencies: media-chrome: 4.16.1(react@19.2.4) @@ -22086,7 +22255,7 @@ snapshots: pure-rand@7.0.1: {} - pure-rand@8.0.0: {} + pure-rand@8.2.0: {} purgecss@4.1.3: dependencies: @@ -22095,6 +22264,12 @@ snapshots: postcss: 8.5.8 postcss-selector-parser: 6.1.2 + pvtsutils@1.3.6: + dependencies: + tslib: 2.8.1 + + pvutils@1.1.5: {} + qified@0.6.0: dependencies: hookified: 1.15.1 @@ -22166,7 +22341,7 @@ snapshots: react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@19.2.4))(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)): dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.2.4)' webpack: 5.105.4(@swc/core@1.15.18)(esbuild@0.27.4) @@ -22193,13 +22368,13 @@ snapshots: react-router-config@5.1.1(react-router@5.3.4(react@19.2.4))(react@19.2.4): dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 react: 19.2.4 react-router: 5.3.4(react@19.2.4) react-router-dom@5.3.4(react@19.2.4): dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 history: 4.10.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -22210,7 +22385,7 @@ snapshots: react-router@5.3.4(react@19.2.4): dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 history: 4.10.1 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 @@ -22330,6 +22505,8 @@ snapshots: indent-string: 5.0.0 strip-indent: 4.1.1 + reflect-metadata@0.2.2: {} + reflect.getprototypeof@1.0.10: dependencies: call-bind: 1.0.8 @@ -22606,7 +22783,7 @@ snapshots: rtl-css-js@1.16.1: dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 rtlcss@4.3.0: dependencies: @@ -22672,11 +22849,11 @@ snapshots: dependencies: truncate-utf8-bytes: 1.0.2 - sass-loader@16.0.7(@rspack/core@1.7.8)(sass@1.98.0)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)): + sass-loader@16.0.7(@rspack/core@1.7.9)(sass@1.98.0)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)): dependencies: neo-async: 2.6.2 optionalDependencies: - '@rspack/core': 1.7.8 + '@rspack/core': 1.7.9 sass: 1.98.0 webpack: 5.105.4(@swc/core@1.15.18)(esbuild@0.27.4) @@ -22690,7 +22867,7 @@ snapshots: sax@1.2.1: {} - sax@1.5.0: {} + sax@1.6.0: {} saxes@6.0.0: dependencies: @@ -22726,10 +22903,10 @@ snapshots: select-hose@2.0.0: {} - selfsigned@2.4.1: + selfsigned@5.5.0: dependencies: - '@types/node-forge': 1.3.14 - node-forge: 1.3.3 + '@peculiar/x509': 1.14.3 + pkijs: 3.3.3 semver-diff@4.0.0: dependencies: @@ -22881,11 +23058,11 @@ snapshots: signal-exit@4.1.0: {} - sinon@21.0.2: + sinon@21.0.3: dependencies: '@sinonjs/commons': 3.0.1 '@sinonjs/fake-timers': 15.1.1 - '@sinonjs/samsam': 9.0.2 + '@sinonjs/samsam': 9.0.3 diff: 8.0.3 supports-color: 7.2.0 @@ -22902,7 +23079,7 @@ snapshots: '@types/node': 17.0.45 '@types/sax': 1.2.7 arg: 5.0.2 - sax: 1.5.0 + sax: 1.6.0 skin-tone@2.0.0: dependencies: @@ -23316,7 +23493,7 @@ snapshots: css-what: 6.2.2 csso: 5.0.5 picocolors: 1.1.1 - sax: 1.5.0 + sax: 1.6.0 swc-loader@0.2.7(@swc/core@1.15.18)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)): dependencies: @@ -23407,13 +23584,13 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 - terser: 5.46.0 + terser: 5.46.1 webpack: 5.105.4(@swc/core@1.15.18)(esbuild@0.27.4) optionalDependencies: '@swc/core': 1.15.18 esbuild: 0.27.4 - terser@5.46.0: + terser@5.46.1: dependencies: '@jridgewell/source-map': 0.3.11 acorn: 8.16.0 @@ -23571,6 +23748,8 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 + tslib@1.14.1: {} + tslib@2.8.1: {} tsup@8.5.1(@swc/core@1.15.18)(jiti@2.6.1)(postcss@8.5.8)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2): @@ -23609,6 +23788,10 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + tsyringe@4.10.0: + dependencies: + tslib: 1.14.1 + twitch-video-element@0.1.6: {} typanion@3.14.0: {} @@ -23683,12 +23866,12 @@ snapshots: dependencies: is-typedarray: 1.0.0 - typescript-eslint@8.57.0(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3): + typescript-eslint@8.57.1(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.57.0(@typescript-eslint/parser@8.57.0(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.57.0(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.0(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.57.1(@typescript-eslint/parser@8.57.1(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.57.1(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.1(eslint@10.0.3(jiti@2.6.1))(typescript@5.9.3) eslint: 10.0.3(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: @@ -23919,11 +24102,11 @@ snapshots: '@vimeo/player': 2.29.0 media-played-ranges-mixin: 0.1.0 - vite-plugin-purgecss@0.2.13(@swc/core@1.15.18)(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(postcss@8.5.8)(sass@1.98.0)(terser@5.46.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2): + vite-plugin-purgecss@0.2.13(@swc/core@1.15.18)(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(postcss@8.5.8)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2): dependencies: purgecss: 4.1.3 tsup: 8.5.1(@swc/core@1.15.18)(jiti@2.6.1)(postcss@8.5.8)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) - vite: 6.4.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 6.4.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - '@microsoft/api-extractor' - '@swc/core' @@ -23942,11 +24125,11 @@ snapshots: - typescript - yaml - vite-plugin-purgecss@0.2.13(@swc/core@1.15.18)(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.32.0)(postcss@8.5.8)(sass@1.98.0)(terser@5.46.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2): + vite-plugin-purgecss@0.2.13(@swc/core@1.15.18)(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.32.0)(postcss@8.5.8)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2): dependencies: purgecss: 4.1.3 tsup: 8.5.1(@swc/core@1.15.18)(jiti@2.6.1)(postcss@8.5.8)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) - vite: 6.4.1(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 6.4.1(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - '@microsoft/api-extractor' - '@swc/core' @@ -23965,24 +24148,24 @@ snapshots: - typescript - yaml - vite-plugin-singlefile@2.3.2(rollup@4.59.0)(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)): + vite-plugin-singlefile@2.3.2(rollup@4.59.0)(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)): dependencies: micromatch: 4.0.8 rollup: 4.59.0 - vite: 8.0.0(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.0(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) - vite-plugin-svgr@4.5.0(rollup@4.59.0)(typescript@5.9.3)(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)): + vite-plugin-svgr@4.5.0(rollup@4.59.0)(typescript@5.9.3)(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2)): dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.59.0) '@svgr/core': 8.1.0(typescript@5.9.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.9.3)) - vite: 8.0.0(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.0(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - rollup - supports-color - typescript - vite@6.4.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): + vite@6.4.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -23996,11 +24179,11 @@ snapshots: jiti: 2.6.1 lightningcss: 1.32.0 sass: 1.98.0 - terser: 5.46.0 + terser: 5.46.1 tsx: 4.21.0 yaml: 2.8.2 - vite@6.4.1(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): + vite@6.4.1(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.32.0)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) @@ -24014,11 +24197,11 @@ snapshots: jiti: 2.6.1 lightningcss: 1.32.0 sass: 1.98.0 - terser: 5.46.0 + terser: 5.46.1 tsx: 4.21.0 yaml: 2.8.2 - vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): + vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@oxc-project/runtime': 0.115.0 lightningcss: 1.32.0 @@ -24032,11 +24215,11 @@ snapshots: fsevents: 2.3.3 jiti: 2.6.1 sass: 1.98.0 - terser: 5.46.0 + terser: 5.46.1 tsx: 4.21.0 yaml: 2.8.2 - vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): + vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(sass@1.98.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@oxc-project/runtime': 0.115.0 lightningcss: 1.32.0 @@ -24050,7 +24233,7 @@ snapshots: fsevents: 2.3.3 jiti: 2.6.1 sass: 1.98.0 - terser: 5.46.0 + terser: 5.46.1 tsx: 4.21.0 yaml: 2.8.2 @@ -24116,7 +24299,7 @@ snapshots: transitivePeerDependencies: - tslib - webpack-dev-server@5.2.2(tslib@2.8.1)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)): + webpack-dev-server@5.2.3(tslib@2.8.1)(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -24140,7 +24323,7 @@ snapshots: open: 10.2.0 p-retry: 6.2.1 schema-utils: 4.3.3 - selfsigned: 2.4.1 + selfsigned: 5.5.0 serve-index: 1.9.2 sockjs: 0.3.24 spdy: 4.0.2 @@ -24181,7 +24364,7 @@ snapshots: acorn-import-phases: 1.0.4(acorn@8.16.0) browserslist: 4.28.1 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.20.0 + enhanced-resolve: 5.20.1 es-module-lexer: 2.0.0 eslint-scope: 5.1.1 events: 3.3.0 @@ -24398,7 +24581,7 @@ snapshots: xml-js@1.6.11: dependencies: - sax: 1.5.0 + sax: 1.6.0 xml-name-validator@5.0.0: {} diff --git a/scripts/build-and-assemble-website.sh b/scripts/build-and-assemble-website.sh index 25767181d3..c111d54099 100755 --- a/scripts/build-and-assemble-website.sh +++ b/scripts/build-and-assemble-website.sh @@ -2,7 +2,6 @@ set -euox pipefail pnpm install -pnpm compile NODE_OPTIONS="--max-old-space-size=6144" \ pnpm \ diff --git a/scripts/compile-esbuild.sh b/scripts/compile-esbuild.sh deleted file mode 100755 index eb4f989f4d..0000000000 --- a/scripts/compile-esbuild.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -esbuild \ - ./src/index.ts \ - --outfile=./out/index.js \ - --format=esm \ - --bundle \ - --packages=external \ - --sourcemap \ - "$@" diff --git a/tsconfig.base.json b/tsconfig.base.json index c4c433f627..1b3ce1c661 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1,18 +1,43 @@ { "compilerOptions": { + "baseUrl": ".", "module": "ESNext", "moduleResolution": "Bundler", "moduleDetection": "force", "target": "es2022", "lib": ["es2022"], - "emitDeclarationOnly": true, - "declarationMap": true, + "noEmit": true, "resolveJsonModule": true, - "composite": true, "forceConsistentCasingInFileNames": true, "isolatedModules": true, "strict": true, - "rootDir": "${configDir}/src", - "outDir": "${configDir}/out" + "paths": { + "@cursorless/cheatsheet": ["./packages/cheatsheet/src/index.ts"], + "@cursorless/common": ["./packages/common/src/index.ts"], + "@cursorless/cursorless-cheatsheet": [ + "./packages/cursorless-cheatsheet/src/index.ts" + ], + "@cursorless/cursorless-engine": [ + "./packages/cursorless-engine/src/index.ts" + ], + "@cursorless/cursorless-everywhere-talon-core": [ + "./packages/cursorless-everywhere-talon-core/src/index.ts" + ], + "@cursorless/cursorless-tutorial": [ + "./packages/cursorless-tutorial/src/index.ts" + ], + "@cursorless/neovim-common": ["./packages/neovim-common/src/index.ts"], + "@cursorless/neovim-registry": [ + "./packages/neovim-registry/src/index.ts" + ], + "@cursorless/node-common": ["./packages/node-common/src/index.ts"], + "@cursorless/sentence-parser": [ + "./packages/sentence-parser/src/index.ts" + ], + "@cursorless/test-case-recorder": [ + "./packages/test-case-recorder/src/index.ts" + ], + "@cursorless/vscode-common": ["./packages/vscode-common/src/index.ts"] + } } } diff --git a/tsconfig.web.json b/tsconfig.web.json new file mode 100644 index 0000000000..64e644abe0 --- /dev/null +++ b/tsconfig.web.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.base.json", + "compilerOptions": { + "lib": ["dom", "es2022"], + "jsx": "react-jsx", + "jsxImportSource": "preact" + } +} diff --git a/typings/object.d.ts b/typings/object.d.ts deleted file mode 100644 index 3ca52f5b38..0000000000 --- a/typings/object.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -interface ObjectConstructor { - fromEntries< - V extends PropertyKey, - T extends [readonly [V, any]] | Array, - >( - entries: T, - ): Flatten>>; -} - -// From https://github.com/microsoft/TypeScript/issues/35745#issuecomment-566932289 -type UnionToIntersection = (T extends T ? (p: T) => void : never) extends ( - p: infer U, -) => void - ? U - : never; -type FromEntries = T extends T - ? Record - : never; -type Flatten = object & { - [P in keyof T]: T[P]; -};