diff --git a/.agents/skills/fix/SKILL.md b/.agents/skills/fix/SKILL.md new file mode 100644 index 0000000..1202062 --- /dev/null +++ b/.agents/skills/fix/SKILL.md @@ -0,0 +1,63 @@ +--- +name: fix +description: Use after completing any code changes (new features, bug fixes, refactors) before reporting completion +--- + +Run the auto-fix and validation suite for the GLSP Eclipse Integration. The repository has two +halves that are validated separately — run the part your change touched, and both when the change +spans client and server. + +## Client + +All commands run from the `client/` directory, the pnpm workspace root. + +1. Build first (compiles the TypeScript packages and bundles the workflow webapp). This is a hard gate: if the build fails, stop immediately, report the build errors, and do not run any of the following steps. + The build must pass before anything else runs. + +```bash +pnpm build +``` + +2. Auto-fix lint, formatting, and copyright headers. Run all three even if an earlier one reports remaining problems (they are independent): + +```bash +pnpm lint:fix +pnpm format +pnpm headers:fix +``` + +Then: + +- If `pnpm build` failed, fix the compile errors and re-run this skill. +- If `pnpm lint:fix` reported lint errors it could not fix, fix them manually and re-run this skill. + +## Server + +The workflow example plugin ships the bundled webapp, so a client change reaches the server build +only after it has been copied over. Run this from the repository root: + +```bash +pnpm -C client copy:client +``` + +Then compile, run checkstyle and the tests in one pass and turn the collected violations into a +verdict. Run the summary even when the Maven build failed — the reports of the modules that were +built are still worth reading: + +```bash +mvn -f server clean verify -B -Dcheckstyle.failOnViolation=false +.github/scripts/checkstyle-summary.py +``` + +Then: + +- If the Maven build failed, fix the compile errors or failing tests and re-run this skill. +- If the checkstyle summary reported violations, fix them and re-run this skill. + +Report completion once everything is clean: the client builds with no remaining lint errors and +with formatting and headers corrected in place, and the server build, tests and checkstyle pass. + +Notes: + +- Checkstyle runs in the `validate` phase, so letting it fail the build would skip the rest of the build. `-Dcheckstyle.failOnViolation=false` collects the violations instead and the summary script turns them into the failure — the same split the CI workflow uses. +- `pnpm headers:fix` is run from `client/` but checks the whole repository, Java sources included. diff --git a/.agents/skills/generate-changelog/SKILL.md b/.agents/skills/generate-changelog/SKILL.md new file mode 100644 index 0000000..bbcaad3 --- /dev/null +++ b/.agents/skills/generate-changelog/SKILL.md @@ -0,0 +1,237 @@ +--- +name: generate-changelog +description: Generate changelog entries from merged PRs since the last release +disable-model-invocation: true +--- + +# Changelog Generator + +Generate changelog entries by analyzing merged PRs since the last release. + +Execute these phases in order: +1. **Data Gathering** — find last release, fetch PRs, classify, generate entries +2. **Changelog Update** — write entries into CHANGELOG.md +3. **Review & Approval** — present the actual diff to the user for review +4. **PR Creation** (optional) — push and create PR, only if the user requests it + +--- + +## Phase 1: Data Gathering + +### Step 1.1: Find the latest release tag + +Run: +```bash +git tag --sort=-creatordate | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | head -1 +``` + +Record as `LAST_TAG`. Get the tag's date: +```bash +git log -1 --format=%aI $LAST_TAG +``` + +Record as `TAG_DATE`. + +### Step 1.2: Extract category tags from existing CHANGELOG.md + +Read `CHANGELOG.md` and extract all unique `[tag]` patterns from changelog entries (pattern: `- [tag] ...`). Build a deduplicated vocabulary list preserving original casing. + +### Step 1.3: Fetch merged PRs since the last release + +```bash +gh pr list --state merged --search "merged:>TAG_DATE" --json number,title,author,body,labels,mergedAt --limit 100 +``` + +Use the date portion only from `TAG_DATE` (e.g. `2026-02-09`). + +### Step 1.4: Filter PRs + +**Skip rules** (in order): +1. PR has the `changelog` label → skip (already tracked in a previous changelog update) +2. Author login is `dependabot` or `dependabot[bot]` → skip +3. Title matches version bump patterns → skip: + - Starts with `Switch to` and contains `-next` + - Title is a bare version like `vX.Y.Z` + - Title starts with `Release v` +4. Title contains `update changelog` (case insensitive) → skip +5. Title is purely CI/metadata (readme badges, workflow config) AND body does NOT contain `[x] This PR should be mentioned in the changelog` → skip + +**Override**: If the PR body contains `[x] This PR should be mentioned in the changelog`, always include it regardless of rules 3-5. PRs with the `changelog` label (rule 1) and dependabot PRs (rule 2) are always skipped. + +### Step 1.5: Classify each PR + +1. If body contains `[x] This PR introduces a breaking change` → **breaking** +2. If body contains `[ ] This PR introduces a breaking change` → **normal** +3. If no checkbox info, analyze title and body: + - Breaking keywords: "refactor", "rename", "remove", "replace", "migrate", "breaking", "deprecate" + - Clearly non-breaking (bug fix, docs, minor enhancement) → **normal** + - Uncertain → flag for user review + +### Step 1.6: Assign category tags + +Pick the most fitting tag from the vocabulary (Step 1.2) based on PR title and body. If no tag fits, mark as uncertain: `[???/best-guess]`. + +### Step 1.7: Generate changelog entries + +#### Entry Format + +**Normal changes:** +``` +- [tag] Description [#N](https://github.com/eclipse-glsp/glsp-eclipse-integration/pull/N) +``` + +**Breaking changes** with migration sub-items: +``` +- [tag] Description [#N](https://github.com/eclipse-glsp/glsp-eclipse-integration/pull/N) + - Migration detail 1 + - Migration detail 2 +``` + +**Multiple PRs for the same change:** +``` +- [tag] Description [#N](url) [#M](url) +``` + +#### Style Guide + +**Formatting:** +- Entry prefix: `- ` (dash + exactly 3 spaces) +- Sub-item indent: 4 spaces + `- ` (4 spaces from parent dash) +- Sub-sub-item indent: 8 spaces + `- ` +- Single space between `[tag]` and description text +- Single space before PR link at end of line +- PR links are mandatory, full URLs: `[#123](https://github.com/eclipse-glsp/glsp-eclipse-integration/pull/123)` + +**Wording:** +- Always start with a **present tense imperative verb** (not past tense) +- Common verbs: Fix, Improve, Add, Update, Extend, Ensure, Introduce, Remove, Refactor, Rename, Provide, Allow, Support +- **Bug fixes**: "Fix a bug that caused/prevented...", "Fix X behavior" +- **Features**: "Introduce...", "Add support for...", "Provide..." +- **Enhancements**: "Improve...", "Extend...", "Ensure that..." +- **Refactors**: "Refactor...", "Rework...", "Rename..." +- Be specific — never "Fix various issues" + +**Capitalization:** +- Tags are always lowercase: `[diagram]`, not `[Diagram]` +- Description starts lowercase after the tag (unless proper noun or code element) +- Section headers: Title Case (`### Potentially Breaking Changes`) + +**Description cleanup from PR title:** +- Remove issue tracker prefixes (e.g. `GLSP-1234:`, `GH-123:`, `ISSUE-456:`) +- Remove conventional commit prefixes: `fix:`, `feat:`, `chore:` +- Rephrase bug-report style to changelog style: + - BAD: "Edit label UI does not resize on graph zoom" + - GOOD: "Fix edit label UI not resizing on graph zoom" +- Keep concise — one line + +**Breaking changes:** +- Describe what changed, why it's breaking, and how to migrate +- Extract migration sub-items from the PR body's "What it does" section + +--- + +## Phase 2: Changelog Update + +### Step 2.1: Determine the version section + +Read `CHANGELOG.md` in the repository root. + +**Active section detection:** +- An active section has the `- active` suffix (e.g. `## v2.7.0 - active`) +- If an active section exists → merge new entries into it +- If the topmost section is a released version (no `- active` suffix) → create a new active section above it + +**Creating a new section:** +- Bump the minor version of `LAST_TAG` (e.g. `v2.6.0` → `v2.7.0`) +- Insert after the title line, before the first `## ` heading: + +```markdown +## v2.7.0 - active + +### Changes + +- [tag] Entry [#N](url) + +### Potentially Breaking Changes + +- [tag] Entry [#N](url) + - Sub-item detail +``` + +Only include "Potentially Breaking Changes" if there are breaking entries. + +**Merging into existing active section:** +- Check PR numbers against existing entries to avoid duplicates +- Append new entries to the appropriate subsection +- Create missing subsections as needed + +### Step 2.2: Write the updated CHANGELOG.md + +Use the Edit tool to update `CHANGELOG.md` directly in the current working tree. Match existing formatting conventions. + +--- + +## Phase 3: Review & Approval + +### Step 3.1: Show the diff + +```bash +git diff CHANGELOG.md +``` + +Present the diff to the user. + +### Step 3.2: Prompt for uncertain items + +List any entries flagged as uncertain (category or breaking status) and ask the user to resolve them. + +Even if nothing is uncertain, ask: +> "Does everything look correct, or would you like to adjust any entries?" + +### Step 3.3: Collect user feedback + +- **Approve as-is** → done (or proceed to Phase 4 if PR was requested) +- **Request edits** → apply changes, show updated diff, ask again +- **Resolve uncertain items** → apply, show updated diff + +**Do NOT proceed to Phase 4 unless the user explicitly requests a PR.** + +--- + +## Phase 4: PR Creation (Optional) + +Only execute this phase if the user explicitly requests a PR (either in their initial prompt or after reviewing the changelog). If the user hasn't mentioned a PR, ask after approval: +> "Would you like me to create a PR for this changelog update, or are you done?" + +### Step 4.1: Determine the branch name + +Check if `changelog-update` exists on remote: +```bash +git ls-remote --heads origin changelog-update +``` + +If it exists, increment: `changelog-update-2`, `changelog-update-3`, etc. + +### Step 4.2: Create branch, commit, and push + +```bash +git checkout -b BRANCH_NAME +git add CHANGELOG.md +git commit -m "Update changelog" +git push -u origin BRANCH_NAME +``` + +### Step 4.3: Create the PR + +If the repo has a `.github/PULL_REQUEST_TEMPLATE.md`, use its structure to fill in the PR body. Otherwise use a simple body describing the changelog update. + +Report the PR URL. + +### Step 4.4: Label referenced PRs + +Add the `changelog` label to every PR mentioned in the new entries: +```bash +gh pr edit PR_NUMBER --add-label "changelog" +``` + +Report which PRs were labeled. diff --git a/.agents/skills/generate-changelog/agents/openai.yaml b/.agents/skills/generate-changelog/agents/openai.yaml new file mode 100644 index 0000000..6c31266 --- /dev/null +++ b/.agents/skills/generate-changelog/agents/openai.yaml @@ -0,0 +1,5 @@ +interface: + display_name: 'generate-changelog' + short_description: 'Generate changelog entries' +policy: + allow_implicit_invocation: false diff --git a/.claude/skills/fix/SKILL.md b/.claude/skills/fix/SKILL.md index b7a0eaa..1202062 100644 --- a/.claude/skills/fix/SKILL.md +++ b/.claude/skills/fix/SKILL.md @@ -1,15 +1,17 @@ --- name: fix -description: Run the fix-and-verify suite for the client workspace (build, auto-fix lint/format/headers). IMPORTANT - Proactively invoke this skill after completing any code changes to the client (new features, bug fixes, refactors) before reporting completion. Re-run it after manually addressing anything it could not auto-fix. +description: Use after completing any code changes (new features, bug fixes, refactors) before reporting completion --- -Run the auto-fix and validation suite for the GLSP Eclipse Integration client monorepo. All commands run from the `client/` directory (the pnpm workspace root): +Run the auto-fix and validation suite for the GLSP Eclipse Integration. The repository has two +halves that are validated separately — run the part your change touched, and both when the change +spans client and server. -```bash -cd client -``` +## Client + +All commands run from the `client/` directory, the pnpm workspace root. -1. Build first (compiles all TypeScript packages and bundles the workflow webapp). This is a hard gate: if the build fails, stop immediately, report the build errors, and do not run any of the following steps. +1. Build first (compiles the TypeScript packages and bundles the workflow webapp). This is a hard gate: if the build fails, stop immediately, report the build errors, and do not run any of the following steps. The build must pass before anything else runs. ```bash @@ -28,4 +30,34 @@ Then: - If `pnpm build` failed, fix the compile errors and re-run this skill. - If `pnpm lint:fix` reported lint errors it could not fix, fix them manually and re-run this skill. -- Otherwise if everything is clean (compile succeeds, formatting and headers are corrected in place, lint has no remaining errors) — report completion. + +## Server + +The workflow example plugin ships the bundled webapp, so a client change reaches the server build +only after it has been copied over. Run this from the repository root: + +```bash +pnpm -C client copy:client +``` + +Then compile, run checkstyle and the tests in one pass and turn the collected violations into a +verdict. Run the summary even when the Maven build failed — the reports of the modules that were +built are still worth reading: + +```bash +mvn -f server clean verify -B -Dcheckstyle.failOnViolation=false +.github/scripts/checkstyle-summary.py +``` + +Then: + +- If the Maven build failed, fix the compile errors or failing tests and re-run this skill. +- If the checkstyle summary reported violations, fix them and re-run this skill. + +Report completion once everything is clean: the client builds with no remaining lint errors and +with formatting and headers corrected in place, and the server build, tests and checkstyle pass. + +Notes: + +- Checkstyle runs in the `validate` phase, so letting it fail the build would skip the rest of the build. `-Dcheckstyle.failOnViolation=false` collects the violations instead and the summary script turns them into the failure — the same split the CI workflow uses. +- `pnpm headers:fix` is run from `client/` but checks the whole repository, Java sources included. diff --git a/.claude/skills/generate-changelog/SKILL.md b/.claude/skills/generate-changelog/SKILL.md index 8efb2d1..bbcaad3 100644 --- a/.claude/skills/generate-changelog/SKILL.md +++ b/.claude/skills/generate-changelog/SKILL.md @@ -1,6 +1,7 @@ --- name: generate-changelog -description: Generate changelog entries from merged PRs since the last release. Fetches PR data, classifies changes as normal or breaking, presents for user review, and optionally creates a PR with the updates. +description: Generate changelog entries from merged PRs since the last release +disable-model-invocation: true --- # Changelog Generator diff --git a/.github/workflows/ci-server.yml b/.github/workflows/ci-server.yml index 0be75fc..0ddd238 100644 --- a/.github/workflows/ci-server.yml +++ b/.github/workflows/ci-server.yml @@ -10,13 +10,17 @@ on: paths-ignore: - '**/*.md' - 'LICENSE' - - '.vscode/**' + - '**/.vscode/**' + - '.claude/**' + - '.agents/**' pull_request: branches: [master] paths-ignore: - '**/*.md' - 'LICENSE' - - '.vscode/**' + - '**/.vscode/**' + - '.claude/**' + - '.agents/**' permissions: contents: read @@ -28,12 +32,12 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 with: package_json_file: client/package.json - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: - node-version: 22.x + node-version: 24.x cache: pnpm cache-dependency-path: client/pnpm-lock.yaml - name: Set up JDK diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 389a452..fcb296f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,8 +7,20 @@ on: workflow_dispatch: push: branches: [master] + paths-ignore: + - '**/*.md' + - 'LICENSE' + - '**/.vscode/**' + - '.claude/**' + - '.agents/**' pull_request: branches: [master] + paths-ignore: + - '**/*.md' + - 'LICENSE' + - '**/.vscode/**' + - '.claude/**' + - '.agents/**' jobs: build: @@ -17,12 +29,12 @@ jobs: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 with: package_json_file: client/package.json - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: - node-version: 22.x + node-version: 24.x cache: pnpm cache-dependency-path: client/pnpm-lock.yaml - name: Build @@ -34,22 +46,17 @@ jobs: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 with: package_json_file: client/package.json - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: - node-version: 22.x + node-version: 24.x cache: pnpm cache-dependency-path: client/pnpm-lock.yaml - - name: Create eslint json report + # Lints and type-checks without a prior build (oxlint resolves the workspace packages through the + # tsconfig project references). Emits inline annotations for every finding and writes a Markdown + # table to the job summary. + - name: Lint working-directory: ./client - run: | - pnpm lint:ci - - name: Create summary - if: always() - working-directory: ./client - run: | - npm_config_yes=true npx github:10up/eslint-json-to-md#82ff16b --path ./eslint_report.json --output ./eslint_report.md - cat eslint_report.md >> $GITHUB_STEP_SUMMARY - + run: pnpm lint:ci diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 6bc47fe..f6a6852 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -58,13 +58,13 @@ jobs: run: mvn -B clean verify --file pom.xml working-directory: server - - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 with: package_json_file: client/package.json - name: Build Client with pnpm uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: - node-version: '22' + node-version: '24' cache: pnpm cache-dependency-path: client/pnpm-lock.yaml - run: pnpm build diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 209549e..017f1dd 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -30,12 +30,12 @@ jobs: - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: ref: ${{ env.DEPLOY_REF }} - - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 with: package_json_file: client/package.json - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: - node-version: 22.x + node-version: 24.x cache: pnpm cache-dependency-path: client/pnpm-lock.yaml - name: Set up JDK diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index d863c9d..9661cc1 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -64,7 +64,7 @@ jobs: echo "should_publish=true" >> $GITHUB_OUTPUT fi - - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 if: steps.check_changes.outputs.should_publish == 'true' with: package_json_file: client/package.json @@ -72,7 +72,7 @@ jobs: - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 if: steps.check_changes.outputs.should_publish == 'true' with: - node-version: 22.x + node-version: 24.x registry-url: 'https://registry.npmjs.org' cache: pnpm cache-dependency-path: client/pnpm-lock.yaml diff --git a/.gitignore b/.gitignore index 4b0f904..cef65ec 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,9 @@ .m2 yarn-cache -/.claude/settings.local.json -/.claude/plans -CLAUDE.local.MD -.reviews \ No newline at end of file +# Agent specific files +.claude/plans +.claude/local.settings.json +.claude/settings.local.json +CLAUDE.local.md +.reviews diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index f0a9ae5..0000000 --- a/.prettierrc +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json.schemastore.org/prettierrc", - "singleQuote": true, - "jsxSingleQuote": true, - "arrowParens": "avoid", - "trailingComma": "none", - "endOfLine": "lf", - "printWidth": 140, - "tabWidth": 4, - "overrides": [ - { - "files": ["*.json", "*.yml"], - "options": { - "printWidth": 100, - "tabWidth": 2 - } - } - ], - "plugins": ["prettier-plugin-packagejson"] -} diff --git a/.vscode/extensions.json b/.vscode/extensions.json index f8bdf5d..127fefe 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -3,8 +3,8 @@ // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp // List of extensions which should be recommended for users of this workspace. "recommendations": [ - "dbaeumer.vscode-eslint", - "esbenp.prettier-vscode", + "oxc.oxc-vscode", + "TypeScriptTeam.native-preview", "DavidAnson.vscode-markdownlint" ], // List of extensions recommended by VS Code that should not be recommended for users of this workspace. diff --git a/.vscode/settings.json b/.vscode/settings.json index 8b837d9..7029767 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -7,38 +7,40 @@ "editor.formatOnSave": true, "editor.codeActionsOnSave": { "source.organizeImports": "explicit", - "source.fixAll.eslint": "explicit" + "source.fixAll.oxc": "explicit" }, - "eslint.validate": ["javascript", "typescript"], "search.exclude": { "**/node_modules": true, "**/lib": true }, "task.autoDetect": "off", - "typescript.tsdk": "node_modules/typescript/lib", + // The workspace compiles with TypeScript 7, whose npm package ships the native compiler only (no tsserver), so + // `typescript.tsdk` cannot point at it. Language features are provided by the TypeScript Native Preview extension + // instead, which brings its own tsgo build. + "js/ts.experimental.useTsgo": true, "[css]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "oxc.oxc-vscode" }, "[javascript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "oxc.oxc-vscode" }, "[javascriptreact]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "oxc.oxc-vscode" }, "[json]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "oxc.oxc-vscode" }, "[markdown]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "oxc.oxc-vscode" }, "[typescript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "oxc.oxc-vscode" }, "[typescriptreact]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "oxc.oxc-vscode" }, "[yaml]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "oxc.oxc-vscode" }, "markdownlint.config": { "MD007": { diff --git a/AGENTS.md b/AGENTS.md index c55b2cc..cfba44d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,40 +1,8 @@ -# Repository Guidelines - -## Project Structure & Module Organization -This repository is split into two main parts: -- `client/`: TypeScript/pnpm workspace for the GLSP IDE integration package and workflow webapp example. - - `client/packages/ide/src/`: reusable integration source. - - `client/examples/workflow-webapp/src/`: example app source, bundled to `client/examples/workflow-webapp/app/`. -- `server/`: Java 17 + Maven/Tycho Eclipse plugin build. - - `server/plugins/org.eclipse.glsp.ide.editor/src/`: core Eclipse integration plugin. - - `server/example/org.eclipse.glsp.ide.workflow.editor/src/`: workflow editor example plugin. - - `server/releng/`: target platform, feature, and p2 repository modules. - -## Build, Test, and Development Commands -The client is a pnpm workspace — do not use yarn or npm. A recent pnpm switches to the version pinned in `client/package.json`'s `packageManager` field. -- `cd client && pnpm install`: install workspace dependencies (Node `>=22`, pnpm 11+). -- `cd client && pnpm build`: compile TS packages and bundle the workflow webapp. -- `cd client && pnpm lint`: run ESLint on all TS/TSX sources. -- `cd client && pnpm format:check`: verify Prettier formatting. -- `cd client && pnpm check:all`: CI-like client gate (`install`, `lint`, `format:check`, headers). -- `cd client && pnpm copy:client`: copy the bundled webapp into the server's diagram folder. -- `cd server && mvn clean install`: build Eclipse bundles. -- `cd server && mvn clean install -Pp2`: build including p2 artifacts. -- `cd server && mvn checkstyle:check -B`: run Java style checks. - -## Coding Style & Naming Conventions -- TypeScript: 4-space indentation, single quotes, trailing commas disabled, max line length 140 (see `.prettierrc`). -- Linting: ESLint with `@eclipse-glsp` config (`client/eslint.config.mjs`). -- Java: follow Checkstyle rules configured via Maven (`maven-checkstyle-plugin`). -- Naming: keep existing conventions (`*.spec.ts` for tests, PascalCase Java classes, kebab-case TS file names where already used). - -## Testing Guidelines -- Validate client changes by running `pnpm check:all` (from `client/`) before opening a PR. -- For server changes, run `mvn clean verify` (or at least `mvn clean install`) and `mvn checkstyle:check`. - -## Commit & Pull Request Guidelines -- Create/track an umbrella issue first (`https://github.com/eclipse-glsp/glsp/issues/...`). -- Branch naming in upstream repos follows `issues/{issue_number}`. -- Reference the full issue URL in commit messages (not just `#123`). -- Keep commit subjects short, imperative, and specific (history examples include `GLSP-1607: Fix deployment`). -- PRs should include scope, rationale, test evidence (commands run), and screenshots/GIFs for UI changes. +# AGENTS.md + +- The repository has two halves: `client/` is a pnpm workspace (never npm or yarn), `server/` is the Maven/Tycho build of the Eclipse plugins. +- The workflow example plugin ships the bundled webapp. After client changes run `pnpm copy:client` in `client/` before building the server, otherwise the plugin keeps the previous bundle. +- Consult `README.md`, `client/README.md` and `server/README.md` for the module layout and the development setup. +- Document public APIs with TSDoc and Javadoc and use `{@link Symbol}` for cross-references. Explain behavior and non-obvious decisions rather than restating signatures. +- After code changes, run the /fix skill. Resolve failures and repeat until build, lint, formatting, headers, and checkstyle pass. +- `CHANGELOG.md` is generated from the merged PRs before a release. Do not add or bump entries manually. diff --git a/client/CLAUDE.md b/CLAUDE.md similarity index 100% rename from client/CLAUDE.md rename to CLAUDE.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a7feb4c..9911194 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -23,7 +23,7 @@ Please create new issues only in the [GLSP umbrella project](https://github.com/ ## How to Contribute -In order to contribute, please first open an issue in this project, irrespectively whether this bug or feature concerns the glsp-client, glsp-server, or one of the platform integrations. +In order to contribute, please first open an issue in this project, irrespectively whether this bug or feature concerns the glsp-core, glsp-server, or one of the platform integrations. This issue should describe the bug you intend to fix or the feature you would like to add. Once you have your code ready for review, please open a pull request in the respective repository. A [committer of the GLSP project](https://projects.eclipse.org/projects/ecd.glsp/who) will then review your contribution and help to get it merged. @@ -40,7 +40,7 @@ The branch name should be in the form `issues/{issue_number}`, e.g. `issues/123` All branches with this naming schema will be deleted after they are merged. In the commit message you should also reference the corresponding issue, e.g. using `closes https://github.com/eclipse-glsp/glsp/issues/241`, thus allowing [auto close of issues](https://help.github.com/en/github/managing-your-work-on-github/closing-issues-using-keywords). -Please use the absolute URL of the issue instead of just `#241`, as all issues are kept in , whereas the pull requests are opened against the respective repositories, such as . +Please use the absolute URL of the issue instead of just `#241`, as all issues are kept in , whereas the pull requests are opened against the respective repositories, such as . Using the absolute URL will still allow to correctly reference issues irrespectively where you open the pull request. Please make sure you read the [guide for a good commit message](https://chris.beams.io/posts/git-commit/). diff --git a/README.md b/README.md index e025fa7..ea92bcc 100755 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ The Workflow Diagram Editor is registered for any .wf files. You can use the pro In addition to this repository, the related source code can be found here: - -- +- ## More information diff --git a/client/.vscode/extensions.json b/client/.vscode/extensions.json index f8bdf5d..127fefe 100644 --- a/client/.vscode/extensions.json +++ b/client/.vscode/extensions.json @@ -3,8 +3,8 @@ // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp // List of extensions which should be recommended for users of this workspace. "recommendations": [ - "dbaeumer.vscode-eslint", - "esbenp.prettier-vscode", + "oxc.oxc-vscode", + "TypeScriptTeam.native-preview", "DavidAnson.vscode-markdownlint" ], // List of extensions recommended by VS Code that should not be recommended for users of this workspace. diff --git a/client/.vscode/settings.json b/client/.vscode/settings.json index 9e55b94..4ab943e 100644 --- a/client/.vscode/settings.json +++ b/client/.vscode/settings.json @@ -7,38 +7,40 @@ "editor.formatOnSave": true, "editor.codeActionsOnSave": { "source.organizeImports": "always", - "source.fixAll.eslint": "always" + "source.fixAll.oxc": "always" }, - "eslint.validate": ["javascript", "typescript"], "search.exclude": { "**/node_modules": true, "**/lib": true }, "task.autoDetect": "off", - "typescript.tsdk": "node_modules/typescript/lib", + // The workspace compiles with TypeScript 7, whose npm package ships the native compiler only (no tsserver), so + // `typescript.tsdk` cannot point at it. Language features are provided by the TypeScript Native Preview extension + // instead, which brings its own tsgo build. + "js/ts.experimental.useTsgo": true, "[css]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "oxc.oxc-vscode" }, "[javascript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "oxc.oxc-vscode" }, "[javascriptreact]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "oxc.oxc-vscode" }, "[json]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "oxc.oxc-vscode" }, "[markdown]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "oxc.oxc-vscode" }, "[typescript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "oxc.oxc-vscode" }, "[typescriptreact]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "oxc.oxc-vscode" }, "[yaml]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" + "editor.defaultFormatter": "oxc.oxc-vscode" }, "markdownlint.config": { "MD007": { diff --git a/client/README.md b/client/README.md index 2b715b2..1348924 100644 --- a/client/README.md +++ b/client/README.md @@ -7,16 +7,17 @@ This project is available from npm via [@eclipse-glsp/ide](https://www.npmjs.com ### First time setup -- Install [node.js](https://nodejs.org/) (requires Node v22+) -- Install pnpm: (use pnpm 11+); a recent pnpm automatically switches to the version pinned in the `packageManager` field +- Install [node.js](https://nodejs.org/) (requires Node v24+) +- Install pnpm: (use pnpm 12+); a recent pnpm automatically switches to the version pinned in the `packageManager` field - Clone this repository - Install dependencies from this `client` directory: `pnpm i` or `pnpm i --frozen-lockfile` ### Build & Testing - Build (all packages + workflow webapp bundle): `pnpm build` -- Lint: `pnpm lint` -- Check formatting: `pnpm format:check` +- Lint and type-check (oxlint, no prior build needed): `pnpm lint` +- Check formatting (oxfmt): `pnpm format:check` +- Auto-fix lint, formatting and copyright headers: `pnpm fix:all` - Clean (all packages): `pnpm clean` - `pnpm copy:client` copies the bundled webapp into the Eclipse server's diagram folder (`../server/example/org.eclipse.glsp.ide.workflow.editor/diagram`); the CI build runs this automatically before building the server. diff --git a/client/eslint.config.mjs b/client/eslint.config.mjs deleted file mode 100644 index fba8f44..0000000 --- a/client/eslint.config.mjs +++ /dev/null @@ -1,31 +0,0 @@ -import glspConfig from '@eclipse-glsp/eslint-config'; - -export default [ - ...glspConfig, - { - ignores: ['**/*.js', '**/*.mjs', '**/*.cjs', '**/dist/**', '**/lib/**'] - }, - { - files: ['**/*.{ts,tsx}'], - languageOptions: { - parserOptions: { - project: './tsconfig.eslint.json', - tsconfigRootDir: import.meta.dirname - } - }, - rules: { - 'no-restricted-imports': [ - 'warn', - { - name: 'sprotty', - message: "The sprotty default exports are customized and reexported by GLSP. Please use '@eclipse-glsp/client' instead" - }, - { - name: 'sprotty-protocol', - message: - "The sprotty-protocol default exports are customized and reexported by GLSP. Please use '@eclipse-glsp/client' instead" - } - ] - } - } -]; diff --git a/client/examples/workflow-webapp/package.json b/client/examples/workflow-webapp/package.json index f1c66e3..180e422 100644 --- a/client/examples/workflow-webapp/package.json +++ b/client/examples/workflow-webapp/package.json @@ -7,15 +7,14 @@ "bundle": "pnpm compile && node ./esbuild.js", "clean": "rimraf lib tsconfig.tsbuildinfo app/bundle.js app/bundle.js.map app/bundle.css app/bundle.css.map app/*.ttf", "compile": "tsc -b", - "lint": "eslint ./src", "watch": "node ./esbuild.js --watch", "watch:tsc": "tsc -w" }, "dependencies": { - "@eclipse-glsp-examples/workflow-glsp": "next", - "@eclipse-glsp/client": "next", + "@eclipse-glsp-examples/workflow-glsp": "2.9.0-next.3", + "@eclipse-glsp/client": "2.9.0-next.3", "@eclipse-glsp/ide": "workspace:*", - "@eclipse-glsp/protocol": "next", + "@eclipse-glsp/protocol": "2.9.0-next.3", "inversify": "^6.1.3", "vscode-jsonrpc": "8.2.0" }, diff --git a/client/oxfmt.config.mts b/client/oxfmt.config.mts new file mode 100644 index 0000000..76b37b9 --- /dev/null +++ b/client/oxfmt.config.mts @@ -0,0 +1,43 @@ +/******************************************************************************** + * Copyright (c) 2026 EclipseSource and others. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the Eclipse + * Public License v. 2.0 are satisfied: GNU General Public License, version 2 + * with the GNU Classpath Exception which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + ********************************************************************************/ +import shared from '@eclipse-glsp/oxfmt-config' with { type: 'json' }; +import { defineConfig, type OxfmtConfig } from 'oxfmt'; + +export default defineConfig({ + // JSON imports widen string literals (e.g. `arrowParens: string`), so the shared options are cast to the config type. + ...(shared as OxfmtConfig), + // Repository-specific ignores. Version control ignores (`.gitignore`) are honoured automatically and + // `node_modules` is skipped by default, so only generated and vendored content is listed here. + ignorePatterns: [ + // Build outputs + 'lib/', + 'dist/', + // Bundled webapp, copied into the Eclipse workflow example plugin + 'examples/*/app/', + // Generated files + '*.min.js', + '*.min.css', + // Lock files + 'package-lock.json', + 'pnpm-lock.yaml', + // Logs + '*.log', + // Agent-specific files + '.claude/', + '.reviews/', + '.worktrees/' + ] +}); diff --git a/client/oxlint.config.mts b/client/oxlint.config.mts new file mode 100644 index 0000000..68b7ea7 --- /dev/null +++ b/client/oxlint.config.mts @@ -0,0 +1,68 @@ +/******************************************************************************** + * Copyright (c) 2026 EclipseSource and others. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the Eclipse + * Public License v. 2.0 are satisfied: GNU General Public License, version 2 + * with the GNU Classpath Exception which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + ********************************************************************************/ +import glspConfig from '@eclipse-glsp/oxlint-config'; +import { defineConfig } from 'oxlint'; + +// Relative index and src imports restricted by the shared @eclipse-glsp/oxlint-config. +// Must be included in every `no-restricted-imports` override since an override replaces the entire rule value. +const restrictedBaseImports = ['..', '../index', '../..', '../../index', 'src']; + +export default defineConfig({ + extends: [glspConfig], + options: { + // `typeAware` enables the type-aware rules of the shared config. `typeCheck` additionally + // reports the TypeScript compiler diagnostics of the same program, so `pnpm lint` is a + // complete static check without a prior build. + typeAware: true, + typeCheck: true + }, + // Ignore JS/MJS/CJS config/build files, generated output and local git worktrees. + ignorePatterns: [ + '**/{node_modules,lib,dist}', + '**/*.d.ts', + '**/*.map', + '**/*.js', + '**/*.mjs', + '**/*.cjs', + // Standalone maintenance scripts, run directly by Node and not part of any tsconfig + 'scripts/', + '.worktrees/', + // Bundled webapp, copied into the Eclipse workflow example plugin + 'examples/*/app/' + ], + overrides: [ + // The sprotty defaults are customized and re-exported by GLSP. + { + files: ['packages/**/*.{ts,tsx}', 'examples/**/*.{ts,tsx}'], + rules: { + 'no-restricted-imports': [ + 'warn', + ...restrictedBaseImports, + { + name: 'sprotty', + message: + "The sprotty default exports are customized and reexported by GLSP. Please use '@eclipse-glsp/client' instead" + }, + { + name: 'sprotty-protocol', + message: + "The sprotty-protocol default exports are customized and reexported by GLSP. Please use '@eclipse-glsp/protocol' or '@eclipse-glsp/client' instead" + } + ] + } + } + ] +}); diff --git a/client/package.json b/client/package.json index 61ffea2..5154123 100644 --- a/client/package.json +++ b/client/package.json @@ -5,19 +5,19 @@ "scripts": { "app": "pnpm -C examples/workflow-webapp", "build": "pnpm compile && pnpm app bundle", - "check:all": "pnpm install && pnpm build && pnpm lint && pnpm format:check && pnpm headers:check", + "check:all": "pnpm build && pnpm lint && pnpm format:check && pnpm headers:check", "clean": "pnpm -r run clean", "compile": "tsc -b", "copy:client": "copyfiles -f ./examples/workflow-webapp/app/* ../server/example/org.eclipse.glsp.ide.workflow.editor/diagram", "fix:all": "pnpm lint:fix && pnpm format && pnpm headers:fix", - "format": "prettier --write .", - "format:check": "prettier --check .", + "format": "oxfmt", + "format:check": "oxfmt --check", "generate:index": "pnpm -r generate:index && pnpm lint:fix", "headers:check": "glsp checkHeaders .. -f ts tsx java -e \"**/src-gen/**\"", "headers:fix": "glsp checkHeaders .. -f ts tsx java -e \"**/src-gen/**\" --autoFix", "preinstall": "npx only-allow pnpm", - "lint": "pnpm compile && eslint .", - "lint:ci": "pnpm lint --output-file eslint_report.json --format json", + "lint": "oxlint .", + "lint:ci": "node ./scripts/lint-report.mjs", "lint:fix": "pnpm lint --fix", "publish:latest": "glsp releng publish latest", "publish:next": "glsp releng publish next", @@ -25,15 +25,15 @@ "watch": "concurrently --kill-others -n tsc,webapp -c red,yellow \"tsc -b -w --preserveWatchOutput\" \"pnpm -s app watch\"" }, "devDependencies": { - "@eclipse-glsp/dev": "next", - "@types/node": "22.x", + "@eclipse-glsp/dev": "2.9.0-next.4", + "@types/node": "24.x", "concurrently": "^9.2.1", "copyfiles": "^2.4.1", - "typescript": "^5.9.2" + "typescript": "^7.0.2" }, - "packageManager": "pnpm@11.7.0", "engines": { - "node": ">=22", - "pnpm": ">=11" - } + "node": ">=24", + "pnpm": ">=12" + }, + "packageManager": "pnpm@12.4.0" } diff --git a/client/packages/ide/package.json b/client/packages/ide/package.json index 19f7da8..8077a63 100644 --- a/client/packages/ide/package.json +++ b/client/packages/ide/package.json @@ -4,10 +4,6 @@ "description": "Glue code to integrate GLSP clients into Eclipse via a webapp", "homepage": "https://www.eclipse.org/glsp/", "bugs": "https://github.com/eclipse-glsp/glsp/issues", - "repository": { - "type": "git", - "url": "https://github.com/eclipse-glsp/glsp-eclipse-integration.git" - }, "license": "(EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0)", "author": { "name": "Eclipse GLSP" @@ -19,28 +15,31 @@ "url": "https://projects.eclipse.org/projects/ecd.glsp" } ], - "main": "lib/index", - "types": "lib/index", + "repository": { + "type": "git", + "url": "https://github.com/eclipse-glsp/glsp-eclipse-integration.git" + }, "files": [ "lib", "src" ], + "main": "lib/index", + "types": "lib/index", + "publishConfig": { + "access": "public" + }, "scripts": { "build": "tsc -b", "clean": "rimraf lib tsconfig.tsbuildinfo", "generate:index": "glsp generateIndex src -f -s", - "lint": "eslint ./src", "prepublishOnly": "pnpm build", "watch": "tsc -w" }, "dependencies": { - "@eclipse-glsp/client": "next" + "@eclipse-glsp/client": "2.9.0-next.3" }, "peerDependencies": { "inversify": "^6.1.3", "reflect-metadata": "^0.2.2" - }, - "publishConfig": { - "access": "public" } } diff --git a/client/pnpm-lock.yaml b/client/pnpm-lock.yaml index eefe66a..5dfe0ee 100644 --- a/client/pnpm-lock.yaml +++ b/client/pnpm-lock.yaml @@ -1,3 +1,161 @@ +--- +lockfileVersion: '9.0' + +importers: + + .: + configDependencies: {} + packageManagerDependencies: + pnpm: + specifier: 12.4.0 + version: 12.4.0 + +packages: + + '@pnpm/exe.android-arm64@12.4.0': + resolution: {integrity: sha512-sAwslzCw74OpqK2P9l39cgdrRWHSqf5wEjB58JEzeVX6wdLvaHyg9i/GeRK5Ou6PZNA3AkD4yLO3c/y7UqOf8w==} + cpu: [arm64] + os: [android] + + '@pnpm/exe.android-x64@12.4.0': + resolution: {integrity: sha512-Ps3Gz0OrqYjuRfhzeNqcvIow6QmNrU3BSzMxJu5rUCSl7inVUUFX2gZbNL9naQsNLoorKCdxUf4N+WI9Mr1WBg==} + cpu: [x64] + os: [android] + + '@pnpm/exe.darwin-arm64@12.4.0': + resolution: {integrity: sha512-75EYiF8GuiTsnvP4cbZsviMBjohXUYtg2zjD4gdfhqxlU1y9Nj+KdEsbH4jfgB/FgyJSYPB2rqfmvvgLnRlVug==} + cpu: [arm64] + os: [darwin] + + '@pnpm/exe.darwin-x64@12.4.0': + resolution: {integrity: sha512-b74TzBg8lxl0lqZImGOXpRbAGcqVKX+UMckl3wG+KH52yYHI86VBJP86HbJX30HJ/EFeC6Tgbz2E4b5hhKRvdA==} + cpu: [x64] + os: [darwin] + + '@pnpm/exe.freebsd-x64@12.4.0': + resolution: {integrity: sha512-A45d6axdQIFNyNTYZAC64wh5+6LJ6dNKhNAoNMNi/EC5y9CRfv0GL3ZYDBqpkmsN9KMAkVsFWizq/Ng6xtjnhw==} + cpu: [x64] + os: [freebsd] + + '@pnpm/exe.linux-arm64-musl@12.4.0': + resolution: {integrity: sha512-yS6DNel7twfEUoW1yka1hpQrnhRe/s1JZ1MThVfgrmNQrNaPyHxQvAihm/GtL2CM6OeMV6z5532H/W/yDjQp5g==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@pnpm/exe.linux-arm64@12.4.0': + resolution: {integrity: sha512-6npQUwq3D/WXbTgR4evApEKQ9ITznZ6Iz/dptcjBzA7+wSLTaYkK98Od2wsHCoPmEFb9tGtM+cvG82+wy0o9uA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-ppc64@12.4.0': + resolution: {integrity: sha512-7shJ4WytyvBEdjrbIDqx2gDAH7sr0HBDooTmnNQ7DlzcLeeGi7Yqir7gJjOTm6s9S1cVnT56IwmqnnwQMP1HTQ==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-riscv64@12.4.0': + resolution: {integrity: sha512-q03EGUFoe/oOU/67E3sEAePr3qjFu8xrsX+WOXTodcFXfO5FondC6TPs7BSwhTiV27j3jeDP56qhJP05pXn+vw==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-s390x@12.4.0': + resolution: {integrity: sha512-GZ5YellCtNnaLe9zVj9l3avlw9CbSzExUFDh7v+tVbLfOOfkkRLpx2lsw1ytJ/nFWvxF2TO6M6Q9JDT7q8svRg==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-x64-musl@12.4.0': + resolution: {integrity: sha512-c8YyjVL39L48tRg9i3iw3d90fN6q84UjxlgWBhplcBOpzCgmglDVkPMtEAVDC+t9iobvYzs2hJnmTqLaA87MVA==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@pnpm/exe.linux-x64@12.4.0': + resolution: {integrity: sha512-SQVgRkcR4Xyqf8+VNbtY0rtcEnfDq48RhH30HWo2/UfqKEfle2rOMyGZOmN1DbMw4ZzG5mWYoC81O7ZqHFZcPw==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.win32-arm64@12.4.0': + resolution: {integrity: sha512-ZamXPhx0X6APZJAIkcH+K9KAsKcTYwxEgOyTQ/NXE+2UHBT9bRnSQ91sBeY6ELNd58V5cmMAkXSW5xmU+2ry+w==} + cpu: [arm64] + os: [win32] + + '@pnpm/exe.win32-x64@12.4.0': + resolution: {integrity: sha512-b8bLaprnpYi/2zN0M3H9RDAHuxCP3fmV5agPPwdp9fIdjNSUkV7V/RC3L4oWwbZvVgYEjjFLx1RuJOdltoKP6g==} + cpu: [x64] + os: [win32] + + pnpm@12.4.0: + resolution: {integrity: sha512-N1NsJu1Aq0E0tlEeCfayfz67RWh0aPJAbKOAUnmk5coVjBkxNQrZd01qshCNcbPbrrOZQxWSlDdeTQU+jgVoXA==} + engines: {node: '>=18.*'} + hasBin: true + +snapshots: + + '@pnpm/exe.android-arm64@12.4.0': + optional: true + + '@pnpm/exe.android-x64@12.4.0': + optional: true + + '@pnpm/exe.darwin-arm64@12.4.0': + optional: true + + '@pnpm/exe.darwin-x64@12.4.0': + optional: true + + '@pnpm/exe.freebsd-x64@12.4.0': + optional: true + + '@pnpm/exe.linux-arm64-musl@12.4.0': + optional: true + + '@pnpm/exe.linux-arm64@12.4.0': + optional: true + + '@pnpm/exe.linux-ppc64@12.4.0': + optional: true + + '@pnpm/exe.linux-riscv64@12.4.0': + optional: true + + '@pnpm/exe.linux-s390x@12.4.0': + optional: true + + '@pnpm/exe.linux-x64-musl@12.4.0': + optional: true + + '@pnpm/exe.linux-x64@12.4.0': + optional: true + + '@pnpm/exe.win32-arm64@12.4.0': + optional: true + + '@pnpm/exe.win32-x64@12.4.0': + optional: true + + pnpm@12.4.0: + optionalDependencies: + '@pnpm/exe.android-arm64': 12.4.0 + '@pnpm/exe.android-x64': 12.4.0 + '@pnpm/exe.darwin-arm64': 12.4.0 + '@pnpm/exe.darwin-x64': 12.4.0 + '@pnpm/exe.freebsd-x64': 12.4.0 + '@pnpm/exe.linux-arm64': 12.4.0 + '@pnpm/exe.linux-arm64-musl': 12.4.0 + '@pnpm/exe.linux-ppc64': 12.4.0 + '@pnpm/exe.linux-riscv64': 12.4.0 + '@pnpm/exe.linux-s390x': 12.4.0 + '@pnpm/exe.linux-x64': 12.4.0 + '@pnpm/exe.linux-x64-musl': 12.4.0 + '@pnpm/exe.win32-arm64': 12.4.0 + '@pnpm/exe.win32-x64': 12.4.0 + +--- lockfileVersion: '9.0' settings: @@ -15,11 +173,11 @@ importers: .: devDependencies: '@eclipse-glsp/dev': - specifier: next - version: 2.9.0-next.1(@types/node@22.19.21)(@typescript-eslint/utils@8.61.1(eslint@10.5.0)(typescript@5.9.3))(typescript@5.9.3)(vite@8.2.2(@types/node@22.19.21)) + specifier: 2.9.0-next.4 + version: 2.9.0-next.4(@types/node@24.13.4)(eslint@10.5.0(supports-color@8.1.1))(typescript@7.0.2)(vite@8.2.2(@types/node@24.13.4)) '@types/node': - specifier: 22.x - version: 22.19.21 + specifier: 24.x + version: 24.13.4 concurrently: specifier: ^9.2.1 version: 9.2.1 @@ -27,23 +185,23 @@ importers: specifier: ^2.4.1 version: 2.4.1 typescript: - specifier: ^5.9.2 - version: 5.9.3 + specifier: ^7.0.2 + version: 7.0.2 examples/workflow-webapp: dependencies: '@eclipse-glsp-examples/workflow-glsp': - specifier: next - version: 2.9.0-next.1(inversify@6.2.2(reflect-metadata@0.2.2))(reflect-metadata@0.2.2) + specifier: 2.9.0-next.3 + version: 2.9.0-next.3(inversify@6.2.2(reflect-metadata@0.2.2))(reflect-metadata@0.2.2) '@eclipse-glsp/client': - specifier: next - version: 2.9.0-next.1(inversify@6.2.2(reflect-metadata@0.2.2))(reflect-metadata@0.2.2) + specifier: 2.9.0-next.3 + version: 2.9.0-next.3(inversify@6.2.2(reflect-metadata@0.2.2))(reflect-metadata@0.2.2) '@eclipse-glsp/ide': specifier: workspace:* version: link:../../packages/ide '@eclipse-glsp/protocol': - specifier: next - version: 2.9.0-next.1(inversify@6.2.2(reflect-metadata@0.2.2))(reflect-metadata@0.2.2) + specifier: 2.9.0-next.3 + version: 2.9.0-next.3(inversify@6.2.2(reflect-metadata@0.2.2))(reflect-metadata@0.2.2) inversify: specifier: ^6.1.3 version: 6.2.2(reflect-metadata@0.2.2) @@ -67,8 +225,8 @@ importers: packages/ide: dependencies: '@eclipse-glsp/client': - specifier: next - version: 2.9.0-next.1(inversify@6.2.2(reflect-metadata@0.2.2))(reflect-metadata@0.2.2) + specifier: 2.9.0-next.3 + version: 2.9.0-next.3(inversify@6.2.2(reflect-metadata@0.2.2))(reflect-metadata@0.2.2) inversify: specifier: ^6.1.3 version: 6.2.2(reflect-metadata@0.2.2) @@ -99,50 +257,45 @@ packages: resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} - '@eclipse-glsp-examples/workflow-glsp@2.9.0-next.1': - resolution: {integrity: sha512-l9yrLKJSfzAklqKXP2B4ioiQCqD1KxUcUXqqoIXTQBthWtRz5hhrCHdJZcIM1x5hLjcH0W7Y61hJY0EyR8sCJA==} + '@eclipse-glsp-examples/workflow-glsp@2.9.0-next.3': + resolution: {integrity: sha512-ogrWJXLNJcnA6LIeMM5T0/Krz2vitFbiofyDI6VEcvl6J+PnSEu9Sg5yzB0SuQtrtYnGa7T4lLz6dlH9JNBllA==} peerDependencies: inversify: ^6.1.3 reflect-metadata: ^0.2.2 - '@eclipse-glsp/cli@2.9.0-next.1': - resolution: {integrity: sha512-/Z6wW4YQ2jo4X1L3Zcu02E6m4eddiMLfxMTQRkBEGeNn4z+L6d4o4ev+j0TMGTkNoIHYyHBQKZFExfNinN8h5Q==} + '@eclipse-glsp/cli@2.9.0-next.4': + resolution: {integrity: sha512-JfVq5Hz5IbrPAja8jcX1IWJjviVKSAk4aAEWY1hdmzHni5ATh1mffgnNRZ5FWKibY0VtZgJBSQ4PGakZqv6TkQ==} hasBin: true - '@eclipse-glsp/client@2.9.0-next.1': - resolution: {integrity: sha512-udj1ve/b9em3Hg5e/FarAT4NG/th9OLTeO383NWAl+ZcbyHom/hwszFg2s+dUa0GjBLRXL1AuFfkcY6UqboEDg==} + '@eclipse-glsp/client@2.9.0-next.3': + resolution: {integrity: sha512-e1jtWomb6MI9kavuv9SFgFp/EbU50vl+VdDFBUCchcCVZcq0OI4nfDS8Y5pRb9kBNHsX1+M6fBrdDP76Qj+Vbg==} peerDependencies: inversify: ^6.1.3 reflect-metadata: ^0.2.2 - '@eclipse-glsp/config-test@2.9.0-next.1': - resolution: {integrity: sha512-8j8s/BtKkXPIKZzqMhDgZsSpWMtCJI3WAa5Athh7h0Pbze44WxwS3mGPonEha8J9Te5pjfbrkkONUURM+bmmhg==} + '@eclipse-glsp/config-test@2.9.0-next.3': + resolution: {integrity: sha512-RSvJ1047ps1iNlnwUaif1smgTrN/oomPwEV6WLUpb4LCsbsuGpNDUPFJyQzgoxcWu/B7cjLELvBxwphbV2wLUQ==} - '@eclipse-glsp/config@2.9.0-next.1': - resolution: {integrity: sha512-OIEW5bdM6/AvoMluU4vYDUNFDOl4yYWckUmHeX+XpeH+EeDP1qJizJ1JhwSwDkLVmLEXEz1pNX1wcpNmb6fuJg==} + '@eclipse-glsp/config@2.9.0-next.3': + resolution: {integrity: sha512-VsFpE9qmrAKymmGT88fbooOBbkfQbS2ePT3Jj/m20hKYgD0vIEc4IPmirLyAf8CorZY1PEAHF2EbKdEBCLUfWA==} - '@eclipse-glsp/dev@2.9.0-next.1': - resolution: {integrity: sha512-EbD7j1GZt5kPGVvYocCfQfn6NC8/+n/wDuM8a9DkUEccjjxIlUyhpLZvSoabuU6tHzoRHmQSw+ew7fyJ28n06A==} + '@eclipse-glsp/dev@2.9.0-next.4': + resolution: {integrity: sha512-tE2Q2rOQ5ITLr96kkMuladsboJ7ScATup8ItdCBSsx/L3rdTlA9kTuslUQPbgAQCLK7O2J3yCxbneeKTzSVieA==} - '@eclipse-glsp/eslint-config@2.9.0-next.1': - resolution: {integrity: sha512-2fZG4eshzKVPRO+/hSJOMkUI3oEQtDLhmH7/bCmstXLj35ccu6ammRXrMDwAzpXeeFqGzp4Y2hknW7JxceB8jQ==} + '@eclipse-glsp/oxfmt-config@2.9.0-next.3': + resolution: {integrity: sha512-JkCqFPPtFTaX3ojhWeZ6YZHUUe4IxuUzX0bLTNbvARJxY7R1rptG3Ua35HUG9Rzad3q6qQrScmcQB8jGib3YPw==} peerDependencies: - '@eslint/js': ^10.0.1 - '@stylistic/eslint-plugin': ^5.10.0 - '@tony.ganchev/eslint-plugin-header': ^3.1.1 - eslint: ^10.5.0 - eslint-config-prettier: ^10.0.0 - eslint-import-resolver-typescript: ^4.0.0 - eslint-plugin-import-x: ^4.16.2 - eslint-plugin-no-null: ^1.0.2 - globals: ^17.6.0 - typescript-eslint: ^8.0.0 - - '@eclipse-glsp/prettier-config@2.9.0-next.1': - resolution: {integrity: sha512-NCnfiukDokl+uhx3nteAOzizNf9jfurokyXEzwVn6ZQCxgFeUjEHdm8xRr5PZt9ijAxC7LZAXkjI9tVTYrWWPw==} - - '@eclipse-glsp/protocol@2.9.0-next.1': - resolution: {integrity: sha512-YDsTApY02/Zh9kTpAyDGpq3RO2iHwl0OLALj+8LmjGCWJqMZLl2SXdmAySRWY4W5MYIIPLJ2lm8R7iNRYs9mxA==} + oxfmt: '>=0.67.0' + + '@eclipse-glsp/oxlint-config@2.9.0-next.3': + resolution: {integrity: sha512-ZRl+A/S7x8Fn2vuhriO0WFsBMrmM2E+PBBFjBXwIEQ367XzGBS7yhjJZMa9XJrxLhxiAc9a8tyCo2GEPiyOzPA==} + peerDependencies: + '@tony.ganchev/eslint-plugin-header': ^3.4.4 + oxlint: ^1.82.0 + oxlint-tsgolint: '>=7.0.2001' + + '@eclipse-glsp/protocol@2.9.0-next.3': + resolution: {integrity: sha512-XiLihttzNlckeQNfBJB4wAGp4/Kr/2WbvDZLqTOlL251PEbyePISpThDJyvCnB4wrIy/ZAvDDZacj3P+w/b8AQ==} peerDependencies: inversify: ^6.1.3 reflect-metadata: ^0.2.2 @@ -152,32 +305,23 @@ packages: reflect-metadata: optional: true - '@eclipse-glsp/sprotty@2.9.0-next.1': - resolution: {integrity: sha512-mFUX3akN2ko3Ooce2jl8q+tg4YyJ+inb5gwHuTyoZopvzreI/b44BbIgkT80As8J6UkJAeby2dJByqVJGL5vsw==} + '@eclipse-glsp/sprotty@2.9.0-next.3': + resolution: {integrity: sha512-BCLDnJPpB15Dw9WgQ0xodeIb/kHaOsSHec8HvMx2llyAxamnMXIpJi879etTmpbVF6LXgvS3KSLOaKQBCuOLSg==} peerDependencies: inversify: ^6.1.3 reflect-metadata: ^0.2.2 - '@eclipse-glsp/ts-config@2.9.0-next.1': - resolution: {integrity: sha512-ZvFz/NKN/2fGRBj83Gf/vgiCFtJmD3ZX9ZYZlwj3S4DFDu2vbVcjrcAWfBckVNMYXl+n9kqYJhFxhx3xx/Io1g==} + '@eclipse-glsp/ts-config@2.9.0-next.3': + resolution: {integrity: sha512-3+TICuf0/kqDSFWKyWrfexGDcGY261h7M5URX+g2AShM6g7q2AGmnXHH/YKUIRIzXJLr7+Z9AhFrhj60D+Xagw==} peerDependencies: - typescript: '>=5.5' + typescript: '>=6.0' - '@eclipse-glsp/vitest-config@2.9.0-next.1': - resolution: {integrity: sha512-Im8ujwCmyq01oRYBnhomH4arzptoMG6gBiXcBGE/EyvKmniLZf/KxFUl2WEEydavea70jqyvoWrFrJ6LEy8aSQ==} + '@eclipse-glsp/vitest-config@2.9.0-next.3': + resolution: {integrity: sha512-TyJEz+8KXbL+BKaox0JWvd1lR7mYXmHxp9AHEFG0RYNrPbLeb9ZgXFMisxl7ZsXq1ehyYgimwCAYbGYjCjyjYg==} peerDependencies: '@vitest/coverage-v8': '>=4.0.0' vitest: '>=4.0.0' - '@emnapi/core@1.10.0': - resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} - - '@emnapi/runtime@1.10.0': - resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} - - '@emnapi/wasi-threads@1.2.1': - resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} - '@esbuild/aix-ppc64@0.25.12': resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} engines: {node: '>=18'} @@ -356,15 +500,6 @@ packages: resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/js@10.0.1': - resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - peerDependencies: - eslint: ^10.0.0 - peerDependenciesMeta: - eslint: - optional: true - '@eslint/object-schema@3.0.5': resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -414,17 +549,282 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@napi-rs/wasm-runtime@1.1.5': - resolution: {integrity: sha512-AWPoBRJ9tsnVhor4sjO7rkni+7p+2IAEFj6cx06UgP10jkQHqay/36uRV/bFkgrh18D9vb4cr8Q0Pthskgzy+Q==} - peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 - '@oxc-project/types@0.147.0': resolution: {integrity: sha512-IJ3s6ltHLp45S0bh7phkX+gJO7A1Wuz2EaqpAhb8WjqDwbzMiWKHhyyT42tskaWjEYXtHtVCPpnBJVT9+dcRLg==} - '@package-json/types@0.0.12': - resolution: {integrity: sha512-uu43FGU34B5VM9mCNjXCwLaGHYjXdNincqKLaraaCW+7S2+SmiBg1Nv8bPnmschrIfZmfKNY9f3fC376MRrObw==} + '@oxfmt/binding-android-arm-eabi@0.67.0': + resolution: {integrity: sha512-2olh3ioEmc4gRzQm7jxyB1b/PFBoFvTq8KdgYySeNpysDtA6DEg2Mvya4/I6flhL7G0eOrE8RD7JCNCIMhE16Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxfmt/binding-android-arm64@0.67.0': + resolution: {integrity: sha512-ulfw8EHN1MBq/MFFDXw2/M1VAFu5mRUcnuZ8Hqbv9viAnFzO9t1jKSAsDqKYYDGMlytF/uj6Z5z5n/tHupnKhw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxfmt/binding-darwin-arm64@0.67.0': + resolution: {integrity: sha512-MfONZx/O2o9M5v2jDFol556G9+A+P9xCuJ4DZ+qhE+RnaCdoscy6Eu5nq1dbuNxhwdJyZ6kLI7fnG9mwEeOeGg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxfmt/binding-darwin-x64@0.67.0': + resolution: {integrity: sha512-CYnIx5LvFVJnyJcCqwH2jxMKjFjqo5678MPjdmNFoSGMhlOvZ/xRZqvhDcolKrXc8fezW3AKh+C4wyoFuWOSSg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxfmt/binding-freebsd-x64@0.67.0': + resolution: {integrity: sha512-7/iF1orvIS9mxhKUqnmtMgm+OrSQ5acPwuvdQrm6ECgqbwPmC+Pw9cdke3sNfVN6pT2hbJ58+jP8BCThl5HXOg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxfmt/binding-linux-arm-gnueabihf@0.67.0': + resolution: {integrity: sha512-yy+OGys07IZOpOmYPZoObKyUQLkfxeQqeCypk+1jaZd8HGo77hzvU1Jg8X3+W75o+9lszOjBfg0nkGtlwYywXw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm-musleabihf@0.67.0': + resolution: {integrity: sha512-wPIeeigXgJpwNw3wydYRt3U9iN9Y/ejpOZuYL9IA7igxWs7LIQMOkhKxTumRvy6dIv0iXKk3RTw3Vmjg0i+2sg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm64-gnu@0.67.0': + resolution: {integrity: sha512-0+XNxcdbkTfxdcD4qW6Ci9n+mBNJ8xTBumnxKvKBmRFOdx0Wf8/KiHjCJayooXmYkqRpRVd98Q5egvzx5BLSgQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-arm64-musl@0.67.0': + resolution: {integrity: sha512-I75LKPJyNOYUzkqAiAMIE31+Ye7xtQXZdoty1IXn4B+bw5Zpmez5wfG19ejGpNnS/BzQ7LFS+7jxuTPb+vHiZw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-linux-ppc64-gnu@0.67.0': + resolution: {integrity: sha512-c2M5iRpe1QMZSRE/UvZoPdXBWb5Ic/ycvOyNiKCqPwQ/OyOKIMiJs02ynlNnjb7ZZJnRXYLmGcohoINOcwDK3w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-riscv64-gnu@0.67.0': + resolution: {integrity: sha512-dQzzYlV24Udhfm5ECuSdgqRvFJU/CGHzcYYEO3dLM6W6+CHiBFrq9OjIllkdCcPhsoSQ8o223Dja84MOSzed9A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-riscv64-musl@0.67.0': + resolution: {integrity: sha512-rFNq1CgX4qMJANOq42LkAs90JE80GpiaEohAV2qn/gT2hGjQTW1zBO5zQBxArI4926pM1OSzo3CN0tBszGBIaA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-linux-s390x-gnu@0.67.0': + resolution: {integrity: sha512-Sky6rEdz2o5IGq01lPhS12yEvDdChVEcaYrcLHkveh4Fx0qPjljE/Iul6SX/bRMl6lNc8J7J/mDQdzgBdA++Pg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-x64-gnu@0.67.0': + resolution: {integrity: sha512-vPXmlNORV8AZq2Ocxh07pxwMjfENUWCV/eZArnao0qC3NO/hDeTVkQvee7SJJUbIiF5PZbBa4kYmaXnu7Rk58w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-x64-musl@0.67.0': + resolution: {integrity: sha512-x/WAtFqYtVr3vZ9ni8nr4kn9whSitg8fOljq/pZzBpxopRdY1BMLZCZkrbIbaBcYkm46qGbqVea2FCWmtQ2P9w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-openharmony-arm64@0.67.0': + resolution: {integrity: sha512-eRw9Neh4/aA6i+q/R3WU1gGQINhVM0J4fXIm6t27caOamkr/37uAkp1IdBx4zlJH97hmXR63z/q9n5c5dN7MzA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxfmt/binding-win32-arm64-msvc@0.67.0': + resolution: {integrity: sha512-YIMvb+sGNYN2uc6+QK2HLPeEKM2vl7QZ5onQzpAJRb6pnf0DwUFP5R8tdS9R0l8hdUil2gu4Uxd0Yxrop0iT4w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxfmt/binding-win32-ia32-msvc@0.67.0': + resolution: {integrity: sha512-LzmU9MyACPzwNDIK0ItMedHPz735Ug7ELWguxo4/kuy6zWuDoeglOAEFCY8jLg0PzRpFO3hDyLFe2Gu2eFDeGA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxfmt/binding-win32-x64-msvc@0.67.0': + resolution: {integrity: sha512-sbQOIDNLUEeVZcAJcSL5VURn7kfjvilPviody4Yl5n8lQCDtUm+C9oHTTwZS/m4d/Z6Vv3jNEiAofH932NPPCg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@oxlint-tsgolint/darwin-arm64@7.0.2001': + resolution: {integrity: sha512-CUJEdbSZ54+Xy9OXqOhWLTKZKV0BBiV7C2i/ygyVmXtkUNXx5YCzN8DpSSshTAKktoL7S+tnQ/ftFG/i7X896w==} + cpu: [arm64] + os: [darwin] + + '@oxlint-tsgolint/darwin-x64@7.0.2001': + resolution: {integrity: sha512-pXfBb5BqONCcgrXQNUZWXgiYmRSWJzd97S8i41VVOh6ut0tyo+cJ5FKFpczDHxiVNfj/3e7c9B4MtztNdpIVCw==} + cpu: [x64] + os: [darwin] + + '@oxlint-tsgolint/linux-arm64@7.0.2001': + resolution: {integrity: sha512-roP7zujb/QDPzDwEKsFFpzNHHy91/Y7oX9vQXk78ekyZtcQj1QXDIMH33gjDdHBfRl4K9pZ36xhRgrP4Zr+R8A==} + cpu: [arm64] + os: [linux] + + '@oxlint-tsgolint/linux-x64@7.0.2001': + resolution: {integrity: sha512-UDezNqdECVmngu2TPnjaS1YoAmcTaBoI5lV9vk3VahBxoi+I5r9k3iJTT7qZoYWOXTD/7T7bNcwRgrocR6BscQ==} + cpu: [x64] + os: [linux] + + '@oxlint-tsgolint/win32-arm64@7.0.2001': + resolution: {integrity: sha512-uJZhqB6pdXLuN+AD1F5082byyQti/NPmJA77GtcFlmT2HzRelqbNls3SaIqxpjdFgvSBF9g0yOKGBkGFg7kX8Q==} + cpu: [arm64] + os: [win32] + + '@oxlint-tsgolint/win32-x64@7.0.2001': + resolution: {integrity: sha512-FkDRm8hx9OwzGQqyWG1tO5QrTLRApff9DzSgpz9QZau37BR8d1VYKOxMLGf6shPZntJFoTwIIJYT68VndYDCog==} + cpu: [x64] + os: [win32] + + '@oxlint/binding-android-arm-eabi@1.82.0': + resolution: {integrity: sha512-a3LB+C5Dsj5b/qtmG/mv5WrzuiXEpg1KF5nXWcEvaoN5TYAqkIvxPOwTPp3Jy/FoGpRo8zsTFhMElMXfeoOEzA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxlint/binding-android-arm64@1.82.0': + resolution: {integrity: sha512-OBlhRgNqFblGpGenno/aqOfJLOkQ2B8Ig3iDAalfn0H8hJGZKXPeexCRTDm6uwv6YUjSA9Xnwt1y/Bgj5ZH8uw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxlint/binding-darwin-arm64@1.82.0': + resolution: {integrity: sha512-dsopxqtY5ZdyT9uLHyGt1SyiLop6hi7hWI3PKpePodkRQOkLaCm+OE4fR9CAz9qdfjiFO8531tX/QDyP/psjFg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxlint/binding-darwin-x64@1.82.0': + resolution: {integrity: sha512-94Lu0SgTClKColU66g1VDuigV3HkcbkJBnTtZjGYfE8UPugaWDgKrm2icjC6HJVUYler2OXaHP/X0TBy8+CowQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxlint/binding-freebsd-x64@1.82.0': + resolution: {integrity: sha512-hne/V06ewhh1i0w8+l7GDNROAGCGPmyFuOwiP7YTRu0JycyStJ4785dmF8xU5p0uUwt2emvIF9vc7Xjis+cJ0g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxlint/binding-linux-arm-gnueabihf@1.82.0': + resolution: {integrity: sha512-aWY2xtbZf1LneW9Qsv/n2Sp8gOu74JrlQzEtj4coHX2SHFrCfhmAumaU+sI/A5nr+yoTRTSmI/pL2s6ADlNSkw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxlint/binding-linux-arm-musleabihf@1.82.0': + resolution: {integrity: sha512-Fe+TtXCXMh/5f7kWlZ2VAwsMumZWtraFlKVk1NJlL52/beGwfDE7ov+/8gVirHzWokzGu7X65hSPq0ucPDskWQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxlint/binding-linux-arm64-gnu@1.82.0': + resolution: {integrity: sha512-6azCZ6OJudlvipNttXCCQcyeFfcJ/NvUZdSN1z8elo73kCHtyQC7WTiUcSjWYvJ1jaq9KDUyMAoAS/vNzhBomA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-arm64-musl@1.82.0': + resolution: {integrity: sha512-PLEaSD8IAIIlwW4dwOd9YaxuxeOpwiXL4J24rcnE4iNtyM5j9Q9/3+gti08oXpx0u2ygNjRDx9xjWWpQonuJEw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxlint/binding-linux-ppc64-gnu@1.82.0': + resolution: {integrity: sha512-D94em/BwknNTn4vqxjHh5wb2oL566eFhArabqKIr0cNZMHOJuiraFp1A8tXpH05bbE5tqwEfLXTI0MWEGtn3Dw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-riscv64-gnu@1.82.0': + resolution: {integrity: sha512-MOprxBaoYU2D4VgxXCl3ghydThWtx7Um1lL51kGYNeQ5Al7WzsH7/tqGdNtbLrIWnjq3bsm13+nz/gRIxjrOXw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-riscv64-musl@1.82.0': + resolution: {integrity: sha512-5h55QsfJ/luDXZzC20k6SNOY1Az+dCP9WvntKtcUWh2JhckAdwApY2ZusaBTwLENnReXU+A2fJtSrYvZJNKNPg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxlint/binding-linux-s390x-gnu@1.82.0': + resolution: {integrity: sha512-IE8NJNLlHr0CaXyGJPGVn0eTkUyoj1I2UfA8x7I4PSOYKsQ/6btVC7Pywrj5onk0cMH25r6Z38SoN3AvE5Zuog==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-x64-gnu@1.82.0': + resolution: {integrity: sha512-XUUUxaBo9XKl+J1B9EmP1cTGQPddzeURvoGkfwh/94PGnbW+hBprDljneoI2M1jzC1bzrIV3ihc7iM9UXl8+tg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-x64-musl@1.82.0': + resolution: {integrity: sha512-SWLSFulX9TDuH6yvbPYp4+VNn6jkkIvvI+KiujDM5rWBRHEfkesCC/pCneIIUr6ovkxZ5fRtpi2v5Cz5FrMJZg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxlint/binding-openharmony-arm64@1.82.0': + resolution: {integrity: sha512-BQy35f6ZUdNr9a6c7B7orxQTcLjByGT2z3WAgmRovpRwmPYAaJ+NTplmMzhdjdJ4qSchfMNZy/Ukg+qRg6zseQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxlint/binding-win32-arm64-msvc@1.82.0': + resolution: {integrity: sha512-V4QhSTg5gctZue8RJjsGi7NpQPThr/p1/HfmiMC5kfe1KFEup9SQRVub4A6kijQjdHfxj7bLL1KO3QO7/5bwMQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxlint/binding-win32-ia32-msvc@1.82.0': + resolution: {integrity: sha512-TUSCLaKB2yktpFAJ/r3HAUYsaV/3DT7JS4iNKyoh3a9YNwD0UG7Ezh4D8m23654vQcU6P/RQrCAjRPKe4peP/A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxlint/binding-win32-x64-msvc@1.82.0': + resolution: {integrity: sha512-VTVoRIWJTb+wvUX8EYoPArfFH02whuR10goFXE/LHRRX33ajRrFgqbcONXZMiF4C5rnattfkm87HqYn8jb8hmQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] '@rolldown/binding-android-arm-eabi@1.2.6': resolution: {integrity: sha512-b+jTcARdTiFLI6jB4a5XjTm0RWd6KcRfQj/I2356fxUZemiho9zQLxo0RtCuMDAyKcLo6cEltkgbQp6d1+sjjQ==} @@ -528,20 +928,11 @@ packages: '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - '@stylistic/eslint-plugin@5.10.0': - resolution: {integrity: sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^9.0.0 || ^10.0.0 - '@tony.ganchev/eslint-plugin-header@3.4.4': resolution: {integrity: sha512-O3PDvjikVWECu078bLdRb2HwjVgR+wa7D0GX8gN1A8axlgEc7tordHOoEYcKRVxGcAw7bxXjwiKGXaY17qXD+Q==} peerDependencies: eslint: '>=7.7.0' - '@tybys/wasm-util@0.10.2': - resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} - '@types/chai@5.2.3': resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} @@ -557,185 +948,126 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/node@22.19.21': - resolution: {integrity: sha512-VMeFBSCKQKmm2swI2kW51SFusDqekC6q9trBCvJ/JliDchFSuoYYKN7yVNjPthP1HKZcx3U1gI/wTcEBjEFKTA==} + '@types/node@24.13.4': + resolution: {integrity: sha512-YJ7EqCstVTzIr0fMr7qul/977en+pQHrfmuKIo6Zr9i75Be21dr3MovcfvGtyvi2HAUrRerWps5sMO9I7WaxDw==} - '@typescript-eslint/eslint-plugin@8.61.1': - resolution: {integrity: sha512-ZPlVl3PB3et/59Ne0fv/sci6ZXz4T4Hp4nTJ56i/Y0gR89ARb+KphojTq6j+56E5PIezmOIOOWyY+aWQFd+IkQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.61.1 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/parser@8.61.1': - resolution: {integrity: sha512-PJ5vePq5/ognBbrIcoC5+SHO5dfpeLPzP9FpLkzWrguoYQEeeSjlJpVwOpo1JRSTEi7dRcwNy4h4dzV70PqHcg==} - 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.1.0' - - '@typescript-eslint/project-service@8.61.1': - resolution: {integrity: sha512-PrC4JYGmR241lYnfhmKGTXkFqv8+ymbTFgSAY0fVXpY82/QkMw5TZPl+vGzuDDU2QYJk9fIDOBTntF+yDv9LEA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/scope-manager@8.61.1': - resolution: {integrity: sha512-L2bdIeoQS8FlKAvONAr20w6OcLXeB+qiDKbAooS9A0Ben+iSIkBef0FxqwKWYqt5sa0i4KJtxVyVmhMylKzF5w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/tsconfig-utils@8.61.1': - resolution: {integrity: sha512-UN/H4di+OO7EWx2ovME+8t31YO+KVnK0RRKEHR3kOt21/Ay8BOq3M1OMvWs5vNiqcFCYGYoxK3MXPZzmMUE+yg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/type-utils@8.61.1': - resolution: {integrity: sha512-GYRicKmVK0C4fsKgaACaknOUAq9Oa2kwsjnpFhFcS/5p4Ht5IP9OVLbgIgcK4SRk92nVHFluurg1lumD9dBcLw==} - 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.1.0' - - '@typescript-eslint/types@8.61.1': - resolution: {integrity: sha512-G+CRlPqLv7Bz1IZVs03x5K59F1veqL0EJUROAdGhKsEq8qOiRiZbI+HUojPq5l0fEGOKModD9br6lObhB8zkoA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.61.1': - resolution: {integrity: sha512-u+oQD3BqYWPc8YV9Zab4vaJElJuwOLPRc10Jm1o/qS+6Qwen14HCWwx0Seo4LnSn2wxea2Ik8DxPt2/FHmuhrg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/utils@8.61.1': - resolution: {integrity: sha512-1+P/3Dj6jvtybE1q0HQ6yBt/gq+oKJyLdEv4HdnqasaEXRSYCAsD59mXEVQnM/ULNdQxbX77tdG4jPRjIS6knA==} - 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.1.0' - - '@typescript-eslint/visitor-keys@8.61.1': - resolution: {integrity: sha512-6fJ9MHWtK14C1DSkiMlHUSOmrVebL7150xZJBlJiL62jjhIA4JmOq6flwBgDxIdBKKdoiZRel+dfPD5MLfny3w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@unrs/resolver-binding-android-arm-eabi@1.12.2': - resolution: {integrity: sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==} - cpu: [arm] - os: [android] - - '@unrs/resolver-binding-android-arm64@1.12.2': - resolution: {integrity: sha512-YGCRZv/9GLhwmz6mYDeTsm/92BAyR28l6c2ReweVW5pWgfsitWLY8upvfRlGdoyD8HjeTHSYJWyZGD4KJA/nFQ==} - cpu: [arm64] - os: [android] + '@typescript/typescript-aix-ppc64@7.0.2': + resolution: {integrity: sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [aix] - '@unrs/resolver-binding-darwin-arm64@1.12.2': - resolution: {integrity: sha512-u9DiNT1auQMO20A9SyTuG3wUgQWB9Z7KjAg0uFuCDR1FsAY8A0CG2S6JpHS1xwm/w1G08bjXZDcyOCjv1WAm2w==} + '@typescript/typescript-darwin-arm64@7.0.2': + resolution: {integrity: sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==} + engines: {node: '>=16.20.0'} cpu: [arm64] os: [darwin] - '@unrs/resolver-binding-darwin-x64@1.12.2': - resolution: {integrity: sha512-f7rPLi/T1HVKZu/u6t87lroib16n8vrSzcyxI7lg4BGO9UF26KhQL44sd9eOUgrTYhvRXtWOIZT5PejdPyJfUA==} + '@typescript/typescript-darwin-x64@7.0.2': + resolution: {integrity: sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==} + engines: {node: '>=16.20.0'} cpu: [x64] os: [darwin] - '@unrs/resolver-binding-freebsd-x64@1.12.2': - resolution: {integrity: sha512-BpcOjWCJub6nRZUS2zA20pmLvjtqAtGejETaIyRLiZiQf++cbrjltLA5NN/xaXfqeOBOSlMFbemIl5/S5tljmg==} - cpu: [x64] + '@typescript/typescript-freebsd-arm64@7.0.2': + resolution: {integrity: sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] os: [freebsd] - '@unrs/resolver-binding-linux-arm-gnueabihf@1.12.2': - resolution: {integrity: sha512-vZTDvdSISZjJx66OzJqtsOhzifbqRjbmI1Mnu49fQDwog5GtDI4QidRiEAYbZCRj9C8YZEW+3ZjqsyS9GR4k2A==} - cpu: [arm] - os: [linux] - - '@unrs/resolver-binding-linux-arm-musleabihf@1.12.2': - resolution: {integrity: sha512-BiPI+IrIlwcW4nLLMM21+B1dFPzd55yAVgVGrdgDjNef+ch03GdxrcyaIz8X9SsQirh/kCQ7mviyWlMxdh2D7g==} - cpu: [arm] - os: [linux] + '@typescript/typescript-freebsd-x64@7.0.2': + resolution: {integrity: sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [freebsd] - '@unrs/resolver-binding-linux-arm64-gnu@1.12.2': - resolution: {integrity: sha512-zJc0H99FEPoFfSrNpa91HYfxzfAJCr502oxNK1cfdC9hlaFI43RT+JFCann9JUgZmLzzntChHyn13Sgn9ljHNg==} + '@typescript/typescript-linux-arm64@7.0.2': + resolution: {integrity: sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==} + engines: {node: '>=16.20.0'} cpu: [arm64] os: [linux] - libc: [glibc] - '@unrs/resolver-binding-linux-arm64-musl@1.12.2': - resolution: {integrity: sha512-KQ3Lki6l+Pz1k/eBipN41ES+YUK30beLGb9YqcB1O542cyLCNE6GaxrfcY3T6EezmGGk84wb5XyO9loTM9tkcA==} - cpu: [arm64] + '@typescript/typescript-linux-arm@7.0.2': + resolution: {integrity: sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==} + engines: {node: '>=16.20.0'} + cpu: [arm] os: [linux] - libc: [musl] - '@unrs/resolver-binding-linux-loong64-gnu@1.12.2': - resolution: {integrity: sha512-3SJGEh1DborhG6pyxvhPzCT4bbSIVihsvgJc13P1bHG7KLdNDaF9T3gsTwFc7Jw/5Y5/iWOjkEx7Zy0NvCGX3Q==} + '@typescript/typescript-linux-loong64@7.0.2': + resolution: {integrity: sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==} + engines: {node: '>=16.20.0'} cpu: [loong64] os: [linux] - libc: [glibc] - '@unrs/resolver-binding-linux-loong64-musl@1.12.2': - resolution: {integrity: sha512-jiuG/Obbel7uw1PwHNFfrkiKhLAF6mnyZ6aWlOAVN9WqKm8v0OFGnciJIHu8+CMvXLQ8AD51LPzAoUfT21D5Ew==} - cpu: [loong64] + '@typescript/typescript-linux-mips64el@7.0.2': + resolution: {integrity: sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==} + engines: {node: '>=16.20.0'} + cpu: [mips64el] os: [linux] - libc: [musl] - '@unrs/resolver-binding-linux-ppc64-gnu@1.12.2': - resolution: {integrity: sha512-q7xRvVpmcfeL+LlZg8Pbbo6QaTZwDU5BaGZbwfhkEsXJn3Was8xYfE0RBH266xZt0rM6B7i8xAYIvjthuUIWHg==} + '@typescript/typescript-linux-ppc64@7.0.2': + resolution: {integrity: sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==} + engines: {node: '>=16.20.0'} cpu: [ppc64] os: [linux] - libc: [glibc] - '@unrs/resolver-binding-linux-riscv64-gnu@1.12.2': - resolution: {integrity: sha512-0CVdx6lcnT3Q9inOH8tsMIOJ6ImndllMjqJHg8RLVdB7Vq4SfkEXl9mCSsVNuNA4MCYycRicCUxPCabVHJRr6A==} + '@typescript/typescript-linux-riscv64@7.0.2': + resolution: {integrity: sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==} + engines: {node: '>=16.20.0'} cpu: [riscv64] os: [linux] - libc: [glibc] - '@unrs/resolver-binding-linux-riscv64-musl@1.12.2': - resolution: {integrity: sha512-iOwlRo9vnp6R6ohHQS11n0NnfdXx/omhkocmIfaPRpQhKZ+3BDMkkdRVh53qjkFkpPddf+FETA28NwGN7l5l+w==} - cpu: [riscv64] - os: [linux] - libc: [musl] - - '@unrs/resolver-binding-linux-s390x-gnu@1.12.2': - resolution: {integrity: sha512-HYJtLfXq94q8iZNFT1lknx258wlkkWhZeUXJRqzKBBUJ00CvZ+N33zgbCqimLjsyw5Va6uUxhVa12mI+kaveEw==} + '@typescript/typescript-linux-s390x@7.0.2': + resolution: {integrity: sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==} + engines: {node: '>=16.20.0'} cpu: [s390x] os: [linux] - libc: [glibc] - '@unrs/resolver-binding-linux-x64-gnu@1.12.2': - resolution: {integrity: sha512-mPsUhunKKDih5O96Y6enDQyHc1SqBPlY1E/SfMWDM3EdJ95Z9CArPeCVwCCqbP45ljvivdEk8Fxn+SIb1rDAJQ==} + '@typescript/typescript-linux-x64@7.0.2': + resolution: {integrity: sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==} + engines: {node: '>=16.20.0'} cpu: [x64] os: [linux] - libc: [glibc] - '@unrs/resolver-binding-linux-x64-musl@1.12.2': - resolution: {integrity: sha512-azrt6+5ydLd8Vt210AAFis/lZevSfPw93EJRIJG+xPu4WCJ8K0kppCTpMyLPcKT7H15M4Jnt2tMp5bOvCkRC6A==} + '@typescript/typescript-netbsd-arm64@7.0.2': + resolution: {integrity: sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [netbsd] + + '@typescript/typescript-netbsd-x64@7.0.2': + resolution: {integrity: sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==} + engines: {node: '>=16.20.0'} cpu: [x64] - os: [linux] - libc: [musl] + os: [netbsd] - '@unrs/resolver-binding-openharmony-arm64@1.12.2': - resolution: {integrity: sha512-YZ9hP4O0X9PQb8eO980qmLNGH4zT3I9+SZTdt0Pr0YyuGQhYKoOZkV02VzrzyOZJ5xIJ3UFIenKkUkGg8GjgWQ==} + '@typescript/typescript-openbsd-arm64@7.0.2': + resolution: {integrity: sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==} + engines: {node: '>=16.20.0'} cpu: [arm64] - os: [openharmony] + os: [openbsd] - '@unrs/resolver-binding-wasm32-wasi@1.12.2': - resolution: {integrity: sha512-tYFDIkMxSflfEc/h92ZWNsZlHSwgimbNHSO3PL2JWQHfCuC2q316jMyYU9TIWZsFK2bQwyK5VAdYgn8ygPj69A==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] + '@typescript/typescript-openbsd-x64@7.0.2': + resolution: {integrity: sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [openbsd] - '@unrs/resolver-binding-win32-arm64-msvc@1.12.2': - resolution: {integrity: sha512-qzNyg3xL0VPQmCaUh+N5jSitce6k+uCBfMDesWRnlULOZaqUkaJ0ybdT+UqlAWJoQjuqfIU/0Ptx9bteN4D82g==} - cpu: [arm64] - os: [win32] + '@typescript/typescript-sunos-x64@7.0.2': + resolution: {integrity: sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [sunos] - '@unrs/resolver-binding-win32-ia32-msvc@1.12.2': - resolution: {integrity: sha512-WD9sY00OfpHVGfsnHZoA8jVT+esS/Bg8z8jzxp5BnDCjjwsuKsPQrzswwpFy4J1AUJbXPRfkpcX0mXrzeXW79g==} - cpu: [ia32] + '@typescript/typescript-win32-arm64@7.0.2': + resolution: {integrity: sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] os: [win32] - '@unrs/resolver-binding-win32-x64-msvc@1.12.2': - resolution: {integrity: sha512-nAB74NfSNKknqQ1RrYj6uz8FcXEomu/MATJZxh/x+BArzN2U3JbOYC0APYzUIGhVY3m5hRxA8VPNdPBoG8txlA==} + '@typescript/typescript-win32-x64@7.0.2': + resolution: {integrity: sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==} + engines: {node: '>=16.20.0'} cpu: [x64] os: [win32] @@ -853,10 +1185,6 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - comment-parser@1.4.7: - resolution: {integrity: sha512-0h+uSNtQGW3D98eQt3jJ8L06Fves8hncB4V/PKdw/Qb8Hnk19VaKuTr55UNRYiSoVa7WwrFls+rh3ux9agmkeQ==} - engines: {node: '>= 12.0.0'} - concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -891,18 +1219,10 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - detect-indent@7.0.2: - resolution: {integrity: sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A==} - engines: {node: '>=12.20'} - detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} - detect-newline@4.0.1: - resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -922,53 +1242,6 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - eslint-config-prettier@10.1.8: - resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-import-context@0.1.9: - resolution: {integrity: sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - peerDependencies: - unrs-resolver: ^1.0.0 - peerDependenciesMeta: - unrs-resolver: - optional: true - - eslint-import-resolver-typescript@4.4.5: - resolution: {integrity: sha512-nbE5XLph6TLtGYcu/U6e6ZVXyKBhbDWK5cLGk76eJ7NdZpwf1P9EFkpt1Z01mNZNrrilsAYWKH6zUkL4reoXbw==} - engines: {node: ^16.17.0 || >=18.6.0} - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' - eslint-plugin-import-x: '*' - peerDependenciesMeta: - eslint-plugin-import: - optional: true - eslint-plugin-import-x: - optional: true - - eslint-plugin-import-x@4.16.2: - resolution: {integrity: sha512-rM9K8UBHcWKpzQzStn1YRN2T5NvdeIfSVoKu/lKF41znQXHAUcBbYXe5wd6GNjZjTrP7viQ49n1D83x/2gYgIw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/utils': ^8.56.0 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - eslint-import-resolver-node: '*' - peerDependenciesMeta: - '@typescript-eslint/utils': - optional: true - eslint-import-resolver-node: - optional: true - - eslint-plugin-no-null@1.0.2: - resolution: {integrity: sha512-uRDiz88zCO/2rzGfgG15DBjNsgwWtWiSo4Ezy7zzajUgpnFIqd1TjepKeRmJZHEfBGu58o2a8S0D7vglvvhkVA==} - engines: {node: '>=5.0.0'} - peerDependencies: - eslint: '>=3.0.0' - eslint-scope@9.1.2: resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -977,10 +1250,6 @@ packages: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.2.1: - resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint-visitor-keys@5.0.1: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -995,10 +1264,6 @@ packages: jiti: optional: true - espree@10.4.0: - resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - espree@11.2.0: resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -1074,12 +1339,6 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-tsconfig@4.14.0: - resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} - - git-hooks-list@4.2.1: - resolution: {integrity: sha512-WNvqJjOxxs/8ZP9+DWdwWJ7cDsd60NHf39XnD82pDVrKO5q7xfPqpkK6hwEAmBa/ZSEE4IOoR75EzbbIuwGlMw==} - glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} @@ -1092,10 +1351,6 @@ packages: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - globals@17.6.0: - resolution: {integrity: sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==} - engines: {node: '>=18'} - has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -1107,10 +1362,6 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - ignore@7.0.5: - resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} - engines: {node: '>= 4'} - imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -1127,9 +1378,6 @@ packages: peerDependencies: reflect-metadata: ~0.2.2 - is-bun-module@2.0.0: - resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} - is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -1142,10 +1390,6 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - isarray@0.0.1: resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} @@ -1302,11 +1546,6 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - napi-postinstall@0.3.4: - resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - hasBin: true - natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -1317,12 +1556,42 @@ packages: resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} engines: {node: '>=12.20.0'} - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + oxfmt@0.67.0: + resolution: {integrity: sha512-vV7sSiPsaO0mSxdoUdayipVDFPzW/UQ+hrezEHa20+Tx1dnMdZLSRHMT0PdS67FFbhd74M1n08asW21aLGeCrA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + svelte: ^5.0.0 + vite-plus: '*' + peerDependenciesMeta: + svelte: + optional: true + vite-plus: + optional: true + + oxlint-tsgolint@7.0.2001: + resolution: {integrity: sha512-KjK/XLcXr1DSyonKhsuFqJRiuKqcyG9j3LJ8nkOsrLzGvodBPqzHOKauy10asLMDI0sUpvb+1sxlzff3udZvfg==} + hasBin: true - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} + oxlint@1.82.0: + resolution: {integrity: sha512-+iFM1BGw1ntYJt3QngbJmjbrGxPaKMUADOXOijpWGnYcBPq8YZnQftSS1C+pVcDYy9YxqDVJKQqQkTazTQMboQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + oxlint-tsgolint: '>=7.0.2001' + vite-plus: '*' + peerDependenciesMeta: + oxlint-tsgolint: + optional: true + vite-plus: + optional: true p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} @@ -1369,19 +1638,6 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-plugin-packagejson@3.0.2: - resolution: {integrity: sha512-kmoj3hEynXwoHDo8ZhmWAIjRBoQWCDUVackiWfSDWdgD0rS3LGB61T9zoVbume/cotYdCoadUh4sqViAmXvpBQ==} - peerDependencies: - prettier: ^3 - peerDependenciesMeta: - prettier: - optional: true - - prettier@3.8.4: - resolution: {integrity: sha512-N2MylSdi48+5N/6S5j+maeHbUSIzzZ5uOcX5Hm4QpV8Dkb1HFjfAKTKX6yNPJQD9AhcT3ifHNB66tWTTJDi11Q==} - engines: {node: '>=14'} - hasBin: true - process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -1402,9 +1658,6 @@ packages: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} deprecated: Rimraf versions prior to v4 are no longer supported @@ -1450,14 +1703,6 @@ packages: resolution: {integrity: sha512-wHMNIOjkm/YNE5EM3RCbr/+DVgPg6AqQAX1eOxO46zYNvCXjKP5Y865tqQj3EXnaMBjkxmQA5jFuDpDK/dbfiA==} engines: {node: '>=8.3.0'} - sort-object-keys@2.1.0: - resolution: {integrity: sha512-SOiEnthkJKPv2L6ec6HMwhUcN0/lppkeYuN1x63PbyPRrgSPIuBJCiYxYyvWRTtjMlOi14vQUCGUJqS6PLVm8g==} - - sort-package-json@3.7.1: - resolution: {integrity: sha512-ssk1HG7whF8N/T1IsNAQrtHG5Cbdi0rAgRJZXYBr9hF5xaHnBNzUx/W6LcthEW7FhOwvZssbESZuO+GxssqAyA==} - engines: {node: '>=20'} - hasBin: true - source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -1468,10 +1713,6 @@ packages: sprotty@1.4.0: resolution: {integrity: sha512-QGZZQAM2pOa1QxJUG05Ox76RJOKuvKloT1nCkvs6SD5w/HfkcL0mjq1Om1+fb5NAalDzurrJL6agKUReST3TFw==} - stable-hash-x@0.2.0: - resolution: {integrity: sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==} - engines: {node: '>=12.0.0'} - stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -1514,6 +1755,10 @@ packages: resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} + tinypool@2.1.2: + resolution: {integrity: sha512-9YodfrxS9g9IbFr/KOjE5bAeJ0p61n3bW6mqvy0jtoeKd1kTW1Cxm0oulm6KX2lyM9Gl6WIe8nEbY7LWv5ZJww==} + engines: {node: ^20.0.0 || >=22.0.0} + tinyqueue@2.0.3: resolution: {integrity: sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==} @@ -1525,12 +1770,6 @@ packages: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true - ts-api-utils@2.5.0: - resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} - engines: {node: '>=18.12'} - peerDependencies: - typescript: '>=4.8.4' - tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -1538,23 +1777,13 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - typescript-eslint@8.61.1: - resolution: {integrity: sha512-V7PayAfJokV3pEHgN7/v03D1SpujhRfQtYLbLIiBfDDncdg4PAiRBfoS4cnCANK4jmAPncczi59QO3afiXUlNw==} - 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.1.0' - - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} - engines: {node: '>=14.17'} + typescript@7.0.2: + resolution: {integrity: sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==} + engines: {node: '>=16.20.0'} hasBin: true - undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - - unrs-resolver@1.12.2: - resolution: {integrity: sha512-dmlRxBJJayXjqTwC+JtF1HhJmgf3ftQ3YejFcZrf4+KKtJv0qDsK1pjqaaVjG7wJ5NJ6UVP1OqRMQ71Z4C3rxQ==} + undici-types@7.18.2: + resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} @@ -1724,19 +1953,19 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} - '@eclipse-glsp-examples/workflow-glsp@2.9.0-next.1(inversify@6.2.2(reflect-metadata@0.2.2))(reflect-metadata@0.2.2)': + '@eclipse-glsp-examples/workflow-glsp@2.9.0-next.3(inversify@6.2.2(reflect-metadata@0.2.2))(reflect-metadata@0.2.2)': dependencies: - '@eclipse-glsp/client': 2.9.0-next.1(inversify@6.2.2(reflect-metadata@0.2.2))(reflect-metadata@0.2.2) + '@eclipse-glsp/client': 2.9.0-next.3(inversify@6.2.2(reflect-metadata@0.2.2))(reflect-metadata@0.2.2) balloon-css: 0.5.2 inversify: 6.2.2(reflect-metadata@0.2.2) reflect-metadata: 0.2.2 snabbdom: 3.5.1 - '@eclipse-glsp/cli@2.9.0-next.1': {} + '@eclipse-glsp/cli@2.9.0-next.4': {} - '@eclipse-glsp/client@2.9.0-next.1(inversify@6.2.2(reflect-metadata@0.2.2))(reflect-metadata@0.2.2)': + '@eclipse-glsp/client@2.9.0-next.3(inversify@6.2.2(reflect-metadata@0.2.2))(reflect-metadata@0.2.2)': dependencies: - '@eclipse-glsp/sprotty': 2.9.0-next.1(inversify@6.2.2(reflect-metadata@0.2.2))(reflect-metadata@0.2.2) + '@eclipse-glsp/sprotty': 2.9.0-next.3(inversify@6.2.2(reflect-metadata@0.2.2))(reflect-metadata@0.2.2) '@vscode/codicons': 0.0.44 autocompleter: 9.3.2 file-saver: 2.0.5 @@ -1745,11 +1974,11 @@ snapshots: snabbdom: 3.5.1 vscode-jsonrpc: 8.2.0 - '@eclipse-glsp/config-test@2.9.0-next.1(@types/node@22.19.21)(vite@8.2.2(@types/node@22.19.21))': + '@eclipse-glsp/config-test@2.9.0-next.3(@types/node@24.13.4)(vite@8.2.2(@types/node@24.13.4))': dependencies: - '@eclipse-glsp/vitest-config': 2.9.0-next.1(@vitest/coverage-v8@4.1.11)(vitest@4.1.11) + '@eclipse-glsp/vitest-config': 2.9.0-next.3(@vitest/coverage-v8@4.1.11)(vitest@4.1.11) '@vitest/coverage-v8': 4.1.11(vitest@4.1.11) - vitest: 4.1.11(@types/node@22.19.21)(@vitest/coverage-v8@4.1.11)(vite@8.2.2(@types/node@22.19.21)) + vitest: 4.1.11(@types/node@24.13.4)(@vitest/coverage-v8@4.1.11)(vite@8.2.2(@types/node@24.13.4)) transitivePeerDependencies: - '@edge-runtime/vm' - '@opentelemetry/api' @@ -1765,77 +1994,57 @@ snapshots: - msw - vite - '@eclipse-glsp/config@2.9.0-next.1(@typescript-eslint/utils@8.61.1(eslint@10.5.0)(typescript@5.9.3))(typescript@5.9.3)': - dependencies: - '@eclipse-glsp/eslint-config': 2.9.0-next.1(@eslint/js@10.0.1(eslint@10.5.0))(@stylistic/eslint-plugin@5.10.0(eslint@10.5.0))(@tony.ganchev/eslint-plugin-header@3.4.4(eslint@10.5.0))(eslint-config-prettier@10.1.8(eslint@10.5.0))(eslint-import-resolver-typescript@4.4.5(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.61.1(eslint@10.5.0)(typescript@5.9.3))(eslint@10.5.0))(eslint@10.5.0))(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.61.1(eslint@10.5.0)(typescript@5.9.3))(eslint@10.5.0))(eslint-plugin-no-null@1.0.2(eslint@10.5.0))(eslint@10.5.0)(globals@17.6.0)(typescript-eslint@8.61.1(eslint@10.5.0)(typescript@5.9.3)) - '@eclipse-glsp/prettier-config': 2.9.0-next.1(prettier@3.8.4) - '@eclipse-glsp/ts-config': 2.9.0-next.1(typescript@5.9.3) - '@eslint/js': 10.0.1(eslint@10.5.0) - '@stylistic/eslint-plugin': 5.10.0(eslint@10.5.0) - '@tony.ganchev/eslint-plugin-header': 3.4.4(eslint@10.5.0) - eslint: 10.5.0 - eslint-config-prettier: 10.1.8(eslint@10.5.0) - eslint-import-resolver-typescript: 4.4.5(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.61.1(eslint@10.5.0)(typescript@5.9.3))(eslint@10.5.0))(eslint@10.5.0) - eslint-plugin-import-x: 4.16.2(@typescript-eslint/utils@8.61.1(eslint@10.5.0)(typescript@5.9.3))(eslint@10.5.0) - eslint-plugin-no-null: 1.0.2(eslint@10.5.0) - globals: 17.6.0 - prettier: 3.8.4 + '@eclipse-glsp/config@2.9.0-next.3(eslint@10.5.0(supports-color@8.1.1))(typescript@7.0.2)': + dependencies: + '@eclipse-glsp/oxfmt-config': 2.9.0-next.3(oxfmt@0.67.0) + '@eclipse-glsp/oxlint-config': 2.9.0-next.3(@tony.ganchev/eslint-plugin-header@3.4.4(eslint@10.5.0(supports-color@8.1.1)))(oxlint-tsgolint@7.0.2001)(oxlint@1.82.0(oxlint-tsgolint@7.0.2001)) + '@eclipse-glsp/ts-config': 2.9.0-next.3(typescript@7.0.2) + '@tony.ganchev/eslint-plugin-header': 3.4.4(eslint@10.5.0(supports-color@8.1.1)) + oxfmt: 0.67.0 + oxlint: 1.82.0(oxlint-tsgolint@7.0.2001) + oxlint-tsgolint: 7.0.2001 rimraf: 6.1.3 - typescript-eslint: 8.61.1(eslint@10.5.0)(typescript@5.9.3) transitivePeerDependencies: - - '@typescript-eslint/utils' - - eslint-import-resolver-node - - eslint-plugin-import - - jiti - - supports-color + - eslint + - svelte - typescript + - vite-plus - '@eclipse-glsp/dev@2.9.0-next.1(@types/node@22.19.21)(@typescript-eslint/utils@8.61.1(eslint@10.5.0)(typescript@5.9.3))(typescript@5.9.3)(vite@8.2.2(@types/node@22.19.21))': + '@eclipse-glsp/dev@2.9.0-next.4(@types/node@24.13.4)(eslint@10.5.0(supports-color@8.1.1))(typescript@7.0.2)(vite@8.2.2(@types/node@24.13.4))': dependencies: - '@eclipse-glsp/cli': 2.9.0-next.1 - '@eclipse-glsp/config': 2.9.0-next.1(@typescript-eslint/utils@8.61.1(eslint@10.5.0)(typescript@5.9.3))(typescript@5.9.3) - '@eclipse-glsp/config-test': 2.9.0-next.1(@types/node@22.19.21)(vite@8.2.2(@types/node@22.19.21)) + '@eclipse-glsp/cli': 2.9.0-next.4 + '@eclipse-glsp/config': 2.9.0-next.3(eslint@10.5.0(supports-color@8.1.1))(typescript@7.0.2) + '@eclipse-glsp/config-test': 2.9.0-next.3(@types/node@24.13.4)(vite@8.2.2(@types/node@24.13.4)) transitivePeerDependencies: - '@edge-runtime/vm' - '@opentelemetry/api' - '@types/node' - - '@typescript-eslint/utils' - '@vitest/browser' - '@vitest/browser-playwright' - '@vitest/browser-preview' - '@vitest/browser-webdriverio' - '@vitest/coverage-istanbul' - '@vitest/ui' - - eslint-import-resolver-node - - eslint-plugin-import + - eslint - happy-dom - - jiti - jsdom - msw - - supports-color + - svelte - typescript - vite + - vite-plus - '@eclipse-glsp/eslint-config@2.9.0-next.1(@eslint/js@10.0.1(eslint@10.5.0))(@stylistic/eslint-plugin@5.10.0(eslint@10.5.0))(@tony.ganchev/eslint-plugin-header@3.4.4(eslint@10.5.0))(eslint-config-prettier@10.1.8(eslint@10.5.0))(eslint-import-resolver-typescript@4.4.5(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.61.1(eslint@10.5.0)(typescript@5.9.3))(eslint@10.5.0))(eslint@10.5.0))(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.61.1(eslint@10.5.0)(typescript@5.9.3))(eslint@10.5.0))(eslint-plugin-no-null@1.0.2(eslint@10.5.0))(eslint@10.5.0)(globals@17.6.0)(typescript-eslint@8.61.1(eslint@10.5.0)(typescript@5.9.3))': + '@eclipse-glsp/oxfmt-config@2.9.0-next.3(oxfmt@0.67.0)': dependencies: - '@eslint/js': 10.0.1(eslint@10.5.0) - '@stylistic/eslint-plugin': 5.10.0(eslint@10.5.0) - '@tony.ganchev/eslint-plugin-header': 3.4.4(eslint@10.5.0) - eslint: 10.5.0 - eslint-config-prettier: 10.1.8(eslint@10.5.0) - eslint-import-resolver-typescript: 4.4.5(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.61.1(eslint@10.5.0)(typescript@5.9.3))(eslint@10.5.0))(eslint@10.5.0) - eslint-plugin-import-x: 4.16.2(@typescript-eslint/utils@8.61.1(eslint@10.5.0)(typescript@5.9.3))(eslint@10.5.0) - eslint-plugin-no-null: 1.0.2(eslint@10.5.0) - globals: 17.6.0 - typescript-eslint: 8.61.1(eslint@10.5.0)(typescript@5.9.3) + oxfmt: 0.67.0 - '@eclipse-glsp/prettier-config@2.9.0-next.1(prettier@3.8.4)': + '@eclipse-glsp/oxlint-config@2.9.0-next.3(@tony.ganchev/eslint-plugin-header@3.4.4(eslint@10.5.0(supports-color@8.1.1)))(oxlint-tsgolint@7.0.2001)(oxlint@1.82.0(oxlint-tsgolint@7.0.2001))': dependencies: - prettier-plugin-packagejson: 3.0.2(prettier@3.8.4) - transitivePeerDependencies: - - prettier + '@tony.ganchev/eslint-plugin-header': 3.4.4(eslint@10.5.0(supports-color@8.1.1)) + oxlint: 1.82.0(oxlint-tsgolint@7.0.2001) + oxlint-tsgolint: 7.0.2001 - '@eclipse-glsp/protocol@2.9.0-next.1(inversify@6.2.2(reflect-metadata@0.2.2))(reflect-metadata@0.2.2)': + '@eclipse-glsp/protocol@2.9.0-next.3(inversify@6.2.2(reflect-metadata@0.2.2))(reflect-metadata@0.2.2)': dependencies: sprotty-protocol: 1.4.0 uuid: 14.0.0 @@ -1844,9 +2053,9 @@ snapshots: inversify: 6.2.2(reflect-metadata@0.2.2) reflect-metadata: 0.2.2 - '@eclipse-glsp/sprotty@2.9.0-next.1(inversify@6.2.2(reflect-metadata@0.2.2))(reflect-metadata@0.2.2)': + '@eclipse-glsp/sprotty@2.9.0-next.3(inversify@6.2.2(reflect-metadata@0.2.2))(reflect-metadata@0.2.2)': dependencies: - '@eclipse-glsp/protocol': 2.9.0-next.1(inversify@6.2.2(reflect-metadata@0.2.2))(reflect-metadata@0.2.2) + '@eclipse-glsp/protocol': 2.9.0-next.3(inversify@6.2.2(reflect-metadata@0.2.2))(reflect-metadata@0.2.2) autocompleter: 9.3.2 inversify: 6.2.2(reflect-metadata@0.2.2) reflect-metadata: 0.2.2 @@ -1855,30 +2064,14 @@ snapshots: sprotty-protocol: 1.4.0 vscode-jsonrpc: 8.2.0 - '@eclipse-glsp/ts-config@2.9.0-next.1(typescript@5.9.3)': + '@eclipse-glsp/ts-config@2.9.0-next.3(typescript@7.0.2)': dependencies: - typescript: 5.9.3 + typescript: 7.0.2 - '@eclipse-glsp/vitest-config@2.9.0-next.1(@vitest/coverage-v8@4.1.11)(vitest@4.1.11)': + '@eclipse-glsp/vitest-config@2.9.0-next.3(@vitest/coverage-v8@4.1.11)(vitest@4.1.11)': dependencies: '@vitest/coverage-v8': 4.1.11(vitest@4.1.11) - vitest: 4.1.11(@types/node@22.19.21)(@vitest/coverage-v8@4.1.11)(vite@8.2.2(@types/node@22.19.21)) - - '@emnapi/core@1.10.0': - dependencies: - '@emnapi/wasi-threads': 1.2.1 - tslib: 2.8.1 - optional: true - - '@emnapi/runtime@1.10.0': - dependencies: - tslib: 2.8.1 - optional: true - - '@emnapi/wasi-threads@1.2.1': - dependencies: - tslib: 2.8.1 - optional: true + vitest: 4.1.11(@types/node@24.13.4)(@vitest/coverage-v8@4.1.11)(vite@8.2.2(@types/node@24.13.4)) '@esbuild/aix-ppc64@0.25.12': optional: true @@ -1958,17 +2151,17 @@ snapshots: '@esbuild/win32-x64@0.25.12': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.5.0)': + '@eslint-community/eslint-utils@4.9.1(eslint@10.5.0(supports-color@8.1.1))': dependencies: - eslint: 10.5.0 + eslint: 10.5.0(supports-color@8.1.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.23.5': + '@eslint/config-array@0.23.5(supports-color@8.1.1)': dependencies: '@eslint/object-schema': 3.0.5 - debug: 4.4.3 + debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.5 transitivePeerDependencies: - supports-color @@ -1981,10 +2174,6 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/js@10.0.1(eslint@10.5.0)': - optionalDependencies: - eslint: 10.5.0 - '@eslint/object-schema@3.0.5': {} '@eslint/plugin-kit@0.7.2': @@ -2030,16 +2219,139 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@napi-rs/wasm-runtime@1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': - dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@tybys/wasm-util': 0.10.2 + '@oxc-project/types@0.147.0': {} + + '@oxfmt/binding-android-arm-eabi@0.67.0': optional: true - '@oxc-project/types@0.147.0': {} + '@oxfmt/binding-android-arm64@0.67.0': + optional: true + + '@oxfmt/binding-darwin-arm64@0.67.0': + optional: true + + '@oxfmt/binding-darwin-x64@0.67.0': + optional: true + + '@oxfmt/binding-freebsd-x64@0.67.0': + optional: true + + '@oxfmt/binding-linux-arm-gnueabihf@0.67.0': + optional: true + + '@oxfmt/binding-linux-arm-musleabihf@0.67.0': + optional: true + + '@oxfmt/binding-linux-arm64-gnu@0.67.0': + optional: true + + '@oxfmt/binding-linux-arm64-musl@0.67.0': + optional: true + + '@oxfmt/binding-linux-ppc64-gnu@0.67.0': + optional: true + + '@oxfmt/binding-linux-riscv64-gnu@0.67.0': + optional: true + + '@oxfmt/binding-linux-riscv64-musl@0.67.0': + optional: true + + '@oxfmt/binding-linux-s390x-gnu@0.67.0': + optional: true + + '@oxfmt/binding-linux-x64-gnu@0.67.0': + optional: true + + '@oxfmt/binding-linux-x64-musl@0.67.0': + optional: true + + '@oxfmt/binding-openharmony-arm64@0.67.0': + optional: true + + '@oxfmt/binding-win32-arm64-msvc@0.67.0': + optional: true + + '@oxfmt/binding-win32-ia32-msvc@0.67.0': + optional: true + + '@oxfmt/binding-win32-x64-msvc@0.67.0': + optional: true + + '@oxlint-tsgolint/darwin-arm64@7.0.2001': + optional: true + + '@oxlint-tsgolint/darwin-x64@7.0.2001': + optional: true + + '@oxlint-tsgolint/linux-arm64@7.0.2001': + optional: true + + '@oxlint-tsgolint/linux-x64@7.0.2001': + optional: true + + '@oxlint-tsgolint/win32-arm64@7.0.2001': + optional: true + + '@oxlint-tsgolint/win32-x64@7.0.2001': + optional: true + + '@oxlint/binding-android-arm-eabi@1.82.0': + optional: true + + '@oxlint/binding-android-arm64@1.82.0': + optional: true + + '@oxlint/binding-darwin-arm64@1.82.0': + optional: true + + '@oxlint/binding-darwin-x64@1.82.0': + optional: true + + '@oxlint/binding-freebsd-x64@1.82.0': + optional: true + + '@oxlint/binding-linux-arm-gnueabihf@1.82.0': + optional: true + + '@oxlint/binding-linux-arm-musleabihf@1.82.0': + optional: true + + '@oxlint/binding-linux-arm64-gnu@1.82.0': + optional: true + + '@oxlint/binding-linux-arm64-musl@1.82.0': + optional: true + + '@oxlint/binding-linux-ppc64-gnu@1.82.0': + optional: true + + '@oxlint/binding-linux-riscv64-gnu@1.82.0': + optional: true + + '@oxlint/binding-linux-riscv64-musl@1.82.0': + optional: true + + '@oxlint/binding-linux-s390x-gnu@1.82.0': + optional: true + + '@oxlint/binding-linux-x64-gnu@1.82.0': + optional: true - '@package-json/types@0.0.12': {} + '@oxlint/binding-linux-x64-musl@1.82.0': + optional: true + + '@oxlint/binding-openharmony-arm64@1.82.0': + optional: true + + '@oxlint/binding-win32-arm64-msvc@1.82.0': + optional: true + + '@oxlint/binding-win32-ia32-msvc@1.82.0': + optional: true + + '@oxlint/binding-win32-x64-msvc@1.82.0': + optional: true '@rolldown/binding-android-arm-eabi@1.2.6': optional: true @@ -2090,24 +2402,9 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@stylistic/eslint-plugin@5.10.0(eslint@10.5.0)': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0) - '@typescript-eslint/types': 8.61.1 - eslint: 10.5.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - estraverse: 5.3.0 - picomatch: 4.0.7 - - '@tony.ganchev/eslint-plugin-header@3.4.4(eslint@10.5.0)': - dependencies: - eslint: 10.5.0 - - '@tybys/wasm-util@0.10.2': + '@tony.ganchev/eslint-plugin-header@3.4.4(eslint@10.5.0(supports-color@8.1.1))': dependencies: - tslib: 2.8.1 - optional: true + eslint: 10.5.0(supports-color@8.1.1) '@types/chai@5.2.3': dependencies: @@ -2122,169 +2419,68 @@ snapshots: '@types/json-schema@7.0.15': {} - '@types/node@22.19.21': - dependencies: - undici-types: 6.21.0 - - '@typescript-eslint/eslint-plugin@8.61.1(@typescript-eslint/parser@8.61.1(eslint@10.5.0)(typescript@5.9.3))(eslint@10.5.0)(typescript@5.9.3)': - dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.61.1(eslint@10.5.0)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.61.1 - '@typescript-eslint/type-utils': 8.61.1(eslint@10.5.0)(typescript@5.9.3) - '@typescript-eslint/utils': 8.61.1(eslint@10.5.0)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.61.1 - eslint: 10.5.0 - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.61.1(eslint@10.5.0)(typescript@5.9.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.61.1 - '@typescript-eslint/types': 8.61.1 - '@typescript-eslint/typescript-estree': 8.61.1(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.61.1 - debug: 4.4.3 - eslint: 10.5.0 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/project-service@8.61.1(typescript@5.9.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.61.1(typescript@5.9.3) - '@typescript-eslint/types': 8.61.1 - debug: 4.4.3 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@8.61.1': - dependencies: - '@typescript-eslint/types': 8.61.1 - '@typescript-eslint/visitor-keys': 8.61.1 - - '@typescript-eslint/tsconfig-utils@8.61.1(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - - '@typescript-eslint/type-utils@8.61.1(eslint@10.5.0)(typescript@5.9.3)': - dependencies: - '@typescript-eslint/types': 8.61.1 - '@typescript-eslint/typescript-estree': 8.61.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.61.1(eslint@10.5.0)(typescript@5.9.3) - debug: 4.4.3 - eslint: 10.5.0 - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/types@8.61.1': {} - - '@typescript-eslint/typescript-estree@8.61.1(typescript@5.9.3)': - dependencies: - '@typescript-eslint/project-service': 8.61.1(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.61.1(typescript@5.9.3) - '@typescript-eslint/types': 8.61.1 - '@typescript-eslint/visitor-keys': 8.61.1 - debug: 4.4.3 - minimatch: 10.2.5 - semver: 7.8.4 - tinyglobby: 0.2.17 - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.61.1(eslint@10.5.0)(typescript@5.9.3)': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0) - '@typescript-eslint/scope-manager': 8.61.1 - '@typescript-eslint/types': 8.61.1 - '@typescript-eslint/typescript-estree': 8.61.1(typescript@5.9.3) - eslint: 10.5.0 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/visitor-keys@8.61.1': + '@types/node@24.13.4': dependencies: - '@typescript-eslint/types': 8.61.1 - eslint-visitor-keys: 5.0.1 - - '@unrs/resolver-binding-android-arm-eabi@1.12.2': - optional: true + undici-types: 7.18.2 - '@unrs/resolver-binding-android-arm64@1.12.2': + '@typescript/typescript-aix-ppc64@7.0.2': optional: true - '@unrs/resolver-binding-darwin-arm64@1.12.2': + '@typescript/typescript-darwin-arm64@7.0.2': optional: true - '@unrs/resolver-binding-darwin-x64@1.12.2': + '@typescript/typescript-darwin-x64@7.0.2': optional: true - '@unrs/resolver-binding-freebsd-x64@1.12.2': + '@typescript/typescript-freebsd-arm64@7.0.2': optional: true - '@unrs/resolver-binding-linux-arm-gnueabihf@1.12.2': + '@typescript/typescript-freebsd-x64@7.0.2': optional: true - '@unrs/resolver-binding-linux-arm-musleabihf@1.12.2': + '@typescript/typescript-linux-arm64@7.0.2': optional: true - '@unrs/resolver-binding-linux-arm64-gnu@1.12.2': + '@typescript/typescript-linux-arm@7.0.2': optional: true - '@unrs/resolver-binding-linux-arm64-musl@1.12.2': + '@typescript/typescript-linux-loong64@7.0.2': optional: true - '@unrs/resolver-binding-linux-loong64-gnu@1.12.2': + '@typescript/typescript-linux-mips64el@7.0.2': optional: true - '@unrs/resolver-binding-linux-loong64-musl@1.12.2': + '@typescript/typescript-linux-ppc64@7.0.2': optional: true - '@unrs/resolver-binding-linux-ppc64-gnu@1.12.2': + '@typescript/typescript-linux-riscv64@7.0.2': optional: true - '@unrs/resolver-binding-linux-riscv64-gnu@1.12.2': + '@typescript/typescript-linux-s390x@7.0.2': optional: true - '@unrs/resolver-binding-linux-riscv64-musl@1.12.2': + '@typescript/typescript-linux-x64@7.0.2': optional: true - '@unrs/resolver-binding-linux-s390x-gnu@1.12.2': + '@typescript/typescript-netbsd-arm64@7.0.2': optional: true - '@unrs/resolver-binding-linux-x64-gnu@1.12.2': + '@typescript/typescript-netbsd-x64@7.0.2': optional: true - '@unrs/resolver-binding-linux-x64-musl@1.12.2': + '@typescript/typescript-openbsd-arm64@7.0.2': optional: true - '@unrs/resolver-binding-openharmony-arm64@1.12.2': + '@typescript/typescript-openbsd-x64@7.0.2': optional: true - '@unrs/resolver-binding-wasm32-wasi@1.12.2': - dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) - optional: true - - '@unrs/resolver-binding-win32-arm64-msvc@1.12.2': + '@typescript/typescript-sunos-x64@7.0.2': optional: true - '@unrs/resolver-binding-win32-ia32-msvc@1.12.2': + '@typescript/typescript-win32-arm64@7.0.2': optional: true - '@unrs/resolver-binding-win32-x64-msvc@1.12.2': + '@typescript/typescript-win32-x64@7.0.2': optional: true '@vitest/coverage-v8@4.1.11(vitest@4.1.11)': @@ -2299,7 +2495,7 @@ snapshots: obug: 2.1.4 std-env: 4.2.0 tinyrainbow: 3.1.1 - vitest: 4.1.11(@types/node@22.19.21)(@vitest/coverage-v8@4.1.11)(vite@8.2.2(@types/node@22.19.21)) + vitest: 4.1.11(@types/node@24.13.4)(@vitest/coverage-v8@4.1.11)(vite@8.2.2(@types/node@24.13.4)) '@vitest/expect@4.1.11': dependencies: @@ -2310,13 +2506,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.1 - '@vitest/mocker@4.1.11(vite@8.2.2(@types/node@22.19.21))': + '@vitest/mocker@4.1.11(vite@8.2.2(@types/node@24.13.4))': dependencies: '@vitest/spy': 4.1.11 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.2.2(@types/node@22.19.21) + vite: 8.2.2(@types/node@24.13.4) '@vitest/pretty-format@4.1.11': dependencies: @@ -2415,8 +2611,6 @@ snapshots: color-name@1.1.4: {} - comment-parser@1.4.7: {} - concat-map@0.0.1: {} concurrently@9.2.1: @@ -2448,18 +2642,16 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - debug@4.4.3: + debug@4.4.3(supports-color@8.1.1): dependencies: ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 deep-is@0.1.4: {} - detect-indent@7.0.2: {} - detect-libc@2.1.2: {} - detect-newline@4.0.1: {} - emoji-regex@8.0.0: {} es-module-lexer@2.3.2: {} @@ -2497,54 +2689,6 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.1.8(eslint@10.5.0): - dependencies: - eslint: 10.5.0 - - eslint-import-context@0.1.9(unrs-resolver@1.12.2): - dependencies: - get-tsconfig: 4.14.0 - stable-hash-x: 0.2.0 - optionalDependencies: - unrs-resolver: 1.12.2 - - eslint-import-resolver-typescript@4.4.5(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.61.1(eslint@10.5.0)(typescript@5.9.3))(eslint@10.5.0))(eslint@10.5.0): - dependencies: - debug: 4.4.3 - eslint: 10.5.0 - eslint-import-context: 0.1.9(unrs-resolver@1.12.2) - get-tsconfig: 4.14.0 - is-bun-module: 2.0.0 - stable-hash-x: 0.2.0 - tinyglobby: 0.2.17 - unrs-resolver: 1.12.2 - optionalDependencies: - eslint-plugin-import-x: 4.16.2(@typescript-eslint/utils@8.61.1(eslint@10.5.0)(typescript@5.9.3))(eslint@10.5.0) - transitivePeerDependencies: - - supports-color - - eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.61.1(eslint@10.5.0)(typescript@5.9.3))(eslint@10.5.0): - dependencies: - '@package-json/types': 0.0.12 - '@typescript-eslint/types': 8.61.1 - comment-parser: 1.4.7 - debug: 4.4.3 - eslint: 10.5.0 - eslint-import-context: 0.1.9(unrs-resolver@1.12.2) - is-glob: 4.0.3 - minimatch: 10.2.5 - semver: 7.8.4 - stable-hash-x: 0.2.0 - unrs-resolver: 1.12.2 - optionalDependencies: - '@typescript-eslint/utils': 8.61.1(eslint@10.5.0)(typescript@5.9.3) - transitivePeerDependencies: - - supports-color - - eslint-plugin-no-null@1.0.2(eslint@10.5.0): - dependencies: - eslint: 10.5.0 - eslint-scope@9.1.2: dependencies: '@types/esrecurse': 4.3.1 @@ -2554,15 +2698,13 @@ snapshots: eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.2.1: {} - eslint-visitor-keys@5.0.1: {} - eslint@10.5.0: + eslint@10.5.0(supports-color@8.1.1): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(supports-color@8.1.1)) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.23.5 + '@eslint/config-array': 0.23.5(supports-color@8.1.1) '@eslint/config-helpers': 0.6.0 '@eslint/core': 1.2.1 '@eslint/plugin-kit': 0.7.2 @@ -2572,7 +2714,7 @@ snapshots: '@types/estree': 1.0.9 ajv: 6.15.0 cross-spawn: 7.0.6 - debug: 4.4.3 + debug: 4.4.3(supports-color@8.1.1) escape-string-regexp: 4.0.0 eslint-scope: 9.1.2 eslint-visitor-keys: 5.0.1 @@ -2593,12 +2735,6 @@ snapshots: transitivePeerDependencies: - supports-color - espree@10.4.0: - dependencies: - acorn: 8.17.0 - acorn-jsx: 5.3.2(acorn@8.17.0) - eslint-visitor-keys: 4.2.1 - espree@11.2.0: dependencies: acorn: 8.17.0 @@ -2658,12 +2794,6 @@ snapshots: get-caller-file@2.0.5: {} - get-tsconfig@4.14.0: - dependencies: - resolve-pkg-maps: 1.0.0 - - git-hooks-list@4.2.1: {} - glob-parent@6.0.2: dependencies: is-glob: 4.0.3 @@ -2683,16 +2813,12 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - globals@17.6.0: {} - has-flag@4.0.0: {} html-escaper@2.0.2: {} ignore@5.3.2: {} - ignore@7.0.5: {} - imurmurhash@0.1.4: {} inflight@1.0.6: @@ -2708,10 +2834,6 @@ snapshots: '@inversifyjs/core': 1.3.5(reflect-metadata@0.2.2) reflect-metadata: 0.2.2 - is-bun-module@2.0.0: - dependencies: - semver: 7.8.4 - is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} @@ -2720,8 +2842,6 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-plain-obj@4.1.0: {} - isarray@0.0.1: {} isarray@1.0.0: {} @@ -2843,8 +2963,6 @@ snapshots: nanoid@3.3.18: {} - napi-postinstall@0.3.4: {} - natural-compare@1.4.0: {} noms@0.0.0: @@ -2867,6 +2985,62 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + oxfmt@0.67.0: + dependencies: + tinypool: 2.1.2 + optionalDependencies: + '@oxfmt/binding-android-arm-eabi': 0.67.0 + '@oxfmt/binding-android-arm64': 0.67.0 + '@oxfmt/binding-darwin-arm64': 0.67.0 + '@oxfmt/binding-darwin-x64': 0.67.0 + '@oxfmt/binding-freebsd-x64': 0.67.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.67.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.67.0 + '@oxfmt/binding-linux-arm64-gnu': 0.67.0 + '@oxfmt/binding-linux-arm64-musl': 0.67.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.67.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.67.0 + '@oxfmt/binding-linux-riscv64-musl': 0.67.0 + '@oxfmt/binding-linux-s390x-gnu': 0.67.0 + '@oxfmt/binding-linux-x64-gnu': 0.67.0 + '@oxfmt/binding-linux-x64-musl': 0.67.0 + '@oxfmt/binding-openharmony-arm64': 0.67.0 + '@oxfmt/binding-win32-arm64-msvc': 0.67.0 + '@oxfmt/binding-win32-ia32-msvc': 0.67.0 + '@oxfmt/binding-win32-x64-msvc': 0.67.0 + + oxlint-tsgolint@7.0.2001: + optionalDependencies: + '@oxlint-tsgolint/darwin-arm64': 7.0.2001 + '@oxlint-tsgolint/darwin-x64': 7.0.2001 + '@oxlint-tsgolint/linux-arm64': 7.0.2001 + '@oxlint-tsgolint/linux-x64': 7.0.2001 + '@oxlint-tsgolint/win32-arm64': 7.0.2001 + '@oxlint-tsgolint/win32-x64': 7.0.2001 + + oxlint@1.82.0(oxlint-tsgolint@7.0.2001): + optionalDependencies: + '@oxlint/binding-android-arm-eabi': 1.82.0 + '@oxlint/binding-android-arm64': 1.82.0 + '@oxlint/binding-darwin-arm64': 1.82.0 + '@oxlint/binding-darwin-x64': 1.82.0 + '@oxlint/binding-freebsd-x64': 1.82.0 + '@oxlint/binding-linux-arm-gnueabihf': 1.82.0 + '@oxlint/binding-linux-arm-musleabihf': 1.82.0 + '@oxlint/binding-linux-arm64-gnu': 1.82.0 + '@oxlint/binding-linux-arm64-musl': 1.82.0 + '@oxlint/binding-linux-ppc64-gnu': 1.82.0 + '@oxlint/binding-linux-riscv64-gnu': 1.82.0 + '@oxlint/binding-linux-riscv64-musl': 1.82.0 + '@oxlint/binding-linux-s390x-gnu': 1.82.0 + '@oxlint/binding-linux-x64-gnu': 1.82.0 + '@oxlint/binding-linux-x64-musl': 1.82.0 + '@oxlint/binding-openharmony-arm64': 1.82.0 + '@oxlint/binding-win32-arm64-msvc': 1.82.0 + '@oxlint/binding-win32-ia32-msvc': 1.82.0 + '@oxlint/binding-win32-x64-msvc': 1.82.0 + oxlint-tsgolint: 7.0.2001 + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 @@ -2902,14 +3076,6 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-packagejson@3.0.2(prettier@3.8.4): - dependencies: - sort-package-json: 3.7.1 - optionalDependencies: - prettier: 3.8.4 - - prettier@3.8.4: {} - process-nextick-args@2.0.1: {} punycode@2.3.1: {} @@ -2935,8 +3101,6 @@ snapshots: require-directory@2.1.1: {} - resolve-pkg-maps@1.0.0: {} - rimraf@3.0.2: dependencies: glob: 7.2.3 @@ -2987,18 +3151,6 @@ snapshots: snabbdom@3.5.1: {} - sort-object-keys@2.1.0: {} - - sort-package-json@3.7.1: - dependencies: - detect-indent: 7.0.2 - detect-newline: 4.0.1 - git-hooks-list: 4.2.1 - is-plain-obj: 4.1.0 - semver: 7.8.4 - sort-object-keys: 2.1.0 - tinyglobby: 0.2.17 - source-map-js@1.2.1: {} sprotty-protocol@1.4.0: {} @@ -3014,8 +3166,6 @@ snapshots: transitivePeerDependencies: - reflect-metadata - stable-hash-x@0.2.0: {} - stackback@0.0.2: {} std-env@4.2.0: {} @@ -3058,63 +3208,44 @@ snapshots: fdir: 6.5.0(picomatch@4.0.7) picomatch: 4.0.7 + tinypool@2.1.2: {} + tinyqueue@2.0.3: {} tinyrainbow@3.1.1: {} tree-kill@1.2.2: {} - ts-api-utils@2.5.0(typescript@5.9.3): - dependencies: - typescript: 5.9.3 - tslib@2.8.1: {} type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - typescript-eslint@8.61.1(eslint@10.5.0)(typescript@5.9.3): - dependencies: - '@typescript-eslint/eslint-plugin': 8.61.1(@typescript-eslint/parser@8.61.1(eslint@10.5.0)(typescript@5.9.3))(eslint@10.5.0)(typescript@5.9.3) - '@typescript-eslint/parser': 8.61.1(eslint@10.5.0)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.61.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.61.1(eslint@10.5.0)(typescript@5.9.3) - eslint: 10.5.0 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - typescript@5.9.3: {} - - undici-types@6.21.0: {} - - unrs-resolver@1.12.2: - dependencies: - napi-postinstall: 0.3.4 + typescript@7.0.2: optionalDependencies: - '@unrs/resolver-binding-android-arm-eabi': 1.12.2 - '@unrs/resolver-binding-android-arm64': 1.12.2 - '@unrs/resolver-binding-darwin-arm64': 1.12.2 - '@unrs/resolver-binding-darwin-x64': 1.12.2 - '@unrs/resolver-binding-freebsd-x64': 1.12.2 - '@unrs/resolver-binding-linux-arm-gnueabihf': 1.12.2 - '@unrs/resolver-binding-linux-arm-musleabihf': 1.12.2 - '@unrs/resolver-binding-linux-arm64-gnu': 1.12.2 - '@unrs/resolver-binding-linux-arm64-musl': 1.12.2 - '@unrs/resolver-binding-linux-loong64-gnu': 1.12.2 - '@unrs/resolver-binding-linux-loong64-musl': 1.12.2 - '@unrs/resolver-binding-linux-ppc64-gnu': 1.12.2 - '@unrs/resolver-binding-linux-riscv64-gnu': 1.12.2 - '@unrs/resolver-binding-linux-riscv64-musl': 1.12.2 - '@unrs/resolver-binding-linux-s390x-gnu': 1.12.2 - '@unrs/resolver-binding-linux-x64-gnu': 1.12.2 - '@unrs/resolver-binding-linux-x64-musl': 1.12.2 - '@unrs/resolver-binding-openharmony-arm64': 1.12.2 - '@unrs/resolver-binding-wasm32-wasi': 1.12.2 - '@unrs/resolver-binding-win32-arm64-msvc': 1.12.2 - '@unrs/resolver-binding-win32-ia32-msvc': 1.12.2 - '@unrs/resolver-binding-win32-x64-msvc': 1.12.2 + '@typescript/typescript-aix-ppc64': 7.0.2 + '@typescript/typescript-darwin-arm64': 7.0.2 + '@typescript/typescript-darwin-x64': 7.0.2 + '@typescript/typescript-freebsd-arm64': 7.0.2 + '@typescript/typescript-freebsd-x64': 7.0.2 + '@typescript/typescript-linux-arm': 7.0.2 + '@typescript/typescript-linux-arm64': 7.0.2 + '@typescript/typescript-linux-loong64': 7.0.2 + '@typescript/typescript-linux-mips64el': 7.0.2 + '@typescript/typescript-linux-ppc64': 7.0.2 + '@typescript/typescript-linux-riscv64': 7.0.2 + '@typescript/typescript-linux-s390x': 7.0.2 + '@typescript/typescript-linux-x64': 7.0.2 + '@typescript/typescript-netbsd-arm64': 7.0.2 + '@typescript/typescript-netbsd-x64': 7.0.2 + '@typescript/typescript-openbsd-arm64': 7.0.2 + '@typescript/typescript-openbsd-x64': 7.0.2 + '@typescript/typescript-sunos-x64': 7.0.2 + '@typescript/typescript-win32-arm64': 7.0.2 + '@typescript/typescript-win32-x64': 7.0.2 + + undici-types@7.18.2: {} untildify@4.0.0: {} @@ -3126,7 +3257,7 @@ snapshots: uuid@14.0.0: {} - vite@8.2.2(@types/node@22.19.21): + vite@8.2.2(@types/node@24.13.4): dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 @@ -3134,13 +3265,13 @@ snapshots: rolldown: 1.2.6 tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 22.19.21 + '@types/node': 24.13.4 fsevents: 2.3.3 - vitest@4.1.11(@types/node@22.19.21)(@vitest/coverage-v8@4.1.11)(vite@8.2.2(@types/node@22.19.21)): + vitest@4.1.11(@types/node@24.13.4)(@vitest/coverage-v8@4.1.11)(vite@8.2.2(@types/node@24.13.4)): dependencies: '@vitest/expect': 4.1.11 - '@vitest/mocker': 4.1.11(vite@8.2.2(@types/node@22.19.21)) + '@vitest/mocker': 4.1.11(vite@8.2.2(@types/node@24.13.4)) '@vitest/pretty-format': 4.1.11 '@vitest/runner': 4.1.11 '@vitest/snapshot': 4.1.11 @@ -3157,10 +3288,10 @@ snapshots: tinyexec: 1.3.0 tinyglobby: 0.2.17 tinyrainbow: 3.1.1 - vite: 8.2.2(@types/node@22.19.21) + vite: 8.2.2(@types/node@24.13.4) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.19.21 + '@types/node': 24.13.4 '@vitest/coverage-v8': 4.1.11(vitest@4.1.11) transitivePeerDependencies: - msw diff --git a/client/pnpm-workspace.yaml b/client/pnpm-workspace.yaml index 2a0816a..dc84be6 100644 --- a/client/pnpm-workspace.yaml +++ b/client/pnpm-workspace.yaml @@ -3,39 +3,39 @@ packages: - 'examples/*' # Security overrides: force patched versions of transitive (dev-only) dependencies that upstream -# tooling (concurrently, mocha, nyc) still pins to ranges flagged by `pnpm audit`. +# tooling still pins to ranges flagged by `pnpm audit`. overrides: shell-quote: '>=1.8.4' serialize-javascript: '>=7.0.5' diff: '>=8.0.3' js-yaml: '>=4.1.2' -# Tooling (eslint, prettier, mocha, ts-node, rimraf, @eclipse-glsp/*-config, ...) is provided +# Tooling (oxlint, oxfmt, rimraf, @eclipse-glsp/*-config, ...) is provided # as transitive dependencies of the @eclipse-glsp/dev meta-package and must be resolvable from -# the workspace root (tsconfig `extends`, lint/test/build script bins). Rather than flat-hoisting +# the workspace root (tsconfig `extends`, lint/format/build script bins). Rather than flat-hoisting # everything (shamefullyHoist), only the dev tooling is public-hoisted; app/runtime deps stay # strictly isolated. pnpm >=11 no longer reads non-auth settings from .npmrc, so this lives here. publicHoistPattern: - '@eclipse-glsp/*config*' - '@eclipse-glsp/cli' - - 'eslint' - - 'eslint-*' - - '@typescript-eslint/*' - - 'prettier' - - 'prettier-plugin-*' - - 'mocha' - - 'chai' - - 'sinon' - - 'ts-node' + - 'oxlint' + - 'oxlint-tsgolint' + - '@oxlint-tsgolint/*' + - '@tony.ganchev/*' + - 'oxfmt' - 'rimraf' - - 'nyc' # type stubs are compile-time-only dev tooling; hoist them all so `@types/` resolves at the root - '@types/*' +# `@tony.ganchev/eslint-plugin-header` declares ESLint as a peer, but oxlint loads it as a JS plugin and ESLint is +# never run (this only silences the peer check). +peerDependencyRules: + ignoreMissing: + - eslint + # Dependencies allowed to run install/build scripts (pnpm >=11 replaces onlyBuiltDependencies). allowBuilds: esbuild: true - unrs-resolver: true # The minimum age of dependency versions to be installed in minutes. 4320 minutes is 72h. # This is to avoid supply chain attacks where a new version of a dependency is published with malicious code. diff --git a/client/scripts/lint-report.mjs b/client/scripts/lint-report.mjs new file mode 100644 index 0000000..8c3de3b --- /dev/null +++ b/client/scripts/lint-report.mjs @@ -0,0 +1,114 @@ +/******************************************************************************** + * Copyright (c) 2026 EclipseSource and others. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the Eclipse + * Public License v. 2.0 are satisfied: GNU General Public License, version 2 + * with the GNU Classpath Exception which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + ********************************************************************************/ + +// CI lint step: runs oxlint once with the JSON reporter and turns the result into +// 1. GitHub workflow commands (`::error` / `::warning`), which become inline annotations on the PR, and +// 2. a Markdown table appended to the job summary (`$GITHUB_STEP_SUMMARY`; printed to stdout when unset). +// Exits non-zero when oxlint reported errors or failed to run, so the job fails like `pnpm lint` would. +// Extra arguments are passed on to oxlint; positional paths replace the default `.` (e.g. to lint a subset). + +import { spawnSync } from 'node:child_process'; +import { appendFileSync } from 'node:fs'; +import { join } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const root = fileURLToPath(new URL('..', import.meta.url)); +const MAX_ROWS = 200; + +// Resolve the hoisted binary directly so the script also works outside of `pnpm run`. +const oxlint = join(root, 'node_modules', '.bin', process.platform === 'win32' ? 'oxlint.cmd' : 'oxlint'); +const extraArgs = process.argv.slice(2); +const paths = extraArgs.some(arg => !arg.startsWith('-')) ? [] : ['.']; +const result = spawnSync(oxlint, [...paths, '--format', 'json', ...extraArgs], { + cwd: root, + encoding: 'utf8', + shell: process.platform === 'win32', + maxBuffer: 64 * 1024 * 1024 +}); + +if (result.error) { + process.stderr.write(`Failed to run ${oxlint}: ${result.error.message}\n`); + process.exit(1); +} + +let report; +try { + report = JSON.parse(result.stdout); +} catch { + // No parsable report means oxlint itself failed (bad config, missing plugin, ...): surface its output as is. + process.stdout.write(result.stdout ?? ''); + process.stderr.write(result.stderr ?? ''); + process.exit(result.status ?? 1); +} + +const diagnostics = report.diagnostics ?? []; +const errors = diagnostics.filter(d => d.severity === 'error').length; +const warnings = diagnostics.length - errors; + +// 1. Annotations +for (const d of diagnostics) { + const span = d.labels?.[0]?.span; + const location = span ? `,line=${span.line},col=${span.column}` : ''; + const level = d.severity === 'error' ? 'error' : 'warning'; + process.stdout.write(`::${level} file=${d.filename}${location},title=${d.code}::${escapeCommand(d.message)}\n`); +} + +// 2. Job summary +const lines = ['## Lint report', '']; +if (diagnostics.length === 0) { + lines.push(`✅ No findings in ${report.number_of_files} files (${report.number_of_rules} rules).`); +} else { + lines.push( + `${errors > 0 ? '❌' : '⚠️'} **${errors} error${plural(errors)}, ${warnings} warning${plural(warnings)}** in ${report.number_of_files} files (${report.number_of_rules} rules).`, + '', + '| File | Line | Severity | Rule | Message |', + '| --- | ---: | --- | --- | --- |' + ); + const sorted = [...diagnostics].sort( + (a, b) => a.filename.localeCompare(b.filename) || (a.labels?.[0]?.span?.line ?? 0) - (b.labels?.[0]?.span?.line ?? 0) + ); + for (const d of sorted.slice(0, MAX_ROWS)) { + const span = d.labels?.[0]?.span; + lines.push(`| \`${d.filename}\` | ${span?.line ?? ''} | ${d.severity} | \`${d.code}\` | ${escapeCell(d.message)} |`); + } + if (sorted.length > MAX_ROWS) { + lines.push('', `… ${sorted.length - MAX_ROWS} more finding${plural(sorted.length - MAX_ROWS)} omitted.`); + } +} +lines.push(''); + +const summary = lines.join('\n'); +if (process.env.GITHUB_STEP_SUMMARY) { + appendFileSync(process.env.GITHUB_STEP_SUMMARY, summary); +} else { + process.stdout.write(summary); +} + +process.stdout.write(`Found ${warnings} warning${plural(warnings)} and ${errors} error${plural(errors)}.\n`); +process.exit(errors > 0 ? 1 : 0); + +function plural(n) { + return n === 1 ? '' : 's'; +} + +// Workflow command messages are single-line; encode the characters GitHub reserves. +function escapeCommand(text) { + return text.replace(/%/g, '%25').replace(/\r/g, '%0D').replace(/\n/g, '%0A'); +} + +function escapeCell(text) { + return text.replace(/\|/g, '\\|').replace(/\r?\n/g, ' '); +} diff --git a/client/tsconfig.eslint.json b/client/tsconfig.eslint.json deleted file mode 100644 index 918046a..0000000 --- a/client/tsconfig.eslint.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "@eclipse-glsp/ts-config/tsconfig.json", - "compilerOptions": { - "noEmit": true - }, - "include": ["packages/*/src", "examples/*/src"] -}